//========================================================================================== // // arta.gm // // Who When What //------------------------------------------------------------------------------------------ // Qiki 08.04.2018 Initial Script @ waypoints // Native12 09.02.2019 Script & goals // Qiki 22.02.2019 Fixed stuckages // Native12 24.02.2019 Released // // Bugs and suggestions: PM on http://omni-bot.invisionzone.com/index.php?/index //========================================================================================== global Map = { Debug = 0, ShowMovers = false, River_Is_Dangerous = true, Allied_CP = false, Assault_Ramp = false, Barricade = false, Foot_Bridge = false, Foot_Bridge_Dyno = 0, Generator = true, M8_Greyhound = true, Air_Inlet = true, Jet_Engine = true, Plane = true, Tiger = true, Gate = true, Bridge_Patch_Part_1 = false, Bridge_Patch_Part_2 = false, Bridge_Dyno = 0, BotWithFlagIns = 0, Construction_Crate = 0, ConstructionCrateTaken = 0, TankAtBrokenBridge = false, TankOverBridgePatch = false, TankEnteringShotDownArea = false, SpawnChange = false, Trigger = 0, SecretDocumentsTaken = false, Plane_Dyno = 0, AllyIns = 0, DontDispenseAmmo = true, Movers = { "MOVER_tank", "MOVER_tiger", }, Roles = { AXIS = { AllBots = true, // each bot is considered for a role DEFENDER = { numbots = 4, crucialClass = CLASS.SOLDIER, MinBotsForRole = 10, }, DEFENDER1 = { numbots = 3, crucialClass = CLASS.ENGINEER, MinBotsForRole = 8, }, DEFENDER2 = { numbots = 7, crucialClass = CLASS.ENGINEER, }, DEFENDER3 = { numbots = 6, //crucialClass = CLASS.ENGINEER, }, }, ALLIES = { AllBots = true, // each bot is considered for a role ATTACKER = { numbots = 4, crucialClass = CLASS.FIELDOPS, MinBotsForRole = 10, }, ATTACKER1 = { numbots = 3, crucialClass = CLASS.COVERTOPS, MinBotsForRole = 8, }, ATTACKER2 = { numbots = 7, crucialClass = CLASS.ENGINEER, }, ATTACKER3 = { numbots = 6, //crucialClass = CLASS.ENGINEER, }, }, }, Navigation = { // /bot waypoint_setproperty paththrough Navigation_PT:jump jump = { navigate = function(_this) { _this.Bot.HoldButton(BTN.JUMP, 0.55); sleep(0.55); }, }, // /bot waypoint_setproperty paththrough Navigation_PT:ladder_up ladder_up = { navigate = function(_this) { Map.NavL(_this, 0.383, 0.022, 0.924, 2878.870, 5775.080); }, }, // /bot waypoint_setproperty paththrough Navigation_PT:ladder_plane_up ladder_plane_up = { navigate = function(_this) { Map.NavL2(_this, 0.001, 0.101, 0.995, -419.951, -2031.130); }, }, }, NavL = function(_this, x,y,z, x1,y1, x2,y2) { if(!x2){ x2=x1; } if(!y2){ y2=y1; } _this.AddAimRequest(Priority.VeryHigh, "facing", Vec3(x,y,z)); for(i=0; i<25; i+=1) { pos = _this.Bot.GetPosition(); if(x1 - pos.x > 40 || pos.x - x2 > 40 || y1 - pos.y > 40 || pos.y - y2 > 40) { break; } sleep(0.1); } }, NavL2 = function(_this, x,y,z, x1,y1, x2,y2) { if(!x2){ x2=x1; } if(!y2){ y2=y1; } _this.AddAimRequest(Priority.VeryHigh, "facing", Vec3(x,y,z)); for(i=0; i<30; i+=1) { pos = _this.Bot.GetPosition(); if(x1 - pos.x > 40 || pos.x - x2 > 40 || y1 - pos.y > 40 || pos.y - y2 > 40) { break; } sleep(0.2); } }, //at the start of the game, destroyed by plane Bridge_Destroyed = function( trigger ) { Wp.SetWaypointFlag( "Bridge_1", "closed", true ); Wp.SetWaypointFlag( "Bridge_2", "closed", true ); Wp.SetWaypointFlag( "Bridge_3", "closed", true ); Wp.SetWaypointFlag( "Bridge_4", "closed", true ); Wp.SetWaypointFlag( "Bridge_6", "closed", false ); Wp.SetWaypointFlag( "Bridge_7", "closed", false ); Wp.SetWaypointFlag( "Bridge_8", "closed", false ); Wp.SetWaypointFlag( "Bridge_9", "closed", false ); Wp.SetWaypointFlag( "Bridge_10", "closed", false ); Wp.SetWaypointFlag( "Bridge_11", "closed", false ); Wp.SetWaypointFlag( "Bridge_12", "closed", false ); Wp.SetWaypointFlag( "Bridge_13", "closed", false ); Wp.SetWaypointFlag( "Bridge_14", "closed", false ); Wp.SetWaypointFlag( "Bridge_15", "closed", false ); Util.MapDebugPrint( "Bridge_Destroyed" ); }, River_Dangerous = function( trigger ) { Util.DisableGoal( "ROUTE_RiverWay_01" ); Util.DisableGoal( "ROUTE_RiverWay_02" ); Util.DisableGoal( "ROUTE_RiverWay_03" ); Util.DisableGoal( "ROUTE_RiverWay_04" ); if ( Map.Generator ) { Util.DisableGoal( "ROUTE_Hall" ); Util.DisableGoal( "ROUTE_FakePlace_.*" ); Util.EnableGoal( "ROUTE_Axis_Way_1" ); Util.EnableGoal( "ROUTE_Axis_Way_2" ); } Map.River(true); SetAvailableMapGoals( TEAM.AXIS, false, "SWITCH_Turbine"); if ( Map.Gate ) { SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_Turbine"); } Util.MapDebugPrint( "River_Dangerous" ); }, River_Safe = function( trigger ) { Util.DisableGoal( "ROUTE_Axis_Way_1" ); Util.DisableGoal( "ROUTE_Axis_Way_2" ); Util.EnableGoal( "ROUTE_RiverWay_.*" ); Util.EnableGoal( "ROUTE_Hall" ); Util.EnableGoal( "ROUTE_FakePlace_.*" ); Map.River(false); SetAvailableMapGoals( TEAM.ALLIES, false, "SWITCH_Turbine"); if ( Map.Gate ) { SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_Turbine"); } Util.MapDebugPrint( "River_Safe" ); }, Turbine_Lever = function() { sleep( 0.5 ); start = Vector3 ( 3337, 5555, 375 ); end = Vector3 ( 3332, 5555, 375 ); Util.MapDebugPrint( "Turbine Lever Thread Started" ); while ( 1 ) { tr = TraceLine( start, end, null, TRACE.SOLID, 0, false ); if ( tr.fraction == 1 ) { if ( !Map.River_Is_Dangerous ) { Map.River_Dangerous(); } Map.River_Is_Dangerous = true; if ( Map.Debug ) { DrawDebugLine( start, end, COLOR.GREEN, 1 ); } } else { if ( Map.River_Is_Dangerous ) { Map.River_Safe(); } Map.River_Is_Dangerous = false; if ( Map.Debug ) { DrawDebugLine( start, end, COLOR.RED, 1 ); } } yield(); } }, Construction_Crate_Taken = function( trigger ) { Map.ConstructionCrateTaken += 1; SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allies_FlagCrates_Out_.*" ); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_FlagCrates_Out_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CAPPOINT_Bridge" ); if ( Map.ConstructionCrateTaken < 2 ) { SetGoalRole( ".*_Axis_CapBridgePart_.*", { ROLE.DEFENDER, ROLE.DEFENDER3 } ); SetGoalRole( ".*_Allies_CapBridgePart_.*", { ROLE.ATTACKER, ROLE.ATTACKER1 } ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_CapBridgePart_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allies_CapBridgePart_.*" ); Util.MapDebugPrint( "Setting partial defend to bridge" ); } else { ClearGoalRole( ".*_Axis_CapBridgePart_.*", { ROLE.DEFENDER, ROLE.DEFENDER3 } ); ClearGoalRole( ".*_Allies_CapBridgePart_.*", { ROLE.ATTACKER, ROLE.ATTACKER1 } ); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_FlagCrates_Ins_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, { ".*_Allies_CapBridgePart_.*", ".*_Allies_CapBridgeFull_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_CapBridgePart_.*", ".*_Axis_CapBridgeFull_.*", }); Util.MapDebugPrint( "Setting full defend to bridge" ); } Util.MapDebugPrint( "Construction_Crate_Taken: " +Map.ConstructionCrateTaken ); }, Construction_Crate_Dropped = function( trigger ) { Map.ConstructionCrateTaken -= 1; Util.MapDebugPrint( "Construction_Crate_Dropped => Taken: " +Map.ConstructionCrateTaken ); }, Construction_Crate_Returned = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_FlagCrates_Ins_.*" ); if ( Map.ConstructionCrateTaken == 0 or Map.Construction_Crate == 1 ) { ClearGoalRole( ".*_Axis_CapBridgePart_.*", { ROLE.DEFENDER, ROLE.DEFENDER3 } ); ClearGoalRole( ".*_Allies_CapBridgePart_.*", { ROLE.ATTACKER, ROLE.ATTACKER1 } ); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_CapBridgePart_.*", ".*_Axis_CapBridgeFull_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allies_CapBridgePart_.*", ".*_Allies_CapBridgeFull_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allies_FlagCrates_Out_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_FlagCrates_Out_.*" ); Util.MapDebugPrint( "Disable full defend to bridge" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_CapBridgePart_.*", ".*_Axis_CapBridgeFull_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allies_CapBridgePart_.*", ".*_Allies_CapBridgeFull_.*", }); SetGoalRole( ".*_Axis_CapBridgePart_.*", { ROLE.DEFENDER, ROLE.DEFENDER3 } ); SetGoalRole( ".*_Allies_CapBridgePart_.*", { ROLE.ATTACKER, ROLE.ATTACKER1 } ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_CapBridgePart_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allies_CapBridgePart_.*" ); Util.MapDebugPrint( "Disable full defend to bridge, enable only partial defend" ); } Util.MapDebugPrint( "Construction_Crate_Returned" ); }, First_Construction_Crate_Secured = function( trigger ) { Map.Construction_Crate += 1; if ( Map.ConstructionCrateTaken == 1 ) { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_CapBridgePart_.*", ".*_Axis_CapBridgeFull_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allies_CapBridgePart_.*", ".*_Allies_CapBridgeFull_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allies_FlagCrates_Out_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_FlagCrates_Out_.*" ); Util.MapDebugPrint( "Disable full defend to bridge" ); } Util.MapDebugPrint( "First_Construction_Crate_Secured" ); }, Second_Construction_Crate_Secured = function( trigger ) { Map.Construction_Crate += 1; ClearGoalRole( "ESCORT_M8_Greyhound", ROLE.ATTACKER ); Util.SetMaxUsers( 4, "ESCORT_M8_Greyhound" ); Util.SetMaxUsers( 1, "SWITCH_Turbine" ); WeaponTable.SetWeaponTeamAvailability ( TEAM.ALLIES, CLASS.SOLDIER, WEAPON.MORTAR, true ); SetAvailableMapGoals( TEAM.ALLIES, false, { "CAPPOINT_.*", ".*_Allies_FlagCrates_Out_.*", "ATTACK_Allies_Generator_.*", "PLANT_Generator", "FLAG_crate.*", }); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_FlagCrates_Out_.*", "DEFEND_Axis_Generator_.*", ".*_Axis_FlagCrates_Ins_.*", "BUILD_Generator", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_Bridge", "MOBILEMORTAR_Allies_SecCrateSecured_01", }); if ( !Map.M8_Greyhound ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_M8_Greyhound" ); //focus on Build bridge } Util.MapDebugPrint( "Second_Construction_Crate_Secured" ); sleep(2); SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Foot_Bridge" ); }, Generator_Built = function( trigger ) { Map.Generator = true; SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Generator"); Util.DisableGoal( "ROUTE_SideGate_.*" ); Util.DisableGoal( "ROUTE_SideGateCapp_01" ); Util.DisableGoal( "ROUTE_SideGateCapp_02" ); Util.DisableGoal( "ROUTE_SideGateCapp_03" ); Util.DisableGoal( "ROUTE_SideGateCapp_04" ); if ( Map.River_Is_Dangerous ) { Util.DisableGoal( "ROUTE_Hall" ); Util.DisableGoal( "ROUTE_FakePlace_.*" ); Util.EnableGoal( "ROUTE_Axis_Way_1" ); Util.EnableGoal( "ROUTE_Axis_Way_2" ); } if ( Map.Construction_Crate < 2 ) { SetAvailableMapGoals( TEAM.AXIS, false, "MOBILEMG42_Axis_FlagCrates_Ins_22"); SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_FlagCrates_Ins_21"); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Generator"); } Util.MapDebugPrint( "Generator_Built" ); }, Generator_Planted = function( trigger ) { Util.SetMaxUsers( 2, "DEFUSE_Generator_.*" ); Util.MapDebugPrint( "Generator_Planted" ); }, Generator_Destroyed = function( trigger ) { Map.Generator = false; SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Generator"); Util.DisableGoal( "ROUTE_Axis_Way_1" ); Util.DisableGoal( "ROUTE_Axis_Way_2" ); Util.EnableGoal( "ROUTE_SideGate_.*" ); Util.EnableGoal( "ROUTE_SideGateCapp_.*" ); Util.EnableGoal( "ROUTE_FakePlace_.*" ); Util.EnableGoal( "ROUTE_Hall" ); if ( Map.Construction_Crate < 2 ) { SetAvailableMapGoals( TEAM.AXIS, false, "MOBILEMG42_Axis_FlagCrates_Ins_21"); SetAvailableMapGoals( TEAM.AXIS, true, { "BUILD_Generator", "MOBILEMG42_Axis_FlagCrates_Ins_22", }); } Util.MapDebugPrint( "Generator_Destroyed" ); }, Bridge_Patch_Part_1_Built = function( trigger ) { Map.Bridge_Patch_Part_1 = true; Wp.SetWaypointFlag( "Bridge_1", "closed", false ); Wp.SetWaypointFlag( "Bridge_2", "closed", false ); Wp.SetWaypointFlag( "Bridge_3", "closed", false ); Wp.SetWaypointFlag( "Bridge_4", "closed", false ); Wp.SetWaypointFlag( "Bridge_6", "closed", true ); Wp.SetWaypointFlag( "Bridge_7", "closed", true ); Wp.SetWaypointFlag( "Bridge_8", "closed", true ); Wp.SetWaypointFlag( "Bridge_9", "closed", true ); Wp.SetWaypointFlag( "Bridge_10", "closed", true ); Wp.SetWaypointFlag( "Bridge_11", "closed", true ); Wp.SetWaypointFlag( "Bridge_12", "closed", true ); Wp.SetWaypointFlag( "Bridge_13", "closed", true ); Wp.SetWaypointFlag( "Bridge_14", "closed", true ); Wp.SetWaypointFlag( "Bridge_15", "closed", true ); if ( !Map.TankOverBridgePatch ) { SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Bridge" ); } Util.MapDebugPrint( "Bridge_Patch_Part_1_Built" ); }, Bridge_Patch_Part_2_Built = function( trigger ) { Map.Bridge_Patch_Part_2 = true; SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Bridge" ); if ( Map.M8_Greyhound ) { if ( Map.TankAtBrokenBridge ) { if ( !Map.TankOverBridgePatch ) { SetAvailableMapGoals( TEAM.ALLIES, true, "ESCORT_M8_Greyhound" ); } } } else { if ( Map.TankAtBrokenBridge ) { if ( !Map.TankOverBridgePatch ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_M8_Greyhound" ); } } else { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_M8_Greyhound" ); } } Util.MapDebugPrint( "Bridge_Patch_Part_2_Built" ); }, Bridge_Planted = function( trigger ) { Map.Bridge_Dyno += 1; if ( Map.TankOverBridgePatch ) { SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Bridge_.*" ); } Util.MapDebugPrint( "Bridge_Planted" ); }, Bridge_Defused = function( trigger ) { Map.Bridge_Dyno -= 1; Util.MapDebugPrint( "Bridge_Defused" ); }, Bridge_Patch_Part_1_Destroyed = function( trigger ) { Map.Bridge_Patch_Part_1 = false; Wp.SetWaypointFlag( "Bridge_1", "closed", true ); Wp.SetWaypointFlag( "Bridge_2", "closed", true ); Wp.SetWaypointFlag( "Bridge_3", "closed", true ); Wp.SetWaypointFlag( "Bridge_4", "closed", true ); Wp.SetWaypointFlag( "Bridge_6", "closed", false ); Wp.SetWaypointFlag( "Bridge_7", "closed", false ); Wp.SetWaypointFlag( "Bridge_8", "closed", false ); Wp.SetWaypointFlag( "Bridge_9", "closed", false ); Wp.SetWaypointFlag( "Bridge_10", "closed", false ); Wp.SetWaypointFlag( "Bridge_11", "closed", false ); Wp.SetWaypointFlag( "Bridge_12", "closed", false ); Wp.SetWaypointFlag( "Bridge_13", "closed", false ); Wp.SetWaypointFlag( "Bridge_14", "closed", false ); Wp.SetWaypointFlag( "Bridge_15", "closed", false ); Map.Bridge_Dyno -= 1; if ( Map.Bridge_Dyno > 0 ) { SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Bridge_.*" ); } Map.Bridge_Dyno = 0; SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Bridge" ); Util.MapDebugPrint( "Bridge_Patch_Part_1_Destroyed" ); }, Bridge_Patch_Part_2_Destroyed = function( trigger ) { Map.Bridge_Patch_Part_2 = false; if ( Map.M8_Greyhound ) { if ( Map.TankAtBrokenBridge ) { if ( !Map.TankOverBridgePatch ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_M8_Greyhound" ); } } } else { if ( Map.TankAtBrokenBridge ) { if ( !Map.TankOverBridgePatch ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_M8_Greyhound" ); //focus on Build bridge } } } if ( !Map.TankOverBridgePatch ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Bridge" ); } Util.MapDebugPrint( "Bridge_Patch_Part_2_Destroyed" ); }, M8_Greyhound_Built = function( trigger ) { Map.M8_Greyhound = true; SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_M8_Greyhound" ); if ( Map.Gate ) { if ( Map.Tiger ) { if ( !Map.TankEnteringShotDownArea ) { if ( !Map.TankOverBridgePatch ) { if ( !Map.Bridge_Patch_Part_2 ) { if ( !Map.TankAtBrokenBridge ) { SetAvailableMapGoals( TEAM.ALLIES, true, "ESCORT_M8_Greyhound" ); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_M8_Greyhound" ); } } else { SetAvailableMapGoals( TEAM.ALLIES, true, "ESCORT_M8_Greyhound" ); } } else { SetAvailableMapGoals( TEAM.ALLIES, true, "ESCORT_M8_Greyhound" ); } } } else { SetAvailableMapGoals( TEAM.ALLIES, true, "ESCORT_M8_Greyhound" ); } } Util.MapDebugPrint( "M8_Greyhound_Built" ); }, M8_Greyhound_Destroyed = function( trigger ) { Map.M8_Greyhound = false; SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_M8_Greyhound" ); if ( Map.Gate ) { if ( Map.Tiger ) { if ( !Map.TankEnteringShotDownArea ) { if ( !Map.TankOverBridgePatch ) { if ( !Map.Bridge_Patch_Part_2 ) { if ( Map.Construction_Crate == 2 ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_M8_Greyhound" ); //focus on Build bridge } else { if ( !Map.TankAtBrokenBridge ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_M8_Greyhound" ); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_M8_Greyhound" ); } } } else { Util.SetMaxUsers( 2, "BUILD_M8_Greyhound" ); SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_M8_Greyhound" ); } } else { Util.SetMaxUsers( 3, "BUILD_M8_Greyhound" ); SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_M8_Greyhound" ); } } } else { Util.SetMaxUsers( 3, "BUILD_M8_Greyhound" ); SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_M8_Greyhound" ); } } Util.MapDebugPrint( "M8_Greyhound_Destroyed" ); }, Tank_At_Broken_Bridge = { Name = "Tank_At_Broken_Bridge", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { ClearGoalRole( "ESCORT_M8_Greyhound", ROLE.ATTACKER ); Util.SetMaxUsers( 4, "ESCORT_M8_Greyhound" ); Map.TankAtBrokenBridge = true; if ( Map.M8_Greyhound and !Map.Bridge_Patch_Part_2 ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_M8_Greyhound" ); } Util.MapDebugPrint( "Tank_At_Broken_Bridge" ); }, OnExit = function(ent) { }, }, Tank_Goes_Over_The_Bridge_Patch = { Name = "Tank_Goes_Over_The_Bridge_Patch", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { thread ( Map.BridgePatchPart1 ); thread ( Map.BridgePatchPart2 ); Map.TankOverBridgePatch = true; SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allies_CapBridgePart_.*", ".*_Allies_CapBridgeFull_.*", "BUILD_Bridge", "MOBILEMORTAR_Allies_SecCrateSecured_01", }); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_CapBridgePart_.*", ".*_Axis_CapBridgeFull_.*", "PLANT_Bridge", }); SetAvailableMapGoals( TEAM.ALLIES, true, { ".*_Allies_OverBridge_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_OverBridge_.*", }); Util.MapDebugPrint( "Tank_Goes_Over_The_Bridge_Patch" ); }, OnExit = function(ent) { }, }, Tank_Over_Bridge_Patch = function( trigger ) { Util.MapDebugPrint( "Tank_Over_Bridge_Patch" ); }, Foot_Bridge_Built = function( trigger ) { Map.Foot_Bridge = true; Map.FB(true); Util.EnableGoal( "ROUTE_FootBridge_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Foot_Bridge" ); if ( !Map.SpawnChange ) { SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Foot_Bridge" ); } Util.MapDebugPrint( "Foot_Bridge_Built" ); }, Foot_Bridge_Planted = function( trigger ) { Map.Foot_Bridge_Dyno += 1; if ( Map.SpawnChange ) { SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Foot_Bridge_.*" ); } else { SetGoalPriority( "DEFUSE_Foot_Bridge_.*", 0.98, TEAM.ALLIES, CLASS.ENGINEER ); Util.SetMaxUsers( 1, "DEFUSE_Foot_Bridge_.*" ); } Util.MapDebugPrint( "Foot_Bridge_Planted" ); }, Foot_Bridge_Defused = function( trigger ) { Map.Foot_Bridge_Dyno -= 1; Util.MapDebugPrint( "Foot_Bridge_Defused" ); }, Foot_Bridge_Destroyed = function( trigger ) { Map.Foot_Bridge = false; Map.Foot_Bridge_Dyno -= 1; Map.FB(false); Util.DisableGoal( "ROUTE_FootBridge_.*" ); if ( Map.Foot_Bridge_Dyno > 0 ) { SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Foot_Bridge_.*" ); } Map.Foot_Bridge_Dyno = 0; SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Foot_Bridge" ); if ( !Map.SpawnChange ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Foot_Bridge" ); } Util.MapDebugPrint( "Foot_Bridge_Destroyed" ); }, Spawn_Change = { Name = "Spawn_Change", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { Map.SpawnChange = true; SetGoalRole( ".*_Axis_OverBridge_.*", ROLE.AMBUSHER ); ETUtil.SetExcludeIndexes( "BUILD_M8_Greyhound", {} ); ETUtil.SuicideSpawn( TEAM.AXIS, 2, -1 ); if ( Map.Trigger == 0 ) { Bots = OnTriggerRegion(AABB(-60.874,-972.120,-57.930,5145.535,6166.364,878.225), Map.Add_Role); Util.MapDebugPrint( "Creating trigger" ); } SetAvailableMapGoals( 0, false, "SWITCH_Turbine"); if ( Map.Foot_Bridge ) { SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Foot_Bridge" ); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Foot_Bridge" ); } SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Tiger_.*" ); Util.MapDebugPrint( "Spawn_Change" ); }, OnExit = function(ent) { }, }, Add_Role = { Name = "Add_Role", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { Util.MapDebugPrint( "Creating trigger Add_Role" ); if( GetEntTeam(ent) == TEAM.AXIS ) { bot = Util.IsBot(ent); if (bot) { bot.SetRoles(ROLE.AMBUSHER); } } Map.Trigger = 1; }, OnExit = function(ent) { if( GetEntTeam(ent) == TEAM.AXIS ) { bot = Util.IsBot(ent); if (bot) { bot.ClearRoles(ROLE.AMBUSHER); } } }, }, Tank_Entering_Shot_Down_Area = { Name = "Tank_Entering_Shot_Down_Area", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { Map.TankEnteringShotDownArea = true; SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_M8_Greyhound" ); Util.MapDebugPrint( "Tank_Entering_Shot_Down_Area" ); }, OnExit = function(ent) { }, }, Tiger_Ready = { Name = "Tiger_Ready", TriggerOnEntity = GetGoal("MOVER_tiger").GetEntity(), OnEnter = function(ent) { Wp.SetWaypointFlag( "Tiger", "closed", false ); Util.MapDebugPrint( "Tiger_Ready" ); }, OnExit = function(ent) { }, }, Wooden_Railing_Destroyed = function( trigger ) { Wp.SetWaypointFlag( "Wooden_Railing_1", "closed", false ); Wp.SetWaypointFlag( "Wooden_Railing_2", "closed", false ); Wp.SetWaypointFlag( "Wooden_Railing_3", "closed", false ); Wp.SetWaypointFlag( "Wooden_Railing_4", "closed", false ); Wp.SetWaypointFlag( "Wooden_Railing_5", "closed", false ); Wp.SetWaypointFlag( "Wooden_Railing_6", "closed", false ); Wp.SetWaypointFlag( "Wooden_Railing_7", "closed", false ); Wp.SetWaypointFlag( "Assault_Ramp_3", "closed", false ); Wp.SetWaypointFlag( "Assault_Ramp_4", "closed", false ); Util.EnableGoal( "ROUTE_TGate" ); Util.MapDebugPrint( "Wooden_Railing_Destroyed" ); sleep(2); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_OverBridge_.*", }); DeleteTriggerRegion("Add_Role"); Util.MapDebugPrint( "Deleting trigger Add_Role" ); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allies_OverBridge_.*", }); foreach ( id and bot in BotTable ) { if ( bot.HasRole(ROLE.AMBUSHER) ) { bot.ClearRoles(ROLE.AMBUSHER); } } if ( !Map.Assault_Ramp ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Assault_Ramp" ); } SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Tiger", "PLANT_Air_Inlet", ".*_Allies_Tiger_.*", }); }, Assault_Ramp_Built = function( trigger ) { Map.Assault_Ramp = true; Wp.SetWaypointFlag( "Assault_Ramp_1", "closed", true ); Wp.SetWaypointFlag( "Assault_Ramp_2", "closed", true ); Util.EnableGoal( "ROUTE_Ramp_.*" ); Util.EnableGoal( "ROUTE_CappointMGAR" ); SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Assault_Ramp" ); if ( Map.Tiger ) { SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Assault_Ramp" ); } Util.MapDebugPrint( "Assault_Ramp_Built" ); }, Assault_Ramp_Planted = function( trigger ) { if ( !Map.Tiger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Assault_Ramp_.*" ); } else { Util.SetMaxUsers( 1, "DEFUSE_Assault_Ramp_.*" ); } Util.MapDebugPrint( "Assault_Ramp_Planted" ); }, Assault_Ramp_Destroyed = function( trigger ) { Map.Assault_Ramp = false; Wp.SetWaypointFlag( "Assault_Ramp_1", "closed", false ); Wp.SetWaypointFlag( "Assault_Ramp_2", "closed", false ); Util.DisableGoal( "ROUTE_Ramp_.*" ); Util.DisableGoal( "ROUTE_CappointMGAR" ); SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Assault_Ramp" ); if ( Map.Tiger ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Assault_Ramp" ); } Util.MapDebugPrint( "Assault_Ramp_Destroyed" ); }, Tiger_Destroyed = function( trigger ) { Map.Tiger = false; Wp.SetWaypointFlag( "Tiger", "closed", true ); Util.SetMaxUsers( 3, "BUILD_M8_Greyhound" ); SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Tiger_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Tiger" ); Util.SetMaxUsers( 2, "BUILD_M8_Greyhound" ); Util.ChangeCrucialClassForRole( TEAM.AXIS, ROLE.DEFENDER3, CLASS.ENGINEER); if ( !Map.M8_Greyhound ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_M8_Greyhound" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "ESCORT_M8_Greyhound" ); } if ( Map.Assault_Ramp ) { SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Assault_Ramp" ); } SetAvailableMapGoals( 0, false, ".*_Tiger_.*" ); //prepare Axis defend inside bunker if ( Map.AllyIns == 0 ) { if ( Map.Air_Inlet ) { SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_Bunker_.*", ".*_Axis_Barricade_0.*", ".*_Axis_Barricade_1.*", ".*_Axis_Barricade_2.*", }); } else { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_AirInlet_.*", }); } } SetAvailableMapGoals( TEAM.ALLIES, true, { "CAMP_Allies_TankEnd_.*", }); Util.MapDebugPrint( "Tiger_Destroyed" ); }, Tank_End = { Name = "Tank_End", TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { Util.MapDebugPrint( "Tank_End" ); }, OnExit = function(ent) { }, }, Gate_Destroyed = function( trigger ) { Map.Gate = false; Wp.SetWaypointFlag( "Barricade_3", "closed", true ); Util.EnableGoal( "ROUTE_MainGate_.*" ); Util.EnableGoal( "ROUTE_CappointMG_.*" ); Util.EnableGoal( "ROUTE_CappointMGG" ); WeaponTable.SetWeaponTeamAvailability ( TEAM.ALLIES, CLASS.SOLDIER, WEAPON.MORTAR, false ); Util.SetGoalRange( "AMMOCAB_first_ammocabinet", 1800); Util.SetGoalRange( "HEALTHCAB_first_healthcabinet", 1800); Util.ChangeCrucialClassForRole( TEAM.ALLIES, ROLE.ATTACKER3, CLASS.ENGINEER); if ( !Map.SecretDocumentsTaken ) { if ( !Map.Barricade ) { if ( Map.AllyIns == 0 ) { SetAvailableMapGoals( TEAM.AXIS, true, { "BUILD_Barricade", }); } } if ( Map.Air_Inlet ) { if ( Map.AllyIns == 0 ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Bunker_.*", ".*_Axis_Barricade_0.*", ".*_Axis_Barricade_1.*", ".*_Axis_Barricade_2.*", }); } } else { if ( Map.AllyIns == 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_AirInlet_3.*" ); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Barricade_0.*", ".*_Axis_Barricade_1.*", ".*_Axis_Barricade_2.*", "CALLARTILLERY_Axis_Bunker_.*", "ARTILLERY_S_Axis_Bunker_.*", }); } } } Util.MapDebugPrint( "Gate_Destroyed" ); sleep(2); SetAvailableMapGoals( TEAM.ALLIES, false, { "CAMP_Allies_TankEnd_.*", "ESCORT_M8_Greyhound", }); if ( !Map.SecretDocumentsTaken ) { if ( Map.Barricade ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Barricade", ".*_Allies_Barricade_.*", }); } if ( Map.Air_Inlet ) { if ( Map.Plane and Map.Jet_Engine ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Jet_Engine", "PLANT_Plane", ".*_Allies_JetEngine_0.*", ".*_Allies_Plane_0.*", }); } else { if ( !Map.Plane and Map.Jet_Engine ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Jet_Engine", ".*_Allies_JetEngine_.*", }); } if ( Map.Plane and !Map.Jet_Engine ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Plane", ".*_Allies_Plane_.*", }); } if ( !Map.Plane and !Map.Jet_Engine ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "FLAG_secret_documents", "SMOKEBOMB_Allies_Documents_.*", }); } } } } }, Inside = { Name = "Inside", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AllyIns += 1; Util.MapDebugPrint( "Ally entered, count: " +Map.AllyIns ); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Bunker_.*", ".*_Axis_Barricade_.*", ".*_Axis_AirInlet_.*", }); if ( !Map.SecretDocumentsTaken ) { if ( !Map.Gate ) { if ( !Map.Barricade ) { SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Barricade" ); } SetAvailableMapGoals( TEAM.AXIS, true, "SMOKEBOMB_Axis_Inside_00" ); } if ( Map.Plane and Map.Jet_Engine ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_JetEngine_.*", ".*_Axis_Plane_.*", }); } else { if ( !Map.Plane and Map.Jet_Engine ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_JetEngine_.*", }); } if ( Map.Plane and !Map.Jet_Engine ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Plane_.*", }); } if ( !Map.Plane and !Map.Jet_Engine ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Documents_.*", }); } } } } }, OnExit = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AllyIns -= 1; Util.MapDebugPrint( "Ally exited, count: " +Map.AllyIns ); if ( Map.AllyIns == 0 ) { Util.MapDebugPrint( "Bunker is safe" ); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_JetEngine_.*", ".*_Axis_Plane_.*", ".*_Axis_Documents_.*", "SMOKEBOMB_Axis_Inside_00", }); if ( !Map.SecretDocumentsTaken ) { if ( !Map.Gate ) { if ( !Map.Barricade ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Barricade" ); } if ( Map.Air_Inlet ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Bunker_.*", ".*_Axis_Barricade_0.*", ".*_Axis_Barricade_2.*", }); if ( Map.Barricade ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_Barricade_1.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Barricade_4.*" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_Barricade_4.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Barricade_1.*" ); } } else { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Barricade_0.*", ".*_Axis_Barricade_2.*", "CALLARTILLERY_Axis_Bunker_.*", "ARTILLERY_S_Axis_Bunker_.*", ".*_Axis_AirInlet_0.*", ".*_Axis_AirInlet_1.*", ".*_Axis_AirInlet_2.*", }); if ( Map.Barricade ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_Barricade_1.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Barricade_4.*" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_Barricade_4.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Barricade_1.*" ); } } } else { if ( !Map.Air_Inlet ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_AirInlet_.*", }); } else { if ( Map.Tiger ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Tiger_.*" ); } } } } } } }, }, Barricade_Built = function( trigger ) { Map.Barricade = true; Wp.SetWaypointFlag( "Barricade_3", "closed", false ); SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Barricade" ); if ( !Map.SecretDocumentsTaken ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Barricade", ".*_Allies_Barricade_.*", }); if ( Map.AllyIns == 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_Barricade_1.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Barricade_4.*" ); } } Util.MapDebugPrint( "Barricade_Built" ); }, Barricade_Planted = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Barricade_.*" ); Util.MapDebugPrint( "Barricade_Planted" ); }, Barricade_Destroyed = function( trigger ) { Map.Barricade = false; Wp.SetWaypointFlag( "Barricade_3", "closed", true ); if ( !Map.SecretDocumentsTaken ) { if ( Map.AllyIns == 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_Barricade_4.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Barricade" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Barricade_1.*" ); } } SetAvailableMapGoals( TEAM.ALLIES, false, { "PLANT_Barricade", ".*_Allies_Barricade_.*", }); Util.MapDebugPrint( "Barricade_Destroyed" ); }, Air_Inlet_Planted = function( trigger ) { if ( !Map.Gate ) { foreach( goal in Util.GoalTable("DEFUSE_Air_Inlet_.*") ) { pos1 = goal.GetPosition(); Util.MapDebugPrint( "^5dynamite position is: "+pos1 ); if( pos1.y < -880 ) //planted inside bunker { Util.SetMaxUsers( 2, "DEFUSE_Air_Inlet_.*" ); Util.MapDebugPrint( "^5goal " + goal.GetName() + " is enabled" ); } else { goal.SetAvailable(TEAM.AXIS, false); //planted outside Util.MapDebugPrint( "^5goal " + goal.GetName() + " is disabled" ); } } } else { if ( !Map.Tiger ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Air_Inlet_.*" ); Util.MapDebugPrint( "DEFUSE_Air_Inlet is disabled" ); } else { Util.SetMaxUsers( 2, "DEFUSE_Air_Inlet_.*" ); } } Util.MapDebugPrint( "Air_Inlet_Planted" ); }, Air_Inlet_Destroyed = function( trigger ) { Map.Air_Inlet = false; Util.EnableGoal( "ROUTE_AirInlet_.*" ); Util.EnableGoal( "ROUTE_CappointAI_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Air_Inlet" ); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_Bunker_.*" ); if ( !Map.Tiger ) { if ( Map.AllyIns == 0 and !Map.SecretDocumentsTaken ) { if ( Map.Gate ) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_Barricade_2.*" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_AirInlet_.*" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_AirInlet_3.*" ); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_AirInlet_0.*", ".*_Axis_AirInlet_1.*", ".*_Axis_AirInlet_2.*", "CALLARTILLERY_Axis_Bunker_.*", "ARTILLERY_S_Axis_Bunker_.*", }); } } } Util.MapDebugPrint( "Air_Inlet_Destroyed" ); sleep(2); if ( Map.Gate ) { if ( !Map.SecretDocumentsTaken ) { if ( Map.Plane and Map.Jet_Engine ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Jet_Engine", "PLANT_Plane", ".*_Allies_JetEngine_0.*", ".*_Allies_Plane_0.*", }); } else { if ( !Map.Plane and Map.Jet_Engine ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Jet_Engine", ".*_Allies_JetEngine_.*", }); } if ( Map.Plane and !Map.Jet_Engine ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Plane", ".*_Allies_Plane_.*", }); } if ( !Map.Plane and !Map.Jet_Engine and !Map.SecretDocumentsTaken ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "FLAG_secret_documents", "SMOKEBOMB_Allies_Documents_.*", }); } } } } }, Jet_Engine_Destroyed = function( trigger ) { Map.Jet_Engine = false; SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_JetEngine_.*", "DEFUSE_Jet_Engine_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { "PLANT_Jet_Engine", ".*_Allies_JetEngine_.*", }); if ( Map.Plane ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Plane_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { ".*_Allies_Plane_.*", }); } else { SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_Allied_Command_Post", }); if ( !Map.SecretDocumentsTaken ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Documents_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "FLAG_secret_documents", "SMOKEBOMB_Allies_Documents_.*", }); } } Util.MapDebugPrint( "Jet_Engine_Destroyed" ); }, Plane_Planted = function( trigger ) { Map.Plane_Dyno += 1; Wp.SetWaypointFlag( "Plane_1", "closed", false ); Wp.SetWaypointFlag( "Plane_2", "closed", false ); Wp.SetWaypointFlag( "Plane_3", "closed", false ); Util.MapDebugPrint( "Plane_Planted" ); }, Plane_Defused = function( trigger ) { Map.Plane_Dyno -= 1; if ( Map.Plane_Dyno == 0 ) { Wp.SetWaypointFlag( "Plane_1", "closed", true ); Wp.SetWaypointFlag( "Plane_2", "closed", true ); Wp.SetWaypointFlag( "Plane_3", "closed", true ); } Util.MapDebugPrint( "Plane_Defused" ); }, Plane_Destroyed = function( trigger ) { Map.Plane = false; Map.Plane_Dyno = 0; Wp.SetWaypointFlag( "Plane_1", "closed", true ); Wp.SetWaypointFlag( "Plane_2", "closed", true ); Wp.SetWaypointFlag( "Plane_3", "closed", true ); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Plane_.*", "DEFUSE_Plane_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { "PLANT_Plane", ".*_Allies_Plane_.*", }); if ( Map.Jet_Engine ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_JetEngine_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { ".*_Allies_JetEngine_.*", }); } else { SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_Allied_Command_Post", }); if ( !Map.SecretDocumentsTaken ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Documents_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "FLAG_secret_documents", "SMOKEBOMB_Allies_Documents_.*", }); } } Util.MapDebugPrint( "Plane_Destroyed" ); }, Allied_CP_Built = function( trigger ) { Map.Allied_CP = true; SetAvailableMapGoals( TEAM.ALLIES, false, { "BUILD_Allied_Command_Post", }); SetAvailableMapGoals( TEAM.AXIS, true, { "PLANT_Allied_Command_Post", }); Util.MapDebugPrint( "Allied_CP_Built" ); }, Allied_CP_Planted = function( trigger ) { Util.SetMaxUsers( 2, "DEFUSE_Allied_Command_Post_.*" ); Util.MapDebugPrint( "Allied_CP_Planted" ); }, Allied_CP_Destroyed = function( trigger ) { Map.Allied_CP = false; SetAvailableMapGoals( TEAM.AXIS, false, { "PLANT_Allied_Command_Post", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_Allied_Command_Post", }); Util.MapDebugPrint( "Allied_CP_Destroyed" ); }, Secret_Documents_Taken = function( trigger ) { Map.SecretDocumentsTaken = true; if ( !Map.Gate ) { if ( Map.Barricade ) { SetAvailableMapGoals( TEAM.ALLIES, false, { "PLANT_Barricade", ".*_Allies_Barricade_.*", }); } else { SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Barricade" ); } } SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_Documents_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, { "FLAG_secret_documents", "SMOKEBOMB_Allies_Documents_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_CP_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "CAPPOINT_Allied_Command_Post", ".*_Allies_CP_.*", }); Util.MapDebugPrint( "Secret_Documents_Taken" ); }, Secret_Documents_Dropped = function( trigger ) { Util.MapDebugPrint( "Secret_Documents_Dropped" ); }, Secret_Documents_Returned = function( trigger ) { Map.SecretDocumentsTaken = false; SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_CP_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { "CAPPOINT_Allied_Command_Post", ".*_Allies_CP_.*", }); if ( !Map.Gate ) { if ( Map.Barricade ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Barricade", ".*_Allies_Barricade_.*", }); } } if ( !Map.Gate or !Map.Air_Inlet ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "FLAG_secret_documents", "SMOKEBOMB_Allies_Documents_.*", }); } if ( Map.AllyIns == 0 ) { if ( !Map.Gate ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Barricade" ); if ( Map.Air_Inlet ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Bunker_.*", ".*_Axis_Barricade_0.*", ".*_Axis_Barricade_2.*", }); if ( Map.Barricade ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_Barricade_1.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Barricade_4.*" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_Barricade_4.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Barricade_1.*" ); } } else { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Barricade_0.*", ".*_Axis_Barricade_2.*", "CALLARTILLERY_Axis_Bunker_.*", "ARTILLERY_S_Axis_Bunker_.*", ".*_Axis_AirInlet_0.*", ".*_Axis_AirInlet_1.*", ".*_Axis_AirInlet_2.*", }); if ( Map.Barricade ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_Barricade_1.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Barricade_4.*" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_Barricade_4.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Barricade_1.*" ); } } } else { if ( !Map.Air_Inlet ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_AirInlet_.*", }); } else { if ( Map.Tiger ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Tiger_.*" ); } } } } else { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Documents_.*", }); } Util.MapDebugPrint( "Secret_Documents_Returned" ); }, River = function(close) { for( i = 1; i <= 31; i += 1 ) { Wp.SetWaypointFlag( "River_" + i, "closed", close ); } }, FB = function(close) { for( i = 1; i <= 8; i += 1 ) { Wp.SetWaypointFlag( "FB_" + i, "closed", close ); } }, Secret_Documents_Secured = function( trigger ) { ETUtil.WinningChat( TEAM.ALLIES ); ETUtil.LosingChat( TEAM.AXIS ); Util.MapDebugPrint( "Secret_Documents_Secured" ); }, BridgePatchPart1 = function() { start = Vector3 ( 4292.229, 1318.813, 330.056 ); end = Vector3 ( 4292.229, 1318.813, 340.056 ); Util.MapDebugPrint( "Bridge Patch Part 1 Thread Started" ); while ( Map.Bridge_Patch_Part_1 ) { tr = TraceLine( start, end, null, TRACE.SOLID, 0, false ); if ( tr.fraction == 1 ) { if ( Map.Bridge_Patch_Part_1 ) { Map.Bridge_Patch_Part_1_Destroyed(); } if ( Map.Debug ) { DrawDebugLine( start, end, COLOR.GREEN, 1 ); } } else { if ( Map.Debug ) { DrawDebugLine( start, end, COLOR.RED, 1 ); } } yield(); } }, BridgePatchPart2 = function() { start = Vector3 ( 4272.867, 1281.466, 346.358 ); end = Vector3 ( 4272.867, 1281.466, 336.358 ); Util.MapDebugPrint( "Bridge Patch Part 2 Thread Started" ); while ( Map.Bridge_Patch_Part_2 ) { tr = TraceLine( start, end, null, TRACE.SOLID, 0, false ); if ( tr.fraction == 1 ) { if ( Map.Bridge_Patch_Part_2 ) { Map.Bridge_Patch_Part_2_Destroyed(); } if ( Map.Debug ) { DrawDebugLine( start, end, COLOR.GREEN, 1 ); } } else { if ( Map.Debug ) { DrawDebugLine( start, end, COLOR.RED, 1 ); } } yield(); } }, }; global OnMapLoad = function() { OnTrigger( "Allied Command Post constructed. Charge speed increased!", Map.Allied_CP_Built ); OnTrigger( "Planted at the Allied Command Post.", Map.Allied_CP_Planted ); OnTrigger( "Axis team has destroyed the Allied Command Post!", Map.Allied_CP_Destroyed ); OnTrigger( "The Allied Assault Ramp has been constructed.", Map.Assault_Ramp_Built ); OnTrigger( "Planted at the Assault Ramp.", Map.Assault_Ramp_Planted ); OnTrigger( "Axis have destroyed the Allied Assault Ramp.", Map.Assault_Ramp_Destroyed ); OnTrigger( "Barricade has been constructed.", Map.Barricade_Built ); OnTrigger( "Planted at Barricade.", Map.Barricade_Planted ); OnTrigger( "Barricade has been destroyed.", Map.Barricade_Destroyed ); OnTrigger( "Allied team has constructed the Foot Bridge!", Map.Foot_Bridge_Built ); OnTrigger( "Planted at the Foot Bridge.", Map.Foot_Bridge_Planted ); OnTrigger( "Defused at the Foot Bridge.", Map.Foot_Bridge_Defused ); OnTrigger( "Axis team has destroyed the Foot Bridge!", Map.Foot_Bridge_Destroyed ); OnTrigger( "The Door Control power has been recovered!", Map.Generator_Built ); OnTrigger( "Planted at the Generator.", Map.Generator_Planted ); OnTrigger( "The Door Control power has been cut!", Map.Generator_Destroyed ); OnTrigger( "The M8 Greyhound has been repaired!", Map.M8_Greyhound_Built ); OnTrigger( "The M8 Greyhound has been damaged!", Map.M8_Greyhound_Destroyed ); OnTrigger( "Allied team has prepared the Bridge Patch!", Map.Bridge_Patch_Part_1_Built ); OnTrigger( "Axis team has destroyed the Bridge Patch!", Map.Bridge_Patch_Part_1_Destroyed ); OnTrigger( "Allied team has reinforced the Bridge Patch!", Map.Bridge_Patch_Part_2_Built ); OnTrigger( "Axis team has damaged the Bridge Patch!", Map.Bridge_Patch_Part_2_Destroyed ); OnTrigger( "Planted at the Air Inlet.", Map.Air_Inlet_Planted ); OnTrigger( "Allied team has destroyed the Air Inlet!", Map.Air_Inlet_Destroyed ); OnTrigger( "Allied team has destroyed the Jet Engine Prototype!", Map.Jet_Engine_Destroyed ); OnTrigger( "Planted at the Plane.", Map.Plane_Planted ); OnTrigger( "Defused at the Plane.", Map.Plane_Defused ); OnTrigger( "Allied team has destroyed the Plane Prototype!", Map.Plane_Destroyed ); OnTrigger( "The Tiger has been damaged!", Map.Tiger_Destroyed ); OnTrigger( "Planted at Bridge.", Map.Bridge_Planted ); OnTrigger( "Defused at Bridge.", Map.Bridge_Defused ); OnTrigger( "The Bridge has been destroyed!", Map.Bridge_Destroyed ); OnTrigger( "Allies have breached the Gate!", Map.Gate_Destroyed ); OnTrigger( "Allies have stolen Construction Crate!", Map.Construction_Crate_Taken ); OnTrigger( "USA have stolen Construction Crate!", Map.Construction_Crate_Taken ); //ETNam OnTrigger( "Flag dropped crate1_obj!", Map.Construction_Crate_Dropped ); OnTrigger( "Flag dropped crate2_obj!", Map.Construction_Crate_Dropped ); OnTrigger( "Flag returned crate1_obj!", Map.Construction_Crate_Returned ); OnTrigger( "Flag returned crate2_obj!", Map.Construction_Crate_Returned ); OnTrigger( "First Construction Crate secured!", Map.First_Construction_Crate_Secured ); OnTrigger( "Second Construction Crate secured!", Map.Second_Construction_Crate_Secured ); OnTrigger( "Allies have stolen Project Files!", Map.Secret_Documents_Taken ); OnTrigger( "USA have stolen Project Files!", Map.Secret_Documents_Taken ); //ETNam OnTrigger( "Flag returned secret_documents!", Map.Secret_Documents_Returned ); OnTrigger( "Allies have dropped the Project Files! Pick it up!", Map.Secret_Documents_Dropped ); OnTrigger( "Allied team has transmitted the Project Files!", Map.Secret_Documents_Secured ); OnTrigger( "Allies have crossed the Bridge Patch!", Map.Tank_Over_Bridge_Patch ); OnTrigger( "brick_gate_start", Map.Wooden_Railing_Destroyed ); Util.DisableGoal( ".*", true ); Util.DisableGoal( "ROUTE_SideGate_.*" ); Util.DisableGoal( "ROUTE_RiverWay_.*" ); Util.DisableGoal( "ROUTE_SideGateCapp_.*" ); Util.DisableGoal( "ROUTE_FakePlace_.*" ); Util.DisableGoal( "ROUTE_Hall" ); Util.DisableGoal( "ROUTE_FootBridge_.*" ); Util.DisableGoal( "ROUTE_Ramp_.*" ); Util.DisableGoal( "ROUTE_TGate" ); Util.DisableGoal( "ROUTE_MainGate_.*" ); Util.DisableGoal( "ROUTE_CappointMG.*" ); Util.DisableGoal( "ROUTE_AirInlet_.*" ); Util.DisableGoal( "ROUTE_CappointAI_.*" ); SetAvailableMapGoals( 0, true, { "AMMOCAB_.*", "HEALTHCAB_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "FLAG_crate.*_obj", ".*_Allies_FlagCrates_Out_.*", "ATTACK_Allies_Generator_.*", "PLANT_Generator", "ESCORT_M8_Greyhound", "SWITCH_Turbine", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_FlagCrates_Out_.*", "DEFEND_Axis_Generator_.*", ".*_Axis_FlagCrates_Ins_.*", }); SetAvailableMapGoals( TEAM.AXIS, false, "MOBILEMG42_Axis_FlagCrates_Ins_22"); Util.SetMaxUsers( 1, "ESCORT_M8_Greyhound" ); Util.SetMaxUsers( 1, "BUILD_M8_Greyhound" ); Util.SetMaxUsers( 1, "BUILD_Assault_Ramp" ); Util.SetMaxUsersInUse( 1, "SWITCH_Turbine" ); Util.SetMaxUsers( 1, "PLANT_Assault_Ramp" ); Util.SetMaxUsers( 1, "PLANT_Barricade" ); Util.SetMaxUsers( 1, "PLANT_Foot_Bridge" ); Util.SetMaxUsers( 2, "PLANT_Allied_Command_Post" ); Util.SetMaxUsers( 3, "PLANT_Generator" ); Util.SetGoalRange( "CALLARTILLERY_Axis_FlagCrates_Out_20", 1650); Util.SetGoalRange( "SMOKEBOMB_Axis_Inside_00", 800); ETUtil.SetExcludeIndexes( "BUILD_M8_Greyhound", { 2, 3, 4, 5 } ); ETUtil.SetCabinets(); SetGoalPriority( "ATTACK_Allies_CapBridgePart_.*", 0.51, TEAM.ALLIES, 0 ); SetGoalPriority( "ATTACK_Allies_Barricade_.*", 0.51, TEAM.ALLIES, 0 ); SetGoalPriority( "SWITCH_Turbine", 0.81, TEAM.ALLIES, 0 ); SetGoalPriority( "SMOKEBOMB_Allies_Barricade_05", 0.81, TEAM.ALLIES, CLASS.COVERTOPS ); SetGoalPriority( "SMOKEBOMB_Allies_Documents_.*", 0.82, TEAM.ALLIES, CLASS.COVERTOPS ); SetGoalPriority( "PLANT_Barricade", 0.82, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Tiger", 0.83, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Generator", 0.83, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Generator", 0.91, TEAM.ALLIES, CLASS.COVERTOPS ); SetGoalPriority( "BUILD_Bridge", 0.92, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "BUILD_M8_Greyhound", 0.91, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "DEFEND_Axis_CapBridgePart_.*", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "CALLARTILLERY_Axis_FlagCrates_Out_.*", 0.79, TEAM.AXIS, CLASS.FIELDOPS ); SetGoalPriority( "MOBILEMG42_Axis_FlagCrates_Out_.*", 0.91, TEAM.AXIS, CLASS.SOLDIER ); ClearGoalRole( ".*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 }); SetGoalRole( "CALLARTILLERY_Allies_FlagCrates_Out_.*", ROLE.ATTACKER ); SetGoalRole( "ATTACK_Allies_FlagCrates_Out_.*", ROLE.ATTACKER ); SetGoalRole( "ATTACK_Allies_Generator_.*", ROLE.ATTACKER1 ); SetGoalRole( "SMOKEBOMB_Allies_CapBridgeFull_.*", ROLE.ATTACKER1 ); SetGoalRole( "FLAG_crate.*_obj", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); SetGoalRole( "PLANT_Barricade", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); SetGoalRole( "SWITCH_Turbine", { ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); SetGoalRole( "ESCORT_M8_Greyhound", ROLE.ATTACKER ); SetGoalRole( "ATTACK_Allies_Barricade_.*", ROLE.ATTACKER3 ); SetGoalRole( ".*_Allies_CapBridgePart_.*", { ROLE.ATTACKER, ROLE.ATTACKER1 } ); SetGoalRole( "ATTACK_Allies_JetEngine_0.*", { ROLE.ATTACKER1, ROLE.ATTACKER3 } ); SetGoalRole( "ATTACK_Allies_Plane_0.*", { ROLE.ATTACKER, ROLE.ATTACKER2 } ); SetGoalRole( "MOBILEMG42_Axis_FlagCrates_Out_.*", ROLE.DEFENDER ); SetGoalRole( "DEFEND_Axis_FlagCrates_Out_.*", ROLE.DEFENDER ); SetGoalRole( "DEFEND_Axis_Generator_.*", ROLE.DEFENDER1 ); SetGoalRole( "DEFEND_Axis_FlagCrates_Ins_0.*", ROLE.DEFENDER2 ); SetGoalRole( "DEFEND_Axis_Barricade_1.*", ROLE.DEFENDER2 ); SetGoalRole( "DEFEND_Axis_Barricade_4.*", ROLE.DEFENDER2 ); SetGoalRole( "DEFEND_Axis_Barricade_2.*", ROLE.DEFENDER3 ); SetGoalRole( "DEFEND_Axis_FlagCrates_Ins_1.*", ROLE.DEFENDER3 ); SetGoalRole( ".*_Axis_CapBridgePart_.*", { ROLE.DEFENDER, ROLE.DEFENDER3 } ); SetGoalRole( "DEFEND_Axis_Tiger_3.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } ); SetGoalRole( "DEFEND_Axis_Tiger_4.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } ); SetGoalRole( "DEFEND_Axis_Bunker_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } ); SetGoalRole( "DEFEND_Axis_AirInlet_1.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } ); SetGoalRole( "DEFEND_Axis_JetEngine_0.*", { ROLE.DEFENDER1, ROLE.DEFENDER3 } ); SetGoalRole( "DEFEND_Axis_Plane_0.*", { ROLE.DEFENDER, ROLE.DEFENDER2 } ); Util.AddUseWp( "PLANT_Barricade", "Barricade_1" ); Util.AddUseWp( "PLANT_Barricade", "Barricade_2" ); Util.AddUseWp( "BUILD_Foot_Bridge", "Foot_Bridge_1" ); Util.AddUseWp( "PLANT_Foot_Bridge", "Foot_Bridge_2" ); Util.AddUseWp( "BUILD_Bridge", "Bridge_5" ); Util.AddUseWp( "CAPPOINT_Bridge", "Bridge_5" ); Util.AddUseWp( "PLANT_Air_Inlet", "Air_Inlet_1" ); Util.AddUseWp( "PLANT_Air_Inlet", "Air_Inlet_2" ); Util.AddUsePoint("PLANT_Plane",{Vec3(-1134.722, -2663.581, 376.125),Vec3(-1125.108, -2460.318, 376.125),Vec3(-1017.930, -2315.948, 376.125)}); Util.SetGoalPosition(25.128, 2380.880, 611.125, "PLANT_Assault_Ramp"); Util.SetGoalPosition(-1379.634, 1374.635, 627.170, "PLANT_Tiger"); Map.River(true); Map.FB(false); Wp.SetWaypointFlag( "Bridge_1", "closed", false ); Wp.SetWaypointFlag( "Bridge_2", "closed", false ); Wp.SetWaypointFlag( "Bridge_3", "closed", false ); Wp.SetWaypointFlag( "Bridge_4", "closed", false ); Wp.SetWaypointFlag( "Bridge_6", "closed", true ); Wp.SetWaypointFlag( "Bridge_7", "closed", true ); Wp.SetWaypointFlag( "Bridge_8", "closed", true ); Wp.SetWaypointFlag( "Bridge_9", "closed", true ); Wp.SetWaypointFlag( "Bridge_10", "closed", true ); Wp.SetWaypointFlag( "Bridge_11", "closed", true ); Wp.SetWaypointFlag( "Bridge_12", "closed", true ); Wp.SetWaypointFlag( "Bridge_13", "closed", true ); Wp.SetWaypointFlag( "Bridge_14", "closed", true ); Wp.SetWaypointFlag( "Bridge_15", "closed", true ); Wp.SetWaypointFlag( "Assault_Ramp_1", "closed", false ); Wp.SetWaypointFlag( "Assault_Ramp_2", "closed", false ); Wp.SetWaypointFlag( "Assault_Ramp_3", "closed", true ); Wp.SetWaypointFlag( "Assault_Ramp_4", "closed", true ); Wp.SetWaypointFlag( "Tiger", "closed", true ); Wp.SetWaypointFlag( "Barricade_3", "closed", false ); Wp.SetWaypointFlag( "Plane_1", "closed", true ); Wp.SetWaypointFlag( "Plane_2", "closed", true ); Wp.SetWaypointFlag( "Plane_3", "closed", true ); Wp.SetWaypointFlag( "Wooden_Railing_1", "closed", true ); Wp.SetWaypointFlag( "Wooden_Railing_2", "closed", true ); Wp.SetWaypointFlag( "Wooden_Railing_3", "closed", true ); Wp.SetWaypointFlag( "Wooden_Railing_4", "closed", true ); Wp.SetWaypointFlag( "Wooden_Railing_5", "closed", true ); Wp.SetWaypointFlag( "Wooden_Railing_6", "closed", true ); Wp.SetWaypointFlag( "Wooden_Railing_7", "closed", true ); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.MORTAR, false ); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.VENOM, false ); WeaponTable.SetWeaponTeamAvailability ( TEAM.ALLIES, CLASS.SOLDIER, WEAPON.MOBILE_MG42, false ); OnTriggerRegion(AABB(4389.980,1370.842,345.125,4427.980,1408.842,419.125), Map.Tank_At_Broken_Bridge); OnTriggerRegion(AABB(4387.572,1370.875,345.125,4425.572,1408.875,395.125), Map.Tank_Goes_Over_The_Bridge_Patch); OnTriggerRegion(AABB(3013.142,1007.125,320.596,3051.142,1045.125,394.596), Map.Spawn_Change); OnTriggerRegion(AABB(2802.585,1377.129,289.125,2840.585,1415.129,339.125), Map.Tank_Entering_Shot_Down_Area); OnTriggerRegion(AABB(1578.372,764.195,289.125,1616.372,802.195,339.125), Map.Tank_End); OnTriggerRegion(AABB(-1342.321,1436.549,591.640,-1304.321,1474.549,665.640), Map.Tiger_Ready); OnTriggerRegion(AABB(-2296.867,-3912.802,289.125,588.835,-1279.151,866.713), Map.Inside); RegionTrigger.Create(AABB(7621.661,739.428,473.125,7828.746,959.566,779.276), "DisableCombatMovement", "Tower"); RegionTrigger.Create(AABB(7621.661,739.428,473.125,7828.746,959.566,779.276), "DisableBotPush", ""); RegionTrigger.Create(AABB(2951.196,5490.335,337.125,3051.125,5626.756,457.656), "DisableCombatMovement", "Axis_FlagCrates_Ins_20"); RegionTrigger.Create(AABB(2951.196,5490.335,337.125,3051.125,5626.756,457.656), "DisableBotPush", ""); RegionTrigger.Create(AABB(4341.116,5959.981,281.125,4404.179,6071.943,381.090), "DisableCombatMovement", "Axis_FlagCrates_Ins_22"); RegionTrigger.Create(AABB(4341.116,5959.981,281.125,4404.179,6071.943,381.090), "DisableBotPush", ""); RegionTrigger.Create(AABB(1649.032,1257.914,278.140,1885.743,1427.702,408.561), "DisableCombatMovement", "Axis_OverBridge_20"); RegionTrigger.Create(AABB(1649.032,1257.914,278.140,1885.743,1427.702,408.561), "DisableBotPush", ""); RegionTrigger.Create(AABB(2099.560,-78.390,265.125,2376.500,24.873,419.125), "DisableCombatMovement", "Axis_OverBridge_22"); RegionTrigger.Create(AABB(2099.560,-78.390,265.125,2376.500,24.873,419.125), "DisableBotPush", ""); RegionTrigger.Create(AABB(2697.192,-978.073,318.177,2846.772,-857.615,404.983), "DisableCombatMovement", "Axis_OverBridge_23"); RegionTrigger.Create(AABB(2697.192,-978.073,318.177,2846.772,-857.615,404.983), "DisableBotPush", ""); RegionTrigger.Create(AABB(488.256,1810.932,265.125,1240.106,2361.033,667.311), "DisableCombatMovement", "Axis_First_Spawn_Roof"); RegionTrigger.Create(AABB(488.256,1810.932,265.125,1240.106,2361.033,667.311), "DisableBotPush", ""); RegionTrigger.Create(AABB(-2729.967,648.627,607.626,-2492.851,818.052,734.644), "DisableCombatMovement", "Axis_Tiger_01"); RegionTrigger.Create(AABB(-2729.967,648.627,607.626,-2492.851,818.052,734.644), "DisableBotPush", ""); RegionTrigger.Create(AABB(-2669.860,1338.595,893.325,-2518.052,1457.541,986.658), "DisableCombatMovement", "Axis_Tiger_03"); RegionTrigger.Create(AABB(-2669.860,1338.595,893.325,-2518.052,1457.541,986.658), "DisableBotPush", ""); RegionTrigger.Create(AABB(-3206.987,975.414,962.517,-3072.648,1096.682,1055.629), "DisableCombatMovement", "Axis_Tiger_04"); RegionTrigger.Create(AABB(-3206.987,975.414,962.517,-3072.648,1096.682,1055.629), "DisableBotPush", ""); RegionTrigger.Create(AABB(505.306,-2021.682,289.136,602.423,-1904.943,363.136), "DisableCombatMovement", "Axis_Barricade_01"); RegionTrigger.Create(AABB(505.306,-2021.682,289.136,602.423,-1904.943,363.136), "DisableBotPush", ""); RegionTrigger.Create(AABB(879.125,-2269.150,289.125,969.147,-2137.835,376.490), "DisableCombatMovement", "Axis_Barricade_02"); RegionTrigger.Create(AABB(879.125,-2269.150,289.125,969.147,-2137.835,376.490), "DisableBotPush", ""); RegionTrigger.Create(AABB(381.838,-1863.764,289.136,482.776,-1738.988,363.136), "DisableCombatMovement", "Axis_Barricade_03"); RegionTrigger.Create(AABB(381.838,-1863.764,289.136,482.776,-1738.988,363.136), "DisableBotPush", ""); RegionTrigger.Create(AABB(845.524,-3072.875,353.125,1056.875,-2944.874,455.485), "DisableCombatMovement", "Axis_Barricade_04"); RegionTrigger.Create(AABB(845.524,-3072.875,353.125,1056.875,-2944.874,455.485), "DisableBotPush", ""); RegionTrigger.Create(AABB(303.125,-1680.139,289.125,369.078,-1488.714,467.125), "DisableCombatMovement", "Axis_Barricade_13"); RegionTrigger.Create(AABB(303.125,-1680.139,289.125,369.078,-1488.714,467.125), "DisableBotPush", ""); RegionTrigger.Create(AABB(-1747.612,-2252.772,353.125,-1663.125,-2022.798,539.125), "DisableCombatMovement", "Axis_JetEngine_05"); RegionTrigger.Create(AABB(-1747.612,-2252.772,353.125,-1663.125,-2022.798,539.125), "DisableBotPush", ""); RegionTrigger.Create(AABB(-1931.443,-2141.697,353.125,-1820.302,-1915.016,580.905), "DisableCombatMovement", "Axis_JetEngine_06"); RegionTrigger.Create(AABB(-1931.443,-2141.697,353.125,-1820.302,-1915.016,580.905), "DisableBotPush", ""); RegionTrigger.Create(AABB(-1814.151,-2380.488,353.236,-1663.125,-2258.102,583.355), "DisableCombatMovement", "Axis_JetEngine_07"); RegionTrigger.Create(AABB(-1814.151,-2380.488,353.236,-1663.125,-2258.102,583.355), "DisableBotPush", ""); RegionTrigger.Create(AABB(-2178.153,-2015.028,353.125,-2048.904,-1873.452,487.125), "DisableCombatMovement", "Axis_JetEngine_20"); RegionTrigger.Create(AABB(-2178.153,-2015.028,353.125,-2048.904,-1873.452,487.125), "DisableBotPush", ""); RegionTrigger.Create(AABB(-1451.849,-1402.031,373.125,-1290.178,-1279.125,457.125), "DisableCombatMovement", "Axis_Documents_02"); RegionTrigger.Create(AABB(-1451.849,-1402.031,373.125,-1290.178,-1279.125,457.125), "DisableBotPush", ""); RegionTrigger.Create(AABB(-2875.263,1650.783,831.894,-2568.116,1762.718,934.053), "DisableCombatMovement", "Axis_CP_00"); RegionTrigger.Create(AABB(-2875.263,1650.783,831.894,-2568.116,1762.718,934.053), "DisableBotPush", ""); RegionTrigger.Create(AABB(-2127.900,493.653,572.365,-1863.125,868.422,845.115), "DisableCombatMovement", "Axis_CP_01"); RegionTrigger.Create(AABB(-2127.900,493.653,572.365,-1863.125,868.422,845.115), "DisableBotPush", ""); RegionTrigger.Create(AABB(2831.467,4410.190,353.125,2893.589,4474.544,427.125), "DisableBotPush", "Axis_FlagCrates_Out_03"); RegionTrigger.Create(AABB(4095.871,5552.932,337.125,4192.875,5641.728,411.125), "DisableBotPush", "Axis_FlagCrates_Ins_21"); RegionTrigger.Create(AABB(-2053.904,-2173.440,353.125,-1989.498,-2072.875,475.125), "DisableBotPush", "Axis_JetEngine_08"); RegionTrigger.Create(AABB(-2161.525,-1806.586,353.125,-2042.875,-1735.125,470.073), "DisableBotPush", "Axis_JetEngine_18"); RegionTrigger.Create(AABB(4013.715,981.699,193.129,4414.497,1408.875,463.521), "DisableCombatMovement", "Bridge"); RegionTrigger.Create(AABB(4374.880,5053.473,353.125,4843.056,5288.600,630.741), "DisableCombatMovement", "Dam"); RegionTrigger.Create(AABB(3303.133,5497.060,337.125,3404.489,5590.783,432.165), "DisableCombatMovement", "Switch"); RegionTrigger.Create(AABB(3429.214,5073.125,337.125,4085.176,5628.845,465.186), "DisableCombatMovement", "Dam_Entrance"); RegionTrigger.Create(AABB(2903.125,5739.125,329.125,3140.246,5835.875,455.953), "DisableCombatMovement", "Metal_Platform"); RegionTrigger.Create(AABB(2794.192,5735.125,145.125,2975.310,5854.693,458.817), "DisableCombatMovement", "Metal_Platform_Ladder"); RegionTrigger.Create(AABB(-1718.145,1281.124,610.710,-1408.860,1458.776,844.430), "DisableCombatMovement", "Tiger_Tank"); RegionTrigger.Create(AABB(-1464.194,1623.092,660.625,-645.487,2182.005,1033.173), "DisableCombatMovement", "Hill_1"); RegionTrigger.Create(AABB(1338.022,-1460.860,289.125,1454.378,-1355.159,363.125), "DisableCombatMovement", "Allies_Barricade_05"); RegionTrigger.Create(AABB(151.124,-2666.372,649.125,248.864,-2438.858,723.128), "DisableCombatMovement", "Jump_near_plane"); RegionTrigger.Create(AABB(-1004.689,-1401.630,353.125,-754.697,-1279.125,573.125), "DisableCombatMovement", "Axis_Documents_21"); RegionTrigger.Create(AABB(-345.299,-1558.262,353.125,-246.202,-1386.830,513.125), "DisableCombatMovement", "Axis_Documents_22"); RegionTrigger.Create(AABB(-1059.120,-3165.893,353.125,-483.125,-2839.125,427.125), "DisableCombatMovement", "Axis_Inside_00"); RegionTrigger.Create(AABB(-1552.872,-2036.397,649.125,-135.126,-1135.145,777.877), "DisableCombatMovement", "Gallery"); thread ( Map.Turbine_Lever ); if ( Map.Debug ) { Util.DebugColorString = "^3"; } print( "^3Omni-bot map script and waypoints by ^1Q^2i^3k^4i ^3and ^1n^2a^4t^8i^3v^5e12 ^3for ^1" + GetMapName() + " ^3loaded." ); Util.BotChat( 0, "say", "^3Omni-bot map script ^3by ^1Q^2i^3k^4i ^3and ^1n^2a^4t^8i^3v^5e12 ^3for ^3map ^7" + GetMapName(), 1 ); }; global OnBotJoin = function( bot ) { bot.TargetBreakableDist = 120.0; }; global InitializeRoutes = function() { MapRoutes = { BUILD_Foot_Bridge = { }, PLANT_Foot_Bridge = { }, PLANT_Air_Inlet = { }, CAPPOINT_Allied_Command_Post = { ROUTE_FlagPlace_01 = { ROUTE_CappointAI_01 = { ROUTE_CappointAI_02 = {}, }, ROUTE_CappointMG_01 = { ROUTE_CappointMG_02 = { ROUTE_CappointMGAR = { Weight = 3 }, ROUTE_CappointMGG = {}, }, }, }, ROUTE_FlagPlace_02 = { ROUTE_CappointAI_01 = { ROUTE_CappointAI_02 = {}, }, ROUTE_CappointMG_01 = { ROUTE_CappointMG_02 = { ROUTE_CappointMGAR = { Weight = 3 }, ROUTE_CappointMGG = {}, }, }, }, }, PLANT_Plane = { ROUTE_Allied_SecondSpawnLow = { ROUTE_MainGate_01 = { Weight = 2, ROUTE_MainGate_02 = {}, }, ROUTE_AirInlet_01 = { ROUTE_AirInlet_02 = { ROUTE_AirInlet_03 = { Weight = 3 }, ROUTE_AirInlet_04 = {}, }, }, }, ROUTE_Allied_SecondSpawnUp = { ROUTE_MainGate_01 = { Weight = 2, ROUTE_MainGate_02 = {}, }, ROUTE_AirInlet_01 = { ROUTE_AirInlet_02 = { ROUTE_AirInlet_03 = { Weight = 3 }, ROUTE_AirInlet_04 = {}, }, }, }, }, FLAG_crate1_obj = { ROUTE_Allied_FirstSpawnUp = { ROUTE_Ravine_01 = { ROUTE_Ravine_02 = { ROUTE_Ravine_03 = { ROUTE_Ravine_04 = { ROUTE_Hall_01 = { Weight = 2, ROUTE_Hall_02 = {}, }, ROUTE_Switch = {}, }, }, }, }, ROUTE_SideGate_01 = { ROUTE_SideGate_02 = { ROUTE_SideGate_03 = { ROUTE_SideGate_04 = {}, }, }, }, }, ROUTE_Allied_FirstSpawnLow = { ROUTE_Ravine_01 = { ROUTE_Ravine_02 = { ROUTE_Ravine_03 = { ROUTE_Ravine_04 = { ROUTE_Hall_01 = { Weight = 2, ROUTE_Hall_02 = {}, }, ROUTE_Switch = {}, }, }, }, }, ROUTE_SideGate_01 = { ROUTE_SideGate_02 = { ROUTE_SideGate_03 = { ROUTE_SideGate_04 = {}, }, }, }, }, }, PLANT_Generator = { ROUTE_Allied_FirstSpawnUp = { ROUTE_Ravine_01 = { ROUTE_Ravine_02 = { ROUTE_Ravine_03 = { ROUTE_Ravine_04 = { ROUTE_Hall_01 = {}, }, }, }, }, ROUTE_SideGate_01 = { ROUTE_SideGate_02 = { ROUTE_SideGate_03 = { ROUTE_SideGate_04 = {}, }, }, }, }, ROUTE_Allied_FirstSpawnLow = { ROUTE_Ravine_01 = { ROUTE_Ravine_02 = { ROUTE_Ravine_03 = { ROUTE_Ravine_04 = { ROUTE_Hall_01 = {}, }, }, }, }, ROUTE_SideGate_01 = { ROUTE_SideGate_02 = { ROUTE_SideGate_03 = { ROUTE_SideGate_04 = {}, }, }, }, }, }, SWITCH_Turbine = { ROUTE_Allied_FirstSpawnUp = { ROUTE_Ravine_01 = { ROUTE_Ravine_02 = { ROUTE_Ravine_03 = { ROUTE_Ravine_04 = {}, }, }, }, ROUTE_SideGate_01 = { ROUTE_SideGate_02 = { ROUTE_SideGate_03 = { ROUTE_SideGate_04 = {}, }, }, }, }, ROUTE_Allied_FirstSpawnLow = { ROUTE_Ravine_01 = { ROUTE_Ravine_02 = { ROUTE_Ravine_03 = { ROUTE_Ravine_04 = {}, }, }, }, ROUTE_SideGate_01 = { ROUTE_SideGate_02 = { ROUTE_SideGate_03 = { ROUTE_SideGate_04 = {}, }, }, }, }, }, BUILD_M8_Greyhound = { }, PLANT_Tiger = { }, BUILD_Assault_Ramp = { }, PLANT_Assault_Ramp = { }, BUILD_Generator = { }, }; MapRoutes["CAPPOINT_Bridge"] = { ROUTE_FlagPlace = { ROUTE_Hall = { ROUTE_SideGateCapp_02 = { Weight=4, ROUTE_SideGateCapp_03 = { ROUTE_SideGateCapp_04 = { ROUTE_SideGateCapp_05 = { ROUTE_SideGateCapp_06 = { ROUTE_SideGateCapp_07 = {}, }, }, }, }, }, ROUTE_RiverWay_03 = { Weight=2, ROUTE_RiverWay_04 = { ROUTE_RiverWay_05 = { ROUTE_RiverWay_06 = { ROUTE_RiverWay_07 = {}, }, }, }, }, }, ROUTE_Axis_Way_1 = { ROUTE_Axis_Way_2 = {}, }, }, }; MapRoutes["ATTACK_Allies_OverBridge_.*"] = { ROUTE_Allied_FirstSpawnUp = { ROUTE_BridgeR_1 = { ROUTE_BridgeR_2 = {}, }, ROUTE_BridgeL_1 = { ROUTE_BridgeL_2 = {}, }, ROUTE_FootBridge_1 = { ROUTE_FootBridge_2 = { ROUTE_FootBridge_3 = {}, }, }, }, ROUTE_Allied_FirstSpawnLow = { ROUTE_BridgeR_1 = { ROUTE_BridgeR_2 = {}, }, ROUTE_BridgeL_1 = { ROUTE_BridgeL_2 = {}, }, ROUTE_FootBridge_1 = { ROUTE_FootBridge_2 = { ROUTE_FootBridge_3 = {}, }, }, }, }; MapRoutes["DEFEND_Axis_Tiger_.*"] = { ROUTE_Axis_SecondSpawn = { ROUTE_Axis_TigerL_01 = { ROUTE_Axis_TigerL_02 = {}, }, ROUTE_Axis_TigerR_01 = { ROUTE_Axis_TigerR_02 = {}, }, }, }; MapRoutes["ATTACK_Allies_Tiger_.*"] = { ROUTE_Allied_SecondSpawnLow = { ROUTE_TGate = {}, ROUTE_Ramp_01 = { ROUTE_Ramp_02 = {}, }, }, ROUTE_Allied_SecondSpawnUp = { ROUTE_TGate = {}, ROUTE_Ramp_01 = { ROUTE_Ramp_02 = {}, }, }, }; MapRoutes[".*_Axis_JetEngine_.*"] = { ROUTE_Axis_SecondSpawn = { ROUTE_EngineWay_01 = { ROUTE_EngineWay_02 = {}, }, ROUTE_PlaneWay_01 = { ROUTE_PlaneWay_02 = {}, }, }, }; MapRoutes.FLAG_crate2_obj = MapRoutes.FLAG_crate1_obj; MapRoutes.PLANT_Jet_Engine = MapRoutes.PLANT_Plane; MapRoutes.FLAG_secret_documents = MapRoutes.PLANT_Plane; MapRoutes["ATTACK_Allies_Generator_.*"] = MapRoutes.FLAG_crate1_obj; MapRoutes[".*_Allies_Plane_.*"] = MapRoutes.PLANT_Plane; MapRoutes[".*_Allies_JetEngine_.*"] = MapRoutes.PLANT_Plane; MapRoutes[".*_Allies_CP_.*"] = MapRoutes.CAPPOINT_Allied_Command_Post; MapRoutes[".*_Axis_Plane_.*"] = MapRoutes[".*_Axis_JetEngine_.*"]; Util.Routes(MapRoutes); };