protected virtual void CheckAndRunSentenceScript()
{
var sentenceScript = Game.Version <= 2 ? 2 : _variables[VariableSentenceScript.Value];
if (IsScriptInUse(sentenceScript))
{
for (var i = 0; i < NumScriptSlot; i++)
if (_slots[i].Number == sentenceScript && _slots[i].Status != ScriptStatus.Dead &&
!_slots[i].Frozen)
return;
}
if (SentenceNum == 0 || _sentence[SentenceNum - 1].IsFrozen)
return;
SentenceNum--;
var st = _sentence[SentenceNum];
if (Game.Version < 7 && st.Preposition && st.ObjectB == st.ObjectA)
return;
int[] data;
if (Game.Version <= 2)
{
data = new int[0];
Variables[VariableActiveVerb.Value] = st.Verb;
Variables[VariableActiveObject1.Value] = st.ObjectA;
Variables[VariableActiveObject2.Value] = st.ObjectB;
Variables[VariableVerbAllowed.Value] = GetVerbEntrypointCore(st.ObjectA, st.Verb);
}
else
{
data = new int[] { st.Verb, st.ObjectA, st.ObjectB };
}
CurrentScript = 0xFF;
if (sentenceScript != 0)
{
RunScript(sentenceScript, false, false, data);
}
}