69 lines
1.6 KiB
C#
69 lines
1.6 KiB
C#
using RoR2;
|
|
|
|
namespace EntityStates.FalseSon;
|
|
|
|
public class PreClubGroundSlam : BaseState
|
|
{
|
|
public float charge;
|
|
|
|
public static float baseDuration;
|
|
|
|
public static string enterSoundString;
|
|
|
|
public static float upwardVelocity;
|
|
|
|
private float duration;
|
|
|
|
private bool forceAnimWrapUp = true;
|
|
|
|
public override void OnEnter()
|
|
{
|
|
base.OnEnter();
|
|
duration = baseDuration / attackSpeedStat;
|
|
PlayAnimation("Body", "PreGroundSlam", "GroundSlam.playbackRate", duration);
|
|
Util.PlaySound(enterSoundString, base.gameObject);
|
|
base.characterMotor.Motor.ForceUnground();
|
|
base.characterMotor.disableAirControlUntilCollision = false;
|
|
base.characterMotor.velocity.y = upwardVelocity;
|
|
base.characterBody.bodyFlags |= CharacterBody.BodyFlags.IgnoreFallDamage;
|
|
}
|
|
|
|
public override void FixedUpdate()
|
|
{
|
|
base.FixedUpdate();
|
|
base.characterMotor.moveDirection = base.inputBank.moveVector;
|
|
base.characterBody.SetSpreadBloom(charge);
|
|
if (base.fixedAge > duration)
|
|
{
|
|
forceAnimWrapUp = false;
|
|
outer.SetNextState(new ClubGroundSlam
|
|
{
|
|
charge = charge
|
|
});
|
|
}
|
|
}
|
|
|
|
public override InterruptPriority GetMinimumInterruptPriority()
|
|
{
|
|
return InterruptPriority.Frozen;
|
|
}
|
|
|
|
public override void ModifyNextState(EntityState nextState)
|
|
{
|
|
ClubGroundSlam clubGroundSlam = nextState as ClubGroundSlam;
|
|
forceAnimWrapUp = clubGroundSlam == null;
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
base.OnExit();
|
|
if (forceAnimWrapUp)
|
|
{
|
|
PlayAnimation("Gesture, Override", "Empty");
|
|
PlayAnimation("Gesture, Additive", "Empty");
|
|
PlayAnimation("Body", "Idle");
|
|
base.characterBody.bodyFlags &= ~CharacterBody.BodyFlags.IgnoreFallDamage;
|
|
}
|
|
}
|
|
}
|