Jump to content

Some fixes


Wisp

Recommended Posts

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).

Link to comment

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.d
My 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.

 

NumTimesTalkedTo
Is 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.

Link to comment
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. ;-)
Link to comment

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

Link to comment

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

Link to comment
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?
Link to comment
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.

Link to comment
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

Link to comment
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! :)

Link to comment
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.

Link to comment
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.
Link to comment

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.

Link to comment

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.

Link to comment
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. :D

 

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).
Link to comment

Archived

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

×
×
  • Create New...