Immortality Posted July 24, 2007 Share Posted July 24, 2007 Mem says that trolls still die when you cast cloudkill on them? He was using the fixpack v4 without the happy modders whatever and the beta core fixes. Thx! Link to comment
CamDawg Posted July 24, 2007 Share Posted July 24, 2007 Downed trolls are no longer killed by poison (i.e. cloudkill), no. Only acid and fire. Link to comment
Nythrun Posted July 25, 2007 Share Posted July 25, 2007 Trolls are frequently level six, and thus vulnerable to the (non-poisonous) slay effect of Cloudkill. This is ok Link to comment
devSin Posted July 26, 2007 Share Posted July 26, 2007 We might go through and make sure that the comatose trolls have the same level as their standing levels (I don't know if it makes sense to only be able to slay them while they're down). Link to comment
CamDawg Posted January 3, 2008 Share Posted January 3, 2008 We might go through and make sure that the comatose trolls have the same level as their standing levels (I don't know if it makes sense to only be able to slay them while they're down). The big, big problem is the generic troll pair, troll01 (live, level 8) and troll02 (dead, level 6). Many other trolls become troll02 when they die--eletro02 (level 8), firtrl01 (6), kptrol01 (6), kptrol02 (6), kptrol04 (6), kptrol05 (6), and trollens (unused, 8). The only other mismatch is obsice01 (9), which goes to trolsn02 (6) and then revives as trolsn01 (6), which goes back to trolsn02. While I was there, I also checked DVs. These get lost or changed during their transformations: eletro02, firtrl01, kptrol01, kptrol02, kptrol04, and troll01 use their resrefs as DVs but change to troll02 (troll02 DV) when 'dead' Live/dead pairs dgtrol01/dgtrol02, hgtrol01/hgtrol02, trolde01/trolde02, trolfr01/trolfr02, troll03/tromsm2, and trolsp01/trolsp02 use their own resrefs as DVs Live/dead pair trolgi01/trolgi02 use their own resrefs as DVs; they're both referenced correctly by the ar1300 area script kptrol06 (no DV) and trolic01 (no DV) both transform into trolic02, which uses troll02 as a DV obsice01 (no DV) and trolsn01 (trolsn01) both transform into trolsn02 (trolsn01) trolic03 (no DV) transforms into trolic04 (troll02 DV) when dead rogtro01/rogtro02 had mismatched DVs (already fixed) trollens has a special DV, but it's an unused file These are all no problem, as they're either not referenced at all or referenced correctly. The one issue is the firamb03/firamb05 troll. In Firkraag's dungeon, this is part of the three monsters facing off: the wolfwere captain (firamb01/firamb04), Gerg the hobgoblin, and the troll (firamb03/firamb05). If the wolfwere captain kills his two underlings, he then initiate dialogues by checking for Dead() firamb02 and firamb05. But if the party intervenes and hits the troll with an instant death spell, the game will never think that firamb05 has died. We should alter the triggers for his script and dialogue to make this an OR(2) check. firamb04 (pre-transformed wolfwere captain) should also be assigned firamb01 as a DV, as Gerg and the troll won't do anything if he's killed by a pre-emptive party strike (i.e. backstab). So, actual action items: Change troll02 to level 8. Clone troll01 and troll02 into new creatures, set to level 6, then route all of the level 6 trolls that were using troll01/troll02 into them instead Clone obsice01 into its own dead version Replace firamb05 checks in firamb01.bcs and firamb01.dlg with checks for both firamb03 and firamb05 resources Assign firamb01 as a DV to firamb04.cre Phew! Code will follow. Link to comment
CamDawg Posted January 3, 2008 Share Posted January 3, 2008 I'm so sick of trolls. Really. Let this be the last issue for them. Please. // wolfwere capt should have same DV for transformed, non-transformed creature files COPY_EXISTING ~firamb04.cre~ ~override~ WRITE_ASCII 0x280 ~firamb01~ #32 // script should check live and dead troll DV COPY_EXISTING ~firamb01.bcs~ ~override~ DECOMPILE_BCS_TO_BAF REPLACE_TEXTUALLY ~\([^!]\)Dead("firamb05")~ ~\1OR(2) Dead("firamb03") Dead("firamb05")~ COMPILE_BAF_TO_BCS <<<<<<<< v5_test.d REPLACE_TRIGGER_TEXT ~firamb01~ ~Dead("firamb05")~ ~OR(2) Dead("firamb03") Dead("firamb05")~ >>>>>>>> COMPILE ~v5_test.d~ // knocked-down trolls should match their live counterparts COPY_EXISTING ~troll02.cre~ ~override~ WRITE_BYTE 0x234 8 BUT_ONLY_IF_IT_CHANGES // knocked-down trolls should match their live counterparts COPY_EXISTING ~troll01.cre~ ~override/cdtroll1.cre~ ~troll02.cre~ ~override/cdtroll2.cre~ WRITE_BYTE 0x234 6 WRITE_ASCIIE 0x248 ~%DEST_RES%~ // new troll scripts to transform to dead versions at low HP COPY_EXISTING ~troll01.bcs~ ~override/cdtroll1.bcs~ ~trolsn01.bcs~ ~override/obsice11.bcs~ DECOMPILE_BCS_TO_BAF REPLACE_TEXTUALLY ~ChangeAnimationNoEffect("TROLSN02")~ ~ChangeAnimationNoEffect("obsice11")~ REPLACE_TEXTUALLY ~ChangeAnimationNoEffect("TROLL02")~ ~ChangeAnimationNoEffect("cdtroll2")~ COMPILE_BAF_TO_BCS // new troll scripts to transform from dead to alive after time expires COPY_EXISTING ~troll02.bcs~ ~override/cdtroll2.bcs~ ~trolsn02.bcs~ ~override/obsice01.bcs~ DECOMPILE_BCS_TO_BAF REPLACE_TEXTUALLY ~ReallyForceSpell(Myself,TROLL_CHANGE)~ ~ReallyForceSpellRES("cdtroll1",Myself)~ REPLACE_TEXTUALLY ~ReallyForceSpell(Myself,TROLL_SNOW_CHANGE)~ ~ReallyForceSpellRES("obsice01",Myself)~ COMPILE_BAF_TO_BCS // create 'dead' or 'knocked down' versions of 'special' trolls COPY_EXISTING ~obsice01.cre~ ~override/obsice11.cre~ WRITE_SHORT 0x24 1 // current HP WRITE_SHORT 0x46 10 // natural AC WRITE_SHORT 0x48 10 // effective AC WRITE_BYTE 0x5a 100 // resist cold WRITE_BYTE 0x5b 100 // resist electricity WRITE_BYTE 0x5f 100 // resist magic cold WRITE_BYTE 0x60 100 // resist slashing WRITE_BYTE 0x61 100 // resist crushing WRITE_BYTE 0x62 100 // resist piercing WRITE_BYTE 0x63 100 // resist missile WRITE_BYTE 0x23c 9 // dexterity WRITE_BYTE 0x270 255 // enemy WRITE_EVALUATED_ASCII 0x248 ~%SOURCE_RES%~ // new script WRITE_ASCII 0x250 ~~ #32 // blanks all other script references WRITE_ASCII 0x2cc ~~ #8 // blanks dialog file // item changes READ_LONG 0x2bc "itm_off" READ_LONG 0x2c0 "itm_num" FOR (index = 0; index < itm_num; index = index + 1) BEGIN READ_ASCII ("%itm_off%" + (0x14 * "%index%")) "item" PATCH_IF ( ("%item%" STRING_COMPARE_CASE "monhp1" = 0) OR // so they can die ("%item%" STRING_COMPARE_CASE "trollreg" = 0) OR // can't regenerate ("%item%" STRING_COMPARE_CASE "trollspi" = 0) // makes dead spirit troll invisible ) BEGIN WRITE_ASCII ("%itm_off%" + (0x14 * "%index%")) ~trolldie~ END END // lvl 6 trolls should be routed through a different knocked-down version COPY_EXISTING ~firtrl01.cre~ ~override~ ~kptrol01.cre~ ~override~ ~kptrol02.cre~ ~override~ ~kptrol04.cre~ ~override~ ~kptrol05.cre~ ~override~ WRITE_ASCII 0x248 ~cdtroll1~ BUT_ONLY_IF_IT_CHANGES // add monhp1 item to trolls to prevent death; assign script to force transformation to dead form at low HP COPY_EXISTING ~obsice01.cre~ ~override~ ADD_CRE_ITEM ~monhp1~ #0 #0 #0 ~NONE~ ~AMULET~ WRITE_ASCII 0x260 ~obsice11~ // spells to transform trolls back from dead to alive COPY_EXISTING ~spin955.spl~ ~override/cdtroll1.spl~ ~spin955.spl~ ~override/obsice01.spl~ 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 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%" + (("%abil_fx_idx%" + "%index2%") * 0x30)) "opcode" READ_ASCII ("%fx_off%" + 0x14 + (("%abil_fx_idx%" + "%index2%") * 0x30)) "eff_file" PATCH_IF (("%opcode%" = 151) AND ("%eff_file%" STRING_COMPARE_CASE "troll01" = 0)) BEGIN WRITE_EVALUATED_ASCII ("%fx_off%" + 0x14 + (("%abil_fx_idx%" + "%index2%") * 0x30)) "%DEST_RES%" #8 END END END BUT_ONLY_IF_IT_CHANGES To be incorporated into the existing code. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.