#include "pch.h"
#include "Mission2.h"
#include "Training.h"
#include "GoalList.h"
#include "Predicate.h"
#include "TrueCondition.h"
#include "FalseCondition.h"
#include "AndCondition.h"
#include "OrCondition.h"
#include "NotCondition.h"
#include "PeriodicCondition.h"
#include "ElapsedTimeCondition.h"
#include "ObjectMovingTowardsCondition.h"
#include "ObjectWithinRadiusCondition.h"
#include "ObjectPointingAtCondition.h"
#include "ConditionalAction.h"
#include "ConditionList.h"
#include "ActionList.h"
#include "MessageAction.h"
#include "PlaySoundAction.h"
#include "SetCommandAction.h"
#include "NoAction.h"
#include "NTimesCondition.h"
#include "EndMissionAction.h"
#include "ResetAction.h"
#include "ResetShipAction.h"
#include "SoundFinishedCondition.h"
#include "SetDisplayModeAction.h"
#include "TurnShipAboutCondition.h"
#include "GetRadarLODCondition.h"
#include "SetRadarLODAction.h"
#include "GetControlActiveCondition.h"
#include "GetStateBitsCondition.h"
#include "GetShipIsStoppedCondition.h"
#include "GetShipIsDestroyedCondition.h"
#include "SetControlConstraintsAction.h"
#include "SetControlsAction.h"
#include "GetAutopilotCondition.h"
#include "SetAutopilotAction.h"
#include "SetSignatureAction.h"
#include "GetTargetCondition.h"
#include "CommandAcknowledgedCondition.h"
#include "GetCommandCondition.h"
#include "ReleaseConsumerAction.h"
#include "CreateProbeAction.h"
#include "CreateDroneAction.h"
#include "CreateWaypointAction.h"
#include "SetHUDOverlayAction.h"
#include "GetKeyCondition.h"
#include "TurnToAction.h"
#include "ProxyCondition.h"
#include "missionIGC.h"
namespace Training
{
Mission2::~Mission2 (void)
{
}
int Mission2::GetMissionID (void)
{
return c_TM_2_Basic_Flight;
}
SectorID Mission2::GetStartSectorID (void)
{
return 1010;
}
bool Mission2::ShipLanded (void)
{
Terminate ();
return false;
}
void Mission2::CreateUniverse (void)
{
LoadUniverse ("training_1", 412, 1010); trekClient.GetCore ()->SetFloatConstant (c_fcidRadiusUniverse, 20000.0f);
trekClient.GetCore ()->SetFloatConstant (c_fcidOutOfBounds, 100.0f);
ImissionIGC* pCore = trekClient.GetCore();
IshipIGC* pCommander = pCore->GetShip (m_commanderID);
assert (pCommander);
Vector position (500.0f, 0.0f, 0.0f);
pCommander->SetPosition (position);
pCommander->SetOrientation (Orientation (pCommander->GetOrientation ().GetForward () * -1.0f, position * -1.0f));
pCommander->SetCluster (pCore->GetCluster(1010));
}
Condition* Mission2::CreateMission (void)
{
GoalList* pGoalList = new GoalList;
Goal* pGoal = new Goal (pGoalList);
ImodelIGC* pShip = static_cast<ImodelIGC*> (trekClient.GetShip ());
TurnToAction* pTurnToAction = new TurnToAction (pShip, OT_station, 1010);
ObjectWithinRadiusCondition* pObjectWithinRadiusCondition = new ObjectWithinRadiusCondition (pShip, OT_station, 1010, 7500.0f);
ObjectWithinRadiusCondition* pObjectWithinRadiusCondition2 = new ObjectWithinRadiusCondition (pShip, OT_station, 1010, 7000.0f);
ConditionalAction* pConditionalAction = new ConditionalAction (new NotCondition (pObjectWithinRadiusCondition), pTurnToAction);
ConditionalAction* pConditionalAction2 = new ConditionalAction (new AndCondition (new NotCondition (pObjectWithinRadiusCondition2), new ProxyCondition (pObjectWithinRadiusCondition)), new SetControlsAction);
pGoal->AddConstraintCondition (pConditionalAction);
pGoal->AddConstraintCondition (pConditionalAction2);
pGoalList->AddGoal (CreateGoal01 ());
pGoalList->AddGoal (CreateGoal02 ());
pGoalList->AddGoal (CreateGoal03 ());
pGoalList->AddGoal (CreateGoal04 ());
pGoalList->AddGoal (CreateGoal05 ());
pGoalList->AddGoal (CreateGoal06 ());
pGoalList->AddGoal (CreateGoal07 ());
pGoalList->AddGoal (CreateGoal08 ());
pGoalList->AddGoal (CreateGoal09 ());
return pGoal;
}
Goal* Mission2::CreateGoal01 (void)
{
GoalList* pGoalList = new GoalList;
{
Goal* pGoal = CreatePlaySoundGoal (salCommenceScanSound);
SetControlConstraintsAction* pSetControlConstraintsAction = new SetControlConstraintsAction;
pSetControlConstraintsAction->DisableInputAction (0xffffffff);
pSetControlConstraintsAction->ScaleInputControl (c_axisYaw, 0.0f);
pSetControlConstraintsAction->ScaleInputControl (c_axisPitch, 0.0f);
pSetControlConstraintsAction->ScaleInputControl (c_axisRoll, 0.0f);
pSetControlConstraintsAction->ScaleInputControl (c_axisThrottle, 0.0f);
pGoal->AddStartAction (pSetControlConstraintsAction);
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (2.0f)));
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_01Sound));
{
Goal* pGoal = new Goal (new ElapsedTimeCondition (1.0f));
pGoal->AddStartAction (new SetDisplayModeAction (TrekWindow::cmCockpit));
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_02Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_03Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
return new Goal (pGoalList);
}
Goal* Mission2::CreateGoal02 (void)
{
ImissionIGC* pMission = trekClient.GetCore ();
IshipIGC* pCommander = pMission->GetShip (m_commanderID);
GoalList* pGoalList = new GoalList;
BuoyID buoyID = pMission->GenerateNewBuoyID();
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_04Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
{
Goal* pGoal = CreatePlaySoundGoal (tm_2_05Sound);
pGoal->AddStartAction (new CreateWaypointAction (buoyID, Vector (-200.0f, -200.0f, 400.0f), 1010));
pGoal->AddStartAction (new SetCommandAction (pCommander, c_cmdCurrent, OT_buoy, buoyID, c_cidGoto));
pGoal->AddStartAction (new SetCommandAction (pCommander, c_cmdAccepted, OT_buoy, buoyID, c_cidGoto));
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ObjectWithinRadiusCondition (pCommander, OT_buoy, buoyID, 100.0f)));
{
Goal* pGoal = CreatePlaySoundGoal (tm_2_06Sound);
pGoal->AddStartAction (new SetCommandAction (pCommander, c_cmdCurrent, NA, NA, c_cidDoNothing));
pGoal->AddStartAction (new SetCommandAction (pCommander, c_cmdAccepted, NA, NA, c_cidDoNothing));
pGoalList->AddGoal (pGoal);
}
{
ObjectPointingAtCondition* pObjectPointingAtCondition = new ObjectPointingAtCondition (static_cast<ImodelIGC*> (trekClient.GetShip ()), static_cast<ImodelIGC*> (pCommander));
Goal* pGoal = new Goal (pObjectPointingAtCondition);
pObjectPointingAtCondition->SetMinimumAngle (1.0f);
TurnToAction* pTurnToAction = new TurnToAction (trekClient.GetShip (), pCommander);
ConditionalAction* pConditionalAction = new ConditionalAction (new TrueCondition, pTurnToAction);
pGoal->AddConstraintCondition (pConditionalAction);
pGoalList->AddGoal (pGoal);
}
{
Goal* pGoal = new Goal (new ElapsedTimeCondition (0.5f));
SetControlsAction* pSetControlsAction = new SetControlsAction;
pGoal->AddStartAction (pSetControlsAction);
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_07Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
return new Goal (pGoalList);
}
Goal* Mission2::CreateGoal03 (void)
{
GoalList* pGoalList = new GoalList;
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_08Sound));
{
Goal* pGoal = new Goal (new ElapsedTimeCondition (0.5f));
SetControlConstraintsAction* pSetControlConstraintsAction = new SetControlConstraintsAction;
pSetControlConstraintsAction->ScaleInputControl (c_axisYaw, 1.0f);
pSetControlConstraintsAction->ScaleInputControl (c_axisPitch, 1.0f);
pSetControlConstraintsAction->ScaleInputControl (c_axisRoll, 1.0f);
pGoal->AddStartAction (pSetControlConstraintsAction);
pGoalList->AddGoal (pGoal);
}
if (GetWindow ()->GetInputEngine ()->GetJoystickCount () > 0)
{
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_09Sound));
}
else
{
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_10Sound));
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_11Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
{
Goal* pGoal = new Goal (new GetKeyCondition (TK_FireWeapon));
pGoal->AddStartAction (new MessageAction ("Press the SPACEBAR when you are ready to proceed."));
pGoal->AddStartAction (new PlaySoundAction (tm_2_11rSound));
pGoal->AddConstraintCondition (CreateTooLongCondition (30.0f, tm_2_11rSound));
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_12Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
return new Goal (pGoalList);
}
Goal* Mission2::CreateGoal04 (void)
{
GoalList* pGoalList = new GoalList;
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_13Sound));
{
Goal* pGoal = new Goal (new ElapsedTimeCondition (0.5f));
SetControlConstraintsAction* pSetControlConstraintsAction = new SetControlConstraintsAction;
pSetControlConstraintsAction->ScaleInputControl (c_axisYaw, 0.0f);
pSetControlConstraintsAction->ScaleInputControl (c_axisPitch, 0.0f);
pSetControlConstraintsAction->ScaleInputControl (c_axisRoll, 0.0f);
pSetControlConstraintsAction->ScaleInputControl (c_axisThrottle, 1.0f);
pGoal->AddStartAction (pSetControlConstraintsAction);
pGoalList->AddGoal (pGoal);;
}
if (GetWindow ()->GetInputEngine ()->GetJoystickCount () > 0)
{
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_14Sound));
}
else
{
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_15Sound));
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_16Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
{
TRef<ImodelIGC> pShip = static_cast<ImodelIGC*> (trekClient.GetShip());
Goal* pGoal = new Goal (new GetControlActiveCondition (trekClient.GetShip(), c_axisThrottle, 1.0f));
pGoal->AddStartAction (new MessageAction ("Press BACKSLASH (\\) or set your joystick throttle to maximum for full thrust."));
pGoal->AddStartAction (new PlaySoundAction (tm_2_16rSound));
pGoal->AddConstraintCondition (CreateTooLongCondition (30.0f, tm_2_16rSound));
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_17Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
return new Goal (pGoalList);
}
Goal* Mission2::CreateGoal05 (void)
{
GoalList* pGoalList = new GoalList;
{
Goal* pGoal = CreatePlaySoundGoal (tm_2_18Sound);
pGoal->AddStartAction (new SetHUDOverlayAction (ThrottleTrainingOverlay));
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
{
TRef<ImodelIGC> pShip = static_cast<ImodelIGC*> (trekClient.GetShip());
Goal* pGoal = new Goal (new NotCondition (new GetControlActiveCondition (trekClient.GetShip(), c_axisThrottle, 1.0f)));
pGoal->AddStartAction (new MessageAction ("Press [, ], or use your joystick throttle to adjust thrust."));
pGoal->AddStartAction (new PlaySoundAction (tm_2_18rSound));
pGoal->AddConstraintCondition (CreateTooLongCondition (30.0f, tm_2_18rSound));
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
{
Goal* pGoal = CreatePlaySoundGoal (tm_2_19Sound);
pGoal->AddStartAction (new SetHUDOverlayAction (NoTrainingOverlay));
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
return new Goal (pGoalList);
}
Goal* Mission2::CreateGoal06 (void)
{
GoalList* pGoalList = new GoalList;
{
Goal* pGoal = CreatePlaySoundGoal (tm_2_20Sound);
pGoal->AddStartAction (new SetHUDOverlayAction (SpeedTrainingOverlay));
SetControlConstraintsAction* pSetControlConstraintsAction = new SetControlConstraintsAction;
pSetControlConstraintsAction->ScaleInputControl (c_axisThrottle, 0.0f);
pGoal->AddStartAction (pSetControlConstraintsAction);
SetControlsAction* pSetControlsAction = new SetControlsAction;
pSetControlsAction->SetInputControl (c_axisThrottle, 0.33f);
pGoal->AddStartAction (pSetControlsAction);
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
{
Goal* pGoal = CreatePlaySoundGoal (tm_2_21Sound);
pGoal->AddStartAction (new SetHUDOverlayAction (MotionIndicatorTrainingOverlay));
pGoalList->AddGoal (pGoal);
}
{
Goal* pGoal = new Goal (new ElapsedTimeCondition (0.5f));
SetControlsAction* pSetControlsAction = new SetControlsAction;
pGoal->AddStartAction (new SetHUDOverlayAction (NoTrainingOverlay));
pSetControlsAction->SetInputControl (c_axisYaw, -0.5f);
pSetControlsAction->SetInputControl (c_axisThrottle, 0.33f);
pGoal->AddStartAction (pSetControlsAction);
pGoalList->AddGoal (pGoal);
}
{
Goal* pGoal = new Goal (new ElapsedTimeCondition (0.5f));
SetControlsAction* pSetControlsAction = new SetControlsAction;
pSetControlsAction->SetInputControl (c_axisThrottle, 0.33f);
pGoal->AddStartAction (pSetControlsAction);
pGoalList->AddGoal (pGoal);
}
{
Goal* pGoal = new Goal (new ElapsedTimeCondition (0.5f));
SetControlsAction* pSetControlsAction = new SetControlsAction;
pSetControlsAction->SetInputControl (c_axisPitch, -0.5f);
pSetControlsAction->SetInputControl (c_axisThrottle, 0.33f);
pGoal->AddStartAction (pSetControlsAction);
pGoalList->AddGoal (pGoal);
}
{
Goal* pGoal = new Goal (new ElapsedTimeCondition (0.5f));
SetControlsAction* pSetControlsAction = new SetControlsAction;
pSetControlsAction->SetInputControl (c_axisThrottle, 0.33f);
pGoal->AddStartAction (pSetControlsAction);
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
{
Goal* pGoal = new Goal (new ElapsedTimeCondition (0.5f));
SetControlsAction* pSetControlsAction = new SetControlsAction;
pGoal->AddStartAction (pSetControlsAction);
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_22Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_23Sound));
{
Goal* pGoal = new Goal (new ElapsedTimeCondition (0.5f));
SetControlConstraintsAction* pSetControlConstraintsAction = new SetControlConstraintsAction;
pSetControlConstraintsAction->ScaleInputControl (c_axisYaw, 1.0f);
pSetControlConstraintsAction->ScaleInputControl (c_axisPitch, 1.0f);
pSetControlConstraintsAction->ScaleInputControl (c_axisRoll, 1.0f);
pSetControlConstraintsAction->ScaleInputControl (c_axisThrottle, 1.0f);
pGoal->AddStartAction (pSetControlConstraintsAction);
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_24Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
{
Goal* pGoal = new Goal (new GetKeyCondition (TK_FireWeapon));
pGoal->AddStartAction (new MessageAction ("Press the SPACEBAR when you are ready to proceed."));
pGoal->AddStartAction (new PlaySoundAction (tm_2_24rSound));
pGoal->AddConstraintCondition (CreateTooLongCondition (30.0f, tm_2_24rSound));
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_25Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
return new Goal (pGoalList);
}
Goal* Mission2::CreateGoal07 (void)
{
GoalList* pGoalList = new GoalList;
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_26Sound));
{
Goal* pGoal = new Goal (new ElapsedTimeCondition (0.25f));
SetControlsAction* pSetControlsAction = new SetControlsAction;
pSetControlsAction->SetInputAction (afterburnerButtonIGC);
pGoal->AddStartAction (pSetControlsAction);
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_27Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.25f)));
{
Goal* pGoal = CreatePlaySoundGoal (tm_2_28Sound);
pGoal->AddStartAction (new SetHUDOverlayAction (SpeedTrainingOverlay));
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
{
Goal* pGoal = CreatePlaySoundGoal (tm_2_29Sound);
pGoal->AddStartAction (new SetHUDOverlayAction (FuelTrainingOverlay));
pGoalList->AddGoal (pGoal);
}
{
Goal* pGoal = new Goal (new ElapsedTimeCondition (1.75f));
SetControlsAction* pSetControlsAction = new SetControlsAction;
pGoal->AddStartAction (pSetControlsAction);
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_30Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
{
Goal* pGoal = CreatePlaySoundGoal (tm_2_31Sound);
pGoal->AddStartAction (new SetHUDOverlayAction (NoTrainingOverlay));
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
{
TRef<ImodelIGC> ship = static_cast<ImodelIGC*> (trekClient.GetShip());
Condition* pGetStateBitsCondition = new GetStateBitsCondition (trekClient.GetShip(), afterburnerButtonIGC);
Goal* pGoal = new Goal (pGetStateBitsCondition);
if (GetWindow ()->GetInputEngine ()->GetJoystickCount () > 0)
{
pGoal->AddStartAction (new PlaySoundAction (tm_2_32Sound));
pGoal->AddConstraintCondition (CreateTooLongCondition (30.0f, tm_2_32Sound));
pGoal->AddStartAction (new MessageAction ("Press and hold button #3 on your joystick to fire the booster."));
}
else
{
pGoal->AddStartAction (new PlaySoundAction (tm_2_33Sound));
pGoal->AddConstraintCondition (CreateTooLongCondition (30.0f, tm_2_33Sound));
pGoal->AddStartAction (new MessageAction ("Press and hold the TAB key to fire the booster."));
}
SetControlConstraintsAction* pSetControlConstraintsAction = new SetControlConstraintsAction;
pSetControlConstraintsAction->EnableInputAction (afterburnerButtonIGC);
pGoal->AddStartAction (pSetControlConstraintsAction);
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (5.0f)));
{
Goal* pGoal = CreatePlaySoundGoal (tm_2_34Sound);
SetControlConstraintsAction* pSetControlConstraintsAction = new SetControlConstraintsAction;
pSetControlConstraintsAction->DisableInputAction (afterburnerButtonIGC);
pGoal->AddStartAction (pSetControlConstraintsAction);
pGoalList->AddGoal (pGoal);
}
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
return new Goal (pGoalList);
}
Goal* Mission2::CreateGoal08 (void)
{
GoalList* pGoalList = new GoalList;
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_35Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_36Sound));
pGoalList->AddGoal (new Goal (new ElapsedTimeCondition (0.5f)));
pGoalList->AddGoal (CreatePlaySoundGoal (tm_2_37Sound));
{
ImodelIGC* pStation = trekClient.GetCore ()->GetModel (OT_station, 1010);
Goal* pGoal = new Goal (new AndCondition (new ObjectWithinRadiusCondition (trekClient.GetShip (), pStation, 500.0f), new ElapsedTimeCondition (0.5f)));
pGoal->AddStartAction (new SetCommandAction (trekClient.GetShip (), c_cmdCurrent, pStation, c_cidGoto));
pGoal->AddStartAction (new SetCommandAction (trekClient.GetShip (), c_cmdAccepted, pStation, c_cidGoto));
pGoal->AddStartAction (new SetAutopilotAction (trekClient.GetShip ()));
SetControlConstraintsAction* pSetControlConstraintsAction = new SetControlConstraintsAction;
pSetControlConstraintsAction->DisableInputAction (afterburnerButtonIGC);
pGoal->AddStartAction (pSetControlConstraintsAction);
pGoal->AddConstraintCondition (new PeriodicCondition (new ConditionalAction (new NotCondition (new GetAutopilotCondition (trekClient.GetShip ())), new SetAutopilotAction (trekClient.GetShip ())), 2.0f));
pGoalList->AddGoal (pGoal);
}
return new Goal (pGoalList);
}
Goal* Mission2::CreateGoal09 (void)
{
GoalList* pGoalList = new GoalList;
{
Goal* pGoal = CreatePlaySoundGoal (tm_2_38Sound);
pGoal->AddConstraintCondition (new PeriodicCondition (new ConditionalAction (new NotCondition (new GetAutopilotCondition (trekClient.GetShip ())), new SetAutopilotAction (trekClient.GetShip ())), 2.0f));
pGoalList->AddGoal (pGoal);
}
{
Goal* pGoal = new Goal (new FalseCondition);
pGoal->AddStartAction (new SetDisplayModeAction (TrekWindow::cmExternalStation));
pGoal->AddConstraintCondition (new PeriodicCondition (new ConditionalAction (new NotCondition (new GetAutopilotCondition (trekClient.GetShip ())), new SetAutopilotAction (trekClient.GetShip ())), 2.0f));
pGoalList->AddGoal (pGoal);
}
return new Goal (pGoalList);
}
}