etqw-sdk/base/script/maps/quarry.script

695 lines
22 KiB
Plaintext
Raw Permalink Normal View History

2008-05-29 00:00:00 +00:00
#define OBJECTIVE_QUARRY_DESTROY_JAMMER 0
#define OBJECTIVE_QUARRY_DELIVER_PODS 1
// Bot Objectives
#define QUARRY_STROGG_DESTROY_JAMMER 0
#define QUARRY_STROGG_SUPPORT_JAMMER 1
#define QUARRY_STROGG_DEPLOY_JAMMER 2
#define QUARRY_GDF_DEFEND_JAMMER 3
#define QUARRY_GDF_DEPLOY_JAMMER 4
#define QUARRY_STROGG_FORWARDSPAWN_1 5
#define QUARRY_GDF_ATTACK_FORWARDSPAWN_1 6
#define QUARRY_GDF_DEFEND_FORWARDSPAWN_1 7
#define QUARRY_STROGG_ATTACK_FORWARDSPAWN_1 8
#define QUARRY_STROGG_DEFEND_FORWARDSPAWN_1 9
#define QUARRY_STROGG_DEPLOY_POD 10
#define QUARRY_GDF_DEFEND_BASE 11
#define QUARRY_STROGG_ATTACK_GDF 12
#define QUARRY_GDF_DEPLOY_BASE 13
#define QUARRY_STROGG_FINAL_OBJECTIVE 14
#define QUARRY_STROGG_ATTACK_BARRACKS_POD 15 // Cell 1
#define QUARRY_GDF_DEFEND_BARRACKS_POD 16 // Cell 1
#define QUARRY_STROGG_ATTACK_WAREHOUSE_POD 20 // Cell 2
#define QUARRY_GDF_DEFEND_WAREHOUSE_POD 21 // Cell 2
#define QUARRY_STROGG_ATTACK_OFFICE_POD 25 // Cell 3
#define QUARRY_GDF_DEFEND_OFFICE_POD 26 // Cell 3
#define QUARRY_GDF_CONSTRUCT_TOWER 27 // Guard Tower
#define QUARRY_STROGG_DESTROY_TOWER 28
#define QUARRY_CELL_OBJ_1 35 // Cell 1 Take Action
#define QUARRY_CELL_OBJ_2 36 // Cell 2 Take Action
#define QUARRY_CELL_OBJ_3 37 // Cell 3 Take Action
#include "script/maps/quarry/final.script"
object mapObject_Quarry : mapObject_Default {
void preinit();
void InitObjectives();
void StartFirstObjective(); // MBJ
void CompleteObjective( float index, entity p );
handle GetObjectiveMessage( float index );
void OnTimeLimitHit();
void OnJammerDestroyed();
void OnPodsDelivered();
void OnGuardTower1Built();
void OnGuardTower1Destroyed();
boolean guardTower1Built;
void OnConstructionComplete( entity obj );
void OnDestructionComplete( entity obj );
void DeliverPodThread();
void JammerDestroyThread();
// ANDREW
void ShipExplodeThread();
vector GetGDFBasePosition() { return '6220 -12700 2420'; }
entity GetSpectateEntity();
//
// Spawn masters
//
entity quarryworks_strogg_spawn;
entity warehouse_gdf_spawn;
entity railyard_capturable_spawn;
entity gdf_main_base;
entity strogg_main_base;
//
// Territories
//
entity gdfBaseTerritory;
entity warehouseTerritory;
entity quarryworksTerritory;
entity gateTerritory;
entity stroggBaseTerritory;
//
// Objectives
//
entity objective1Arrow1;
entity objective1Arrow2;
entity objective2Arrow1;
entity objective2Arrow2;
entity objective1Marker;
entity objective2Marker;
entity carryable1;
entity carryable2;
entity carryable3;
entity finalObjectiveTrigger;
entity jammer; // MBJ
entity jammerEffectsIdle; // MBJ
entity jammerEffectsShutdown; // MBJ
entity generatorDestroyed; // MBJ
entity guardTower1;
entity guardTower1Construction;
entity noplant_generator;
float mainObjectiveIndex; // MBJ
// ANDREW
//entity ship_sparks_1;
entity ship_sparks_2;
entity ship_sparks_3;
entity ship_explode_1;
entity ship_explode_2;
entity ship_explode_3;
entity ship_explode_4;
entity ship_explode_5;
entity ship_explode_6;
entity ship_explode_final;
entity ship_smoke;
entity ship_blowout;
entity ship_light;
entity ship_fire1;
entity ship_fire2;
entity endCameraA;
entity endCameraB;
// Bot Functions
void OnSpawnCaptured( string actionName );
void OnSpawnLiberated( string actionName );
void OnCarryableItemStolen( string actionName );
void OnCarryableItemReturned( string actionName );
void DelayedBotSpawnThread();
void DelayedRearSpawnThread();
cvar debug_script;
}
mapObject_Base Quarry_MapScript() {
return new mapObject_Quarry;
}
void mapObject_Quarry::preinit() {
}
void mapObject_Quarry::InitObjectives() {
gameRules.setWinningTeam( gdfTeam );
// Modified GDF Respawn Time (added 10 seconds) MBJ
gdfTeam.SetRespawnWait( 30 );
stroggTeam.SetRespawnWait( 20 );
gdfTeam.InitRespawnTimeChange();
stroggTeam.InitRespawnTimeChange();
CreateRespawnTimeThread( stroggTeam );
//
// Set up the spawn points
//
quarryworks_strogg_spawn = worldspawn.getEntityKey( "script_quarryworks_strogg_spawn" );
warehouse_gdf_spawn = worldspawn.getEntityKey( "script_warehouse_spawn" );
railyard_capturable_spawn = worldspawn.getEntityKey( "script_railyard_capturable_spawn" );
gdf_main_base = worldspawn.getEntityKey( "script_gdf_base_spawnmaster" );
strogg_main_base = worldspawn.getEntityKey( "script_strogg_base_spawnmaster" );
quarryworks_strogg_spawn.setGameTeam( $null_entity );
quarryworks_strogg_spawn.vSetActive( false );
warehouse_gdf_spawn.setGameTeam( gdfTeam );
warehouse_gdf_spawn.vSetActive( true );
railyard_capturable_spawn.setGameTeam( $null_entity );
railyard_capturable_spawn.vSetActive( true );
//
// Set up the territories
//
gdfBaseTerritory = worldspawn.getEntityKey( "script_gdf_base_territory" );
warehouseTerritory = worldspawn.getEntityKey( "script_warehouse_territory" );
quarryworksTerritory = worldspawn.getEntityKey( "script_quarry_territory" );
gateTerritory = worldspawn.getEntityKey( "script_gate_territory" );
stroggBaseTerritory = worldspawn.getEntityKey( "script_strogg_base_territory" );
gdfBaseTerritory.setActive( false );
warehouseTerritory.setActive( false );
quarryworksTerritory.setActive( true );
gateTerritory.setActive( false );
stroggBaseTerritory.setActive( true );
//
// Set up the objectives
//
objective1Arrow1 = worldspawn.getEntityKey( "script_obj1_arrow1" );
objective1Arrow2 = worldspawn.getEntityKey( "script_obj1_arrow2" );
objective2Arrow1 = worldspawn.getEntityKey( "script_obj2_arrow1" );
objective2Arrow2 = worldspawn.getEntityKey( "script_obj2_arrow2" );
objective1Marker = worldspawn.getEntityKey( "script_obj1_marker" );
objective2Marker = worldspawn.getEntityKey( "script_obj2_marker" );
objective1Arrow1.setGameTeam( gdfTeam );
objective1Arrow2.setGameTeam( gdfTeam );
objective2Arrow1.setGameTeam( gdfTeam );
objective2Arrow2.setGameTeam( gdfTeam );
objective1Arrow1.vStartObjective();
objective1Arrow2.vStartObjective();
objective1Marker.vStartObjective();
objective2Marker.vStartObjective();
guardTower1 = worldspawn.getEntityKey( "script_guard_tower_1_object" );
guardTower1Construction = worldspawn.getEntityKey( "script_guard_tower_1" );
carryable1 = worldspawn.getEntityKey( "script_carryable_item_caller_1" );
carryable2 = worldspawn.getEntityKey( "script_carryable_item_caller_2" );
carryable3 = worldspawn.getEntityKey( "script_carryable_item_caller_3" );
// ANDREW
//ship_sparks_1 = worldspawn.getEntityKey( "script_ship_sparks_1" );
ship_sparks_2 = worldspawn.getEntityKey( "script_ship_sparks_2" );
ship_sparks_3 = worldspawn.getEntityKey( "script_ship_sparks_3" );
ship_explode_1 = worldspawn.getEntityKey( "script_ship_explode_1" );
ship_explode_2 = worldspawn.getEntityKey( "script_ship_explode_2" );
ship_explode_3 = worldspawn.getEntityKey( "script_ship_explode_3" );
ship_explode_4 = worldspawn.getEntityKey( "script_ship_explode_4" );
ship_explode_5 = worldspawn.getEntityKey( "script_ship_explode_5" );
ship_explode_6 = worldspawn.getEntityKey( "script_ship_explode_6" );
ship_explode_final = worldspawn.getEntityKey( "script_ship_explode_final" );
ship_smoke = worldspawn.getEntityKey( "script_ship_smoke" );
ship_blowout = worldspawn.getEntityKey( "script_ship_blowout" );
ship_light = worldspawn.getEntityKey( "script_ship_light" );
ship_fire1 = worldspawn.getEntityKey( "script_ship_fire1" );
ship_fire2 = worldspawn.getEntityKey( "script_ship_fire2" );
endCameraA = worldspawn.getEntityKey( "script_placement_camera_a" );
endCameraB = worldspawn.getEntityKey( "script_placement_camera_b" );
finalObjectiveTrigger = worldspawn.getEntityKey( "script_final_objective_trigger" );
jammer = worldspawn.getEntityKey( "script_jammer" ); // MBJ
noplant_generator = worldspawn.getEntityKey( "script_noplant_generator" );
// MBJ ADDED BELOW
jammerEffectsIdle = worldspawn.getEntityKey( "script_jammer_effects_idle" );
jammerEffectsShutdown = worldspawn.getEntityKey( "script_jammer_effects_shutdown" );
generatorDestroyed = worldspawn.getEntityKey( "script_generator_destroyed" );
CreateDeployTasks();
generatorDestroyed.hide();
generatorDestroyed.forceDisableClip();
// MBJ ADDED ABOVE
mainObjectiveIndex = OBJECTIVE_QUARRY_DESTROY_JAMMER;
objManager.setNextObjective( gdfTeam, mainObjectiveIndex );
objManager.setNextObjective( stroggTeam, mainObjectiveIndex );
gameRules.setEndGameCamera( endCameraB );
thread StartFirstObjective();
guardTower1Built = false;
}
// Added by MBJ
void mapObject_Quarry::StartFirstObjective() {
sys.wait( 5.f );
// Set up Bots for first objective
objManager.setAttackingTeam( STROGG );
objManager.setPrimaryTeamAction( GDF, "obj_strogg_jammer" );
objManager.setPrimaryTeamAction( STROGG, "obj_strogg_jammer" );
objManager.setBotCriticalClass( GDF, ENGINEER );
objManager.setBotCriticalClass( STROGG, SOLDIER );
thread DelayedBotSpawnThread();
objManager.setBotSightDist( 3000.0f );
objManager.setTeamUseRearSpawn( GDF, false );
gdfTeam.setTeamRearSpawn( gdf_main_base );
objManager.setTeamUseRearSpawnPercentage( GDF, 25 );
objManager.activateBotActionGroup( QUARRY_STROGG_DESTROY_JAMMER );
objManager.activateBotActionGroup( QUARRY_STROGG_SUPPORT_JAMMER );
objManager.activateBotActionGroup( QUARRY_STROGG_DEPLOY_JAMMER );
objManager.activateBotActionGroup( QUARRY_GDF_DEFEND_JAMMER );
objManager.activateBotActionGroup( QUARRY_GDF_DEPLOY_JAMMER );
objManager.activateBotActionGroup( QUARRY_STROGG_FORWARDSPAWN_1 );
objManager.activateBotActionGroup( QUARRY_STROGG_ATTACK_FORWARDSPAWN_1 );
objManager.activateBotActionGroup( QUARRY_GDF_DEFEND_FORWARDSPAWN_1 );
objManager.SetObjectiveEntity( jammer, mainObjectiveIndex );
jammer.vCreateMission();
CreateInitialTimedMission( jammer );
thread DelayedRearSpawnThread();
}
void mapObject_Quarry::DelayedBotSpawnThread() {
sys.wait( 10.0f );
objManager.setTeamNeededClass( GDF, MEDIC, NOCLASS, 2, false, true );
objManager.setTeamNeededClass( GDF, ENGINEER, NOCLASS, 2, true, true );
objManager.setTeamNeededClass( STROGG, FIELDOPS, NOCLASS, 2, false, true );
objManager.setTeamNeededClass( STROGG, SOLDIER, NOCLASS, 3, true, true );
}
void mapObject_Quarry::DelayedRearSpawnThread() {
sys.wait( 30.0f );
objManager.setTeamUseRearSpawn( GDF, true );
}
void mapObject_Quarry::CompleteObjective( float index, entity p ) {
if ( index == OBJECTIVE_QUARRY_DESTROY_JAMMER ) {
OnJammerDestroyed();
}
if ( index == OBJECTIVE_QUARRY_DELIVER_PODS ) {
OnPodsDelivered();
}
}
handle mapObject_Quarry::GetObjectiveMessage( float index ) {
if ( index == OBJECTIVE_QUARRY_DESTROY_JAMMER ) {
return sys.localizeString( "maps/quarry/obj_destroyed_jammer" );
}
if ( index == OBJECTIVE_QUARRY_DELIVER_PODS ) {
return sys.localizeString( "maps/quarry/obj_constructed_relay" );
}
return g_locStr_BadObjective;
}
void mapObject_Quarry::OnConstructionComplete( entity obj ) {
if ( obj == guardTower1Construction ) {
OnGuardTower1Built();
}
}
void mapObject_Quarry::OnDestructionComplete( entity obj ) {
if ( obj == guardTower1Construction ) {
OnGuardTower1Destroyed();
}
}
void mapObject_Quarry::OnGuardTower1Built() {
guardTower1Built = true;
guardTower1Construction.vCompleteMission();
objManager.deactivateBotActionGroup( QUARRY_GDF_CONSTRUCT_TOWER );
if ( mainObjectiveIndex == OBJECTIVE_QUARRY_DELIVER_PODS ) {
guardTower1.vCreateMission();
objManager.activateBotActionGroup( QUARRY_STROGG_DESTROY_TOWER );
}
}
void mapObject_Quarry::OnGuardTower1Destroyed() {
guardTower1Built = false;
guardTower1.vCompleteMission();
objManager.deactivateBotActionGroup( QUARRY_STROGG_DESTROY_TOWER );
if ( mainObjectiveIndex == OBJECTIVE_QUARRY_DELIVER_PODS ) {
guardTower1Construction.vCreateMission();
objManager.activateBotActionGroup( QUARRY_GDF_CONSTRUCT_TOWER );
}
}
void mapObject_Quarry::JammerDestroyThread() {
generatorDestroyed.show();
sys.wait( 0.5f );
generatorDestroyed.forceEnableClip();
}
void mapObject_Quarry::OnJammerDestroyed() {
objManager.SetObjectiveEntity( $null_entity, -1 );
mainObjectiveIndex = OBJECTIVE_QUARRY_DELIVER_PODS;
objManager.setNextObjective( gdfTeam, mainObjectiveIndex ); // MBJ
objManager.setNextObjective( stroggTeam, mainObjectiveIndex ); // MBJ
jammer.vCompleteMission(); // MBJ
StopTimedMission(); // MBJ
// MBJ ADDED BELOW
thread JammerDestroyThread();
noplant_generator.remove();
jammerEffectsIdle.remove();
jammerEffectsShutdown.vTriggerParticleEffect( 1 );
// MBJ ADDED ABOVE
quarryworksTerritory.setGameTeam( stroggTeam );
quarryworks_strogg_spawn.setGameTeam( stroggTeam );
quarryworks_strogg_spawn.vSetActive( true );
railyard_capturable_spawn.vSetActive( false );
railyard_capturable_spawn.setGameTeam( stroggTeam );
warehouse_gdf_spawn.setGameTeam( $null_entity );
warehouse_gdf_spawn.vSetActive( false );
gdfBaseTerritory.setActive( true );
warehouseTerritory.setActive( true );
quarryworksTerritory.setActive( false );
gateTerritory.setActive( true );
stroggBaseTerritory.setActive( false );
if ( !guardTower1Built ) {
guardTower1Construction.vCreateMission();
}
if ( guardTower1Built ) {
guardTower1.vCreateMission();
}
objective1Arrow1.vFinishObjective();
objective1Arrow2.vFinishObjective();
objective1Marker.vFinishObjective();
objective2Arrow1.vStartObjective();
objective2Arrow2.vStartObjective();
// Set up bots for end
objManager.setBotCriticalClass( GDF, ENGINEER );
objManager.setBotCriticalClass( STROGG, FIELDOPS );
objManager.setTeamNeededClass( GDF, ENGINEER, NOCLASS, 3, false, true );
objManager.setTeamNeededClass( STROGG, FIELDOPS, NOCLASS, 3, true, true );
objManager.setBotSightDist( 3000.0f );
objManager.setTeamUseRearSpawn( GDF, false );
objManager.setTeamUseRearSpawn( STROGG, true );
stroggTeam.setTeamRearSpawn( strogg_main_base );
objManager.setTeamUseRearSpawnPercentage( STROGG, 30 );
objManager.setBotTeamRetreatTime( GDF, 10 );
// Kill the previous bot action groups
objManager.killBotActionGroup( QUARRY_STROGG_DESTROY_JAMMER );
objManager.killBotActionGroup( QUARRY_STROGG_SUPPORT_JAMMER );
objManager.killBotActionGroup( QUARRY_STROGG_DEPLOY_JAMMER );
objManager.killBotActionGroup( QUARRY_GDF_DEFEND_JAMMER );
objManager.killBotActionGroup( QUARRY_GDF_DEPLOY_JAMMER );
objManager.killBotActionGroup( QUARRY_STROGG_FORWARDSPAWN_1 );
objManager.killBotActionGroup( QUARRY_GDF_ATTACK_FORWARDSPAWN_1 );
objManager.killBotActionGroup( QUARRY_STROGG_DEFEND_FORWARDSPAWN_1 );
objManager.killBotActionGroup( QUARRY_STROGG_ATTACK_FORWARDSPAWN_1 );
objManager.killBotActionGroup( QUARRY_GDF_DEFEND_FORWARDSPAWN_1 );
// Turn on the final bot action groups
objManager.activateBotActionGroup( QUARRY_STROGG_DEPLOY_POD );
objManager.activateBotActionGroup( QUARRY_GDF_DEFEND_BASE );
objManager.activateBotActionGroup( QUARRY_STROGG_ATTACK_GDF );
objManager.activateBotActionGroup( QUARRY_GDF_DEPLOY_BASE );
objManager.activateBotActionGroup( QUARRY_STROGG_FINAL_OBJECTIVE );
if ( !guardTower1Built ) {
objManager.activateBotActionGroup( QUARRY_GDF_CONSTRUCT_TOWER );
} else {
objManager.activateBotActionGroup( QUARRY_STROGG_DESTROY_TOWER );
}
thread DeliverPodThread();
stroggTeam.SetRespawnWait( 20 );
ResetRespawnTimeThread();
}
// ANDREW
void mapObject_Quarry::ShipExplodeThread() {
ship_light.vTriggerParticleEffect( 1 );
sys.wait( 2.5f );
//ship_sparks_1.vTriggerParticleEffect( 1 );
sys.wait( 2.0f );
ship_sparks_3.vTriggerParticleEffect( 1 );
sys.wait( 0.6f );
ship_sparks_2.vTriggerParticleEffect( 1 );
ship_explode_1.vTriggerParticleEffect( 1 );
sys.wait( 0.2f );
ship_sparks_3.vTriggerParticleEffect( 1 );
sys.wait( 1.4f );
//ship_sparks_1.vTriggerParticleEffect( 1 );
sys.wait( 1.1f );
ship_explode_2.vTriggerParticleEffect( 1 );
ship_explode_3.vTriggerParticleEffect( 1 );
sys.wait( 1.3f );
ship_explode_4.vTriggerParticleEffect( 1 );
sys.wait( 0.8f );
ship_blowout.vTriggerParticleEffect( 1 );
ship_explode_5.vTriggerParticleEffect( 1 );
sys.wait( 0.6f );
ship_explode_6.vTriggerParticleEffect( 1 );
sys.wait( 0.5f );
ship_smoke.vTriggerParticleEffect( 1 );
ship_explode_final.vTriggerParticleEffect( 1 );
}
void mapObject_Quarry::OnPodsDelivered() {
StopTimedMission();
finalObjectiveTrigger.vCompleteMission();
objective2Arrow1.vFinishObjective();
objective2Arrow2.vFinishObjective();
objective2Marker.vFinishObjective();
// MBJ
objManager.SetObjectiveEntity( $null_entity, -1 );
objManager.PlaySound( worldspawn.getKey( "snd_stroggwin_strogg" ), stroggTeam );
objManager.PlaySound( worldspawn.getKey( "snd_stroggwin_gdf" ), gdfTeam );
//ANDREW
thread ShipExplodeThread();
ship_fire1.remove();
ship_fire2.remove();
gameRules.setWinningTeam( stroggTeam );
gameRules.setEndGameCamera( endCameraA );
gameRules.endGame();
}
void mapObject_Quarry::DeliverPodThread() {
sys.wait( 5.0f );
//sys.wait( 1.0f ); // Xian
objManager.PlaySound( worldspawn.getKey( "snd_autodestruct_start_strogg" ), stroggTeam );
objManager.PlaySound( worldspawn.getKey( "snd_autodestruct_start_gdf" ), gdfTeam );
// wait before triggering the carryables to come flying in (staggered to look cooler)
sys.wait( 38.0f ); // ADAM ADJUSTMENTS
//sys.wait( 2.0f ); // Xian adjustments for testing
objManager.SetObjectiveEntity( finalObjectiveTrigger, mainObjectiveIndex );
finalObjectiveTrigger.vCreateMission();
CreateInitialTimedMission( finalObjectiveTrigger );
carryable1.vOnDeploy();
objManager.activateBotActionGroup( QUARRY_STROGG_ATTACK_BARRACKS_POD ); // Xian
objManager.activateBotActionGroup( QUARRY_GDF_DEFEND_BARRACKS_POD ); // Cell 1
objManager.activateBotActionGroup( QUARRY_CELL_OBJ_1 ); // Cell 1 Take Action
sys.wait( 30.0f );
//sys.wait( 2.0f );
carryable2.vOnDeploy();
objManager.activateBotActionGroup( QUARRY_STROGG_ATTACK_WAREHOUSE_POD ); // Cell 2
objManager.activateBotActionGroup( QUARRY_GDF_DEFEND_WAREHOUSE_POD ); // Cell 2
objManager.activateBotActionGroup( QUARRY_CELL_OBJ_2 ); // Cell 2 Take Action
sys.wait( 30.0f );
//sys.wait( 2.0f );
carryable3.vOnDeploy();
objManager.activateBotActionGroup( QUARRY_STROGG_ATTACK_OFFICE_POD ); // Cell 3
objManager.activateBotActionGroup( QUARRY_GDF_DEFEND_OFFICE_POD ); // Cell 3
objManager.activateBotActionGroup( QUARRY_CELL_OBJ_3 ); // Cell 3 Take Action
}
// Added by MBJ
void mapObject_Quarry::OnTimeLimitHit() {
FinishTimedMission();
objManager.SetObjectiveEntity( $null_entity, -1 );
objManager.PlaySound( worldspawn.getKey( "snd_strogglose_strogg" ), stroggTeam );
objManager.PlaySound( worldspawn.getKey( "snd_strogglose_gdf" ), gdfTeam );
}
// MBJ - Bot Forward Spawn Actions
void mapObject_Quarry::OnSpawnCaptured( string actionName ) {
if ( actionName == "strogg_forwardspawn_1" ) {
objManager.activateBotActionGroup( QUARRY_GDF_ATTACK_FORWARDSPAWN_1 );
objManager.activateBotActionGroup( QUARRY_STROGG_DEFEND_FORWARDSPAWN_1 );
objManager.deactivateBotActionGroup( QUARRY_STROGG_ATTACK_FORWARDSPAWN_1 );
objManager.deactivateBotActionGroup( QUARRY_GDF_DEFEND_FORWARDSPAWN_1 );
stroggTeam.setTeamRearSpawn( strogg_main_base );
objManager.setTeamUseRearSpawn( STROGG, true );
}
}
void mapObject_Quarry::OnSpawnLiberated( string actionName ) {
if ( actionName == "strogg_forwardspawn_1" ) {
objManager.deactivateBotActionGroup( QUARRY_GDF_ATTACK_FORWARDSPAWN_1 );
objManager.deactivateBotActionGroup( QUARRY_STROGG_DEFEND_FORWARDSPAWN_1 );
objManager.activateBotActionGroup( QUARRY_STROGG_ATTACK_FORWARDSPAWN_1 );
objManager.activateBotActionGroup( QUARRY_GDF_DEFEND_FORWARDSPAWN_1 );
objManager.setTeamUseRearSpawn( STROGG, false );
}
}
// MBJ - Carryable Item Actions
void mapObject_Quarry::OnCarryableItemStolen( string actionName ) {
if( actionName == "obj_strogg_cell1" ) {
objManager.deactivateBotActionGroup( QUARRY_STROGG_ATTACK_BARRACKS_POD );
objManager.deactivateBotActionGroup( QUARRY_GDF_DEFEND_BARRACKS_POD );
}
if( actionName == "obj_strogg_cell2" ) {
objManager.deactivateBotActionGroup( QUARRY_STROGG_ATTACK_WAREHOUSE_POD );
objManager.deactivateBotActionGroup( QUARRY_GDF_DEFEND_WAREHOUSE_POD );
}
if( actionName == "obj_strogg_cell3" ) {
objManager.deactivateBotActionGroup( QUARRY_STROGG_ATTACK_OFFICE_POD );
// objManager.deactivateBotActionGroup( QUARRY_GDF_DEFEND_OFFICE_POD );
}
}
void mapObject_Quarry::OnCarryableItemReturned( string actionName ) {
if( actionName == "obj_strogg_cell1" ) {
objManager.activateBotActionGroup( QUARRY_STROGG_ATTACK_BARRACKS_POD );
objManager.activateBotActionGroup( QUARRY_GDF_DEFEND_BARRACKS_POD );
}
if( actionName == "obj_strogg_cell2" ) {
objManager.activateBotActionGroup( QUARRY_STROGG_ATTACK_WAREHOUSE_POD );
objManager.activateBotActionGroup( QUARRY_GDF_DEFEND_WAREHOUSE_POD );
}
if( actionName == "obj_strogg_cell3" ) {
objManager.activateBotActionGroup( QUARRY_STROGG_ATTACK_OFFICE_POD );
objManager.activateBotActionGroup( QUARRY_GDF_DEFEND_OFFICE_POD );
}
}
entity mapObject_Quarry::GetSpectateEntity() {
if ( jammer != $null_entity ) {
return jammer.vGetSpectateEntity();
}
entity worldspawn = sys.getEntity( "worldspawn" );
// this is a bit of a hack
float count = worldspawn.entitiesOfCollection( "carryables" );
float i;
entity closest;
float closestDist;
vector targetOrigin = ( finalObjectiveTrigger.getAbsMins() + finalObjectiveTrigger.getAbsMaxs() ) * 0.5f;
for ( i = 0; i < count; i++ ) {
entity ent = worldspawn.getBoundsCacheEntity( i );
entity specEnt = ent.vGetSpectateEntity();
if ( specEnt != $null_entity ) {
float distance = sys.vecLength( specEnt.getWorldOrigin() - targetOrigin );
if ( distance < closestDist || closest == $null_entity ) {
closest = specEnt;
closestDist = distance;
}
}
}
return closest;
}