Jump to content

Fade Bug?


Recommended Posts

42 minutes ago, amber-coffeeCat said:

64-bit OS. As for weidu, I don't really know how to check, but I guess if it was 32-bit, I would have already ran into more than one problem along the way, no?

1. Delete 'setup-stutterdebug.exe'

2. Copy 'setup-eet.exe' as 'setup-stutterdebug.exe'

3. Repeat installation of the StutterDebugTool, post results.

Link to comment

IF
    InParty(Myself)
    See(Player1)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    !StateCheck(Player1,CD_STATE_NOTVALID)
    Global("E3FADEFRIENDSHIP","GLOBAL",1)
    GlobalLT("E3FRIENDTALK","GLOBAL",10)
    RealGlobalTimerExpired("E3FADEFRIEND","GLOBAL")
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,735034))  // Running block 107 of E3FADE.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,735034))  // Running block 107 of E3FADE.BCS
        StartDialogueNoSet(Player1)
END

 

It's this one.

Link to comment

This is what I see in the script (file E3Fade.baf):

Spoiler


IF
   InParty(Myself)
   See(Player1)
   !StateCheck(Myself,CD_STATE_NOTVALID)
   !StateCheck(Player1,CD_STATE_NOTVALID)
   Global("E3FADEFRIENDSHIP","GLOBAL",1)
   GlobalLT("E3FRIENDTALK","GLOBAL",9)
   RealGlobalTimerExpired("E3FADEFRIEND","GLOBAL")
THEN
   RESPONSE #100
      IncrementGlobal("E3FRIENDTALK","GLOBAL",1)
END

IF
   InParty(Myself)
   See(Player1)
   !StateCheck(Myself,CD_STATE_NOTVALID)
   !StateCheck(Player1,CD_STATE_NOTVALID)
   Global("E3FADEFRIENDSHIP","GLOBAL",1)
   GlobalLT("E3FRIENDTALK","GLOBAL",10)
   RealGlobalTimerExpired("E3FADEFRIEND","GLOBAL")
THEN
   RESPONSE #100
      StartDialogueNoSet(Player1)
END

But what it is supposed to do I really do not know. What it does: as long as the variable "E3FRIENDTALK"is below 9 and the timer is expried, it gets increased by 1. This is the behavior you witnessed, where the variable was set to 9 no matter what and the timer was expired. And the script block you quoted tries to start a dialogue as long as the variable is below 10 and the timer is expired. Which it is, it's 9. But there is no dialogue that starts for "Global("E3FRIENDTALK","GLOBAL",9)". The available dialogues would start for "Global("E3FRIENDTALK","GLOBAL",2)", "Global("E3FRIENDTALK","GLOBAL",4)", "Global("E3FRIENDTALK","GLOBAL",6)", and the last one for "Global("E3FRIENDTALK","GLOBAL",8)".

@amber-coffeeCat the only thing you can do to stop the stutter is set the variable to "Global("E3FRIENDTALK","GLOBAL",10)" via cheats. This also means that you will not experience any friendship dialogues. The friendship track seems to be broken, I don't think it ever worked at all.

Link to comment

That's actually what I was thinking as well. Beside the obvious error in the second block (should be GlobalLTE3FRIENDTALK","GLOBAL",10), I think), I don't get why the game constantly thinks that the timer is expired. Oh well.

I put those blocks into comment brackets and I just increase the variables manually wherever I'm at an inn to experience the friendship track. Inconvenient, but it's something. Thanks for the help nonetheless.

Edited by amber-coffeeCat
Link to comment
6 minutes ago, amber-coffeeCat said:

I don't get why the game constantly thinks that the timer is expired.

It is, in that moment. The "E3FRIENDTALK" was set to "1" and the timer was set once. As soon as it was expired, the first block of the ones I quoted run 8 times because the script is always called from top to bottom and starts anew after it executed a true script block so it always executed this one. Then "E3FRIENDTALK" was at 9 and the script block you quoted started stuttering, because there was no other instances where the timer was reset. (Not trying to sound patronizing.)

The whole scripting for triggering the friendship path needs to be rescripted.

Still, I'm glad we could find a solution for your stutter problem. Thank you for reporting!

Link to comment

You don't, I was thinking the same, except I didn't notice that the timer was only set once. Actually, wouldn't setting it again just after the E3FRIENDTALK increment in this block fix the issue?

Or rather, placing it in the next block's response, before starting the dialogue.

Spoiler

IF
    InParty(Myself)
    See(Player1)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    !StateCheck(Player1,CD_STATE_NOTVALID)
    Global("E3FADEFRIENDSHIP","GLOBAL",1)
    GlobalLT("E3FRIENDTALK","GLOBAL",9)
    RealGlobalTimerExpired("E3FADEFRIEND","GLOBAL")
THEN
    RESPONSE #100
        RealSetGlobalTimer("E3FADEFRIEND","GLOBAL",2600)
        StartDialogNoSet(Player1)
END

 

Edited by amber-coffeeCat
Link to comment
On 3/27/2020 at 9:42 PM, amber-coffeeCat said:

I put those blocks into comment brackets and I just increase the variables manually wherever I'm at an inn to experience the friendship track. Inconvenient, but it's something. Thanks for the help nonetheless.

Since I would like to do the same, but have 0 knowledge of scripting, could someone please help me with it? I can open E3FADE.BCS in NearInfinity, but where exactly should I type those brackets?

Link to comment

@Gwaihir you turn this:

IF
   InParty(Myself)
   See(Player1)
   !StateCheck(Myself,CD_STATE_NOTVALID)
   !StateCheck(Player1,CD_STATE_NOTVALID)
   Global("E3FADEFRIENDSHIP","GLOBAL",1)
   GlobalLT("E3FRIENDTALK","GLOBAL",9)
   RealGlobalTimerExpired("E3FADEFRIEND","GLOBAL")
THEN
   RESPONSE #100
      IncrementGlobal("E3FRIENDTALK","GLOBAL",1)
END

IF
   InParty(Myself)
   See(Player1)
   !StateCheck(Myself,CD_STATE_NOTVALID)
   !StateCheck(Player1,CD_STATE_NOTVALID)
   Global("E3FADEFRIENDSHIP","GLOBAL",1)
   GlobalLT("E3FRIENDTALK","GLOBAL",10)
   RealGlobalTimerExpired("E3FADEFRIEND","GLOBAL")
THEN
   RESPONSE #100
      StartDialogueNoSet(Player1)
END 

Into this:

/*
IF
   InParty(Myself)
   See(Player1)
   !StateCheck(Myself,CD_STATE_NOTVALID)
   !StateCheck(Player1,CD_STATE_NOTVALID)
   Global("E3FADEFRIENDSHIP","GLOBAL",1)
   GlobalLT("E3FRIENDTALK","GLOBAL",9)
   RealGlobalTimerExpired("E3FADEFRIEND","GLOBAL")
THEN
   RESPONSE #100
      IncrementGlobal("E3FRIENDTALK","GLOBAL",1)
END

IF
   InParty(Myself)
   See(Player1)
   !StateCheck(Myself,CD_STATE_NOTVALID)
   !StateCheck(Player1,CD_STATE_NOTVALID)
   Global("E3FADEFRIENDSHIP","GLOBAL",1)
   GlobalLT("E3FRIENDTALK","GLOBAL",10)
   RealGlobalTimerExpired("E3FADEFRIEND","GLOBAL")
THEN
   RESPONSE #100
      StartDialogueNoSet(Player1)
END 
*/

(Note the /* and */ )

Hm, or you could also just delete the blocks. Then press "compile" in NI and save the script.

To trigger the dialogues by hand, you need to type in the cheats while playing (for old BGII, the cheat starts with CLUAConsole:) and klick talk Fade:

First dialogue:

C:SetGlobal("E3FRIENDTALK","GLOBAL",2)

Second dialogue:

C:SetGlobal("E3FRIENDTALK","GLOBAL",4)

Third dialogue:

C:SetGlobal("E3FRIENDTALK","GLOBAL",6)

Last dialogue:
C:SetGlobal("E3FRIENDTALK","GLOBAL",8)

Link to comment

@Gwaihir, actually the little tweak in the code that I demonstrated in the last post repaired all problems, at least for me. The only thing different now is that I need to start dialog with Fade, she doesn't to that herself for some reason. So I chat her up from time to time to see if the friend talk will fire. Here's how I ultimately fixed that:

IF
    InParty(Myself)
    See(Player1)
    !StateCheck(Myself,CD_STATE_NOTVALID)
    !StateCheck(Player1,CD_STATE_NOTVALID)
    Global("E3FADEFRIENDSHIP","GLOBAL",1)
    GlobalLT("E3FRIENDTALK","GLOBAL",9)
    RealGlobalTimerExpired("E3FADEFRIEND","GLOBAL")
THEN
    RESPONSE #100
        RealSetGlobalTimer("E3FADEFRIEND","GLOBAL",2600)
        StartDialogNoSet(Player1)
END

 

The bolded parts are what I changed. You probably won't use it now, since you asked two weeks ago... but maybe someone in the future will 🙂

Link to comment

@amber-coffeeCat thanks! I indeed already experienced her dialogues, but one thing that I noticed, is that the Friendtalk would advance everytime Fade bantered with an NPC. After the first talk, she started the second on her own right after bantering with minsc, and for the third and fourth I just talked to her after she bantered again. Kinda wierd, but ok 😆

Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...