Roana Posted November 27, 2006 Share Posted November 27, 2006 Hello , By searching something related to spells, I stumbled accidently over something related to the "speculative script fixes" section of the fixpack, that might be interesting for you too:). As I found a spell named "Lower Poison Resistance" (which I didn't have searched in this moment), I remembered, that I have read this in the TP2 of Fixpack Beta 4. A quick search in this file lead me to this: // in between dragon fear and a wing buffet--per other dragon AI, should be lowering specific resistances to breath attack, but nothing to reduce poison resistance COPY_EXISTING ~draggre2.bcs~ ~override~ ~draggree.bcs~ ~override~ DECOMPILE_BCS_TO_BAF REPLACE_TEXTUALLY ~ReallyForceSpell(NearestEnemyOf(Myself),0)~ ~~ COMPILE_BAF_TO_BCS BUT_ONLY_IF_IT_CHANGES Well, a spell, that lower the poison resistance exists, but was not listed in the Spell.IDS. It is the SPIN530.SPL . I have added it in this way to my Spell.IDS: 3530 DRAGON_LOWER_POISON_RESISTANCE (although you might prefer another name for this, because mine is very long) and then corrected the two above mentioned scripts for the dragon. Just wanted to inform you Regards Roana Link to comment
devSin Posted November 27, 2006 Share Posted November 27, 2006 The problem with the poison resistance opcode is that it can only ever *set* poison resistance -- there's no way to increment or decrement the resistance, so no way to "lower" it. And so the spell was removed before release, chachacha! Link to comment
Nythrun Posted November 27, 2006 Share Posted November 27, 2006 Would have been nice if everything had been updated to use the poison state rather than the damage type while they were at it Link to comment
devSin Posted November 27, 2006 Share Posted November 27, 2006 Not really. The persistent effects break everything. I would have much preferred all poison damage, but I guess it doesn't have the appeal of 3 damage per second for 30 seconds OMGOMG! I'm sure they would have changed the behavior if they felt it was worthwhile (but they were pretty good at avoiding resistable poison damage altogether, with only the ToB shield potentially affecting resistance in a negative fashion). Link to comment
Nythrun Posted November 27, 2006 Share Posted November 27, 2006 Someone should make a scimitar upgrade that does 1d8+4 +90 poison damage and see if that appears excessive to anyone. Anyway, that reminds me: there are twenty-six items that grant immunity to the poison state and not the damage type, or vice versa, and Fixpack is only patching amul22.itm thus far (yes, I know the patsy ring isn't used ) As people have the opportunity to sample and inflict both exciting flavors of poison, this ought to be corrected. Link to comment
Nythrun Posted November 28, 2006 Share Posted November 28, 2006 This might eve install COPY_EXISTING "amul22.itm" "override" // Periapt of Proof Against Poison needs opcode 0xad "barlfl.itm" "override" // Flail (barl.cre) needs opcode 0xad // (unused) "bazpatrg.itm" "override" // (Ring) needs opcode 0xad // (unneeded) "bhaalhp1.itm" "override" // (Belt for Abazigal, Sendai, Draconis) needs opcode 0xad "bhaalimm.itm" "override" // (Belt for Balthazar) needs opcode 0xad "demogorg.itm" "override" // (Demogorgon's Flail) needs opcode 0xad "elemprin.itm" "override" // (Elemental Prince's Ring) needs opcode 0xad "finmel01.itm" "override" // (Ammelyssan's Necklace) needs opcode 0xad // (unneeded) "fsspir.itm" "override" // (Helmite Ghost's Ring) needs opcode 0xad // (notimmun) "helm31.itm" "override" // Helm of the Rock needs opcode 0x65 // (notimmun) "helm32.itm" "override" // Helm of the Rock (horny) needs opcode 0x65 "hgber01.itm" "override" // (Berenn's Two-Handed Sword +1) needs opcode 0xad // (unneeded) "imoenhp1.itm" "override" // Imoen's Belt needs opcode 0xad "irongol.itm" "override" // (Iron Golem's Ring) needs opcode 0xad "mdog1.itm" "override" // (Cerebus's/Aranthus's doggie ring) needs opcode 0xad "mel01.itm" "override" // (Ammelyssan's Imoen's Belt) needs opcode 0xad // (unneeded) "minhp1.itm" "override" // (Can't Die Necklace) needs opcode 0xad "ravag03.itm" "override" // (The Ravager's Necklace) needs opcode 0xad "ring39.itm" "override" // Ring of Gaxx needs opcode 0xad // (unused) "ring93.itm" "override" // (Ring) needs opcode 0x65 // (unneeded) "sengua04.itm" "override" // (Slavemaster Necklace) needs opcode 0xad "shararm.itm" "override" // Darkmail +3 needs opcode 0xad (note: Poison Resistance is undocumented) // (notimmun) "shld31.itm" "override" // Darksteel Shield +4 needs opcode 0x65 // (unneeded) "surehp1.itm" "override" // needs opcode 0xad "sw1h34.itm" "override" // Albruin +1 needs opcode 0xad "tstatue.itm" "override" // (Cutscene Statue Necklace) needs opcode 0xad PATCH_IF (%SOURCE_SIZE% > 0x71) THEN BEGIN READ_LONG 0x64 "ho" READ_SHORT 0x68 "hc" READ_LONG 0x6a "eo" READ_SHORT 0x70 "gc" SET "poista" = 0x00 SET "poidam" = 0x00 FOR ("i1" = 0x00; "i1" < ("gc" * 0x30); "i1" += 0x30) BEGIN READ_SHORT ("eo" + "i1" + 0x00) "op" READ_LONG ("eo" + "i1" + 0x08) "p2" PATCH_IF (("op" = 0x65) AND ("p2" = 0x19)) THEN BEGIN SET "poista" = 0x01 READ_ASCII ("eo" + "i1" + 0x00) "template" (0x30) END ELSE PATCH_IF ("op" = 0xad) THEN BEGIN SET "poidam" = 0x01 READ_ASCII ("eo" + "i1" + 0x00) "template" (0x30) END END PATCH_IF (("poista" = 0x01) AND ("poidam" = 0x00)) THEN BEGIN WRITE_SHORT 0x70 ("gc" + 0x01) INSERT_BYTES ("eo" + ("gc" * 0x30) + 0x00) 0x30 WRITE_ASCIIE ("eo" + ("gc" * 0x30) + 0x00) "%template%" WRITE_SHORT ("eo" + ("gc" * 0x30) + 0x00) 0xad // poison resistance WRITE_LONG ("eo" + ("gc" * 0x30) + 0x04) 0x64 // modifier: +100% WRITE_LONG ("eo" + ("gc" * 0x30) + 0x08) 0x00 // type: cumulative FOR ("i2" = 0x00; "i2" < ("hc" * 0x38); "i2" += 0x38) BEGIN READ_SHORT ("ho" + "i2" + 0x20) "ei" WRITE_SHORT ("ho" + "i2" + 0x20) ("ei" + 0x01) END END ELSE PATCH_IF (("poista" = 0x00) AND ("poidam" = 0x01)) THEN BEGIN WRITE_SHORT 0x70 ("gc" + 0x01) INSERT_BYTES ("eo" + ("gc" * 0x30) + 0x00) 0x30 WRITE_ASCIIE ("eo" + ("gc" * 0x30) + 0x00) "%template%" WRITE_SHORT ("eo" + ("gc" * 0x30) + 0x00) 0x65 // immunity to effect WRITE_LONG ("eo" + ("gc" * 0x30) + 0x04) 0x00 // unused WRITE_LONG ("eo" + ("gc" * 0x30) + 0x08) 0x19 // state: poison FOR ("i2" = 0x00; "i2" < ("hc" * 0x38); "i2" += 0x38) BEGIN READ_SHORT ("ho" + "i2" + 0x20) "ei" WRITE_SHORT ("ho" + "i2" + 0x20) ("ei" + 0x01) END END END BUT_ONLY_IF_IT_CHANGES Link to comment
devSin Posted November 28, 2006 Share Posted November 28, 2006 I already made a list for this somewhere (use the search, people!). You don't need to patch minhp1 items or the bonus immunities given only to one minhp creature (you can't kill them, and they shouldn't have spurious damage immunities just because they can't die), and we need to figure out who actually deserves immunity to poison damage in addition to the poison immunity. AMUL22, BARLFL (hooray, Talona!), IRONGOL (if they also have acid immunity), and RING39 should be safe. Kish didn't have a problem with this patch in general, though, so it's not a big deal. But I could have sworn Cam already coded these up. Link to comment
Nythrun Posted November 28, 2006 Share Posted November 28, 2006 Takes longer to use the search than it does to repopulate the list, but here it is. One of the things that slipped through the cracks it would appear, as there isn't any code in that post, nor in the fixpack, that addresses this. Item, Immunity to poison, Reduced damage from poison AMUL22.ITM, 1, 0 // update BARLFL.ITM, 1, 0 // update, 'cause Barl's o-so-tough BHAALHP1.ITM, 1, 0 // no update BHAALIMM.ITM, 1, 0 // no update DEMOGORG.ITM, 1, 0 // no update (has minhp1 anyway) DRAKRING.ITM, 0, 1 // no update (DG tougher stuff) ELEMPRIN.ITM, 1, 0 // update (I guess they're supposed to be immune to poison?) FINMEL01.ITM, 1, 0 // no update (has minimum HP) FSSPIR.ITM, 1, 0 // no update (has INVULNER) HELM31.ITM, 0, 1 // no update (grants resistance only) HELM32.ITM, 0, 1 // no update (grants resistance only) HGBER01.ITM, 1, 0 // update (although, why he gets immunities, I have no idea) IMOENHP1.ITM, 1, 0 // no update IRONGOL.ITM, 1, 0 // probably update (have to check if they're naturally resistant to acid too) MDOG1.ITM, 1, 0 // don't know, don't care MEL01.ITM, 1, 0 // no update MINHP1.ITM, 1, 0 // no update RAVAG03.ITM, 1, 0 // no update (I don't think)? RING39.ITM, 1, 0 // update RING93.ITM, 0, 1 // no update (unused) SCRL08.ITM, 1, 0 // update SENGUA04.ITM, 1, 0 // no update (has minimum HP) SHARARM.ITM, 1, 0 // no update (has ringdemn) SHLD31.ITM, 0, 1 // no update (grants resistance only) SUREHP1.ITM, 1, 0 // no update SW1H34.ITM, 1, 0 // update (unused, but everybody restores) TSTATUE.ITM, 1, 0// no update (has minimum HP) "amul22.itm" agreed on update. "barlfl.itm" agreed on update "bazpatrg.itm" agreed on no update "bhaalhp1.itm" agreed on no update "elemprin.itm" agreed on update "fsspir.itm" agreed no update "helm31.itm" agreed no update "helm32.itm" agreed no update "hgber01.itm" agreed update "imoenhp1.itm" agreed no update "irongol.itm" agreed update "minhp1.itm" agreed no update "ring39.itm" agreed update "ring93.itm" agreed no update "sengua04.itm" agreed no update "shld31.itm" agreed no update "surehp1.itm" agreed no update "sw1h34.itm" agreed update "tstatue.itm" agreed no update, I'd written that this was cutscene only anyway and forgot the double slash Leaves disagreements on the following: "bhaalimm.itm" Balthazar is monk without immunity to poison damage, I say change it. "demogorg.itm" I think demogor2.cre is meant to be immune to poison and the flail isn't the minhp item anyway "finmel01.itm" finmel01.cre, debateable whether or not a demigoddess gets ill from lukewarm pork. "mdog1.itm" I say update, devSin says doesn't care. "mel01.itm" mel01.cre, I'm okay with skipping this one, patching it accomplishes nothing. "ravag03.itm" Why immune to the state and not the damage type? No minhp effect here. "shararm.itm" gorwom06.cre (Xei Win Toh) Darkmail mark two. Again, no minhp effects. Link to comment
devSin Posted November 28, 2006 Share Posted November 28, 2006 tstatue.itm -> actually, the statues have it forevarz once you've saved Trademeet. Oh, yes, heroes, most excellent work. balthazar -> fine demogorg -> minhp1 finmel01 -> minhp1 mdog1 -> go, moon dog! whatever mel01 -> you don't ever kill her ravag03 -> I don't remember shararm -> I don't remember I traditionally say what's wrong and then let Cam do the actual work. Also, my data files are significantly different than the default files, so it's often the case where my list will be incomplete (simply because I've already changed mine). Link to comment
Nythrun Posted November 28, 2006 Share Posted November 28, 2006 I do apologize if I'm monkeywrenching a system that's (obviously) been working well for some time now. Thanks for recommending the thread anyway, portrait icons needed a bit of sorting I don't think scrl08 needs changing, but spells should probably get the once-over too. COPY_EXISTING ~amul22.itm~ ~override~ // Periapt of Proof Against Poison ~barlfl.itm~ ~override~ // Flail (barl.cre) // (unused) ~bazpatrg.itm~ ~override~ // (Ring) // (unneeded) ~bhaalhp1.itm~ ~override~ // (Belt for Abazigal, Sendai, Draconis) ~bhaalimm.itm~ ~override~ // (Belt for Balthazar) ~demogorg.itm~ ~override~ // (Demogorgon's Flail) ~elemprin.itm~ ~override~ // (Elemental Prince's Ring) ~finmel01.itm~ ~override~ // (Ammelyssan's Necklace) // (unneeded) ~fsspir.itm~ ~override~ // (Helmite Ghost's Ring) ~helm30.itm~ ~override~ // Thieves' Hood // (notimmun) ~helm31.itm~ ~override~ // Helm of the Rock // (notimmun) ~helm32.itm~ ~override~ // Helm of the Rock (horny) ~hgber01.itm~ ~override~ // (Berenn's Two-Handed Sword +1) // (unneeded) ~imoenhp1.itm~ ~override~ // Imoen's Belt ~irongol.itm~ ~override~ // (Iron Golem's Ring) ~mdog1.itm~ ~override~ // (Cerebus's/Aranthus's doggie ring) // (unneeded) ~mel01.itm~ ~override~ // (Melissan's Imoen's Belt) // (unneeded) ~minhp1.itm~ ~override~ // (Can't Die Necklace) ~ravag03.itm~ ~override~ // (The Ravager's Necklace) ~ring39.itm~ ~override~ // Ring of Gaxx ~ring46.itm~ ~override~ // Ring of Anti-Venom // (unused) ~ring93.itm~ ~override~ // (Ring) ~scrl08.itm~ ~override~ // Protection from Poison (Scroll) // (unneeded) ~sengua04.itm~ ~override~ // (Slavemaster Necklace) ~shararm.itm~ ~override~ // Darkmail +3 (Xei Win Toh) // (notimmun) ~shld31.itm~ ~override~ // Darksteel Shield +4 // (unneeded) ~surehp1.itm~ ~override~ // (Ring for Yaga-Shura) ~sw1h34.itm~ ~override~ // Albruin // (unneeded) ~tstatue.itm~ ~override~ // (Cutscene Statue Necklace) PATCH_IF (%SOURCE_SIZE% > 0x71) THEN BEGIN READ_LONG 0x64 "ho" READ_SHORT 0x68 "hc" READ_LONG 0x6a "eo" FOR ("i1" = 0x00; "i1" < (("hc" + 0x01) * 0x38); "i1" += 0x38) BEGIN SET "poista" = 0x00 SET "poidam" = 0x00 SET "poiico" = 0x00 SET "bleico" = 0x00 PATCH_IF ("i1" < ("hc" * 0x38)) THEN BEGIN READ_SHORT ("ho" + "i1" + 0x1e) "ec" READ_SHORT ("ho" + "i1" + 0x20) "ei" END ELSE PATCH_IF ("i1" = ("hc" * 0x38)) THEN BEGIN READ_SHORT 0x6e "ei" READ_SHORT 0x70 "ec" END FOR ("i2" = ("ei" * 0x30); "i2" < (("ei" + "ec") * 0x30); "i2" += 0x30) BEGIN READ_SHORT ("eo" + "i2" + 0x00) "op" READ_LONG ("eo" + "i2" + 0x04) "p1" READ_LONG ("eo" + "i2" + 0x08) "p2" PATCH_IF (("op" = 0x65) AND ("p2" = 0x19)) THEN BEGIN SET "poista" = 0x01 READ_ASCII ("eo" + "i2" + 0x00) "template" (0x30) END ELSE PATCH_IF (("op" = 0xad) AND ("p1" = 0x64)) THEN BEGIN SET "poidam" = 0x01 READ_ASCII ("eo" + "i2" + 0x00) "template" (0x30) END ELSE PATCH_IF (("op" = 0xa9) AND ("p2" = 0x06)) THEN BEGIN SET "poiico" = 0x01 END ELSE PATCH_IF (("op" = 0xa9) AND ("p2" = 0x89)) THEN BEGIN SET "bleico" = 0x01 END END PATCH_IF (("poista" = 0x01) AND ("poidam" = 0x00)) THEN BEGIN INSERT_BYTES ("eo" + "i2" + 0x00) 0x30 WRITE_ASCIIE ("eo" + "i2" + 0x00) "%template%" WRITE_SHORT ("eo" + "i2" + 0x00) 0xad // poison resistance WRITE_LONG ("eo" + "i2" + 0x04) 0x64 // modifier: +100% WRITE_LONG ("eo" + "i2" + 0x08) 0x00 // type: cumulative PATCH_IF ("i1" < ("hc" * 0x38)) THEN BEGIN READ_SHORT ("ho" + "i1" + 0x1e) "ec" WRITE_SHORT ("ho" + "i1" + 0x1e) ("ec" + 0x01) FOR ("i3" = ("i1" + 0x38); "i3" < ("hc" * 0x38); "i3" += 0x38) BEGIN READ_SHORT ("ho" + "i3" + 0x20) "ei" WRITE_SHORT ("ho" + "i3" + 0x20) ("ei" + 0x01) END END ELSE PATCH_IF ("i1" = ("hc" * 0x38)) THEN BEGIN READ_SHORT 0x70 "ec" WRITE_SHORT 0x70 ("ec" + 0x01) FOR ("i3" = 0x00; "i3" < ("hc" * 0x38); "i3" += 0x38) BEGIN READ_SHORT ("ho" + "i3" + 0x20) "ei" WRITE_SHORT ("ho" + "i3" + 0x20) ("ei" + 0x01) END END END PATCH_IF (("poista" = 0x00) AND ("poidam" = 0x01)) THEN BEGIN INSERT_BYTES ("eo" + ("gc" * 0x30) + 0x00) 0x30 WRITE_ASCIIE ("eo" + ("gc" * 0x30) + 0x00) "%template%" WRITE_SHORT ("eo" + ("gc" * 0x30) + 0x00) 0x65 // immunity to effect WRITE_LONG ("eo" + ("gc" * 0x30) + 0x04) 0x00 // unused WRITE_LONG ("eo" + ("gc" * 0x30) + 0x08) 0x19 // state: poison PATCH_IF ("i1" < ("hc" * 0x38)) THEN BEGIN READ_SHORT ("ho" + "i1" + 0x1e) "ec" WRITE_SHORT ("ho" + "i1" + 0x1e) ("ec" + 0x01) FOR ("i3" = ("i1" + 0x38); "i3" < ("hc" * 0x38); "i3" += 0x38) BEGIN READ_SHORT ("ho" + "i3" + 0x20) "ei" WRITE_SHORT ("ho" + "i3" + 0x20) ("ei" + 0x01) END END ELSE PATCH_IF ("i1" = ("hc" * 0x38)) THEN BEGIN READ_SHORT 0x70 "gc" WRITE_SHORT 0x70 ("ec" + 0x01) FOR ("i3" = 0x00; "i3" < ("hc" * 0x38); "i3" += 0x38) BEGIN READ_SHORT ("ho" + "i3" + 0x20) "ei" WRITE_SHORT ("ho" + "i3" + 0x20) ("ei" + 0x01) END END END PATCH_IF ((("poista" = 0x01) OR ("poidam" = 0x01)) AND ("poiico" = 0x00) AND (("%SOURCE_RES%" STRING_EQUAL_CASE "amul22") OR ("%SOURCE_RES%" STRING_EQUAL_CASE "helm30") OR ("%SOURCE_RES%" STRING_EQUAL_CASE "irongol") OR ("%SOURCE_RES%" STRING_EQUAL_CASE "ring39") OR ("%SOURCE_RES%" STRING_EQUAL_CASE "ring46") OR ("%SOURCE_RES%" STRING_EQUAL_CASE "scrl08") OR ("%SOURCE_RES%" STRING_EQUAL_CASE "sw1h34"))) THEN BEGIN INSERT_BYTES ("eo" + ("ec" * 0x30) + 0x00) 0x30 WRITE_ASCIIE ("eo" + ("ec" * 0x30) + 0x00) "%template%" WRITE_SHORT ("eo" + ("ec" * 0x30) + 0x00) 0xa9 // immunity to portrait icon WRITE_LONG ("eo" + ("ec" * 0x30) + 0x04) 0x00 // unused WRITE_LONG ("eo" + ("ec" * 0x30) + 0x08) 0x06 // icon: poisoned PATCH_IF ("i1" < ("hc" * 0x38)) THEN BEGIN READ_SHORT ("ho" + "i1" + 0x1e) "ec" WRITE_SHORT ("ho" + "i1" + 0x1e) ("ec" + 0x01) FOR ("i3" = ("i1" + 0x38); "i3" < ("hc" * 0x38); "i3" += 0x38) BEGIN READ_SHORT ("ho" + "i3" + 0x20) "ei" WRITE_SHORT ("ho" + "i3" + 0x20) ("ei" + 0x01) END END ELSE PATCH_IF ("i1" = ("hc" * 0x38)) THEN BEGIN READ_SHORT 0x70 "ec" WRITE_SHORT 0x70 ("ec" + 0x01) FOR ("i3" = 0x00; "i3" < ("hc" * 0x38); "i3" += 0x38) BEGIN READ_SHORT ("ho" + "i3" + 0x20) "ei" WRITE_SHORT ("ho" + "i3" + 0x20) ("ei" + 0x01) END END END PATCH_IF ((("poista" = 0x01) OR ("poidam" = 0x01)) AND ("bleico" = 0x00) AND (("%SOURCE_RES%" STRING_EQUAL_CASE "amul22") OR ("%SOURCE_RES%" STRING_EQUAL_CASE "helm30") OR ("%SOURCE_RES%" STRING_EQUAL_CASE "irongol") OR ("%SOURCE_RES%" STRING_EQUAL_CASE "ring39") OR ("%SOURCE_RES%" STRING_EQUAL_CASE "ring46") OR ("%SOURCE_RES%" STRING_EQUAL_CASE "scrl08") OR ("%SOURCE_RES%" STRING_EQUAL_CASE "sw1h34"))) THEN BEGIN INSERT_BYTES ("eo" + ("ec" * 0x30) + 0x00) 0x30 WRITE_ASCIIE ("eo" + ("ec" * 0x30) + 0x00) "%template%" WRITE_SHORT ("eo" + ("ec" * 0x30) + 0x00) 0xa9 // immunity to portrait icon WRITE_LONG ("eo" + ("ec" * 0x30) + 0x04) 0x00 // unused WRITE_LONG ("eo" + ("ec" * 0x30) + 0x08) 0x89 // icon: bleeding PATCH_IF ("i1" < ("hc" * 0x38)) THEN BEGIN READ_SHORT ("ho" + "i1" + 0x1e) "ec" WRITE_SHORT ("ho" + "i1" + 0x1e) ("ec" + 0x01) FOR ("i3" = ("i1" + 0x38); "i3" < ("hc" * 0x38); "i3" += 0x38) BEGIN READ_SHORT ("ho" + "i3" + 0x20) "ei" WRITE_SHORT ("ho" + "i3" + 0x20) ("ei" + 0x01) END END ELSE PATCH_IF ("i1" = ("hc" * 0x38)) THEN BEGIN READ_SHORT 0x70 "ec" WRITE_SHORT 0x70 ("ec" + 0x01) FOR ("i3" = 0x00; "i3" < ("hc" * 0x38); "i3" += 0x38) BEGIN READ_SHORT ("ho" + "i3" + 0x20) "ei" WRITE_SHORT ("ho" + "i3" + 0x20) ("ei" + 0x01) END END END END END BUT_ONLY_IF_IT_CHANGES Link to comment
devSin Posted November 28, 2006 Share Posted November 28, 2006 There's also the decaying (101) icon used only for a poison attack in BG2 (in addition to bleeding and poisoned). Link to comment
Nythrun Posted November 28, 2006 Share Posted November 28, 2006 The decaying icon in Dolorous Decay doesn't allow a save, so it's probably intended to be part of the no-save slow. COPY_EXISTING ~spcl221.spl~ ~override~ // Cavalier kit abilites // ~spcl415.spl~ ~override~ // Otiluke's Singularity Snare which still needs patching ~spcl818.spl~ ~override~ // Monk Poison Immunity ~spcl924.spl~ ~override~ // Druid Poison Immunity // (unused) ~spin853.spl~ ~override~ // (FORCE_SPHERE) Otiluke's Singularity Dupe // ~spwi413.spl~ ~override~ // Otiluke's Singularity which still needs patching // (unused) ~spwi853.spl~ ~override~ // Otiluke's Singularity Dupe PATCH_IF (%SOURCE_SIZE% > 0x71) THEN BEGIN READ_LONG 0x64 "ho" READ_SHORT 0x68 "hc" READ_LONG 0x6a "eo" READ_SHORT 0x70 "gc" SET "poista" = 0x00 SET "poidam" = 0x00 SET "bleico" = 0x00 FOR ("i1" = 0x00; "i1" < ("hc" * 0x28); "i1" += 0x28) BEGIN READ_SHORT ("ho" + "i1" + 0x1e) "ec" ELSE 0 READ_SHORT ("ho" + "i1" + 0x20) "ei" ELSE 0 FOR ("i2" = ("ei" * 0x30); "i2" < (("ei" + "ec") * 0x30); "i2" += 0x30) BEGIN READ_SHORT ("eo" + "i2" + 0x00) "op" ELSE 0 READ_LONG ("eo" + "i2" + 0x08) "p1" ELSE 0 READ_LONG ("eo" + "i2" + 0x08) "p2" ELSE 0 PATCH_IF (("op" = 0x65) AND ("p2" = 0x19)) THEN BEGIN SET "poista" = 0x01 READ_ASCII ("eo" + "i2" + 0x00) "template" (0x30) END ELSE PATCH_IF (("op" = 0xad) AND ("p1" = 0x64)) THEN BEGIN SET "poidam" = 0x01 END ELSE PATCH_IF (("op" = 0xa9) AND ("p2" = 0x89)) THEN BEGIN SET "bleico" = 0x01 END PATCH_IF (((("i2" + 0x30) = ("ei" + "ec") * 0x30)) AND (("poista" = 0x01) AND ("poidam" = 0x00)) THEN BEGIN INSERT_BYTES ("eo" + "i2" + 0x30) 0x30 WRITE_ASCIIE ("eo" + "i2" + 0x30) "%template%" WRITE_SHORT ("eo" + "i2" + 0x00) 0xad // poison resistance WRITE_LONG ("eo" + "i2" + 0x04) 0x64 // modifier: +100% WRITE_LONG ("eo" + "i2" + 0x08) 0x00 // type: cumulative FOR ("i3" = ("i1" + 0x28); "i3" < ("hc" * 0x28); "i3" += 0x28) BEGIN READ_SHORT ("ho" + "i3" + 0x20) "ci" WRITE_SHORT ("ho" + "i3" + 0x20) ("ci" + 0x01) END SET "ec" += 0x01 WRITE_SHORT ("ho" + "i1" + 0x1e) "ec" END PATCH_IF (((("i2" + 0x30) = ("ei" + "ec") * 0x30)) AND (("poista" = 0x01) AND ("bleico" = 0x00)) THEN BEGIN INSERT_BYTES ("eo" + "i2" + 0x30) 0x30 WRITE_ASCIIE ("eo" + "i2" + 0x30) "%template%" WRITE_SHORT ("eo" + "i2" + 0x00) 0xa9 // immunity to portrait icon WRITE_LONG ("eo" + "i2" + 0x04) 0x00 // unused WRITE_LONG ("eo" + "i2" + 0x08) 0x89 // icon: bleeding FOR ("i3" = ("i1" + 0x28); "i3" < ("hc" * 0x28); "i3" += 0x28) BEGIN READ_SHORT ("ho" + "i3" + 0x20) "ci" WRITE_SHORT ("ho" + "i3" + 0x20) ("ci" + 0x01) END SET "ec" += 0x01 WRITE_SHORT ("ho" + "i1" + 0x1e) "ec" END END END END BUT_ONLY_IF_IT_CHANGES This thread is seriously hijacked. Link to comment
devSin Posted November 28, 2006 Share Posted November 28, 2006 Slow has its own icon. Link to comment
Nythrun Posted November 28, 2006 Share Posted November 28, 2006 So does poison. And while the poison state and poison icon in sppr610 allow a save versus poison at -2, the slow, the slow icon, the vvc, the sound effects, and the decaying icon don't allow a save at all, which indicates to me that the decaying icon is part of a different effect bundle than the slow. Unless you're arguing for specific spell protection here, of course - but I didn't think you were. Link to comment
devSin Posted November 28, 2006 Share Posted November 28, 2006 IIRC, the slow icon is implicit (it's hard-coded to the effect, which is what I meant by "its own icon"). I had a reason for having poison immunity protect from the decaying icon, but I don't remember what it is, and I don't want to look through the spell to see why. Sorry! Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.