Jump to content

[BGT/NPC project] Dialogue loop


Guest La Marmotte

Recommended Posts

That is my thought too, if others agree. It seems like it matches Kivan's intent, too. As far as i can tell from a talk a long time ago with Thodur, Kivan's timer issue did not touch any other bmod on a BP install, so was fine to implement; a check of SHS shows folks extending regualr dialogue, but i have yet to see anyone use the timer or trigger off of it on either platform for any reason; Checking Coran, to. I think, Domi, you did not intend for him to go elsewhere forever - or did we already fix this along with the WyvernTimers?

Link to comment

Sorry but I don't understand the word 'forevar'. Is it the same thing that forever ?

 

 

I am just not sure. I think that if you open up the file BGMINSC.bcs in NearInfinity, delete those two blocks, press "compile" so your work is saved to the override, and start up the game...

 

It's the first time I use NI. For delete these blocks, have I to decompile the files or export it?

If I want to make a safe copy before change the file, can I just copy the BGMINSC.bcs file, or NI will change over files if I change something in this one?

 

I haven't find exactly the same block than you. Is it this one ?

 

IF

GlobalTimerExpired("Minsc","GLOBAL")

Global("HelpMinsc","GLOBAL",0)

InParty(Myself)

THEN

RESPONSE #100

StartDialogueNoSet(Player1)

END

 

IF

GlobalTimerExpired("Minsc","GLOBAL")

Global("HelpMinsc","GLOBAL",1)

InParty(Myself)

THEN

RESPONSE #100

StartDialogueNoSet(Player1)

END

 

IF

Global("HelpMinsc","GLOBAL",2)

NumTimesTalkedTo(0)

!InParty("Dynaheir")

THEN

RESPONSE #100

Deactivate(Myself)

END

 

IF

Global("HelpMinsc","GLOBAL",2)

NumTimesTalkedTo(0)

InPartyAllowDead("Dynaheir")

THEN

RESPONSE #100

Activate(Myself)

END

Link to comment

La Marmotte, those are the blocks - in this case, Ascension64 made the behaviors of the timers better coded on BGT than in the original game, because of the way BGT deals with recreating BG1 resources. The 4 blocks above are exactly right; all do not matter to your game because you already have Minsc (and by the time you finish your game we will have a corrected version for your next runthrough).

 

The safest way to do this is follow this list:

  1. Find your folder marked "override".
  2. Find the file named "BGMINSC.bcs"
  3. Copy that file, and place it on your desktop as a backup.
  4. Open NI and make sure it is reading your game directory (by finding the right "chitin.key" file).
  5. Look on the left hand side for the folder "BCS"
  6. In that NI folder, find BGMINSC and click on it.
  7. In a few moments, NI will open a panel with the above code displayed. Find those blocks.
  8. Delete those blocks right there on the screen.
  9. At the bottom of the screen, the "COMPILE" button will become active. Click on that button.
  10. After you do that, the "SAVE" button will become active. Click on that.
  11. Now, start up your game and load your save. If we are lucky, the behavior will stop immediately.
  12. Please return here and report whether or not it worked!

Edit: Oh, and the FOREVAR reference is me trying to be funny - it really is "forever". It references the I M Banzored - lv FOREVAR style of internet pseudospeak, about storming out of a community only to come back in a few days or weeks. But it really isn't funny or relevant. I sometimes forget mid-post that this is a world-wide community (ask the bigg or Jastey ??? They have both been very polite when I attempt humor, when what they should be saying is "don't understand - not funny - get to the point!")

Link to comment

WOUHOOOOOOU!!! It work!!! ???

 

I have delete this block and save. The only problem I have had is : Resource no found: S:Sound* -"minsc99", but I think it's normal because I haven't the sound pack of the mod (I don't know if it's too late for installed it).

 

I have load the save where Minsc can't walks, and the one where he says the same thing every second, and there are no problem anymore!

 

I will test it for a longer time, to be sure it's really ok, but I almost sure it is. I just hope that I haven't delete to much script so Minsc can no longer talk! :p

 

 

Thank you so much to everybody who have help me! ^^

Link to comment

Oh, thank you - you have solved a big headache for us farther down the road, and uncovered a bug that will show up for lots of people. And you helped us fix it!

 

I am still waiting for other input before making a decision to delete the timers entirely.

Minsc will still do everything he is supposed to - all you did was take out the two triggers that fire his "Hey, I want to go get Dynaheir and if you don't I will leave now" and "Hey, you didn't listen - I am leaving now."

 

 

And the missing resource is the Sounds - harmless! I have never tried these on a BGT install. I think you are safest at this point not adding them in.

 

I am within 5 hours of a new internal release, so if there is last minute input on removing these timers, now is the time...

Link to comment

OK, updating internal version with the removal of timers.

 

The code which changes timer actions now includes the following:

 

bg1npc.tp2

/* Disabling Coran's old leaving timer, to be replaced by X#CORWYV.BAF */
COPY_EXISTING ~%CORAN_BCS%.bcs~ ~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~GlobalTimerExpired("Coran","GLOBAL")%whitespace%InParty(Myself)%whitespace%!Dead("wyvern")~ ~GlobalTimerExpired("Coran","GLOBAL") InParty(Myself) !Dead("wyvern") Global("X#CoranWyvernDisable","GLOBAL",1)~
 COMPILE_BAF_TO_BCS
BUT_ONLY_IF_IT_CHANGES 

/* Fixing Coran's Wyvern script */
EXTEND_TOP ~%CORAN_BCS%.bcs~ ~BG1NPC/Core/BAF/X#CORWYV.BAF~
 EVALUATE_BUFFER

/* removing Kivan's timer to leave party */
COPY_EXISTING ~%KIVAN_BCS%.bcs~ ~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~GlobalTimerExpired("Kivan","GLOBAL")~ ~False()~
 COMPILE_BAF_TO_BCS
BUT_ONLY_IF_IT_CHANGES

/* removing Minsc's timer to leave party */
COPY_EXISTING ~%MINSC_BCS%.bcs~ ~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~GlobalTimerExpired("Minsc","GLOBAL")~ ~False()~
 COMPILE_BAF_TO_BCS
BUT_ONLY_IF_IT_CHANGES

 

 

Falsing out the dialogues, for cleaning the JFile and making sure nothing interferes with PIDs,

 

In BGT

BG1NPC\core\dlg\x#jfix_bgt.d

/* Adding Globals to Coran's Wyvern Misadventure */
ADD_STATE_TRIGGER CORANJ 6 ~Global("X#CoranWyvernWarning1","GLOBAL",1)~
ADD_TRANS_ACTION  CORANJ BEGIN 6 END BEGIN END ~SetGlobal("X#CoranWyvernWarning1","GLOBAL",2)~
ADD_STATE_TRIGGER CORANJ 5 ~Global("X#CoranWyvernWarning2","GLOBAL",1)~
ADD_TRANS_ACTION  CORANJ BEGIN 5 END BEGIN END ~SetGlobal("X#CoranWyvernWarning2","GLOBAL",2)~
ADD_STATE_TRIGGER AJANTJ 0 ~Global("AjantisLeave","GLOBAL",0)~

/* Cleaning J's of not conditionals */
REPLACE_STATE_TRIGGER ALORAJ 0 ~Global("X#JCleanAlora","GLOBAL",1)~
REPLACE_STATE_TRIGGER BRANWJ 0 ~Global("X#JCleanBranwen","GLOBAL",1)~
REPLACE_STATE_TRIGGER CORANJ 8 ~Global("X#JCleanCoran","GLOBAL",1)~
REPLACE_STATE_TRIGGER DYNAJ 4 ~Global("X#JCleanDynaheir","GLOBAL",1)~ 5
REPLACE_STATE_TRIGGER EDWINJ 190 ~Global("X#JCleanEdwin","GLOBAL",1)~
REPLACE_STATE_TRIGGER ELDOTJ 12 ~Global("X#JCleanEldoth","GLOBAL",1)~ 13
REPLACE_STATE_TRIGGER FALDOJ 0 ~Global("X#JCleanFaldorn","GLOBAL",1)~
REPLACE_STATE_TRIGGER GARRIJ 0 ~Global("X#JCleanGarrick","GLOBAL",1)~
REPLACE_STATE_TRIGGER JAHEIRAJ 533 ~Global("X#JCleanJaheira","GLOBAL",1)~ 534
REPLACE_STATE_TRIGGER KAGAIJ 2 ~Global("X#JCleanKagain","GLOBAL",1)~
REPLACE_STATE_TRIGGER KHALIJ 2 ~Global("X#JCleanKhalid","GLOBAL",1)~ 3
REPLACE_STATE_TRIGGER KIVANJ 0 ~Global("X#JCleanKivan","GLOBAL",1)~ 1 // disabling bandits timer expired talk
REPLACE_STATE_TRIGGER MINSCJ 243 ~Global("X#JCleanMinsc","GLOBAL",1)~ 244
REPLACE_STATE_TRIGGER MONTAJ 2 ~Global("X#JCleanMontaron","GLOBAL",1)~ 3
REPLACE_STATE_TRIGGER QUAYLJ 0 ~Global("X#JCleanQuayle","GLOBAL",1)~
REPLACE_STATE_TRIGGER SAFANJ 0 ~Global("X#JCleanSafana","GLOBAL",1)~
REPLACE_STATE_TRIGGER SHARTJ 2 ~Global("X#JCleanSharteel","GLOBAL",1)~
REPLACE_STATE_TRIGGER SKIEJ 2 ~Global("X#JCleanSkie","GLOBAL",1)~ 3
REPLACE_STATE_TRIGGER TIAXJ 0 ~Global("X#JCleanTiax","GLOBAL",1)~
REPLACE_STATE_TRIGGER VICONIJ 183 ~Global("X#JCleanViconia","GLOBAL",1)~
REPLACE_STATE_TRIGGER XANJ 0 ~Global("X#JCleanXan","GLOBAL",1)~
REPLACE_STATE_TRIGGER XZARJ 5 ~Global("X#JCleanXzar","GLOBAL",1)~ 6
REPLACE_STATE_TRIGGER YESLIJ 0 ~Global("X#JCleanYeslick","GLOBAL",1)~
REPLACE_STATE_TRIGGER IMOEN2J 111 ~Global("X#JCleanImoen","GLOBAL",1)~

 

In Tutu

BG1NPC\core\dlg\x#jfix_tutu.d

/* Adding Globals to Coran's Wyvern Misadventure: */
ADD_STATE_TRIGGER ~_CORANJ~ 6 ~Global("X#CoranWyvernWarning1","GLOBAL",1)~
ADD_TRANS_ACTION  ~_CORANJ~ BEGIN 6 END BEGIN END ~SetGlobal("X#CoranWyvernWarning1","GLOBAL",2)~
ADD_STATE_TRIGGER ~_CORANJ~ 5 ~Global("X#CoranWyvernWarning2","GLOBAL",1)~
ADD_TRANS_ACTION  ~_CORANJ~ BEGIN 5 END BEGIN END ~SetGlobal("X#CoranWyvernWarning2","GLOBAL",2)~

/* Cleaning J's of not conditionals */
REPLACE_STATE_TRIGGER ~_AJANTJ~ 0 ~Global("AjantisLeave","GLOBAL",0) HappinessLT(Myself,0)~
REPLACE_STATE_TRIGGER ~_AJANTJ~ 1 ~Global("X#JCleanAjantis","GLOBAL",1)~
REPLACE_STATE_TRIGGER ~_ALORAJ~ 0 ~Global("X#JCleanAlora","GLOBAL",1)~ 1 2
REPLACE_STATE_TRIGGER ~_BRANWJ~ 0 ~Global("X#JCleanBranwen","GLOBAL",1)~ 1
REPLACE_STATE_TRIGGER ~_CORANJ~ 7 ~Global("X#JCleanCoran","GLOBAL",1)~ 8
REPLACE_STATE_TRIGGER ~_DYNAHJ~ 0 ~Global("X#JCleanDynaheir","GLOBAL",1)~ 1 2 3 4 5 6 7 8 9 10 11
REPLACE_STATE_TRIGGER ~_EDWINJ~ 1 ~Global("X#JCleanEdwin","GLOBAL",1)~ 2 3
REPLACE_STATE_TRIGGER ~_ELDOTJ~ 12 ~Global("X#JCleanEldoth","GLOBAL",1)~ 13 14 15
REPLACE_STATE_TRIGGER ~_FALDOJ~ 0 ~Global("X#JCleanFaldorn","GLOBAL",1)~ 1
REPLACE_STATE_TRIGGER ~_GARRIJ~ 0 ~Global("X#JCleanGarrick","GLOBAL",1)~ 1
REPLACE_STATE_TRIGGER ~_JAHEIJ~ 0 ~Global("X#JCleanJaheira","GLOBAL",1)~ 1 2 3
REPLACE_STATE_TRIGGER ~_KAGAIJ~ 2 ~Global("X#JCleanKagain","GLOBAL",1)~ 3
REPLACE_STATE_TRIGGER ~_KHALIJ~ 0 ~Global("X#JCleanKhalid","GLOBAL",1)~ 1 2 3
REPLACE_STATE_TRIGGER ~_KIVANJ~ 0 ~Global("X#JCleanKivan","GLOBAL",1)~ 1// zeroing out no condition leave dialogue
REPLACE_STATE_TRIGGER ~_MINSCJ~ 2 ~Global("X#JCleanMinsc","GLOBAL",1)~ 3 4 5 6 7
REPLACE_STATE_TRIGGER ~_MONTAJ~ 0 ~Global("X#JCleanMontaron","GLOBAL",1)~ 1 2 3 4
REPLACE_STATE_TRIGGER ~_QUAYLJ~ 0 ~Global("X#JCleanQuayle","GLOBAL",1)~ 1
REPLACE_STATE_TRIGGER ~_SAFANJ~ 0 ~Global("X#JCleanSafana","GLOBAL",1)~ 1
REPLACE_STATE_TRIGGER ~_SHARTJ~ 2 ~Global("X#JCleanSharteel","GLOBAL",1)~ 3
REPLACE_STATE_TRIGGER ~_SKIEJ~ 0 ~Global("X#JCleanSkie","GLOBAL",1)~ 1 2 3
REPLACE_STATE_TRIGGER ~_TIAXJ~ 0 ~Global("X#JCleanTiax","GLOBAL",1)~ 1
REPLACE_STATE_TRIGGER ~_VICONJ~ 0 ~Global("X#JCleanViconia","GLOBAL",1)~ 1
REPLACE_STATE_TRIGGER ~_XANJ~ 0 ~Global("X#JCleanXan","GLOBAL",1)~ 1
REPLACE_STATE_TRIGGER ~_XZARJ~ 3 ~Global("X#JCleanXzar","GLOBAL",1)~ 4 5 6
REPLACE_STATE_TRIGGER ~_YESLIJ~ 0 ~Global("X#JCleanYeslick","GLOBAL",1)~ 1
Link to comment

Archived

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

×
×
  • Create New...