berelinde Posted February 1, 2007 Share Posted February 1, 2007 This is the script associated with LT 29 firing. It should go off 2 minutes after the party is in Baldur's Gate for the second time. Problem is, it's firing in FW2600?! /* Lovetalk 29 */ IF GlobalGT("B!KnowBhaal","GLOBAL",0) Global("B!GavinLovetalk","GLOBAL",57) Global("B!CheckLT29","GLOBAL",0) Global("B!GavinRomanceMatch","GLOBAL",1) !Global("B!GavinRomanceActive","GLOBAL",3) OR(6) AreaCheck("FW0800") AreaCheck("FW0100") AreaCheck("FW0200") AreaCheck("FW0300") AreaCheck("FW0600") AreaCheck("FW0700") InParty(Myself) THEN RESPONSE #100 SetGlobal("B!CheckLT29","GLOBAL",1) RealSetGlobalTimer("B!GavinLovetalkTime","GLOBAL",120) //2 min END IF InParty(Myself) CombatCounter(0) !See([ENEMY]) Global("B!GavinLovetalk","GLOBAL",57) RealGlobalTimerExpired("B!GavinLovetalkTime","GLOBAL") GlobalGT("B!GavinFriend","GLOBAL",0) !Global("B!GavinFriend","GLOBAL",3) Global("B!GavinRomanceActive","GLOBAL",2) !StateCheck("B!GAVIN",CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 PlaySong(0) PlaySound("BGAV_S1") SetGlobal("B!GavinLovetalk","GLOBAL",58) StartDialogNoSet(Player1) END Link to comment
CamDawg Posted February 1, 2007 Share Posted February 1, 2007 What are the triggers for the dialogue? I suspect another script block (or the banter engine) is trying to prompt a dialogue and is bringing up the love talk instead of the intended dialogue. Link to comment
berelinde Posted February 1, 2007 Author Share Posted February 1, 2007 From the decompiled J. IF WEIGHT #63 /* Triggers after states #: 1858 1860 1862 1864 1866 1867 1868 1870 1872 1874 1876 1877 1878 1880 1962 1966 1971 1979 1989 1995 1999 2003 2008 2013 2202 even though they appear after this state */ ~Global("B!GavinLovetalk","GLOBAL",58) ~ THEN BEGIN 1817 // from: SAY #121346 /* ~It's going to happen soon, you know.~ */ IF ~~ THEN REPLY #107403 /* ~What is?~ */ DO ~SetGlobal("B!GavinLovetalk","GLOBAL",59) Party left the catacombs, rested, and then this talk went off. I could see it if the area check was contained in the starting conditions, but it's in the timer setting block, so that timer shouldn't even be set until the party is in Baldur's Gate. Link to comment
pro5 Posted February 1, 2007 Share Posted February 1, 2007 Wow, 2202 dialog states ?!!! Link to comment
berelinde Posted February 1, 2007 Author Share Posted February 1, 2007 Er, yes. Edit: You have to remember that each time the PC has a choice of responses, I've tried to ensure that there are at least 4 to choose from. That means a lot of states. Link to comment
cmorgan Posted February 1, 2007 Share Posted February 1, 2007 So perhaps there is another block of code (possibly legacy development code? I have had that happen several times) that sets ~Global("B!GavinLovetalk","GLOBAL",58)~ ? I guess one way to check would be to add the timer setting conditions to that block temporarily OR(6) AreaCheck("FW0800") AreaCheck("FW0100") AreaCheck("FW0200") AreaCheck("FW0300") AreaCheck("FW0600") AreaCheck("FW0700") which at least would show you waht was trying to initiate when it fires off 58. Is there any code block you use that uses IncrementGlobal on the LTs? And wow - you were serious when you said you were tailoring things very close to the players responses - you are rivaling Ajantis there, berelinde... that is one heckuva big set of states! Link to comment
Kulyok Posted February 1, 2007 Share Posted February 1, 2007 You'll have to check yor entire script, I'm afraid - it could be *any* block. I assume some variable didn't close. Link to comment
berelinde Posted February 1, 2007 Author Share Posted February 1, 2007 Found something that was a legacy of separating the friendship and romance paths. Might have fixed it, but I'll find out tonight. No, that wasn't it. The only thing that ever set the variable to 58 was this code block. About the only thing I can think of doing is to remove the timer, and have it trigger as soon as the party enters the area. Link to comment
Kulyok Posted February 1, 2007 Share Posted February 1, 2007 The variable sets to 58 *before* the timer has expired(actually, immediately upon setting the timer), so any other script block could have triggeed it. Link to comment
berelinde Posted February 1, 2007 Author Share Posted February 1, 2007 I am not sure I understand you. The part that contains the variable setting shouldn't return true unless the timer is expired. The timer doesn't expire until 2 minutes after it's set, and it shouldn't be set until the party is in Baldur's Gate. Sorry for being incredibly dense, but would you mind adding comments to the script to show me where this is going on, because I just don't see it. Maybe it would help if I did take out the timer. I only have it there because I hate it when you enter an area and get hit with dialogue right away. Link to comment
berelinde Posted February 2, 2007 Author Share Posted February 2, 2007 I've decided to simplify the code. Quite frankly, it isn't important that the PC has had each and every LT up to this point. LT 29 is more of a floater, anyway, and should happen when the PC reenters BG regardless of whether or not she's had LTs 27 and 28. So take out that bit of code and make it simpler. Less things to go wrong. The code becomes IF GlobalGT("B!KnowBhaal","GLOBAL",0) Global("B!LT29","GLOBAL",0) Global("B!GavinRomanceMatch","GLOBAL",1) Global("B!GavinRomanceActive","GLOBAL",2) OR(6) AreaCheck("FW0800") AreaCheck("FW0100") AreaCheck("FW0200") AreaCheck("FW0300") AreaCheck("FW0600") AreaCheck("FW0700") InParty(Myself) THEN RESPONSE #100 SetGlobal("B!LT29","GLOBAL",1) RealSetGlobalTimer("B!LT29Time","GLOBAL",120) //2 min END IF InParty(Myself) Global("B!LT29","GLOBAL",1) RealGlobalTimerExpired("B!LT29Time","GLOBAL") Global("B!GavinRomanceActive","GLOBAL",2) CombatCounter(0) !See([ENEMY]) !StateCheck("B!GAVIN",CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 PlaySong(0) PlaySound("BGAV_S1") SetGlobal("B!LT29","GLOBAL",2) StartDialogNoSet(Player1) END And then I'd use ~Global("B!LT29","GLOBAL",2)~ as the dialogue trigger (and remember to close it after the first line of dialogue). LT 30, at the entrance to the undercity, was already coded like that, since if the pc hasn't gotten all her LTs, it's a little late to do anything about it now. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.