/* Scenario: RgrAttk4 : "Cleanup Operation" * ==================================== Map making notes: - Make sure that we have 100% DNA dinosaurs before building the hatcheries and placing dinosaurs! - Make sure that there are no exits (ie. welcome centre) buildings for the visitors to hide in. - Don't build any visitor shelters in parks that require visitors to be rescued. The visitors will go into the shelter and the player won't be able to rescue them Briefing: "Something has gone terribly wrong with the hatcheries in the Park. They’ve have gone haywire, and cannot stop producing dangerous dinosaurs. These carnivores have overrun the park and killed many visitors, and are now eating their way through the remaining dinosaur population. You must retire all carnivores, rescue any surviving visitors and shut down the hatcheries before a government investigation team arrives. The federal team ETA is 15 minutes. Please help us..." The player has a complex set of objectives here. By the time the time limit is up, the player must have: - Retired all carnivores in the Park, - Rescued any surviving visitors, - Shut down the autonomous hatcheries. o The Hatcheries operate as dinosaur generators [think Gauntlet] - the power boxes on the Hatcheries need to be shot three times in order to shut the hatcheries down. Each hatchery will need to be aware of the status of the dinosaurs it has produced. o The Hatcheries will maintain the dinosaur population at it’s commencement level; whenever a dinosaur is retired but the hatchery that produced it is still in operation, that Hatchery will spawn a replacement dinosaur. o There are 6 hatcheries in the park; they are all responsible for producing one species each from the carnivore list. o Carnivores in the park: - 3 x Spinosaurus [Hatchery 1] (Chenini) - 4 x Tyrannosaurus [Hatchery 2] (Judith River B) (CUT) - 4 x Carcharadontosaurus [Hatchery 3] (Chenini) - 15 x Velociraptor [Hatchery 4] (Flaming Cliffs) o Herbivores in the Park [these are not replenished] - 10 x Corythosaurus (Judith River B) (CUT) - 5 x Ouranosaurus (Chenini) (CUT) - 10 x Gallis (Flaming Cliffs) o Visitors in the Park: There are 10 visitors scattered about the park awaiting rescue. o Victory conditions: - The player rescues the visitors, shuts down the Hatcheries and retires all carnivores before the government investigation team arrives. o Failure Conditions: After 15 minutes, - The player fails to rescue the visitors, - The player does not retire all carnivores, - The player does not shut down all 6 hatcheries */ mission RgrAttk4 { ;// mission info .info "budget" 0 .info "objectives" 2 .info "savestate" "RgrAttk4" ;// systems to activate/de-activate .systemactive "Economy" false .systemactive "Mail" false .systemactive "Visitor Pool" false .systemactive "Corporate System" false .systemactive "Build Menu" false .systemactive "Enclosure Analyser" false .systemactive "Weather System" false ;// features to disable .featuredisable "AParkGuestbookDialog" .featuredisable "AParkSafetyDialog" .featuredisable "AStructureSummaryDialog" .featuredisable "AParkFinanceDialog" .featuredisable "ADinoSummaryDialog" .featuredisable "GotoParkEntrance" .featuredisable "EmergencyOn" .featuredisable "GotoSafari" .featuredisable "AResearchDialog" .featuredisable "Manager" .featuredisable "SaveGame" ;// Disable all save game menu .featuredisable "LoadGame" ;// Disable all load game menu .featuredisable "ParkManager_Dinosaurs" ;// Disable all "dinosaurs" submenu .featuredisable "ParkManager_Build" ;// Disable the build menu .featuredisable "Command_Orders" ;// Disables ALL "order" commands .featuredisable "AutoRescue" ;// Disables automatic rescues .featuredisable "BuildParkEntrance" ;// Disable build park entrace from manager ;// fossil maps to enable .fossilsenable "Chenini" .fossilsenable "FlamingCliffs" .fossilsenable "JudithRiverB" ;// Set up mission and objective variables .misparam 6 ;// Total mission time (in minutes) .objparam 1 0 ;// Number of hatcheries still operating .objparam 2 0 ;// Number of dinosaurs still around ; .objparam 3 5 0 ;// (Minimum number of visitors needed to be rescued), (Number Left) ;// variable declarations .var iCarnivoresLeft .var iHatcheriesOperating .var iMinVisitorCount .var iStartVisitorCount .var iCurrVisitorCount .var iCurrStep ;// mission states state MissionInit { action SetWeatherFrequency(0, 100) action SetWeatherFrequency(1, 0) action SetWeatherFrequency(2, 0) action SetWeatherFrequency(3, 0) action SetWeatherFrequency(4, 0) action SendWeather(0) action LockCurrentWeather(true) action SetAllSpeciesDinoDNA(100); action VaccinateAllDinosaurs() action RemoveAllMailMessages() iStartVisitorCount = GetVisitorCount() iMinVisitorCount = 5 ;// Emergency mode forces the visitors to find a secure place to stay (or the exit), ;// but also ensures that they don't go into buildings ;// Make sure the exit action SetEmergencyMode(true) ;// Force all visitors to stay outside buildings to make sure they can be picked up by the helicopter action SetAllVisitorFlags(4096, true) ;// Set up minigame action SetCurrentMiniGameParamList(0) ; This is param list AddMiniGameParam() will add Params to action AddMiniGameParam("IsScenario", true) ;// Make it so that the user can't exit the minigame action AddMiniGameParam("SetMiniGameExitEnable", false) ;// **** Allow/Disallow different ranger "modes" ;// Enable Retire action AddMiniGameParam("SetModeEnable", 4, true) ;// Enable Rescue Visitor action AddMiniGameParam("SetModeEnable", 7, true) ;// **** Allow/Disallow components ;// Allow retire of all dinosaurs, but don't count herbivores as targets, allow the hatcheries to be disabled action AddMiniGameParam("SetRetireFlags", 25) ;// Initialises bullet limitations action AddMiniGameParam("InitBulletLimit", 40); ;// Make sure the dinos don't avoid the helicopter. If they avoid the helicopter, they ;// tend not eat people... :-) action AddMiniGameParam("SetDinoAvoidance", false) ;// The user can freely enter and leave minigames within the mission. ;// Whenever a new minigame is created, it will use this parameter list action SetDefaultMiniGameParamList(0) ;// Start the minigame - RgrAttack(0), Game #4 ;// action StartMiniGame(0, 4) ;// This is now performed by the PlayTransition call while the screen is black! action SetDinoTypeToMissionMode(6) transition { direct goto PlayFlyOver } } state PlayFlyOver { transition PlayTransition(0, false, 0) { goto StartMission } } state StartMission { transition ShowMissionIntro("facebuttonMuldoon") { iCurrStep = 1 ;// Start timer action EnableMissionTimer(true) action StartMissionTimer(360.0) action StartTimer(2, 5) goto MainLoop } } state NextStep { action AddImm(iCurrStep, 1) transition { goto MainLoop } } ;// Check to see if the minigame has been completed state MainLoop { ;// Keep carnivores enraged transition iCurrStep == 1 { action SetDinoStress(4, 1.0) goto NextStep } ;// Check if hatcheries have been stopped transition iCurrStep == 2 { goto CheckHatcheries } ;// Check if carnivores have been killed transition iCurrStep == 3 { goto CheckCarnivores } ;// Check if visitors have been rescued/are alive transition iCurrStep == 4 { ; goto CheckVisitors goto NextStep } transition iCurrStep == 5 { goto CheckTime } transition NumCompleteObjectives() == 2 { goto MissionVictory } transition iCurrStep == 6 { iCurrStep = 1 goto MainLoop } } state CheckHatcheries { iHatcheriesOperating = NumHatcheriesOperating() action SetObjectiveParametersFromVars(1, iHatcheriesOperating) ;// Not all hatcheries have been stopped transition iHatcheriesOperating != 0 { action SetObjectiveStatus(1, false) goto NextStep } ;// All hatcheries have stopped action SetObjectiveStatus(1, true) transition { goto NextStep } } state CheckCarnivores { iCarnivoresLeft = GetDinoTypeCount(4) action SetObjectiveParametersFromVars(2, iCarnivoresLeft) transition iHatcheriesOperating != 0 { ;// There will always be more dinosaurs coming out when a hatchery is still in operation goto NextStep } transition iCarnivoresLeft != 0 { ;// Not all carnivores have been killed action SetObjectiveStatus(2, false) goto NextStep } ;// All carnivores have been killed action SetObjectiveStatus(2, true) transition { goto NextStep } } state CheckVisitors { action SetObjectiveStatus(3, false) iCurrVisitorCount = GetVisitorCount() action SetObjectiveParametersFromVars(3, iMinVisitorCount, iCurrVisitorCount) transition iCurrVisitorCount > iMinVisitorCount { ;// Some visitors are left goto NextStep } ;// No visitors are left transition GetStatistic("VisitorRescues", 1) < 1.0 { ;// No visitors are left and no visitors have been rescued goto MissionFailureAllVisitorsDead } ;// All visitors are gone from the park and at least one was rescued transition { action SetObjectiveStatus(3, true) goto NextStep } } state CheckTime { transition HasMissionTimerElapsed() { ;// Outta time goto MissionFailureOuttaTime } transition HasTimerElapsed(2) { action StartTimer(2, 20) action SetDinoTypeToMissionMode(6) goto NextStep } transition { ;// Not outta time goto NextStep } } ;// Success state MissionVictory { action StartTimer(1, 5) transition { goto MissionVictoryWait } } state MissionVictoryWait { transition HasTimerElapsed(1) { goto MissionVictoryShow } } state MissionVictoryShow { transition ShowMissionVictory("facebuttonMuldoon") { action SetMissionWon() action UnlockMission("RgrMust4") action SaveOptions() goto SaveOptions } } state SaveOptions { transition NotCurrentGameState("AOptionsSaveState") { goto MissionComplete } } ;// Mission failed because all the visitors were killed before being rescued state MissionFailureAllVisitorsDead { transition ShowMissionFailure("facebuttonMuldoon", "Mission_RgrAttk4_Failure_VisitorsDead") { goto MissionComplete } } ;// Mission failed because the gallis weren't mustered within the given time state MissionFailureOuttaTime { transition ShowMissionFailure("facebuttonMuldoon", "Mission_RgrAttk1_Failure_OuttaTime") { goto MissionComplete } } ;// Go back to the front screen final state MissionComplete { } }