Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*******************************************************************
- // _perkfunctions.gsc
- //
- // Holds all the perk set/unset and listening functions
- //
- // Jordan Hirsh Sept. 11th 2008
- ********************************************************************/
- #include common_scripts\utility;
- #include maps\mp\_utility;
- #include maps\mp\gametypes\_hud_util;
- #include maps\mp\perks\_perks;
- blastshieldUseTracker( perkName, useFunc )
- {
- self endon ( "death" );
- self endon ( "disconnect" );
- self endon ( "end_perkUseTracker" );
- level endon ( "game_ended" );
- for ( ;; )
- {
- self waittill ( "empty_offhand" );
- if ( !isOffhandWeaponEnabled() )
- continue;
- self [[useFunc]]( self _hasPerk( "_specialty_blastshield" ) );
- }
- }
- perkUseDeathTracker()
- {
- self endon ( "disconnect" );
- self waittill("death");
- self._usePerkEnabled = undefined;
- }
- setRearView()
- {
- //self thread perkUseTracker( "specialty_rearview", ::toggleRearView );
- }
- unsetRearView()
- {
- self notify ( "end_perkUseTracker" );
- }
- toggleRearView( isEnabled )
- {
- if ( isEnabled )
- {
- self _setPerk( "_specialty_rearview" );
- self SetRearViewRenderEnabled(true);
- }
- else
- {
- self _unsetPerk( "_specialty_rearview" );
- self SetRearViewRenderEnabled(false);
- }
- }
- setEndGame()
- {
- if ( isdefined( self.endGame ) )
- return;
- self.maxhealth = ( maps\mp\gametypes\_tweakables::getTweakableValue( "player", "maxhealth" ) * 4 );
- self.health = self.maxhealth;
- self.endGame = true;
- self.attackerTable[0] = "";
- self visionSetNakedForPlayer("end_game", 5 );
- self thread endGameDeath( 7 );
- self.hasDoneCombat = true;
- }
- unsetEndGame()
- {
- self notify( "stopEndGame" );
- self.endGame = undefined;
- revertVisionSet();
- if (! isDefined( self.endGameTimer ) )
- return;
- self.endGameTimer destroyElem();
- self.endGameIcon destroyElem();
- }
- revertVisionSet()
- {
- self VisionSetNakedForPlayer( getDvar( "mapname" ), 1 );
- }
- endGameDeath( duration )
- {
- self endon( "death" );
- self endon( "disconnect" );
- self endon( "joined_team" );
- level endon( "game_ended" );
- self endon( "stopEndGame" );
- wait( duration + 1 );
- //self visionSetNakedForPlayer("end_game2", 1 );
- //wait(1);
- self _suicide();
- }
- setCombatHigh()
- {
- self endon( "death" );
- self endon( "disconnect" );
- self endon( "unset_combathigh" );
- level endon( "end_game" );
- self.damageBlockedTotal = 0;
- //self visionSetNakedForPlayer( "end_game", 1 );
- if ( level.splitscreen )
- {
- yOffset = 56;
- iconSize = 21; // 32/1.5
- }
- else
- {
- yOffset = 112;
- iconSize = 32;
- }
- self.combatHighOverlay = newClientHudElem( self );
- self.combatHighOverlay.x = 0;
- self.combatHighOverlay.y = 0;
- self.combatHighOverlay.alignX = "left";
- self.combatHighOverlay.alignY = "top";
- self.combatHighOverlay.horzAlign = "fullscreen";
- self.combatHighOverlay.vertAlign = "fullscreen";
- self.combatHighOverlay setshader ( "combathigh_overlay", 640, 480 );
- self.combatHighOverlay.sort = -10;
- self.combatHighOverlay.archived = true;
- self.combatHighTimer = createTimer( "hudsmall", 1.0 );
- self.combatHighTimer setPoint( "CENTER", "CENTER", 0, yOffset );
- self.combatHighTimer setTimer( 10.0 );
- self.combatHighTimer.color = (.8,.8,0);
- self.combatHighTimer.archived = false;
- self.combatHighTimer.foreground = true;
- self.combatHighIcon = self createIcon( "specialty_painkiller", iconSize, iconSize );
- self.combatHighIcon.alpha = 0;
- self.combatHighIcon setParent( self.combatHighTimer );
- self.combatHighIcon setPoint( "BOTTOM", "TOP" );
- self.combatHighIcon.archived = true;
- self.combatHighIcon.sort = 1;
- self.combatHighIcon.foreground = true;
- self.combatHighOverlay.alpha = 0.0;
- self.combatHighOverlay fadeOverTime( 1.0 );
- self.combatHighIcon fadeOverTime( 1.0 );
- self.combatHighOverlay.alpha = 1.0;
- self.combatHighIcon.alpha = 0.85;
- self thread unsetCombatHighOnDeath();
- wait( 8 );
- self.combatHighIcon fadeOverTime( 2.0 );
- self.combatHighIcon.alpha = 0.0;
- self.combatHighOverlay fadeOverTime( 2.0 );
- self.combatHighOverlay.alpha = 0.0;
- self.combatHighTimer fadeOverTime( 2.0 );
- self.combatHighTimer.alpha = 0.0;
- wait( 2 );
- self.damageBlockedTotal = undefined;
- self _unsetPerk( "specialty_combathigh" );
- }
- unsetCombatHighOnDeath()
- {
- self endon ( "disconnect" );
- self endon ( "unset_combathigh" );
- self waittill ( "death" );
- self thread _unsetPerk( "specialty_combathigh" );
- }
- unsetCombatHigh()
- {
- self notify ( "unset_combathigh" );
- self.combatHighOverlay destroy();
- self.combatHighIcon destroy();
- self.combatHighTimer destroy();
- }
- setSiege()
- {
- self thread trackSiegeEnable();
- self thread trackSiegeDissable();
- }
- trackSiegeEnable()
- {
- self endon ( "death" );
- self endon ( "disconnect" );
- self endon ( "stop_trackSiege" );
- for ( ;; )
- {
- self waittill ( "gambit_on" );
- //self setStance( "crouch" );
- //self thread stanceStateListener();
- //self thread jumpStateListener();
- self.moveSpeedScaler = 0;
- self maps\mp\gametypes\_weapons::updateMoveSpeedScale( "primary" );
- class = weaponClass( self getCurrentWeapon() );
- if ( class == "pistol" || class == "smg" )
- self setSpreadOverride( 1 );
- else
- self setSpreadOverride( 2 );
- self player_recoilScaleOn( 0 );
- self allowJump(false);
- }
- }
- trackSiegeDissable()
- {
- self endon ( "death" );
- self endon ( "disconnect" );
- self endon ( "stop_trackSiege" );
- for ( ;; )
- {
- self waittill ( "gambit_off" );
- unsetSiege();
- }
- }
- stanceStateListener()
- {
- self endon ( "death" );
- self endon ( "disconnect" );
- self notifyOnPlayerCommand( "adjustedStance", "+stance" );
- for ( ;; )
- {
- self waittill( "adjustedStance" );
- if ( self.moveSPeedScaler != 0 )
- continue;
- unsetSiege();
- }
- }
- jumpStateListener()
- {
- self endon ( "death" );
- self endon ( "disconnect" );
- self notifyOnPlayerCommand( "jumped", "+goStand" );
- for ( ;; )
- {
- self waittill( "jumped" );
- if ( self.moveSPeedScaler != 0 )
- continue;
- unsetSiege();
- }
- }
- unsetSiege()
- {
- self.moveSpeedScaler = 1;
- //if siege is not cut add check to see if
- //using lightweight and siege for movespeed scaler
- self resetSpreadOverride();
- self maps\mp\gametypes\_weapons::updateMoveSpeedScale( "primary" );
- self player_recoilScaleOff();
- self allowJump(true);
- }
- setFinalStand()
- {
- self _setperk( "specialty_pistoldeath");
- }
- unsetFinalStand()
- {
- self _unsetperk( "specialty_pistoldeath" );
- }
- setChallenger()
- {
- if ( !level.hardcoreMode )
- {
- self.maxhealth = maps\mp\gametypes\_tweakables::getTweakableValue( "player", "maxhealth" );
- if ( isDefined( self.xpScaler ) && self.xpScaler == 1 && self.maxhealth > 30 )
- {
- self.xpScaler = 2;
- }
- }
- }
- unsetChallenger()
- {
- self.xpScaler = 1;
- }
- setSaboteur()
- {
- self.objectiveScaler = 1.2;
- }
- unsetSaboteur()
- {
- self.objectiveScaler = 1;
- }
- setLightWeight()
- {
- self.moveSpeedScaler = 1.10;
- self maps\mp\gametypes\_weapons::updateMoveSpeedScale( "primary" );
- }
- unsetLightWeight()
- {
- self.moveSpeedScaler = 1;
- self maps\mp\gametypes\_weapons::updateMoveSpeedScale( "primary" );
- }
- setBlackBox()
- {
- self.killStreakScaler = 1.5;
- }
- unsetBlackBox()
- {
- self.killStreakScaler = 1;
- }
- setSteelNerves()
- {
- self _setperk( "specialty_bulletaccuracy" );
- self _setperk( "specialty_holdbreath" );
- }
- unsetSteelNerves()
- {
- self _unsetperk( "specialty_bulletaccuracy" );
- self _unsetperk( "specialty_holdbreath" );
- }
- setDelayMine()
- {
- }
- unsetDelayMine()
- {
- }
- setBackShield()
- {
- self AttachShieldModel( "weapon_riot_shield_mp", "tag_shield_back" );
- }
- unsetBackShield()
- {
- self DetachShieldModel( "weapon_riot_shield_mp", "tag_shield_back" );
- }
- setLocalJammer()
- {
- if ( !self isEMPed() )
- self RadarJamOn();
- }
- unsetLocalJammer()
- {
- self RadarJamOff();
- }
- setAC130()
- {
- self thread killstreakThink( "ac130", 7, "end_ac130Think" );
- }
- unsetAC130()
- {
- self notify ( "end_ac130Think" );
- }
- setSentryMinigun()
- {
- self thread killstreakThink( "airdrop_sentry_minigun", 2, "end_sentry_minigunThink" );
- }
- unsetSentryMinigun()
- {
- self notify ( "end_sentry_minigunThink" );
- }
- setCarePackage()
- {
- self thread killstreakThink( "airdrop", 2, "endCarePackageThink" );
- }
- unsetCarePackage()
- {
- self notify ( "endCarePackageThink" );
- }
- setTank()
- {
- self thread killstreakThink( "tank", 6, "end_tankThink" );
- }
- unsetTank()
- {
- self notify ( "end_tankThink" );
- }
- setPrecision_airstrike()
- {
- println( "!precision airstrike!" );
- self thread killstreakThink( "precision_airstrike", 6, "end_precision_airstrike" );
- }
- unsetPrecision_airstrike()
- {
- self notify ( "end_precision_airstrike" );
- }
- setPredatorMissile()
- {
- self thread killstreakThink( "predator_missile", 4, "end_predator_missileThink" );
- }
- unsetPredatorMissile()
- {
- self notify ( "end_predator_missileThink" );
- }
- setHelicopterMinigun()
- {
- self thread killstreakThink( "helicopter_minigun", 5, "end_helicopter_minigunThink" );
- }
- unsetHelicopterMinigun()
- {
- self notify ( "end_helicopter_minigunThink" );
- }
- killstreakThink( streakName, streakVal, endonString )
- {
- self endon ( "death" );
- self endon ( "disconnect" );
- self endon ( endonString );
- for ( ;; )
- {
- self waittill ( "killed_enemy" );
- if ( self.pers["cur_kill_streak"] != streakVal )
- continue;
- self thread maps\mp\killstreaks\_killstreaks::giveKillstreak( streakName );
- self thread maps\mp\gametypes\_hud_message::killstreakSplashNotify( streakName, streakVal );
- return;
- }
- }
- setThermal()
- {
- self ThermalVisionOn();
- }
- unsetThermal()
- {
- self ThermalVisionOff();
- }
- setOneManArmy()
- {
- self thread oneManArmyWeaponChangeTracker();
- }
- unsetOneManArmy()
- {
- self notify ( "stop_oneManArmyTracker" );
- }
- oneManArmyWeaponChangeTracker()
- {
- self endon ( "death" );
- self endon ( "disconnect" );
- level endon ( "game_ended" );
- self endon ( "stop_oneManArmyTracker" );
- for ( ;; )
- {
- self waittill( "weapon_change", newWeapon );
- if ( newWeapon != "onemanarmy_mp" )
- continue;
- //if ( self isUsingRemote() )
- // continue;
- self thread selectOneManArmyClass();
- }
- }
- isOneManArmyMenu( menu )
- {
- if ( menu == game["menu_onemanarmy"] )
- return true;
- if ( isDefined( game["menu_onemanarmy_defaults_splitscreen"] ) && menu == game["menu_onemanarmy_defaults_splitscreen"] )
- return true;
- if ( isDefined( game["menu_onemanarmy_custom_splitscreen"] ) && menu == game["menu_onemanarmy_custom_splitscreen"] )
- return true;
- return false;
- }
- selectOneManArmyClass()
- {
- self endon ( "death" );
- self endon ( "disconnect" );
- level endon ( "game_ended" );
- self _disableWeaponSwitch();
- self openPopupMenu( game["menu_onemanarmy"] );
- self thread closeOMAMenuOnDeath();
- self waittill ( "menuresponse", menu, className );
- self _enableWeaponSwitch();
- if ( className == "back" || !isOneManArmyMenu( menu ) || self isUsingRemote() )
- {
- if ( self getCurrentWeapon() == "onemanarmy_mp" )
- {
- self _disableWeaponSwitch();
- self switchToWeapon( self getLastWeapon() );
- self waittill ( "weapon_change" );
- self _enableWeaponSwitch();
- }
- return;
- }
- self thread giveOneManArmyClass( className );
- }
- closeOMAMenuOnDeath()
- {
- self endon ( "menuresponse" );
- self endon ( "disconnect" );
- level endon ( "game_ended" );
- self waittill ( "death" );
- self _enableWeaponSwitch();
- self closePopupMenu();
- }
- giveOneManArmyClass( className )
- {
- self endon ( "death" );
- self endon ( "disconnect" );
- level endon ( "game_ended" );
- if ( self _hasPerk( "specialty_omaquickchange" ) )
- {
- changeDuration = 3.0;
- self playLocalSound( "foly_onemanarmy_bag3_plr" );
- self playSoundToTeam( "foly_onemanarmy_bag3_npc", "allies", self );
- self playSoundToTeam( "foly_onemanarmy_bag3_npc", "axis", self );
- }
- else
- {
- changeDuration = 6.0;
- self playLocalSound( "foly_onemanarmy_bag6_plr" );
- self playSoundToTeam( "foly_onemanarmy_bag6_npc", "allies", self );
- self playSoundToTeam( "foly_onemanarmy_bag6_npc", "axis", self );
- }
- self thread omaUseBar( changeDuration );
- self _disableWeapon();
- self _disableOffhandWeapons();
- wait ( changeDuration );
- self _enableWeapon();
- self _enableOffhandWeapons();
- self.OMAClassChanged = true;
- self maps\mp\gametypes\_class::giveLoadout( self.pers["team"], className, false );
- // handle the fact that detachAll in giveLoadout removed the CTF flag from our back
- // it would probably be better to handle this in _detachAll itself, but this is a safety fix
- if ( isDefined( self.carryFlag ) )
- self attach( self.carryFlag, "J_spine4", true );
- self notify ( "changed_kit" );
- level notify ( "changed_kit" );
- }
- omaUseBar( duration )
- {
- self endon( "disconnect" );
- useBar = createPrimaryProgressBar( 25 );
- useBarText = createPrimaryProgressBarText( 25 );
- useBarText setText( &"MPUI_CHANGING_KIT" );
- useBar updateBar( 0, 1 / duration );
- for ( waitedTime = 0; waitedTime < duration && isAlive( self ) && !level.gameEnded; waitedTime += 0.05 )
- wait ( 0.05 );
- useBar destroyElem();
- useBarText destroyElem();
- }
- setBlastShield()
- {
- self thread blastshieldUseTracker( "specialty_blastshield", ::toggleBlastShield );
- self SetWeaponHudIconOverride( "primaryoffhand", "specialty_blastshield" );
- }
- unsetBlastShield()
- {
- self notify ( "end_perkUseTracker" );
- self SetWeaponHudIconOverride( "primaryoffhand", "none" );
- }
- toggleBlastShield( isEnabled )
- {
- if ( !isEnabled )
- {
- self VisionSetNakedForPlayer( "black_bw", 0.15 );
- wait ( 0.15 );
- self _setPerk( "_specialty_blastshield" );
- self VisionSetNakedForPlayer( getDvar( "mapname" ), 0 );
- self playSoundToPlayer( "item_blast_shield_on", self );
- }
- else
- {
- self VisionSetNakedForPlayer( "black_bw", 0.15 );
- wait ( 0.15 );
- self _unsetPerk( "_specialty_blastshield" );
- self VisionSetNakedForPlayer( getDvar( "mapname" ), 0 );
- self playSoundToPlayer( "item_blast_shield_off", self );
- }
- }
- setFreefall()
- {
- //eventually set a listener to do a roll when falling damage is taken
- }
- unsetFreefall()
- {
- }
- setTacticalInsertion()
- {
- self _giveWeapon( "flare_mp", 0 );
- self giveStartAmmo( "flare_mp" );
- self thread monitorTIUse();
- }
- unsetTacticalInsertion()
- {
- self notify( "end_monitorTIUse" );
- }
- clearPreviousTISpawnpoint()
- {
- self waittill_any ( "disconnect", "joined_team", "joined_spectators" );
- if ( isDefined ( self.setSpawnpoint ) )
- self deleteTI( self.setSpawnpoint );
- }
- updateTISpawnPosition()
- {
- self endon ( "death" );
- self endon ( "disconnect" );
- level endon ( "game_ended" );
- self endon ( "end_monitorTIUse" );
- while ( isReallyAlive( self ) )
- {
- if ( self isValidTISpawnPosition() )
- self.TISpawnPosition = self.origin;
- wait ( 0.05 );
- }
- }
- isValidTISpawnPosition()
- {
- if ( CanSpawn( self.origin ) && self IsOnGround() )
- return true;
- else
- return false;
- }
- monitorTIUse()
- {
- self endon ( "death" );
- self endon ( "disconnect" );
- level endon ( "game_ended" );
- self endon ( "end_monitorTIUse" );
- self thread updateTISpawnPosition();
- self thread clearPreviousTISpawnpoint();
- for ( ;; )
- {
- self waittill( "grenade_fire", lightstick, weapName );
- if ( weapName != "flare_mp" )
- continue;
- //lightstick delete();
- if ( isDefined( self.setSpawnPoint ) )
- self deleteTI( self.setSpawnPoint );
- if ( !isDefined( self.TISpawnPosition ) )
- continue;
- if ( self touchingBadTrigger() )
- continue;
- TIGroundPosition = playerPhysicsTrace( self.TISpawnPosition + (0,0,16), self.TISpawnPosition - (0,0,2048) ) + (0,0,1);
- glowStick = spawn( "script_model", TIGroundPosition );
- glowStick.angles = self.angles;
- glowStick.team = self.team;
- glowStick.enemyTrigger = spawn( "script_origin", TIGroundPosition );
- glowStick thread GlowStickSetupAndWaitForDeath( self );
- glowStick.playerSpawnPos = self.TISpawnPosition;
- glowStick thread maps\mp\gametypes\_weapons::createBombSquadModel( "weapon_light_stick_tactical_bombsquad", "tag_fire_fx", level.otherTeam[self.team], self );
- self.setSpawnPoint = glowStick;
- return;
- }
- }
- GlowStickSetupAndWaitForDeath( owner )
- {
- self setModel( level.spawnGlowModel["enemy"] );
- if ( level.teamBased )
- self maps\mp\_entityheadIcons::setTeamHeadIcon( self.team , (0,0,20) );
- else
- self maps\mp\_entityheadicons::setPlayerHeadIcon( owner, (0,0,20) );
- self thread GlowStickDamageListener( owner );
- self thread GlowStickEnemyUseListener( owner );
- self thread GlowStickUseListener( owner );
- self thread GlowStickTeamUpdater( level.otherTeam[self.team], level.spawnGlow["enemy"], owner );
- dummyGlowStick = spawn( "script_model", self.origin+ (0,0,0) );
- dummyGlowStick.angles = self.angles;
- dummyGlowStick setModel( level.spawnGlowModel["friendly"] );
- dummyGlowStick setContents( 0 );
- dummyGlowStick thread GlowStickTeamUpdater( self.team, level.spawnGlow["friendly"], owner );
- dummyGlowStick playLoopSound( "emt_road_flare_burn" );
- self waittill ( "death" );
- dummyGlowStick stopLoopSound();
- dummyGlowStick delete();
- }
- GlowStickTeamUpdater( showForTeam, showEffect, owner )
- {
- self endon ( "death" );
- // PlayFXOnTag fails if run on the same frame the parent entity was created
- wait ( 0.05 );
- //PlayFXOnTag( showEffect, self, "TAG_FX" );
- angles = self getTagAngles( "tag_fire_fx" );
- fxEnt = SpawnFx( showEffect, self getTagOrigin( "tag_fire_fx" ), anglesToForward( angles ), anglesToUp( angles ) );
- TriggerFx( fxEnt );
- self thread deleteOnDeath( fxEnt );
- for ( ;; )
- {
- self hide();
- fxEnt hide();
- foreach ( player in level.players )
- {
- if ( player.team == showForTeam && level.teamBased )
- {
- self showToPlayer( player );
- fxEnt showToPlayer( player );
- }
- else if ( !level.teamBased && player == owner && showEffect == level.spawnGlow["friendly"] )
- {
- self showToPlayer( player );
- fxEnt showToPlayer( player );
- }
- else if ( !level.teamBased && player != owner && showEffect == level.spawnGlow["enemy"] )
- {
- self showToPlayer( player );
- fxEnt showToPlayer( player );
- }
- }
- level waittill_either ( "joined_team", "player_spawned" );
- }
- }
- deleteOnDeath( ent )
- {
- self waittill( "death" );
- if ( isdefined( ent ) )
- ent delete();
- }
- GlowStickDamageListener( owner )
- {
- self endon ( "death" );
- self setCanDamage( true );
- // use large health to work around teamkilling issue
- self.health = 5000;
- for ( ;; )
- {
- self waittill ( "damage", amount, attacker );
- if ( level.teambased && isDefined( owner ) && attacker != owner && ( isDefined( attacker.team ) && attacker.team == self.team ) )
- {
- self.health += amount;
- continue;
- }
- if ( self.health < (5000-20) )
- {
- if ( isDefined( owner ) && attacker != owner )
- {
- attacker notify ( "destroyed_insertion", owner );
- attacker notify( "destroyed_explosive" ); // count towards SitRep Pro challenge
- owner thread leaderDialogOnPlayer( "ti_destroyed" );
- }
- attacker thread deleteTI( self );
- }
- }
- }
- GlowStickUseListener( owner )
- {
- self endon ( "death" );
- level endon ( "game_ended" );
- owner endon ( "disconnect" );
- self setCursorHint( "HINT_NOICON" );
- self setHintString( &"MP_PICKUP_TI" );
- self thread updateEnemyUse( owner );
- for ( ;; )
- {
- self waittill ( "trigger", player );
- player playSound( "chemlight_pu" );
- player thread setTacticalInsertion();
- player thread deleteTI( self );
- }
- }
- updateEnemyUse( owner )
- {
- self endon ( "death" );
- for ( ;; )
- {
- self setSelfUsable( owner );
- level waittill_either ( "joined_team", "player_spawned" );
- }
- }
- deleteTI( TI )
- {
- if (isDefined( TI.enemyTrigger ) )
- TI.enemyTrigger Delete();
- spot = TI.origin;
- spotAngles = TI.angles;
- TI Delete();
- dummyGlowStick = spawn( "script_model", spot );
- dummyGlowStick.angles = spotAngles;
- dummyGlowStick setModel( level.spawnGlowModel["friendly"] );
- dummyGlowStick setContents( 0 );
- thread dummyGlowStickDelete( dummyGlowStick );
- }
- dummyGlowStickDelete( stick )
- {
- wait(2.5);
- stick Delete();
- }
- GlowStickEnemyUseListener( owner )
- {
- self endon ( "death" );
- level endon ( "game_ended" );
- owner endon ( "disconnect" );
- self.enemyTrigger setCursorHint( "HINT_NOICON" );
- self.enemyTrigger setHintString( &"MP_DESTROY_TI" );
- self.enemyTrigger makeEnemyUsable( owner );
- for ( ;; )
- {
- self.enemyTrigger waittill ( "trigger", player );
- player notify ( "destroyed_insertion", owner );
- player notify( "destroyed_explosive" ); // count towards SitRep Pro challenge
- //playFX( level.spawnGlowSplat, self.origin);
- if ( isDefined( owner ) && player != owner )
- owner thread leaderDialogOnPlayer( "ti_destroyed" );
- player thread deleteTI( self );
- }
- }
- setLittlebirdSupport()
- {
- self thread killstreakThink( "littlebird_support", 2, "end_littlebird_support_think" );
- }
- unsetLittlebirdSupport()
- {
- self notify ( "end_littlebird_support_think" );
- }
- setC4Death()
- {
- if ( ! self _hasperk( "specialty_pistoldeath" ) )
- self _setperk( "specialty_pistoldeath");
- }
- unsetC4Death()
- {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement