 |
Black Ops 3 Source Code Explorer
0.1
An script explorer for Black Ops 3 by ZeRoY
|
Go to the documentation of this file. 1 #using scripts\codescripts\struct;
3 #using scripts\mp\_util;
4 #using scripts\mp\gametypes\_battlechatter;
5 #using scripts\mp\gametypes\_globallogic_audio;
6 #using scripts\mp\killstreaks\_airsupport;
7 #using scripts\mp\killstreaks\_helicopter;
8 #using scripts\mp\killstreaks\_killstreak_bundles;
9 #using scripts\mp\killstreaks\_killstreak_detect;
10 #using scripts\mp\killstreaks\_killstreak_hacking;
11 #using scripts\mp\killstreaks\_killstreakrules;
12 #using scripts\mp\killstreaks\_killstreaks;
13 #using scripts\mp\killstreaks\_satellite;
14 #using scripts\mp\teams\_teams;
16 #using scripts\shared\callbacks_shared;
17 #using scripts\shared\challenges_shared;
18 #using scripts\shared\clientfield_shared;
19 #using scripts\shared\damagefeedback_shared;
20 #using scripts\shared\hostmigration_shared;
21 #using scripts\shared\killstreaks_shared;
22 #using scripts\shared\math_shared;
23 #using scripts\shared\scoreevents_shared;
24 #using scripts\shared\system_shared;
25 #using scripts\shared\tweakables_shared;
26 #using scripts\shared\util_shared;
27 #using scripts\shared\weapons\_heatseekingmissile;
28 #using scripts\shared\weapons\_weaponobjects;
30 #insert scripts\mp\_hacker_tool.gsh;
31 #insert scripts\mp\killstreaks\_killstreaks.gsh;
32 #insert scripts\shared\shared.gsh;
33 #insert scripts\shared\version.gsh;
35 #define COUNTER_UAV_NAME "counteruav"
36 #define COUNTER_UAV_VEHICLE_NAME "veh_counteruav_mp"
37 #define COUNTER_UAV_KILLSTREAK_NAME "killstreak_counteruav"
39 #namespace counteruav;
41 #precache( "string", "KILLSTREAK_COUNTERUAV_INBOUND" );
42 #precache( "string", "KILLSTREAK_COUNTERUAV_NOT_AVAILABLE" );
43 #precache( "string", "KILLSTREAK_EARNED_COUNTERUAV" );
44 #precache( "string", "KILLSTREAK_DESTROYED_COUNTERUAV" );
45 #precache( "string", "KILLSTREAK_COUNTERUAV_HACKED" );
46 #precache( "string", "mpl_killstreak_radar" );
51 level.activeCounterUAVs = [];
53 level.counter_uav_position_index = [];
56 if ( level.teamBased )
58 foreach( team
in level.teams )
60 level.activeCounterUAVs[ team ] = 0;
61 level.counter_uav_position_index[ team ] = 0;
68 level.activeCounterUAVs = [];
71 level.activePlayerCounterUAVs = [];
73 level.counter_uav_entities = [];
79 killstreaks::register_dialog(
COUNTER_UAV_NAME,
"mpl_killstreak_radar",
"counterUavDialogBundle",
"counterUavPilotDialogBundle",
"friendlyCounterUav",
"enemyCounterUav",
"enemyCounterUavMultiple",
"friendlyCounterUavHacked",
"enemyCounterUavHacked",
"requestCounterUav",
"threatCounterUav" );
93 self.entNum =
self getEntityNumber();
95 if( !level.teamBased )
97 level.activeCounterUAVs[
self.entNum ] = 0;
98 level.counter_uav_position_index[
self.entNum ] = 0;
102 level.activePlayerCounterUAVs[
self.entNum ] = 0;
121 for( i = 0; i < count; i++ )
124 VAL( level.cuav_map_x_offset, 0 ),
125 VAL( level.cuav_map_y_offset, 0 ),
141 level waittill(
"counter_uav_updated" );
145 while( level.activeCounterUAVs[ teamOrEntNum ] > 0 )
147 if( activeCount == 0 )
149 activeCount = level.activeCounterUAVs[ teamOrEntNum ];
152 currentIndex = level.counter_uav_position_index[ teamOrEntNum ];
153 newIndex = currentIndex;
155 while( newIndex == currentIndex )
160 destination = level.counter_uav_positions[ newIndex ];
161 level.counter_uav_position_index[ teamOrEntNum ] = newIndex;
163 level notify(
"counter_uav_move_" + teamOrEntNum );
171 basePosition = level.counter_uav_positions[ level.counter_uav_position_index[ teamOrEntNum ] ];
172 offset = level.counter_uav_offsets[
self.cuav_offset_index ];
174 return basePosition + offset;
187 available_offsets = [];
188 for( i = 0; i < level.counter_uav_offsets.size; i++ )
189 available_offsets[ i ] =
true;
192 foreach( cuav
in level.counter_uav_entities )
194 if ( isdefined( cuav ) )
196 available_offsets[ cuav.cuav_offset_index ] =
false;
201 for( i = 0; i < available_offsets.size; i++ )
203 if ( available_offsets[ i ] )
207 /#
util::warning(
"Max counter-uav available offset slots reached. Using slot 0 for now.");#/
214 for( i = level.counter_uav_entities.size; i >= 0; i-- )
216 if ( !isdefined( level.counter_uav_entities[ i ] ) )
218 ArrayRemoveIndex( level.counter_uav_entities, i );
227 for( col = 0; col < depth; col++ )
230 startingIndex = ( itemCount - 1 );
232 for( i = 0; i < itemCount; i++ )
239 y = ( i * offset_y );
240 total_y = offset_y * startingIndex;
241 y -= ( total_y / 2 );
244 offsets[ startingIndex + i ] = startOffset + ( x, y, 0 );
259 if( killstreak_id == -1 )
265 if( !isdefined( counterUav ) )
273 counterUav.killstreak_id = killstreak_id;
280 counterUav SetCanDamage(
true );
322 cuav SetDrawInfrared(
true );
324 ARRAY_ADD( level.counter_uav_entities, cuav );
340 cuav SetVisibleToAll();
342 cuav thread teams::WaitUntilTeamChangeSingleton( owner,
"CUAV_watch_team_change", &
OnTeamChange,
self.entNum,
"death",
"leaving",
"crashing" );
349 self endon(
"death" );
350 self endon(
"leaving" );
355 level
util::waittill_any(
"counter_uav_move_" +
self.team,
"counter_uav_move_" +
self.ownerEntNum );
361 self endon(
"death" );
362 self endon(
"leaving" );
363 level endon(
"counter_uav_move_" +
self.team );
365 destination = ( 0, 0, 0 );
367 if( level.teamBased )
376 lookAngles = VectorToAngles( destination -
self.origin );
387 self SetVehGoalPos( destination,
true,
false );
392 self endon(
"death" );
395 if ( isdefined(
self ) )
397 PlayFXOnTag(
name,
self,
"tag_origin" );
403 self.is_damaged =
true;
405 if( isdefined( params.fxLowHealth ) )
406 PlayFXOnTag( params.fxLowHealth,
self,
"tag_origin" );
428 Target_Remove(
self );
439 DestroyCounterUav( attacker, GetWeapon(
"emp" ) );
444 if (
self.leaving !==
true )
449 attacker =
self [[ level.figure_out_attacker ]]( attacker );
450 if( isdefined( attacker ) && ( !isdefined(
self.owner ) ||
self.owner
util::IsEnemyPlayer( attacker ) ) )
454 LUINotifyEvent( &
"player_callout", 2, &
"KILLSTREAK_DESTROYED_COUNTERUAV", attacker.entnum );
458 self PlaySound(
"evt_helicopter_midair_exp" );
461 if ( Target_IsTarget(
self ) )
463 Target_Remove(
self );
471 self notify(
"crashing" );
474 if( isdefined( params.ksExplosionFX ) && isdefined(
self ) )
475 self thread
PlayFx( params.ksExplosionFX );
479 if ( isdefined(
self ) )
481 self setModel(
"tag_origin" );
486 if ( isdefined(
self ) )
488 self notify(
"delete" );
495 if( level.teamBased )
497 foreach( team
in level.teams )
499 if( team ==
self.team )
513 foreach( player
in enemies )
528 return ( level.activeCounterUAVs[
self.entNum ] > 0 );
533 return ( level.activeCounterUAVs[ team ] > 0 );
538 return ( level.activeCounterUAVs[ team_or_entnum ] > 0 );
544 if ( level.teamBased )
546 level.activeCounterUAVs[
self.team ]++;
548 foreach( team
in level.teams )
550 if ( team ==
self.team )
563 level.activeCounterUAVs[
self.ownerEntnum ]++;
565 keys = getarraykeys( level.activeCounterUAVs );
566 for ( i = 0; i < keys.size; i++ )
568 if( keys[i] ==
self.ownerEntNum )
581 level.activePlayerCounterUAVs[
self.ownerEntNum ]++;
583 level notify(
"counter_uav_updated" );
595 if ( level.teamBased )
597 level.activeCounterUAVs[
self.team ]--;
598 assert( level.activeCounterUAVs[
self.team ] >= 0 );
599 if ( level.activeCounterUAVs[
self.team ] < 0 )
601 level.activeCounterUAVs[
self.team ] = 0;
604 else if ( isdefined(
self.owner ) )
606 assert( isdefined(
self.ownerEntNum ) );
607 if ( !isdefined(
self.ownerEntNum ) )
609 self.ownerEntNum =
self.owner getEntityNumber();
612 level.activeCounterUAVs[
self.ownerEntNum ]--;
614 assert( level.activeCounterUAVs[
self.ownerEntNum ] >= 0 );
615 if ( level.activeCounterUAVs[
self.ownerEntNum ] < 0 )
617 level.activeCounterUAVs[
self.ownerEntNum ] = 0;
621 level.activePlayerCounterUAVs[
self.ownerEntNum ]--;
623 level notify (
"counter_uav_updated" );
631 level waittill(
"counter_uav_updated" );
633 foreach( player
in level.players )
649 foreach( counteruav
in level.counter_uav_entities )
651 if ( isdefined( counteruav ) )
function processScoreEvent(event, player, victim, weapon)
function SpawnCounterUAV(owner, killstreak_id)
#define COUNTER_UAV_MODEL_SCALE
function GetCurrentPosition(teamOrEntNum)
function EnemyCounterUAVActive()
function HackedPreFunction(hacker)
function RemoveActiveCounterUAV()
#define COUNTER_UAV_MAP_PERCENTAGE
#define COUNTER_UAV_LOW_HEALTH
function DestroyCounterUavByEMP(attacker, arg)
function WatchCounterUAVs()
function OnPlayerJoinedTeam()
function WaitForTimeout(killstreak, duration, callback, endCondition1, endCondition2, endCondition3)
#define COUNTER_UAV_LOCATION_DURATION_MAX
function set_to_player(str_field_name, n_value)
#define COUNTER_UAV_DURATION_CHECK
function MissileTarget_ProximityDetonateIncomingMissile(endon1, endon2, allowDirectDamage)
function getMinimumFlyHeight()
function blockedSatellite()
function on_joined_team()
function CounterUAVMove()
function OnTeamChange(entNum, event)
function play_killstreak_start_dialog(killstreakType, team, killstreakId)
#define VAL(__var, __default)
#define COUNTER_UAV_ROTATION_ACCELERATION_PERCENTAGE
function play_pilot_dialog_on_owner(dialogKey, killstreakType, killstreakId)
function getTweakableValue(category, name)
function addFlySwatterStat(weapon, aircraft)
function HasActiveCounterUAV()
function MonitorDamage(killstreak_ref, max_health, destroyed_callback, low_health, low_health_callback, emp_damage, emp_callback, allow_bullet_damage)
function IsEnemyPlayer(player)
function HideToSameTeam()
#define COUNTER_UAV_LOCATION_DURATION_MIN
function MaintainCouterUavEntities()
function OnPlayerConnect()
function DeleteCounterUAV()
function on_spawned(func, obj)
function destroyedAircraft(attacker, weapon, playerControlled)
#define COUNTER_UAV_NAME
function OnLowHealth(attacker, weapon)
function play_destroyed_dialog_on_owner(killstreakType, killstreakId)
#define COUNTER_UAV_VEHICLE_NAME
#define COUNTER_UAV_ACCELERATION_PERCENTAGE
function isKillstreakAllowed(hardpointType, team)
function HideAllCounterUAVsToSameTeam()
function HasIndexActiveCounterUAV(team_or_entnum)
function HasSatellite(team_or_entnum)
function ResetActiveCounterUAV()
#define COUNTER_UAV_SPEED
function waittill_any(str_notify1, str_notify2, str_notify3, str_notify4, str_notify5)
function MovementManagerThink(teamOrEntNum)
#define ARRAY_ADD(__array, __item)
#define COUNTER_UAV_LOOP_SOUND
function killstreakTargetSet(killstreakEntity, offset)
#define COUNTER_UAV_DECELERATION_PERCENTAGE
function AssignFirstAvailableOffsetIndex()
function BuildOffsetList(startOffset, depth, offset_x, offset_y)
function register_dialog(killstreakType, informDialog, taacomDialogBundleKey, pilotDialogArrayKey, startDialogKey, enemyStartDialogKey, enemyStartMultipleDialogKey, hackedDialogKey, hackedStartDialogKey, requestDialogKey, threatDialogKey, isInventory)
function DestroyCounterUAV(attacker, weapon)
function GetEnemyPlayers()
#define COUNTER_UAV_ROTATION_DURATION
function register_strings(killstreakType, receivedText, notUsableText, inboundText, inboundNearPlayerText, hackedText, utilizesAirspace=true, isInventory=false)
function killstreakStop(hardpointType, team, id)
#define COUNTER_UAV_HEALTH
function AddActiveCounterUAV()
#define COUNTER_UAV_GROUP_OFFSET
#define COUNTER_UAV_KILLSTREAK_NAME
function TeamHasActiveCounterUAV(team)
function ConfigureTeamPost(owner, isHacked)
function killstreakStart(hardpointType, team, hacked, displayTeamMessage)
#define COUNTER_UAV_POSITION_Z_OFFSET
function set(str_field_name, n_value)
#define COUNTER_UAV_POSITION_COUNT
function WaitForTimecheck(duration, callback, endCondition1, endCondition2, endCondition3)
function GenerateRandomPoints(count)
function GetFirstAvailableOffsetIndex()
function configure_team(killstreakType, killstreakId, owner, influencerType, configureTeamPreFunction, configureTeamPostFunction, isHacked=false)
#define COUNTER_UAV_GROUP_SIZE
function GetRandomMapPoint(x_offset, y_offset, map_x_percentage, map_y_percentage)
function WaitTillEndOnThreaded(waitCondition, callback, endCondition1, endCondition2, endCondition3)
function player_killstreak_threat_tracking(killstreakType)
function OnPlayerSpawned()
function ActivateCounterUAV()
function enable_hacking(killstreakName, preHackFunction, postHackFunction)
function WaitTillEMP(onEmpdCallback, arg)
function Leave(duration)
function ListenForMove()
#define COUNTER_UAV_DURATION_MS