bool CUPnPPlayer::QueueNextFile(const CFileItem& file) { CFileItem item(file); NPT_Reference<CThumbLoader> thumb_loader; NPT_Reference<PLT_MediaObject> obj; NPT_String path(file.GetPath().c_str()); NPT_String tmp; if (file.IsVideoDb()) thumb_loader = NPT_Reference<CThumbLoader>(new CVideoThumbLoader()); else if (item.IsMusicDb()) thumb_loader = NPT_Reference<CThumbLoader>(new CMusicThumbLoader()); obj = BuildObject(item, path, 0, thumb_loader, NULL, CUPnP::GetServer(), UPnPPlayer); if(!obj.IsNull()) { NPT_CHECK_LABEL_SEVERE(PLT_Didl::ToDidl(*obj, "", tmp), failed); tmp.Insert(didl_header, 0); tmp.Append(didl_footer); } NPT_CHECK_LABEL_WARNING(m_control->SetNextAVTransportURI(m_delegate->m_device , m_delegate->m_instance , file.GetPath().c_str() , (const char*)tmp , m_delegate), failed); if(!m_delegate->m_resevent.WaitMSec(10000)) goto failed; NPT_CHECK_LABEL_WARNING(m_delegate->m_resstatus, failed); return true; failed: CLog::Log(LOGERROR, "UPNP: CUPnPPlayer::QueueNextFile - unable to queue file %s", file.GetPath().c_str()); return false; }
void isdf07Mission::SendEnemies(int type, Handle target) { switch (type) { case 0: //tank if (!IsAlive(enemy1)) { enemy1 = BuildObject("fvtank", comp_team, spawn1); Attack(enemy1, target, 1); } break; case 1: //rocket if (!IsAlive(enemy1)) { enemy1 = BuildObject("fvsent", comp_team, spawn1); Attack(enemy1, target, 1); } if (!IsAlive(enemy2)) { enemy2 = BuildObject("fvsent", comp_team, spawn2); Attack(enemy2, target, 1); } break; case 2: //constructor if (!IsAlive(enemy1)) { enemy1 = BuildObject("fvtank", comp_team, spawn1); Attack(enemy1, target, 1); } break; case 3: //turret if (!IsAlive(enemy1)) { enemy1 = BuildObject("fvarch", 2, spawn1); Attack(enemy1, target, 1); } if (!IsAlive(enemy2)) { enemy2 = BuildObject("fvarch", 2, spawn2); Attack(enemy2, target, 1); } break; case 4: //gun tower SetIndependence(enemy1, 0); SetIndependence(enemy2, 0); enemy1 = BuildObject("fvtank", 2, spawn1); enemy2 = BuildObject("fvtank", 2, spawn2); enemy3 = BuildObject("fvsent", 2, spawn3); Attack(enemy1, target, 1); Attack(enemy2, target, 1); Defend2(enemy3, enemy1, 1); break; } // so we transform them later enemy1deployed=false; enemy2deployed=false; }
/*---------------------------------------------------------------------- | CUPnPRenderer::GetMetadata +---------------------------------------------------------------------*/ NPT_Result CUPnPRenderer::GetMetadata(NPT_String& meta) { NPT_Result res = NPT_FAILURE; #if 1 #else CFileItem item(g_application.CurrentFileItem()); NPT_String file_path, tmp; // we pass an empty CThumbLoader reference, as it can't be used // without CUPnPServer enabled NPT_Reference<CThumbLoader> thumb_loader; PLT_MediaObject* object = BuildObject(item, file_path, false, thumb_loader); if (object) { // fetch the item's artwork CStdString thumb; if (object->m_ObjectClass.type == "object.item.audioItem.musicTrack") thumb = g_infoManager.GetImage(MUSICPLAYER_COVER, -1); else thumb = g_infoManager.GetImage(VIDEOPLAYER_COVER, -1); thumb = CTextureCache::GetWrappedImageURL(thumb); NPT_String ip; if (CApplication::getInstance().getNetwork().GetFirstConnectedInterface()) { ip = g_application.getNetwork().GetFirstConnectedInterface()->GetCurrentIPAddress().c_str(); } // build url, use the internal device http server to serv the image NPT_HttpUrlQuery query; query.AddField("path", thumb.c_str()); PLT_AlbumArtInfo art; art.uri = NPT_HttpUrl( ip, m_URLDescription.GetPort(), "/thumb", query.ToString()).ToString(); // Set DLNA profileID by extension, defaulting to JPEG. if (URIUtils::HasExtension(item.GetArt("thumb"), ".png")) { art.dlna_profile = "PNG_TN"; } else { art.dlna_profile = "JPEG_TN"; } object->m_ExtraInfo.album_arts.Add(art); res = PLT_Didl::ToDidl(*object, "*", tmp); meta = didl_header + tmp + didl_footer; delete object; } #endif return res; }
void isdf20Mission::PeriodicAttack(void) { char tempstr[128]; if ((mission_state<6) && (!IsAlive(annoy_scout1)) && (!IsAlive(annoy_scout2)) && (annoy_timer>300)) { annoy_timer=0; } if (annoy_timer==300) { annoy_scout1=BuildObject("ivscout",comp_team,"lung2"); annoy_scout2=BuildObject("ivscout",comp_team,"lung2"); Attack(annoy_scout1,player); Attack(annoy_scout2,serv_1); seen_scout1=false; seen_scout2=false; } if ((!seen_scout1) && (GetDistance(annoy_scout1,player)<100.0f)) { seen_scout1=true; SetObjectiveOn(annoy_scout1); TranslateString2(tempstr, sizeof(tempstr), "Mission2001"); // Rebel SetObjectiveName(annoy_scout1,tempstr); } if ((!seen_scout2) && (GetDistance(annoy_scout2,player)<100.0f)) { seen_scout2=true; SetObjectiveOn(annoy_scout2); TranslateString2(tempstr, sizeof(tempstr), "Mission2001"); // Rebel SetObjectiveName(annoy_scout2,tempstr); } annoy_timer++; }
BOOL MeshExpUtility::SaveAsLWO(const char* m_ExportName) { BOOL bResult = TRUE; if (m_ExportName[0]==0) return FALSE; ELog.Msg(mtInformation,"Exporting..." ); ELog.Msg(mtInformation,"-------------------------------------------------------" ); CEditableObject* exp_obj=0; if (bResult=BuildObject(exp_obj,m_ExportName)){ ELog.Msg (mtInformation,"Object saved..."); exp_obj->Optimize (); exp_obj->ExportLWO (m_ExportName); } xr_delete(exp_obj); return bResult; }
BOOL MeshExpUtility::SaveAsObject(const char* m_ExportName) { BOOL bResult = TRUE; if (m_ExportName[0]==0) return FALSE; ELog.Msg(mtInformation,"Exporting..." ); ELog.Msg(mtInformation,"-------------------------------------------------------" ); CEditableObject* exp_obj=0; if (bResult=BuildObject(exp_obj,m_ExportName)){ ELog.Msg (mtInformation,"Saving object..."); for (SurfaceIt s_it=exp_obj->FirstSurface(); s_it!=exp_obj->LastSurface(); s_it++){ LPSTR t=(LPSTR)(*s_it)->_Texture(); if (strext(t)) *strext(t)=0; } exp_obj->Optimize (); exp_obj->SaveObject (m_ExportName); } xr_delete(exp_obj); return bResult; }
void isdf07Mission::AddObject(Handle h) { char ODFName[64]; GetObjInfo(h, Get_CFG, ODFName); if (IsOdf2(h,"ibrecy")) { Handle temp=BuildObject("fvscout", comp_team, spawn1); Attack(temp, h, 1); recy=h; recyDeployed=true; } if ((!scavBuilt) && (IsOdf2(h,"ivscav"))) { // Handle temp=BuildObject("fvsent", comp_team, spawn1); // Attack(temp, h, 1); scavBuilt = true; } else if ((!powerBuilt) && (IsOdf2(h,"ibpgen"))) { powerBuilt = true; } else if ((!wallsBuilt) && (IsOdf2(h,"ibwall"))) { wallsBuilt = true; } else if ((!constBuilt) && (IsOdf2(h,"ivcons"))) { SendEnemies(2, h); constBuilt = true; } else if ((!relayBuilt) && (IsOdf2(h,"ibcbun"))) { SendEnemies(3,h); relayBuilt=true; } else if ((!gunTowBuilt) && (IsOdf2(h,"ibgtow"))) { SendEnemies(4, h); gtow=h; gunTowBuilt = true; } else if ((!shabOutOfVehicle) && (IsOdf2(h,"ispilo"))) { if (justHoped) { shabOnFoot = h; shabOutOfVehicle = true; } } else if ((shabOutOfVehicle) && (IsOdf2(h,"isuser"))) { playerOnFoot = true; oldPlayer=player; } if (IsOdf2(h,"ivtank")) { //react to player building a tank SendEnemies(0, h); } else if (IsOdf2(h,"ivrckt")) { //react to the player building a rocket tank SendEnemies(1, h); } else if (IsOdf2(h,"ivturr")) { //react to the player building a turret SendEnemies(3, h); } }
void isdf20Mission::Execute(void) { /* Here is where you put what happens every frame. */ /* LANDSLIDE INFO - .bzn has file reslida1.odf - Don't forget to delete bin data before you try this - Run animation on reslid01.odf - Replace it with reslidea1.odf */ player = GetPlayerHandle(); char tempstr[128]; Ally(1,3); switch (mission_state) { case 0: // build this stuff at start /* Handle recy=BuildObject("ivrecy",1,"Recycler"); int grp=GetFirstEmptyGroup(); SetGroup(recy,grp); SetScrap(1,30); */ // deleted for Nathan /* mbike_1=BuildObject("ivmbike",3,"mbike1"); mbike_2=BuildObject("ivmbike",3,"mbike2"); mbike_3=BuildObject("ivmbike",3,"mbike3"); */ tank_1=BuildObject("ivatank",1,"tank1"); // was atank SetGroup(tank_1,0); tank_2=BuildObject("ivrckt",1,"tank2"); // was atank SetGroup(tank_2,1); // serv= BuildObject("ivserv",1,"serv"); // Set // scav_1=BuildObject("ivscav",1,"scav1"); // scav_2=BuildObject("ivscav",1,"scav2"); // rckt_1=BuildObject("ivrckt",1,"rckt1"); // rckt_2=BuildObject("ivrckt",1,"rckt2"); SetGroup(rckt_1,1); SetGroup(rckt_2,1); serv_1=BuildObject("ivserv",1,"scav1"); SetGroup(serv_1,2); espir_2=BuildObject("ibgtow",comp_team,"base_here"); esent_1=BuildObject("ivmisl",comp_team,"esentpath1"); esent_2=BuildObject("ivmisl",comp_team,"esentpath1"); espir_1=BuildObject("ibgtow",comp_team,"espir1"); base_1=BuildObject("ibfact",comp_team,"estro1"); base_2=BuildObject("ibpgen",comp_team,"ekiln1"); base_3=BuildObject("ibpgen",comp_team,"power_x"); // was eforg1 base_4=BuildObject("ibcbun",comp_team,"bunker_x"); espir_3=BuildObject("ibgtow",comp_team,"espir3"); esent_3=BuildObject("ivscout",comp_team,"esent3"); esent_4=BuildObject("ivscout",comp_team,"esent4"); ClearObjectives(); AddObjective("isdf20a.otf",WHITE,10.0f); Patrol(esent_1,"esentpath1"); Follow(esent_2,esent_1); after_briefing= GetTime()+20.0f; slide1=GetHandle("unnamed_reslida1"); //Vector temp=GetPosition(slide1); RemoveObject(slide1); nav=BuildObject("ibnav",1,"lung2"); SetObjectiveOn(nav); TranslateString2(tempstr, sizeof(tempstr), "Mission2002"); // Rebel Base SetObjectiveName(nav,tempstr); // SetPosition(slide2?? /* So the mission isn't too slow. */ AddHealth(espir_1,-3000); AddHealth(espir_2,-3000); mission_state++; audio=AudioMessage("isdf2021.wav"); CameraReady(); break; case 1: CameraPath("camera1",200,200,player); // CameraObject(espir_1,30,20,20,espir_1); if (IsAudioMessageDone(audio)) { audio=AudioMessage("isdf2022.wav"); mission_state++; } break; case 2 : CameraPath("camera2",200,200,espir_2); if (IsAudioMessageDone(audio)) { AudioMessage("isdf2001.wav"); CameraFinish(); mission_state++; } break; case 3: //the attack begins // after the opening briefing, AI squadron drives to fight sentry units on their own if (GetTime() > after_briefing) { // Goto(mbike_1,"front_ambush"); // Goto(mbike_2,"front_ambush"); // Goto(mbike_3,"front_ambush"); // Goto(rckt_1,"front_ambush"); // Goto(rckt_2,"front_ambush"); Handle temp=BuildObject("ivscout",comp_team,"lung2"); Attack(temp,player); mission_state++; } break; case 4: // Kill the sentries // AI squadron engages sentry units if ((GetDistance(tank_1,"front_ambush")<200.0f) || (GetDistance(tank_2,"front_ambush")<200.0f) || (GetDistance(rckt_1,"front_ambush")<200.0f) || (GetDistance(rckt_2,"front_ambush")<200.0f) || (GetDistance(player,"front_ambush")<200.0f) ) { /* Attack(mbike_1,esent_1); Attack(mbike_2,esent_2); Attack(mbike_3,esent_1); */ SetObjectiveOn(esent_1); TranslateString2(tempstr, sizeof(tempstr), "Mission2001"); // Rebel SetObjectiveName(esent_1,tempstr); SetObjectiveOn(esent_2); SetObjectiveName(esent_2,tempstr); // Attack(rckt_1,esent_2); // Attack(rckt_2,esent_1); } // once the sentrys are destroyed, AI squadron heads to enemy gun tower and stops if ((!IsAlive(esent_1)) && (!IsAlive(esent_2))) { /* Goto(mbike_1,"front_ambush"); Goto(mbike_2,"front_ambush"); Goto(mbike_3,"front_ambush"); */ // Goto(rckt_1,"front_ambush"); // Goto(rckt_2,"front_ambush"); // temp=BuildObject("ivscout",2,"lung2"); // Attack(temp,serv_1); mission_state++; } break; case 5: // wait till they get to the tower if (( (GetDistance(tank_1,"front_ambush")<75.0f) || (GetDistance(rckt_2,"front_ambush")<75.0f) || (GetDistance(player,"front_ambush")<75.0f))) { Handle temp=BuildObject("ivscout",comp_team,"lung2"); Attack(temp,player); AudioMessage("isdf2002.wav"); // use your assault tanks ClearObjectives(); AddObjective("isdf2002.otf",WHITE,20.0f); SetObjectiveOn(espir_1); TranslateString2(tempstr, sizeof(tempstr), "Mission2003"); // Gun Tower SetObjectiveName(espir_1,tempstr); //temp=BuildObject("ivscout",2,"lung2"); //Attack(temp,player); mission_state++; } break; case 6: // destroy the tower // once you destroy the gun tower, AI squadron heads to next gun tower and stops if (!IsAlive(espir_1)) { Goto(mbike_1,"exit1"); Goto(mbike_2,"exit1"); Goto(mbike_3,"exit1"); // AudioMessage("isdf2003.wav"); // now let's press on to the base // Goto(rckt_1,"exit1"); // Goto(rckt_2,"exit1"); // temp=BuildObject("ivscout",2,"lung2"); // Attack(temp,serv_1); mission_state++; } break; case 7: // now go to the next tower if (((GetDistance(tank_1,"exit1")<50.0f) || (GetDistance(rckt_1,"exit1")<50.0f) || (GetDistance(player,"exit1")<50.0f))) { ClearObjectives(); AddObjective("isdf2003.otf",WHITE,20.0f); AudioMessage("isdf2003.wav"); mission_state++; } break; case 8: // until enemy spire is dead if (!IsAlive(espir_2)) { // Attack(mbike_1,base_1); // Attack(mbike_2,base_1); // Attack(mbike_3,base_1); Attack(rckt_1,base_1,0); Attack(rckt_2,base_1,0); mission_state++; } break; case 9: if (!IsAlive(base_1)) { // Attack(mbike_1,base_2); // Attack(mbike_2,base_2); // Attack(mbike_3,base_2); AudioMessage("isdf2004.wav"); Attack(rckt_1,base_2,0); Attack(rckt_2,base_2,0); mission_state++; } break; case 10: if (!IsAlive(base_2)) { // Attack(mbike_1,base_3); // Attack(mbike_2,base_3); // Attack(mbike_3,base_3); Attack(rckt_1,base_3,0); Attack(rckt_2,base_3,0); mission_state++; } break; case 11:// is the third base dead? if (!IsAlive(base_3)) { /* Goto(mbike_1,"homebase"); Goto(mbike_2,"homebase"); Goto(mbike_3,"homebase"); */ Goto(rckt_1,"homebase",0); Goto(rckt_2,"homebase",0); // keep the player bunched up Follow(tank_1,player,0); Follow(tank_2,player,0); ClearObjectives(); AddObjective("isdf2004.otf",WHITE,20.0f); SetObjectiveOff(nav); nav=BuildObject("ibnav",1,"scav2"); TranslateString2(tempstr, sizeof(tempstr), "Mission2004"); // Rencezvous SetObjectiveName(nav,tempstr); SetObjectiveOn(nav); AudioMessage("isdf2005.wav"); mission_state++; } break; case 12: // first ambush launches as soon as you exit enemy base after destroying it // second ambush comes in from behind if (GetDistance(player,"exit1")<125.0f) { ambush_delay=GetTime()+15.0f; mission_state++; } break; case 13: if (GetTime()>ambush_delay) { eatank_1=BuildObject("ivtank",comp_team,"eatank1"); eatank_2=BuildObject("ivtank",comp_team,"eatank2"); eatank_3=BuildObject("ivmbike",comp_team,"eatank3"); SetSkill(eatank_1,2); SetSkill(eatank_2,2); SetSkill(eatank_3,2); Attack(eatank_1,player); Attack(eatank_2,player); Attack(eatank_3,player); etank_1=BuildObject("ivtank",comp_team,"etank1"); etank_2=BuildObject("ivtank",comp_team,"etank2"); etank_3=BuildObject("ivmbike",comp_team,"etank3"); earch_1=BuildObject("ivtank",comp_team,"earch1"); earch_2=BuildObject("ivtank",comp_team,"earch2"); earch_3=BuildObject("ivmisl",comp_team,"earch3"); manson= BuildObject("ivatank",comp_team,"manson"); Attack(etank_1,player); Attack(etank_2,player); Attack(etank_3,player); Attack(earch_1,player); Attack(earch_2,player); Attack(earch_3,player); Attack(manson,player); uhoh= GetTime()+20.0f; mission_state++; } break; case 14: if (GetTime() > uhoh) { AudioMessage("isdf2006.wav"); AudioMessage("isdf2007.wav"); ClearObjectives(); AddObjective("isdf2005.otf",WHITE,20.0f); Handle temp=BuildObject("ivapc",comp_team,"lung2"); // now you are screwed Attack(temp,player); // temp=BuildObject("ivapc",2,"lung2"); // Attack(temp,player); mission_state++; } break; case 15: // how do you win?? if ((!seen_manson) && (GetDistance(player,manson)<200.0f)) { seen_manson=true; SetObjectiveOn(manson); } if (!IsAlive(manson)) { AudioMessage("isdf2010.wav"); SucceedMission(GetTime()+10.0f,"isdf20w1.txt"); mission_state++; } break; } // switch (mission_state) PeriodicAttack(); // once you destroy the second gun tower, AI squadron enters enemy base and levels it // infinite health and ammo // SetCurAmmo(player, 1200); // SetCurHealth(player, 3000); // tells player to head back to base // if ((!IsAlive(enemybase)) && (!go_home)) // { // AudioMessage("wahoo.wav"); // go_home=true; // } }
void isdf06Mission::Execute(void) { /* Stuff in 6 You are responsible for the northern aproach to the base Alien units approach from the south and you battle them. Shabayev discovers a scrap pool. She highlights it. You must go to it and destroy a scion scavenger. You are given control of constructor. Your job is to build a bunker and a gun tower around it to protect it. Once the bunker is built you are told to go on the offensive. At the first place you go you find the voyager probe. The second is the climatic battle. */ player = GetPlayerHandle(); if (!start_done) { start_done=true; /* This is one of our three key bases on the Planet You must defend this approach. */ ClearObjectives(); AddObjective("isdf0601.otf",WHITE,20.0f); AudioMessage("isdf0601.wav"); // Manson: // Prepare for enemy attacks // You are a reserve for a counter attack // or in case they break through. attack_wave_time=GetTime()+10.0f; wave_launched=false; SetScrap(1,20); SetIndependence(escav,0); escav=BuildObject("fvscav",2,"pool"); Goto(escav,scrap_pool,0); Handle temp=GetHandle("gtow1"); AddHealth(temp,-2500); temp=GetHandle("gtow2"); AddHealth(temp,-2500); GiveWeapon(player, "gshadow_c"); /* turret1=BuildObject("ivturr",3,"turret1"); turret2=BuildObject("ivturr",3,"turret2"); Deploy(turret1); Deploy(turret2); */ } if ((!IsAlive(constructor)) && (mission_state>1) && (mission_state!=99)) { // you loose AudioMessage("isdf0607.wav"); // Manson: // That constructor was vital // to our effort. I'm pulling // back immeadiately. FailMission(GetTime()+15.0f,"isdf06l2.txt"); mission_state=99; // out of the loop } switch (mission_state) { case 0: // attack starts if ((!warning) && (GetDistance(atk1,turret1)<250.0f)) { AudioMessage("isdf0602.wav"); warning=true; } if ((!wave_launched) && (GetTime()>attack_wave_time)) { atk1=BuildObject("fvtank",2,"attack_start1"); Goto(atk1,"attack_path1"); SetSkill(atk1,3); atk2=BuildObject("fvtank",2,"attack_start1"); Goto(atk2,"attack_path1"); SetSkill(atk2,3); atk3=BuildObject("fvsent",2,"attack_start1"); Goto(atk3,"attack_path1"); SetSkill(atk3,3); atk4=BuildObject("fvsent",2,"attack_start1"); Goto(atk4,"attack_path1"); SetSkill(atk4,3); atk5=BuildObject("fvtank",2,"attack_start2"); Goto(atk5,"attack_path2"); SetSkill(atk5,3); atk6=BuildObject("fvtank",2,"attack_start2"); Goto(atk6,"attack_path2"); SetSkill(atk6,3); atk7=BuildObject("fvsent",2,"attack_start2"); Goto(atk7,"attack_path2"); SetSkill(atk7,3); // atk8=BuildObject("fvsent",2,"attack_start2"); // Goto(atk8,"attack_path2"); // SetSkill(atk8,3); wave_launched=true; } if ((wave_launched) && (!IsAlive(atk1)) && (!IsAlive(atk2)) && (!IsAlive(atk3)) && (!IsAlive(atk4)) && (!IsAlive(atk5)) && (!IsAlive(atk6)) && (!IsAlive(atk7)) && (!IsAlive(atk8))) { warning=false; wave_launched=false; wave_count++; if (!repair_hint) { repair_hint=true; AudioMessage("isdf0612.wav"); /* MANSON Take advantage of the breaks between attacks to repair your forces at the service bay. */ } if (wave_count==2) { back1=BuildObject("fvarch",2,"back1"); Goto(back1,"back_door"); back2=BuildObject("fvarch",2,"back2"); Goto(back2,"back_door"); back3=BuildObject("fvsent",2,"back3"); Goto(back3,"back_door"); SetObjectiveOn(back1); AudioMessage("isdf0614.wav"); } if (wave_count>(2)) //was 2 { if ((!IsAlive(back1)) && (!IsAlive(back2)) && (!IsAlive(back3))) { mission_state++; SetObjectiveOn(escav); ClearObjectives(); AddObjective("isdf0602.otf",WHITE,10.0f); AudioMessage("isdf0603.wav"); // Shabayev // I have detected the scavenger // which is supplying the enemy. // Its time to counter attack. // Manson // Alright, Cooke, you heard // the lieutenant. Get that // scavenger AudioMessage("isdf0604.wav"); } } else attack_wave_time=GetTime()+5.0f; // hold back your forces if ((GetDistance(turret1,mbike1)<50.0f) && (!defend_warning)) { AudioMessage("isdf0610.wav"); // MansoN: // Cooke, hold back your forces. defend_warning=true; } } break; case 1: // shabayev highlights the scavenger /* */ if (scav_count<3) { FailMission(GetTime()+5.0f,"isdf06l1.txt"); mission_state=99; } else { if ((GetDistance(player,escav)<150.0f) && (!got_to_scav)) { AudioMessage("isdf0605.wav"); // Shabayev: Attack! got_to_scav=true; } if (!IsAlive(escav)) { ClearObjectives(); AddObjective("isdf0603.otf",WHITE,10.0f); constructor=BuildObject("ivcon6",1,"constructor_spawn"); int grp=GetFirstEmptyGroup(); SetGroup(constructor,grp); Goto(constructor,"pool",0); mission_state++; AudioMessage("isdf0606.wav"); // Manson: // Cooke, I'm sending you a // constructor to fortify your // position. Use the constructor // to build defenses around that // scrap pool. } } break; case 2: // you get a constructor if (GetDistance(constructor,"pool")<250.0f) { AudioMessage("isdf0611.wav"); // Shabayev // Build a communications bunker to // anchor the base. // Once you have a communications bunker // build two adjacent // gun towers // The gun towers will be powered from // the surplus power of the main base. // Good luck. ConstructionMessage(); // spawn in attackers scout1=BuildObject("fvscout",2,"patrol_spawn"); scout2=BuildObject("fvscout",2,"patrol_spawn"); if (IsAlive(mbike1)) { Attack(scout1,player); } else { Attack(scout1,player); } if (IsAlive(mbike2)) { Attack(scout2,player); } else Attack(scout2,mbike2); mission_state++; } break; case 3: if ((!IsAlive(scout1)) && (!IsAlive(scout2))) { scout1=BuildObject("fvscout",2,"patrol_spawn"); scout2=BuildObject("fvscout",2,"patrol_spawn"); if (IsAlive(mbike1)) { Attack(scout1,mbike1); } else Attack(scout1,player); if (IsAlive(mbike2)) { Attack(scout2,mbike2); } else Attack(scout2,player); } if ((cbunker!=NULL) && (guntow1!=NULL) && (guntow2!=NULL)) { AudioMessage("isdf0608.wav"); /* Manson: Great! I'm sending a scavenger to secure that pool. Prepare for further orders. */ // more cannon foder to get pulverized atk1=BuildObject("fvtank",2,"patrol_spawn1"); Attack(atk1,guntow1); // cannon foder atk2=BuildObject("fvtank",2,"patrol_spawn2"); Attack(atk2,guntow2); // cannon foder // FraKTal says this scav doesn't want to deploy on its // own. So, put it under 100% human control - NM 6/27/03 #if 0 // was scav=BuildObject("ivscav",3,"constructor_spawn"); #else // now scav=BuildObject("ivscav",1,"constructor_spawn"); #endif Goto(scav,"pool"); ClearObjectives(); AddObjective("isdf0607.otf",WHITE,10.0f); mission_state++; } break; case 4: // when the scavenger gets there-- attack!! if (GetDistance(scav,"pool")<100.0f) { AudioMessage("isdf0609.wav"); AudioMessage("isdf0613.wav"); // Shabayev: // Its time we finish them off. // All forces, converge on the enemy base! SetObjectiveOn(goal); mission_state++; // spawn in patrols atk1=BuildObject("fvtank",2,"patrol_spawn2"); atk2=BuildObject("fvtank",2,"patrol_spawn2"); atk3=BuildObject("fvsent",2,"patrol_spawn"); atk4=BuildObject("fvsent",2,"patrol_spawn"); Patrol(atk1,"patrol"); Patrol(atk2,"patrol"); Patrol(atk3,"patrol"); Patrol(atk4,"patrol"); // spawn in attackers atk1=BuildObject("ivtank",3,"constructor_spawn"); atk2=BuildObject("ivtank",3,"constructor_spawn"); Goto(atk1,goal); Goto(atk2,goal); BuildObject("ibbomb",1,"bomber"); // you get a bomber // BuildObject("ivbomb",1,"bomber"); ClearObjectives(); AddObjective("isdf0608.otf",WHITE,10.0f); } break; case 5: // test to destroy base time_counter++; if (time_counter%1200==0) // every minute 1/2 { atk1=BuildObject("fvtank",2,"patrol_spawn2"); atk2=BuildObject("fvtank",2,"patrol_spawn2"); Patrol(atk1,"patrol"); Patrol(atk2,"patrol"); } if (!IsAlive(goal)) { // you win SucceedMission(GetTime()+20.0f,"isdf06w1.txt"); mission_state++; ClearObjectives(); AddObjective("isdf0609.otf",WHITE,10.0f); } break; case 6: // cineractive // Through the worm hole break; } // switch }
/*---------------------------------------------------------------------- | CUPnPDirectory::GetDirectory +---------------------------------------------------------------------*/ bool CUPnPDirectory::GetDirectory(const CStdString& strPath, CFileItemList &items) { CUPnP* upnp = CUPnP::GetInstance(); /* upnp should never be cached, it has internal cache */ items.SetCacheToDisc(CFileItemList::CACHE_NEVER); // We accept upnp://devuuid/[item_id/] NPT_String path = strPath.c_str(); if (!path.StartsWith("upnp://", true)) { return false; } if (path.Compare("upnp://", true) == 0) { upnp->StartClient(); // root -> get list of devices const NPT_Lock<PLT_DeviceDataReferenceList>& devices = upnp->m_MediaBrowser->GetMediaServers(); NPT_List<PLT_DeviceDataReference>::Iterator device = devices.GetFirstItem(); while (device) { NPT_String name = (*device)->GetFriendlyName(); NPT_String uuid = (*device)->GetUUID(); CFileItemPtr pItem(new CFileItem((const char*)name)); pItem->SetPath(CStdString((const char*) "upnp://" + uuid + "/")); pItem->m_bIsFolder = true; pItem->SetArt("thumb", (const char*)(*device)->GetIconUrl("image/png")); items.Add(pItem); ++device; } } else { if (!path.EndsWith("/")) path += "/"; // look for nextslash int next_slash = path.Find('/', 7); NPT_String uuid = (next_slash==-1)?path.SubString(7):path.SubString(7, next_slash-7); NPT_String object_id = (next_slash==-1)?"":path.SubString(next_slash+1); object_id.TrimRight("/"); if (object_id.GetLength()) { CStdString tmp = (char*) object_id; CURL::Decode(tmp); object_id = tmp; } // try to find the device with wait on startup PLT_DeviceDataReference device; if (!FindDeviceWait(upnp, uuid, device)) goto failure; // issue a browse request with object_id // if object_id is empty use "0" for root object_id = object_id.IsEmpty()?"0":object_id; // remember a count of object classes std::map<NPT_String, int> classes; // just a guess as to what types of files we want bool video = true; bool audio = true; bool image = true; m_strFileMask.TrimLeft("/"); if (!m_strFileMask.IsEmpty()) { video = m_strFileMask.Find(".wmv") >= 0; audio = m_strFileMask.Find(".wma") >= 0; image = m_strFileMask.Find(".jpg") >= 0; } // special case for Windows Media Connect and WMP11 when looking for root // We can target which root subfolder we want based on directory mask if (object_id == "0" && ((device->GetFriendlyName().Find("Windows Media Connect", 0, true) >= 0) || (device->m_ModelName == "Windows Media Player Sharing"))) { // look for a specific type to differentiate which folder we want if (audio && !video && !image) { // music object_id = "1"; } else if (!audio && video && !image) { // video object_id = "2"; } else if (!audio && !video && image) { // pictures object_id = "3"; } } #ifdef DISABLE_SPECIALCASE // same thing but special case for XBMC if (object_id == "0" && ((device->m_ModelName.Find("XBMC", 0, true) >= 0) || (device->m_ModelName.Find("Xbox Media Center", 0, true) >= 0))) { // look for a specific type to differentiate which folder we want if (audio && !video && !image) { // music object_id = "virtualpath://upnpmusic"; } else if (!audio && video && !image) { // video object_id = "virtualpath://upnpvideo"; } else if (!audio && !video && image) { // pictures object_id = "virtualpath://upnppictures"; } } #endif // if error, return now, the device could have gone away // this will make us go back to the sources list PLT_MediaObjectListReference list; NPT_Result res = upnp->m_MediaBrowser->BrowseSync(device, object_id, list); if (NPT_FAILED(res)) goto failure; // empty list is ok if (list.IsNull()) goto cleanup; PLT_MediaObjectList::Iterator entry = list->GetFirstItem(); while (entry) { // disregard items with wrong class/type if( (!video && (*entry)->m_ObjectClass.type.CompareN("object.item.videoitem", 21,true) == 0) || (!audio && (*entry)->m_ObjectClass.type.CompareN("object.item.audioitem", 21,true) == 0) || (!image && (*entry)->m_ObjectClass.type.CompareN("object.item.imageitem", 21,true) == 0) ) { ++entry; continue; } // never show empty containers in media views if((*entry)->IsContainer()) { if( (audio || video || image) && ((PLT_MediaContainer*)(*entry))->m_ChildrenCount == 0) { ++entry; continue; } } // keep count of classes classes[(*entry)->m_ObjectClass.type]++; CFileItemPtr pItem = BuildObject(*entry); if(!pItem) { ++entry; continue; } CStdString id = (char*) (*entry)->m_ObjectID; CURL::Encode(id); URIUtils::AddSlashAtEnd(id); pItem->SetPath(CStdString((const char*) "upnp://" + uuid + "/" + id.c_str())); items.Add(pItem); ++entry; } NPT_String max_string = ""; int max_count = 0; for(std::map<NPT_String, int>::iterator it = classes.begin(); it != classes.end(); it++) { if(it->second > max_count) { max_string = it->first; max_count = it->second; } } std::string content = GetContentMapping(max_string); items.SetContent(content); if (content == "unknown") { items.AddSortMethod(SORT_METHOD_UNSORTED, 571, LABEL_MASKS("%L", "%I", "%L", "")); items.AddSortMethod(SORT_METHOD_LABEL_IGNORE_FOLDERS, 551, LABEL_MASKS("%L", "%I", "%L", "")); items.AddSortMethod(SORT_METHOD_SIZE, 553, LABEL_MASKS("%L", "%I", "%L", "%I")); items.AddSortMethod(SORT_METHOD_DATE, 552, LABEL_MASKS("%L", "%J", "%L", "%J")); } } cleanup: return true; failure: return false; }
bool CUPnPPlayer::OpenFile(const CFileItem& file, const CPlayerOptions& options) { CFileItem item(file); NPT_Reference<CThumbLoader> thumb_loader; NPT_Reference<PLT_MediaObject> obj; NPT_String path(file.GetPath().c_str()); NPT_String tmp, resource; XbmcThreads::EndTime timeout; CGUIDialogBusy* dialog = NULL; NPT_CHECK_POINTER_LABEL_SEVERE(m_delegate, failed); timeout.Set(10000); /* if no path we want to attach to a already playing player */ if(path != "") { if (file.IsVideoDb()) thumb_loader = NPT_Reference<CThumbLoader>(new CVideoThumbLoader()); else if (item.IsMusicDb()) thumb_loader = NPT_Reference<CThumbLoader>(new CMusicThumbLoader()); obj = BuildObject(item, path, false, thumb_loader, NULL, CUPnP::GetServer()); if(obj.IsNull()) goto failed; NPT_CHECK_LABEL_SEVERE(PLT_Didl::ToDidl(*obj, "", tmp), failed); tmp.Insert(didl_header, 0); tmp.Append(didl_footer); /* The resource uri's are stored in the Didl. We must choose the best resource * for the playback device */ NPT_Cardinal res_index; NPT_CHECK_LABEL_SEVERE(m_control->FindBestResource(m_delegate->m_device, *obj, res_index), failed); /* dlna specifies that a return code of 705 should be returned * if TRANSPORT_STATE is not STOPPED or NO_MEDIA_PRESENT */ NPT_CHECK_LABEL_SEVERE(m_control->Stop(m_delegate->m_device , m_delegate->m_instance , m_delegate), failed); NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_resevent, timeout, dialog), failed); NPT_CHECK_LABEL_SEVERE(m_delegate->m_resstatus, failed); NPT_CHECK_LABEL_SEVERE(m_control->SetAVTransportURI(m_delegate->m_device , m_delegate->m_instance , obj->m_Resources[res_index].m_Uri , (const char*)tmp , m_delegate), failed); NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_resevent, timeout, dialog), failed); NPT_CHECK_LABEL_SEVERE(m_delegate->m_resstatus, failed); NPT_CHECK_LABEL_SEVERE(m_control->Play(m_delegate->m_device , m_delegate->m_instance , "1" , m_delegate), failed); NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_resevent, timeout, dialog), failed); NPT_CHECK_LABEL_SEVERE(m_delegate->m_resstatus, failed); } /* wait for PLAYING state */ do { NPT_CHECK_LABEL_SEVERE(m_control->GetTransportInfo(m_delegate->m_device , m_delegate->m_instance , m_delegate), failed); { CSingleLock lock(m_delegate->m_section); if(m_delegate->m_trainfo.cur_transport_state == "PLAYING" || m_delegate->m_trainfo.cur_transport_state == "PAUSED_PLAYBACK") break; if(m_delegate->m_trainfo.cur_transport_state == "STOPPED" && m_delegate->m_trainfo.cur_transport_status != "OK") { CLog::Log(LOGERROR, "UPNP: CUPnPPlayer::OpenFile - remote player signalled error %s", file.GetPath().c_str()); goto failed; } } NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_traevnt, timeout, dialog), failed); } while(!timeout.IsTimePast()); if(options.starttime > 0) { /* many upnp units won't load file properly until after play (including xbmc) */ NPT_CHECK_LABEL(m_control->Seek(m_delegate->m_device , m_delegate->m_instance , "REL_TIME" , PLT_Didl::FormatTimeStamp((NPT_UInt32)options.starttime) , m_delegate), failed); } m_started = true; m_callback.OnPlayBackStarted(); NPT_CHECK_LABEL_SEVERE(m_control->GetPositionInfo(m_delegate->m_device , m_delegate->m_instance , m_delegate), failed); NPT_CHECK_LABEL_SEVERE(m_control->GetMediaInfo(m_delegate->m_device , m_delegate->m_instance , m_delegate), failed); if(dialog) dialog->Close(); return true; failed: CLog::Log(LOGERROR, "UPNP: CUPnPPlayer::OpenFile - unable to open file %s", file.GetPath().c_str()); if(dialog) dialog->Close(); return false; }
INT unit_getUnit(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { CDebug cDbg("getUnit"); if(argc < 1) return JS_TRUE; jsint nType = NULL; jsint nClassId = -1; jsint nMode = -1; jsint nUnitId = NULL; CHAR szName[128] = ""; if(argc > 0 && JSVAL_IS_INT(argv[0])) nType = JSVAL_TO_INT(argv[0]); else return JS_TRUE; if(argc > 1 && JSVAL_IS_STRING(argv[1])) strcpy_s(szName, sizeof(szName), JS_GetStringBytes(JS_ValueToString(cx, argv[1]))); if(argc > 1 && JSVAL_IS_INT(argv[1])) nClassId = JSVAL_TO_INT(argv[1]); if(argc > 2 && JSVAL_IS_INT(argv[2])) nMode = JSVAL_TO_INT(argv[2]); if(argc > 3 && JSVAL_IS_INT(argv[3])) nUnitId = JSVAL_TO_INT(argv[3]); UnitAny* pUnit = NULL; if(nType == 100) pUnit = D2CLIENT_GetCursorItem(); else if(nType == 101) { pUnit = D2CLIENT_GetSelectedUnit(); if(!pUnit) pUnit = (*p_D2CLIENT_SelectedInvItem); } else pUnit = GetUnit(szName, nClassId, nType, nMode, nUnitId); if(!pUnit) return JS_TRUE; myUnit* pmyUnit = new myUnit; // leaked? if(!pmyUnit) return JS_TRUE; pmyUnit->_dwPrivateType = PRIVATE_UNIT; pmyUnit->dwClassId = nClassId; pmyUnit->dwMode = nMode; pmyUnit->dwType = pUnit->dwType; pmyUnit->dwUnitId = pUnit->dwUnitId; strcpy_s(pmyUnit->szName, sizeof(pmyUnit->szName), szName); JSObject *jsunit = BuildObject(cx, &unit_class, unit_methods, unit_props, pmyUnit); if(!jsunit) return JS_TRUE; *rval = OBJECT_TO_JSVAL(jsunit); return JS_TRUE; }
void scion02::Execute(void) { /* Here is where you put what happens every frame. */ // paths // spawn_scout1 >> strike1 // spawn_scout2 >> strike2 // SetCurAmmo(player,1500);//TEMP // SetCurHealth(player,2000);//TEMP //STARTING PARAMETERS char tempstr[128]; if ((!been_detected) && (mission_state<5)) // 5= ambush is set { /* Handle foe=GetWhoShotMe(player); if ((foe!=NULL) && (foe!=oldscout) && (IsAlive(oldscout)) && // I just added this.. probably unness if HandleScout worked (GetTeamNum(oldscout)==comp_team)) */ if ((GetDistance(enemytank1,player)<75.0f) || (GetDistance(enemytank2,player)<75.0f) || (GetDistance(enemyscout1,player)<75.0f) || (GetDistance(enemyscout2,player)<75.0f)) { been_detected=true; mission_state=101; AudioMessage("scion0220.wav"); // oh no we've been detected been_detected=true; } HandleScout(); } switch (mission_state) { case 0: { // HACK to fix bug Handle shab=GetHandle("shabayev"); // what is she doing here anyway? RemoveObject(shab); // play message talk1 = AudioMessage("scion0201.wav"); // take over base SetScrap(1,40); // Your starting base int grp=GetFirstEmptyGroup(); recycler=BuildObject("fvrec2",1,"recycler"); SetGroup(recycler,grp); grp++; scav1=BuildObject("fvscav",1,"scav_1"); SetGroup(scav1,grp); grp++; scav2=BuildObject("fvscav",1,"scav_2"); SetGroup(scav2,grp); grp++; turret1=BuildObject("fvturr",1,"turret_1"); SetGroup(turret1,grp); turret2=BuildObject("fvturr",1,"turret_2"); SetGroup(turret2,grp); grp++; sent1=BuildObject("fvtank",1,"tank_1"); SetGroup(sent1,grp); sent2=BuildObject("fvtank",1,"tank_2"); SetGroup(sent2,grp); grp++; constructor=BuildObject("fvcos2",1,"cons_1"); SetGroup(constructor,grp); objective=BuildObject("ibnav",1,"jammer"); // These units have smaller engage ranges enemytank1=BuildObject("ivtas2",2,"etank_1"); enemyscout1=BuildObject("ivscos2",2,"escout_1"); enemytank2=BuildObject("ivtas2",2,"etank_2"); enemyscout2=BuildObject("ivscos2",2,"escout_2"); Patrol(enemytank1,"isdf_patrol1",0); Patrol(enemyscout1,"isdf_patrol1",0); Patrol(enemytank2,"isdf_patrol2",0); Patrol(enemyscout2,"isdf_patrol2",0); BuildObject("ibgtow",comp_team,"egtow_1"); BuildObject("ibgtow",comp_team,"egtow_2"); power1=BuildObject("ibpgen",comp_team,"epgen_1"); power2=BuildObject("ibpgen",comp_team,"epgen_2"); BuildObject("ibsbay",comp_team,"esbay"); BuildObject("ibfact",comp_team,"efact"); enemybase=BuildObject("ibrecy",comp_team,"erecy"); BuildObject("ibarmo",comp_team,"earmo"); base_unit_1=BuildObject("ivtank",comp_team,"base_unit_1"); base_unit_2=BuildObject("ivmisl",comp_team,"base_unit_2"); base_unit_3=BuildObject("ivtank",comp_team,"base_unit_3"); base_unit_4=BuildObject("ivmisl",comp_team,"base_unit_4"); mission_state++; } break; case 1: // further instruction if ((IsAudioMessageDone(talk1))) { ClearObjectives(); AudioMessage("scion0202.wav"); AddObjective("scion0201.otf",WHITE,20.0f); SetObjectiveOn(objective); TranslateString2(tempstr, sizeof(tempstr), "MissionS0201"); // Ambush SetObjectiveName(objective,tempstr); mission_state++; } break; case 2: // player arrives at ambush site if (GetDistance(player,objective)<75.0f) { AudioMessage("scion0203.wav"); // good now set up ClearObjectives(); AddObjective("scion0202.otf",WHITE,20.0f); AddObjective("scion0203.otf",WHITE,20.0f); mission_state++; } break; case 3: // wait for the constructor to show up if (GetDistance(constructor,objective)<75.0f) { AudioMessage("scion0204.wav"); // Good, now build a jammer ClearObjectives(); AddObjective("scion0202.otf",GREEN,5.0f); AddObjective("scion0203.otf",WHITE,5.0f); mission_state++; } break; case 4: if (jammer_exists) { AudioMessage("scion0205.wav"); // now drive into the enemy base and lead them to // your ambush. ClearObjectives(); AddObjective("scion0204.otf",WHITE,10.0f); mission_state++; SetIndependence(enemytank1,1); SetIndependence(enemytank2,1); SetIndependence(enemyscout1,1); SetIndependence(enemyscout2,1); been_detected=true; // doesn't matter now } break; case 5: if ((GetDistance(player,base_unit_1)<200.0f) || (GetDistance(player,base_unit_2)<200.0f) || (GetDistance(player,enemytank1)<75.0f) || (GetDistance(player,enemyscout1)<75.0f)) { AudioMessage("scion0206.wav"); // Here they come! Goto(base_unit_1,"go_jammer"); Goto(base_unit_2,"go_jammer"); Goto(base_unit_3,"go_jammer"); Goto(base_unit_4,"go_jammer"); Attack(enemyscout1,player); Attack(enemytank1,player); // the ambush has begun mission_state++; } break; case 6: // wait for ambush to end if (!IsAlive(player)) { if (IsAlive(base_unit_1)) Attack(base_unit_1,jammer); if (IsAlive(base_unit_2)) Attack(base_unit_2,jammer); if (IsAlive(base_unit_3)) Attack(base_unit_3,jammer); if (IsAlive(base_unit_4)) Attack(base_unit_4,jammer); if (IsAlive(enemyscout1)) Attack(enemyscout1,player); if (IsAlive(enemytank1)) Attack(enemytank1,player); } if ((!IsAlive(base_unit_1)) && (!IsAlive(base_unit_2)) && (!IsAlive(base_unit_3)) && (!IsAlive(base_unit_4))) { AudioMessage("scion0207.wav"); ArtilleryObjective(); /* Now we will use artillery to finish off the base surgically */ // set where the artillery goes as an objective, // wait for the player to build it SetObjectiveOff(objective); objective2=BuildObject("ibnav",1,"escout_1"); SetObjectiveOn(objective2); TranslateString2(tempstr, sizeof(tempstr), "MissionS0202"); // Artillery SetObjectiveName(objective2,tempstr); mission_state++; } break; case 7: // wait for artillery if ((IsAlive(artillery)) || (IsAlive(artillery2))) { AudioMessage("scion0208.wav"); art_objective1=true; ArtilleryObjective(); mission_state++; } break; case 8: // wait for it to get there if ( ((IsAlive(artillery2)) && (GetDistance(artillery,objective2)<50.0f)) || ((IsAlive(artillery2)) && (GetDistance(artillery2,objective2)<50.0f)) ) { art_objective2=true; ArtilleryObjective(); AudioMessage("scion0209.wav"); SetObjectiveOn(power1); SetObjectiveOn(power2); mission_state++; } break; case 9: increment++; if (increment%300==0) { if (!last_objective) { ClearObjectives(); AddObjective("scion0206.otf",WHITE,5.0f); last_objective=true; } Handle atk1=BuildObject("ivscout",2,"base_unit_2"); Attack(atk1,artillery); } if ((!IsAlive(power1)) || (!IsAlive(power2))) { AudioMessage("scion0210.wav"); if (IsAlive(power1)) SetObjectiveOff(power1); if (IsAlive(power2)) SetObjectiveOff(power2); mission_state++; } break; case 10: if (GetDistance(player,"erecy")<75.0f) { AudioMessage("scion0211.wav"); SucceedMission(GetTime()+10.0f,"scion02w1.txt"); mission_state++; } break; case 101: // player is detected too soon { increment++; if (increment%300==0) { Handle atk=BuildObject("ivtank",comp_team,"efact"); Attack(atk,recycler); atk=BuildObject("ivmbike",comp_team,"efact"); Attack(atk,recycler); atk=BuildObject("ivrckt",comp_team,"spawn_scout1"); Goto(atk,"strike1"); } } break; case 102: /* You lose, movie etc. */ { FailMission(GetTime()+15.0f,"scion0201.otf"); mission_state++; } break; } //making sure isdf base guardians stay in the area /* if ((!tank1toofar) && (GetDistance(basetank1,"goback") > 250)) { Retreat(basetank1,"goback"); tank1toofar = true; } if ((!tank2toofar) && (GetDistance(basetank2,"goback") > 250)) { Retreat(basetank2,"goback"); tank2toofar = true; } if ((!scout1toofar) && (GetDistance(scout1,"goback") > 250)) { Retreat(scout1,"goback"); scout1toofar = true; } /// if ((tank1toofar) && (GetDistance(basetank1,"goback") <100)) { Attack(basetank1,player); tank1toofar = false; } if ((tank2toofar) && (GetDistance(basetank2,"goback") <100)) { Attack(basetank2,player); tank2toofar = false; } if ((scout1toofar) && (GetDistance(scout1,"goback") <100)) { Attack(scout1,player); scout1toofar = false; } */ if ((mission_state<102) && (!IsAlive(recycler))) { mission_state=102; } player = GetPlayerHandle(); }
void scion02::HandleScout(void) { char tempstr[128]; scout_counter++; if ((scout_state>3) && (scout_counter%1500==0)) { scout_state=0; } switch (scout_state) { case 0: if (mission_state>2) { scout=BuildObject("ivscout",comp_team,"spawn_scout1"); // may get stuck? Goto(scout,"scav_1"); } else { scout=BuildObject("ivscout",comp_team,"spawn_scout2"); // may get stuck? Goto(scout,"tank_1"); } oldscout=scout; scout_state++; break; case 1: if (!IsAlive(scout)) { scout_state=4; } { Handle temp=GetNearestEnemy(scout); if ((GetDistance(scout,"scav_1")<100.0f) || (GetDistance(scout,"tank_1")<100.0f) || ((IsAlive(temp)) && (GetDistance(scout,temp)<75.0f)) ) { SetObjectiveOn(scout); TranslateString2(tempstr, sizeof(tempstr), "MissionS0203"); // Enemy Scout SetObjectiveName(scout,tempstr); AudioMessage("scion0212.wav"); // a scout is within the perimeter, we must destroy it before he reports back Goto(scout,"epgen_1"); scout_state++; } } break; case 2: if (GetDistance(scout,"epgen_1")<100.0f) { mission_state=101; AudioMessage("scion0220.wav"); // oh no we've been detected been_detected=true; } if (!IsAlive(scout)) { scout_state=4; } break; } }
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; } }
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; } }
int CUPnPPlayer::PlayFile(const CFileItem& file, const CPlayerOptions& options, CGUIDialogBusy*& dialog, XbmcThreads::EndTime& timeout) { CFileItem item(file); NPT_Reference<CThumbLoader> thumb_loader; NPT_Reference<PLT_MediaObject> obj; NPT_String path(file.GetPath().c_str()); NPT_String tmp, resource; EMediaControllerQuirks quirks = EMEDIACONTROLLERQUIRKS_NONE; NPT_CHECK_POINTER_LABEL_SEVERE(m_delegate, failed); if (file.IsVideoDb()) thumb_loader = NPT_Reference<CThumbLoader>(new CVideoThumbLoader()); else if (item.IsMusicDb()) thumb_loader = NPT_Reference<CThumbLoader>(new CMusicThumbLoader()); obj = BuildObject(item, path, false, thumb_loader, NULL, CUPnP::GetServer(), UPnPPlayer); if(obj.IsNull()) goto failed; NPT_CHECK_LABEL_SEVERE(PLT_Didl::ToDidl(*obj, "", tmp), failed_todidl); tmp.Insert(didl_header, 0); tmp.Append(didl_footer); quirks = GetMediaControllerQuirks(m_delegate->m_device.AsPointer()); if (quirks & EMEDIACONTROLLERQUIRKS_X_MKV) { for (NPT_Cardinal i=0; i< obj->m_Resources.GetItemCount(); i++) { if (obj->m_Resources[i].m_ProtocolInfo.GetContentType().Compare("video/x-matroska") == 0) { CLog::Log(LOGDEBUG, "CUPnPPlayer::PlayFile(%s): applying video/x-mkv quirk", file.GetPath().c_str()); NPT_String protocolInfo = obj->m_Resources[i].m_ProtocolInfo.ToString(); protocolInfo.Replace(":video/x-matroska:", ":video/x-mkv:"); obj->m_Resources[i].m_ProtocolInfo = PLT_ProtocolInfo(protocolInfo); } } } /* The resource uri's are stored in the Didl. We must choose the best resource * for the playback device */ NPT_Cardinal res_index; NPT_CHECK_LABEL_SEVERE(m_control->FindBestResource(m_delegate->m_device, *obj, res_index), failed_findbestresource); // get the transport info to evaluate the TransportState to be able to // determine whether we first need to call Stop() timeout.Set(timeout.GetInitialTimeoutValue()); NPT_CHECK_LABEL_SEVERE(m_control->GetTransportInfo(m_delegate->m_device , m_delegate->m_instance , m_delegate), failed_gettransportinfo); NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_traevnt, timeout, dialog), failed_gettransportinfo); if (m_delegate->m_trainfo.cur_transport_state != "NO_MEDIA_PRESENT" && m_delegate->m_trainfo.cur_transport_state != "STOPPED") { timeout.Set(timeout.GetInitialTimeoutValue()); NPT_CHECK_LABEL_SEVERE(m_control->Stop(m_delegate->m_device , m_delegate->m_instance , m_delegate), failed_stop); NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_resevent, timeout, dialog), failed_stop); NPT_CHECK_LABEL_SEVERE(m_delegate->m_resstatus, failed_stop); } timeout.Set(timeout.GetInitialTimeoutValue()); NPT_CHECK_LABEL_SEVERE(m_control->SetAVTransportURI(m_delegate->m_device , m_delegate->m_instance , obj->m_Resources[res_index].m_Uri , (const char*)tmp , m_delegate), failed_setavtransporturi); NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_resevent, timeout, dialog), failed_setavtransporturi); NPT_CHECK_LABEL_SEVERE(m_delegate->m_resstatus, failed_setavtransporturi); timeout.Set(timeout.GetInitialTimeoutValue()); NPT_CHECK_LABEL_SEVERE(m_control->Play(m_delegate->m_device , m_delegate->m_instance , "1" , m_delegate), failed_play); NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_resevent, timeout, dialog), failed_play); NPT_CHECK_LABEL_SEVERE(m_delegate->m_resstatus, failed_play); /* wait for PLAYING state */ timeout.Set(timeout.GetInitialTimeoutValue()); do { NPT_CHECK_LABEL_SEVERE(m_control->GetTransportInfo(m_delegate->m_device , m_delegate->m_instance , m_delegate), failed_waitplaying); { CSingleLock lock(m_delegate->m_section); if(m_delegate->m_trainfo.cur_transport_state == "PLAYING" || m_delegate->m_trainfo.cur_transport_state == "PAUSED_PLAYBACK") break; if(m_delegate->m_trainfo.cur_transport_state == "STOPPED" && m_delegate->m_trainfo.cur_transport_status != "OK") { CLog::Log(LOGERROR, "UPNP: CUPnPPlayer::OpenFile - remote player signalled error %s", file.GetPath().c_str()); return NPT_FAILURE; } } NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_traevnt, timeout, dialog), failed_waitplaying); } while(!timeout.IsTimePast()); if(options.starttime > 0) { /* many upnp units won't load file properly until after play (including xbmc) */ NPT_CHECK_LABEL(m_control->Seek(m_delegate->m_device , m_delegate->m_instance , "REL_TIME" , PLT_Didl::FormatTimeStamp((NPT_UInt32)options.starttime) , m_delegate), failed_seek); } return NPT_SUCCESS; failed_todidl: CLog::Log(LOGERROR, "CUPnPPlayer::PlayFile(%s) failed to serialize item into DIDL-Lite", file.GetPath().c_str()); return NPT_FAILURE; failed_findbestresource: CLog::Log(LOGERROR, "CUPnPPlayer::PlayFile(%s) failed to find a matching resource", file.GetPath().c_str()); return NPT_FAILURE; failed_gettransportinfo: CLog::Log(LOGERROR, "CUPnPPlayer::PlayFile(%s): call to GetTransportInfo failed", file.GetPath().c_str()); return NPT_FAILURE; failed_stop: CLog::Log(LOGERROR, "CUPnPPlayer::PlayFile(%s) failed to stop current playback", file.GetPath().c_str()); return NPT_FAILURE; failed_setavtransporturi: CLog::Log(LOGERROR, "CUPnPPlayer::PlayFile(%s) failed to set the playback URI", file.GetPath().c_str()); return NPT_FAILURE; failed_play: CLog::Log(LOGERROR, "CUPnPPlayer::PlayFile(%s) failed to start playback", file.GetPath().c_str()); return NPT_FAILURE; failed_waitplaying: CLog::Log(LOGERROR, "CUPnPPlayer::PlayFile(%s) failed to wait for PLAYING state", file.GetPath().c_str()); return NPT_FAILURE; failed_seek: CLog::Log(LOGERROR, "CUPnPPlayer::PlayFile(%s) failed to seek to start offset", file.GetPath().c_str()); return NPT_FAILURE; failed: CLog::Log(LOGERROR, "CUPnPPlayer::PlayFile(%s) failed", file.GetPath().c_str()); return NPT_FAILURE; }
///////////////////////////////////////////////////////////// // LOAD MESH FILE ///////////////////////////////////////////////////////////// DWORD CCal3dMeshLoader::OnLoadCal3dCMFFile(DWORD size, void *params) { VERIFY_MESSAGE_SIZE(size, sizeof(TCHAR *)); // Get the Filepath and convert it all to lower case TCHAR* ptmp = (TCHAR *)params; // store the stdstring and chashstring version StdString szFilepath( ptmp ); szFilepath.MakeSafeFileName(); CHashString hszFilepath( szFilepath ); static DWORD msgHash_FindObject = CHashString(_T("FindObject")).GetUniqueID(); FINDOBJECTPARAMS param; param.hszName = &hszFilepath; if( EngineGetToolBox()->SendMessage(msgHash_FindObject, sizeof(FINDOBJECTPARAMS), ¶m) != MSG_HANDLED) return MSG_ERROR; if (param.bFound == true) return MSG_HANDLED_STOP; CHashString streamType(_T("Memory")); CREATEARCHIVE ca; ca.mode = STREAM_MODE_WRITE | STREAM_MODE_READ | STREAM_MODE_BINARY; ca.streamData = NULL; ca.streamSize = 0; ca.streamType = &streamType; static DWORD msgHash_CreateArchive = CHashString(_T("CreateArchive")).GetUniqueID(); if (EngineGetToolBox()->SendMessage(msgHash_CreateArchive, sizeof(ca), &ca) != MSG_HANDLED) return MSG_ERROR; CREATESTREAM cs; cs.streamData = (TCHAR*)szFilepath.c_str(); cs.mode = STREAM_MODE_READ | STREAM_MODE_BINARY; static DWORD msgHash_CreateStream_File = CHashString(_T("CreateStream_File")).GetUniqueID(); DWORD msgRet = m_ToolBox->SendMessage(msgHash_CreateStream_File, sizeof(CREATESTREAM), &cs); if (msgRet != MSG_HANDLED || cs.openStream == NULL) { ca.archive->Close(); return MSG_ERROR; } cs.openStream->SeekTo(0,SEEK_END); int iFileSize = cs.openStream->Tell(); cs.openStream->SeekTo(0,SEEK_SET); void *pFileData = new BYTE[iFileSize]; cs.openStream->Read( pFileData, iFileSize ); delete cs.openStream; ca.archive->SetIsWriting( true ); ca.archive->Write( &pFileData, sizeof(void*) ); ca.archive->SetIsWriting( false ); static CHashString Cal3DCoreMeshCacheType(_T("CCal3DCoreMeshCache")); bool bResult = BuildObject( &hszFilepath, &Cal3DCoreMeshCacheType, ca.archive ); m_CMFMap[hszFilepath.GetUniqueID()] = hszFilepath.GetUniqueID(); ca.archive->Close(); delete[] (BYTE *)pFileData; if (bResult) return MSG_HANDLED_STOP; else return MSG_ERROR; }
void isdf05Mission::Execute(void) { /* a) The player is asked to patrol around the base (through steps b-d sent & scouts attack) b) Once the base is secure, the player is supposed to look for scrap veins and send a scavenger (twice) c)Eventually you get to some turrets. Shebayev detaches some mortar bikes to help you take out the turrets. d) Once the turrets are destroyed you need to deploy e) Follow Manson to the teleporter? Drop off a bomb */ char tempstr[128]; Handle nearguy = 0; // this is the start of the mission if (!start_done) { /* Alright Sgt Cooke, this looks like a good place to establish a base. Patrol the area around this recycler. If it looks safe, deploy the recycler. */ shabayev = BuildObject("ivtan5",1,"shab_start");//"patrol_east"); constructor = BuildObject("ivcons",1,"spawn_constructor"); Stop(constructor,1); scav_comp= GetHandle("scav3"); SetGroup(scav_comp,-1); Handle temppool=GetHandle("poolx"); Goto(scav_comp,temppool,1); // SetPlan("isdf05.aip",3); // build stuff AudioMessage("isdf0500.wav"); SetObjectiveOn(shabayev); SetObjectiveName(shabayev,"Cmdr. Shabayev"); audmsg=AudioMessage("isdf0501.wav"); patrol_phase=true; start_done = true; Handle tempscav=GetHandle("ivscav1"); KillPilot(tempscav); tempscav=GetHandle("ivscav2"); KillPilot(tempscav); // Handle fv=BuildObject("fvarch",2,"scrap_field1"); // SetSkill(fv,3); SetSkill(shabayev,3); // Patrol(shabayev,"patrol1",1); // Attack(shabayev,fv,1); recy=BuildObject("ivrec5",1,"recy_start"); // Goto(recy,"recy_deploy"); Dropoff(recy, "recy_deploy"); Follow(shabayev,recy,1); SetScrap(1,40); SetScrap(3,40); // allied resources } /* Here is where you put what happens every frame. */ player = GetPlayerHandle(); if ((!IsAlive(shabayev) && (!shab_dead))) { AudioMessage("isdf0732.wav"); ClearObjectives(); AddObjective("isdf05l1.otf",RED,15.0f); FailMission(GetTime()+5.0f,"isdf05l1.otf"); shab_dead=true; } // determining if the player is out of his ship if (IsOdf(player,"isuser")) { if (!out_of_ship) GiveWeapon(player, "igsatc"); out_of_ship = true; } else { out_of_ship = false; } if ((GetDistance(player,"spawn2")<150.f) && (!warning_message)) { AudioMessage("isdf0520.wav"); /* Stay away from those alien structures they aren't vital to our mission- but they may be dangerous. */ warning_message=true; } // this is checking to make sure the player does not attack his wingman ///////// if ((!in_combat) && (!fire_message)) { if ((IsAlive(shabayev)) && (IsAlive(player))) { if (GetTime() - GetLastFriendShot(shabayev) < .2f) { AudioMessage("ff01.wav"); // (shab) watch your firing! fire_reset = GetTime() + 2.f; fire_message = true; } } if ((IsAlive(manson)) && (IsAlive(player))) { if (GetTime() - GetLastFriendShot(manson) < .2f) { AudioMessage("isdf0555.wav"); // (manson) watch your firing! fire_reset = GetTime() + 2.f; fire_message = true; } } } if ((fire_message) && (fire_reset < GetTime())) { fire_reset = GetTime() + 999999.9f; fire_message = false; } if ((!IsAlive(constructor)) && (mission_state<10)) { // the constructor is dead, you lose mission_state=12; } switch (mission_state) { case 0: // Shabayev starts the base if (GetDistance(recy,"recy_deploy") < 25.0) { // Dropoff(recy,"recy_deploy"); Patrol(shabayev,"patrol1",1); SetIndependence(shabayev,1); ClearObjectives(); AddObjective("isdf0501.otf", WHITE, 10.0f); patrol_reminder_time=GetTime()+30.0f; MoviePlaying=true; CameraReady(); // but danger looms.. atk1=BuildObject("fvscout",2,"spawn1"); wasDead1=false; Attack(atk1,player); mission_state++; } break; case 1: if (MoviePlaying) { //CameraObject(recycler,5,5,5,recycler); MoviePlaying = PlayMovie("isdf0501.cin"); // if (IsAudioMessageDone(audmsg)) { if (!MoviePlaying) { // MoviePlaying=false; CameraFinish(); Build(constructor,"ibpge5",1); drop_off=true; Attack(shabayev,atk1); mission_state++; } } ReallyKillCineractive = 0; break; case 2: // patrol_phase // Kick this out a few extra times. if((ReallyKillCineractive == 0) || (ReallyKillCineractive == 10) || (ReallyKillCineractive == 20)) CameraFinish(); ReallyKillCineractive++; if (drop_off) { Dropoff(constructor,"pgen1",1); drop_off=false; Handle temp=GetHandle("unnamed_ivdrop"); Attack(shabayev,atk1,1); RemoveObject(temp); } if (!IsAlive(atk1)) { wait_count++; if (wait_count==250) { wasDead1=false; wasDead2=false; raid1=BuildObject("fvsent",2,"raid1"); Goto(raid1,recy); raid2=BuildObject("fvtank",2,"raid2"); Goto(raid2,recy); // raid3=BuildObject("fvsent",2,"raid3"); // Goto(raid3,recy); // raid4=BuildObject("fvtank",2,"raid4"); // Goto(raid4,recy); ClearObjectives(); AddObjective("isdf0517.otf",WHITE,10.0f); Goto(shabayev,constructor); AudioMessage("isdf0543.wav"); mission_state++; wait_count=0; } } break; case 3: if (power2) { Dropoff(constructor,"pgen2",1); power2=false; } if (com1) { Dropoff(constructor,"rbunker1",1); com1=false; } if (!IsAliveAndPilot(raid1)) { wasDead1=true; } if (!IsAliveAndPilot(raid2)) { wasDead2=true; } if ((wasDead1) && (wasDead2)) { if (raid_count==1) // should be 2 { /* Now look for scrap veins around the base. If you find one mark it with a nav beacon. */ scout_phase=true; ClearObjectives(); AddObjective("isdf0507.otf",WHITE,5.0f); SetObjectiveOff(shabayev); nav1=BuildObject("ibnav",1,"scrap_field1"); TranslateString2(tempstr, sizeof(tempstr), "Mission0501"); // tempstr SetObjectiveName(nav1,tempstr); SetObjectiveOn(nav1); // SetObjectiveName(pool1,"bio-metal"); // SetObjectiveOn(pool1); AudioMessage("isdf0507.wav"); // Add an attacked for spice Handle atk1=BuildObject("fvscout",2,"spawn1"); Goto(atk1,"attack1"); Patrol(shabayev,"patrol1",1); SetIndependence(shabayev,1); // AudioMessage( // You go on John, I'll guard the base mission_state++; } else { wait_count++; if (wait_count==400) { if (pgen2==NULL) { // was follow Goto(shabayev,constructor,1); Build(constructor,"ibpge5"); power2=true; } else { //was Follow Goto(shabayev,constructor,1); Build(constructor,"ibcbu5"); com1=true; } raid_count++; AddHealth(constructor,500); AddHealth(shabayev,500); raid1=BuildObject("fvtank",2,"raid1"); Goto(raid1,recy); raid2=BuildObject("fvtank",2,"raid2"); Goto(raid2,recy); wasDead1=false; wasDead2=false; // raid3=BuildObject("fvsent",2,"raid3"); // Goto(raid3,recy); // raid4=BuildObject("fvtank",2,"raid4"); // Goto(raid4,recy); wait_count=0; } } } break; case 4: // there is one, mark it with the geyser // mark that with a power up // good, now find another. if ((GetDistance(player,pool1)<75.0f) && (!found_field1)) { // there is a field, deploy the scavenger AudioMessage("isdf0508.wav"); found_field1=true; } if (scav2_deployed) // any scav is deployed { mission_state++; scav1_deployed=true; ClearObjectives(); AddObjective("isdf0508.otf",WHITE,10.0f); /* SetObjectiveOff(pool1); SetObjectiveName(pool2,"bio-metal 1"); SetObjectiveOn(pool2); */ nav2=BuildObject("ibnav",1,"scrap_field3"); TranslateString2(tempstr, sizeof(tempstr), "Mission0502"); // Bio-Metal 2 SetObjectiveName(nav2,tempstr); SetObjectiveOff(nav1); SetObjectiveOn(nav2); AudioMessage("isdf0509.wav"); // good job if (!found_field1) { AudioMessage("isdf0519.wav"); /* Don't send out scavengers unescorted. Be sure to stay with them. */ } } break; case 5: if ((scav2_deployed) && (!found_field3) && (GetDistance(player,"scrap_field3")<225.0f)) { found_field3=true; /* Watch out! That field looks hot. */ AudioMessage("isdf0512.wav"); ClearObjectives(); AddObjective("isdf0511.otf",RED,10.0f); mortar_delay=GetTime()+15.0f; } nearguy=GetNearestEnemy(player); if ((found_field3) && (GetTime()>mortar_delay) && (GetDistance(player,nearguy)>150.0f)) { /* Cineractive Cooke, I'm sending you force to help you take out those turrets! Here are some mortar bikes. */ Build(constructor,"ibfact5",1); factory=true; audmsg=AudioMessage("isdf0527.wav"); //was AudioMessage("isdf0513.wav"); ClearObjectives(); AddObjective("isdf0516.otf",WHITE,10.0f); /* int grp=GetFirstEmptyGroup(); mbike1=BuildObject("ivmbike",1,"patrol_south"); SetGroup(mbike1,grp); Follow(mbike1,player,0); Handle mb=BuildObject("ivmbike",1,"patrol_east"); SetGroup(mb,grp); Follow(mb,player,0); mb=BuildObject("ivmbike",1,"patrol_west"); SetGroup(mb,grp); Follow(mb,player,0); mb=BuildObject("ivmbike",1,"patrol_north"); SetGroup(mb,grp); Follow(mb,player,0); */ mission_state++; CameraReady(); MoviePlaying=true; } break; case 6:// attack phase /* First check to see if you blew up sturret1-4 then create Manson at manson_start "Good job Cooke, you show promise" Then follow Manson (he's an objective) into the base When you get close lets run past those towers when you get there hop out and use your demolition charge Then run away. Everything blows up. */ if (factory) { Dropoff(constructor,"fact"); factory=false; } if (MoviePlaying) { CameraObject(constructor,1,11,22,constructor); if (IsAudioMessageDone(audmsg)) { MoviePlaying=false; CameraFinish(); } } if ((!killed_turrets) && (!IsAlive(sturret1)) && (!IsAlive(sturret2)) && (!IsAlive(sturret3)) && (!IsAlive(sturret4)) && (!IsAlive(sturret5)) && (!IsAlive(sturret6))) { AudioMessage("isdf0514.wav"); // you show promise killed_turrets=true; ClearObjectives(); AddObjective("isdf0512.otf",WHITE,10.0f); manson_shows=GetTime()+10.0f; manson=BuildObject("ivtank",3,"manson_start"); SetObjectiveName(manson, "Maj. Manson"); Handle minion=BuildObject("ivtank",3,"manson_escort1"); SetObjectiveName(minion, "Sgt. Zdarko"); Follow(minion,manson); minion=BuildObject("ivtank",3,"manson_escort2"); SetObjectiveName(minion, "Sgt. Masiker"); Follow(minion,manson); } if ((killed_turrets) && (!manson_message) && (GetTime()>manson_shows)) { /* We found the objective, follow me */ AudioMessage("isdf0515.wav"); SetObjectiveOff(nav2); SetObjectiveOn(manson); ClearObjectives(); AddObjective("isdf0518.otf",WHITE,10.0f); manson_message=true; mission_state++; } break; case 7: if (GetDistance(player,manson)<50.0f) { ClearObjectives(); AddObjective("isdf0513.otf",WHITE,10.0f); SetIndependence(manson,0); SetAvoidType(manson,0); AudioMessage("isdf0539a.wav"); Goto(manson,"manson_path1"); mission_state++; } break; case 8: AddHealth(manson,100); // we don't want him to die here if ((wait_up) && (GetDistance(player,manson)<100.0f)) { // right now this goes off too // soon. You go on to path 2 before 1 is doen // But at least it makes sure // you are close once. wait_up=false; Goto(manson,"manson_path2"); } if ((!gun_tower_message) && (GetDistance(manson,"guntower2")<200.0f)) { /* There are gun towers ahead let's try to go past fast. */ AudioMessage("isdf0516.wav"); gun_tower_message=true; ClearObjectives(); AddObjective("isdf0514.otf",WHITE,10.0f); gun_tower_counter=0; } if (gun_tower_message) { gun_tower_counter++; if (gun_tower_counter>450) // you are on a timer { AudioMessage("isdf0529.wav"); ClearObjectives(); AddObjective("isdf0520.otf",RED,10.0f); FailMission(GetTime()+10.0f,"isdf0520.otf"); mission_state=12; } if (gun_tower_counter==300) { AudioMessage("isdf0528.wav"); } } if ((gun_tower_message) && (!hop_out_message) && (GetDistance(player,teleportal)<100.0f)) { /* Get out and use your demolition charge on that building */ AudioMessage("isdf0173.wav"); // that looks like one of ours? AudioMessage("isdf0517.wav"); hop_out_message=true; SetObjectiveOff(manson); SetObjectiveOn(teleportal); TranslateString2(tempstr, sizeof(tempstr), "Mission0503"); // Excavator SetObjectiveName(teleportal,tempstr); ClearObjectives(); AddObjective("isdf0515.otf",WHITE,10.0f); SetIndependence(manson,1); mission_state++; } break; case 9: if ((!out_of_ship_ever) && (out_of_ship)) { out_of_ship_ever=true; ClearObjectives(); AddObjective("isdf0521.otf",WHITE,5.0f); } if (!IsAlive(teleportal)) { if (out_of_ship_ever) { AudioMessage("isdf0518.wav"); SucceedMission(GetTime()+10.0f,"isdf05w1.txt"); mission_state++; } else { AudioMessage("isdf0521.wav"); /* I said use your demolition charge */ FailMission(GetTime()+10.0f,"isdfl1.txt"); mission_state++; } } break; case 12: /* If you lose the constructor this condition occurs. */ AudioMessage("isdf0522.wav"); ClearObjectives(); AddObjective("isdf0519.otf",RED,10.0f); FailMission(GetTime()+10.0f,"isdf0519.otf"); mission_state++; break; case 13: // waiting for the end of the world. break; } /* the lurkers */ if ((lurker1==NULL) && (GetDistance(player,"lurker1")<150.0f)) { lurker1=BuildObject("fvsent",2,"lurker1"); } if ((lurker2==NULL) && (GetDistance(player,"lurker2")<150.0f)) { lurker2=BuildObject("fvsent",2,"lurker1"); } if ((lurker3==NULL) && (GetDistance(player,"lurker3")<150.0f)) { lurker3=BuildObject("fvsent",2,"lurker3"); } if ((lurker4==NULL) && (GetDistance(player,"lurker4")<150.0f)) { lurker4=BuildObject("fvsent",2,"lurker4"); } }