mirror of
https://github.com/tym1116/BH3.git
synced 2025-12-16 16:34:41 +01:00
48 lines
1.7 KiB
C#
48 lines
1.7 KiB
C#
using MoleMole.Config;
|
|
using UnityEngine;
|
|
|
|
namespace MoleMole
|
|
{
|
|
public class AbilityMonsterSwordDodgeMixin : BaseAbilityMixin
|
|
{
|
|
private MonsterSwordDodgeMixin config;
|
|
|
|
public AbilityMonsterSwordDodgeMixin(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config)
|
|
: base(instancedAbility, instancedModifier, config)
|
|
{
|
|
this.config = (MonsterSwordDodgeMixin)config;
|
|
}
|
|
|
|
public override bool OnPostEvent(BaseEvent evt)
|
|
{
|
|
if (evt is EvtBeingHit)
|
|
{
|
|
OnPostBeingHit((EvtBeingHit)evt);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private AttackData CreateNoDamageAttack()
|
|
{
|
|
AttackData attackData = new AttackData();
|
|
attackData.damage = 0f;
|
|
attackData.isInComboCount = false;
|
|
attackData.attackerAniDamageRatio = 2f;
|
|
attackData.aniDamageRatio = 2f;
|
|
attackData.hitLevel = AttackResult.ActorHitLevel.Normal;
|
|
attackData.hitEffect = AttackResult.AnimatorHitEffect.Normal;
|
|
attackData.resolveStep = AttackData.AttackDataStep.AttackerResolved;
|
|
return attackData;
|
|
}
|
|
|
|
private void OnPostBeingHit(EvtBeingHit evt)
|
|
{
|
|
if (evt.attackData.attackerClass == EntityClass.ShortSworder && evt.attackData.attackerAniDamageRatio < config.NoDodgeAttackRatio && evt.attackData.attackerNature != EntityNature.Psycho && (config.DodgeRatio > Random.value || evt.attackData.hitEffect == AttackResult.AnimatorHitEffect.ThrowUp))
|
|
{
|
|
actor.abilityPlugin.HandleActionTargetDispatch(config.DodgeActions, instancedAbility, instancedModifier, Singleton<EventManager>.Instance.GetActor<BaseAbilityActor>(evt.sourceID), evt);
|
|
Singleton<EventManager>.Instance.FireEvent(new EvtBeingHit(evt.sourceID, actor.runtimeID, null, CreateNoDamageAttack()));
|
|
}
|
|
}
|
|
}
|
|
}
|