rott/kf_sources/ScrnZedPack/Classes/ZombieGorefast_GRITTIER.uc
2026-07-14 20:27:09 +07:00

92 lines
3.1 KiB
Ucode

// Code originally was taken from Scary Ghost's Super Zombies mutator
class ZombieGorefast_GRITTIER extends ZombieGorefast;
#exec OBJ LOAD FILE=ScrnZedPack_T.utx
var float minRageDist;
function TakeDamage(int Damage, Pawn InstigatedBy, Vector Hitlocation, Vector momentum, class<DamageType> DamType, optional int HitIndex)
{
if (InstigatedBy == none || class<KFWeaponDamageType>(DamType) == none)
Super(Monster).TakeDamage(Damage, instigatedBy, hitLocation, momentum, DamType); // skip NONE-reference error
else
Super(KFMonster).TakeDamage(Damage, instigatedBy, hitLocation, momentum, DamType);
}
function RangedAttack(Actor A) {
Super(KFMonster).RangedAttack(A);
if( !bShotAnim && !bDecapitated && VSize(A.Location-Location)<=minRageDist )
GoToState('RunningState');
}
state RunningState {
// Don't override speed in this state
function bool CanSpeedAdjust() {
return super.CanSpeedAdjust();
}
function BeginState() {
super.BeginState();
}
function EndState() {
super.EndState();
}
function RemoveHead() {
super.RemoveHead();
}
function RangedAttack(Actor A) {
if ( bShotAnim || Physics == PHYS_Swimming)
return;
else if ( CanAttack(A) ) {
bShotAnim = true;
//Always do the charging melee attack
SetAnimAction('ClawAndMove');
RunAttackTimeout = GetAnimDuration('GoreAttack1', 1.0);
return;
}
}
simulated function Tick(float DeltaTime) {
super.Tick(DeltaTime);
}
Begin:
GoTo('CheckCharge');
CheckCharge:
if( Controller!=None && Controller.Target!=None && VSize(Controller.Target.Location-Location)<minRageDist ) {
Sleep(0.5+ FRand() * 0.5);
//log("Still charging");
GoTo('CheckCharge');
}
else {
//log("Done charging");
GoToState('');
}
}
defaultproperties
{
minRageDist=1400.000000
MoanVoice=SoundGroup'KF_EnemiesFinalSnd.GoreFast.Gorefast_Talk'
MeleeAttackHitSound=SoundGroup'KF_EnemiesFinalSnd.GoreFast.Gorefast_HitPlayer'
JumpSound=SoundGroup'KF_EnemiesFinalSnd.GoreFast.Gorefast_Jump'
DetachedArmClass=Class'KFChar.SeveredArmGorefast'
DetachedLegClass=Class'KFChar.SeveredLegGorefast'
DetachedHeadClass=Class'KFChar.SeveredHeadGorefast'
HitSound(0)=SoundGroup'KF_EnemiesFinalSnd.GoreFast.Gorefast_Pain'
DeathSound(0)=SoundGroup'KF_EnemiesFinalSnd.GoreFast.Gorefast_Death'
ChallengeSound(0)=SoundGroup'KF_EnemiesFinalSnd.GoreFast.Gorefast_Challenge'
ChallengeSound(1)=SoundGroup'KF_EnemiesFinalSnd.GoreFast.Gorefast_Challenge'
ChallengeSound(2)=SoundGroup'KF_EnemiesFinalSnd.GoreFast.Gorefast_Challenge'
ChallengeSound(3)=SoundGroup'KF_EnemiesFinalSnd.GoreFast.Gorefast_Challenge'
MenuName="Gorefast.se"
AmbientSound=Sound'KF_BaseGorefast.Gorefast_Idle'
Mesh=SkeletalMesh'KF_Freaks_Trip.GoreFast_Freak'
Skins(0)=Combiner'ScrnZedPack_T.gorefast_grittier.gorefast_grittier_cmb'
}