Apply dirty patch (messed up line endings)
This commit is contained in:
parent
12d95e387e
commit
51bb9add5b
30 changed files with 1354 additions and 714 deletions
|
|
@ -1,88 +1,131 @@
|
|||
class NiceVetBerserker extends NiceVeterancyTypes
|
||||
abstract;
|
||||
static function AddCustomStats(ClientPerkRepLink Other){
|
||||
other.AddCustomValue(Class'NiceVetBerserkerExp');
|
||||
}
|
||||
static function int GetStatValueInt(ClientPerkRepLink StatOther, byte ReqNum){
|
||||
return StatOther.GetCustomValueInt(Class'NiceVetBerserkerExp');
|
||||
}
|
||||
static function array<int> GetProgressArray(byte ReqNum, optional out int DoubleScalingBase){
|
||||
return default.progressArray0;
|
||||
}
|
||||
static function int AddDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InDamage, class<DamageType> DmgType){
|
||||
local float perkDamage;
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = GetPickupFromDamageType(DmgType);
|
||||
perkDamage = float(InDamage);
|
||||
if(IsPerkedPickup(pickupClass))
perkDamage *= 2;
|
||||
return perkDamage;
|
||||
}
|
||||
static function float GetFireSpeedModStatic(KFPlayerReplicationInfo KFPRI, class<Weapon> other){
|
||||
local float bonus;
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
local NiceHumanPawn nicePawn;
|
||||
local NicePlayerController nicePlayer;
|
||||
pickupClass = GetPickupFromWeapon(other);
|
||||
bonus = 1.0;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if(IsPerkedPickup(pickupClass))
bonus *= 1.25;
|
||||
nicePawn = NiceHumanPawn(nicePlayer.Pawn);
|
||||
if(nicePlayer != none && nicePawn != none && HasSkill(nicePlayer, class'NiceSkillZerkFury') && IsPerkedPickup(pickupClass)){
if(nicePawn != none && nicePawn.invincibilityTimer > 0.0)
bonus *= class'NiceSkillZerkFury'.default.attackSpeedBonus;
|
||||
}
|
||||
if(nicePlayer != none && nicePawn != none && nicePlayer.IsZedTimeActive() && IsPerkedPickup(pickupClass)
&& HasSkill(nicePlayer, class'NiceSkillZerkZEDAccelerate'))
bonus /= (nicePawn.Level.TimeDilation / 1.1);
|
||||
return bonus;
|
||||
}
|
||||
static function float GetMeleeMovementSpeedModifier(KFPlayerReplicationInfo KFPRI){
|
||||
return 0.2;
|
||||
}
|
||||
static function float GetMovementSpeedModifier(KFPlayerReplicationInfo KFPRI, KFGameReplicationInfo KFGRI)
|
||||
{
|
||||
local NicePlayerController nicePlayer;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if(nicePlayer != none && nicePlayer.IsZedTimeActive()
&& HasSkill(nicePlayer, class'NiceSkillZerkZEDAccelerate'))
return 1.0 / fmin(1.0, (KFGRI.Level.TimeDilation / 1.1));
|
||||
return 1.0;
|
||||
}
|
||||
static function float GetWeaponMovementSpeedBonus(KFPlayerReplicationInfo KFPRI, Weapon Weap){
|
||||
local float bonus;
|
||||
local NicePlayerController nicePlayer;
|
||||
local NiceHumanPawn nicePawn;
|
||||
bonus = 0.0;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if(nicePlayer != none)
nicePawn = NiceHumanPawn(nicePlayer.Pawn);
|
||||
if(nicePlayer != none && nicePawn != none && HasSkill(nicePlayer, class'NiceSkillZerkWhirlwind')){
if(nicePawn != none && nicePawn.invincibilityTimer > 0.0)
bonus = 1.0;
|
||||
}
|
||||
return bonus;
|
||||
}
|
||||
static function bool CanBeGrabbed(KFPlayerReplicationInfo KFPRI, KFMonster Other){
|
||||
return false;
|
||||
}
|
||||
// Set number times Zed Time can be extended
|
||||
static function int ZedTimeExtensions(KFPlayerReplicationInfo KFPRI){
|
||||
return 4;
|
||||
}
|
||||
static function float SlowingModifier(KFPlayerReplicationInfo KFPRI){
|
||||
return 1.2;
|
||||
}
|
||||
static function int GetInvincibilityExtentions(KFPlayerReplicationInfo KFPRI){
|
||||
return 3;
|
||||
}
|
||||
static function int GetInvincibilityDuration(KFPlayerReplicationInfo KFPRI){
|
||||
local NicePlayerController nicePlayer;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if( nicePlayer != none
&& HasSkill(nicePlayer, class'NiceSkillZerkColossus')){
return 3.0 + class'NiceSkillZerkColossus'.default.timeBonus;
|
||||
}
|
||||
return 3.0;
|
||||
}
|
||||
static function int GetInvincibilitySafeMisses(KFPlayerReplicationInfo KFPRI){
|
||||
local NicePlayerController nicePlayer;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if( nicePlayer != none
&& HasSkill(nicePlayer, class'NiceSkillZerkUndead')){
return 1 + class'NiceSkillZerkUndead'.default.addedSafeMisses;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
static function string GetCustomLevelInfo(byte Level){
|
||||
return default.CustomLevelInfo;
|
||||
}
|
||||
defaultproperties
|
||||
{
bNewTypePerk=True
SkillGroupA(0)=Class'NicePack.NiceSkillZerkWindCutter'
SkillGroupA(1)=Class'NicePack.NiceSkillZerkWhirlwind'
SkillGroupA(2)=Class'NicePack.NiceSkillZerkColossus'
SkillGroupA(3)=Class'NicePack.NiceSkillZerkUndead'
SkillGroupA(4)=Class'NicePack.NiceSkillZerkZEDAccelerate'
SkillGroupB(0)=Class'NicePack.NiceSkillZerkCleave'
SkillGroupB(1)=Class'NicePack.NiceSkillZerkFury'
SkillGroupB(2)=Class'NicePack.NiceSkillZerkGunzerker'
SkillGroupB(3)=Class'NicePack.NiceSkillZerkVorpalBlade'
SkillGroupB(4)=Class'NicePack.NiceSkillZerkZEDUnbreakable'
progressArray0(0)=100
progressArray0(1)=1000
progressArray0(2)=3000
progressArray0(3)=10000
progressArray0(4)=30000
progressArray0(5)=100000
progressArray0(6)=200000
DefaultDamageType=Class'NicePack.NiceDamageTypeVetBerserker'
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Berserker',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Berserker_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_Berserker_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_Berserker_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_Berserker_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_Berserker_Orange',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Orange',DrawColor=(B=255,G=255,R=255,A=255))
CustomLevelInfo="Level up by doing damage with perked weapons|100% extra melee damage|25% faster melee attacks|20% faster melee movement|Melee invincibility lasts 3 seconds|Melee invincibility doesn't reset on your first miss|Up to 4 Zed-Time Extensions|Can't be grabbed by clots|Can activate melee-invincibility with non-decapitating head-shots up to 3 times"
PerkIndex=4
OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Berserker'
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Berserker_Gold'
VeterancyName="Berserker"
Requirements(0)="Required experience for the next level: %x"
|
||||
}
|
||||
class NiceVetBerserker extends NiceVeterancyTypes
|
||||
abstract;
|
||||
static function AddCustomStats(ClientPerkRepLink Other){
|
||||
other.AddCustomValue(Class'NiceVetBerserkerExp');
|
||||
}
|
||||
static function int GetStatValueInt(ClientPerkRepLink StatOther, byte ReqNum){
|
||||
return StatOther.GetCustomValueInt(Class'NiceVetBerserkerExp');
|
||||
}
|
||||
static function array<int> GetProgressArray(byte ReqNum, optional out int DoubleScalingBase){
|
||||
return default.progressArray0;
|
||||
}
|
||||
static function int AddDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InDamage, class<DamageType> DmgType){
|
||||
local float perkDamage;
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = GetPickupFromDamageType(DmgType);
|
||||
perkDamage = float(InDamage);
|
||||
if(IsPerkedPickup(pickupClass))
|
||||
perkDamage *= 2;
|
||||
return perkDamage;
|
||||
}
|
||||
static function float GetFireSpeedModStatic(KFPlayerReplicationInfo KFPRI, class<Weapon> other){
|
||||
local float bonus;
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
local NiceHumanPawn nicePawn;
|
||||
local NicePlayerController nicePlayer;
|
||||
pickupClass = GetPickupFromWeapon(other);
|
||||
bonus = 1.0;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if(IsPerkedPickup(pickupClass))
|
||||
bonus *= 1.25;
|
||||
nicePawn = NiceHumanPawn(nicePlayer.Pawn);
|
||||
if(nicePlayer != none && nicePawn != none && HasSkill(nicePlayer, class'NiceSkillZerkFury') && IsPerkedPickup(pickupClass)){
|
||||
if(nicePawn != none && nicePawn.invincibilityTimer > 0.0)
|
||||
bonus *= class'NiceSkillZerkFury'.default.attackSpeedBonus;
|
||||
}
|
||||
if(nicePlayer != none && nicePawn != none && nicePlayer.IsZedTimeActive() && IsPerkedPickup(pickupClass)
|
||||
&& HasSkill(nicePlayer, class'NiceSkillZerkZEDAccelerate'))
|
||||
bonus /= (nicePawn.Level.TimeDilation / 1.1);
|
||||
return bonus;
|
||||
}
|
||||
static function float GetMeleeMovementSpeedModifier(KFPlayerReplicationInfo KFPRI){
|
||||
return 0.2;
|
||||
}
|
||||
static function float GetMovementSpeedModifier(KFPlayerReplicationInfo KFPRI, KFGameReplicationInfo KFGRI)
|
||||
{
|
||||
local NicePlayerController nicePlayer;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if(nicePlayer != none && nicePlayer.IsZedTimeActive()
|
||||
&& HasSkill(nicePlayer, class'NiceSkillZerkZEDAccelerate'))
|
||||
return 1.0 / fmin(1.0, (KFGRI.Level.TimeDilation / 1.1));
|
||||
return 1.0;
|
||||
}
|
||||
static function float GetWeaponMovementSpeedBonus(KFPlayerReplicationInfo KFPRI, Weapon Weap){
|
||||
local float bonus;
|
||||
local NicePlayerController nicePlayer;
|
||||
local NiceHumanPawn nicePawn;
|
||||
bonus = 0.0;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if(nicePlayer != none)
|
||||
nicePawn = NiceHumanPawn(nicePlayer.Pawn);
|
||||
if(nicePlayer != none && nicePawn != none && HasSkill(nicePlayer, class'NiceSkillZerkWhirlwind')){
|
||||
if(nicePawn != none && nicePawn.invincibilityTimer > 0.0)
|
||||
bonus = 1.0;
|
||||
}
|
||||
return bonus;
|
||||
}
|
||||
static function bool CanBeGrabbed(KFPlayerReplicationInfo KFPRI, KFMonster Other){
|
||||
return false;
|
||||
}
|
||||
// Set number times Zed Time can be extended
|
||||
static function int ZedTimeExtensions(KFPlayerReplicationInfo KFPRI){
|
||||
return 4;
|
||||
}
|
||||
static function int GetInvincibilityExtentions(KFPlayerReplicationInfo KFPRI){
|
||||
return 3;
|
||||
}
|
||||
static function int GetInvincibilityDuration(KFPlayerReplicationInfo KFPRI){
|
||||
local NicePlayerController nicePlayer;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if( nicePlayer != none
|
||||
&& HasSkill(nicePlayer, class'NiceSkillZerkColossus')){
|
||||
return 3.0 + class'NiceSkillZerkColossus'.default.timeBonus;
|
||||
}
|
||||
return 3.0;
|
||||
}
|
||||
static function int GetInvincibilitySafeMisses(KFPlayerReplicationInfo KFPRI){
|
||||
local NicePlayerController nicePlayer;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if( nicePlayer != none
|
||||
&& HasSkill(nicePlayer, class'NiceSkillZerkUndead')){
|
||||
return 1 + class'NiceSkillZerkUndead'.default.addedSafeMisses;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
static function string GetCustomLevelInfo(byte Level){
|
||||
return default.CustomLevelInfo;
|
||||
}
|
||||
defaultproperties
|
||||
{
|
||||
bNewTypePerk=True
|
||||
SkillGroupA(0)=Class'NicePack.NiceSkillZerkWindCutter'
|
||||
SkillGroupA(1)=Class'NicePack.NiceSkillZerkWhirlwind'
|
||||
SkillGroupA(2)=Class'NicePack.NiceSkillZerkColossus'
|
||||
SkillGroupA(3)=Class'NicePack.NiceSkillZerkUndead'
|
||||
SkillGroupA(4)=Class'NicePack.NiceSkillZerkZEDAccelerate'
|
||||
SkillGroupB(0)=Class'NicePack.NiceSkillZerkCleave'
|
||||
SkillGroupB(1)=Class'NicePack.NiceSkillZerkFury'
|
||||
SkillGroupB(2)=Class'NicePack.NiceSkillZerkGunzerker'
|
||||
SkillGroupB(3)=Class'NicePack.NiceSkillZerkVorpalBlade'
|
||||
SkillGroupB(4)=Class'NicePack.NiceSkillZerkZEDUnbreakable'
|
||||
progressArray0(0)=100
|
||||
progressArray0(1)=1000
|
||||
progressArray0(2)=3000
|
||||
progressArray0(3)=10000
|
||||
progressArray0(4)=30000
|
||||
progressArray0(5)=100000
|
||||
progressArray0(6)=200000
|
||||
DefaultDamageType=Class'NicePack.NiceDamageTypeVetBerserker'
|
||||
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Berserker',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Berserker_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_Berserker_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_Berserker_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_Berserker_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_Berserker_Orange',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Orange',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
CustomLevelInfo="Level up by doing damage with perked weapons|100% extra melee damage|25% faster melee attacks|20% faster melee movement|Melee invincibility lasts 3 seconds|Melee invincibility doesn't reset on your first miss|Up to 4 Zed-Time Extensions|Can't be grabbed by clots|Can activate melee-invincibility with non-decapitating head-shots up to 3 times"
|
||||
PerkIndex=4
|
||||
OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Berserker'
|
||||
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Berserker_Gold'
|
||||
VeterancyName="Berserker"
|
||||
Requirements(0)="Required experience for the next level: %x"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,38 +1,73 @@
|
|||
class NiceVetCommando extends NiceVeterancyTypes
|
||||
abstract;
|
||||
static function AddCustomStats(ClientPerkRepLink Other){
|
||||
other.AddCustomValue(Class'NiceVetCommandoExp');
|
||||
}
|
||||
static function int GetStatValueInt(ClientPerkRepLink StatOther, byte ReqNum){
|
||||
return StatOther.GetCustomValueInt(Class'NiceVetCommandoExp');
|
||||
}
|
||||
static function array<int> GetProgressArray(byte ReqNum, optional out int DoubleScalingBase){
|
||||
return default.progressArray0;
|
||||
}
|
||||
static function float GetHealthBarsDistanceMulti(KFPlayerReplicationInfo KFPRI){
|
||||
if(KFPRI != none && SomeoneHasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoStrategist'))
return class'NiceSkillCommandoStrategist'.default.visionRadius;
|
||||
return 0.0;
|
||||
}
|
||||
static function float GetStalkerViewDistanceMulti(KFPlayerReplicationInfo KFPRI){
|
||||
if(KFPRI != none && SomeoneHasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoStrategist'))
return class'NiceSkillCommandoStrategist'.default.visionRadius;
|
||||
return 0.0;
|
||||
}
|
||||
static function float GetMagCapacityMod(KFPlayerReplicationInfo KFPRI, KFWeapon Other){
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = GetPickupFromWeapon(other.class);
|
||||
if(IsPerkedPickup(pickupClass) && HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoLargerMags'))
return class'NiceSkillCommandoLargerMags'.default.sizeBonus;
|
||||
return 1.0;
|
||||
}
|
||||
static function float GetReloadSpeedModifierStatic(KFPlayerReplicationInfo KFPRI, class<KFWeapon> Other){
|
||||
return 1.3;
|
||||
}
|
||||
static function int ZedTimeExtensions(KFPlayerReplicationInfo KFPRI){
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoTactitian'))
return class'NiceSkillCommandoTactitian'.default.bonusExt + 3;
|
||||
return 3;
|
||||
}
|
||||
static function string GetCustomLevelInfo(byte Level){
|
||||
return default.CustomLevelInfo;
|
||||
}
|
||||
defaultproperties
|
||||
{
bNewTypePerk=True
SkillGroupA(0)=Class'NicePack.NiceSkillCommandoTactitian'
SkillGroupA(1)=Class'NicePack.NiceSkillCommandoCriticalFocus'
SkillGroupA(2)=Class'NicePack.NiceSkillCommandoLargerMags'
SkillGroupA(3)=Class'NicePack.NiceSkillCommandoPerfectExecution'
SkillGroupA(4)=Class'NicePack.NiceSkillCommandoZEDProfessional'
SkillGroupB(0)=Class'NicePack.NiceSkillCommandoStrategist'
SkillGroupB(1)=Class'NicePack.NiceSkillCommandoTrashCleaner'
SkillGroupB(2)=Class'NicePack.NiceSkillCommandoExplosivePower'
SkillGroupB(3)=Class'NicePack.NiceSkillCommandoThinOut'
SkillGroupB(4)=Class'NicePack.NiceSkillCommandoZEDEvisceration'
progressArray0(0)=100
progressArray0(1)=1000
progressArray0(2)=3000
progressArray0(3)=10000
progressArray0(4)=30000
progressArray0(5)=100000
progressArray0(6)=200000
DefaultDamageType=Class'NicePack.NiceDamageTypeVetCommando'
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Commando',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Commando_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_Commando_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_Commando_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_Commando_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_Commando_Orange',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Orange',DrawColor=(B=255,G=255,R=255,A=255))
CustomLevelInfo="Level up by doing damage with perked weapons|30% faster reload with all weapons|You get three additional Zed-Time Extensions"
PerkIndex=3
OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Commando'
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Commando_Gold'
VeterancyName="Commando"
Requirements(0)="Required experience for the next level: %x"
|
||||
}
|
||||
class NiceVetCommando extends NiceVeterancyTypes
|
||||
abstract;
|
||||
static function AddCustomStats(ClientPerkRepLink Other){
|
||||
other.AddCustomValue(Class'NiceVetCommandoExp');
|
||||
}
|
||||
static function int GetStatValueInt(ClientPerkRepLink StatOther, byte ReqNum){
|
||||
return StatOther.GetCustomValueInt(Class'NiceVetCommandoExp');
|
||||
}
|
||||
static function array<int> GetProgressArray(byte ReqNum, optional out int DoubleScalingBase){
|
||||
return default.progressArray0;
|
||||
}
|
||||
static function float GetHealthBarsDistanceMulti(KFPlayerReplicationInfo KFPRI){
|
||||
if(KFPRI != none && SomeoneHasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoStrategist'))
|
||||
return class'NiceSkillCommandoStrategist'.default.visionRadius;
|
||||
return 0.0;
|
||||
}
|
||||
static function float GetStalkerViewDistanceMulti(KFPlayerReplicationInfo KFPRI){
|
||||
if(KFPRI != none && SomeoneHasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoStrategist'))
|
||||
return class'NiceSkillCommandoStrategist'.default.visionRadius;
|
||||
return 0.0;
|
||||
}
|
||||
static function float GetMagCapacityMod(KFPlayerReplicationInfo KFPRI, KFWeapon Other){
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = GetPickupFromWeapon(other.class);
|
||||
if(IsPerkedPickup(pickupClass) && HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoLargerMags'))
|
||||
return class'NiceSkillCommandoLargerMags'.default.sizeBonus;
|
||||
return 1.0;
|
||||
}
|
||||
static function float GetReloadSpeedModifierStatic(KFPlayerReplicationInfo KFPRI, class<KFWeapon> Other){
|
||||
return 1.3;
|
||||
}
|
||||
static function int ZedTimeExtensions(KFPlayerReplicationInfo KFPRI){
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoTactitian'))
|
||||
return class'NiceSkillCommandoTactitian'.default.bonusExt + 3;
|
||||
return 3;
|
||||
}
|
||||
static function string GetCustomLevelInfo(byte Level){
|
||||
return default.CustomLevelInfo;
|
||||
}
|
||||
defaultproperties
|
||||
{
|
||||
bNewTypePerk=True
|
||||
SkillGroupA(0)=Class'NicePack.NiceSkillCommandoTactitian'
|
||||
SkillGroupA(1)=Class'NicePack.NiceSkillCommandoCriticalFocus'
|
||||
SkillGroupA(2)=Class'NicePack.NiceSkillCommandoLargerMags'
|
||||
SkillGroupA(3)=Class'NicePack.NiceSkillCommandoPerfectExecution'
|
||||
SkillGroupA(4)=Class'NicePack.NiceSkillCommandoZEDProfessional'
|
||||
SkillGroupB(0)=Class'NicePack.NiceSkillCommandoStrategist'
|
||||
SkillGroupB(1)=Class'NicePack.NiceSkillCommandoTrashCleaner'
|
||||
SkillGroupB(2)=Class'NicePack.NiceSkillCommandoExplosivePower'
|
||||
SkillGroupB(3)=Class'NicePack.NiceSkillCommandoGiantSlayer'
|
||||
SkillGroupB(4)=Class'NicePack.NiceSkillCommandoZEDEvisceration'
|
||||
progressArray0(0)=100
|
||||
progressArray0(1)=1000
|
||||
progressArray0(2)=3000
|
||||
progressArray0(3)=10000
|
||||
progressArray0(4)=30000
|
||||
progressArray0(5)=100000
|
||||
progressArray0(6)=200000
|
||||
DefaultDamageType=Class'NicePack.NiceDamageTypeVetCommando'
|
||||
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Commando',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Commando_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_Commando_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_Commando_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_Commando_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_Commando_Orange',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Orange',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
CustomLevelInfo="Level up by doing damage with perked weapons|30% faster reload with all weapons|You get three additional Zed-Time Extensions"
|
||||
PerkIndex=3
|
||||
OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Commando'
|
||||
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Commando_Gold'
|
||||
VeterancyName="Commando"
|
||||
Requirements(0)="Required experience for the next level: %x"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,28 +1,36 @@
|
|||
class NiceSkillCommandoCriticalFocus extends NiceSkill
|
||||
abstract;
|
||||
var float cooldown;
|
||||
var float healthBoundary;
|
||||
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("npCommandoCriticalFocus", Texture'NicePackT.HudCounter.commandoCounter', 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("npCommandoCriticalFocus");
|
||||
}
|
||||
function static int UpdateCounterValue(string counterName, NicePlayerController nicePlayer){
|
||||
local NiceHumanPawn nicePawn;
|
||||
if(nicePlayer == none || counterName != "npCommandoCriticalFocus")
return 0;
|
||||
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
||||
if(nicePawn == none)
return 0;
|
||||
return Ceil(nicePawn.forcedZedTimeCountDown);
|
||||
}
|
||||
defaultproperties
|
||||
{
cooldown=30.000000
healthBoundary=50.000000
SkillName="Critical focus"
|
||||
}
|
||||
class NiceSkillCommandoCriticalFocus extends NiceSkill
|
||||
abstract;
|
||||
var float cooldown;
|
||||
var float healthBoundary;
|
||||
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("npCommandoCriticalFocus", Texture'NicePackT.HudCounter.commandoCounter', 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("npCommandoCriticalFocus");
|
||||
}
|
||||
function static int UpdateCounterValue(string counterName, NicePlayerController nicePlayer){
|
||||
local NiceHumanPawn nicePawn;
|
||||
if(nicePlayer == none || counterName != "npCommandoCriticalFocus")
|
||||
return 0;
|
||||
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
||||
if(nicePawn == none)
|
||||
return 0;
|
||||
return Ceil(nicePawn.forcedZedTimeCountDown);
|
||||
}
|
||||
defaultproperties
|
||||
{
|
||||
cooldown=30.000000
|
||||
healthBoundary=50.000000
|
||||
SkillName="Critical focus"
|
||||
SkillEffects="Activates zed time once you fall below 50% health. Has a cooldown of 30 seconds."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
class NiceSkillCommandoGiantSlayer extends NiceSkill
|
||||
abstract;
|
||||
var float bonusDamageMult;
|
||||
var float healthStep;
|
||||
defaultproperties
|
||||
{
|
||||
healthStep=1000.000000
|
||||
bonusDamageMult=0.05000
|
||||
SkillName="Giant slayer"
|
||||
SkillEffects="For every 1000 of health zed currently has, you deal additional 5% damage."
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
class NiceSkillCommandoThinOut extends NiceSkill
|
||||
abstract;
|
||||
var float damageMult;
|
||||
var float maxDistance;
|
||||
defaultproperties
|
||||
{
damageMult=2.000000
MaxDistance=800.000000
SkillName="Thin out"
SkillEffects="Deal double damage against non-trash zeds, when there's either a huge zed or another zed of the same type within 16 meters of you."
|
||||
}
|
||||
|
|
@ -1,6 +1,9 @@
|
|||
class NiceSkillCommandoTrashCleaner extends NiceSkill
|
||||
abstract;
|
||||
var float decapitationMultiLimit;
|
||||
defaultproperties
|
||||
{
decapitationMultiLimit=0.600000
SkillName="Trash cleaner"
SkillEffects="Get finisher property on your shots against low-health zeds, but your weapons leave more decapitated zeds behind."
|
||||
}
|
||||
class NiceSkillCommandoTrashCleaner extends NiceSkill
|
||||
abstract;
|
||||
var float decapitationMultiLimit;
|
||||
defaultproperties
|
||||
{
|
||||
decapitationMultiLimit=0.45
|
||||
SkillName="Trash cleaner"
|
||||
SkillEffects="Get finisher property on your shots against low-health zeds, but your weapons leave more decapitated zeds behind."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
class NiceSkillCommandoZEDEvisceration extends NiceSkill
|
||||
abstract;
|
||||
defaultproperties
|
||||
{
SkillName="Evisceration"
SkillEffects="During zed-time both 'Trash cleaner' and 'Thin out' skills are active."
|
||||
}
|
||||
class NiceSkillCommandoZEDEvisceration extends NiceSkill
|
||||
abstract;
|
||||
defaultproperties
|
||||
{
|
||||
SkillName="Evisceration"
|
||||
SkillEffects="Does nothing."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,66 +1,114 @@
|
|||
class NiceVetDemolitions extends NiceVeterancyTypes
|
||||
abstract;
|
||||
static function AddCustomStats(ClientPerkRepLink Other){
|
||||
other.AddCustomValue(Class'NiceVetDemolitionsExp');
|
||||
}
|
||||
static function int GetStatValueInt(ClientPerkRepLink StatOther, byte ReqNum){
|
||||
return StatOther.GetCustomValueInt(Class'NiceVetDemolitionsExp');
|
||||
}
|
||||
static function array<int> GetProgressArray(byte ReqNum, optional out int DoubleScalingBase){
|
||||
return default.progressArray0;
|
||||
}
|
||||
static function int ReduceDamage(KFPlayerReplicationInfo KFPRI, KFPawn Injured, Pawn Instigator, int InDamage, class<DamageType> DmgType){
|
||||
local NicePlayerController nicePlayer;
|
||||
if(class<NiceDamTypeDemoSafeExplosion>(DmgType) != none)
return 0;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if(nicePlayer != none && Instigator == nicePlayer.pawn && nicePlayer.IsZedTimeActive()
&& HasSkill(nicePlayer, class'NiceSkillDemoZEDDuckAndCover'))
return 0.0;
|
||||
if((class<KFWeaponDamageType>(DmgType) != none && class<KFWeaponDamageType>(DmgType).default.bIsExplosive))
return float(InDamage) * 0.5;
|
||||
return InDamage;
|
||||
}
|
||||
static function float AddExtraAmmoFor(KFPlayerReplicationInfo KFPRI, Class<Ammunition> AmmoType){
|
||||
local float bonusNades, bonusPipes;
|
||||
// Default bonus
|
||||
bonusNades = 5;
|
||||
bonusPipes = 6;
|
||||
if(AmmoType == class'FragAmmo')
return 1.0 + 0.2 * bonusNades;
|
||||
if(ClassIsChildOf(AmmoType, class'PipeBombAmmo'))
return 1.0 + 0.5 * bonusPipes;
|
||||
return 1.0;
|
||||
}
|
||||
static function int AddDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InDamage, class<DamageType> DmgType){
|
||||
local float perkDamage;
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = GetPickupFromDamageType(DmgType);
|
||||
perkDamage = float(InDamage);
|
||||
if(DmgType == class'NicePack.NiceDamTypeDemoExplosion')
return 1.6 * perkDamage;
|
||||
if(IsPerkedPickup(pickupClass))
perkDamage *= 1.25;
|
||||
else if( pickupClass != none && pickupClass.default.weight <= class'NiceSkillDemoOffperk'.default.weightBound
&& HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillDemoOffperk') )
perkDamage *= class'NiceSkillDemoOffperk'.default.damageBonus;
|
||||
if( KFPRI != none && class<NiceDamTypeDemoBlunt>(DmgType) != none
&& SomeoneHasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillDemoOnperk') )
perkDamage *= class'NiceSkillDemoOnperk'.default.damageBonus;
|
||||
return perkDamage;
|
||||
}
|
||||
static function float GetReloadSpeedModifierStatic(KFPlayerReplicationInfo KFPRI, class<KFWeapon> other){
|
||||
local NiceHumanPawn nicePawn;
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
// Pistols reload
|
||||
if( other != none && other.default.weight <= class'NiceSkillDemoOffperk'.default.weightBound
&& HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillDemoOffperk') )
return class'NiceSkillDemoOffperk'.default.reloadBonus;
|
||||
// Maniac reload
|
||||
pickupClass = GetPickupFromWeapon(other);
|
||||
if(KFPRI != none && PlayerController(KFPRI.Owner) != none)
nicePawn = NiceHumanPawn(PlayerController(KFPRI.Owner).Pawn);
|
||||
if(nicePawn != none && nicePawn.maniacTimeout >= 0.0 && IsPerkedPickup(pickupClass))
return class'NiceSkillDemoManiac'.default.reloadSpeedup;
|
||||
return 1.0;
|
||||
}
|
||||
static function float stunDurationMult(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, class<NiceWeaponDamageType> DmgType){
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillDemoConcussion'))
return class'NiceSkillDemoConcussion'.default.durationMult;
|
||||
return 1.0;
|
||||
}
|
||||
static function int AddStunScore(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InStunScore, class<NiceWeaponDamageType> DmgType){
|
||||
return int(float(InStunScore) * 1.5);
|
||||
}
|
||||
static function int AddFlinchScore(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InFlinchScore, class<NiceWeaponDamageType> DmgType){
|
||||
return int(float(InFlinchScore) * 1.5);
|
||||
}
|
||||
static function string GetCustomLevelInfo(byte Level){
|
||||
return default.CustomLevelInfo;
|
||||
}
|
||||
defaultproperties
|
||||
{
bNewTypePerk=True
SkillGroupA(0)=Class'NicePack.NiceSkillDemoOnperk'
SkillGroupA(1)=Class'NicePack.NiceSkillDemoDirectApproach'
SkillGroupA(2)=Class'NicePack.NiceSkillDemoConcussion'
SkillGroupA(3)=Class'NicePack.NiceSkillDemoAPShot'
SkillGroupA(4)=Class'NicePack.NiceSkillDemoZEDDuckAndCover'
SkillGroupB(0)=Class'NicePack.NiceSkillDemoOffperk'
SkillGroupB(1)=Class'NicePack.NiceSkillDemoVolatile'
SkillGroupB(2)=Class'NicePack.NiceSkillDemoReactiveArmor'
SkillGroupB(3)=Class'NicePack.NiceSkillDemoManiac'
SkillGroupB(4)=Class'NicePack.NiceSkillDemoZEDFullBlast'
progressArray0(0)=100
progressArray0(1)=1000
progressArray0(2)=3000
progressArray0(3)=10000
progressArray0(4)=30000
progressArray0(5)=100000
progressArray0(6)=200000
DefaultDamageType=Class'NicePack.NiceDamageTypeVetDemolitions'
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Demolition',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Demolition_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_Demolition_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_Demolition_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_Demolition_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_Demolition_Orange',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Orange',DrawColor=(B=255,G=255,R=255,A=255))
CustomLevelInfo="Level up by doing damage with perked weapons|25% extra explosives damage|50% better stun and flinch ability for all weapons|50% resistance to explosives|+5 grenades|+6 pipe bombs"
PerkIndex=6
OnHUDIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Demolition'
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Demolition_Gold'
VeterancyName="Demolitions"
Requirements(0)="Required experience for the next level: %x"
|
||||
}
|
||||
class NiceVetDemolitions extends NiceVeterancyTypes
|
||||
abstract;
|
||||
static function AddCustomStats(ClientPerkRepLink Other){
|
||||
other.AddCustomValue(Class'NiceVetDemolitionsExp');
|
||||
}
|
||||
static function int GetStatValueInt(ClientPerkRepLink StatOther, byte ReqNum){
|
||||
return StatOther.GetCustomValueInt(Class'NiceVetDemolitionsExp');
|
||||
}
|
||||
static function array<int> GetProgressArray(byte ReqNum, optional out int DoubleScalingBase){
|
||||
return default.progressArray0;
|
||||
}
|
||||
static function int ReduceDamage(KFPlayerReplicationInfo KFPRI, KFPawn Injured, Pawn Instigator, int InDamage, class<DamageType> DmgType){
|
||||
local NicePlayerController nicePlayer;
|
||||
if(class<NiceDamTypeDemoSafeExplosion>(DmgType) != none)
|
||||
return 0;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
if(nicePlayer != none && Instigator == nicePlayer.pawn && nicePlayer.IsZedTimeActive()
|
||||
&& HasSkill(nicePlayer, class'NiceSkillDemoZEDDuckAndCover'))
|
||||
return 0.0;
|
||||
if((class<KFWeaponDamageType>(DmgType) != none && class<KFWeaponDamageType>(DmgType).default.bIsExplosive))
|
||||
return float(InDamage) * 0.5;
|
||||
return InDamage;
|
||||
}
|
||||
static function float AddExtraAmmoFor(KFPlayerReplicationInfo KFPRI, Class<Ammunition> AmmoType){
|
||||
local float bonusNades, bonusPipes;
|
||||
// Default bonus
|
||||
bonusNades = 5;
|
||||
bonusPipes = 6;
|
||||
if(AmmoType == class'FragAmmo')
|
||||
return 1.0 + 0.2 * bonusNades;
|
||||
if(ClassIsChildOf(AmmoType, class'PipeBombAmmo'))
|
||||
return 1.0 + 0.5 * bonusPipes;
|
||||
return 1.0;
|
||||
}
|
||||
static function int AddDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InDamage, class<DamageType> DmgType){
|
||||
local float perkDamage;
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = GetPickupFromDamageType(DmgType);
|
||||
perkDamage = float(InDamage);
|
||||
if(DmgType == class'NicePack.NiceDamTypeDemoExplosion')
|
||||
return 1.6 * perkDamage;
|
||||
if(IsPerkedPickup(pickupClass))
|
||||
perkDamage *= 1.25;
|
||||
else if( pickupClass != none && pickupClass.default.weight <= class'NiceSkillDemoOffperk'.default.weightBound
|
||||
&& HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillDemoOffperk') )
|
||||
perkDamage *= class'NiceSkillDemoOffperk'.default.damageBonus;
|
||||
if( KFPRI != none && class<NiceDamTypeDemoBlunt>(DmgType) != none
|
||||
&& SomeoneHasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillDemoOnperk') )
|
||||
perkDamage *= class'NiceSkillDemoOnperk'.default.damageBonus;
|
||||
return perkDamage;
|
||||
}
|
||||
static function float GetReloadSpeedModifierStatic(KFPlayerReplicationInfo KFPRI, class<KFWeapon> other){
|
||||
local NiceHumanPawn nicePawn;
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
// Pistols reload
|
||||
if( other != none && other.default.weight <= class'NiceSkillDemoOffperk'.default.weightBound
|
||||
&& HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillDemoOffperk') )
|
||||
return class'NiceSkillDemoOffperk'.default.reloadBonus;
|
||||
// Maniac reload
|
||||
pickupClass = GetPickupFromWeapon(other);
|
||||
if(KFPRI != none && PlayerController(KFPRI.Owner) != none)
|
||||
nicePawn = NiceHumanPawn(PlayerController(KFPRI.Owner).Pawn);
|
||||
if(nicePawn != none && nicePawn.maniacTimeout >= 0.0 && IsPerkedPickup(pickupClass))
|
||||
return class'NiceSkillDemoManiac'.default.reloadSpeedup;
|
||||
return 1.0;
|
||||
}
|
||||
static function float stunDurationMult(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, class<NiceWeaponDamageType> DmgType){
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillDemoConcussion'))
|
||||
return class'NiceSkillDemoConcussion'.default.durationMult;
|
||||
return 1.0;
|
||||
}
|
||||
static function int AddStunScore(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InStunScore, class<NiceWeaponDamageType> DmgType){
|
||||
return int(float(InStunScore) * 1.5);
|
||||
}
|
||||
static function int AddFlinchScore(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InFlinchScore, class<NiceWeaponDamageType> DmgType){
|
||||
return int(float(InFlinchScore) * 1.5);
|
||||
}
|
||||
static function string GetCustomLevelInfo(byte Level){
|
||||
return default.CustomLevelInfo;
|
||||
}
|
||||
defaultproperties
|
||||
{
|
||||
bNewTypePerk=True
|
||||
SkillGroupA(0)=Class'NicePack.NiceSkillDemoOnperk'
|
||||
SkillGroupA(1)=Class'NicePack.NiceSkillDemoDirectApproach'
|
||||
SkillGroupA(2)=Class'NicePack.NiceSkillDemoConcussion'
|
||||
SkillGroupA(3)=Class'NicePack.NiceSkillDemoAPShot'
|
||||
SkillGroupA(4)=Class'NicePack.NiceSkillDemoZEDDuckAndCover'
|
||||
SkillGroupB(0)=Class'NicePack.NiceSkillDemoOffperk'
|
||||
SkillGroupB(1)=Class'NicePack.NiceSkillDemoVolatile'
|
||||
SkillGroupB(2)=Class'NicePack.NiceSkillDemoReactiveArmor'
|
||||
SkillGroupB(3)=Class'NicePack.NiceSkillDemoManiac'
|
||||
SkillGroupB(4)=Class'NicePack.NiceSkillDemoZEDFullBlast'
|
||||
progressArray0(0)=100
|
||||
progressArray0(1)=1000
|
||||
progressArray0(2)=3000
|
||||
progressArray0(3)=10000
|
||||
progressArray0(4)=30000
|
||||
progressArray0(5)=100000
|
||||
progressArray0(6)=200000
|
||||
DefaultDamageType=Class'NicePack.NiceDamageTypeVetDemolitions'
|
||||
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Demolition',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Demolition_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_Demolition_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_Demolition_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_Demolition_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_Demolition_Orange',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Orange',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
CustomLevelInfo="Level up by doing damage with perked weapons|25% extra explosives damage|50% better stun and flinch ability for all weapons|50% resistance to explosives|+5 grenades|+6 pipe bombs"
|
||||
PerkIndex=6
|
||||
OnHUDIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Demolition'
|
||||
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Demolition_Gold'
|
||||
VeterancyName="Demolitions"
|
||||
Requirements(0)="Required experience for the next level: %x"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,118 +1,157 @@
|
|||
class NiceVetEnforcer extends NiceVeterancyTypes
|
||||
abstract;
|
||||
|
||||
static function AddCustomStats(ClientPerkRepLink Other){
|
||||
Other.AddCustomValue(Class'NiceVetSupportExp');
|
||||
}
|
||||
|
||||
static function int GetStatValueInt(ClientPerkRepLink StatOther, byte ReqNum){
|
||||
return StatOther.GetCustomValueInt(Class'NiceVetSupportExp');
|
||||
}
|
||||
|
||||
static function array<int> GetProgressArray(byte ReqNum, optional out int DoubleScalingBase){
|
||||
return default.progressArray0;
|
||||
}
|
||||
|
||||
// Other bonuses
|
||||
|
||||
static function float GetPenetrationDamageMulti(KFPlayerReplicationInfo KFPRI, float DefaultPenDamageReduction, class<NiceWeaponDamageType> fireIntance){
|
||||
local float bonusReduction;
|
||||
local float PenDamageInverse;
|
||||
bonusReduction = 0.0;
|
||||
if(class<NiceDamageTypeVetEnforcerBullets>(fireIntance) != none)
|
||||
return DefaultPenDamageReduction;
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillSupportStubbornness'))
bonusReduction = class'NiceSkillSupportStubbornness'.default.penLossRed;
|
||||
PenDamageInverse = (1.0 - FMax(0, DefaultPenDamageReduction));
|
||||
return DefaultPenDamageReduction + PenDamageInverse * (0.6 + 0.4 * bonusReduction); // 60% better penetrations + bonus
|
||||
}
|
||||
|
||||
static function int AddStunScore(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InStunScore, class<NiceWeaponDamageType> DmgType){
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = GetPickupFromDamageType(DmgType);
|
||||
if(KFPRI != none && IsPerkedPickup(pickupClass) && HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerBombard'))
return InStunScore * class'NiceSkillEnforcerBombard'.default.stunMult;
|
||||
return InStunScore;
|
||||
}
|
||||
|
||||
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI){
|
||||
/*if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillSupportCautious'))
return class'NicePack.NiceDelayedNade';
|
||||
return class'NicePack.NiceNailNade';*/
|
||||
return class'NicePack.NiceCryoNade';
|
||||
}
|
||||
|
||||
static function int ReduceDamage(KFPlayerReplicationInfo KFPRI, KFPawn Injured, Pawn Instigator, int InDamage, class<DamageType> DmgType){
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerDetermination') && Injured.Health < class'NiceSkillEnforcerDetermination'.default.healthBound)
|
||||
InDamage *= (1 - class'NiceSkillEnforcerDetermination'.default.addedResist);
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerUnshakable'))
|
||||
InDamage *= (1 - class'NiceSkillEnforcerUnshakable'.default.skillResist);
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillHeavyCoating') && Injured.ShieldStrength > 0){
|
||||
if( class<KFWeaponDamageType>(DmgType) != none
|
||||
&& ((class<KFWeaponDamageType>(DmgType).default.bDealBurningDamage && KFMonster(Instigator) != none)
|
||||
|| DmgType == class'NiceZombieTeslaHusk'.default.MyDamageType) )
|
||||
InDamage *= (1 - class'NiceSkillHeavyCoating'.default.huskResist);
|
||||
}
|
||||
return InDamage;
|
||||
}
|
||||
|
||||
static function float GetFireSpeedModStatic(KFPlayerReplicationInfo KFPRI, class<Weapon> other){
|
||||
local float fireSpeed;
|
||||
local NicePlayerController nicePlayer;
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = GetPickupFromWeapon(other);
|
||||
if(KFPRI.Owner == none)
|
||||
return 1.0;
|
||||
if(IsPerkedPickup(pickupClass) && HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillHeavyOverclocking'))
|
||||
fireSpeed = class'NiceSkillHeavyOverclocking'.default.fireSpeedMult;
|
||||
else
|
||||
fireSpeed = 1.0;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
/*if(nicePlayer != none && HasSkill(nicePlayer, class'NiceSkillEnforcerZEDBarrage'))
|
||||
fireSpeed /= (KFPRI.Owner.Level.TimeDilation / 1.1);*/
|
||||
return fireSpeed;
|
||||
}
|
||||
|
||||
static function float ModifyRecoilSpread(KFPlayerReplicationInfo KFPRI, WeaponFire other, out float Recoil){
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = GetPickupFromWeaponFire(other);
|
||||
if(IsPerkedPickup(pickupClass) && HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillHeavyOverclocking'))
|
||||
Recoil = class'NiceSkillHeavyOverclocking'.default.fireSpeedMult;
|
||||
else
|
||||
Recoil = 1.0;
|
||||
return Recoil;
|
||||
}
|
||||
|
||||
/*static function float GetMagCapacityModStatic(KFPlayerReplicationInfo KFPRI, class<KFWeapon> other){
|
||||
local class<NiceWeapon> niceWeap;
|
||||
niceWeap = class<NiceWeapon>(other);
|
||||
if(niceWeap != none && niceWeap.default.reloadType == RTYPE_MAG)
|
||||
return 1.5;
|
||||
if(other == class'NicePack.NiceM41AAssaultRifle' || other == class'NicePack.NiceChainGun' || other == class'NicePack.NiceStinger' )
|
||||
return 1.5;
|
||||
return 1.0;
|
||||
}*/
|
||||
|
||||
static function float GetMovementSpeedModifier(KFPlayerReplicationInfo KFPRI, KFGameReplicationInfo KFGRI){
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerUnstoppable'))
|
||||
return class'NiceSkillEnforcerUnstoppable'.default.speedMult;
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
static function bool CanBePulled(KFPlayerReplicationInfo KFPRI){
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerUnstoppable'))
|
||||
return false;
|
||||
return super.CanBePulled(KFPRI);
|
||||
}
|
||||
|
||||
static function float SlowingModifier(KFPlayerReplicationInfo KFPRI){
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerUnstoppable'))
|
||||
return 0.0;
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
static function string GetCustomLevelInfo(byte Level){
|
||||
return default.CustomLevelInfo;
|
||||
}
|
||||
defaultproperties
|
||||
{
bNewTypePerk=True
|
||||
SkillGroupA(0)=Class'NicePack.NiceSkillEnforcerUnstoppable'
SkillGroupA(1)=Class'NicePack.NiceSkillEnforcerBombard'
SkillGroupA(2)=Class'NicePack.NiceSkillEnforcerFullCounter'
SkillGroupA(4)=Class'NicePack.NiceSkillEnforcerZEDBarrage'
|
||||
SkillGroupB(0)=Class'NicePack.NiceSkillEnforcerUnshakable'
SkillGroupB(1)=Class'NicePack.NiceSkillEnforcerMultitasker'
SkillGroupB(2)=Class'NicePack.NiceSkillEnforcerDetermination'
SkillGroupB(4)=Class'NicePack.NiceSkillEnforcerZEDJuggernaut'
progressArray0(0)=100
progressArray0(1)=1000
progressArray0(2)=3000
progressArray0(3)=10000
progressArray0(4)=30000
progressArray0(5)=100000
progressArray0(6)=200000
DefaultDamageType=Class'NicePack.NiceDamageTypeVetEnforcer'
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Support',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Support_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_Support_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_Support_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_Support_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_Support_Orange',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Orange',DrawColor=(B=255,G=255,R=255,A=255))
CustomLevelInfo="Level up by doing damage with perked weapons|60% better penetration with all weapons"
PerkIndex=1
OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Support'
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Support_Gold'
VeterancyName="Enforcer"
Requirements(0)="Required experience for the next level: %x"
|
||||
class NiceVetEnforcer extends NiceVeterancyTypes
|
||||
abstract;
|
||||
|
||||
static function AddCustomStats(ClientPerkRepLink Other){
|
||||
Other.AddCustomValue(Class'NiceVetSupportExp');
|
||||
}
|
||||
|
||||
static function int GetStatValueInt(ClientPerkRepLink StatOther, byte ReqNum){
|
||||
return StatOther.GetCustomValueInt(Class'NiceVetSupportExp');
|
||||
}
|
||||
|
||||
static function array<int> GetProgressArray(byte ReqNum, optional out int DoubleScalingBase){
|
||||
return default.progressArray0;
|
||||
}
|
||||
|
||||
// Other bonuses
|
||||
|
||||
static function float GetPenetrationDamageMulti(KFPlayerReplicationInfo KFPRI, float DefaultPenDamageReduction, class<NiceWeaponDamageType> fireIntance){
|
||||
local float bonusReduction;
|
||||
local float PenDamageInverse;
|
||||
bonusReduction = 0.0;
|
||||
if(class<NiceDamageTypeVetEnforcerBullets>(fireIntance) != none)
|
||||
return DefaultPenDamageReduction;
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillSupportStubbornness'))
|
||||
bonusReduction = class'NiceSkillSupportStubbornness'.default.penLossRed;
|
||||
PenDamageInverse = (1.0 - FMax(0, DefaultPenDamageReduction));
|
||||
return DefaultPenDamageReduction + PenDamageInverse * (0.6 + 0.4 * bonusReduction); // 60% better penetrations + bonus
|
||||
}
|
||||
|
||||
static function int AddStunScore(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InStunScore, class<NiceWeaponDamageType> DmgType){
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = GetPickupFromDamageType(DmgType);
|
||||
if(KFPRI != none && IsPerkedPickup(pickupClass) && HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerBombard'))
|
||||
return InStunScore * class'NiceSkillEnforcerBombard'.default.stunMult;
|
||||
return InStunScore;
|
||||
}
|
||||
|
||||
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI){
|
||||
/*if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillSupportCautious'))
|
||||
return class'NicePack.NiceDelayedNade';
|
||||
return class'NicePack.NiceNailNade';*/
|
||||
return class'NicePack.NiceCryoNade';
|
||||
}
|
||||
|
||||
static function float AddExtraAmmoFor(KFPlayerReplicationInfo KFPRI, Class<Ammunition> AmmoType){
|
||||
local float bonusNades;
|
||||
// Default bonus
|
||||
bonusNades = 2;
|
||||
if(AmmoType == class'NicePack.NiceCryoNade' || AmmoType == class'NicePack.NiceNailNade')
|
||||
return 1.0 + 0.2 * bonusNades;
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
static function int ReduceDamage(KFPlayerReplicationInfo KFPRI, KFPawn Injured, Pawn Instigator, int InDamage, class<DamageType> DmgType){
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerDetermination') && Injured.Health < class'NiceSkillEnforcerDetermination'.default.healthBound)
|
||||
InDamage *= (1 - class'NiceSkillEnforcerDetermination'.default.addedResist);
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerUnshakable'))
|
||||
InDamage *= (1 - class'NiceSkillEnforcerUnshakable'.default.skillResist);
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillHeavyCoating') && Injured.ShieldStrength > 0){
|
||||
if( class<KFWeaponDamageType>(DmgType) != none
|
||||
&& ((class<KFWeaponDamageType>(DmgType).default.bDealBurningDamage && KFMonster(Instigator) != none)
|
||||
|| DmgType == class'NiceZombieTeslaHusk'.default.MyDamageType) )
|
||||
InDamage *= (1 - class'NiceSkillHeavyCoating'.default.huskResist);
|
||||
}
|
||||
return InDamage;
|
||||
}
|
||||
|
||||
static function float GetFireSpeedModStatic(KFPlayerReplicationInfo KFPRI, class<Weapon> other){
|
||||
local float fireSpeed;
|
||||
local NicePlayerController nicePlayer;
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = GetPickupFromWeapon(other);
|
||||
if(KFPRI.Owner == none)
|
||||
return 1.0;
|
||||
if(IsPerkedPickup(pickupClass) && HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillHeavyOverclocking'))
|
||||
fireSpeed = class'NiceSkillHeavyOverclocking'.default.fireSpeedMult;
|
||||
else
|
||||
fireSpeed = 1.0;
|
||||
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||
/*if(nicePlayer != none && HasSkill(nicePlayer, class'NiceSkillEnforcerZEDBarrage'))
|
||||
fireSpeed /= (KFPRI.Owner.Level.TimeDilation / 1.1);*/
|
||||
return fireSpeed;
|
||||
}
|
||||
|
||||
static function float ModifyRecoilSpread(KFPlayerReplicationInfo KFPRI, WeaponFire other, out float Recoil){
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = GetPickupFromWeaponFire(other);
|
||||
if(IsPerkedPickup(pickupClass) && HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillHeavyOverclocking'))
|
||||
Recoil = class'NiceSkillHeavyOverclocking'.default.fireSpeedMult;
|
||||
else
|
||||
Recoil = 1.0;
|
||||
return Recoil;
|
||||
}
|
||||
|
||||
/*static function float GetMagCapacityModStatic(KFPlayerReplicationInfo KFPRI, class<KFWeapon> other){
|
||||
local class<NiceWeapon> niceWeap;
|
||||
niceWeap = class<NiceWeapon>(other);
|
||||
if(niceWeap != none && niceWeap.default.reloadType == RTYPE_MAG)
|
||||
return 1.5;
|
||||
if(other == class'NicePack.NiceM41AAssaultRifle' || other == class'NicePack.NiceChainGun' || other == class'NicePack.NiceStinger' )
|
||||
return 1.5;
|
||||
return 1.0;
|
||||
}*/
|
||||
|
||||
static function float GetMovementSpeedModifier(KFPlayerReplicationInfo KFPRI, KFGameReplicationInfo KFGRI){
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerUnstoppable'))
|
||||
return class'NiceSkillEnforcerUnstoppable'.default.speedMult;
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
static function bool CanBePulled(KFPlayerReplicationInfo KFPRI){
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerUnstoppable'))
|
||||
return false;
|
||||
return super.CanBePulled(KFPRI);
|
||||
}
|
||||
|
||||
static function float SlowingModifier(KFPlayerReplicationInfo KFPRI){
|
||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerUnstoppable'))
|
||||
return 0.0;
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
static function string GetCustomLevelInfo(byte Level){
|
||||
return default.CustomLevelInfo;
|
||||
}
|
||||
defaultproperties
|
||||
{
|
||||
bNewTypePerk=True
|
||||
SkillGroupA(0)=Class'NicePack.NiceSkillEnforcerUnstoppable'
|
||||
SkillGroupA(1)=Class'NicePack.NiceSkillEnforcerBombard'
|
||||
SkillGroupA(2)=Class'NicePack.NiceSkillEnforcerFullCounter'
|
||||
SkillGroupA(4)=Class'NicePack.NiceSkillEnforcerZEDBarrage'
|
||||
SkillGroupB(0)=Class'NicePack.NiceSkillEnforcerUnshakable'
|
||||
SkillGroupB(1)=Class'NicePack.NiceSkillEnforcerMultitasker'
|
||||
SkillGroupB(2)=Class'NicePack.NiceSkillEnforcerDetermination'
|
||||
SkillGroupB(4)=Class'NicePack.NiceSkillEnforcerZEDJuggernaut'
|
||||
progressArray0(0)=100
|
||||
progressArray0(1)=1000
|
||||
progressArray0(2)=3000
|
||||
progressArray0(3)=10000
|
||||
progressArray0(4)=30000
|
||||
progressArray0(5)=100000
|
||||
progressArray0(6)=200000
|
||||
DefaultDamageType=Class'NicePack.NiceDamageTypeVetEnforcer'
|
||||
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Support',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Support_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_Support_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_Support_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_Support_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_Support_Orange',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Orange',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
CustomLevelInfo="Level up by doing damage with perked weapons|60% better penetration with all weapons|+2 grenades"
|
||||
PerkIndex=1
|
||||
OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Support'
|
||||
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Support_Gold'
|
||||
VeterancyName="Enforcer"
|
||||
Requirements(0)="Required experience for the next level: %x"
|
||||
}
|
||||
|
|
@ -1,62 +1,95 @@
|
|||
class NiceVetFieldMedic extends NiceVeterancyTypes
|
||||
abstract;
|
||||
static function AddCustomStats(ClientPerkRepLink Other){
|
||||
Other.AddCustomValue(Class'NiceVetFieldMedicExp');
|
||||
}
|
||||
static function int GetStatValueInt(ClientPerkRepLink StatOther, byte ReqNum){
|
||||
return StatOther.GetCustomValueInt(Class'NiceVetFieldMedicExp');
|
||||
}
|
||||
static function array<int> GetProgressArray(byte ReqNum, optional out int DoubleScalingBase){
|
||||
return default.progressArray0;
|
||||
}
|
||||
// Allows to increase head-shot check scale for some weapons.
|
||||
static function float GetHeadshotCheckMultiplier(KFPlayerReplicationInfo KFPRI, class<DamageType> DmgType){
|
||||
if(KFPRI != none && class'NiceVetFieldMedic'.static.hasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillMedicAimAssistance'))
return class'NiceSkillMedicAimAssistance'.default.headIncrease;
|
||||
return 1.0;
|
||||
}
|
||||
// Give Medic normal hand nades again - he should buy medic nade lauchers for healing nades
|
||||
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI){
|
||||
if(KFPRI != none && class'NiceVetFieldMedic'.static.hasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillMedicArmament'))
return class'NicePack.NiceMedicNade';
|
||||
return class'NiceMedicNadePoison';
|
||||
}
|
||||
static function float GetAmmoPickupMod(KFPlayerReplicationInfo KFPRI, KFAmmunition Other){
|
||||
if(other != none && other.class == class'FragAmmo'
&& KFPRI != none && class'NiceVetFieldMedic'.static.hasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillMedicArmament'))
return 0.0;
|
||||
return 1.0;
|
||||
}
|
||||
//can't cook medic nades
|
||||
static function bool CanCookNade(KFPlayerReplicationInfo KFPRI, Weapon Weap){
|
||||
return GetNadeType(KFPRI) != class'NicePack.NiceMedicNade';
|
||||
}
|
||||
static function float GetSyringeChargeRate(KFPlayerReplicationInfo KFPRI){
|
||||
return 3.0;
|
||||
}
|
||||
static function float GetHealPotency(KFPlayerReplicationInfo KFPRI){
|
||||
local float potency, debuff;
|
||||
potency = 2.0;
|
||||
debuff = 0.0;
|
||||
if(KFPRI != none && class'NiceVetFieldMedic'.static.hasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillMedicTranquilizer'))
debuff += class'NiceSkillMedicTranquilizer'.default.healingDebuff;
|
||||
potency *= (1.0 - debuff);
|
||||
return potency;
|
||||
}
|
||||
static function float GetFireSpeedModStatic(KFPlayerReplicationInfo KFPRI, class<Weapon> Other){
|
||||
if(ClassIsChildOf(Other, class'Syringe'))
return 1.6;
|
||||
return 1.0;
|
||||
}
|
||||
static function float GetMovementSpeedModifier(KFPlayerReplicationInfo KFPRI, KFGameReplicationInfo KFGRI){
|
||||
return 1.2;
|
||||
}
|
||||
static function float SlowingModifier(KFPlayerReplicationInfo KFPRI){
|
||||
return 1.5;
|
||||
}
|
||||
static function float GetCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item){
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = class<NiceWeaponPickup>(Item);
|
||||
if(IsPerkedPickup(class<NiceWeaponPickup>(Item)))
return 0.5;
|
||||
return 1.0;
|
||||
}
|
||||
static function string GetCustomLevelInfo(byte Level){
|
||||
return default.CustomLevelInfo;
|
||||
}
|
||||
defaultproperties
|
||||
{
SkillGroupA(0)=Class'NicePack.NiceSkillMedicSymbioticHealth'
SkillGroupA(1)=Class'NicePack.NiceSkillMedicArmament'
SkillGroupA(2)=Class'NicePack.NiceSkillMedicAdrenalineShot'
SkillGroupA(3)=Class'NicePack.NiceSkillMedicInjection'
SkillGroupA(4)=Class'NicePack.NiceSkillMedicZEDHeavenCanceller'
SkillGroupB(0)=Class'NicePack.NiceSkillMedicAimAssistance'
SkillGroupB(1)=Class'NicePack.NiceSkillMedicPesticide'
SkillGroupB(2)=Class'NicePack.NiceSkillMedicRegeneration'
SkillGroupB(3)=Class'NicePack.NiceSkillMedicTranquilizer'
SkillGroupB(4)=Class'NicePack.NiceSkillMedicZEDFrenzy'
progressArray0(0)=100
progressArray0(1)=1000
progressArray0(2)=3000
progressArray0(3)=10000
progressArray0(4)=30000
progressArray0(5)=100000
progressArray0(6)=200000
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Medic',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Medic_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_Medic_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_Medic_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_Medic_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_Medic_Orange',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Orange',DrawColor=(B=255,G=255,R=255,A=255))
CustomLevelInfo="Level up by doing damage with perked weapons|50% discount on everything|100% more potent medical injections|20% faster movement speed|Better Syringe handling"
PerkIndex=0
OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Medic'
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Medic_Gold'
VeterancyName="Field Medic"
Requirements(0)="Required experience for the next level: %x"
|
||||
}
|
||||
class NiceVetFieldMedic extends NiceVeterancyTypes
|
||||
abstract;
|
||||
static function AddCustomStats(ClientPerkRepLink Other){
|
||||
Other.AddCustomValue(Class'NiceVetFieldMedicExp');
|
||||
}
|
||||
static function int GetStatValueInt(ClientPerkRepLink StatOther, byte ReqNum){
|
||||
return StatOther.GetCustomValueInt(Class'NiceVetFieldMedicExp');
|
||||
}
|
||||
static function array<int> GetProgressArray(byte ReqNum, optional out int DoubleScalingBase){
|
||||
return default.progressArray0;
|
||||
}
|
||||
// Allows to increase head-shot check scale for some weapons.
|
||||
static function float GetHeadshotCheckMultiplier(KFPlayerReplicationInfo KFPRI, class<DamageType> DmgType){
|
||||
if(KFPRI != none && class'NiceVetFieldMedic'.static.hasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillMedicAimAssistance'))
|
||||
return class'NiceSkillMedicAimAssistance'.default.headIncrease;
|
||||
return 1.0;
|
||||
}
|
||||
// Give Medic normal hand nades again - he should buy medic nade lauchers for healing nades
|
||||
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI){
|
||||
if(KFPRI != none && class'NiceVetFieldMedic'.static.hasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillMedicArmament'))
|
||||
return class'NicePack.NiceMedicNade';
|
||||
return class'NiceMedicNadePoison';
|
||||
}
|
||||
static function float GetAmmoPickupMod(KFPlayerReplicationInfo KFPRI, KFAmmunition Other){
|
||||
if(other != none && other.class == class'FragAmmo'
|
||||
&& KFPRI != none && class'NiceVetFieldMedic'.static.hasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillMedicArmament'))
|
||||
return 0.0;
|
||||
return 1.0;
|
||||
}
|
||||
//can't cook medic nades
|
||||
static function bool CanCookNade(KFPlayerReplicationInfo KFPRI, Weapon Weap){
|
||||
return GetNadeType(KFPRI) != class'NicePack.NiceMedicNade';
|
||||
}
|
||||
static function float GetSyringeChargeRate(KFPlayerReplicationInfo KFPRI){
|
||||
return 3.0;
|
||||
}
|
||||
static function float GetHealPotency(KFPlayerReplicationInfo KFPRI){
|
||||
local float potency, debuff;
|
||||
potency = 2.0;
|
||||
debuff = 0.0;
|
||||
if(KFPRI != none && class'NiceVetFieldMedic'.static.hasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillMedicTranquilizer'))
|
||||
debuff += class'NiceSkillMedicTranquilizer'.default.healingDebuff;
|
||||
potency *= (1.0 - debuff);
|
||||
return potency;
|
||||
}
|
||||
static function float GetFireSpeedModStatic(KFPlayerReplicationInfo KFPRI, class<Weapon> Other){
|
||||
if(ClassIsChildOf(Other, class'Syringe'))
|
||||
return 1.6;
|
||||
return 1.0;
|
||||
}
|
||||
static function float GetMovementSpeedModifier(KFPlayerReplicationInfo KFPRI, KFGameReplicationInfo KFGRI){
|
||||
return 1.2;
|
||||
}
|
||||
static function float GetCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item){
|
||||
local class<NiceWeaponPickup> pickupClass;
|
||||
pickupClass = class<NiceWeaponPickup>(Item);
|
||||
if(IsPerkedPickup(class<NiceWeaponPickup>(Item)))
|
||||
return 0.5;
|
||||
return 1.0;
|
||||
}
|
||||
static function string GetCustomLevelInfo(byte Level){
|
||||
return default.CustomLevelInfo;
|
||||
}
|
||||
defaultproperties
|
||||
{
|
||||
SkillGroupA(0)=Class'NicePack.NiceSkillMedicSymbioticHealth'
|
||||
SkillGroupA(1)=Class'NicePack.NiceSkillMedicArmament'
|
||||
SkillGroupA(2)=Class'NicePack.NiceSkillMedicAdrenalineShot'
|
||||
SkillGroupA(3)=Class'NicePack.NiceSkillMedicInjection'
|
||||
SkillGroupA(4)=Class'NicePack.NiceSkillMedicZEDHeavenCanceller'
|
||||
SkillGroupB(0)=Class'NicePack.NiceSkillMedicAimAssistance'
|
||||
SkillGroupB(1)=Class'NicePack.NiceSkillMedicPesticide'
|
||||
SkillGroupB(2)=Class'NicePack.NiceSkillMedicRegeneration'
|
||||
SkillGroupB(3)=Class'NicePack.NiceSkillMedicTranquilizer'
|
||||
SkillGroupB(4)=Class'NicePack.NiceSkillMedicZEDFrenzy'
|
||||
progressArray0(0)=100
|
||||
progressArray0(1)=1000
|
||||
progressArray0(2)=3000
|
||||
progressArray0(3)=10000
|
||||
progressArray0(4)=30000
|
||||
progressArray0(5)=100000
|
||||
progressArray0(6)=200000
|
||||
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Medic',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Medic_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_Medic_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_Medic_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_Medic_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_Medic_Orange',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Orange',DrawColor=(B=255,G=255,R=255,A=255))
|
||||
CustomLevelInfo="Level up by doing damage with perked weapons|50% discount on everything|100% more potent medical injections|20% faster movement speed|Better Syringe handling"
|
||||
PerkIndex=0
|
||||
OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Medic'
|
||||
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Medic_Gold'
|
||||
VeterancyName="Field Medic"
|
||||
Requirements(0)="Required experience for the next level: %x"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,52 +1,87 @@
|
|||
//==============================================================================
|
||||
// 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
|
||||
{
|
||||
}
|
||||
//==============================================================================
|
||||
// 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 = 3;
|
||||
}
|
||||
}
|
||||
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 > 3)
|
||||
nicePawn.calibrationScore -= 1;
|
||||
}
|
||||
defaultproperties
|
||||
{
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue