178 lines
9.7 KiB
Plaintext
178 lines
9.7 KiB
Plaintext
#using scripts\shared\util_shared;
|
|
#using scripts\shared\abilities\_ability_player;
|
|
#using scripts\shared\abilities\_ability_power;
|
|
|
|
|
|
|
|
|
|
#namespace ability_util;
|
|
|
|
|
|
|
|
function gadget_is_type( slot, type )
|
|
{
|
|
if ( !IsDefined( self._gadgets_player[slot] ) )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return self._gadgets_player[slot].gadget_type == type;
|
|
}
|
|
|
|
//TODO: move to code
|
|
function gadget_slot_for_type( type )
|
|
{
|
|
invalid = 3;
|
|
|
|
for ( i = 0; i < 3; i++ )
|
|
{
|
|
if ( !self gadget_is_type( i, type ) )
|
|
{
|
|
continue;
|
|
}
|
|
|
|
return i;
|
|
}
|
|
|
|
return invalid;
|
|
}
|
|
|
|
function gadget_is_camo_suit_on()
|
|
{
|
|
return gadget_is_active( 2 );
|
|
}
|
|
|
|
function gadget_combat_efficiency_enabled()
|
|
{
|
|
if ( isdefined( self._gadget_combat_efficiency ) )
|
|
{
|
|
return self._gadget_combat_efficiency;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function gadget_combat_efficiency_power_drain( score )
|
|
{
|
|
powerChange = -1 * score * GetDvarFloat( "scr_combat_efficiency_power_loss_scalar", .275 );
|
|
slot = gadget_slot_for_type( 15 );
|
|
if( slot != 3 )
|
|
{
|
|
self GadgetPowerChange( slot, powerChange );
|
|
}
|
|
}
|
|
|
|
function gadget_is_camo_suit_flickering()
|
|
{
|
|
slot = self gadget_slot_for_type( 2 );
|
|
|
|
if ( slot >= 0 && slot < 3 )
|
|
{
|
|
if ( self ability_player::gadget_is_flickering( slot ) )
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function gadget_is_escort_drone_on()
|
|
{
|
|
return gadget_is_active( 5 );
|
|
}
|
|
|
|
//TODO: move to code
|
|
function is_weapon_gadget( weapon )
|
|
{
|
|
foreach( gadget_key, gadget_val in level._gadgets_level )
|
|
{
|
|
if ( gadget_key == weapon )
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function gadget_power_reset( gadgetWeapon )
|
|
{
|
|
slot = self GadgetGetSlot( gadgetWeapon );
|
|
|
|
if ( slot >= 0 && slot < 3 )
|
|
{
|
|
self GadgetPowerReset( slot );
|
|
self GadgetCharging( slot, true );
|
|
}
|
|
}
|
|
|
|
function gadget_reset( gadgetWeapon, changedClass, roundBased, firstRound )
|
|
{
|
|
if ( GetDvarint( "gadgetEnabled") == 0 )
|
|
{
|
|
return;
|
|
}
|
|
|
|
slot = self GadgetGetSlot( gadgetWeapon );
|
|
|
|
if ( slot >= 0 && slot < 3 )
|
|
{
|
|
if ( isdefined( self.pers["held_gadgets_power"] ) && isdefined( self.pers["held_gadgets_power"][gadgetWeapon] ) )
|
|
{
|
|
self GadgetPowerSet( slot, self.pers["held_gadgets_power"][gadgetWeapon] );
|
|
}
|
|
else if( isdefined( self.pers["held_gadgets_power"] ) && isdefined( self.pers[#"thiefWeapon"] ) && isdefined( self.pers["held_gadgets_power"][self.pers[#"thiefWeapon"]] ) )
|
|
{
|
|
self GadgetPowerSet( slot, self.pers["held_gadgets_power"][self.pers[#"thiefWeapon"]] );
|
|
}
|
|
else if( isdefined( self.pers["held_gadgets_power"] ) && isdefined( self.pers[#"rouletteWeapon"] ) && isdefined( self.pers["held_gadgets_power"][self.pers[#"rouletteWeapon"]] ) )
|
|
{
|
|
self GadgetPowerSet( slot, self.pers["held_gadgets_power"][self.pers[#"rouletteWeapon"]] );
|
|
}
|
|
|
|
resetOnClassChange = changedClass && gadgetWeapon.gadget_power_reset_on_class_change;
|
|
resetOnFirstRound = !isdefined( self.firstSpawn ) && ( !roundBased || firstRound );
|
|
resetOnRoundSwitch = !isdefined( self.firstSpawn ) && roundBased && !firstRound && gadgetWeapon.gadget_power_reset_on_round_switch;
|
|
resetOnTeamChanged = isdefined( self.firstSpawn ) && ( isdefined( self.switchedTeamsResetGadgets ) && self.switchedTeamsResetGadgets ) && gadgetWeapon.gadget_power_reset_on_team_change;
|
|
|
|
if ( resetOnClassChange || resetOnFirstRound || resetOnRoundSwitch || resetOnTeamChanged )
|
|
{
|
|
self GadgetPowerReset( slot );
|
|
self GadgetCharging( slot, true );
|
|
}
|
|
}
|
|
}
|
|
|
|
function gadget_power_armor_on()
|
|
{
|
|
return gadget_is_active( 4 );
|
|
}
|
|
|
|
//TODO: move to code
|
|
function gadget_is_active( gadgetType )
|
|
{
|
|
slot = self gadget_slot_for_type( gadgetType );
|
|
|
|
if ( slot >= 0 && slot < 3 )
|
|
{
|
|
if ( self ability_player::gadget_is_in_use( slot ) )
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
//TODO: move to code
|
|
function gadget_has_type( gadgetType )
|
|
{
|
|
slot = self gadget_slot_for_type( gadgetType );
|
|
|
|
if ( slot >= 0 && slot < 3 )
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|