Jump to content


Photo

My monk immune to poison at Level 5


  • Please log in to reply
22 replies to this topic

#21 GeN1e

GeN1e

    A very GAR character

  • Modder
  • 1604 posts

Posted 16 September 2009 - 01:41 AM

I confirm it as Fixpack's failure.

Retired from modding.


#22 Salk

Salk
  • Modder
  • 1426 posts

Donator

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? :blink:

// 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


#23 GeN1e

GeN1e

    A very GAR character

  • Modder
  • 1604 posts

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.