Jump to content

Photo

Things I think should be considered for Fixpack 10


89 replies to this topic

#16 aVENGER_(RR)

aVENGER_(RR)
  • Modders
  • 1008 posts
  • Gender:Not Telling

Posted 10 January 2012 - 07:05 AM

Here's a fix.


Thanks!

Could you code up a fix for the Aerie's broken PartyRested() banter as well?

Edited by aVENGER_(RR), 10 January 2012 - 07:06 AM.


#17 berelinde

berelinde

    The Typo Queen

  • Gibberlings
  • 8594 posts
  • Gender:Male
  • Location:New Jersey, USA

Posted 10 January 2012 - 08:42 AM

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.
Must. Write. Faster.

cmorgan: "None of us get old around here, just more proficient at doing more stuff with less braincells!"

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum

#18 aVENGER_(RR)

aVENGER_(RR)
  • Modders
  • 1008 posts
  • Gender:Not Telling

Posted 10 January 2012 - 12:18 PM

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.

#19 aVENGER_(RR)

aVENGER_(RR)
  • Modders
  • 1008 posts
  • Gender:Not Telling

Posted 10 January 2012 - 01:28 PM

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~


#20 devSin

devSin
  • Modders
  • 3017 posts
  • Gender:Male

Posted 10 January 2012 - 05:00 PM

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 quest

Go for it.

#21 berelinde

berelinde

    The Typo Queen

  • Gibberlings
  • 8594 posts
  • Gender:Male
  • Location:New Jersey, USA

Posted 10 January 2012 - 05:34 PM

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

Edited by berelinde, 10 January 2012 - 05:34 PM.

Must. Write. Faster.

cmorgan: "None of us get old around here, just more proficient at doing more stuff with less braincells!"

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum

#22 aVENGER_(RR)

aVENGER_(RR)
  • Modders
  • 1008 posts
  • Gender:Not Telling

Posted 10 January 2012 - 10:11 PM

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

Edited by aVENGER_(RR), 10 January 2012 - 10:44 PM.


#23 aVENGER_(RR)

aVENGER_(RR)
  • Modders
  • 1008 posts
  • Gender:Not Telling

Posted 10 January 2012 - 10:17 PM

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.

#24 Dakk

Dakk
  • Modders
  • 941 posts
  • Gender:Male

Posted 11 January 2012 - 01:03 AM

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.

#25 aVENGER_(RR)

aVENGER_(RR)
  • Modders
  • 1008 posts
  • Gender:Not Telling

Posted 11 January 2012 - 07:10 AM

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.

Edited by aVENGER_(RR), 11 January 2012 - 12:43 PM.


#26 berelinde

berelinde

    The Typo Queen

  • Gibberlings
  • 8594 posts
  • Gender:Male
  • Location:New Jersey, USA

Posted 11 January 2012 - 09:08 AM

http://forums.gibber...ndpost&p=165889
http://forums.gibber...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.
Must. Write. Faster.

cmorgan: "None of us get old around here, just more proficient at doing more stuff with less braincells!"

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum

#27 aVENGER_(RR)

aVENGER_(RR)
  • Modders
  • 1008 posts
  • Gender:Not Telling

Posted 11 January 2012 - 10:08 AM

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

#28 berelinde

berelinde

    The Typo Queen

  • Gibberlings
  • 8594 posts
  • Gender:Male
  • Location:New Jersey, USA

Posted 11 January 2012 - 10:22 AM

Your call. I'll just point here when people ask why it still isn't fixed. ;)
Must. Write. Faster.

cmorgan: "None of us get old around here, just more proficient at doing more stuff with less braincells!"

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum

#29 aVENGER_(RR)

aVENGER_(RR)
  • Modders
  • 1008 posts
  • Gender:Not Telling

Posted 11 January 2012 - 01:08 PM

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.

#30 Giuseppe

Giuseppe
  • Members
  • 19 posts
  • Gender:Male
  • Location:Milan

Posted 13 January 2012 - 09:56 PM

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.



Reply to this topic



  


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users