aVENGER_(RR) Posted January 10, 2012 Share Posted January 10, 2012 Here's a fix. Thanks! Could you code up a fix for the Aerie's broken PartyRested() banter as well? Link to comment
berelinde Posted January 10, 2012 Share Posted January 10, 2012 Sure. Here's a fix. Thanks! Could you code up a fix for the Aerie's broken PartyRested() banter as well? Sure. There are several Aerie stutter bugs. Three, I think. I'll see if I can track them down and post fixes for the lot. Link to comment
aVENGER_(RR) Posted January 10, 2012 Share Posted January 10, 2012 While we're listing stuff for the next version, there's a long standing issue with the inventory icon for Warhammer +2: Borok's Fist (IHAMM05.BAM) which was actually introduced by the fixpack. The supposedly fixed version of the BAM has an ugly pink outline instead of the proper shadow effects. I've double checked the original BAM and it seems to work just fine in-game so I vote for getting rid of the edited version for the next release. Link to comment
aVENGER_(RR) Posted January 10, 2012 Share Posted January 10, 2012 Here's some misc stuff I had lying around. The strangely non-magical spell traps For some reason, TRAP_FIREBALL, TRAP_LIGHTNING_BOLT and TRAP_MAGIC_MISSILE happily bypass the target's magic resistance while none of the other trap spells do. As these are clearly magical traps based on actual arcane spells, I'd vote for making them behave as such. // A few trap spells ignore magic resistance, but they probably should not since all other trap spells don't COPY_EXISTING ~spwi001.spl~ ~override~ // Fireball (trap) ~spwi002.spl~ ~override~ // Lightning Bolt (trap) ~spwi003.spl~ ~override~ // Magic Missile (trap) 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%" != 1) BEGIN WRITE_BYTE ("%fx_off%" + 0x0d + (0x30 * ("%index2%" + "%abil_fx_idx%"))) "1" // resist/dispel: 1 END END END BUT_ONLY_IF_IT_CHANGES Mordenkainen's dispellable mind-shield Due to a wrong dispel/resist setting, using a Dispel Magic on a Mordenkeinen's Sword will remove its natural immunity to Psionics and Mind Affecting spells. Since the immunity is not bestowed as a spell but as a virtue of the sword being an animated object, I'd suggest making it undispellable. // The innate immunity to psionics and mind-affecting spells of Mordenkainen Sword should not be dispellable COPY_EXISTING ~ipsion.itm~ ~override~ // Greenstone Amulet ("equipped" by Mordenkainen's Sword) READ_LONG 0x64 "abil_off" READ_SHORT 0x68 "abil_num" READ_LONG 0x6a "fx_off" READ_SHORT 0x70 "fx_num" FOR (index2 = 0 ; index2 < fx_num ; index2 = index2 + 1) BEGIN WRITE_BYTE ("%fx_off%" + 0x03 + ("%index2%" * 0x30)) "0" // power: 0 WRITE_BYTE ("%fx_off%" + 0x0d + ("%index2%" * 0x30)) "0" // dispel/resist: 0 (non-magical) WRITE_LONG ("%fx_off%" + 0x0e + ("%index2%" * 0x30)) "0" // duration: 0 END BUT_ONLY_IF_IT_CHANGES Also, I'd suggest dropping the racial "fix" for the Empathic Manifestation in the Unseeing Eye quest since it can break things. There's no evidence that this is supposed to be a true demonic creature, save for the Tanar'ri avatar, and Bioware slapped that on a bunch of things. In the unmodded game, the race and class of the creature are simply set to "None". --- setup-bg2fixpack.tp2 2010-03-15 19:54:10.000000000 +0100 +++ setup-bg2fixpack.v10 2012-01-10 22:23:27.062500000 +0100 @@ -6207,11 +6207,6 @@ BUT_ONLY_IF_IT_CHANGES // racial fixes -COPY_EXISTING ~RIFTCR04.CRE~ ~override~ - WRITE_BYTE 0x0272 121 // demonic - BUT_ONLY_IF_IT_CHANGES - -// racial fixes COPY_EXISTING ~AEWERE2.CRE~ ~override~ ~AEWERE3.CRE~ ~override~ ~AEWERE4.CRE~ ~override~ Link to comment
devSin Posted January 11, 2012 Share Posted January 11, 2012 The supposedly fixed version of the BAM has an ugly pink outline instead of the proper shadow effects. I've double checked the original BAM and it seems to work just fine in-game so I vote for getting rid of the edited version for the next release.I'd rather just drop it or move it off to OBC, to be honest. BioWare was perfectly capable of picking whatever icons they wanted to use. For some reason, TRAP_FIREBALL, TRAP_LIGHTNING_BOLT and TRAP_MAGIC_MISSILE happily bypass the target's magic resistance while none of the other trap spells do. As these are clearly magical traps based on actual arcane spells, I'd vote for making them behave as such.Seems kind of nitpicky. When you get down to it, there are some non-player spells and items that do this, or have unusual powers, or what not. if you start dwelling on that stuff, you're going to be here all year. Also, I'd suggest dropping the racial "fix" for the Empathic Manifestation in the Unseeing Eye questGo for it. Link to comment
berelinde Posted January 11, 2012 Share Posted January 11, 2012 I thought there were three bugged dialogues for Aerie, but I could only find two. Unfortunately, both are really messy fixes, which may be why they were never implemented. Aerie's never-seen-in-game "blanket stealing" banter for female PCs. It's a really cute banter between Aerie and a female PC. The problem is that the script uses PartyRested()... and so does the dialogue file. The script will run every morning, but it will never fire. Unfortunately somebody thought it was a good idea to use variable=0 triggers for these, so there isn't a neat-and-easy fix. The easiest fix for it is less than ideal, since it involves falsing out the original script block, extending Aerie's script with a replacement that use variable=1 instead of variable=0, and then changing both the triggers and the actions in the banter itself. Like I said, it's clunky, but as it stands, this banter will never fire, so we aren't losing much. /* Fix Aerie's "Blanket Thieves" banter */ ACTION_IF GAME_IS ~bg2 bgt~ THEN BEGIN COPY_EXISTING ~aerie.bcs~ ~override~ DECOMPILE_BCS_TO_BAF REPLACE_TEXTUALLY ~Global("BAerie10","LOCALS",0)~ ~Global("BAerie10","LOCALS",0) False()~ COMPILE_BAF_TO_BCS BUT_ONLY_IF_IT_CHANGES <<<<<<<< bg2fixpack/Inlined/aerie_blanket_thief.baf IF InParty(Myself) Gender(Player1,FEMALE) PartyRested() See(Player1) CombatCounter(0) !StateCheck(Player1,STATE_SLEEPING) !StateCheck(Myself,STATE_SLEEPING) Global("BAerie10","LOCALS",0) THEN RESPONSE #100 SetGlobal("BAerie10","LOCALS",1) END >>>>>>>> EXTEND_TOP ~aerie.bcs~ ~bg2fixpack/Inlined/aerie_blanket_thief.baf~ <<<<<<<< bg2fixpack/Inlined/aerie_blanket_thief.d REPLACE_STATE_TRIGGER BAERIE 66 ~Global("BAerie10","LOCALS",1)~ ALTER_TRANS BAERIE BEGIN 66 END BEGIN END // I think that's what you use when you want to alter all transtions for that state BEGIN "ACTION" ~SetGlobal("BAerie","LOCALS",2)~ END >>>>>>>> COMPILE ~bg2fixpack/Inlined/aerie_blanket_thief.d~ END And if you think that's ugly, wait until you see the fix for Aerie's bugged Raelis reminder. Same deal variable=0 for a trigger with a million triggers in the dlg. Personally, I think the engine just saw all those triggers and said to itself "Yeah, right." Anyway, the first part is the same. false out the original script block and extend Aerie's script with one that will use one unique variable that won't cause games to stutter. /* Fix Aerie's Raelis reminder */ ACTION_IF GAME_IS ~bg2 bgt~ THEN BEGIN COPY_EXISTING ~aerie.bcs~ ~override~ DECOMPILE_BCS_TO_BAF REPLACE_TEXTUALLY ~GlobalLT("AerieReminder2","LOCALS",2)~ ~GlobalLT("AerieReminder2","LOCALS",2) False()~ COMPILE_BAF_TO_BCS BUT_ONLY_IF_IT_CHANGES <<<<<<<< bg2fixpack/Inlined/aerie_raelis_reminder.baf IF GlobalTimerExpired("AerieRemindsRaelis","GLOBAL") GlobalLT("AerieReminder2","LOCALS",2) Global("CD_AerieReminder2","LOCALS",0) Global("QuayleJob","GLOBAL",1) AreaType(OUTDOOR) AreaType(CITY) !AreaCheck("AR2000") !Global("Chapter","GLOBAL",4) !Global("Chapter","GLOBAL",5) !Global("Chapter","GLOBAL",7) CombatCounter(0) Global("HaerDalisPlotStarted","GLOBAL",0) Global("HaerDalisFree","GLOBAL",0) IfValidForPartyDialogue(Myself) See(Player1) !StateCheck(Player1,STATE_SLEEPING) THEN RESPONSE #100 SetGlobal("CD_AerieReminder2","LOCALS",1) StartDialogNoSet(Player1) END >>>>>>>> EXTEND_TOP ~aerie.bcs~ ~bg2fixpack/Inlined/aerie_raelis_reminder.baf~ <<<<<<<< bg2fixpack/Inlined/aerie_raelis_reminder.d REPLACE_STATE_TRIGGER AERIEJ 207 ~Global("CD_AerieReminder2","LOCALS",1)~ ALTER_TRANS AERIEJ BEGIN 207 END BEGIN END // I think that's what you use when you want to alter all transtions for that state BEGIN "ACTION" ~SetGlobal("CD_AerieReminder2","LOCALS",2) IncrementGlobal("AerieReminder2","LOCALS",1) SetGlobalTimer("AerieRemindsRaelis","GLOBAL",TWO_DAYS)~ END >>>>>>>> COMPILE ~bg2fixpack/Inlined/aerie_raelis_reminder.d~ END Link to comment
aVENGER_(RR) Posted January 11, 2012 Share Posted January 11, 2012 I'd rather just drop it or move it off to OBC, to be honest. BioWare was perfectly capable of picking whatever icons they wanted to use. There shouldn't be any harm in keeping the code which switches the icon to IHAMM05.BAM since the original (unmodded) version of that file works fine. Dropping the botched pink-outlined edit of the BAM which the fixpack currently ships is a must though. Seems kind of nitpicky. When you get down to it, there are some non-player spells and items that do this, or have unusual powers, or what not. Heh, I guess you're right. I took notice of these by chance while running some tests on my revised Wizard Slayer kit and was surprised to see that only those three spell traps ignored his MR. The thing is, all of the other traps that are based on actual spells (i.e. TRAP_CLOUDKILL, TRAP_STINKING_CLOUD, TRAP_FLAMESTRIKE, TRAP_CALL_LIGHTNING, TRAP_CHROMATIC_ORB, TRAP_DIRE_CHARM... etc.) respect the target's MR, so we could justify this particular fix on the grounds of consistency. Link to comment
aVENGER_(RR) Posted January 11, 2012 Share Posted January 11, 2012 I thought there were three bugged dialogues for Aerie, but I could only find two. Unfortunately, both are really messy fixes, which may be why they were never implemented. Cheers! I'll look these over in more detail over the next few days. It might be possible to avoid falsing out the relevant blocks by using REPLACE_BCS_BLOCK. Link to comment
Dakk Posted January 11, 2012 Share Posted January 11, 2012 The thing is, all of the other traps that are based on actual spells (i.e. TRAP_CLOUDKILL, TRAP_STINKING_CLOUD, TRAP_FLAMESTRIKE, TRAP_CALL_LIGHTNING, TRAP_CHROMATIC_ORB, TRAP_DIRE_CHARM... etc.) respect the target's MR, so we could justify this particular fix on the grounds of consistency. Unless you fear being here all year (I'll bring cookies and milk!), it's a fix I like for - as you say - consistency. Link to comment
aVENGER_(RR) Posted January 11, 2012 Share Posted January 11, 2012 Ok, I've streamlined the Aerie "Blanket thief banter" fix a bit. Looks solid, tested in-game and seems to work fine. EDIT - realized that only removing the PartyRested() trigger from the dialogue file is actually needed for the banter to fire. In the spirit of keeping the changes of the original content to the minimum within the fixpack, new code: // Fix Aerie's "Blanket Thieves" banter (berelinde) COPY_EXISTING ~baerie.dlg~ ~override~ DECOMPILE_DLG_TO_D REPLACE_TEXTUALLY EXACT_MATCH ~PartyRested() Gender(Player1,FEMALE)~ ~Gender(Player1,FEMALE)~ COMPILE_D_TO_DLG BUT_ONLY_IF_IT_CHANGES However, I'm still on the ropes concerning the Realis reminder. Can we get a bit more backstory on that one? I'm not entirely sure what's being fixed there. Link to comment
berelinde Posted January 11, 2012 Share Posted January 11, 2012 http://forums.gibberlings3.net/index.php?showtopic=19681&view=findpost&p=165889 http://forums.gibberlings3.net/index.php?showtopic=19614 Mostly, the reason people are able to pinpoint the cause of the stutter is because they are running with a debugger on all the time, spitting out the numbers of the script blocks as they fire. This particular script block turns up again and again and again and again. In fact, it will keep popping up indefinitely until the party goes to talk to Raelis, at which point, it stops. Link to comment
aVENGER_(RR) Posted January 11, 2012 Share Posted January 11, 2012 Thanks for the links. However, like devSin, I'm not quite convinced about this. All the variables seem to match up between Aerie's script and her dialogue. The only suspect trigger is the misspelled AreaType(OUTSIDE) (should be OUTDOOR) but we already handle that in Core Fixes. On the other hand, I can see how someone who doesn't install the fixpack might get this bug. Anyhow, your proposed solution would cause Aerie to initiate the relevant dialogue only once which would prevent the final reminder from triggering ("I suppose you think we don't have time to go and see this Raelis Quayle mentioned..."). Link to comment
berelinde Posted January 11, 2012 Share Posted January 11, 2012 Your call. I'll just point here when people ask why it still isn't fixed. Link to comment
aVENGER_(RR) Posted January 11, 2012 Share Posted January 11, 2012 One of Haer'Dalis' banters with Edwin never fires due to the duplicated PartyRested() trigger issue, as was the case with Aerie. Here's the fix: // Fix Haer'Dalis' "Arcane muttering" banter with Edwin COPY_EXISTING ~bhaerda.dlg~ ~override~ DECOMPILE_DLG_TO_D REPLACE_TEXTUALLY EXACT_MATCH ~PartyRested() InParty("Edwin")~ ~InParty("Edwin")~ COMPILE_D_TO_DLG BUT_ONLY_IF_IT_CHANGES BTW, I stumbled upon this while doing a search of all dialogue files for the PartyRested() trigger. It seems that Aerie and Haer'Dalis were the only ones affected. Link to comment
Giuseppe Posted January 14, 2012 Share Posted January 14, 2012 Hi there! I remember that time ago Miloch the Great made available a fix that prevent CTD after killing a Glazebru. It was very useful, since I get this annoying bug most of the time. I can't find the post, but I do hope you plan to add this fix in the upcoming version. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.