//========================================================================================== // // cortex_who.gm // // Who When What //------------------------------------------------------------------------------------------ // palota 14 November 2011 paththrough navigation, RideMover - lift1,lift2,mongolfier, DYNAMITE goals, SWITCH_cd1, SWITCH_helicopter // palota 3 December 2011 DEFEND, routes, roles, GRENADE_pc, tram paththrough navigation //========================================================================================== // global Map = { Debug = 0, cd1Secured = false, cd2Secured = false, cd3Secured = false, cd4Secured = false, elicoCalled = false, grate_flag_Destroyed = false, grate_cd2_Destroyed = false, grate_cd3_Destroyed = false, doorDestroyed = false, lift1Position = 0, //to the 3rd floor lift2Position = 0, //shaft near axis spawn tramPosition = 0, mongolfierPosition = 0, //airship on the 3rd floor Movers = { "MOVER_camionp1", "MOVER_as", "MOVER_mongolfier" }, Roles = { AXIS = { AllBots = true, DEFENDER = { numbots = 16 }, ATTACKER = { numbots = 15 } }, ALLIES = { AllBots = true, DEFENDER = { numbots = 8 }, DEFENDER1 = { numbots = 9, }, DEFENDER2 = { numbots = 9, }, DEFENDER3 = { numbots = 9, }, }, }, NavL = function(_this, x,y,z, x2,y2) { _this.AddAimRequest(Priority.High, "facing", Vec3(x,y,z)); for(i=0; i<20; i+=1) { pos = _this.Bot.GetPosition(); if(Abs(pos.x - x2) > 60 || Abs(pos.y - y2) > 60){ break; } sleep(0.5); } }, Navigation = { l1 = {navigate=function(_this){ //238 Map.NavL(_this, -0.2,0,0.8, -4967.875, 237.950); }}, l2 = {navigate=function(_this){ //203,204 Map.NavL(_this, -0.2,0,0.8, -4967.699, 687.045); }}, l3 = {navigate=function(_this){ //549 _this.AddAimRequest(Priority.High, "facing", Vec3(0.2,0,0.8)); _this.Bot.HoldButton(BTN.BACKWARD, BTN.STRAFE_L, 2); sleep(3); }}, l4 = {navigate=function(_this){ //161 Map.NavL(_this, 0,0.2,0.8, -5371.135, 1925.875); }}, l5 = {navigate=function(_this){ //612 Map.NavL(_this, 0,0.2,0.8, -1336.151, -800.253); }}, l6 = {navigate=function(_this){ //645 Map.NavL(_this, 0,0.2,0.8, -4475.482, 1925.875); }}, l7 = {navigate=function(_this){ //712 _this.AddAimRequest(Priority.High, "facing", Vector3(0.4,0,-0.9)); _this.Bot.HoldButton(BTN.CROUCH, 5); for(i=0; i<100 && _this.Bot.GetPosition().z > -1190; i+=1){ _this.Bot.PressButton(BTN.BACKWARD); yield(); } _this.Bot.ReleaseButton(BTN.CROUCH); _this.Bot.HoldButton(BTN.FORWARD, 10); z1 = _this.Bot.GetPosition().z; for(i=0; i<60; i+=1){ z = _this.Bot.GetPosition().z; if(z>z1){ break; } z1=z; yield(); } _this.Bot.ReleaseButton(BTN.FORWARD); _this.AddAimRequest(Priority.High, "facing", Vector3(0.4,0,0.9)); _this.Bot.HoldButton(BTN.BACKWARD, 10); for(i=0; i<15 && _this.Bot.GetPosition().z > -1880; i+=1){ sleep(1); } _this.Bot.ReleaseButton(BTN.BACKWARD); _this.AddAimRequest(Priority.High, "facing", Vector3(-1,0,0)); _this.Bot.HoldButton(BTN.FORWARD, 0.5); sleep(1); }}, l8 = {navigate=function(_this){ //721 Map.NavL(_this, -0.2,0,0.8, -1306.056, -338.125); }}, l9 = {navigate=function(_this){ //732 Map.NavL(_this, 0,0.2,0.8, 481.794, 224.342); }}, desk = {navigate=function(_this){ //255 _this.AddAimRequest(Priority.High, "facing", Vec3(0,-0.2,0.8)); sleep(0.1); _this.Bot.HoldButton(BTN.FORWARD, 1); for(i=0; i<9 && _this.Bot.GetPosition().z<-700; i+=1) { sleep(0.5); } _this.Bot.HoldButton(BTN.STRAFE_L, 7); for(i=0; i<14; i+=1) { z = _this.Bot.GetPosition().z; if(z>-600 || z<-800){ break; } sleep(0.5); } _this.Bot.ReleaseButton(BTN.STRAFE_L); }}, lamp = {navigate=function(_this){ //300 _this.AddAimRequest(Priority.High, "position", Vec3(580,-915,-2012)); for(i=0; i<15; i+=1) { z = _this.Bot.GetPosition().z; if(z>-2040 || z<-2220){ break; } sleep(0.5); } }}, fall_cd1 = {navigate=function(_this){ //714 _this.Goto(_this.Bot.GetPosition()); _this.AddAimRequest(Priority.High, "facing", Vector3(0,0.4,-0.9)); _this.Bot.HoldButton(BTN.CROUCH, 4); for(i=0; i<100 && _this.Bot.GetPosition().z > -1195; i+=1){ _this.Bot.PressButton(BTN.FORWARD); yield(); } _this.Bot.ReleaseButton(BTN.CROUCH); sleep(1.5); }}, jump = {navigate=function(_this){ //462 for(i=0; i<3 && _this.Bot.GetPosition().x > -525; i+=1) { _this.Goto(Vec3(-508.935, -1060.115, -471.672)); _this.AddAimRequest(Priority.High, "facing", Vec3(-0.4,0,0.5)); _this.Bot.PressButton(BTN.JUMP); sleep(0.5); _this.Bot.ResetStuckTime(); _this.Bot.HoldButton(BTN.FORWARD,0.5); sleep(0.5); } }}, helicopter_cd = {navigate=function(_this){ //514 if(_this.Bot.GetTeam()==TEAM.AXIS) { for(i=0; i<8 && !_this.Bot.HasEntityFlag(ENTFLAG.CARRYINGGOAL); i+=1){ _this.AddAimRequest(Priority.High, "position", Vec3(-3129,620,-625)); yield(); _this.Bot.PressButton(BTN.USE); sleep(0.3); } } sleep(0.5); }}, cable = {navigate=function(_this){ //499 _this.AddAimRequest(Priority.High, "facing", Vec3(0,0.9,-0.3)); _this.Goto(_this.Bot.GetPosition()); for(i=0; i<200; i+=1) { pos = _this.Bot.GetPosition(); if(pos.z<400){ break; } if(i % 20 == 0 && pos.y < -160){ _this.Bot.PressButton(BTN.USE); } _this.Bot.MoveTowards(pos); yield(); } }}, tram = {navigate=function(_this){ //16 bot = _this.Bot; dowhile( Map.tramPosition==0 ) { _this.Goto(Vec3(-1400.704, 1844.914, -2239.712)); yield(); } Util.MapDebugPrint("tram enter", true); bot.HoldButton(BTN.CROUCH,3); sleep(0.25); for(;;) { pos = bot.GetPosition(); if(pos.x < -1600) { break; } bot.MoveTowards(Vec3(-1733.368, 1796.223, -2246.875)); yield(); } end = Vec3(-4757.100, 1838, -732.875); for(i=0; bot.DistanceTo(end) > 195; i+=1) { pos = bot.GetPosition(); if(pos.x > -2200 && i > 40 || i > 250){ Util.MapDebugPrint("tram enter failed", true); _this.Goto(Vec3(-1457.609, 1587.521, -2246.875)); return; } bot.MoveTowards(Vec3(pos.x,1800,pos.z)); yield(); } Util.MapDebugPrint("tram exit", true); for(i=0; i<170; i+=1) { pos = bot.GetPosition(); if(pos.x > -4455 || pos.x <-4680){ break; } if(pos.y<1840){ y=end.y - 400; } else{ y=end.y + 300; } bot.MoveTowards(Vec3(end.x,y,end.z)); yield(); } }}, }, RideMovers = { lift1 = { movergoal = "MOVER_camionp1", rideposition = Vector3(0,0,0), startwp = "lift1_in", exitwp = "lift1_out", maxusers = 2, board = function(_this) { return Map.lift1Position == 1; }, leave = function(_this) { return Map.lift1Position == 3; }, }, lift2 = { movergoal = "MOVER_as", rideposition = Vector3(10,0,0), startwp = "lift2_in", exitwp = "lift2_out", board = function(_this) { return Map.lift2Position == 1; }, leave = function(_this) { return Map.lift2Position == 3; }, }, mongolfier = { movergoal = "MOVER_mongolfier", rideposition = Vector3(0,0,0), startwp = "mongolfier_in", exitwp = "mongolfier_out", board = function(_this) { return Map.mongolfierPosition == 1; }, leave = function(_this) { return Map.mongolfierPosition == 2; }, }, }, Tram_Start = { Name = "Tram_Start", TriggerOnClass = { CLASS.VEHICLE_NODAMAGE, CLASS.GOAL }, OnEnter = function(ent) { sleep(1); Map.tramPosition=1; sleep(0.5); Map.tramPosition=0; }, }, camionp1_goto = function(trigger) { if(ToVector(trigger.Action).z > 0){ Map.lift1Position = 2; //Util.MapDebugPrint("lift1 moving up", true); sleep(4.5); Map.lift1Position = 3; //Util.MapDebugPrint("lift1 is up", true); }else{ Map.lift1Position = 4; //Util.MapDebugPrint("lift1 moving down", true); sleep(4.5); Map.lift1Position = 1; //Util.MapDebugPrint("lift1 is down", true); } }, as_goto = function(trigger) { if(ToVector(trigger.Action).z > 0){ Map.lift2Position = 2; //Util.MapDebugPrint("lift2 moving up", true); sleep(5.5); Map.lift2Position = 3; //Util.MapDebugPrint("lift2 is up", true); }else{ Map.lift2Position = 4; //Util.MapDebugPrint("lift2 moving down", true); sleep(5.5); Map.lift2Position = 1; //Util.MapDebugPrint("lift2 is down", true); } }, cdbas_goto = function(trigger) { if(!Map.cd1Secured) { if(ToVector(trigger.Action).y > 0){ Wp.SetWaypointFlag("cd1", "closed", false); SetAvailableMapGoals(TEAM.AXIS, true, "FLAG_cd1"); Util.LimitToTeam(TEAM.ALLIES, "SWITCH_cd1"); Util.SetRoleForGoals("SWITCH_cd1", ROLE.DEFENDER1 ); Util.MapDebugPrint("cd1 opened"); }else{ SetAvailableMapGoals(TEAM.AXIS, false, "FLAG_cd1"); Wp.SetWaypointFlag("cd1", "closed", true); Util.LimitToTeam(TEAM.AXIS, "SWITCH_cd1"); Util.ClearRoleForGoals("SWITCH_cd1", ROLE.DEFENDER1 ); Util.MapDebugPrint("cd1 closed"); } } }, elico_goto = function(trigger) { if(!Map.elicoCalled){ Map.elicoCalled = true; SetAvailableMapGoals(TEAM.AXIS, false, "SWITCH_helicopter"); SetAvailableMapGoals(TEAM.ALLIES, false, "DEFEND_heli.*"); Util.MapDebugPrint("helicopter used to take cd4"); } }, door_Destroyed = function( trigger ) { Map.doorDestroyed = true; if(!Map.cd3Secured){ SetAvailableMapGoals(TEAM.AXIS, true, "FLAG_cd3"); SetAvailableMapGoals(TEAM.ALLIES, true, "DEFEND_cd3.*"); Util.ClearRoleForGoals("DEFEND_heli.*", ROLE.DEFENDER3 ); } if(!Map.grate_cd3_Destroyed){ SetAvailableMapGoals(TEAM.AXIS, true, "DYNAMITE_cd3"); } Util.MapDebugPrint("door_Destroyed"); }, cd1_Secured = function( trigger ) { Map.cd1Secured = true; Util.SetRoleForGoals("CHECKPOINT_roadbunker", ROLE.DEFENDER1); SetAvailableMapGoals(TEAM.ALLIES, false, { ".*MG42_tower", "DEFEND_cd1.*", }); Util.DisableGoal("SWITCH_cd1"); Util.MapDebugPrint("cd1_Secured"); }, cd2_Secured = function( trigger ) { Map.cd2Secured = true; Util.SetRoleForGoals("CHECKPOINT_roadbunker", ROLE.DEFENDER2); SetAvailableMapGoals(TEAM.ALLIES, false, "DEFEND_cd2.*"); Util.MapDebugPrint("cd2_Secured"); }, cd3_Secured = function( trigger ) { Map.cd3Secured = true; Util.SetRoleForGoals("CHECKPOINT_roadbunker", ROLE.DEFENDER3); SetAvailableMapGoals(TEAM.ALLIES, false, "DEFEND_cd3.*"); if(!Map.doorDestroyed){ SetAvailableMapGoals(TEAM.AXIS, false, "PLANT_porte_de_minus_2eme_etage"); } Util.MapDebugPrint("cd3_Secured"); }, cd4_Secured = function( trigger ) { Map.cd4Secured = true; SetAvailableMapGoals(TEAM.AXIS, false, "SWITCH_helicopter"); SetAvailableMapGoals(TEAM.ALLIES, false, "DEFEND_heli.*"); Util.MapDebugPrint("cd4_Secured"); }, SetFlag = function(axis) { SetAvailableMapGoals(TEAM.AXIS, axis, ".*Command_Post.*"); SetAvailableMapGoals(TEAM.ALLIES, !axis, ".*Command_Post.*"); SetAvailableMapGoals(TEAM.AXIS, axis, ".*MG42_pc"); SetAvailableMapGoals(TEAM.ALLIES, !axis, ".*MG42_pc"); SetAvailableMapGoals(TEAM.AXIS, !axis, "GRENADE_pc"); SetAvailableMapGoals(TEAM.ALLIES, axis, "GRENADE_pc"); SetAvailableMapGoals(TEAM.AXIS, !axis, ".*MG42_stairs"); SetAvailableMapGoals(TEAM.AXIS, axis, { "DEFEND_x.*", "MOBILEMG42_x.*", }); SetAvailableMapGoals(TEAM.ALLIES, !axis, { "DEFEND_l.*", "MOBILEMG42_l.*", "TRIPMINE_l.*", }); if(axis){ p=0.85; } else { p=0.81; } SetGoalPriority( "PLANT_porte_de_minus_2eme_etage", p); }, flag_Axis_Captured = function( trigger ) { Map.SetFlag(true); Util.MapDebugPrint("flag_Axis_Captured"); }, flag_Allies_Captured = function( trigger ) { Map.SetFlag(false); Util.MapDebugPrint("flag_Allies_Captured"); }, grate_axis_spawnExploded = function(trigger) { SetAvailableMapGoals(TEAM.AXIS, false, "DYNAMITE_axis_spawn"); if(!Map.grate_flag_Destroyed){ SetAvailableMapGoals(TEAM.AXIS, true, "DYNAMITE_flag"); } if(!Map.grate_cd2_Destroyed){ SetAvailableMapGoals(TEAM.AXIS, true, "DYNAMITE_cd2"); } if(!Map.grate_cd3_Destroyed){ SetAvailableMapGoals(TEAM.AXIS, true, "DYNAMITE_cd3"); } Util.EnableGoal("ROUTE_grate_axis"); Util.MapDebugPrint("grate_axis_spawnExploded"); }, grate_flagExploded = function(trigger) { Map.grate_flag_Destroyed = true; SetAvailableMapGoals(TEAM.AXIS, false, "DYNAMITE_flag"); Util.EnableGoal("ROUTE_grate_flag"); Util.MapDebugPrint("grate_flagExploded"); }, grate_cd2Exploded = function(trigger) { Map.grate_cd2_Destroyed = true; SetAvailableMapGoals(TEAM.AXIS, false, "DYNAMITE_cd2"); Util.EnableGoal("ROUTE_grate_cd2"); Util.MapDebugPrint("grate_cd2Exploded"); }, grate_cd3Exploded = function(trigger) { Map.grate_cd3_Destroyed = true; SetAvailableMapGoals(TEAM.AXIS, false, "DYNAMITE_cd3"); if(!Map.cd3Secured){ SetAvailableMapGoals(TEAM.AXIS, true, "FLAG_cd3"); SetAvailableMapGoals(TEAM.ALLIES, true, "DEFEND_cd3.*"); Util.ClearRoleForGoals("DEFEND_heli.*", ROLE.DEFENDER3 ); } Util.EnableGoal("ROUTE_grate_cd3"); Util.MapDebugPrint("grate_cd3Exploded"); }, glass_cd1Exploded = function(trigger) { Wp.SetWaypointFlag("cd1up1", "closed", false); Wp.SetWaypointFlag("cd1up2", "closed", true); Util.MapDebugPrint("glass_cd1Exploded"); }, WatchMongolfier = function() { entity = GetGoal("MOVER_mongolfier").GetEntity(); start = Vec3(-3750, -29, 1307); end = Vec3(-4325, 1731, 1240); for(;;) { if ( DistanceBetween( entity, start ) < 250) { Map.mongolfierPosition = 1; //Util.MapDebugPrint("mongolfier start", true); } else if ( DistanceBetween( entity, end ) < 300) { Map.mongolfierPosition = 2; //Util.MapDebugPrint("mongolfier end", true); } else { Map.mongolfierPosition = 0; } sleep(1); } }, }; global OnMapLoad = function() { OnTrigger( "Allies capture the Forward Bunker!", Map.flag_Allies_Captured ); OnTrigger( "Axis reclaim the Forward Bunker!", Map.flag_Axis_Captured ); OnTrigger( "porte de minus (2eme etage) Destroyed.", Map.door_Destroyed ); OnTrigger( "Les axes on le cd 1", Map.cd1_Secured ); OnTrigger( "Les axes on le cd 2", Map.cd2_Secured ); OnTrigger( "Les axes on le cd 3", Map.cd3_Secured ); OnTrigger( "Les axes on le cd 4", Map.cd4_Secured ); OnTrigger("cdbas_goto", Map.cdbas_goto); OnTrigger("elico_goto", Map.elico_goto); OnTrigger("camionp1_goto", Map.camionp1_goto); OnTrigger("as_goto", Map.as_goto); OnTrigger("GRENADE_grate_axis_spawn Exploded.", Map.grate_axis_spawnExploded); OnTrigger("GRENADE_grate_flag Exploded.", Map.grate_flagExploded); OnTrigger("GRENADE_grate_cd2 Exploded.", Map.grate_cd2Exploded); OnTrigger("GRENADE_grate_cd3 Exploded.", Map.grate_cd3Exploded); OnTrigger("GRENADE_glass_cd1 Exploded.", Map.glass_cd1Exploded); OnTriggerRegion(AABB(-1504.793,1900.826,-2272.605,-1409.701,1941.368,-2156.813),Map.Tram_Start); OnTriggerRegion(AABB(-4600,1680.655,-2269.875,-1390,2030.875,-512.875),RegionTrigger.DisableBotPush); //tram OnTriggerRegion(AABB(958.518,-1064.266,-2091.100,1217.779,-849.723,-1309.294),RegionTrigger.DisableBotPush); //cd1 OnTriggerRegion(AABB(-502.993,-1141.052,-636.093,-309.041,-829.999,-354.092),RegionTrigger.DisableBotPush); //cd3 OnTriggerRegion(AABB(-6757.539,425.793,-673.679,-6583.428,2084.875,464.633),RegionTrigger.DisableCombatMovement); //stairs to the 3rd floor OnTriggerRegion(AABB(-2935.362,-700.252,-1115.518,-2812.620,-387.665,-634.237),RegionTrigger.DisableBotPush); //Axis shaft OnTriggerRegion(AABB(-4236.022,1857.000,-824.166,-4121.771,1900.410,-706.081),RegionTrigger.KillTrigger); //tram Util.DisableGoal( ".*", true ); Util.DisableGoal("ROUTE_grate_.*"); Util.EnableGoal("AMMOCAB.*"); Util.EnableGoal("HEALTHCAB.*"); Util.EnableGoal("CHECKPOINT_roadbunker"); Util.ClearRoleForGoals("CHECKPOINT_roadbunker", { ROLE.DEFENDER1,ROLE.DEFENDER2,ROLE.DEFENDER3 } ); Util.SetRoleForTable({ "CHECKPOINT_roadbunker", "MOUNTMG42_pc", "DEFEND_x.*", "GRENADE_pc" }, ROLE.DEFENDER ); Util.SetRoleForTable({ "DEFEND_cd1.*", "MOUNTMG42_tower" }, ROLE.DEFENDER1 ); Util.SetRoleForGoals( "DEFEND_cd2.*", ROLE.DEFENDER2 ); Util.SetRoleForTable({ "DEFEND_cd3.*", "DEFEND_heli.*" }, ROLE.DEFENDER3 ); Util.ClearRoleForGoals("SWITCH_cd1", ROLE.DEFENDER1 ); SetAvailableMapGoals(TEAM.AXIS, true, { "FLAG_cd[24]", "CAPPOINT_pc", "DYNAMITE_axis_spawn", "PLANT_porte_de_minus_2eme_etage", "SWITCH_cd1", "SWITCH_helicopter", }); SetAvailableMapGoals(TEAM.ALLIES, true, { ".*MG42_tower", "DEFEND_cd1.*", "DEFEND_cd2.*", "DEFEND_heli.*", "TRIPMINE_l1", }); SetGoalPriority( "DYNAMITE_.*", 0.84); SetGoalPriority( "FLAG_.*", 0.6); SetGoalPriority( "SWITCH_cd1", 0.75); SetGoalPriority( "DEFEND_x.*", 0.62); foreach (goal in { ".*MG42.*", ".*Command_Post.*", "SWITCH_cd1", "DYNAMITE.*" }){ Util.SetMaxUsers(1, goal); } SetMapGoalProperties("DEFEND_.*", {mincamptime=20, maxcamptime=60} ); Wp.SetWaypointFlag("cd1up1", "closed", true); Wp.SetWaypointFlag("cd1up2", "closed", false); Wp.SetWaypointFlag("cd1", "closed", true); Util.AddUsePoint("DYNAMITE_cd3", { Vec3(-1532.882, -535.418, -239.829), Vec3(-1418.901, -545.022, -241.875) } ); if(ToInt(GetGoal("MOVER_mongolfier").GetPosition().y) == 845) { //old mods can't get mongolfier position Wp.SetWaypointFlag("mongolfier_in", "closed", true); } else { thread(Map.WatchMongolfier); } MapRoutes = { CHECKPOINT_roadbunker = { ROUTE_axis = { ROUTE_grate_axis = { ROUTE_grate_flag = { ROUTE_desk = { ROUTE_desk1 = {}, ROUTE_desk2 = {}, } }, ROUTE_allied_north = { ROUTE_desk = {}}, }, ROUTE_door1 = { Weight=2, ROUTE_tram_bottom = { ROUTE_desk = {}}, ROUTE_tram_top = { ROUTE_desk = {}}, }, }, ROUTE_allied = { ROUTE_minus2 = { ROUTE_desk = {}}, ROUTE_allied_north = { Weight=1.5, ROUTE_desk = {}}, ROUTE_grate_flag = { Weight=0.5 }, }, }, SWITCH_helicopter = { ROUTE_axis = { ROUTE_grate_axis = { Weight=2, ROUTE_grate_flag = {}, ROUTE_allied_north = {}, }, ROUTE_door1 = { ROUTE_tram_bottom = {}, ROUTE_tram_top = {}, }, } }, SWITCH_cd1 = { ROUTE_allied = { ROUTE_stairs2 = {}, ROUTE_grate_axis = { Weight=2 }, }, }, FLAG_cd1 = { ROUTE_axis = { ROUTE_cd1_0 = { ROUTE_cd1_1 = {}, ROUTE_cd1_2 = {}, ROUTE_cd1_4 = {}, } }, ROUTE_flag = { ROUTE_cd1_0 = {}, }, }, FLAG_cd2 = { ROUTE_axis = { ROUTE_grate_cd2 = { Weight=2 }, ROUTE_door2 = { ROUTE_lift1 = { ROUTE_cd2_floor = {}}, ROUTE_stairs3 = {}, }, }, ROUTE_flag = { ROUTE_tomjerry = { ROUTE_stairs3 = {}}, ROUTE_door2 = { Weight=2 }, }, }, MOUNTMG42_tower = { ROUTE_flag = { ROUTE_cd1_0 = { ROUTE_cd1_1 = {}, ROUTE_cd1_2 = {}, ROUTE_cd1_4 = {}, } }, ROUTE_allied = { ROUTE_grate_axis = {}, ROUTE_stairs2 = { ROUTE_cd1_0 = {}}, }, }, }; MapRoutes.PLANT_porte_de_minus_2eme_etage = MapRoutes.SWITCH_helicopter; MapRoutes.GRENADE_pc = MapRoutes.CHECKPOINT_roadbunker; Util.Routes(MapRoutes); Util.MapDebugPrint( "Omni-bot map script for " + GetMapName() + " executed." ); };