Jump to content

Runehammer allows two saving throws for its undead slaying effect


Recommended Posts

Both versions of Runehammer allow a save vs. death for the undead slaying effect in the item's extended header even though the save is already contained in the corresponding EFF file. This effectivelly grants undead creatures two separate saving throws against this effect which likely wasn't intended. Also, the "Undead Destroyed" message string (MESDIE.EFF) needs to be placed in front of the slaying effect (DIE.EFF) in order to display properly. Here's the fix:

 

ACTION_FOR_EACH ~file~ IN																	   // for each of the following files
		  ~HAMM10~																		  // Runehammer +4
		  ~HAMM11~																		  // Runehammer +5
BEGIN																						   // execute the following
ACTION_IF FILE_EXISTS_IN_GAME ~%file%.itm~ BEGIN												// if the referenced file with an ITM extension exists
COPY_EXISTING ~%file%.itm~ ~override~
PATCH_IF (%SOURCE_SIZE% > 0x71) THEN BEGIN													  // file size check
 READ_LONG   0x64 "abil_off"
 READ_SHORT  0x68 "abil_num"
 READ_LONG   0x6a "fx_off"
 FOR (index = 0; index < abil_num; index = index + 1) BEGIN								   // cycles through headers
READ_BYTE   ("%abil_off%" +		("%index%" * 0x38)) "type"							   // header type
PATCH_IF ("%type%" = 1) BEGIN // if melee header
  READ_SHORT  ("%abil_off%" + 0x1e + ("%index%" * 0x38)) "abil_fx_num"
  READ_SHORT  ("%abil_off%" + 0x20 + ("%index%" * 0x38)) "abil_fx_idx"
  FOR (index2 = 0; index2 < abil_fx_num; index2 = index2 + 1) BEGIN
	READ_SHORT ("%fx_off%" +		(0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
	READ_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "resref"
	PATCH_IF (("%opcode%" = "177") AND ("%resref%" STRING_EQUAL_CASE ~DIE~)) BEGIN		  // effect #177 - use EFF file and resref DIE
	  WRITE_ASCII ("%fx_off%" + 0x14 + (("%abil_fx_idx%" + "%index2%") * 0x30)) "MESDIE" #8 // resref: MESDIE (needs to go first)
	  WRITE_LONG ("%fx_off%" + 0x24 + (("%abil_fx_idx%" + "%index2%") * 0x30)) "0"		  // saving throw type: 0 (none)
	  WRITE_LONG ("%fx_off%" + 0x28 + (("%abil_fx_idx%" + "%index2%") * 0x30)) "0"		  // saving throw bonus: 0
	END
	PATCH_IF (("%opcode%" = "177") AND ("%resref%" STRING_EQUAL_CASE ~MESDIE~)) BEGIN	   // effect #177 - use EFF file and resref MESDIE
	  WRITE_ASCII ("%fx_off%" + 0x14 + (("%abil_fx_idx%" + "%index2%") * 0x30)) "DIE" #8	// resref: DIE (needs to go last)
	END
  END
END
 END
END																							 // ends file size check
BUT_ONLY_IF_IT_CHANGES
END																							 // ends ACTION_IF FILE_EXISTS_IN_GAME block
END																							 // ends ACTION_FOR_EACH block

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...