This commit is contained in:
Shtoyan 2022-01-23 16:37:56 +04:00
parent 1fd77f1c15
commit 137b90ec25

View File

@ -5,19 +5,15 @@ const dmtype_bleed=class'NiceDamTypeStalkerBleed';
var private int maxBleedCount; var private int maxBleedCount;
var private float fBleedPeriod; var private float fBleedPeriod;
var private float fNextBleedTime;
var float bleedLevel; var float bleedLevel;
var MeanZombieCrawler stalker; var MeanZombieCrawler stalker;
function Tick(float DeltaTime) event PostBeginPlay()
{ {
fNextBleedTime = Level.TimeSeconds; super.PostBeginPlay();
// start the timer // start the timer
SetTimer(0.1, true); SetTimer(fBleedPeriod, true);
// disable me, coz im too fast and resource hungry
Disable('Tick');
} }
@ -34,33 +30,30 @@ event Timer()
if (!amAlive || maxBleedCount < 0) if (!amAlive || maxBleedCount < 0)
Destroy(); Destroy();
if (fNextBleedTime < Level.TimeSeconds) maxBleedCount--;
bleedDamage = calcBleedDamage(bleedLevel, rand(7));
if (bleedDamage < 1.0)
{ {
maxBleedCount--; maxBleedCount = 0;
fNextBleedTime += fBleedPeriod; return;
}
bleedDamage = calcBleedDamage(bleedLevel, rand(7)); if (stalker != none)
if (bleedDamage < 1.0) locpawn.TakeDamage(bleedDamage, stalker, locpawn.Location,
{
maxBleedCount = 0;
return;
}
if (stalker != none)
locpawn.TakeDamage(bleedDamage, stalker, locpawn.Location,
vect(0, 0, 0), dmtype_bleed); vect(0, 0, 0), dmtype_bleed);
else else
locpawn.TakeDamage(bleedDamage, locpawn, locpawn.Location, locpawn.TakeDamage(bleedDamage, locpawn, locpawn.Location,
vect(0, 0, 0), dmtype_bleed); vect(0, 0, 0), dmtype_bleed);
if (locpawn.isA('KFPawn')) if (locpawn.isA('KFPawn'))
{ {
KFPawn(locpawn).HealthToGive -= 2 * bleedLevel; KFPawn(locpawn).HealthToGive -= 2 * bleedLevel;
}
} }
} }
// Returns bleed damage, corresponding to given bleed level and damage scale. // Returns bleed damage, corresponding to given bleed level and damage scale.
// Rand(7) should be used as a scale. // Rand(7) should be used as a scale.
// Separate function created to allow for lowest/highest damage value computing. // Separate function created to allow for lowest/highest damage value computing.