//========================================================================================== // // sandstorm_beta.gm // // Who When What //------------------------------------------------------------------------------------------ // native12 16 July 2011 Initial Script // 15.10.2011 First release // 13.11.2011 Added: coverspots, build & plant CP, some routes // 15.11.2011 Added: navigate for ladder near cappoint & release //========================================================================================== // // sandstorm_beta.way 15.11.2011 Size: 286 720 b // sandstorm_beta_goals.gm 3.11.2011 Size: 180 224 b // //========================================================================================== global Map = { Debug = 0, // please set to zero before distributing your script second_vault_storage_vent_Dyno = 0, Tank_Barrier_1_Dyno = 0, Tank_Barrier_2_Dyno = 0, elevator_shaft_vent_Dyno = 0, vault_storage_vent_Dyno = 0, Tank_Built = false, TankAtBarrier_1 = false, TankBarrier1_built = false, TankPastFirstBarrier = false, TankAtBarrier_2 = false, TankBarrier2_built = false, BankDoors = true, TankIsNearDoor = false, DocsTaken = false, AxisAtCappoint = 0, elevator_shaft_vent = true, vault_storage_vent = true, ElevatorPosition = 1, //on top ElevatorTriggerPosition = 1, //on top Movers = { "MOVER_tank", "MOVER_lift01", }, Navigation = { // /bot waypoint_setproperty paththrough Navigation_PT:jump jump = { navigate = function(_this) { _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(0.8,-0.7,-0.0)); sleep(1); }, }, // /bot waypoint_setproperty paththrough Navigation_PT:jump1 jump1 = { navigate = function(_this) { _this.Bot.PressButton(BTN.JUMP); _this.Bot.HoldButton(BTN.SPRINT, 1); sleep(1); }, }, // /bot waypoint_setproperty paththrough Navigation_PT:ladder_upp ladder_upp = { navigate = function(_this) { _this.AddAimRequest(Priority.High, "facing", Vector3(0.9,-0.04,0.5)); _this.Bot.HoldButton(BTN.FORWARD, 2); sleep(1.8); _this.Bot.HoldButton(BTN.STRAFE_L, 0.5); sleep(0.3); }, }, // /bot waypoint_setproperty paththrough Navigation_PT:ladder_down ladder_down = { navigate = function(_this) { _this.AddAimRequest(Priority.High, "facing", Vector3(0.036804,-0.000487,-0.999322)); yield(); _this.Bot.HoldButton(BTN.FORWARD, 1); _this.Bot.HoldButton(BTN.CROUCH, 1); sleep(1); _this.AddAimRequest(Priority.High, "facing", Vector3(0.036003,0.007651,0.999322)); _this.Bot.HoldButton(BTN.BACKWARD, 2); sleep(2); }, }, }, Elevator_goto = function( trigger ) { vel = ToVector(trigger.Action); if ( vel[ 0 ] == 100.00 ) { Wp.SetWaypointFlag( "under_elevator_1", "closed", false ); Wp.SetWaypointFlag( "under_elevator_2", "closed", false ); Wp.SetWaypointFlag( "under_elevator_3", "closed", false ); Wp.SetWaypointFlag( "under_elevator_4", "closed", false ); Wp.SetWaypointFlag( "under_elevator_5", "closed", false ); Wp.SetWaypointFlag( "under_elevator_6", "closed", false ); Util.MapDebugPrint("^5Elevator goes up"); sleep(1); Map.ElevatorPosition = -1; while ( Map.ElevatorTriggerPosition != 1 ) { yield(); } Map.ElevatorPosition = 1; Util.MapDebugPrint("^5Elevator is up"); } if ( vel[ 0 ] == 0.00 ) { Wp.SetWaypointFlag( "under_elevator_1", "closed", true ); Wp.SetWaypointFlag( "under_elevator_2", "closed", true ); Wp.SetWaypointFlag( "under_elevator_3", "closed", true ); Wp.SetWaypointFlag( "under_elevator_4", "closed", true ); Wp.SetWaypointFlag( "under_elevator_5", "closed", true ); Wp.SetWaypointFlag( "under_elevator_6", "closed", true ); Util.MapDebugPrint("^5Elevator goes down"); sleep(1); Map.ElevatorPosition = -1; while ( Map.ElevatorTriggerPosition != 0 ) { yield(); } Map.ElevatorPosition = 0; Util.MapDebugPrint("^5Elevator is down"); } }, LiftIsDown = { Name="lift_is_down", TriggerOnEntity = GetGoal("MOVER_lift01").GetEntity(), OnEnter = function(ent) { }, OnExit = function(ent) { Map.ElevatorTriggerPosition = 0; Util.MapDebugPrint("^5Elevator is in lower position"); }, }, LiftIsUp = { Name="lift_is_up", TriggerOnEntity = GetGoal("MOVER_lift01").GetEntity(), OnEnter = function(ent) { Map.ElevatorTriggerPosition = 1; Util.MapDebugPrint("^5Elevator is in upper position"); }, }, Tank_Built = function( trigger ) { Map.Tank_Built = true; SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.AXIS, true, "MOUNT_Tank" ); if ( Map.TankAtBarrier_2 ) { SetAvailableMapGoals( TEAM.AXIS, true, "GRENADE_TankAtBarrier2" ); if ( !Map.TankBarrier2_built ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "MOVER_tank", "ESCORT_Tank", "MOUNT_Tank", }); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "MOVER_tank", "MOUNT_Tank", }); } Util.MapDebugPrint( "^5Tank_Built, Tank is at Barrier 2" ); } else if ( Map.TankAtBarrier_1 ) { SetAvailableMapGoals( TEAM.AXIS, true, "GRENADE_TankAtBarrier1" ); if ( !Map.TankBarrier1_built ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "MOVER_tank", "ESCORT_Tank", "MOUNT_Tank", }); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "MOVER_tank", "MOUNT_Tank", }); } Util.MapDebugPrint( "^5Tank_Built, Tank is at Barrier 1" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, { "MOVER_tank", "ESCORT_Tank", "MOUNT_Tank", }); Util.MapDebugPrint( "^5Tank_Built, Tank is not at Barrier 1 or 2" ); } }, Tank_Destroyed = function( trigger ) { Map.Tank_Built = false; SetAvailableMapGoals( TEAM.ALLIES, false, { "MOVER_tank", "ESCORT_Tank", "MOUNT_Tank", }); SetAvailableMapGoals( TEAM.AXIS, false, "MOUNT_Tank" ); if ( Map.TankAtBarrier_2 ) { if ( !Map.TankBarrier2_built ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); } Util.MapDebugPrint( "^5Tank_Destroyed, Tank is at Barrier 2" ); } else if ( Map.TankAtBarrier_1 ) { if ( !Map.TankBarrier1_built ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); } Util.MapDebugPrint( "^5Tank_Destroyed, Tank is at Barrier 1" ); } else if ( !Map.BankDoors ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); Util.MapDebugPrint( "^5Tank_Destroyed, Bank doors destroyed" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); Util.MapDebugPrint( "^5Tank_Destroyed, Tank is not at Barrier 1 or 2" ); } }, Tank_Stolen = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_Start_.*" ); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Start_.*", "MOUNTMG42_Dropoff_Tower_2", "REPAIRMG42_Dropoff_Tower_2", "PLANTMINE_Axis_Start_.*", "BUILD_Tank_Barrier_1", }); SetGoalPriority( "BUILD_Tank_Barrier_1", 0.9, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "AIRSTRIKE_Axis_TankStolen_1", 0.81, TEAM.AXIS, CLASS.FIELDOPS ); SetAvailableMapGoals( TEAM.ALLIES, true, { "CALLARTILLERY_Allied_Start_1", "CALLARTILLERY_Allied_Start_4", "ARTILLERY_S_Allied_Start_2", "ARTILLERY_S_Allied_Start_3", "ARTILLERY_S_Allied_Start_7", "ATTACK_Allied_Start_11", "ATTACK_Allied_Start_12", "ATTACK_Allied_Start_16", "ATTACK_Allied_Start_17", "ATTACK_Allied_TankStolen_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { "CALLARTILLERY_Axis_Start_13", "CALLARTILLERY_Axis_Start_15", "ARTILLERY_S_Axis_Start_14", "ARTILLERY_S_Axis_Start_16", "ARTILLERY_S_Axis_Start_17", "DEFEND_Axis_Start_20", "DEFEND_Axis_Start_21", "DEFEND_Axis_Start_22", "DEFEND_Axis_Start_23", "DEFEND_Axis_Start_26", "DEFEND_Axis_Start_27", "AIRSTRIKE_Axis_TankStolen_1", "DEFEND_Axis_TankStolen_.*", }); yield(); SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Tank_Barrier_1" ); Util.MapDebugPrint( "^5Tank_Stolen" ); }, TankTrigger1 = { Name="Tank_Trigger_1", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_Start_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "AIRSTRIKE_Allied_TankStolen_12" ); SetAvailableMapGoals( TEAM.AXIS, false, { "AIRSTRIKE_Axis_TankStolen_1", ".*_Axis_Start_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { "AIRSTRIKE_Axis_TankStolen_9", "CALLARTILLERY_Axis_TankStolen_10", "ARTILLERY_S_Axis_TankStolen_11", }); Util.MapDebugPrint( "^5Tank entered into trigger_stolen" ); }, OnExit = function(ent) { SetAvailableMapGoals( TEAM.AXIS, false, { "AIRSTRIKE_Axis_TankStolen_9", "CALLARTILLERY_Axis_TankStolen_10", "ARTILLERY_S_Axis_TankStolen_11", }); SetAvailableMapGoals( TEAM.AXIS, true, "AIRSTRIKE_Axis_TankStolen_15" ); SetAvailableMapGoals( TEAM.AXIS, false, { "CALLARTILLERY_Axis_TankStolen_16", "ARTILLERY_S_Axis_TankStolen_17", }); Util.MapDebugPrint( "^5Tank exited out of trigger_stolen" ); }, }, TankAtBarrier1 = { Name="Tank_At_Tankbarrier_1", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { Map.TankAtBarrier_1 = true; if ( Map.Tank_Built ) { SetAvailableMapGoals( TEAM.AXIS, true, "GRENADE_TankAtBarrier1" ); } if ( Map.TankBarrier1_built ) { if ( !Map.Tank_Built ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "MOVER_tank", "MOUNT_Tank", }); } } Util.MapDebugPrint( "^5Tank is at first tankbarrier" ); }, }, Tank_Barrier_1_Built = function( trigger ) { Map.TankBarrier1_built = true; SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier_1" ); if ( Map.TankAtBarrier_1 ) { if ( !Map.Tank_Built ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "MOVER_tank", "MOUNT_Tank", }); SetAvailableMapGoals( TEAM.AXIS, true, "GRENADE_TankAtBarrier1" ); } } Util.MapDebugPrint( "^5Tank_Barrier_1_Built" ); }, Tank_Barrier_1_Planted = function( trigger ) { Map.Tank_Barrier_1_Dyno += 1; SetAvailableMapGoals( TEAM.AXIS, true, "DEFUSE_Tank_Barrier_1_.*" ); if ( Map.TankAtBarrier_1 ) { if ( !Map.Tank_Built ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); } } Util.MapDebugPrint( "^5Tank_Barrier_1_Planted" ); }, Tank_Barrier_1_Defused = function( trigger ) { Map.Tank_Barrier_1_Dyno -= 1; Util.MapDebugPrint( "^5Tank_Barrier_1_Defused" ); }, Tank_Barrier_1_Destroyed = function( trigger ) { Map.Tank_Barrier_1_Dyno = 0; Map.TankBarrier1_built = false; SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Tank_Barrier_1_.*" ); if ( Map.TankAtBarrier_1 ) { if ( !Map.Tank_Built ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, { "MOVER_tank", "ESCORT_Tank", "MOUNT_Tank", }); } } Util.MapDebugPrint( "^5Tank_Barrier_1_Destroyed" ); }, TankPastBarrier1 = { Name="Tank_Past_Tankbarrier_1", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { Map.TankAtBarrier_1 = false; SetAvailableMapGoals( TEAM.AXIS, false, { "BUILD_Tank_Barrier_1", "GRENADE_TankAtBarrier1", }); Util.MapDebugPrint( "^5Tank past first tankbarrier" ); }, }, Tank_Past_First_Barrier = function( trigger ) { Map.TankPastFirstBarrier = true; SetAvailableMapGoals( TEAM.ALLIES, false, { "MOUNTMG42_Dropoff_Tower_1", "REPAIRMG42_Dropoff_Tower_1", ".*_Allied_Start_.*", ".*_Allied_TankStolen_.*", }); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Start_.*", ".*_Axis_TankStolen_.*", "MOUNTMG42_Tank_Depot", "REPAIRMG42_Tank_Depot", }); ETUtil.SetExcludeIndexes( "BUILD_Tank", { 2, 3, 4, 5, 6, 7 } ); // Disable these offsets SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_TankPastFirstBarrier_.*", "BUILD_Tank_Barrier_2", "HEALTHCAB_south_healthcabinet", "AMMOCAB_south_ammocabinet", "BUILD_Command_Post", }); SetAvailableMapGoals( TEAM.ALLIES, true, { ".*_Allied_TankPastFirstBarrier_.*", "MOUNTMG42_Tank_Depot", "REPAIRMG42_Tank_Depot", "HEALTHCAB_south_healthcabinet", "AMMOCAB_south_ammocabinet", "BUILD_Command_Post", }); if ( Map.TankBarrier2_built ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier_2" ); } Util.MapDebugPrint( "^5Tank_Past_First_Barrier" ); }, TankBetweenBarriers = { Name="Tank_Between_Barriers", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { SetAvailableMapGoals( TEAM.ALLIES, false, { "MOUNTMG42_Tank_Depot", "REPAIRMG42_Tank_Depot", ".*_Allied_TankPastFirstBarrier_.*", }); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_TankPastFirstBarrier_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_Allied_TankPastFirstBarrier_7", "ATTACK_Allied_TankPastFirstBarrier_8", "ATTACK_Allied_TankPastFirstBarrier_9", "ATTACK_Allied_TankBetweenBarriers_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_TankPastFirstBarrier_6", "DEFEND_Axis_TankPastFirstBarrier_7", "DEFEND_Axis_TankPastFirstBarrier_8", "DEFEND_Axis_TankPastFirstBarrier_9", "DEFEND_Axis_TankPastFirstBarrier_10", "DEFEND_Axis_TankBetweenBarriers_2", "DEFEND_Axis_TankBetweenBarriers_3", "DEFEND_Axis_TankBetweenBarriers_4", "DEFEND_Axis_TankBetweenBarriers_5", "DEFEND_Axis_TankBetweenBarriers_8", "DEFEND_Axis_TankBetweenBarriers_10", }); Util.MapDebugPrint( "^5Tank entered into trigger between tankbarriers" ); }, OnExit = function(ent) { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_TankPastFirstBarrier_.*", ".*_Axis_TankBetweenBarriers_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allied_TankPastFirstBarrier_.*", ".*_Allied_TankBetweenBarriers_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_TankBetweenBarriers_.*" ); SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_Axis_TankBetweenBarriers_2", "DEFEND_Axis_TankBetweenBarriers_3", }); SetAvailableMapGoals( TEAM.AXIS, true, { "MOUNTMG42_Second_TankBarrier", "REPAIRMG42_Second_TankBarrier", ".*_Axis_TankInfrontOfBarrier2_1", ".*_Axis_TankInfrontOfBarrier2_2", ".*_Axis_TankInfrontOfBarrier2_3", ".*_Axis_TankInfrontOfBarrier2_4", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_Allied_TankBetweenBarriers_1", "ATTACK_Allied_TankBetweenBarriers_2", "ATTACK_Allied_TankBetweenBarriers_3", "ATTACK_Allied_TankBetweenBarriers_4", "ATTACK_Allied_TankBetweenBarriers_6", ".*_Allied_TankInfrontOfBarrier2_1", ".*_Allied_TankInfrontOfBarrier2_2", ".*_Allied_TankInfrontOfBarrier2_3", ".*_Allied_TankInfrontOfBarrier2_4", ".*_Allied_TankInfrontOfBarrier2_5", ".*_Allied_TankInfrontOfBarrier2_6", ".*_Allied_TankInfrontOfBarrier2_7", }); Util.MapDebugPrint( "^5Tank exited out of trigger between tankbarriers" ); }, }, TankNearBarrier2 = { Name="Tank_Near_Barrier2", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_TankInfrontOfBarrier2_.*", "MOUNTMG42_Second_TankBarrier_Tower", "REPAIRMG42_Second_TankBarrier_Tower", }); SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_TankBetweenBarriers_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, { ".*_Allied_TankInfrontOfBarrier2_.*", "MOUNTMG42_Second_TankBarrier_Tower", }); Util.MapDebugPrint( "^5Tank entered into trigger near tankbarrier 2" ); }, }, TankAtBarrier2 = { Name="Tank_At_Barrier2", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { Map.TankAtBarrier_2 = true; SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_TankBetweenBarriers_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allied_TankBetweenBarriers_.*", ".*_Allied_TankInfrontOfBarrier2_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_TankAtBarrier2_.*", "HEALTHCAB_south_healthcabinet_1", "AMMOCAB_south_ammocabinet_1", }); SetAvailableMapGoals( TEAM.ALLIES, true, { ".*_Allied_TankInfrontOfBarrier2_1", ".*_Allied_TankInfrontOfBarrier2_2", ".*_Allied_TankInfrontOfBarrier2_3", ".*_Allied_TankInfrontOfBarrier2_5", ".*_Allied_TankInfrontOfBarrier2_6", ".*_Allied_TankInfrontOfBarrier2_11", ".*_Allied_TankAtBarrier2_.*", }); if ( Map.Tank_Built ) { SetAvailableMapGoals( TEAM.AXIS, true, "GRENADE_TankAtBarrier2" ); } if ( Map.TankBarrier2_built ) { if ( !Map.Tank_Built ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "MOVER_tank", "MOUNT_Tank", }); } SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier_2" ); } Util.MapDebugPrint( "^5Tank is at tankbarrier 2" ); }, }, Tank_Barrier_2_Built = function( trigger ) { Map.TankBarrier2_built = true; if ( Map.TankPastFirstBarrier ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier_2" ); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Tank_Barrier_2" ); } if ( Map.TankAtBarrier_2 ) { if ( !Map.Tank_Built ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "MOVER_tank", "MOUNT_Tank", }); SetAvailableMapGoals( TEAM.AXIS, true, "GRENADE_TankAtBarrier2" ); } } Util.MapDebugPrint( "^5Tank_Barrier_2_Built" ); }, Tank_Barrier_2_Planted = function( trigger ) { Map.Tank_Barrier_2_Dyno += 1; SetAvailableMapGoals( TEAM.AXIS, true, "DEFUSE_Tank_Barrier_2_.*" ); if ( Map.TankAtBarrier_2 ) { if ( !Map.Tank_Built ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); } } Util.MapDebugPrint( "^5Tank_Barrier_2_Planted" ); }, Tank_Barrier_2_Defused = function( trigger ) { Map.Tank_Barrier_2_Dyno -= 1; Util.MapDebugPrint( "^5Tank_Barrier_2_Defused" ); }, Tank_Barrier_2_Destroyed = function( trigger ) { Map.Tank_Barrier_2_Dyno = 0; Map.TankBarrier2_built = false; SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Tank_Barrier_2_.*" ); if ( Map.TankAtBarrier_2 ) { if ( !Map.Tank_Built ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, { "MOVER_tank", "ESCORT_Tank", "MOUNT_Tank", }); } } Util.MapDebugPrint( "^5Tank_Barrier_2_Destroyed" ); }, TankPastBarrier2 = { Name="Tank_Past_Barrier2", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { Map.TankAtBarrier_2 = false; SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Tank_Barrier_2" ); SetAvailableMapGoals( TEAM.ALLIES, true, "REPAIRMG42_Second_TankBarrier_Tower" ); Util.MapDebugPrint( "^5Tank past tankbarrier 2" ); }, }, Tank_Past_Second_Barrier = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, false, { "MOUNTMG42_Second_TankBarrier", "REPAIRMG42_Second_TankBarrier", ".*_Axis_TankBetweenBarriers_.*", ".*_Axis_TankInfrontOfBarrier2_.*", "GRENADE_TankAtBarrier2", "AIRSTRIKE_Axis_TankAtBarrier2_5", }); SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_TankInfrontOfBarrier2_.*" ); ETUtil.SetExcludeIndexes( "BUILD_Tank", { 0, 1, 4, 5, 6, 7 } ); // Disable these offsets SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_TankPastBarrier2_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allied_TankPastBarrier2_.*" ); if ( Map.elevator_shaft_vent ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_elevator_shaft_vent" ); } Util.MapDebugPrint( "^5Tank_Past_Second_Barrier" ); }, TankPastUnderBridge = { Name="Tank_Past_Under_Bridge", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_TankAtBarrier2_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_TankAtBarrier2_.*" ); ETUtil.SetExcludeIndexes( "BUILD_Tank", { 2, 3, 4, 5, 6, 7 } ); // Disable these offsets Util.MapDebugPrint( "^5Tank is near bridge" ); }, OnExit = function(ent) { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_TankAtBarrier2_.*", "AIRSTRIKE_Axis_TankPastBarrier2_10", }); SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_TankAtBarrier2_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_TankPastBridge_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allied_TankPastBridge_.*" ); Util.MapDebugPrint( "^5Tank past bridge" ); }, }, TankNearDoor = { Name="Tank_Near_Door", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { Map.TankIsNearDoor = true; SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_TankPastBarrier2_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allied_TankPastBarrier2_.*", "MOUNTMG42_Second_TankBarrier_Tower", "REPAIRMG42_Second_TankBarrier_Tower", }); SetAvailableMapGoals( TEAM.AXIS, true, { "MOUNTMG42_Bank_Door", "REPAIRMG42_Bank_Door", "AIRSTRIKE_Axis_TankNearDoor_1", ".*_Axis_TankNearDoor_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "MOUNTMG42_Bank_Door", ".*_Allied_TankNearDoor_.*", "HEALTHCAB_south_healthcabinet_1", "AMMOCAB_south_ammocabinet_1", }); Util.ChangeSpawn(TEAM.AXIS, 5 ); if ( Map.vault_storage_vent ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_vault_storage_vent" ); } Util.MapDebugPrint( "^5Tank entered into trigger near door" ); }, OnExit = function(ent) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_TankPastBridge_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_TankPastBridge_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, { "GRENADE_SecondTankBarrierMG", "GRENADE_BankDoorMG", }); Util.MapDebugPrint( "^5Tank exited out of trigger near door" ); }, }, Bank_Doors_Destroyed = function( trigger ) { Map.BankDoors = false; Wp.SetWaypointFlag( "in_wall_1", "closed", false ); Wp.SetWaypointFlag( "in_wall_2", "closed", false ); CappTrigger = OnTriggerRegion(AABB(3006.321,-2201.787,1771.876,3538.532,-1668.514,2468.320), Map.CappointTrigger); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_TankNearDoor_.*", "MOUNTMG42_Second_TankBarrier_Tower", "REPAIRMG42_Second_TankBarrier_Tower", "MOUNTMG42_Bank_Door", "REPAIRMG42_Bank_Door", }); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allied_TankNearDoor_.*", "BUILD_Tank", "MOVER_tank", "ESCORT_Tank", "MOUNT_Tank", "MOUNTMG42_Second_TankBarrier_Tower", "REPAIRMG42_Second_TankBarrier_Tower", }); //Util.IgnoreTargetGoal( bot, "MOVER_tank" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_AtGold_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "FLAG_axis_docs", "MOUNTMG42_Bank_Door", "REPAIRMG42_Bank_Door", "ATTACK_Allied_AtGold_.*", }); Util.MapDebugPrint( "^5Bank_Doors_Destroyed" ); }, axis_docs_Taken = function( trigger ) { Map.DocsTaken = true; SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_Axis_AtGold_.*", "GRENADE_SecondTankBarrierMG", "GRENADE_BankDoorMG", "MOUNT_Tank", }); SetAvailableMapGoals( TEAM.ALLIES, false, { "ATTACK_Allied_AtGold_.*", "MOUNTMG42_Bank_Door", "REPAIRMG42_Bank_Door", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "CAPPOINT_Gold", "DEFEND_Allied_AtCappoint_.*", "MOUNTMG42_Dropoff_Tower_1", "REPAIRMG42_Dropoff_Tower_1", }); SetAvailableMapGoals( TEAM.AXIS, true, { "MOUNTMG42_Dropoff_Tower_1", "REPAIRMG42_Dropoff_Tower_1", "DEFEND_Axis_AtCappoint_.*", }); if ( Map.AxisAtCappoint == 0 ) { SetAvailableMapGoals( TEAM.AXIS, true, { "CALLARTILLERY_Axis_AtCappoint_1", "ARTILLERY_S_Axis_AtCappoint_2", }); } else { SetAvailableMapGoals( TEAM.AXIS, false, { "CALLARTILLERY_Axis_AtCappoint_1", "ARTILLERY_S_Axis_AtCappoint_2", }); } if ( Map.elevator_shaft_vent ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_elevator_shaft_vent" ); } if ( Map.vault_storage_vent ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_vault_storage_vent" ); } Util.MapDebugPrint( "^5axis_docs_Taken" ); }, axis_docs_Returned = function( trigger ) { Map.DocsTaken = false; SetAvailableMapGoals( TEAM.ALLIES, false, { "CAPPOINT_Gold", "DEFEND_Allied_AtCappoint_.*", "MOUNTMG42_Dropoff_Tower_1", "REPAIRMG42_Dropoff_Tower_1", }); SetAvailableMapGoals( TEAM.AXIS, false, { "CALLARTILLERY_Axis_AtCappoint_1", "ARTILLERY_S_Axis_AtCappoint_2", "MOUNTMG42_Dropoff_Tower_1", "REPAIRMG42_Dropoff_Tower_1", "DEFEND_Axis_AtCappoint_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_AtGold_.*", "GRENADE_SecondTankBarrierMG", "GRENADE_BankDoorMG", }); if ( Map.Tank_Built ) { SetAvailableMapGoals( TEAM.AXIS, true, "MOUNT_Tank" ); } SetAvailableMapGoals( TEAM.ALLIES, true, { "MOUNTMG42_Bank_Door", "REPAIRMG42_Bank_Door", "ATTACK_Allied_AtGold_.*", }); if ( Map.elevator_shaft_vent ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_elevator_shaft_vent" ); } if ( Map.vault_storage_vent ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_vault_storage_vent" ); } Util.MapDebugPrint( "^5axis_docs_Returned" ); }, axis_docs_Dropped = function( trigger ) { Util.MapDebugPrint( "^5axis_docs_Dropped" ); }, CappointTrigger = { Name = "Cappoint_Trigger", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.AXIS ) { Map.AxisAtCappoint += 1; Util.MapDebugPrint( "^5axis are at cappoint" ); if ( Map.DocsTaken ) { SetAvailableMapGoals( TEAM.AXIS, false, { "CALLARTILLERY_Axis_AtCappoint_1", "ARTILLERY_S_Axis_AtCappoint_2", }); Util.MapDebugPrint( "^5disable artillery support" ); } } }, OnExit = function(ent) { if( GetEntTeam(ent) == TEAM.AXIS ) { Map.AxisAtCappoint -= 1; if ( Map.AxisAtCappoint == 0 ) { Util.MapDebugPrint( "^5axis are not at cappoint" ); if ( Map.DocsTaken ) { SetAvailableMapGoals( TEAM.AXIS, true, { "CALLARTILLERY_Axis_AtCappoint_1", "ARTILLERY_S_Axis_AtCappoint_2", }); Util.MapDebugPrint( "^5enable artillery support" ); } } } }, }, axis_docs_Secured = function( trigger ) { sleep(1); ETUtil.WinningChat( TEAM.ALLIES ); ETUtil.LosingChat( TEAM.AXIS ); Util.MapDebugPrint( "^5axis_docs_Secured" ); }, Allied_CP_Built = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Command_Post" ); if ( Map.TankPastFirstBarrier ) { SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Command_Post" ); } Util.MapDebugPrint( "^5Allied_CP_Built" ); }, Allied_CP_Destroyed = function( trigger ) { if ( Map.TankPastFirstBarrier ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" ); } Util.MapDebugPrint( "^5Allied_CP_Destroyed" ); }, Axis_CP_Built = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Command_Post" ); if ( Map.TankPastFirstBarrier ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Command_Post" ); } Util.MapDebugPrint( "^5Axis_CP_Built" ); }, Axis_CP_Destroyed = function( trigger ) { if ( Map.TankPastFirstBarrier ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" ); } Util.MapDebugPrint( "^5Axis_CP_Destroyed" ); }, CP_planted = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Command_Post_.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Command_Post_.*" ); Util.MapDebugPrint( "^5CP_Planted" ); }, Second_vault_storage_vent_Planted = function( trigger ) { Map.second_vault_storage_vent_Dyno += 1; SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_2nd_vault_storage_vent_.*" ); Util.MapDebugPrint( "^5Second_vault_storage_vent_Planted" ); }, Second_vault_storage_vent_Defused = function( trigger ) { Map.second_vault_storage_vent_Dyno -= 1; Util.MapDebugPrint( "^5Second_vault_storage_vent_Defused" ); }, Second_vault_storage_vent_Destroyed = function( trigger ) { Map.second_vault_storage_vent_Dyno = 0; Util.MapDebugPrint( "^5Second_vault_storage_vent_Destroyed" ); }, elevator_shaft_vent_Planted = function( trigger ) { Map.elevator_shaft_vent_Dyno += 1; SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_elevator_shaft_vent_.*" ); Util.MapDebugPrint( "^5elevator_shaft_vent_Planted" ); }, elevator_shaft_vent_Defused = function( trigger ) { Map.elevator_shaft_vent_Dyno -= 1; Util.MapDebugPrint( "^5elevator_shaft_vent_Defused" ); }, elevator_shaft_vent_Destroyed = function( trigger ) { Map.elevator_shaft_vent_Dyno = 0; Map.elevator_shaft_vent = false; if ( !Map.elevator_shaft_vent and !Map.vault_storage_vent ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "ROUTE_Vent_shaft_1", "ROUTE_Vent_shaft_2", }); SetAvailableMapGoals( TEAM.AXIS, true, { "ROUTE_Vent_shaft_1", "ROUTE_Vent_shaft_2", }); } Util.MapDebugPrint( "^5elevator_shaft_vent_Destroyed" ); }, vault_storage_vent_Planted = function( trigger ) { Map.vault_storage_vent_Dyno += 1; SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_vault_storage_vent_.*" ); Util.MapDebugPrint( "^5vault_storage_vent_Planted" ); }, vault_storage_vent_Defused = function( trigger ) { Map.vault_storage_vent_Dyno -= 1; Util.MapDebugPrint( "^5vault_storage_vent_Defused" ); }, vault_storage_vent_Destroyed = function( trigger ) { Map.vault_storage_vent_Dyno = 0; Map.vault_storage_vent = false; if ( !Map.elevator_shaft_vent and !Map.vault_storage_vent ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "ROUTE_Vent_shaft_1", "ROUTE_Vent_shaft_2", }); SetAvailableMapGoals( TEAM.AXIS, true, { "ROUTE_Vent_shaft_1", "ROUTE_Vent_shaft_2", }); } Util.MapDebugPrint( "^5vault_storage_vent_Destroyed" ); }, Thirty_second = function( trigger ) { Util.MapDebugPrint( "^5Thirty_second" ); sleep(32); ETUtil.WinningChat( TEAM.AXIS ); ETUtil.LosingChat( TEAM.ALLIES ); }, }; global OnMapLoad = function() { // Register callback functions OnTrigger( "The Tank has been repaired!", Map.Tank_Built ); OnTrigger( "The Tank has been damaged!", Map.Tank_Destroyed ); OnTrigger( "Allied team has stolen the Tank!", Map.Tank_Stolen ); OnTrigger( "Tank Barrier #1 has been constructed.", Map.Tank_Barrier_1_Built ); OnTrigger( "Planted at Tank Barrier #1.", Map.Tank_Barrier_1_Planted ); OnTrigger( "Defused at Tank Barrier #1.", Map.Tank_Barrier_1_Defused ); OnTrigger( "Tank Barrier #1 has been destroyed.", Map.Tank_Barrier_1_Destroyed ); OnTrigger( "Tank Barrier #2 has been constructed.", Map.Tank_Barrier_2_Built ); OnTrigger( "Planted at Tank Barrier #2.", Map.Tank_Barrier_2_Planted ); OnTrigger( "Defused at Tank Barrier #2.", Map.Tank_Barrier_2_Defused ); OnTrigger( "Tank Barrier #2 has been destroyed.", Map.Tank_Barrier_2_Destroyed ); OnTrigger( "Planted at the 2nd vault storage vent.", Map.Second_vault_storage_vent_Planted ); OnTrigger( "Defused at the 2nd vault storage vent.", Map.Second_vault_storage_vent_Defused ); OnTrigger( "Allies have destroyed the 2nd vault storage vent!", Map.Second_vault_storage_vent_Destroyed ); OnTrigger( "Planted at elevator shaft vent.", Map.elevator_shaft_vent_Planted ); OnTrigger( "Defused at elevator shaft vent.", Map.elevator_shaft_vent_Defused ); OnTrigger( "Allies have destroyed the elevator shaft vent!", Map.elevator_shaft_vent_Destroyed ); OnTrigger( "Planted at the vault storage vent.", Map.vault_storage_vent_Planted ); OnTrigger( "Defused at the vault storage vent.", Map.vault_storage_vent_Defused ); OnTrigger( "Allies have destroyed the vault storage vent!", Map.vault_storage_vent_Destroyed ); OnTrigger( "Allied team has destroyed the Bank Doors!", Map.Bank_Doors_Destroyed ); OnTrigger( "Allies have stolen the Gold!", Map.axis_docs_Taken ); OnTrigger( "Allies have stolen the Axis docs!", Map.axis_docs_Taken ); OnTrigger( "The Axis have retrieved the Gold!", Map.axis_docs_Returned ); OnTrigger( "Flag returned axis_docs!", Map.axis_docs_Returned ); OnTrigger( "the Axis docs dropped.", Map.axis_docs_Dropped ); OnTrigger( "Allied team escaped with the Gold!", Map.axis_docs_Secured ); OnTrigger( "Allied Command Post constructed. Charge speed increased!", Map.Allied_CP_Built ); OnTrigger( "Axis team has destroyed the Allied Command Post!", Map.Allied_CP_Destroyed ); OnTrigger( "Axis Command Post constructed. Charge speed increased!", Map.Axis_CP_Built ); OnTrigger( "Allied team has destroyed the Axis Command Post!", Map.Axis_CP_Destroyed ); OnTrigger( "Planted at the Command Post.", Map.CP_planted ); OnTrigger( "The tank is past the 1st barrier! Allies spawn at the Tank Depot!", Map.Tank_Past_First_Barrier ); OnTrigger( "The tank is past the 2nd barrier! Allies spawn at Lower Axis Base!", Map.Tank_Past_Second_Barrier ); OnTrigger( "lift01t_button_goto", Map.Elevator_goto ); OnTrigger( "thirty second warning.", Map.Thirty_second ); Util.DisableGoal( ".*", true ); // all but routes SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_Tank", "MOUNTMG42_Dropoff_Tower_1", "REPAIRMG42_Dropoff_Tower_1", ".*_Allied_Start_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Start_.*", "MOUNTMG42_Dropoff_Tower_2", "REPAIRMG42_Dropoff_Tower_2", "MOUNTMG42_Tank_Depot", "REPAIRMG42_Tank_Depot", "BUILD_Tank_Barrier_1", }); SetGoalPriority( "BUILD_Tank_Barrier_1", 0.78, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "DEFEND_Axis_Start_.*", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_TankInfrontOfBarrier2_.*", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_AtGold_4", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_AtGold_5", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_AtGold_6", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_AtGold_7", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_AtGold_8", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_AtGold_9", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_AtGold_10", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "BUILD_Command_Post", 0.55, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Command_Post", 0.49, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "ATTACK_Allied_Start_.*", 0.51, TEAM.ALLIES, 0 ); SetGoalPriority( "ATTACK_Allied_TankNearDoor_11", 0.51, TEAM.ALLIES, 0 ); SetGoalPriority( "ATTACK_Allied_TankNearDoor_12", 0.51, TEAM.ALLIES, 0 ); SetGoalPriority( "MOUNTMG42_Tank_Depot", 0.79, TEAM.ALLIES, 0 ); SetGoalPriority( "BUILD_Command_Post", 0.55, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Command_Post", 0.49, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Command_Post", 0.80, TEAM.ALLIES, CLASS.COVERTOPS ); SetGoalPriority( "PLANT_elevator_shaft_vent", 0.82, TEAM.ALLIES, CLASS.COVERTOPS ); SetGoalPriority( "PLANT_vault_storage_vent", 0.82, TEAM.ALLIES, CLASS.COVERTOPS ); // Max users per goal Util.SetMaxUsers( 1, "DEFEND_.*" ); Util.SetMaxUsers( 1, "GRENADE_.*" ); Util.SetMaxUsers( 1, "MOUNTMG42_.*" ); Util.SetMaxUsers( 4, "ESCORT_.*" ); Util.SetMaxUsers( 4, "FLAG.*" ); // Camp times SetMapGoalProperties( "MOUNTMG42_.*", {MinCampTime=90, MaxCampTime=120} ); SetMapGoalProperties( "MOBILEMG42_.*", {MinCampTime=10, MaxCampTime=60} ); SetMapGoalProperties( "MOUNT_Tank", {MinCampTime=60, MaxCampTime=90} ); Wp.SetWaypointFlag( "under_elevator_1", "closed", false ); Wp.SetWaypointFlag( "under_elevator_2", "closed", false ); Wp.SetWaypointFlag( "under_elevator_3", "closed", false ); Wp.SetWaypointFlag( "under_elevator_4", "closed", false ); Wp.SetWaypointFlag( "under_elevator_5", "closed", false ); Wp.SetWaypointFlag( "under_elevator_6", "closed", false ); Wp.SetWaypointFlag( "in_wall_1", "closed", true ); Wp.SetWaypointFlag( "in_wall_2", "closed", true ); Util.SetGoalPosition(-1146.284058, -212.875000, 2857.125000, "PLANT_elevator_shaft_vent"); Util.AddUseWp( "PLANT_vault_storage_vent", "vault_storage_vent_1" ); Util.AddUseWp( "PLANT_vault_storage_vent", "vault_storage_vent_2" ); Util.RemoveGoal( "BUILD_2nd_vault_storage_vent" ); Util.RemoveGoal( "BUILD_elevator_shaft_vent" ); Util.RemoveGoal( "BUILD_vault_storage_vent" ); Util.LimitToClass( "PLANT_elevator_shaft_vent", TEAM.ALLIES, CLASS.COVERTOPS ); Util.LimitToClass( "PLANT_vault_storage_vent", TEAM.ALLIES, CLASS.COVERTOPS ); ETUtil.SetCabinets(); Tank1 = OnTriggerRegion(AABB(2065.170,-1677.510,1665.182,2551.687,-1358.115,1781.530), Map.TankTrigger1); Tank2 = OnTriggerRegion(AABB(1263.977,-869.446,1942.097,1337.971,-361.100,2033.230), Map.TankAtBarrier1); Tank3 = OnTriggerRegion(AABB(1050.344,-835.091,2018.354,1107.883,-373.125,2139.884), Map.TankPastBarrier1); Tank4 = OnTriggerRegion(AABB(-1030.758,1813.017,2797.009,656.466,2689.909,3165.911), Map.TankBetweenBarriers); Tank5 = OnTriggerRegion(AABB(-1750.775,2038.669,3144.073,-1437.611,2551.185,3255.259), Map.TankNearBarrier2); Tank6 = OnTriggerRegion(AABB(-2051.891,999.135,3413.115,-1680.181,1100.856,3536.300), Map.TankAtBarrier2); Tank7 = OnTriggerRegion(AABB(-2123.096,790.183,3490.897,-1691.321,878.139,3625.927), Map.TankPastBarrier2); Tank8 = OnTriggerRegion(AABB(-3293.800,-584.058,3874.956,-2195.630,-134.230,4347.125), Map.TankPastUnderBridge); Lift_down = OnTriggerRegion(AABB(-1112.507,-85.883,2320.125,-952.793,58.813,3819.125), Map.LiftIsDown); Lift_up = OnTriggerRegion(AABB(-1118.929,-84.967,3745.125,-951.111,51.582,3819.125), Map.LiftIsUp); Tank9 = OnTriggerRegion(AABB(-3325.836,-872.961,3955.555,-2999.226,-488.341,4130.676), Map.TankNearDoor); DCM1 = OnTriggerRegion(AABB(1178.819,-1457.010,2425.125,1253.141,-1360.433,2517.211), RegionTrigger.DisableCombatMovement); NP1 = OnTriggerRegion(AABB(1178.819,-1457.010,2425.125,1253.141,-1360.433,2517.211), RegionTrigger.DisableBotPush); DCM2 = OnTriggerRegion(AABB(1244.594,-1179.358,2441.125,1345.466,-1064.709,2515.125), RegionTrigger.DisableCombatMovement); NP2 = OnTriggerRegion(AABB(1244.594,-1179.358,2441.125,1345.466,-1064.709,2515.125), RegionTrigger.DisableBotPush); DCM3 = OnTriggerRegion(AABB(1622.173,-2545.184,1962.120,1707.616,-2456.011,2077.401), RegionTrigger.DisableCombatMovement); NP3 = OnTriggerRegion(AABB(1622.173,-2545.184,1962.120,1707.616,-2456.011,2077.401), RegionTrigger.DisableBotPush); DCM4 = OnTriggerRegion(AABB(3184.938,-2210.527,1780.812,3259.225,-2135.125,1863.336), RegionTrigger.DisableCombatMovement); NP4 = OnTriggerRegion(AABB(3184.938,-2210.527,1780.812,3259.225,-2135.125,1863.336), RegionTrigger.DisableBotPush); DCM5 = OnTriggerRegion(AABB(1017.152,-368.821,2441.125,1132.875,-219.125,2515.125), RegionTrigger.DisableCombatMovement); NP5 = OnTriggerRegion(AABB(1017.152,-368.821,2441.125,1132.875,-219.125,2515.125), RegionTrigger.DisableBotPush); DCM6 = OnTriggerRegion(AABB(1247.323,-311.456,2425.125,1373.471,-160.563,2515.125), RegionTrigger.DisableCombatMovement); NP6 = OnTriggerRegion(AABB(1247.323,-311.456,2425.125,1373.471,-160.563,2515.125), RegionTrigger.DisableBotPush); DCM7 = OnTriggerRegion(AABB(582.390,829.306,2523.004,780.531,947.230,2642.384), RegionTrigger.DisableCombatMovement); NP7 = OnTriggerRegion(AABB(582.390,829.306,2523.004,780.531,947.230,2642.384), RegionTrigger.DisableBotPush); DCM8 = OnTriggerRegion(AABB(-37.018,477.050,2357.810,82.747,605.054,2481.428), RegionTrigger.DisableCombatMovement); NP8 = OnTriggerRegion(AABB(-37.018,477.050,2357.810,82.747,605.054,2481.428), RegionTrigger.DisableBotPush); DCM9 = OnTriggerRegion(AABB(-2640.208,981.260,3905.125,-2411.125,1159.501,4021.675), RegionTrigger.DisableCombatMovement); NP9 = OnTriggerRegion(AABB(-2640.208,981.260,3905.125,-2411.125,1159.501,4021.675), RegionTrigger.DisableBotPush); DCM10 = OnTriggerRegion(AABB(-1631.417,1015.165,3889.125,-1364.614,1162.949,4023.905), RegionTrigger.DisableCombatMovement); NP10 = OnTriggerRegion(AABB(-1631.417,1015.165,3889.125,-1364.614,1162.949,4023.905), RegionTrigger.DisableBotPush); DCM11 = OnTriggerRegion(AABB(-1570.387,227.175,3905.125,-1420.053,660.144,4016.649), RegionTrigger.DisableCombatMovement); NP11 = OnTriggerRegion(AABB(-1570.387,227.175,3905.125,-1420.053,660.144,4016.649), RegionTrigger.DisableBotPush); NP12 = OnTriggerRegion(AABB(-877.013,86.626,2194.125,-816.125,199.875,2268.125), RegionTrigger.DisableBotPush); NP13 = OnTriggerRegion(AABB(-1068.487,37.195,2194.125,-989.181,112.243,2268.125), RegionTrigger.DisableBotPush); DCM14 = OnTriggerRegion(AABB(-4484.253,-506.911,4162.008,-4085.731,-89.050,4276.750), RegionTrigger.DisableCombatMovement); NP14 = OnTriggerRegion(AABB(-4484.253,-506.911,4162.008,-4085.731,-89.050,4276.750), RegionTrigger.DisableBotPush); MapRoutes = { DEFEND_Axis_Start_20 = { ROUTE_Axis_FirstSpawn_1 = { ROUTE_Axis_FirstSpawnStairs_1 = { ROUTE_Axis_FirstSpawnStairs_2 = { }, }, }, }, BUILD_Tank_Barrier_1 = { ROUTE_Axis_FirstSpawn_1 = { ROUTE_Axis_FirstSpawnStairs_1 = { Weight = 3, ROUTE_Axis_FirstSpawnStairs_2 = { }, }, ROUTE_Axis_FirstSpawnDoor = { }, }, }, ATTACK_Allied_Start_8 = { ROUTE_Allied_FirstSpawn_1 = { ROUTE_Allied_Front = { }, ROUTE_Allied_Hill_1 = { ROUTE_Allied_Hill_2 = { ROUTE_Allied_Hill_3 = { }, }, }, }, }, CAPPOINT_Gold = { ROUTE_Bank_flag = { ROUTE_Bank_tunnel = { ROUTE_Vent_shaft_1 = { ROUTE_Vent_shaft_2 = { ROUTE_Tower_stairs_1 = { ROUTE_Tower_exit = { ROUTE_Cappoint_tower = { }, }, }, }, }, ROUTE_Door_NearHealthCab = { ROUTE_NearHealthCab = { ROUTE_TankBarrier2_Door = { ROUTE_Tower_stairs_1 = { ROUTE_Tower_exit = { ROUTE_Cappoint_tower = { }, }, } }, }, }, }, ROUTE_Bank_door = { ROUTE_MG42_door = { ROUTE_CP_Stairs_2 = { ROUTE_CP_Stairs_1 = { ROUTE_Tower_stairs_1 = { ROUTE_Tower_exit = { ROUTE_Cappoint_tower = { }, }, }, }, }, }, ROUTE_UnderBridge = { ROUTE_TankBarrier2_Door = { ROUTE_Tower_stairs_1 = { ROUTE_Tower_exit = { ROUTE_Cappoint_tower = { }, }, }, }, }, ROUTE_Outside_1 = { ROUTE_Outside_2 = { ROUTE_Cappoint_tower = { }, }, }, }, }, }, PLANT_vault_storage_vent = { ROUTE_LowerBaseSpawn_1 = { ROUTE_LowerBaseSpawnStairs_1 = { ROUTE_LowerBaseSpawnStairs_2 = { ROUTE_CP_Stairs_1 = { ROUTE_CP_Stairs_2 = { ROUTE_Bridge = { ROUTE_NearHealthCab = { ROUTE_Door_NearHealthCab = { }, }, }, }, }, }, }, }, }, }; MapRoutes["ATTACK_Allied_TankPastFirstBarrier_.*"] = { ROUTE_Axis_FirstSpawn_1 = { ROUTE_Axis_FirstSpawnStairs_1 = { ROUTE_Axis_FirstSpawnStairs_2 = { }, }, ROUTE_Axis_FirstSpawnDoor = { }, }, }; MapRoutes["ATTACK_Allied_AtGold_.*"] = { ROUTE_LowerBaseSpawn_1 = { ROUTE_LowerBaseSpawnStairs_1 = { ROUTE_LowerBaseSpawnStairs_2 = { ROUTE_CP_Stairs_1 = { Weight = 2, ROUTE_CP_Stairs_2 = { ROUTE_MG42_door = { ROUTE_Bank_door = { }, }, ROUTE_Bridge = { Weight = 2, ROUTE_NearHealthCab = { ROUTE_Door_NearHealthCab = { ROUTE_StairsNearGold = { }, }, }, }, }, }, ROUTE_TankBarrier2_Door = { ROUTE_UnderBridge = { ROUTE_Bank_door = { }, }, }, }, }, }, }; //copy some routes MapRoutes.DEFEND_Axis_Start_21 = MapRoutes.DEFEND_Axis_Start_20; MapRoutes.DEFEND_Axis_Start_22 = MapRoutes.DEFEND_Axis_Start_20; MapRoutes.DEFEND_Axis_Start_23 = MapRoutes.DEFEND_Axis_Start_20; MapRoutes.DEFEND_Axis_Start_26 = MapRoutes.DEFEND_Axis_Start_20; MapRoutes.DEFEND_Axis_Start_27 = MapRoutes.DEFEND_Axis_Start_20; MapRoutes.MOUNTMG42_Tank_Depot = MapRoutes.DEFEND_Axis_Start_20; MapRoutes.ATTACK_Allied_Start_9 = MapRoutes.ATTACK_Allied_Start_8; MapRoutes.ATTACK_Allied_Start_10 = MapRoutes.ATTACK_Allied_Start_8; MapRoutes.ATTACK_Allied_Start_13 = MapRoutes.ATTACK_Allied_Start_8; MapRoutes.ATTACK_Allied_Start_14 = MapRoutes.ATTACK_Allied_Start_8; MapRoutes.ATTACK_Allied_Start_15 = MapRoutes.ATTACK_Allied_Start_8; MapRoutes.ATTACK_Allied_Start_16 = MapRoutes.ATTACK_Allied_Start_8; MapRoutes.ATTACK_Allied_Start_17 = MapRoutes.ATTACK_Allied_Start_8; MapRoutes.BUILD_Tank = MapRoutes.ATTACK_Allied_Start_8; MapRoutes.MOUNTMG42_Dropoff_Tower_1 = MapRoutes.ATTACK_Allied_Start_8; MapRoutes["FLAG_axis_docs"] = MapRoutes["ATTACK_Allied_AtGold_.*"]; MapRoutes["DEFEND_Allied_AtCappoint_.*"] = MapRoutes.CAPPOINT_Gold; MapRoutes.BUILD_Tank = MapRoutes["ATTACK_Allied_TankPastFirstBarrier_.*"]; Util.Routes(MapRoutes); SetAvailableMapGoals( TEAM.ALLIES, false, { "ROUTE_Vent_shaft_1", "ROUTE_Vent_shaft_2", }); SetAvailableMapGoals( TEAM.AXIS, false, { "ROUTE_Vent_shaft_1", "ROUTE_Vent_shaft_2", }); Util.MapDebugPrint( "^5Omni-bot map script for " + GetMapName() + " executed." ); }; global OnBotJoin = function( bot ) { if ( Map.TankIsNearDoor ) { Util.ChangeSpawn(TEAM.AXIS, 5 ); } };