//========================================================================================== // // uje_oasis_christmas.gm // // Who When What //------------------------------------------------------------------------------------------ // palota 19.8.2015 PLANT_North_PAK_75mm_Gun, PLANT_South_PAK_75mm_Gun, changed mortar position // //========================================================================================== // global Map = { Debug = false, //set this to true if you want axis to try and dynamite water pump2 //after old city wall is destroyed. DestroyWaterPumpAfterWall = false, DispenseAmmoTime = 15, //dyno counters NorthDyno = 0, SouthDyno = 0, WallStatus = true, //intact PumpOasis = false, PumpCity = false, // aggressive defenders will be split into north and south 'teams' // this will keep them from wandering across the map Roles = { AXIS = { DEFENDER1 = { numbots = 2, }, DEFENDER2 = { numbots = 2, }, }, }, // path through for axis throwing a/s over the wall when attempting to reclaim Airstrike = { wall = { Enabled = true, Team = (1< 0 && Map.NorthDynoThreadId == threadId()) { Map.North_No_Dyno(); Util.MapDebugPrint( "North_Defuse was not called !" ); } }, North_Defuse = function ( trigger ) { Map.NorthDyno -= 1; if ( Map.NorthDyno < 1 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_north_clear.*" ); if ( Map.SouthDyno < 1 ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_gun_flex.*" ); } } Util.MapDebugPrint( "North_Defuse" ); }, South_No_Dyno = function() { Map.SouthDyno = 0; SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_south_clear.*" ); if ( Map.NorthDyno < 1 ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_gun_flex.*" ); } }, South_Anti_Tank_Gun_Destroyed = function( trigger ) { //don't worry about additional dynos at this point Map.South_No_Dyno(); //focus on north defense SetAvailableMapGoals( TEAM.AXIS, false, { "DEFUSE_South_Anti_Tank_Gun.*", "DEFEND_South_Gun.*", "TRIPMINE_SouthGun.*", }); Util.MapDebugPrint( "South_Anti_Tank_Gun_Destroyed" ); }, South_Plant = function ( trigger ) { Map.SouthDyno += 1; //shift defense to support defuse SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_gun_flex.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_south_clear.*" ); Util.MapDebugPrint( "South_Plant" ); Map.SouthDynoThreadId = threadId(); sleep(31); if (Map.SouthDyno > 0 && Map.SouthDynoThreadId == threadId()) { Map.South_No_Dyno(); Util.MapDebugPrint( "South_Defuse was not called !" ); } }, South_Defuse = function ( trigger ) { Map.SouthDyno -= 1; if ( Map.SouthDyno < 1 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_south_clear.*" ); if ( Map.NorthDyno < 1 ) { SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_gun_flex.*" ); } } Util.MapDebugPrint( "South_Defuse" ); }, Old_City_Wall_Destroyed = function( trigger ) { // this region trigger isn't needed anymore DeleteTriggerRegion("snuckpast"); // and kill the thread watching players that snuck through if ( Map.WatchPlayerThreadId ) { threadKill(Map.WatchPlayerThreadId); } Map.DispenseAmmoTime = 5; Map.WallStatus = false; // Axis goals SetAvailableMapGoals( TEAM.AXIS, true, { "REPAIRMG42_Garrison_MG_Nest", "MOUNTMG42_Garrison_MG_Nest", "DEFEND_South_Gun_.*", "DEFEND_North_Gun_.*", "DEFEND_middle_patrol.*", ".*_p2axis_.*", "MOBILEMG42_rGuns.*", "BUILD_Garrison_MG_Nest", "BUILD_Axis_Command_Post", "DEFEND_gun_flex.*", "PLANTMINE_rGuns.*", "CALLARTILLERY_rTunnel.*", "CALLARTILLERY_rSouthEntrance.*", "ARTILLERY_S_rTunnel.*", "ARTILLERY_S_rSouthEntrance.*", "TRIPMINE_NorthGun.*", "TRIPMINE_SouthGun.*", }); // all classes now SetGoalPriority( "DEFEND_north_clear.*", 0.92 ); SetGoalPriority( "DEFEND_south_clear.*", 0.92 ); // and turn em off if no dyno if ( Map.NorthDyno < 1 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_north_clear.*" ); } if ( Map.SouthDyno < 1 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_south_clear.*" ); } // disable the pathrough airstrike at the wall Map.Airstrike.wall.Enabled = false; SetAvailableMapGoals( TEAM.AXIS, false, { ".*_p1axis_.*", "AMMOCAB_cabinet_ammo", "HEALTHCAB_cabinet_health", "PLANT_Oasis_Water_Pump", "PLANT_Old_City_MG_Nest", "PLANT_Allied_Command_Post", "DEFUSE_Old_City_Wall.*", "DEFEND_Flag_.*", "CALLARTILLERY_rFirstTunnel.*", "ARTILLERY_S_rFirstTunnel.*", "MOBILEMORTAR_waterpump", "PLANTMINE_rFlag.*", "TRIPMINE_Flag.*", "SNIPE_p2axis_garrison_canopy", }); // this one can be enabled sooner SetAvailableMapGoals( TEAM.ALLIES, true, "MOBILEMORTAR_bGuns.*" ); //optionally keep the waterpump2 dynamite action. problem is, meds will //leave defensive spots to go revive engineers as they inevitably get killed //because its so close to allied spawn if ( !Map.DestroyWaterPumpAfterWall ) { SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Old_City_Water_Pump" ); } // cs: delay it long enough for the blockable status // this prevents a ton of failed paths for allies sleep(2.1); // Allied goals SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_Guns_.*", "SMOKEBOMB_bGuns.*", "PLANT_North_PAK_75mm_Gun", "PLANT_South_PAK_75mm_Gun", "PLANT_Garrison_MG_Nest", "PLANT_Axis_Command_Post", }); SetAvailableMapGoals( TEAM.ALLIES, false, { "MOUNTMG42_Old_City_MG_Nest", "REPAIRMG42_Old_City_MG_Nest", "HEALTHCAB_cabinet_health", "AMMOCAB_cabinet_ammo", "ATTACK_Wall_.*", "BUILD_Oasis_Water_Pump", "BUILD_Old_City_MG_Nest", "AIRSTRIKE_bWall.*", }); Util.MapDebugPrint( "Old_City_Wall_Destroyed" ); }, oldcityflag_Axis_Captured = function( trigger ) { SetGoalPriority( "PLANT_Old_City_Wall", 0.91, TEAM.ALLIES, CLASS.ENGINEER ); // Allied goals SetAvailableMapGoals( TEAM.ALLIES, false, { "ATTACK_Wall_.*", "AMMOCAB_cabinet_ammo", "HEALTHCAB_cabinet_health", "AIRSTRIKE_bWall.*", }); // Axis goals SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Flag_.*", ".*_p1axis_.*", "CALLARTILLERY_rFirstTunnel.*", "ARTILLERY_S_rFirstTunnel.*", }); Util.MapDebugPrint( "oldcityflag_Axis_Captured" ); }, oldcityflag_Allies_Captured = function( trigger ) { SetGoalPriority( "PLANT_Old_City_Wall", 0.95, TEAM.ALLIES, CLASS.ENGINEER ); // Allied goals SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_Wall_.*", "AMMOCAB_cabinet_ammo", "HEALTHCAB_cabinet_health", "AIRSTRIKE_bWall.*", }); // Axis goals SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_Flag_.*", ".*_p1axis_.*", "CALLARTILLERY_rFirstTunnel.*", "ARTILLERY_S_rFirstTunnel.*", }); Util.MapDebugPrint( "oldcityflag_Allies_Captured" ); }, WatchPlayerLimbo = function() { while(Map.WatchPlayer && !GetEntFlags(Map.WatchPlayer, ENTFLAG.LIMBO)) { sleep(0.5); } SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_north_clear.*", "DEFEND_south_clear.*", }); Util.MapDebugPrint( "Sneaky player died" ); }, SnuckPast = { Name = "snuckpast", TriggerOnClass = CLASS.ENGINEER, OnEnter = function(ent) { team = GetEntTeam(ent); if ( team != TEAM.ALLIES ) { return; } // spawn the engineers back (only do this once) if ( !Map.SpawnedBack ) { ETUtil.SuicideSpawn( TEAM.AXIS, 1, -1, CLASS.ENGINEER ); Map.SpawnedBack = true; } // have the engineers defend the guns Util.LimitToClass( "DEFEND_north_clear.*", TEAM.AXIS, CLASS.ENGINEER ); Util.LimitToClass( "DEFEND_south_clear.*", TEAM.AXIS, CLASS.ENGINEER ); SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_north_clear.*", "DEFEND_south_clear.*", }); // and do it until the sneaky player dies Map.WatchPlayer = ent; if ( Map.WatchPlayerThreadId ) { threadKill(Map.WatchPlayerThreadId); } Map.WatchPlayerThreadId = thread(Map.WatchPlayerLimbo); }, }, }; global OnMapLoad = function() { Util.SetGoalPosition( 4576.686, 6586.125, -468.781, "PLANT_Old_City_Water_Pump" ); OnTrigger( "Allied Command Post constructed. Charge speed increased!", Map.Allied_Command_Post_Built ); OnTrigger( "Axis Command Post constructed. Charge speed increased!", Map.Axis_Command_Post_Built ); OnTrigger( "The Garrison MG Nest has been constructed!", Map.Garrison_MG_Nest_Built ); OnTrigger( "Allies have built the Oasis Water Pump!", Map.Oasis_Water_Pump_Built ); OnTrigger( "The Old City MG Nest has been constructed!", Map.Old_City_MG_Nest_Built ); OnTrigger( "Allies have built the Old City Water Pump!", Map.Old_City_Water_Pump_Built ); OnTrigger( "Planted at the Allied Command Post.", Map.Allied_Command_Post_Planted ); OnTrigger( "Axis team has destroyed the Allied Command Post!", Map.Allied_Command_Post_Destroyed ); OnTrigger( "Allied team has destroyed the Axis Command Post!", Map.Axis_Command_Post_Destroyed ); OnTrigger( "The Garrison MG Nest has been damaged!", Map.Garrison_MG_Nest_Destroyed ); OnTrigger( "Allies have destroyed the North Anti-Tank Gun!", Map.North_Anti_Tank_Gun_Destroyed ); OnTrigger( "Planted at the Oasis Water Pump.", Map.Oasis_Water_Pump_Planted ); OnTrigger( "Axis have damaged the Oasis Water Pump!", Map.Oasis_Water_Pump_Destroyed ); OnTrigger( "The Old City MG Nest has been damaged!", Map.Old_City_MG_Nest_Destroyed ); OnTrigger( "Allies have breached the Old City wall", Map.Old_City_Wall_Destroyed ); OnTrigger( "Planted at the Old City Water Pump.", Map.Old_City_Water_Pump_Planted ); OnTrigger( "Axis have damaged the Old City Water Pump!", Map.Old_City_Water_Pump_Destroyed ); OnTrigger( "Allied team has destroyed the South Anti-Tank Gun!", Map.South_Anti_Tank_Gun_Destroyed ); OnTrigger( "Axis reclaim the Old City!", Map.oldcityflag_Axis_Captured ); OnTrigger( "Allies capture the Old City!", Map.oldcityflag_Allies_Captured ); OnTrigger( "Planted at the North Anti-Tank Gun.", Map.North_Plant ); OnTrigger( "Planted at the South Anti-Tank Gun.", Map.South_Plant ); OnTrigger( "Defused at the North Anti-Tank Gun.", Map.North_Defuse ); OnTrigger( "Defused at the South Anti-Tank Gun.", Map.South_Defuse ); // detect engineers getting through when wall is still intact wTunnel2 = OnTriggerRegion(AABB(5731.727,4805.139,-869.945,5983.292,4945.652,-771.262),Map.SnuckPast); wall = OnTriggerRegion(AABB(5536.597,6820.100,-565.253,5700.429,7872.364,-367.812),Map.SnuckPast); SetMapGoalProperties( "ATTACK_.*", {MinCampTime=15, MaxCampTime=30}); SetMapGoalProperties( "DEFEND_.*", {MinCampTime=10, MaxCampTime=15}); SetMapGoalProperties( "MOUNTMG42_.*", {MinCampTime=45, MaxCampTime=90}); SetMapGoalProperties( "MOBILEMG42_.*", {MinCampTime=30, MaxCampTime=60}); SetMapGoalProperties( "SNIPE_.*", {MinCampTime=120, MaxCampTime=120}); SetMapGoalProperties( "DEFEND_north_clear.*", {MinCampTime=30, MaxCampTime=35}); SetMapGoalProperties( "DEFEND_south_clear.*", {MinCampTime=30, MaxCampTime=35}); SetMapGoalProperties( "DEFEND_middle_patrol.*", {MinCampTime=1, MaxCampTime=2}); SetGoalPriority( "MOUNTMG42_.*", 0.0, 0, CLASS.MEDIC ); SetGoalPriority( "MOUNTMG42_.*", 0.0, 0, CLASS.ENGINEER ); // don't backtrack to defuse these unless camping SetGoalPriority( "DEFUSE_Oasis_Water_Pump.*", 0.7, TEAM.ALLIES, CLASS.ENGINEER, true ); SetGoalPriority( "DEFUSE_Allied_Command_Post.*", 0.7, TEAM.ALLIES, CLASS.ENGINEER, true ); // Max users per goal Util.SetMaxUsersInProgress( 15, "CHECKPOINT_oldcityflag" ); Util.SetMaxUsers( 1, "DEFEND_.*" ); Util.SetMaxUsers( 1, "MOUNTMG42_.*" ); Util.SetMaxUsers( 1, "REPAIRMG42_.*" ); Util.SetMaxUsersInProgress( 5, "DEFEND_north_clear.*" ); Util.SetMaxUsersInUse( 1, "DEFEND_north_clear.*" ); Util.SetMaxUsersInProgress( 5, "DEFEND_south_clear.*" ); Util.SetMaxUsersInUse( 1, "DEFEND_south_clear.*" ); // Allied goals SetGoalPriority( "BUILD_Oasis_Water_Pump", 0.94, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "BUILD_Allied_Command_Post", 0.93, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "CHECKPOINT_oldcityflag", 0.92, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Old_City_Wall", 0.91, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "BUILD_Old_City_Water_Pump", 0.90, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "BUILD_Old_City_MG_Nest", 0.89, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_North_PAK_75mm_Gun", 0.81, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_South_PAK_75mm_Gun", 0.81, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Garrison_MG_Nest", 0.0, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Axis_Command_Post", 0.0, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Garrison_MG_Nest", 0.81, TEAM.ALLIES, CLASS.COVERTOPS ); // Axis goals SetGoalPriority( "PLANTMINE_rFlag.*", 0.91, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Old_City_Water_Pump", 0.83, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Oasis_Water_Pump", 0.83, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Old_City_MG_Nest", 0.0, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Allied_Command_Post", 0.0, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Old_City_MG_Nest", 0.82, TEAM.AXIS, CLASS.COVERTOPS ); SetGoalPriority( "PLANT_Allied_Command_Post", 0.81, TEAM.AXIS, CLASS.COVERTOPS ); SetGoalPriority( "DEFEND_north_clear.*", 0.92 ); SetGoalPriority( "DEFEND_south_clear.*", 0.92 ); SetGoalPriority( "DEFEND_middle_patrol.*", 0.49 ); SetGoalPriority( "DEFEND_middle_patrol5", 0.55 ); // peak out the back for campers SetGoalPriority( "DEFUSE_Old_City_Wall_.*", 1.10, TEAM.AXIS, CLASS.ENGINEER, true ); SetGoalPriority( "DEFUSE_North_Anti_Tank_Gun_.*", 1.15, TEAM.AXIS, CLASS.ENGINEER, true ); SetGoalPriority( "DEFUSE_South_Anti_Tank_Gun_.*", 1.15, TEAM.AXIS, CLASS.ENGINEER, true ); Util.DisableGoal( ".*", true ); // all but routes Util.DisableGoal({ "ROUTE_tunnel1", "ROUTE_oc_tunnel" }); SetAvailableMapGoals( TEAM.ALLIES, true, { "REPAIRMG42_Old_City_MG_Nest", "BUILD_Oasis_Water_Pump", "PLANT_Old_City_Wall", "PLANT_Garrison_MG_Nest", "MOUNTMG42_Old_City_MG_Nest", "CHECKPOINT_oldcityflag", "BUILD_Old_City_Water_Pump", "BUILD_Allied_Command_Post", "BUILD_Old_City_MG_Nest", }); SetAvailableMapGoals( TEAM.AXIS, true, { "PLANTMINE_rFlag.*", "AMMOCAB_cabinet_ammo", "HEALTHCAB_cabinet_health", "PLANT_Allied_Command_Post", "PLANT_Old_City_MG_Nest", "PLANT_Old_City_Water_Pump", "SNIPE_p1axis_valleyledge_2", "SNIPE_p1axis_behindflagroom", "SNIPE_p1axis_supplyroom", "SNIPE_p1axis_valleyledge_1", "CHECKPOINT_oldcityflag", "DEFEND_Flag_.*", "TRIPMINE_Flag.*", "MOBILEMORTAR_waterpump", "CALLARTILLERY_rFirstTunnel.*", "ARTILLERY_S_rFirstTunnel.*", }); // randomize plant goal position Util.AddUsePoint( "PLANT_North_PAK_75mm_Gun", { Vec3(9662, 4696, -103), Vec3(9649, 4773, -200) }); Util.AddUsePoint( "PLANT_South_PAK_75mm_Gun", { Vec3(9658, 3935, -103), Vec3(9644, 3869, -200) }); Util.MapDebugPrint( "OnMapLoad" ); }; global InitializeRoutes = function() { rAxis = { ROUTE_overwall = { ROUTE_walltop = {}, ROUTE_wallfar = {}, }, ROUTE_walldoor = {}, }; MapRoutes = { CHECKPOINT_oldcityflag = { ROUTE_allyspawn = { ROUTE_frontdoor_l = {}, ROUTE_frontdoor_r = {}, ROUTE_leftdoor = { Weight = 2, ROUTE_toproute_a = { ROUTE_toproute_b = {}, ROUTE_toproute_c = {}, }, ROUTE_ruins_l = { ROUTE_ruins_stairs = { ROUTE_flag_l = {}, ROUTE_flag_t = {}, }, }, }, ROUTE_tunnel1 = { Weight = 2, ROUTE_tunnel2 = {}, }, }, ROUTE_cp = { ROUTE_ruins_l = {}, }, ROUTE_AxisSpawn1 = rAxis, ROUTE_AxisSpawn2 = rAxis, }, PLANT_North_PAK_75mm_Gun = { ROUTE_FlagSpawn = { ROUTE_oc_tunnel = { Weight = 3, ROUTE_southentrance = {}, ROUTE_se_corner = { ROUTE_eastentrance = {}, }, }, ROUTE_upper_connection = { ROUTE_northentrance1 = { ROUTE_cp_split = { ROUTE_cp_route = {}, ROUTE_halls = {}, }, }, ROUTE_northentrance2 = {}, ROUTE_ne_corner = { ROUTE_eastentrance = {}, }, ROUTE_westside = { ROUTE_sw_corner = { ROUTE_southentrance = {}, ROUTE_se_corner = {}, }, }, }, }, }, PLANT_South_PAK_75mm_Gun = { ROUTE_FlagSpawn = { ROUTE_oc_tunnel = { Weight = 3, ROUTE_southentrance = {}, ROUTE_se_corner = { ROUTE_eastentrance = {}, }, }, ROUTE_upper_connection = { ROUTE_northentrance1 = { ROUTE_cp_split = { ROUTE_halls = { ROUTE_uppersouth = {}, }, }, ROUTE_lowermg1 = { ROUTE_lowermg2 = {}, }, }, ROUTE_northentrance2 = {}, ROUTE_ne_corner = { ROUTE_eastentrance = {}, }, ROUTE_westside = { ROUTE_sw_corner = { ROUTE_southentrance = {}, ROUTE_se_corner = {}, }, }, }, }, }, PLANT_Oasis_Water_Pump = { ROUTE_FlagSpawn = { ROUTE_tunnel2 = { ROUTE_tunnel1 = {}, }, }, }, DEFEND_gun_flex_4 = { ROUTE_AxisSpawn1 = { ROUTE_gunpatrol2 = { ROUTE_northentrance2 = {}, }, }, ROUTE_AxisSpawn2 = { ROUTE_gunpatrol2 = {}, }, }, //most of the time they should check gun area before taking tunnel to the pump PLANT_Old_City_Water_Pump = { ROUTE_AxisSpawn1 = { ROUTE_oc_tunnel = {}, ROUTE_gunpatrol = { ROUTE_oc_tunnel = {}, }, ROUTE_gunpatrol2 = { ROUTE_gunpatrol = {}, }, }, ROUTE_AxisSpawn2 = { ROUTE_oc_tunnel = {}, ROUTE_gunpatrol = {}, ROUTE_gunpatrol2 = {}, }, }, MOBILEMG42_rGuns1 = { // send them this way so they don't have their back to enemy when heading to them ROUTE_AxisSpawn1 = { ROUTE_nTruck = {}, }, ROUTE_AxisSpawn2 = { ROUTE_nTruck = {}, }, }, SMOKEBOMB_bGuns_south = { ROUTE_FlagSpawn = { ROUTE_oc_tunnel = { ROUTE_southentrance = {}, }, }, }, SMOKEBOMB_bGuns_north = { ROUTE_FlagSpawn = { ROUTE_upper_connection = {}, ROUTE_lower_connection = {}, }, }, }; MapRoutes["DEFEND_Flag_.*"] = { ROUTE_AxisSpawn1 = rAxis, ROUTE_AxisSpawn2 = rAxis, }; //copy some routes MapRoutes.PLANT_North_PAK_75mm_Gun.ROUTE_FlagSpawn.ROUTE_lower_connection = MapRoutes.PLANT_North_PAK_75mm_Gun.ROUTE_FlagSpawn.ROUTE_upper_connection; MapRoutes.PLANT_South_PAK_75mm_Gun.ROUTE_FlagSpawn.ROUTE_lower_connection = MapRoutes.PLANT_South_PAK_75mm_Gun.ROUTE_FlagSpawn.ROUTE_upper_connection; MapRoutes.PLANT_Garrison_MG_Nest = MapRoutes.PLANT_North_PAK_75mm_Gun; MapRoutes.PLANT_Axis_Command_Post = MapRoutes.PLANT_North_PAK_75mm_Gun; MapRoutes["ATTACK_Guns_.*"] = MapRoutes.PLANT_North_PAK_75mm_Gun; MapRoutes.DEFEND_gun_flex_5 = MapRoutes.DEFEND_gun_flex_4; MapRoutes.DEFEND_gun_flex_6 = MapRoutes.DEFEND_gun_flex_4; MapRoutes.MOBILEMG42_rGuns2 = MapRoutes.MOBILEMG42_rGuns1; Util.Routes(MapRoutes); };