A UnitStatus subclass that represents a stun effect on a unit. It sets the unit's stunned state when initialized, clears it when removed, and removes itself after its lifetime expires.
using System;
using Sandbox;
public class UnitStatusStun : UnitStatus
{
public Player PlayerSource { get; set; }
public Enemy EnemySource { get; set; }
public UnitStatusStun()
{
}
public override void Init( Unit unit )
{
base.Init( unit );
Unit.SetStateStunned( true );
}
public override void Update( float dt )
{
base.Update( dt );
if ( !Unit.IsValid() )
return;
if ( ElapsedTime > Lifetime )
Unit.RemoveUnitStatus( this );
}
public override void Die( Player player )
{
base.Die( player );
}
public override void OnRemove( bool playEffects = true )
{
Unit.SetStateStunned( false );
}
public override void Refresh()
{
base.Refresh();
}
}