things/enemies/RunnerEliteSpecial.cs
using Sandbox;
public class RunnerEliteSpecial : RunnerElite
{
public override float FullOpacity => 0f;
protected override void OnAwake()
{
base.OnAwake();
Radius = 0.5075f;
Scale = 2.275f;
Sprite.LocalScale = new Vector3( Scale * Game.Random.Float( 1f - HeightVariance, 1f + HeightVariance ), Scale * Game.Random.Float( 1f - WidthVariance, 1f + WidthVariance ), 1f ) * Globals.SPRITE_SCALE;
Health = 300f;
MaxHealth = Health;
ShadowScale = 2.275f;
ShadowFullOpacity = 0f;
ShadowSpriteDirty = true;
PushStrength = 55f;
AggroRange = 2.25f;
DamageToPlayer = 5f;
CoinChance = 1f;
CoinValueMin = 4;
CoinValueMax = 8;
Sprite.Tint = Color.White.WithAlpha( FullOpacity );
MoveSpeed = 0.35f;
JUMP_DELAY_MIN = 4f;
JUMP_DELAY_MAX = 10f;
}
protected override void SpawnLandingClouds()
{
for ( int i = 0; i < Game.Random.Int( 2, 3 ); i++ )
{
var dir = Utils.GetRandomVector();
SpawnCloudClient( Position2D + dir * Game.Random.Float(0.4f, 0.6f), dir * Game.Random.Float( 0.3f, 1.5f ) );
}
}
public override void DealDamage()
{
Flash( 0.1f, Color.Red.WithAlpha( 0.25f ) );
}
public override void Celebrate()
{
if ( IsSpawning )
FinishSpawning();
if ( _isJumping )
return;
CelebrateAsync();
}
async void CelebrateAsync()
{
await Task.Delay( Game.Random.Int( 0, 500 ) );
Sprite.PlaybackSpeed = Game.Random.Float( 2f, 4f );
Sprite.Tint = Color.Red.WithAlpha( 0.25f );
Sprite.PlayAnimation( "cheer" );
}
}