‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_zm_perk_additionalprimaryweapon.gsc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\array_shared;
4 #using scripts\shared\callbacks_shared;
5 #using scripts\shared\clientfield_shared;
6 #using scripts\shared\system_shared;
7 #using scripts\shared\util_shared;
8 #using scripts\shared\visionset_mgr_shared;
9 
10 #insert scripts\shared\shared.gsh;
11 #insert scripts\shared\version.gsh;
12 
13 #using scripts\zm\_util;
14 #using scripts\zm\_zm_perks;
15 #using scripts\zm\_zm_pers_upgrades;
16 #using scripts\zm\_zm_pers_upgrades_functions;
17 #using scripts\zm\_zm_pers_upgrades_system;
18 #using scripts\zm\_zm_stats;
19 #using scripts\zm\_zm_utility;
20 #using scripts\zm\_zm_weapons;
21 
22 #insert scripts\zm\_zm_perk_additionalprimaryweapon.gsh;
23 #insert scripts\zm\_zm_perks.gsh;
24 #insert scripts\zm\_zm_utility.gsh;
25 
26 #precache( "material", "specialty_extraprimaryweapon_zombies" );
27 #precache( "string", "ZOMBIE_PERK_ADDITIONALPRIMARYWEAPON" );
28 #precache( "fx", ADDITIONAL_PRIMARY_WEAPON_MACHINE_FX_FILE_MACHINE_LIGHT );
29 
30 
31 #namespace zm_perk_additionalprimaryweapon;
32 
33 ‪REGISTER_SYSTEM( "zm_perk_additionalprimaryweapon", &‪__init__, undefined )
34 
35 // ADDITIONAL PRIMARY WEAPON ( MULE KICK )
36 
37 //-----------------------------------------------------------------------------------
38 // setup
39 //-----------------------------------------------------------------------------------
40 function ‪__init__()
41 {
42  level.additionalprimaryweapon_limit = 3;
43 
45 
47  level.return_additionalprimaryweapon = &‪return_additionalprimaryweapon;
48 }
49 
51 {
52  // register sleight of hand perk for level
59 }
60 
62 {
63  if( IsDefined(level.additional_primary_weapon_precache_override_func) )
64  {
65  [[ level.additional_primary_weapon_precache_override_func ]]();
66  return;
67  }
68 
70 
71  level.machine_assets[‪PERK_ADDITIONAL_PRIMARY_WEAPON] = SpawnStruct();
75 }
76 
78 {
80 }
81 
83 {
85 }
86 
87 function ‪additional_primary_weapon_perk_machine_setup( use_trigger, perk_machine, bump_trigger, collision )
88 {
89  use_trigger.script_sound = "mus_perks_mulekick_jingle";
90  use_trigger.script_string = "tap_perk";
91  use_trigger.script_label = "mus_perks_mulekick_sting";
93  perk_machine.script_string = "tap_perk";
94  perk_machine.targetname = ‪ADDITIONAL_PRIMARY_WEAPON_RADIANT_MACHINE_NAME;
95  if(IsDefined(bump_trigger))
96  {
97  bump_trigger.script_string = "tap_perk";
98  }
99 }
100 
102 {
103 }
104 
105 function ‪take_additional_primary_weapon_perk( b_pause, str_perk, str_result )
106 {
107  if ( b_pause || str_result == str_perk )
108  {
110  }
111 }
112 
114 {
115  weapon_to_take = level.weaponNone;
116 
117  if ( ‪IS_TRUE( self._retain_perks ) || ( IsDefined( self._retain_perks_array ) && ‪IS_TRUE( self._retain_perks_array[ ‪PERK_ADDITIONAL_PRIMARY_WEAPON ] ) ) )
118  {
119  return weapon_to_take;
120  }
121 
122  primary_weapons_that_can_be_taken = [];
123 
124  primaryWeapons = self GetWeaponsListPrimaries();
125  for ( i = 0; i < primaryWeapons.size; i++ )
126  {
127  if ( ‪zm_weapons::is_weapon_included( primaryWeapons[i] ) || ‪zm_weapons::is_weapon_upgraded( primaryWeapons[i] ) )
128  {
129  primary_weapons_that_can_be_taken[primary_weapons_that_can_be_taken.size] = primaryWeapons[i];
130  }
131  }
132 
133  self.weapons_taken_by_losing_specialty_additionalprimaryweapon = [];
134  pwtcbt = primary_weapons_that_can_be_taken.size;
135  while ( pwtcbt >= 3 )
136  {
137  weapon_to_take = primary_weapons_that_can_be_taken[pwtcbt - 1];
138  self.weapons_taken_by_losing_specialty_additionalprimaryweapon[weapon_to_take] = ‪zm_weapons::get_player_weapondata( self, weapon_to_take );
139  pwtcbt--;
140  if ( weapon_to_take == self GetCurrentWeapon() )
141  {
142  self SwitchToWeapon( primary_weapons_that_can_be_taken[0] );
143  }
144  self TakeWeapon( weapon_to_take );
145  }
146 
147  return weapon_to_take;
148 }
149 
150 function ‪on_laststand()
151 {
152  if ( self HasPerk( ‪PERK_ADDITIONAL_PRIMARY_WEAPON ) )
153  {
154  self.weapon_taken_by_losing_specialty_additionalprimaryweapon = ‪take_additionalprimaryweapon();
155  }
156 }
157 
158 function ‪return_additionalprimaryweapon( w_returning )
159 {
160  if ( isdefined( self.weapons_taken_by_losing_specialty_additionalprimaryweapon[w_returning] ) )
161  {
162  self ‪zm_weapons::weapondata_give( self.weapons_taken_by_losing_specialty_additionalprimaryweapon[w_returning] );
163  }
164  else
165  {
166  self ‪zm_weapons::give_build_kit_weapon( w_returning );
167  }
168 }
169 
‪ADDITIONAL_PRIMARY_WEAPON_MACHINE_LIGHT_FX
‪#define ADDITIONAL_PRIMARY_WEAPON_MACHINE_LIGHT_FX
Definition: _zm_perk_additionalprimaryweapon.gsh:9
‪ADDITIONAL_PRIMARY_WEAPON_PERK_COST
‪#define ADDITIONAL_PRIMARY_WEAPON_PERK_COST
Definition: _zm_perk_additionalprimaryweapon.gsh:4
‪register_perk_clientfields
‪function register_perk_clientfields(str_perk, func_clientfield_register, func_code_callback)
Definition: _zm_perks.csc:96
‪take_additional_primary_weapon_perk
‪function take_additional_primary_weapon_perk(b_pause, str_perk, str_result)
Definition: _zm_perk_additionalprimaryweapon.gsc:105
‪ADDITIONAL_PRIMARY_WEAPON_MACHINE_DISABLED_MODEL
‪#define ADDITIONAL_PRIMARY_WEAPON_MACHINE_DISABLED_MODEL
Definition: _zm_perk_additionalprimaryweapon.gsh:6
‪return_additionalprimaryweapon
‪function return_additionalprimaryweapon(w_returning)
Definition: _zm_perk_additionalprimaryweapon.gsc:158
‪VERSION_SHIP
‪#define VERSION_SHIP
Definition: version.gsh:36
‪register_perk_basic_info
‪function register_perk_basic_info(str_perk, str_alias, n_perk_cost, str_hint_string, w_perk_bottle_weapon)
Definition: _zm_perks.gsc:1820
‪on_laststand
‪function on_laststand()
Definition: _zm_perk_additionalprimaryweapon.gsc:150
‪is_weapon_upgraded
‪function is_weapon_upgraded(weapon)
Definition: _zm_weapons.csc:155
‪IS_TRUE
‪#define IS_TRUE(__a)
Definition: shared.gsh:251
‪ADDITIONAL_PRIMARY_WEAPON_PERK_BOTTLE_WEAPON
‪#define ADDITIONAL_PRIMARY_WEAPON_PERK_BOTTLE_WEAPON
Definition: _zm_perk_additionalprimaryweapon.gsh:5
‪is_weapon_included
‪function is_weapon_included(weapon)
Definition: _zm_weapons.csc:51
‪register_perk_machine
‪function register_perk_machine(str_perk, func_perk_machine_setup, func_perk_machine_thread)
Definition: _zm_perks.gsc:1849
‪additional_primary_weapon_precache
‪function additional_primary_weapon_precache()
Definition: _zm_perk_additionalprimaryweapon.gsc:61
‪__init__
‪function __init__()
Definition: _zm_perk_additionalprimaryweapon.gsc:40
‪additional_primary_weapon_set_clientfield
‪function additional_primary_weapon_set_clientfield(state)
Definition: _zm_perk_additionalprimaryweapon.gsc:82
‪register_perk_precache_func
‪function register_perk_precache_func(str_perk, func_precache)
Definition: _zm_perks.gsc:1900
‪ADDITIONAL_PRIMARY_WEAPON_RADIANT_MACHINE_NAME
‪#define ADDITIONAL_PRIMARY_WEAPON_RADIANT_MACHINE_NAME
Definition: _zm_perk_additionalprimaryweapon.gsh:8
‪additional_primary_weapon_perk_machine_setup
‪function additional_primary_weapon_perk_machine_setup(use_trigger, perk_machine, bump_trigger, collision)
Definition: _zm_perk_additionalprimaryweapon.gsc:87
‪ADDITIONAL_PRIMARY_WEAPON_MACHINE_ACTIVE_MODEL
‪#define ADDITIONAL_PRIMARY_WEAPON_MACHINE_ACTIVE_MODEL
Definition: _zm_perk_additionalprimaryweapon.gsh:7
‪weapondata_give
‪function weapondata_give(weapondata)
Definition: player_shared.gsc:291
‪give_build_kit_weapon
‪function give_build_kit_weapon(weapon)
Definition: _zm_weapons.gsc:2543
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪register_perk_threads
‪function register_perk_threads(str_perk, func_give_player_perk, func_take_player_perk)
Definition: _zm_perks.gsc:1924
‪register_perk_host_migration_params
‪function register_perk_host_migration_params(str_perk, str_radiant_name, str_effect_name)
Definition: _zm_perks.gsc:1986
‪give_additional_primary_weapon_perk
‪function give_additional_primary_weapon_perk()
Definition: _zm_perk_additionalprimaryweapon.gsc:101
‪PERK_CLIENTFIELD_ADDITIONAL_PRIMARY_WEAPON
‪#define PERK_CLIENTFIELD_ADDITIONAL_PRIMARY_WEAPON
Definition: _zm_perks.gsh:8
‪PERK_ADDITIONAL_PRIMARY_WEAPON
‪#define PERK_ADDITIONAL_PRIMARY_WEAPON
Definition: _zm_perks.gsh:30
‪ADDITIONAL_PRIMARY_WEAPON_MACHINE_FX_FILE_MACHINE_LIGHT
‪#define ADDITIONAL_PRIMARY_WEAPON_MACHINE_FX_FILE_MACHINE_LIGHT
Definition: _zm_perk_additionalprimaryweapon.gsh:10
‪take_additionalprimaryweapon
‪function take_additionalprimaryweapon()
Definition: _zm_perk_additionalprimaryweapon.gsc:113
‪set_player_uimodel
‪function set_player_uimodel(str_field_name, n_value)
Definition: clientfield_shared.gsc:75
‪additional_primary_weapon_register_clientfield
‪function additional_primary_weapon_register_clientfield()
Definition: _zm_perk_additionalprimaryweapon.gsc:77
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪enable_additional_primary_weapon_perk_for_level
‪function enable_additional_primary_weapon_perk_for_level()
Definition: _zm_perk_additionalprimaryweapon.gsc:50
‪get_player_weapondata
‪function get_player_weapondata(player, weapon)
Definition: _zm_weapons.gsc:3033