//========================================================================================== // // sos_secret_weapon.gm // // Who When What //------------------------------------------------------------------------------------------ // ^4Tardis 01 November 2010 Initial Script // //========================================================================================== // global Map = { Debug = 0, // please set to zero before distributing your script Drop_Point_Radio_Construction_Dyno = 0, Lower_Door_Dyno = 0, Upper_Door_Dyno = 0, Radio_Built = false, obj_taken = false, NavDoor = function(_this) { wpinfo = _this.navigation.wpinfo; if(wpinfo==null) { wpinfo = Util.WpNameInfo(_this.CurrentNavigation); _this.navigation.wpinfo = wpinfo; } pos = wpinfo.position; vec = wpinfo.facing.Normalize(); pos1 = pos - vec * 60; pos1 = Vector3(pos1.x, pos1.y, pos.z); pos2 = pos + vec * 140; pos2 = Vector3(pos2.x, pos2.y, pos.z); for(i=0; i<4; i+=1) { Util.MapDebugPrint("goto door"); if(_this.Goto(pos) == EVENT.PATH_FAILED ) { Util.MapDebugPrint("goto door failed"); return; } _this.AddAimRequest(Priority.High, "facing", wpinfo.facing); tr = TraceLine(pos, pos2, null, TRACE.SOLID, 0, true); if(tr.fraction == 1) { Util.MapDebugPrint("go through door"); _this.Bot.MoveTowards(pos2); sleep(0.8); break; } sleep(0.1); Util.MapDebugPrint("open"); _this.Bot.PressButton(BTN.USE); _this.Bot.MoveTowards(pos1); //wait while door opens sleep(2); } }, Navigation = { door = { navigate = function(_this) { Map.NavDoor(_this); }, }, // /bot waypoint_setproperty paththrough Navigation_PT:door jump = { navigate = function( _this ) { _this.Bot.PressButton( BTN.JUMP ); _this.Bot.HoldButton( BTN.FORWARD, 3 ); sleep( 3 ); }, }, // /bot waypoint_setproperty paththrough Navigation_PT:jump }, Drop_Point_Radio_Construction_Built = function( trigger ) { Map.Radio_Built = true; SetAvailableMapGoals( TEAM.ALLIES, true, "CAPPOINT_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "CAPPOINT_Fake.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Drop_Point_Radio_Construction" ); SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_radio.*" ); Util.MapDebugPrint( "Drop_Point_Radio_Construction_Built" ); }, Drop_Point_Radio_Construction_Planted = function( trigger ) { Map.Drop_Point_Radio_Construction_Dyno += 1; Util.MapDebugPrint( "Drop_Point_Radio_Construction_Planted" ); }, Drop_Point_Radio_Construction_Defused = function( trigger ) { Map.Drop_Point_Radio_Construction_Dyno -= 1; Util.MapDebugPrint( "Drop_Point_Radio_Construction_Defused" ); }, Drop_Point_Radio_Construction_Destroyed = function( trigger ) { Map.Drop_Point_Radio_Construction_Dyno = 0; Map.Radio_Built = false; SetAvailableMapGoals( TEAM.ALLIES, false, "CAPPOINT_Plane.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CAPPOINT_Fake.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_radio.*" ); Util.MapDebugPrint( "Drop_Point_Radio_Construction_Destroyed" ); }, Upper_Door_Planted = function( trigger ) { Map.Upper_Door_Dyno += 1; Util.MapDebugPrint( "Upper_Door_Planted" ); }, Upper_Door_Defused = function( trigger ) { Map.Upper_Door_Dyno -= 1; Util.MapDebugPrint( "Upper_Door_Defused" ); }, Upper_Door_Destroyed = function( trigger ) { Map.Upper_Door_Dyno = 0; if ( Map.obj_Taken == true ) { SetAvailableMapGoals( TEAM.AXIS, false, { "MOUNTMG42_BunkerMG", "SNIPE_bunker", "DEFEND_obj.*", }); } else if ( Map.obj_taken == false) { SetAvailableMapGoals( TEAM.AXIS, true, { "MOUNTMG42_BunkerMG", "SNIPE_bunker", "DEFEND_obj.*", }); } Util.MapDebugPrint( "Upper_Door_Destroyed" ); }, Lower_Door_Planted = function( trigger ) { Map.Lower_Door_Dyno += 1; Util.MapDebugPrint( "Lower_Door_Planted" ); }, Lower_Door_Defused = function( trigger ) { Map.Lower_Door_Dyno -= 1; Util.MapDebugPrint( "Lower_Door_Defused" ); }, Lower_Door_Destroyed = function( trigger ) { Map.Lower_Door_Dyno = 0; if ( Map.Radio_Built == true ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_radio.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_plane.*" ); } else if ( Map.Radio_Built == false ) { //SetAvailableMapGoals( TEAM.AXIS, true, "ROUTE_Patrol.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_radio.*" ); SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_plane.*", "MOBILEMG42_plane", }); } if ( Map.obj_Taken == true ) { SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_lower.*", "MOBILEMG42_lower", "MOUNTMG42_BunkerMG", "SNIPE_bunker", "DEFEND_obj.*", }); } else if ( Map.obj_taken == false) { SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_lower.*", "MOBILEMG42_lower", "MOUNTMG42_BunkerMG", "SNIPE_bunker", "DEFEND_obj.*", }); } Util.MapDebugPrint( "Lower_Door_Destroyed" ); }, transmitter_obj_Taken = function( trigger ) { Map.obj_taken = true; SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_lower.*", "MOBILEMG42_lower", "MOUNTMG42_BunkerMG", "SNIPE_bunker", "DEFEND_obj.*", }); if ( Map.Radio_Built == true ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_radio.*" ); SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_plane.*", "MOBILEMG42_plane", }); } else if ( Map.Radio_Built == false ) { //SetAvailableMapGoals( TEAM.AXIS, true, "ROUTE_Patrol.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_radio.*" ); SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_plane.*", "MOBILEMG42_plane", }); } Util.MapDebugPrint( "transmitter_obj_Taken" ); }, transmitter_obj_Returned = function( trigger ) { Map.obj_taken = false; SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_lower.*", "MOBILEMG42_lower", "MOUNTMG42_BunkerMG", "SNIPE_bunker", "DEFEND_obj.*", }); if ( Map.Radio_Built == true ) { SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_lower.*", "MOBILEMG42_lower", "DEFEND_radio.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_plane.*", "MOBILEMG42_plane", }); } else if ( Map.Radio_Built == false ) { //SetAvailableMapGoals( TEAM.AXIS, true, "ROUTE_Patrol.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_radio.*" ); SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_lower.*", "MOBILEMG42_lower", "DEFEND_plane.*", "MOBILEMG42_plane", }); } Util.MapDebugPrint( "transmitter_obj_Returned" ); }, transmitter_obj_Secured = function( trigger ) { //Game Over Util.MapDebugPrint( "transmitter_obj_Secured" ); }, forwardspawn1_flag_Axis_Captured = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, false, "CHECKPOINT_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CHECKPOINT_.*" ); Util.MapDebugPrint( "forwardspawn1_flag_Axis_Captured" ); }, forwardspawn1_flag_Allies_Captured = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, "CHECKPOINT_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "CHECKPOINT_.*" ); Util.MapDebugPrint( "forwardspawn1_flag_Allies_Captured" ); }, }; global OnMapLoad = function() { // Register callback functions OnTrigger( "Allies have built the radio!", Map.Drop_Point_Radio_Construction_Built ); OnTrigger( "Planted at the Drop Point Radio Construction", Map.Drop_Point_Radio_Construction_Planted ); OnTrigger( "Planted at the Lower Door", Map.Lower_Door_Planted ); OnTrigger( "Planted at the Upper Door", Map.Upper_Door_Planted ); OnTrigger( "Defused at the Drop Point Radio Construction", Map.Drop_Point_Radio_Construction_Defused ); OnTrigger( "Defused at the Lower Door", Map.Lower_Door_Defused ); OnTrigger( "Defused at the Upper Door", Map.Upper_Door_Defused ); OnTrigger( "Axis have destroyed the radio", Map.Drop_Point_Radio_Construction_Destroyed ); OnTrigger( "Allies have destroyed the Lower Door", Map.Lower_Door_Destroyed ); OnTrigger( "Allies have destroyed the Upper Door", Map.Upper_Door_Destroyed ); OnTrigger( "Allies have stolen the Secret Weapon!", Map.transmitter_obj_Taken ); OnTrigger( "Axis have returned the Secret Weapon!", Map.transmitter_obj_Returned ); OnTrigger( "Allied team has secured the secret weapon!", Map.transmitter_obj_Secured ); OnTrigger( "Axis reclaim the Forward Spawn!", Map.forwardspawn1_flag_Axis_Captured ); OnTrigger( "Allies capture the Forward Spawn!", Map.forwardspawn1_flag_Allies_Captured ); Util.SetGoalOffset( 0, 0, -50, "BUILD_Drop_Point_Radio_Construction" ); Util.DisableGoal( ".*", true ); // all but routes Util.EnableGoal("FLAG.*"); Util.EnableGoal("BUILD.*"); Util.EnableGoal("PLANT.*"); Util.EnableGoal("CHECKPOINT_.*"); SetAvailableMapGoals( TEAM.ALLIES, true, "CAPPOINT_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, { "MOUNTMG42_BunkerMG", "SNIPE_bunker", "DEFEND_radio.*", "DEFEND_obj.*", }); Util.AddUseWp("PLANT_Drop_Point_Radio_Construction", "radio"); Util.AddUseWp("PLANT_Drop_Point_Radio_Construction", "radio1"); SetGoalPriority( "CHECKPOINT_.*", 0.49, 0, 0 ); //all teams and all classes SetGoalPriority( "CAPPOINT_Fake.*", 0.80 ); // Max users per goal Util.SetMaxUsers( 1, "DEFEND_.*" ); Util.SetMaxUsers( 1, "GRENADE_.*" ); Util.SetMaxUsers( 1, "MOUNTMG42_.*" ); Util.SetMaxUsers( 1, "CHECKPOINT.*" ); // Camp times SetMapGoalProperties( "MOUNTMG42_.*", {MinCampTime=15, MaxCampTime=90} ); SetMapGoalProperties( "MOBILEMG42_.*", {MinCampTime=10, MaxCampTime=60} ); //Map Routes MapRoutes = { BUILD_Drop_Point_Radio_Construction = { ROUTE_Allies_Spawn = { ROUTE_NorthLD = { ROUTE_NorthLD_1 = { ROUTE_NorthLD_2 = { ROUTE_NorthLD_3 = { ROUTE_NorthLD_4 = { ROUTE_NorthLD_5 = { ROUTE_NorthLD_6 = { ROUTE_NorthSplit = { ROUTE_NorthWindow = { ROUTE_Radio = { }, }, ROUTE_South = { ROUTE_South_1 = { ROUTE_South_2 = { ROUTE_South_3 = { ROUTE_South_4 = { ROUTE_Radio = { }, }, }, }, }, }, }, }, }, }, }, }, }, }, ROUTE_North = { ROUTE_North_1 = { ROUTE_North_2 = { ROUTE_North_3 = { ROUTE_North_4 = { ROUTE_SouthStair_1 = { ROUTE_SouthStair_2 = { ROUTE_SouthStair_3 = { ROUTE_South_1 = { ROUTE_South_2 = { ROUTE_South_3 = { ROUTE_South_4 = { ROUTE_Radio = { }, }, }, }, }, }, }, }, }, }, }, }, }, ROUTE_West = { ROUTE_West_1 = { ROUTE_WestSplit = { ROUTE_NorthSplit = { ROUTE_North_4 = { ROUTE_SouthStair_1 = { ROUTE_SouthStair_2 = { ROUTE_SouthStair_3 = { ROUTE_South_1 = { ROUTE_South_2 = { ROUTE_South_3 = { ROUTE_South_4 = { ROUTE_Radio = { }, }, }, }, }, }, }, }, }, }, }, }, }, }, ROUTE_Flag = { ROUTE_SouthStair = { ROUTE_SouthStair_1 = { ROUTE_SouthStair_2 = { ROUTE_SouthStair_3 = { ROUTE_South_1 = { ROUTE_South_2 = { ROUTE_South_3 = { ROUTE_South_4 = { ROUTE_Radio = { }, }, }, }, }, }, }, }, }, }, }, PLANT_Upper_Door = { ROUTE_Allies_Spawn = { ROUTE_West = { ROUTE_West_1 = { ROUTE_West_2 = { ROUTE_West_3 = { ROUTE_ramp = { ROUTE_ramp_1 = { ROUTE_ramp_2 = { ROUTE_updoor = { }, }, }, }, }, }, }, }, ROUTE_WestLD = { ROUTE_WestLD_1 = { ROUTE_WestLD_2 = { ROUTE_WestLD_3 = { ROUTE_WestLD_4 = { ROUTE_WestLD_5 = { ROUTE_updoor = { }, }, }, }, }, }, }, }, ROUTE_Flag = { ROUTE_SouthStair = { ROUTE_SouthStair_1 = { ROUTE_ramp = { ROUTE_ramp_1 = { ROUTE_ramp_2 = { ROUTE_updoor = { }, }, }, }, }, }, }, }, PLANT_Lower_Door = { ROUTE_Allies_Spawn = { ROUTE_North = { ROUTE_North_1 = { ROUTE_North_2 = { ROUTE_North_3 = { ROUTE_North_4 = { ROUTE_North_5 = { ROUTE_North_6 = { ROUTE_North_7 = { }, }, }, }, ROUTE_NorthSplit = { ROUTE_WestSplit = { ROUTE_West_2 = { ROUTE_West_3 = { ROUTE_West_4 = { }, }, }, ROUTE_WestLD_4 = { ROUTE_WestLD_5 = { ROUTE_updoor = { ROUTE_ramp_2 = { ROUTE_ramp_1 = { ROUTE_ramp = { ROUTE_West_3 = { ROUTE_West_4 = { }, }, ROUTE_North_6 = { ROUTE_North_7 = { }, }, }, }, }, }, }, }, }, }, }, }, }, }, ROUTE_NorthLD = { ROUTE_NorthLD_1 = { ROUTE_NorthLD_2 = { ROUTE_NorthLD_4 = { ROUTE_NorthLD_5 = { ROUTE_NorthLD_6 = { ROUTE_NorthSplit = { ROUTE_South = { ROUTE_South_1 = { ROUTE_South_2 = { ROUTE_South_3 = { ROUTE_North_5 = { ROUTE_North_6 = { ROUTE_North_7 = { }, }, }, }, }, }, }, }, }, ROUTE_North_4 = { ROUTE_North_5 = { ROUTE_North_6 = { ROUTE_North_7 = { }, }, }, }, }, }, }, }, }, ROUTE_West = { ROUTE_West_1 = { ROUTE_West_2 = { ROUTE_West_3 = { ROUTE_West_4 = { }, }, }, }, }, ROUTE_WestLD = { ROUTE_WestLD_1 = { ROUTE_WestLD_2 = { ROUTE_WestLD_3 = { ROUTE_WestLD_4 = { ROUTE_WestLD_5 = { ROUTE_updoor = { ROUTE_ramp_2 = { ROUTE_ramp_1 = { ROUTE_ramp = { ROUTE_West_3 = { ROUTE_West_4 = { }, }, ROUTE_North_6 = { ROUTE_North_7 = { }, }, }, }, }, }, }, }, }, }, }, }, }, }, CAPPOINT_Plane = { ROUTE_North_7 = { ROUTE_North_6 = { ROUTE_PlaneA = { ROUTE_PlaneA_1 = { ROUTE_PlaneA_2 = { ROUTE_PlaneA_3 = { ROUTE_PlaneA_4 = { ROUTE_PlaneA_5 = { ROUTE_Plane = { }, }, ROUTE_PlaneASplit = { ROUTE_PlaneASplit_1 = { ROUTE_PlaneASplit_2 = { ROUTE_PlaneOps = { }, }, }, }, }, }, }, }, }, }, }, ROUTE_updoor = { ROUTE_WestLD_5 = { ROUTE_WestLD_4 = { ROUTE_WestSplit = { ROUTE_NorthSplit = { ROUTE_North_4 = { ROUTE_SouthStair_1 = { ROUTE_SouthStair = { ROUTE_Flag = { ROUTE_PlaneB = { ROUTE_PlaneB_1 = { ROUTE_PlaneB_2 = { ROUTE_PlaneA_5 = { ROUTE_Plane = { }, }, }, }, }, }, }, }, }, ROUTE_North_3 = { ROUTE_North_2 = { ROUTE_North_1 = { ROUTE_NorthLD_2 = { ROUTE_PlaneC = { ROUTE_PlaneC_1 = { ROUTE_PlaneC_2 = { ROUTE_PlaneC_3 = { ROUTE_PlaneC_4 = { ROUTE_PlaneC_5 = { ROUTE_PlaneC_6 = { ROUTE_PlaneC_7 = { ROUTE_PlaneC_8 = { ROUTE_PlaneC_9 = { ROUTE_PlaneOps = { }, }, }, ROUTE_Plane = { }, }, }, }, }, }, }, }, }, }, }, }, }, }, }, }, }, }, }, }; MapRoutes.CAPPOINT_Plane_1 = MapRoutes.CAPPOINT_Plane; Util.Routes(MapRoutes); Util.MapDebugPrint( "Omni-bot map script for " + GetMapName() + " executed." ); }; global OnBotJoin = function( bot ) { bot.TargetBreakableDist = 90.0; };