CamDawg Posted March 5, 2006 Share Posted March 5, 2006 Like the hold and level drain batches before it... // adds supplementary protections to confusion immune creatures COPY_EXISTING ~ammonk07.cre~ ~override~ ~ammonk08.cre~ ~override~ ~devaevil.cre~ ~override~ ~devagood.cre~ ~override~ ~devast01.cre~ ~override~ ~devmon01.cre~ ~override~ ~elearb11.cre~ ~override~ ~fangel01.cre~ ~override~ ~finsol01.cre~ ~override~ ~finsol04.cre~ ~override~ ~firlch01.cre~ ~override~ ~helljon.cre~ ~override~ ~helljon2.cre~ ~override~ ~hllich.cre~ ~override~ ~hlshade.cre~ ~override~ ~lichel01.cre~ ~override~ ~mage20.cre~ ~override~ ~mage20b.cre~ ~override~ ~mage20c.cre~ ~override~ ~planet01.cre~ ~override~ ~planevil.cre~ ~override~ ~plangood.cre~ ~override~ ~planwish.cre~ ~override~ ~ppguy01.cre~ ~override~ ~ppireni2.cre~ ~override~ ~sendai7.cre~ ~override~ ~sewyag04.cre~ ~override~ ~solar.cre~ ~override~ ~solar01.cre~ ~override~ ~sujon.cre~ ~override~ ~sujon2.cre~ ~override~ ~suraam.cre~ ~override~ ~susuneer.cre~ ~override~ ~uddrow50.cre~ ~override~ ~udsola01.cre~ ~override~ READ_BYTE 0x33 "fx_type" ELSE 0 PATCH_IF ("%fx_type%" = 1) BEGIN READ_LONG 0x2c4 "fx_off" READ_SHORT 0x2c8 "fx_num" SET "new_fx_1" = 0 SET "new_fx_2" = 0 SET "new_fx_3" = 0 SET "new_fx_4" = 0 SET "new_fx_5" = 0 SET "new_fx_6" = 0 SET "new_fx_7" = 0 FOR (index = 0; index < fx_num; index = index + 1) BEGIN READ_LONG ("%fx_off%" + 0x08 + ("%index%" * 0x108)) "opcode" READ_LONG ("%fx_off%" + 0x14 + ("%index%" * 0x108)) "string" READ_LONG ("%fx_off%" + 0x18 + ("%index%" * 0x108)) "immune" READ_ASCII ("%fx_off%" + 0x28 + ("%index%" * 0x108)) "anim" PATCH_IF (("%opcode%" = 101) AND ("%immune%" = 128)) BEGIN // confusion immunity SET "new_fx_1" = 1 READ_ASCII ("%fx_off%" + ("%index%" * 0x108)) "template" (0x108) END ELSE PATCH_IF (("%opcode%" = 169) AND ("%immune%" = 3)) BEGIN // prevent confusion icon SET "new_fx_2" = 1 END ELSE PATCH_IF (("%opcode%" = 169) AND ("%immune%" = 47)) BEGIN // prevent chaos icon SET "new_fx_3" = 1 END ELSE PATCH_IF (("%opcode%" = 296) AND ("%anim%" STRING_COMPARE_CASE "spconfus" = 0)) BEGIN // spmindat anim SET "new_fx_4" = 1 END ELSE PATCH_IF (("%opcode%" = 267) AND ("%string%" = 14782)) BEGIN // strref, "Confused" SET "new_fx_5" = 1 END ELSE PATCH_IF (("%opcode%" = 169) AND ("%immune%" = 2)) BEGIN // prevent rigid thinking portrait icon SET "new_fx_6" = 1 END ELSE PATCH_IF (("%opcode%" = 267) AND ("%string%" = 14791)) BEGIN // disable string 14791, "Rigid Thinking" SET "new_fx_7" = 1 END END PATCH_IF ("%new_fx_1%" = 1) BEGIN SET "new_fx" = 0 PATCH_IF ("%new_fx_2%" = 0) BEGIN INSERT_BYTES ("%fx_off%" ) 0x108 WRITE_EVALUATED_ASCII ("%fx_off%" ) "%template%" // clones immunity effect WRITE_LONG ("%fx_off%" + 0x08) 169 // prevent portrait icon WRITE_LONG ("%fx_off%" + 0x18) 3 // confusion SET "new_fx" = ("%new_fx%" + 1) END PATCH_IF ("%new_fx_3%" = 0) BEGIN INSERT_BYTES ("%fx_off%" ) 0x108 WRITE_EVALUATED_ASCII ("%fx_off%" ) "%template%" // clones immunity effect WRITE_LONG ("%fx_off%" + 0x08) 169 // prevent portrait icon WRITE_LONG ("%fx_off%" + 0x18) 47 // chaos SET "new_fx" = ("%new_fx%" + 1) END PATCH_IF ("%new_fx_4%" = 0) BEGIN INSERT_BYTES ("%fx_off%" ) 0x108 WRITE_EVALUATED_ASCII ("%fx_off%" ) "%template%" // clones immunity effect WRITE_LONG ("%fx_off%" + 0x08) 296 // immunity to specific animation WRITE_ASCII ("%fx_off%" + 0x28) ~spconfus~ // mind flayer hold animation SET "new_fx" = ("%new_fx%" + 1) END PATCH_IF ("%new_fx_5%" = 0) BEGIN INSERT_BYTES ("%fx_off%" ) 0x108 WRITE_EVALUATED_ASCII ("%fx_off%" ) "%template%" // clones immunity effect WRITE_LONG ("%fx_off%" + 0x08) 267 // immunity to specific animation WRITE_LONG ("%fx_off%" + 0x14) 14782 // strref, confused SET "new_fx" = ("%new_fx%" + 1) END PATCH_IF ("%new_fx_6%" = 0) BEGIN INSERT_BYTES ("%fx_off%" ) 0x108 WRITE_EVALUATED_ASCII ("%fx_off%" ) "%template%" // clones immunity effect WRITE_LONG ("%fx_off%" + 0x08) 169 // prevent portrait icon WRITE_LONG ("%fx_off%" + 0x18) 2 // rigid thinking SET "new_fx" = ("%new_fx%" + 1) END PATCH_IF ("%new_fx_7%" = 0) BEGIN INSERT_BYTES ("%fx_off%" ) 0x108 WRITE_EVALUATED_ASCII ("%fx_off%" ) "%template%" // clones immunity effect WRITE_LONG ("%fx_off%" + 0x08) 267 // immunity to specific animation WRITE_LONG ("%fx_off%" + 0x14) 14791 // strref, rigid thinking SET "new_fx" = ("%new_fx%" + 1) END PATCH_IF ("%new_fx%" > 0) BEGIN PATCH_PRINT " ~%SOURCE_FILE%~ ~override~" WRITE_LONG 0x2c8 ("%fx_num%" + "%new_fx%") READ_LONG 0x2a0 "known_off" READ_LONG 0x2a8 "meminfo_off" READ_LONG 0x2b0 "mem_off" READ_LONG 0x2b8 "slot_off" READ_LONG 0x2bc "itm_off" PATCH_IF ("%fx_off%" < "%known_off%") BEGIN WRITE_LONG 0x2a0 ("%known_off%" + (0x108 * "%new_fx%")) END PATCH_IF ("%fx_off%" < "%meminfo_off%") BEGIN WRITE_LONG 0x2a8 ("%meminfo_off%" + (0x108 * "%new_fx%")) END PATCH_IF ("%fx_off%" < "%mem_off%") BEGIN WRITE_LONG 0x2b0 ("%mem_off%" + (0x108 * "%new_fx%")) END PATCH_IF ("%fx_off%" < "%slot_off%") BEGIN WRITE_LONG 0x2b8 ("%slot_off%" + (0x108 * "%new_fx%")) END PATCH_IF ("%fx_off%" < "%itm_off%") BEGIN WRITE_LONG 0x2bc ("%itm_off%" + (0x108 * "%new_fx%")) END END END END BUT_ONLY_IF_IT_CHANGES // adds supplementary protections to confusion immune items COPY_EXISTING ~abazring.itm~ ~override~ ~chalcy3.itm~ ~override~ ~chalslay.itm~ ~override~ ~chwraith.itm~ ~override~ ~demogorg.itm~ ~override~ ~finmel01.itm~ ~override~ ~gorfirg.itm~ ~override~ ~gorjelfu.itm~ ~override~ ~gorjelgr.itm~ ~override~ ~gormisti.itm~ ~override~ ~innoc.itm~ ~override~ ~ipsion.itm~ ~override~ ~killsw01.itm~ ~override~ ~leat20.itm~ ~override~ ~maharper.itm~ ~override~ ~mane01.itm~ ~override~ ~mdk2gun.itm~ ~override~ ~mdk2ring.itm~ ~override~ ~objring.itm~ ~override~ ~palring.itm~ ~override~ ~ravag03.itm~ ~override~ ~ring94.itm~ ~override~ ~ring95.itm~ ~override~ ~ring98.itm~ ~override~ ~ring99.itm~ ~override~ ~ringdemn.itm~ ~override~ ~ringkora.itm~ ~override~ ~sengua04.itm~ ~override~ ~shalt01.itm~ ~override~ ~shararm.itm~ ~override~ ~shld25.itm~ ~override~ ~stalker.itm~ ~override~ ~sw1h54.itm~ ~override~ ~sw2h14.itm~ ~override~ ~sw2h21.itm~ ~override~ ~telslav2.itm~ ~override~ ~trollimm.itm~ ~override~ ~tstatue.itm~ ~override~ ~umber01.itm~ ~override~ ~umber02.itm~ ~override~ PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN // protects against invalid files READ_LONG 0x6a "fx_off" READ_SHORT 0x70 "fx_num" SET "new_fx_1" = 0 SET "new_fx_2" = 0 SET "new_fx_3" = 0 SET "new_fx_4" = 0 SET "new_fx_5" = 0 SET "new_fx_6" = 0 SET "new_fx_7" = 0 FOR (index = 0; index < fx_num; index = index + 1) BEGIN READ_SHORT ("%fx_off%" + ("%index%" * 0x30)) "opcode" READ_LONG ("%fx_off%" + 0x04 + ("%index%" * 0x30)) "string" READ_LONG ("%fx_off%" + 0x08 + ("%index%" * 0x30)) "immune" READ_ASCII ("%fx_off%" + 0x14 + ("%index%" * 0x30)) "anim" PATCH_IF (("%opcode%" = 101) AND ("%immune%" = 128)) BEGIN // confusion immunity SET "new_fx_1" = 1 READ_ASCII ("%fx_off%" + ("%index%" * 0x30)) "template" (0x30) END ELSE PATCH_IF (("%opcode%" = 169) AND ("%immune%" = 3)) BEGIN // prevent confused portrait icon SET "new_fx_2" = 1 END ELSE PATCH_IF (("%opcode%" = 169) AND ("%immune%" = 47)) BEGIN // prevent chaos portrait icon SET "new_fx_3" = 1 END ELSE PATCH_IF (("%opcode%" = 296) AND ("%anim%" STRING_COMPARE_CASE "spconfus" = 0)) BEGIN // spconfus anim SET "new_fx_4" = 1 END ELSE PATCH_IF (("%opcode%" = 267) AND ("%string%" = 14782)) BEGIN // disable string 14102, "Confused" SET "new_fx_5" = 1 END ELSE PATCH_IF (("%opcode%" = 169) AND ("%immune%" = 2)) BEGIN // prevent rigid thinking portrait icon SET "new_fx_6" = 1 END ELSE PATCH_IF (("%opcode%" = 267) AND ("%string%" = 14791)) BEGIN // disable string 14791, "Rigid Thinking" SET "new_fx_7" = 1 END END PATCH_IF ("%new_fx_1%" = 1) BEGIN SET "new_fx" = 0 PATCH_IF ("%new_fx_2%" = 0) BEGIN INSERT_BYTES ("%fx_off%" ) 0x30 WRITE_EVALUATED_ASCII ("%fx_off%" ) "%template%" // clones immunity effect WRITE_SHORT ("%fx_off%" ) 169 // prevent portrait icon WRITE_LONG ("%fx_off%" + 0x08) 3 // confused SET "new_fx" = ("%new_fx%" + 1) END PATCH_IF ("%new_fx_3%" = 0) BEGIN INSERT_BYTES ("%fx_off%" ) 0x30 WRITE_EVALUATED_ASCII ("%fx_off%" ) "%template%" // clones immunity effect WRITE_SHORT ("%fx_off%" ) 169 // prevent portrait icon WRITE_LONG ("%fx_off%" + 0x08) 47 // chaos SET "new_fx" = ("%new_fx%" + 1) END PATCH_IF ("%new_fx_4%" = 0) BEGIN INSERT_BYTES ("%fx_off%" ) 0x30 WRITE_EVALUATED_ASCII ("%fx_off%" ) "%template%" // clones immunity effect WRITE_SHORT ("%fx_off%" ) 296 // prevent specific animation WRITE_ASCII ("%fx_off%" + 0x14) ~spconfus~ // mind flayer confusion SET "new_fx" = ("%new_fx%" + 1) END PATCH_IF ("%new_fx_5%" = 0) BEGIN INSERT_BYTES ("%fx_off%" ) 0x30 WRITE_EVALUATED_ASCII ("%fx_off%" ) "%template%" // clones immunity effect WRITE_SHORT ("%fx_off%" ) 267 // disable string WRITE_LONG ("%fx_off%" + 0x04) 14782 // strref, "confused" SET "new_fx" = ("%new_fx%" + 1) END PATCH_IF ("%new_fx_6%" = 0) BEGIN INSERT_BYTES ("%fx_off%" ) 0x30 WRITE_EVALUATED_ASCII ("%fx_off%" ) "%template%" // clones immunity effect WRITE_SHORT ("%fx_off%" ) 169 // prevent portrait icon WRITE_LONG ("%fx_off%" + 0x08) 2 // rigid thinking SET "new_fx" = ("%new_fx%" + 1) END PATCH_IF ("%new_fx_7%" = 0) BEGIN INSERT_BYTES ("%fx_off%" ) 0x30 WRITE_EVALUATED_ASCII ("%fx_off%" ) "%template%" // clones immunity effect WRITE_SHORT ("%fx_off%" ) 267 // disable string WRITE_LONG ("%fx_off%" + 0x04) 14791 // strref, "rigid thinking" SET "new_fx" = ("%new_fx%" + 1) END PATCH_IF ("%new_fx%" > 0) BEGIN PATCH_PRINT " ~%SOURCE_FILE%~ ~override~" WRITE_SHORT 0x70 ("%fx_num%" + "%new_fx%") READ_LONG 0x64 "abil_off" READ_SHORT 0x68 "abil_num" FOR (index2 = 0; index2 < abil_num; index2 = index2 + 1) BEGIN READ_SHORT ("%abil_off%" + 0x20 + ("%abil_num%" * 0x38)) "abil_fx_idx" WRITE_SHORT ("%abil_off%" + 0x20 + ("%abil_num%" * 0x38)) ("%abil_fx_idx%" + "%new_fx%") END END END END BUT_ONLY_IF_IT_CHANGES Link to comment
cirerrek Posted March 6, 2006 Share Posted March 6, 2006 Xyx's spell reference has a very thorough set of tables detailing all the various immunity items. Do you have a copy of that or would it prove useful to you? Thanks, Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.