102 lines
2.9 KiB
Ucode
102 lines
2.9 KiB
Ucode
class MeanZombieFleshPound extends NiceZombieFleshPound;
|
|
#exec OBJ LOAD FILE=MeanZedSkins.utx
|
|
state RageCharging
|
|
{
|
|
Ignores StartChargingFP;
|
|
function bool CanGetOutOfWay()
|
|
{
|
|
return false;
|
|
}
|
|
// Don't override speed in this state
|
|
function bool CanSpeedAdjust()
|
|
{
|
|
return false;
|
|
}
|
|
function BeginState()
|
|
{
|
|
bChargingPlayer = true;
|
|
if( Level.NetMode!=NM_DedicatedServer )
|
|
ClientChargingAnims();
|
|
|
|
RageEndTime = (Level.TimeSeconds + 15) + (FRand() * 18);
|
|
NetUpdateTime = Level.TimeSeconds - 1;
|
|
}
|
|
function EndState()
|
|
{
|
|
bChargingPlayer = false;
|
|
bFrustrated = false;
|
|
if(Controller != none)
|
|
NiceZombieFleshPoundController(Controller).RageFrustrationTimer = 0;
|
|
|
|
if( Level.NetMode!=NM_DedicatedServer )
|
|
ClientChargingAnims();
|
|
|
|
NetUpdateTime = Level.TimeSeconds - 1;
|
|
}
|
|
simulated function UpdateGroundSpeed() {
|
|
super(NiceMonster).UpdateGroundSpeed();
|
|
if (!bShotAnim) {
|
|
groundSpeed *= 2.3;
|
|
}
|
|
}
|
|
function Tick( float Delta )
|
|
{
|
|
// Keep the flesh pound moving toward its target when attacking
|
|
if( Role == ROLE_Authority && bShotAnim)
|
|
{
|
|
if( LookTarget!=none )
|
|
{
|
|
Acceleration = AccelRate * Normal(LookTarget.Location - Location);
|
|
}
|
|
}
|
|
|
|
global.Tick(Delta);
|
|
}
|
|
function Bump( Actor Other )
|
|
{
|
|
local float RageBumpDamage;
|
|
local KFMonster KFMonst;
|
|
|
|
KFMonst = KFMonster(Other);
|
|
|
|
// Hurt/Kill enemies that we run into while raging
|
|
if( !bShotAnim && KFMonst!=none && NiceZombieFleshPound(Other)==none && Pawn(Other).Health>0 )
|
|
{
|
|
// Random chance of doing obliteration damage
|
|
if( FRand() < 0.4 )
|
|
{
|
|
RageBumpDamage = 501;
|
|
}
|
|
else
|
|
{
|
|
RageBumpDamage = 450;
|
|
}
|
|
|
|
RageBumpDamage *= KFMonst.PoundRageBumpDamScale;
|
|
|
|
Other.TakeDamage(RageBumpDamage, self, Other.Location, Velocity * Other.Mass, class'NiceDamTypePoundCrushed');
|
|
}
|
|
else Global.Bump(Other);
|
|
}
|
|
// If fleshie hits his target on a charge, then he should settle down for abit.
|
|
function bool MeleeDamageTarget(int hitdamage, vector pushdir)
|
|
{
|
|
local bool RetVal,bWasEnemy;
|
|
|
|
bWasEnemy = (Controller.Target==Controller.Enemy);
|
|
RetVal = Super(NiceMonster).MeleeDamageTarget(hitdamage*1.75, pushdir*3);
|
|
// Only stop if you've successfully killed your target
|
|
if(Pawn(Controller.Target) == none)
|
|
return RetVal;
|
|
if( KFPawn(Controller.Target) != none && Pawn(Controller.Target).Health <= 0 && RetVal && bWasEnemy ){
|
|
GoToState('');
|
|
}
|
|
return RetVal;
|
|
}
|
|
}
|
|
defaultproperties
|
|
{
|
|
MenuName="Mean FleshPound"
|
|
Skins(0)=Combiner'MeanZedSkins.fleshpound_cmb'
|
|
}
|