56 lines
1.3 KiB
C#
56 lines
1.3 KiB
C#
|
using UnityEngine;
|
||
|
|
||
|
namespace RoR2.Items;
|
||
|
|
||
|
internal class RedWhipBodyBehavior : BaseItemBodyBehavior
|
||
|
{
|
||
|
private bool providingBuff;
|
||
|
|
||
|
[ItemDefAssociation(useOnServer = true, useOnClient = false)]
|
||
|
private static ItemDef GetItemDef()
|
||
|
{
|
||
|
return RoR2Content.Items.SprintOutOfCombat;
|
||
|
}
|
||
|
|
||
|
private void SetProvidingBuff(bool shouldProvideBuff)
|
||
|
{
|
||
|
if (shouldProvideBuff == providingBuff)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
providingBuff = shouldProvideBuff;
|
||
|
if (providingBuff)
|
||
|
{
|
||
|
base.body.AddBuff(RoR2Content.Buffs.WhipBoost);
|
||
|
EffectData effectData = new EffectData();
|
||
|
effectData.origin = base.body.corePosition;
|
||
|
CharacterDirection characterDirection = base.body.characterDirection;
|
||
|
bool flag = false;
|
||
|
if ((bool)characterDirection && characterDirection.moveVector != Vector3.zero)
|
||
|
{
|
||
|
effectData.rotation = Util.QuaternionSafeLookRotation(characterDirection.moveVector);
|
||
|
flag = true;
|
||
|
}
|
||
|
if (!flag)
|
||
|
{
|
||
|
effectData.rotation = base.body.transform.rotation;
|
||
|
}
|
||
|
EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/SprintActivate"), effectData, transmit: true);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
base.body.RemoveBuff(RoR2Content.Buffs.WhipBoost);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void OnDisable()
|
||
|
{
|
||
|
SetProvidingBuff(shouldProvideBuff: false);
|
||
|
}
|
||
|
|
||
|
private void FixedUpdate()
|
||
|
{
|
||
|
SetProvidingBuff(base.body.outOfCombat);
|
||
|
}
|
||
|
}
|