1 #using scripts\codescripts\struct;
2 #using scripts\shared\callbacks_shared;
3 #using scripts\shared\flagsys_shared;
4 #using scripts\shared\hud_util_shared;
5 #using scripts\shared\system_shared;
6 #using scripts\shared\abilities\_ability_gadgets;
7 #using scripts\shared\abilities\_ability_player;
8 #using scripts\shared\abilities\_ability_util;
10 #insert scripts\shared\shared.gsh;
11 #insert scripts\shared\abilities\_ability_util.gsh;
13 #namespace ability_power;
36 if ( weapon == gadget )
41 if ( isdefined( level.weaponLightningGun ) && gadget == level.weaponLightningGun )
43 if ( isdefined( level.weaponLightningGunArc ) && weapon == level.weaponLightningGunArc )
58 gadget =
self._gadgets_player[slot];
60 if ( isdefined( gadget ) )
62 ignoreSelf = gadget.gadget_powerGainScoreIgnoreSelf;
69 ignoreWhenActive = gadget.gadget_powerGainScoreIgnoreWhenActive;
71 if ( ignoreWhenActive &&
self GadgetIsActive( slot ) )
81 scoreFactor = gadget.gadget_powerGainScoreFactor;
82 if ( isdefined(
self.gadgetThiefActive ) &&
self.gadgetThiefActive ==
true )
87 gametypeFactor = GetGametypeSetting(
"scoreHeroPowerGainFactor" );
90 if (
self hasperk(
"specialty_overcharge" ) )
92 perkFactor = GetDvarFloat(
"gadgetPowerOverchargePerkScoreFactor" );
95 if ( scoreFactor > 0 && gametypeFactor > 0 )
97 gainToAdd = score * scoreFactor * gametypeFactor * perkFactor;
113 if ( IsDefined(
self._gadgets_player[slot] ) )
127 if ( IsDefined(
self._gadgets_player[slot] ) )
131 if (
self._gadgets_player[slot].gadget_powertakedowngain > 0 )
133 source =
"assassinate actor";
134 self power_gain_event( slot, eAttacker,
self._gadgets_player[slot].gadget_powertakedowngain, source );
138 if (
self._gadgets_player[slot].gadget_powerreplenishfactor > 0 )
140 gainToAdd = baseGain *
self._gadgets_player[slot].gadget_powerreplenishfactor;
143 source =
"killed actor";
153 if ( !isdefined(
self ) || !isalive(
self ) )
160 if ( powerToAdd > 0.1 || powerToAdd < -0.1 )
162 powerLeft =
self GadgetPowerChange( slot, powerToAdd );
172 if ( IsDefined(
self._gadgets_player[slot] ) )
174 if (
self GadgetIsActive( slot ) )
176 powerLoss = baseLoss *
self._gadgets_player[slot].gadget_powerOnLossOnDamage;
179 self power_loss_event( slot, eAttacker, powerLoss,
"took damage with power on" );
182 if (
self._gadgets_player[slot].gadget_flickerOnDamage > 0 )
189 powerLoss = baseLoss *
self._gadgets_player[slot].gadget_powerOffLossOnDamage;
201 powerToRemove = -val;
203 if ( powerToRemove > 0.1 || powerToRemove < -0.1 )
205 powerLeft =
self GadgetPowerChange( slot, powerToRemove );
211 powerLeft =
self GadgetPowerChange( slot, 0 );
212 powerLeft =
self GadgetPowerChange( slot, -powerLeft );
217 velocity =
self GetVelocity();
218 speedsq = lengthsquared( velocity );
220 return speedsq >
self._gadgets_player.gadget_powermovespeed *
self._gadgets_player.gadget_powermovespeed;
225 self endon(
"disconnect" );
226 self endon(
"death" );
234 if ( !IsDefined(
self._gadgets_player[slot] ) )
239 if ( !
self GadgetIsActive( slot ) )
244 currentTime = GetTime();
245 interval = currentTime - time;
250 if(
self IsOnGround() )
252 if (
self._gadgets_player[slot].gadget_powersprintloss > 0 &&
self IsSprinting() )
254 powerConsumpted += 1.0 * interval / 1000 *
self._gadgets_player[slot].gadget_powersprintloss;
257 else if (
self._gadgets_player[slot].gadget_powermoveloss &&
self IsMovingPowerloss() )
259 powerConsumpted += 1.0 * interval / 1000 *
self._gadgets_player[slot].gadget_powermoveloss;
268 if ( powerConsumpted > 0.1 )
271 if (
self._gadgets_player[slot].gadget_flickerOnPowerloss > 0 )