- Added a new AI command 'setDestinationToJinkPosition'

- Updated several AIs with reaction to cloaked attacks.

git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@4954 127b21dd-08f5-0310-b4b7-95ae10353056
This commit is contained in:
Eric Walch 2012-05-22 20:06:21 +00:00
parent 2bf7a79997
commit 0167b32938
14 changed files with 68 additions and 2 deletions

View File

@ -12,6 +12,7 @@
"INCOMING_MISSILE" = ("messageMother: INCOMING_MISSILE");
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
"ATTACKED" = ("messageMother: ATTACKED", "messageMother: ESCORT_ATTACKED");
"ATTACKED_BY_CLOAKED" = ("messageMother: ATTACKED_BY_CLOAKED");
"NOT_ESCORTING" = ("setStateTo: LOOK_FOR_BUSINESS");
"TARGET_LOST" = ("setStateTo: LOOK_FOR_BUSINESS");
"TARGET_DESTROYED" = ("setStateTo: LOOK_FOR_BUSINESS");

View File

@ -9,6 +9,7 @@
"WAYPOINT_SET" = ("setStateTo: NEW_WAYPOINT");
"DESIRED_RANGE_ACHIEVED" = ("setDesiredRangeTo: 1000.0", exitAI);
ATTACKED = ("exitAIWithMessage: ATTACKED");
"ATTACKED_BY_CLOAKED" = ("exitAIWithMessage: ATTACKED_BY_CLOAKED");
"CASCADE_WEAPON_DETECTED" = ("exitAIWithMessage: CASCADE_WEAPON_DETECTED");
"FRUSTRATED" = ("setSpeedFactorTo: 0.1", "setDesiredRangeTo: 1000.0", exitAI);
"LAUNCHED OKAY" = ("exitAIWithMessage: LAUNCHED OKAY");
@ -27,6 +28,7 @@
"FRUSTRATED" = ("setSpeedFactorTo: 0.1", "setDesiredRangeTo: 1000.0", exitAI);
"LAUNCHED OKAY" = ("exitAIWithMessage: LAUNCHED OKAY");
ATTACKED = ("exitAIWithMessage: ATTACKED");
"ATTACKED_BY_CLOAKED" = ("exitAIWithMessage: ATTACKED_BY_CLOAKED");
"CASCADE_WEAPON_DETECTED" = ("exitAIWithMessage: CASCADE_WEAPON_DETECTED");
"DESIRED_RANGE_ACHIEVED" = ("setDesiredRangeTo: 1000.0", exitAI);
"INCOMING_MISSILE" = ("exitAIWithMessage: INCOMING_MISSILE");

View File

@ -13,6 +13,8 @@
"CASCADE_WEAPON_DETECTED" = ("exitAIWithMessage: CASCADE_WEAPON_DETECTED");
"TARGET_DESTROYED" = (performIdle, switchLightsOff, exitAI);
"TARGET_LOST" = (performIdle, switchLightsOff, exitAI);
"ATTACKED_BY_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
"TARGET_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
"PLAYER WITCHSPACE" = ("setStateTo: PLAYER_WITCHSPACE");
"ENTER WORMHOLE" = (performIdle, switchLightsOff, "exitAIWithMessage: ENTER WORMHOLE");
"DEFENSE_TARGET_LOST" = (findNewDefenseTarget);
@ -27,6 +29,8 @@
"REACHED_SAFETY" = (performIdle, switchLightsOff, exitAI);
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
"CASCADE_WEAPON_DETECTED" = ("exitAIWithMessage: CASCADE_WEAPON_DETECTED");
"ATTACKED_BY_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
"TARGET_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
"PLAYER WITCHSPACE" = ("setStateTo: PLAYER_WITCHSPACE");
"ENTER WORMHOLE" = (performIdle, switchLightsOff, "exitAIWithMessage: ENTER WORMHOLE");
"ATTACKED" = (addPrimaryAggressorAsDefenseTarget);
@ -34,6 +38,21 @@
"DEFENSE_TARGET_DESTROYED" = (findNewDefenseTarget);
"TARGET_LOST" = (performIdle, switchLightsOff, exitAI);
};
"FLEE_FOR_CLOAKED" = {
ENTER = (storeTarget,
setDestinationToCurrentLocation,
"setDesiredRangeTo: 25600",
performFlyToRangeFromDestination
);
"DESIRED_RANGE_ACHIEVED" = (performIdle, switchLightsOff, exitAI);
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
"ATTACKED_BY_CLOAKED" = (setDestinationToJinkPosition);
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
RESTARTED = (performIdle, switchLightsOff, exitAI);
UPDATE = (recallStoredTarget, "pauseAI: 2.0");
};
"PLAYER_WITCHSPACE" =
{
"ENTER WORMHOLE" = (performIdle, switchLightsOff, exitAI, enterTargetWormhole);

View File

@ -55,7 +55,7 @@
};
"FLEE_FOR_CLOAKED" = {
ENTER = (storeTarget,
setDestinationToCurrentLocation,
setDestinationToJinkPosition,
"setDesiredRangeTo: 25600",
performFlyToRangeFromDestination
);
@ -65,6 +65,7 @@
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
"ATTACKED_BY_CLOAKED" = (setDestinationToJinkPosition);
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
RESTARTED = ("setStateTo: RECOVER");
UPDATE = (recallStoredTarget, "pauseAI: 2.0");

View File

@ -27,6 +27,7 @@
"TARGET_OFFENDER" = ("sendTargetCommsMessage: [police-attack-warning]", "setAITo: interceptAI.plist", groupAttackTarget);
"TARGET_FUGITIVE" = ("setAITo: interceptAI.plist", groupAttackTarget);
ATTACKED = (setTargetToPrimaryAggressor, "setAITo: interceptAI.plist");
"ATTACKED_BY_CLOAKED" = ("setAITo: interceptAI.plist", "setStateTo: FLEE_FOR_CLOAKED");
"INCOMING_MISSILE" = (setTargetToFoundTarget, "markTargetForOffence: 15",
"setAITo: delayedReactToAttackAI.plist");
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");

View File

@ -17,6 +17,7 @@
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget);
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"ATTACKED_BY_CLOAKED" = ("setAITo: interceptAI.plist", "setStateTo: FLEE_FOR_CLOAKED");
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setStateTo: INBOUND_LOOT", "setAITo: interceptAI.plist");
RESTARTED = (checkAegis);
UPDATE = (setCourseToPlanet, "setDesiredRangeTo: 50000.0", checkCourseToDestination, scanForOffenders, "pauseAI: 10.0");
@ -35,6 +36,7 @@
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget);
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"ATTACKED_BY_CLOAKED" = ("setAITo: interceptAI.plist", "setStateTo: FLEE_FOR_CLOAKED");
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setStateTo: OUTBOUND_LOOT", "setAITo: interceptAI.plist");
UPDATE = (setCourseToWitchpoint, checkCourseToDestination, scanForOffenders, "pauseAI: 10.0");
};

View File

@ -26,6 +26,7 @@
"INCOMING_MISSILE" = ("setAITo: traderInterceptAI.plist", "setStateTo: INCOMING_MISSILE", "randomPauseAI: 0.5 2.0");
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
ATTACKED = ("setAITo: traderInterceptAI.plist", fightOrFleeHostiles);
"ATTACKED_BY_CLOAKED" = ("setAITo: traderInterceptAI.plist", "setStateTo: FLEE_FOR_CLOAKED");
RESTARTED = (checkAegis);
UPDATE =
(
@ -49,6 +50,7 @@
"INCOMING_MISSILE" = ("setAITo: traderInterceptAI.plist", "setStateTo: INCOMING_MISSILE", "randomPauseAI: 0.25 1.5");
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
ATTACKED = ("setAITo: traderInterceptAI.plist", fightOrFleeHostiles);
"ATTACKED_BY_CLOAKED" = ("setAITo: traderInterceptAI.plist", "setStateTo: FLEE_FOR_CLOAKED");
UPDATE =
(
setTargetToSystemStation,
@ -72,6 +74,7 @@
"INCOMING_MISSILE" = ("setAITo: traderInterceptAI.plist", "setStateTo: INCOMING_MISSILE", "randomPauseAI: 0.25 1.5");
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
ATTACKED = ("setAITo: traderInterceptAI.plist", fightOrFleeHostiles);
"ATTACKED_BY_CLOAKED" = ("setAITo: traderInterceptAI.plist", "setStateTo: FLEE_FOR_CLOAKED");
UPDATE =
(
setTargetToNearestFriendlyStation,
@ -94,6 +97,7 @@
"INCOMING_MISSILE" = ("setAITo: traderInterceptAI.plist", "setStateTo: INCOMING_MISSILE", "randomPauseAI: 0.25 1.5");
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
ATTACKED = ("setAITo: traderInterceptAI.plist", fightOrFleeHostiles);
"ATTACKED_BY_CLOAKED" = ("setAITo: traderInterceptAI.plist", "setStateTo: FLEE_FOR_CLOAKED");
UPDATE =
(
setTargetToLastStation,

View File

@ -12,6 +12,7 @@
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_SUN");
"AEGIS_CLOSE_TO_MAIN_PLANET" = ("setStateTo: HEAD_FOR_SUN");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"ATTACKED_BY_CLOAKED" = ("setAITo: interceptAI.plist", "setStateTo: FLEE_FOR_CLOAKED");
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget);
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
@ -46,6 +47,7 @@
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_PLANET");
"CLOSE_TO_SUN" = ("setStateTo: HEAD_FOR_PLANET");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"ATTACKED_BY_CLOAKED" = ("setAITo: interceptAI.plist", "setStateTo: FLEE_FOR_CLOAKED");
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget);
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);

View File

@ -18,6 +18,7 @@
"WAYPOINT_SET" = ("setAITo: gotoWaypointAI.plist");
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: GO_TO_SKIM");
ATTACKED = ("setAITo: traderInterceptAI.plist", fightOrFleeHostiles);
"ATTACKED_BY_CLOAKED" = ("setAITo: traderInterceptAI.plist", "setStateTo: FLEE_FOR_CLOAKED");
"INCOMING_MISSILE" = ("setAITo: traderInterceptAI.plist", "setStateTo: INCOMING_MISSILE", "randomPauseAI: 0.5 2.0");
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
"EXITED WITCHSPACE" = ("switchAITo: route1traderAI.plist");

View File

@ -26,7 +26,7 @@
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget, broadcastDistressMessage, "setStateTo: FLEE");
"DESIRED_RANGE_ACHIEVED" = ("setAITo: dockingAI.plist");
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
"CASCADE_WEAPON_DETECTED" = ("setStateTo: COLLECT_STUFF", "setAITo: fleeQMineAI.plist");
"TARGET_LOST" = ("setStateTo: GO_TO_STATION");
RESTARTED = ("switchAITo: route1traderAI.plist");
};

View File

@ -17,6 +17,8 @@
"ENERGY_LOW" = (setTargetToPrimaryAggressor, broadcastDistressMessage, deployEscorts, "setStateTo: FLEE");
"INCOMING_MISSILE" = ("setStateTo: INCOMING_MISSILE", "randomPauseAI: 0.25 0.75");
"CASCADE_WEAPON_DETECTED" = ("exitAIWithMessage: CASCADE_WEAPON_DETECTED");
"ATTACKED_BY_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
"TARGET_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
"TARGET_DESTROYED" = (exitAI);
"TARGET_LOST" = (exitAI);
};
@ -27,6 +29,7 @@
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
DEPLOYING_ESCORTS = (setTargetToPrimaryAggressor, "setStateTo: FLEE_WITH_ESCORTS");
"TARGET_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
"TARGET_LOST" = (performIdle, exitAI);
"TARGET_DESTROYED" = (performIdle, exitAI);
"INCOMING_MISSILE" = ("setStateTo: INCOMING_MISSILE", "randomPauseAI: 0.25 0.75");
@ -42,6 +45,7 @@
"ROLL_2" = ("setDesiredRangeTo: 25600", performFlee);
"ROLL_3" = ("setDesiredRangeTo: 25600", performFlee);
"ESCORT_ATTACKED" = (setTargetToPrimaryAggressor, groupAttackTarget); // only player attacks escorts
"TARGET_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
"TARGET_LOST" = (performIdle, exitAI);
"TARGET_DESTROYED" = (performIdle, exitAI);
"ENERGY_LOW" = (setTargetToPrimaryAggressor, deployEscorts);
@ -62,6 +66,25 @@
"REACHED_SAFETY" = (performIdle, exitAI);
"UPDATE" = (fightOrFleeMissile, "pauseAI: 10");
};
"FLEE_FOR_CLOAKED" = {
ENTER = (storeTarget,
setDestinationToJinkPosition,
"setDesiredRangeTo: 25600",
performFlyToRangeFromDestination,
"setSpeedFactorTo: 7"
);
"DESIRED_RANGE_ACHIEVED" = (exitAI);
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
"CASCADE_WEAPON_DETECTED" = ("setAITo: fleeQMineAI.plist");
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
"ATTACKED_BY_CLOAKED" = (setDestinationToJinkPosition);
"TARGET_FOUND" = (setTargetToFoundTarget, fightOrFleeHostiles);
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
DEPLOYING_ESCORTS = (setTargetToPrimaryAggressor, "setStateTo: FLEE_WITH_ESCORTS");
RESTARTED = (exitAI);
UPDATE = (recallStoredTarget, "pauseAI: 2.0");
};
"INCOMING_MISSILE" =
{
ATTACKED = ("setStateTo: GLOBAL", fightOrFleeMissile, fightOrFleeHostiles);

View File

@ -88,6 +88,7 @@
"pauseAI:",
"randomPauseAI:",
"setDestinationToCurrentLocation",
"setDestinationToJinkPosition",
"setDesiredRangeTo:",
"setDesiredRangeForWaypoint",
"performFlyToRangeFromDestination",

View File

@ -19,6 +19,8 @@
energy_recharge_rate = "positiveFloat";
forward_weapon_type = "$weaponType";
aft_weapon_type = "$weaponType";
port_weapon_type = "$weaponType";
starboard_weapon_type = "$weaponType";
weapon_energy = "positiveFloat";
weapon_range = "positiveFloat";
scanner_range = "positiveFloat";

View File

@ -409,6 +409,13 @@
}
- (void) setDestinationToJinkPosition
{
Vector front = vector_multiply_scalar([self forwardVector], flightSpeed / max_flight_pitch * 2);
destination = vector_add(position, vector_add(front, OOVectorRandomSpatial(100)));
}
- (void) setDesiredRangeTo:(NSString *)rangeString
{
desired_range = [rangeString doubleValue];