--- 1pp\install\114_effects.tph	Mon Aug 06 18:52:44 2012
+++ C:\BWP Patchstudio\patched files\1pp\install\114_effects.tph	Sat Dec 12 00:30:13 2015
@@ -594,7 +594,17 @@
 	ACTION_IF (FILE_EXISTS_IN_GAME ~SPIN897.SPL~) THEN BEGIN
 COPY_EXISTING ~SPIN897.SPL~ ~override~
   PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN // protects against invalid files
-    WRITE_SHORT  0x98 ~%1PGSPORE%~
+    READ_LONG  0x64 "abil_off" ELSE 0
+    READ_SHORT 0x68 "abil_num" ELSE 0
+    PATCH_IF (abil_off > 0x71) BEGIN
+      FOR (index = 0; index < abil_num; index = index + 1) BEGIN
+        READ_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) "proj"
+        LOOKUP_IDS_SYMBOL_OF_INT projectile projectl %proj%
+        PATCH_IF ("%projectile%" STRING_EQUAL_CASE "CLOUDKIL") BEGIN
+          WRITE_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) ~%1PGSPORE%~
+        END
+      END
+    END
   END
   BUT_ONLY_IF_IT_CHANGES
   END
@@ -602,7 +612,17 @@
 	ACTION_IF (FILE_EXISTS_IN_GAME ~SPIN730.SPL~) THEN BEGIN
 COPY_EXISTING ~SPIN730.SPL~ ~override~
   PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN // protects against invalid files
-    WRITE_SHORT  0x98 ~%1PGSPORE%~
+    READ_LONG  0x64 "abil_off" ELSE 0
+    READ_SHORT 0x68 "abil_num" ELSE 0
+    PATCH_IF (abil_off > 0x71) BEGIN
+      FOR (index = 0; index < abil_num; index = index + 1) BEGIN
+        READ_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) "proj"
+        LOOKUP_IDS_SYMBOL_OF_INT projectile projectl %proj%
+        PATCH_IF ("%projectile%" STRING_EQUAL_CASE "GOLCLOUD") BEGIN
+          WRITE_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) ~%1PGSPORE%~
+        END
+      END
+    END
   END
   BUT_ONLY_IF_IT_CHANGES
   END
@@ -612,7 +632,17 @@
 		ACTION_IF (FILE_EXISTS_IN_GAME ~SPIN917.SPL~) THEN BEGIN
 COPY_EXISTING ~SPIN917.SPL~ ~override~
   PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN // protects against invalid files
-    WRITE_SHORT  0x98 ~%1PMANEGS%~
+    READ_LONG  0x64 "abil_off" ELSE 0
+    READ_SHORT 0x68 "abil_num" ELSE 0
+    PATCH_IF (abil_off > 0x71) BEGIN
+      FOR (index = 0; index < abil_num; index = index + 1) BEGIN
+        READ_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) "proj"
+        LOOKUP_IDS_SYMBOL_OF_INT projectile projectl %proj%
+        PATCH_IF ("%projectile%" STRING_EQUAL_CASE "CLOUDKIL") BEGIN
+          WRITE_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) ~%1PMANEGS%~
+        END
+      END
+    END
   END
   BUT_ONLY_IF_IT_CHANGES
   END
@@ -622,7 +652,17 @@
 		ACTION_IF (FILE_EXISTS_IN_GAME ~SPWI614.SPL~) THEN BEGIN
 COPY_EXISTING ~SPWI614.SPL~ ~override~
   PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN // protects against invalid files
-    WRITE_SHORT  0x98 ~%1PDEATHF%~
+    READ_LONG  0x64 "abil_off" ELSE 0
+    READ_SHORT 0x68 "abil_num" ELSE 0
+    PATCH_IF (abil_off > 0x71) BEGIN
+      FOR (index = 0; index < abil_num; index = index + 1) BEGIN
+        READ_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) "proj"
+        LOOKUP_IDS_SYMBOL_OF_INT projectile projectl %proj%
+        PATCH_IF ("%projectile%" STRING_EQUAL_CASE "CLOUDKIL") BEGIN
+          WRITE_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) ~%1PDEATHF%~
+        END
+      END
+    END
   END
   BUT_ONLY_IF_IT_CHANGES
   END
@@ -632,10 +672,17 @@
 		ACTION_IF (FILE_EXISTS_IN_GAME ~SPWI810.SPL~) THEN BEGIN
 COPY_EXISTING ~SPWI810.SPL~ ~override~
   PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN // protects against invalid files
-    WRITE_SHORT  0x98 ~%1PINCIND%~
-	WRITE_SHORT  0xc0 ~%1PINCIND%~
-	WRITE_SHORT  0x110 ~%1PINCIND%~
-	WRITE_SHORT  0x138 ~%1PINCIND%~
+    READ_LONG  0x64 "abil_off" ELSE 0
+    READ_SHORT 0x68 "abil_num" ELSE 0
+    PATCH_IF (abil_off > 0x71) BEGIN
+      FOR (index = 0; index < abil_num; index = index + 1) BEGIN
+        READ_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) "proj"
+        LOOKUP_IDS_SYMBOL_OF_INT projectile projectl %proj%
+        PATCH_IF ("%projectile%" STRING_EQUAL_CASE "CLOUDKIL") BEGIN
+          WRITE_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) ~%1PINCIND%~
+        END
+      END
+    END
 	  END
   BUT_ONLY_IF_IT_CHANGES
   END
@@ -643,7 +690,17 @@
   ACTION_IF (FILE_EXISTS_IN_GAME ~SPIN570.SPL~) THEN BEGIN
 COPY_EXISTING ~SPIN570.SPL~ ~override~
   PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN // protects against invalid files
-    WRITE_SHORT  0x98 ~%1PINCIND%~
+    READ_LONG  0x64 "abil_off" ELSE 0
+    READ_SHORT 0x68 "abil_num" ELSE 0
+    PATCH_IF (abil_off > 0x71) BEGIN
+      FOR (index = 0; index < abil_num; index = index + 1) BEGIN
+        READ_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) "proj"
+        LOOKUP_IDS_SYMBOL_OF_INT projectile projectl %proj%
+        PATCH_IF ("%projectile%" STRING_EQUAL_CASE "GOLCLOUD") BEGIN
+          WRITE_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) ~%1PINCIND%~
+        END
+      END
+    END
 	  END
   BUT_ONLY_IF_IT_CHANGES
   END
@@ -654,7 +711,17 @@
 	  ACTION_IF (FILE_EXISTS_IN_GAME ~SPIN569.SPL~) THEN BEGIN
 COPY_EXISTING ~SPIN569.SPL~ ~override~
   PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN // protects against invalid files
-    WRITE_SHORT  0x98 ~%1PICECLD%~
+    READ_LONG  0x64 "abil_off" ELSE 0
+    READ_SHORT 0x68 "abil_num" ELSE 0
+    PATCH_IF (abil_off > 0x71) BEGIN
+      FOR (index = 0; index < abil_num; index = index + 1) BEGIN
+        READ_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) "proj"
+        LOOKUP_IDS_SYMBOL_OF_INT projectile projectl %proj%
+        PATCH_IF ("%projectile%" STRING_EQUAL_CASE "GOLCLOUD") BEGIN
+          WRITE_SHORT ("%abil_off%" + 0x26 + (0x28 * "%index%")) ~%1PICECLD%~
+        END
+      END
+    END
 	  END
   BUT_ONLY_IF_IT_CHANGES
   END
@@ -665,7 +732,17 @@
 	  ACTION_IF (FILE_EXISTS_IN_GAME ~STAF15.ITM~) THEN BEGIN
 COPY_EXISTING ~STAF15.ITM~ ~override~
   PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN // protects against invalid files
-    WRITE_SHORT  0xd4 ~%1PSLEEPC%~
+    READ_LONG  0x64 "abil_off" ELSE 0
+    READ_SHORT 0x68 "abil_num" ELSE 0
+    PATCH_IF (abil_off > 0x71) BEGIN
+      FOR (index = 0; index < abil_num; index = index + 1) BEGIN
+        READ_SHORT ("%abil_off%" + 0x2a + (0x38 * "%index%")) "proj"
+        LOOKUP_IDS_SYMBOL_OF_INT projectile projectl %proj%
+        PATCH_IF ("%projectile%" STRING_EQUAL_CASE "CLOUD") BEGIN
+          WRITE_SHORT ("%abil_off%" + 0x2a + (0x38 * "%index%")) ~%1PSLEEPC%~
+        END
+      END
+    END
 	  END
   BUT_ONLY_IF_IT_CHANGES
   END
