//========================================================================================== // // etl_frostbite_v4.gm // // Who When What //------------------------------------------------------------------------------------------ // native12 17.09.2017 Adapting from etl_frostbite_v3 // //========================================================================================== // global Map = { Debug = 0, // please set to zero before distributing your script DontDispenseAmmo = true, //Variables AllyInside = 0, Documents_Taken = false, AlliedCommandPostBuilt = false, PlatformMGBuilt = false, StorageWallDestroyed = false, MainDoorDestroyed = false, ServiceDoorDestroyed = false, Service_Door_Dyno = 0, CarryingDocs = 0, DocsSecured = false, Roles = { 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.ENGINEER, }, DEFENDER3 = { numbots = 5, crucialClass = CLASS.ENGINEER, }, }, 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, }, }, }, Navigation = { // /bot waypoint_setproperty paththrough Navigation_PT:jump jump = { navigate = function(_this) { _this.Bot.HoldButton(BTN.JUMP, 0.55); sleep(0.55); }, }, }, Allied_Command_Post_Built = function( trigger ) { Map.AlliedCommandPostBuilt = true; Map.SetSpawn(); WeaponTable.SetWeaponTeamAvailability ( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, false ); SetAvailableMapGoals( TEAM.ALLIES, false, { "BUILD_Allied_Command_Post", ".*_Allies_CP.*_.*", }); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_AlliedCP_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Allied_Command_Post" ); if ( !Map.ServiceDoorDestroyed ) { SetGoalRole( "ATTACK_Allies_ServiceDoor_.*", { ROLE.ATTACKER, ROLE.ATTACKER1 }); } else { SetGoalRole( "FLAG_docs", { ROLE.ATTACKER, ROLE.ATTACKER1 }); } if ( !Map.StorageWallDestroyed and !Map.MainDoorDestroyed ) { SetGoalRole( "ATTACK_Allies_StorageWall_.*", { ROLE.ATTACKER2, ROLE.ATTACKER3 }); } if ( Map.StorageWallDestroyed ) { SetGoalRole( "FLAG_docs", { ROLE.ATTACKER2, ROLE.ATTACKER3 }); if ( Map.ServiceDoorDestroyed ) { ClearGoalRole( "FLAG_docs", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 }); } } if ( !Map.Documents_Taken ) { if ( Map.AllyInside == 0 ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_ACP_Build_.*" ); } } Util.MapDebugPrint( "Allied_Command_Post_Built" ); }, Allied_Command_Post_Planted = function( trigger ) { foreach( goal in Util.GoalTable("DEFUSE_Allied_Command_Post_.*") ) { name2 = goal.GetName(); Util.SetGoalRange( name2, 1000); } Util.MapDebugPrint( "Allied_Command_Post_Planted" ); }, Allied_Command_Post_Defused = function( trigger ) { Util.MapDebugPrint( "Allied_Command_Post_Defused" ); }, Allied_Command_Post_Destroyed = function( trigger ) { Map.SetSpawn(); Map.AlliedCommandPostBuilt = false; ClearGoalRole( "FLAG_docs", ROLE.ATTACKER1 ); SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Allied_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Allied_Command_Post_.*" ); if ( !Map.Documents_Taken ) { if ( Map.AllyInside == 0 ) { WeaponTable.SetWeaponTeamAvailability ( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, true ); SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_ACP_Build_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_AlliedCP_.*" ); } SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_Allied_Command_Post", ".*_Allies_CP1_.*", }); } Util.MapDebugPrint( "Allied_Command_Post_Destroyed" ); }, Axis_Command_Post_Built = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Command_Post" ); Util.MapDebugPrint( "Axis_Command_Post_Built" ); }, Axis_Command_Post_Planted = function( trigger ) { foreach( goal in Util.GoalTable("DEFUSE_Axis_Command_Post_.*") ) { name1 = goal.GetName(); Util.SetGoalRange( name1, 1400); } Util.MapDebugPrint( "Axis_Command_Post_Planted" ); }, Axis_Command_Post_Defused = function( trigger ) { Util.MapDebugPrint( "Axis_Command_Post_Defused" ); }, Axis_Command_Post_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Axis_Command_Post_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Axis_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_Command_Post" ); Util.MapDebugPrint( "Axis_Command_Post_Destroyed" ); }, Platform_MG_Built = function( trigger ) { Map.PlatformMGBuilt = true; Wp.SetWaypointFlag( "Platform_MG_1", "closed", false ); SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Platform_MG" ); if ( !Map.Documents_Taken ) { if ( Map.AllyInside == 0 ) { if ( Map.StorageWallDestroyed ) { SetAvailableMapGoals( TEAM.AXIS, true, { "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", }); } else { SetAvailableMapGoals( TEAM.AXIS, false, { "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", }); } } else { SetAvailableMapGoals( TEAM.AXIS, false, { "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", }); } if ( Map.StorageWallDestroyed ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Platform_MG" ); } } else { SetAvailableMapGoals( TEAM.AXIS, false, { "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", }); } Util.MapDebugPrint( "Platform_MG_Built" ); }, Platform_MG_Planted = function( trigger ) { foreach( goal in Util.GoalTable("DEFUSE_Platform_MG_.*") ) { name = goal.GetName(); Util.SetGoalRange( name, 1400); } SetGoalRole( "DEFUSE_Platform_MG_.*", ROLE.DEFENDER3 ); Util.MapDebugPrint( "Platform_MG_Planted" ); }, Platform_MG_Defused = function( trigger ) { Util.MapDebugPrint( "Platform_MG_Defused" ); }, Platform_MG_Destroyed = function( trigger ) { Map.PlatformMGBuilt = false; Wp.SetWaypointFlag( "Platform_MG_1", "closed", true ); SetAvailableMapGoals( TEAM.AXIS, false, { "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", "DEFUSE_Platform_MG_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Platform_MG" ); if ( Map.AllyInside == 0 ) { if ( !Map.Documents_Taken ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Platform_MG" ); } } Util.MapDebugPrint( "Platform_MG_Destroyed" ); }, Main_Door_Planted = function( trigger ) { SetGoalRole( "DEFUSE_Main_Door_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2 } ); if ( Map.AllyInside == 0 ) { Util.SetMaxUsers( 1, "DEFUSE_Main_Door_.*" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Main_Door_.*" ); } Util.MapDebugPrint( "Main_Door_Planted" ); }, Main_Door_Defused = function( trigger ) { Util.MapDebugPrint( "Main_Door_Defused" ); }, Main_Door_Destroyed = function( trigger ) { Map.MainDoorDestroyed = true; Util.EnableGoal( "ROUTE_Main_Door" ); Util.EnableGoal( "ROUTE_Stairs_to_CP" ); Util.EnableGoal( "ROUTE_Main_Door_1" ); Util.EnableGoal( "ROUTE_Main_Door_2" ); ClearGoalRole( "AIRSTRIKE_Axis_AlliedCP_.*", ROLE.DEFENDER2 ); if ( !Map.StorageWallDestroyed ) { ClearGoalRole( "ATTACK_Allies_StorageWall_.*", ROLE.ATTACKER2 ); } SetAvailableMapGoals( TEAM.AXIS, false, { "DEFUSE_Main_Door_.*", ".*_Axis_LadderToCP_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { "PLANT_Main_Door", ".*_Allies_CP2_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_MainDoor_.*" ); if ( !Map.ServiceDoorDestroyed and !Map.StorageWallDestroyed ) { SetGoalRole( "FLAG_docs", ROLE.ATTACKER2 ); } if ( !Map.ServiceDoorDestroyed and Map.StorageWallDestroyed ) { SetGoalRole( "FLAG_docs", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); } if ( Map.ServiceDoorDestroyed and !Map.StorageWallDestroyed ) { SetGoalRole( "FLAG_docs", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2 } ); } if ( Map.ServiceDoorDestroyed and Map.StorageWallDestroyed ) { ClearGoalRole( "FLAG_docs", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); } if ( !Map.Documents_Taken ) { SetAvailableMapGoals( TEAM.ALLIES, true, "FLAG_docs" ); } Util.MapDebugPrint( "Main_Door_Destroyed" ); }, Service_Door_Planted = function( trigger ) { Map.Service_Door_Dyno += 1; SetGoalRole( "DEFUSE_Service_Door_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2 } ); if ( Map.AllyInside == 0 ) { Util.SetMaxUsers( 2, "DEFUSE_Service_Door_.*" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Service_Door_.*" ); } SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_AccessToServiceDoor_.*" ); foreach( goal in Util.GoalTable("DEFUSE_Service_Door_.*") ) { pos1 = goal.GetPosition(); Util.MapDebugPrint( "^5dynamite position is: "+pos1 ); if( pos1.y < -520 ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_ServiceDoorPlanted_0.*" ); yield(); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_AccessToServiceDoor_.*" ); Util.MapDebugPrint( "Planted from outside" ); } else { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_ServiceDoorPlanted_1.*" ); yield(); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_AccessToServiceDoor_.*" ); Util.MapDebugPrint( "Planted from inside" ); } } Util.MapDebugPrint( "Service_Door_Planted" ); }, Service_Door_Defused = function( trigger ) { Map.Service_Door_Dyno -= 1; if ( Map.Service_Door_Dyno == 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_ServiceDoorPlanted_.*" ); } Util.MapDebugPrint( "Service_Door_Defused" ); }, Service_Door_Destroyed = function( trigger ) { Map.ServiceDoorDestroyed = true; Map.Service_Door_Dyno = 0; Util.EnableGoal( "ROUTE_Service_Door_1" ); Util.EnableGoal( "ROUTE_Service_Door_2" ); GetGoal("DEFEND_Axis_Documents_01").AimVectors = { Vec3(0.984, 0.174, -0.030), Vec3(0.588, -0.808, -0.022) }; GetGoal("DEFEND_Axis_Documents_02").AimVectors = { Vec3(0.576, 0.817, -0.019), Vec3(0.938, -0.343, -0.047) }; GetGoal("DEFEND_Axis_Documents_03").AimVectors = { Vec3(-0.959, 0.248, 0.140), Vec3(-0.628, -0.771, 0.106) }; GetGoal("DEFEND_Axis_Documents_04").AimVectors = { Vec3(-0.351, 0.924, -0.154), Vec3(-0.988, 0.124, -0.091) }; GetGoal("DEFEND_Axis_Documents_05").AimVectors = { Vec3(-0.155, 0.988, 0.001), Vec3(-0.981, 0.110, 0.162) }; GetGoal("DEFEND_Axis_Documents_06").AimVectors = { Vec3(-0.673, 0.663, -0.328), Vec3(-0.913, -0.405, -0.049) }; GetGoal("DEFEND_Axis_Documents_07").AimVectors = { Vec3(0.598, 0.799, 0.055), Vec3(0.583, -0.813, -0.009) }; GetGoal("DEFEND_Axis_Documents_08").AimVectors = { Vec3(0.643, 0.762, -0.073), Vec3(0.562, -0.818, -0.121) }; GetGoal("DEFEND_Axis_Documents_09").AimVectors = { Vec3(0.610, 0.791, 0.042), Vec3(0.365, -0.927, 0.081) }; GetGoal("DEFEND_Axis_Documents_10").AimVectors = { Vec3(-0.333, 0.940, 0.072), Vec3(-0.990, 0.107, -0.092) }; GetGoal("DEFEND_Axis_Documents_11").AimVectors = { Vec3(-0.407, 0.899, 0.159), Vec3(-0.997, -0.030, -0.068) }; SetAvailableMapGoals( TEAM.AXIS, false, { "DEFUSE_Service_Door_.*", ".*_Axis_ServiceDoorPlanted_.*", }); if ( Map.AllyInside > 0 or Map.Documents_Taken ) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_AccessToServiceDoor_.*" ); } SetAvailableMapGoals( TEAM.ALLIES, false, { "PLANT_Service_Door", ".*_Allies_ServiceDoor_.*", }); if ( !Map.MainDoorDestroyed and !Map.StorageWallDestroyed ) { SetGoalRole( "FLAG_docs", ROLE.ATTACKER ); if ( Map.AlliedCommandPostBuilt ) { SetGoalRole( "FLAG_docs", { ROLE.ATTACKER, ROLE.ATTACKER1 }); } } if ( !Map.MainDoorDestroyed and Map.StorageWallDestroyed ) { SetGoalRole( "FLAG_docs", { ROLE.ATTACKER, ROLE.ATTACKER3 } ); if ( Map.AlliedCommandPostBuilt ) { ClearGoalRole( "FLAG_docs", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); } } if ( Map.MainDoorDestroyed and !Map.StorageWallDestroyed ) { SetGoalRole( "FLAG_docs", { ROLE.ATTACKER, ROLE.ATTACKER2 } ); if ( Map.AlliedCommandPostBuilt ) { SetGoalRole( "FLAG_docs", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2 } ); } } if ( Map.MainDoorDestroyed and Map.StorageWallDestroyed ) { ClearGoalRole( "FLAG_docs", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); } if ( !Map.Documents_Taken ) { SetAvailableMapGoals( TEAM.ALLIES, true, "FLAG_docs" ); } Util.MapDebugPrint( "Service_Door_Destroyed" ); sleep(5); Inside2 = OnTriggerRegion(AABB(-928.875,-992.875,193.125,-96.125,-319.125,416.156), Map.Inside_bunker); }, Storage_Wall_Door_Moving = function( trigger ) { vel = ToVector(trigger.Action); if ( vel[ 1 ] > 0 ) //door closing { SetGoalRole( "SWITCH_StorageWallSwitch", ROLE.INFILTRATOR ); SetAvailableMapGoals( TEAM.AXIS, false, "SWITCH_StorageWallSwitch" ); SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_StorageWallSwitch" ); Util.MapDebugPrint( "Storage_Wall_Door_Closing" ); } else //door opening { ClearGoalRole( "SWITCH_StorageWallSwitch", ROLE.INFILTRATOR ); SetAvailableMapGoals( TEAM.ALLIES, false, "SWITCH_StorageWallSwitch" ); SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_StorageWallSwitch" ); Util.MapDebugPrint( "Storage_Wall_Door_Opening" ); } }, Storage_Wall_Planted = function( trigger ) { SetGoalRole( "DEFUSE_Storage_Wall_.*", ROLE.DEFENDER3 ); Util.MapDebugPrint( "Storage_Wall_Planted" ); }, Storage_Wall_Defused = function( trigger ) { Util.MapDebugPrint( "Storage_Wall_Defused" ); }, Storage_Wall_Destroyed = function( trigger ) { Map.StorageWallDestroyed = true; Util.EnableGoal( "ROUTE_Storage_Wall_1" ); Util.EnableGoal( "ROUTE_Storage_Wall_2" ); Util.EnableGoal( "ROUTE_Storage_Wall_3" ); SetAvailableMapGoals( TEAM.AXIS, false, { "DEFUSE_Storage_Wall_.*", "SWITCH_StorageWallSwitch", ".*_Axis_StorageWall_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { "PLANT_Storage_Wall", "SWITCH_StorageWallSwitch", ".*_Allies_StorageWall_.*", }); if ( !Map.Documents_Taken ) { if ( Map.PlatformMGBuilt ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Platform_MG" ); } if ( Map.AllyInside == 0 ) { if ( Map.PlatformMGBuilt ) { SetAvailableMapGoals( TEAM.AXIS, true, { "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", }); } SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_PlatformMG42_.*" ); } } if ( !Map.MainDoorDestroyed and !Map.ServiceDoorDestroyed ) { SetGoalRole( "FLAG_docs", ROLE.ATTACKER3 ); if ( Map.AlliedCommandPostBuilt ) { SetGoalRole( "FLAG_docs", { ROLE.ATTACKER2, ROLE.ATTACKER3 }); } } if ( !Map.MainDoorDestroyed and Map.ServiceDoorDestroyed ) { SetGoalRole( "FLAG_docs", ROLE.ATTACKER3 ); if ( Map.AlliedCommandPostBuilt ) { SetGoalRole( "FLAG_docs", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); } } if ( Map.MainDoorDestroyed and !Map.ServiceDoorDestroyed ) { SetGoalRole( "FLAG_docs", { ROLE.ATTACKER2, ROLE.ATTACKER3 } ); } if ( Map.MainDoorDestroyed and Map.ServiceDoorDestroyed ) { ClearGoalRole( "FLAG_docs", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } ); } if ( !Map.Documents_Taken ) { SetAvailableMapGoals( TEAM.ALLIES, true, "FLAG_docs" ); } Util.MapDebugPrint( "Storage_Wall_Destroyed" ); }, Carrying_Documents = { Name = "Carrying_Documents", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if ( GetEntFlags(ent,ENTFLAG.CARRYINGGOAL) ) { Map.CarryingDocs += 1; Util.MapDebugPrint( "Documents are inside " + Map.CarryingDocs ); } }, OnExit = function(ent) { if ( GetEntFlags(ent,ENTFLAG.CARRYINGGOAL) ) { Map.CarryingDocs -= 1; SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Documents_.*", ".*_Axis_Doc_SD_Way_.*", ".*_Axis_Doc_Other_Way_.*", }); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_DocsTaken_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allies_DocsTaken_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Transmitter_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allies_Transmitter_.*" ); yield(); if ( Map.AllyInside > 0 ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Documents_.*", ".*_Axis_Doc_Other_Way_.*", }); if ( Map.ServiceDoorDestroyed ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Doc_SD_Way_.*" ); } } Util.MapDebugPrint( "Documents are outside " + Map.CarryingDocs ); } }, }, docs_Taken = function( trigger ) { Map.Documents_Taken = true; Carrying1 = OnTriggerRegion(AABB(-1259.969,-992.875,1.125,1216.875,1888.874,654.608), Map.Carrying_Documents); Util.LimitToClass("PLANT_Allied_Command_Post", TEAM.AXIS, CLASS.COVERTOPS); Util.LimitToClass("PLANT_Axis_Command_Post", TEAM.ALLIES, CLASS.COVERTOPS); if ( Map.PlatformMGBuilt ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Platform_MG" ); } SetAvailableMapGoals( TEAM.ALLIES, false, "FLAG_docs" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CAPPOINT_Transmitter" ); Util.MapDebugPrint( "docs_Taken" ); yield(); Map.SetSpawn(); if ( Map.CarryingDocs > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_Transmitter_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allies_Transmitter_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_DocsTaken_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allies_DocsTaken_.*" ); Util.MapDebugPrint( "Defend inside bunker" ); sleep(2); if ( Map.Documents_Taken and Map.CarryingDocs > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Documents_.*", ".*_Axis_Doc_SD_Way_.*", ".*_Axis_Doc_Other_Way_.*", }); yield(); if ( Map.AllyInside > 0 ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Documents_.*", ".*_Axis_Doc_Other_Way_.*", }); if ( Map.ServiceDoorDestroyed ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Doc_SD_Way_.*" ); } } } } else { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Documents_.*", ".*_Axis_Doc_SD_Way_.*", ".*_Axis_Doc_Other_Way_.*", ".*_Axis_DocsTaken_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allies_DocsTaken_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Transmitter_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allies_Transmitter_.*" ); yield(); if ( Map.AllyInside > 0 ) { SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Documents_.*", ".*_Axis_Doc_Other_Way_.*", }); if ( Map.ServiceDoorDestroyed ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Doc_SD_Way_.*" ); } } Util.MapDebugPrint( "Defend near radio" ); } }, docs_Dropped = function( trigger ) { DeleteTriggerRegion("Carrying_Documents"); Map.CarryingDocs = 0; Util.MapDebugPrint( "docs_Dropped " + Map.CarryingDocs ); }, docs_Returned = function( trigger ) { Map.Documents_Taken = false; Map.SetSpawn(); Util.LimitToClass("PLANT_Allied_Command_Post", TEAM.AXIS, CLASS.COVERTOPS, CLASS.ENGINEER); Util.LimitToClass("PLANT_Axis_Command_Post", TEAM.ALLIES, CLASS.COVERTOPS, CLASS.ENGINEER); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_DocsTaken_.*", ".*_Axis_Transmitter_.*", }); SetAvailableMapGoals( TEAM.ALLIES, false, { ".*_Allies_DocsTaken_.*", "CAPPOINT_Transmitter", ".*_Allies_Transmitter_.*", }); if ( Map.AllyInside == 0 ) { if ( Map.PlatformMGBuilt ) { if ( Map.StorageWallDestroyed ) { SetAvailableMapGoals( TEAM.AXIS, true, { "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", }); } else { SetAvailableMapGoals( TEAM.AXIS, false, { "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", }); } } else { SetAvailableMapGoals( TEAM.AXIS, false, { "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", }); SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Platform_MG" ); } if ( Map.StorageWallDestroyed ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_PlatformMG42_.*" ); } else { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_StorageWall_.*" ); } if ( Map.AlliedCommandPostBuilt ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_ACP_Build_.*" ); } else { WeaponTable.SetWeaponTeamAvailability ( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, true ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_AlliedCP_.*" ); } SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_AccessToServiceDoor_.*", "BUILD_Axis_Command_Post", }); if ( !Map.MainDoorDestroyed ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_LadderToCP_.*" ); } else { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_MainDoor_.*" ); } } else { SetAvailableMapGoals( TEAM.AXIS, false, { "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Documents_.*", ".*_Axis_Doc_Other_Way_.*", }); if ( Map.ServiceDoorDestroyed ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Doc_SD_Way_.*" ); } } SetAvailableMapGoals( TEAM.ALLIES, true, "FLAG_docs" ); if ( Map.StorageWallDestroyed ) { if ( Map.PlatformMGBuilt ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Platform_MG" ); } } if ( !Map.AlliedCommandPostBuilt ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_Allied_Command_Post", ".*_Allies_CP1_.*", }); } Util.MapDebugPrint( "docs_Returned" ); }, docs_Secured = function( trigger ) { Map.DocsSecured = true; ETUtil.WinningChat( TEAM.ALLIES ); ETUtil.LosingChat( TEAM.AXIS ); Util.MapDebugPrint( "docs_Secured" ); }, SetSpawn = function() { foreach(bot in BotTable) { Map.SetSpawn1(bot); } }, SetSpawn1 = function(bot) { if (bot.GetTeam() == TEAM.AXIS) { if ( Map.AllyInside == 0 ) { if ( !Map.Documents_Taken ) { if ( bot.HasRole( ROLE.DEFENDER3 )) { bot.ChangeSpawnPoint(3); //Axis garage } else { bot.ChangeSpawnPoint(2); //Axis barracks } } else { bot.ChangeSpawnPoint(3); //Axis garage } } else { if ( !Map.Documents_Taken ) { bot.ChangeSpawnPoint(2); //Axis barracks } else { if ( Map.CarryingDocs > 0 ) { if ( bot.HasRole( ROLE.DEFENDER2 ) or bot.HasRole( ROLE.DEFENDER3 ) ) { bot.ChangeSpawnPoint(3); //Axis garage } else { bot.ChangeSpawnPoint(2); //Axis barracks } } else { bot.ChangeSpawnPoint(3); //Axis garage } } } } else { if ( Map.Documents_Taken ) { bot.ChangeSpawnPoint(0); //Allied barracks } else { if ( bot.HasRole( ROLE.ATTACKER3 )) { bot.ChangeSpawnPoint(0); //Allied barracks } else { if ( Map.AlliedCommandPostBuilt ) { bot.ChangeSpawnPoint(4); //Command post } else { bot.ChangeSpawnPoint(0); //Allied barracks } } } } }, Inside_bunker = { Name = "Inside_bunker", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AllyInside += 1; WeaponTable.SetWeaponTeamAvailability ( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, false ); Map.SetSpawn(); if ( !Map.Documents_Taken ) { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_AccessToServiceDoor_.*", ".*_Axis_AlliedCP_.*", "DEFEND_Axis_ACP_Build_.*", ".*_Axis_LadderToCP_.*", ".*_Axis_StorageWall_.*", ".*_Axis_MainDoor_.*", ".*_Axis_ServiceDoorPlanted_.*", "BUILD_Platform_MG", "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", "BUILD_Axis_Command_Post", ".*_Axis_PlatformMG42_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Documents_.*", ".*_Axis_Doc_Other_Way_.*", }); if ( Map.ServiceDoorDestroyed ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Doc_SD_Way_.*" ); } } Util.MapDebugPrint( "Allies inside + 1; Total amount: " + Map.AllyInside ); } }, OnExit = function(ent) { if( GetEntTeam(ent) == TEAM.ALLIES ) { Map.AllyInside -= 1; Util.MapDebugPrint( "Allies inside - 1; Total amount: " + Map.AllyInside ); if ( Map.AllyInside == 0 ) { Map.SetSpawn(); if ( !Map.Documents_Taken ) { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Documents_.*", ".*_Axis_Doc_SD_Way_.*", ".*_Axis_Doc_Other_Way_.*", }); if ( Map.PlatformMGBuilt ) { if ( Map.StorageWallDestroyed ) { SetAvailableMapGoals( TEAM.AXIS, true, { "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", }); } else { SetAvailableMapGoals( TEAM.AXIS, false, { "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", }); } } else { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Platform_MG" ); } if ( Map.StorageWallDestroyed ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_PlatformMG42_.*" ); } else { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_StorageWall_.*" ); } SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_AccessToServiceDoor_.*" ); if ( Map.AlliedCommandPostBuilt ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_ACP_Build_.*" ); } else { WeaponTable.SetWeaponTeamAvailability ( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, true ); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_AlliedCP_.*" ); } if ( !Map.MainDoorDestroyed ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_LadderToCP_.*" ); } else { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_MainDoor_.*" ); } if ( Map.Service_Door_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_AccessToServiceDoor_.*" ); foreach( goal in Util.GoalTable("DEFUSE_Service_Door_.*") ) { pos1 = goal.GetPosition(); Util.MapDebugPrint( "^5dynamite position is: "+pos1 ); if( pos1.y < -520 ) { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_ServiceDoorPlanted_0.*" ); yield(); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_AccessToServiceDoor_.*" ); Util.MapDebugPrint( "Planted from outside" ); } else { SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_ServiceDoorPlanted_1.*" ); yield(); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_AccessToServiceDoor_.*" ); Util.MapDebugPrint( "Planted from inside" ); } } } } else { SetAvailableMapGoals( TEAM.AXIS, false, { "MOUNTMG42_Platform_MG", "REPAIRMG42_Platform_MG", }); } Util.MapDebugPrint( "Ally inside = 0" ); } } }, }, Thirty_second = function( trigger ) { Util.MapDebugPrint( "Thirty_second" ); sleep(30); if ( !Map.DocsSecured ) { Util.MapDebugPrint( "Axis_Win" ); ETUtil.WinningChat( TEAM.AXIS ); ETUtil.LosingChat( TEAM.ALLIES ); } }, }; global OnMapLoad = function() { // Register callback functions OnTrigger( "allies_hq_compost_constructed", Map.Allied_Command_Post_Built ); OnTrigger( "Planted at the Allied Command Post.", Map.Allied_Command_Post_Planted ); OnTrigger( "Planted at Allied Command Post.", Map.Allied_Command_Post_Planted ); //in Nitmod OnTrigger( "Defused at the Allied Command Post.", Map.Allied_Command_Post_Defused ); OnTrigger( "Defused at Allied Command Post.", Map.Allied_Command_Post_Defused ); //in Nitmod OnTrigger( "Axis team has destroyed the Allied Command Post!", Map.Allied_Command_Post_Destroyed ); OnTrigger( "axis_hq_compost_constructed", Map.Axis_Command_Post_Built ); OnTrigger( "Planted at the Axis Command Post.", Map.Axis_Command_Post_Planted ); OnTrigger( "Planted at Axis Command Post.", Map.Axis_Command_Post_Planted ); //in Nitmod OnTrigger( "Defused at the Axis Command Post.", Map.Axis_Command_Post_Defused ); OnTrigger( "Defused at Axis Command Post.", Map.Axis_Command_Post_Defused ); //in Nitmod OnTrigger( "Allied team has destroyed the Axis Command Post!", Map.Axis_Command_Post_Destroyed ); OnTrigger( "Axis team has constructed the Platform MG Nest!", Map.Platform_MG_Built ); OnTrigger( "Planted at the Platform MG.", Map.Platform_MG_Planted ); OnTrigger( "Planted at Platform MG.", Map.Platform_MG_Planted ); //in Nitmod OnTrigger( "Defused at the Platform MG.", Map.Platform_MG_Defused ); OnTrigger( "Defused at Platform MG.", Map.Platform_MG_Defused ); //in Nitmod OnTrigger( "Allied team has destroyed the Platform MG Nest!", Map.Platform_MG_Destroyed ); OnTrigger( "Planted at the Main Door.", Map.Main_Door_Planted ); OnTrigger( "Planted at Main Door.", Map.Main_Door_Planted ); //in Nitmod OnTrigger( "Defused at the Main Door.", Map.Main_Door_Defused ); OnTrigger( "Defused at Main Door.", Map.Main_Door_Defused ); //in Nitmod OnTrigger( "The Main Door has been breached!", Map.Main_Door_Destroyed ); OnTrigger( "Planted at the Service Door.", Map.Service_Door_Planted ); OnTrigger( "Planted at Service Door.", Map.Service_Door_Planted ); //in Nitmod OnTrigger( "Defused at the Service Door.", Map.Service_Door_Defused ); OnTrigger( "Defused at Service Door.", Map.Service_Door_Defused ); //in Nitmod OnTrigger( "The Service Door has been breached!", Map.Service_Door_Destroyed ); OnTrigger( "Planted at the Storage Wall.", Map.Storage_Wall_Planted ); OnTrigger( "Planted at Storage Wall.", Map.Storage_Wall_Planted ); //in Nitmod OnTrigger( "Defused at the Storage Wall.", Map.Storage_Wall_Defused ); OnTrigger( "Defused at Storage Wall.", Map.Storage_Wall_Defused ); //in Nitmod OnTrigger( "Storage Wall destroyed!", Map.Storage_Wall_Destroyed ); OnTrigger( "storage_wall_mover_goto", Map.Storage_Wall_Door_Moving ); OnTrigger( "Allies have stolen the Supply Documents!", Map.docs_Taken ); OnTrigger( "Flag dropped docs!", Map.docs_Dropped ); OnTrigger( "Flag returned docs!", Map.docs_Returned ); OnTrigger( "The Allies have transmitted the Supply Documents!", Map.docs_Secured ); OnTrigger( "thirty second warning.", Map.Thirty_second ); Util.DisableGoal( ".*", true ); // all but routes SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_AccessToServiceDoor_.*", ".*_Axis_AlliedCP_.*", ".*_Axis_LadderToCP_.*", ".*_Axis_StorageWall_.*", "BUILD_Platform_MG", "BUILD_Axis_Command_Post", }); SetAvailableMapGoals( TEAM.ALLIES, true, { ".*_Allies_ServiceDoor_.*", ".*_Allies_CP1_.*", ".*_Allies_CP2_.*", ".*_Allies_StorageWall_.*", "PLANT_Main_Door", "PLANT_Service_Door", "PLANT_Storage_Wall", "SWITCH_StorageWallSwitch", "BUILD_Allied_Command_Post", }); Util.DisableGoal( "ROUTE_Main_Door" ); Util.DisableGoal( "ROUTE_Stairs_to_CP" ); Util.DisableGoal( "ROUTE_Service_Door_1" ); Util.DisableGoal( "ROUTE_Service_Door_2" ); Util.DisableGoal( "ROUTE_Main_Door_1" ); Util.DisableGoal( "ROUTE_Main_Door_2" ); Util.DisableGoal( "ROUTE_Storage_Wall_1" ); Util.DisableGoal( "ROUTE_Storage_Wall_2" ); Util.DisableGoal( "ROUTE_Storage_Wall_3" ); // Roles SetGoalRole( "DEFEND_Axis_AccessToServiceDoor_.*", ROLE.DEFENDER ); SetGoalRole( "DEFEND_Axis_ServiceDoorPlanted_.*", ROLE.DEFENDER ); SetGoalRole( "DEFEND_Axis_Doc_SD_Way_.*", ROLE.DEFENDER ); SetGoalRole( "ATTACK_Axis_DocsTaken_0.*", ROLE.DEFENDER ); SetGoalRole( "DEFEND_Axis_AlliedCP_.*", ROLE.DEFENDER1 ); SetGoalRole( "DEFEND_Axis_ACP_Build_.*", ROLE.DEFENDER1 ); SetGoalRole( "ATTACK_Axis_DocsTaken_1.*", ROLE.DEFENDER1 ); SetGoalRole( "DEFEND_Axis_LadderToCP_.*", ROLE.DEFENDER2 ); SetGoalRole( "DEFEND_Axis_Doc_Other_Way_.*", ROLE.DEFENDER2 ); SetGoalRole( "ATTACK_Axis_DocsTaken_2.*", ROLE.DEFENDER2 ); SetGoalRole( "DEFEND_Axis_Transmitter_1.*", ROLE.DEFENDER2 ); SetGoalRole( "DEFEND_Axis_StorageWall_.*", ROLE.DEFENDER3 ); SetGoalRole( "PLANTMINE_Axis_StorageWall_.*", ROLE.DEFENDER3 ); SetGoalRole( ".*_Axis_PlatformMG42_.*", ROLE.DEFENDER3 ); SetGoalRole( "BUILD_Platform_MG", ROLE.DEFENDER3 ); SetGoalRole( "MOUNTMG42_Platform_MG", ROLE.DEFENDER3 ); SetGoalRole( "REPAIRMG42_Platform_MG", ROLE.DEFENDER3 ); SetGoalRole( "BUILD_Axis_Command_Post", ROLE.DEFENDER3 ); SetGoalRole( "ATTACK_Axis_DocsTaken_3.*", ROLE.DEFENDER3 ); SetGoalRole( "DEFEND_Axis_Transmitter_2.*", ROLE.DEFENDER3 ); SetGoalRole( "AIRSTRIKE_Axis_AlliedCP_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2 } ); SetGoalRole( "MOBILEMG42_Axis_AlliedCP_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2 } ); SetGoalRole( "ARTILLERY_S_Axis_AlliedCP_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } ); SetGoalRole( "CALLARTILLERY_Axis_AlliedCP_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } ); SetGoalRole( "DEFEND_Axis_Transmitter_0.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } ); SetGoalRole( "ATTACK_Allies_ServiceDoor_.*", ROLE.ATTACKER ); SetGoalRole( "ATTACK_Allies_DocsTaken_0.*", ROLE.ATTACKER ); SetGoalRole( "ATTACK_Allies_CP1_.*", ROLE.ATTACKER1 ); SetGoalRole( "ATTACK_Allies_DocsTaken_1.*", ROLE.ATTACKER1 ); SetGoalRole( "ATTACK_Allies_CP2_.*", ROLE.ATTACKER2 ); SetGoalRole( "ATTACK_Allies_DocsTaken_2.*", ROLE.ATTACKER2 ); SetGoalRole( "DEFEND_Allies_Transmitter_1.*", ROLE.ATTACKER2 ); SetGoalRole( "ATTACK_Allies_StorageWall_.*", ROLE.ATTACKER3 ); SetGoalRole( "PLANT_Storage_Wall", ROLE.ATTACKER3 ); SetGoalRole( "PLANT_Platform_MG", ROLE.ATTACKER3 ); SetGoalRole( "ATTACK_Allies_DocsTaken_3.*", ROLE.ATTACKER3 ); SetGoalRole( "DEFEND_Allies_Transmitter_2.*", ROLE.ATTACKER3 ); SetGoalRole( "BUILD_Allied_Command_Post", { ROLE.ATTACKER, ROLE.ATTACKER1 } ); SetGoalRole( "DEFEND_Allies_Transmitter_0.*", { ROLE.ATTACKER, ROLE.ATTACKER1 } ); SetGoalRole( "PLANT_Main_Door", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2 } ); SetGoalRole( "PLANT_Service_Door", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2 } ); SetGoalRole( "SWITCH_StorageWallSwitch", ROLE.INFILTRATOR ); // Priorities SetGoalPriority( ".*_Axis_ServiceDoorPlanted_.*", 0.52, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Doc_SD_Way_.*", 0.53, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Doc_Other_Way_.*", 0.53, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Documents_.*", 0.54, TEAM.AXIS, 0 ); SetGoalPriority( "ATTACK_Axis_DocsTaken_.*", 0.55, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Transmitter_.*", 0.56, TEAM.AXIS, 0 ); SetGoalPriority( "PLANT_Allied_Command_Post", 0.7, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "AIRSTRIKE_Axis_AlliedCP_13", 0.81, TEAM.AXIS, CLASS.FIELDOPS ); SetGoalPriority( "BUILD_Axis_Command_Post", 0.89, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "ATTACK_Allies_DocsTaken_.*", 0.55, TEAM.ALLIES, 0 ); SetGoalPriority( "DEFEND_Allies_Transmitter_.*", 0.56, TEAM.ALLIES, 0 ); SetGoalPriority( "PLANT_Axis_Command_Post", 0.7, TEAM.ALLIES, CLASS.ENGINEER ); Util.LimitToClass( "PLANT_Allied_Command_Post", TEAM.AXIS, CLASS.COVERTOPS ); Util.LimitToClass( "PLANT_Axis_Command_Post", TEAM.ALLIES, CLASS.COVERTOPS ); // Max users per goal Util.SetMaxUsers( 1, "MOUNTMG42_.*" ); Util.SetMaxUsers( 1, "PLANT_Allied_Command_Post" ); Util.SetMaxUsers( 1, "BUILD_Platform_MG" ); // Camp times //SetMapGoalProperties( "MOUNTMG42_.*", {MinCampTime=15, MaxCampTime=90} ); Util.AddUseWp( "PLANT_Storage_Wall", "Storage_Wall_Plant_WP_1" ); Util.AddUseWp( "PLANT_Storage_Wall", "Storage_Wall_Plant_WP_2" ); Util.AddUseWp( "PLANT_Main_Door", "Main_Door_Plant_WP_1" ); Util.AddUseWp( "PLANT_Main_Door", "Main_Door_Plant_WP_2" ); Util.AddUseWp( "PLANT_Service_Door", "Service_Door_Plant_WP_1" ); Util.AddUseWp( "PLANT_Service_Door", "Service_Door_Plant_WP_2" ); Util.AddUseWp( "BUILD_Platform_MG", "Platform_MG_2" ); Util.AddUseWp( "PLANT_Platform_MG", "Platform_MG_3" ); Util.AddUseWp( "MOUNTMG42_Platform_MG", "Platform_MG_3" ); Util.AddUseWp( "REPAIRMG42_Platform_MG", "Platform_MG_3" ); Wp.SetWaypointFlag( "Platform_MG_1", "closed", true ); Inside1 = OnTriggerRegion(AABB(-544.873,-496.875,1.125,1216.873,1864.875,652.207), Map.Inside_bunker); RegionTrigger.Create(AABB(939.181,-416.875,193.125,1216.875,-42.936,487.125), "DisableCombatMovement", "Generator"); RegionTrigger.Create(AABB(767.125,47.126,353.125,905.818,272.875,498.855), "DisableCombatMovement", "Table"); RegionTrigger.Create(AABB(1126.738,299.725,353.125,1216.875,423.078,487.125), "DisableCombatMovement", "Barrel"); RegionTrigger.Create(AABB(1095.849,47.125,353.125,1216.875,150.773,500.086), "DisableCombatMovement", "WoodenBox"); RegionTrigger.Create(AABB(-1762.524,-107.314,257.125,-1552.676,9.212,367.092), "DisableCombatMovement", "Airstrike13"); RegionTrigger.Create(AABB(-1675.302,191.127,289.125,-1514.721,304.477,399.284), "DisableCombatMovement", "Airstrike10"); RegionTrigger.Create(AABB(-4791.335,2039.125,-188.230,-4461.032,2374.793,7.577), "DisableCombatMovement", "Transmitter"); RegionTrigger.Create(AABB(-2153.765,-231.872,-70.875,-1814.854,-72.531,347.108), "DisableCombatMovement", "Ladder_Outside"); RegionTrigger.Create(AABB(-1216.875,662.606,1.125,-1051.381,800.875,370.752), "DisableCombatMovement", "Ladder_Inside"); RegionTrigger.Create(AABB(-404.063,607.125,226.733,-22.144,952.875,373.262), "DisableCombatMovement", "Near_Axis_Spawn"); RegionTrigger.Create(AABB(757.207,427.628,193.125,1183.627,800.875,455.659), "DisableCombatMovement", "Stairs_at_Docs"); //Weapon restrictions WeaponTable.SetWeaponTeamAvailability ( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, true ); WeaponTable.SetWeaponTeamAvailability ( TEAM.ALLIES, CLASS.SOLDIER, WEAPON.MOBILE_MG42, false ); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.MORTAR, false ); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.VENOM, false ); Map.SetSpawn(); 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 ^3for ^3map ^7" + GetMapName(), 1 ); sleep(2); SetGoalPriority( "AIRSTRIKE_Axis_AlliedCP_13", 0.8, TEAM.AXIS, CLASS.FIELDOPS ); //return to default priority }; global OnBotJoin = function( bot ) { bot.TargetBreakableDist = 180.0; if ( bot.GetTeam() == TEAM.AXIS and bot.GetClass() == CLASS.SOLDIER ) { if ( bot.HasRole( ROLE.DEFENDER3 )) { bot.ChangePrimaryWeapon(WEAPON.PANZERFAUST); } else { if ( Map.AllyInside == 0 ) { if ( !Map.Documents_Taken and !Map.AlliedCommandPostBuilt ) { bot.ChangePrimaryWeapon(WEAPON.MOBILE_MG42); } else { bot.ChangePrimaryWeapon(WEAPON.PANZERFAUST); } } else { bot.ChangePrimaryWeapon(WEAPON.PANZERFAUST); } } } Map.SetSpawn(); }; global InitializeRoutes = function() { MapRoutes = { FLAG_docs = { ROUTE_AlliedBarracks1_Spawn = { ROUTE_Ladder_to_CP_2 = { ROUTE_Around_CP_1 = { ROUTE_Cabinets = {}, }, }, ROUTE_Main_Door = { ROUTE_Main_Door_1 = {}, }, ROUTE_Service_Door_2 = { ROUTE_Service_Door_1 = {}, }, ROUTE_Storage_Wall_2 = { ROUTE_Storage_Wall_3 = {}, }, }, ROUTE_AlliedBarracks2_Spawn = { ROUTE_Ladder_to_CP_2 = { ROUTE_Around_CP_1 = { ROUTE_Cabinets = {}, }, }, ROUTE_Main_Door = { ROUTE_Main_Door_1 = {}, }, ROUTE_Service_Door_2 = { ROUTE_Service_Door_1 = {}, }, ROUTE_Storage_Wall_2 = { ROUTE_Storage_Wall_3 = {}, }, }, ROUTE_Allied_CP_Spawn = { ROUTE_Around_CP_2 = { ROUTE_Around_CP_1 = { ROUTE_Cabinets = {}, }, }, ROUTE_Stairs_to_CP = { ROUTE_Outside_Stairs = {}, }, ROUTE_Service_Door_2 = { ROUTE_Service_Door_1 = {}, }, }, }, PLANT_Main_Door = { }, PLANT_Service_Door = { }, BUILD_Axis_Command_Post = { }, PLANT_Axis_Command_Post = { }, PLANT_Storage_Wall = { }, BUILD_Allied_Command_Post = { ROUTE_AlliedBarracks1_Spawn = { ROUTE_Ladder_to_CP_1 = { ROUTE_Ladder_to_CP_2 = {}, }, ROUTE_Main_Door = { ROUTE_Stairs_to_CP = {}, }, }, ROUTE_AlliedBarracks2_Spawn = { ROUTE_Ladder_to_CP_1 = { ROUTE_Ladder_to_CP_2 = {}, }, ROUTE_Main_Door = { ROUTE_Stairs_to_CP = {}, }, }, }, PLANT_Allied_Command_Post = { }, BUILD_Platform_MG = { }, PLANT_Platform_MG = { }, CAPPOINT_Transmitter = { ROUTE_Cappoint_Place = { ROUTE_Cabinets = { ROUTE_Around_CP_1 = { ROUTE_Around_CP_2 = { ROUTE_Around_Allied_Barracks = { ROUTE_Door_to_AxisCP = { ROUTE_Lower_Door_to_Transmitter = {}, }, ROUTE_Roof_above_AxisCP = { ROUTE_Ladder_to_Transmitter = {}, }, }, }, }, }, ROUTE_Service_Door_1 = { ROUTE_Service_Door_2 = { ROUTE_Around_CP_2 = { ROUTE_Around_Allied_Barracks = { ROUTE_Door_to_AxisCP = { ROUTE_Lower_Door_to_Transmitter = {}, }, ROUTE_Roof_above_AxisCP = { ROUTE_Ladder_to_Transmitter = {}, }, }, }, }, }, ROUTE_Main_Door_1 = { ROUTE_Main_Door_2 = { ROUTE_Around_Allied_Barracks = { ROUTE_Door_to_AxisCP = { ROUTE_Lower_Door_to_Transmitter = {}, }, ROUTE_Roof_above_AxisCP = { ROUTE_Ladder_to_Transmitter = {}, }, }, }, }, ROUTE_Storage_Wall_1 = { ROUTE_Storage_Wall_2 = { ROUTE_Door_to_AxisCP = { ROUTE_Lower_Door_to_Transmitter = {}, }, ROUTE_Roof_above_AxisCP = { ROUTE_Ladder_to_Transmitter = {}, }, }, }, ROUTE_Storage_Wall_3 = { ROUTE_Storage_Wall_2 = { ROUTE_Door_to_AxisCP = { ROUTE_Lower_Door_to_Transmitter = {}, }, ROUTE_Roof_above_AxisCP = { ROUTE_Ladder_to_Transmitter = {}, }, }, }, }, }, }; Util.Routes(MapRoutes); };