Buff enforcer
This commit is contained in:
parent
4f4455f9b1
commit
2135c0b46b
@ -240,8 +240,8 @@ function PostRender(Canvas C)
|
|||||||
x = center - (barWidth / 2);
|
x = center - (barWidth / 2);
|
||||||
C.SetPos(x, y);
|
C.SetPos(x, y);
|
||||||
C.DrawTile(barTexture, barWidth, 32, 0, 0, barTexture.MaterialUSize(), barTexture.MaterialVSize());
|
C.DrawTile(barTexture, barWidth, 32, 0, 0, barTexture.MaterialUSize(), barTexture.MaterialVSize());
|
||||||
if (nicePawn.safeMeleeMisses <= 0)
|
if (nicePawn.safeMeleeMisses > 0)
|
||||||
return;
|
{
|
||||||
missesSpace = 10; // 64x64 => 16x16
|
missesSpace = 10; // 64x64 => 16x16
|
||||||
missesHeight = 16;
|
missesHeight = 16;
|
||||||
missesWidth = nicePawn.safeMeleeMisses * 16 + (nicePawn.safeMeleeMisses - 1) * missesSpace;
|
missesWidth = nicePawn.safeMeleeMisses * 16 + (nicePawn.safeMeleeMisses - 1) * missesSpace;
|
||||||
@ -254,6 +254,7 @@ function PostRender(Canvas C)
|
|||||||
C.DrawTile(shield, 16, 16, 0, 0, shield.MaterialUSize(), shield.MaterialVSize());
|
C.DrawTile(shield, 16, 16, 0, 0, shield.MaterialUSize(), shield.MaterialVSize());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//// Draw cooldowns
|
//// Draw cooldowns
|
||||||
if (nicePlayer.abilityManager == none)
|
if (nicePlayer.abilityManager == none)
|
||||||
|
@ -16,6 +16,7 @@ var float ffScale;
|
|||||||
var float medicAdrenaliteTime;
|
var float medicAdrenaliteTime;
|
||||||
var float regenTime;
|
var float regenTime;
|
||||||
var bool bZedTimeInvincible;
|
var bool bZedTimeInvincible;
|
||||||
|
var float nextFreezeTime;
|
||||||
enum ECalibrationState{
|
enum ECalibrationState{
|
||||||
// Calibration isn't available due to lack of ability
|
// Calibration isn't available due to lack of ability
|
||||||
CALSTATE_NOABILITY,
|
CALSTATE_NOABILITY,
|
||||||
@ -44,9 +45,7 @@ struct InvincExtentions{
|
|||||||
};
|
};
|
||||||
var array<InvincExtentions> zedInvExtList;
|
var array<InvincExtentions> zedInvExtList;
|
||||||
var int headshotStack;
|
var int headshotStack;
|
||||||
var float remainingFCArmor;
|
var float bruteTimer;
|
||||||
var float remainingFCTime;
|
|
||||||
var float brutalCranageTimer;
|
|
||||||
replication{
|
replication{
|
||||||
reliable if(Role == ROLE_Authority)
|
reliable if(Role == ROLE_Authority)
|
||||||
headshotStack, hmgShieldLevel, forcedZedTimeCountDown, maniacTimeout, invincibilityTimer, safeMeleeMisses, ffScale,
|
headshotStack, hmgShieldLevel, forcedZedTimeCountDown, maniacTimeout, invincibilityTimer, safeMeleeMisses, ffScale,
|
||||||
@ -141,6 +140,8 @@ simulated function bool TryExtendingInv(NiceMonster niceZed,
|
|||||||
GetVeterancy(PlayerReplicationInfo);
|
GetVeterancy(PlayerReplicationInfo);
|
||||||
if(niceVet == none)
|
if(niceVet == none)
|
||||||
return false;
|
return false;
|
||||||
|
if (niceVet == class'NiceVetEnforcer')
|
||||||
|
return false;
|
||||||
zedExtIndex = GetZedExtentionsIndex(niceZed);
|
zedExtIndex = GetZedExtentionsIndex(niceZed);
|
||||||
if(zedExtIndex >= 0 && !wasHeadshot)
|
if(zedExtIndex >= 0 && !wasHeadshot)
|
||||||
zedInvExtList[zedExtIndex].hadMiss = true;
|
zedInvExtList[zedExtIndex].hadMiss = true;
|
||||||
@ -226,6 +227,7 @@ simulated function Tick(float deltaTime)
|
|||||||
{
|
{
|
||||||
local int index;
|
local int index;
|
||||||
local Inventory Item;
|
local Inventory Item;
|
||||||
|
local NiceMonster niceZed;
|
||||||
local NiceWeapon niceWeap;
|
local NiceWeapon niceWeap;
|
||||||
local WeaponTimePair newPair;
|
local WeaponTimePair newPair;
|
||||||
local array<WeaponTimePair> newWTPList;
|
local array<WeaponTimePair> newWTPList;
|
||||||
@ -236,10 +238,10 @@ simulated function Tick(float deltaTime)
|
|||||||
if (Role == Role_AUTHORITY)
|
if (Role == Role_AUTHORITY)
|
||||||
{
|
{
|
||||||
// Brutal carnage
|
// Brutal carnage
|
||||||
if (brutalCranageTimer > 0)
|
if (bruteTimer > 0)
|
||||||
{
|
{
|
||||||
brutalCranageTimer -= deltaTime;
|
bruteTimer -= deltaTime;
|
||||||
if (brutalCranageTimer <= 0)
|
if (bruteTimer <= 0)
|
||||||
{
|
{
|
||||||
if(nicePlayer != none && nicePlayer.abilityManager != none)
|
if(nicePlayer != none && nicePlayer.abilityManager != none)
|
||||||
{
|
{
|
||||||
@ -247,17 +249,28 @@ simulated function Tick(float deltaTime)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Full counter remainingFCTime
|
// Ice giant NiceSkillEnforcerZEDIceGiant
|
||||||
if (remainingFCTime > 0)
|
if( nicePlayer != none && nicePlayer.IsZedTimeActive()
|
||||||
|
&& nextFreezeTime < level.timeSeconds
|
||||||
|
&& class'NiceVeterancyTypes'.static.hasSkill(
|
||||||
|
nicePlayer, class'NiceSkillEnforcerZEDIceGiant'))
|
||||||
{
|
{
|
||||||
remainingFCTime -= deltaTime;
|
nextFreezeTime =
|
||||||
if (remainingFCTime <= 0)
|
level.timeSeconds + class'NiceCryoNade'.default.freezeRate;
|
||||||
|
foreach CollidingActors(
|
||||||
|
class 'NiceMonster', niceZed,
|
||||||
|
class'NiceCryoNade'.default.damageRadius,
|
||||||
|
location)
|
||||||
{
|
{
|
||||||
remainingFCArmor = 0;
|
if(niceZed.Health <= 0) {
|
||||||
if(nicePlayer != none && nicePlayer.abilityManager != none)
|
continue;
|
||||||
{
|
|
||||||
nicePlayer.abilityManager.SetAbilityState(0, ASTATE_COOLDOWN);
|
|
||||||
}
|
}
|
||||||
|
niceZed.TakeDamage(
|
||||||
|
class'NiceCryoNade'.default.damage,
|
||||||
|
self,
|
||||||
|
niceZed.location,
|
||||||
|
vect(0,0,0),
|
||||||
|
class'NiceCryoNade'.default.myDamageType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Calibration
|
// Calibration
|
||||||
@ -595,7 +608,7 @@ simulated function HandleNadeThrowAnim()
|
|||||||
function bool ShouldBlur(){
|
function bool ShouldBlur(){
|
||||||
local class<NiceVeterancyTypes> niceVet;
|
local class<NiceVeterancyTypes> niceVet;
|
||||||
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(PlayerReplicationInfo);
|
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(PlayerReplicationInfo);
|
||||||
if(niceVet != none && niceVet.static.hasSkill(NicePlayerController(Controller), class'NiceSkillEnforcerUnshakable'))
|
if(niceVet != none && niceVet.static.hasSkill(NicePlayerController(Controller), class'NiceSkillEnforcerUnstoppable'))
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -718,7 +731,6 @@ function getFreeJacket(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
simulated function TakeDamage(int Damage, Pawn InstigatedBy, Vector Hitlocation, Vector Momentum, class<DamageType> damageType, optional int HitIndex){
|
simulated function TakeDamage(int Damage, Pawn InstigatedBy, Vector Hitlocation, Vector Momentum, class<DamageType> damageType, optional int HitIndex){
|
||||||
local float FCArmorAbsorb;
|
|
||||||
local int needArmor;
|
local int needArmor;
|
||||||
local int healAmount;
|
local int healAmount;
|
||||||
local float healPotency;
|
local float healPotency;
|
||||||
@ -754,16 +766,6 @@ simulated function TakeDamage(int Damage, Pawn InstigatedBy, Vector Hitlocation,
|
|||||||
damageType.default.bArmorStops = true;
|
damageType.default.bArmorStops = true;
|
||||||
}
|
}
|
||||||
lastExplosionDistance = 0.0; // hack, but scrn fucks with usotherwise
|
lastExplosionDistance = 0.0; // hack, but scrn fucks with usotherwise
|
||||||
if (remainingFCArmor > 0 && remainingFCTime > 0)
|
|
||||||
{
|
|
||||||
FCArmorAbsorb = FMin(Damage, remainingFCArmor);
|
|
||||||
Damage -= FCArmorAbsorb;
|
|
||||||
remainingFCArmor -= FCArmorAbsorb;
|
|
||||||
if(remainingFCArmor <= 0 && nicePlayer != none && nicePlayer.abilityManager != none)
|
|
||||||
{
|
|
||||||
nicePlayer.abilityManager.SetAbilityState(0, ASTATE_COOLDOWN);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
super.TakeDamage(Damage, InstigatedBy, hitLocation, Momentum, damageType, HitIndex);
|
super.TakeDamage(Damage, InstigatedBy, hitLocation, Momentum, damageType, HitIndex);
|
||||||
// Commando's zed time
|
// Commando's zed time
|
||||||
if( forcedZedTimeCountDown <= 0.0
|
if( forcedZedTimeCountDown <= 0.0
|
||||||
|
@ -378,7 +378,7 @@ simulated function ClientSetKey(int key){
|
|||||||
function bool ShouldShake(){
|
function bool ShouldShake(){
|
||||||
local class<NiceVeterancyTypes> niceVet;
|
local class<NiceVeterancyTypes> niceVet;
|
||||||
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(PlayerReplicationInfo);
|
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(PlayerReplicationInfo);
|
||||||
if(niceVet != none && niceVet.static.hasSkill(self, class'NiceSkillEnforcerUnshakable'))
|
if(niceVet != none && niceVet.static.hasSkill(self, class'NiceSkillEnforcerUnstoppable'))
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -575,7 +575,7 @@ function BecomeActivePlayer(){
|
|||||||
if(NicePackMutator != none)
|
if(NicePackMutator != none)
|
||||||
NicePackMutator.GiveProgressiveDosh(self);
|
NicePackMutator.GiveProgressiveDosh(self);
|
||||||
}
|
}
|
||||||
function ServerStartleZeds(float dist){
|
function ServerStartleZeds(float dist, float duration){
|
||||||
local Vector pawnLoc;
|
local Vector pawnLoc;
|
||||||
local Controller contr;
|
local Controller contr;
|
||||||
local NiceMonsterController niceZed;
|
local NiceMonsterController niceZed;
|
||||||
@ -586,14 +586,10 @@ function ServerStartleZeds(float dist){
|
|||||||
for(contr = Level.ControllerList; contr != none; contr = contr.nextController){
|
for(contr = Level.ControllerList; contr != none; contr = contr.nextController){
|
||||||
niceZed = NiceMonsterController(contr);
|
niceZed = NiceMonsterController(contr);
|
||||||
if(niceZed != none && niceZed.Pawn != none && VSize(pawnLoc - niceZed.Pawn.Location) <= dist)
|
if(niceZed != none && niceZed.Pawn != none && VSize(pawnLoc - niceZed.Pawn.Location) <= dist)
|
||||||
niceZed.Startle(Pawn);
|
niceZed.StartleFor(Pawn, duration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
simulated function ClientEnterZedTime(){
|
|
||||||
super.ClientEnterZedTime();
|
|
||||||
if(IsZedTimeActive() && class'NiceVeterancyTypes'.static.HasSkill(self, class'NiceSkillEnforcerZEDJuggernaut'))
|
|
||||||
ServerStartleZeds(class'NiceSkillEnforcerZEDJuggernaut'.default.distance);
|
|
||||||
}
|
|
||||||
/*simulated function ClientExitZedTime(){
|
/*simulated function ClientExitZedTime(){
|
||||||
super.ClientExitZedTime();
|
super.ClientExitZedTime();
|
||||||
}*/
|
}*/
|
||||||
|
@ -10,84 +10,36 @@
|
|||||||
// E-mail: dkanus@gmail.com
|
// E-mail: dkanus@gmail.com
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
class NiceEnforcerAbilitiesAdapter extends NiceAbilitiesAdapter;
|
class NiceEnforcerAbilitiesAdapter extends NiceAbilitiesAdapter;
|
||||||
static function AbilityActivated( string abilityID,
|
static function AbilityActivated(
|
||||||
NicePlayerController relatedPlayer){
|
string abilityID,
|
||||||
|
NicePlayerController relatedPlayer)
|
||||||
|
{
|
||||||
local NiceHumanPawn nicePawn;
|
local NiceHumanPawn nicePawn;
|
||||||
local NiceMonster victim;
|
local NiceMonster victim;
|
||||||
if(relatedPlayer == none) return;
|
|
||||||
|
if (relatedPlayer == none) return;
|
||||||
nicePawn = NiceHumanPawn(relatedPlayer.pawn);
|
nicePawn = NiceHumanPawn(relatedPlayer.pawn);
|
||||||
if(nicePawn == none)
|
if (nicePawn == none) return;
|
||||||
return;
|
|
||||||
if(abilityID == "fullcounter"){
|
if (abilityID == "fullcounter")
|
||||||
nicePawn.remainingFCArmor = 100.0;
|
|
||||||
nicePawn.remainingFCTime = 1.0;
|
|
||||||
}
|
|
||||||
if(abilityID == "carnage"){
|
|
||||||
nicePawn.brutalCranageTimer = 10.0;
|
|
||||||
}
|
|
||||||
if(abilityID == class'NiceSkillEnforcerStuporA'.default.abilityID){
|
|
||||||
relatedPlayer.abilityManager.SetAbilityState(1, ASTATE_COOLDOWN);
|
|
||||||
foreach relatedPlayer.CollidingActors(class'NiceMonster', victim, class'NiceSkillEnforcerStuporA'.default.radius, relatedPlayer.pawn.location)
|
|
||||||
{
|
{
|
||||||
if (victim == none) continue;
|
nicePawn.invincibilityTimer += 2.0;
|
||||||
victim.DoRightPainReaction(class'NiceSkillEnforcerStuporA'.default.painScore,
|
relatedPlayer.abilityManager.SetAbilityState(0, ASTATE_COOLDOWN);
|
||||||
relatedPlayer.pawn, victim.location, Vect(0,0,0), none, 0.0,
|
|
||||||
KFPlayerReplicationInfo(relatedPlayer.PlayerReplicationInfo));
|
|
||||||
}
|
}
|
||||||
|
if (abilityID == "juggernaut")
|
||||||
|
{
|
||||||
|
relatedPlayer.abilityManager.SetAbilityState(1, ASTATE_COOLDOWN);
|
||||||
|
relatedPlayer.ServerStartleZeds(
|
||||||
|
class'NiceSkillEnforcerJuggernautA'.default.distance,
|
||||||
|
class'NiceSkillEnforcerJuggernautA'.default.duration);
|
||||||
}
|
}
|
||||||
}/*
|
if (abilityID == "brute")
|
||||||
static function AbilityAdded( string abilityID,
|
{
|
||||||
NicePlayerController relatedPlayer){
|
nicePawn.bruteTimer =
|
||||||
local NiceHumanPawn nicePawn;
|
class'NiceSkillEnforcerBruteA'.default.abilityDuration;
|
||||||
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
|
defaultproperties
|
||||||
{
|
{
|
||||||
}
|
}
|
@ -14,7 +14,29 @@ static function array<int> GetProgressArray(byte ReqNum, optional out int Double
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Other bonuses
|
// Other bonuses
|
||||||
|
static function int AddDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InDamage, class<DamageType> DmgType)
|
||||||
|
{
|
||||||
|
local float fDamage;
|
||||||
|
local NicePlayerController nicePlayer;
|
||||||
|
local NiceMonster niceTarget;
|
||||||
|
|
||||||
|
fDamage = float(InDamage);
|
||||||
|
nicePlayer = NicePlayerController(KFPRI.Owner);
|
||||||
|
niceTarget = NiceMonster(injured);
|
||||||
|
if ( niceTarget != none
|
||||||
|
&& niceTarget.bFrozenZed
|
||||||
|
&& HasSkill(nicePlayer, class'NiceSkillEnforcerFinisherRounds'))
|
||||||
|
{
|
||||||
|
fDamage *=
|
||||||
|
(1 + class'NiceSkillEnforcerFinisherRounds'.default.damageBonus);
|
||||||
|
}
|
||||||
|
if( nicePlayer != none && nicePlayer.abilityManager != none
|
||||||
|
&& nicePlayer.abilityManager.IsAbilityActive(class'NiceSkillEnforcerBruteA'.default.abilityID))
|
||||||
|
{
|
||||||
|
fDamage *= class'NiceSkillEnforcerBruteA'.default.damageMult;
|
||||||
|
}
|
||||||
|
return int(fDamage);
|
||||||
|
}
|
||||||
static function float GetPenetrationDamageMulti(KFPlayerReplicationInfo KFPRI, float DefaultPenDamageReduction, class<NiceWeaponDamageType> fireIntance){
|
static function float GetPenetrationDamageMulti(KFPlayerReplicationInfo KFPRI, float DefaultPenDamageReduction, class<NiceWeaponDamageType> fireIntance){
|
||||||
local float bonusReduction;
|
local float bonusReduction;
|
||||||
local float PenDamageInverse;
|
local float PenDamageInverse;
|
||||||
@ -52,17 +74,24 @@ static function float AddExtraAmmoFor(KFPlayerReplicationInfo KFPRI, Class<Ammun
|
|||||||
}
|
}
|
||||||
|
|
||||||
static function int ReduceDamage(KFPlayerReplicationInfo KFPRI, KFPawn Injured, Pawn Instigator, int InDamage, class<DamageType> DmgType){
|
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)
|
local float fDamage;
|
||||||
InDamage *= (1 - class'NiceSkillEnforcerDetermination'.default.addedResist);
|
fDamage = float(inDamage);
|
||||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerUnshakable'))
|
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerUnkillable') && Injured.Health < class'NiceSkillEnforcerUnkillable'.default.healthBound)
|
||||||
InDamage *= (1 - class'NiceSkillEnforcerUnshakable'.default.skillResist);
|
fDamage *= (1 - class'NiceSkillEnforcerUnkillable'.default.addedResist);
|
||||||
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerCoating') && Injured.ShieldStrength > 0){
|
if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillEnforcerCoating') && Injured.ShieldStrength > 0){
|
||||||
if( class<KFWeaponDamageType>(DmgType) != none
|
if( class<KFWeaponDamageType>(DmgType) != none
|
||||||
&& ((class<KFWeaponDamageType>(DmgType).default.bDealBurningDamage && KFMonster(Instigator) != none)
|
&& ((class<KFWeaponDamageType>(DmgType).default.bDealBurningDamage && KFMonster(Instigator) != none)
|
||||||
|| DmgType == class'NiceZombieTeslaHusk'.default.MyDamageType) )
|
|| DmgType == class'NiceZombieTeslaHusk'.default.MyDamageType) )
|
||||||
InDamage *= (1 - class'NiceSkillEnforcerCoating'.default.huskResist);
|
{
|
||||||
|
if (Injured.ShieldStrength >= 100) {
|
||||||
|
fDamage *= (1 - class'NiceSkillEnforcerCoating'.default.huskResist);
|
||||||
}
|
}
|
||||||
return InDamage;
|
else {
|
||||||
|
fDamage *= (1 - class'NiceSkillEnforcerCoating'.default.huskResist * (Injured.ShieldStrength / 100));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return int(fDamage);
|
||||||
}
|
}
|
||||||
|
|
||||||
static function float GetFireSpeedModStatic(KFPlayerReplicationInfo KFPRI, class<Weapon> other){
|
static function float GetFireSpeedModStatic(KFPlayerReplicationInfo KFPRI, class<Weapon> other){
|
||||||
@ -92,6 +121,10 @@ static function float ModifyRecoilSpread(KFPlayerReplicationInfo KFPRI, WeaponFi
|
|||||||
return Recoil;
|
return Recoil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static function int GetInvincibilityDuration(KFPlayerReplicationInfo KFPRI){
|
||||||
|
return 10.0;
|
||||||
|
}
|
||||||
|
|
||||||
/*static function float GetMagCapacityModStatic(KFPlayerReplicationInfo KFPRI, class<KFWeapon> other){
|
/*static function float GetMagCapacityModStatic(KFPlayerReplicationInfo KFPRI, class<KFWeapon> other){
|
||||||
local class<NiceWeapon> niceWeap;
|
local class<NiceWeapon> niceWeap;
|
||||||
niceWeap = class<NiceWeapon>(other);
|
niceWeap = class<NiceWeapon>(other);
|
||||||
@ -143,13 +176,13 @@ defaultproperties
|
|||||||
SkillGroupA(0)=class'NiceSkillEnforcerUnstoppable'
|
SkillGroupA(0)=class'NiceSkillEnforcerUnstoppable'
|
||||||
SkillGroupA(1)=class'NiceSkillEnforcerBombard'
|
SkillGroupA(1)=class'NiceSkillEnforcerBombard'
|
||||||
SkillGroupA(2)=class'NiceSkillEnforcerCoating'
|
SkillGroupA(2)=class'NiceSkillEnforcerCoating'
|
||||||
SkillGroupA(3)=class'NiceSkillEnforcerStuporA'
|
SkillGroupA(3)=class'NiceSkillEnforcerJuggernautA'
|
||||||
SkillGroupA(4)=class'NiceSkillEnforcerZEDBarrage'
|
SkillGroupA(4)=class'NiceSkillEnforcerZEDBarrage'
|
||||||
SkillGroupB(0)=class'NiceSkillEnforcerUnshakable'
|
SkillGroupB(0)=class'NiceSkillEnforcerUnkillable'
|
||||||
SkillGroupB(1)=class'NiceSkillEnforcerMultitasker'
|
SkillGroupB(1)=class'NiceSkillEnforcerMultitasker'
|
||||||
SkillGroupB(2)=class'NiceSkillEnforcerDetermination'
|
SkillGroupB(2)=class'NiceSkillEnforcerFinisherRounds'
|
||||||
SkillGroupB(3)=class'NiceSkillEnforcerBrutalCarnageA'
|
SkillGroupB(3)=class'NiceSkillEnforcerBruteA'
|
||||||
SkillGroupB(4)=class'NiceSkillEnforcerZEDJuggernaut'
|
SkillGroupB(4)=class'NiceSkillEnforcerZEDIceGiant'
|
||||||
progressArray0(0)=100
|
progressArray0(0)=100
|
||||||
progressArray0(1)=1000
|
progressArray0(1)=1000
|
||||||
progressArray0(2)=3000
|
progressArray0(2)=3000
|
||||||
@ -164,7 +197,7 @@ defaultproperties
|
|||||||
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(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(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))
|
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"
|
CustomLevelInfo="Level up by doing damage with perked weapons|60% better penetration with all weapons|+2 grenades|Cannot gain melee invincibility"
|
||||||
PerkIndex=1
|
PerkIndex=1
|
||||||
OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Support'
|
OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Support'
|
||||||
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Support_Gold'
|
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Support_Gold'
|
||||||
|
38
sources/Perks/Enforcer/Skills/NiceSkillEnforcerBruteA.uc
Normal file
38
sources/Perks/Enforcer/Skills/NiceSkillEnforcerBruteA.uc
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
class NiceSkillEnforcerBruteA extends NiceSkill
|
||||||
|
abstract;
|
||||||
|
|
||||||
|
var string abilityID;
|
||||||
|
var float coolDown;
|
||||||
|
var float abilityDuration;
|
||||||
|
var float damageMult;
|
||||||
|
|
||||||
|
function static SkillSelected(NicePlayerController nicePlayer)
|
||||||
|
{
|
||||||
|
local NiceAbilityManager.NiceAbilityDescription carnage;
|
||||||
|
|
||||||
|
if(nicePlayer == none) return;
|
||||||
|
if(nicePlayer.abilityManager == none) return;
|
||||||
|
|
||||||
|
carnage.ID = default.abilityID;
|
||||||
|
carnage.icon = Texture'NicePackT.HudCounter.demo';
|
||||||
|
carnage.cooldownLength = default.cooldown;
|
||||||
|
carnage.canBeCancelled = false;
|
||||||
|
nicePlayer.abilityManager.AddAbility(carnage);
|
||||||
|
}
|
||||||
|
function static SkillDeSelected(NicePlayerController nicePlayer)
|
||||||
|
{
|
||||||
|
if(nicePlayer == none) return;
|
||||||
|
if(nicePlayer.abilityManager == none) return;
|
||||||
|
|
||||||
|
nicePlayer.abilityManager.RemoveAbility(default.abilityID);
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultproperties
|
||||||
|
{
|
||||||
|
abilityID="brute"
|
||||||
|
cooldown=60.000000
|
||||||
|
abilityDuration=5.0
|
||||||
|
damageMult=4.0
|
||||||
|
SkillName="Brute"
|
||||||
|
SkillEffects="Temporarily lose ability to do headshots in exchange for quad damage."
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
class NiceSkillEnforcerFinisherRounds extends NiceSkill
|
||||||
|
abstract;
|
||||||
|
|
||||||
|
var float damageBonus;
|
||||||
|
defaultproperties
|
||||||
|
{
|
||||||
|
damageBonus=0.500000
|
||||||
|
SkillName="Finisher rounds"
|
||||||
|
SkillEffects="Deal 50% more damage to frozen targets."
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
class NiceSkillEnforcerJuggernautA extends NiceSkill
|
||||||
|
abstract;
|
||||||
|
|
||||||
|
var string abilityID;
|
||||||
|
var float distance;
|
||||||
|
var float cooldown;
|
||||||
|
var float duration;
|
||||||
|
|
||||||
|
function static SkillSelected(NicePlayerController nicePlayer)
|
||||||
|
{
|
||||||
|
local NiceAbilityManager.NiceAbilityDescription stupor;
|
||||||
|
|
||||||
|
if(nicePlayer == none) return;
|
||||||
|
if(nicePlayer.abilityManager == none) return;
|
||||||
|
|
||||||
|
stupor.ID = default.abilityID;
|
||||||
|
stupor.icon = Texture'NicePackT.HudCounter.demo';
|
||||||
|
stupor.cooldownLength = default.cooldown;
|
||||||
|
stupor.canBeCancelled = false;
|
||||||
|
nicePlayer.abilityManager.AddAbility(stupor);
|
||||||
|
}
|
||||||
|
|
||||||
|
function static SkillDeSelected(NicePlayerController nicePlayer)
|
||||||
|
{
|
||||||
|
if(nicePlayer == none) return;
|
||||||
|
if(nicePlayer.abilityManager == none) return;
|
||||||
|
|
||||||
|
nicePlayer.abilityManager.RemoveAbility(default.abilityID);
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultproperties
|
||||||
|
{
|
||||||
|
abilityID="juggernaut"
|
||||||
|
Distance=800.000000
|
||||||
|
cooldown=30
|
||||||
|
SkillName="Juggernaut"
|
||||||
|
SkillEffects="Startle zeds around you for three seconds."
|
||||||
|
}
|
@ -1,11 +1,12 @@
|
|||||||
class NiceSkillEnforcerDetermination extends NiceSkill
|
class NiceSkillEnforcerUnkillable extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
|
|
||||||
var int healthBound;
|
var int healthBound;
|
||||||
var float addedResist;
|
var float addedResist;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
healthBound=50
|
healthBound=50
|
||||||
addedResist=0.500000
|
addedResist=0.500000
|
||||||
SkillName="Determination"
|
SkillName="Unkillable"
|
||||||
SkillEffects="Receive 50% less damage when your health falls below 50 mark."
|
SkillEffects="Receive 50% less damage when your health falls below 50 mark."
|
||||||
}
|
}
|
@ -3,7 +3,7 @@ class NiceSkillEnforcerUnstoppable extends NiceSkill
|
|||||||
var float speedMult;
|
var float speedMult;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
speedMult=0.750000
|
speedMult=1.000000
|
||||||
SkillName="Unstoppable"
|
SkillName="Unstoppable"
|
||||||
SkillEffects="Your speed doesn't decrease from additional weight, low health, poison or siren's pull, but you also receive -25% speed penalty."
|
SkillEffects="Your speed doesn't decrease from additional weight, low health, poison or siren's pull and your screen doesn't shake or blur."
|
||||||
}
|
}
|
||||||
|
@ -3,5 +3,5 @@ class NiceSkillEnforcerZEDBarrage extends NiceSkill
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
SkillName="Barrage"
|
SkillName="Barrage"
|
||||||
SkillEffects="Shoot without any recoil during zed-time."
|
SkillEffects="Shoot without any recoil during zed-time at twice the speed."
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
class NiceSkillEnforcerZEDIceGiant extends NiceSkill
|
||||||
|
abstract;
|
||||||
|
defaultproperties
|
||||||
|
{
|
||||||
|
SkillName="Ice giant"
|
||||||
|
SkillEffects="Freeze zeds around you during zed time."
|
||||||
|
}
|
@ -1,9 +0,0 @@
|
|||||||
class NiceSkillEnforcerZEDJuggernaut extends NiceSkill
|
|
||||||
abstract;
|
|
||||||
var float distance;
|
|
||||||
defaultproperties
|
|
||||||
{
|
|
||||||
Distance=800.000000
|
|
||||||
SkillName="Juggernaut"
|
|
||||||
SkillEffects="You startle zeds around you upon entering zed-time."
|
|
||||||
}
|
|
@ -68,14 +68,17 @@ static function HitZed(NiceBullet bullet, NiceReplicationInfo niceRI, KFMonster
|
|||||||
local NiceHumanPawn nicePawn;
|
local NiceHumanPawn nicePawn;
|
||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
local class<NiceVeterancyTypes> niceVet;
|
local class<NiceVeterancyTypes> niceVet;
|
||||||
|
nicePlayer = NicePlayerController(bullet.Instigator.Controller);
|
||||||
|
if ( nicePlayer != none && nicePlayer.abilityManager != none
|
||||||
|
&& nicePlayer.abilityManager.IsAbilityActive(class'NiceSkillEnforcerBruteA'.default.abilityID)) {
|
||||||
|
headshotLevel = 0.0;
|
||||||
|
}
|
||||||
bIsHeadshot = (headshotLevel > 0.0);
|
bIsHeadshot = (headshotLevel > 0.0);
|
||||||
bIsPreciseHeadshot = (headshotLevel > bullet.charDamageType.default.prReqPrecise);
|
bIsPreciseHeadshot = (headshotLevel > bullet.charDamageType.default.prReqPrecise);
|
||||||
if(!bullet.bAlreadyHitZed || bIsHeadshot)
|
if(!bullet.bAlreadyHitZed || bIsHeadshot)
|
||||||
HandleCalibration(bIsHeadshot, NiceHumanPawn(bullet.Instigator), NiceMonster(kfZed));
|
HandleCalibration(bIsHeadshot, NiceHumanPawn(bullet.Instigator), NiceMonster(kfZed));
|
||||||
if(bIsHeadshot && bullet.sourceWeapon != none)
|
if(bIsHeadshot && bullet.sourceWeapon != none)
|
||||||
bullet.sourceWeapon.lastHeadshotTime = bullet.Level.TimeSeconds;
|
bullet.sourceWeapon.lastHeadshotTime = bullet.Level.TimeSeconds;
|
||||||
// Try to get necessary variables and bail in case they're unaccessible
|
|
||||||
nicePlayer = NicePlayerController(bullet.Instigator.Controller);
|
|
||||||
if(nicePlayer == none)
|
if(nicePlayer == none)
|
||||||
return;
|
return;
|
||||||
nicePawn = NiceHumanPawn(bullet.instigator);
|
nicePawn = NiceHumanPawn(bullet.instigator);
|
||||||
|
@ -662,10 +662,17 @@ simulated function AccuracyUpdate(float Velocity){}
|
|||||||
// This function is called when 'FireRate', 'FireAnimRate' or 'ReloadAnimRate' need to be updated
|
// This function is called when 'FireRate', 'FireAnimRate' or 'ReloadAnimRate' need to be updated
|
||||||
simulated function UpdateFireSpeed(){
|
simulated function UpdateFireSpeed(){
|
||||||
local float fireSpeedMod;
|
local float fireSpeedMod;
|
||||||
|
local NicePlayerController nicePlayer;
|
||||||
fireSpeedMod = GetFireSpeed();
|
fireSpeedMod = GetFireSpeed();
|
||||||
|
if (instigator != none) {
|
||||||
|
nicePlayer = NicePlayerController(instigator.controller);
|
||||||
|
}
|
||||||
if(NiceSingle(Weapon) != none || NiceDualies(Weapon) != none)
|
if(NiceSingle(Weapon) != none || NiceDualies(Weapon) != none)
|
||||||
fireSpeedMod /= (Level.TimeDilation / 1.1);
|
fireSpeedMod /= (Level.TimeDilation / 1.1);
|
||||||
fireSpeedMod *= 1.0 + 1.1 * (zedTimeFireSpeedUp - 1.0) * (1.1 - Level.TimeDilation);
|
fireSpeedMod *= 1.0 + 1.1 * (zedTimeFireSpeedUp - 1.0) * (1.1 - Level.TimeDilation);
|
||||||
|
if(nicePlayer != none && nicePlayer.IsZedTimeActive() && class'NiceVeterancyTypes'.static.HasSkill(nicePlayer, class'NiceSkillEnforcerZEDBarrage')) {
|
||||||
|
fireSpeedMod *= 2.0;
|
||||||
|
}
|
||||||
FireRate = default.FireRate / fireSpeedMod;
|
FireRate = default.FireRate / fireSpeedMod;
|
||||||
FireAnimRate = default.FireAnimRate * fireSpeedMod;
|
FireAnimRate = default.FireAnimRate * fireSpeedMod;
|
||||||
ReloadAnimRate = default.ReloadAnimRate * fireSpeedMod;
|
ReloadAnimRate = default.ReloadAnimRate * fireSpeedMod;
|
||||||
|
@ -246,7 +246,7 @@ simulated function PostBeginPlay(){
|
|||||||
function bool ShouldLeaveIronsight(){
|
function bool ShouldLeaveIronsight(){
|
||||||
local class<NiceVeterancyTypes> niceVet;
|
local class<NiceVeterancyTypes> niceVet;
|
||||||
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(Instigator.PlayerReplicationInfo);
|
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(Instigator.PlayerReplicationInfo);
|
||||||
if(niceVet != none && niceVet.static.hasSkill(NicePlayerController(Instigator.Controller), class'NiceSkillEnforcerUnshakable'))
|
if(niceVet != none && niceVet.static.hasSkill(NicePlayerController(Instigator.Controller), class'NiceSkillEnforcerUnstoppable'))
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -9,5 +9,6 @@ defaultproperties
|
|||||||
FireRate=0.200000
|
FireRate=0.200000
|
||||||
DamageMax=63
|
DamageMax=63
|
||||||
AmmoClass=class'NiceBenelliAmmo'
|
AmmoClass=class'NiceBenelliAmmo'
|
||||||
|
Spread=1125.000000
|
||||||
BotRefireRate=0.200000
|
BotRefireRate=0.200000
|
||||||
}
|
}
|
||||||
|
@ -3,4 +3,8 @@ defaultproperties
|
|||||||
{
|
{
|
||||||
DamageType=class'NiceDamTypeSpas'
|
DamageType=class'NiceDamTypeSpas'
|
||||||
AmmoClass=class'NiceSpasAmmo'
|
AmmoClass=class'NiceSpasAmmo'
|
||||||
|
FireAnimRate=1.000000
|
||||||
|
FireRate=0.300000
|
||||||
|
Spread=625.000000
|
||||||
|
DamageMax=63
|
||||||
}
|
}
|
||||||
|
@ -1104,15 +1104,29 @@ function Died( Controller killer,
|
|||||||
{
|
{
|
||||||
local bool bHasManiac;
|
local bool bHasManiac;
|
||||||
local NiceHumanPawn nicePawn;
|
local NiceHumanPawn nicePawn;
|
||||||
|
local class<NiceVeterancyTypes> niceVet;
|
||||||
|
|
||||||
if (killer != none || (Controller != none && killer != Controller))
|
if (killer != none || (Controller != none && killer != Controller))
|
||||||
{
|
{
|
||||||
|
// Maniac stuff
|
||||||
bHasManiac = class'NiceVeterancyTypes'.static.
|
bHasManiac = class'NiceVeterancyTypes'.static.
|
||||||
HasSkill(NicePlayerController(killer), class'NiceSkillDemoManiac');
|
HasSkill(NicePlayerController(killer), class'NiceSkillDemoManiac');
|
||||||
nicePawn = NiceHumanPawn(killer.pawn);
|
nicePawn = NiceHumanPawn(killer.pawn);
|
||||||
if (bHasManiac && nicePawn != none)
|
if (bHasManiac && nicePawn != none)
|
||||||
nicePawn.maniacTimeout =
|
nicePawn.maniacTimeout =
|
||||||
class'NiceSkillDemoManiac'.default.reloadBoostTime;
|
class'NiceSkillDemoManiac'.default.reloadBoostTime;
|
||||||
|
// Enforcer's invincibility
|
||||||
|
if (nicePawn != none)
|
||||||
|
{
|
||||||
|
niceVet = class'NiceVeterancyTypes'.static.
|
||||||
|
GetVeterancy(nicePawn.playerReplicationInfo);
|
||||||
|
}
|
||||||
|
if ( niceVet != none
|
||||||
|
&& niceVet == class'NiceVetEnforcer'
|
||||||
|
&& nicePawn.invincibilityTimer > 0)
|
||||||
|
{
|
||||||
|
nicePawn.invincibilityTimer += default.healthMax / 500.0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
super.Died(killer, damageType, HitLocation);
|
super.Died(killer, damageType, HitLocation);
|
||||||
|
@ -14,6 +14,9 @@
|
|||||||
// E-mail: dkanus@gmail.com
|
// E-mail: dkanus@gmail.com
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
class NiceMonsterController extends KFMonsterController;
|
class NiceMonsterController extends KFMonsterController;
|
||||||
|
|
||||||
|
var float startleTimeLeft;
|
||||||
|
|
||||||
// Just reset threat assesment flag, since it's not used in NicePack
|
// Just reset threat assesment flag, since it's not used in NicePack
|
||||||
function PostBeginPlay(){
|
function PostBeginPlay(){
|
||||||
super.PostBeginPlay();
|
super.PostBeginPlay();
|
||||||
@ -34,13 +37,36 @@ event bool NotifyBump(Actor other){
|
|||||||
CancelCampFor(otherPawn.controller);
|
CancelCampFor(otherPawn.controller);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Startle(Actor Feared)
|
||||||
|
{
|
||||||
|
if ( Monster(Pawn) != none)
|
||||||
|
{
|
||||||
|
GoalString = "STARTLED!";
|
||||||
|
StartleActor = Feared;
|
||||||
|
GotoState('Startled');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function StartleFor(Actor feared, float startleDuration)
|
||||||
|
{
|
||||||
|
startleTimeLeft = startleDuration;
|
||||||
|
Startle(feared);
|
||||||
|
}
|
||||||
|
|
||||||
state Startled{
|
state Startled{
|
||||||
ignores EnemyNotVisible,SeePlayer,HearNoise;
|
ignores EnemyNotVisible,SeePlayer,HearNoise;
|
||||||
function Startle(Actor Feared){
|
function Startle(Actor feared)
|
||||||
|
{
|
||||||
goalString = "STARTLED!";
|
goalString = "STARTLED!";
|
||||||
startleActor = feared;
|
startleActor = feared;
|
||||||
BeginState();
|
BeginState();
|
||||||
}
|
}
|
||||||
|
function StartleFor(Actor feared, float startleDuration)
|
||||||
|
{
|
||||||
|
startleTimeLeft = startleDuration;
|
||||||
|
Startle(feared);
|
||||||
|
}
|
||||||
function BeginState(){
|
function BeginState(){
|
||||||
if(startleActor == none){
|
if(startleActor == none){
|
||||||
GotoState('');
|
GotoState('');
|
||||||
@ -55,7 +81,7 @@ state Startled{
|
|||||||
pawn.acceleration = pawn.accelRate * Normal(pawn.acceleration);
|
pawn.acceleration = pawn.accelRate * Normal(pawn.acceleration);
|
||||||
}
|
}
|
||||||
Begin:
|
Begin:
|
||||||
if( NiceHumanPawn(StartleActor) == none
|
/*if( NiceHumanPawn(StartleActor) == none
|
||||||
|| KFGameType(Level.Game) == none
|
|| KFGameType(Level.Game) == none
|
||||||
|| KFGameType(Level.Game).bZEDTimeActive ){
|
|| KFGameType(Level.Game).bZEDTimeActive ){
|
||||||
Sleep(0.5);
|
Sleep(0.5);
|
||||||
@ -64,6 +90,14 @@ Begin:
|
|||||||
else{
|
else{
|
||||||
Sleep(0.25);
|
Sleep(0.25);
|
||||||
Goto('Begin');
|
Goto('Begin');
|
||||||
|
}*/
|
||||||
|
startleTimeLeft -= 0.5;
|
||||||
|
if (startleTimeLeft <= 0) {
|
||||||
|
WhatToDoNext(11);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Sleep(0.5);
|
||||||
|
Goto('Begin');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function bool IsMonsterDecapitated(){
|
function bool IsMonsterDecapitated(){
|
||||||
|
Loading…
Reference in New Issue
Block a user