Jump to content

Findings and Opinions


Guest Iroquois

Recommended Posts

Guest Iroquois

I looked through the documented fixes and forum, but I didn't see any of these. If you already have them fixed, or don't think they should, then don't worry about it.

 

Melf's Acid Arrow's portrait icon bypasses resistance, level 1 set to projectile with casting time 2.

Berserker's Enrage Immunity to Maze not dispellable.

Mace of Disruption +1/+2 only does 2 extra damage to undead.

Teleport Field is no save/not dispellable/bypass resistance

 

I heard the fixpack makes Spell Shield dispellable. I am strongly against this, as it is one of the few ways to beat beholders. If I read the forum right you gave ipsion.itm immunity to intelligence bonus. Ipsion.itm does not need immunity to intelligence bonus, this is included in the sword01.cre file, and makes the ipsion.itm more than an immunity to psionics item. The rest I have read so far I either agree with, or don't have any opinion on.

Link to comment
Melf's Acid Arrow's portrait icon bypasses resistance, level 1 set to projectile with casting time 2.

 

// portrait icon for melf's acid arrow bypasses MR though spell itself does not
COPY_EXISTING ~spwi211.spl~ ~override~
 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 // cycle thru abilities
WRITE_SHORT ("%abil_off%" +		(0x28 * "%index%")) 1 // change to melee (lvl 1 header is ranged)
READ_SHORT  ("%abil_off%" + 0x1e + (0x28 * "%index%")) "abil_fx_num"
READ_SHORT  ("%abil_off%" + 0x20 + (0x28 * "%index%")) "abil_fx_idx"
FOR (index2 = 0; index2 < abil_fx_num; index2 = index2 + 1) BEGIN
  READ_SHORT ("%fx_off%" +		(0x30 * ("%index2%" + "%abil_fx_idx%"))) "opcode"
  PATCH_IF ("%opcode%" = 142) BEGIN
	WRITE_BYTE  ("%fx_off%" + 0x0d + (0x30 * ("%index2%" + "%abil_fx_idx%"))) 1 // dispel/not bypass MR
  END
END
 END
 BUT_ONLY_IF_IT_CHANGES

 

Berserker's Enrage Immunity to Maze not dispellable.

No effects are dispellable here.

 

Mace of Disruption +1/+2 only does 2 extra damage to undead.

This is that lovely new non-behavior of damage v. type noted by demivrgvs; the extra damage is supposed to be 1d6 +2 but the die roll is ignored. Argh. The IMoD patch was already pretty nasty, so this just gets rolled into the existing patch.

 

// %$#*$&^ damage vs type opcode. remove global 'use eff' opcode; move to melee header
// see macedisr.eff for second half of this fix
COPY_EXISTING ~blun12.itm~ ~override~
 READ_LONG   0x64 "abil_off"
 READ_SHORT  0x68 "abil_num"
 READ_LONG   0x6a "fx_off"
 READ_SHORT  0x70 "fx_num"
 SET "fx_delta" = 0
 FOR (index = 0; index < fx_num; index = index + 1) BEGIN
READ_SHORT ("%fx_off%" +		("%index%" * 0x30)) "type"
READ_ASCII ("%fx_off%" + 0x14 + ("%index%" * 0x30)) "eff_file"
PATCH_IF (("%type%" = 177) AND ("macedisr" STRING_COMPARE_CASE "%eff_file%" = 0)) BEGIN
  DELETE_BYTES ("%fx_off%" +		("%index%" * 0x30)) 0x30 // delete effect
  SET "fx_num" = ("%fx_num%" - 1)
  SET "fx_delta" = ("%fx_delta%" - 1)
  SET "index" = ("%index%" - 1)
END
 END
 WRITE_SHORT 0x70 "%fx_num%"
 FOR (index2 = 0; index2 < abil_num; index2 = index2 + 1) BEGIN
READ_BYTE   ("%abil_off%" +		("%index2%" * 0x38)) "type"
READ_SHORT  ("%abil_off%" + 0x20 + ("%index2%" * 0x38)) "abil_fx_idx"
SET "abil_fx_idx" = ("%abil_fx_idx%" + "%fx_delta%")
WRITE_SHORT ("%abil_off%" + 0x20 + ("%index2%" * 0x38)) "%abil_fx_idx%"
PATCH_IF ("%type%" = 1) BEGIN // melee ability check
  READ_SHORT  ("%abil_off%" + 0x1e + ("%index2%" * 0x38)) "abil_fx_num"
  WRITE_SHORT ("%abil_off%" + 0x1e + ("%index2%" * 0x38)) ("%abil_fx_num%" + 1)
  INSERT_BYTES  ("%fx_off%" +		("%abil_fx_idx%" * 0x30))	   0x30 // new effect
	WRITE_SHORT ("%fx_off%" +		("%abil_fx_idx%" * 0x30))		177 // use eff
	WRITE_BYTE  ("%fx_off%" + 0x02 + ("%abil_fx_idx%" * 0x30))		  2 // target: preset target
	WRITE_LONG  ("%fx_off%" + 0x04 + ("%abil_fx_idx%" * 0x30))		  4 // UNDEAD from...
	WRITE_LONG  ("%fx_off%" + 0x08 + ("%abil_fx_idx%" * 0x30))		  3 // general.ids
	WRITE_BYTE  ("%fx_off%" + 0x0c + ("%abil_fx_idx%" * 0x30))		  1 // instant/permanent
	WRITE_BYTE  ("%fx_off%" + 0x12 + ("%abil_fx_idx%" * 0x30))		100 // probability
	WRITE_ASCII ("%fx_off%" + 0x14 + ("%abil_fx_idx%" * 0x30)) ~macedisr~ // resref
  SET "fx_delta" = ("%fx_delta%" + 1)
END
 END
 BUT_ONLY_IF_IT_CHANGES

// level drain now handled by batch fixes
// changes the icon from generic mace to MoD's one. Also see macedisu.eff.
// new for v4; fix ^&% damage v opcode no-die bug
COPY_EXISTING ~blun25.itm~ ~override~
 WRITE_ASCII 0x3a ~iblun12~ #8 // use MoD BAM
 WRITE_ASCII 0x44 ~gblun06~ #8 // use MoD BAM
 WRITE_ASCII 0x58 ~cblun12~ #8 // use MoD BAM
 READ_LONG   0x64 "abil_off"
 READ_SHORT  0x68 "abil_num"
 READ_LONG   0x6a "fx_off"
 READ_SHORT  0x70 "fx_num"
 SET "fx_delta" = 0
 FOR (index = 0; index < fx_num; index = index + 1) BEGIN
READ_SHORT ("%fx_off%" +		("%index%" * 0x30)) "type"
READ_ASCII ("%fx_off%" + 0x14 + ("%index%" * 0x30)) "eff_file"
PATCH_IF (("%type%" = 177) AND ("macedisr" STRING_COMPARE_CASE "%eff_file%" = 0)) BEGIN // change use macedisr eff to colorglow pulse
  WRITE_SHORT ("%fx_off%"		+ ("%index%" * 0x30)) 9	// colorglow pulse
  WRITE_BYTE  ("%fx_off%" + 0x02 + ("%index%" * 0x30)) 1	// target self
  WRITE_BYTE  ("%fx_off%" + 0x06 + ("%index%" * 0x30)) 202  // green
  WRITE_BYTE  ("%fx_off%" + 0x07 + ("%index%" * 0x30)) 255  // blue
  WRITE_SHORT ("%fx_off%" + 0x08 + ("%index%" * 0x30)) 21   // weapon head/blade minor
  WRITE_SHORT ("%fx_off%" + 0x0a + ("%index%" * 0x30)) 0x6e // cycle speed
  WRITE_BYTE  ("%fx_off%" + 0x0c + ("%index%" * 0x30)) 2	// instant/while equipped
  WRITE_LONG  ("%fx_off%" + 0x0e + ("%index%" * 0x30)) 0	// duration
  WRITE_BYTE  ("%fx_off%" + 0x12 + ("%index%" * 0x30)) 100  // probability 1
  WRITE_LONG  ("%fx_off%" + 0x24 + ("%index%" * 0x30)) 0	// blank save, just in case
END
 END
 FOR (index2 = 0; index2 < abil_num; index2 = index2 + 1) BEGIN
READ_BYTE   ("%abil_off%" +		("%index2%" * 0x38)) "type"
READ_SHORT  ("%abil_off%" + 0x1e + ("%index2%" * 0x38)) "abil_fx_num"
READ_SHORT  ("%abil_off%" + 0x20 + ("%index2%" * 0x38)) "abil_fx_idx"
SET "abil_fx_idx" = ("%abil_fx_idx%" + "%fx_delta%")
WRITE_SHORT ("%abil_off%" + 0x20 + ("%index2%" * 0x38)) ("%abil_fx_idx%")
PATCH_IF ("%type%" = 1) BEGIN // melee ability check
  SET "eff_count" = 0
  WRITE_ASCII (0x04 + "%abil_off%" + ("%index2%" * 0x38)) ~iblun12~ #8 // use MoD BAM
  FOR (index3 = 0; index3 < abil_fx_num; index3 = index3 + 1) BEGIN
	READ_SHORT ("%fx_off%" +		(("%abil_fx_idx%" + "%index3%") * 0x30)) "opcode"
	READ_ASCII ("%fx_off%" + 0x14 + (("%abil_fx_idx%" + "%index3%") * 0x30)) "resref"
	// first fix misordered effects bug
	PATCH_IF (("%opcode%" = 177) AND (("mesdie" STRING_COMPARE_CASE "%resref%" = 0) OR ("die" STRING_COMPARE_CASE "%resref%" = 0))) BEGIN
	  PATCH_IF ("%eff_count%" = 0) BEGIN
		WRITE_ASCII ("%fx_off%" + 0x14 + (("%abil_fx_idx%" + "%index3%") * 0x30)) "mesdie" #8
		SET "eff_count" = 1
	  END ELSE BEGIN
		WRITE_ASCII ("%fx_off%" + 0x14 + (("%abil_fx_idx%" + "%index3%") * 0x30)) "die" #8
	  END
	  WRITE_LONG	("%fx_off%" + 0x24 + (("%abil_fx_idx%" + "%index3%") * 0x30)) 17 // save handled by EFF
	  WRITE_LONG	("%fx_off%" + 0x28 + (("%abil_fx_idx%" + "%index3%") * 0x30)) 19 // save handled by EFF
	END
  END
  // then add new effect for undead damage
  WRITE_SHORT ("%abil_off%" + 0x1e + ("%index2%" * 0x38)) ("%abil_fx_num%" + 1)
  INSERT_BYTES  ("%fx_off%" +		("%abil_fx_idx%" * 0x30))	   0x30 // new effect
	WRITE_SHORT ("%fx_off%" +		("%abil_fx_idx%" * 0x30))		177 // use eff
	WRITE_BYTE  ("%fx_off%" + 0x02 + ("%abil_fx_idx%" * 0x30))		  2 // target: preset target
	WRITE_LONG  ("%fx_off%" + 0x04 + ("%abil_fx_idx%" * 0x30))		  4 // UNDEAD from...
	WRITE_LONG  ("%fx_off%" + 0x08 + ("%abil_fx_idx%" * 0x30))		  3 // general.ids
	WRITE_BYTE  ("%fx_off%" + 0x0c + ("%abil_fx_idx%" * 0x30))		  1 // instant/permanent
	WRITE_BYTE  ("%fx_off%" + 0x12 + ("%abil_fx_idx%" * 0x30))		100 // probability
	WRITE_ASCII ("%fx_off%" + 0x14 + ("%abil_fx_idx%" * 0x30)) ~macedisu~ // resref
  SET "fx_delta" = ("%fx_delta%" + 1)
END
 END
 BUT_ONLY_IF_IT_CHANGES

// change from damage v type (179) to damage (12); see blun12.itm
COPY_EXISTING ~macedisr.eff~ ~override~
 WRITE_LONG  0x10 12 // opcode: damage
 WRITE_LONG  0x1c  2 // fixed damage
 WRITE_SHORT 0x20  0 // straight butter, baby
 WRITE_SHORT 0x60  0 // param3 not needed
 BUT_ONLY_IF_IT_CHANGES

// changes bonus damage to undead for IMoD (blun25.itm) to 1d6 + 1 to bring total to 2d6 +4
COPY_EXISTING ~macedisr.eff~ ~override/macedisu.eff~
 WRITE_LONG 0x1c 1 // fixed damage

 

Teleport Field is no save/not dispellable/bypass resistance

The description mentions that saves negate the effect, but it's coded for no save. Usual question: change spell or description?

Link to comment
QUOTE(Iroquois @ Aug 16 2007, 07:54 PM) *

Teleport Field is no save/not dispellable/bypass resistance

 

The description mentions that saves negate the effect, but it's coded for no save. Usual question: change spell or description?

 

I vote for change description. It'd be a fairly severe nerf of an already largely middling spell if the save were allowed.

Link to comment

Archived

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

×
×
  • Create New...