 |
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\shared\callbacks_shared;
4 #using scripts\shared\clientfield_shared;
5 #using scripts\shared\flagsys_shared;
6 #using scripts\shared\hackable;
7 #using scripts\shared\turret_shared;
8 #using scripts\shared\vehicle_shared;
9 #using scripts\shared\vehicles\_deploy_turret;
10 #using scripts\shared\util_shared;
12 #using scripts\shared\abilities\_ability_player;
13 #using scripts\shared\abilities\_ability_power;
14 #using scripts\shared\abilities\_ability_util;
16 #insert scripts\shared\shared.gsh;
17 #insert scripts\shared\version.gsh;
18 #insert scripts\shared\abilities\_ability_util.gsh;
20 #define GADGET_FLAG "gadget_turret_deploy_on"
21 #define GADGET_READY_FLAG "gadget_turret_deploy_ready"
22 #define GADGET_RECOVER_FLAG "gadget_turret_recover_ready"
24 #using scripts\shared\system_shared;
26 #define TURRET_EXPLODE "weapon/fx_betty_exp"
27 #define TURRET_SPAWN "vehicle/fx_elec_teleport_escort_drone"
29 #precache( "fx", TURRET_SPAWN );
30 #precache( "fx", TURRET_EXPLODE );
32 #precache( "triggerstring", "WEAPON_GADGET_TURRET_RECOVER_LB" );
33 #precache( "triggerstring", "WEAPON_GADGET_TURRET_RECOVER_RB" );
37 #define TURRET_MODEL "wpn_t7_sentry_gun_gadget"
38 #define TURRET_MODEL_RED "wpn_t7_sentry_gun_gadget_red"
39 #define TURRET_OFFSET (0,0,0)
42 #define TURRET_RECOVERY_DISTANCE GetDvarFloat("scr_turret_recovery_distance")
43 #define TURRET_RECOVERY_ANGLEDOT 0.7
44 #define TURRET_RECOVERY_HOLDTIME GetDvarInt( "g_useholdtime" )
45 #define TURRET_RECOVERY_PROMPT_0 &"WEAPON_GADGET_TURRET_RECOVER_RB"
46 #define TURRET_RECOVERY_PROMPT_1 &"WEAPON_GADGET_TURRET_RECOVER_LB"
47 #define TURRET_TIMEOUT_SELF_DESTRUCT GetDvarFloat("scr_turret_timeout_self_destruct")
49 #define TURRET_HACK_TIMER GetDvarFloat("scr_turret_hack_timer")
50 #define TURRET_HACKER_TIME GetDvarFloat("scr_turret_hack_time")
51 #define TURRET_HACKER_COST GetDvarFloat("scr_turret_hack_power_mult")
54 #define TURRET_DRAIN_POWER_USE GetDvarFloat("scr_turret_drain_power_use")
55 #define TURRET_BURST_POWER_USE GetDvarFloat("scr_turret_burst_power_use")
56 #define TURRET_BURST_POWER_CUTOFF GetDvarFloat("scr_turret_burst_power_cutoff")
57 #define TURRET_BURST_POWER_RESUME GetDvarFloat("scr_turret_burst_power_resume")
58 #define TURRET_DROP_POWER_USE GetDvarFloat("scr_turret_drop_power_use")
59 #define TURRET_RECOVER_POWER_USE GetDvarFloat("scr_turret_recover_power_use")
61 #define TURRET_FOV_COS GetDvarFloat("scr_turret_fov_cos")
62 #define TURRET_FOV_COS_BUSY GetDvarFloat("scr_turret_fov_cos_busy")
63 #define TURRET_MAX_SIGHT_DIST_SQ (GetDvarFloat("scr_turret_max_sight_dist") * GetDvarFloat("scr_turret_max_sight_dist"))
64 #define TURRET_SIGHT_LATENCY GetDvarInt("scr_turret_sight_latency")
96 return "gadget_turret_deploy";
101 return "gadget_turret_recover";
143 #define TURRET_CARRY_DIST 30
148 carry_angles = (1,0,0);
149 carry_offset = (carry_dist,0,0);
152 self.pre_turret_weapon =
self getcurrentweapon();
158 while(
self IsSwitchingWeapons() )
168 self endon(
"gadget_turret_deploy_taken" );
172 self.turretAngles =
self.angles;
177 self.temp_turret NotSolid();
178 self CarryTurret(
self.temp_turret, carry_offset, carry_angles);
185 self.turret_placement =
self canPlayerPlaceTurret();
186 if( !IsDefined(
self.turret_placement) || !
self.turret_placement[
"result"] )
202 if (IsDefined(
self.temp_turret) )
204 self stopCarryTurret(
self.temp_turret);
206 self.temp_turret=undefined;
213 self SwitchToWeapon(
self.pre_turret_weapon);
225 origin =
self.origin;
226 forward = AnglesToForward(
self.angles );
230 to_obj = VectorNormalize( turret.origin-origin );
231 dot = VectorDot( to_obj, forward );
243 return self secondaryoffhandbuttonpressed();
244 return self fragbuttonpressed();
249 hold_start = GetTime();
258 self.turret = undefined;
264 hold_start = GetTime();
272 if( IsDefined(
self.turret_placement) &&
self.turret_placement[
"result"] )
280 self notify(
"gadget_turret_off" );
284 #define HEADICON_OFFSET (0, 0, 70)
289 turret notify(
"owner_change");
290 if (IsDefined(turret.owner))
292 old_owner = turret.owner;
293 old_owner.turret = undefined;
295 if ( IsDefined(
self.turret ) )
299 self.turret = turret;
300 if (IsDefined(turret))
303 turret SetTeam(
self.team);
304 if (IsDefined(level.setEntityHeadIcon) )
315 self endon(
"disconnect");
317 if (
self HasWeapon( level.gadgetTurretDeploy ) )
319 self TakeWeapon( level.gadgetTurretDeploy );
320 self GiveWeapon( level.gadgetTurretRecover );
323 self.turret waittill(
"death");
325 if (
self HasWeapon( level.gadgetTurretRecover ) )
327 self TakeWeapon( level.gadgetTurretRecover );
328 self GiveWeapon( level.gadgetTurretDeploy );
338 self notify(
"owner_change");
339 self endon(
"owner_change");
343 owner waittill(
"disconnect");
356 trace = bullettrace(
self.origin,
self.origin + (0,0,-2000),
false,
self );
357 if (
trace[
"fraction"] < 0.99 )
359 self.origin =
trace[
"position"];
369 self.turretOrigin =
self.turret_placement[
"origin"];
370 self.turretAngles =
self.turret_placement[
"angles"];
371 self stopCarryTurret(
self.temp_turret);
379 turret =
self.temp_turret;
381 turret DisconnectPaths();
383 self.temp_turret = undefined;
385 turret SetOwner(
self);
393 turret endon(
"death" );
396 self.turret_slot = slot;
405 turret.hackable_progress_prompt = &
"WEAPON_HACKING_TURRET";
415 self.turret.prompt_trigger SetCursorHint(
"HINT_NOICON" );
416 self.turret.prompt_trigger setInvisibleToAll();
417 self.turret.prompt_trigger SetTeamForTrigger(
self.team );
418 self.turret.prompt_trigger setVisibleToPlayer(
self );
419 self.turret.prompt_trigger UseTriggerRequireLookAt();
440 if ( IsDefined( turret ) )
450 health_factor =
self.health /
self.healthmax;
453 while( new_health < level.deploy_turret_damage_states-1 &&
454 health_factor <= level.deploy_turret_damage_amt[new_health+1] )
456 new_health = new_health+1;
459 if ( !
IS_EQUAL(
self.dt_damage_state, new_health ) )
462 self.dt_damage_state = new_health;
463 if ( new_health >= level.deploy_turret_damage_states-1 )
469 #define TURRET_DAMAGE_STATES 2
470 #define TURRET_DAMAGE_AMT_1 0.5
471 #define TURRET_DAMAGE_FX_1 "destruct/fx_dest_turret_1"
472 #define TURRET_DAMAGE_AMT_2 0.25
473 #define TURRET_DAMAGE_FX_2 "destruct/fx_dest_turret_2"
478 level.deploy_turret_damage_amt = [];
479 level.deploy_turret_damage_fx = [];
480 level.deploy_turret_damage_amt[0] = 1.0;
481 level.deploy_turret_damage_fx[0] = undefined;
486 level.deploy_turret_damage_amt[3] = 0.0;
487 level.deploy_turret_damage_fx[3] = undefined;
494 self endon(
"disconnect");
496 while( IsDefined(
self.turret) )
509 dpower = -1 * delta *
use;
511 power =
self GadgetPowerChange(
self.turret_slot, dpower );
523 self notify(
"resume_turret_power");
524 self endon(
"resume_turret_power");
525 startpower =
self GadgetPowerChange(
self.turret_slot, 0 );
526 while( IsDefined(
self) && IsDefined(
self.turret) )
528 curpower =
self GadgetPowerChange(
self.turret_slot, 0 );
529 self GadgetPowerChange(
self.turret_slot, startpower-curpower );
541 if ( IsDefined(
self.owner) )
543 self.owner.turret = undefined;
545 if ( IsDefined(
self.prompt_trigger) )
547 self.prompt_trigger
delete();
548 self.prompt_trigger=undefined;
556 PlayFx( level._effect[
"turret_explode"],
self.origin+(0,0,20) );
575 if ( isdefined( player ) && isdefined( player.team ) && ( player.team ==
"spectator" ))
581 b_can_see = SightTracePassed( v_eye,
self.origin + (0,0,30),
false,
self );
588 if ( isdefined( player ) && isdefined( player.team ))
593 if ( team ==
"free" )
599 if ( isdefined( owner ) && owner == player )
604 else if (
self.team == team )
622 self.owner notify(
"resume_turret_power" );
629 self notify(
"turret_hacked");
630 self endon(
"turret_hacked");
631 self endon(
"death" );
635 self.hacker = hacker;
640 if (hacker !=
self.owner)
642 self.prompt_trigger setInvisibleToPlayer(
self.owner );
643 self SetTeam(hacker.team);
644 if (IsDefined(level.setEntityHeadIcon) )
646 self [[level.setEntityHeadIcon]]( hacker.team,
self.owner,
HEADICON_OFFSET );
648 self.hacker = hacker;
658 self.owner notify(
"resume_turret_power" );
661 self.hacker = undefined;
662 if (IsDefined(
self.owner))
664 self.prompt_trigger setVisibleToPlayer(
self.owner );
665 self SetTeam(
self.owner.team);
666 if (IsDefined(level.setEntityHeadIcon) )
668 self [[level.setEntityHeadIcon]](
self.owner.team,
self.owner,
HEADICON_OFFSET );
function setup_turret_damage_states()
#define TURRET_DAMAGE_FX_2
function turret_precache()
#define TURRET_HACKER_TIME
function register_gadget_is_flickering_callbacks(type, flickering_func)
function lights_off(localClientNum)
function wait_and_clear_hack()
#define TURRET_TIMEOUT_SELF_DESTRUCT
function turret_hacked(hacker)
function switch_player_gadget()
function register_gadget_possession_callbacks(type, on_give, on_take)
#define TURRET_RECOVERY_PROMPT_0
function gadget_turret_deploy_on_give(slot, weapon)
function watch_player_death(owner)
#define TURRET_BURST_POWER_RESUME
function drop_to_ground()
function gadget_turret_deploy_on_connect()
function turret_update_damage()
function clear(str_flag)
#define TURRET_DAMAGE_AMT_1
function register_gadget_is_inuse_callbacks(type, inuse_func)
function gadget_turret_deploy_on(slot)
#define TURRET_SIGHT_LATENCY
function trace(from, to, target)
#define TURRET_RECOVER_POWER_USE
function turret_hack_start(hacker)
function spawn(v_origin=(0, 0, 0), v_angles=(0, 0, 0))
function get(kvp_value, kvp_key="targetname")
function register_gadget_flicker_callbacks(type, on_flicker)
function gadget_turret_deploy_off(slot)
function use(str_name, str_key="targetname", ent, b_assert=true)
#define TURRET_HACKER_COST
function watch_turret_recovery(slot)
function gadget_turret_deploy_is_inuse(slot)
function turret_delete(time, explode)
#define TURRET_RECOVERY_HOLDTIME
function get_gadget_name()
function gadget_turret_deploy_on_take(slot)
function turret_can_be_hacked(player)
#define TURRET_DAMAGE_FX_1
function wait_network_frame(n_count=1)
#define GADGET_TYPE_TURRET_DEPLOY
function gadget_turret_deploy_is_flickering(slot)
function turret_gadget_deploy_think(player, power_callback, cutoff_power, resume_power)
#define GADGET_RECOVER_FLAG
function set_player_turret(turret)
#define GADGET_READY_FLAG
#define TURRET_FOV_COS_BUSY
function register_gadget_activation_callbacks(type, turn_on, turn_off)
function get_gadget_recover_name()
function keep_power_constant()
function add_hackable_object(obj, test_callback, start_callback, fail_callback, complete_callback)
#define TURRET_DAMAGE_STATES
#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
function Spawn(parent, onDeathCallback)
function turret_owner_power_callback(turret, delta, use=TURRET_BURST_POWER_USE)
#define TURRET_CARRY_DIST
function can_recover_turret(turret)
function turret_drain_power()
#define TURRET_BURST_POWER_CUTOFF
function turret_hack_fail(hacker)
function set(str_field_name, n_value)
#define IS_EQUAL(__a, __b)
function button_pressed(slot)
#define TURRET_RECOVERY_ANGLEDOT
#define TURRET_HACK_TIMER
#define TURRET_DRAIN_POWER_USE
#define TURRET_DAMAGE_AMT_2
function gadget_turret_deploy_failed_activate()
function gadget_turret_deploy_on_flicker(slot)
function deploy_turret(slot)
#define TURRET_DROP_POWER_USE
function register_gadget_failed_activate_callback(type, failed_activate)
#define TURRET_RECOVERY_PROMPT_1
function lights_on(localClientNum, team)
#define TURRET_BURST_POWER_USE
#define TURRET_MAX_SIGHT_DIST_SQ
#define TURRET_RECOVERY_DISTANCE
#define WAIT_SERVER_FRAME