49 lines
1.0 KiB
C#
49 lines
1.0 KiB
C#
using RoR2;
|
|
using UnityEngine;
|
|
|
|
namespace EntityStates.Headstompers;
|
|
|
|
public class HeadstompersIdle : BaseHeadstompersState
|
|
{
|
|
private float inputStopwatch;
|
|
|
|
public static float inputConfirmationDelay = 0.1f;
|
|
|
|
private bool jumpBoostOk;
|
|
|
|
public static GameObject jumpEffect;
|
|
|
|
public override void FixedUpdate()
|
|
{
|
|
base.FixedUpdate();
|
|
if (base.isAuthority)
|
|
{
|
|
FixedUpdateAuthority();
|
|
}
|
|
}
|
|
|
|
private void FixedUpdateAuthority()
|
|
{
|
|
inputStopwatch = (base.slamButtonDown ? (inputStopwatch + GetDeltaTime()) : 0f);
|
|
if (base.isGrounded)
|
|
{
|
|
jumpBoostOk = true;
|
|
}
|
|
else if (jumpBoostOk && base.jumpButtonDown && (bool)bodyMotor)
|
|
{
|
|
Vector3 velocity = bodyMotor.velocity;
|
|
if (velocity.y > 0f)
|
|
{
|
|
velocity.y *= 2f;
|
|
bodyMotor.velocity = velocity;
|
|
jumpBoostOk = false;
|
|
}
|
|
EffectManager.SimpleImpactEffect(jumpEffect, bodyGameObject.transform.position, Vector3.up, transmit: true);
|
|
}
|
|
if (inputStopwatch >= inputConfirmationDelay && !base.isGrounded)
|
|
{
|
|
outer.SetNextState(new HeadstompersCharge());
|
|
}
|
|
}
|
|
}
|