//========================================================================================== // // 1944_cherbourg2.gm // // Who When What //------------------------------------------------------------------------------------------ // Native12 03 May 2014 Initial Script // Native12 14.07.2014 Finished // // Bugs and suggestions: PM on http://omni-bot.invisionzone.com/index.php?/index // //========================================================================================== // global Map = { Debug = 0, Axis_Bunker_Sewer_Grate_Dyno = 0, Axis_Inner_Blockade_Dyno = 0, Axis_Main_Gates_Dyno = 0, Axis_Outer_Blockade_Dyno = 0, Courtyard_Sewer_Grate_Dyno = 0, Dock_AA_Gun_Dyno = 0, East_AA_Gun_Dyno = 0, Hotel_Gate_Dyno = 0, West_AA_Gun_Dyno = 0, tower_Dyno = 0, Command_Post_Dyno = 0, Tank = true, Allied_CP = false, Axis_CP = false, Axis_Main_Gates = true, Hotel_Gate = true, NumberOfCompletedTasks = 0, Allies_Win = false, tower = false, Axis_Outer_Blockade = true, Axis_Inner_Blockade = false, Courtyard_Sewer_Grate = true, Axis_Bunker_Controlpanel = true, Axis_Bunker_Sewer_Grate = true, Dock_AA_Gun = true, East_AA_Gun = true, West_AA_Gun = true, AlliesInsideFirst = 0, AlliesInsideSecond = 0, AlliesNearDockAAGun = 0, AlliesNearAAGuns = 0, AlliedEngsNearAAGuns = 0, AlliesNearWestAAGuns = 0, AlliesInCourtyardSewer = 0, AlliesInBunkerSewer = 0, ChurchAlleyDoorExploded = false, ApartmentComplexDoor1Exploded = false, ApartmentComplexDoor2Exploded = false, AlleyWall = true, DispenseAmmoTime = 20, Movers = { "MOVER_allywall_1", "MOVER_apt_door_1", "MOVER_apt_door_2_1", "MOVER_axis_outer_blockade_1", "MOVER_church_alley_door", "MOVER_fueltanks_1", "MOVER_tower_base", "MOVER_yardwall_1", "MOVER_yardwall", }, Roles = { AXIS = { AllBots = true, // each bot is considered for a role DEFENDER = //defend Hotel Gate, Dock AA Gun, Dock Area { numbots = 6, crucialClass = CLASS.ENGINEER, }, DEFENDER1 = //defend Main Gates, CP, CP Area, Tank, Inner Blockade { numbots = 5, crucialClass = CLASS.ENGINEER, }, DEFENDER2 = //defend Outer Blockade, West AA Gun, Bunker Sewer Grate { numbots = 5, crucialClass = CLASS.ENGINEER, }, DEFENDER3 = //defend Outer Blockade, East AA Gun, Courtyard Sewer Grate { numbots = 5, crucialClass = CLASS.ENGINEER, }, }, ALLIES = { AllBots = true, // each bot is considered for a role ATTACKER = //Alley Wall, Hotel Gate, Dock AA Gun { numbots = 5, crucialClass = CLASS.ENGINEER, }, ATTACKER1 = //Main Gates, CP, CP Area { numbots = 5, crucialClass = CLASS.ENGINEER, }, ATTACKER2 = //Outer Blockade, West AA Gun, Bunker Sewer Grate { numbots = 5, crucialClass = CLASS.ENGINEER, }, ATTACKER3 = //Outer Blockade, East AA Gun, Courtyard Sewer Grate { numbots = 5, 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:prone1 prone1 = { navigate = function( _this ) { _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.060, -0.966, -0.250) ); yield(); _this.Bot.HoldButton( BTN.FORWARD, 3.1 ); sleep( 1.7 ); _this.ReleaseAimRequest(); _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.755, -0.614, -0.231) ); sleep( 0.3 ); _this.ReleaseAimRequest(); _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.945, -0.214, -0.249) ); sleep( 0.3 ); _this.ReleaseAimRequest(); _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.967, 0.193, -0.164) ); sleep( 0.3 ); _this.ReleaseAimRequest(); _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.950, 0.282, -0.133) ); sleep( 0.5 ); _this.ReleaseAimRequest(); _this.Bot.ReleaseButton(BTN.FORWARD); }, }, // /bot waypoint_setproperty paththrough Navigation_PT:prone2 prone2 = { navigate = function( _this ) { _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.964, -0.048, -0.263) ); yield(); _this.Bot.HoldButton( BTN.FORWARD, 2.6 ); sleep( 1.7 ); _this.ReleaseAimRequest(); _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.750, -0.633, -0.190) ); sleep( 0.3 ); _this.ReleaseAimRequest(); _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.004, -0.971, -0.237) ); sleep( 0.3 ); _this.ReleaseAimRequest(); _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(0.145, -0.956, -0.254) ); sleep( 0.3 ); _this.ReleaseAimRequest(); _this.Bot.ReleaseButton(BTN.FORWARD); }, }, // /bot waypoint_setproperty paththrough Navigation_PT:prone3 prone3 = { navigate = function( _this ) { _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.058, -0.973, -0.225) ); yield(); _this.Bot.HoldButton( BTN.FORWARD, 3 ); sleep( 1.8 ); _this.ReleaseAimRequest(); _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.522, -0.833, -0.184) ); sleep( 0.3 ); _this.ReleaseAimRequest(); _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.944, -0.244, -0.223) ); sleep( 0.3 ); _this.ReleaseAimRequest(); _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.986, 0.070, -0.151) ); sleep( 0.3 ); _this.ReleaseAimRequest(); _this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.994, 0.062, -0.089) ); sleep( 0.3 ); _this.ReleaseAimRequest(); _this.Bot.ReleaseButton(BTN.FORWARD); }, }, // /bot waypoint_setproperty paththrough Navigation_PT:towerladder towerladder = { navigate = function(_this) { wpTable = {}; Wp.GetWaypointByName("Tower_Ladder", wpTable); if ( _this.Goto(wpTable.position) == EVENT.PATH_SUCCESS ) { _this.AddAimRequest(Priority.VeryHigh, "facing", wpTable.facing); sleep(0.5); _this.Bot.HoldButton(BTN.BACKWARD, 0.5); sleep(0.5); _this.Bot.HoldButton(BTN.FORWARD, 1.2); sleep(1.2); } }, }, }, tower_Built = function( trigger ) { Wp.SetWaypointFlag( "tower", "closed", false ); Map.tower = true; SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_tower" ); Util.MapDebugPrint( "^5tower_Built" ); }, tower_Planted = function( trigger ) { Map.tower_Dyno += 1; SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_tower_.*" ); Util.MapDebugPrint( "^5tower_Planted" ); }, tower_Defused = function( trigger ) { Map.tower_Dyno -= 1; Util.MapDebugPrint( "^5tower_Defused" ); }, tower_Destroyed = function( trigger ) { Map.tower_Dyno = 0; Map.tower = false; Wp.SetWaypointFlag( "tower", "closed", true ); Util.MapDebugPrint( "^5tower_Destroyed" ); }, Alley_Wall_Destroyed = function( trigger ) { Map.AlleyWall = false; GetGoal("MOBILEMORTAR_Axis_HotelGate_10").MortarAim = { Vec3(-0.372, 0.928, -0.002), Vec3(-0.410, 0.910, 0.059) }; if ( !Map.Hotel_Gate ) { Util.EnableGoal( "ROUTE_Alley" ); Util.EnableGoal( "ROUTE_Alley_Wall" ); Util.EnableGoal( "ROUTE_Hotel_Gate" ); Util.EnableGoal( "ROUTE_Dock_Ladder" ); } sleep(2); SetAvailableMapGoals( TEAM.ALLIES, false, "CAMP_Allies_AlleyWall_.*" ); if ( Map.Hotel_Gate ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Hotel_Gate", "ATTACK_Allies_HotelGate_.*", }); } Util.MapDebugPrint( "^5Alley_Wall_Destroyed" ); }, Axis_Main_Gates_Planted = function( trigger ) { Map.Axis_Main_Gates_Dyno += 1; SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Axis_Main_Gates_.*" ); Util.MapDebugPrint( "^5Axis_Main_Gates_Planted" ); }, Axis_Main_Gates_Defused = function( trigger ) { Map.Axis_Main_Gates_Dyno -= 1; Util.MapDebugPrint( "^5Axis_Main_Gates_Defused" ); }, Axis_Main_Gates_Destroyed = function( trigger ) { if ( Map.Axis_Main_Gates_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Axis_Main_Gates_.*" ); } Map.Axis_Main_Gates_Dyno = 0; Map.Axis_Main_Gates = false; if ( Map.Hotel_Gate ) { ETUtil.SetAimModeForMount("MOUNT_tank", Vec3(893.163, 1023.875, -528.263)); } else { ETUtil.SetAimModeForMount("MOUNT_tank", { Vec3(893.163, 1023.875, -528.263), Vec3(109.572, -1595.400, -511.875) }); } Util.EnableGoal( "ROUTE_Main_Gates" ); Util.EnableGoal( "ROUTE_Around_Tank" ); Util.EnableGoal( "ROUTE_Corner" ); Util.EnableGoal( "ROUTE_Around_YardWall" ); Util.EnableGoal( "ROUTE_Past_Main_Gates" ); Util.EnableGoal( "ROUTE_Tank_1" ); Util.EnableGoal( "ROUTE_Wall_Above_InnerBlockade" ); sleep(2); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allies_MainGates_.*", "PLANT_Axis_Main_Gates", }); if ( Map.Hotel_Gate ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Hotel_Gate" ); } if ( Map.Courtyard_Sewer_Grate ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Courtyard_Sewer_Grate" ); if ( Map.East_AA_Gun or Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_CourtyardSewerGrate_.*" ); } } if ( Map.Axis_Bunker_Sewer_Grate ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Bunker_Sewer_Grate" ); if ( Map.East_AA_Gun or Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_BunkerSewerGrate_.*" ); } } if ( !Map.Allied_CP and !Map.Axis_CP ) { SetAvailableMapGoals( 0, true, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_CP_.*" ); } else if ( Map.Axis_CP ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Command_Post", "ATTACK_Allies_CP_.*", }); } else if ( Map.Allied_CP ) { SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Command_Post" ); } if ( !Map.ApartmentComplexDoor1Exploded ) { SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_Apartment_Complex_Door_1.*" ); } if ( !Map.ApartmentComplexDoor2Exploded ) { SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_Apartment_Complex_Door_2.*" ); } if ( !Map.ChurchAlleyDoorExploded ) { SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_Church_Alley_Door.*" ); } if ( Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_East_AA_Gun", "ATTACK_Allies_EastAAGun_.*", }); } if ( Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_West_AA_Gun", "ATTACK_Allies_WestAAGun_.*", }); } Util.MapDebugPrint( "^5Axis_Main_Gates_Destroyed" ); }, Axis_Outer_Blockade_Planted = function( trigger ) { Map.Axis_Outer_Blockade_Dyno += 1; Util.MapDebugPrint( "^5Axis_Outer_Blockade_Planted" ); }, Axis_Outer_Blockade_Defused = function( trigger ) { Map.Axis_Outer_Blockade_Dyno -= 1; Util.MapDebugPrint( "^5Axis_Outer_Blockade_Defused" ); }, Axis_Outer_Blockade_Destroyed = function( trigger ) { Map.Axis_Outer_Blockade_Dyno = 0; Map.Axis_Outer_Blockade = false; SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_Outer_Blockade" ); SetAvailableMapGoals( TEAM.ALLIES, false, "GRENADE_Axis_Outer_Blockade" ); Util.EnableGoal( "ROUTE_OuterBlockade_R" ); Util.EnableGoal( "ROUTE_Around_Church" ); Util.EnableGoal( "ROUTE_OuterBlockade_L" ); Util.EnableGoal( "ROUTE_Around_Axis_Spawn" ); Util.EnableGoal( "ROUTE_Wall_Above_InnerBlockade" ); if ( Map.ChurchAlleyDoorExploded ) { Util.EnableGoal( "ROUTE_Past_OuterBlockade_R" ); Util.EnableGoal( "ROUTE_Church_Door" ); Util.EnableGoal( "ROUTE_Church_AleyDoor" ); } if ( Map.ApartmentComplexDoor1Exploded ) { Util.EnableGoal( "ROUTE_Past_OuterBlockade_L" ); Util.EnableGoal( "ROUTE_Garden_Church_Door" ); Util.EnableGoal( "ROUTE_Garden_Apartment_Door_1" ); } sleep(2); SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allies_OuterBlockade_.*" ); if ( Map.Courtyard_Sewer_Grate ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Courtyard_Sewer_Grate" ); if ( Map.East_AA_Gun or Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_CourtyardSewerGrate_.*" ); } } if ( Map.Axis_Bunker_Sewer_Grate ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Bunker_Sewer_Grate" ); if ( Map.East_AA_Gun or Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_BunkerSewerGrate_.*" ); } } if ( !Map.Allied_CP and !Map.Axis_CP ) { SetAvailableMapGoals( 0, true, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_CP_.*" ); } else if ( Map.Axis_CP ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Command_Post", "ATTACK_Allies_CP_.*", }); } else if ( Map.Allied_CP ) { SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Command_Post" ); } if ( !Map.ApartmentComplexDoor1Exploded ) { SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_Apartment_Complex_Door_1.*" ); } if ( !Map.ApartmentComplexDoor2Exploded ) { SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_Apartment_Complex_Door_2.*" ); } if ( !Map.ChurchAlleyDoorExploded ) { SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_Church_Alley_Door.*" ); } if ( Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_East_AA_Gun", "ATTACK_Allies_EastAAGun_.*", }); } if ( Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_West_AA_Gun", "ATTACK_Allies_WestAAGun_.*", }); } Util.MapDebugPrint( "^5Axis_Outer_Blockade_Destroyed" ); }, Axis_Outer_Blockade_Built = function( trigger ) { Util.DisableGoal( "ROUTE_OuterBlockade_R" ); Util.DisableGoal( "ROUTE_Around_Church" ); Util.DisableGoal( "ROUTE_Past_OuterBlockade_R" ); Util.DisableGoal( "ROUTE_Church_Door" ); Util.DisableGoal( "ROUTE_Church_AleyDoor" ); Util.DisableGoal( "ROUTE_OuterBlockade_L" ); Util.DisableGoal( "ROUTE_Around_Axis_Spawn" ); Util.DisableGoal( "ROUTE_Past_OuterBlockade_L" ); Util.DisableGoal( "ROUTE_Garden_Church_Door" ); Util.DisableGoal( "ROUTE_Garden_Apartment_Door_1" ); if ( Map.Axis_Main_Gates ) { Util.DisableGoal( "ROUTE_Wall_Above_InnerBlockade" ); } SetAvailableMapGoals( TEAM.ALLIES, true, { "GRENADE_Axis_Outer_Blockade", ".*_Allies_OuterBlockade_.*", }); Util.MapDebugPrint( "^5Axis_Outer_Blockade_Built" ); }, Hotel_Gate_Planted = function( trigger ) { Map.Hotel_Gate_Dyno += 1; Util.SetRoleForGoals( "DEFUSE_Hotel_Gate_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } ); Util.MapDebugPrint( "^5Hotel_Gate_Planted" ); }, Hotel_Gate_Defused = function( trigger ) { Map.Hotel_Gate_Dyno -= 1; Util.MapDebugPrint( "^5Hotel_Gate_Defused" ); }, Hotel_Gate_Destroyed = function( trigger ) { if ( Map.Hotel_Gate_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Hotel_Gate_.*" ); } Map.Hotel_Gate_Dyno = 0; Map.Hotel_Gate = false; Util.MapDebugPrint( "^5Hotel_Gate_Destroyed" ); Wp.SetWaypointFlag( "Hotel_Gate_1", "door", false ); Wp.SetWaypointFlag( "Hotel_Gate_2", "door", false ); Wp.SetWaypointFlag( "Hotel_Gate_1", "axis", false ); Wp.SetWaypointFlag( "Hotel_Gate_2", "axis", false ); if ( !Map.AlleyWall ) { Util.EnableGoal( "ROUTE_Alley" ); Util.EnableGoal( "ROUTE_Alley_Wall" ); Util.EnableGoal( "ROUTE_Hotel_Gate" ); Util.EnableGoal( "ROUTE_Dock_Ladder" ); } if ( Map.Axis_Main_Gates ) { ETUtil.SetAimModeForMount("MOUNT_tank", Vec3(109.572, -1595.400, -511.875)); } else { ETUtil.SetAimModeForMount("MOUNT_tank", { Vec3(893.163, 1023.875, -528.263), Vec3(109.572, -1595.400, -511.875) }); } if ( Map.AlliesInsideFirst > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_HotelGate_.*" ); } if ( Map.AlliesInsideSecond == 0 ) { if ( Map.Dock_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_First_DockArea_.*" ); } } SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Hotel_Gate" ); sleep(2); SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_HotelGate_.*" ); if ( Map.Dock_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_Allies_DockAAGun_.*", "PLANT_Dock_AA_Gun", }); } }, Axis_Inner_Blockade_Built = function( trigger ) { Map.Axis_Inner_Blockade = true; Wp.SetWaypointFlag( "Axis_Inner_Blockade_1", "closed", true ); Wp.SetWaypointFlag( "Axis_Inner_Blockade_2", "closed", true ); SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_Inner_Blockade" ); if ( !Map.Axis_Main_Gates or !Map.Axis_Outer_Blockade ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Inner_Blockade" ); } if ( Map.AlliesInsideSecond > 0 ) { SetAvailableMapGoals( TEAM.AXIS, true, { "REPAIRMG42_axis_inner_blockade_mg42", "MOUNTMG42_axis_inner_blockade_mg42", }); } Util.MapDebugPrint( "^5Axis_Inner_Blockade_Built" ); }, Axis_Inner_Blockade_Planted = function( trigger ) { Map.Axis_Inner_Blockade_Dyno += 1; Util.SetRoleForGoals( "DEFUSE_Axis_Inner_Blockade_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2 } ); Util.MapDebugPrint( "^5Axis_Inner_Blockade_Planted" ); }, Axis_Inner_Blockade_Defused = function( trigger ) { Map.Axis_Inner_Blockade_Dyno -= 1; Util.MapDebugPrint( "^5Axis_Inner_Blockade_Defused" ); }, Axis_Inner_Blockade_Destroyed = function( trigger ) { Map.Axis_Inner_Blockade_Dyno = 0; Map.Axis_Inner_Blockade = false; Wp.SetWaypointFlag( "Axis_Inner_Blockade_1", "closed", false ); Wp.SetWaypointFlag( "Axis_Inner_Blockade_2", "closed", false ); SetAvailableMapGoals( TEAM.AXIS, false, { "REPAIRMG42_axis_inner_blockade_mg42", "MOUNTMG42_axis_inner_blockade_mg42", }); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Axis_Inner_Blockade" ); if ( Map.AlliesInsideFirst > 0 ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_Inner_Blockade" ); } Util.MapDebugPrint( "^5Axis_Inner_Blockade_Destroyed" ); }, Allied_Command_Post_Built = function( trigger ) { Map.Allied_CP = true; //Util.ChangeSpawn( TEAM.ALLIES, 5 ); //CP spawn does not work SetAvailableMapGoals( TEAM.ALLIES, false, { "ATTACK_Allies_CP_.*", "BUILD_Command_Post", }); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_CPArea_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, { "PLANT_Command_Post", "ATTACK_Axis_CP_.*", }); Util.MapDebugPrint( "^5Allied_Command_Post_Built" ); }, Axis_Command_Post_Built = function( trigger ) { Map.Axis_CP = true; //Util.ChangeSpawn( TEAM.AXIS, 5 ); //CP spawn does not work SetAvailableMapGoals( TEAM.AXIS, false, { "BUILD_Command_Post", "ATTACK_Axis_CP_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Command_Post", "ATTACK_Allies_CP_.*", }); Util.MapDebugPrint( "^5Axis_Command_Post_Built" ); }, Command_Post_Planted = function( trigger ) { Map.Command_Post_Dyno += 1; if ( Map.Allied_CP ) { SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Command_Post_.*" ); Util.MapDebugPrint( "^5Allied_Command_Post_Planted" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Command_Post_.*" ); Util.MapDebugPrint( "^5Axis_Command_Post_Planted" ); } }, Command_Post_Defused = function( trigger ) { Map.Command_Post_Dyno -= 1; if ( Map.Allied_CP ) { Util.MapDebugPrint( "^5Allied_Command_Post_Defused" ); } else { Util.MapDebugPrint( "^5Axis_Command_Post_Defused" ); } Util.MapDebugPrint( "^5Command_Post_Defused" ); }, Allied_Command_Post_Destroyed = function( trigger ) { Map.Command_Post_Dyno = 0; Map.Allied_CP = false; //Util.ChangeSpawn( TEAM.ALLIES, 0 ); //CP spawn does not work SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_CPArea_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, { "BUILD_Command_Post", "ATTACK_Axis_CP_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_Allies_CP_.*", "BUILD_Command_Post", }); Util.MapDebugPrint( "^5Allied_Command_Post_Destroyed" ); }, Axis_Command_Post_Destroyed = function( trigger ) { Map.Command_Post_Dyno = 0; Map.Axis_CP = false; SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, true, { "BUILD_Command_Post", "ATTACK_Axis_CP_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_Command_Post", "ATTACK_Allies_CP_.*", }); Util.MapDebugPrint( "^5Axis_Command_Post_Destroyed" ); }, Axis_Bunker_Sewer_Grate_Planted = function( trigger ) { Map.Axis_Bunker_Sewer_Grate_Dyno += 1; if ( !Map.East_AA_Gun and !Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Axis_Bunker_Sewer_Grate_.*" ); } Util.MapDebugPrint( "^5Axis_Bunker_Sewer_Grate_Planted" ); }, Axis_Bunker_Sewer_Grate_Defused = function( trigger ) { Map.Axis_Bunker_Sewer_Grate_Dyno -= 1; Util.MapDebugPrint( "^5Axis_Bunker_Sewer_Grate_Defused" ); }, Axis_Bunker_Sewer_Grate_Destroyed = function( trigger ) { if ( Map.Axis_Bunker_Sewer_Grate_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Axis_Bunker_Sewer_Grate_.*" ); } Map.Axis_Bunker_Sewer_Grate_Dyno = 0; Map.Axis_Bunker_Sewer_Grate = false; Wp.SetWaypointFlag( "Axis_Bunker_Sewer_Grate", "closed", false ); Util.EnableGoal( "ROUTE_BunkerSewerGrate_Entrance" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Axis_Bunker_Sewer_Grate" ); if ( !Map.Dock_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Forced_BunkerSewGr_.*" ); } Util.MapDebugPrint( "^5Axis_Bunker_Sewer_Grate_Destroyed" ); sleep(2); SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_BunkerSewerGrate_.*" ); if ( Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_East_AA_Gun", "ATTACK_Allies_EastAAGun_.*", }); } if ( Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_West_AA_Gun", "ATTACK_Allies_WestAAGun_.*", }); } if ( Map.Axis_Bunker_Controlpanel ) { if ( Map.East_AA_Gun or Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_Axis_Bunker_Controlpanel" ); } } }, Courtyard_Sewer_Grate_Planted = function( trigger ) { Map.Courtyard_Sewer_Grate_Dyno += 1; if ( !Map.East_AA_Gun and !Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Courtyard_Sewer_Grate_.*" ); } Util.MapDebugPrint( "^5Courtyard_Sewer_Grate_Planted" ); }, Courtyard_Sewer_Grate_Defused = function( trigger ) { Map.Courtyard_Sewer_Grate_Dyno -= 1; Util.MapDebugPrint( "^5Courtyard_Sewer_Grate_Defused" ); }, Courtyard_Sewer_Grate_Destroyed = function( trigger ) { if ( Map.Courtyard_Sewer_Grate_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Courtyard_Sewer_Grate_.*" ); } Map.Courtyard_Sewer_Grate_Dyno = 0; Map.Courtyard_Sewer_Grate = false; //the courtyard sewer is too low for bots & players in mods: Nitmod, Silent and ETPub (ETNam) if ( GetModName() != "nitmod" and GetModName() != "silEnT" and GetModName() != "etpub" ) { Wp.SetWaypointFlag( "Courtyard_Sewer_Grate", "closed", false ); Util.MapDebugPrint( "^5Other mods" ); } SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Courtyard_Sewer_Grate" ); if ( !Map.Dock_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Forced_CourtyardSewGr_.*" ); } Util.MapDebugPrint( "^5Courtyard_Sewer_Grate_Destroyed" ); sleep(2); SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_CourtyardSewerGrate_.*" ); if ( Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_East_AA_Gun", "ATTACK_Allies_EastAAGun_.*", }); } if ( Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_West_AA_Gun", "ATTACK_Allies_WestAAGun_.*", }); } if ( Map.Axis_Bunker_Controlpanel ) { if ( Map.East_AA_Gun or Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_Axis_Bunker_Controlpanel" ); } } }, Axis_Bunker_Controlpanel_Destroyed = function( trigger ) { Map.Axis_Bunker_Controlpanel = false; Wp.SetWaypointFlag( "Door_1", "door", false ); Wp.SetWaypointFlag( "Door_2", "door", false ); Wp.SetWaypointFlag( "Door_3", "door", false ); Wp.SetWaypointFlag( "Door_4", "door", false ); Wp.SetWaypointFlag( "Door_1", "axis", false ); Wp.SetWaypointFlag( "Door_2", "axis", false ); Wp.SetWaypointFlag( "Door_3", "axis", false ); Wp.SetWaypointFlag( "Door_4", "axis", false ); Util.EnableGoal( "ROUTE_West_Door" ); Util.EnableGoal( "ROUTE_East_Door" ); if ( !Map.Dock_AA_Gun ) { Util.SetRoleForGoals( "BUILD_Axis_Bunker_Controlpanel", { ROLE.DEFENDER, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); } SetAvailableMapGoals( TEAM.ALLIES, false, "GRENADE_Axis_Bunker_Controlpanel" ); if ( Map.East_AA_Gun or Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_Bunker_Controlpanel" ); } Util.MapDebugPrint( "^5Axis_Bunker_Controlpanel_Destroyed" ); sleep(2); if ( !Map.Axis_Bunker_Controlpanel ) { if ( Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_East_AA_Gun", "ATTACK_Allies_EastAAGun_.*", }); } if ( Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_West_AA_Gun", "ATTACK_Allies_WestAAGun_.*", }); } } }, Axis_Bunker_Controlpanel_Built = function( trigger ) { Map.Axis_Bunker_Controlpanel = true; Wp.SetWaypointFlag( "Door_1", "door", true ); Wp.SetWaypointFlag( "Door_2", "door", true ); Wp.SetWaypointFlag( "Door_3", "door", true ); Wp.SetWaypointFlag( "Door_4", "door", true ); Wp.SetWaypointFlag( "Door_1", "axis", true ); Wp.SetWaypointFlag( "Door_2", "axis", true ); Wp.SetWaypointFlag( "Door_3", "axis", true ); Wp.SetWaypointFlag( "Door_4", "axis", true ); Util.DisableGoal( "ROUTE_West_Door" ); Util.DisableGoal( "ROUTE_East_Door" ); SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_Bunker_Controlpanel" ); if ( Map.Courtyard_Sewer_Grate and Map.Axis_Bunker_Sewer_Grate ) { if ( Map.AlliedEngsNearAAGuns == 0 ) { if ( Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_East_AA_Gun" ); } if ( Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_West_AA_Gun" ); } } if ( Map.AlliesNearAAGuns == 0 ) { if ( Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_EastAAGun_.*" ); } if ( Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_WestAAGun_.*" ); } SetAvailableMapGoals( TEAM.ALLIES, false, "GRENADE_Axis_Bunker_Controlpanel" ); } else { if ( Map.East_AA_Gun or Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_Axis_Bunker_Controlpanel" ); } } } if ( !Map.Courtyard_Sewer_Grate or !Map.Axis_Bunker_Sewer_Grate ) { if ( Map.East_AA_Gun or Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_Axis_Bunker_Controlpanel" ); } } Util.MapDebugPrint( "^5Axis_Bunker_Controlpanel_Built" ); }, Dock_AA_Gun_Planted = function( trigger ) { Map.Dock_AA_Gun_Dyno += 1; if ( !Map.East_AA_Gun and !Map.West_AA_Gun ) { Util.SetRoleForGoals( "DEFUSE_Dock_AA_Gun_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); } else { Util.SetRoleForGoals( "DEFUSE_Dock_AA_Gun_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } ); } Util.MapDebugPrint( "^5Dock_AA_Gun_Planted" ); }, Dock_AA_Gun_Defused = function( trigger ) { Map.Dock_AA_Gun_Dyno -= 1; Util.MapDebugPrint( "^5Dock_AA_Gun_Defused" ); }, Dock_AA_Gun_Destroyed = function( trigger ) { if ( Map.Dock_AA_Gun_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Dock_AA_Gun_.*" ); } Map.Dock_AA_Gun_Dyno = 0; Map.Dock_AA_Gun = false; Map.NumberOfCompletedTasks += 1; if ( Map.NumberOfCompletedTasks == 3 ) { Map.Allies_Win = true; sleep(1); ETUtil.WinningChat( TEAM.ALLIES ); sleep(1.5); ETUtil.LosingChat( TEAM.AXIS ); Util.MapDebugPrint( "^5Allies win" ); } if ( !Map.Axis_Bunker_Controlpanel ) { Util.SetRoleForGoals( "BUILD_Axis_Bunker_Controlpanel", { ROLE.DEFENDER, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); } if ( Map.West_AA_Gun ) { Util.SetRoleForGoals( "ATTACK_Allies_BunkerSewerGrate_.*", { ROLE.ATTACKER, ROLE.ATTACKER2 } ); Util.SetRoleForGoals( "PLANT_Axis_Bunker_Sewer_Grate", { ROLE.ATTACKER, ROLE.ATTACKER2 } ); Util.SetRoleForGoals( "ATTACK_Allies_WestAAGun_.*", { ROLE.ATTACKER, ROLE.ATTACKER2 } ); Util.SetRoleForGoals( "PLANT_West_AA_Gun", { ROLE.ATTACKER, ROLE.ATTACKER2 } ); } if ( Map.East_AA_Gun ) { Util.SetRoleForGoals( "ATTACK_Allies_CourtyardSewerGrate_.*", { ROLE.ATTACKER, ROLE.ATTACKER3 } ); Util.SetRoleForGoals( "PLANT_Courtyard_Sewer_Grate", { ROLE.ATTACKER, ROLE.ATTACKER3 } ); Util.SetRoleForGoals( "ATTACK_Allies_EastAAGun_.*", { ROLE.ATTACKER, ROLE.ATTACKER3 } ); Util.SetRoleForGoals( "PLANT_East_AA_Gun", { ROLE.ATTACKER, ROLE.ATTACKER3 } ); } SetAvailableMapGoals( TEAM.ALLIES, false, { "ATTACK_Allies_DockAAGun_.*", "PLANT_Dock_AA_Gun", }); SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_Axis_DockAAGun_.*", ".*_Axis_HotelGate_.*", "DEFEND_Axis_First_DockArea_.*", "DEFEND_Axis_Second_DockArea_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, "GRENADE_Fuel_Tanks" ); if ( !Map.Axis_Bunker_Sewer_Grate ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Forced_BunkerSewGr_.*" ); } if ( !Map.Courtyard_Sewer_Grate ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Forced_CourtyardSewGr_.*" ); } DeleteTriggerRegion("Allies_Near_Dock_AAGun"); yield(); Map.AlliesNearDockAAGun = 0; Util.RandomSpawn(TEAM.ALLIES, 3); Util.MapDebugPrint( "^5Dock_AA_Gun_Destroyed" ); }, Fuel_Tanks_destroyed = function( trigger ) { Wp.SetWaypointFlag( "FuelTank_1", "closed", true ); Wp.SetWaypointFlag( "FuelTank_2", "closed", true ); Wp.SetWaypointFlag( "FuelTank_3", "closed", true ); Wp.SetWaypointFlag( "FuelTank_4", "closed", true ); Wp.SetWaypointFlag( "FuelTank_5", "closed", true ); Wp.SetWaypointFlag( "FuelTank_6", "closed", true ); Wp.SetWaypointFlag( "FuelTank_7", "closed", true ); Wp.SetWaypointFlag( "FuelTank_8", "closed", true ); Wp.SetWaypointFlag( "FuelTank_9", "closed", true ); Wp.SetWaypointFlag( "FuelTank_10", "closed", true ); Wp.SetWaypointFlag( "FuelTank_11", "closed", true ); Wp.SetWaypointFlag( "FuelTank_12", "closed", true ); Wp.SetWaypointFlag( "FuelTank_13", "closed", true ); Wp.SetWaypointFlag( "FuelTank_14", "closed", true ); Wp.SetWaypointFlag( "FuelTank_15", "closed", true ); Wp.SetWaypointFlag( "FuelTank_16", "closed", true ); SetAvailableMapGoals( TEAM.AXIS, false, "GRENADE_Fuel_Tanks" ); Util.MapDebugPrint( "^5Fuel_Tanks_destroyed" ); }, East_AA_Gun_Planted = function( trigger ) { Map.East_AA_Gun_Dyno += 1; if ( Map.Dock_AA_Gun ) { Util.SetRoleForGoals( "DEFUSE_East_AA_Gun_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } ); } else { Util.SetRoleForGoals( "DEFUSE_East_AA_Gun_.*", { ROLE.DEFENDER, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); } Util.MapDebugPrint( "^5East_AA_Gun_Planted" ); }, East_AA_Gun_Defused = function( trigger ) { Map.East_AA_Gun_Dyno -= 1; Util.MapDebugPrint( "^5East_AA_Gun_Defused" ); }, East_AA_Gun_Destroyed = function( trigger ) { if ( Map.East_AA_Gun_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_East_AA_Gun_.*" ); } Map.East_AA_Gun_Dyno = 0; Map.East_AA_Gun = false; Map.NumberOfCompletedTasks += 1; if ( Map.NumberOfCompletedTasks == 3 ) { Map.Allies_Win = true; sleep(1); ETUtil.WinningChat( TEAM.ALLIES ); sleep(1.5); ETUtil.LosingChat( TEAM.AXIS ); Util.MapDebugPrint( "^5Allies win" ); } SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_EastAAGun_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, { "PLANT_East_AA_Gun", "ATTACK_Allies_EastAAGun_.*", }); if ( !Map.West_AA_Gun ) { DeleteTriggerRegion("Allies_Near_AA_Guns"); DeleteTriggerRegion("Trigger_AlliesIn_BunkerSewer"); DeleteTriggerRegion("Trigger_AlliesIn_CourtyardSewer"); yield(); Map.AlliedEngsNearAAGuns = 0; Map.AlliesNearAAGuns = 0; Map.AlliesInBunkerSewer = 0; Map.AlliesInCourtyardSewer = 0; if ( Map.Dock_AA_Gun ) { Util.SetMaxUsers( 2, "DEFEND_Axis_Second_DockArea_.*" ); Util.SetMaxUsers( 2, "DEFEND_Axis_First_DockArea_.*" ); Util.SetMaxUsers( 2, "DEFEND_Axis_DockAAGun_.*" ); Util.SetRoleForGoals( "DEFEND_Axis_Second_DockArea_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); Util.SetRoleForGoals( "DEFEND_Axis_First_DockArea_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); Util.SetRoleForGoals( "DEFEND_Axis_DockAAGun_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); Util.SetMaxUsers( 2, "ATTACK_Allies_DockAAGun_.*" ); Util.SetRoleForGoals( "PLANT_Dock_AA_Gun", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); Util.SetRoleForGoals( "ATTACK_Allies_DockAAGun_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); } if ( Map.Courtyard_Sewer_Grate ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_CourtyardSewerGrate_.*" ); } if ( Map.Axis_Bunker_Sewer_Grate ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_BunkerSewerGrate_.*" ); } if ( !Map.Axis_Inner_Blockade ) { SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_Inner_Blockade" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, { "REPAIRMG42_axis_inner_blockade_mg42", "MOUNTMG42_axis_inner_blockade_mg42", }); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Axis_Inner_Blockade" ); } } else { Util.SetMaxUsers( 2, "DEFEND_Axis_WestAAGun_.*" ); Util.SetMaxUsers( 2, "ATTACK_Allies_WestAAGun_.*" ); Util.SetRoleForGoals( "DEFEND_Axis_WestAAGun_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } ); Util.SetRoleForGoals( "ATTACK_Allies_WestAAGun_.*", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); } Util.MapDebugPrint( "^5East_AA_Gun_Destroyed" ); }, West_AA_Gun_Planted = function( trigger ) { Map.West_AA_Gun_Dyno += 1; if ( Map.Dock_AA_Gun ) { Util.SetRoleForGoals( "DEFUSE_East_AA_Gun_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } ); } else { Util.SetRoleForGoals( "DEFUSE_East_AA_Gun_.*", { ROLE.DEFENDER, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); } Util.MapDebugPrint( "^5West_AA_Gun_Planted" ); }, West_AA_Gun_Defused = function( trigger ) { Map.West_AA_Gun_Dyno -= 1; Util.MapDebugPrint( "^5West_AA_Gun_Defused" ); }, West_AA_Gun_Destroyed = function( trigger ) { if ( Map.West_AA_Gun_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_West_AA_Gun_.*" ); } Map.West_AA_Gun_Dyno = 0; Map.West_AA_Gun = false; Map.NumberOfCompletedTasks += 1; if ( Map.NumberOfCompletedTasks == 3 ) { Map.Allies_Win = true; sleep(1); ETUtil.WinningChat( TEAM.ALLIES ); sleep(1.5); ETUtil.LosingChat( TEAM.AXIS ); Util.MapDebugPrint( "^5Allies win" ); } SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_WestAAGun_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, { "PLANT_West_AA_Gun", "ATTACK_Allies_WestAAGun_.*", }); DeleteTriggerRegion("Allies_Near_West_AA_Gun"); yield(); Map.AlliesNearWestAAGuns = 0; if ( !Map.East_AA_Gun ) { DeleteTriggerRegion("Allies_Near_AA_Guns"); DeleteTriggerRegion("Trigger_AlliesIn_BunkerSewer"); DeleteTriggerRegion("Trigger_AlliesIn_CourtyardSewer"); yield(); Map.AlliedEngsNearAAGuns = 0; Map.AlliesNearAAGuns = 0; Map.AlliesInBunkerSewer = 0; Map.AlliesInCourtyardSewer = 0; if ( Map.Dock_AA_Gun ) { Util.SetMaxUsers( 2, "DEFEND_Axis_Second_DockArea_.*" ); Util.SetMaxUsers( 2, "DEFEND_Axis_First_DockArea_.*" ); Util.SetMaxUsers( 2, "DEFEND_Axis_DockAAGun_.*" ); Util.SetRoleForGoals( "DEFEND_Axis_Second_DockArea_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); Util.SetRoleForGoals( "DEFEND_Axis_First_DockArea_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); Util.SetRoleForGoals( "DEFEND_Axis_DockAAGun_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); Util.SetMaxUsers( 2, "ATTACK_Allies_DockAAGun_.*" ); Util.SetRoleForGoals( "PLANT_Dock_AA_Gun", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); Util.SetRoleForGoals( "ATTACK_Allies_DockAAGun_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); } if ( Map.Courtyard_Sewer_Grate ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_CourtyardSewerGrate_.*" ); } if ( Map.Axis_Bunker_Sewer_Grate ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_BunkerSewerGrate_.*" ); } if ( !Map.Axis_Inner_Blockade ) { SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_Inner_Blockade" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, { "REPAIRMG42_axis_inner_blockade_mg42", "MOUNTMG42_axis_inner_blockade_mg42", }); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Axis_Inner_Blockade" ); } } else { Util.SetMaxUsers( 2, "DEFEND_Axis_EastAAGun_.*" ); Util.SetMaxUsers( 2, "ATTACK_Allies_EastAAGun_.*" ); Util.SetRoleForGoals( "DEFEND_Axis_EastAAGun_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } ); Util.SetRoleForGoals( "ATTACK_Allies_EastAAGun_.*", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); } Util.MapDebugPrint( "^5West_AA_Gun_Destroyed" ); }, Thirty_second = function( trigger ) { Util.MapDebugPrint( "^5Thirty_second" ); sleep(30); if ( !Map.Allies_Win ) { Util.MapDebugPrint( "^5Axis_Win" ); sleep(1); ETUtil.WinningChat( TEAM.AXIS ); sleep(1.5); ETUtil.LosingChat( TEAM.ALLIES ); } }, Apartment_Complex_Door_1_Exploded = function( trigger ) { Map.ApartmentComplexDoor1Exploded = true; SetAvailableMapGoals( 0, false, "GRENADE_Apartment_Complex_Door_1_.*" ); if ( !Map.Axis_Outer_Blockade ) { Util.EnableGoal( "ROUTE_Past_OuterBlockade_L" ); Util.EnableGoal( "ROUTE_Garden_Church_Door" ); Util.EnableGoal( "ROUTE_Garden_Apartment_Door_1" ); } Util.MapDebugPrint( "^5Apartment_Complex_Door_1_Exploded" ); }, Apartment_Complex_Door_2_Exploded = function( trigger ) { Map.ApartmentComplexDoor2Exploded = true; SetAvailableMapGoals( 0, false, "GRENADE_Apartment_Complex_Door_2_.*" ); Util.MapDebugPrint( "^5Apartment_Complex_Door_2_Exploded" ); }, Church_Alley_Door_Exploded = function( trigger ) { Map.ChurchAlleyDoorExploded = true; SetAvailableMapGoals( 0, false, "GRENADE_Church_Alley_Door_.*" ); if ( !Map.Axis_Outer_Blockade ) { Util.EnableGoal( "ROUTE_Past_OuterBlockade_R" ); Util.EnableGoal( "ROUTE_Church_Door" ); Util.EnableGoal( "ROUTE_Church_AleyDoor" ); } Util.MapDebugPrint( "^5Church_Alley_Door_Exploded" ); }, Allies_Inside_First = { Name = "Allies_Inside_First", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesInsideFirst += 1; if ( Map.AlliesInsideSecond == 0 ) { foreach ( id and bot in BotTable ) { if ( bot.HasRole(ROLE.DEFENDER) ) { bot.ChangeSpawnPoint(4); } } if ( !Map.Hotel_Gate ) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_HotelGate_.*" ); } SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_MainGates_.*", ".*_Axis_OuterBlockade_CP_.*", ".*_Axis_OuterBlockade_R_.*", }); if ( Map.Tank ) { SetAvailableMapGoals( TEAM.AXIS, true, "MOUNT_Tank" ); } else { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Tank" ); } if ( !Map.Hotel_Gate ) { if ( Map.Dock_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_First_DockArea_.*" ); } } if ( Map.West_AA_Gun or Map.East_AA_Gun ) { if ( !Map.Axis_Inner_Blockade ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_Inner_Blockade" ); } SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_First_CPArea_.*", "DEFEND_Axis_First_OuterBlockadeCP_.*", "DEFEND_Axis_First_OuterBlockadeR_.*", }); } Util.MapDebugPrint( "^5Allies entered into first trigger" ); } } }, OnExit = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesInsideFirst -= 1; if ( Map.AlliesInsideFirst == 0 ) { foreach ( id and bot in BotTable ) { if ( bot.HasRole(ROLE.DEFENDER) ) { bot.ChangeSpawnPoint(1); } } if ( Map.Tank ) { SetAvailableMapGoals( TEAM.AXIS, false, "MOUNT_Tank" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Tank" ); } SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_Axis_First_DockArea_.*", "DEFEND_Axis_First_CPArea_.*", "DEFEND_Axis_First_OuterBlockadeCP_.*", "DEFEND_Axis_First_OuterBlockadeR_.*", }); if ( !Map.Axis_Inner_Blockade ) { SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_Inner_Blockade" ); } if ( Map.Dock_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_HotelGate_.*" ); } SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_MainGates_.*", ".*_Axis_OuterBlockade_CP_.*", ".*_Axis_OuterBlockade_R_.*", }); Util.MapDebugPrint( "^5Allies in first trigger = 0" ); } } }, }, Allies_Inside_Second = { Name = "Allies_Inside_Second", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesInsideSecond += 1; if ( Map.AlliesNearDockAAGun == 0 and Map.AlliesNearAAGuns == 0 ) { if ( Map.Hotel_Gate ) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_HotelGate_.*" ); } SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_Axis_First_DockArea_.*", "DEFEND_Axis_First_CPArea_.*", "DEFEND_Axis_First_OuterBlockadeCP_.*", "DEFEND_Axis_First_OuterBlockadeR_.*", }); foreach ( id and bot in BotTable ) { if ( bot.HasRole(ROLE.DEFENDER2) ) { bot.ChangeSpawnPoint(4); } } if ( Map.Dock_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Second_DockArea_.*" ); } SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Second_CPArea_.*" ); if ( Map.West_AA_Gun or Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_Second_BunkerSewGr_.*", "DEFEND_Axis_Second_CourtyardSewGr_.*", }); if ( Map.Axis_Inner_Blockade ) { SetAvailableMapGoals( TEAM.AXIS, true, { "REPAIRMG42_axis_inner_blockade_mg42", "MOUNTMG42_axis_inner_blockade_mg42", }); } } if ( !Map.ApartmentComplexDoor1Exploded ) { SetAvailableMapGoals( TEAM.AXIS, true, "GRENADE_Apartment_Complex_Door_1.*" ); } if ( !Map.ApartmentComplexDoor2Exploded ) { SetAvailableMapGoals( TEAM.AXIS, true, "GRENADE_Apartment_Complex_Door_2.*" ); } Util.MapDebugPrint( "^5Allies entered into second trigger" ); } } }, OnExit = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesInsideSecond -= 1; if ( Map.AlliesInsideSecond == 0 ) { foreach ( id and bot in BotTable ) { if ( bot.HasRole(ROLE.DEFENDER2) ) { bot.ChangeSpawnPoint(1); } } SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_Axis_Second_DockArea_.*", "DEFEND_Axis_Second_CPArea_.*", "DEFEND_Axis_Second_BunkerSewGr_.*", "DEFEND_Axis_Second_CourtyardSewGr_.*", }); if ( Map.Axis_Inner_Blockade ) { SetAvailableMapGoals( TEAM.AXIS, false, { "REPAIRMG42_axis_inner_blockade_mg42", "MOUNTMG42_axis_inner_blockade_mg42", }); } if ( Map.Hotel_Gate ) { if ( Map.Dock_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_HotelGate_.*" ); } } if ( Map.AlliesInsideFirst > 0 ) { if ( Map.Dock_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_First_DockArea_.*" ); } SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_First_CPArea_.*" ); if ( Map.West_AA_Gun or Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_First_OuterBlockadeCP_.*", "DEFEND_Axis_First_OuterBlockadeR_.*", }); } } Util.MapDebugPrint( "^5Allies in second trigger = 0" ); } } }, }, Allies_Near_Dock_AAGun = { Name = "Allies_Near_Dock_AAGun", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesNearDockAAGun += 1; SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_Second_DockArea_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_DockAAGun_.*" ); Util.MapDebugPrint( "^5Allies entered into Dock AA Gun trigger" ); } }, OnExit = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesNearDockAAGun -= 1; if ( Map.AlliesNearDockAAGun == 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_DockAAGun_.*" ); if ( Map.AlliesInsideSecond > 0 ) { if ( Map.Dock_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Second_DockArea_.*" ); } } Util.MapDebugPrint( "^5Allies in Dock AA Gun trigger = 0" ); } } }, }, Allies_Near_AA_Guns = { Name = "Allies_Near_AA_Guns", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesNearAAGuns += 1; if( GetEntClass(ent) == CLASS.ENGINEER ) { Map.AlliedEngsNearAAGuns += 1; } foreach ( id and bot in BotTable ) { if ( bot.HasRole(ROLE.DEFENDER3) ) { bot.ChangeSpawnPoint(4); } } SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_Axis_Second_BunkerSewGr_.*", "DEFEND_Axis_Second_CourtyardSewGr_.*", }); if ( !Map.ApartmentComplexDoor1Exploded ) { SetAvailableMapGoals( TEAM.AXIS, false, "GRENADE_Apartment_Complex_Door_1.*" ); } if ( !Map.ApartmentComplexDoor2Exploded ) { SetAvailableMapGoals( TEAM.AXIS, false, "GRENADE_Apartment_Complex_Door_2.*" ); } if ( Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_EastAAGun_.*" ); } if ( Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_WestAAGun_.*" ); } if ( Map.AlliesNearWestAAGuns == 0 ) { if ( Map.East_AA_Gun or Map.West_AA_Gun ) { if ( !Map.Axis_Bunker_Sewer_Grate ) { SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_Help_EastAAGun_01", "DEFEND_Axis_Help_EastAAGun_02", }); } if ( !Map.Courtyard_Sewer_Grate ) { SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_Help_EastAAGun_03", "DEFEND_Axis_Help_EastAAGun_04", }); } } } Util.MapDebugPrint( "^5Allies entered into Guns trigger" ); } }, OnExit = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesNearAAGuns -= 1; if( GetEntClass(ent) == CLASS.ENGINEER ) { Map.AlliedEngsNearAAGuns -= 1; } if ( Map.AlliedEngsNearAAGuns == 0 ) { if ( Map.Axis_Bunker_Sewer_Grate and Map.Courtyard_Sewer_Grate and Map.Axis_Bunker_Controlpanel ) { if ( Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_East_AA_Gun" ); } if ( Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_West_AA_Gun" ); } } } if ( Map.AlliesNearAAGuns == 0 ) { if ( Map.Axis_Bunker_Sewer_Grate and Map.Courtyard_Sewer_Grate and Map.Axis_Bunker_Controlpanel ) { if ( Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_EastAAGun_.*" ); } if ( Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_WestAAGun_.*" ); } SetAvailableMapGoals( TEAM.ALLIES, false, "GRENADE_Axis_Bunker_Controlpanel" ); } if ( Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_EastAAGun_.*" ); } if ( Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_WestAAGun_.*" ); } SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_Help_EastAAGun_.*" ); foreach ( id and bot in BotTable ) { if ( bot.HasRole(ROLE.DEFENDER3) ) { bot.ChangeSpawnPoint(1); } } if ( Map.AlliesInsideSecond > 0 ) { if ( Map.West_AA_Gun or Map.East_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_Second_BunkerSewGr_.*", "DEFEND_Axis_Second_CourtyardSewGr_.*", }); } if ( !Map.ApartmentComplexDoor1Exploded ) { SetAvailableMapGoals( TEAM.AXIS, true, "GRENADE_Apartment_Complex_Door_1.*" ); } if ( !Map.ApartmentComplexDoor2Exploded ) { SetAvailableMapGoals( TEAM.AXIS, true, "GRENADE_Apartment_Complex_Door_2.*" ); } } Util.MapDebugPrint( "^5Allies in Guns trigger = 0" ); } } }, }, Allies_Near_West_AA_Gun = { Name = "Allies_Near_West_AA_Gun", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesNearWestAAGuns += 1; SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_Help_EastAAGun_.*" ); Util.MapDebugPrint( "^5Allies entered into West Gun trigger" ); } }, OnExit = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesNearWestAAGuns -= 1; if ( Map.AlliesNearWestAAGuns == 0 ) { if ( Map.AlliesNearAAGuns > 0 ) { if ( Map.West_AA_Gun or Map.East_AA_Gun ) { if ( !Map.Axis_Bunker_Sewer_Grate ) { SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_Help_EastAAGun_01", "DEFEND_Axis_Help_EastAAGun_02", }); } if ( !Map.Courtyard_Sewer_Grate ) { SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_Help_EastAAGun_03", "DEFEND_Axis_Help_EastAAGun_04", }); } } } Util.MapDebugPrint( "^5Allies in West Gun trigger = 0" ); } } }, }, Trigger_AlliesIn_BunkerSewer = { Name = "Trigger_AlliesIn_BunkerSewer", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesInBunkerSewer += 1; if ( Map.East_AA_Gun or Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_AAGuns_01", "DEFEND_Axis_AAGuns_02", }); } Util.MapDebugPrint( "^5Allies entered into Bunker Sewer" ); } }, OnExit = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesInBunkerSewer -= 1; if ( Map.AlliesInBunkerSewer == 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_Axis_AAGuns_01", "DEFEND_Axis_AAGuns_02", }); Util.MapDebugPrint( "^5Allies in Bunker Sewer trigger = 0" ); } } }, }, Trigger_AlliesIn_CourtyardSewer = { Name = "Trigger_AlliesIn_CourtyardSewer", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesInCourtyardSewer += 1; if ( Map.East_AA_Gun or Map.West_AA_Gun ) { SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_AAGuns_03", "DEFEND_Axis_AAGuns_04", }); } Util.MapDebugPrint( "^5Allies entered into Courtyard Sewer" ); } }, OnExit = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AlliesInCourtyardSewer -= 1; if ( Map.AlliesInCourtyardSewer == 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_Axis_AAGuns_03", "DEFEND_Axis_AAGuns_04", }); Util.MapDebugPrint( "^5Allies in Courtyard Sewer trigger = 0" ); } } }, }, }; Map.WatchTankStatus = function() { goal = GetGoal( "MOVER_tank" ); entity = goal.GetEntity(); Util.MapDebugPrint("^5Tank thread started", true); while ( 1 ) { if(GetEntFlags(GetGoal("MOVER_tank").GetEntity(), ENTFLAG.DEAD)) { if ( Map.Tank ) { Map.Tank = false; SetAvailableMapGoals( TEAM.AXIS, false, "MOUNT_Tank" ); if ( Map.AlliesInsideFirst > 0 ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Tank" ); } Util.MapDebugPrint("^5Tank_Destroyed" ); } } else { if ( !Map.Tank ) { Map.Tank = true; SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Tank" ); if ( Map.AlliesInsideFirst > 0 ) { SetAvailableMapGoals( TEAM.AXIS, true, "MOUNT_Tank" ); } Util.MapDebugPrint("^5Tank_Repaired" ); } } yield(); } }; /* Commands["botsgoals"] = function(_params) //only for testing roles (thx. Palota) => called at the end of OnMapLoad { foreach (team in TEAM) { foreach (class in Util.PlayerClassTable) { foreach ( bot in BotTable ) { if(bot.GetClass()==class && bot.GetTeam()==team) { s=""; foreach ( id and role in ROLE ) { if(bot.HasRole(role)) { s= s + " " + id; } } goal=bot.GetMapGoalName(); if(!goal) { goal=bot.GetHighLevelGoalName(); } if(!goal) { goal = ""; } print(Util.TeamName(team) + " " + Util.ClassName(class) + s + ": " + goal); } } } } }; */ global OnMapLoad = function() { OnTrigger( "the Allied tower has been constructed.", Map.tower_Built ); OnTrigger( "Planted at tower.", Map.tower_Planted ); OnTrigger( "Defused at tower.", Map.tower_Defused ); OnTrigger( "the Allied Tower has been destroyed.", Map.tower_Destroyed ); OnTrigger( "Planted at Axis Main Gates.", Map.Axis_Main_Gates_Planted ); OnTrigger( "Defused at Axis Main Gates.", Map.Axis_Main_Gates_Defused ); OnTrigger( "the Axis Road Gates have been destroyed.", Map.Axis_Main_Gates_Destroyed ); OnTrigger( "the Alley Wall has been destroyed.", Map.Alley_Wall_Destroyed ); OnTrigger( "the Axis Outer Blockade has been constructed.", Map.Axis_Outer_Blockade_Built ); OnTrigger( "Planted at Axis Outer Blockade.", Map.Axis_Outer_Blockade_Planted ); OnTrigger( "Defused at Axis Outer Blockade.", Map.Axis_Outer_Blockade_Defused ); OnTrigger( "the Axis Outer Blockade has been damaged.", Map.Axis_Outer_Blockade_Destroyed ); OnTrigger( "Planted at Hotel Gate.", Map.Hotel_Gate_Planted ); OnTrigger( "Defused at Hotel Gate.", Map.Hotel_Gate_Defused ); OnTrigger( "the Hotel Gate has been destroyed.", Map.Hotel_Gate_Destroyed ); OnTrigger( "the Axis Inner Blockade has been constructed.", Map.Axis_Inner_Blockade_Built ); OnTrigger( "Planted at Axis Inner Blockade.", Map.Axis_Inner_Blockade_Planted ); OnTrigger( "Defused at Axis Inner Blockade.", Map.Axis_Inner_Blockade_Defused ); OnTrigger( "the Axis Inner Blockade has been damaged.", Map.Axis_Inner_Blockade_Destroyed ); OnTrigger( "allies_hq_compost_constructed", Map.Allied_Command_Post_Built ); OnTrigger( "axis_hq_compost_constructed", Map.Axis_Command_Post_Built ); OnTrigger( "Planted at the Command Post.", Map.Command_Post_Planted ); OnTrigger( "Planted at Command Post.", Map.Command_Post_Planted ); //Nitmod OnTrigger( "Defused at the Command Post.", Map.Command_Post_Defused ); OnTrigger( "Defused at Command Post.", Map.Command_Post_Defused ); //Nitmod OnTrigger( "Axis team has destroyed the Allied Command Post!", Map.Allied_Command_Post_Destroyed ); OnTrigger( "Allied team has destroyed the Axis Command Post!", Map.Axis_Command_Post_Destroyed ); OnTrigger( "Planted at Axis Bunker Sewer Grate.", Map.Axis_Bunker_Sewer_Grate_Planted ); OnTrigger( "Defused at Axis Bunker Sewer Grate.", Map.Axis_Bunker_Sewer_Grate_Defused ); OnTrigger( "the Sewer Grate has been destroyed.", Map.Axis_Bunker_Sewer_Grate_Destroyed ); OnTrigger( "Planted at Courtyard Sewer Grate.", Map.Courtyard_Sewer_Grate_Planted ); OnTrigger( "Defused at Courtyard Sewer Grate.", Map.Courtyard_Sewer_Grate_Defused ); OnTrigger( "the Courtyard Sewer Grate has been destroyed.", Map.Courtyard_Sewer_Grate_Destroyed ); OnTrigger( "the Axis Door Controls have been repaired. The Axis have control of the", Map.Axis_Bunker_Controlpanel_Built ); OnTrigger( "the Axis Door Controls have been damaged. The Axis have lost the Bunker", Map.Axis_Bunker_Controlpanel_Destroyed ); OnTrigger( "Planted at Dock AA-Gun.", Map.Dock_AA_Gun_Planted ); OnTrigger( "Defused at Dock AA-Gun.", Map.Dock_AA_Gun_Defused ); OnTrigger( "Dock AA-Gun Destroyed.", Map.Dock_AA_Gun_Destroyed ); OnTrigger( "Planted at East AA-Gun.", Map.East_AA_Gun_Planted ); OnTrigger( "Defused at East AA-Gun.", Map.East_AA_Gun_Defused ); OnTrigger( "East AA-Gun Destroyed.", Map.East_AA_Gun_Destroyed ); OnTrigger( "Planted at West AA-Gun.", Map.West_AA_Gun_Planted ); OnTrigger( "Defused at West AA-Gun.", Map.West_AA_Gun_Defused ); OnTrigger( "West AA-Gun Destroyed.", Map.West_AA_Gun_Destroyed ); OnTrigger( "thirty second warning.", Map.Thirty_second ); OnTrigger( "GRENADE_Apartment_Complex_Door_1_Outside Exploded.", Map.Apartment_Complex_Door_1_Exploded ); OnTrigger( "GRENADE_Apartment_Complex_Door_2_Outside Exploded.", Map.Apartment_Complex_Door_2_Exploded ); OnTrigger( "GRENADE_Church_Alley_Door_Inside Exploded.", Map.Church_Alley_Door_Exploded ); OnTrigger( "the Fuel Tanks have been destroyed.", Map.Fuel_Tanks_destroyed ); Util.RemoveGoal( "BUILD_Axis_Bunker_Sewer_Grate" ); Util.RemoveGoal( "BUILD_Axis_Main_Gates" ); Util.RemoveGoal( "BUILD_Courtyard_Sewer_Grate" ); Util.RemoveGoal( "BUILD_Hotel_Gate" ); Util.RemoveGoal( "EXPLODE_Axis_Bunker_Controlpanel" ); Wp.SetWaypointFlag( "tower", "closed", true ); Wp.SetWaypointFlag( "Hotel_Gate_1", "door", true ); Wp.SetWaypointFlag( "Hotel_Gate_2", "door", true ); Wp.SetWaypointFlag( "Hotel_Gate_1", "axis", true ); Wp.SetWaypointFlag( "Hotel_Gate_2", "axis", true ); Wp.SetWaypointFlag( "Axis_Inner_Blockade_1", "closed", false ); Wp.SetWaypointFlag( "Axis_Inner_Blockade_2", "closed", false ); Wp.SetWaypointFlag( "Door_1", "door", true ); Wp.SetWaypointFlag( "Door_2", "door", true ); Wp.SetWaypointFlag( "Door_3", "door", true ); Wp.SetWaypointFlag( "Door_4", "door", true ); Wp.SetWaypointFlag( "Door_1", "axis", true ); Wp.SetWaypointFlag( "Door_2", "axis", true ); Wp.SetWaypointFlag( "Door_3", "axis", true ); Wp.SetWaypointFlag( "Door_4", "axis", true ); Wp.SetWaypointFlag( "Axis_Bunker_Sewer_Grate", "closed", true ); Wp.SetWaypointFlag( "Courtyard_Sewer_Grate", "closed", true ); Wp.SetWaypointFlag( "FuelTank_1", "closed", false ); Wp.SetWaypointFlag( "FuelTank_2", "closed", false ); Wp.SetWaypointFlag( "FuelTank_3", "closed", false ); Wp.SetWaypointFlag( "FuelTank_4", "closed", false ); Wp.SetWaypointFlag( "FuelTank_5", "closed", false ); Wp.SetWaypointFlag( "FuelTank_6", "closed", false ); Wp.SetWaypointFlag( "FuelTank_7", "closed", false ); Wp.SetWaypointFlag( "FuelTank_8", "closed", false ); Wp.SetWaypointFlag( "FuelTank_9", "closed", false ); Wp.SetWaypointFlag( "FuelTank_10", "closed", false ); Wp.SetWaypointFlag( "FuelTank_11", "closed", false ); Wp.SetWaypointFlag( "FuelTank_12", "closed", false ); Wp.SetWaypointFlag( "FuelTank_13", "closed", false ); Wp.SetWaypointFlag( "FuelTank_14", "closed", false ); Wp.SetWaypointFlag( "FuelTank_15", "closed", false ); Wp.SetWaypointFlag( "FuelTank_16", "closed", false ); Util.AddUseWp( "PLANT_Hotel_Gate", "Hotel_Gate_Plant_WP" ); Util.AddUseWp( "PLANT_Dock_AA_Gun", "Dock_AA-Gun_Plant_WP" ); Util.AddUseWp( "PLANT_East_AA_Gun", "East_AA-Gun_Plant_WP" ); Util.AddUseWp( "PLANT_West_AA_Gun", "West_AA-Gun_Plant_WP" ); Util.AddUseWp( "PLANT_Courtyard_Sewer_Grate", "PLANT_Courtyard_Sewer_Grate_Wp" ); Util.AddUseWp( "BUILD_Axis_Inner_Blockade", "build_AxisInnerBlockade_Wp" ); Util.DisableGoal( ".*", true ); Util.ClearRoleForGoals( ".*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); Util.ClearRoleForGoals( ".*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); SetAvailableMapGoals( 0, true, { "AMMOCAB_.*", "HEALTHCAB_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_HotelGate_.*", ".*_Axis_MainGates_.*", ".*_Axis_OuterBlockade_CP_.*", ".*_Axis_OuterBlockade_R_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_tower", "PLANT_Axis_Main_Gates", "GRENADE_Axis_Outer_Blockade", "GRENADE_Alley_Wall", "AMMOCAB_south_ammocabinet_1", "HEALTHCAB_south_healthcabinet_1", "CAMP_Allies_AlleyWall_.*", ".*_Allies_MainGates_.*", ".*_Allies_OuterBlockade_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Axis_Outer_Blockade" ); GetGoal("MOBILEMORTAR_Axis_HotelGate_10").MortarAim = { Vec3(-0.372, 0.928, -0.002) }; SetGoalPriority( "PLANT_Command_Post", 0.55, 0, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Command_Post", 0.8, 0, CLASS.COVERTOPS ); //more important is plant Sewer Grates because CP spawn does not work SetGoalPriority( "DEFUSE_Axis_Inner_Blockade_.*", 0.56, TEAM.AXIS, 0, true ); SetGoalPriority( "BUILD_Axis_Inner_Blockade", 0.56, TEAM.AXIS, 0 ); SetGoalPriority( "REPAIRMG42_axis_inner_blockade_mg42", 0.55, TEAM.AXIS, 0 ); SetGoalPriority( "MOUNTMG42_axis_inner_blockade_mg42", 0.55, TEAM.AXIS, 0 ); SetGoalPriority( "BUILD_Command_Post", 0.55, TEAM.AXIS, 0 ); SetGoalPriority( "BUILD_Tank", 0.54, TEAM.AXIS, 0 ); SetGoalPriority( "MOUNT_Tank", 0.53, TEAM.AXIS, 0 ); SetGoalPriority( "MOBILEMORTAR_Axis_HotelGate_10", 0.53, TEAM.AXIS, 0 ); SetGoalPriority( "AIRSTRIKE_Axis_MainGates_10", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "AIRSTRIKE_Axis_OuterBlockade_.*", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_First_DockArea_.*", 0.52, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_First_CPArea_.*", 0.52, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_First_OuterBlockadeCP_.*", 0.52, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_First_OuterBlockadeR_.*", 0.52, TEAM.AXIS, 0 ); SetGoalPriority( "ATTACK_Axis_CP_.*", 0.55, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Second_DockArea_.*", 0.54, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Second_CPArea_.*", 0.54, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Second_BunkerSewGr_.*", 0.54, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Second_CourtyardSewGr_.*", 0.54, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Second_CourtyardSewGr_06", 0.55, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Forced_BunkerSewGr_.*", 0.54, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Forced_BunkerSewGr_02", 0.56, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Forced_BunkerSewGr_01", 0.57, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Forced_CourtyardSewGr_.*", 0.54, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Forced_CourtyardSewGr_02", 0.55, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_DockAAGun_.*", 0.6, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_DockAAGun_03", 0.61, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_DockAAGun_06", 0.61, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_WestAAGun_.*", 0.6, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_WestAAGun_07", 0.61, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_WestAAGun_08", 0.61, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_EastAAGun_.*", 0.6, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_EastAAGun_05", 0.61, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_EastAAGun_08", 0.61, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_AAGuns_.*", 0.62, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Help_EastAAGun_.*", 0.62, TEAM.AXIS, 0 ); SetGoalPriority( "ATTACK_Allies_CP_.*", 0.52, TEAM.ALLIES, 0 ); SetGoalPriority( "ATTACK_Allies_BunkerSewerGrate_.*", 0.51, TEAM.ALLIES, 0 ); SetGoalPriority( "ATTACK_Allies_CourtyardSewerGrate_.*", 0.51, TEAM.ALLIES, 0 ); SetGoalPriority( "PLANT_Axis_Inner_Blockade", 0.7, TEAM.ALLIES, 0 ); SetGoalPriority( "PLANT_Axis_Bunker_Sewer_Grate", 0.82, TEAM.ALLIES, 0 ); SetGoalPriority( "PLANT_Courtyard_Sewer_Grate", 0.82, TEAM.ALLIES, 0 ); NP1 = OnTriggerRegion(AABB(1598.959,-100.831,-558.875,1825.753,54.053,-260.875), RegionTrigger.DisableBotPush); //Car under CP DCM1 = OnTriggerRegion(AABB(1598.959,-100.831,-558.875,1825.753,54.053,-260.875), RegionTrigger.DisableCombatMovement); NP2 = OnTriggerRegion(AABB(1698.365,-2856.785,-398.875,1808.279,-1974.924,-74.425), RegionTrigger.DisableBotPush); //jump to guns DCM2 = OnTriggerRegion(AABB(1698.365,-2856.785,-398.875,1808.279,-1974.924,-74.425), RegionTrigger.DisableCombatMovement); NP3 = OnTriggerRegion(AABB(2294.875,-1386.875,-530.875,2485.205,-1255.125,-236.875), RegionTrigger.DisableBotPush); //jump to guns DCM3 = OnTriggerRegion(AABB(2294.875,-1386.875,-530.875,2485.205,-1255.125,-236.875), RegionTrigger.DisableCombatMovement); NP4 = OnTriggerRegion(AABB(327.126,-14.595,-500.875,386.059,88.874,-407.541), RegionTrigger.DisableBotPush); //DEFEND_Axis_First_CPArea_04 DCM4 = OnTriggerRegion(AABB(327.126,-14.595,-500.875,386.059,88.874,-407.541), RegionTrigger.DisableCombatMovement); NP5 = OnTriggerRegion(AABB(-1077.426,-2280.875,-534.875,-1005.812,-2226.093,-460.875), RegionTrigger.DisableBotPush); //Boxes near Dock AA Gun DCM5 = OnTriggerRegion(AABB(-1077.426,-2280.875,-534.875,-1005.812,-2226.093,-460.875), RegionTrigger.DisableCombatMovement); NP6 = OnTriggerRegion(AABB(2151.127,-1686.209,-458.875,2215.953,-1602.068,-356.261), RegionTrigger.DisableBotPush); //ATTACK_Allies_BunkerSewerGrate_03 DCM6 = OnTriggerRegion(AABB(2151.127,-1686.209,-458.875,2215.953,-1602.068,-356.261), RegionTrigger.DisableCombatMovement); NP7 = OnTriggerRegion(AABB(1183.125,-1259.238,-406.875,1656.875,-1181.307,-224.101), RegionTrigger.DisableBotPush); //DEFEND_Axis_Second_CPArea_05 DCM7 = OnTriggerRegion(AABB(1183.125,-1259.238,-406.875,1656.875,-1181.307,-224.101), RegionTrigger.DisableCombatMovement); NP8 = OnTriggerRegion(AABB(4215.125,447.526,-569.889,4285.160,568.874,-421.000), RegionTrigger.DisableBotPush); //DEFEND_Axis_Second_CourtyardSewGr_01 DCM8 = OnTriggerRegion(AABB(4215.125,447.526,-569.889,4285.160,568.874,-421.000), RegionTrigger.DisableCombatMovement); NP9 = OnTriggerRegion(AABB(-896.103,-1310.221,-603.481,-644.913,-1202.427,-473.613), RegionTrigger.DisableBotPush); //DEFEND_Axis_DockAAGun_09 DCM9 = OnTriggerRegion(AABB(-896.103,-1310.221,-603.481,-644.913,-1202.427,-473.613), RegionTrigger.DisableCombatMovement); NP10 = OnTriggerRegion(AABB(2786.363,-2240.875,-534.875,2841.875,-2135.300,-412.875), RegionTrigger.DisableBotPush); //DEFEND_Axis_AAGuns_01 DCM10 = OnTriggerRegion(AABB(2786.363,-2240.875,-534.875,2841.875,-2135.300,-412.875), RegionTrigger.DisableCombatMovement); NP11 = OnTriggerRegion(AABB(2876.976,-2157.875,-518.875,2992.875,-1993.171,-391.636), RegionTrigger.DisableBotPush); //DEFEND_Axis_AAGuns_02 DCM11 = OnTriggerRegion(AABB(2876.976,-2157.875,-518.875,2992.875,-1993.171,-391.636), RegionTrigger.DisableCombatMovement); NP12 = OnTriggerRegion(AABB(3581.404,-1742.315,-550.875,3619.404,-1704.315,-508.875), RegionTrigger.DisableBotPush); //DEFEND_Axis_AAGuns_03 DCM12 = OnTriggerRegion(AABB(3581.404,-1742.315,-550.875,3619.404,-1704.315,-508.875), RegionTrigger.DisableCombatMovement); NP13 = OnTriggerRegion(AABB(2751.231,-1921.327,-534.875,2789.231,-1883.327,-492.875), RegionTrigger.DisableBotPush); //DEFEND_Axis_Forced_BunkerSewGr_01 DCM13 = OnTriggerRegion(AABB(2751.231,-1921.327,-534.875,2789.231,-1883.327,-492.875), RegionTrigger.DisableCombatMovement); NP14 = OnTriggerRegion(AABB(2753.433,-1970.185,-534.875,2791.433,-1932.185,-484.875), RegionTrigger.DisableBotPush); //DEFEND_Axis_Help_EastAAGun_01 DCM14 = OnTriggerRegion(AABB(2753.433,-1970.185,-534.875,2791.433,-1932.185,-484.875), RegionTrigger.DisableCombatMovement); DCM20 = OnTriggerRegion(AABB(2663.125,-1990.184,-585.529,2820.211,-1874.691,-381.125), RegionTrigger.DisableCombatMovement); //Bunker sewer grate inner exit RegionTrigger.Create(AABB(2215.125,-224.875,-422.874,2357.366,-103.125,58.875), "DisableCombatMovement", "Ladder_In_Tower"); RegionTrigger.Create(AABB(2215.125,-224.875,-422.874,2357.366,-103.125,58.875), "DisableBotPush", ""); Trigger_AlliesInsideFirst = OnTriggerRegion(AABB(-1896.875,-3568.873,-977.851,5456.874,1024.875,165.591), Map.Allies_Inside_First); Trigger_AlliesInsideSecond = OnTriggerRegion(AABB(-1896.875,-3566.105,-998.872,5488.873,-832.629,209.007), Map.Allies_Inside_Second); Trigger_AlliesNearDockAA = OnTriggerRegion(AABB(-1329.341,-2278.773,-646.875,-896.503,-1141.718,-352.987), Map.Allies_Near_Dock_AAGun); Trigger_AlliesNearAAGuns1 = OnTriggerRegion(AABB(2827.411,-2479.197,-630.364,3664.875,-1647.899,-250.719), Map.Allies_Near_AA_Guns); //Around East AA Gun Trigger_AlliesNearAAGuns2 = OnTriggerRegion(AABB(1807.125,-3200.875,-638.875,3712.875,-2479.126,-257.582), Map.Allies_Near_AA_Guns); //Axis CP spawn + Around West AA Gun Trigger_AlliesNearWestAAGun = OnTriggerRegion(AABB(1807.125,-3200.875,-638.875,3712.875,-2479.126,-257.582), Map.Allies_Near_West_AA_Gun); //Axis CP spawn + Around West AA Gun Trigger_AlliesNearAAGuns3 = OnTriggerRegion(AABB(2663.125,-2218.170,-534.875,2828.346,-2016.584,-392.557), Map.Allies_Near_AA_Guns); //Near bunker control panel Trigger_AlliesNearAAGuns4 = OnTriggerRegion(AABB(2649.126,-1864.959,-534.875,2821.343,-1759.125,-386.642), Map.Allies_Near_AA_Guns); //Near bunker control panel Trigger_AlliesInBunkerSewer = OnTriggerRegion(AABB(2535.125,-1932.875,-620.875,2707.058,-1326.912,-577.178), Map.Trigger_AlliesIn_BunkerSewer); Trigger_AlliesInCourtyardSewer = OnTriggerRegion(AABB(3706.334,-1728.875,-606.875,4480.875,-1541.671,-553.337), Map.Trigger_AlliesIn_CourtyardSewer); // Max users per goal Util.SetMaxUsers( 1, "ATTACK_.*" ); Util.SetMaxUsers( 1, "DEFEND_.*" ); Util.SetMaxUsers( 1, "GRENADE_.*" ); Util.SetMaxUsers( 1, "MOUNTMG42_.*" ); Util.SetRoleForGoals( "DEFEND_Axis_HotelGate_.*", ROLE.DEFENDER ); Util.SetRoleForGoals( "DEFEND_Axis_First_DockArea_.*", ROLE.DEFENDER ); Util.SetRoleForGoals( "DEFEND_Axis_Second_DockArea_.*", ROLE.DEFENDER ); Util.SetRoleForGoals( "DEFEND_Axis_DockAAGun_.*", ROLE.DEFENDER ); Util.SetRoleForGoals( "DEFEND_Axis_Forced_BunkerSewGr_.*", ROLE.DEFENDER ); Util.SetRoleForGoals( "DEFEND_Axis_Forced_CourtyardSewGr_.*", ROLE.DEFENDER ); Util.SetRoleForGoals( "DEFEND_Axis_MainGates_.*", ROLE.DEFENDER1 ); Util.SetRoleForGoals( "DEFEND_Axis_First_CPArea_.*", ROLE.DEFENDER1 ); Util.SetRoleForGoals( "ATTACK_Axis_CP_.*", ROLE.DEFENDER1 ); Util.SetRoleForGoals( "MOUNT_Tank", ROLE.DEFENDER1 ); Util.SetRoleForGoals( "BUILD_Tank", ROLE.DEFENDER1 ); Util.SetRoleForGoals( "BUILD_Command_Post", ROLE.DEFENDER1 ); Util.SetRoleForGoals( "PLANT_Command_Post", ROLE.DEFENDER1 ); Util.SetRoleForGoals( "DEFEND_Axis_Second_CPArea_.*", ROLE.DEFENDER1 ); Util.SetRoleForGoals( "MOUNTMG42_axis_inner_blockade_mg42", ROLE.DEFENDER1 ); Util.SetRoleForGoals( "DEFEND_Axis_OuterBlockade_CP_.*", ROLE.DEFENDER2 ); Util.SetRoleForGoals( "DEFEND_Axis_First_OuterBlockadeCP_.*", ROLE.DEFENDER2 ); Util.SetRoleForGoals( "DEFEND_Axis_Second_BunkerSewGr_.*", ROLE.DEFENDER2 ); Util.SetRoleForGoals( "DEFEND_Axis_WestAAGun_.*", ROLE.DEFENDER2 ); Util.SetRoleForGoals( "DEFEND_Axis_Help_EastAAGun_.*", ROLE.DEFENDER2 ); Util.SetRoleForGoals( "DEFEND_Axis_AAGuns_01", ROLE.DEFENDER2 ); Util.SetRoleForGoals( "DEFEND_Axis_AAGuns_02", ROLE.DEFENDER2 ); Util.SetRoleForGoals( "DEFEND_Axis_OuterBlockade_R_.*", ROLE.DEFENDER3 ); Util.SetRoleForGoals( "DEFEND_Axis_First_OuterBlockadeR_.*", ROLE.DEFENDER3 ); Util.SetRoleForGoals( "DEFEND_Axis_Second_CourtyardSewGr_.*", ROLE.DEFENDER3 ); Util.SetRoleForGoals( "DEFEND_Axis_EastAAGun_.*", ROLE.DEFENDER3 ); Util.SetRoleForGoals( "DEFEND_Axis_AAGuns_03", ROLE.DEFENDER3 ); Util.SetRoleForGoals( "DEFEND_Axis_AAGuns_04", ROLE.DEFENDER3 ); Util.SetRoleForGoals( "AIRSTRIKE_Axis_MainGates_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } ); Util.SetRoleForGoals( "AIRSTRIKE_Axis_OuterBlockade_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } ); Util.SetRoleForGoals( "BUILD_Axis_Bunker_Controlpanel", { ROLE.DEFENDER2, ROLE.DEFENDER3 } ); Util.SetRoleForGoals( "BUILD_Axis_Inner_Blockade", { ROLE.DEFENDER1, ROLE.DEFENDER2 } ); Util.SetRoleForGoals( "REPAIRMG42_axis_inner_blockade_mg42", { ROLE.DEFENDER1, ROLE.DEFENDER2 } ); Util.SetRoleForGoals( "GRENADE_Fuel_Tanks", { ROLE.DEFENDER1, ROLE.DEFENDER2 } ); Util.SetRoleForGoals( "GRENADE_Alley_Wall", ROLE.ATTACKER ); Util.SetRoleForGoals( "CAMP_Allies_AlleyWall_.*", ROLE.ATTACKER ); Util.SetRoleForGoals( "ATTACK_Allies_HotelGate_.*", ROLE.ATTACKER ); Util.SetRoleForGoals( "PLANT_Hotel_Gate", ROLE.ATTACKER ); Util.SetRoleForGoals( "ATTACK_Allies_DockAAGun_.*", ROLE.ATTACKER ); Util.SetRoleForGoals( "PLANT_Dock_AA_Gun", ROLE.ATTACKER ); Util.SetRoleForGoals( "PLANT_Axis_Main_Gates", ROLE.ATTACKER1 ); Util.SetRoleForGoals( "CAMP_Allies_MainGates_.*", ROLE.ATTACKER1 ); Util.SetRoleForGoals( "BUILD_Command_Post", ROLE.ATTACKER1 ); Util.SetRoleForGoals( "PLANT_Command_Post", ROLE.ATTACKER1 ); Util.SetRoleForGoals( "ATTACK_Allies_CP_.*", ROLE.ATTACKER1 ); Util.SetRoleForGoals( "PLANT_Axis_Inner_Blockade", ROLE.ATTACKER1 ); Util.SetRoleForGoals( "ATTACK_Allies_CPArea_.*", ROLE.ATTACKER1 ); Util.SetRoleForGoals( "ATTACK_Allies_BunkerSewerGrate_.*", ROLE.ATTACKER2 ); Util.SetRoleForGoals( "PLANT_Axis_Bunker_Sewer_Grate", ROLE.ATTACKER2 ); Util.SetRoleForGoals( "ATTACK_Allies_WestAAGun_.*", ROLE.ATTACKER2 ); Util.SetRoleForGoals( "PLANT_West_AA_Gun", ROLE.ATTACKER2 ); Util.SetRoleForGoals( "ATTACK_Allies_CourtyardSewerGrate_.*", ROLE.ATTACKER3 ); Util.SetRoleForGoals( "PLANT_Courtyard_Sewer_Grate", ROLE.ATTACKER3 ); Util.SetRoleForGoals( "ATTACK_Allies_EastAAGun_.*", ROLE.ATTACKER3 ); Util.SetRoleForGoals( "PLANT_East_AA_Gun", ROLE.ATTACKER3 ); Util.SetRoleForGoals( "AIRSTRIKE_Allies_MainGates_.*", { ROLE.ATTACKER1, ROLE.ATTACKER2 } ); Util.SetRoleForGoals( "AIRSTRIKE_Allies_OuterBlockade_.*", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); Util.SetRoleForGoals( "CAMP_Allies_OuterBlockade_.*", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); Util.SetRoleForGoals( "GRENADE_Axis_Outer_Blockade", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); Util.SetRoleForGoals( "GRENADE_Axis_Bunker_Controlpanel", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); Util.SetRoleForGoals( "GRENADE_Church_Alley_Door.*", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); Util.SetRoleForGoals( "GRENADE_Apartment_Complex_Door.*", { ROLE.DEFENDER2, ROLE.DEFENDER3, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); yield(); yield(); foreach ( id and bot in BotTable ) { if ( bot.HasRole(ROLE.DEFENDER1) ) { bot.ChangeSpawnPoint(4); } if ( bot.HasRole(ROLE.DEFENDER) or bot.HasRole(ROLE.DEFENDER2) or bot.HasRole(ROLE.DEFENDER3) ) { bot.ChangeSpawnPoint(1); } } Util.DisableGoal( "ROUTE_Alley" ); Util.DisableGoal( "ROUTE_Alley_Wall" ); Util.DisableGoal( "ROUTE_Hotel_Gate" ); Util.DisableGoal( "ROUTE_Dock_Ladder" ); Util.DisableGoal( "ROUTE_Main_Gates" ); Util.DisableGoal( "ROUTE_Around_Tank" ); Util.DisableGoal( "ROUTE_Corner" ); Util.DisableGoal( "ROUTE_Around_YardWall" ); Util.DisableGoal( "ROUTE_Past_Main_Gates" ); Util.DisableGoal( "ROUTE_Tank_1" ); Util.DisableGoal( "ROUTE_OuterBlockade_R" ); Util.DisableGoal( "ROUTE_Around_Church" ); Util.DisableGoal( "ROUTE_OuterBlockade_L" ); Util.DisableGoal( "ROUTE_Around_Axis_Spawn" ); Util.DisableGoal( "ROUTE_Past_OuterBlockade_R" ); Util.DisableGoal( "ROUTE_Church_Door" ); Util.DisableGoal( "ROUTE_Church_AleyDoor" ); Util.DisableGoal( "ROUTE_Past_OuterBlockade_L" ); Util.DisableGoal( "ROUTE_Garden_Church_Door" ); Util.DisableGoal( "ROUTE_Garden_Apartment_Door_1" ); Util.DisableGoal( "ROUTE_West_Door" ); Util.DisableGoal( "ROUTE_East_Door" ); Util.DisableGoal( "ROUTE_BunkerSewerGrate_Entrance" ); Util.DisableGoal( "ROUTE_Wall_Above_InnerBlockade" ); thread(Map.WatchTankStatus); print( "^3Omni-bot map script by ^3by ^1Q^2i^3k^4i ^3and ^1n^2a^4t^8i^3v^5e12^3 ^3for map: ^7" + GetMapName() ); /* while (1) //for testing roles { foreach ( id and bot in BotTable ) { print( "^3=========================Test Roles & Goals=========================" ); Commands["botsgoals"](_params); print( "^3============================End of Test=============================" ); sleep(5); } yield(); yield(); }*/ }; global OnBotJoin = function( bot ) { bot.TargetBreakableDist = 100.0; Util.IgnoreTargetGoalTable( bot, Map.Movers ); WeaponTable.SetWeaponAvailability ( CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); WeaponTable.SetWeaponAvailability ( CLASS.SOLDIER, WEAPON.MOBILE_MG42, false ); bot.IgnoreTarget( GetGoal("MOVER_yardwall").GetEntity(), 9999 ); bot.IgnoreTarget( GetGoal("MOVER_yardwall_1").GetEntity(), 9999 ); sleep(1); if ( bot.HasRole(ROLE.DEFENDER1) ) { bot.ChangeSpawnPoint(4); } }; global InitializeRoutes = function() { MapRoutes = { BUILD_Command_Post = { ROUTE_Allied_First_Spawn = { ROUTE_Main_Gates = { ROUTE_Around_YardWall = { }, }, ROUTE_OuterBlockade_R = { ROUTE_Around_Church = { }, }, }, }, BUILD_tower = { }, PLANT_tower = { }, BUILD_Axis_Outer_Blockade = { }, PLANT_Axis_Outer_Blockade = { }, BUILD_Axis_Inner_Blockade = { }, PLANT_Axis_Inner_Blockade = { }, BUILD_Axis_Bunker_Controlpanel = { }, PLANT_Dock_AA_Gun = { ROUTE_Allied_First_Spawn = { ROUTE_Alley = { ROUTE_Alley_Wall = { ROUTE_Hotel_Gate = { ROUTE_Dock_Ladder = { }, }, }, }, ROUTE_Main_Gates = { ROUTE_Around_Tank = { ROUTE_Corner = { }, }, }, }, }, PLANT_West_AA_Gun = { ROUTE_Allied_First_Spawn = { ROUTE_OuterBlockade_L = { ROUTE_Around_Axis_Spawn = { }, }, ROUTE_Past_OuterBlockade_L = { ROUTE_Garden_Church_Door = { ROUTE_Garden_Apartment_Door_1 = { }, }, }, ROUTE_Past_Main_Gates = { ROUTE_Tank_1 = { ROUTE_BunkerSewerGrate_Entrance = { }, }, }, ROUTE_Past_OuterBlockade_R = { ROUTE_Church_Door = { ROUTE_Church_AleyDoor = { ROUTE_BunkerSewerGrate_Entrance = { }, }, }, }, ROUTE_East_Door = { }, ROUTE_West_Door = { }, ROUTE_Wall_Above_InnerBlockade = { }, }, ROUTE_Allied_Second_Spawn = { ROUTE_East_Door = { }, ROUTE_West_Door = { }, ROUTE_BunkerSewerGrate_Entrance = { }, ROUTE_Wall_Above_InnerBlockade = { }, }, }, PLANT_East_AA_Gun = { ROUTE_Allied_First_Spawn = { ROUTE_OuterBlockade_L = { ROUTE_Around_Axis_Spawn = { }, }, ROUTE_Past_OuterBlockade_L = { ROUTE_Garden_Church_Door = { ROUTE_Garden_Apartment_Door_1 = { }, }, }, ROUTE_Past_Main_Gates = { ROUTE_Tank_1 = { ROUTE_BunkerSewerGrate_Entrance = { }, }, }, ROUTE_Past_OuterBlockade_R = { ROUTE_Church_Door = { ROUTE_Church_AleyDoor = { ROUTE_BunkerSewerGrate_Entrance = { }, }, }, }, ROUTE_East_Door = { }, ROUTE_West_Door = { }, ROUTE_Wall_Above_InnerBlockade = { }, }, ROUTE_Allied_Second_Spawn = { ROUTE_East_Door = { }, ROUTE_West_Door = { }, ROUTE_BunkerSewerGrate_Entrance = { }, ROUTE_Wall_Above_InnerBlockade = { }, }, }, PLANT_Axis_Bunker_Sewer_Grate = { ROUTE_Allied_First_Spawn = { ROUTE_Past_Main_Gates = { ROUTE_Tank_1 = { }, }, ROUTE_Past_OuterBlockade_R = { ROUTE_Church_Door = { ROUTE_Church_AleyDoor = { }, }, }, }, }, PLANT_Hotel_Gate = { }, PLANT_Axis_Main_Gates = { }, BUILD_Tank = { }, PLANT_Courtyard_Sewer_Grate = { ROUTE_Allied_First_Spawn = { ROUTE_OuterBlockade_L = { ROUTE_Around_Axis_Spawn = { }, }, ROUTE_Past_OuterBlockade_L = { ROUTE_Garden_Church_Door = { ROUTE_Garden_Apartment_Door_1 = { }, }, }, }, }, }; MapRoutes["ATTACK_Allies_DockAAGun_.*"] = MapRoutes.PLANT_Dock_AA_Gun; MapRoutes["ATTACK_Allies_CP_.*"] = MapRoutes.BUILD_Command_Post; MapRoutes.PLANT_Command_Post = MapRoutes.BUILD_Command_Post; MapRoutes["ATTACK_Allies_BunkerSewerGrate_.*"] = MapRoutes.PLANT_Axis_Bunker_Sewer_Grate; MapRoutes["ATTACK_Allies_CourtyardSewerGrate_.*"] = MapRoutes.PLANT_Courtyard_Sewer_Grate; MapRoutes["ATTACK_Allies_EastAAGun_.*"] = MapRoutes.PLANT_East_AA_Gun; MapRoutes["ATTACK_Allies_WestAAGun_.*"] = MapRoutes.PLANT_West_AA_Gun; Util.Routes(MapRoutes); };