//========================================================================================== // VERSION 3.6 FINAL // uje_carentan.gm kharanthan.gm // // Who When What //------------------------------------------------------------------------------------------ // d00d 04 January 2011 Pretty much done. // TODO: Fix team door at wp id 299. // d00d 02 January 2011 Initial Script // // CYBER4WOLF CUSTOM // cyber4wolf 05.13.2026 version 3.3 changed the tank goal from being available when the documents can be stolen. // Now Allies will concentrate on stealing documents NOT building & escorting Tank. // version 3.5 added many conditionals, added some use points for planting & building barriers // // C4W 05.15.2026 version 3.6 final //========================================================================================== // global Map = { Debug = 0, // please set to zero before distributing your script DefendingTeam = TEAM.AXIS, Documents_NOT_Accessible = true, Tank_AT_Barrier1 = false, Tank_AT_Barrier2 = false, TankPastBarrier1 = false, TankPastBarrier2 = false, TankBarrier1Built = false, TankBarrier2Built = false, Tank_Barrier_Dyno = 0, Tank_Barrier2_Dyno = 0, Town_Gate_Dyno = 0, TankDestroyed = true, Navigation = { quickjump = { // better response time than nav flags navigate = function(_this) { _this.Bot.PressButton(BTN.JUMP); yield(); }, }, crouchjump = { navigate = function(_this) { _this.Bot.PressButton(BTN.JUMP); _this.Bot.HoldButton(BTN.CROUCH, 0.5); yield(); }, }, door = { navigate = function(_this) { _this.AddAimRequest( Priority.High, "position", Vec3(1402,520,-1770) ); _this.Bot.PressButton(BTN.USE); yield(); _this.Bot.PressButton(BTN.USE); yield(); _this.Bot.PressButton(BTN.USE); yield(); }, }, }, Tank_Built = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, "MOUNT_Tank" ); Map.TankDestroyed = false; Util.MapDebugPrint( "^6Tank_Built" ); }, Tank_Barrier_Built = function( trigger )//is PLANT_Tank_Barrier { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier" ); Map.TankBarrier1Built = true; Util.MapDebugPrint( "Tank_Barrier_Built" ); }, Tank_Barrier2_Built = function( trigger )//is PLANT_Tank_Barrier_1 { if (Map.TankPastBarrier == true) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier_1" ); } else if (Map.TankPastBarrier == false) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier" ); } Map.TankBarrier2Built = true; Util.MapDebugPrint( "Tank_Barrier2_Built" ); }, Town_Gate_Built = function( trigger ) { Util.MapDebugPrint( "Town_Gate_Built" ); }, Tank_Barrier_Planted = function( trigger )//is PLANT_Tank_Barrier { if (Map.TankBarrier1Built == false ) { if (Map.TankDestroyed == true ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); } //Util.BotChat( 1, "say", "^3TANK BARRIER 2 DYNAMITE ^6PLANTED!", 1 ); } else if (Map.TankBarrier1Built == true ) { if (Map.TankDestroyed == true ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); } else { //Do Nothing } //Util.BotChat( 1, "say", "^3TANK BARRIER 1 DYNAMITE ^6PLANTED!", 1 ); } Map.Tank_Barrier_Dyno += 1; Util.MapDebugPrint( "Tank_Barrier_Planted" ); }, Tank_Barrier2_Planted = function( trigger )//is PLANT_Tank_Barrier_1 { if (Map.Tank_AT_Barrier2 == true && Map.TankDestroyed == true) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); } else { //Do Nothing } Map.Tank_Barrier2_Dyno += 1; Util.MapDebugPrint( "Tank_Barrier2_Planted" ); }, Town_Gate_Planted = function( trigger ) { Map.Town_Gate_Dyno += 1; Util.MapDebugPrint( "Town_Gate_Planted" ); }, Tank_Barrier_Defused = function( trigger )//is PLANT_Tank_Barrier { if (Map.Tank_AT_Barrier1 == true && Map.TankBarrier1Built == true) { Map.Tank_Barrier_Dyno -= 1; if (Map.TankDestroyed == true) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier" ); } else if (Map.TankDestroyed == false) { //Do Nothing SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier" ); } //Util.BotChat( 1, "say", "^3TANK BARRIER 1 DYNAMITE ^1DEFUSED!", 1 ); } else if (Map.Tank_AT_Barrier2 == true && Map.TankBarrier2Built == true) { Map.Tank_Barrier2_Dyno -= 1; if (Map.TankDestroyed == true ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier_1" ); } else if (Map.TankDestroyed == false ) { //Do Nothing SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier_1" ); } //Util.BotChat( 1, "say", "^3TANK BARRIER 2 DYNAMITE ^1DEFUSED!", 1 ); } //Map.Tank_Barrier_Dyno -= 1; Util.MapDebugPrint( "Tank_Barrier_Defused" ); }, Tank_Barrier2_Defused = function( trigger )//is PLANT_Tank_Barrier_1 { Map.Tank_Barrier2_Dyno -= 1; Util.MapDebugPrint( "Tank_Barrier2_Defused" ); }, Town_Gate_Defused = function( trigger ) { Map.Town_Gate_Dyno -= 1; Util.MapDebugPrint( "Town_Gate_Defused" ); }, Tank_Barrier_Destroyed = function( trigger )//is PLANT_Tank_Barrier { if (Map.TankDestroyed == true && Map.Tank_AT_Barrier1 == true) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Tank_Barrier" ); } else { //Do Nothing } Map.TankBarrier1Built = false; Map.Tank_Barrier_Dyno = 0; Util.MapDebugPrint( "Tank_Barrier_Destroyed" ); }, Tank_Barrier2_Destroyed = function( trigger )//is PLANT_Tank_Barrier_1 { if (Map.TankDestroyed == true && Map.Tank_AT_Barrier2 == true) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Tank_Barrier_1" ); } Map.TankBarrier2Built = false; Map.Tank_Barrier2_Dyno = 0; Util.MapDebugPrint( "Tank_Barrier2_Destroyed" ); }, Tank_Past_Barrier1 = function( trigger )//is PLANT_Tank_Barrier { if (Map.TankBarrier2Built == true ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier_1" ); } else { //Do Nothing } Map.TankPastBarrier1 = true; SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_tb1.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_tb2.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_tb1.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_tb2.*" ); //SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Tank_Barrier_1" ); Util.MapDebugPrint( "Tank_Past_Barrier1" ); }, Tank_Past_Barrier2 = function( trigger )//is PLANT_Tank_Barrier_1 { Map.TankPastBarrier2 = true; SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_tb2.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_hq.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_tb2.*" ); SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_hq.*", "PLANTMINE_alley.*", "PLANTMINE_backdoor.*", "PLANTMINE_frontdoor.*", }); Util.MapDebugPrint( "Tank_Past_Barrier2" ); }, Town_Gate_Destroyed = function( trigger ) { Map.Town_Gate_Dyno = 0; Util.MapDebugPrint( "Town_Gate_Destroyed" ); }, Docs_Accessible = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, "TRIPMINE_axis_.*" ); Map.Documents_NOT_Accessible = false; SetAvailableMapGoals( TEAM.ALLIES, true, "FLAG_German_Documents" ); SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_Tank" ); SetMapGoalProperties( "MOUNT_Tank", {AimMode = "random"} ); SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_tb.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_hq.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_tb.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_hq.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "CALLARTILLERY_barrier1" ); SetAvailableMapGoals( TEAM.ALLIES, false, "CALLARTILLERY_barrier2" ); iw1 = OnTriggerRegion( AABB(2303.863,2031.539,-1816.039,2435.173,2156.698,-1664.466), RegionTrigger.IntrusionWarning ); iw2 = OnTriggerRegion( AABB(2136.427,2477.799,-1786.485,2273.273,2638.421,-1686.592), RegionTrigger.IntrusionWarning ); iw3 = OnTriggerRegion( AABB(2768.811,2105.022,-1797.775,2896.143,2197.293,-1694.848), RegionTrigger.IntrusionWarning ); Util.MapDebugPrint( "Docs_Accessible" ); }, Vietcong_Documents_Taken = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_hq.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_cp.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, { "ATTACK_hq.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_cp.*" ); Util.MapDebugPrint( "Vietcong_Documents_Taken" ); }, Vietcong_Documents_Returned = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_hq.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_cp.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_cp.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_hq.*" ); Util.MapDebugPrint( "Vietcong_Documents_Returned" ); }, Vietcong_Documents_Secured = function( trigger ) { Util.MapDebugPrint( "Vietcong_Documents_Secured" ); }, Tank_Destroyed = function( trigger ) { if (Map.Documents_NOT_Accessible == true) { if (Map.TankBarrier1Built == true && Map.Tank_AT_Barrier1 == true) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier" ); } else if (Map.TankBarrier2Built == true && Map.Tank_AT_Barrier2 == true) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier_1" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_Tank" ); } } else if (Map.Documents_NOT_Accessible == false) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_Tank" ); } Map.TankDestroyed = true; Util.MapDebugPrint( "^6Tank_Destroyed" ); }, b1 = { Name="b1",//is PLANT_Tank_Barrier TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) { Map.Tank_AT_Barrier1 = true; SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CALLARTILLERY_barrier1" ); Util.MapDebugPrint(GetEntName(ent) + " ^6Tank_AT_Barrier1 entering"); Util.MapDebugPrint("^1Tank_AT_Barrier1 ENTER"); }, OnExit = function(ent) { SetAvailableMapGoals( TEAM.ALLIES, false, "CALLARTILLERY_barrier1" ); Util.MapDebugPrint(GetEntName(ent) + " exited Tank_AT_Barrier1 aabb trigger"); Util.MapDebugPrint("^1Tank_AT_Barrier1 exit"); }, }, b2 = { Name="b2",//is PLANT_Tank_Barrier_1 TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(), OnEnter = function(ent) {Map.Tank_AT_Barrier2 = true; SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Tank_Barrier_1" ); SetAvailableMapGoals( TEAM.ALLIES, false, "CALLARTILLERY_barrier1" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CALLARTILLERY_barrier2" ); Util.MapDebugPrint(GetEntName(ent) + " ^6Tank_AT_Barrier2 entering"); Util.MapDebugPrint("^1Tank_AT_Barrier2 ENTER"); }, OnExit = function(ent) { Util.MapDebugPrint(GetEntName(ent) + " exited Tank_AT_Barrier2 aabb trigger"); Util.MapDebugPrint("^1Tank_AT_Barrier2 exit"); }, }, dbg = function( ) { while(true) { DrawDebugLine( Vec3(1402,520,-1783), Vec3(1402,520,-1770), COLOR.BLUE, 0.25 ); yield(); } }, // Neutral Command Post = Train_Station Command Post = TSCP CP_Owner = 0, TSCP_Dyno = 0, Set_TSCP = function(_p) // p = TEAM.ALLIES or TEAM.AXIS or 0 (unbuilt) { switch(_p) { case 0: { Map.TSCP_Owner = 0; SetAvailableMapGoals( TEAM.ALLIES, 1, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, 0, "PLANT_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, 1, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, 0, "PLANT_Command_Post" ); } case TEAM.ALLIES: { Map.TSCP_Owner = TEAM.ALLIES; SetAvailableMapGoals( TEAM.ALLIES, 0, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, 0, "PLANT_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, 1, "PLANT_Command_Post" ); } case TEAM.AXIS: { Map.TSCP_Owner = TEAM.AXIS; SetAvailableMapGoals( TEAM.ALLIES, 0, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, 1, "PLANT_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, 0, "PLANT_Command_Post" ); } } Util.MapDebugPrint("TSCP Owner: " + Map.TSCP_Owner ); }, Allied_TSCP_Built = function( trigger ) { Map.Set_TSCP(TEAM.ALLIES); Util.ChangeSpawn( TEAM.ALLIES, 3, 10 ); Util.MapDebugPrint( "^6Allied_TSCP_Built" ); }, Allied_TSCP_Destroyed = function( trigger ) { Map.TSCP_Dyno = 0; Map.Set_TSCP(0); Util.MapDebugPrint( "^6Allied_TSCP_Destroyed" ); }, Axis_TSCP_Built = function( trigger ) { Map.Set_TSCP(TEAM.AXIS); Util.ChangeSpawn( TEAM.AXIS, 3, 10 ); Util.MapDebugPrint( "^6Axis_TSCP_Built" ); }, Axis_TSCP_Destroyed = function( trigger ) { Map.TSCP_Dyno = 0; Map.Set_TSCP(0); Util.MapDebugPrint( "^6Axis_TSCP_Destroyed" ); }, TSCP_Planted = function( trigger ) { Map.TSCP_Dyno += 1; Util.MapDebugPrint( "^6TSCP_Planted" ); }, TSCP_Defused = function( trigger ) { Map.TSCP_Dyno -= 1; Util.MapDebugPrint( "^6TSCP_Defused" ); }, }; global OnMapLoad = function() { // Register callback functions OnTrigger( "allies_hq_compost_constructed", Map.Allied_TSCP_Built ); OnTrigger( "allies_hq_compost_constructed_axis", Map.Axis_TSCP_Built ); OnTrigger( "allies_hq_compost_damaged", Map.Allied_TSCP_Destroyed ); OnTrigger( "axis_hq_compost_damaged", Map.Axis_TSCP_Destroyed ); OnTrigger( "Planted at the Command Post.", Map.TSCP_Planted ); OnTrigger( "Defused at the Command Post.", Map.TSCP_Defused ); OnTrigger( "The tank has been repaired!", Map.Tank_Built ); OnTrigger( "^hThe First Tank Barrier has been constructed!", Map.Tank_Barrier_Built ); OnTrigger( "^hThe Second Tank Barrier has been constructed!", Map.Tank_Barrier2_Built ); OnTrigger( "^hThe Town Gate has been built!", Map.Town_Gate_Built ); OnTrigger( "Planted at the Tank Barrier.", Map.Tank_Barrier_Planted ); OnTrigger( "Planted at the MISSING_STRING.", Map.Tank_Barrier2_Planted ); OnTrigger( "Planted at the MISSING_STRING.", Map.Town_Gate_Planted ); OnTrigger( "Defused at the Tank Barrier.", Map.Tank_Barrier_Defused ); OnTrigger( "Defused at the MISSING_STRING.", Map.Tank_Barrier2_Defused ); OnTrigger( "Defused at the MISSING_STRING.", Map.Town_Gate_Defused ); OnTrigger( "^iThe First Tank Barrier has been destroyed!", Map.Tank_Barrier_Destroyed ); OnTrigger( "goldrush_axis_tank_barrier1", Map.Tank_Past_Barrier1 ); OnTrigger( "^iThe Second Tank Barrier has been destroyed!", Map.Tank_Barrier2_Destroyed ); OnTrigger( "goldrush_axis_tank_barrier2", Map.Tank_Past_Barrier2 ); OnTrigger( "^iThe Town Gate has been destroyed!", Map.Town_Gate_Destroyed ); //OnTrigger( "^qViet Cong must defend the HQ and the documents!", Map.Docs_Accessible ); OnTrigger( "tank_turret_stop", Map.Docs_Accessible ); OnTrigger( "^qEasy Company need to steal the documents and secure them in the Huey! ^1The Germans must defend the HQ and the documents!", Map.Docs_Accessible ); OnTrigger( "Allies have stolen The Vietcong Documents!", Map.Vietcong_Documents_Taken ); OnTrigger( "Flag returned Vietcong Documents!", Map.Vietcong_Documents_Returned ); OnTrigger( "Marines team has secured the documents!", Map.Vietcong_Documents_Secured ); OnTrigger( "The tank has been damaged!", Map.Tank_Destroyed ); //OnTriggerRegion(AABB(3814.180,-885.526,-1813.867,4183.875,-815.124,-1731.869), Map.b2); OnTriggerRegion(AABB(2592.412,-2050.109,-1782.875,3031.872,-1992.674,-1680.424), Map.b1); OnTriggerRegion(AABB(3806.384,-1178.512,-1813.875,4251.875,-1025.125,-1730.230), Map.b2); Util.DisableGoal( "DEFEND_.*" ); Util.DisableGoal( "ATTACK_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_tb1.*" ); SetGoalPriority( "ATTACK_tb1.*", 0.65 ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_tb1.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_Tank" ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_Tank" ); SetGoalPriority( "PLANT_Command_Post", 0.8, 0, CLASS.COVERTOPS ); SetGoalPriority( "PLANT_Command_Post", 0.0, 0, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Town_Gate", 0.8, 0, CLASS.COVERTOPS ); SetGoalPriority( "PLANT_Town_Gate", 0.0, 0, CLASS.ENGINEER ); SetGoalPriority( "BUILD_Tank_Barrier", 0.93 ); SetGoalPriority( "BUILD_Tank_Barrier_1", 0.90 ); SetGoalPriority( "BUILD_Tank", 0.91 ); SetGoalPriority( "BUILD_Command_Post", 0.8 ); SetGoalPriority( "PLANT_Command_Post", 0.8 ); SetGoalPriority( "PLANT_Tank_Barrier", 0.92 ); SetGoalPriority( "PLANT_Tank_Barrier_1", 0.89 ); SetGoalPriority( "MOUNT_Tank", 0.8 ); SetGoalPriority( "ESCORT_Tank", 0.8 ); SetGoalPriority( "PLANT_Town_Gate", 0.81, 0, CLASS.COVERTOPS ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Tank_Barrier" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Tank_Barrier_1" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Town_Gate" ); SetAvailableMapGoals( TEAM.ALLIES, false, "FLAG_German_Documents" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CALLARTILLERY_barrier1" ); SetAvailableMapGoals( TEAM.ALLIES, false, "CALLARTILLERY_barrier2" ); // Max users per goal Util.SetMaxUsers( 1, "PLANT_.*" ); Util.SetMaxUsers( 1, "BUILD_.*" ); Util.SetMaxUsers( 2, "BUILD_Tank_Barrier" ); Util.SetMaxUsers( 2, "BUILD_Tank_Barrier_1" ); Util.SetMaxUsers( 2, "BUILD_Tank" ); Util.SetMaxUsers( 1, "DEFEND_.*" ); Util.SetMaxUsers( 1, "GRENADE_.*" ); Util.SetMaxUsers( 1, "MOUNTMG42_.*" ); Util.SetMaxUsers( 3, "FLAG_German_Documents" ); SetAvailableMapGoals( TEAM.AXIS, true, "PLANTMINE_axis_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "TRIPMINE_axis_.*" ); Util.SetMaxUsers( 1, "TRIPMINE_axis_.*" ); Util.SetMaxUsers( 1, "PLANTMINE_axis_.*" ); //First Tank Barrier aka Tank_Barrier //Util.AddUseWp("PLANT_Tank_Barrier", "barrier1_1");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier", "barrier1_2");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier", "barrier1_3");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier", "barrier1_4");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier", "barrier1_5");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier", "barrier1_6");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier", "b1c4w_1");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier", "b1c4w_2");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier", "b1c4w_3");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier", "b1c4w_4");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier", "b1c4w_5");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier", "b1c4w_6");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier", "barrier1_7");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier", "barrier1_8");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier", "barrier1_9");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier", "barrier1_10");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier", "barrier1_11");// tunnel 1 the waypoint name //Second Tank Barrier aka Tank_Barrier_1 // Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_1");// between tank and barrier //Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_2");// between tank and barrier //Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_3");// between tank and barrier Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_4");// middle of barrier area Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_5");// middle of barrier area //Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_6");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_7");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_8");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_9");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_10");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_11");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_12");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_13");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_14");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_15");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_16");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_17");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_18");// middle of barrier area Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_19");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier_1", "barrier2_20");// tunnel 1 the waypoint name Util.AddUseWp("PLANT_Tank_Barrier_1", "b2c4w_1");// Util.AddUseWp("PLANT_Tank_Barrier_1", "b2c4w_2");// tunnel 1 the waypoint name //Util.AddUseWp("PLANT_Tank_Barrier_1", "b2c4w_3");// tunnel 1 the waypoint name Util.AddUseWp("BUILD_Tank_Barrier", "barrier1build");// better cover Util.AddUsePoint( "BUILD_Tank_Barrier_1", Vec3(3750,-695,-1789) ); // better cover Util.AddUsePoint( "PLANT_Town_Gate", { Vec3(3250,-795,-1789), Vec3(3250,-695,-1789) } ); SetGoalPriority( "PLANT_Command_Post", 0.89, TEAM.ALLIES, CLASS.COVERTOPS ); SetGoalPriority( "BUILD_Command_Post", 0.89, TEAM.ALLIES, CLASS.ENGINEER ); Util.LimitToClass( "PLANT_Command_Post", 1, 5 ); Util.LimitToClass( "PLANT_Command_Post", 2, 5 ); // Camp times SetMapGoalProperties( "MOUNTMG42_.*", {MinCampTime=15, MaxCampTime=90} ); SetMapGoalProperties( "MOBILEMG42_.*", {MinCampTime=10, MaxCampTime=60} ); if(GetGameState() == "Playing") { sleep(15); Util.BotChat( 0, "say", "^1ETS^4|^1C^04^1W ^2Custom ^3Omni-bot map script ^6ver ^23.6 ^3For the map:^7" + GetMapName(), 1 ); } Util.MapDebugPrint( "^1Omni-bot map script for Kha-Ran-Than executed. ROFL, different strings!" ); MapRoutes = { PLANT_Town_Gate = { ROUTE_allied_spawn = { ROUTE_yard = {}, ROUTE_gate_right = { ROUTE_corner = {}, ROUTE_window = {} }, ROUTE_street_left = {}, ROUTE_door_left = {}, ROUTE_window = {} } }, PLANT_Tank_Barrier = { ROUTE_allied_spawn = { ROUTE_street_left = {}, ROUTE_gate_right = {}, ROUTE_mast = { ROUTE_house_right = {} } } }, FLAG_German_Documents = { ROUTE_allied_spawn = { ROUTE_street_left = {}, ROUTE_alley = { ROUTE_alley2 = { ROUTE_backdoor = {} } }, ROUTE_gate_right = { ROUTE_alley2 = { ROUTE_backdoor = {} } }, ROUTE_alley2 = { ROUTE_backdoor = {} } } }, CAPPOINT_Huey = { ROUTE_objective = { ROUTE_frontdoor = { ROUTE_street_left = {}, ROUTE_gate_right = {} }, ROUTE_backdoor = { ROUTE_alley2 = { ROUTE_gate_right = {} } }, }, ROUTE_frontdoor = { ROUTE_street_left = {}, ROUTE_gate_right = {} } }, }; Util.Routes(MapRoutes); // thread( Map.dbg ); }; global OnBotJoin = function( bot ) { bot.MaxViewDistance = 3500; };