//========================================================================================== // UJE_factory_b2 // uje_factory.gm // // Who When What //--------------------------------------------------------------------------------------------------------- // ^4[UJE]^3Niek 01 December 2016 Initial Script // ^4[UJE]^3Captain 04 December 2016 attack/defense/door switch/escort-mount Tank/improvement // ^4[UJE]^3Captain 25 December 2016 Fix Barrier Side Wall/clean/improvement // ^4[UJE]^3Captain 14 March 2017 Script adjustment for no xmas version // //========================================================================================================= // global Map = { Debug = 0, // please set to zero before distributing your script StairDoor = false, KeyCaptured = false, Tankatpalace = false, phase = 1, // phase 1, first spawn , get Tank and escort it // phase 2, second spawn, escort Tank // phase 3, third spawn, no need to escort Tank anymore // phase 4, forward spawns.. //The switches are used in reversed order DoorStatus = 0, //door is closed initially Switches = { axis_door = { Enabled = true, Priority = 0, //always set to 0 when using path through WaypointName = "switch_axis", Timeout = 1500, Wait = function() // optional. used to have the bot wait a bit for slow moving doors / elevators { if ( Map.DoorStatus == 0 ) { //wait 1.5 secs while the door opens sleep(5.0); return true; } //always return false unless the door is open: return false; }, }, }, axis_radio_built = function( trigger ) { if ( Map.phase < 2 ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_axis_door" ); } else { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Axis.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "SWITCH_axis_door" ); } //If CP Axis rebuilt by bot At the same time map pass phase 2 //closed waypoint exit false at cp axis after phase 1, because all switch disable for allbots and door closed, bots is blocked at this location. if ( Map.phase > 1 ) { Wp.SetWaypointFlag("exit", "closed", false); } else { Wp.SetWaypointFlag("exit", "closed", true); } SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_Command_Post" ); Util.MapDebugPrint( "axis_radio_built" ); }, axis_radio_Destroyed = function( trigger ) { if ( Map.phase < 2 ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_Command_Post" ); } SetAvailableMapGoals( TEAM.AXIS, false, "SWITCH_axis_door" ); SetAvailableMapGoals( TEAM.ALLIES, false, {"PLANT_Axis.*","SWITCH.*"} ); Wp.SetWaypointFlag("exit", "closed", false); Util.MapDebugPrint( "axis_radio_Destroyed" ); }, ramp_obj_Built = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_North_Assault_Ramp" ); Util.MapDebugPrint( "ramp_obj_Built" ); }, steps_obj_Built = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_South.*" ); Util.MapDebugPrint( "steps_obj_Built" ); }, Tank_repaired = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Tank" ); if ( Map.tankatpalace == false ) { SetAvailableMapGoals( TEAM.AXIS, true, {"MOUNT_tank","ESCORT_tank"} ); SetAvailableMapGoals( TEAM.ALLIES, true, "MOUNT_tank" ); } else { SetAvailableMapGoals( TEAM.AXIS, false, {"MOUNT_tank","ESCORT_tank"} ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_tank" ); } Util.MapDebugPrint( "Tank_repaired" ); }, Tank_damaged = function( trigger ) { if ( Map.phase < 4 ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Tank" ); SetAvailableMapGoals( TEAM.AXIS, false, {"MOUNT_tank","ESCORT_tank"} ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_tank" ); } Util.MapDebugPrint( "Tank_damaged" ); }, B_Spawn = function( trigger ) { Map.phase = 2; SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_Palace_gate.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, {"DEFEND_Garden.*","PLANT_Axis.*","SWITCH.*"} ); SetAvailableMapGoals( TEAM.AXIS, false, "SWITCH_axis_door" ); Wp.SetWaypointFlag("exit", "closed", false); Util.MapDebugPrint( "B_Spawn" ); }, C_Spawn = function( trigger ) { Map.phase = 3; SetAvailableMapGoals( TEAM.AXIS, false, "ESCORT_tank" ); Util.MapDebugPrint( "C spawn" ); }, allied_compost_built = function( trigger ) { if ( Map.StairDoor == true ) { SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Stair_Well_Command.*" ); } SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Stair.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, {"BUILD_Stair.*","PLANT_Stair_Well_Command.*"} ); Util.MapDebugPrint( "allied_compost_built" ); }, allied_compost_Destroyed = function( trigger ) { if ( Map.StairDoor == true ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Stair.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Stair.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Stair_Well_Command.*" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Stair.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Stair_Well_Command.*" ); } Util.MapDebugPrint( "allied_compost_Destroyed" ); }, axis_compost_built = function( trigger ) { if ( Map.StairDoor ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Stair_Well_Command.*" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Stair_Well_Command.*" ); } SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Stair.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, {"BUILD_Stair.*","PLANT_Stair_Well_Command.*"} ); Util.MapDebugPrint( "axis_compost_build" ); }, axis_compost_Destroyed = function( trigger ) { if ( Map.StairDoor ) { SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Stair.*" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Stair.*" ); } SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Stair.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Stair_Well_Command.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Stair_Well_Command.*" ); Util.MapDebugPrint( "axis_compost_Destroyed" ); }, well_grate_Destroyed = function( trigger ) { Util.MapDebugPrint( "well_grate_Destroyed" ); }, well_door_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Sewer_Grate" ); Util.MapDebugPrint( "well_door_Destroyed" ); }, garage_wall_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Tank" ); Util.MapDebugPrint( "garage_wall_Destroyed" ); }, main_door_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, {"DEFEND_Factory_main.*","DEFEND_Barrier_side.*"} ); SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_Barrier_side.*" ); if ( Map.KeyCaptured == true ) { SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_Key.*" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_Key.*" ); } SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_Factory_Main.*" ); Util.MapDebugPrint( "main_door_Destroyed" ); }, ramp_obj_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_North.*" ); Util.MapDebugPrint( "ramp_obj_Destroyed" ); }, tower_wall_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_Command_Post" ); Util.MapDebugPrint( "tower_wall_Destroyed" ); }, steps_obj_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_South.*" ); Util.MapDebugPrint( "steps_obj_Destroyed" ); }, weak_closet_Destroyed = function( trigger ) { Util.MapDebugPrint( "weak_closet_Destroyed" ); }, stair_door_Destroyed = function( trigger ) { Map.StairDoor = true; SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_Stair_well.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_Barrier_side.*" ); SetAvailableMapGoals( TEAM.AXIS, true, {"ATTACK_Factory_Main.*","CHECKPOINT.*","PLANT_Stair_Well_Command.*","BUILD_Stair.*","PLANT_Closet.*","BUILD_South.*"} ); SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_Stair_Well.*" ); Map.phase = 4; Wp.SetWaypointFlag("grate", "closed", false); Util.MapDebugPrint( "stair_door_Destroyed" ); }, trench_wall_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_Barrier_side.*" ); if ( Map.KeyCaptured == true ) { SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_Key.*" ); } else { SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_Key.*" ); } SetAvailableMapGoals( TEAM.AXIS, true, {"FLAG_gate_key","ATTACK_Key.*"} ); SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_Factory_Main.*" ); Util.MapDebugPrint( "trench_wall_Destroyed" ); }, Palace_gate_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, true, {"BUILD_Stair.*","CHECKPOINT.*","DEFEND_Stair_well.*","DEFEND_Well_house.*","PLANTMINE_Key.*"} ); SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_Palace_gate.*" ); SetAvailableMapGoals( TEAM.AXIS, true, {"PLANT_Sewer_Grate","PLANT_Sewer_House_Side_Entrance","PLANT_Stair_Well_Side_Entrance","ATTACK_Stair_Well.*"} ); SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_Palace_gate.*" ); Util.MapDebugPrint( "Palace_gate_Destroyed" ); }, garage_wall2_Destroyed = function( trigger ) { Util.MapDebugPrint( "garage_wall2_Destroyed " ); }, Allies_Capture_Flag = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_Well_house.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "CHECKPOINT.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "CHECKPOINT.*" ); Util.MapDebugPrint( "Allies_Capture_Flag" ); }, Axis_Capture_Flag = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_Well_house.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "CHECKPOINT.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "CHECKPOINT.*" ); Util.MapDebugPrint( "Axis_Capture_Flag" ); }, Axis_Flag = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_Well_house.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_Factory_main.*" ); SetAvailableMapGoals( TEAM.AXIS, true, {"PLANT_Factory.*","BUILD_North.*","PLANT_Barrier.*"} ); Util.MapDebugPrint( "Axis_Flag" ); }, Key_Stolen = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, {"DEFEND_Key.*","PLANTMINE_Key.*"} ); SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_DeliverKey.*" ); SetAvailableMapGoals( TEAM.AXIS, true, {"CAPPOINT_DeliverKey","ATTACK_Dagger.*"} ); SetAvailableMapGoals( TEAM.AXIS, false, {"FLAG_gate_key","ATTACK_Key.*"} ); if ( Map.phase < 4 ) { //kill tse allies //change spawn // half the allies should spawn at the cp foreach ( id and bot in BotTable ) { if ( bot.GetTeam() == TEAM.ALLIES ) { bot.ChangeSpawnPoint( 6 ); //last spawn bot.ExecCommand("kill"); } } } Util.MapDebugPrint( "Key_Stolen" ); }, Key_Returned = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, true, {"DEFEND_Key.*","PLANTMINE_Key.*"} ); SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_DeliverKey.*" ); SetAvailableMapGoals( TEAM.AXIS, true, {"ATTACK_Key.*","FLAG_gate_key"} ); SetAvailableMapGoals( TEAM.AXIS, false, {"CAPPOINT_DeliverKey","ATTACK_Dagger.*"} ); Util.MapDebugPrint( "Key_Returned" ); }, Key_Captured = function( trigger ) { Map.KeyCaptured = true; SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_StolenDag.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, {"DEFEND_Key.*","PLANTMINE_Key.*","DEFEND_DeliverKey.*"} ); SetAvailableMapGoals( TEAM.AXIS, true, {"FLAG_dagger","ATTACK_Dagger.*"} ); SetAvailableMapGoals( TEAM.AXIS, false, {"ATTACK_Key.*","CAPPOINT_DeliverKey","FLAG_gate_key"} ); Util.MapDebugPrint( "Key_Captured" ); }, // Game lost for allies Dagger_Captured = function( trigger ) { Map.phase = 5; Util.MapDebugPrint( "Dagger_Captured" ); }, Dagger_Stolen = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, true, {"DEFEND_DeliverDagger.*","DEFEND_DeliverKey.*"} ); SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_StolenDag.*" ); SetAvailableMapGoals( TEAM.AXIS, true, {"CAPPOINT_DeliverDagger","ATTACK_Gen.*"} ); SetAvailableMapGoals( TEAM.AXIS, false, {"FLAG_dagger","ATTACK_Dagger.*"} ); Util.MapDebugPrint( "Dagger_Stolen" ); }, Dagger_Returned = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, {"DEFEND_DeliverDagger.*","DEFEND_DeliverKey.*"} ); SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_StolenDag.*" ); SetAvailableMapGoals( TEAM.AXIS, true, {"FLAG_dagger","ATTACK_Dagger.*"} ); SetAvailableMapGoals( TEAM.AXIS, false, {"CAPPOINT_DeliverDagger","ATTACK_Gen.*"} ); Util.MapDebugPrint( "Dagger_Returned" ); }, Tank_leave_garage = function() { SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_Side_Wall.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_Garden.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_Side_Wall.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_Garden.*" ); Util.MapDebugPrint("Tank_leave_garage"); }, Tank_leave_garden = function() { SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_Garden.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_Palace_gate.*" ); Util.MapDebugPrint("Tank_leave_garden"); }, Tank_at_palace = function() { Tankatpalace = true; SetAvailableMapGoals( TEAM.AXIS, false, {"MOUNT_tank","ESCORT_tank"} ); SetAvailableMapGoals( TEAM.ALLIES, false, "MOUNT_tank" ); Util.MapDebugPrint("Tank_at_palace"); }, vehicle_at_location = function( trigger ) { switch(Map.VehicleLocation) { case 1: { Map.Tank_leave_garage(); } case 2: { Map.Tank_leave_garden(); } case 3: { Map.Tank_at_palace(); } } Util.MapDebugPrint("vehicle at location " + Map.VehicleLocation, true); }, Gate = function( trigger ) { vel = ToVector(trigger.Action); if ( vel[0] > 0 ) { Map.DoorStatus = 0; if ( Map.phase < 2 ) { SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_axis_door" ); SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_axis_door" ); SetAvailableMapGoals( TEAM.ALLIES, false, "SWITCH_allies_door" ); } print("gate closing"); } else if ( vel[0] < 0 ) { Map.DoorStatus = 1; if ( Map.phase < 2 ) { SetAvailableMapGoals( TEAM.AXIS, false, "SWITCH_axis_door" ); SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_allies_door" ); SetAvailableMapGoals( TEAM.ALLIES, false, "SWITCH_axis_door" ); } print("gate opening"); } }, }; global OnMapLoad = function() { OnTrigger( "side_door_side_door1_goto", Map.Gate ); OnTrigger( "*^4Axis Command Post constructed. Charge speed increased!^7", Map.axis_compost_built ); OnTrigger( "*^4Allied Command Post constructed. Charge speed increased!^7", Map.allied_compost_built ); OnTrigger( "*^4Axis team has destroyed the Allied Command Post!^7", Map.allied_compost_Destroyed ); OnTrigger( "*^4Allied team has destroyed the Axis Command Post!^7", Map.axis_compost_Destroyed ); OnTrigger( "*^4Axis have supplied power to the Side Door!", Map.axis_radio_built ); OnTrigger( "*^4Allies have disabled the power to the Side Door!", Map.axis_radio_Destroyed ); OnTrigger( "*^4The Tank has been repaired!^7", Map.Tank_repaired ); OnTrigger( "*^4The Tank has been damaged!^7", Map.Tank_damaged ); OnTrigger( "*^1Axis have captured the Palace Garden Courtyard!^7", Map.B_Spawn ); OnTrigger( "*^4Axis have captured the Factory Spawn!^7", Map.C_Spawn ); OnTrigger( "*^4Axis have constructed the South Assault Ramp!^7", Map.steps_obj_Built ); OnTrigger( "*^4Allies have blown the South Assault Ramp!", Map.steps_obj_Destroyed ); OnTrigger( "*^4Axis have breached a part of the Barrier Side Wall!^7", Map.trench_wall_Destroyed ); OnTrigger( "*^4Axis have breached the Tower!^7", Map.tower_wall_Destroyed ); OnTrigger( "*^4Axis have blown the Factory Main Doors!^7", Map.Palace_gate_Destroyed ); OnTrigger( "*^4Axis have destroyed the Factory Main Entrance and captured Farm!^7", Map.main_door_Destroyed ); OnTrigger( "*^4The Sewer Grate has been blown!^7", Map.well_grate_Destroyed ); OnTrigger( "*^4Axis have breached the Tank Side Wall!^7" , Map.garage_wall_Destroyed ); OnTrigger( "*^4Axis have crashed through the garage wall!", Map.garage_wall2_Destroyed ); OnTrigger( "*^4Allies have blown the North Assault Ramp!", Map.ramp_obj_Destroyed ); OnTrigger( "*^4Axis have constructed the North Assault Ramp!", Map.ramp_obj_Built ); OnTrigger( "*^4Axis have destroyed the Closet Door!^7", Map.weak_closet_Destroyed ); OnTrigger( "*^4Axis have destroyed the Sewer House Side Entrance!^7", Map.well_door_Destroyed ); OnTrigger( "*^4Axis have destroyed the Stair Sewer Side Entrance!^7", Map.stair_door_Destroyed ); OnTrigger( "*^4The Old Village is now permanently captured by Axis!^7", Map.Axis_Flag ); OnTrigger( "*^4Axis have secured the Old Village and if held for 7 seconds will be Axis permanently!^7", Map.Allies_Capture_Flag ); OnTrigger( "*^4Allies have captured the Old Village!^7", Map.Axis_Capture_Flag ); OnTrigger( "*^4Axis are attempting to unlock the Dagger's Gate!^7", Map.Key_Stolen ); OnTrigger( "*^4Allies have returned the Gate Key!^7", Map.Key_Returned ); OnTrigger( "*^4The Dagger to assasinate The General have been breached and are now ", Map.Key_Captured ); OnTrigger( "*^4Axis have stolen the Dagger and are attempting to assasinate The Gen", Map.Dagger_Stolen ); OnTrigger( "*^4Allies have returned the Dagger!^7", Map.Dagger_Returned ); OnTrigger( "*^4Santa has been assasinated !!^7", Map.Dagger_Captured ); // *** VEHICLE TRIGGERS *** Tank_leave_garage = OnTriggerRegion(AABB(3069.305,-2397.244,641.125,3124.573,-2030.882,715.127), RegionTrigger.VehicleTrigger); Tank_leave_garden = OnTriggerRegion(AABB(538.142,-3394.928,493.222,589.281,-3040.034,573.873), RegionTrigger.VehicleTrigger); Tank_at_palace = OnTriggerRegion(AABB(-2016.870,-2078.383,641.125,-1954.361,-1556.359,715.129), RegionTrigger.VehicleTrigger); OnTrigger( "tank at location", Map.vehicle_at_location ); // *** CLEAR ALL GOALS FOR BOTH TEAMS *** Util.DisableGoal( ".*", true ); // All but routes //Allies goals activation SetAvailableMapGoals( TEAM.ALLIES, true, { ".*CAB.*", ".*CAB.*", "DEFEND_Side_Wall.*", }); //Axis goals activation SetAvailableMapGoals( TEAM.AXIS, true, { ".*CAB.*", ".*CAB.*", "PLANT_weak_Tower_Wall", "PLANT_damaged_Tank_Side_Wall", "ATTACK_Side_Wall.*", "MOVER_Tank", }); //Offset Plant Fix Util.SetGoalOffset( 150, 0, 0, "PLANT_damaged_Tank_Side_Wall" ); Util.SetGoalOffset( -140, -5, -90, "PLANT_Barrier_Side_Wall" ); // Camp times SetMapGoalProperties( "ATTACK.*", {MinCampTime=30, MaxCampTime=60} ); SetMapGoalProperties( "DEFEND.*", {MinCampTime=30, MaxCampTime=60} ); //SetMaxUsersInProgress Util.SetMaxUsersInProgress( 1, "DEFEND.*" ); Util.SetMaxUsersInProgress( 1, "ATTACK.*" ); Util.SetMaxUsersInProgress( 1, "PLANT.*" ); Util.SetMaxUsersInProgress( 1, "BUILD.*" ); Util.SetMaxUsersInProgress( 1, "MOUNT.*" ); Util.SetMaxUsersInProgress( 1, "ESCORT.*" ); Util.SetMaxUsersInProgress( 1, "SWITCH.*" ); Util.SetMaxUsersInProgress( 2, "CHECKPOINT.*" ); Util.SetMaxUsersInProgress( 2, "FLAG.*" ); Util.SetMaxUsersInProgress( 3, "CAPPOINT.*" ); //SetGoalPriority SetGoalPriority( "PLANT_weak_Tower_Wall", 1.0, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "BUILD_Tank", 1.0, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "BUILD_Axis_Command_Post", 1.0, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "PLANT_damaged_Tank_Side_Wall", 0.8, TEAM.AXIS, CLASS.ENGINEER ); Wp.SetWaypointFlag("grate", "closed", true); Wp.SetWaypointFlag("exit", "closed", true); //SwitchData Util.UpdateSwitchData(); }; global OnBotJoin = function( bot ) { bot.TargetBreakableDist = 300.0; }; global InitializeRoutes = function() { MapRoutes = { PLANT_damaged_Tank_Side_Wall = { }, PLANT_Sewer_Grate = { }, PLANT_Sewer_House_Side_Entrance = { }, PLANT_Factory_Main_Entrance = { }, BUILD_Tank = { }, CHECKPOINT_forward_spawn = { }, CAPPOINT_DeliverDagger = { ROUTE_dagger = { ROUTE_right = { }, ROUTE_left = { }, }, }, CAPPOINT_DeliverKey = { ROUTE_center_key = { ROUTE_left_garage = { ROUTE_right = { }, ROUTE_left = { }, }, ROUTE_right_garage = { ROUTE_left = { }, ROUTE_right = { }, }, }, }, FLAG_gate_key = { ROUTE_fortress = { ROUTE_top_key = { }, ROUTE_main_factory = { ROUTE_center_key = { }, }, ROUTE_barrier_side = { ROUTE_top_key = {Weight = 3,}, }, Weight = 3, ROUTE_barrier_side = { ROUTE_door_factory = { ROUTE_left_garage = { ROUTE_center_key = { }, }, ROUTE_right_garage = { ROUTE_center_key = { }, }, }, ROUTE_win_factory = { ROUTE_right_garage = { ROUTE_center_key = { }, }, ROUTE_left_garage = { ROUTE_center_key = { }, }, }, }, }, }, FLAG_dagger = { ROUTE_fortress = { ROUTE_top_key = { ROUTE_center_key = { ROUTE_left_garage = { ROUTE_dagger = { }, }, ROUTE_right_garage = { ROUTE_dagger = { }, }, }, }, ROUTE_barrier_side = { ROUTE_win_factory = { ROUTE_dagger = { }, }, Weight = 3, ROUTE_door_factory = { ROUTE_dagger = { }, }, }, Weight = 2, ROUTE_left_garage = { ROUTE_dagger = { }, }, Weight = 2, ROUTE_right_garage = { ROUTE_dagger = { }, }, }, }, PLANT_weak_Tower_Wall = { }, BUILD_Axis_Command_Post = { }, PLANT_Axis_Command_Post = { }, PLANT_Closet_Door = { }, PLANT_Stair_Well_Side_Entrance = { }, PLANT_Barrier_Side_Wall = { }, BUILD_North_Assault_Ramp = { }, PLANT_North_Assault_Ramp = { }, BUILD_South_Assault_Ramp = { }, PLANT_South_Assault_Ramp = { }, BUILD_Stair_Well_Command_Post = { }, PLANT_Stair_Well_Command_Post = { }, }; Util.Routes(MapRoutes); Util.MapDebugPrint( "Omni_bot map script for " + GetMapName() + " executed." ); };