//========================================================================================== // // axislab_final.gm // // Who When What //------------------------------------------------------------------------------------------ // d00d revision of script for OB 0.71/0.8x // 03.03.2013 supplemented and modified by Qiki and Native12 // native12 07.04.2013 ready to test // 08.04.2013 added triggers for N!tmod // 12.04.2013 minor adjustments // 23.12.2018 fixed stuckages, fixed plant goal "PLANT_Main_Entrance.*" for Nitmod //========================================================================================== // global Map = { Debug = 0, // please set to zero before distributing your script Allied_Command_Post_Dyno = 0, Allied_mg_Nest_Dyno = 0, Axis_Command_Post_Dyno = 0, Axis_mg_Nest_Dyno = 0, Back_Door_Dyno = 0, Cart_Ramp_Dyno = 0, Elevator_Generator_Dyno = 0, Main_Entrance_to_the_Nuke_Dyno = 0, Root_Cellar_Dyno = 0, Sewers_Dyno = 0, Truck_Barrier_Dyno = 0, DefendingTeam = TEAM.AXIS, Talk = true, Elevator = true, NukeIsInTheCabin = false, NukeIsOnTheTruck = false, NukeTaken = false, DoorIsOpen = false, Phase1 = true, BarrierIsBuilt = false, TruckIsAtBarrier = false, ElevatorAtLevel = 3, RockOpen = 0, sewers = true, root_cellar = true, back_door = true, Hill_Top = false, truckatdoor = false, Axis_MG = false, Cart_Ramp = false, Allied_MG = false, Allied_CP = false, Axis_CP = false, Truck_Past_Barrier_1 = false, Truck_Past_Barrier_2 = false, BookcaseOpened = false, Allies_Win = false, NukeLeftRoom = false, Nuke_atElevatorDoor = false, LowestDoor_closed = true, TopDoor_closed = true, NukeAtCartRamp = false, hillflag_Allies = false, SewerHatchExploded = false, RockOpened = false, RockClosing = false, RockOpening = false, // region triggers iw1 = 0, iw2 = 0, iw3 = 0, iw4 = 0, iw5 = 0, ac1 = 0, Roles = { AXIS = { DEFENDER = { spawnpt = 3, numbots = 4, crucialClass = CLASS.COVERTOPS, }, }, }, Movers = { // retain these movers "MOVER_truck", "MOVER_cart", "MOVER_elevator", //added: "MOVER_b3door3", "MOVER_cabindoor1", }, Switches = { wall_switch = { AimPosition = Vec3(984, 2244, 515), Enabled = true, Priority = 0.0, WaypointName = "wall_switch", Timeout = 1500, ExitConditions = { f = function(bot) { return Map.RockOpened; } }, Wait = function() { return Map.RockOpened; }, }, house_switch = { AimPosition = Vec3(-912, 2352, 1158), Enabled = false, //Debug = true, Priority = 0.7, Timeout = 1500, WaypointName = "house_switch", LimitTeam = (1< 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Truck_Barrier_.*" ); } Map.Truck_Barrier_Dyno = 0; Map.BarrierIsBuilt = false; SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Truck_Barrier" ); if ( Map.TruckIsAtBarrier ) { if ( Map.Truck ) { SetAvailableMapGoals( TEAM.ALLIES, true, "ESCORT_truck" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Truck" ); } } if ( Map.Phase1 and !Map.Truck_Past_Barrier_1 ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Truck_Barrier" ); } if ( ( !Map.Phase1 and !Map.Truck_Past_Barrier_2 ) and ( Map.NukeSecured or Map.NukeIsInTheCabin or Map.NukeIsOnTheTruck ) ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Truck_Barrier" ); } Util.MapDebugPrint( "^5Truck_Barrier_Destroyed" ); }, truck_near_barrier = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, "AIRSTRIKE_Axis_TruckNearBarrier" ); ETUtil.SetExcludeIndexes( "BUILD_Truck", { 2, 3 } ); Util.MapDebugPrint( "^5truck_near_barrier" ); }, truck_at_barrier = function( trigger ) { Map.TruckIsAtBarrier = true; SetAvailableMapGoals( TEAM.AXIS, false, "AIRSTRIKE_Axis_TruckNearBarrier" ); SetAvailableMapGoals( TEAM.AXIS, true, "AIRSTRIKE_Axis_TruckAtBarrier" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_TruckAtBarrier1_.*" ); if ( Map.BarrierIsBuilt ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_truck" ); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Truck_Barrier" ); SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Truck" ); } Util.MapDebugPrint( "^5truck at barrier" ); }, Truck_past_b1 = { Name = "Truck_past_b1", TriggerOnEntity = GetGoal("MOVER_truck").GetEntity(), OnEnter = function(ent) { }, OnExit = function(ent) { Map.TruckIsAtBarrier = false; Map.Truck_Past_Barrier_1 = true; ETUtil.SetExcludeIndexes( "BUILD_Truck", { 1, 2, 3 } ); SetAvailableMapGoals( TEAM.ALLIES, false, { "PLANT_Truck_Barrier", "ATTACK_Allies_TruckAtBarrier1_.*", }); SetAvailableMapGoals( TEAM.AXIS, false, { "BUILD_Truck_Barrier", "AIRSTRIKE_Axis_TruckAtBarrier", }); if ( !Map.Hill_Top ) { SetAvailableMapGoals( TEAM.AXIS, true, "AIRSTRIKE_Axis_TruckPastBarrier" ); } Util.MapDebugPrint( "^5Truck_past_b1" ); } }, Truck_Built = function( trigger ) { Map.Truck = true; SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Truck" ); if ( Map.TruckIsAtBarrier ) { if ( Map.BarrierIsBuilt ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_truck" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "ESCORT_truck" ); } } else if ( Map.truckatdoor and !Map.NukeIsOnTheTruck ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_truck" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "ESCORT_truck" ); } Util.MapDebugPrint( "^5Truck_Built" ); }, Truck_Destroyed = function( trigger ) { Map.Truck = false; Util.SetPositionGoal( "BUILD_Truck", "MOVER_truck" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_truck" ); if ( Map.TruckIsAtBarrier ) { if ( Map.BarrierIsBuilt ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Truck" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Truck" ); } } else if ( Map.truckatdoor and !Map.NukeIsOnTheTruck ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Truck" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Truck" ); } Util.MapDebugPrint( "^5Truck_Destroyed" ); }, Allied_Command_Post_Built = function( trigger ) { Map.Allied_CP = true; SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Allied_Command_Post" ); if ( Map.Phase1 ) { if ( !Map.hillflag_Allies ) { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Start_.*", "AMMOCAB_cabin_ammocabinet", "HEALTHCAB_cabin_healthcabinet", }); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_HillTop_.*" ); } SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Allied_Command_Post" ); } Util.MapDebugPrint( "^5Allied_Command_Post_Built" ); }, Allied_Command_Post_Planted = function( trigger ) { Map.Allied_Command_Post_Dyno += 1; if ( Map.Phase1 or Map.NukeIsOnTheTruck or Map.Truck_Past_Barrier_2 ) { SetAvailableMapGoals( TEAM.ALLIES, true, "DEFUSE_Allied_Command_Post_.*" ); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Allied_Command_Post_.*" ); } Util.MapDebugPrint( "^5Allied_Command_Post_Planted" ); }, Allied_Command_Post_Defused = function( trigger ) { Map.Allied_Command_Post_Dyno -= 1; Util.MapDebugPrint( "^5Allied_Command_Post_Defused" ); }, Allied_Command_Post_Destroyed = function( trigger ) { Map.Allied_Command_Post_Dyno = 0; Map.Allied_CP = false; SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Allied_Command_Post" ); if ( Map.Phase1 ) { if ( !Map.hillflag_Allies ) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_HillTop_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Start_.*", "AMMOCAB_cabin_ammocabinet", "HEALTHCAB_cabin_healthcabinet", }); } SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Allied_Command_Post" ); } Util.MapDebugPrint( "^5Allied_Command_Post_Destroyed" ); }, Allied_mg_Nest_Built = function( trigger ) { Map.Allied_MG = true; SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Allied_mg_Nest" ); if ( Map.Phase1 or Map.NukeIsOnTheTruck or Map.Truck_Past_Barrier_2 ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "MOUNTMG42_Allied_mg_Nest", "REPAIRMG42_Allied_mg_Nest", }); SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Allied_mg_Nest" ); } Util.MapDebugPrint( "^5Allied_mg_Nest_Built" ); }, Allied_mg_Nest_Planted = function( trigger ) { Map.Allied_mg_Nest_Dyno += 1; SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Allied_mg_Nest_.*" ); Util.MapDebugPrint( "^5Allied_mg_Nest_Planted" ); }, Allied_mg_Nest_Defused = function( trigger ) { Map.Allied_mg_Nest_Dyno -= 1; Util.MapDebugPrint( "^5Allied_mg_Nest_Defused" ); }, Allied_mg_Nest_Destroyed = function( trigger ) { Map.Allied_mg_Nest_Dyno = 0; Map.Allied_MG = false; SetAvailableMapGoals( TEAM.ALLIES, false, { "MOUNTMG42_Allied_mg_Nest", "REPAIRMG42_Allied_mg_Nest", }); SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Allied_mg_Nest" ); if ( Map.Phase1 or Map.NukeIsOnTheTruck or Map.Truck_Past_Barrier_2 ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Allied_mg_Nest" ); } Util.MapDebugPrint( "^5Allied_mg_Nest_Destroyed" ); }, Axis_Command_Post_Built = function( trigger ) { Map.Axis_CP = true; SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_Command_Post" ); if ( ( !Map.root_cellar or !Map.back_door ) and !Map.NukeIsOnTheTruck ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Command_Post" ); } Util.MapDebugPrint( "^5Axis_Command_Post_Built" ); }, Axis_Command_Post_Planted = function( trigger ) { Map.Axis_Command_Post_Dyno += 1; SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Axis_Command_Post_.*" ); Util.MapDebugPrint( "^5Axis_Command_Post_Planted" ); }, Axis_Command_Post_Defused = function( trigger ) { Map.Axis_Command_Post_Dyno -= 1; Util.MapDebugPrint( "^5Axis_Command_Post_Defused" ); }, Axis_Command_Post_Destroyed = function( trigger ) { Map.Axis_Command_Post_Dyno = 0; Map.Axis_CP = false; SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Axis_Command_Post" ); if ( ( !Map.root_cellar or !Map.back_door ) and !Map.NukeIsOnTheTruck ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_Command_Post" ); } Util.MapDebugPrint( "^5Axis_Command_Post_Destroyed" ); }, Axis_mg_Nest_Built = function( trigger ) { Map.Axis_MG = true; SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_mg_Nest" ); if ( Map.NukeSecured and !Map.NukeIsInTheCabin ) { SetAvailableMapGoals( TEAM.AXIS, true, { "MOUNTMG42_Axis_mg_Nest", "REPAIRMG42_Axis_mg_Nest", }); SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_mg_Nest" ); } Util.MapDebugPrint( "^5Axis_mg_Nest_Built" ); }, Axis_mg_Nest_Planted = function( trigger ) { Map.Axis_mg_Nest_Dyno += 1; if ( Map.NukeSecured and !Map.NukeIsInTheCabin ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFUSE_Axis_mg_Nest_.*" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Axis_mg_Nest_.*" ); } Util.MapDebugPrint( "^5Axis_mg_Nest_Planted" ); }, Axis_mg_Nest_Defused = function( trigger ) { Map.Axis_mg_Nest_Dyno -= 1; Util.MapDebugPrint( "^5Axis_mg_Nest_Defused" ); }, Axis_mg_Nest_Destroyed = function( trigger ) { Map.Axis_mg_Nest_Dyno = 0; Map.Axis_MG = false; SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Axis_mg_Nest" ); SetAvailableMapGoals( TEAM.AXIS, false, { "MOUNTMG42_Axis_mg_Nest", "REPAIRMG42_Axis_mg_Nest", }); if ( Map.NukeSecured and !Map.NukeIsInTheCabin ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_mg_Nest" ); } Util.MapDebugPrint( "^5Axis_mg_Nest_Destroyed" ); }, hill_flag_Allies_Captured = function( trigger ) { Map.hillflag_Allies = true; if ( !Map.Allied_CP ) { SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_Start_.*", "MOUNTMG42_Hill", "AMMOCAB_cabin_ammocabinet", "HEALTHCAB_cabin_healthcabinet", }); SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_HillTop_.*" ); } Util.MapDebugPrint( "^5hill_flag_Allies_Captured" ); }, hill_flag_Axis_Captured = function( trigger ) { Map.hillflag_Allies = false; if ( !Map.Allied_CP ) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_HillTop_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Start_.*", "MOUNTMG42_Hill", "AMMOCAB_cabin_ammocabinet", "HEALTHCAB_cabin_healthcabinet", }); } Util.MapDebugPrint( "^5hill_flag_Axis_Captured" ); }, Sewers_Planted = function( trigger ) { Map.Sewers_Dyno += 1; if ( Map.DoorIsOpen or Map.Hill_Top ) //more important is the defense of nuke (IMO) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Sewers_.*" ); } Util.MapDebugPrint( "^5Sewers_Planted" ); }, Sewers_Defused = function( trigger ) { Map.Sewers_Dyno -= 1; Util.MapDebugPrint( "^5Sewers_Defused" ); }, Sewers_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Sewers" ); if ( Map.Sewers_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Sewers_.*" ); } Map.Sewers_Dyno = 0; Map.sewers = false; Util.EnableGoal ( "ROUTE_Sewerexit" ); Util.EnableGoal ( "ROUTE_Sewer" ); SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_Sewers_.*" ); if ( !Map.Hill_Top ) { if ( !Map.DoorIsOpen ) { SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Axis_Main_Entrance_04", "DEFEND_Axis_Main_Entrance_06", }); sleep(1.5); SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Main_Entrance.*", "ATTACK_Allies_Main_Entrance_05", "ATTACK_Allies_Main_Entrance_07", }); } } Util.MapDebugPrint( "^5Sewers_Destroyed" ); }, Sewer_Hatch_Exploded = function( trigger ) { Map.SewerHatchExploded = true; Util.MapDebugPrint( "^5Sewer_Hatch_Exploded" ); }, Back_Door_Planted = function( trigger ) { Map.Back_Door_Dyno += 1; if ( Map.DoorIsOpen or Map.Hill_Top ) //more important is the defense of nuke (IMO) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Back_Door_.*" ); } Util.MapDebugPrint( "^5Back_Door_Planted" ); }, Back_Door_Defused = function( trigger ) { Map.Back_Door_Dyno -= 1; Util.MapDebugPrint( "^5Back_Door_Defused" ); }, Back_Door_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Back_Door" ); if ( Map.Back_Door_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Back_Door_.*" ); } Map.Back_Door_Dyno = 0; Map.back_door = false; Map.Hill_Top = true; Map.Phase1 = false; Wp.SetWaypointFlag( "axis-door", "closed", true ); Wp.SetWaypointFlag( "axis-door2", "closed", true ); Util.EnableGoal ( "ROUTE_Back_Door" ); Map.iw3 = OnTriggerRegion( AABB(-309.076,2746.820,641.883,-25.581,2952.365,817.419), RegionTrigger.IntrusionWarning ); SetAvailableMapGoals( TEAM.ALLIES, true, "ROUTE_Back_Door" ); SetAvailableMapGoals( TEAM.AXIS, true, "ROUTE_Back_Door" ); if ( !Map.DoorIsOpen ) { if ( Map.root_cellar ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANTMINE_Allies_RockExit_.*" ); sleep(2); SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_Hill_Top_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "AMMOCAB_north_ammocabinet", "HEALTHCAB_north_healthcabinet", }); if ( Map.Axis_CP ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Command_Post" ); } SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_Allies_Main_Entrance_.*", "PLANT_Main_Entrance.*", }); if ( !Map.Elevator ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Elevator_Generator" ); } if ( Map.Axis_MG ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_mg_Nest" ); } } } Util.MapDebugPrint( "^5Back_Door_Destroyed" ); }, Root_Cellar_Planted = function( trigger ) { Map.Root_Cellar_Dyno += 1; if ( Map.DoorIsOpen or Map.Hill_Top ) //more important is the defense of nuke (IMO) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Root_Cellar_.*" ); } Util.MapDebugPrint( "^5Root_Cellar_Planted" ); }, Root_Cellar_Defused = function( trigger ) { Map.Root_Cellar_Dyno -= 1; Util.MapDebugPrint( "^5Root_Cellar_Defused" ); }, Root_Cellar_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Root_Cellar" ); if ( Map.Root_Cellar_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Root_Cellar_.*" ); } Map.Root_Cellar_Dyno = 0; Map.root_cellar = false; Map.Hill_Top = true; Map.Phase1 = false; Util.EnableGoal ( "ROUTE_Root_Cellar" ); DeleteTriggerRegion( Map.iw1 ); Map.iw2 = OnTriggerRegion( AABB(223.186,2108.287,812.667,323.402,2302.091,949.582), RegionTrigger.IntrusionWarning ); SetAvailableMapGoals( TEAM.ALLIES, true, "ROUTE_Root_Cellar" ); SetAvailableMapGoals( TEAM.AXIS, true, "ROUTE_Root_Cellar" ); if ( !Map.DoorIsOpen ) { if ( Map.back_door ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANTMINE_Allies_RockExit_.*" ); sleep(2); SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_Hill_Top_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "AMMOCAB_north_ammocabinet", "HEALTHCAB_north_healthcabinet", }); if ( Map.Axis_CP ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Command_Post" ); } SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_Allies_Main_Entrance_.*", "PLANT_Main_Entrance_to_Nuke.*", }); if ( !Map.Elevator ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Elevator_Generator" ); } if ( Map.Axis_MG ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_mg_Nest" ); } } } Util.MapDebugPrint( "^5Root_Cellar_Destroyed" ); }, truck_at_door = { Name = "truck_at_door", TriggerOnEntity = GetGoal("MOVER_truck").GetEntity(), OnEnter = function(ent) { Map.Phase1 = false; Map.truckatdoor = true; ETUtil.SetExcludeIndexes( "BUILD_Truck", { 0 } ); if ( Map.NukeIsInTheCabin ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cart_Ramp" ); } if ( !Map.NukeIsOnTheTruck ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_truck" ); } if ( !Map.NukeIsOnTheTruck && !Map.NukeIsInTheCabin && !Map.NukeSecured ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Truck" ); } Util.MapDebugPrint( "^5truck at door" ); }, OnExit = function(ent) { if ( Map.NukeIsOnTheTruck ) { ETUtil.SetExcludeIndexes( "BUILD_Truck", { 0, 2, 3} ); SetAvailableMapGoals( TEAM.AXIS, false, { "MOBILEMORTAR_Axis_Nuke_Hill_1", "AIRSTRIKE_Axis_NukeOnHillTop", }); SetAvailableMapGoals( TEAM.AXIS, true, { "AIRSTRIKE_Axis_NukeLeftHillTop", "MOBILEMORTAR_Axis_Nuke_Hill_2", }); Util.MapDebugPrint( "^5Nuke left hill" ); } } }, hill_top_Secured = function( trigger ) { Map.hillflag_Allies = true; Map.Hill_Top = true; Map.Phase1 = false; Util.DisableGoal ( "AMMOCAB_.*" ); Util.DisableGoal ( "HEALTHCAB_.*" ); if ( !Map.DoorIsOpen ) { Util.RandomSpawn( TEAM.AXIS, 4 ); SetAvailableMapGoals( TEAM.AXIS, false, { ".*_Axis_HillTop_.*", ".*_Axis_Sewers_.*", "ATTACK_barrier_.*", "MOUNTMG42_Hill", ".*_Axis_Start_.*", "REPAIRMG42_Hill", "AIRSTRIKE_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { "AMMOCAB_north_ammocabinet", "HEALTHCAB_north_healthcabinet", }); if ( Map.Allied_MG ) { SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Allied_mg_Nest" ); } if ( Map.Allied_CP ) { SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Allied_Command_Post" ); } if ( !Map.Axis_CP ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_Command_Post" ); } SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Main_Entrance_.*" ); if ( Map.Elevator ) { SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Elevator_Generator" ); } if ( Map.Axis_MG ) { SetAvailableMapGoals( TEAM.AXIS, true, "REPAIRMG42_Axis_mg_Nest" ); } else { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_mg_Nest" ); } sleep(1.5); SetAvailableMapGoals( TEAM.ALLIES, false, { "AMMOCAB_cabin_ammocabinet", "HEALTHCAB_cabin_healthcabinet", "GRENADE_hill_mg", }); if ( Map.Allied_MG ) { SetAvailableMapGoals( TEAM.ALLIES, false, { "MOUNTMG42_Allied_mg_Nest", "REPAIRMG42_Allied_mg_Nest", }); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Allied_mg_Nest" ); } if ( !Map.Allied_CP ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Allied_Command_Post" ); } } Util.MapDebugPrint( "^5Allies_Secured_HillTop" ); }, Main_Entrance_to_the_Nuke_Planted = function( trigger ) { Map.Main_Entrance_to_the_Nuke_Dyno += 1; if ( Map.Truck_Barrier_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Truck_Barrier_.*" ); } if ( Map.Axis_mg_Nest_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Axis_mg_Nest_.*" ); } if ( Map.Sewers_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Sewers_.*" ); } if ( Map.Back_Door_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Back_Door_.*" ); } if ( Map.Root_Cellar_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Root_Cellar_.*" ); } Util.MapDebugPrint( "^5Main_Entrance_to_the_Nuke_Planted" ); }, Main_Entrance_to_the_Nuke_Defused = function( trigger ) { Map.Main_Entrance_to_the_Nuke_Dyno -= 1; Util.MapDebugPrint( "^5Main_Entrance_to_the_Nuke_Defused" ); }, Main_Entrance_to_the_Nuke_Destroyed = function( trigger ) { if ( Map.Main_Entrance_to_the_Nuke_Dyno > 0 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Main_Entrance_to_the_Nuke_.*" ); } Map.Main_Entrance_to_the_Nuke_Dyno = 0; Map.DoorIsOpen = true; Map.Hill_Top = true; Util.DisableGoal( ".*", true ); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); if ( Map.ElevatorAtLevel != 4 and Map.ElevatorAtLevel != -1 and Map.Elevator ) { Map.Switches.elevator_switch_up_0.LimitTeam = 1<120) { sleep(RandRange(1,2.5)); bot.SayVoice(VOICE.DEFEND_OBJECTIVE); } else if (bot.GetTeam() == TEAM.AXIS && RandInt(0,rand) < 2 && GetGameTimeLeft()>120) { sleep(RandRange(1,2.0)); bot.ExecCommand("vsay_team FTFallBack"); } else if (bot.GetTeam() == TEAM.AXIS && RandInt(0,rand) < 2 && GetGameTimeLeft()>120) { sleep(RandRange(1,2.0)); bot.SayVoice(VOICE.REINFORCE_DEF); } if (bot.GetTeam() == TEAM.ALLIES && RandInt(0,rand2) < 2 && GetGameTimeLeft()>120) { sleep(RandRange(1,2.8)); bot.SayVoice(VOICE.REINFORCE_OFF); } else if (bot.GetTeam() == TEAM.ALLIES && RandInt(1,rand2) < 2 && GetGameTimeLeft()>300) { sleep(1.5); bot.SayVoice(VOICE.G_CHEER); } else if (bot.GetTeam() == TEAM.ALLIES && RandInt(1,rand2) < 2 && GetGameTimeLeft()>120) { sleep(1.5); bot.ExecCommand("vsay_team FTAttack"); } } } Util.MapDebugPrint( "^5Main_Entrance_to_the_Nuke_Destroyed" ); sleep(1.5); SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_Nuke_.*", "SMOKEBOMB_Nuke", "MOVER_cart", "ESCORT_cart_allies", }); if ( !Map.Elevator ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Elevator_Generator" ); } if ( Map.Axis_MG ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_mg_Nest" ); } if ( Map.Axis_CP ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Command_Post" ); } }, Elevator_Generator_Built = function( trigger ) { Map.Elevator = true; SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Elevator_Generator" ); if ( !Map.NukeIsInTheCabin or !Map.NukeIsOnTheTruck ) { SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Elevator_Generator" ); } if ( Map.DoorIsOpen and !Map.NukeSecured and !Map.NukeIsInTheCabin and Map.ElevatorAtLevel != 4 and !Map.NukeIsOnTheTruck ) { Map.Switches.elevator_switch_up_0.LimitTeam = 1< 0 ) { Util.MapDebugPrint("bookcase opening", true); Map.Switches.bookshelf_switch.Enabled = false; sleep(4); Map.BookcaseOpened = true; if ( Map.NukeSecured and Map.ElevatorAtLevel == 1 and !Map.TopDoor_closed ) { SetAvailableMapGoals(TEAM.ALLIES, true, "ATTACK_elevator_nuke" ); } Util.MapDebugPrint("bookcase opened", true); } else if ( vec.y < 0 ) { Util.MapDebugPrint("bookcase closing", true); Map.BookcaseOpened = false; if ( Map.NukeSecured ) { SetAvailableMapGoals(TEAM.ALLIES, false, "ATTACK_elevator_nuke" ); } sleep(4); if(Map.NukeSecured) { Map.Switches.bookshelf_switch.Enabled = true; } Util.MapDebugPrint("bookcase closed", true); } }, nuke_In_the_Cabin = function( trigger ) { Map.NukeIsInTheCabin = true; Map.NukeSecured = false; Map.Switches.bookshelf_switch.Enabled = false; Map.Switches.elevator_door.Enabled = false; Map.Switches.house_switch.Enabled = false; Map.Switches.elevator_switch_up_0.Enabled = false; Map.Switches.elevator_switch_up_1.Enabled = false; Map.Switches.elevator_switch_up_2.Enabled = false; Map.Switches.elevator_switch_up_3.Enabled = false; Map.Switches.elevator_switch_level_1.Enabled = false; Map.Switches.elevator_switch_level_2.Enabled = false; Util.DisableGoal( ".*", true ); Util.ChangeSpawn(TEAM.AXIS, 0); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); Util.ClearRoleForGoals("MOUNTMG42_Hill", ROLE.DEFENDER); // Swap y offsets for escort goals when cart is in the cabin SetMapGoalProperties( "ESCORT_cart_allies", { Offsets={Vec3(10, 70, 5),Vec3(-10, 70, 5)} } ); WeaponTable.SetWeaponTeamAvailability ( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, false ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MORTAR, true ); if ( ETUtil.CountClass( TEAM.AXIS, CLASS.SOLDIER ) > 1 ) { WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.PANZERFAUST, true ); } foreach ( id and bot in BotTable ) { if ( bot.GetTeam() == TEAM.AXIS ) { if ( bot.HasWeapon(WEAPON.MOBILE_MG42) ) { ETUtil.SuicideSpawn( TEAM.AXIS, 0, -1, CLASS.SOLDIER ); Util.MapDebugPrint( "^5I have wrong weapon" ); } } } if ( Map.Cart_Ramp ) { SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Cart_Ramp" ); } else { if ( Map.truckatdoor ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cart_Ramp" ); } } if ( !Map.Truck ) { if ( Map.TruckIsAtBarrier ) { if ( !Map.BarrierIsBuilt ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Truck" ); } } else { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Truck" ); } } if ( !Map.BarrierIsBuilt ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Truck_Barrier" ); } SetAvailableMapGoals( TEAM.AXIS, true, { "ATTACK_Axis_Barrier2_.*", "MOUNTMG42_Hill", "REPAIRMG42_Hill", "AIRSTRIKE_Axis_NukeOnHillTop", "PLANTMINE_Axis_TruckRoad_.*", "MOBILEMORTAR_Axis_Nuke_Hill_1", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANTMINE_Allies_RockExit_.*", "ATTACK_Allies_Hill_Top_.*", "ATTACK_barrier_.*", "ESCORT_cart_allies", }); if ( Map.Allied_CP ) { SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Allied_Command_Post" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Allied_Command_Post" ); } Util.OnTriggerPosition( "MOVER_truck", "Nuke_on_truck", 250.0, Map.Nuke_near_barrier ); Util.OnTriggerPosition( "MOVER_truck", "barrier_trigger2", 250.0, Map.truck_at_barrier ); Util.MapDebugPrint( "^5nuke_In_the_Cabin" ); }, trigger_CartRamp = { Name = "trigger_CartRamp", TriggerOnEntity = GetGoal("MOVER_cart").GetEntity(), OnEnter = function(ent) { Map.NukeAtCartRamp = true; if ( !Map.Cart_Ramp ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ESCORT_cart_allies" ); if ( Map.truckatdoor ) { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cart_Ramp" ); } } else { SetAvailableMapGoals( TEAM.ALLIES, true, "ESCORT_cart_allies" ); SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Cart_Ramp" ); } Util.MapDebugPrint( "^5Nuke at cart ramp" ); }, OnExit = function(ent) { } }, nuke_On_the_Truck = function( trigger ) { Map.NukeIsOnTheTruck = true; Map.NukeIsInTheCabin = false; Map.Switches.bookshelf_switch.Enabled = false; Map.Switches.house_switch.Enabled = false; SetAvailableMapGoals( TEAM.AXIS, false, { "PLANT_Cart_Ramp", "MOVER_cart", }); SetAvailableMapGoals( TEAM.ALLIES, false, { "BUILD_Cart_Ramp", "MOVER_cart", "ESCORT_cart_allies", "ATTACK_Allies_Hill_Top_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_hill_mg" ); if ( Map.BarrierIsBuilt ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Truck_Barrier" ); } else { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Truck_Barrier" ); } if ( Map.Truck ) { SetAvailableMapGoals( TEAM.ALLIES, true, "ESCORT_truck" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_truck" ); } Util.MapDebugPrint( "^5nuke_On_the_Truck" ); }, Nuke_near_barrier = function( trigger ) { if ( Map.NukeIsOnTheTruck ) { SetAvailableMapGoals( TEAM.AXIS, false, { "AIRSTRIKE_Axis_NukeLeftHillTop", "MOBILEMORTAR_Axis_Nuke_Hill_2", }); SetAvailableMapGoals( TEAM.AXIS, true, { "AIRSTRIKE_Axis_NukeNearBarrier", ".*_Axis_PastB2_.*", "MOBILEMORTAR_Axis_Nuke_Hill_3", }); Util.MapDebugPrint( "^5Nuke_near_barrier" ); } }, past_Barrier2 = function( trigger ) { Map.TruckIsAtBarrier = false; Map.Truck_Past_Barrier_2 = true; Util.RandomSpawn( TEAM.ALLIES, 2 ); ETUtil.SetExcludeIndexes( "BUILD_Truck", { 0, 2 } ); SetAvailableMapGoals( TEAM.ALLIES, false, { "GRENADE_hill_mg", "PLANT_Truck_Barrier", "PLANTMINE_Allies_RockExit_.*", }); SetAvailableMapGoals( TEAM.AXIS, false, { "BUILD_Truck_Barrier", "AIRSTRIKE_Axis_NukeNearBarrier", "PLANTMINE_Axis_TruckRoad_.*", "MOUNTMG42_Hill", "REPAIRMG42_Hill", "MOBILEMORTAR_Axis_Nuke_Hill_3", }); SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMORTAR_Axis_PastBridge_09_1" ); Util.MapDebugPrint( "^5past b. 2" ); }, Truck_At_Bridge = { Name = "Truck_At_Bridge", TriggerOnEntity = GetGoal("MOVER_truck").GetEntity(), OnEnter = function(ent) { ETUtil.SetExcludeIndexes( "BUILD_Truck", { 0, 2 } ); SetAvailableMapGoals( TEAM.AXIS, false, "MOBILEMORTAR_Axis_PastBridge_09_1" ); SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMORTAR_Axis_PastBridge_09_2" ); Util.MapDebugPrint( "^5Truck_At_Bridge" ); }, OnExit = function(ent) { } }, Truck_On_Bridge = { Name = "Truck_On_Bridge", TriggerOnEntity = GetGoal("MOVER_truck").GetEntity(), OnEnter = function(ent) { SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_Barrier2_.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_barrier_.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_Axis_PastBridge_.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_PastBridge_.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "MOBILEMORTAR_Axis_PastBridge_09_2" ); SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMORTAR_Axis_PastBridge_09_3" ); Util.MapDebugPrint( "^5Truck_On_Bridge" ); }, OnExit = function(ent) { } }, Truck_On_Bridge1 = { Name = "Truck_On_Bridge1", TriggerOnEntity = GetGoal("MOVER_truck").GetEntity(), OnEnter = function(ent) { SetAvailableMapGoals( TEAM.AXIS, false, "MOBILEMORTAR_Axis_PastBridge_09_3" ); SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMORTAR_Axis_PastBridge_09_4" ); Util.MapDebugPrint( "^5Truck_On_Bridge1" ); }, OnExit = function(ent) { } }, Truck_Past_Bridge2 = { Name = "Truck_Past_Bridge2", TriggerOnEntity = GetGoal("MOVER_truck").GetEntity(), OnEnter = function(ent) { SetAvailableMapGoals( TEAM.AXIS, false, "MOBILEMORTAR_Axis_PastBridge_09_4" ); SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMORTAR_Axis_PastBridge_09_5" ); Util.MapDebugPrint( "^5Truck_Past_Bridge2" ); }, OnExit = function(ent) { } }, AlliesWin = function( trigger ) { Util.MapDebugPrint( "^5Allies_Win" ); Map.Allies_Win = true; sleep(1); ETUtil.WinningChat( TEAM.ALLIES ); sleep(1.5); ETUtil.LosingChat( TEAM.AXIS ); }, Thirty_second = function( trigger ) { Util.MapDebugPrint( "^5Thirty_second" ); sleep(30); if ( !Map.Allies_Win ) { Util.MapDebugPrint( "^5Axis_Win" ); sleep(1); ETUtil.WinningChat( TEAM.AXIS ); sleep(1.5); ETUtil.LosingChat( TEAM.ALLIES ); } }, elevator_trigger = function( trigger ) { //turn the trigger action string into a vector for referencing vec = ToVector(trigger.Action); //reference the changing value to determine elevator direction if ( vec.z > 0 ) { Util.MapDebugPrint("elevator going up", true); if(Map.NukeSecured) { Map.Switches.house_switch.Enabled = false; Map.Switches.elevator_switch_up_1.Enabled = false; Map.Switches.elevator_switch_up_2.Enabled = false; Map.Switches.elevator_switch_up_3.Enabled = false; } } else if ( vec.z < 0 ) { Util.MapDebugPrint("elevator going down", true); if(Map.NukeTaken) { Map.Switches.elevator_switch_up_0.Enabled = false; } } }, rock_trigger = function( trigger ) { //turn the trigger action string into a vector for referencing vec = ToVector(trigger.Action); //reference the changing value to determine the direction if ( vec.x > 0 ) { Util.MapDebugPrint("rock opening", true); Map.RockOpen = 1; Map.RockOpening = true; Map.Switches.wall_switch.Enabled = false; sleep(4.5); Map.RockOpened = true; DynamicPathsUpdated(); sleep(1.5); Map.RockOpening = false; DynamicPathsUpdated(); } else if ( vec.x < 0 ) { Util.MapDebugPrint("rock closing", true); Map.RockOpened = false; Map.RockClosing = true; Map.RockOpen = 0; Map.Switches.wall_switch.Enabled = true; sleep(3); DynamicPathsUpdated(); sleep(3); Map.RockClosing = false; DynamicPathsUpdated(); } }, LowestBunkerElevatorDoorMoving = function( trigger ) { //turn the trigger action string into a vector for referencing vec = ToVector(trigger.Action); //reference the changing value to determine the direction if ( vec.y > 0 ) { Util.MapDebugPrint("Lowest elevator door opening", true); } else if ( vec.y < 0 ) { Util.MapDebugPrint("Lowest elevator door closing", true); } }, TopElevatorDoorMoving = function( trigger ) { //turn the trigger action string into a vector for referencing vec = ToVector(trigger.Action); //reference the changing value to determine the direction if ( vec.y < 0 ) { Util.MapDebugPrint("Top elevator door opening", true); } else if ( vec.y > 0 ) { Util.MapDebugPrint("Top elevator door closing", true); } }, }; Map.WatchElevatorPosition = function() { goal = GetGoal( "MOVER_elevator" ); entity = goal.GetEntity(); Util.MapDebugPrint("Elevator thread started", true); position1 = Vector3(-1018, 2428, 1171); // top position2 = Vector3(-1018, 2428, 771); position3 = Vector3(-1018, 2428, 515); position4 = Vector3(-1018, 2428, 143); // bottom tolerance = 30; while ( 1 ) { if ( Map.Debug ) { DrawDebugLine(position1 - Vector3(0,0,-10), position1 - Vector3(0,0,10), COLOR.CYAN, 2); DrawDebugLine(position2 - Vector3(0,0,-10), position2 - Vector3(0,0,10), COLOR.CYAN, 2); DrawDebugLine(position3 - Vector3(0,0,-10), position3 - Vector3(0,0,10), COLOR.CYAN, 2); DrawDebugLine(position4 - Vector3(0,0,-10), position4 - Vector3(0,0,10), COLOR.CYAN, 2); } entposition = GetEntPosition( entity ); //until the elevator is moving allies canīt do anything :o) // just do one distance calculation distanceFromPosition1 = DistanceBetween( entposition, position1 ); if ( distanceFromPosition1 < tolerance ) { // elevator at top level if ( Map.ElevatorAtLevel != 1 ) { Map.ElevatorAtLevel = 1; Map.Switches.house_switch.Enabled = false; if ( Map.NukeSecured and !Map.BookcaseOpened ) { Map.Switches.bookshelf_switch.Enabled = true; } if ( Map.NukeSecured and Map.BookcaseOpened and !Map.TopDoor_closed ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_Cabin_01" ); SetAvailableMapGoals(TEAM.ALLIES, true, "ATTACK_elevator_nuke" ); } if ( Map.DoorIsOpen and !Map.NukeSecured and !Map.NukeIsInTheCabin and Map.Elevator and !Map.NukeIsOnTheTruck ) { Map.Switches.elevator_switch_up_0.LimitTeam = 1< 400 - tolerance && distanceFromPosition1 < 400 + tolerance ) { // elevator at -1 level if ( Map.ElevatorAtLevel != 2 ) { Map.ElevatorAtLevel = 2; Map.Switches.elevator_switch_level_1.Enabled = false; if ( Map.DoorIsOpen and !Map.NukeSecured and !Map.NukeIsInTheCabin and Map.Elevator and !Map.NukeIsOnTheTruck ) { Map.Switches.elevator_switch_up_0.LimitTeam = 1< 656 - tolerance && distanceFromPosition1 < 656 + tolerance ) { // elevator at -2 level if ( Map.ElevatorAtLevel != 3 ) { Map.ElevatorAtLevel = 3; Map.Switches.elevator_switch_level_2.Enabled = false; if ( Map.DoorIsOpen and !Map.NukeSecured and !Map.NukeIsInTheCabin and Map.Elevator and !Map.NukeIsOnTheTruck ) { Map.Switches.elevator_switch_up_0.LimitTeam = 1< 1024 - tolerance ) { // elevator at lowest level if ( Map.ElevatorAtLevel != 4 ) { Map.ElevatorAtLevel = 4; Map.Switches.elevator_switch_up_0.Enabled = false; if ( Map.NukeSecured and !Map.NukeIsInTheCabin and Map.Elevator ) { Map.Switches.elevator_switch_level_1.Enabled = true; Map.Switches.elevator_switch_level_2.Enabled = true; Map.Switches.house_switch.Enabled = true; SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_Cabin_01" ); SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Elevator_Generator" ); } if ( Map.DoorIsOpen and !Map.NukeSecured and !Map.NukeIsInTheCabin and Map.Elevator and !Map.NukeIsOnTheTruck ) { Map.Switches.elevator_switch_level_2.Enabled = true; //allies can not load the nuke } if ( Map.Nuke_atElevatorDoor and !Map.LowestDoor_closed ) { SetAvailableMapGoals( TEAM.ALLIES, true, "ESCORT_cart_allies" ); } Util.MapDebugPrint( "^5elevator is bottom near main entrance", true); } } else { Map.ElevatorAtLevel = -1; Map.Switches.elevator_switch_up_0.Enabled = false; Map.Switches.house_switch.Enabled = false; Map.Switches.elevator_switch_level_1.Enabled = false; Map.Switches.elevator_switch_level_2.Enabled = false; if ( Map.NukeSecured ) { SetAvailableMapGoals(TEAM.ALLIES, false, "ATTACK_elevator_nuke" ); if ( Map.Elevator ) { SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allies_Cabin_01" ); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_Cabin_01" ); } } if ( Map.Elevator ) //message will be displayed only when the generator is repaired { Util.MapDebugPrint("moving!", true); } } sleep(1); } }; global OnMapLoad = function() { // Register callback functions OnTrigger( "axis_truckbar_constructed", Map.Truck_Barrier_Built ); OnTrigger( "Planted at Truck Barrier.", Map.Truck_Barrier_Planted ); OnTrigger( "Defused at Truck Barrier.", Map.Truck_Barrier_Defused ); OnTrigger( "axis_truckbar_destroyed", Map.Truck_Barrier_Destroyed ); OnTrigger( "^5Allied Command Post constructed. Charge speed increased!", 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 ); //for Nitmod OnTrigger( "Defused at the Allied Command Post.", Map.Allied_Command_Post_Defused ); OnTrigger( "Defused at Allied Command Post.", Map.Allied_Command_Post_Defused ); //for Nitmod OnTrigger( "^1Axis team has destroyed the Allied Command Post!", Map.Allied_Command_Post_Destroyed ); OnTrigger( "^1Axis Command Post constructed. Charge speed increased!", 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 ); //for Nitmod OnTrigger( "Defused at the Axis Command Post.", Map.Axis_Command_Post_Defused ); OnTrigger( "Defused at Axis Command Post.", Map.Axis_Command_Post_Defused ); //for Nitmod OnTrigger( "^5Allied team has destroyed the Axis Command Post!", Map.Axis_Command_Post_Destroyed ); OnTrigger( "^5The Allied Cabin MG Nest has been constructed.", Map.Allied_mg_Nest_Built ); OnTrigger( "Planted at Allied mg Nest.", Map.Allied_mg_Nest_Planted ); OnTrigger( "Defused at Allied mg Nest.", Map.Allied_mg_Nest_Defused ); OnTrigger( "^1The Allied Cabin MG Nest has been destroyed.", Map.Allied_mg_Nest_Destroyed ); OnTrigger( "allies_capture_hill_flag", Map.hill_flag_Allies_Captured ); OnTrigger( "axis_reclaims_hill_flag", Map.hill_flag_Axis_Captured ); OnTrigger( "Planted at the Sewers.", Map.Sewers_Planted ); OnTrigger( "Planted at Sewers.", Map.Sewers_Planted ); //for Nitmod OnTrigger( "Defused at the Sewers.", Map.Sewers_Defused ); OnTrigger( "Defused at Sewers.", Map.Sewers_Defused ); //for Nitmod OnTrigger( "^5Allies have breached the Sewers", Map.Sewers_Destroyed ); OnTrigger( "Planted at the Back Door.", Map.Back_Door_Planted ); OnTrigger( "Planted at Back Door.", Map.Back_Door_Planted ); //for Nitmod OnTrigger( "Defused at the Back Door.", Map.Back_Door_Defused ); OnTrigger( "Defused at Back Door.", Map.Back_Door_Defused ); //for Nitmod OnTrigger( "^5Allies have breached the Back Door", Map.Back_Door_Destroyed ); OnTrigger( "Planted at the Root Cellar.", Map.Root_Cellar_Planted ); OnTrigger( "Planted at Root Cellar.", Map.Root_Cellar_Planted ); //for Nitmod OnTrigger( "Defused at the Root Cellar.", Map.Root_Cellar_Defused ); OnTrigger( "Defused at Root Cellar.", Map.Root_Cellar_Defused ); //for Nitmod OnTrigger( "^5Allies have breached the Root Cellar", Map.Root_Cellar_Destroyed ); OnTrigger( "^1The Axis Bunker MG Nest has been constructed.", Map.Axis_mg_Nest_Built ); OnTrigger( "Planted at the Axis mg Nest.", Map.Axis_mg_Nest_Planted ); OnTrigger( "Planted at Axis mg Nest.", Map.Axis_mg_Nest_Planted ); //for Nitmod OnTrigger( "Defused at the Axis mg Nest.", Map.Axis_mg_Nest_Defused ); OnTrigger( "Defused at Axis mg Nest.", Map.Axis_mg_Nest_Defused ); //for Nitmod OnTrigger( "^5The Axis Bunker MG Nest has been destroyed.", Map.Axis_mg_Nest_Destroyed ); OnTrigger( "^5The Cart Ramp has been constructed.", Map.Cart_Ramp_Built ); OnTrigger( "Planted at the Cart Ramp.", Map.Cart_Ramp_Planted ); OnTrigger( "Planted at Cart Ramp.", Map.Cart_Ramp_Planted ); //for Nitmod OnTrigger( "Defused at the Cart Ramp.", Map.Cart_Ramp_Defused ); OnTrigger( "Defused the Cart Ramp.", Map.Cart_Ramp_Defused ); //for Nitmod OnTrigger( "^1The Cart Ramp has been destroyed.", Map.Cart_Ramp_Destroyed ); OnTrigger( "^5The Elevator Generator has been constructed.", Map.Elevator_Generator_Built ); OnTrigger( "Planted at the Elevator Generator.", Map.Elevator_Generator_Planted ); OnTrigger( "Planted at Elevator Generator.", Map.Elevator_Generator_Planted ); //for Nitmod OnTrigger( "Defused at the Elevator Generator.", Map.Elevator_Generator_Defused ); OnTrigger( "Defused at Elevator Generator.", Map.Elevator_Generator_Defused ); //for Nitmod OnTrigger( "^1The Elevator Generator has been destroyed.", Map.Elevator_Generator_Destroyed ); OnTrigger( "^5The Truck has been repaired!", Map.Truck_Built ); OnTrigger( "^1The Truck has been damaged!", Map.Truck_Destroyed ); OnTrigger( "Planted at the Main Entrance to the Nuke.", Map.Main_Entrance_to_the_Nuke_Planted ); OnTrigger( "Planted at Main Entrance to Nuke.", Map.Main_Entrance_to_the_Nuke_Planted ); //for Nitmod OnTrigger( "Defused at the Main Entrance to the Nuke.", Map.Main_Entrance_to_the_Nuke_Defused ); OnTrigger( "Defused at Main Entrance to Nuke.", Map.Main_Entrance_to_the_Nuke_Defused ); //for Nitmod OnTrigger( "^5Allies have breached the Main Entrance to the Nuke!", Map.Main_Entrance_to_the_Nuke_Destroyed ); OnTrigger( "^5Allies have secured the Hill Top!", Map.hill_top_Secured ); OnTrigger( "^5Allies have the Nuke!", Map.nuke_Taken ); OnTrigger( "^1Axis have returned the Nuke!", Map.nuke_Returned ); OnTrigger( "^5The Allies have secured the Nuke in the Elevator!", Map.nuke_In_the_Elevator ); OnTrigger( "^5The Allies have moved the Nuke into the Cabin!", Map.nuke_In_the_Cabin ); OnTrigger( "^5Allies have loaded the Nuke onto the truck!", Map.nuke_On_the_Truck ); OnTrigger( "allies_truck_barrier2", Map.past_Barrier2 ); OnTrigger( "^5Allied team have escaped with the Nuke!", Map.AlliesWin ); OnTrigger( "elevator_goto", Map.elevator_trigger ); OnTrigger( "bookcase_goto", Map.bookcase_trigger ); OnTrigger( "rockbutton_goto", Map.rock_trigger ); OnTrigger( "thirty second warning.", Map.Thirty_second ); OnTrigger( "b3door3_goto", Map.LowestBunkerElevatorDoorMoving ); OnTrigger( "cabindoor1_goto", Map.TopElevatorDoorMoving ); OnTrigger( "GRENADE_Sewer_Hatch Exploded.", Map.Sewer_Hatch_Exploded ); Util.SetGoalPosition(-2579.875, 172.423981, 372.125, "PLANT_Allied_mg_Nest"); Util.AddUseWp( "PLANT_Back_Door", "dyno1" ); Util.AddUseWp( "PLANT_Back_Door", "dyno2" ); Util.AddUseWp( "PLANT_Root_Cellar", "Plant_WP_1" ); Util.AddUseWp( "PLANT_Root_Cellar", "Plant_WP_2" ); Util.AddUseWp( "PLANT_Truck_Barrier", "A" ); Util.AddUseWp( "BUILD_Allied_mg_Nest", "Allied_mg_Nest_Build_WP" ); Util.AddUseWp( "PLANT_Axis_mg_Nest", "Axis_mg_Nest_plant_WP" ); Util.AddUseWp( "PLANT_Sewers", "Sewer_Plant_WP_1" ); Util.AddUseWp( "PLANT_Sewers", "Sewer_Plant_WP_2" ); Util.AddUseWp( "PLANT_Cart_Ramp", "Cart_Ramp_Plant_WP" ); ETUtil.LimitToClass( "PLANT_Cart_Ramp", TEAM.AXIS, CLASS.COVERTOPS ); ETUtil.LimitToClass( "PLANT_Allied_Command_Post", TEAM.AXIS, CLASS.COVERTOPS ); ETUtil.LimitToClass( "PLANT_Allied_mg_Nest", TEAM.AXIS, CLASS.COVERTOPS ); ETUtil.LimitToClass( "PLANT_Axis_Command_Post", TEAM.ALLIES, CLASS.COVERTOPS ); ETUtil.LimitToClass( "PLANT_Axis_mg_Nest", TEAM.ALLIES, CLASS.COVERTOPS ); Util.DisableGoal( ".*", true ); Util.ChangeSpawn(TEAM.AXIS, 0); WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); Util.SetRoleForGoals("MOUNTMG42_Hill", ROLE.DEFENDER); SetAvailableMapGoals( 0, true, "CHECKPOINT_hill_flag" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_Allies_Hill_Top_.*", "BUILD_Truck", "BUILD_Allied_Command_Post", "BUILD_Allied_mg_Nest", "AMMOCAB_cabin_ammocabinet", "HEALTHCAB_cabin_healthcabinet", "PLANT_Sewers", "PLANT_Back_Door", "PLANT_Root_Cellar", "GRENADE_hill_mg", }); SetAvailableMapGoals( TEAM.AXIS, true, { ".*_Axis_Start_.*", ".*_Axis_Sewers_.*", "BUILD_Truck_Barrier", "MOUNTMG42_Hill", "REPAIRMG42_Hill", "AMMOCAB_cabin_ammocabinet", "HEALTHCAB_cabin_healthcabinet", }); SetAvailableMapGoals( TEAM.AXIS, false, "MOVER_cabindoor1" ); SetAvailableMapGoals( 0, false, { "ROUTE_Back_Door", "ROUTE_Root_Cellar", }); SetGoalPriority( "ATTACK_elevator_nuke", 0.81, TEAM.ALLIES, 0 ); SetGoalPriority( "ATTACK_Allies_Cabin_01", 0.69, TEAM.ALLIES, 0 ); SetGoalPriority( "ATTACK_Allies_Main_Entrance_.*", 0.51, TEAM.ALLIES, 0 ); SetGoalPriority( "ATTACK_Allies_TruckAtBarrier1_.*", 0.51, TEAM.ALLIES, 0 ); SetGoalPriority( "PLANT_Truck_Barrier", 0.82, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "BUILD_Allied_mg_Nest", 0.8, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Cart_Ramp", 0.8, TEAM.AXIS, CLASS.COVERTOPS ); SetGoalPriority( "PLANT_Cart_Ramp", 0.82, TEAM.AXIS, CLASS.COVERTOPS ); SetGoalPriority( "PLANT_Elevator_Generator", 0.83, TEAM.AXIS, CLASS.COVERTOPS ); SetGoalPriority( "PLANT_Allied_Command_Post", 0.82, TEAM.AXIS, CLASS.COVERTOPS ); SetGoalPriority( "BUILD_Truck_Barrier", 0.91, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "BUILD_Axis_mg_Nest", 0.8, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "DEFEND_Axis_Start_.*", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Start_13", 0.52, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Sewers_01", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_HillTop_05", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_HillTop_06", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_HillTop_01", 0.52, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_HillTop_04", 0.52, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Sewers_02", 0.52, TEAM.AXIS, 0 ); SetGoalPriority( "DEFEND_Axis_Main_Entrance_.*", 0.53, TEAM.AXIS, 0 ); SetGoalPriority( "PLANT_Elevator_Generator", 0.78, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "BUILD_Axis_Command_Post", 0.78, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "BUILD_Axis_mg_Nest", 0.79, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "REPAIRMG42_Axis_mg_Nest", 0.79, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "ATTACK_Axis_PastB2_.*", 0.51, TEAM.AXIS, 0 ); SetGoalPriority( "ATTACK_Axis_PastBridge_.*", 0.52, TEAM.AXIS, 0 ); Wp.SetWaypointFlag( "axis-door", "closed", false ); Wp.SetWaypointFlag( "axis-door2", "closed", false ); Util.SetMaxUsers( 1, "MOUNTMG42.*" ); Util.SetMaxUsers( 1, "REPAIRMG42.*" ); Util.SetMaxUsers( 1, "SNIPE_.*" ); Util.SetMaxUsers( 1, "DEFEND_.*" ); Util.SetMaxUsers( 2, "BUILD_.*" ); Util.SetMaxUsers( 1, "BUILD_Axis_mg_Nest" ); Util.SetMaxUsers( 1, "BUILD_Allied_Command_Post" ); Util.SetMaxUsers( 1, "BUILD_Axis_Command_Post" ); Util.SetMaxUsers( 1, "PLANT_.*" ); Util.SetMaxUsers( 3, "PLANT_Main_Entrance.*" ); Util.SetMaxUsers( 1, "GRENADE_.*" ); Util.SetMaxUsers( 2, "ESCORT_truck" ); Util.SetMaxUsers( 4, "ESCORT_cart_allies" ); Util.OnTriggerPosition( "MOVER_truck", "barrier_8", 150.0, Map.truck_at_barrier ); Util.OnTriggerPosition( "MOVER_truck", "Near_Barrier", 200.0, Map.truck_near_barrier ); Util.UpdateSwitchData(); thread(Map.WatchElevatorPosition); truck1 = OnTriggerRegion( Vec3(-326,2374,1146), 80, Map.truck_at_door ); TruckOnBridge = OnTriggerRegion( Vec3(625, -1088, 196), 80, Map.Truck_On_Bridge ); TruckOnBridge1 = OnTriggerRegion( Vec3(877, -1733, 196), 80, Map.Truck_On_Bridge1 ); TruckAtBridge = OnTriggerRegion( Vec3(349, -229, 273), 80, Map.Truck_At_Bridge ); TruckPastBridge2 = OnTriggerRegion( Vec3(1271, -2220, 180), 80, Map.Truck_Past_Bridge2 ); break1 = OnTriggerRegion( AABB(460.027,2350.292,886.800,654.336,2671.970,1010.041), RegionTrigger.BreakableDistance ); break2 = OnTriggerRegion( AABB(-185.195,257.126,50.567,-66.612,417.956,201.734), RegionTrigger.BreakableDistance ); break3 = OnTriggerRegion( AABB(180.130,2345.648,1081.125,323.944,2437.318,1222.285), RegionTrigger.BreakableDistance ); //window cabin break4 = OnTriggerRegion( AABB(-1265.605,2468.875,1039.647,-1152.239,2589.108,1225.800), RegionTrigger.BreakableDistance ); //window library break5 = OnTriggerRegion( AABB(-311.068,2396.165,741.125,-165.455,2638.976,875.299), RegionTrigger.BreakableDistance ); //window generator break6 = OnTriggerRegion( AABB(382.914,1183.125,445.125,472.875,1363.839,519.125), RegionTrigger.BreakableDistance ); //ventilation shaft 1 break7 = OnTriggerRegion( AABB(139.125,1031.125,285.125,204.875,1156.135,495.125), RegionTrigger.BreakableDistance ); //ventilation shaft 2 break8 = OnTriggerRegion( AABB(-604.975,1999.125,474.974,-515.126,2064.875,707.125), RegionTrigger.BreakableDistance ); //ventilation shaft cabinet 1 break9 = OnTriggerRegion( AABB(-1052.875,2260.918,633.125,-987.125,2400.361,697.698), RegionTrigger.BreakableDistance ); //ventilation shaft cabinet 2 break10 = OnTriggerRegion( AABB(-885.550,2679.595,77.125,-706.051,2765.127,195.348), RegionTrigger.BreakableDistance ); //window main entrance break11 = OnTriggerRegion( AABB(-755.405,1535.303,77.353,-614.441,1780.257,195.125), RegionTrigger.BreakableDistance ); //window hall to main entrance 1 break12 = OnTriggerRegion( AABB(647.330,1589.424,77.125,790.661,1772.876,195.307), RegionTrigger.BreakableDistance ); //window hall to main entrance 2 nukeatElevatorDoor = OnTriggerRegion( AABB(-934.874,2420.030,81.125,-896.874,2458.030,155.125), Map.Nuke_at_ElevatorDoor ); nukeleftroom = OnTriggerRegion( AABB(-939.711,2147.449,77.125,-812.594,2465.877,190.125), Map.Nuke_Left_Room ); triggerLowestDoor = OnTriggerRegion( AABB(-944.875,2443.144,81.125,-906.875,2491.608,155.125), Map.trigger_LowestDoor ); triggerTopDoor = OnTriggerRegion( AABB(-957.911,2402.513,1105.125,-915.125,2465.898,1179.125), Map.trigger_TopDoor ); triggerCartRamp = OnTriggerRegion( AABB(-563.677,2475.939,1105.125,-511.834,2516.085,1179.125), Map.trigger_CartRamp ); truckpastb1 = OnTriggerRegion( AABB(235.697,182.212,446.042,286.727,235.515,498.987), Map.Truck_past_b1 ); RegionTrigger.BreakableDistance.MinBreakableDist = 50; RegionTrigger.BreakableDistance.MaxBreakableDist = 150; Map.iw1 = OnTriggerRegion( AABB(283.959,2309.262,1078.865,560.409,2479.720,1253.359), RegionTrigger.IntrusionWarning ); DCM1 = OnTriggerRegion(AABB(20.961,2279.125,1078.392,391.836,2466.315,1207.125), RegionTrigger.DisableCombatMovement); DCM2 = OnTriggerRegion(AABB(-58.399,2258.069,661.125,71.904,2447.305,890.842), RegionTrigger.DisableCombatMovement); DCM3 = OnTriggerRegion(AABB(-219.237,3048.363,651.392,-87.474,3274.409,1100.992), RegionTrigger.DisableCombatMovement); DCM4 = OnTriggerRegion(AABB(-766.875,2011.125,77.211,-586.345,2081.958,259.125), RegionTrigger.DisableCombatMovement); DCM5 = OnTriggerRegion(AABB(-712.338,3049.735,985.072,-530.914,3212.932,1102.731), RegionTrigger.DisableCombatMovement); DCM6 = OnTriggerRegion(AABB(135.031,2902.358,1001.073,380.559,3002.256,1127.740), RegionTrigger.DisableCombatMovement); DCM7 = OnTriggerRegion(AABB(-1031.348,2525.880,77.125,-813.857,2686.124,151.125), RegionTrigger.DisableCombatMovement); //Axis door to the nuke DCM8 = OnTriggerRegion(AABB(-402.499,2507.421,709.125,-173.637,2625.281,842.580), RegionTrigger.DisableCombatMovement); //Window near back door DCM9 = OnTriggerRegion(AABB(748.669,2111.125,445.125,1080.175,2256.875,539.125), RegionTrigger.DisableCombatMovement); //Rock exit DCM10 = OnTriggerRegion(AABB(-75.123,2571.125,285.125,120.965,2696.875,519.125), RegionTrigger.DisableCombatMovement); //Ladder near axis CP DCM11 = OnTriggerRegion(AABB(438.185,2082.869,217.125,680.945,2617.724,359.125), RegionTrigger.DisableCombatMovement); //above the tank with poison DCM12 = OnTriggerRegion(AABB(1058.531,128.278,413.702,1281.551,307.337,499.199), RegionTrigger.DisableCombatMovement); //attack_axis_pastb2_05 DCM13 = OnTriggerRegion(AABB(860.815,303.888,482.067,946.244,384.054,568.110), RegionTrigger.DisableCombatMovement); //attack_axis_pastb2_08 DCM14 = OnTriggerRegion(AABB(-1505.270,2011.125,5.125,-959.126,2132.935,151.125), RegionTrigger.DisableCombatMovement); //escort nuke to elevator DCM15 = OnTriggerRegion(AABB(-304.798,2375.127,741.125,-184.925,2504.875,859.711), RegionTrigger.DisableCombatMovement); //ATTACK_Allies_Elevator_Generator_07 DCM16 = OnTriggerRegion(AABB(-610.240,2011.127,285.125,-431.293,2136.875,381.523), RegionTrigger.DisableCombatMovement); //Railing jump down near main entrance to the nuke DCM17 = OnTriggerRegion(AABB(-213.798,2571.125,285.125,-91.264,2696.875,382.487), RegionTrigger.DisableCombatMovement); //Railing jump down near main entrance to the nuke NP1 = OnTriggerRegion(AABB(20.961,2279.125,1078.392,391.836,2466.315,1207.125), RegionTrigger.DisableBotPush); NP2 = OnTriggerRegion(AABB(-58.399,2258.069,661.125,71.904,2447.305,890.842), RegionTrigger.DisableBotPush); NP3 = OnTriggerRegion(AABB(-219.237,3048.363,651.392,-87.474,3274.409,1100.992), RegionTrigger.DisableBotPush); NP4 = OnTriggerRegion(AABB(-766.875,2011.125,77.211,-586.345,2081.958,259.125), RegionTrigger.DisableBotPush); NP5 = OnTriggerRegion(AABB(-712.338,3049.735,985.072,-530.914,3212.932,1102.731), RegionTrigger.DisableBotPush); NP6 = OnTriggerRegion(AABB(135.031,2902.358,1001.073,380.559,3002.256,1127.740), RegionTrigger.DisableBotPush); NP7 = OnTriggerRegion(AABB(133.705,2549.260,1090.669,214.875,2652.249,1171.408), RegionTrigger.DisableBotPush); //Defend_axis_hilltop_04 NP8 = OnTriggerRegion(AABB(-1035.700,2143.026,1267.509,-968.740,2209.198,1354.344), RegionTrigger.DisableBotPush); //Defend_axis_hilltop_09 NP9 = OnTriggerRegion(AABB(529.518,2000.648,1044.447,658.130,2092.994,1128.932), RegionTrigger.DisableBotPush); //Defend_axis_hilltop_06 NP10 = OnTriggerRegion(AABB(-402.499,2507.421,709.125,-173.637,2625.281,842.580), RegionTrigger.DisableBotPush); //Window near back door NP11 = OnTriggerRegion(AABB(748.669,2111.125,445.125,1080.175,2256.875,539.125), RegionTrigger.DisableBotPush); //Rock exit NP12 = OnTriggerRegion(AABB(-1659.780,2426.329,101.125,-1542.400,2495.031,175.125), RegionTrigger.DisableBotPush); //Mobilemg42_war_room NP13 = OnTriggerRegion(AABB(-210.638,2976.241,121.125,-95.070,3064.874,195.125), RegionTrigger.DisableBotPush); //Mobilemg42_main_entrance NP14 = OnTriggerRegion(AABB(-75.123,2571.125,285.125,120.965,2696.875,519.125), RegionTrigger.DisableBotPush); //Ladder near axis CP NP15 = OnTriggerRegion(AABB(-216.240,287.053,209.125,17.837,428.815,322.057), RegionTrigger.DisableBotPush); //Sewer hatch NP16 = OnTriggerRegion(AABB(-296.874,2896.071,661.125,-180.593,3088.875,736.125), RegionTrigger.DisableBotPush); //Axis back door NP17 = OnTriggerRegion(AABB(1058.531,128.278,413.702,1281.551,307.337,499.199), RegionTrigger.DisableBotPush); //attack_axis_pastb2_05 NP18 = OnTriggerRegion(AABB(860.815,303.888,482.067,946.244,384.054,568.110), RegionTrigger.DisableBotPush); //attack_axis_pastb2_08 NP19 = OnTriggerRegion(AABB(-304.798,2375.127,741.125,-184.925,2504.875,859.711), RegionTrigger.DisableBotPush); //ATTACK_Allies_Elevator_Generator_07 print( "^3Omni-bot map script for ^8" + GetMapName() + " ^3executed. Corrected by ^1Q^2i^3k^4i ^3and ^1n^2a^4t^8i^3v^5e12^3." ); Util.DisableGoal ( "ROUTE_Back_Door" ); Util.DisableGoal ( "ROUTE_Root_Cellar" ); Util.DisableGoal ( "ROUTE_Sewerexit" ); Util.DisableGoal ( "ROUTE_Sewer" ); Util.FixMoverPos("truck", Vec3(-2906.500, -687.000, 412.500), Vec3(-3052.000, -688.000, 356.000)); sleep( 2 ); Util.AddInvVehicle( "MOVER_cart" ); }; global OnBotJoin = function( bot ) { WeaponTable.SetWeaponAvailability( CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); WeaponTable.SetWeaponTeamAvailability( TEAM.ALLIES, CLASS.SOLDIER, WEAPON.MOBILE_MG42, false ); WeaponTable.SetWeaponTeamAvailability( TEAM.ALLIES, CLASS.SOLDIER, WEAPON.MORTAR, false ); if ( ETUtil.CountClass( TEAM.AXIS, CLASS.SOLDIER ) < 2 ) { if ( Map.NukeIsInTheCabin or Map.NukeIsOnTheTruck ) { WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, false ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.PANZERFAUST, false ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MORTAR, true ); } else { WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MORTAR, false ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.PANZERFAUST, false ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, true ); if ( bot.HasWeapon(WEAPON.FLAMETHROWER) or bot.HasWeapon(WEAPON.MORTAR) or bot.HasWeapon(WEAPON.PANZERFAUST) ) { bot.ExecCommand("kill"); Util.MapDebugPrint( "^5I have wrong weapon" ); } } } else { if ( Map.NukeIsInTheCabin or Map.NukeIsOnTheTruck ) { WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, false ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MORTAR, true ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.PANZERFAUST, true ); } else { WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.FLAMETHROWER, false ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MORTAR, false ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, true ); WeaponTable.SetWeaponTeamAvailability( TEAM.AXIS, CLASS.SOLDIER, WEAPON.PANZERFAUST, true ); } } bot.MaxViewDistance = 2300; yield();yield(); if( bot.CanSnipe() ) { bot.MaxViewDistance = 2500; } }; global InitializeRoutes = function() { MapRoutes = { CHECKPOINT_hill_flag = { ROUTE_allied_spawn = { ROUTE_river1 = {}, ROUTE_bridge1 = {}, ROUTE_bridge2 = {}, ROUTE_cabin1 = { ROUTE_cabin2 = {}, ROUTE_roof1 = {}, }, }, }, PLANT_Cart_Ramp = { ROUTE_Axis_Bunker = { ROUTE_Crossroads = { ROUTE_Water_Way_1 = { ROUTE_Hill_1 = { ROUTE_Hill_2 = { ROUTE_House_1 = { ROUTE_House_2 = { }, }, }, }, }, }, }, }, PLANT_Allied_Command_Post = { ROUTE_Spawn = { ROUTE_Water_Way_1 = { ROUTE_ToAllied_CP = { }, }, }, ROUTE_Spawn_1 = { ROUTE_Water_Way_1 = { ROUTE_ToAllied_CP = { }, }, }, ROUTE_Spawn_2 = { ROUTE_Water_Way_1 = { ROUTE_ToAllied_CP = { }, }, }, ROUTE_Axis_Bunker = { ROUTE_Crossroads = { ROUTE_Water_Way_1 = { ROUTE_ToAllied_CP = { }, }, }, }, ROUTE_MG42_Hill = { ROUTE_Water_Way_1 = { ROUTE_ToAllied_CP = { }, }, }, }, }; MapRoutes["ATTACK_Allies_Main_Entrance_.*"] = { ROUTE_Spawn = { ROUTE_Back_Door = { ROUTE_Crossroads = { ROUTE_Jump = { }, ROUTE_Stairs = { Weight = 2, }, }, }, ROUTE_Root_Cellar = { Weight = 2, ROUTE_Way_1 = { ROUTE_Crossroads = { ROUTE_Jump = { }, ROUTE_Stairs = { Weight = 2, }, }, }, }, }, ROUTE_Spawn_1 = { ROUTE_Back_Door = { ROUTE_Crossroads = { ROUTE_Jump = { }, ROUTE_Stairs = { Weight = 2, }, }, }, ROUTE_Root_Cellar = { Weight = 2, ROUTE_Way_1 = { ROUTE_Crossroads = { ROUTE_Jump = { }, ROUTE_Stairs = { Weight = 2, }, }, }, }, }, ROUTE_Spawn_2 = { ROUTE_Back_Door = { ROUTE_Crossroads = { ROUTE_Jump = { }, ROUTE_Stairs = { Weight = 2, }, }, }, ROUTE_Root_Cellar = { Weight = 2, ROUTE_Way_1 = { ROUTE_Crossroads = { ROUTE_Jump = { }, ROUTE_Stairs = { Weight = 2, }, }, }, }, }, }; MapRoutes["ATTACK_Allies_Elevator_Generator_.*"] = { ROUTE_Spawn = { ROUTE_Back_Door = { ROUTE_Way_3 = { }, }, ROUTE_Root_Cellar = { ROUTE_Way_1 = { ROUTE_Way_2 = { ROUTE_Way_3 = { }, }, }, }, }, ROUTE_Spawn_1 = { ROUTE_Back_Door = { ROUTE_Way_3 = { }, }, ROUTE_Root_Cellar = { ROUTE_Way_1 = { ROUTE_Way_2 = { ROUTE_Way_3 = { }, }, }, }, }, ROUTE_Spawn_2 = { ROUTE_Back_Door = { ROUTE_Way_3 = { }, }, ROUTE_Root_Cellar = { ROUTE_Way_1 = { ROUTE_Way_2 = { ROUTE_Way_3 = { }, }, }, }, }, }; MapRoutes["ATTACK_Axis_Barrier2_.*"] = { ROUTE_Axis_Bunker = { ROUTE_Sewer = { Weight = 2, ROUTE_Sewerexit = { }, }, ROUTE_Crossroads = { ROUTE_Water_Way_1 = { }, ROUTE_Rockexit = { Weight = 3, }, ROUTE_Root_Cellar = { Weight = 3, }, ROUTE_Back_Door = { }, }, }, }; MapRoutes["MOBILEMORTAR_.*"] = { ROUTE_Axis_Bunker = { ROUTE_Crossroads = { ROUTE_Back_Door = { Weight = 2, ROUTE_Back = { }, }, ROUTE_Rockexit = { }, }, }, }; MapRoutes["PLANTMINE_Axis_TruckRoad_.*"] = { ROUTE_Axis_Bunker = { ROUTE_Sewer = { Weight = 2, ROUTE_Sewerexit = { }, }, ROUTE_Crossroads = { ROUTE_Rockexit = { //Weight = 2, }, }, }, }; MapRoutes[".*_Axis_PastB2_.*"] = { ROUTE_Axis_Bunker = { ROUTE_Crossroads = { ROUTE_Rockexit = { Weight = 3, ROUTE_Along_River_1 = { ROUTE_Along_River_2 = { ROUTE_Along_River_3 = { ROUTE_Along_River_4 = { }, }, }, }, }, ROUTE_Root_Cellar = { }, }, ROUTE_Sewer = { //Weight = 2, ROUTE_Sewerexit = { }, }, }, }; MapRoutes["PLANT_Main_Entrance.*"] = MapRoutes["ATTACK_Allies_Main_Entrance_.*"]; MapRoutes["ATTACK_Nuke_.*"] = MapRoutes["ATTACK_Allies_Main_Entrance_.*"]; MapRoutes.ESCORT_cart_allies = MapRoutes["ATTACK_Allies_Main_Entrance_.*"]; MapRoutes.BUILD_Truck_Barrier = MapRoutes["PLANTMINE_Axis_TruckRoad_.*"]; MapRoutes.PLANT_Allied_mg_Nest = MapRoutes.PLANT_Allied_Command_Post; Util.Routes(MapRoutes); };