Jump to content

Aerie PartyRested() banter bugged


Recommended Posts

I'm kind of surprised this bug was never detected before, but it's probably because the script block only fires once per day and then moves on.

 

One of my alpha testers found a vanilla game bug in Aerie's script/files. She noticed that Aerie was running the same script block every morning, but that nothing was happening. It's caused by a PartyRested() in the dialogue file that doesn't belong there.

 

This is the script block in aerie.bcs

IF
 IfValidForPartyDialogue(Myself)
 Gender(Player1,FEMALE)
 PartyRested()
 See(Player1)
 CombatCounter(0)
 !StateCheck(Player1,STATE_SLEEPING)
 Global("BAerie10","LOCALS",0)
THEN
 RESPONSE #100
ActionOverride(Player1,DisplayString(Myself,84706))  // ~Running block 36 of aerie.BCS~
Interact(Player1)
END

 

And this is the first state of the dialogue block that should be firing but isn't. The problem is that the PartyRested() trigger in the DLG file. Since PartyRested() only returns true the first time the script is run after resting, Aerie will fire off a banter every morning, but the PartyReste() in the DLG is blocking the intended banter from firing.

 

IF WEIGHT #28 /* Triggers after states #: 103 112 124 130 139 152 167 193 201 211 218 224 232 240 270 294 302 306 313 324 335 341 351 364 373 460 even though they appear after this state */
~PartyRested()
Gender(Player1,FEMALE)
See(Player1)
!StateCheck(Player1,STATE_SLEEPING)
Global("BAerie10","LOCALS",0)~ THEN BEGIN 66 // from:
 SAY #3096 /* ~Ha, it is--it is nice to have a woman in charge for a change.  Men always steal the blankets!~ [AERIEB2] */
 IF ~~ THEN REPLY #3097 /* ~You slept well then?~ */ DO ~SetGlobal("BAerie10","LOCALS",1)~ GOTO 67
 IF ~~ THEN REPLY #3098 /* ~And what do you know of men?~ */ DO ~SetGlobal("BAerie10","LOCALS",1)~ GOTO 68
 IF ~~ THEN REPLY #3099 /* ~Women can steal the blankets, too, you know.~ */ DO ~SetGlobal("BAerie10","LOCALS",1)~ GOTO 69
 IF ~~ THEN REPLY #3100 /* ~Men will steal more than the blankets if you let them, sister.~ */ DO ~SetGlobal("BAerie10","LOCALS",1)~ GOTO 70
END

 

Falsing out the script block and extending her script with this would solve the first part of the problem.

IF
 IfValidForPartyDialogue(Myself)
 Gender(Player1,FEMALE)
 PartyRested()
 See(Player1)
 CombatCounter(0)
 !StateCheck(Player1,STATE_SLEEPING)
 Global("BAerie10","LOCALS",0)
THEN
 RESPONSE #100
SetGlobal("BAerie10","LOCALS",1) 
END

IF
 IfValidForPartyDialogue(Myself)
 See(Player1)
 CombatCounter(0)
 !StateCheck(Player1,STATE_SLEEPING)
 Global("BAerie10","LOCALS",1)
THEN
 RESPONSE #100
Interact(Player1) 
END

 

Ordinarily, I wouldn't use REPLACE_STATE_TRIGGER or REPLACE_TRANS_ACTION, but here it would kind of make sense.

 

REPLACE_STATE_TRIGGER BAERIE 66 ~Global("BAerie","LOCALS",1)~

 

And then REPLACE_TRANS_ACTION to close the variable.

 

 

Also, the tester forgot to go see Raelis after Aerie asked her to twice. Stutter ensued. Here's the script block.

IF
 GlobalTimerExpired("AerieRemindsRaelis","GLOBAL")
 GlobalLT("AerieReminder2","LOCALS",2)
 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
ActionOverride(Player1,DisplayString(Myself,84715))  // ~Running block 45 of aerie.BCS~
StartDialogNoSet(Player1)
END

 

And the dialogue block that's *supposed* to run.

 

IF WEIGHT #26 /* Triggers after states #: 401 417 421 426 431 435 438 444 448 454 457 489 493 even though they appear after this state */
~GlobalTimerExpired("AerieRemindsRaelis","GLOBAL")
Global("AerieReminder2","LOCALS",1)
Global("QuayleJob","GLOBAL",1)
AreaType(OUTDOOR)
AreaType(CITY)
!AreaCheck("AR2000")
CombatCounter(0)
Global("HaerDalisPlotStarted","GLOBAL",0)
Global("HaerDalisFree","GLOBAL",0)~ THEN BEGIN 208 // from:
 SAY #59042 /* ~I suppose you think we don't have time to go and see this Raelis Quayle mentioned.  (sigh)  Well... if we are near the Five Flagons, sometime, maybe we could drop in?  I would like that.~ */
 IF ~~ THEN DO ~SetGlobal("AerieReminder2","LOCALS",2)~ EXIT
END

 

No idea why this dialogue isn't firing, though. The dialogue trigger list is cluttered, but the variables are the same.

Link to comment

I have this fixed locally, so somebody must have known about it (or did I look for all PartyRested() in DLGs and fix?) from at least 2007 (it looks like that's when I last mass-`touch`ed the Ds/BAFs, although there's no way to know when I made this specific change some time prior to that).

 

At the moment, I don't believe your stutter bug is real (not from that code, at least). Maybe you or another mod broke her dialogue?

Link to comment

Since the variables all checked out in the saved game, and since I haven't been able to duplicte it locally despite an identical installation, it's possible that it's just a glitch in her installation. I mentioned it only for the sake of completeness.

Link to comment

Archived

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

×
×
  • Create New...