//========================================================================================== // // greenlee_et.gm // // Who When What //------------------------------------------------------------------------------------------ // ^1[UJE]^3Captain 02 September 2018 Initial Script // //========================================================================================== // global Map = { Debug = 0, // please set to zero before distributing your script EntranceStatus = 0, WallStatus = 0, Allied_Ins = 0, Allied_Command_Post = 0, //Rôles Roles = { AXIS = { AllBots = true, // each bot is considered for a role INFILTRATOR = //PLANT CP { numbots = 1, crucialClass = CLASS.COVERTOPS, }, DEFENDER = //Defend Pump { numbots = 8, }, DEFENDER1 = //Defend Wall { numbots = 8, }, DEFENDER2 = //Defend Wall { numbots = 4, }, }, ALLIES = { AllBots = true, // each bot is considered for a role INFILTRATOR = //PLANT CP { numbots = 1, crucialClass = CLASS.COVERTOPS, }, ATTACKER = // Attack Fuel Pump { numbots = 8, }, ATTACKER1 = //Attack Wall { numbots = 4, }, }, }, //Intrusion Tunnel without Destroyed Complex Entrance AlliedIns = { Name = "Allied_Ins", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if ( GetEntTeam(ent) == TEAM.ALLIES ) { Map.Allied_Ins += 1; if ( Map.Allied_Ins > 0 ) { Util.MapDebugPrint( "Trigger region - Allied Entered Complex" ); } if ( !Map.EntranceStatus ) { SetGoalRole( "DEFEND_Tunnel.*", ROLE.DEFENDER2 ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Tunnel.*" ); } } }, OnExit = function(ent) { if ( GetEntTeam(ent) == TEAM.ALLIES ) { Map.Allied_Ins -= 1; if ( Map.Allied_Ins == 0 ) { Util.MapDebugPrint( "Trigger region - Fuel Pump Is Safe" ); } if ( !Map.EntranceStatus or !Map.WallStatus ) { ClearGoalRole( "DEFEND_Tunnel.*", ROLE.DEFENDER2 ); SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Tunnel.*" ); } } }, }, Allied_Command_Post_Built = function( trigger ) { Map.Allied_Command_Post = 1; if ( !Map.EntranceStatus ) { SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Command_Post"); } SetAvailableMapGoals( TEAM.ALLIES, false, { "PLANT_Command_Post", "BUILD_Command_Post" }); SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Command_Post" ); Util.MapDebugPrint( "Allied_Command_Post_Built" ); }, Allied_Command_Post_Destroyed = function( trigger ) { Map.Allied_Command_Post = 0; if ( !Map.EntranceStatus ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" ); } SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Command_Post" ); Util.MapDebugPrint( "Allied_Command_Post_Destroyed" ); }, Axis_Command_Post_Built = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, false, { "BUILD_Command_Post", "PLANT_Command_Post" }); Util.MapDebugPrint( "Axis_Command_Post_Built" ); }, Axis_Command_Post_Destroyed = function( trigger ) { if ( !Map.EntranceStatus ) { SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" ); } SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Command_Post" ); SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Command_Post" ); SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Command_Post" ); Util.MapDebugPrint( "Axis_Command_Post_Destroyed" ); }, entrance_to_the_Center_Complex_Destroyed = function( trigger ) { Map.EntranceStatus = 1; SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Pump.*", "DEFEND_Wall.*", ".*9027", ".*9033" } ); SetAvailableMapGoals( TEAM.AXIS, false, { "DEFEND_Complex.*", ".*CAB_c.*", ".*CAB_u.*", ".*MG42.*" } ); if ( !Map.WallStatus ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_Wall.*", "PLANT_Southern_Axis_Refinery_Wall" } ); SetGoalRole("ATTACK_Pump.*", ROLE.ATTACKER); SetGoalRole("ATTACK_Wall.*", ROLE.ATTACKER1); } if ( !Map.Allied_Command or Map.Allied_Command ) { SetAvailableMapGoals( TEAM.AXIS, false, { "BUILD_Command_Post", "PLANT_Command_Post" }); } SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_Pump.*", ".*CAB_c.*", ".*CAB_upp.*", "PLANT_fuel_pump" } ); SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Complex.*" ); SetGoalRole("DEFEND_Pump.*", ROLE.DEFENDER); SetGoalRole("DEFEND_Wall.*", ROLE.DEFENDER1); ClearGoalRole("PLANT_Command_Post", ROLE.INFILTRATOR); Util.MapDebugPrint( "entrance_to_the_Center_Complex_Destroyed" ); }, Southern_Axis_Refinery_Wall_Destroyed = function( trigger ) { Map.WallStatus = 1; SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Wall.*" ); ClearGoalRole("ATTACK.*", { ROLE.ATTACKER, ROLE.ATTACKER1 }); SetAvailableMapGoals( TEAM.AXIS, true, "PLANTMINE_Pump.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "PLANTMINE_Wall.*" ); Util.MapDebugPrint( "Southern_Axis_Refinery_Wall_Destroyed" ); }, fuel_pump_Destroyed = function( trigger ) { Util.MapDebugPrint( "fuel_pump_Destroyed" ); }, }; global OnMapLoad = function() { //Register callback functions OnTrigger( "Allied Command Post constructed. Charge speed increased!", Map.Allied_Command_Post_Built ); OnTrigger( "Axis team has destroyed the Allied Command Post!", Map.Allied_Command_Post_Destroyed ); OnTrigger( "Axis Command Post constructed. Charge speed increased!", Map.Axis_Command_Post_Built ); OnTrigger( "Allied team has destroyed the Axis Command Post!", Map.Axis_Command_Post_Destroyed ); OnTrigger( "Allies have breached sidewall protecting the oil processing area", Map.Southern_Axis_Refinery_Wall_Destroyed ); OnTrigger( "Allies have breached the Center Complex", Map.entrance_to_the_Center_Complex_Destroyed ); //OnTrigger( "MISSING_STRING", Map.fuel_pump_Destroyed ); //Intrusion triggers AlliedIns = OnTriggerRegion(AABB(-6968.781,-5843.715,133.380,-1772.084,231.591,1487.911), Map.AlliedIns ); //all but routes Util.DisableGoal( ".*", true ); //Allies goals activation SetAvailableMapGoals( TEAM.ALLIES, true, { "BUILD_Command_Post", "ATTACK_Complex.*", ".*9029.*", ".*9031.*", "PLANT_entrance.*", "PLANT_Southern.*" }); //Axis goals activation SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_Complex.*", "BUILD_Command_Post", ".*MG42_31.*", ".*CAB_c.*", "PLANTMINE_Wall.*", ".*CAB_u.*" }); // Max users per goal Util.SetMaxUsers( 1, ".*MG42.*" ); Util.SetMaxUsers( 1, "DEFEND.*" ); Util.SetMaxUsers( 1, "ATTACK.*" ); Util.SetMaxUsers( 1, "BUILD.*" ); Util.SetMaxUsers( 1, "PLANT.*" ); //SetGoalPriority SetGoalPriority( "BUILD_Command_Post.*", 0.98, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "PLANT_Command_Post", 0.96, TEAM.AXIS, CLASS.COVERTOPS ); SetGoalPriority( "PLANT_Command_Post", 0.96, TEAM.ALLIES, CLASS.COVERTOPS ); SetGoalPriority( "PLANT.*", 1.0, TEAM.ALLIES, CLASS.ENGINEER ); SetGoalPriority( ".*MG42_31.*", 1.0, TEAM.AXIS, CLASS.SOLDIER ); SetGoalPriority( "ATTACK.*", 0.96); SetGoalPriority( "DEFEND.*", 0.96); SetGoalPriority( "DEFEND_Tunnel.*", 1.0); // Camp times SetMapGoalProperties( "MOUNTMG42.*", {MinCampTime=40, MaxCampTime=90} ); SetMapGoalProperties( "ATTACK.*", {MinCampTime=40, MaxCampTime=90}); SetMapGoalProperties( "DEFEND.*", {MinCampTime=20, MaxCampTime=60}); //Offset Plant/Build Fix Util.SetGoalOffset( 60, 0, 0, "PLANT_fuel_pump" ); Util.ClearRoleForTable({ "DEFEND.*", "ATTACK.*" }, { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.ATTACKER, ROLE.ATTACKER1 }); SetGoalRole("PLANT_Command_Post", ROLE.INFILTRATOR); Util.MapDebugPrint( "Omni-bot map script for " + GetMapName() + " executed." ); }; global OnBotJoin = function( bot ) { // Uncomment for shootable breakables bot.TargetBreakableDist = 90.0; // Only set MaxViewDistance on maps with limited sight (e.g. fog) //~bot.MaxViewDistance = 2400; }; global InitializeRoutes = function() { MapRoutes = { PLANT_Southern_Axis_Refinery_Wall = { ROUTE_Complex_S = { ROUTE_Exit_complex = { ROUTE_Complex_Tunnel = { ROUTE_Tunnel_Wall_Exit = { }, }, ROUTE_Road_Wall = { }, }, }, }, PLANT_fuel_pump = { ROUTE_Complex_S = { ROUTE_Exit_complex = { ROUTE_Front_Barrier = { }, ROUTE_Road_Wall = { }, }, ROUTE_Complex_Tunnel = { ROUTE_Tunnel_Wall_Exit = { }, }, }, ROUTE_Complex_Gate = { ROUTE_Inside_Complex = { ROUTE_Exit_complex = { ROUTE_Road_Wall = { }, ROUTE_Front_Barrier = { }, }, }, ROUTE_Tunnel_Entrance = { ROUTE_Complex_Tunnel = { ROUTE_Tunnel_Wall_Exit = { }, }, }, }, }, BUILD_Command_Post = { }, PLANT_Command_Post = { }, PLANT_entrance_to_the_Center_Complex = { ROUTE_Allied_S = { ROUTE_Right_S = { ROUTE_Road_Jump = { ROUTE_Road_Cab = { }, }, }, ROUTE_CP_Split = { ROUTE_CP_Right = { }, ROUTE_CP_Left = { }, }, }, }, }; MapRoutes["ATTACK_Pump.*"] = { ROUTE_Complex_Gate = { ROUTE_Tunnel_Entrance = { ROUTE_Tunnel_Wall_Exit = { }, }, ROUTE_Inside_Complex = { ROUTE_Exit_complex = { ROUTE_Road_Wall = { }, ROUTE_Front_Barrier = { }, }, }, }, ROUTE_Complex_S = { ROUTE_Exit_complex = { ROUTE_Road_Wall = { }, ROUTE_Front_Barrier = { }, }, ROUTE_Inside_Complex = { ROUTE_Complex_Tunnel = { ROUTE_Tunnel_Wall_Exit = { }, }, }, }, }; MapRoutes["ATTACK_Wall.*"] = { ROUTE_Complex_Gate = { ROUTE_Tunnel_Entrance = { ROUTE_Tunnel_Wall_Exit = { }, }, ROUTE_Inside_Complex = { ROUTE_Exit_complex = { ROUTE_Road_Wall = { }, }, }, }, ROUTE_Complex_S = { ROUTE_Exit_complex = { ROUTE_Road_Wall = { }, }, ROUTE_Complex_S = { ROUTE_Exit_complex = { ROUTE_Road_Wall = { }, ROUTE_Front_Barrier = { }, }, ROUTE_Inside_Complex = { ROUTE_Complex_Tunnel = { ROUTE_Tunnel_Wall_Exit = { }, }, }, }, }, }; MapRoutes["ATTACK_Complex.*"] = MapRoutes.PLANT_entrance_to_the_Center_Complex; Util.Routes(MapRoutes); };