814 lines
21 KiB
Plaintext
814 lines
21 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
init()
|
|
{
|
|
if ( !isdefined( level.boxsettings ) )
|
|
level.boxsettings = [];
|
|
}
|
|
|
|
begindeployableviamarker( var_0, var_1 )
|
|
{
|
|
thread watchdeployablemarkercancel( var_1 );
|
|
thread watchdeployablemarkerplacement( var_1, var_0 );
|
|
|
|
for (;;)
|
|
{
|
|
var_2 = common_scripts\utility::waittill_any_return( "deployable_canceled", "deployable_deployed", "death", "disconnect" );
|
|
return var_2 == "deployable_deployed";
|
|
}
|
|
}
|
|
|
|
tryusedeployable( var_0, var_1 )
|
|
{
|
|
thread watchdeployablemarkercancel( var_1 );
|
|
thread watchdeployablemarkerplacement( var_1, var_0 );
|
|
|
|
for (;;)
|
|
{
|
|
var_2 = common_scripts\utility::waittill_any_return( "deployable_canceled", "deployable_deployed", "death", "disconnect" );
|
|
return var_2 == "deployable_deployed";
|
|
}
|
|
}
|
|
|
|
watchdeployablemarkercancel( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "deployable_deployed" );
|
|
var_1 = level.boxsettings[var_0];
|
|
var_2 = self getcurrentweapon();
|
|
|
|
while ( var_2 == var_1.weaponinfo )
|
|
self waittill( "weapon_change", var_2 );
|
|
|
|
self notify( "deployable_canceled" );
|
|
}
|
|
|
|
watchdeployablemarkerplacement( var_0, var_1 )
|
|
{
|
|
self endon( "spawned_player" );
|
|
self endon( "disconnect" );
|
|
self endon( "deployable_canceled" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "grenade_fire", var_2, var_3 );
|
|
|
|
if ( maps\mp\_utility::isreallyalive( self ) )
|
|
break;
|
|
else
|
|
var_2 delete();
|
|
}
|
|
|
|
self notify( "deployable_deployed" );
|
|
var_2.owner = self;
|
|
var_2.weaponname = var_3;
|
|
self.marker = var_2;
|
|
var_2 playsoundtoplayer( level.boxsettings[var_0].deployedsfx, self );
|
|
var_2 thread markeractivate( var_1, var_0, ::box_setactive );
|
|
}
|
|
|
|
override_box_moving_platform_death( var_0 )
|
|
{
|
|
self notify( "death" );
|
|
}
|
|
|
|
markeractivate( var_0, var_1, var_2 )
|
|
{
|
|
self notify( "markerActivate" );
|
|
self endon( "markerActivate" );
|
|
self waittill( "missile_stuck" );
|
|
var_3 = self.owner;
|
|
var_4 = self.origin;
|
|
|
|
if ( !isdefined( var_3 ) )
|
|
return;
|
|
|
|
var_5 = createboxforplayer( var_1, var_4, var_3 );
|
|
var_6 = spawnstruct();
|
|
var_6.linkparent = self getlinkedparent();
|
|
|
|
if ( isdefined( var_6.linkparent ) && isdefined( var_6.linkparent.model ) && deployableexclusion( var_6.linkparent.model ) )
|
|
{
|
|
var_5.origin = var_6.linkparent.origin;
|
|
var_7 = var_6.linkparent getlinkedparent();
|
|
|
|
if ( isdefined( var_7 ) )
|
|
var_6.linkparent = var_7;
|
|
else
|
|
var_6.linkparent = undefined;
|
|
}
|
|
|
|
var_6.deathoverridecallback = ::override_box_moving_platform_death;
|
|
var_5 thread maps\mp\_movers::handle_moving_platforms( var_6 );
|
|
var_5.moving_platform = var_6.linkparent;
|
|
var_5 setotherent( var_3 );
|
|
wait 0.05;
|
|
var_5 thread [[ var_2 ]]();
|
|
self delete();
|
|
|
|
if ( isdefined( var_5 ) && var_5 maps\mp\_utility::touchingbadtrigger() )
|
|
var_5 notify( "death" );
|
|
}
|
|
|
|
deployableexclusion( var_0 )
|
|
{
|
|
if ( var_0 == "weapon_alien_laser_drill" )
|
|
return 1;
|
|
else if ( issubstr( var_0, "crafting" ) )
|
|
return 1;
|
|
else if ( issubstr( var_0, "scorpion_body" ) )
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
isholdingdeployablebox()
|
|
{
|
|
var_0 = self getcurrentweapon();
|
|
|
|
if ( isdefined( var_0 ) )
|
|
{
|
|
foreach ( var_2 in level.boxsettings )
|
|
{
|
|
if ( var_0 == var_2.weaponinfo )
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
get_box_icon( var_0, var_1, var_2 )
|
|
{
|
|
return level.alien_combat_resources[var_0][var_1].upgrades[var_2].dpad_icon;
|
|
}
|
|
|
|
get_resource_type( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
return undefined;
|
|
|
|
foreach ( var_3, var_2 in level.alien_combat_resources )
|
|
{
|
|
if ( isdefined( var_2[var_0] ) )
|
|
return var_3;
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
createboxforplayer( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = level.boxsettings[var_0];
|
|
var_4 = spawn( "script_model", var_1 );
|
|
var_4 setmodel( var_3.modelbase );
|
|
var_4.health = 999999;
|
|
var_4.maxhealth = var_3.maxhealth;
|
|
var_4.angles = var_2.angles;
|
|
var_4.boxtype = var_0;
|
|
var_4.owner = var_2;
|
|
var_4.team = var_2.team;
|
|
|
|
if ( isdefined( var_3.dpadname ) )
|
|
var_4.dpadname = var_3.dpadname;
|
|
|
|
if ( isdefined( var_3.maxuses ) )
|
|
var_4.usesremaining = var_3.maxuses;
|
|
|
|
var_5 = var_4.owner;
|
|
var_6 = get_resource_type( var_4.dpadname );
|
|
|
|
if ( is_combat_resource( var_6 ) )
|
|
{
|
|
var_4.upgrade_rank = var_5 maps\mp\alien\_persistence::get_upgrade_level( var_6 );
|
|
var_4.icon_name = get_box_icon( var_6, var_4.dpadname, var_4.upgrade_rank );
|
|
}
|
|
else
|
|
{
|
|
var_4.upgrade_rank = 0;
|
|
var_4.icon_name = var_3.icon_name;
|
|
}
|
|
|
|
level.alienbbdata["team_item_deployed"]++;
|
|
var_5 maps\mp\alien\_persistence::eog_player_update_stat( "deployables", 1 );
|
|
var_4 box_setinactive();
|
|
var_4 thread box_handleownerdisconnect();
|
|
var_4 addboxtolevelarray();
|
|
return var_4;
|
|
}
|
|
|
|
is_combat_resource( var_0 )
|
|
{
|
|
return isdefined( var_0 );
|
|
}
|
|
|
|
box_setactive( var_0 )
|
|
{
|
|
self setcursorhint( "HINT_NOICON" );
|
|
var_1 = level.boxsettings[self.boxtype];
|
|
self sethintstring( var_1.hintstring );
|
|
self.inuse = 0;
|
|
var_2 = maps\mp\gametypes\_gameobjects::getnextobjid();
|
|
objective_add( var_2, "invisible", ( 0, 0, 0 ) );
|
|
objective_position( var_2, self.origin );
|
|
objective_state( var_2, "active" );
|
|
|
|
if ( isdefined( var_1.shadername ) )
|
|
objective_icon( var_2, var_1.shadername );
|
|
|
|
self.objidfriendly = var_2;
|
|
|
|
if ( ( !isdefined( var_0 ) || !var_0 ) && isdefined( var_1.onusecallback ) && ( !isdefined( var_1.canusecallback ) || self.owner [[ var_1.canusecallback ]]() ) )
|
|
{
|
|
if ( maps\mp\_utility::isreallyalive( self.owner ) )
|
|
self.owner [[ var_1.onusecallback ]]( self );
|
|
}
|
|
|
|
if ( level.teambased )
|
|
{
|
|
objective_team( var_2, self.team );
|
|
|
|
foreach ( var_4 in level.players )
|
|
{
|
|
if ( self.team == var_4.team && ( !isdefined( var_1.canusecallback ) || var_4 [[ var_1.canusecallback ]]( self ) ) )
|
|
box_seticon( var_4, var_1.streakname, var_1.headiconoffset );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
objective_player( var_2, self.owner getentitynumber() );
|
|
|
|
if ( !isdefined( var_1.canusecallback ) || self.owner [[ var_1.canusecallback ]]( self ) )
|
|
box_seticon( self.owner, var_1.streakname, var_1.headiconoffset );
|
|
}
|
|
|
|
self makeusable();
|
|
self.isusable = 1;
|
|
self setcandamage( 1 );
|
|
thread box_handledamage();
|
|
thread box_handledeath();
|
|
thread box_timeout();
|
|
common_scripts\utility::make_entity_sentient_mp( self.team, 1 );
|
|
|
|
if ( isdefined( self.owner ) )
|
|
self.owner notify( "new_deployable_box", self );
|
|
|
|
if ( level.teambased )
|
|
{
|
|
foreach ( var_4 in level.participants )
|
|
_box_setactivehelper( var_4, self.team == var_4.team, var_1.canusecallback );
|
|
}
|
|
else
|
|
{
|
|
foreach ( var_4 in level.participants )
|
|
_box_setactivehelper( var_4, isdefined( self.owner ) && self.owner == var_4, var_1.canusecallback );
|
|
}
|
|
|
|
if ( ( !isdefined( self.air_dropped ) || !self.air_dropped ) && !maps\mp\alien\_utility::isplayingsolo() )
|
|
level thread maps\mp\_utility::teamplayercardsplash( var_1.splashname, self.owner, self.team );
|
|
|
|
thread box_playerconnected();
|
|
thread box_agentconnected();
|
|
}
|
|
|
|
_box_setactivehelper( var_0, var_1, var_2 )
|
|
{
|
|
if ( var_1 )
|
|
{
|
|
if ( !isdefined( var_2 ) || var_0 [[ var_2 ]]( self ) )
|
|
box_enableplayeruse( var_0 );
|
|
else
|
|
{
|
|
box_disableplayeruse( var_0 );
|
|
thread doubledip( var_0 );
|
|
}
|
|
|
|
thread boxthink( var_0 );
|
|
}
|
|
else
|
|
box_disableplayeruse( var_0 );
|
|
}
|
|
|
|
box_playerconnected()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
level waittill( "connected", var_0 );
|
|
childthread box_waittill_player_spawn_and_add_box( var_0 );
|
|
}
|
|
}
|
|
|
|
box_agentconnected()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
level waittill( "spawned_agent_player", var_0 );
|
|
box_addboxforplayer( var_0 );
|
|
}
|
|
}
|
|
|
|
box_waittill_player_spawn_and_add_box( var_0 )
|
|
{
|
|
var_0 waittill( "spawned_player" );
|
|
|
|
if ( level.teambased )
|
|
box_addboxforplayer( var_0 );
|
|
}
|
|
|
|
box_playerjoinedteam( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
var_0 endon( "disconnect" );
|
|
|
|
for (;;)
|
|
{
|
|
var_0 waittill( "joined_team" );
|
|
|
|
if ( level.teambased )
|
|
box_addboxforplayer( var_0 );
|
|
}
|
|
}
|
|
|
|
box_addboxforplayer( var_0 )
|
|
{
|
|
if ( self.team == var_0.team )
|
|
{
|
|
box_enableplayeruse( var_0 );
|
|
thread boxthink( var_0 );
|
|
box_seticon( var_0, level.boxsettings[self.boxtype].streakname, level.boxsettings[self.boxtype].headiconoffset );
|
|
}
|
|
else
|
|
{
|
|
box_disableplayeruse( var_0 );
|
|
maps\mp\_entityheadicons::setheadicon( var_0, "", ( 0, 0, 0 ) );
|
|
}
|
|
}
|
|
|
|
box_seticon( var_0, var_1, var_2 )
|
|
{
|
|
maps\mp\_entityheadicons::setheadicon( var_0, self.icon_name, ( 0, 0, var_2 ), 14, 14, undefined, undefined, undefined, undefined, undefined, 0 );
|
|
}
|
|
|
|
box_enableplayeruse( var_0 )
|
|
{
|
|
if ( isplayer( var_0 ) )
|
|
self enableplayeruse( var_0 );
|
|
|
|
self.disabled_use_for[var_0 getentitynumber()] = 0;
|
|
}
|
|
|
|
box_disableplayeruse( var_0 )
|
|
{
|
|
if ( isplayer( var_0 ) )
|
|
self disableplayeruse( var_0 );
|
|
|
|
self.disabled_use_for[var_0 getentitynumber()] = 1;
|
|
}
|
|
|
|
box_setinactive()
|
|
{
|
|
self makeunusable();
|
|
self.isusable = 0;
|
|
maps\mp\_entityheadicons::setheadicon( "none", "", ( 0, 0, 0 ) );
|
|
|
|
if ( isdefined( self.objidfriendly ) )
|
|
maps\mp\_utility::_objective_delete( self.objidfriendly );
|
|
}
|
|
|
|
box_handledamage()
|
|
{
|
|
var_0 = level.boxsettings[self.boxtype];
|
|
maps\mp\gametypes\_damage::monitordamage( var_0.maxhealth, var_0.damagefeedback, ::boxmodifydamage, ::boxhandledeathdamage, 1 );
|
|
}
|
|
|
|
boxmodifydamage( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = var_3;
|
|
|
|
if ( isexplosivedamagemod( var_2 ) )
|
|
var_4 = var_3 * 1.5;
|
|
|
|
var_4 = maps\mp\gametypes\_damage::handlemeleedamage( var_1, var_2, var_4 );
|
|
var_4 = maps\mp\gametypes\_damage::handlemissiledamage( var_1, var_2, var_4 );
|
|
var_4 = maps\mp\gametypes\_damage::handleapdamage( var_1, var_2, var_4, var_0 );
|
|
return var_4;
|
|
}
|
|
|
|
boxhandledeathdamage( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = level.boxsettings[self.boxtype];
|
|
maps\mp\gametypes\_damage::onkillstreakkilled( var_0, var_1, var_2, var_3, var_4.xppopup, var_4.vodestroyed );
|
|
}
|
|
|
|
box_handledeath()
|
|
{
|
|
self waittill( "death" );
|
|
|
|
if ( !isdefined( self ) )
|
|
return;
|
|
|
|
box_setinactive();
|
|
removeboxfromlevelarray();
|
|
var_0 = level.boxsettings[self.boxtype];
|
|
playfx( common_scripts\utility::getfx( "deployablebox_crate_destroy" ), self.origin );
|
|
|
|
if ( isdefined( var_0.deathdamagemax ) )
|
|
{
|
|
var_1 = undefined;
|
|
|
|
if ( isdefined( self.owner ) )
|
|
var_1 = self.owner;
|
|
|
|
radiusdamage( self.origin + ( 0, 0, var_0.headiconoffset ), var_0.deathdamageradius, var_0.deathdamagemax, var_0.deathdamagemin, var_1, "MOD_EXPLOSIVE", var_0.deathweaponinfo );
|
|
}
|
|
|
|
wait 0.1;
|
|
self notify( "deleting" );
|
|
self delete();
|
|
}
|
|
|
|
box_handleownerdisconnect()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "game_ended" );
|
|
self notify( "box_handleOwner" );
|
|
self endon( "box_handleOwner" );
|
|
var_0 = self.owner;
|
|
self.owner waittill( "killstreak_disowned" );
|
|
|
|
if ( isdefined( self.air_dropped ) && self.air_dropped )
|
|
{
|
|
foreach ( var_2 in level.players )
|
|
{
|
|
if ( !isdefined( var_2 ) || isdefined( var_0 ) && var_0 == var_2 )
|
|
continue;
|
|
|
|
self.owner = var_2;
|
|
thread box_handleownerdisconnect();
|
|
return;
|
|
}
|
|
}
|
|
|
|
self notify( "death" );
|
|
}
|
|
|
|
boxthink( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
thread boxcapturethink( var_0 );
|
|
|
|
if ( !isdefined( var_0.boxes ) )
|
|
var_0.boxes = [];
|
|
|
|
var_0.boxes[var_0.boxes.size] = self;
|
|
var_1 = level.boxsettings[self.boxtype];
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "captured", var_2 );
|
|
|
|
if ( var_2 == var_0 )
|
|
{
|
|
var_0 playlocalsound( var_1.onusesfx );
|
|
|
|
if ( isdefined( var_1.onusecallback ) )
|
|
{
|
|
var_0 [[ var_1.onusecallback ]]( self );
|
|
|
|
if ( maps\mp\alien\_utility::is_chaos_mode() )
|
|
maps\mp\alien\_chaos::update_pickup_deployable_box_event();
|
|
}
|
|
|
|
if ( isdefined( self.owner ) && var_0 != self.owner )
|
|
{
|
|
self.owner thread maps\mp\gametypes\_rank::xpeventpopup( var_1.event );
|
|
self.owner thread maps\mp\gametypes\_rank::giverankxp( "support", var_1.usexp );
|
|
}
|
|
|
|
if ( isdefined( self.usesremaining ) )
|
|
{
|
|
self.usesremaining--;
|
|
|
|
if ( self.usesremaining == 0 )
|
|
{
|
|
box_leave();
|
|
break;
|
|
}
|
|
}
|
|
|
|
maps\mp\_entityheadicons::setheadicon( var_0, "", ( 0, 0, 0 ) );
|
|
box_disableplayeruse( var_0 );
|
|
thread doubledip( var_0 );
|
|
}
|
|
}
|
|
}
|
|
|
|
doubledip( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
var_0 endon( "disconnect" );
|
|
|
|
if ( isdefined( self.air_dropped ) && self.air_dropped )
|
|
return;
|
|
|
|
var_0 waittill( "death" );
|
|
|
|
if ( level.teambased )
|
|
{
|
|
if ( self.team == var_0.team )
|
|
{
|
|
box_seticon( var_0, level.boxsettings[self.boxtype].streakname, level.boxsettings[self.boxtype].headiconoffset );
|
|
box_enableplayeruse( var_0 );
|
|
}
|
|
}
|
|
else if ( isdefined( self.owner ) && self.owner == var_0 )
|
|
{
|
|
box_seticon( var_0, level.boxsettings[self.boxtype].streakname, level.boxsettings[self.boxtype].headiconoffset );
|
|
box_enableplayeruse( var_0 );
|
|
}
|
|
}
|
|
|
|
boxcapturethink( var_0 )
|
|
{
|
|
while ( isdefined( self ) )
|
|
{
|
|
self waittill( "trigger", var_1 );
|
|
|
|
if ( maps\mp\_utility::is_aliens() )
|
|
{
|
|
if ( [[ level.boxcapturethink_alien_func ]]( var_1 ) )
|
|
continue;
|
|
}
|
|
|
|
if ( maps\mp\alien\_utility::is_chaos_mode() )
|
|
{
|
|
switch ( self.boxtype )
|
|
{
|
|
case "medic_skill":
|
|
case "engineer_skill":
|
|
case "tank_skill":
|
|
case "specialist_skill":
|
|
if ( maps\mp\alien\_utility::is_true( var_1.haschaosclassskill ) )
|
|
{
|
|
var_1 maps\mp\_utility::setlowermessage( "cant_use", &"ALIEN_CHAOS_CANT_PICKUP_BONUS", 3 );
|
|
continue;
|
|
}
|
|
else if ( maps\mp\alien\_utility::is_true( var_1.chaosclassskillinuse ) )
|
|
{
|
|
var_1 maps\mp\_utility::setlowermessage( "skill_in_use", &"ALIEN_CHAOS_SKILL_IN_USE", 3 );
|
|
continue;
|
|
}
|
|
|
|
break;
|
|
case "combo_freeze":
|
|
if ( maps\mp\alien\_utility::is_true( var_1.hascombofreeze ) )
|
|
{
|
|
var_1 maps\mp\_utility::setlowermessage( "cant_use", &"ALIEN_CHAOS_CANT_PICKUP_BONUS", 3 );
|
|
continue;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( var_1 == var_0 && useholdthink( var_0, level.boxsettings[self.boxtype].usetime ) )
|
|
self notify( "captured", var_0 );
|
|
}
|
|
}
|
|
|
|
isfriendlytobox( var_0 )
|
|
{
|
|
return level.teambased && self.team == var_0.team;
|
|
}
|
|
|
|
box_timeout()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "game_ended" );
|
|
|
|
if ( box_should_leave_immediately() )
|
|
wait 0.05;
|
|
else
|
|
{
|
|
var_0 = level.boxsettings[self.boxtype].lifespan;
|
|
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( var_0 );
|
|
}
|
|
|
|
box_leave();
|
|
}
|
|
|
|
box_should_leave_immediately()
|
|
{
|
|
if ( self.boxtype == "deployable_ammo" && self.upgrade_rank == 4 || self.boxtype == "deployable_specialammo_comb" && self.upgrade_rank == 4 )
|
|
return 0;
|
|
|
|
if ( maps\mp\alien\_utility::isplayingsolo() && ( !isdefined( self.air_dropped ) || !self.air_dropped ) )
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
box_leave()
|
|
{
|
|
playfx( common_scripts\utility::getfx( "deployablebox_crate_destroy" ), self.origin );
|
|
wait 0.05;
|
|
self notify( "death" );
|
|
}
|
|
|
|
deleteonownerdeath( var_0 )
|
|
{
|
|
wait 0.25;
|
|
self linkto( var_0, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
var_0 waittill( "death" );
|
|
box_leave();
|
|
}
|
|
|
|
box_modelteamupdater( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self hide();
|
|
|
|
foreach ( var_2 in level.players )
|
|
{
|
|
if ( var_2.team == var_0 )
|
|
self showtoplayer( var_2 );
|
|
}
|
|
|
|
for (;;)
|
|
{
|
|
level waittill( "joined_team" );
|
|
self hide();
|
|
|
|
foreach ( var_2 in level.players )
|
|
{
|
|
if ( var_2.team == var_0 )
|
|
self showtoplayer( var_2 );
|
|
}
|
|
}
|
|
}
|
|
|
|
useholdthink( var_0, var_1 )
|
|
{
|
|
if ( isplayer( var_0 ) )
|
|
var_0 playerlinkto( self );
|
|
else
|
|
var_0 linkto( self );
|
|
|
|
var_0 playerlinkedoffsetenable();
|
|
var_0.boxparams = spawnstruct();
|
|
var_0.boxparams.curprogress = 0;
|
|
var_0.boxparams.inuse = 1;
|
|
var_0.boxparams.userate = 0;
|
|
|
|
if ( isdefined( var_1 ) )
|
|
var_0.boxparams.usetime = var_1;
|
|
else
|
|
var_0.boxparams.usetime = 3000;
|
|
|
|
var_0 maps\mp\alien\_utility::disable_weapon_timeout( var_1 + 0.05, "deployable_weapon_management" );
|
|
|
|
if ( isplayer( var_0 ) )
|
|
var_0 thread personalusebar( self );
|
|
|
|
var_2 = useholdthinkloop( var_0 );
|
|
|
|
if ( isalive( var_0 ) )
|
|
{
|
|
var_0 maps\mp\alien\_utility::enable_weapon_wrapper( "deployable_weapon_management" );
|
|
var_0 unlink();
|
|
}
|
|
|
|
if ( !isdefined( self ) )
|
|
return 0;
|
|
|
|
var_0.boxparams.inuse = 0;
|
|
var_0.boxparams.curprogress = 0;
|
|
return var_2;
|
|
}
|
|
|
|
personalusebar( var_0 )
|
|
{
|
|
self endon( "disconnect" );
|
|
var_1 = maps\mp\gametypes\_hud_util::createprimaryprogressbar( 0, 25 );
|
|
var_2 = maps\mp\gametypes\_hud_util::createprimaryprogressbartext( 0, 25 );
|
|
var_2 settext( level.boxsettings[var_0.boxtype].capturingstring );
|
|
var_3 = -1;
|
|
|
|
while ( maps\mp\_utility::isreallyalive( self ) && isdefined( var_0 ) && self.boxparams.inuse && var_0.isusable && !level.gameended )
|
|
{
|
|
if ( var_3 != self.boxparams.userate )
|
|
{
|
|
if ( self.boxparams.curprogress > self.boxparams.usetime )
|
|
self.boxparams.curprogress = self.boxparams.usetime;
|
|
|
|
var_1 maps\mp\gametypes\_hud_util::updatebar( self.boxparams.curprogress / self.boxparams.usetime, 1000 / self.boxparams.usetime * self.boxparams.userate );
|
|
|
|
if ( !self.boxparams.userate )
|
|
{
|
|
var_1 maps\mp\gametypes\_hud_util::hideelem();
|
|
var_2 maps\mp\gametypes\_hud_util::hideelem();
|
|
}
|
|
else
|
|
{
|
|
var_1 maps\mp\gametypes\_hud_util::showelem();
|
|
var_2 maps\mp\gametypes\_hud_util::showelem();
|
|
}
|
|
}
|
|
|
|
var_3 = self.boxparams.userate;
|
|
wait 0.05;
|
|
}
|
|
|
|
var_1 maps\mp\gametypes\_hud_util::destroyelem();
|
|
var_2 maps\mp\gametypes\_hud_util::destroyelem();
|
|
}
|
|
|
|
useholdthinkloop( var_0 )
|
|
{
|
|
while ( !level.gameended && isdefined( self ) && maps\mp\_utility::isreallyalive( var_0 ) && var_0 usebuttonpressed() && var_0.boxparams.curprogress < var_0.boxparams.usetime )
|
|
{
|
|
var_0.boxparams.curprogress = var_0.boxparams.curprogress + 50 * var_0.boxparams.userate;
|
|
|
|
if ( isdefined( var_0.objectivescaler ) )
|
|
var_0.boxparams.userate = 1 * var_0.objectivescaler;
|
|
else
|
|
var_0.boxparams.userate = 1;
|
|
|
|
if ( var_0.boxparams.curprogress >= var_0.boxparams.usetime )
|
|
return maps\mp\_utility::isreallyalive( var_0 );
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
disablewhenjuggernaut()
|
|
{
|
|
level endon( "game_ended" );
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
level waittill( "juggernaut_equipped", var_0 );
|
|
maps\mp\_entityheadicons::setheadicon( var_0, "", ( 0, 0, 0 ) );
|
|
box_disableplayeruse( var_0 );
|
|
thread doubledip( var_0 );
|
|
}
|
|
}
|
|
|
|
addboxtolevelarray()
|
|
{
|
|
level.deployable_box[self.boxtype][self getentitynumber()] = self;
|
|
}
|
|
|
|
removeboxfromlevelarray()
|
|
{
|
|
level.deployable_box[self.boxtype][self getentitynumber()] = undefined;
|
|
}
|
|
|
|
default_canusedeployable( var_0 )
|
|
{
|
|
if ( ( isdefined( var_0 ) && var_0.owner == self || maps\mp\alien\_prestige::prestige_getnodeployables() == 1.0 ) && !isdefined( var_0.air_dropped ) )
|
|
return 0;
|
|
|
|
return 1;
|
|
}
|
|
|
|
default_onusedeployable( var_0 )
|
|
{
|
|
thread maps\mp\alien\_persistence::deployablebox_used_track( var_0 );
|
|
maps\mp\alien\_utility::deployable_box_onuse_message( var_0 );
|
|
}
|
|
|
|
default_tryusedeployable( var_0, var_1 )
|
|
{
|
|
var_2 = maps\mp\alien\_combat_resources::alien_begindeployableviamarker( var_0, var_1 );
|
|
|
|
if ( !isdefined( var_2 ) || !var_2 )
|
|
return 0;
|
|
|
|
return 1;
|
|
}
|
|
|
|
init_deployable( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( level.boxsettings ) )
|
|
level.boxsettings = [];
|
|
|
|
level.boxsettings[var_0] = var_1;
|
|
|
|
if ( !isdefined( level.killstreakfuncs ) )
|
|
level.killstreakfuncs = [];
|
|
|
|
level.deployable_box[var_0] = [];
|
|
}
|