boiii-scripts/shared/abilities/gadgets/_gadget_speed_burst.gsc
2023-04-13 17:30:38 +02:00

151 lines
12 KiB
Plaintext

#using scripts\codescripts\struct;
#using scripts\shared\callbacks_shared;
#using scripts\shared\clientfield_shared;
#using scripts\shared\flag_shared;
#using scripts\shared\flagsys_shared;
#using scripts\shared\system_shared;
#using scripts\shared\util_shared;
#using scripts\shared\visionset_mgr_shared;
#using scripts\shared\abilities\_ability_player;
#using scripts\shared\abilities\_ability_power;
#using scripts\shared\abilities\_ability_util;
#namespace speedburst;
function autoexec __init__sytem__() { system::register("gadget_speed_burst",&__init__,undefined,undefined); }
function __init__()
{
clientfield::register( "toplayer", "speed_burst" , 1, 1, "int" );
ability_player::register_gadget_activation_callbacks( 13, &gadget_speed_burst_on, &gadget_speed_burst_off );
ability_player::register_gadget_possession_callbacks( 13, &gadget_speed_burst_on_give, &gadget_speed_burst_on_take );
ability_player::register_gadget_flicker_callbacks( 13, &gadget_speed_burst_on_flicker );
ability_player::register_gadget_is_inuse_callbacks( 13, &gadget_speed_burst_is_inuse );
ability_player::register_gadget_is_flickering_callbacks( 13, &gadget_speed_burst_is_flickering );
if ( !IsDefined( level.vsmgr_prio_visionset_speedburst ) )
{
level.vsmgr_prio_visionset_speedburst = 60;
}
visionset_mgr::register_info( "visionset", "speed_burst", 1, level.vsmgr_prio_visionset_speedburst, 9, true, &visionset_mgr::ramp_in_out_thread_per_player_death_shutdown, false );
callback::on_connect( &gadget_speed_burst_on_connect );
}
function gadget_speed_burst_is_inuse( slot )
{
// returns true when local script gadget state is on
return self flagsys::get( "gadget_speed_burst_on" );
}
function gadget_speed_burst_is_flickering( slot )
{
// returns true when local script gadget state is flickering
return self GadgetFlickering( slot );
}
function gadget_speed_burst_on_flicker( slot, weapon )
{
// excuted when the gadget flickers
self thread gadget_speed_burst_flicker( slot, weapon );
}
function gadget_speed_burst_on_give( slot, weapon )
{
// executed when gadget is added to the players inventory
flagsys::set( "speed_burst_on" );
self clientfield::set_to_player( "speed_burst", 0 );
}
function gadget_speed_burst_on_take( slot, weapon )
{
// executed when gadget is removed from the players inventory
flagsys::clear( "speed_burst_on" );
self clientfield::set_to_player( "speed_burst", 0 );
}
//self is the player
function gadget_speed_burst_on_connect()
{
// setup up stuff on player connec
}
function gadget_speed_burst_on( slot, weapon )
{
// excecutes when the gadget is turned on
self flagsys::set( "gadget_speed_burst_on" );
self GadgetSetActivateTime( slot, GetTime() );
self clientfield::set_to_player( "speed_burst", 1 );
visionset_mgr::activate( "visionset", "speed_burst", self, 0.4, .1, 1.35 );
self.speedburstLastOnTime = getTime();
self.speedburstOn = true;
self.speedburstKill = false;
}
function gadget_speed_burst_off( slot, weapon )
{
self notify( "gadget_speed_burst_off" );
// excecutes when the gadget is turned off
self flagsys::clear( "gadget_speed_burst_on" );
self clientfield::set_to_player( "speed_burst", 0 );
self.speedburstLastOnTime = getTime();
self.speedburstOn = false;
if ( IsAlive( self ) && ( isdefined( self.speedburstKill ) && self.speedburstKill ) && isdefined( level.playGadgetSuccess ) )
{
self [[ level.playGadgetSuccess ]]( weapon );
}
self.speedburstKill = false; // _off is getting called before _on when activated
}
function gadget_speed_burst_flicker( slot, weapon )
{
self endon( "disconnect" );
if ( !self gadget_speed_burst_is_inuse( slot ) )
{
return;
}
eventTime = self._gadgets_player[slot].gadget_flickertime;
self set_gadget_status( "Flickering", eventTime );
while( 1 )
{
if ( !self GadgetFlickering( slot ) )
{
self set_gadget_status( "Normal" );
return;
}
wait( 0.5 );
}
}
function set_gadget_status( status, time )
{
timeStr = "";
if ( IsDefined( time ) )
{
timeStr = "^3" + ", time: " + time;
}
if ( GetDvarInt( "scr_cpower_debug_prints" ) > 0 )
self IPrintlnBold( "Vision Speed burst: " + status + timeStr );
}