First commit
This commit is contained in:
commit
5b48414900
263 changed files with 24830 additions and 0 deletions
|
|
@ -0,0 +1,9 @@
|
|||
class NiceDamageTypeVetSharpshooter extends NiceWeaponDamageType
|
||||
abstract;
|
||||
static function ScoredNiceHeadshot(KFSteamStatsAndAchievements KFStatsAndAchievements, class<KFMonster> monsterClass, int HL){
|
||||
if(SRStatsBase(KFStatsAndAchievements) != none && SRStatsBase(KFStatsAndAchievements).Rep != none)
SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'NiceVetSharpshooterExp', Int(class'NicePack'.default.vetSharpHeadshotExpCost * getScale(HL)));
|
||||
super.ScoredNiceHeadshot(KFStatsAndAchievements, monsterClass, HL);
|
||||
}
|
||||
defaultproperties
|
||||
{
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
//==============================================================================
|
||||
// NicePack / NiceSharpshooterAbilitiesAdapter
|
||||
//==============================================================================
|
||||
// Temporary stand-in for future functionality.
|
||||
// Use this class to catch events from sharpshooter players' abilities.
|
||||
//==============================================================================
|
||||
// 'Nice pack' source
|
||||
// Do whatever the fuck you want with it
|
||||
// Author: dkanus
|
||||
// E-mail: dkanus@gmail.com
|
||||
//==============================================================================
|
||||
class NiceSharpshooterAbilitiesAdapter extends NiceAbilitiesAdapter;
|
||||
static function AbilityActivated( string abilityID,
NicePlayerController relatedPlayer){
|
||||
local NiceHumanPawn nicePawn;
|
||||
if(relatedPlayer == none) return;
|
||||
nicePawn = NiceHumanPawn(relatedPlayer.pawn);
|
||||
if(nicePawn == none)
return;
|
||||
if(abilityID == "Calibration"){
nicePawn.currentCalibrationState = CALSTATE_ACTIVE;
nicePawn.calibrateUsedZeds.length = 0;
nicePawn.calibrationScore = 1;
nicePawn.calibrationRemainingTime = 7.0;
nicePawn.calibrationHits = 0;
nicePawn.calibrationTotalShots = 0;
|
||||
}
|
||||
if(abilityID == class'NiceSkillSharpshooterGunslingerA'.default.abilityID){
nicePawn.gunslingerTimer =
class'NiceSkillSharpshooterGunslingerA'.default.duration;
|
||||
}
|
||||
}
|
||||
static function AbilityAdded( string abilityID,
NicePlayerController relatedPlayer){
|
||||
local NiceHumanPawn nicePawn;
|
||||
if(relatedPlayer == none) return;
|
||||
nicePawn = NiceHumanPawn(relatedPlayer.pawn);
|
||||
if(nicePawn == none)
return;
|
||||
if(abilityID == "Calibration"){
nicePawn.currentCalibrationState = CALSTATE_FINISHED;
nicePawn.calibrationScore = 1;
|
||||
}
|
||||
}
|
||||
static function AbilityRemoved( string abilityID,
NicePlayerController relatedPlayer){
|
||||
local NiceHumanPawn nicePawn;
|
||||
if(relatedPlayer == none) return;
|
||||
nicePawn = NiceHumanPawn(relatedPlayer.pawn);
|
||||
if(nicePawn == none)
return;
|
||||
if(abilityID == "Calibration")
nicePawn.currentCalibrationState = CALSTATE_NOABILITY;
|
||||
if(abilityID == class'NiceSkillSharpshooterGunslingerA'.default.abilityID){
nicePawn.gunslingerTimer = 0.0;
|
||||
}
|
||||
}
|
||||
static function ModAbilityCooldown( string abilityID,
NicePlayerController relatedPlayer,
out float cooldown){
|
||||
local NiceHumanPawn nicePawn;
|
||||
if(relatedPlayer == none) return;
|
||||
nicePawn = NiceHumanPawn(relatedPlayer.pawn);
|
||||
if( abilityID != class'NiceSkillSharpshooterGunslingerA'.default.abilityID
&& abilityID != class'NiceSkillSharpshooterReaperA'.default.abilityID)
return;
|
||||
switch(nicePawn.calibrationScore){
case 2:
cooldown *= 0.85;
break;
case 3:
cooldown *= 0.7;
break;
case 4:
cooldown *= 0.5;
break;
case 5:
cooldown *= 0.25;
break;
|
||||
}
|
||||
// Reduce calibration score
|
||||
if(nicePawn.calibrationScore > 1)
nicePawn.calibrationScore -= 1;
|
||||
}
|
||||
defaultproperties
|
||||
{
|
||||
}
|
||||
163
sources/Perks/Sharpshooter/NiceVetSharpshooter.uc
Normal file
163
sources/Perks/Sharpshooter/NiceVetSharpshooter.uc
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
class NiceVetSharpshooter extends NiceVeterancyTypes
|
||||
dependson(NiceAbilityManager)
|
||||
abstract;
|
||||
static function AddCustomStats(ClientPerkRepLink Other){
|
||||
Other.AddCustomValue(Class'NiceVetSharpshooterExp');
|
||||
}
|
||||
static function int GetStatValueInt(ClientPerkRepLink StatOther, byte ReqNum){
|
||||
return StatOther.GetCustomValueInt(Class'NiceVetSharpshooterExp');
|
||||
}
|
||||
static function array<int> GetProgressArray(byte ReqNum, optional out int DoubleScalingBase){
|
||||
return default.progressArray0;
|
||||
}
|
||||
static function float GetNiceHeadShotDamMulti(KFPlayerReplicationInfo KFPRI, NiceMonster zed, class<DamageType> DmgType){
|
||||
local float ret;
|
||||
local NicePlayerController nicePlayer;
|
||||
local NiceHumanPawn nicePawn;
|
||||
local float calibratedTalentBonus;
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
if(class<DamTypeMelee>(DmgType) != none || class<NiceDamageTypeVetBerserker>(DmgType) != none)
|
||||
return 1.0;
|
||||
ret = 1.0;
|
||||
if(KFPRI != none)
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
pickupClass = GetPickupFromDamageType(DmgType);
|
||||
if(nicePlayer != none)
|
||||
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
||||
//if(IsPerkedPickup(pickupClass)){
|
||||
ret += 0.25;
|
||||
if(nicePawn != none && class'NiceVetSharpshooter'.static.hasSkill(nicePlayer, class'NiceSkillSharpshooterTalent')){
|
||||
calibratedTalentBonus = 0.1f * Min(nicePawn.calibrationScore, 3);
|
||||
ret *= (1.0 + calibratedTalentBonus);
|
||||
}
|
||||
//}
|
||||
return ret;
|
||||
}
|
||||
static function float GetReloadSpeedModifierStatic(KFPlayerReplicationInfo KFPRI, class<KFWeapon> Other){
|
||||
local float reloadMult;
|
||||
//local float reloadScale;
|
||||
local NicePlayerController nicePlayer;
|
||||
local NiceHumanPawn nicePawn;
|
||||
local float calibratedReloadBonus;
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = GetPickupFromWeapon(Other);
|
||||
if(KFPRI != none)
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
reloadMult = 1.0;
|
||||
if(nicePlayer != none)
|
||||
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
||||
if(nicePlayer != none && nicePawn != none && class'NiceVetSharpshooter'.static.hasSkill(nicePlayer, class'NiceSkillSharpshooterHardWork')){
|
||||
//reloadScale = VSize(nicePlayer.pawn.velocity) / nicePlayer.pawn.groundSpeed;
|
||||
//reloadScale = 1.0 - reloadScale;
|
||||
if(nicePawn.calibrationScore >= 3)
|
||||
calibratedReloadBonus = class'NiceSkillSharpshooterHardWork'.default.reloadBonus;
|
||||
else if(nicePawn.calibrationScore == 2)
|
||||
calibratedReloadBonus = 0.5f * class'NiceSkillSharpshooterHardWork'.default.reloadBonus;
|
||||
else
|
||||
calibratedReloadBonus = 0.25f * class'NiceSkillSharpshooterHardWork'.default.reloadBonus;
|
||||
reloadMult *= 1.0 + calibratedReloadBonus;
|
||||
}
|
||||
if( nicePlayer != none && nicePlayer.abilityManager != none
|
||||
&& nicePlayer.abilityManager.IsAbilityActive(class'NiceSkillSharpshooterGunslingerA'.default.abilityID)){
|
||||
reloadMult *= class'NiceSkillSharpshooterGunslingerA'.default.reloadMult;
|
||||
}
|
||||
return reloadMult;
|
||||
}
|
||||
static function float GetFireSpeedModStatic(KFPlayerReplicationInfo KFPRI, class<Weapon> other){
|
||||
local float fireRateMult;
|
||||
local NicePlayerController nicePlayer;
|
||||
local NiceHumanPawn nicePawn;
|
||||
local float calibratedFireSpeedBonus;
|
||||
if(KFPRI != none)
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
fireRateMult = 1.0;
|
||||
if(nicePlayer != none)
|
||||
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
||||
if(nicePawn != none && class'NiceVetSharpshooter'.static.hasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillSharpshooterHardWork')){
|
||||
if(nicePawn.calibrationScore >= 3)
|
||||
calibratedFireSpeedBonus = class'NiceSkillSharpshooterHardWork'.default.fireRateBonus;
|
||||
else if(nicePawn.calibrationScore == 2)
|
||||
calibratedFireSpeedBonus = (2.0f/3.0f) * class'NiceSkillSharpshooterHardWork'.default.fireRateBonus;
|
||||
else
|
||||
calibratedFireSpeedBonus = (1.0f/3.0f) * class'NiceSkillSharpshooterHardWork'.default.fireRateBonus;
|
||||
fireRateMult *= 1.0f + calibratedFireSpeedBonus;
|
||||
}
|
||||
if( nicePlayer != none && nicePlayer.abilityManager != none
|
||||
&& nicePlayer.abilityManager.IsAbilityActive(class'NiceSkillSharpshooterGunslingerA'.default.abilityID)){
|
||||
fireRateMult *= class'NiceSkillSharpshooterGunslingerA'.default.fireRateMult;
|
||||
}
|
||||
return fireRateMult;
|
||||
}
|
||||
static function float ModifyRecoilSpread(KFPlayerReplicationInfo KFPRI, WeaponFire Other, out float Recoil){
|
||||
local NicePlayerController nicePlayer;
|
||||
if(KFPRI != none)
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
Recoil = 1.0;
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillSharpshooterHardWork'))
|
||||
Recoil = class'NiceSkillSharpshooterHardWork'.default.recoilMult;
|
||||
if( nicePlayer != none && nicePlayer.abilityManager != none
|
||||
&& nicePlayer.abilityManager.IsAbilityActive(class'NiceSkillSharpshooterGunslingerA'.default.abilityID))
|
||||
Recoil = 0;
|
||||
return Recoil;
|
||||
}
|
||||
static function float GetMovementSpeedModifier(KFPlayerReplicationInfo KFPRI, KFGameReplicationInfo KFGRI)
|
||||
{
|
||||
local NicePlayerController nicePlayer;
|
||||
if(KFPRI != none)
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if( nicePlayer != none && nicePlayer.abilityManager != none
|
||||
&& nicePlayer.abilityManager.IsAbilityActive(class'NiceSkillSharpshooterGunslingerA'.default.abilityID))
|
||||
return class'NiceSkillSharpshooterGunslingerA'.default.movementMult;
|
||||
return 1.0;
|
||||
}
|
||||
static function string GetCustomLevelInfo(byte Level){
|
||||
return default.CustomLevelInfo;
|
||||
}
|
||||
static function SetupAbilities(KFPlayerReplicationInfo KFPRI){
|
||||
local NicePlayerController nicePlayer;
|
||||
local NiceAbilityManager.NiceAbilityDescription calibration;
|
||||
if(KFPRI != none)
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if(nicePlayer == none || nicePlayer.abilityManager == none)
|
||||
return;
|
||||
calibration.ID = "Calibration";
|
||||
//gigaSlayer.icon = Texture'NicePackT.HudCounter.t4th';
|
||||
calibration.icon = Texture'NicePackT.HudCounter.zedHeadStreak';
|
||||
calibration.cooldownLength = 30.0;
|
||||
calibration.canBeCancelled = false;
|
||||
nicePlayer.abilityManager.AddAbility(calibration);
|
||||
}
|
||||
defaultproperties
|
||||
{
|
||||
bNewTypePerk=True
|
||||
SkillGroupA(0)=Class'NicePack.NiceSkillSharpshooterKillConfirmed'
|
||||
SkillGroupA(1)=Class'NicePack.NiceSkillSharpshooterTalent'
|
||||
SkillGroupA(2)=Class'NicePack.NiceSkillSharpshooterDieAlready'
|
||||
SkillGroupA(3)=Class'NicePack.NiceSkillSharpshooterReaperA'
|
||||
SkillGroupA(4)=Class'NicePack.NiceSkillSharpshooterZEDAdrenaline'
|
||||
SkillGroupB(0)=Class'NicePack.NiceSkillSharpshooterSurgical'
|
||||
SkillGroupB(1)=Class'NicePack.NiceSkillSharpshooterHardWork'
|
||||
SkillGroupB(2)=Class'NicePack.NiceSkillSharpshooterArdour'
|
||||
SkillGroupB(3)=Class'NicePack.NiceSkillSharpshooterGunslingerA'
|
||||
SkillGroupB(4)=Class'NicePack.NiceSkillSharpshooterZEDHundredGauntlets'
|
||||
progressArray0(0)=100
|
||||
progressArray0(1)=1000
|
||||
progressArray0(2)=3000
|
||||
progressArray0(3)=10000
|
||||
progressArray0(4)=30000
|
||||
progressArray0(5)=100000
|
||||
progressArray0(6)=200000
|
||||
DefaultDamageType=Class'NicePack.NiceDamageTypeVetSharpshooter'
|
||||
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_SharpShooter',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_SharpShooter_Gold',StarIcon=Texture'KillingFloor2HUD.Perk_Icons.Hud_Perk_Star_Gold',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
OnHUDIcons(2)=(PerkIcon=Texture'ScrnTex.Perks.Perk_SharpShooter_Green',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Green',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
OnHUDIcons(3)=(PerkIcon=Texture'ScrnTex.Perks.Perk_SharpShooter_Blue',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Blue',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
OnHUDIcons(4)=(PerkIcon=Texture'ScrnTex.Perks.Perk_SharpShooter_Purple',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Purple',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
OnHUDIcons(5)=(PerkIcon=Texture'ScrnTex.Perks.Perk_SharpShooter_Orange',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Orange',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
CustomLevelInfo="Level up by doing headshots with perked weapons|+25% headshot damage"
|
||||
PerkIndex=2
|
||||
OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_SharpShooter'
|
||||
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_SharpShooter_Gold'
|
||||
VeterancyName="Sharpshooter"
|
||||
Requirements(0)="Required experience for the next level: %x"
|
||||
}
|
||||
4
sources/Perks/Sharpshooter/NiceVetSharpshooterExp.uc
Normal file
4
sources/Perks/Sharpshooter/NiceVetSharpshooterExp.uc
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
class NiceVetSharpshooterExp extends SRCustomProgressInt;
|
||||
defaultproperties
|
||||
{
ProgressName="Sharpshooter exp."
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
class NiceSkillSharpshooterArdour extends NiceSkill
|
||||
abstract;
|
||||
|
||||
var float headshotKillReduction[5];
|
||||
var float justHeadshotReduction;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
justHeadshotReduction=0.250000
|
||||
headshotKillReduction(0)=0.5f
|
||||
headshotKillReduction(1)=1.0f
|
||||
headshotKillReduction(2)=1.25f
|
||||
headshotKillReduction(3)=1.5f
|
||||
headshotKillReduction(4)=2.0f
|
||||
SkillName="Ardour"
|
||||
SkillEffects="Head-shotting enemies reduces your cooldowns."
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
class NiceSkillSharpshooterDieAlready extends NiceSkill
|
||||
abstract;
|
||||
var float bleedOutTime[5];
|
||||
defaultproperties
|
||||
{
|
||||
BleedOutTime(0)=2.0f
|
||||
BleedOutTime(1)=1.5f
|
||||
BleedOutTime(2)=1.25f
|
||||
BleedOutTime(3)=1.0f
|
||||
BleedOutTime(4)=0.25f
|
||||
SkillName="Die already"
|
||||
SkillEffects="All zeds decapitated by you drop faster."
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
class NiceSkillSharpshooterGunslingerA extends NiceSkillAbility
|
||||
abstract;
|
||||
var string abilityID;
|
||||
var float cooldown, duration;
|
||||
var float reloadMult, movementMult, fireRateMult;
|
||||
function static SkillSelected(NicePlayerController nicePlayer){
|
||||
local NiceAbilityManager.NiceAbilityDescription reaper;
|
||||
if(nicePlayer == none) return;
|
||||
if(nicePlayer.abilityManager == none) return;
|
||||
reaper.ID = default.abilityID;
|
||||
reaper.icon = Texture'NicePackT.HudCounter.playful';
|
||||
reaper.cooldownLength = default.cooldown;
|
||||
reaper.canBeCancelled = false;
|
||||
nicePlayer.abilityManager.AddAbility(reaper);
|
||||
}
|
||||
function static SkillDeSelected(NicePlayerController nicePlayer){
|
||||
if(nicePlayer == none) return;
|
||||
if(nicePlayer.abilityManager == none) return;
|
||||
nicePlayer.abilityManager.RemoveAbility(default.abilityID);
|
||||
}
|
||||
defaultproperties
|
||||
{
|
||||
abilityID="Gunslinger"
|
||||
cooldown=80.000000
|
||||
Duration=15.000000
|
||||
reloadMult=1.500000
|
||||
movementMult=1.2500000
|
||||
fireRateMult=1.300000
|
||||
SkillName="Gunslinger"
|
||||
SkillEffects="Reload, fire and move faster. All with no recoil."
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
class NiceSkillSharpshooterHardWork extends NiceSkill
|
||||
abstract;
|
||||
var float zoomBonus;
|
||||
var float zoomSpeedBonus;
|
||||
var float reloadBonus;
|
||||
var float fireRateBonus;
|
||||
var float recoilMult;
|
||||
defaultproperties
|
||||
{
|
||||
zoomBonus=0.750000
|
||||
zoomSpeedBonus=0.500000
|
||||
ReloadBonus=0.500000
|
||||
fireRateBonus=0.300000
|
||||
recoilMult=0.500000
|
||||
SkillName="Hard work"
|
||||
SkillEffects="Reload up to 50% faster, shoot up to 30% faster and recoil only for half as much. Additionally, you can switch to/from iron sights twice as fast and zoom 25% further while crouched."
|
||||
}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
class NiceSkillSharpshooterKillConfirmed extends NiceSkill
|
||||
abstract;
|
||||
var float damageBonus;
|
||||
var float stackDelay;
|
||||
var int maxStacks;
|
||||
function static SkillSelected(NicePlayerController nicePlayer){
|
||||
local NicePack niceMutator;
|
||||
super.SkillSelected(nicePlayer);
|
||||
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
||||
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
|
||||
return;
|
||||
niceMutator.AddCounter("npSharpConfirmed", Texture'NicePackT.HudCounter.zedHeadStreak', false, default.class);
|
||||
}
|
||||
function static SkillDeSelected(NicePlayerController nicePlayer){
|
||||
local NicePack niceMutator;
|
||||
super.SkillDeSelected(nicePlayer);
|
||||
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
||||
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
|
||||
return;
|
||||
niceMutator.RemoveCounter("npSharpConfirmed");
|
||||
}
|
||||
function static int UpdateCounterValue(string counterName, NicePlayerController nicePlayer){
|
||||
local NiceHumanPawn nicePawn;
|
||||
local NiceWeapon niceWeap;
|
||||
local NiceFire niceF;
|
||||
local float lockOnTickRate;
|
||||
local int lockonTicks;
|
||||
if(nicePlayer == none || counterName != "npSharpConfirmed")
|
||||
return 0;
|
||||
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
||||
if(nicePawn != none)
|
||||
niceWeap = NiceWeapon(nicePawn.weapon);
|
||||
if(niceWeap != none)
|
||||
niceF = niceWeap.GetMainFire();
|
||||
if(niceF == none)
|
||||
return 0;
|
||||
lockOnTickRate = class'NiceSkillSharpshooterKillConfirmed'.default.stackDelay;
|
||||
lockonTicks = Ceil(niceF.fireState.lockon.time / lockOnTickRate) - 1;
|
||||
lockonTicks = Min(class'NiceSkillSharpshooterKillConfirmed'.default.maxStacks, lockonTicks);
|
||||
lockonTicks = Max(lockonTicks, 0);
|
||||
return lockonTicks;
|
||||
}
|
||||
defaultproperties
|
||||
{
|
||||
damageBonus=1.000000
|
||||
stackDelay=1.000000
|
||||
maxStacks=1
|
||||
SkillName="Kill confirmed"
|
||||
SkillEffects="Aiming at zed's head for a second doubles the damage of the shot."
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
class NiceSkillSharpshooterReaperA extends NiceSkill
|
||||
abstract;
|
||||
var string abilityID;
|
||||
var float cooldown;
|
||||
function static SkillSelected(NicePlayerController nicePlayer){
|
||||
local NiceAbilityManager.NiceAbilityDescription reaper;
|
||||
if(nicePlayer == none) return;
|
||||
if(nicePlayer.abilityManager == none) return;
|
||||
reaper.ID = default.abilityID;
|
||||
reaper.icon = Texture'NicePackT.HudCounter.t4th';
|
||||
reaper.cooldownLength = default.cooldown;
|
||||
reaper.canBeCancelled = true;
|
||||
nicePlayer.abilityManager.AddAbility(reaper);
|
||||
}
|
||||
function static SkillDeSelected(NicePlayerController nicePlayer){
|
||||
if(nicePlayer == none) return;
|
||||
if(nicePlayer.abilityManager == none) return;
|
||||
nicePlayer.abilityManager.RemoveAbility(default.abilityID);
|
||||
}
|
||||
defaultproperties
|
||||
{
|
||||
abilityID="Reaper"
|
||||
cooldown=24.000000
|
||||
SkillName="Reaper"
|
||||
SkillEffects="If it would take 2 head-shot to kill the zed, - it'll die from one."
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
class NiceSkillSharpshooterStability extends NiceSkill
|
||||
abstract;
|
||||
defaultproperties
|
||||
{
SkillName="Stability"
SkillEffects="Have zero recoil while shooting in ironsights with perked weapons."
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
class NiceSkillSharpshooterSurgical extends NiceSkill
|
||||
abstract;
|
||||
var float penDmgReduction;
|
||||
defaultproperties
|
||||
{
|
||||
PenDmgReduction=0.900000
|
||||
SkillName="Surgical precision"
|
||||
SkillEffects="While you're aiming down sights your bullets and projectiles gain additional head penetration with only 10% damage loss."
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
class NiceSkillSharpshooterTalent extends NiceSkill
|
||||
abstract;
|
||||
defaultproperties
|
||||
{
|
||||
SkillName="Talent"
|
||||
SkillEffects="You gain additional up to 30% headshot damage bonus."
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
class NiceSkillSharpshooterZEDAdrenaline extends NiceSkill
|
||||
abstract;
|
||||
function static SkillSelected(NicePlayerController nicePlayer){
|
||||
local NicePack niceMutator;
|
||||
super.SkillSelected(nicePlayer);
|
||||
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
||||
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
return;
|
||||
niceMutator.AddCounter("npGunsAdrenaline", Texture'NicePackT.HudCounter.variant', false, default.class);
|
||||
}
|
||||
function static SkillDeSelected(NicePlayerController nicePlayer){
|
||||
local NicePack niceMutator;
|
||||
super.SkillDeSelected(nicePlayer);
|
||||
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
||||
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
return;
|
||||
niceMutator.RemoveCounter("npGunsAdrenaline");
|
||||
}
|
||||
function static int UpdateCounterValue(string counterName, NicePlayerController nicePlayer){
|
||||
local NicePack niceMutator;
|
||||
if(nicePlayer == none || counterName != "npGunsAdrenaline" || !nicePlayer.IsZedTimeActive())
return 0;
|
||||
if(nicePlayer.bJunkieExtFailed)
return 0;
|
||||
if(nicePlayer.Pawn != none)
niceMutator = class'NicePack'.static.Myself(nicePlayer.Pawn.Level);
|
||||
if(niceMutator == none)
return 0;
|
||||
return niceMutator.junkieNextGoal - niceMutator.junkieDoneHeadshots;
|
||||
}
|
||||
defaultproperties
|
||||
{
SkillName="Adrenaline junkie"
SkillEffects="Prolong zed-time by making head-shots. Each consecutive extension requires 1 more head-shot than a previous one. Body-shotting removes your ability to prolong zed-time."
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
class NiceSkillSharpshooterZEDHundredGauntlets extends NiceSkill
|
||||
abstract;
|
||||
defaultproperties
|
||||
{
SkillName="Hundred Gauntlets"
SkillEffects="You don't waste ammo during zed-time."
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
class NiceSkillSharpshooterZEDOverkill extends NiceSkill
|
||||
abstract;
|
||||
var float damageBonus;
|
||||
defaultproperties
|
||||
{
damageBonus=2.250000
SkillName="Overkill"
SkillEffects="Deal 225% head-shot damage during zed-time."
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
class NiceSkillSharpshooterZEDRailgun extends NiceSkill
|
||||
abstract;
|
||||
defaultproperties
|
||||
{
SkillName="Railgun"
SkillEffects="Your bullets pass through everything without losing damage during zed-time."
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue