//========================================================================================== // // mountainpass.gm // // Who When What //------------------------------------------------------------------------------------------ // rand0m# 11.9.2016 Initial Script & waypoints // Native12 03.11.2016 Released // Native12 22.02.2017 Adapted from Mountain pass beta 3 to Mountain pass beta 4 (waypoints, moved goals....) // // Bugs and suggestions: PM on http://omni-bot.invisionzone.com/index.php?/index // //========================================================================================== // global Map = { Debug = 0, DontDispenseAmmo = true, Mines_Intels_Stolen = false, WoodFenceDestroyed = false, ForwardspawnAxis = true, Roles = { AXIS = { AllBots = true, // each bot is considered for a role DEFENDER = { numbots = 5, }, DEFENDER1 = { numbots = 5, }, DEFENDER2 = { numbots = 5, }, DEFENDER3 = { numbots = 5, }, }, ALLIES = { AllBots = true, // each bot is considered for a role ATTACKER = { numbots = 5, }, ATTACKER1 = { numbots = 5, }, ATTACKER2 = { numbots = 5, }, ATTACKER3 = { numbots = 5, }, }, }, forwardspawn_Axis_Captured = function( trigger ) { Map.ForwardspawnAxis = true; SetGoalRole( "FLAG_docs", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_Allies_Spawn_.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "SMOKEBOMB_Spawn" ); SetAvailableMapGoals( TEAM.ALLIES, true, "SMOKEBOMB_Spawn" ); if ( !Map.Mines_Intels_Stolen ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Spawn_.*" ); } else { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Spawn_.*" ); } Util.MapDebugPrint( "forwardspawn_Axis_Captured" ); }, forwardspawn_Allies_Captured = function( trigger ) { Map.ForwardspawnAxis = false; SetAvailableMapGoals( 0, true, "CHECKPOINT_forwardspawn" ); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_Spawn_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "SMOKEBOMB_Spawn" ); SetAvailableMapGoals( TEAM.AXIS, true, "SMOKEBOMB_Spawn" ); SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_Allies_Spawn_.*" ); ClearGoalRole( "FLAG_docs", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); ClearGoalRole( ".*_Axis_Spawn_.*", ROLE.DEFENDER2 ); SetGoalRole( "DEFEND_Axis_MinesIntels_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } ); Util.MapDebugPrint( "forwardspawn_Allies_Captured" ); }, Wood_Fence_Planted = function( trigger ) { Util.MapDebugPrint( "Wood_Fence_Planted" ); }, Wood_Fence_Defused = function( trigger ) { Util.MapDebugPrint( "Wood_Fence_Defused" ); }, Wood_Fence_Destroyed = function( trigger ) { Map.WoodFenceDestroyed = true; Util.MapDebugPrint( "Wood_Fence_Destroyed" ); sleep(2); SetAvailableMapGoals( TEAM.AXIS, true, "PLANTMINE_Truck_.*" ); if ( Map.Mines_Intels_Stolen ) { SetAvailableMapGoals( TEAM.ALLIES, false, "CAPPOINT_HiddenPlace_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CAPPOINT_Truck" ); } }, docs_Taken = function( trigger ) { Map.Mines_Intels_Stolen = true; ClearGoalRole( "CHECKPOINT_forwardspawn", ROLE.DEFENDER1 ); SetGoalRole( "PLANT_Wood_Fence", { ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_MinesIntels_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "FLAG_docs" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_CappointPlace_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_Allies_CappointPlace_.*" ); if ( Map.ForwardspawnAxis ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Spawn_.*" ); } if ( Map.WoodFenceDestroyed ) { SetAvailableMapGoals( TEAM.ALLIES, true, "CAPPOINT_Truck" ); } else { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_LookForGold_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CAPPOINT_HiddenPlace_.*" ); } Util.MapDebugPrint( "docs_Taken" ); }, docs_Dropped = function( trigger ) { Util.MapDebugPrint( "docs_Dropped" ); }, docs_Returned = function( trigger ) { Map.Mines_Intels_Stolen = false; ClearGoalRole( "PLANT_Wood_Fence", ROLE.ATTACKER1 ); SetGoalRole( "CHECKPOINT_forwardspawn", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.ATTACKER, ROLE.ATTACKER1 } ); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_CappointPlace_.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_LookForGold_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "CAPPOINT_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_Allies_CappointPlace_.*" ); if ( Map.ForwardspawnAxis ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Spawn_.*" ); } SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_MinesIntels_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "FLAG_docs" ); Util.MapDebugPrint( "docs_Returned" ); }, docs_Secured = function( trigger ) { ETUtil.WinningChat( TEAM.ALLIES ); Util.MapDebugPrint( "docs_Secured" ); }, }; global OnMapLoad = function() { OnTrigger( "Planted at ^2the wood fence.", Map.Wood_Fence_Planted ); OnTrigger( "Planted at ^2wood fence.", Map.Wood_Fence_Planted ); //Nitmod OnTrigger( "Defused at ^2the wood fence.", Map.Wood_Fence_Defused ); OnTrigger( "Defused at ^2wood fence.", Map.Wood_Fence_Defused ); //Nitmod OnTrigger( "^2Allies have destroyed the wood fence!", Map.Wood_Fence_Destroyed ); OnTrigger( "Allies have stolen the mines intels!", Map.docs_Taken ); OnTrigger( "Flag dropped docs!", Map.docs_Dropped ); OnTrigger( "Flag returned docs!", Map.docs_Returned ); OnTrigger( "Allies captured securing_trigger", Map.docs_Secured ); OnTrigger( "^2Axis re-captured the spawn", Map.forwardspawn_Axis_Captured ); OnTrigger( "^2Allied captured the spawn", Map.forwardspawn_Allies_Captured ); Util.DisableGoal( ".*", true ); ETUtil.SetCabinets(); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.MORTAR, false ); WeaponTable.SetWeaponTeamAvailability ( TEAM.ALLIES, CLASS.SOLDIER, WEAPON.MOBILE_MG42, false ); ClearGoalRole( ".*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3, ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); SetAvailableMapGoals( 0, true, "AMMOCAB_.*" ); SetAvailableMapGoals( 0, true, "HEALTHCAB_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Spawn_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_MinesIntels_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "PLANTMINE_Axis_Outside_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CHECKPOINT_forwardspawn" ); SetAvailableMapGoals( TEAM.ALLIES, true, "FLAG_docs" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Wood_Fence" ); SetAvailableMapGoals( TEAM.ALLIES, true, "SMOKEBOMB_Spawn" ); SetGoalRole( "SMOKEBOMB_Spawn", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3, ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); SetGoalRole( "CHECKPOINT_forwardspawn", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.ATTACKER, ROLE.ATTACKER1 } ); SetGoalRole( "DEFEND_Axis_Spawn_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2 } ); SetGoalRole( "DEFEND_Axis_CappointPlace_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); SetGoalRole( "DEFEND_Axis_LookForGold_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } ); SetGoalRole( "DEFEND_Axis_MinesIntels_.*", ROLE.DEFENDER3 ); SetGoalRole( "FLAG_docs", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); SetGoalRole( "PLANT_Wood_Fence", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); SetGoalRole( "DEFEND_Allies_Spawn_.*", ROLE.ATTACKER ); SetGoalPriority( "CHECKPOINT_forwardspawn", 0.8, 0, 0 ); SetGoalPriority( "SMOKEBOMB_Spawn", 0.81, 0, 0 ); SetGoalPriority( "PLANTMINE_.*", 0.78, TEAM.AXIS, 0 ); SetGoalPriority( "PLANTMINE_Truck_.*", 0.79, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_MinesIntels_10", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_MinesIntels_11", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_CappointPlace_.*", 0.52, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_LookForGold_.*", 0.53, TEAM.AXIS, 0 ); SetGoalPriority( "MOBILEMG42_Axis_Spawn_.*", 0.99, TEAM.AXIS, CLASS.SOLDIER ); Util.SetMaxUsers( 2, "PLANT_Wood_Fence" ); Util.SetMaxUsers( 1, "DEFEND_Axis_LookForGold_.*" ); Util.SetMaxUsers( 1, "DEFEND_Axis_MinesIntels_10" ); Util.SetMaxUsers( 1, "DEFEND_Axis_MinesIntels_11" ); Util.SetMaxUsers( 1, "SMOKEBOMB_Spawn" ); Util.AddUseWp( "CHECKPOINT_forwardspawn", "Flag_1" ); Util.AddUseWp( "CHECKPOINT_forwardspawn", "Flag_2" ); Util.AddUseWp( "CHECKPOINT_forwardspawn", "Flag_3" ); Util.AddUseWp( "CHECKPOINT_forwardspawn", "Flag_4" ); Util.AddUseWp( "PLANT_Wood_Fence", "Fence_1" ); Util.AddUseWp( "PLANT_Wood_Fence", "Fence_2" ); RegionTrigger.Create(AABB(-3362.517,-1313.202,562.171,-3092.932,-788.701,903.704), "DisableCombatMovement", "Flag_Area"); print( "^3Omni-bot map script ^3by ^1Q^2i^3k^4i ^3and ^1n^2a^4t^8i^3v^5e12^3 for map: ^7" + GetMapName() ); Util.BotChat( 0, "say", "^3Omni-bot map script ^3by ^1Q^2i^3k^4i ^3and ^1n^2a^4t^8i^3v^5e12", 1 ); }; global OnBotJoin = function( bot ) { WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.MORTAR, false ); WeaponTable.SetWeaponTeamAvailability ( TEAM.ALLIES, CLASS.SOLDIER, WEAPON.MOBILE_MG42, false ); }; global InitializeRoutes = function() { MapRoutes = { PLANT_Wood_Fence = { }, CHECKPOINT_forwardspawn = { }, FLAG_docs = { }, }; Util.Routes(MapRoutes); };