Gort Posted February 18, 2007 Share Posted February 18, 2007 Fixpack v2 First: although description of Vampiric Touch says it is not stackable, it actually is. There is no necessary delay between casting. Second: familiar may be dropped from PC inventory when it is full and PC gets some item from script or dialog. Link to comment
CamDawg Posted March 1, 2007 Share Posted March 1, 2007 First: although description of Vampiric Touch says it is not stackable, it actually is. There is no necessary delay between casting. There's no clean way to fix this; I think the best we can do is to prevent a second casting from adding to the caster's HP. Making the victim immune would stop both, but it doesn't make sense as a different mage should be able to use VT on them. Plus, it also wouldn't stop the mage from using VT on another target. Second: familiar may be dropped from PC inventory when it is full and PC gets some item from script or dialog. Hardcoded. Link to comment
Macready Posted March 1, 2007 Share Posted March 1, 2007 Hello - First: although description of Vampiric Touch says it is not stackable, it actually is. There is no necessary delay between casting. There's no clean way to fix this; I think the best we can do is to prevent a second casting from adding to the caster's HP. Making the victim immune would stop both, but it doesn't make sense as a different mage should be able to use VT on them. Plus, it also wouldn't stop the mage from using VT on another target. Larloch's shares this problem. I've already fixed that one so that you can only charge your HPs once per active casting. Vampiric Touch has another issue altogether: the amount of damage you do and the amount of HPs you gain are rarely equal. Plus, the Fixpack version does *not* do 1D6 per two levels as the description states -- you do some sort of sliding fixed damage deal. I'm tempted to change VT to something like 4 fixed dmg per two levels (an extension of Larlcoh's 4 dmg at level 1) in order to fix the damage done != HPs received issue, because there is evidently no way to keep the damage random and coordinate the two. Link to comment
CamDawg Posted March 2, 2007 Share Posted March 2, 2007 Larloch's shares this problem. I've already fixed that one so that you can only charge your HPs once per active casting. Unlike VT, LMD isn't supposed to have this limitation. Vampiric Touch has another issue altogether: the amount of damage you do and the amount of HPs you gain are rarely equal. Plus, the Fixpack version does *not* do 1D6 per two levels as the description states -- you do some sort of sliding fixed damage deal. Fixpack leaves the damage unchanged in VT--trying to fix it and getting the drain to match the HPs gained is a PITA that, frankly, is low priority. Link to comment
Guest Guest Posted March 2, 2007 Share Posted March 2, 2007 it'd be good to remove stacking, at least.. my sorc had over 400 hp once Link to comment
CamDawg Posted April 6, 2007 Share Posted April 6, 2007 I've played with this quite a bit and I've been unable to prevent the stacking. The usual sneaky trick of shell spells combined with spell immunity doesn't work--because the original spell is actually targeted at someone else, the immunity doesn't seem to kick in. Making the caster immune to the entire spell means that they're immune to others targeting them with VT, which is, I think, a larger bug than the original. If anyone has ideas, let me know, otherwise there's nothing really to be done here. Link to comment
Nythrun Posted April 6, 2007 Share Posted April 6, 2007 spwi119 stays the same except the hitpoint bonus is replaced with spwi119b which is hitpoint bonus + immunity to spwi119b didn't work? It's kinda worth preventing since the max hitpoints opcode stacks geometrically Link to comment
Guest erik Posted April 6, 2007 Share Posted April 6, 2007 Evil Scripting Hacks ? I can think of an evil solution involving opcode #309, but it's most certainly nothing I would want in a fixpack... Link to comment
Nythrun Posted April 8, 2007 Share Posted April 8, 2007 Sorry, that was like the least helpful post ever I'm just curious why something simple like this didn't work (rough sketch, doubt it works, but you get the drift) COPY_EXISTING ~spwi314.spl~ ~override/spwi314b.spl~ PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN WRITE_ASCII 0x10 ~~ #8 WRITE_SHORT 0x22 0x00 WRITE_SHORT 0x25 0x00 WRITE_BYTE 0x27 0x00 READ_LONG 0x64 "ho" READ_LONG 0x6a "eo" FOR (READ_SHORT 0x68 "hc"; "hc" > 0x00; "hc" -= 0x1) BEGIN WRITE_BYTE ("ho" + (("hc" - 0x01) * 0x28) + 0x0c) 0x05 WRITE_LONG ("ho" + (("hc" - 0x01) * 0x28) + 0x12) 0x00 READ_SHORT ("ho" + (("hc" - 0x01) * 0x28) + 0x1e) "ec" READ_SHORT ("ho" + (("hc" - 0x01) * 0x28) + 0x20) "ei" SET "nc" = "ec" FOR ("i2" = "ec"; "i2" > 0x00; "i2" -= 0x01) BEGIN READ_BYTE ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x02) "tt" PATCH_IF ("tt" = 0x02) THEN BEGIN SET "nc" -= 0x01 DELETE_BYTES ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x00) 0x30 END ELSE BEGIN WRITE_BYTE ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x03) 0x00 WRITE_BYTE ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x0d) 0x03 READ_BYTE ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x00) "op" PATCH_IF ("op" = 0xce) THEN BEGIN WRITE_ASCII ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x14) ~spwi314b~ END END END WRITE_SHORT ("ho" + (("i1" - 0x01) * 0x28) + 0x1e) "nc" END READ_SHORT 0x68 "hc" READ_SHORT 0x6e "ei" READ_SHORT 0x70 "gc" SET "ei" += "gc" FOR ("i1" = 0x00; "i1" < ("hc" * 0x28); "i1" += 0x28) BEGIN READ_SHORT ("ho" + "i1" + 0x1e) "ec" WRITE_SHORT ("ho" + "i1" + 0x20) "ei" SET "ei" += "ec" END END BUT_ONLY COPY_EXISTING ~spwi314.spl~ ~override~ PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN READ_LONG 0x64 "ho" READ_LONG 0x6a "eo" FOR (READ_SHORT 0x68 "hc"; "hc" > 0x00; "hc" -= 0x1) BEGIN READ_SHORT ("ho" + (("hc" - 0x01) * 0x28) + 0x10) "lv" READ_SHORT ("ho" + (("hc" - 0x01) * 0x28) + 0x1e) "ec" READ_SHORT ("ho" + (("hc" - 0x01) * 0x28) + 0x20) "ei" SET "nc" = "ec" FOR ("i2" = "ec"; "i2" > 0x00; "i2" -= 0x01) BEGIN READ_BYTE ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x02) "tt" PATCH_IF ("tt" = 0x01) THEN BEGIN SET "nc" -= 0x01 DELETE_BYTES ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x00) 0x30 END ELSE BEGIN READ_BYTE ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x00) "op" PATCH_IF ("op" = 0xd7) THEN BEGIN READ_ASCII ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x00) ~fx~ (0x30) INSERT_BYTES ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x00) 0x30 WRITE_ASCIIE ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x00) ~%fx%~ WRITE_SHORT ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x00) 0x92 WRITE_BYTE ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x02) 0x01 WRITE_LONG ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x04) "lv" WRITE_LONG ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x08) 0x01 WRITE_ASCII ("eo" + (("ei" + "i2" - 0x01) * 0x30) + 0x14) ~spwi314b~ END END END WRITE_SHORT ("ho" + (("i1" - 0x01) * 0x28) + 0x1e) "nc" END READ_SHORT 0x68 "hc" READ_SHORT 0x6e "ei" READ_SHORT 0x70 "gc" SET "ei" += "gc" FOR ("i1" = 0x00; "i1" < ("hc" * 0x28); "i1" += 0x28) BEGIN READ_SHORT ("ho" + "i1" + 0x1e) "ec" WRITE_SHORT ("ho" + "i1" + 0x20) "ei" SET "ei" += "ec" END END BUT_ONLY Link to comment
Macready Posted April 8, 2007 Share Posted April 8, 2007 Hello - The approach I took with LMD is to separate the damage and the HP buff into two separate spells, both of which are cast by a cast spell effect from the main spell. The HP buff includes a self-targeted protection from itself which lasts the duration of the buff. Hence, damage an enemy repeatedly, but charge your HPs only once (until the buff wears out). Tested fine. Link to comment
CamDawg Posted April 8, 2007 Share Posted April 8, 2007 Well, I swear the first time it didn't work--it is now. VT no longer stacks HP for the caster. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.