151 lines
12 KiB
Plaintext
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 );
|
|
} |