//========================================================================================== // // al_kad_b3.gm // // Who When What //------------------------------------------------------------------------------------------ // d00d 05/17/08 Original script al_kad_b2.gm // jaskot 02/03/09 Converted old script to new format // d00d 11/13/09 Updated for Omni-bot 0.8 // d00d 12/05/10 Updated for 0.81/b3 version of the map // d00d 02/10/13 Added some attack goals // //========================================================================================== // global Map = { Ammo_Cabinet_first_ammocabinet = "AMMOCAB_first_ammocabinet", Ammo_Cabinet_north_ammocabinet = "AMMOCAB_north_ammocabinet", Health_Cabinet_first_healthcabinet = "HEALTHCAB_first_healthcabinet", Health_Cabinet_north_healthcabinet = "HEALTHCAB_north_healthcabinet", Flag_relic = "FLAG_relic", Cappoint_relic = "CAPPOINT_relic", Build_Command_Post = "BUILD_Command_Post", Build_Prison_gate = "BUILD_Prision_gate", Build_Relic_Box = "BUILD_Relic_Box", Plant_Back_door = "PLANT_Back_door", Plant_Command_Post = "PLANT_Command_Post", Plant_Front_door = "PLANT_Front_door", Plant_Prison_gate = "PLANT_Prision_gate", Plant_Relic_Box = "PLANT_Relic_Box", Plant_Rocket = "PLANT_Rocket", Debug = false, DefendingTeam = TEAM.AXIS, Talk = true, Command_Post_Built = function( trigger ) { Util.MapDebugPrint( "Command_Post_Built" ); }, Prison_gate_Built = function( trigger ) { Util.MapDebugPrint( "Prison_gate_Built" ); }, Back_door_Destroyed = function( trigger ) { Util.MapDebugPrint( "Back_door_Destroyed" ); }, Command_Post_Destroyed = function( trigger ) { Util.MapDebugPrint( "Command_Post_Destroyed" ); }, Front_door_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_frontdoor.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_relic.*" ); Util.MapDebugPrint( "Front_door_Destroyed" ); }, Prison_gate_Destroyed = function( trigger ) { Util.MapDebugPrint( "Prison_gate_Destroyed" ); }, Relic_Box_Planted = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_frontdoor.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_relic.*" ); if ( Map.Talk && MAP_TALK ) { wppos = Util.GetWpNamePosition( "the_box" ); foreach ( id and bot in BotTable ) { if ( bot.GetTeam() == TEAM.AXIS && bot.GetClass() != CLASS.ENGINEER && bot.DistanceTo( wppos ) < 1000 ) { ran = RandRange( 0, 10 ); if ( ran < 4 && !bot.GetNearestAlly( CAT.PLAYER, CLASS.ENGINEER ) ) { sleep(ran); bot.SayVoice( VOICE.NEED_ENGINEER ); break; } else if ( ran > 6 ) { sleep( 0.5 ); bot.SayVoice( VOICE.DISARM_DYNAMITE ); break; } } } } Util.MapDebugPrint( "Relic_Box_Planted" ); }, Relic_Box_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_frontdoor.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_relic.*", Map.Flag_relic, }); Util.MapDebugPrint( "Relic_Box_Destroyed" ); }, Rocket_Planted = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, { "ATTACK_relic.*", "ATTACK_frontdoor.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_rocket.*" ); if ( Map.Talk && MAP_TALK ) { wppos = Util.GetWpNamePosition( "axis_rocket9" ); foreach ( id and bot in BotTable ) { if ( bot.GetTeam() == TEAM.AXIS && bot.GetClass() != CLASS.ENGINEER && bot.DistanceTo( wppos ) < 1000 ) { ran = RandRange(0,10); if ( ran < 4 && !bot.GetNearestAlly(CAT.PLAYER, CLASS.ENGINEER) ) { sleep( ran ); bot.SayVoice( VOICE.NEED_ENGINEER ); break; } else if ( ran > 6 ) { sleep( 0.7 ); bot.SayVoice( VOICE.DISARM_DYNAMITE ); break; } } } } Util.MapDebugPrint( "Rocket_Planted" ); }, Rocket_Destroyed = function( trigger ) { Util.MapDebugPrint( "Rocket_Destroyed" ); }, relic_Taken = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_relic.*" ); SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_cappoint.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_cappoint.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_relic_axis.*" ); Util.MapDebugPrint( "relic_Taken" ); }, relic_Captured = function( trigger ) { SetGoalPriority( Map.Plant_Rocket, 0.9 ); SetAvailableMapGoals( TEAM.ALLIES, false, { "ATTACK_frontdoor.*", "ATTACK_cappoint.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_rocket.*", "SNIPE_allies_rocket.*", Map.Plant_Prison_gate, Map.Plant_Rocket, }); SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_cappoint.*" ); SetAvailableMapGoals( TEAM.AXIS, true, { "DEFEND_axis_rocket.*", "SNIPE_axis_rocket.*", Map.Build_Prison_gate, }); iw1 = OnTriggerRegion( AABB(5081.272,-5190.540,29.721,5281.996,-5060.853,203.810), RegionTrigger.IntrusionWarning ); iw2 = OnTriggerRegion( AABB(5120.875,-6170.852,26.119,5337.876,-6095.651,213.138), RegionTrigger.IntrusionWarning ); iw3 = OnTriggerRegion( AABB(5136.401,-5292.614,39.392,5250.774,-5225.107,232.702), RegionTrigger.IntrusionWarning ); Util.ChangeSpawn( TEAM.ALLIES, 3 ); Util.MapDebugPrint( "relic_Captured" ); if ( Map.Talk && MAP_TALK ) { timeLeft = GetGameTimeLeft(); if ( timeLeft < 120 ) { return; } rand = ETUtil.CountTeam( TEAM.AXIS ) * 2; rand2 = ETUtil.CountTeam( TEAM.ALLIES ) * 2; foreach ( gameId and bot in BotTable ) { team = bot.GetTeam(); if ( team == TEAM.AXIS ) { if ( RandInt(0, rand) < 2 ) { sleep( RandRange( 0.7, 2.1 ) ); bot.SayVoice( VOICE.DEFEND_OBJECTIVE ); } else if ( RandInt(0, rand) < 2 ) { sleep( RandRange( 1, 2.0 ) ); bot.ExecCommand( "vsay_team FTFallBack" ); } else if ( RandInt( 0, rand ) < 2 ) { sleep( RandRange( 0.5, 1.5 ) ); bot.SayVoice( VOICE.REINFORCE_DEF ); } } else if ( team == TEAM.ALLIES ) { if ( RandInt(0, rand2) < 2 ) { sleep( RandRange( 1, 2.8 ) ); bot.SayVoice( VOICE.REINFORCE_OFF ); } else if ( RandInt(0,rand2) < 2 ) { sleep( 1.5 ); bot.ExecCommand( "vsay_team FTAttack" ); } else if ( RandInt(1, rand2) < 2 && bot.GetClass() != CLASS.ENGINEER && timeLeft > 180) { sleep(0.6); bot.SayVoice( VOICE.DESTROY_PRIMARY ); } } } } }, relic_Returned = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_relic.*" ); SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_cappoint.*" ); SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_cappoint.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_relic_axis.*" ); Util.MapDebugPrint( "relic_Returned" ); }, }; global OnMapLoad = function() { /*** REGISTER CALLBACK FUNCTIONS ***/ OnTrigger( "Allied Command Post constructed. Charge speed increased!", Map.Command_Post_Built ); OnTrigger( "Axis Command Post constructed. Charge speed increased!", Map.Command_Post_Built ); OnTrigger( "Axis has built the Prison gate!", Map.Prison_gate_Built ); OnTrigger( "GRENADE_back_door Exploded.", Map.Back_door_Destroyed ); OnTrigger( "Axis team has destroyed the Allied Command Post!", Map.Command_Post_Destroyed ); OnTrigger( "GRENADE_front_door Exploded.", Map.Front_door_Destroyed ); OnTrigger( "Allies have destroyed the Prison gate!", Map.Prison_gate_Destroyed ); OnTrigger( "Planted at the Relic Box.", Map.Relic_Box_Planted ); OnTrigger( "Allies have destroyed the Box!!", Map.Relic_Box_Destroyed ); OnTrigger( "Planted at The Rocket.", Map.Rocket_Planted ); OnTrigger( "Allies have destroyed the rocket!", Map.Rocket_Destroyed ); OnTrigger( "Allies have stolen the relic!", Map.relic_Taken ); OnTrigger( "Allied team has secured the relic!", Map.relic_Captured ); OnTrigger( "Flag returned relic!", Map.relic_Returned ); /*** GOAL POSITIONS/USE POINTS ***/ Util.SetGoalOffset( 10, 0, 0, Map.Plant_Relic_Box ); Util.SetGoalOffset( 0, 0, -50, Map.Build_Prison_gate ); Util.SetGoalOffset( -10, 0, 0, Map.Plant_Front_door ); Util.AddUsePoint( Map.Plant_Back_door, Vec3(4346,-2280,40) ); Util.AddUsePoint( Map.Plant_Back_door, Vec3(4346,-2400,30) ); /*** REMOVE BOGUS BUILD GOAL ***/ Util.RemoveGoal( Map.Build_Relic_Box ); SetGoalPriority( Map.Plant_Relic_Box, 0.8 ); SetGoalPriority( Map.Plant_Front_door, 0.82 ); SetGoalPriority( Map.Plant_Back_door, 0.81 ); SetGoalPriority( Map.Plant_Command_Post, 0.75 ); SetGoalPriority( Map.Build_Command_Post, 0.75 ); SetGoalPriority( "DEFUSE_Rocket.*", 1.2, TEAM.AXIS, CLASS.ENGINEER, true ); SetGoalPriority( Map.Plant_Prison_gate, 0.65, TEAM.ALLIES, CLASS.ENGINEER ); /*** INITIAL GOAL AVAILABILITY ***/ SetAvailableMapGoals( TEAM.ALLIES, false, { Map.Flag_relic, Map.Plant_Prison_gate, Map.Plant_Rocket, "ATTACK_.*", "DEFEND_.*", "SNIPE_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { Map.Plant_Back_door, "ATTACK_frontdoor.*", }); SetAvailableMapGoals( TEAM.AXIS, false, { Map.Build_Prison_gate, Map.Plant_Back_door, "ATTACK_.*", "DEFEND_.*", "SNIPE_.*", }); SetAvailableMapGoals( TEAM.AXIS, true, { "SNIPE_axis_relic.*", "DEFEND_relic_axis.*", }); /*** SET MAX USERS FOR GOALS ***/ Util.SetMaxUsers( 1, "GRENADE_.*" ); Util.SetMaxUsers( 1, "BUILD_.*" ); Util.SetMaxUsers( 1, "PLANT_.*" ); Util.SetMaxUsers( 1, "DEFEND_.*" ); Util.SetMaxUsers( 1, "ATTACK.*" ); Util.SetMaxUsers( 3, "FLAG_.*" ); Util.SetMaxUsers( 3, "FLAGRETURN_.*" ); /*** REGION TRIGGERS ***/ iw4 = OnTriggerRegion( AABB(3976.287,-2802.724,204.068,4161.330,-2657.157,359.478), RegionTrigger.IntrusionWarning ); iw5 = OnTriggerRegion( AABB(4496.825,-2966.977,217.758,4599.867,-2634.540,346.658), RegionTrigger.IntrusionWarning ); /*** ROUTES ***/ MapRoutes = { DEFEND_relic_axis = { ROUTE_axis_spawn = { ROUTE_axis_bottom = {}, ROUTE_axis_center = {}, ROUTE_axis_left = {}, ROUTE_axis_right = {} } }, DEFEND_axis_rocket2 = { ROUTE_axis_spawn = { ROUTE_axis_bottom = { ROUTE_rocket_left = {}, ROUTE_rocket_right = {} }, ROUTE_axis_right = { ROUTE_rocket_left = {}, ROUTE_rocket_right = {} }, ROUTE_axis_left = { ROUTE_rocket_left = {}, ROUTE_rocket_right = {} }, ROUTE_axis_center = { ROUTE_rocket_left = {}, ROUTE_rocket_right = {} } } }, PLANT_Front_door = { ROUTE_allied_spawn = { ROUTE_roof = {}, ROUTE_as_right = {}, ROUTE_as_left = { ROUTE_door_left = {}, ROUTE_door_right = {} }, } }, PLANT_Rocket = { ROUTE_allied_spawn = { ROUTE_roof = { ROUTE_rocket_left = {}, ROUTE_rocket_right = {} }, ROUTE_as_right = { ROUTE_rocket_left = {}, ROUTE_rocket_right = {} }, ROUTE_as_left = { ROUTE_door_left = { ROUTE_rocket_left = {}, ROUTE_rocket_right = {} }, ROUTE_door_right = { ROUTE_rocket_left = {}, ROUTE_rocket_right = {} }, }, } }, FLAG_relic = { ROUTE_allied_spawn = { ROUTE_ladder = {}, ROUTE_as_right = {}, ROUTE_as_left = { ROUTE_door_left = {}, ROUTE_door_right = {} }, } }, CAPPOINT_relic = { ROUTE_box = { ROUTE_stairs1 = {}, ROUTE_stairs2 = {}, ROUTE_jump = {}, ROUTE_jump2 = {}, ROUTE_balcony = {} }, }, }; MapRoutes.ATTACK_cappoint1 = MapRoutes.CAPPOINT_relic; MapRoutes.ATTACK_cappoint2 = MapRoutes.CAPPOINT_relic; MapRoutes.ATTACK_cappoint3 = MapRoutes.CAPPOINT_relic; MapRoutes.ATTACK_cappoint4 = MapRoutes.CAPPOINT_relic; MapRoutes.ATTACK_cappoint5 = MapRoutes.CAPPOINT_relic; MapRoutes.ATTACK_cappoint6 = MapRoutes.CAPPOINT_relic; MapRoutes.ATTACK_cappoint7 = MapRoutes.CAPPOINT_relic; MapRoutes.ATTACK_rocket = MapRoutes.PLANT_Rocket; MapRoutes.ATTACK_rocket_1 = MapRoutes.PLANT_Rocket; MapRoutes.ATTACK_rocket_2 = MapRoutes.PLANT_Rocket; MapRoutes.ATTACK_rocket_3 = MapRoutes.PLANT_Rocket; MapRoutes.ATTACK_frontdoor = MapRoutes.PLANT_Front_door; MapRoutes.ATTACK_frontdoor_1 = MapRoutes.PLANT_Front_door; MapRoutes.ATTACK_frontdoor_2 = MapRoutes.PLANT_Front_door; MapRoutes.ATTACK_frontdoor_3 = MapRoutes.PLANT_Front_door; MapRoutes.ATTACK_frontdoor_4 = MapRoutes.PLANT_Front_door; MapRoutes.ATTACK_frontdoor_5 = MapRoutes.PLANT_Front_door; MapRoutes.PLANT_Relic_Box = MapRoutes.FLAG_relic; MapRoutes.ATTACK_relic = MapRoutes.FLAG_relic; MapRoutes.ATTACK_relic_1 = MapRoutes.FLAG_relic; MapRoutes.ATTACK_relic_2 = MapRoutes.FLAG_relic; MapRoutes.ATTACK_relic_3 = MapRoutes.FLAG_relic; MapRoutes.ATTACK_relic_4 = MapRoutes.FLAG_relic; MapRoutes.ATTACK_relic_5 = MapRoutes.FLAG_relic; MapRoutes.DEFEND_relic_axis_1 = MapRoutes.DEFEND_relic_axis; MapRoutes.DEFEND_relic_axis_2 = MapRoutes.DEFEND_relic_axis; MapRoutes.DEFEND_relic_axis_3 = MapRoutes.DEFEND_relic_axis; MapRoutes.DEFEND_relic_axis_4 = MapRoutes.DEFEND_relic_axis; MapRoutes.DEFEND_relic_axis_5 = MapRoutes.DEFEND_relic_axis; MapRoutes.DEFEND_relic_axis_6 = MapRoutes.DEFEND_relic_axis; MapRoutes.DEFEND_relic_axis_7 = MapRoutes.DEFEND_relic_axis; MapRoutes.DEFEND_relic_axis_8 = MapRoutes.DEFEND_relic_axis; MapRoutes.DEFEND_axis_rocket3 = MapRoutes.DEFEND_axis_rocket2; MapRoutes.DEFEND_axis_rocket4 = MapRoutes.DEFEND_axis_rocket2; MapRoutes.DEFEND_axis_rocket5 = MapRoutes.DEFEND_axis_rocket2; MapRoutes.DEFEND_axis_rocket6 = MapRoutes.DEFEND_axis_rocket2; MapRoutes.DEFEND_axis_rocket7 = MapRoutes.DEFEND_axis_rocket2; MapRoutes.DEFEND_axis_rocket8 = MapRoutes.DEFEND_axis_rocket2; MapRoutes.DEFEND_axis_rocket9 = MapRoutes.DEFEND_axis_rocket2; MapRoutes.DEFEND_axis_rocket10 = MapRoutes.DEFEND_axis_rocket2; MapRoutes.DEFEND_axis_rocket11 = MapRoutes.DEFEND_axis_rocket2; MapRoutes.DEFEND_axis_rocket12 = MapRoutes.DEFEND_axis_rocket2; MapRoutes.DEFEND_axis_rocket13 = MapRoutes.DEFEND_axis_rocket2; Util.Routes( MapRoutes ); Util.MapDebugPrint( "OnMapLoad" ); }; global OnBotJoin = function( bot ) { };