//========================================================================================== // // steelplant2.gm // // Who When What //------------------------------------------------------------------------------------------ // palota 14 May 2011 Initial Script // //========================================================================================== // global Map = { Debug = 0, objTaken = false, elevatorMoving = false, elevator2Moving = false, Roles = { AXIS = { DEFENDER2 = { numbots = 2, }, }, }, Navigation = { elevator3w = { navigate = function(_this) { if (Map.elevatorMoving) { _this.Goto(Vector3(-473.653, 2680.753, 88.125)); while (Map.elevatorMoving) { sleep(0.5); } } _this.Goto(Vector3(-383.009, 2517.160, 107.127)); for (i=0; i<150 && _this.Bot.GetPosition().z < 930; i+=1) { yield(); } }, }, elevator3e = { navigate = function(_this) { if (Map.elevator2Moving) { _this.Goto(Vector3(482.665, 2745.979, 88.125)); while (Map.elevator2Moving) { sleep(0.5); } } _this.Goto(Vector3(383.009, 2517.156, 106.127)); for (i=0; i<150 && _this.Bot.GetPosition().z < 930; i+=1) { yield(); } }, }, elevator1 = { navigate = function(_this) { bot = _this.Bot; for (i=0; i<5 && bot.GetPosition().z < 412; i+=1) { _this.Goto(Vector3(-1.395, 25.792, 408.125)); sleep(3+i); _this.Goto(Vector3(2.813, 222.425, 416.125)); } _this.AddAimRequest(Priority.High, "facing", Vector3(-0.041, -0.000, -0.999)); sleep(0.3); for (i=0; i<7 && bot.GetPosition().z < 450; i+=1) { bot.PressButton(BTN.USE); sleep(0.5); } _this.ReleaseAimRequest(); sleep(0.5); }, }, elevator2 = { navigate = function(_this) { bot = _this.Bot; for (i=0; i<5 && bot.GetPosition().z < 732; i+=1) { _this.Goto(Vector3(-1.425, 855.793, 728.125)); sleep(3+i); _this.Goto(Vector3(-1.095, 1086.555, 736.125)); } _this.AddAimRequest(Priority.High, "facing", Vector3(-0.041, -0.000, -0.999)); sleep(0.3); for (i=0; i<7 && bot.GetPosition().z < 770; i+=1) { bot.PressButton(BTN.USE); sleep(0.5); } _this.ReleaseAimRequest(); sleep(0.5); }, }, fan = { navigate = function(_this) { for (i=0; i<10 && _this.Bot.GetPosition().y < -400; i+=1) { sleep(1); } sleep(3); pos = _this.Bot.GetPosition(); if (pos.z < 500 && pos.y < -120) { _this.Goto(Vector3(-5.546, -377.589, 145.059)); } }, }, }, Defence_Sentry_Built = function( trigger ) { Util.DisableGoal("ROUTE_entrance"); SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_obj_gun.*" ); Util.MapDebugPrint( "Defence_Sentry_Built" ); }, Defence_Sentry_Destroyed = function( trigger ) { Util.EnableGoal("ROUTE_entrance"); if (!Map.objTaken){ SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_obj_gun.*" ); } Util.SetMaxUsers( 2, "BUILD_Defence_Sentry" ); Util.MapDebugPrint( "Defence_Sentry_Destroyed" ); }, Fan_Built = function( trigger ) { Util.EnableGoal("ROUTE_fan"); Wp.SetWaypointFlag("fan", "closed", false); Util.MapDebugPrint( "Fan_Built" ); }, Fan_Destroyed = function( trigger ) { Util.DisableGoal("ROUTE_fan"); Wp.SetWaypointFlag("fan", "closed", true); Util.MapDebugPrint( "Fan_Destroyed" ); }, Well_Grate_Destroyed = function( trigger ) { Util.EnableGoal("ROUTE_tunnel_west"); SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, true, "TRIPMINE_x.*" ); SetGoalPriority( "DEFEND_grate.*", 0.5); Util.SetRoleForGoals("DEFEND_grate.*", ROLE.DEFENDER2); Util.MapDebugPrint( "Well_Grate_Destroyed" ); }, prototype_Taken = function( trigger ) { Map.objTaken = true; SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_obj.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_cap.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "DEFEND_cap.*", "DEFEND_l.*", }); Util.MapDebugPrint( "prototype_Taken" ); }, prototype_Returned = function( trigger ) { Map.objTaken = false; SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_obj.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_cap.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, { "DEFEND_cap.*", "DEFEND_l.*", }); Util.MapDebugPrint( "prototype_Returned" ); }, prototype_Secured = function( trigger ) { ETUtil.WinningChat( TEAM.ALLIES ); ETUtil.LosingChat( TEAM.AXIS ); Util.MapDebugPrint( "prototype_Secured" ); }, elevator_goto = function( trigger ) { if (ToVector(trigger.Action).z < 0) { sleep(3); Map.elevatorMoving = false; Util.MapDebugPrint( "elevator down" ); }else{ sleep(0.5); Map.elevatorMoving = true; } }, elevator2_goto = function( trigger ) { if (ToVector(trigger.Action).z < 0) { sleep(3); Map.elevator2Moving = false; Util.MapDebugPrint( "elevator2 down" ); }else{ sleep(0.5); Map.elevator2Moving = true; } }, }; global OnMapLoad = function() { OnTrigger( "The Defence Sentry has been built!", Map.Defence_Sentry_Built ); OnTrigger( "The Defence Sentry have been destroyed!", Map.Defence_Sentry_Destroyed ); OnTrigger( "Allies have repaired the fan.", Map.Fan_Built ); OnTrigger( "Axis destroyed the fan!", Map.Fan_Destroyed ); OnTrigger( "The Well Grate has been destroyed!", Map.Well_Grate_Destroyed ); OnTrigger( "Allies has stolen the Prototype!", Map.prototype_Taken ); OnTrigger( "Flag returned prototype!", Map.prototype_Returned ); OnTrigger( "Allied team escaped with the Prototype!", Map.prototype_Secured ); OnTrigger( "elevator_goto", Map.elevator_goto ); OnTrigger( "elevator2_goto", Map.elevator2_goto ); Wp.SetWaypointFlag("fan", "closed", true); Util.DisableGoal("ROUTE_fan"); Util.DisableGoal("ROUTE_tunnel_west"); Util.DisableGoal("ATTACK_.*"); Util.DisableGoal("DEFEND_.*"); SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_obj.*", "DEFEND_grate.*", }); Util.LimitToTeam( TEAM.AXIS, "GRENADE_fan"); Util.LimitToTeam( TEAM.ALLIES, "GRENADE_sentry"); Util.LimitToTeam( TEAM.AXIS, ".*_x.*"); SetAvailableMapGoals( TEAM.AXIS, false, "TRIPMINE_x.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Command_Post" ); Util.ClearRoleForGoals("DEFEND_grate.*", ROLE.DEFENDER2); Util.SetRoleForGoals("GRENADE_fan", ROLE.DEFENDER2); Util.SetRoleForGoals("DEFEND_x.*", ROLE.DEFENDER2); SetGoalPriority( "FLAG_prototype", 0.7, TEAM.ALLIES); SetGoalPriority( "GRENADE_.*", 0.75); SetGoalPriority( "DEFEND_grate.*", 0.51); SetGoalPriority( "DEFEND_x.*", 0.52); SetGoalPriority( "ATTACK_cap.*", 0.76); SetGoalPriority( "PLANT_Well_Grate", 0.82); SetGoalPriority( "BUILD_Defence_Sentry", 0.91); // Max users per goal Util.SetMaxUsers( 1, "GRENADE_.*" ); Util.SetMaxUsers( 1, "DEFEND_.*" ); Util.SetMaxUsers( 1, "BUILD_Defence_Sentry" ); Util.SetMaxUsers( 1, "BUILD_Command_Post" ); // Camp times SetMapGoalProperties( "DEFEND_.*", {MinCampTime=10, MaxCampTime=40} ); SetMapGoalProperties( "MOBILEMG42_.*", {MinCampTime=30, MaxCampTime=120} ); MapRoutes = { FLAG_prototype = { ROUTE_allied_spawn = { ROUTE_fan = { ROUTE_up_east = {}, ROUTE_up_west = {}, }, ROUTE_south_down = { Weight=20, ROUTE_south_down_east = { ROUTE_entrance = { ROUTE_up_east = {}, ROUTE_up_west = {}, ROUTE_down_east = { Weight=2 }, ROUTE_down_west = { Weight=2 }, ROUTE_tunnel_east = { Weight=2 }, }, ROUTE_tunnel_west = {}, }, ROUTE_south_down_west = { ROUTE_entrance = {}, ROUTE_tunnel_west = { Weight=2 }, }, }, ROUTE_south_west = { ROUTE_entrance = {}, ROUTE_tunnel_west = { Weight=2 }, }, ROUTE_south_east = { Weight=0.5, ROUTE_entrance = {}, ROUTE_tunnel_west = {}, }, } }, CAPPOINT_escape = { ROUTE_prototype = { ROUTE_up_east = {}, ROUTE_up_west = {}, ROUTE_down_east = {}, ROUTE_tunnel_west = { Weight = 3 }, } }, DEFEND_x3 = { ROUTE_axis_spawn1 = { ROUTE_axis_door = {} }, } }; MapRoutes.DEFEND_x1 = MapRoutes.DEFEND_x3; Util.Routes(MapRoutes); Util.MapDebugPrint( "Omni-bot map script for " + GetMapName() + " executed." ); };