//========================================================================================== // // road2amiens_b2.gm // // Who When What //------------------------------------------------------------------------------------------ // Qiki 17 December 2014 Initial Script // Native12 10.01.2015 Finished // // Bugs and suggestions: PM on http://omni-bot.invisionzone.com/index.php?/index // //========================================================================================== // global Map = { Debug = 0, ShowMovers = false, Allied_Command_Post_Dyno = 0, Axis_Command_Post_Dyno = 0, Back_Wall_Dyno = 0, Bunker_Door_Dyno = 0, Compound_Gate_Dyno = 0, Old_West_Tower_Barrier_Dyno = 0, Old_West_Tower_Ladder_Dyno = 0, Side_Wall_Dyno = 0, Sniper_Tower_Dyno = 0, Forward_spawn_Allied = false, Back_Wall = true, Side_Wall = true, CompoundGateDestroyed = false, BunkerDoorDestroyed = false, Old_West_Tower_Ladder = false, AxisCommandPostBuilt = false, Allies_On_The_Roof = 0, Allied_Eng_On_The_Roof = 0, All_Eng_On_Roof_Att0 = 0, All_Eng_On_Roof_Att1 = 0, All_Eng_On_Roof_Att2 = 0, Allies_Near_Back_Wall = 0, Wooden_Railing_01 = true, Wooden_Railing_02 = true, Wooden_Railing_03 = true, Wooden_Railing_04 = true, Wooden_Railing_05 = true, Wooden_Railing_06 = true, Wooden_Railing_07 = true, Wooden_Railing_08 = true, AMB1 = 0, AMB2 = 0, AIFS = 0, DispenseAmmoTime = 20, 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:tower_1 tower_1 = { navigate = function(_this) { wpTable = {}; Wp.GetWaypointByName("Tower_1", wpTable); if ( _this.Goto(wpTable.position) == EVENT.PATH_SUCCESS ) { _this.AddAimRequest(Priority.VeryHigh, "facing", wpTable.facing); sleep(0.25); _this.Bot.HoldButton(BTN.FORWARD, 1.9); sleep(1.9); } }, }, // /bot waypoint_setproperty paththrough Navigation_PT:tower_2 tower_2 = { navigate = function(_this) { wpTable = {}; Wp.GetWaypointByName("Tower_2", wpTable); if ( _this.Goto(wpTable.position) == EVENT.PATH_SUCCESS ) { _this.AddAimRequest(Priority.VeryHigh, "facing", wpTable.facing); sleep(0.25); _this.Bot.HoldButton(BTN.FORWARD, 2.8); _this.Bot.HoldButton(BTN.CROUCH, 0.8); sleep(2.8); } }, }, // /bot waypoint_setproperty paththrough Navigation_PT:a a = { navigate = function(_this) { wpTable = {}; Wp.GetWaypointByName("A", wpTable); if ( _this.Goto(wpTable.position) == EVENT.PATH_SUCCESS ) { _this.AddAimRequest(Priority.VeryHigh, "facing", wpTable.facing); sleep(1); _this.Bot.HoldButton(BTN.FORWARD, 1); _this.Bot.HoldButton(BTN.SPRINT, 1); sleep(0.1); _this.Bot.PressButton(BTN.JUMP); sleep(0.9); } }, }, // /bot waypoint_setproperty paththrough Navigation_PT:b b = { navigate = function(_this) { wpTable = {}; Wp.GetWaypointByName("B", wpTable); if ( _this.Goto(wpTable.position) == EVENT.PATH_SUCCESS ) { _this.AddAimRequest(Priority.VeryHigh, "facing", wpTable.facing); sleep(0.25); _this.Bot.HoldButton(BTN.FORWARD, 2); _this.Bot.HoldButton(BTN.SPRINT, 2); sleep(0.145); _this.Bot.PressButton(BTN.JUMP); sleep(1.7); } }, }, }, Roles = { AXIS = { AllBots = true, // each bot is considered for a role DEFENDER = { spawnpt = 2, numbots = 5, crucialClass = CLASS.ENGINEER, }, DEFENDER1 = { spawnpt = 3, numbots = 5, crucialClass = CLASS.FIELDOPS, }, DEFENDER2 = { spawnpt = 3, numbots = 5, crucialClass = CLASS.ENGINEER, }, DEFENDER3 = { spawnpt = 3, numbots = 5, crucialClass = CLASS.FIELDOPS, }, }, ALLIES = { AllBots = true, // each bot is considered for a role ATTACKER = { spawnpt = 1, numbots = 5, crucialClass = CLASS.ENGINEER, }, ATTACKER1 = { spawnpt = 1, numbots = 5, crucialClass = CLASS.ENGINEER, }, ATTACKER2 = { spawnpt = 1, numbots = 5, crucialClass = CLASS.ENGINEER, }, ATTACKER3 = { spawnpt = 1, numbots = 5, crucialClass = CLASS.COVERTOPS, }, }, }, BackWall_Thread = function() { start = Vector3(346.116, -1965.262, 440.297); end = Vector3(482.622, -1976.489, 440.297); Util.MapDebugPrint("^5BackWall_Thread", true); while (1) { tr = TraceLine(start, end, null, TRACE.SOLID, 0, false); if(tr.fraction < 1) { if ( !Map.Back_Wall ) { Map.Back_Wall_Built(); } } sleep(0.25); } }, Wooden_Railing_01_Exploded = function( trigger ) { if ( TestMap ) { return; } Map.Wooden_Railing_01 = false; Wp.SetWaypointFlag( "WR7", "closed", false ); if ( !Map.Wooden_Railing_02 ) { Wp.SetWaypointFlag( "WR1", "closed", false ); } Util.MapDebugPrint( "^5Wooden_Railing_01_Exploded" ); }, Wooden_Railing_02_Exploded = function( trigger ) { if ( TestMap ) { return; } Map.Wooden_Railing_02 = false; if ( !Map.Wooden_Railing_01 ) { Wp.SetWaypointFlag( "WR1", "closed", false ); } Util.MapDebugPrint( "^5Wooden_Railing_02_Exploded" ); }, Wooden_Railing_03_Exploded = function( trigger ) { if ( TestMap ) { return; } Map.Wooden_Railing_03 = false; if ( !Map.Wooden_Railing_04 ) { Wp.SetWaypointFlag( "WR2", "closed", false ); } Util.MapDebugPrint( "^5Wooden_Railing_03_Exploded" ); }, Wooden_Railing_04_Exploded = function( trigger ) { if ( TestMap ) { return; } Map.Wooden_Railing_04 = false; Wp.SetWaypointFlag( "WR3", "closed", false ); if ( !Map.Wooden_Railing_03 ) { Wp.SetWaypointFlag( "WR2", "closed", false ); } if ( !Map.Wooden_Railing_05 ) { Wp.SetWaypointFlag( "WR4", "closed", false ); } Util.MapDebugPrint( "^5Wooden_Railing_04_Exploded" ); }, Wooden_Railing_05_Exploded = function( trigger ) { if ( TestMap ) { return; } Map.Wooden_Railing_05 = false; Wp.SetWaypointFlag( "WR5", "closed", false ); Wp.SetWaypointFlag( "WR6", "closed", false ); if ( !Map.Wooden_Railing_04 ) { Wp.SetWaypointFlag( "WR4", "closed", false ); } Util.MapDebugPrint( "^5Wooden_Railing_05_Exploded" ); }, Wooden_Railing_06_Exploded = function( trigger ) { if ( TestMap ) { return; } Map.Wooden_Railing_06 = false; if ( !Map.Wooden_Railing_07 ) { Wp.SetWaypointFlag( "WR8", "closed", false ); } Util.MapDebugPrint( "^5Wooden_Railing_06_Exploded" ); }, Wooden_Railing_07_Exploded = function( trigger ) { if ( TestMap ) { return; } Map.Wooden_Railing_07 = false; Wp.SetWaypointFlag( "WR9", "closed", false ); Wp.SetWaypointFlag( "WR10", "closed", false ); if ( !Map.Wooden_Railing_06 ) { Wp.SetWaypointFlag( "WR8", "closed", false ); } Util.MapDebugPrint( "^5Wooden_Railing_07_Exploded" ); }, Wooden_Railing_08_Exploded = function( trigger ) { if ( TestMap ) { return; } Map.Wooden_Railing_08 = false; Wp.SetWaypointFlag( "WR11", "closed", false ); Wp.SetWaypointFlag( "WR12", "closed", false ); Wp.SetWaypointFlag( "WR13", "closed", false ); Util.MapDebugPrint( "^5Wooden_Railing_08_Exploded" ); }, Allied_Command_Post_Built = function( trigger ) { if ( TestMap ) { return; } SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Allied_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Allied_Command_Post" ); Util.MapDebugPrint( "^5Allied_Command_Post_Built" ); }, Allied_Command_Post_Planted = function( trigger ) { if ( TestMap ) { return; } Map.Allied_Command_Post_Dyno += 1; Util.MapDebugPrint( "^5Allied_Command_Post_Planted" ); }, Allied_Command_Post_Defused = function( trigger ) { if ( TestMap ) { return; } Map.Allied_Command_Post_Dyno -= 1; Util.MapDebugPrint( "^5Allied_Command_Post_Defused" ); }, Allied_Command_Post_Destroyed = function( trigger ) { if ( TestMap ) { return; } SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Allied_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Allied_Command_Post" ); Util.MapDebugPrint( "^5Allied_Command_Post_Destroyed" ); }, Axis_Command_Post_Built = function( trigger ) { if ( TestMap ) { return; } Map.AxisCommandPostBuilt = true; SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_Command_Post" ); if ( Map.CompoundGateDestroyed ) { if ( Map.BunkerDoorDestroyed ) { Util.ClearRoleForGoals("PLANT_Axis_Command_Post", ROLE.INFILTRATOR ); } else { Util.SetRoleForGoals("PLANT_Axis_Command_Post", ROLE.INFILTRATOR ); } SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Command_Post" ); } Util.MapDebugPrint( "^5Axis_Command_Post_Built" ); }, Axis_Command_Post_Planted = function( trigger ) { if ( TestMap ) { return; } Map.Axis_Command_Post_Dyno += 1; Util.MapDebugPrint( "^5Axis_Command_Post_Planted" ); }, Axis_Command_Post_Defused = function( trigger ) { if ( TestMap ) { return; } Map.Axis_Command_Post_Dyno -= 1; Util.MapDebugPrint( "^5Axis_Command_Post_Defused" ); }, Axis_Command_Post_Destroyed = function( trigger ) { if ( TestMap ) { return; } Map.AxisCommandPostBuilt = false; SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Axis_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_Command_Post" ); Util.MapDebugPrint( "^5Axis_Command_Post_Destroyed" ); }, Old_West_Tower_Barrier_Built = function( trigger ) { if ( TestMap ) { return; } Util.MapDebugPrint( "^5Old_West_Tower_Barrier_Built" ); }, Old_West_Tower_Barrier_Planted = function( trigger ) { if ( TestMap ) { return; } Map.Old_West_Tower_Barrier_Dyno += 1; SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Old_West_Tower_Barrier_.*" ); Util.MapDebugPrint( "^5Old_West_Tower_Barrier_Planted" ); }, Old_West_Tower_Barrier_Defused = function( trigger ) { if ( TestMap ) { return; } Map.Old_West_Tower_Barrier_Dyno -= 1; Util.MapDebugPrint( "^5Old_West_Tower_Barrier_Defused" ); }, Old_West_Tower_Barrier_Destroyed = function( trigger ) { if ( TestMap ) { return; } SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_WestTower_.*" ); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_WestTowerUp_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "HEALTHCAB_allied_cp_health_cabinet" ); SetAvailableMapGoals( TEAM.AXIS, true, "AMMOCAB_allied_cp_ammo_cabinet" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_BackWall_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Old_West_Tower_Barrier" ); sleep(1.8); SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allies_WestTower_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "AMMOCAB_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "HEALTHCAB_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Old_West_Tower_Ladder" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Back_Wall" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_BackWall_.*" ); if ( Map.Old_West_Tower_Ladder ) //if the ladder is built before barrier is destroyed { //then the ladder cannot be rebuilded Map.Old_West_Tower_Ladder = false; Wp.SetWaypointFlag( "Ladder_1", "closed", true ); Wp.SetWaypointFlag( "on_ladder_1", "closed", true ); Wp.SetWaypointFlag( "on_ladder_2", "closed", true ); DynamicPathsUpdated(); SetAvailableMapGoals( 0, false, ".*_Old_West_Tower_Ladder" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ROUTE_Ladder" ); } if ( !Map.CompoundGateDestroyed ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_CompoundGate_Inside" ); } Util.MapDebugPrint( "^5Old_West_Tower_Barrier_Destroyed" ); }, Side_Wall_Planted = function( trigger ) { if ( TestMap ) { return; } Map.Side_Wall_Dyno += 1; SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Side_Wall_.*" ); //suicide Util.MapDebugPrint( "^5Side_Wall_Planted" ); }, Side_Wall_Defused = function( trigger ) { if ( TestMap ) { return; } Map.Side_Wall_Dyno -= 1; Util.MapDebugPrint( "^5Side_Wall_Defused" ); }, Side_Wall_Destroyed = function( trigger ) { if ( TestMap ) { return; } Map.Side_Wall = false; DeleteTriggerRegion( Map.AMB1 ); DeleteTriggerRegion( Map.AMB2 ); DeleteTriggerRegion( Map.AIFS ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, true ); Util.ChangeCrucialClassForRole(TEAM.AXIS,ROLE.DEFENDER1,CLASS.SOLDIER); Util.ClearRoleForGoals(".*", ROLE.AMBUSHER ); foreach ( id and bot in BotTable ) { if ( bot.GetTeam(TEAM.AXIS) and bot.HasRole(ROLE.DEFENDER1) ) { bot.ChangeSpawnPoint(2); } } SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideWall_.*" ); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideWallUp_.*" ); if ( !Map.CompoundGateDestroyed ) { Util.SetRoleForGoals("CHECKPOINT_spawn_forward_flag", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.INFILTRATOR }); Util.SetRoleForGoals("PLANT_Compound_Gate", { ROLE.ATTACKER, ROLE.ATTACKER1 }); Util.SetRoleForGoals(".*_Allies_CompoundGate_.*", { ROLE.ATTACKER, ROLE.ATTACKER1 }); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_CompoundGate_.*" ); } SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Side_Wall" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_SideWall_Inside" ); sleep(1.8); SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allies_SideWall_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "AMMOCAB_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "HEALTHCAB_.*" ); if ( !Map.CompoundGateDestroyed ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Compound_Gate" ); SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allies_CompoundGate_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CHECKPOINT_spawn_forward_flag" ); } Util.MapDebugPrint( "^5Side_Wall_Destroyed" ); }, Old_West_Tower_Ladder_Built = function( trigger ) { if ( TestMap ) { return; } Wp.SetWaypointFlag( "Ladder_1", "closed", false ); Wp.SetWaypointFlag( "on_ladder_1", "closed", false ); Wp.SetWaypointFlag( "on_ladder_2", "closed", false ); DynamicPathsUpdated(); SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Old_West_Tower_Ladder" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ROUTE_Ladder" ); Map.Old_West_Tower_Ladder = true; Util.MapDebugPrint( "^5Old_West_Tower_Ladder_Built" ); }, Old_West_Tower_Ladder_Planted = function( trigger ) { if ( TestMap ) { return; } Map.Old_West_Tower_Ladder_Dyno += 1; Util.MapDebugPrint( "^5Old_West_Tower_Ladder_Planted" ); }, Old_West_Tower_Ladder_Defused = function( trigger ) { if ( TestMap ) { return; } Map.Old_West_Tower_Ladder_Dyno -= 1; Util.MapDebugPrint( "^5Old_West_Tower_Ladder_Defused" ); }, Old_West_Tower_Ladder_Destroyed = function( trigger ) { if ( TestMap ) { return; } Wp.SetWaypointFlag( "Ladder_1", "closed", true ); Wp.SetWaypointFlag( "on_ladder_1", "closed", true ); Wp.SetWaypointFlag( "on_ladder_2", "closed", true ); DynamicPathsUpdated(); SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Old_West_Tower_Ladder" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ROUTE_Ladder" ); Map.Old_West_Tower_Ladder = false; Util.MapDebugPrint( "^5Old_West_Tower_Ladder_Destroyed" ); }, spawn_forward_flag_Allies_Captured = function( trigger ) { if ( TestMap ) { return; } Map.Forward_spawn_Allied = true; SetAvailableMapGoals( TEAM.ALLIES, false, "CHECKPOINT_spawn_forward_flag" ); if ( Map.Side_Wall ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_SideWall_Inside" ); SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allies_CompoundGate_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Compound_Gate" ); Util.SetRoleForGoals("CHECKPOINT_spawn_forward_flag", { ROLE.DEFENDER, ROLE.DEFENDER1 }); } else { Util.SetRoleForGoals("CHECKPOINT_spawn_forward_flag", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.INFILTRATOR }); } if ( !Map.CompoundGateDestroyed ) { SetAvailableMapGoals( TEAM.AXIS, true, "CHECKPOINT_spawn_forward_flag" ); } foreach ( id and bot in BotTable ) { if ( bot.GetTeam(TEAM.ALLIES) and ( bot.HasRole(ROLE.ATTACKER) or bot.HasRole(ROLE.ATTACKER1) )) { bot.ChangeSpawnPoint(2); } } Util.MapDebugPrint( "^5spawn_forward_flag_Allies_Captured" ); }, spawn_forward_flag_Axis_Captured = function( trigger ) { if ( TestMap ) { return; } Map.Forward_spawn_Allied = false; if ( !Map.Side_Wall ) { Util.SetRoleForGoals("CHECKPOINT_spawn_forward_flag", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.INFILTRATOR }); } else { Util.SetRoleForGoals("CHECKPOINT_spawn_forward_flag", { ROLE.INFILTRATOR, ROLE.AMBUSHER } ); } SetAvailableMapGoals( TEAM.AXIS, false, "CHECKPOINT_spawn_forward_flag" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CHECKPOINT_spawn_forward_flag" ); foreach ( id and bot in BotTable ) { if ( bot.GetTeam(TEAM.ALLIES) and ( bot.HasRole(ROLE.ATTACKER) or bot.HasRole(ROLE.ATTACKER1) )) { bot.ChangeSpawnPoint(1); } } Util.MapDebugPrint( "^5spawn_forward_flag_Axis_Captured" ); }, Compound_Gate_Planted = function( trigger ) { if ( TestMap ) { return; } Map.Compound_Gate_Dyno += 1; Util.SetRoleForGoals("DEFUSE_Compound_Gate_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 }); Util.MapDebugPrint( "^5Compound_Gate_Planted" ); }, Compound_Gate_Defused = function( trigger ) { if ( TestMap ) { return; } Map.Compound_Gate_Dyno -= 1; Util.MapDebugPrint( "^5Compound_Gate_Defused" ); }, Compound_Gate_Destroyed = function( trigger ) { if ( TestMap ) { return; } if ( Map.Compound_Gate_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Compound_Gate_.*" ); } Map.Compound_Gate_Dyno = 0; Map.Forward_spawn_Allied = true; //permanently Map.CompoundGateDestroyed = true; if ( Map.Side_Wall ) { DeleteTriggerRegion( Map.AMB1 ); DeleteTriggerRegion( Map.AMB2 ); DeleteTriggerRegion( Map.AIFS ); Util.ChangeCrucialClassForRole(TEAM.AXIS,ROLE.DEFENDER1,CLASS.SOLDIER); Util.ClearRoleForGoals(".*", ROLE.AMBUSHER ); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideWall_.*" ); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideWallUp_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allies_SideWall_.*" ); Util.SetRoleForGoals("PLANT_SideWall_Inside", { ROLE.ATTACKER, ROLE.ATTACKER1 }); SetGoalPriority( "PLANT_SideWall_Inside", 0.82, TEAM.ALLIES, CLASS.ENGINEER ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_SideWall_Inside" ); SetAvailableMapGoals( TEAM.ALLIES, true, "AMMOCAB_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "HEALTHCAB_.*" ); } WeaponTable.SetWeaponTeamAvailability( TEAM.ALLIES, CLASS.SOLDIER, WEAPON.MORTAR, true ); SetAvailableMapGoals( 0, false, "CHECKPOINT_spawn_forward_flag" ); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_CompoundGate_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Compound_Gate" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_CompoundGate_Inside" ); SetAvailableMapGoals( TEAM.AXIS, true, "MOUNTMG42_Bunker_Lower_Right" ); SetAvailableMapGoals( TEAM.AXIS, true, "REPAIRMG42_Bunker_Lower_Right" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_BunkerDoor_.*" ); sleep(1.8); foreach ( id and bot in BotTable ) { if ( bot.GetTeam(TEAM.ALLIES) and ( bot.HasRole(ROLE.ATTACKER) or bot.HasRole(ROLE.ATTACKER1) )) { bot.ChangeSpawnPoint(2); } } SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allies_CompoundGate_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Bunker_Door" ); //Attacker SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_BunkerDoor_.*" ); //Attacker SetAvailableMapGoals( TEAM.ALLIES, true, "SMOKEBOMB_Allies_BunkerDoor_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_SnipeTower_Attacker1_.*" ); //Attacker1 SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_SnipeTower_At1" ); //Attacker1 SetAvailableMapGoals( TEAM.ALLIES, true, "MOBILEMORTAR_Allies_BunkerArea_01" ); if ( Map.AxisCommandPostBuilt ) { if ( Map.BunkerDoorDestroyed ) { Util.ClearRoleForGoals("PLANT_Axis_Command_Post", ROLE.INFILTRATOR ); } else { Util.SetRoleForGoals("PLANT_Axis_Command_Post", ROLE.INFILTRATOR ); } SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Command_Post" ); } Util.MapDebugPrint( "^5Compound_Gate_Destroyed" ); }, Back_Wall_Built = function( trigger ) { if ( TestMap ) { return; } Map.Back_Wall = true; SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Back_Wall" ); if ( Map.All_Eng_On_Roof_Att2 == 0 ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_SnipeTower_At2" ); //Attacker2 SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_SnipeTower_Attacker2_.*" ); //Attacker2 } SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Back_Wall" ); Util.MapDebugPrint( "^5Back_Wall_Built" ); }, Back_Wall_Planted = function( trigger ) { if ( TestMap ) { return; } Map.Back_Wall_Dyno += 1; Util.SetRoleForGoals("DEFUSE_Back_Wall_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 }); Util.MapDebugPrint( "^5Back_Wall_Planted" ); }, Back_Wall_Defused = function( trigger ) { if ( TestMap ) { return; } Map.Back_Wall_Dyno -= 1; Util.MapDebugPrint( "^5Back_Wall_Defused" ); }, Back_Wall_Destroyed = function( trigger ) { if ( TestMap ) { return; } Map.Back_Wall = false; SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Back_Wall" ); SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Back_Wall" ); sleep(1.8); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_SnipeTower_At2" ); //Attacker2 SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_SnipeTower_Attacker2_.*" ); //Attacker2 Util.MapDebugPrint( "^5Back_Wall_Destroyed" ); }, Bunker_Door_Built = function( trigger ) { if ( TestMap ) { return; } Map.BunkerDoorDestroyed = false; Wp.SetWaypointFlag( "Bunker_Door_Box", "closed", false ); SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Bunker_Door" ); if ( Map.All_Eng_On_Roof_Att0 == 0 ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Sniper_Tower" ); //Attacker SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_SnipeTower_Attacker0_.*" ); //Attacker SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Bunker_Door" ); //Attacker SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_BunkerDoor_.*" ); //Attacker SetAvailableMapGoals( TEAM.ALLIES, true, "SMOKEBOMB_Allies_BunkerDoor_.*" ); //Attacker } if ( Map.Allies_Near_Back_Wall == 0 ) { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.319, -0.924, 0.210), Vec3(-0.695, -0.687, 0.212) }; } else { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.695, -0.687, 0.212) }; } Util.MapDebugPrint( "^5Bunker_Door_Built" ); }, Bunker_Door_Planted = function( trigger ) { if ( TestMap ) { return; } Map.Bunker_Door_Dyno += 1; Util.SetRoleForGoals("DEFUSE_Bunker_Door_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 }); if ( Map.Allies_Near_Back_Wall == 0 ) { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.319, -0.924, 0.210), Vec3(-0.695, -0.687, 0.212), Vec3(-0.549, -0.796, 0.256) }; } else { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.695, -0.687, 0.212), Vec3(-0.549, -0.796, 0.256) }; } Util.MapDebugPrint( "^5Bunker_Door_Planted" ); sleep(30.1); if ( !Map.BunkerDoorDestroyed ) { if ( Map.Allies_Near_Back_Wall == 0 ) { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.319, -0.924, 0.210), Vec3(-0.695, -0.687, 0.212) }; } else { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.695, -0.687, 0.212) }; } } }, Bunker_Door_Defused = function( trigger ) { if ( TestMap ) { return; } Map.Bunker_Door_Dyno -= 1; if ( Map.Bunker_Door_Dyno == 0 ) { if ( Map.Allies_Near_Back_Wall == 0 ) { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.319, -0.924, 0.210), Vec3(-0.695, -0.687, 0.212) }; } else { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.695, -0.687, 0.212) }; } } Util.MapDebugPrint( "^5Bunker_Door_Defused" ); }, Bunker_Door_Destroyed = function( trigger ) { if ( TestMap ) { return; } Map.BunkerDoorDestroyed = true; Map.Bunker_Door_Dyno = 0; Wp.SetWaypointFlag( "Bunker_Door_Box", "closed", true ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Bunker_Door" ); //Attacker SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Bunker_Door" ); if ( Map.Allies_Near_Back_Wall == 0 ) { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.319, -0.924, 0.210), Vec3(-0.695, -0.687, 0.212) }; } else { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.695, -0.687, 0.212) }; } sleep(1.8); SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allies_BunkerDoor_.*" ); //Attacker SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Sniper_Tower" ); //Attacker SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_SnipeTower_Attacker0_.*" ); //Attacker Util.MapDebugPrint( "^5Bunker_Door_Destroyed" ); }, Sniper_Tower_Built = function( trigger ) { if ( TestMap ) { return; } Util.MapDebugPrint( "^5Sniper_Tower_Built" ); }, Sniper_Tower_Planted = function( trigger ) { if ( TestMap ) { return; } Map.Sniper_Tower_Dyno += 1; Util.MapDebugPrint( "^5Sniper_Tower_Planted" ); }, Sniper_Tower_Defused = function( trigger ) { if ( TestMap ) { return; } Map.Sniper_Tower_Dyno -= 1; Util.MapDebugPrint( "^5Sniper_Tower_Defused" ); }, Sniper_Tower_Destroyed = function( trigger ) { if ( TestMap ) { return; } sleep(1); ETUtil.WinningChat( TEAM.ALLIES ); sleep(1.5); ETUtil.LosingChat( TEAM.AXIS ); Util.MapDebugPrint( "^5Sniper_Tower_Destroyed" ); }, AlliesOnTheRoof = { Name = "AlliesOnTheRoof", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.Allies_On_The_Roof += 1; Util.MapDebugPrint( "^5Allies are near Sniper tower" ); if( GetEntClass(ent) == CLASS.ENGINEER ) { Map.Allied_Eng_On_The_Roof += 1; bot = Util.IsBot(ent); if (bot) { if ( bot.HasRole(ROLE.ATTACKER) ) { Map.All_Eng_On_Roof_Att0 += 1; } if ( bot.HasRole(ROLE.ATTACKER1) ) { Map.All_Eng_On_Roof_Att1 += 1; } if ( bot.HasRole(ROLE.ATTACKER2) ) { Map.All_Eng_On_Roof_Att2 += 1; } } } else { } SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_BunkerDoor_.*" ); //Defender1 SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender1_.*" ); //Defender1 yield(); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_BunkerDoor_.*" ); //Defender1 if ( Map.Back_Wall and !Map.BunkerDoorDestroyed ) //both intact { //SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender1_.*" ); //Defender1 } if ( !Map.Back_Wall and !Map.BunkerDoorDestroyed ) //back wall destroyed, bunker door intact { //SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender1_.*" ); //Defender1 SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender2_.*" ); //Defender2 } if ( Map.Back_Wall and Map.BunkerDoorDestroyed ) //back wall intact, bunker door destroyed { //SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender1_.*" ); //Defender1 SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender0_.*" ); //Defender } if ( !Map.Back_Wall and Map.BunkerDoorDestroyed ) //both destroyed { //SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender1_.*" ); //Defender1 SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender2_.*" ); //Defender2 SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender0_.*" ); //Defender } while ( Map.Allied_Eng_On_The_Roof > 0 ) { if ( Map.Allied_Eng_On_The_Roof == 1 ) { Util.BotChat( TEAM.AXIS, "sayteam", "^1" + Map.Allied_Eng_On_The_Roof + " allied eng is near Snipe Tower! DEFEND SNIPER TOWER!", 1 ); } else { Util.BotChat( TEAM.AXIS, "sayteam", "^1" + Map.Allied_Eng_On_The_Roof + " allied engs are near Snipe Tower! DEFEND SNIPER TOWER!!!", 1 ); } Util.MapDebugPrint( "^5Allied eng is near Sniper Tower" ); sleep(5); } } }, OnExit = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.Allies_On_The_Roof -= 1; if( GetEntClass(ent) == CLASS.ENGINEER ) { Map.Allied_Eng_On_The_Roof -= 1; bot = Util.IsBot(ent); if (bot) { if ( bot.HasRole(ROLE.ATTACKER) ) { Map.All_Eng_On_Roof_Att0 -= 1; if ( Map.All_Eng_On_Roof_Att0 == 0 and !Map.BunkerDoorDestroyed ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Sniper_Tower" ); //Attacker SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_SnipeTower_Attacker0_.*" ); //Attacker SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_SnipeTower_Defender0_.*" ); //Defender SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender0_01" ); //Defender SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender0_04" ); //Defender SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Bunker_Door" ); //Attacker SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_BunkerDoor_.*" ); //Attacker SetAvailableMapGoals( TEAM.ALLIES, true, "SMOKEBOMB_Allies_BunkerDoor_.*" ); //Attacker } } if ( bot.HasRole(ROLE.ATTACKER1) ) { Map.All_Eng_On_Roof_Att1 -= 1; if ( Map.All_Eng_On_Roof_Att1 == 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_SnipeTower_Defender1_.*" ); //Defender1 SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender1_01" ); //Defender1 SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender1_04" ); //Defender1 } } if ( bot.HasRole(ROLE.ATTACKER2) ) { Map.All_Eng_On_Roof_Att2 -= 1; if ( Map.All_Eng_On_Roof_Att2 == 0 and Map.Back_Wall ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_SnipeTower_At2" ); //Attacker2 SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_SnipeTower_Attacker2_.*" ); //Attacker2 SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_SnipeTower_Defender2_.*" ); //Defender2 SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender2_01" ); //Defender2 SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SnipeTower_Defender2_04" ); //Defender2 } } } if ( Map.Allied_Eng_On_The_Roof == 0 ) { Util.BotChat( TEAM.AXIS, "sayteam", "^2Allied engs left the Bunker roof! Sniper Tower is safe.", 1 ); Util.MapDebugPrint( "^5Allied engs left the Bunker roof" ); } } if ( Map.Allies_On_The_Roof == 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_SnipeTower_Defender1_.*" ); //Defender1 SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_SnipeTower_Defender2_.*" ); //Defender2 SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_SnipeTower_Defender0_.*" ); //Defender Util.BotChat( TEAM.AXIS, "sayteam", "^2All of allies left the Bunker roof! Bunker is safe.", 1 ); Util.MapDebugPrint( "^5All allies left the Bunker" ); } } }, }, AlliesNearBackWall = { Name = "AlliesNearBackWall", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.Allies_Near_Back_Wall += 1; if ( Map.Bunker_Door_Dyno == 0 or Map.BunkerDoorDestroyed ) { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.695, -0.687, 0.212) }; } if ( Map.Bunker_Door_Dyno > 0 ) { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.695, -0.687, 0.212), Vec3(-0.549, -0.796, 0.256) }; } } }, OnExit = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.Allies_Near_Back_Wall -= 1; if ( Map.Allies_Near_Back_Wall == 0 ) { if ( Map.Bunker_Door_Dyno == 0 or Map.BunkerDoorDestroyed ) { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.319, -0.924, 0.210), Vec3(-0.695, -0.687, 0.212) }; } if ( Map.Bunker_Door_Dyno > 0 ) { GetGoal("MOBILEMORTAR_Allies_BunkerArea_01").MortarAim = { Vec3(-0.480, -0.836, 0.260), Vec3(-0.647, -0.726, 0.234), Vec3(-0.319, -0.924, 0.210), Vec3(-0.695, -0.687, 0.212), Vec3(-0.549, -0.796, 0.256) }; } } } }, }, AlliesBehindSideWall = { Name = "AlliesBehindSideWall", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { bot = Util.IsBot(ent); if(bot) { bot.SetRoles(ROLE.AMBUSHER); } Util.MapDebugPrint( "^5Allies behind Side wall" ); } }, OnExit = function(ent) { }, }, AlliesInFirstSpawn = { Name = "AlliesInFirstSpawn", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { bot = Util.IsBot(ent); if(bot) { bot.ClearRoles(ROLE.AMBUSHER); } } }, OnExit = function(ent) { }, }, }; /* 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() { if ( TestMapOn ) { Util.AutoTestMap(); } // Register callback functions OnTrigger( "allies_hq_compost_constructed", Map.Allied_Command_Post_Built ); OnTrigger( "axis_hq_compost_constructed", Map.Axis_Command_Post_Built ); //OnTrigger( "MISSING_STRING", Map.Back_Wall_Built ); //without trigger => created Back wall thread OnTrigger( "^3The Bunker Door has been rebuilt!", Map.Bunker_Door_Built ); //OnTrigger( "MISSING_STRING", Map.Old_West_Tower_Barrier_Built ); //impossible OnTrigger( "^3Allies built the Old West Tower Ladder!", Map.Old_West_Tower_Ladder_Built ); //OnTrigger( "MISSING_STRING", Map.Sniper_Tower_Built ); //impossible OnTrigger( "Planted at the Allied Command Post.", Map.Allied_Command_Post_Planted ); OnTrigger( "Planted at Allied Command Post.", Map.Allied_Command_Post_Planted ); //Nitmod OnTrigger( "Planted at the Axis Command Post.", Map.Axis_Command_Post_Planted ); OnTrigger( "Planted at Axis Command Post.", Map.Axis_Command_Post_Planted ); //Nitmod OnTrigger( "Planted at the Back Wall.", Map.Back_Wall_Planted ); OnTrigger( "Planted at Back Wall.", Map.Back_Wall_Planted ); //Nitmod OnTrigger( "Planted at the Bunker Door.", Map.Bunker_Door_Planted ); OnTrigger( "Planted at Bunker Door.", Map.Bunker_Door_Planted ); //Nitmod OnTrigger( "Planted at the Compound Gate.", Map.Compound_Gate_Planted ); OnTrigger( "Planted at Compound Gate.", Map.Compound_Gate_Planted ); //Nitmod OnTrigger( "Planted at the Old West Tower Barrier.", Map.Old_West_Tower_Barrier_Planted ); OnTrigger( "Planted at Old West Tower Barrier.", Map.Old_West_Tower_Barrier_Planted ); //Nitmod OnTrigger( "Planted at the Old West Tower Ladder.", Map.Old_West_Tower_Ladder_Planted ); OnTrigger( "Planted at Old West Tower Ladder.", Map.Old_West_Tower_Ladder_Planted ); //Nitmod OnTrigger( "Planted at the Side Wall.", Map.Side_Wall_Planted ); OnTrigger( "Planted at Side Wall.", Map.Side_Wall_Planted ); //Nitmod OnTrigger( "Planted at the Sniper Tower.", Map.Sniper_Tower_Planted ); OnTrigger( "Planted at Sniper Tower.", Map.Sniper_Tower_Planted ); //Nitmod OnTrigger( "Defused at the Allied Command Post.", Map.Allied_Command_Post_Defused ); OnTrigger( "Defused at Allied Command Post.", Map.Allied_Command_Post_Defused ); //Nitmod OnTrigger( "Defused at the Axis Command Post.", Map.Axis_Command_Post_Defused ); OnTrigger( "Defused at Axis Command Post.", Map.Axis_Command_Post_Defused ); //Nitmod OnTrigger( "Defused at the Back Wall.", Map.Back_Wall_Defused ); OnTrigger( "Defused at Back Wall.", Map.Back_Wall_Defused ); //Nitmod OnTrigger( "Defused at the Bunker Door.", Map.Bunker_Door_Defused ); OnTrigger( "Defused at Bunker Door.", Map.Bunker_Door_Defused ); //Nitmod OnTrigger( "Defused at the Compound Gate.", Map.Compound_Gate_Defused ); OnTrigger( "Defused at Compound Gate.", Map.Compound_Gate_Defused ); //Nitmod OnTrigger( "Defused at the Old West Tower Barrier.", Map.Old_West_Tower_Barrier_Defused ); OnTrigger( "Defused at Old West Tower Barrier.", Map.Old_West_Tower_Barrier_Defused ); //Nitmod OnTrigger( "Defused at the Old West Tower Ladder.", Map.Old_West_Tower_Ladder_Defused ); OnTrigger( "Defused at Old West Tower Ladder.", Map.Old_West_Tower_Ladder_Defused ); //Nitmod OnTrigger( "Defused at the Side Wall.", Map.Side_Wall_Defused ); OnTrigger( "Defused at Side Wall.", Map.Side_Wall_Defused ); //Nitmod OnTrigger( "Defused at the Sniper Tower.", Map.Sniper_Tower_Defused ); OnTrigger( "Defused at Sniper Tower.", Map.Sniper_Tower_Defused ); //Nitmod OnTrigger( "allies_hq_compost_damaged", Map.Allied_Command_Post_Destroyed ); OnTrigger( "axis_hq_compost_damaged", Map.Axis_Command_Post_Destroyed ); OnTrigger( "^3The Back Gate has been damaged!", Map.Back_Wall_Destroyed ); OnTrigger( "^3Allies have destroyed the Bunker Door!", Map.Bunker_Door_Destroyed ); OnTrigger( "the Compound Gate Destroyed.", Map.Compound_Gate_Destroyed ); OnTrigger( "Compound Gate Destroyed.", Map.Compound_Gate_Destroyed ); //Nitmod OnTrigger( "^3Allies have destroyed the Old West Tower Barrier!", Map.Old_West_Tower_Barrier_Destroyed ); OnTrigger( "^3Axis destroyed the Old West Tower Ladder!", Map.Old_West_Tower_Ladder_Destroyed ); OnTrigger( "the Side Wall Destroyed.", Map.Side_Wall_Destroyed ); OnTrigger( "Side Wall Destroyed.", Map.Side_Wall_Destroyed ); //Nitmod OnTrigger( "^3The Sniper Tower has been destroyed!", Map.Sniper_Tower_Destroyed ); OnTrigger( "Axis reclaim the Forward Bunker!", Map.spawn_forward_flag_Axis_Captured ); OnTrigger( "Allies captured the Forward Bunker!", Map.spawn_forward_flag_Allies_Captured ); OnTrigger( "GRENADE_Wooden_Railing_01 Exploded.", Map.Wooden_Railing_01_Exploded ); OnTrigger( "GRENADE_Wooden_Railing_02 Exploded.", Map.Wooden_Railing_02_Exploded ); OnTrigger( "GRENADE_Wooden_Railing_03 Exploded.", Map.Wooden_Railing_03_Exploded ); OnTrigger( "GRENADE_Wooden_Railing_04 Exploded.", Map.Wooden_Railing_04_Exploded ); OnTrigger( "GRENADE_Wooden_Railing_05 Exploded.", Map.Wooden_Railing_05_Exploded ); OnTrigger( "GRENADE_Wooden_Railing_06 Exploded.", Map.Wooden_Railing_06_Exploded ); OnTrigger( "GRENADE_Wooden_Railing_07 Exploded.", Map.Wooden_Railing_07_Exploded ); OnTrigger( "GRENADE_Wooden_Railing_08 Exploded.", Map.Wooden_Railing_08_Exploded ); Util.DisableGoal( ".*", true ); Util.ClearRoleForGoals( ".*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); Util.ClearRoleForGoals( ".*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); Util.RemoveGoal( "BUILD_Sniper_Tower" ); Util.RemoveGoal( "BUILD_Old_West_Tower_Barrier" ); Util.LimitToClass("PLANT_Old_West_Tower_Ladder", TEAM.AXIS, CLASS.COVERTOPS); Util.LimitToClass("PLANT_Axis_Command_Post", TEAM.ALLIES, CLASS.COVERTOPS); Util.LimitToClass("PLANT_Allied_Command_Post", TEAM.AXIS, CLASS.COVERTOPS); Util.AddUseWp( "PLANT_Old_West_Tower_Ladder", "Ladder_Plant_WP" ); Util.AddUseWp( "PLANT_Old_West_Tower_Barrier", "Barrier_Plant_WP" ); Util.AddUseWp( "BUILD_Bunker_Door", "Bunker_Door_Build_WP" ); Util.AddUseWp( "PLANT_Side_Wall", "Side_Wall_Plant_WP" ); Util.SetGoalPosition(1094.073, -1808.125, 483.150, "PLANT_Old_West_Tower_Ladder"); Util.SetGoalPosition(1343.895, -2047.875, 178.661, "PLANT_Old_West_Tower_Barrier"); Util.SetGoalPosition(-1021.544, -899.440, 24.125, "PLANT_Compound_Gate"); Util.SetGoalPosition(-335.777, -1603.777, 1104.125, "PLANT_Sniper_Tower"); SetGoalPriority( "DEFUSE_Sniper_Tower_.*", 1.4, TEAM.AXIS, CLASS.ENGINEER, true ); SetGoalPriority( "DEFEND_Axis_SnipeTower_Defender0_.*", 0.52, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_SnipeTower_Defender0_01", 0.53, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_SnipeTower_Defender0_02", 0.53, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_SnipeTower_Defender1_.*", 0.52, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_SnipeTower_Defender1_01", 0.53, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_SnipeTower_Defender1_02", 0.53, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_SnipeTower_Defender2_.*", 0.53, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_SnipeTower_Defender2_01", 0.55, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_SnipeTower_Defender2_02", 0.55, TEAM.AXIS, 0 ); SetGoalPriority( "PLANT_Allied_Command_Post", 0.8, TEAM.AXIS, 0 ); SetGoalPriority( "ATTACK_Allies_SnipeTower_Attacker2_.*", 0.52, TEAM.ALLIES, 0 ); SetGoalPriority( "PLANT_Axis_Command_Post", 0.79, TEAM.ALLIES, 0 ); //Priorities for Role AMBUSHER: SetGoalPriority( "DEFEND_Allies_CompoundGate_.*", 0.54, TEAM.ALLIES, 0 ); SetGoalPriority( "PLANT_SideWall_Inside", 0.82, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Compound_Gate", 0.83, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_CompoundGate_Inside", 0.83, TEAM.ALLIES, CLASS.ENGINEER ); Wp.SetWaypointFlag( "Bunker_Door_Box", "closed", false ); Wp.SetWaypointFlag( "Ladder_1", "closed", true ); Wp.SetWaypointFlag( "on_ladder_1", "closed", true ); Wp.SetWaypointFlag( "on_ladder_2", "closed", true ); Wp.SetWaypointFlag( "WR1", "closed", true ); Wp.SetWaypointFlag( "WR2", "closed", true ); Wp.SetWaypointFlag( "WR3", "closed", true ); Wp.SetWaypointFlag( "WR4", "closed", true ); Wp.SetWaypointFlag( "WR5", "closed", true ); Wp.SetWaypointFlag( "WR6", "closed", true ); Wp.SetWaypointFlag( "WR7", "closed", true ); Wp.SetWaypointFlag( "WR8", "closed", true ); Wp.SetWaypointFlag( "WR9", "closed", true ); Wp.SetWaypointFlag( "WR10", "closed", true ); Wp.SetWaypointFlag( "WR11", "closed", true ); Wp.SetWaypointFlag( "WR12", "closed", true ); Wp.SetWaypointFlag( "WR13", "closed", true ); foreach ( id and bot in BotTable ) { if ( bot.GetTeam(TEAM.AXIS) ) { if ( bot.HasRole(ROLE.DEFENDER) ) { bot.ChangeSpawnPoint(2); } if ( bot.HasRole(ROLE.DEFENDER1) or bot.HasRole(ROLE.DEFENDER2) or bot.HasRole(ROLE.DEFENDER3) ) { bot.ChangeSpawnPoint(3); } } } SetAvailableMapGoals( TEAM.AXIS, true, "HEALTHCAB_supply_axis_cp_cabinet_health1" ); SetAvailableMapGoals( TEAM.AXIS, true, "HEALTHCAB_supply_axis_cp_cabinet_health" ); SetAvailableMapGoals( TEAM.AXIS, true, "HEALTHCAB_supply_jail_cabinet_health" ); SetAvailableMapGoals( TEAM.AXIS, true, "AMMOCAB_supply_jail_cabinet_ammo" ); SetAvailableMapGoals( TEAM.AXIS, true, "AMMOCAB_supply_axis_cp_cabinet_ammo1" ); SetAvailableMapGoals( TEAM.AXIS, true, "AMMOCAB_supply_axis_cp_cabinet_ammo" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideWall_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideWallUp_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_WestTower_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_WestTowerUp_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, true, "HEALTHCAB_allied_cp_health_cabinet" ); SetAvailableMapGoals( TEAM.ALLIES, true, "HEALTHCAB_supply_central_script" ); SetAvailableMapGoals( TEAM.ALLIES, true, "HEALTHCAB_misc_cabinet_health2" ); SetAvailableMapGoals( TEAM.ALLIES, true, "HEALTHCAB_misc_cabinet_health3" ); SetAvailableMapGoals( TEAM.ALLIES, true, "AMMOCAB_allied_cp_ammo_cabinet" ); SetAvailableMapGoals( TEAM.ALLIES, true, "AMMOCAB_supply_central_script" ); SetAvailableMapGoals( TEAM.ALLIES, true, "AMMOCAB_misc_cabinet_supply1" ); SetAvailableMapGoals( TEAM.ALLIES, true, "AMMOCAB_misc_cabinet_supply2" ); SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Allied_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Side_Wall" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Old_West_Tower_Barrier" ); SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allies_SideWall_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allies_WestTower_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CHECKPOINT_spawn_forward_flag" ); //infiltrator SetAvailableMapGoals( TEAM.ALLIES, false, "ROUTE_Ladder" ); // Max users per goal Util.SetMaxUsers( 1, "GRENADE_.*" ); Util.SetMaxUsers( 1, "MOUNTMG42_.*" ); Util.SetMaxUsers( 3, "CHECKPOINT_spawn_forward_flag" ); Util.SetMaxUsers( 1, "PLANT_Old_West_Tower_Ladder" ); Util.SetMaxUsers( 1, "PLANT_CompoundGate_Inside" ); Util.SetMaxUsers( 1, "BUILD_Axis_Command_Post" ); Util.SetMaxUsers( 1, "BUILD_Allied_Command_Post" ); WeaponTable.SetWeaponAvailability ( CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); WeaponTable.SetWeaponAvailability ( CLASS.SOLDIER, WEAPON.MORTAR, false ); WeaponTable.SetWeaponAvailability ( CLASS.SOLDIER, WEAPON.MOBILE_MG42, false ); Allies1 = OnTriggerRegion(AABB(-452.318,-1750.836,641.125,650.264,-1076.584,1331.002), Map.AlliesOnTheRoof); Allies2 = OnTriggerRegion(AABB(-816.875,-2032.875,641.125,512.875,-1707.125,752.642), Map.AlliesOnTheRoof); Allies3 = OnTriggerRegion(AABB(-816.875,-1705.796,641.282,-419.125,-1091.625,743.816), Map.AlliesOnTheRoof); Allies4 = OnTriggerRegion(AABB(439.125,-2032.875,417.067,1077.229,-1202.533,491.125), Map.AlliesNearBackWall); Map.AMB1 = OnTriggerRegion(AABB(-2024.875,-2024.875,1.178,-991.306,-271.125,408.218), Map.AlliesBehindSideWall); Map.AMB2 = OnTriggerRegion(AABB(-2040.875,-272.094,1.125,-1415.125,-135.125,408.218), Map.AlliesBehindSideWall); Map.AIFS = OnTriggerRegion(AABB(-1455.850,943.125,1.125,629.956,2008.130,402.178), Map.AlliesInFirstSpawn); BD1 = OnTriggerRegion(AABB(-581.929,497.865,201.125,-515.225,565.125,318.932), RegionTrigger.BreakableDistance); //ATTACK_Allies_SideWall_01 BD2 = OnTriggerRegion(AABB(-721.456,598.178,201.125,-634.180,687.638,318.932), RegionTrigger.BreakableDistance); //ATTACK_Allies_SideWall_02 BD3 = OnTriggerRegion(AABB(-250.950,491.128,201.146,-164.161,568.197,318.932), RegionTrigger.BreakableDistance); //ATTACK_Allies_SideWall_04 BD4 = OnTriggerRegion(AABB(1612.654,-1478.709,9.125,1703.130,-1391.026,113.029), RegionTrigger.BreakableDistance); //ATTACK_Allies_WestTower_05 DCM1 = OnTriggerRegion(AABB(-720.061,491.930,457.125,-546.624,669.026,531.125), RegionTrigger.DisableCombatMovement); //ATTACK_Allies_SideWall_06 DBP1 = OnTriggerRegion(AABB(-720.061,491.930,457.125,-546.624,669.026,531.125), RegionTrigger.DisableBotPush); DCM2 = OnTriggerRegion(AABB(-499.435,496.826,457.125,-344.600,700.417,531.125), RegionTrigger.DisableCombatMovement); //ATTACK_Allies_SideWall_07 DBP2 = OnTriggerRegion(AABB(-499.435,496.826,457.125,-344.600,700.417,531.125), RegionTrigger.DisableBotPush); DCM3 = OnTriggerRegion(AABB(-1360.004,455.275,23.023,-1265.097,532.319,114.755), RegionTrigger.DisableCombatMovement); //ATTACK_Allies_SideWall_08 DBP3 = OnTriggerRegion(AABB(-1360.004,455.275,23.023,-1265.097,532.319,114.755), RegionTrigger.DisableBotPush); DCM4 = OnTriggerRegion(AABB(-657.357,1388.052,417.125,-546.563,1563.923,1223.125), RegionTrigger.DisableCombatMovement); //Tower above first allied spawn DBP4 = OnTriggerRegion(AABB(-657.357,1388.052,417.125,-546.563,1563.923,1223.125), RegionTrigger.DisableBotPush); DCM5 = OnTriggerRegion(AABB(939.369,-2032.873,152.517,1264.875,-1807.128,620.589), RegionTrigger.DisableCombatMovement); //Inside old west tower DBP5 = OnTriggerRegion(AABB(939.369,-2032.873,152.517,1264.875,-1807.128,620.589), RegionTrigger.DisableBotPush); DCM6 = OnTriggerRegion(AABB(-323.718,-1700.875,649.125,-211.125,-1543.522,1155.125), RegionTrigger.DisableCombatMovement); //Ladder in sniper tower DBP6 = OnTriggerRegion(AABB(-323.718,-1700.875,649.125,-211.125,-1543.522,1155.125), RegionTrigger.DisableBotPush); DCM7 = OnTriggerRegion(AABB(-936.875,-804.654,1.125,-865.634,-662.638,75.125), RegionTrigger.DisableCombatMovement); //PLANT_CompoundGate_Inside DBP7 = OnTriggerRegion(AABB(-936.875,-804.654,1.125,-865.634,-662.638,75.125), RegionTrigger.DisableBotPush); RegionTrigger.Create(AABB(-435.433,-733.535,1.204,712.858,-569.947,527.147), "DisableCombatMovement", "Front way on hill"); RegionTrigger.Create(AABB(875.391,-1398.839,4.458,1105.010,-365.134,533.940), "DisableCombatMovement", "Side way on hill"); RegionTrigger.Create(AABB(-1528.976,-1040.875,183.824,-831.788,-895.125,491.125), "DisableCombatMovement", "Jump_from_Hill"); RegionTrigger.Create(AABB(895.125,-1302.996,417.125,995.087,-783.125,534.973), "DisableCombatMovement", "Railing_Side_way"); RegionTrigger.Create(AABB(1000.207,-2048.875,617.125,1289.610,-1807.126,891.125), "DisableCombatMovement", "Top_of_West_tower"); RegionTrigger.Create(AABB(1768.215,-677.696,1.125,2009.534,-585.590,371.336), "DisableCombatMovement", "Outside_West_tower_barrier_1"); RegionTrigger.Create(AABB(1851.024,-1152.875,126.133,2048.875,-679.886,269.648), "DisableCombatMovement", "Outside_West_tower_barrier_2"); RegionTrigger.Create(AABB(1592.546,-2048.872,155.051,2048.875,-1129.465,627.842), "DisableCombatMovement", "Outside_West_tower_barrier_3"); RegionTrigger.Create(AABB(1529.216,-1978.986,1.125,1813.103,-1787.468,587.125), "DisableCombatMovement", "Outside_West_tower_barrier_4"); RegionTrigger.Create(AABB(908.935,-1488.752,417.125,1016.875,-1380.045,491.129), "DisableCombatMovement", "AIRSTRIKE_Axis_WestTowerUp_10"); RegionTrigger.Create(AABB(-2024.875,-1362.058,1.125,-1868.326,-1147.265,143.542), "DisableCombatMovement", "DEFEND_Axis_CompoundGate_05"); RegionTrigger.Create(AABB(-1798.721,-1451.279,190.873,-1383.753,-854.252,411.136), "DisableCombatMovement", "Roof infront of compound gate"); RegionTrigger.Create(AABB(-1848.875,-678.240,1.127,-1737.365,-254.717,229.026), "DisableCombatMovement", "In forward spawn"); RegionTrigger.Create(AABB(693.926,-738.266,417.125,799.968,-639.125,491.125), "DisableBotPush", "DEFEND_Axis_SideWallUp_04"); RegionTrigger.Create(AABB(703.125,-833.769,417.125,753.011,-783.125,491.125), "DisableBotPush", "DEFEND_Axis_SideWallUp_05"); RegionTrigger.Create(AABB(1039.125,-2011.510,233.125,1098.014,-1936.528,307.125), "DisableBotPush", "DEFEND_Axis_WestTower_01"); RegionTrigger.Create(AABB(1196.480,-2032.875,1.140,1264.875,-1952.374,75.140), "DisableBotPush", "DEFEND_Axis_WestTower_05"); RegionTrigger.Create(AABB(916.889,-912.153,401.150,1027.135,-821.491,491.125), "DisableBotPush", "DEFEND_Axis_WestTowerUp_03"); RegionTrigger.Create(AABB(1178.830,-1884.519,617.125,1258.522,-1807.125,691.125), "DisableBotPush", "DEFEND_Axis_WestTowerUp_04"); RegionTrigger.Create(AABB(1247.737,-2048.875,817.125,1306.488,-1945.507,891.125), "DisableBotPush", "DEFEND_Axis_WestTowerUp_05"); RegionTrigger.Create(AABB(-1846.671,-996.424,1.125,-1761.705,-915.813,75.125), "DisableBotPush", "MOBILEMG42_Axis_CompoundGate_20"); RegionTrigger.Create(AABB(-1998.499,-720.942,1.125,-1919.807,-655.051,75.125), "DisableBotPush", "MOBILEMG42_Axis_CompoundGate_21"); RegionTrigger.Create(AABB(-2024.875,-1228.804,53.932,-1935.429,-1128.020,142.347), "DisableBotPush", "DEFEND_Axis_CompoundGate_05"); RegionTrigger.Create(AABB(-1491.298,-1511.369,1.125,-1425.201,-1447.481,43.125), "DisableBotPush", "DEFEND_Axis_CompoundGate_06"); RegionTrigger.Create(AABB(-1800.349,-937.194,189.960,-1741.548,-840.646,312.839), "DisableBotPush", "DEFEND_Axis_CompoundGate_07"); RegionTrigger.Create(AABB(-1470.394,-691.075,153.125,-1402.816,-639.125,227.125), "DisableBotPush", "DEFEND_Axis_CompoundGate_08"); RegionTrigger.Create(AABB(444.823,-1812.604,417.125,531.498,-1743.125,491.125), "DisableBotPush", "MOBILEMG42_Axis_BackWall_20"); RegionTrigger.Create(AABB(465.749,-1801.622,649.125,512.875,-1734.821,723.125), "DisableBotPush", "DEFEND_Axis_BackWall_05"); RegionTrigger.Create(AABB(1204.263,-1856.210,361.125,1264.875,-1807.125,435.125), "DisableBotPush", "DEFEND_Axis_BackWall_06"); RegionTrigger.Create(AABB(1220.215,-1994.796,489.125,1264.875,-1948.265,563.125), "DisableBotPush", "DEFEND_Axis_BackWall_07"); RegionTrigger.Create(AABB(-569.829,-800.909,417.125,-504.513,-733.587,499.125), "DisableBotPush", "DEFEND_Axis_BunkerDoor_04"); RegionTrigger.Create(AABB(-645.025,-726.727,417.125,-591.126,-661.102,491.125), "DisableBotPush", "DEFEND_Axis_BunkerDoor_07"); RegionTrigger.Create(AABB(1453.897,687.691,41.125,1512.849,760.873,115.125), "DisableBotPush", "SNIPE_Allies_SideWall_20"); RegionTrigger.Create(AABB(1752.747,-2048.875,513.125,1843.610,-1970.754,587.125), "DisableBotPush", "ATTACK_Allies_WestTower_08"); Util.SetRoleForGoals("CHECKPOINT_spawn_forward_flag", { ROLE.INFILTRATOR, ROLE.AMBUSHER } ); Util.SetRoleForGoals(".*_Axis_SideWall_.*", ROLE.DEFENDER); Util.SetRoleForGoals("DEFEND_Axis_SnipeTower_Defender0_.*", ROLE.DEFENDER); Util.SetRoleForGoals(".*_Axis_SideWallUp_.*", ROLE.DEFENDER1); Util.SetRoleForGoals("DEFEND_Axis_SnipeTower_Defender1_.*", ROLE.DEFENDER1); Util.SetRoleForGoals(".*_Axis_WestTower_.*", ROLE.DEFENDER2); Util.SetRoleForGoals("DEFEND_Axis_SnipeTower_Defender2_.*", ROLE.DEFENDER2); Util.SetRoleForGoals(".*_Axis_WestTowerUp_.*", ROLE.DEFENDER3); Util.SetRoleForGoals("BUILD_Axis_Command_Post", { ROLE.DEFENDER2, ROLE.DEFENDER3 }); Util.SetRoleForGoals("BUILD_Back_Wall", { ROLE.DEFENDER2, ROLE.DEFENDER3 }); Util.SetRoleForGoals("BUILD_Bunker_Door", { ROLE.DEFENDER, ROLE.DEFENDER1 }); Util.SetRoleForGoals("MOUNTMG42_Bunker_Lower_Right", { ROLE.DEFENDER, ROLE.DEFENDER1 }); Util.SetRoleForGoals("REPAIRMG42_Bunker_Lower_Right", { ROLE.DEFENDER, ROLE.DEFENDER1 }); Util.SetRoleForGoals(".*_Axis_CompoundGate_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 }); Util.SetRoleForGoals(".*_Axis_BunkerDoor_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 }); Util.SetRoleForGoals(".*_Axis_BackWall_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 }); Util.SetRoleForGoals("PLANT_Allied_Command_Post", ROLE.INFILTRATOR ); Util.SetRoleForGoals("PLANT_Side_Wall", { ROLE.ATTACKER, ROLE.ATTACKER1 }); Util.SetRoleForGoals("PLANT_CompoundGate_Inside", { ROLE.ATTACKER, ROLE.ATTACKER1 }); Util.SetRoleForGoals("PLANT_SideWall_Inside", ROLE.AMBUSHER ); Util.SetRoleForGoals("PLANT_Compound_Gate", ROLE.AMBUSHER ); Util.SetRoleForGoals("PLANT_Bunker_Door", ROLE.ATTACKER ); Util.SetRoleForGoals("SMOKEBOMB_Allies_BunkerDoor_.*", { ROLE.ATTACKER, ROLE.ATTACKER1 }); Util.SetRoleForGoals("PLANT_Old_West_Tower_Barrier", { ROLE.ATTACKER2, ROLE.ATTACKER3 }); Util.SetRoleForGoals("BUILD_Old_West_Tower_Ladder", { ROLE.ATTACKER2, ROLE.ATTACKER3 }); Util.SetRoleForGoals("MOBILEMORTAR_Allies_BunkerArea_01", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 }); Util.SetRoleForGoals("BUILD_Allied_Command_Post", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 }); Util.SetRoleForGoals("PLANT_Back_Wall", { ROLE.ATTACKER2, ROLE.ATTACKER3 }); Util.SetRoleForGoals(".*_Allies_SideWall_.*", { ROLE.ATTACKER, ROLE.ATTACKER1 }); Util.SetRoleForGoals("SMOKEBOMB_Allies_CompoundGate_.*", { ROLE.ATTACKER, ROLE.ATTACKER1 }); Util.SetRoleForGoals("DEFEND_Allies_CompoundGate_.*", ROLE.AMBUSHER ); Util.SetRoleForGoals(".*_Allies_WestTower_.*", { ROLE.ATTACKER2, ROLE.ATTACKER3 }); Util.SetRoleForGoals(".*_Allies_BackWall_.*", { ROLE.ATTACKER2, ROLE.ATTACKER3 }); Util.SetRoleForGoals("ATTACK_Allies_BunkerDoor_.*", ROLE.ATTACKER); Util.SetRoleForGoals("ATTACK_Allies_SnipeTower_Attacker0_.*", ROLE.ATTACKER); Util.SetRoleForGoals("ATTACK_Allies_SnipeTower_Attacker1_.*", ROLE.ATTACKER1); Util.SetRoleForGoals("ATTACK_Allies_SnipeTower_Attacker2_.*", ROLE.ATTACKER2); Util.SetRoleForGoals("PLANT_Sniper_Tower", ROLE.ATTACKER); Util.SetRoleForGoals("PLANT_SnipeTower_At1", ROLE.ATTACKER1); Util.SetRoleForGoals("PLANT_SnipeTower_At2", ROLE.ATTACKER2); thread(Map.BackWall_Thread); 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 ) { sleep(0.5); if ( bot.GetTeam(TEAM.AXIS) and Map.Side_Wall ) { if ( bot.HasRole(ROLE.DEFENDER) ) { bot.ChangeSpawnPoint(2); } if ( bot.HasRole(ROLE.DEFENDER1) or bot.HasRole(ROLE.DEFENDER2) or bot.HasRole(ROLE.DEFENDER3) ) { bot.ChangeSpawnPoint(3); } } if ( Map.Forward_spawn_Allied and !Map.CompoundGateDestroyed ) { if ( bot.GetTeam(TEAM.ALLIES) and ( bot.HasRole(ROLE.ATTACKER) or bot.HasRole(ROLE.ATTACKER1) )) { bot.ChangeSpawnPoint(2); } } }; global InitializeRoutes = function() { MapRoutes = { BUILD_Bunker_Door = { }, PLANT_Bunker_Door = { ROUTE_ForwardSpawn = { ROUTE_FrontWay = { }, ROUTE_SideWay1 = { ROUTE_SideWay2 = { }, }, }, ROUTE_ForwardSpawn1 = { ROUTE_FrontWay = { }, ROUTE_SideWay1 = { ROUTE_SideWay2 = { }, }, }, ROUTE_AlliedSpawn = { ROUTE_FrontWay = { }, ROUTE_SideWay1 = { ROUTE_SideWay2 = { }, }, ROUTE_BackWall = { ROUTE_SideWay1 = { ROUTE_SideWay2 = { }, }, ROUTE_Ladder = { }, }, }, ROUTE_AlliedSpawn1 = { ROUTE_FrontWay = { }, ROUTE_SideWay1 = { ROUTE_SideWay2 = { }, }, ROUTE_BackWall = { ROUTE_SideWay1 = { ROUTE_SideWay2 = { }, }, ROUTE_Ladder = { }, }, }, }, PLANT_Compound_Gate = { }, BUILD_Axis_Command_Post = { }, PLANT_Axis_Command_Post = { }, PLANT_Sniper_Tower = { }, PLANT_Side_Wall = { }, CHECKPOINT_spawn_forward_flag = { }, BUILD_Allied_Command_Post = { }, PLANT_Allied_Command_Post = { }, BUILD_Old_West_Tower_Ladder = { }, PLANT_Old_West_Tower_Ladder = { }, PLANT_Old_West_Tower_Barrier = { }, BUILD_Back_Wall = { }, PLANT_Back_Wall = { ROUTE_AlliedSpawn = { ROUTE_BackWall = { ROUTE_Ladder = { }, ROUTE_SideWay1 = { ROUTE_SideWay2 = { }, }, }, }, ROUTE_AlliedSpawn1 = { ROUTE_BackWall = { ROUTE_Ladder = { }, ROUTE_SideWay1 = { ROUTE_SideWay2 = { }, }, }, }, ROUTE_ForwardSpawn = { ROUTE_FrontWay = { }, ROUTE_SideWay1 = { ROUTE_SideWay2 = { }, }, }, ROUTE_ForwardSpawn1 = { ROUTE_FrontWay = { }, ROUTE_SideWay1 = { ROUTE_SideWay2 = { }, }, }, }, PLANT_CompoundGate_Inside = { ROUTE_AlliedSpawn = { ROUTE_BackWall = { ROUTE_plant1 = { ROUTE_plant2 = { ROUTE_plant3 = { ROUTE_plant4 = { ROUTE_plant5 = { ROUTE_plant6 = { }, }, }, }, }, }, }, }, ROUTE_AlliedSpawn1 = { ROUTE_BackWall = { ROUTE_plant1 = { ROUTE_plant2 = { ROUTE_plant3 = { ROUTE_plant4 = { ROUTE_plant5 = { ROUTE_plant6 = { }, }, }, }, }, }, }, }, ROUTE_ForwardSpawn = { ROUTE_BackWall = { ROUTE_plant1 = { ROUTE_plant2 = { ROUTE_plant3 = { ROUTE_plant4 = { ROUTE_plant5 = { ROUTE_plant6 = { }, }, }, }, }, }, }, }, ROUTE_ForwardSpawn1 = { ROUTE_BackWall = { ROUTE_plant1 = { ROUTE_plant2 = { ROUTE_plant3 = { ROUTE_plant4 = { ROUTE_plant5 = { ROUTE_plant6 = { }, }, }, }, }, }, }, }, }, }; Util.Routes(MapRoutes); MapRoutes["ATTACK_Allies_BunkerDoor_.*"] = MapRoutes.PLANT_Bunker_Door; MapRoutes["ATTACK_Allies_BackWall_.*"] = MapRoutes.PLANT_Back_Wall; };