void Stockpile::UpdateEntity() { bool bShowStore = false; auto& players = g_gameView->GetPlayers(); for (auto pPlayer : players) { if (IsAround(pPlayer)) { bShowStore = true; if (pPlayer->HasCarryOn()) { if (pPlayer->GetDropType() != DropType::INVALID) { auto dropType = pPlayer->GiveCarryOn(); if (dropType == DropType::Rock) { resources[dropType] += 2; OPlaySound("RitualSFX_Stone_Deposit.wav"); m_pRockSprite->GetPositionAnim().startKeyframed(Vector2(8, 4), {OAnimAppleStyleBounce(Vector2(8, 4), Vector2(8, -2))}); UpdateTexts(); } if (dropType == DropType::Wood) { resources[dropType]++; OPlaySound("RitualSFX_Wood_Deposit.wav"); m_pWoodSprite->GetPositionAnim().startKeyframed(Vector2(22, 4), {OAnimAppleStyleBounce(Vector2(22, 4), Vector2(22, -2))}); UpdateTexts(); } } } } } if (bShowStore && !m_bSomeoneAround) { g_gameView->ShowStore(); } if (!bShowStore && m_bSomeoneAround) { g_gameView->HideStore(); } m_bSomeoneAround = bShowStore; }
void isdf07Mission::Execute(void) { /* The following is needed for editing cineractives. */ if (BeginCin == true) { BeginCin = PlayMove(); } if (BeginSeq == true) { char temp[20] = "***"; BeginSeq = PlayMovie(temp); } if (IFace_GetFloat("script.cin.edit") == 1.0) { // cinToolSetup(); IFace_SetFloat("script.cin.edit", 0.0); } /* The above is needed for editing cineractives. */ player = GetPlayerHandle(); //This section evaluates what has happened. checkWing(shabayev, player); //Did we hurt our friendly instructor. switch (missionState) { case 0: //This will do the setup for the mission. spawn1 = GetHandle("spawn_1"); spawn2 = GetHandle("spawn_2"); spawn3 = GetHandle("spawn_3"); creature1=BuildObject("mcjak01",0,"creature1"); creature2=BuildObject("mcjak01",0,"creature2"); creature3=BuildObject("mcjak01",0,"creature3"); creature4=BuildObject("mcjak01",0,"creature4"); shabayev = BuildObject("ivtank",3,"spawn_shab"); recy = GetHandle("recycler"); ruins = GetHandle("ruins"); SetScrap(1, 40); // playerEnemy1 = BuildObject("fvtank", 2, spawn3); // Attack(playerEnemy1, player, 1); CommandShab(); AudioMessage("isdf0701.wav"); AudioMessage("isdf0740.wav"); AudioMessage("isdf0702.wav"); AudioMessage("isdf0703.wav"); SetSkill(shabayev,3); SendEnemies(0,player); { // brad added int poolHandle = GetHandle(288); SpawnBirds(1, 5, "mcwing01", 0, poolHandle, poolHandle); } missionState++; break; case 1: //Check to see if the player has deployed their recycler. if (!getNewOrder) { ClearObjectives(); AudioMessage("isdf0704.wav"); AddObjective("isdf0701.otf", WHITE); reminderTimer = (GetTime() + 60.0f); if (!IsAlive(animal1)) { animal1 = BuildObject("mcjak01", 2, spawn3); //This will be changed to the animal Goto(animal1, recy); SetIndependence(animal1, 0); } getNewOrder = true; } // recyDeployed = IsDeployed(recy); if (recyDeployed) { AudioMessage("isdf0706.wav"); missionState++; getNewOrder = false; } if ((IsAlive(playerEnemy1)) && (!enemy1deployed) && (GetDistance(recy,playerEnemy1)<100.0f)) { enemy1deployed=true; } if ((!IsAlive(playerEnemy1)) && (!IsAlive(enemy1))) { playerEnemy1 = BuildObject("fvtank", comp_team, spawn3); Attack(playerEnemy1, player, 1); } break; case 2: //Check to see if the player has built a scavenger. if (!getNewOrder) { ClearObjectives(); AddObjective("isdf0702.otf", WHITE); reminderTimer = (GetTime() + 60.0f); AudioMessage("isdf0708.wav"); getNewOrder = true; } if (scavBuilt) { AudioMessage("isdf0707.wav"); reminderTimer = (GetTime() + 30.0f); missionState++; getNewOrder = false; } if ((IsAlive(playerEnemy1)) && (!enemy1deployed) && (GetDistance(recy,playerEnemy1)<100.0f)) { enemy1deployed=true; } if ((!IsAlive(playerEnemy1)) && (!IsAlive(enemy1))) { playerEnemy1 = BuildObject("fvtank", 2, spawn3); Attack(playerEnemy1, player, 1); } break; case 3: //Check to see if the player has built a construction rig. if (!getNewOrder) { ClearObjectives(); AddObjective("isdf0703.otf", WHITE); AudioMessage("isdf0710.wav"); reminderTimer = (GetTime() + 60.0f); getNewOrder = true; } if ((IsAlive(playerEnemy1)) && (!enemy1deployed) && (GetDistance(recy,playerEnemy1)<100.0f)) { enemy1deployed=true; } if (constBuilt) { missionState++; getNewOrder = false; } break; case 4: //Check to see if the player has built a power plant. if (!getNewOrder) { ClearObjectives(); AddObjective("isdf0704.otf", WHITE); AudioMessage("isdf0714.wav"); reminderTimer = (GetTime() + 60.0f); getNewOrder = true; } if (powerBuilt) { missionState++; getNewOrder = false; } if ((!IsAlive(playerEnemy1)) && (!IsAlive(enemy1))) { playerEnemy1 = BuildObject("fvtank", 2, spawn3); Attack(playerEnemy1, player, 1); } break; case 5: // check to see if the player has built a relay bunker if (!getNewOrder) { ClearObjectives(); AddObjective("isdf0705.otf", WHITE); AudioMessage("isdf0716.wav"); reminderTimer = (GetTime() + 60.0f); getNewOrder = true; } if (relayBuilt) { missionState++; getNewOrder = false; } break; case 6: //Check to see if the player has built a gun tower if (!getNewOrder) { ClearObjectives(); AddObjective("isdf0706.otf", WHITE); AudioMessage("isdf0719.wav"); reminderTimer = (GetTime() + 60.0f); getNewOrder = true; } if (gunTowBuilt) { missionState++; artil=BuildObject("fvartl",2,"artil"); Goto(artil,"artillery"); Handle temp=BuildObject("fvscout",2,spawn2); Follow(temp,artil); BuildObject("fvscout",2,spawn3); Follow(temp,artil); artil_counter=0; getNewOrder = false; } break; case 7: // now they will use artillery artil_counter++; if (artil_counter==300) { Attack(artil,gtow); // CameraReady(); } if ((artil_counter>300) & (artil_counter<355)) { // CameraObject(artil,12,8,3,artil); } if (artil_counter==355) { // CameraFinish(); missionState++; } // cheesy code but I am tired break; case 8: if (!IsAlive(artil)) { missionState++; } break; } float currentTime = GetTime(); if ((reminderTimer < currentTime) && (getNewOrder)) { //This checks to see if we should remind the player of his order. getNewOrder = false; } harrass_count++; if (harrass_count%701==0) { SendEnemies(1,player); } CommandShab(); handlePlayerMistakes(); if (shabState<3) { if ((!IsAlive(shabayev) && (!shab_dead))) { AudioMessage("isdf0732.wav"); ClearObjectives(); AddObjective("isdf05l1.otf",RED,15.0f); FailMission(GetTime()+5.0f,"isdf05l1.otf"); shab_dead=true; } } if ((!IsAround(recy)) && (!shab_dead)) { FailMission(GetTime()+5.0f,"isdf05l1.otf"); shab_dead=true; } }
void isdf07Mission::CommandShab() { char tempstr[128]; switch (shabState) { case 0: //setup the first batch of enemies shabEnemy1 = BuildObject("fvsent", comp_team, spawn1); shabEnemy2 = BuildObject("fvsent", comp_team, spawn2); Attack(shabEnemy1, shabayev, 1); Attack(shabEnemy2, shabayev, 1); Attack(shabayev, shabEnemy1, 1); shabState++; break; case 1: //do nothing until the first enemy gets killed if (!IsAlive(shabEnemy1)) { if (IsAlive(shabEnemy2)) { Attack(shabayev, shabEnemy2, 1); shabState++; } else { shabState++; } } if (gunTowBuilt) { //If shab can't kill anybody do it for her Damage(shabEnemy1, 3000); if (IsAlive(shabEnemy2)) { Damage(shabEnemy2, 3000); } ClearObjectives(); AddObjective("isdf0707.otf", WHITE); Goto(shabayev, "tree_point", 1); AudioMessage("isdf0728.wav"); shabState = 3; BugFix=GetTime()+60.0f; } break; case 2: //go NEAR the ruin when all of the enemies are killed if ((missionState>8) && (IsAlive(shabEnemy2))) { //If shab can't kill anybody do it for her Damage(shabEnemy2, 3000); } if ((!IsAlive(shabEnemy1)) && (!IsAlive(shabEnemy2)) && (!gunTowBuilt)) { shabEnemy2 = BuildObject("fvsent", 2, spawn1); Attack(shabayev, shabEnemy2, 1); Attack(shabEnemy2, shabayev, 1); } if ((!IsAlive(shabEnemy1)) && (!IsAlive(shabEnemy2)) && (gunTowBuilt)) { ClearObjectives(); AddObjective("isdf0710.otf", WHITE); AudioMessage("isdf0728.wav"); Goto(shabayev, "tree_point", 1); BugFix=GetTime()+20.0f; shabState++; } break; case 3: //hop out of the vehicle when near the ruin if (GetTime()>BugFix) { Goto(shabayev,"tree_point"); BugFix=GetTime()+10.0f; } if (((GetDistance(shabayev, "tree_point") < 25.0)) && ((!IsAlive(enemy1)) || (!IsAlive(enemy2)))) { ClearObjectives(); AudioMessage("isdf0725.wav"); AddObjective("isdf0707.otf", WHITE); justHoped = true; HopOut(shabayev); // SetObjectiveOn(shabOnFoot); hunter= BuildObject("fvsent",comp_team,"hunter"); // Patrol(temp,"hunter_path"); Attack(hunter,shabayev); // blow up shabs craft CameraReady(); reminderTimer=GetTime()+60.0f; shabState++; } break; case 4: oldPlayer=HoppedOutOf(shabOnFoot); // because shab becomes 0 { Vector pos; pos = GetPosition(oldPlayer); CameraObject(oldPlayer,2,5,-7,oldPlayer); LookAt(shabOnFoot, ruins, 1); RemoveObject(oldPlayer); oldPlayer=BuildObject("petank",1,pos); } shabState++; break; case 5: if (movie_counter<70) { CameraObject(oldPlayer,2,2,-7,oldPlayer); movie_counter++; } else { RemoveObject(oldPlayer); Handle temp=BuildObject("ibnav",1,"tree_point"); TranslateString2(tempstr, sizeof(tempstr), "Mission0701"); // Rescue SetObjectiveName(temp,tempstr); SetObjectiveOn(temp); CameraFinish(); shabState++; } break; case 6: //order the player to get out of his vehicle once he gets close if ((!IsAround(shabayev)) && (!ship_blown_up)) { Patrol(hunter,"hunter_path"); SetIndependence(hunter,0); ship_blown_up=true; } if ((!IsAlive(shabOnFoot) && (!shab_dead))) { AudioMessage("isdf0732.wav"); ClearObjectives(); AddObjective("isdf05l1.otf",RED,15.0f); FailMission(GetTime()+5.0f,"isdf05l1.otf"); shab_dead=true; } if (GetTime()>reminderTimer) { AudioMessage("isdf0725.wav"); reminderTimer=GetTime()+60.0f; } if ((GetDistance(shabOnFoot, player) < 50.0)) { //RemoveObject(shabayev); Attack(shabEnemy1,shabayev); Attack(shabEnemy2,shabayev); ClearObjectives(); AudioMessage("isdf0729.wav"); AddObjective("isdf0708.otf", WHITE); shabState++; } break; case 7: //send shab to get the relic if ((!IsAlive(shabOnFoot) && (!shab_dead))) { AudioMessage("isdf0732.wav"); ClearObjectives(); AddObjective("isdf05l1.otf",RED,15.0f); FailMission(GetTime()+5.0f,"isdf05l1.otf"); shab_dead=true; } if (playerOnFoot) { Attack(shabEnemy1,oldPlayer); Attack(shabEnemy2,oldPlayer); Goto(shabOnFoot, ruins, 1); //we should start the patrols here shabState++; } break; case 8: //get shab hurt if ((!IsAlive(shabOnFoot) && (!shab_dead))) { AudioMessage("isdf0732.wav"); ClearObjectives(); AddObjective("isdf05l1.otf",RED,15.0f); FailMission(GetTime()+5.0f,"isdf05l1.otf"); shab_dead=true; } if ((GetDistance(shabOnFoot, ruins) < 20.0f) || (GetDistance(player,ruins)<10.0f)) { if (winMission == false) { AudioMessage("isdf0731.wav"); // wrong file name SucceedMission(GetTime()+5.0f,"isdf07w1.txt"); winMission = true; } } break; case 9: //hide shab break; case 10: //play closing cineractive // The following is an example of how to play a movie in a script. moviePlaying = PlayMovie("temp"); if (!moviePlaying) { missionState++; moviePlaying = true; //IFace_SetInteger("script.mission.state", 1); } break; } if (GetHealth(shabayev) < 0.7f) { //keep shab alive AddHealth(shabayev, 100); } if ((GetAmmo(shabayev)) < 0.5f) { AddAmmo(shabayev, 500); } if ((justHoped) && (!IsAlive(shabOnFoot))) { int i; i=1; // Houston we have a problem } }
void isdf08Mission::Execute(void) { /* Here is where you put what happens every frame. */ player = GetPlayerHandle(); char tempstr[128]; if (!start_done) { shab=GetHandle("shabayev"); start_done=true; Handle temp=BuildObject("ibnav",1,"manson_base"); TranslateString2(tempstr, sizeof(tempstr), "Mission0801"); // West Base SetObjectiveName(temp,tempstr); GiveWeapon(player, "igsatc"); first_aud=AudioMessage("mes0801.wav"); // was isdf0801 // I don't know what these are or where they go /* Handle sp=BuildObject("fvtank",2,"spawn1"); SetSkill(sp,3); sp=BuildObject("fvsent",2,"spawn2"); SetSkill(sp,3); sp=BuildObject("fvtank",2,"spawn3"); SetSkill(sp,3); sp=BuildObject("fvsent",2,"spawn4"); SetSkill(sp,4); SetScrap(1,30); */ // These ships circle the ruin you're in at the beginning, then leave pilot1=BuildObject("fvtank",2,"pilot_1"); pilot2=BuildObject("fvtank",2,"pilot_2"); pilot3=BuildObject("fvsent",2,"pilot_3"); // They are dumb SetIndependence(pilot1,0); SetIndependence(pilot2,0); SetIndependence(pilot3,0); // These are the patrol paths for the vehicles Goto(pilot1,"start1"); Goto(pilot2,"start2"); Goto(pilot3,"start3"); // These turrets block the path to the south turret1=BuildObject("fvturr",2,"turret_1"); turret2=BuildObject("fvturr",2,"turret_2"); // These jaks inhabit the swamp just west of the starting point jak1=BuildObject("mcjak01",0,"jak_1"); Patrol(jak1,"jakpatrol1",1); SetIndependence(jak1,1); jak2=BuildObject("mcjak01",0,"jak_2"); Patrol(jak2,"jakpatrol2",1); SetIndependence(jak2,1); jak3=BuildObject("mcjak01",0,"jak_3"); Patrol(jak3,"jakpatrol3",1); SetIndependence(jak3,1); // This spire guards the entrance to the Scion base espir1=BuildObject("fbspir",2,"espir_1"); // SetIndependence(espir1,0); // These 3 ships patrol different areas scout1=BuildObject("fvtank",2,"patrol_1"); Patrol(scout1,"patrol_1",0); scout2=BuildObject("fvtank",2,"patrol_2"); Patrol(scout2,"patrol_2",0); // this should be a bazooka or something BuildObject("aptech",0,"weapon_1"); // pilots around second patrol ship #if 0 // 'sssold' won't save/reload properly - NM 9/28/04 pilot7=BuildObject("sssold",2,"pilot_5"); Patrol(pilot7,"pilotpatrol1",0); pilot8=BuildObject("sssold",2,"pilot_6"); Patrol(pilot8,"pilotpatrol2",0); #endif // jak blocking power ups before ruins jak7=BuildObject("mcjak01",0,"jak_7"); Patrol(jak7,"jakpatrol7",1); // power up in the second nest of puff plants BuildObject("aprepa",0,"health_1"); BuildObject("apammo",0,"ammo_1"); BuildObject("apbazo",0,"weapon1"); // jak creatures hanging around ruins jak4=BuildObject("mcjak01",0,"jak_4"); Patrol(jak4,"jakpatrol4",1); jak5=BuildObject("mcjak01",0,"jak_5"); Patrol(jak5,"jakpatrol5",1); // power ups near ruins BuildObject("aprepa",0,"health_2"); BuildObject("apammo",0,"ammo_2"); SetAnimation(shab,"speak"); fvartl=BuildObject("fvartl",2,"fvartl"); } if ((IsAudioMessageDone(first_aud)) && (!shab_still)) { shab_still=true; SetAnimation(shab,"speak",1); } if ((!IsAround(shab)) && (!reached_base)) { FailMission(GetTime()+5.0f,"genFail.txt"); reached_base=true; } // Gun tower shoots at you if you get within 100 meters if (inside_espir1) { if (GetDistance(espir1,player) > 50.0f) { inside_espir1=false; Stop(espir1); } } else { if (GetDistance(espir1,player) < 50.0f) { inside_espir1 = true; Attack(espir1,player); } } if ((!jak1_attack) && (GetDistance(jak1,player)<50.0f)) { jak1_attack=true; Stop(jak1,player); } if ((!jak2_attack) && (GetDistance(jak2,player)<50.0f)) { jak2_attack=true; Stop(jak2,player); } if ((!jak3_attack) && (GetDistance(jak3,player)<50.0f)) { jak3_attack=true; Stop(jak3,player); } if ((!jak4_attack) && (GetDistance(jak4,player)<50.0f)) { jak4_attack=true; Stop(jak4,player); } if ((!jak5_attack) && (GetDistance(jak5,player)<50.0f)) { jak5_attack=true; Stop(jak5,player); } // If you shoot any of the patrol ships in the beginning, they will attack you if (((GetWhoShotMe(pilot1) == player) || (GetWhoShotMe(pilot2) == player) || (GetWhoShotMe(pilot3) == player)) && (!patrol_attacked)) { Attack(pilot1,player); Attack(pilot2,player); Attack(pilot3,player); patrol_attacked=true; } // Once the patrol from the beginning leaves the ruins, they disappear from the map if ((GetDistance(pilot1,"killpatrol1")<64.0f)) { RemoveObject(pilot1); } if ((GetDistance(pilot2,"killpatrol1")<64.0f)) { RemoveObject(pilot2); } if ((GetDistance(pilot3,"killpatrol1")<64.0f)) { RemoveObject(pilot3); } if (((GetDistance(pilot1,"turret_1")<192.0f) || (GetDistance(pilot2,"turret_1")<192.0f) || (GetDistance(pilot3,"turret_1")<192.0f)) && (!played_0802)) { // message1=AudioMessage("isdf0802.wav"); ClearObjectives(); AddObjective("isdf0801.otf",WHITE,15.0f); played_0802=true; } if ((played_0802) && (IsAudioMessageDone(message1)) && (GetDistance(player,"start_point")<20.0f) && (!played_0803)) { // AudioMessage("isdf0803.wav"); played_0803=true; } if ((!played_0804) && (played_0802) && (GetDistance(player,"play_0804")<80.0f)) { AudioMessage("isdf0804.wav"); played_0804=true; } if ((!played_0805) && (played_0802) && (GetDistance(player,"play_0805")<80.0f)) { AudioMessage("isdf0805.wav"); played_0805=true; } if ((GetDistance(player,turret1)<150.0f) && (!played_0806)) { AudioMessage("isdf0806.wav"); played_0806=true; } if ((!played_0807) && (GetDistance(player,"sees_datatransfer")<100.0f)) { AudioMessage("isdf0807.wav"); played_0807=true; ClearObjectives(); AddObjective("isdf0801.otf",WHITE,10.0f); } // As you exit the ruins, 3 Scion ships spawn in the Scion base and head towards you if (((GetDistance(player,"exitruin_1")<80.0f) || (GetDistance(player,"exitruin_2")<80.0f)) && (!trigger1)) { attack1=BuildObject("fvtank",2,"attack_1"); attack2=BuildObject("fvsent",2,"attack_2"); attack3=BuildObject("fvtank",2,"attack_3"); Attack(attack1,player); Attack(attack2,player); Attack(attack3,player); trigger1=true; } if ((trigger1) && (!played_0808)) { AudioMessage("isdf0808.wav"); played_0808=true; } if (((GetDistance(player,attack1)<300.0f) || (GetDistance(player,attack2)<300.0f) || (GetDistance(player,attack3)<300.0f)) && (!played_0809)) { AudioMessage("isdf0809.wav"); played_0809=true; } #if 0 // isdf0811.wav doesn't exist - NM 11/14/03 if (((GetDistance(player,attack1)<100.0f) || (GetDistance(player,attack2)<100.0f) || (GetDistance(player,attack3)<100.0f)) && (!played_0811)) { AudioMessage("isdf0811.wav"); played_0811=true; } #endif // If you head south, the turrets will kill you // if I am between entering the swamp and // I hide in water (near swampn) then the patrols ignore me if ((played_0804) && (!trigger2)) { if ((GetDistance(player,"swamp1")<50.0f) || (GetDistance(player,"swamp2")<50.0f) || (GetDistance(player,"swamp3")<50.0f) || (GetDistance(player,"swamp4")<50.0f) || (GetDistance(player,"swamp5")<50.0f) || (GetDistance(player,"swamp6")<50.0f) || (GetDistance(player,"swamp7")<50.0f)) { SetPerceivedTeam(player,2); SetIndependence(scout1,0); SetIndependence(scout2,0); } else { SetPerceivedTeam(player,1); SetIndependence(scout1,1); SetIndependence(scout2,1); } if ((!detected) && ((GetWhoShotMe(scout1)==player) ||(GetWhoShotMe(scout2)==player))) { Attack(scout1,player); Attack(scout2,player); detected=true; } } // As you approach the ISDF base, 3 friendly units launch to protect you from the Scion attackers if (((GetDistance(player,"enterbase_1")<100.0f) || (GetDistance(player,"enterbase_2")<100.0f) || (GetDistance(player,"enterbase_3")<100.0f)) && (!trigger2)) { rescue1=BuildObject("ivtank",1,"rescue_1"); rescue2=BuildObject("ivmbike",1,"rescue_2"); rescue3=BuildObject("ivtank",1,"rescue_3"); Attack(rescue1,attack1); Attack(rescue2,attack1); Attack(rescue3,attack1); trigger2=true; } if ((!IsAlive(attack1)) && (!killed_attack1)) { Attack(rescue1,attack2); Attack(rescue2,attack2); Attack(rescue3,attack2); killed_attack1=true; } if ((!IsAlive(attack2)) && (!killed_attack2)) { Attack(rescue1,attack3); Attack(rescue2,attack3); Attack(rescue3,attack3); killed_attack2=true; } if ((GetDistance(player,"edge_warning1")<25.0f) && (GetDistance(player,"edge_warning1")<25.0f) && (!edge_attack)) { edge_attack=true; Attack(fvartl,player); } // If the ISDF ships get close to the Scion attack squadron, the Scions will stop chasing you and fight the ships if ((GetDistance(rescue1,attack1)<50.0f) || (GetDistance(rescue1,attack2)<50.0f) || (GetDistance(rescue1,attack3)<50.0f) || (GetDistance(rescue2,attack1)<50.0f) || (GetDistance(rescue2,attack2)<50.0f) || (GetDistance(rescue2,attack3)<50.0f) || (GetDistance(rescue3,attack1)<50.0f) || (GetDistance(rescue3,attack2)<50.0f) || (GetDistance(rescue3,attack3)<50.0f)) { Attack(attack1,rescue1); Attack(attack2,rescue2); Attack(attack3,rescue3); } // If you've killed all the attack vehicles and entered the base, the mission is a success if (((GetDistance(player,"endmission1")<100.0f) || (GetDistance(player,"endmission2")<100.0f)) && (!IsAlive(attack1)) && (!IsAlive(attack2)) && (!IsAlive(attack3)) && (!reached_base)) { AudioMessage("isdf0514.wav"); SucceedMission(GetTime()+10.0f,"isdf08w1.txt"); reached_base=true; } }