r2mods/ilspy_dump/ror2_csproj/EntityStates.FalseSon/PreClubGroundSlam.cs

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;
}
}
}