OK.
I understand that I_C_T is both
INTERJECT, where a dialogue state is inserted into an existing sequence of states and plays only once
and
COPY_TRANS, where the actions are passed from state to state throughout the series of states (dialogue).
This means that whatever actor speaks last does the actions gathered in the whole series. It allows the original dialogue to play out, set its variables, do its actions, with a dialogue state (or states) inserted into the sequence.
I understand that I_C_T2 does the same thing, except that it blocks the actions from passing to the actor doing the interjecting. This is important when the action is one that involves starting or finishing cutscenes, EscapeArea(), DestroySelf(), or other direct actions which could accidentally be transferred to the wrong actor.
Now.
I have over 400 entries using I_C_T2 which throw
WARNING: I_C_T2: the interjection point (_KAISH 27) has multiple exit transitions that have different actions!
First Action: ""
Other Action: TakePartyItem("_MISC1C")
The majority of them speak a single line, like thio:
I_C_T2 ~%tutu_scriptd%URLYLE1~ 1 X#CoranDur2
== ~%CORAN_JOINED%~ IF ~InParty("coran") InMyArea("coran") !StateCheck("coran",CD_STATE_NOTVALID) Global("P#CoranMatch","GLOBAL",1) !Global("P#CoranRomanceInactive","GLOBAL",1)~ THEN @26
END
or even set a variable
/* Bjornin, the hurt paladin in Beregost */
I_C_T2 ~%tutu_var%BJORNI~ 1 X#AjantisBjorninTalk1
== ~%AJANTIS_JOINED%~ IF ~InParty("ajantis") InMyArea("ajantis") !StateCheck("ajantis",CD_STATE_NOTVALID)~ THEN @5 DO ~SetGlobal("X#AjantisHelpBjornin","GLOBAL",1)~
END
and sometimes actively sidetrack the dialogue completely
{can't find the code, but basically jump to a CHAIN}.
Somewhere in here I am getting a mental block.
When I am diagnosing the I_C_T2 error reporting multiple exit points, I am getting very confused as to how to figure out what should be recoded to I_C_
For example, Durlyle.
Cross reference pulls up this:
---------- Find in Files ----------
> Searching for the string 'URLYLE1'...
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(1,32): ADD_TRANS_ACTION %tutu_scriptd%URLYLE1 BEGIN 61 63 64 END BEGIN
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(86,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 51 X#BranwenFlowers2
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(100,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 0 X#CoranDur1
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(104,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 1 X#CoranDur2
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(108,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 3 X#CoranDur3
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(112,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 4 X#CoranDur4
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(116,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 7 X#CoranDur5
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(120,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 8 X#CoranDur6
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(124,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 9 X#CoranDur7
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(128,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 10 X#CoranDur8
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(132,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 12 X#CoranDur9
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(136,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 20 X#CoranDur10
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(140,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 21 X#CoranDur11
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(144,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 29 X#CoranDur12
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(148,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 34 X#CoranDur13
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(152,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 35 X#CoranDur14
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(156,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 36 X#CoranDur15
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(160,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 37 X#CoranDur16
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(164,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 39 X#CoranDur17
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(168,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 51 X#CoranDur18
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(172,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 55 X#CoranDur19
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(179,19): == ~%tutu_scriptd%URLYLE1~ @40
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(181,19): == ~%tutu_scriptd%URLYLE1~ @42
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(183,19): == ~%tutu_scriptd%URLYLE1~ @43
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(188,34): ADD_TRANS_TRIGGER ~%tutu_scriptd%URLYLE1~ 58 ~OR(3) !InParty("coran") !Global("P#CoranMatch","GLOBAL",1) Global("P#CoranRomanceInactive","GLOBAL",1)~
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(189,34): ADD_TRANS_TRIGGER ~%tutu_scriptd%URLYLE1~ 59 ~OR(3) !InParty("coran") !Global("P#CoranMatch","GLOBAL",1) Global("P#CoranRomanceInactive","GLOBAL",1)~
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(191,30): EXTEND_BOTTOM ~%tutu_scriptd%URLYLE1~ 58
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(195,30): EXTEND_BOTTOM ~%tutu_scriptd%URLYLE1~ 59
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(259,23): I_C_T2 ~%tutu_scriptd%URLYLE1~ 51 FALDORNDURLYLE1
E:\TestBaldursGateTutu\BG1NPC\phase2\dlg\x#totsc.d(261,19): == ~%tutu_scriptd%URLYLE1~ IF ~InParty("faldorn") InMyArea("faldorn") !StateCheck("faldorn",CD_STATE_NOTVALID)~ THEN @57
In the entire vanilla decompiles _URLYLE1.D, there is only one state (state 6) which results in an EscapeArea. It can be approached from several points. There are several different Journal entries, as well, based on responses, but since those journal entries can be set by any actor, this should not be a problem.
Not all I_C_T2s listed generate errors. Only states
WARNING: I_C_T2: the interjection point (_URLYLE1 29) has multiple exit transitions that have different actions!
First Action: AddJournalEntry(82635,QUEST)
Other Action: AddJournalEntry(82639,QUEST)
WARNING: I_C_T2: the interjection point (_URLYLE1 29) has multiple exit transitions that have different actions!
First Action: AddJournalEntry(82636,QUEST)
Other Action: AddJournalEntry(82639,QUEST)
WARNING: I_C_T2: the interjection point (_URLYLE1 34) has multiple exit transitions that have different actions!
First Action: AddJournalEntry(82631,QUEST)
Other Action: ""
WARNING: I_C_T2: the interjection point (_URLYLE1 39) has multiple exit transitions that have different actions!
First Action: ""
Other Action: AddJournalEntry(82631,QUEST)
have these errors.
And here my logic runs dry. Am I supposed to backtrace each potential path, and use I_C_T on any that cannot result in an action like Enemy() or EscapeAreaDestroy()? Does the transfer back to the original speaker make this only applicable to states which interject between the last speaker statement and the closing of the dialogue (if so, almost all I_C_Ts are ok, unless they fill in after the end of the dialogue, interjecting below the final state, right?
I guess i am looking for a conceptual leap that will allow me to look at a dialogue state sequence, and say "ICT this one. Nope - that one could end up wrong - leave it alone and live with the error in the log." (assuming that thgere is even such a thing as an "OK" error in the log - but research on back posts seems to indicate that sometimes this error is "ok". )