Wisp Posted December 31, 2009 Posted December 31, 2009 I went through the bug reports posted since december last year and came up with a fair number of bug fixes based on that. I also have a few fixes based on bugs reports posted elsewhere and a couple I've been good enough to discover/fabricate on my own. D and BAF files are inlined for brevity. The fix for Anomen's missing proficiency points is not playing by the rules. A Fighter/Cleric with 7 fighter levels and 8 cleric levels can not be specialised in 5 proficiencies the way Fixpack makes him. Considering his vanilla proficiencies, the best option would seem to be to simply move the extra points Fixpack puts into hammers and sword&shield style into flails and clubs. A proposed fix to replace the current one: COPY_EXISTING ~anomen6.cre~ ~override~ ~anomen7.cre~ ~override~ ~anomen8.cre~ ~override~ ~anomen9.cre~ ~override~ ~anomen10.cre~ ~override~ ~anomen12.cre~ ~override~ PATCH_IF (SOURCE_SIZE > 0x2d3) THEN BEGIN // protects against invalid files WRITE_ASCII 0x3c ~NANOMENM~ // portrait fix for anomen9 in SoA SET_BG2_PROFICIENCY 98 2 //spears SET_BG2_PROFICIENCY 100 1 //flails SET_BG2_PROFICIENCY 115 1 //clubs END BUT_ONLY_IF_IT_CHANGES This fix is based on this report. Fixpack currently removes Haer'Dalis' second point in long swords. But there are some subtle indications he's supposed to have a bonus point in long and short swords. Consequently, this fix should be retired. If we take this seriously, we get this fix as well: COPY_EXISTING haer10.cre override haer11.cre override haer13.cre override SET_BG2_PROFICIENCY 90 "%SOURCE_RES%" STRING_EQUAL_CASE haer13 ? 2 : 1 //long sword BUT_ONLY At the very least, haer13 should have his long sword proficiency boosted to 2 points. These fixes are based on this report. Fixpack makes some changes to macedisr.eff that causes items using the old implementation of the .eff to deal damage to the wielder. This leads to a compatibility problem with Item Upgrade and possibly other mods as well. This problem can be solved by using a new .eff instead of changing macedisr.eff and updating the blun12, deva, hamm10, hamm11 fix to reflect this. For brevity and clarity I'll post these proposed changes as diffs: @@ -14556,7 +14595,7 @@ 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 + WRITE_ASCII ("%fx_off%" + 0x14 + ("%abil_fx_idx%" * 0x30)) ~cddisr~ // resref SET "fx_delta" = ("%fx_delta%" + 1) END END @@ -22538,7 +22577,7 @@ BUT_ONLY_IF_IT_CHANGES // change from damage v type (179) to damage (12); see blun12.itm -COPY_EXISTING ~macedisr.eff~ ~override~ +COPY_EXISTING ~macedisr.eff~ ~override/cddisr.eff~ WRITE_LONG 0x10 12 // opcode: damage WRITE_LONG 0x1c 2 // fixed damage WRITE_SHORT 0x20 0 // straight butter, baby @@ -22546,7 +22585,7 @@ 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~ +COPY_EXISTING ~cddisr.eff~ ~override/macedisu.eff~ WRITE_LONG 0x1c 1 // fixed damage // Polymorph other was setting victim's attacks per round to zero; adjusted to one. See spwi415.spl for one other fix. This fix is based on this report. Fixpack currently makes monks immune to poison as part of the immunities supress all effects stuff for disease. This is clearly incorrect. Proposed fix in diff format: @@ -24918,7 +24957,7 @@ SET "new_fx" = ("%new_fx%" + 1) SET "counter" = ("%counter%" + 1) END - PATCH_IF ("%new_fx_5%" = 0) BEGIN + PATCH_IF ("%new_fx_5%" = 0 AND !("%SOURCE_RES%" STRING_EQUAL_CASE spcl814 OR "%SOURCE_RES%" STRING_EQUAL_CASE misc8j)) BEGIN INSERT_BYTES ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) (0x30 + (0xd8 * "%fx_type%")) WRITE_ASCIIE ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) "%template%" // clones immunity effect WRITE_SHORT ("%fx_off%" + (0x08 * "%fx_type%") + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) 173 // reduced damage from poison The unused "Boots of the West" are excluded as well. This fix is based on this report. If Anomen is summoned via the Fate Spirit in ToB he is Lawful Neutral and described as still belonging to the Order. Due to overly restrictive alignment checks, Anomen can end up speaking ill of the Order in a banter with Imoen. Propsed fix: <<<<<<<<inlined/dialogues/are/gauche/anomenfix.d ALTER_TRANS bimoen25 BEGIN 14 16 END BEGIN 0 END BEGIN "TRIGGER" ~OR(2) Alignment("Anomen",LAWFUL_GOOD) Alignment("Anomen",LAWFUL_NEUTRAL)~ END ALTER_TRANS bimoen25 BEGIN 14 16 END BEGIN 1 END BEGIN "TRIGGER" ~Alignment("Anomen",CHAOTIC_NEUTRAL)~ END >>>>>>>> COMPILE "inlined/dialogues/are/gauche/anomenfix.d" This fix is based on this report. If JaheiraMatch is 0, Jaheira can end up repeating one of her talks because the conditions for the talk remain true after the talk. Proposed fix: <<<<<<<<inlined/dialogues/are/gauche/jaheirafix.d ALTER_TRANS bjaheir BEGIN 68 END BEGIN 0 1 2 END BEGIN "ACTION" ~IncrementGlobal("LoveTalk","LOCALS",1)~ END >>>>>>>> COMPILE "inlined/dialogues/are/gauche/jaheirafix.d" This fix is based on this report. You are supposed to be able to avoid a fight with Simyaz by returning the Silver Blade to him. However, due to two trigger problems in his dialogue, this was not possible. First, the non-violent path requires a reaction roll greater than 20 (FRIENDLY_UPPER), but reaction rolls can not be greater than 20. Secondly, a transition leading to the violent outcome lacks a trigger and is consequently taken every time even if the reaction roll is high enough. Proposed fix: COPY_EXISTING udsimyaz.dlg override DECOMPILE_DLG_TO_D REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH "ReactionGT(LastTalkedToBy,FRIENDLY_UPPER)" "ReactionGT(LastTalkedToBy,NEUTRAL_UPPER)" COMPILE_D_TO_DLG BUT_ONLY <<<<<<<< ...udsimyaz.d ALTER_TRANS udsimyaz BEGIN 53 END BEGIN 1 END BEGIN "TRIGGER" ~ReactionLT(LastTalkedToBy,FRIENDLY_LOWER)~ END >>>>>>>> COMPILE "...udsimyaz.d" The fix changes the reaction values to 15 (greater than NEUTRAL_UPPER) and 14 (lower than FRIENDLY_LOWER), but higher values can obviously be used if 15 and 14 are too low. This issue has been discussed in the Bioware forums, here. Going by my admittedly hazy memory, Miranda (woman with daughter in the temple district) used to initiate dialogue with the protagonist after she was done with Nirkhas. However, she does not do this since her dialogue with Nirkhas sets her NumTimesTalkedTo to 1 and her initiate-dialogue script requires it to be at 0. This probably won't make the cut for several reasons, but I thought I'd post some sort of fix anyway: <<<<<<<< ...clmom.baf IF NumTimesTalkedTo(1) Global("Spoke","LOCALS",0) THEN RESPONSE #100 SetGlobal("Spoke","LOCALS",1) SetNumTimesTalkedTo(0) END >>>>>>>> <<<<<<<< ...clmom.d ADD_STATE_TRIGGER clmom 0 ~Global("Spoke","LOCALS",0)~ >>>>>>>> EXTEND_BOTTOM clmom.bcs "...clmom.baf" COMPILE "...clmom.d" If you wait until you have all three heads of the Flail of Ages, you get XP for assembling the flail and and a variable is set. If you assemble the flail piecemeal, you get no XP and the variable is not set. Proposed fix, giving you XP and setting the variable when you finally get the +3 flail: COPY_EXISTING kpforge.bcs override DECOMPILE_BCS_TO_BAF REPLACE_TEXTUALLY CASE_INSENSITIVE EVALUATE_REGEXP ~TakePartyItem("\(blun14[abc]\)")[ %lnl%]+TakePartyItem("\(blun14[ghi]\)")[ %lnl%]+TakePartyItem("\(blun14[def]\)")[ %lnl%]+GiveItemCreate("BLUN14",LastTrigger,0,0,0)[%lnl%]END~ ~TakePartyItem("\1") TakePartyItem("\2") TakePartyItem("\3") GiveItemCreate("BLUN14",LastTrigger,0,0,0) AddexperienceParty(22350) SetGlobal("ForgeUsed","GLOBAL",1) END~ COMPILE_BAF_TO_BCS BUT_ONLY This fix is based on this report. Some of Ka'rashur's gorbat friends are used outside Ka'rashur's room. This can cause situations where Ka'rashur acts as if they've been attacked, even though you really haven't attacked any of them. Proposed fixes: COPY_EXISTING yssumm2.bcs override DECOMPILE_BCS_TO_BAF REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~"gorbat2"~ ~"deriny01"~ COMPILE_BAF_TO_BCS BUT_ONLY COPY_EXISTING ar3005.are override ar3006.are override ar3009.are override READ_LONG 0xc0 rest ELSE 0 FOR (i=0;i<10;i+=1) BEGIN READ_ASCII rest + 0x48 + 0x8*i cre ELSE blank PATCH_IF "%cre%" STRING_EQUAL_CASE gorbat5 BEGIN WRITE_ASCII rest + 0x48 + 0x8*i dbonef01 #8 END END BUT_ONLY COPY_EXISTING ar6012.are override READ_LONG 0x54 act_off ELSE 0 READ_SHORT 0x58 num_act ELSE 0 FOR (i=0;i<num_act;i+=1) BEGIN READ_ASCII act_off + 0x110*i + 0x80 cre ELSE blank PATCH_IF "%cre%" STRING_EQUAL_CASE gorbat5 BEGIN WRITE_ASCII act_off + 0x110*i + 0x80 dbonef01 #8 END END BUT_ONLY Deriny01 is used as a rest encounter creature in ar3013 (Ka'rashur's room). Dbonef01 is used by yssumm2.bcs along with the Erinyes. These fixes are based on this report. The creatures guarding the Underdark exit have a nice little script that is meant to turn them hostile if the drow city does. However, if the drow should get charmed, or if the skeletons should get controlled, the script will mess things up. Proposed fix: COPY_EXISTING dwgates1.bcs override DECOMPILE_BCS_TO_BAF REPLACE_TEXTUALLY CASE_INSENSITIVE EVALUATE_REGEXP ~Global("DrowCityHostile","GLOBAL",1)[ %lnl%]+!Allegiance(Myself,ENEMY)%lnl%THEN[ %lnl%]+RESPONSE #\([0-9]+\)~ ~Global("DrowCityHostile","GLOBAL",1) !Allegiance(Myself,ENEMY) Global("cdEnemy","LOCALS",0) THEN RESPONSE #\1 SetGlobal("cdEnemy","LOCALS",1)~ COMPILE_BAF_TO_BCS BUT_ONLY This fix was based on this report. The surface elves fighting drow by the Underdark exit are supposed to stay and fight until the drow are defeated, but they have a nasty habit of running away prematurely instead due to some funky scripting. From what I can tell, the problem is that the scripts check if the fighting is over with a CombatCounter(0) trigger, but the combat counter apparently only starts when a PC starts fighting, not when NPCs do it (or something like that). Adding a !Detect([ENEMY]) trigger will at least keep the elves from running away while there's still drow in plain sight. Proposed fix: COPY_EXISTING udelf1.bcs override udelf2.bcs override udelf3.bcs override DECOMPILE_BCS_TO_BAF REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~CombatCounter(0)~ ~CombatCounter(0) !Detect([ENEMY])~ COMPILE_BAF_TO_BCS BUT_ONLY This fix was based on this report. The vampire encounters have content for when the player has sided with Bodhi, but if you side with Bodhi the vampires stop showing up. Proposed fix (I don't know if this is really Fixpack material, but I thought I'd post it anyway): COPY_EXISTING vampsttp.bcs override DECOMPILE_BCS_TO_BAF REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~Global("WorkingForBodhi","GLOBAL",0)~ ~~ COMPILE_BAF_TO_BCS BUT_ONLY This fix is based on this report. Tabitha the lion has a script that's supposed to keep her from getting charmed, but mostly it just screws things up if Tabitha should get charmed. This can be fixed by making her immune to charm. Proposed fix: COPY_EXISTING coplion.cre override PATCH_IF SOURCE_SIZE > 0x2d3 BEGIN CLEAR_ARRAY coplion_op DEFINE_ARRAY coplion_op BEGIN 267 267 267 101 296 296 END DEFINE_ARRAY coplion_p1 BEGIN 14780 14672 8364 0 0 0 END DEFINE_ARRAY coplion_p2 BEGIN 0 0 0 5 0 0 END DEFINE_ARRAY coplion_rr BEGIN ~~ ~~ ~~ ~~ spnwchrm spflayer END READ_LONG 0x2c4 fx_off READ_LONG 0x2c8 num_fx FOR (i=0 fx_type="-1" param2="-1";i<num_fx AND (fx_type != 101 AND param2 != 5);i+=1) BEGIN READ_LONG fx_off + 0x108*i + 0x8 fx_type ELSE "-1" READ_LONG fx_off + 0x108*i + 0x18 param2 ELSE "-1" END delta = 0 PATCH_IF fx_type != 101 AND param2 != 5 BEGIN PHP_EACH coplion_op AS int => opcode BEGIN INSERT_BYTES fx_off + 0x108*num_fx 0x108 WRITE_LONG fx_off + 0x108*num_fx + 0x8 opcode WRITE_LONG fx_off + 0x108*num_fx + 0x14 $coplion_p1("%int%") WRITE_LONG fx_off + 0x108*num_fx + 0x18 $coplion_p2("%int%") WRITE_LONG fx_off + 0x108*num_fx + 0x1c 1 WRITE_SHORT fx_off + 0x108*num_fx + 0x24 100 WRITE_ASCIIE fx_off + 0x108*num_fx + 0x28 $coplion_rr("%int%") num_fx += 1 delta += 1 END WRITE_LONG 0x2c8 num_fx PATCH_FOR_EACH off IN 0x2a0 0x2a8 0x2b0 0x2b8 0x2bc BEGIN READ_LONG off value PATCH_IF value >= fx_off BEGIN WRITE_LONG off value + delta*0x108 END END END PATCH_FOR_EACH array IN coplion_op coplion_p1 coplion_p2 coplion_rr BEGIN CLEAR_ARRAY "%array%" END END BUT_ONLY This fix is based on this report. Pixie Prick +3 has a undocumented +6 bonus to saves. Proposed fix: COPY_EXISTING dagg13.itm override FOR (READ_LONG 0x6a fx_off ELSE 0;fx_off < SOURCE_SIZE;fx_off += 0x30) BEGIN READ_SHORT fx_off fx_type ELSE 999 PATCH_IF fx_type = 39 OR fx_type = 141 OR fx_type = 142 OR fx_type = 174 BEGIN WRITE_LONG fx_off + 0x28 0 END END BUT_ONLY This fix was based on this report. (I found no evidence of any cumulative save bonus, however.) A bunch of items have some screwy or incorrect unusability flags. //Unusable by clerics and mages but usable by cleric/mages COPY_EXISTING brac20.itm override //Gloves of Healing PATCH_IF SOURCE_SIZE > 0x71 BEGIN WRITE_BYTE 0x1f ((BYTE_AT 0x1f) BOR 1) END BUT_ONLY //Usable by warriors, fighter/clerics, but not by ranger/clerics COPY_EXISTING rods02.itm override //Rod of Lordly Might rods02a.itm override //ideally you'd want this before rods02a was created rods06.itm override //Rod of Reversal PATCH_IF SOURCE_SIZE > 0x71 BEGIN WRITE_BYTE 0x1f ((BYTE_AT 0x1f) BAND 0b11111011) END BUT_ONLY //Usable by monks, shapeshifters and kensais COPY_EXISTING ttleat.itm override //Leather Armor +2 PATCH_IF SOURCE_SIZE > 0x71 BEGIN WRITE_BYTE 0x21 ((BYTE_AT 0x21) BOR 32) WRITE_BYTE 0x29 ((BYTE_AT 0x29) BOR 16) WRITE_BYTE 0x2f ((BYTE_AT 0x2f) BOR 4) END BUT_ONLY //Usable by thieves and kensais COPY_EXISTING misca6.itm override //Patrol Leader's Helmet PATCH_IF SOURCE_SIZE > 0x71 BEGIN WRITE_BYTE 0x20 ((BYTE_AT 0x20) BOR 64) WRITE_BYTE 0x2f ((BYTE_AT 0x2f) BOR 4) END BUT_ONLY //Usable by kensais and cavaliers COPY_EXISTING stardart.itm override //Dart +5 PATCH_IF SOURCE_SIZE > 0x71 BEGIN WRITE_BYTE 0x2f ((BYTE_AT 0x2f) BOR 12) END BUT_ONLY //Usable by monks and kensais COPY_EXISTING ttshld01.itm override //Medium Shield +2 PATCH_IF SOURCE_SIZE > 0x71 BEGIN WRITE_BYTE 0x21 ((BYTE_AT 0x21) BOR 32) WRITE_BYTE 0x2f ((BYTE_AT 0x2f) BOR 4) END BUT_ONLY //Unusable by wizard slayers COPY_EXISTING //ring37.itm override //Storm Ring ring38.itm override //Dawn Ring PATCH_IF SOURCE_SIZE > 0x71 BEGIN WRITE_BYTE 0x2f ((BYTE_AT 0x2f) BAND 0b11111101) END BUT_ONLY //Unusable by mage/thieves, thieves and monks COPY_EXISTING dwsw1h01.itm override //Drow Scimitar +3 sw1h56.itm override //Scimitar (Habib's) PATCH_IF SOURCE_SIZE > 0x71 BEGIN WRITE_BYTE 0x20 ((BYTE_AT 0x20) BAND 0b10110111) WRITE_BYTE 0x21 ((BYTE_AT 0x21) BAND 0b11011111) END BUT_ONLY //Usable by monks COPY_EXISTING enmace.itm override //Mace +3 (Enchanted Weapon spell) enmorn.itm override //Morning Star +3 enstaff.itm override //Quarter Staff +3 ensw2h.itm override //Battle Axe +3 korax01.itm override //Battle Axe +1 (Korgan's) ring08.itm override //Ring of Wizardry rodmace.itm override //Mace +2 (Rod of Lordly Might) rodspear.itm override //Spear +3 sw2h15.itm override //Silver Sword PATCH_IF SOURCE_SIZE > 0x71 BEGIN WRITE_BYTE 0x21 ((BYTE_AT 0x21) BOR 32) END BUT_ONLY //Usable by archers COPY_EXISTING clolth.itm override //Dark Elven Chain (from Handmaiden chasing Viconia) PATCH_IF SOURCE_SIZE > 0x71 BEGIN WRITE_BYTE 0x2d ((BYTE_AT 0x2d) BOR 128) END BUT_ONLY //Usable by beast masters COPY_EXISTING blun14g.itm override //Flail of Ages blun14h.itm override //Flail of Ages blun14i.itm override //Flial of Ages enmace.itm override //Mace +3 (Enchanted Weapon spell) enmorn.itm override //Morning Star +3 ensw1h01.itm override //Long Sword +3 ensw1h02.itm override //Short Sword +3 ensw2h.itm override //Battle Axe +3 rodmace.itm override //Mace +2 (Rod of Lordly Might) rodspear.itm override //Spear +3 rodsword.itm override //Flaming Long Sword +1 sw1h15.itm override //Scimitar +3, Frostbrand sw1h16.itm override //Scimitar +5, Defender sw1h68.itm override //Spectral Brand +4 sw1h69.itm override //Spectral Brand +5 sw1h76.itm override //Scimitar +3 sw2h15.itm override //Silver Sword ttsword1.itm override //Long Sword +1 PATCH_IF SOURCE_SIZE > 0x71 BEGIN WRITE_BYTE 0x2b ((BYTE_AT 0x2b) BOR 2) END BUT_ONLY The priest stuff that should be usable by Monks is simply a matter of commenting out items from the existing "make unusable by monks" fix among the core fixes, but I'll not post that. These fixes are based on Mike's report here. The lava in Yaga-Shura's lair causes damage with a spell with power 1, which lets you protect against it with e.g. Globe of Invulnerability. Proposed fix: COPY_EXISTING spin561.spl override PATCH_IF SOURCE_SIZE > 0x72 BEGIN FOR (READ_LONG 0x6a fx;fx < SOURCE_SIZE;fx += 0x30) BEGIN WRITE_BYTE fx + 3 0 END END BUT_ONLY This fix is based on this report. Iron Skins and two Stoneskin spells are flagged as spell protections instead of combat protections, which makes it possible to remove them with e.g. Pierce Magic but not with Breach. Proposed fix: COPY_EXISTING spin694.spl override melstone.spl override sppr506.spl override PATCH_IF SOURCE_SIZE > 0x71 BEGIN WRITE_BYTE 0x27 7 END BUT_ONLY This fix is based on this report. HIVE_MOTHER_CAUSE_SERIOUS_WOUNDS bypasses MR, unlike all other beholder rays except the Anti-Magic Ray and the Death Ray. COPY_EXISTING spin551.spl override FOR (READ_LONG 0x6a fx ELSE 0;fx<SOURCE_SIZE;fx+=0x30) BEGIN WRITE_BYTE fx + 0xd 1 END BUT_ONLY This fix is based on this report. Most summoning spells fail when cast at a creature protected by e.g. Globe of Invulnerability. Proposed fix: COPY_EXISTING melis03.spl override //Taint of the Slayer senspisu.spl override //Summon Spider spcl621.spl override //Summon Spirit Animal spcl923.spl override //Summon Deva //spin534.spl override //Call Dark Horde, unused //spin548.spl override //Gate, power is 0, unused //spin549.spl override //Summon the Infernal Host, power is 0 //spin569.spl override //Summon Ice Salamander, power is 0 //spin570.spl override //Summon Fire Elemental, power is 0, unused spin615.spl override //Knight spin616.spl override //Flames spin622.spl override //Skull //spin631.spl override //Construct, unused //spin637.spl override //Guile, unused //spin638.spl override //Triumph, unused //spin677.spl override //<Invalid Strref -1>, power is 0, unused //spin730.spl override //Summon Fungus, power is 0 //spin735.spl override //Wish, power is 0 //spin841.spl override //<Invalid Strref -1>, power is 0, unused //spin842.spl override //<Invalid Strref -1>, power is 0, unused //spin843.spl override //<Invalid Strref -1>, power is 0, unused //spin844.spl override //<Invalid Strref -1>, power is 0, unused //spin845.spl override //<Invalid Strref -1>, power is 0, unused //spin855.spl override //<Invalid Strref -1>, power is 0 //spin856.spl override //<Invalid Strref -1>, power is 0 //spin857.spl override //<Invalid Strref -1>, power is 0 //spin870.spl override //<Invalid Strref -1>, power is 0 //spin880.spl override //<Invalid Strref -1>, power is 0 sppr301.spl override //Animate Dead sppr402.spl override //Animal Summoning I sppr410.spl override //Call Woodland Beings sppr501.spl override //Animal Summoning II sppr601.spl override //Aerial Servant sppr602.spl override //Animal Summoning III sppr604.spl override //Conjure Animals sppr605.spl override //Conjure Fire Elemental sppr702.spl override //Conjure Earth Elemental sppr703.spl override //Gate sppr723.spl override //Elemental Summoning sppr724.spl override //Greater Elemental Summoning sppr726.spl override //Summon Deva sppr727.spl override //Summon Fallen Deva //spra304.spl override //Animal Summoning I, power is 0 spra305.spl override //Animal Summoning II spra306.spl override //Animal Summoning III spwi309.spl override //Monster Summoning I spwi407.spl override //Monster Summoning II spwi423.spl override //Spider Spawn spwi501.spl override //Animate Dead spwi504.spl override //Monster Summoning III spwi516.spl override //Conjure Lesser Fire Elemental spwi520.spl override //Conjure Lesser Air Elemental spwi521.spl override //Conjure Lesser Earth Elemental spwi601.spl override //Invisible Stalker spwi619.spl override //Wyvern Call spwi620.spl override //Conjure Fire Elemental spwi621.spl override //Conjure Air Elemental spwi622.spl override //Conjure Earth Elemental spwi623.spl override //Carrion Summons spwi624.spl override //Summon Nishruu spwi707.spl override //Cacofiend spwi716.spl override //Mordenkainen's Sword spwi717.spl override //Summon Efreeti spwi718.spl override //Summon Djinni spwi719.spl override //Summon Hakeashar //spwi722.spl override //Limited Wish, power is 0 spwi807.spl override //Summon Fiend spwi905.spl override //Gate spwi923.spl override //Summon Planetar spwi924.spl override //Summon Dark Planetar spwish18.spl override //Summon Dark Planetar spwm154.spl override //Cacofiend sumslay.spl override //Summon Slayer Shadow FOR (READ_LONG 0x6a fx_off ELSE 0;fx_off<SOURCE_SIZE;fx_off+=0x30) BEGIN WRITE_BYTE fx_off + 3 0 END BUT_ONLY "Power is 0" means all Use EFF effects already have power 0. This fix is based on this report and this thread. There's a bunch of stuff wrong with the Assassin's poison ability. Among other things, the type is wrong for both damage-causing .eff files. They should do x damage per second, but do x damage per round. Nythrun posted a fix for one of the .eff files here, but the other .eff file also needs fixing. Proposed fix: COPY_EXISTING spcl422.eff override WRITE_LONG 0x20 2 BUT_ONLY Not reported as far as I know (other than general "poison ability does not work right" stuff).
Nythrun Posted December 31, 2009 Posted December 31, 2009 It's rather bittersweet to see someone stepping up like this; shame it's most likely for naught. I've no power to do anything about that, nor to say what's in, but I'm gabby today, so: The fix for Anomen's missing proficiency points is not playing by the rules.Sure thing. Fixpack currently removes Haer'Dalis' second point in long swords.It was never clear to me whether the extra stars were meant to be a high level perk or not; I stapled them onto the lower level versions locally, but run that by the conservative folks before it goes in (or rather languishes here). Fixpack makes some changes to macedisr.eff that causes items using the old implementation of the .eff to deal damage to the wielder Yeah, I wrote up a new .eff so as not break Item Upgrade and all that. Never made it in. Fixpack currently makes monks immune to poison The fix here is just to drop that from the effects batch for everything but the Ring of Gaxx and a couple creature immunity items. It needs to be snipped from some BioWare items too (if you want consistency), and a few item effects need to use the poison state rather than poison damage (since it's both disease and poison, there's no other way to make this effect "work"). <<<<<<<<inlined/dialogues/are/gauche/anomenfix.dMy hero You are supposed to be able to avoid a fight with Simyaz by returning the Silver Blade to him I'd have sworn that this was in Baldurdash or Extremist's stuff or somewhere - I know I read about it before I noticed it (Reaction in BG2 is mostly BG leftovers, and where it's used it's not used sensibly). Oh well. Should go in. NumTimesTalkedToIs broken! Nothing ever happened with the demon script fixes either, I guess? Proposed fix (I don't know if this is really Fixpack material, but I thought I'd post it anyway) Maybe not, but I restored some of that stuff and I'd wager devSin did as well. Tabitha the lion has a script... Drop her off in the charm effects batch. Another thing I wrote up that vanished. A bunch of items have some screwy or incorrect unusability flags I wonder if there was an accidental deletion during one of the early betas? At least stardart.itm should have been in since, like, forever ago. I went usable-by-all for the enchanted weapon stuff, probably not a fix. spell with power 1, Yeah. There's about two hundred more of these . Iron Skins and two Stoneskin spells are flagged as spell protections I'd recommend against changing the NPC spells for Fixpack; I suspect they did this one deliberately so there'd be more to a dragon fight than 1Breach->2Chop->3Profit!Loot. It isn't cool at all, though, and the change belongs in every tactical mod. Most summoning spells fail Looks almost exactly like my old list Best of luck getting it included. Nythrun posted a fix for one of the .eff files I'm pretty sure everything in that thread (and the other threads from that time period) were sent directly to /dev/null. Which leaves a bunch of stuff in archived that's not actually in the Fixpack, and some more stuff in the main forum that is in. Oh well. Anyway. I doubt I'll have the energy for this sort of work again, but I hope you can get yourself enstated somehow. Kveðja, it's my bedtime.
devSin Posted December 31, 2009 Posted December 31, 2009 It's rather bittersweet to see someone stepping up like this; shame it's most likely for naught. I've no power to do anything about that, nor to say what's in, but I'm gabby today, so:Somehow, I end up in "charge." Whereby "charge" I mean that I read the stuff that people posts and then give the authoritarian nod to DavidW or cmorgan when they talk about making a new version themselves. It's the shiz. There'll be a new version someday, and I'll probably still be there to bless it (without really doing a damn thing). It was never clear to me whether the extra stars were meant to be a high level perk or not; I stapled them onto the lower level versions locally, but run that by the conservative folks before it goes in (or rather languishes here).It's a bug. And there aren't even any more conservative folk still around anyway. I'd have sworn that this was in Baldurdash or Extremist's stuff or somewhere - I know I read about it before I noticed it (Reaction in BG2 is mostly BG leftovers, and where it's used it's not used sensibly). Oh well. Should go in.Probably not. It changes the sequence too much to suddenly have the option of Happy Friendly Simyaz. Drop her off in the charm effects batch. Another thing I wrote up that vanished.I think I'll leave her. Charm is so broken, who cares. I wonder if there was an accidental deletion during one of the early betas? At least stardart.itm should have been in since, like, forever ago. I went usable-by-all for the enchanted weapon stuff, probably not a fix.Seriously. I looked at those and was like DOOD THIS NOT BALDRDASS FOROOMS DONT TELL US THERE PROBLEMZ. WE FIX ALLREADY. Yeah. There's about two hundred more of these .2,000. This was the great power (and secondary type and school and casting animation and projectile and I don't even remember enough to list it all) punt of yester-years. You can't fix just one, and nobody will ever agree on every single one, so it's better to just stick it in our Outstanding bugs thread alongside "Temple rewards for the Illithium quest make no sense." Ah, the glory days. :-) I'm pretty sure everything in that thread (and the other threads from that time period) were sent directly to /dev/null. Which leaves a bunch of stuff in archived that's not actually in the Fixpack, and some more stuff in the main forum that is in. Oh well.Oh, nonsense. You know I got it all covered locally. That stuff goes straight to my HD. ;-)
aVENGER_(RR) Posted January 1, 2010 Posted January 1, 2010 While we're at it, I just noticed that Detect Invisibility (SPWI203.SPL) can fail due to an enemy's magic resistance. This isn't that odd per se, but it is inconsistent with all other invisibility and illusion removal spells in the game which happily ignore MR, so I'm wondering if it's a bug. In case we decide to fix it: COPY_EXISTING ~spwi203.spl~ ~override~ // Detect Invisibility 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 through abilities 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" READ_BYTE ("%fx_off%" + 0x0d + (0x30 * ("%index2%" + "%abil_fx_idx%"))) "dispel" PATCH_IF ("%dispel%" != 0) BEGIN WRITE_BYTE ("%fx_off%" + 0x0d + (0x30 * ("%index2%" + "%abil_fx_idx%"))) "0" // resist/dispel: ignore MR END END END BUT_ONLY_IF_IT_CHANGES
Ardanis Posted January 1, 2010 Posted January 1, 2010 COPY_EXISTING ~spwi203.spl~ ~override~ // Detect Invisibility 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 through abilities 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" READ_BYTE ("%fx_off%" + 0x0d + (0x30 * ("%index2%" + "%abil_fx_idx%"))) "dispel" PATCH_IF ("%dispel%" != 0) BEGIN WRITE_BYTE ("%fx_off%" + 0x0d + (0x30 * ("%index2%" + "%abil_fx_idx%"))) "0" // resist/dispel: ignore MR END END END BUT_ONLY_IF_IT_CHANGES Equals to COPY_EXISTING ~spwi203.spl~ ~override~ // Detect Invisibility CLEAR_ARRAY spl_head GET_OFFSET_ARRAY spl_head 0x64 4 0x68 2 0 0 0x28 PHP_EACH spl_head AS ind => res BEGIN CLEAR_ARRAY effects GET_OFFSET_ARRAY2 effects res ITM_V10_HEAD_EFFECTS PHP_EACH effects AS i2 => r2 BEGIN WRITE_BYTE r2+0xd 0 END END BUT_ONLY See, I'm saving lots of space ;D
Wisp Posted January 1, 2010 Author Posted January 1, 2010 Fixpack currently makes monks immune to poison The fix here is just to drop that from the effects batch for everything but the Ring of Gaxx and a couple creature immunity items. It needs to be snipped from some BioWare items too (if you want consistency), and a few item effects need to use the poison state rather than poison damage (since it's both disease and poison, there's no other way to make this effect "work"). I will have to look into this matter further, then. Nothing ever happened with the demon script fixes either, I guess?I guess I would need to be clued in on just what they are. A quick look through the forum didn't yield anything, and I haven't done any thorough searches further back than to dec 08 yet. Tabitha the lion has a script... Drop her off in the charm effects batch. Another thing I wrote up that vanished.That would be a better way of doing it, unfortunately the charm effects batch can't handle cases where there are no existing effects. It needs to find a charm immunity effect before it inserts any new effects. Anyway, while I was poking around there, I noticed that the charm effects batch does not add immunity to the string "dominated". Diff for that (line numbers are probably all wrong, though): @@ -24594,6 +24633,7 @@ SET "new_fx_5" = 0 SET "new_fx_6" = 0 SET "new_fx_7" = 0 + new_fx_9 = 0 PATCH_IF ("%index%" < 0) BEGIN // if loop through globals needed SET "abil_fx_idx" = 0 END ELSE BEGIN // otherwise normal ability @@ -24627,6 +24667,9 @@ PATCH_IF (("%opcode%" = 267) AND ("%param1%" = 14780)) BEGIN // disable string "dire charmed" SET "new_fx_6" = 1 END ELSE + PATCH_IF opcode = 267 AND param1 = 8364 BEGIN // disable string "dominated" + new_fx_9 = 1 + END PATCH_IF (("%opcode%" = 296) AND ("%resref%" STRING_COMPARE_CASE "spnwchrm" = 0)) BEGIN // disable charmed visuals SET "new_fx_7" = 1 END ELSE @@ -24691,6 +24734,14 @@ SET "new_fx" = ("%new_fx%" + 1) SET "counter" = ("%counter%" + 1) END + PATCH_IF new_fx_9 = 0 BEGIN + INSERT_BYTES fx_off + abil_fx_idx * (0x30 + 0xd8 * fx_type) 0x30 + 0xd8 * fx_type + WRITE_ASCIIE fx_off + abil_fx_idx * (0x30 + 0xd8 * fx_type) "%template%" // clones immunity effect + WRITE_SHORT fx_off + 0x08 * fx_type + abil_fx_idx * (0x30 + 0xd8 * fx_type) 267 //disable string + WRITE_LONG fx_off + 0x04 + 0x10 * fx_type + abil_fx_idx * (0x30 + 0xd8 * fx_type) 8364 //strref + new_fx = new_fx + 1 + counter = counter + 1 + END END WRITE_SHORT "%counter_offset%" "%counter%" END I'd have sworn that this was in Baldurdash or Extremist's stuff or somewhere - I know I read about it before I noticed it (Reaction in BG2 is mostly BG leftovers, and where it's used it's not used sensibly). Oh well. Should go in.Probably not. It changes the sequence too much to suddenly have the option of Happy Friendly Simyaz. And there are no more conservative folks around? Yeah. There's about two hundred more of these .2,000. This was the great power (and secondary type and school and casting animation and projectile and I don't even remember enough to list it all) punt of yester-years. You can't fix just one, and nobody will ever agree on every single one, so it's better to just stick it in our Outstanding bugs thread alongside "Temple rewards for the Illithium quest make no sense."I guess, but surely there is a difference between Arrows of Piercing and what's clearly lava?
devSin Posted January 1, 2010 Posted January 1, 2010 I guess, but surely there is a difference between Arrows of Piercing and what's clearly lava?And how about I remove the clearly erroneous school and type of demilich's innate IMPRISON_SOUL? What are you going to do then? ;-) It's not that this won't make its way into the pack in the future; it's more an explanation of why it (and other similar issues) isn't already there.
Wisp Posted January 1, 2010 Author Posted January 1, 2010 I guess, but surely there is a difference between Arrows of Piercing and what's clearly lava?And how about I remove the clearly erroneous school and type of demilich's innate IMPRISON_SOUL? What are you going to do then? ;-) It's not that this won't make its way into the pack in the future; it's more an explanation of why it (and other similar issues) isn't already there. Both points made. Anyway, I happened upon something else. Some dialogues check for the cefaldor DV. It's typically concerns things like whether or not the PC&party should be referred to as heroes, or whether or not the PC can ask about things related to the animal attacks on Trademeet. The cefaldor DV is set under certain conditions if/when you speak to Verthan, Master of Challenges! (cechalle), but the Faldorns you kill both set the cefald01 DV and that's also the one that is usually checked in matters concerning Trademeet. Assuming this is fix-worthy: COPY_EXISTING trrak01.dlg override barl.dlg override temsup.dlg override trgeni01.dlg override trlgrd01.dlg override //trmer03.dlg override DECOMPILE_DLG_TO_D REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~"cefaldor"~ ~"cefald01"~ COMPILE_D_TO_DLG BUT_ONLY
Salk Posted January 2, 2010 Posted January 2, 2010 Fixpack currently makes monks immune to poison The fix here is just to drop that from the effects batch for everything but the Ring of Gaxx and a couple creature immunity items. It needs to be snipped from some BioWare items too (if you want consistency), and a few item effects need to use the poison state rather than poison damage (since it's both disease and poison, there's no other way to make this effect "work"). I will have to look into this matter further, then. I'd be very grateful for a thorough fix here!
Nythrun Posted January 2, 2010 Posted January 2, 2010 That would be a better way of doing it, unfortunately the charm effects batch can't handle cases where there are no existing effects Right, sorry. I'd forgotten we were still on Cam's original writeup of this stuff. In any case, it's better just to pop a !StateCheck(Myself,8192) before the hostile action in Ms CopLion's script. I will have to look into this matter further, then. Try not to worry about it too much, it's not properly fixable. We'll get pretty far just by totally dropping the poison resistance opcode from the batches (which should have happened last time this came up). All of the bleeding weapons in the game already use the poison state rather than a staggered damage opcode, so that will, sadly, have to stay if they don't get swapped (I did this locally, though at least in part because I'd rather change a few weapons than dump a bunch of immunity effects all over the game). Most of the items that use opcode 12 for poison 'tick" only once (Gram, Spear of Withering, etc), so changing them would add cumulativity problems with other sources. We can also drop Sphere of Chaos from the polymorph batch and Hold2 from the hold batch (there are very things that should grant immunity to the latter). I'll have more to say when I get the game installed again (hopefully that doesn't like too much of a threat) but no promises as to whether it makes sense.
Wisp Posted January 3, 2010 Author Posted January 3, 2010 In any case, it's better just to pop a !StateCheck(Myself,8192) before the hostile action in Ms CopLion's script.That would keep her from acting strangely if she should get charmed. (But it obviously won't keep her from getting charmed, if that's a consideration.) Try not to worry about it too much, it's not properly fixable. We'll get pretty far just by totally dropping the poison resistance opcode from the batches (which should have happened last time this came up).Poison resistance does not seem inappropriate for most files in the current disease batch. All files except misc8j.itm and spcl814.spl have or receive immunity to poison and disease. Misc8j and spcl814 are the only ones that only have immunity to disease. We can also drop Sphere of Chaos from the polymorph batch and Hold2 from the hold batch (there are very things that should grant immunity to the latter).Looks like someone has taken care of hold2 already.
devSin Posted January 3, 2010 Posted January 3, 2010 It shouldn't be in any except the ring of gaxx (which also has poison immunity) IIRC. When we learned that poison damage resistance blocked disease damage, we unrolled all the places where it was set, but it somehow got switched over to all disease immunity items getting immunity to poison too and nobody has bothered yet to strip it out. I'm not in favor of changing damage types just to be super anal about somebody wearing the periapt of proof possibly ever taking damage internally classified as poison damage (but it says immunity to poison and I looked in ShadowKeeper and IT WAS POISON DAMAGE WTH) or making sure the ring of anti-venom isn't better than the scroll of poison resistance. I whined about Hold2 often enough that we shouldn't have anything super bad in the current version.
Wisp Posted January 3, 2010 Author Posted January 3, 2010 Giving poison resistance its own effects batch would seem like the obvious thing to do in that case. That way it can be given only to the 7 items that give both poison and disease immunity but lack poison resistance.
devSin Posted January 8, 2010 Posted January 8, 2010 The fix for Anomen's missing proficiency points is not playing by the rules.BioWare chose his next proficiency to be quarterstaff, so that has to be one of the ones we add. He can end up with 2+2+2+2+1+1=10, so I recommend we continue changing sword and shield to two (+1), add two spear (+2), and then the final for the first 4 levels can be his staff (+1). The last two versions can be a vote if people still want us to improve his war hammer to two stars (+1) to keep the current spread, or if you want to add flails or clubs or whatever. If Anomen is summoned via the Fate Spirit in ToB he is Lawful Neutral and described as still belonging to the Order. Due to overly restrictive alignment checks, Anomen can end up speaking ill of the Order in a banter with Imoen.May as well just make those checks !Alignment(CN) and Alignment(CN) since, yeah, it looks like they just want not bad/bad Anomen. Going by my admittedly hazy memory, Miranda (woman with daughter in the temple district) used to initiate dialogue with the protagonist after she was done with Nirkhas. However, she does not do this since her dialogue with Nirkhas sets her NumTimesTalkedTo to 1 and her initiate-dialogue script requires it to be at 0.It's funny how nothing of your "memory" is at all supported by the implementation (at all), and you're clearly aware of it since you had to make all those changes, and yet you kept pressing on. The vampire encounters have content for when the player has sided with Bodhi, but if you side with Bodhi the vampires stop showing up.Probably not, because there's no real code to have some consequence to turning against Bodhi's agents (unlike Arkanis to keep you in step with the Shadow Thieves). (I wouldn't necessarily be concerned, but it's not something I'd care to introduce either.) Pixie Prick +3 has a undocumented +6 bonus to saves.Probably, and it looks like I change this locally, but I begin to wonder in my dotage if all these sorts of "fixes" aren't in fact just late balance changes intentionally made to respond to playtesting. Maybe QA sent word that the dagger was too stupid powerful, and so random designer Y changed it. I'm finding I don't have my old "Well, then random designer LOSER should have paid more attention" attitude anymore, which is necessary for any sort of comprehensive fixpack. ;-) HIVE_MOTHER_CAUSE_SERIOUS_WOUNDS bypasses MR, unlike all other beholder rays except the Anti-Magic Ray and the Death Ray.Don't mess with mommy. I.e., this doesn't bother me (the other two ToB ranged touch spells also bypass resistance). You break the rules, you get spanked. There's a bunch of stuff wrong with the Assassin's poison ability. Among other things, the type is wrong for both damage-causing .eff files. They should do x damage per second, but do x damage per round. Nythrun posted a fix for one of the .eff files here, but the other .eff file also needs fixing.I'm still not sure about this. I know for certain that it worked OK when we tested it (with Nythrun's changes) without needing to change the base EFF mode. Anyway, I happened upon something else. Some dialogues check for the cefaldor DV. It's typically concerns things like whether or not the PC&party should be referred to as heroes, or whether or not the PC can ask about things related to the animal attacks on Trademeet. The cefaldor DV is set under certain conditions if/when you speak to Verthan, Master of Challenges! (cechalle), but the Faldorns you kill both set the cefald01 DV and that's also the one that is usually checked in matters concerning Trademeet.Is there any way out of the sequence where you don't get hit up by Verthan? You have to challenge Faldorn to kill her, and he'll automatically initiate dialogue after you win, so I don't think you can walk away without the extra DVs set. (Unless we can find this causing problems anywhere, it'd be nice not to start spamming a bunch more dialogues into override, but there's no reason it can't be done for dialogues we already patch; I'm sure we already do enough damage changing the "Faldorn"s to "cefald01"s anyway).
Recommended Posts
Archived
This topic is now archived and is closed to further replies.