class NiceSyringeAltFire extends NiceMeleeFire; var float InjectDelay; var float HealeeRange; function DoFireEffect() { SetTimer(InjectDelay, False); if ( Level.NetMode != NM_StandAlone && Level.Game.NumPlayers > 1 && KFPlayerController(Instigator.Controller) != none && KFSteamStatsAndAchievements(KFPlayerController(Instigator.Controller).SteamStatsAndAchievements) != none ) { KFSteamStatsAndAchievements(KFPlayerController(Instigator.Controller).SteamStatsAndAchievements).AddSelfHeal(); } } function Timer() { local float HealSum, HealPotency; local KFPlayerReplicationInfo KFPRI; KFPRI = KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo); HealSum = NiceSyringe(Weapon).HealBoostAmount; HealPotency = 1.0; if ( KFPRI != none && KFPRI.ClientVeteranSkill != none ) HealPotency = KFPRI.ClientVeteranSkill.Static.GetHealPotency(KFPRI); HealSum *= HealPotency; Load = 1; ReduceAmmoClient(); if ( NiceHumanPawn(Instigator) != none ) NiceHumanPawn(Instigator).TakeHealing(NiceHumanPawn(Instigator), HealSum, HealPotency, KFWeapon(Instigator.Weapon)); else KFPawn(Instigator).GiveHealth(HealSum, Instigator.HealthMax); } function bool AllowFire() { if (Instigator.Health >= Instigator.HealthMax) return false; return Weapon.AmmoAmount(ThisModeNum) >= AmmoPerFire; } event ModeDoFire() { Load = 1; Super.ModeDoFire(); } function PlayFiring() { if ( Weapon.Mesh != None ) { if ( FireCount > 0 ) { if ( Weapon.HasAnim(FireLoopAnim) ) { Weapon.PlayAnim(FireLoopAnim, FireLoopAnimRate, 0.0); } else { Weapon.PlayAnim(FireAnim, FireAnimRate, 0.0); } } else { Weapon.PlayAnim(FireAnim, FireAnimRate, 0.0); } } Weapon.PlayOwnedSound(FireSound,SLOT_Interact,TransientSoundVolume,,TransientSoundRadius,Default.FireAnimRate/FireAnimRate,false); ClientPlayForceFeedback(FireForce); // jdf FireCount++; } defaultproperties { AmmoClass=class'NiceSyringeAmmo' AmmoPerFire=1 TweenTime=0.1 TransientSoundVolume=1.8 FireAnim="AltFire" FireRate=3.60000 bModeExclusive=true InjectDelay=0.1 HealeeRange=70.000000 }