Hey, the bigg, not necessarily - in fact, I say "don't do it!"
It would be better to leave this territory uncharted, if it does not work that way now. We could just change the docs, and say "does not work like INTERJECT". It would be far better to say "don't do this", then create new structures that will confuse and mislead people, when we already have clear, simple, explainable behavior -
.tp2 = file manipulation
.d = dialog manipulation
.tp2 calls one file for SoA
.tp2 calls separate file for ToB, uses A_I F_E_I_G
I think this exploration is better off *not8 proceeding down that road, or you will get messed around with and get thinsg like
.d
I_C_T3 (IF_FILE_EXISTS ~c-aranj.dlg~) AND ( IF_FILE_EXISTS ~b!gavj.dlg~) DO BAERIE25 157 newstate
ELSE
(IF_FILE_EXISTS ~c-aranj.dlg~) BUT NOT ( IF_FILE_EXISTS ~b!gavj.dlg~) DO BAERIE25 157 newstate2
END
or much, much worse -
let's bail on this whole idea.
The entry
CHAIN [ IF [ WEIGHT #weight ] stateTriggerString THEN ] [ IF_FILE_EXISTS ] entryFilename entryLabel chainText list chainEpilogue
and
[ == [ IF_FILE_EXISTS ] fileName [ IF transTriggerString THEN ] sayText = sayText ... ]
would need to be changed, is all. And the EXTERN docs, too. I have never seen this construction used, at all - most folks are much happier manipulating up at the .tp2 level, for a ton of reasons. The only reason to suipport it is to help people consolidate things into one file, and we don't need to do that.
But if it turns out it needs to be used, my form above is wrong anyways... it should be in another order, and it looks like it only checks for the first file called. So
CHAIN
IF
WEIGHT #-1 ~Global("c-silencearan","GLOBAL",0) InParty("b!gavin2") InMyArea("b!gavin2") !StateCheck("b!gavin2",CD_STATE_NOTVALID) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN
IF_FILE_EXISTS ~b!GavJ~ mynewstate
~[GAVIN] Err... don't put words in my mouth.~
== ~C-ARN25J~ IF ~Global("c-silencearan","GLOBAL",0) InParty("b!gavin2") InMyArea("b!gavin2") !StateCheck("b!gavin2",CD_STATE_NOTVALID) InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID)~ THEN ~[ARAN] well, this is alot of mess for no gain. Let's call this crap a dead fish, drop it, an' run for th' nearest bar. After all, this is better done with a series of CHAIN or I_C_T that are screened at the .tp2 level.~
END