I know there are a bunch of tutorials on this, and berelinde has written some of them, but I am going to throw out a couple of things that look like "think" problems rather than "format" problems. "Think" problems are an area I am very familiar with - it takes a good deal of time to get a new thought into my brain in a functionable way
OK, some basics: what you are looking for here is something called a CHAIN. It is designed to do just what you are saying - taking the byplay of a few NPCs and sort of "automatically building" all the in-between states. It is a powerful tool, but can be confusing.
In a traditional structure, you have to stick with a variant of what you have posted.
then when your dialoge file follows the link to MWCONAndia10 (NOT when she is talked to - you have this written as a reply state, called directly from another state), if the creature with DV "Ariena" is not invisible, is within a certain number of squares, etc., the reply leading to MWCONAndia11 will show up as a possibility.
It looks like you have set this up expecting the REPLY functions to be part of the
talk, though. Here is what you would see:
(nonjoined): bla bla.
Note the reversal - these are evaluated from the bottom up, so last in order is first evaluated.
is a CHAIN construction, and does not work within a traditionally constructed file.
Minsc (if valid and present): ~jabb jabba 3 response if Ariena is in party and he is in party~
I would suggest grabbing some existing mods that use CHAIN and look at how they are constructed, in addition to hitting the tutorials again.
I would post code examples, but it isn't cool to post other folks stuff without permission; so I have an example here that can give you a start, pulled from work done by berelinde and myself. These are snippets from a non-joinable
BEGIN X#LP1REP
/* SAM */
/* Initial Meeting */
CHAIN IF ~NumTimesTalkedTo(0) Global("X#LakeP1RepTalk","GLOBAL",0)~ THEN ~X#LP1REP~ X#Troubador1Start
@0
END
++ @1 EXTERN ~X#LP1REP~ X#Troubador1OfferInterested
++ @2 EXTERN ~X#LP1REP~ X#Troubador1OfferInterested
+ ~OR(2) InParty("garrick") InParty("eldoth")~ + @3 EXTERN ~X#LP1REP~ X#Troubador1OwnBard
++ @4 EXTERN ~X#LP1REP~ X#Troubador1OfferHearMeOut
++ @5 EXTERN ~X#LP1REP~ X#Troubador1OfferDeclined
/* Sales pitch - NPCs interject here and meeting globals get set here */
CHAIN ~X#LP1REP~ X#Troubador1OfferInterested
@16
== ~_BSAFAN~ IF ~InParty("safana") InMyArea("safana") !StateCheck("safana",CD_STATE_NOTVALID) Global("X#SafanaRep","GLOBAL",0)~ THEN @17 DO ~IncrementGlobal("X#SafanaRep","GLOBAL",1)~
== ~_BSAFAN~ IF ~InParty("safana") InMyArea("safana") !StateCheck("safana",CD_STATE_NOTVALID) Global("X#SafanaRep","GLOBAL",1)~ THEN @18 DO ~IncrementGlobal("X#SafanaRep","GLOBAL",1)~
== ~_BSAFAN~ IF ~InParty("safana") InMyArea("safana") !StateCheck("safana",CD_STATE_NOTVALID) Global("X#SafanaRep","GLOBAL",2)~ THEN @19 DO ~IncrementGlobal("X#SafanaRep","GLOBAL",1)~
== ~_BJAHEI~ IF ~InParty("jaheira") InMyArea("jaheira") !StateCheck("jaheira",CD_STATE_NOTVALID) Global("X#JaheiraRep","GLOBAL",0)~ THEN @20 DO ~IncrementGlobal("X#JaheiraRep","GLOBAL",1)~
== ~_BJAHEI~ IF ~InParty("jaheira") InMyArea("jaheira") !StateCheck("jaheira",CD_STATE_NOTVALID) Global("X#JaheiraRep","GLOBAL",1)~ THEN @21 DO ~IncrementGlobal("X#JaheiraRep","GLOBAL",1)~
== ~_BJAHEI~ IF ~InParty("jaheira") InMyArea("jaheira") !StateCheck("jaheira",CD_STATE_NOTVALID) Global("X#JaheiraRep","GLOBAL",2)~ THEN @22 DO ~IncrementGlobal("X#JaheiraRep","GLOBAL",1)~
== ~_BKHALI~ IF ~InParty("khalid") InMyArea("khalid") !StateCheck("khalid",CD_STATE_NOTVALID) Global("X#KhalidRep","GLOBAL",0)~ THEN @23 DO ~IncrementGlobal("X#KhalidRep","GLOBAL",1)~
== ~_BKHALI~ IF ~InParty("khalid") InMyArea("khalid") !StateCheck("khalid",CD_STATE_NOTVALID) Global("X#KhalidRep","GLOBAL",1)~ THEN @24 DO ~IncrementGlobal("X#KhalidRep","GLOBAL",1)~
== ~_BKHALI~ IF ~InParty("khalid") InMyArea("khalid") !StateCheck("khalid",CD_STATE_NOTVALID) Global("X#KhalidRep","GLOBAL",2)~ THEN @25 DO ~IncrementGlobal("X#KhalidRep","GLOBAL",1)~
== ~_BMONTA~ IF ~InParty("montaron") InMyArea("montaron") !StateCheck("montaron",CD_STATE_NOTVALID) Global("X#MontaronRep","GLOBAL",0)~ THEN @26 DO ~IncrementGlobal("X#MontaronRep","GLOBAL",1)~
== ~_BMONTA~ IF ~InParty("montaron") InMyArea("montaron") !StateCheck("montaron",CD_STATE_NOTVALID) Global("X#MontaronRep","GLOBAL",1)~ THEN @27 DO ~IncrementGlobal("X#MontaronRep","GLOBAL",1)~
== ~_BMONTA~ IF ~InParty("montaron") InMyArea("montaron") !StateCheck("montaron",CD_STATE_NOTVALID) Global("X#MontaronRep","GLOBAL",2)~ THEN @28 DO ~IncrementGlobal("X#MontaronRep","GLOBAL",1)~
== ~_BXZAR~ IF ~InParty("xzar") InMyArea("xzar") !StateCheck("xzar",CD_STATE_NOTVALID) Global("X#XzarRep","GLOBAL",0)~ THEN @29 DO ~IncrementGlobal("X#XzarRep","GLOBAL",1)~
== ~_BXZAR~ IF ~InParty("xzar") InMyArea("xzar") !StateCheck("xzar",CD_STATE_NOTVALID) Global("X#XzarRep","GLOBAL",1)~ THEN @30 DO ~IncrementGlobal("X#XzarRep","GLOBAL",1)~
== ~_BXZAR~ IF ~InParty("xzar") InMyArea("xzar") !StateCheck("xzar",CD_STATE_NOTVALID) Global("X#XzarRep","GLOBAL",2)~ THEN @31 DO ~IncrementGlobal("X#XzarRep","GLOBAL",1)~
== ~_BGARRI~ IF ~InParty("garrick") InMyArea("garrick") !StateCheck("garrick",CD_STATE_NOTVALID) Global("X#GarrickRep","GLOBAL",0)~ THEN @32 DO ~IncrementGlobal("X#GarrickRep","GLOBAL",1)~
== ~_BGARRI~ IF ~InParty("garrick") InMyArea("garrick") !StateCheck("garrick",CD_STATE_NOTVALID) Global("X#GarrickRep","GLOBAL",1)~ THEN @33 DO ~IncrementGlobal("X#GarrickRep","GLOBAL",1)~
== ~_BGARRI~ IF ~InParty("garrick") InMyArea("garrick") !StateCheck("garrick",CD_STATE_NOTVALID) Global("X#GarrickRep","GLOBAL",2)~ THEN @34
== ~X#LP1REP~ IF ~InParty("garrick") InMyArea("garrick") !StateCheck("garrick",CD_STATE_NOTVALID) Global("X#GarrickRep","GLOBAL",2)~ THEN @35 DO ~IncrementGlobal("X#GarrickRep","GLOBAL",1)~
== ~_BELDOT~ IF ~InParty("eldoth") InMyArea("eldoth") !StateCheck("eldoth",CD_STATE_NOTVALID) Global("X#EldothRep","GLOBAL",0)~ THEN @36 DO ~IncrementGlobal("X#EldothRep","GLOBAL",1)~
== ~_BELDOT~ IF ~InParty("eldoth") InMyArea("eldoth") !StateCheck("eldoth",CD_STATE_NOTVALID) Global("X#EldothRep","GLOBAL",1)~ THEN @37 DO ~IncrementGlobal("X#EldothRep","GLOBAL",1)~
== ~_BELDOT~ IF ~InParty("eldoth") InMyArea("eldoth") !StateCheck("eldoth",CD_STATE_NOTVALID) Global("X#EldothRep","GLOBAL",2)~ THEN @38 DO ~IncrementGlobal("X#EldothRep","GLOBAL",1)~
== ~_BAJANT~ IF ~InParty("ajantis") InMyArea("ajantis") !StateCheck("ajantis",CD_STATE_NOTVALID) Global("X#AjantisRep","GLOBAL",0)~ THEN @39 DO ~IncrementGlobal("X#AjantisRep","GLOBAL",1)~
== ~_BAJANT~ IF ~InParty("ajantis") InMyArea("ajantis") !StateCheck("ajantis",CD_STATE_NOTVALID) Global("X#AjantisRep","GLOBAL",1)~ THEN @40 DO ~IncrementGlobal("X#AjantisRep","GLOBAL",1)~
== ~_BAJANT~ IF ~InParty("ajantis") InMyArea("ajantis") !StateCheck("ajantis",CD_STATE_NOTVALID) Global("X#AjantisRep","GLOBAL",2)~ THEN @41 DO ~IncrementGlobal("X#AjantisRep","GLOBAL",1)~
== ~_BIMOEN~ IF ~InParty("imoen") InMyArea("imoen") !StateCheck("imoen",CD_STATE_NOTVALID) Global("X#ImoenRep","GLOBAL",0)~ THEN @42 DO ~IncrementGlobal("X#ImoenRep","GLOBAL",1)~
== ~_BIMOEN~ IF ~InParty("imoen") InMyArea("imoen") !StateCheck("imoen",CD_STATE_NOTVALID) Global("X#ImoenRep","GLOBAL",1)~ THEN @43 DO ~IncrementGlobal("X#ImoenRep","GLOBAL",1)~
== ~_BIMOEN~ IF ~InParty("imoen") InMyArea("imoen") !StateCheck("imoen",CD_STATE_NOTVALID) Global("X#ImoenRep","GLOBAL",2)~ THEN @44 DO ~IncrementGlobal("X#ImoenRep","GLOBAL",1)~
== ~_BFALDO~ IF ~InParty("faldorn") InMyArea("faldorn") !StateCheck("faldorn",CD_STATE_NOTVALID) Global("X#FaldornRep","GLOBAL",0)~ THEN @45 DO ~IncrementGlobal("X#FaldornRep","GLOBAL",1)~
== ~_BFALDO~ IF ~InParty("faldorn") InMyArea("faldorn") !StateCheck("faldorn",CD_STATE_NOTVALID) Global("X#FaldornRep","GLOBAL",1)~ THEN @46 DO ~IncrementGlobal("X#FaldornRep","GLOBAL",1)~
== ~_BFALDO~ IF ~InParty("faldorn") InMyArea("faldorn") !StateCheck("faldorn",CD_STATE_NOTVALID) Global("X#FaldornRep","GLOBAL",2)~ THEN @47 DO ~IncrementGlobal("X#FaldornRep","GLOBAL",1)~
== ~_BXANNN~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID) Global("X#XanRep","GLOBAL",0)~ THEN @48 DO ~IncrementGlobal("X#XanRep","GLOBAL",1)~
== ~_BXANNN~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID) Global("X#XanRep","GLOBAL",1)~ THEN @49 DO ~IncrementGlobal("X#XanRep","GLOBAL",1)~
== ~_BXANNN~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID) Global("X#XanRep","GLOBAL",2)~ THEN @50 DO ~IncrementGlobal("X#XanRep","GLOBAL",1)~
== ~_BKAGAI~ IF ~InParty("kagain") InMyArea("kagain") !StateCheck("kagain",CD_STATE_NOTVALID) Global("X#KagainRep","GLOBAL",0)~ THEN @51 DO ~IncrementGlobal("X#KagainRep","GLOBAL",1)~
== ~_BKAGAI~ IF ~InParty("kagain") InMyArea("kagain") !StateCheck("kagain",CD_STATE_NOTVALID) Global("X#KagainRep","GLOBAL",1)~ THEN @52 DO ~IncrementGlobal("X#KagainRep","GLOBAL",1)~
== ~_BKAGAI~ IF ~InParty("kagain") InMyArea("kagain") !StateCheck("kagain",CD_STATE_NOTVALID) Global("X#KagainRep","GLOBAL",2)~ THEN @53 DO ~IncrementGlobal("X#KagainRep","GLOBAL",1)~
== ~_BKIVAN~ IF ~InParty("kivan") InMyArea("kivan") !StateCheck("kivan",CD_STATE_NOTVALID) Global("X#KivanRep","GLOBAL",0)~ THEN @54 DO ~IncrementGlobal("X#KivanRep","GLOBAL",1)~
== ~_BKIVAN~ IF ~InParty("kivan") InMyArea("kivan") !StateCheck("kivan",CD_STATE_NOTVALID) Global("X#KivanRep","GLOBAL",1)~ THEN @55 DO ~IncrementGlobal("X#KivanRep","GLOBAL",1)~
== ~_BKIVAN~ IF ~InParty("kivan") InMyArea("kivan") !StateCheck("kivan",CD_STATE_NOTVALID) Global("X#KivanRep","GLOBAL",2)~ THEN @56 DO ~IncrementGlobal("X#KivanRep","GLOBAL",1)~
== ~_BYESLI~ IF ~InParty("yeslick") InMyArea("yeslick") !StateCheck("yeslick",CD_STATE_NOTVALID) Global("X#YeslickRep","GLOBAL",0)~ THEN @57 DO ~IncrementGlobal("X#YeslickRep","GLOBAL",1)~
== ~_BYESLI~ IF ~InParty("yeslick") InMyArea("yeslick") !StateCheck("yeslick",CD_STATE_NOTVALID) Global("X#YeslickRep","GLOBAL",1)~ THEN @58 DO ~IncrementGlobal("X#YeslickRep","GLOBAL",1)~
== ~_BYESLI~ IF ~InParty("yeslick") InMyArea("yeslick") !StateCheck("yeslick",CD_STATE_NOTVALID) Global("X#YeslickRep","GLOBAL",2)~ THEN @59 DO ~IncrementGlobal("X#YeslickRep","GLOBAL",1)~
== ~_BQUAYL~ IF ~InParty("quayle") InMyArea("quayle") !StateCheck("quayle",CD_STATE_NOTVALID) Global("X#QuayleRep","GLOBAL",0)~ THEN @60 DO ~IncrementGlobal("X#QuayleRep","GLOBAL",1)~
== ~_BQUAYL~ IF ~InParty("quayle") InMyArea("quayle") !StateCheck("quayle",CD_STATE_NOTVALID) Global("X#QuayleRep","GLOBAL",1)~ THEN @61 DO ~IncrementGlobal("X#QuayleRep","GLOBAL",1)~
== ~_BQUAYL~ IF ~InParty("quayle") InMyArea("quayle") !StateCheck("quayle",CD_STATE_NOTVALID) Global("X#QuayleRep","GLOBAL",2)~ THEN @62 DO ~IncrementGlobal("X#QuayleRep","GLOBAL",1)~
== ~_BSKIE~ IF ~InParty("skie") InMyArea("skie") !StateCheck("skie",CD_STATE_NOTVALID) Global("X#SkieRep","GLOBAL",0)~ THEN @63 DO ~IncrementGlobal("X#SkieRep","GLOBAL",1)~
== ~_BSKIE~ IF ~InParty("skie") InMyArea("skie") !StateCheck("skie",CD_STATE_NOTVALID) Global("X#SkieRep","GLOBAL",1)~ THEN @64 DO ~IncrementGlobal("X#SkieRep","GLOBAL",1)~
== ~_BSKIE~ IF ~InParty("skie") InMyArea("skie") !StateCheck("skie",CD_STATE_NOTVALID) Global("X#SkieRep","GLOBAL",2)~ THEN @65 DO ~IncrementGlobal("X#SkieRep","GLOBAL",1)~
== ~_BCORAN~ IF ~InParty("coran") InMyArea("coran") !StateCheck("coran",CD_STATE_NOTVALID) Global("X#CoranRep","GLOBAL",0)~ THEN @66 DO ~IncrementGlobal("X#CoranRep","GLOBAL",1)~
== ~_BCORAN~ IF ~InParty("coran") InMyArea("coran") !StateCheck("coran",CD_STATE_NOTVALID) Global("X#CoranRep","GLOBAL",1)~ THEN @67 DO ~IncrementGlobal("X#CoranRep","GLOBAL",1)~
== ~_BCORAN~ IF ~InParty("coran") InMyArea("coran") !StateCheck("coran",CD_STATE_NOTVALID) Global("X#CoranRep","GLOBAL",2)~ THEN @68 DO ~IncrementGlobal("X#CoranRep","GLOBAL",1)~
== ~_BMINSC~ IF ~InParty("minsc") InMyArea("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) Global("X#MinscRep","GLOBAL",0)~ THEN @69 DO ~IncrementGlobal("X#MinscRep","GLOBAL",1)~
== ~_BMINSC~ IF ~InParty("minsc") InMyArea("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) Global("X#MinscRep","GLOBAL",1)~ THEN @70 DO ~IncrementGlobal("X#MinscRep","GLOBAL",1)~
== ~_BMINSC~ IF ~InParty("minsc") InMyArea("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) Global("X#MinscRep","GLOBAL",2)~ THEN @71 DO ~IncrementGlobal("X#MinscRep","GLOBAL",1)~
== ~_BDYNAH~ IF ~InParty("dynaheir") InMyArea("dynaheir") !StateCheck("dynaheir",CD_STATE_NOTVALID) InParty("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) Global("X#DynaMinscRep","GLOBAL",0)~ THEN @72 DO ~IncrementGlobal("X#DynaMinscRep","GLOBAL",1)~
== ~_BDYNAH~ IF ~InParty("dynaheir") InMyArea("dynaheir") !StateCheck("dynaheir",CD_STATE_NOTVALID) InParty("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) Global("X#DynaMinscRep","GLOBAL",1)~ THEN @73 DO ~IncrementGlobal("X#DynaMinscRep","GLOBAL",1)~
== ~_BDYNAH~ IF ~InParty("dynaheir") InMyArea("dynaheir") !StateCheck("dynaheir",CD_STATE_NOTVALID) InParty("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) Global("X#DynaMinscRep","GLOBAL",2)~ THEN @74 DO ~IncrementGlobal("X#DynaMinscRep","GLOBAL",1)~
== ~_BDYNAH~ IF ~!InParty("minsc") InMyArea("minsc") InParty("dynaheir") InMyArea("dynaheir") !StateCheck("dynaheir",CD_STATE_NOTVALID) Global("X#DynaheirRep","GLOBAL",0)~ THEN @75 DO ~IncrementGlobal("X#DynaheirRep","GLOBAL",1)~
== ~_BDYNAH~ IF ~!InParty("minsc") InMyArea("minsc") InParty("dynaheir") InMyArea("dynaheir") !StateCheck("dynaheir",CD_STATE_NOTVALID) Global("X#DynaheirRep","GLOBAL",1)~ THEN @76 DO ~IncrementGlobal("X#DynaheirRep","GLOBAL",1)~
== ~_BDYNAH~ IF ~!InParty("minsc") InMyArea("minsc") InParty("dynaheir") InMyArea("dynaheir") !StateCheck("dynaheir",CD_STATE_NOTVALID) Global("X#DynaheirRep","GLOBAL",2)~ THEN @74 DO ~IncrementGlobal("X#DynaheirRep","GLOBAL",1)~
== ~_BEDWIN~ IF ~InParty("edwin") InMyArea("edwin") !StateCheck("edwin",CD_STATE_NOTVALID) Global("X#EdwinRep","GLOBAL",0)~ THEN @77 DO ~IncrementGlobal("X#EdwinRep","GLOBAL",1)~
== ~_BEDWIN~ IF ~InParty("edwin") InMyArea("edwin") !StateCheck("edwin",CD_STATE_NOTVALID) Global("X#EdwinRep","GLOBAL",1)~ THEN @78 DO ~IncrementGlobal("X#EdwinRep","GLOBAL",1)~
== ~_BEDWIN~ IF ~InParty("edwin") InMyArea("edwin") !StateCheck("edwin",CD_STATE_NOTVALID) Global("X#EdwinRep","GLOBAL",2)~ THEN @79 DO ~IncrementGlobal("X#EdwinRep","GLOBAL",1)~
== ~_BBRANW~ IF ~InParty("branwen") InMyArea("branwen") !StateCheck("branwen",CD_STATE_NOTVALID) Global("X#BranwenRep","GLOBAL",0)~ THEN @80 DO ~IncrementGlobal("X#BranwenRep","GLOBAL",1)~
== ~_BBRANW~ IF ~InParty("branwen") InMyArea("branwen") !StateCheck("branwen",CD_STATE_NOTVALID) Global("X#BranwenRep","GLOBAL",1)~ THEN @81 DO ~IncrementGlobal("X#BranwenRep","GLOBAL",1)~
== ~_BBRANW~ IF ~InParty("branwen") InMyArea("branwen") !StateCheck("branwen",CD_STATE_NOTVALID) Global("X#BranwenRep","GLOBAL",2)~ THEN @82 DO ~IncrementGlobal("X#BranwenRep","GLOBAL",1)~
== ~_BTIAX~ IF ~InParty("tiax") InMyArea("tiax") !StateCheck("tiax",CD_STATE_NOTVALID) Global("X#TiaxRep","GLOBAL",0)~ THEN @83 DO ~IncrementGlobal("X#TiaxRep","GLOBAL",1)~
== ~_BTIAX~ IF ~InParty("tiax") InMyArea("tiax") !StateCheck("tiax",CD_STATE_NOTVALID) Global("X#TiaxRep","GLOBAL",1)~ THEN @84 DO ~IncrementGlobal("X#TiaxRep","GLOBAL",1)~
== ~_BTIAX~ IF ~InParty("tiax") InMyArea("tiax") !StateCheck("tiax",CD_STATE_NOTVALID) Global("X#TiaxRep","GLOBAL",2)~ THEN @85 DO ~IncrementGlobal("X#TiaxRep","GLOBAL",1)~
== ~_BVICON~ IF ~InParty("viconia") InMyArea("viconia") !StateCheck("viconia",CD_STATE_NOTVALID) Global("X#ViconiaRep","GLOBAL",0)~ THEN @86 DO ~IncrementGlobal("X#ViconiaRep","GLOBAL",1)~
== ~_BVICON~ IF ~InParty("viconia") InMyArea("viconia") !StateCheck("viconia",CD_STATE_NOTVALID) Global("X#ViconiaRep","GLOBAL",1)~ THEN @87 DO ~IncrementGlobal("X#ViconiaRep","GLOBAL",1)~
== ~_BVICON~ IF ~InParty("viconia") InMyArea("viconia") !StateCheck("viconia",CD_STATE_NOTVALID) Global("X#ViconiaRep","GLOBAL",2)~ THEN @88 DO ~IncrementGlobal("X#ViconiaRep","GLOBAL",1)~
== ~_BSHART~ IF ~InParty("sharteel") InMyArea("sharteel") !StateCheck("sharteel",CD_STATE_NOTVALID) Global("X#SharTeelRep","GLOBAL",0)~ THEN @89 DO ~IncrementGlobal("X#SharTeelRep","GLOBAL",1)~
== ~_BSHART~ IF ~InParty("sharteel") InMyArea("sharteel") !StateCheck("sharteel",CD_STATE_NOTVALID) Global("X#SharTeelRep","GLOBAL",1)~ THEN @90 DO ~IncrementGlobal("X#SharTeelRep","GLOBAL",1)~
== ~_BSHART~ IF ~InParty("sharteel") InMyArea("sharteel") !StateCheck("sharteel",CD_STATE_NOTVALID) Global("X#SharTeelRep","GLOBAL",2)~ THEN @91 DO ~IncrementGlobal("X#SharTeelRep","GLOBAL",1)~
== ~_BALORA~ IF ~InParty("alora") InMyArea("alora") !StateCheck("alora",CD_STATE_NOTVALID) Global("X#AloraRep","GLOBAL",0)~ THEN @92 DO ~IncrementGlobal("X#AloraRep","GLOBAL",1)~
== ~_BALORA~ IF ~InParty("alora") InMyArea("alora") !StateCheck("alora",CD_STATE_NOTVALID) Global("X#AloraRep","GLOBAL",1)~ THEN @93 DO ~IncrementGlobal("X#AloraRep","GLOBAL",1)~
== ~_BALORA~ IF ~InParty("alora") InMyArea("alora") !StateCheck("alora",CD_STATE_NOTVALID) Global("X#AloraRep","GLOBAL",2)~ THEN @94 DO ~IncrementGlobal("X#AloraRep","GLOBAL",1)~
== ~X#LP1REP~ @95
END
IF ~ReputationGT(Player1,10)~ THEN REPLY @96 DO ~SetGlobal("X#TroubadorRep","GLOBAL",1) SetGlobal("X#LakeP1RepTalk","GLOBAL",1)~ EXTERN ~X#LP1REP~ X#Troubador1WhyBadGood
IF ~ReputationLT(Player1,11)~ THEN REPLY @96 DO ~SetGlobal("X#TroubadorRep","GLOBAL",1) SetGlobal("X#LakeP1RepTalk","GLOBAL",1)~ EXTERN ~X#LP1REP~ X#Troubador1WhyBadEvil
IF ~~ THEN REPLY @97 DO ~SetGlobal("X#TroubadorRep","GLOBAL",1) SetGlobal("X#LakeP1RepTalk","GLOBAL",1) IncrementGlobal("X#UseTroubadorRep","GLOBAL",1)~ EXTERN ~X#LP1REP~ X#Troubador1MakeBad
IF ~Class(Player1,PALADIN_ALL)~ THEN REPLY @98 DO ~SetGlobal("X#TroubadorRep","GLOBAL",1) SetGlobal("X#LakeP1RepTalk","GLOBAL",1)~ EXIT
IF ~Class(Player1,THIEF_ALL)~ THEN REPLY @99 DO ~SetGlobal("X#TroubadorRep","GLOBAL",1) SetGlobal("X#LakeP1RepTalk","GLOBAL",1)~ EXIT
IF ~GlobalGT("X#TroubadorRep","GLOBAL",0) GlobalGT("X#LakeP1RepTalk","GLOBAL",0)~ THEN REPLY @100 EXTERN ~X#LP1REP~ X#Troubador1RepAlready
The second example is an extreme usage. Each and every
has three successive replies, different for each of the first three tmes this nonJoinable
is visited. So visiting the
with different party members or the same party members, the conversation is slightly different each time, and reflects that some party members have been in conversation with him before. Plus, replies by the PC reflect what has happened before.
This kind of extreme usage is not usual; but explains why CHAIN is useful - trying to manually script out that many independednt states manually would take (literally) months of work and playtesting to accomplish for most of us. With a framework in place, CHAIN canbe used to simplify such undertakings.