Added an AI command "checkAegis" that recalls the aegis messages. When traders or patrols go into a wayPointAI.plist or an interceptAI.plist they sometime miss this message. Now they can use checkAegis on RESTART.

git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@2369 127b21dd-08f5-0310-b4b7-95ae10353056
This commit is contained in:
Eric Walch 2009-09-03 19:44:45 +00:00
parent 00fc0dccbe
commit eba04c02fc
5 changed files with 58 additions and 11 deletions

View File

@ -16,6 +16,7 @@
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, "setStateTo: INBOUND_LOOT", groupAttackTarget);
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
RESTARTED = (checkAegis);
UPDATE = (setCourseToPlanet, "setDesiredRangeTo: 50000.0", checkCourseToDestination, scanForOffenders, "pauseAI: 10.0");
};
"HEAD_FOR_WITCHPOINT" =
@ -28,9 +29,10 @@
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
"OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", deployEscorts, groupAttackTarget);
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, "setStateTo: INBOUND_LOOT", groupAttackTarget);
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, "setStateTo: OUTBOUND_LOOT", groupAttackTarget);
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
RESTARTED = (checkAegis);
UPDATE = (setCourseToWitchpoint, checkCourseToDestination, scanForOffenders, "pauseAI: 10.0");
};
"OUTBOUND_LOOT" =
@ -62,7 +64,7 @@
"OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", deployEscorts, groupAttackTarget);
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
"NORMAL_SPACE" = ("setStateTo: HEAD_FOR_PLANET");
"NORMAL_SPACE" = (checkAegis, "setStateTo: HEAD_FOR_PLANET");
"INTERSTELLAR_SPACE" = ("setSpeedFactorTo: 1.0", "pauseAI: 15.0", "setStateTo: HYPER_OUT");
};
"OUTBOUND_CHECK" =
@ -72,7 +74,7 @@
"OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", deployEscorts, groupAttackTarget);
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
"NORMAL_SPACE" = ("setStateTo: HEAD_FOR_WITCHPOINT");
"NORMAL_SPACE" = (checkAegis, "setStateTo: HEAD_FOR_WITCHPOINT");
"INTERSTELLAR_SPACE" = ("setSpeedFactorTo: 1.0", "pauseAI: 15.0", "setStateTo: HYPER_OUT");
};
"HYPER_OUT" =

View File

@ -15,6 +15,7 @@
"TARGET_FOUND" = (setTargetToFoundTarget, "setAITo: traderInterceptAI.plist", fightOrFleeHostiles);
"INCOMING_MISSILE" = ("setAITo: traderInterceptAI.plist", "setStateTo: INCOMING_MISSILE", "randomPauseAI: 0.5 2.0");
ATTACKED = ("setAITo: traderInterceptAI.plist", fightOrFleeHostiles);
RESTARTED = (checkAegis);
UPDATE =
(
setCourseToPlanet,

View File

@ -28,7 +28,7 @@
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_PLANET");
"AEGIS_CLOSE_TO_MAIN_PLANET" = ("setStateTo: HEAD_FOR_SUN");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setStateTo: INBOUND_LOOT");
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
"OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", deployEscorts, groupAttackTarget);
@ -44,7 +44,7 @@
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_PLANET");
"CLOSE_TO_SUN" = ("setStateTo: HEAD_FOR_PLANET");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setStateTo: OUTBOUND_LOOT");
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget);
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
@ -63,16 +63,16 @@
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
"OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", deployEscorts, groupAttackTarget);
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setStateTo: OUTBOUND_LOOT");
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget);
};
"OUTBOUND_LOOT" =
{
ENTER = ("setSpeedTo: 0.0", performIdle);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setStateTo: OUTBOUND_LOOT");
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget);
"TARGET_FOUND" = (setTargetToFoundTarget, "setAITo: collectLootAI.plist");
"NOTHING_FOUND" = ("setStateTo: HEAD_FOR_SUN");
"NOTHING_FOUND" = (checkAegis, "setStateTo: HEAD_FOR_SUN");
UPDATE = (scanForLoot, "pauseAI: 10.0");
};
"INBOUND_LOOT" =
@ -80,9 +80,9 @@
ENTER = ("setSpeedTo: 0.0", performIdle);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget,"setStateTo: INBOUND_LOOT");
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget);
"TARGET_FOUND" = (setTargetToFoundTarget, "setAITo: collectLootAI.plist");
"NOTHING_FOUND" = ("setStateTo: HEAD_FOR_PLANET");
"NOTHING_FOUND" = (checkAegis, "setStateTo: HEAD_FOR_PLANET");
UPDATE = (scanForLoot, "pauseAI: 10.0");
};
}

View File

@ -188,7 +188,8 @@
"dropMessages:",
"exitAIWithMessage:",
"ai_throwSparks", // Don't use, use throwSparks instead
"checkAegis",
// StationEntity.m/stubs in ShipEntityAI.m
"increaseAlertLevel",
"decreaseAlertLevel",

View File

@ -135,6 +135,8 @@ MA 02110-1301, USA.
- (void) checkCourseToDestination;
- (void) checkAegis;
- (void) scanForOffenders;
- (void) setCourseToWitchpoint;
@ -949,6 +951,47 @@ MA 02110-1301, USA.
}
- (void) checkAegis
{
switch(aegis_status)
{
case AEGIS_CLOSE_TO_MAIN_PLANET:
[shipAI message:@"AEGIS_CLOSE_TO_MAIN_PLANET"];
[shipAI message:@"AEGIS_CLOSE_TO_PLANET"]; // fires only for main planets, keep for compatibility with pre-1.72 AI plists.
break;
case AEGIS_CLOSE_TO_ANY_PLANET:
{
PlanetEntity *the_planet = [self findNearestStellarBody];
if(the_planet == [UNIVERSE sun])
{
[shipAI message:@"CLOSE_TO_SUN"];
}
else
{
[shipAI message:@"CLOSE_TO_PLANET"];
if ([the_planet planetType] == PLANET_TYPE_MOON)
{
[shipAI message:@"CLOSE_TO_MOON"];
}
else
{
[shipAI message:@"CLOSE_TO_SECONDARY_PLANET"];
}
}
break;
}
case AEGIS_IN_DOCKING_RANGE:
[shipAI message:@"AEGIS_IN_DOCKING_RANGE"];
break;
case AEGIS_NONE:
default:
[shipAI message:@"AEGIS_NONE"];
break;
}
}
- (void) scanForOffenders
{
/*-- Locates all the ships in range and compares their legal status or bounty against ranrot_rand() & 255 - chooses the worst offender --*/