I confirm it as Fixpack's failure.

My monk immune to poison at Level 5
Started by Salk, Sep 10 2009 11:24 PM
22 replies to this topic
#21
Posted 16 September 2009 - 01:41 AM
Retired from modding.
#22
Posted 16 September 2009 - 01:54 AM
The problem is very likely in the following piece of code from the BG2 Fixpack .tp2 - why does it include a reduction to poison damage in the first place?

// disease COPY_EXISTING ~demogorg.itm~ ~override~ // <invalid strref -1> ~finmel01.itm~ ~override~ // <invalid strref -1> ~minhp1.itm~ ~override~ // <invalid strref -1> ~misc8j.itm~ ~override~ // boots of the west ~ravag03.itm~ ~override~ // <invalid strref -1> ~ring39.itm~ ~override~ // ring of gaxx ~sengua04.itm~ ~override~ // <invalid strref -1> ~spcl814.spl~ ~override~ // <invalid strref -1> ~sword01.cre~ ~override~ // magical sword ~tstatue.itm~ ~override~ // <invalid strref -1> LAUNCH_PATCH_MACRO ~add_fx_batch_prep~ // defines vars for rest of patch PATCH_IF (SOURCE_SIZE >= min_size) BEGIN SET "new_fx" = 0 FOR (index = (0 - global_loop); index < abil_num; index = index + 1) BEGIN PATCH_IF ("%cosmetic%" = 1) BEGIN // if cosmetic effects needed SET "new_fx_2" = 0 END ELSE BEGIN // if no cosmetic effects should be added SET "new_fx_2" = 1 END SET "new_fx_1" = 0 SET "new_fx_3" = 0 SET "new_fx_4" = 0 SET "new_fx_5" = 0 PATCH_IF ("%index%" < 0) BEGIN // if loop through globals needed SET "abil_fx_idx" = 0 END ELSE BEGIN // otherwise normal ability SET "counter_offset" = ("%abil_off%" + 0x1e + ("%abil_length%" * "%index%")) READ_SHORT ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) "abil_fx_idx" SET "abil_fx_idx" = ("%abil_fx_idx%" + "%new_fx%") WRITE_SHORT ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) ("%abil_fx_idx%") END READ_SHORT "%counter_offset%" "counter" // fx_num on global loop, otherwise abil_fx_num FOR (index2 = 0; index2 < counter; index2 = index2 + 1) BEGIN READ_SHORT ("%fx_off%" + (0x08 * "%fx_type%") + (("%abil_fx_idx%" + "%index2%") * (0x30 + (0xd8 * "%fx_type%")))) "opcode" READ_LONG ("%fx_off%" + 0x04 + (0x10 * "%fx_type%") + (("%abil_fx_idx%" + "%index2%") * (0x30 + (0xd8 * "%fx_type%")))) "param1" READ_LONG ("%fx_off%" + 0x08 + (0x10 * "%fx_type%") + (("%abil_fx_idx%" + "%index2%") * (0x30 + (0xd8 * "%fx_type%")))) "param2" READ_ASCII ("%fx_off%" + 0x14 + (0x14 * "%fx_type%") + (("%abil_fx_idx%" + "%index2%") * (0x30 + (0xd8 * "%fx_type%")))) "resref" PATCH_IF (("%opcode%" = 101) AND ("%param2%" = 78)) BEGIN // disease immunity SET "new_fx_1" = 1 READ_ASCII ("%fx_off%" + (("%abil_fx_idx%" + "%index2%") * (0x30 + (0xd8 * "%fx_type%")))) "template" ((0x30 + (0xd8 * "%fx_type%"))) END ELSE PATCH_IF (("%opcode%" = 169) AND ("%param2%" = 7)) BEGIN // prevent nauseated icon SET "new_fx_2" = 1 END ELSE PATCH_IF (("%opcode%" = 267) AND ("%param1%" = 39752)) BEGIN // disable string "stricken by a foul disease" SET "new_fx_3" = 1 END ELSE PATCH_IF (("%opcode%" = 267) AND ("%param1%" = 54337)) BEGIN // disable string "diseased" SET "new_fx_4" = 1 END ELSE PATCH_IF (("%opcode%" = 173) AND ("%param1%" = 100)) BEGIN // reduced damage from poison - 100% SET "new_fx_5" = 1 END END PATCH_IF ("%new_fx_1%" = 1) BEGIN PATCH_IF ("%new_fx_2%" = 0) BEGIN INSERT_BYTES ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) (0x30 + (0xd8 * "%fx_type%")) WRITE_ASCIIE ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) "%template%" // clones immunity effect WRITE_SHORT ("%fx_off%" + (0x08 * "%fx_type%") + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) 169 // prevent portrait icon WRITE_LONG ("%fx_off%" + 0x08 + (0x10 * "%fx_type%") + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) 7 // nauseated SET "new_fx" = ("%new_fx%" + 1) SET "counter" = ("%counter%" + 1) END PATCH_IF ("%new_fx_3%" = 0) BEGIN INSERT_BYTES ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) (0x30 + (0xd8 * "%fx_type%")) WRITE_ASCIIE ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) "%template%" // clones immunity effect WRITE_SHORT ("%fx_off%" + (0x08 * "%fx_type%") + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) 267 // disable string WRITE_LONG ("%fx_off%" + 0x04 + (0x10 * "%fx_type%") + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) 39752 // strref SET "new_fx" = ("%new_fx%" + 1) SET "counter" = ("%counter%" + 1) END PATCH_IF ("%new_fx_4%" = 0) BEGIN INSERT_BYTES ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) (0x30 + (0xd8 * "%fx_type%")) WRITE_ASCIIE ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) "%template%" // clones immunity effect WRITE_SHORT ("%fx_off%" + (0x08 * "%fx_type%") + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) 267 // disable string WRITE_LONG ("%fx_off%" + 0x04 + (0x10 * "%fx_type%") + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) 54337 // strref SET "new_fx" = ("%new_fx%" + 1) SET "counter" = ("%counter%" + 1) END PATCH_IF ("%new_fx_5%" = 0) BEGIN INSERT_BYTES ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) (0x30 + (0xd8 * "%fx_type%")) WRITE_ASCIIE ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) "%template%" // clones immunity effect WRITE_SHORT ("%fx_off%" + (0x08 * "%fx_type%") + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) 173 // reduced damage from poison WRITE_LONG ("%fx_off%" + 0x04 + (0x10 * "%fx_type%") + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) 100 // value SET "new_fx" = ("%new_fx%" + 1) SET "counter" = ("%counter%" + 1) END END WRITE_SHORT "%counter_offset%" "%counter%" END LAUNCH_PATCH_MACRO ~add_fx_batch_final~ // wrapup creature offset patching END BUT_ONLY_IF_IT_CHANGES
Cursed Items (BGT/EasyTuTu/BG2)
Game Over Only on Party Dead (BGT/EasyTuTu/BG2)
WTP Familiars(BGT/BG2)
Game Over Only on Party Dead (BGT/EasyTuTu/BG2)
WTP Familiars(BGT/BG2)
#23
Posted 16 September 2009 - 02:02 AM
Exactly. Not only that, but the following 'poison' block doesn't include the 100%. I suppose someone was plain tired when coding it. have just posted it on G3.
Edited by GeN1e, 16 September 2009 - 02:03 AM.
Retired from modding.