//========================================================================================== // // v2base_te.gm // // Who When What //---------------- -------------------------------------------------------------------------- // crapshoot 02.07.2010 script for 0.8 et // IRATA[*] 27.11.2010 some "copy and paste" syntax errors fixed, "print" changed to Util.MapDebugPrint // palota 2013 & 2014 next updates // Qiki, native12 25.03.2021 start with updating of Script & waypoints, rename & replace goals, added goals etc. // native12 14.08.2021 end of test // Qiki 15.08.2021 fixed stuckages // native12 15.08.2021 released // //========================================================================================== // global Map = { Debug = 0, Allied_Command_Post = false, Axis_Command_Post = false, Field_MG42 = false, Fortress_Ladder = false, Spawn_MG42 = false, Base_Wall = true, Storage_Wall = true, Documents_Taken = false, Tower_Axis = false, Tower_Allies = false, SpawnMG42_Fixed = false, count_ally_out = {}, count_ally_ins = {}, AllyWithWD_Ins = false, AllyWithWD_Out = false, DontDispenseAmmo = true, Roles = { ALLIES = { AllBots = true, // each bot is considered for a role ATTACKER = { numbots = 5, crucialClass = CLASS.ENGINEER, }, ATTACKER1 = { numbots = 5, crucialClass = CLASS.ENGINEER, }, ATTACKER2 = { numbots = 5, crucialClass = CLASS.ENGINEER, }, ATTACKER3 = { numbots = 5, //crucialClass = CLASS.ENGINEER, }, }, AXIS = { AllBots = true, // each bot is considered for a role DEFENDER = { numbots = 5, crucialClass = CLASS.ENGINEER, }, DEFENDER1 = { numbots = 5, crucialClass = CLASS.ENGINEER, }, DEFENDER2 = { numbots = 5, crucialClass = CLASS.FIELDOPS, }, DEFENDER3 = { 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:jump_wait jump_wait = { navigate = function(_this) { sleep(0.25); _this.Bot.HoldButton(BTN.JUMP, 0.55); sleep(0.55); }, }, }, Allied_Command_Post_Built = function( trigger ) { Map.Allied_Command_Post = true; Util.MapDebugPrint( "Allied_Command_Post_Built" ); SetAvailableMapGoals( TEAM.ALLIES, false, { "BUILD_Allied_Command_Post", }); SetAvailableMapGoals( TEAM.AXIS, true, { "PLANT_Allied_Command_Post", }); }, Allied_Command_Post_Planted = function( trigger ) { Util.MapDebugPrint( "Allied_Command_Post_Planted" ); Util.SetMaxUsers( 1, "DEFUSE_Allied_Command_Post_.*" ); foreach( goal in Util.GoalTable("DEFUSE_Allied_Command_Post_.*") ) { name = goal.GetName(); Util.SetGoalRange( name, 900); } }, Allied_Command_Post_Defused = function( trigger ) { Util.MapDebugPrint( "Allied_Command_Post_Defused" ); }, Allied_Command_Post_Destroyed = function( trigger ) { Util.MapDebugPrint( "Allied_Command_Post_Destroyed" ); Map.Allied_Command_Post = false; foreach( goal in Util.GoalTable("DEFUSE_Allied_Command_Post_.*") ) { goal.SetAvailable(TEAM.ALLIES, false); } SetAvailableMapGoals( TEAM.AXIS, false, { "PLANT_Allied_Command_Post", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_Allied_Command_Post", }); }, Axis_Command_Post_Built = function( trigger ) { Util.MapDebugPrint( "Axis_Command_Post_Built" ); Map.Axis_Command_Post = true; SetAvailableMapGoals( TEAM.AXIS, false, { "BUILD_Axis_Command_Post", }); if ( !Map.Base_Wall ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Axis_Command_Post", }); } }, Axis_Command_Post_Planted = function( trigger ) { Util.MapDebugPrint( "Axis_Command_Post_Planted" ); Util.SetMaxUsers( 1, "DEFUSE_Axis_Command_Post_.*" ); }, Axis_Command_Post_Defused = function( trigger ) { Util.MapDebugPrint( "Axis_Command_Post_Defused" ); }, Axis_Command_Post_Destroyed = function( trigger ) { Util.MapDebugPrint( "Axis_Command_Post_Destroyed" ); Map.Axis_Command_Post = false; foreach( goal in Util.GoalTable("DEFUSE_Axis_Command_Post_.*") ) { goal.SetAvailable(TEAM.AXIS, false); } SetAvailableMapGoals( TEAM.ALLIES, false, { "PLANT_Axis_Command_Post", }); SetAvailableMapGoals( TEAM.AXIS, true, { "BUILD_Axis_Command_Post", }); }, Field_MG42_Built = function( trigger ) { Util.MapDebugPrint( "Field_MG42_Built" ); Map.Field_MG42 = true; Wp.SetWaypointFlag( "Field_MG42_2", "closed", false ); SetAvailableMapGoals( TEAM.ALLIES, false, { "BUILD_Field_MG42", }); if ( Map.Base_Wall ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "REPAIRMG42_Field_MG42", "MOUNTMG42_Field_MG42", }); } }, Field_MG42_Planted = function( trigger ) { Util.MapDebugPrint( "Field_MG42_Planted" ); foreach( goal in Util.GoalTable("DEFUSE_Field_MG42_.*") ) { goal.SetAvailable(TEAM.ALLIES, false); } }, Field_MG42_Defused = function( trigger ) { Util.MapDebugPrint( "Field_MG42_Defused" ); }, Field_MG42_Destroyed = function( trigger ) { Util.MapDebugPrint( "Field_MG42_Destroyed" ); Map.Field_MG42 = false; Wp.SetWaypointFlag( "Field_MG42_2", "closed", true ); SetAvailableMapGoals( TEAM.ALLIES, false, { "REPAIRMG42_Field_MG42", "MOUNTMG42_Field_MG42", }); if ( Map.Base_Wall ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_Field_MG42", }); } }, Fortress_Ladder_Built = function( trigger ) { Util.MapDebugPrint( "Fortress_Ladder_Built" ); Map.Fortress_Ladder = true; Wp.SetWaypointFlag( "Fortress_Ladder_1", "closed", false ); Wp.SetWaypointFlag( "Fortress_Ladder_2", "closed", false ); SetAvailableMapGoals( TEAM.ALLIES, false, { "BUILD_Fortress_Ladder", }); SetAvailableMapGoals( TEAM.AXIS, true, { "PLANT_Fortress_Ladder", }); }, Fortress_Ladder_Planted = function( trigger ) { Util.MapDebugPrint( "Fortress_Ladder_Planted" ); Util.SetMaxUsers( 1, "DEFUSE_Fortress_Ladder_.*" ); }, Fortress_Ladder_Defused = function( trigger ) { Util.MapDebugPrint( "Fortress_Ladder_Defused" ); }, Fortress_Ladder_Destroyed = function( trigger ) { Util.MapDebugPrint( "Fortress_Ladder_Destroyed" ); Map.Fortress_Ladder = false; Wp.SetWaypointFlag( "Fortress_Ladder_1", "closed", true ); Wp.SetWaypointFlag( "Fortress_Ladder_2", "closed", true ); foreach( goal in Util.GoalTable("DEFUSE_Fortress_Ladder_.*") ) { goal.SetAvailable(TEAM.ALLIES, false); } SetAvailableMapGoals( TEAM.AXIS, false, { "PLANT_Fortress_Ladder", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_Fortress_Ladder", }); }, Spawn_MG42_Built = function( trigger ) { Util.MapDebugPrint( "Spawn_MG42_Built" ); Map.Spawn_MG42 = true; Wp.SetWaypointFlag( "Spawn_MG_1", "closed", false ); SetAvailableMapGoals( TEAM.ALLIES, false, { "BUILD_Spawn_MG42", }); if ( Map.Base_Wall ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "MOUNTMG42_Spawn_MG42", "REPAIRMG42_Spawn_MG42", }); } }, Spawn_MG42_Planted = function( trigger ) { Util.MapDebugPrint( "Spawn_MG42_Planted" ); foreach( goal in Util.GoalTable("DEFUSE_Spawn_MG42_.*") ) { goal.SetAvailable(TEAM.ALLIES, false); } }, Spawn_MG42_Defused = function( trigger ) { Util.MapDebugPrint( "Spawn_MG42_Defused" ); }, Spawn_MG42_Destroyed = function( trigger ) { Util.MapDebugPrint( "Spawn_MG42_Destroyed" ); Map.Spawn_MG42 = false; Wp.SetWaypointFlag( "Spawn_MG_1", "closed", true ); foreach( goal in Util.GoalTable("DEFUSE_Spawn_MG42_.*") ) { goal.SetAvailable(TEAM.ALLIES, false); } SetAvailableMapGoals( TEAM.ALLIES, false, { "MOUNTMG42_Spawn_MG42", "REPAIRMG42_Spawn_MG42", }); if ( Map.Base_Wall ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_Spawn_MG42", }); } }, Base_Wall_Planted = function( trigger ) { Util.MapDebugPrint( "Base_Wall_Planted" ); }, Base_Wall_Defused = function( trigger ) { Util.MapDebugPrint( "Base_Wall_Defused" ); }, Base_Wall_Destroyed = function( trigger ) { Util.MapDebugPrint( "Base_Wall_Destroyed" ); Map.Base_Wall = false; Map.SetSpawn(); Map.Base_Wall_WP_Closing(true); foreach( goal in Util.GoalTable("DEFUSE_Base_Wall_.*") ) { goal.SetAvailable(TEAM.AXIS, false); } Util.EnableGoal( "ROUTE_BW_destroyed_.*" ); Util.EnableGoal( "ROUTE_Check_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allies_Start_.*", }); ClearGoalRole( "FLAG_War_Documents", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); Util.SetMaxUsers( 1, "CHECKPOINT_forwardspawn1_flag" ); if ( !Map.Documents_Taken ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "FLAG_War_Documents", }); } if ( Map.Axis_Command_Post ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Axis_Command_Post", }); } if ( Map.Storage_Wall ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Storage_Wall", }); } }, Storage_Wall_Planted = function( trigger ) { Util.MapDebugPrint( "Storage_Wall_Planted" ); Util.SetMaxUsers( 1, "DEFUSE_Storage_Wall_.*" ); }, Storage_Wall_Defused = function( trigger ) { Util.MapDebugPrint( "Storage_Wall_Defused" ); }, Storage_Wall_Destroyed = function( trigger ) { Util.MapDebugPrint( "Storage_Wall_Destroyed" ); Map.Storage_Wall = false; foreach( goal in Util.GoalTable("DEFUSE_Storage_Wall_.*") ) { goal.SetAvailable(TEAM.AXIS, false); } Util.EnableGoal( "ROUTE_SW_destroyed_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, { "PLANT_Storage_Wall", }); if ( Map.AllyWithWD_Ins ) { SetAvailableMapGoals( TEAM.AXIS, true, { "CAMP_Axis_LookIns_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "CAMP_Allies_LookIns_.*", }); } }, War_Documents_Taken = function( trigger ) { Util.MapDebugPrint( "War_Documents_Taken" ); Map.Documents_Taken = true; OnTriggerRegion(AABB( -2752.875,-1000.873,-374.875,384.875,2736.875,-75.132 ), Map.Taken_WD_Ins); OnTriggerRegion(AABB( -2505.004,-1061.292,0.000,-321.136,2488.087,589.119 ), Map.Taken_WD_Out); SetAvailableMapGoals( TEAM.ALLIES, false, { "FLAG_War_Documents", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "CAPPOINT_Base_Radio_Transmitter", }); }, War_Documents_Dropped = function( trigger ) { Util.MapDebugPrint( "War_Documents_Dropped" ); DeleteTriggerRegion("\r\n\r\n\r\nTaken_WD_Ins"); DeleteTriggerRegion("\r\n\r\nT\r\naken_WD_Out"); Map.AllyWithWD_Ins = false; Map.AllyWithWD_Out = false; SetAvailableMapGoals( TEAM.ALLIES, false, { "CAPPOINT_Base_Radio_Transmitter", }); }, War_Documents_Returned = function( trigger ) { Util.MapDebugPrint( "War_Documents_Returned" ); Map.Documents_Taken = false; SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_CappointPlace_.*", "CAMP_Axis_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allies_CappointPlace_.*", "CAMP_Allies_.*", }); if ( tableCount(Map.count_ally_ins) < 1 ) { if ( tableCount(Map.count_ally_out) < 1 ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Start_.*", }); if ( Map.Tower_Axis ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Spawn_.*", }); } } else { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Outside_.*", ".*_House", }); } } else { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Inside_.*", }); } SetAvailableMapGoals( TEAM.ALLIES, true, { "FLAG_War_Documents", }); }, War_Documents_Secured = function( trigger ) { Util.MapDebugPrint( "War_Documents_Secured" ); ETUtil.WinningChat( TEAM.ALLIES ); ETUtil.LosingChat( TEAM.AXIS ); }, Tower_Axis_Captured = function( trigger ) { Util.MapDebugPrint( "Tower_Axis_Captured" ); Map.Tower_Axis = true; Map.Tower_Allies = false; Map.SetSpawn(); SetAvailableMapGoals( TEAM.AXIS, false, { "CHECKPOINT_forwardspawn1_flag", }); if ( tableCount(Map.count_ally_out) < 1 and tableCount(Map.count_ally_ins) < 1 ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Spawn_.*", }); } SetAvailableMapGoals( TEAM.ALLIES, true, { "CHECKPOINT_forwardspawn1_flag", }); }, Tower_Allies_Captured = function( trigger ) { Util.MapDebugPrint( "Tower_Allies_Captured" ); Map.Tower_Axis = false; Map.Tower_Allies = true; Map.SetSpawn(); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Spawn_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { "CHECKPOINT_forwardspawn1_flag", }); SetAvailableMapGoals( TEAM.AXIS, true, { "CHECKPOINT_forwardspawn1_flag", }); if ( Map.Base_Wall ) { SetGoalRole( "FLAG_War_Documents", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); } if ( !Map.Documents_Taken ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "FLAG_War_Documents", }); } }, SpawnMG42_Fixed = function( trigger ) { Util.MapDebugPrint( "Spawn_MG42_Fixed" ); Map.SpawnMG42_Fixed = true; }, Allied_CP = function() { sleep(0.5); start = Vector3(302.868, 604.477, 216.128); end = Vector3(331.562, 647.451, 216.128); Util.MapDebugPrint("Allied_CP Thread Started"); while ( 1 ) { tr = TraceLine(start, end, null, TRACE.FLOODFILLENT, 0, false); if ( tr.fraction == 1 ) { Wp.SetWaypointFlag( "Allied_CP_1", "closed", false ); if ( Map.Debug ) { DrawDebugLine( start, end, COLOR.GREEN, 0.1 ); } } else { Wp.SetWaypointFlag( "Allied_CP_1", "closed", true ); if ( Map.Debug ) { DrawDebugLine( start, end, COLOR.RED, 0.1 ); } } yield(); } }, Ignore_Target = { Name = "\r\n\r\n\r\n\r\nIgnore_Target", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { b = Util.IsBot(ent); if ( b ) { if ( Map.Debug ) { print( GetEntName(ent) + "^3 is ignoring enemies" ); } for ( q = 0; q < 64; q += 1 ) { if ( EntityIsValid(q) ) { b.IgnoreTarget(q, 999); } } } }, OnExit = function(ent) { b = Util.IsBot(ent); if ( b ) { if ( Map.Debug ) { print( GetEntName(ent) + "^3 isn't ignoring enemies" ); } for ( q = 0; q < 64; q += 1 ) { if ( EntityIsValid(q) ) { b.IgnoreTarget(q, 0.1); } } } }, }, Base_Wall_WP_Closing = function(close) { for( i = 2; i <= 10; i += 1 ) { Wp.SetWaypointFlag( "Base_Wall_" + i, "closed", close ); } }, Outside = { Name = "\r\nOutside", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if ( GetEntTeam(ent) == TEAM.ALLIES ) { if (Map.count_ally_out[ent]) { Map.count_ally_out[ent] += 1; } else { Map.count_ally_out[ent] = 1; Util.MapDebugPrint("Ally in outside trigger: " + tableCount(Map.count_ally_out)); } Map.SetSpawn(); if ( tableCount(Map.count_ally_out) < 2 ) { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Start_.*", ".*_Axis_Spawn_.*", }); if ( tableCount(Map.count_ally_ins) < 1 ) { if ( Map.AllyWithWD_Out or !Map.Documents_Taken ) { SetAvailableMapGoals( TEAM.AXIS, true, { "MOUNTMG42_House", "REPAIRMG42_House", ".*_Axis_Outside_.*", }); } } } } }, OnExit = function(ent) { if (Map.count_ally_out[ent]) { if (Map.count_ally_out[ent] > 1) { Map.count_ally_out[ent] -= 1; } else { Map.count_ally_out[ent] = null; Util.MapDebugPrint("Ally in outside trigger: " + tableCount(Map.count_ally_out)); } if ( tableCount(Map.count_ally_out) < 1 ) { Map.SetSpawn(); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Outside_.*", ".*_House", }); if ( tableCount(Map.count_ally_ins ) < 1 ) { if ( !Map.Documents_Taken ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Start_.*", }); if ( Map.Tower_Axis ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Spawn_.*", }); } } } } } }, }, Inside = { Name = "\r\n\r\nInside", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if ( GetEntTeam(ent) == TEAM.ALLIES ) { if (Map.count_ally_ins[ent]) { Map.count_ally_ins[ent] += 1; } else { Map.count_ally_ins[ent] = 1; Util.MapDebugPrint("Ally in inside trigger: " + tableCount(Map.count_ally_ins)); } if ( tableCount(Map.count_ally_ins) < 2 ) { if ( !Map.Documents_Taken or Map.AllyWithWD_Ins ) { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Outside_.*", ".*_House", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Inside_.*", }); } } } }, OnExit = function(ent) { if (Map.count_ally_ins[ent]) { if (Map.count_ally_ins[ent] > 1) { Map.count_ally_ins[ent] -= 1; } else { Map.count_ally_ins[ent] = null; Util.MapDebugPrint("Ally in inside trigger: " + tableCount(Map.count_ally_ins)); } if ( tableCount(Map.count_ally_ins) < 1 ) { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Inside_.*", }); if ( tableCount(Map.count_ally_out ) < 1 ) { if ( !Map.Documents_Taken ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Start_.*", }); if ( Map.Tower_Axis ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Spawn_.*", }); } } } else { if ( !Map.Documents_Taken or Map.AllyWithWD_Out ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Outside_.*", ".*_House", }); } } } } }, }, Taken_WD_Ins = { Name = "\r\n\r\n\r\nTaken_WD_Ins", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if ( GetEntFlags(ent,ENTFLAG.CARRYINGGOAL) ) { Util.MapDebugPrint( "War documents inside area" ); Map.AllyWithWD_Ins = true; SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Outside_.*", ".*_House", ".*_Axis_LookOut_.*", ".*_Axis_CappointPlace_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allies_CappointPlace_.*", "CAMP_Allies_LookOut_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Inside_.*", }); if ( !Map.Storage_Wall ) { SetAvailableMapGoals( TEAM.AXIS, true, { "CAMP_Axis_LookIns_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "CAMP_Allies_LookIns_.*", }); } else { SetAvailableMapGoals( TEAM.AXIS, true, { "CAMP_Axis_LookIns_1.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "CAMP_Allies_LookIns_1.*", }); } } }, OnExit = function(ent) { if ( GetEntFlags(ent,ENTFLAG.CARRYINGGOAL) ) { Util.MapDebugPrint( "War documents left inside area" ); Map.AllyWithWD_Ins = false; SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Inside_.*", "CAMP_Axis_LookIns_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { "CAMP_Allies_LookIns_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Outside_.*", ".*_House", ".*_Axis_LookOut_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "CAMP_Allies_LookOut_.*", }); } }, }, Taken_WD_Out = { Name = "\r\n\r\n\r\nTaken_WD_Out", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if ( GetEntFlags(ent,ENTFLAG.CARRYINGGOAL) ) { Util.MapDebugPrint( "War documents outside area" ); Map.AllyWithWD_Out = true; SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Inside_.*", "CAMP_Axis_LookIns_.*", ".*_Axis_CappointPlace_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allies_CappointPlace_.*", "CAMP_Allies_LookIns_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Outside_.*", ".*_House", ".*_Axis_LookOut_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "CAMP_Allies_LookOut_.*", }); } }, OnExit = function(ent) { if ( GetEntFlags(ent,ENTFLAG.CARRYINGGOAL) ) { Util.MapDebugPrint( "War documents left outside area" ); Map.AllyWithWD_Out = false; if ( Map.AllyWithWD_Ins ) { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Outside_.*", ".*_House", ".*_Axis_LookOut_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { "CAMP_Allies_LookOut_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Inside_.*", }); if ( !Map.Storage_Wall ) { SetAvailableMapGoals( TEAM.AXIS, true, { "CAMP_Axis_LookIns_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "CAMP_Allies_LookIns_.*", }); } else { SetAvailableMapGoals( TEAM.AXIS, true, { "CAMP_Axis_LookIns_1.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "CAMP_Allies_LookIns_1.*", }); } } else { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Outside_.*", ".*_House", ".*_Axis_LookOut_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { "CAMP_Allies_LookOut_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_CappointPlace_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { ".*_Allies_CappointPlace_.*", }); } } }, }, SetSpawn1 = function(bot) { if (bot.GetTeam() == TEAM.AXIS) { if ( Map.Tower_Axis ) { if ( tableCount(Map.count_ally_out) < 1 and Map.Base_Wall ) { bot.ChangeSpawnPoint(3); } else { bot.ChangeSpawnPoint(1); } } else { bot.ChangeSpawnPoint(1); } } else { if ( Map.Tower_Allies ) { bot.ChangeSpawnPoint(3); } else { bot.ChangeSpawnPoint(2); } } }, SetSpawn = function() { foreach(bot in BotTable) { Map.SetSpawn1(bot); } }, }; global OnMapLoad = function() { if ( Map.Debug ) { Util.DebugColorString = "^3"; } thread ( Map.Allied_CP ); OnTrigger( "Allied Command Post constructed. Charge speed increased!", Map.Allied_Command_Post_Built ); OnTrigger( "Planted at the Allied Command Post.", Map.Allied_Command_Post_Planted ); OnTrigger( "Defused at the Allied Command Post.", Map.Allied_Command_Post_Defused ); OnTrigger( "Axis team has destroyed the Allied Command Post!", Map.Allied_Command_Post_Destroyed ); OnTrigger( "Axis Command Post constructed. Charge speed increased!", Map.Axis_Command_Post_Built ); OnTrigger( "Planted at the Axis Command Post.", Map.Axis_Command_Post_Planted ); OnTrigger( "Defused at the Axis Command Post.", Map.Axis_Command_Post_Defused ); OnTrigger( "Allied team has destroyed the Axis Command Post!", Map.Axis_Command_Post_Destroyed ); OnTrigger( "The Field MG42 has been constructed.", Map.Field_MG42_Built ); OnTrigger( "Planted at the Field MG42.", Map.Field_MG42_Planted ); OnTrigger( "Defused at the Field MG42.", Map.Field_MG42_Defused ); OnTrigger( "The Field MG42 has been destroyed.", Map.Field_MG42_Destroyed ); OnTrigger( "The fortress Ladder has been constructed.", Map.Fortress_Ladder_Built ); OnTrigger( "Planted at the Fortress Ladder.", Map.Fortress_Ladder_Planted ); OnTrigger( "Defused at the Fortress Ladder.", Map.Fortress_Ladder_Defused ); OnTrigger( "The fortress Ladder has been destroyed.", Map.Fortress_Ladder_Destroyed ); OnTrigger( "Allied team has constructed the Spawn MG42!", Map.Spawn_MG42_Built ); OnTrigger( "Planted at the Spawn MG42.", Map.Spawn_MG42_Planted ); OnTrigger( "Defused at the Spawn MG42.", Map.Spawn_MG42_Defused ); OnTrigger( "Axis team has destroyed the Spawn MG42!", Map.Spawn_MG42_Destroyed ); OnTrigger( "Planted at the Base Wall.", Map.Base_Wall_Planted ); OnTrigger( "Defused at the Base Wall.", Map.Base_Wall_Defused ); OnTrigger( "Allies have destroyed the Base Wall!", Map.Base_Wall_Destroyed ); OnTrigger( "Planted at the Storage Wall.", Map.Storage_Wall_Planted ); OnTrigger( "Defused at the Storage Wall.", Map.Storage_Wall_Defused ); OnTrigger( "Allies have destroyed the Storage Wall!", Map.Storage_Wall_Destroyed ); OnTrigger( "Allies have stolen the War Documents!", Map.War_Documents_Taken ); OnTrigger( "USA have stolen the War Documents!", Map.War_Documents_Taken ); //ETNam OnTrigger( "Flag dropped War Documents!", Map.War_Documents_Dropped ); OnTrigger( "Flag returned War Documents!", Map.War_Documents_Returned ); OnTrigger( "Allied team has transmitted the war documents!", Map.War_Documents_Secured ); OnTrigger( "Axis capture the Tower Spawn!", Map.Tower_Axis_Captured ); OnTrigger( "Allies capture the Tower Spawn!", Map.Tower_Allies_Captured ); OnTrigger( "Fixed spawn mg", Map.SpawnMG42_Fixed ); Util.DisableGoal( ".*", true ); Util.DisableGoal( "ROUTE_BW_destroyed_.*" ); Util.DisableGoal( "ROUTE_SW_destroyed_.*" ); Util.DisableGoal( "ROUTE_Check_.*" ); SetAvailableMapGoals( 0, true, { "HEALTHCAB_.*", "AMMOCAB_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { "CHECKPOINT_forwardspawn1_flag", "BUILD_Axis_Command_Post", ".*_Axis_Spawn_.*", ".*_Axis_Start_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "CHECKPOINT_forwardspawn1_flag", "BUILD_Spawn_MG42", "BUILD_Fortress_Ladder", "BUILD_Field_MG42", "BUILD_Allied_Command_Post", "PLANT_Base_Wall", ".*_Allies_Start_.*", }); Util.SetMaxUsers( 1, "ATTACK_.*" ); Util.SetMaxUsers( 1, "DEFEND_.*" ); Util.SetMaxUsers( 1, "AIRSTRIKE_.*" ); Util.SetMaxUsers( 1, "REPAIRMG42_.*" ); Util.SetMaxUsers( 1, "MOUNTMG42_.*" ); Util.SetMaxUsers( 1, "BUILD_Spawn_MG42" ); Util.SetMaxUsers( 1, "BUILD_Fortress_Ladder" ); Util.SetMaxUsers( 1, "BUILD_Field_MG42" ); Util.SetMaxUsers( 1, "PLANT_Fortress_Ladder" ); Util.SetMaxUsers( 1, ".*_Command_Post" ); Util.AddUseWp( "CHECKPOINT_forwardspawn1_flag", "Flag_1" ); Util.AddUseWp( "CHECKPOINT_forwardspawn1_flag", "Flag_2" ); Util.AddUseWp( "CHECKPOINT_forwardspawn1_flag", "Flag_3" ); Util.AddUseWp( "CHECKPOINT_forwardspawn1_flag", "Flag_4" ); Util.AddUseWp( "BUILD_Spawn_MG42", "Spawn_MG_2" ); Util.AddUseWp( "BUILD_Fortress_Ladder", "Fortress_Ladder_3" ); Util.AddUseWp( "PLANT_Fortress_Ladder", "Fortress_Ladder_4" ); Util.AddUseWp( "BUILD_Field_MG42", "Field_MG42_1" ); Util.AddUseWp( "PLANT_Base_Wall", "Base_Wall_1" ); Util.AddUseWp( "PLANT_Storage_Wall", "Storage_Wall_1" ); Util.AddUseWp( "PLANT_Storage_Wall", "Storage_Wall_2" ); Util.AddUseWp( "PLANT_Allied_Command_Post", "Allied_CP_2" ); Wp.SetWaypointFlag( "Spawn_MG_1", "closed", true ); Wp.SetWaypointFlag( "Fortress_Ladder_1", "closed", true ); Wp.SetWaypointFlag( "Fortress_Ladder_2", "closed", true ); Wp.SetWaypointFlag( "Field_MG42_2", "closed", true ); Wp.SetWaypointFlag( "Allied_CP_1", "closed", false ); Map.Base_Wall_WP_Closing(false); SetGoalRole( "CHECKPOINT_forwardspawn1_flag", { ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER2, ROLE.DEFENDER3 } ); SetGoalRole( ".*_Axis_Start_2.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } ); SetGoalRole( ".*_Axis_Start_3.*", ROLE.DEFENDER2 ); SetGoalRole( ".*_Axis_Spawn_.*", ROLE.DEFENDER3 ); SetGoalRole( "PLANT_Base_Wall", { ROLE.ATTACKER, ROLE.ATTACKER1 } ); SetGoalRole( ".*_Allies_Start_.*", { ROLE.ATTACKER, ROLE.ATTACKER1 } ); SetGoalPriority( "CHECKPOINT_forwardspawn1_flag", 0.71, 0, 0 ); SetGoalPriority( ".*_Axis_LookIns_.*", 0.55, TEAM.AXIS, 0 ); SetGoalPriority( ".*_Axis_LookOut_.*", 0.57, TEAM.AXIS, 0 ); SetGoalPriority( "PLANT_Allied_Command_Post", 0.79, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "MOBILEMG42_.*", 0.8, TEAM.AXIS, CLASS.SOLDIER ); SetGoalPriority( "MOBILEMG42_Axis_Outside_02", 0.9, TEAM.AXIS, CLASS.SOLDIER ); SetGoalPriority( ".*_Allies_LookIns_.*", 0.55, TEAM.ALLIES, 0 ); SetGoalPriority( ".*_Allies_LookOut_.*", 0.57, TEAM.ALLIES, 0 ); SetGoalPriority( "ATTACK_Allies_CappointPlace_.*", 0.56, TEAM.ALLIES, 0 ); Util.SetGoalRange( "AIRSTRIKE_Axis_Start_00", 800); Util.SetGoalRange( "AIRSTRIKE_Axis_Start_01", 800); Util.SetGoalPosition(459.856, -880.562, 550, "PLANT_Fortress_Ladder"); Util.SetGoalPosition(373.190, 681.127, 517.077, "PLANT_Allied_Command_Post"); Util.LimitToClass( "PLANT_Fortress_Ladder", TEAM.AXIS, CLASS.COVERTOPS ); Util.LimitToClass( "PLANT_Allied_Command_Post", TEAM.AXIS, CLASS.COVERTOPS ); OnTriggerRegion(AABB( -2505.004,-1061.292,-374.875,-321.136,2488.087,589.119 ), Map.Outside); OnTriggerRegion(AABB( -2752.875,-1000.873,-374.875,384.875,2736.875,-75.132 ), Map.Inside); RegionTrigger.Create(AABB(-1824.875,-1625.663,117.125,-1523.295,-1587.147,191.125), "DisableCombatMovement", "Fence_At_Allied_Spawn"); RegionTrigger.Create(AABB(63.125,-1052.875,225.125,500.875,-723.453,329.563), "DisableCombatMovement", "Walkway_Of_The_Fortress"); RegionTrigger.Create(AABB(0.459,-1145.773,197.125,101.125,-1038.598,338.125), "DisableCombatMovement", "Ledge_Above_Wood_Shack"); RegionTrigger.Create(AABB(189.947,-736.875,129.125,240.875,-619.738,254.199), "DisableCombatMovement", "Small_Ladder_Near_Base_Wall"); RegionTrigger.Create(AABB(-331.683,-320.875,161.125,112.875,190.875,303.125), "DisableCombatMovement", "Ledges_At_Base_Wall"); RegionTrigger.Create(AABB(-46.328,-1048.466,385.125,48.875,-972.647,459.125), "DisableCombatMovement", "Jump_From_Roof"); RegionTrigger.Create(AABB(150.493,-412.579,385.125,215.718,-335.125,459.125), "DisableCombatMovement", "Jump_From_Roof"); RegionTrigger.Create(AABB(418.406,-720.875,385.125,506.852,-644.612,459.125), "DisableCombatMovement", "Jump_From_Roof"); RegionTrigger.Create(AABB(373.905,481.514,385.125,446.187,560.875,459.125), "DisableCombatMovement", "Jump_From_Roof"); RegionTrigger.Create(AABB(112.888,327.125,385.125,263.469,440.875,459.125), "DisableCombatMovement", "Jump_From_Roof"); RegionTrigger.Create(AABB(192.205,1692.010,385.125,256.875,1782.602,499.125), "DisableCombatMovement", "Jump_From_Roof"); RegionTrigger.Create(AABB(51.818,1794.544,385.125,157.085,2016.874,499.248), "DisableCombatMovement", "Jump_From_Roof"); RegionTrigger.Create(AABB(-390.281,-1027.491,1.125,-289.924,-911.505,299.319), "DisableCombatMovement", "Outside_ladder"); RegionTrigger.Create(AABB(-430.930,1169.125,-374.875,-234.739,1291.052,-261.235), "DisableCombatMovement", "Table_with_WD"); RegionTrigger.Create(AABB(-1632.875,1574.367,-374.875,-1485.533,1914.347,-159.969), "DisableCombatMovement", "Stairs_At_Axis_CP"); RegionTrigger.Create(AABB(-1132.129,-791.263,1.125,-921.591,-595.787,78.997), "DisableCombatMovement", "Hut_Near_Truck"); RegionTrigger.Create(AABB(-2412.210,1218.202,1.125,-1180.227,1404.225,147.441), "DisableBotPush", "Wall_near_rockets"); RegionTrigger.Create(AABB(-556.620,-320.853,1.487,-259.971,704.217,271.130), "DisableBotPush", "Near_Base_wall"); RegionTrigger.Create(AABB(-1685.647,484.465,1.125,-1259.619,853.062,238.830), "DisableBotPush", "Over_bunker_entrance"); RegionTrigger.Create(AABB(-932.119,1854.274,351.214,-225.244,2501.396,563.125), "DisableBotPush", "Roof_over_MG42"); RegionTrigger.Create(AABB(-864.875,2308.513,231.125,-690.522,2416.875,330.318), "DisableBotPush", "Hatch_near_MG42"); RegionTrigger.Create(AABB(-2133.661,1791.964,25.125,-1906.490,1939.627,87.133), "DisableBotPush", "Hatch_near_rockets"); RegionTrigger.Create(AABB(-1213.598,-918.521,35.125,-1089.599,-714.125,91.135), "DisableBotPush", "Hatch_near_truck"); RegionTrigger.Create(AABB(-972.266,1181.818,-374.875,-904.683,1263.092,-352.875), "BreakableDistance", "Near_Table"); Ladder = OnTriggerRegion(AABB(-338,-986.681,1.125,-335.125,-948.681,255.459),Map.Ignore_Target); Small_Ladder = OnTriggerRegion(AABB(240,-708.653,129.125,240.875,-670.653,220),Map.Ignore_Target); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.MP40, true ); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.THOMPSON, true ); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.PANZERFAUST, false ); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); if(GetGameState() == "Playing") { sleep(5); EchoToScreen(0,"^3Omni-bot map script ^3by ^1Q^2i^3k^4i ^3and ^1n^2a^4t^8i^3v^5e12 ^3"); Util.BotChat( 0, "say", "^3Omni-bot map script ^3by ^1Q^2i^3k^4i ^3and ^1n^2a^4t^8i^3v^5e12^7" , 1 ); } }; global OnBotJoin = function( bot ) { bot.TargetBreakableDist = 130.0; Map.SetSpawn1(bot); }; global InitializeRoutes = function() { MapRoutes = { PLANT_Base_Wall = { }, FLAG_War_Documents = { ROUTE_Allied_First_Spawn = { ROUTE_BW_destroyed_1 = { ROUTE_BW_destroyed_2 = {}, ROUTE_Hut = { ROUTE_Inside_Truck = { ROUTE_Around_CP = {}, ROUTE_Pipe = {}, }, }, }, }, ROUTE_Tower_Spawn = { ROUTE_Roof = { ROUTE_MainEntrance = { ROUTE_Around_CP = {}, ROUTE_Pipe = {}, }, }, ROUTE_SW_destroyed_1 = { ROUTE_SW_destroyed_2 = {}, }, ROUTE_BW_destroyed_1 = { ROUTE_BW_destroyed_2 = {}, }, }, }, CAPPOINT_Base_Radio_Transmitter = { ROUTE_FlagPlace = { ROUTE_Inside_Truck = { ROUTE_Outside_Truck = { ROUTE_BaseWall_1 = { ROUTE_BaseWall_2 = {}, }, }, }, ROUTE_BW_destroyed_2 = { ROUTE_BW_destroyed_3 = {}, }, ROUTE_MainEntrance = { ROUTE_BaseWall_1 = { ROUTE_BaseWall_2 = {}, }, }, }, }, PLANT_Storage_Wall = { }, BUILD_Axis_Command_Post = { }, PLANT_Axis_Command_Post = { }, BUILD_Allied_Command_Post = { }, PLANT_Allied_Command_Post = { ROUTE_Axis_Spawn = { ROUTE_Inside_Truck = { ROUTE_Outside_Truck = { ROUTE_BaseWall_1 = { ROUTE_BaseWall_2 = {}, }, }, }, }, ROUTE_FlagPlace = { ROUTE_Inside_Truck = { ROUTE_Outside_Truck = { ROUTE_BaseWall_1 = { ROUTE_BaseWall_2 = {}, }, }, }, }, }, BUILD_Spawn_MG42 = { }, PLANT_Spawn_MG42 = { }, BUILD_Field_MG42 = { }, PLANT_Field_MG42 = { }, BUILD_Fortress_Ladder = { }, PLANT_Fortress_Ladder = { ROUTE_Axis_Spawn = { ROUTE_Inside_Truck = { ROUTE_Outside_Truck = { ROUTE_BaseWall_1 = {}, }, }, }, ROUTE_FlagPlace = { ROUTE_Inside_Truck = { ROUTE_Outside_Truck = { ROUTE_BaseWall_1 = {}, }, }, }, }, CHECKPOINT_forwardspawn1_flag = { ROUTE_Allied_First_Spawn = { ROUTE_Back_Way_1 = { ROUTE_Back_Way_2 = {}, }, ROUTE_Around_CP_1 = { ROUTE_Around_CP_2 = {}, }, }, ROUTE_Axis_Spawn = { ROUTE_Check_Inside = { ROUTE_Check_Outside_1 = { ROUTE_Check_Outside_2 = { ROUTE_Check_Outside_3 = { ROUTE_Check_Outside_4 = {}, }, }, }, }, }, ROUTE_FlagPlace = { ROUTE_Check_Inside = { ROUTE_Check_Outside_1 = { ROUTE_Check_Outside_2 = { ROUTE_Check_Outside_3 = { ROUTE_Check_Outside_4 = {}, }, }, }, }, }, }, }; Util.Routes(MapRoutes); };