diff --git a/sources/Zeds/Nice/NiceBloatVomit.uc b/sources/Zeds/Nice/NiceBloatVomit.uc new file mode 100644 index 0000000..7f3d37c --- /dev/null +++ b/sources/Zeds/Nice/NiceBloatVomit.uc @@ -0,0 +1,30 @@ +class NiceBloatVomit extends KFBloatVomit; + +// limit how much you can damage zeds +const DAMAGECOUNT=10; +var private transient int DamageTicked; + +auto state Flying { + simulated function ProcessTouch(Actor Other, Vector HitLocation) { + // add damage limit + if (DamageTicked >= DAMAGECOUNT) { + BlowUp(HitLocation); + return; + } + if (ExtendedZCollision(Other) != none) { + return; + } + if ( + Other != Instigator && + (Other.IsA('Pawn') || Other.IsA('DestroyableObjective') || Other.bProjTarget) + ) { + DamageTicked += 1; + // warn("DamageTicked: " $ DamageTicked); + // use server DelayedHurtRadius() instead? + HurtRadius(Damage, DamageRadius, MyDamageType, MomentumTransfer, HitLocation); + } + else if (Other != Instigator && Other.bBlockActors) { + HitWall(Normal(HitLocation - Location), Other); + } + } +} \ No newline at end of file diff --git a/sources/Zeds/Nice/NiceZombieBloat.uc b/sources/Zeds/Nice/NiceZombieBloat.uc index c3ab99b..459e04e 100644 --- a/sources/Zeds/Nice/NiceZombieBloat.uc +++ b/sources/Zeds/Nice/NiceZombieBloat.uc @@ -173,7 +173,8 @@ function SpawnTwoShots() if ( !SavedFireProperties.bInitialized ) { SavedFireProperties.AmmoClass = Class'SkaarjAmmo'; - SavedFireProperties.ProjectileClass = Class'KFBloatVomit'; + // use fixed bile class, to prevent super high damage to zeds + SavedFireProperties.ProjectileClass = Class'NiceBloatVomit'; SavedFireProperties.WarnTargetPct = 1; SavedFireProperties.MaxRange = 500; SavedFireProperties.bTossed = False; @@ -185,13 +186,13 @@ function SpawnTwoShots() // Turn off extra collision before spawning vomit, otherwise spawn fails ToggleAuxCollision(false); FireRotation = Controller.AdjustAim(SavedFireProperties,FireStart,600); - Spawn(Class'KFBloatVomit',,,FireStart,FireRotation); + Spawn(SavedFireProperties.ProjectileClass,,,FireStart,FireRotation); FireStart-=(0.5*CollisionRadius*Y); FireRotation.Yaw -= 1200; - spawn(Class'KFBloatVomit',,,FireStart, FireRotation); + spawn(SavedFireProperties.ProjectileClass,,,FireStart, FireRotation); FireStart+=(CollisionRadius*Y); FireRotation.Yaw += 2400; - spawn(Class'KFBloatVomit',,,FireStart, FireRotation); + spawn(SavedFireProperties.ProjectileClass,,,FireStart, FireRotation); // Turn extra collision back on ToggleAuxCollision(true); }