Another problem remains the explosiveAI.plist.
As it is, it triggers QC directly following ECM, without pausing or communicating.
Q: Is AImethod "pauseAI: <s>" broken?
The number entered is in seconds right? not milliseconds or 0.1seconds?
When I put the pause,comms,state lines into the PAUSE, it sometimes takes way too long to cycle.
It does work...except for the delays and lack of 'commsMessage:'.
Similar effects. except there is debris in explosions.Gonna test under 1.68.
I have since altered the AI to
-added a chance of prevent cascade at the last moment.
-added more chances to interrupt the cascade by ECM-ing. (This may be a mistake as it masks it if the AI hangs)
-added scan for the player, setTargetToFoundTarget and use sendTargetCommsMessage. still no comms.
What I don't understand is why the AI advances through all states in a moment when lines like:
Code: Select all
"commsMessage: -beep- ", "pauseAI: 1.0", "setStateTo: TIMER5"
current AI:
Code: Select all
{
GLOBAL = {
ENTER = ("setDesiredRangeTo: 100000.0", performTumble);
EXIT = ();
UPDATE = ("setStateTo: GET_PLAYER");
};
"PLAYER_FOUND" = {
ENTER = ();
COLLISION = ("setStateTo: EXPLODE");
ATTACKED = ("setStateTo: EXPLODE");
LOST_TARGET = ("setStateTo: GET_PLAYER");
ECM = ("sendTargetCommsMessage: WARNING: ECM disrupts Quirium containment!", "pauseAI: 7.5", "setStateTo: CRITICAL");
EXIT = ();
UPDATE = ("pauseAI: 5", "sendTargetCommsMessage: -Beep!- ");
};
"GET_PLAYER" = {
ENTER = ("commsMessage: -Beep!- ", "scanNearestForShipWithRole: player");
TARGET_FOUND = (setTargetToFoundTarget, "setStateTo: PLAYER_FOUND");
ECM = ("pauseAI: 10.0", "setStateTo: DEFUSE_CHANCE");
COLLISION = ("setStateTo: EXPLODE");
ATTACKED = ("setStateTo: EXPLODE");
EXIT = ();
UPDATE = ("pauseAI: 5", "setStateTo: GET_PLAYER");
};
EXPLODE = {
ENTER = ("setDesiredRangeTo: 150.0", dealEnergyDamageWithinDesiredRange, becomeExplosion);
EXIT = ();
UPDATE = ();
};
CRITICAL = {
ENTER = (performTumble);
COLLISION = ("setStateTo: EXPLODE");
ATTACKED = ("setStateTo: EXPLODE");
ECM = ("sendTargetCommsMessage: WARNING: Quirium Cascade imminent!", "pauseAI: 5.0", "setStateTo: TIMER5");
EXIT = ();
UPDATE = ("pauseAI: 5", "sendTargetCommsMessage: -Beep!- ");
};
TIMER5 = {
ENTER = ("sendTargetCommsMessage: -5-");
EXIT = ();
ECM = ("pauseAI: 1.0");
ATTACKED = ("setStateTo: EXPLODE");
UPDATE = ("pauseAI: 1.0", "setStateTo: TIMER4");
};
TIMER4 = {
ENTER = ("sendTargetCommsMessage: -4-");
EXIT = ();
ECM = ("sendTargetCommsMessage: Quirium Cascade Effect Interrupted", "setStateTo: EXPLODE");
ATTACKED = ("setStateTo: EXPLODE");
UPDATE = ("pauseAI: 1.0", "setStateTo: TIMER3");
};
TIMER3 = {
ENTER = ("sendTargetCommsMessage: -3-");
EXIT = ();
ECM = ("sendTargetCommsMessage: Quirium Cascade Effect Interrupted", "setStateTo: EXPLODE");
ATTACKED = ("setStateTo: EXPLODE");
UPDATE = ("pauseAI: 1.0", "setStateTo: TIMER2");
};
TIMER2 = {
ENTER = ("sendTargetCommsMessage: -2-");
EXIT = ();
ECM = ("sendTargetCommsMessage: Quirium Cascade Effect Interrupted", "setStateTo: EXPLODE");
ATTACKED = ("setStateTo: EXPLODE");
UPDATE = ("pauseAI: 1.0", "setStateTo: TIMER1");
};
TIMER1 = {
ENTER = ("sendTargetCommsMessage: [bomb-last-words]");
EXIT = ();
ECM = ("sendTargetCommsMessage: Quirium Cascade Effect Interrupted", "setStateTo: EXPLODE");
ATTACKED = ("setStateTo: EXPLODE");
UPDATE = ("pauseAI: 1.0", "setStateTo: DEFUSE_CHANCE");
};
"DEFUSE_CHANCE" = {
ENTER = ("rollD: 3");
"ROLL_1" = ("setStateTo: DETONATE");
"ROLL_2" = ("sendTargetCommsMessage: Quirium Cascade Effect Interrupted", "setStateTo: EXPLODE");
"ROLL_3" = ("sendTargetCommsMessage: Quirium Stabilized", "setStateTo: TUMBLE");
EXIT = ();
UPDATE = ("rollD: 3");
};
DETONATE = {
ENTER = ("pauseAI:1.0");
EXIT = ();
UPDATE = ("setDesiredRangeTo: 150.0", dealEnergyDamageWithinDesiredRange, becomeEnergyBlast);
};
}