init
This commit is contained in:
155
maps/mp/killstreaks/_perkstreaks.gsc
Normal file
155
maps/mp/killstreaks/_perkstreaks.gsc
Normal file
@ -0,0 +1,155 @@
|
||||
#include maps\mp\_utility;
|
||||
#include common_scripts\utility;
|
||||
|
||||
/*
|
||||
Perks as killstreaks:
|
||||
The player will earn the killstreak and automatically get the perk.
|
||||
This has been repurposed to be used for very simple killstreaks that are perk-like.
|
||||
*/
|
||||
|
||||
KILLSTREAK_GIMME_SLOT = 0;
|
||||
KILLSTREAK_SLOT_1 = 1;
|
||||
KILLSTREAK_SLOT_2 = 2;
|
||||
KILLSTREAK_SLOT_3 = 3;
|
||||
KILLSTREAK_ALL_PERKS_SLOT = 4;
|
||||
KILLSTREAK_STACKING_START_SLOT = 5;
|
||||
|
||||
init()
|
||||
{
|
||||
level.killStreakFuncs[ "specialty_fastsprintrecovery_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_fastreload_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_lightweight_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_marathon_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_stalker_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_reducedsway_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_quickswap_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_pitcher_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_bulletaccuracy_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_quickdraw_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_sprintreload_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_silentkill_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_blindeye_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_gpsjammer_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_quieter_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_incog_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_paint_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_scavenger_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_detectexplosive_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_selectivehearing_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_comexp_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_falldamage_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_regenfaster_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_sharp_focus_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_stun_resistance_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "_specialty_blastshield_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_gunsmith_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_extraammo_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_extra_equipment_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_extra_deadly_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_extra_attachment_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_explosivedamage_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_gambler_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_hardline_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_twoprimaries_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_boom_ks" ] = ::tryUsePerkStreak;
|
||||
level.killStreakFuncs[ "specialty_deadeye_ks" ] = ::tryUsePerkStreak;
|
||||
|
||||
level.killStreakFuncs[ "all_perks_bonus" ] = ::tryUseAllPerks;
|
||||
|
||||
level.killStreakFuncs[ "speed_boost" ] = ::tryUseSpeedBoost;
|
||||
level.killStreakFuncs[ "refill_grenades" ] = ::tryUseRefillGrenades;
|
||||
level.killStreakFuncs[ "refill_ammo" ] = ::tryUseRefillAmmo;
|
||||
level.killStreakFuncs[ "regen_faster" ] = ::tryUseRegenFaster;
|
||||
}
|
||||
|
||||
tryUseSpeedBoost( lifeId, streakName )
|
||||
{
|
||||
self doKillstreakFunctions( "specialty_juiced", "speed_boost" );
|
||||
return true;
|
||||
}
|
||||
|
||||
tryUseRefillGrenades( lifeId, streakName )
|
||||
{
|
||||
self doKillstreakFunctions( "specialty_refill_grenades", "refill_grenades" );
|
||||
return true;
|
||||
}
|
||||
|
||||
tryUseRefillAmmo( lifeId, streakName )
|
||||
{
|
||||
self doKillstreakFunctions( "specialty_refill_ammo", "refill_ammo" );
|
||||
return true;
|
||||
}
|
||||
|
||||
tryUseRegenFaster( lifeId, streakName )
|
||||
{
|
||||
self doKillstreakFunctions( "specialty_regenfaster", "regen_faster" );
|
||||
return true;
|
||||
}
|
||||
|
||||
tryUseAllPerks( lifeId, streakName )
|
||||
{
|
||||
// left blank on purpose
|
||||
return true;
|
||||
}
|
||||
|
||||
tryUsePerkStreak( lifeId, streakName )
|
||||
{
|
||||
AssertEx( IsDefined( streakName ), "tryUsePerkStreak needs a streakName instead of undefined" );
|
||||
perk = strip_suffix( streakName, "_ks" );
|
||||
self doPerkFunctions( perk );
|
||||
return true;
|
||||
}
|
||||
|
||||
doPerkFunctions( perkName )
|
||||
{
|
||||
self givePerk( perkName, false );
|
||||
self thread watchDeath( perkName );
|
||||
self thread checkForPerkUpgrade( perkName );
|
||||
|
||||
if( perkName == "specialty_hardline" )
|
||||
self maps\mp\killstreaks\_killstreaks::setStreakCountToNext();
|
||||
|
||||
self maps\mp\_matchdata::logKillstreakEvent( perkName + "_ks", self.origin );
|
||||
}
|
||||
|
||||
doKillstreakFunctions( perkName, killstreakEvent )
|
||||
{
|
||||
self givePerk( perkName, false );
|
||||
|
||||
if( IsDefined( killstreakEvent ) )
|
||||
self maps\mp\_matchdata::logKillstreakEvent( killstreakEvent, self.origin );
|
||||
}
|
||||
|
||||
watchDeath( perkName )
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
self waittill( "death" );
|
||||
self _unsetPerk( perkName );
|
||||
//self _unsetExtraPerks( perkName );
|
||||
}
|
||||
|
||||
checkForPerkUpgrade( perkName )
|
||||
{
|
||||
// check for pro version
|
||||
perk_upgrade = self maps\mp\gametypes\_class::getPerkUpgrade( perkName );
|
||||
if( perk_upgrade != "specialty_null" )
|
||||
{
|
||||
self givePerk( perk_upgrade, false );
|
||||
self thread watchDeath( perk_upgrade );
|
||||
}
|
||||
}
|
||||
|
||||
isPerkStreakOn( streakName ) // self == player
|
||||
{
|
||||
// return whether the perk is available right now or not
|
||||
for( i = KILLSTREAK_SLOT_1; i < KILLSTREAK_SLOT_3 + 1; i++ )
|
||||
{
|
||||
if( IsDefined( self.pers[ "killstreaks" ][ i ].streakName ) && self.pers[ "killstreaks" ][ i ].streakName == streakName )
|
||||
{
|
||||
if( self.pers[ "killstreaks" ][ i ].available )
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
Reference in New Issue
Block a user