mirror of
https://github.com/tym1116/BH3.git
synced 2025-12-17 00:44:49 +01:00
105 lines
3.6 KiB
C#
105 lines
3.6 KiB
C#
namespace MoleMole.Config
|
|
{
|
|
[GeneratePartialHash(CombineGeneratedFile = true)]
|
|
public class DefendMixin : ConfigAbilityMixin, IHashable
|
|
{
|
|
public DynamicFloat DefendWindow = DynamicFloat.ONE;
|
|
|
|
public DynamicFloat DefendPerfectStartTime = DynamicFloat.ZERO;
|
|
|
|
public DynamicFloat DefendPerfectEndTime = DynamicFloat.ONE;
|
|
|
|
public string DefendDurationModifierName;
|
|
|
|
public string DefendPerfectDurationModifierName;
|
|
|
|
public ConfigEntityAttackEffect DefendReplaceAttackEffect;
|
|
|
|
public ConfigAbilityAction[] DefendStartActions = ConfigAbilityAction.EMPTY;
|
|
|
|
public ConfigAbilityAction[] DefendSuccessActions = ConfigAbilityAction.EMPTY;
|
|
|
|
public ConfigAbilityAction[] DefendSuccessPerfectActions = ConfigAbilityAction.EMPTY;
|
|
|
|
public DefendMixin()
|
|
{
|
|
isUnique = true;
|
|
}
|
|
|
|
public void ObjectContentHashOnto(ref int lastHash)
|
|
{
|
|
if (DefendWindow != null)
|
|
{
|
|
HashUtils.ContentHashOnto(DefendWindow.isDynamic, ref lastHash);
|
|
HashUtils.ContentHashOnto(DefendWindow.fixedValue, ref lastHash);
|
|
HashUtils.ContentHashOnto(DefendWindow.dynamicKey, ref lastHash);
|
|
}
|
|
if (DefendPerfectStartTime != null)
|
|
{
|
|
HashUtils.ContentHashOnto(DefendPerfectStartTime.isDynamic, ref lastHash);
|
|
HashUtils.ContentHashOnto(DefendPerfectStartTime.fixedValue, ref lastHash);
|
|
HashUtils.ContentHashOnto(DefendPerfectStartTime.dynamicKey, ref lastHash);
|
|
}
|
|
if (DefendPerfectEndTime != null)
|
|
{
|
|
HashUtils.ContentHashOnto(DefendPerfectEndTime.isDynamic, ref lastHash);
|
|
HashUtils.ContentHashOnto(DefendPerfectEndTime.fixedValue, ref lastHash);
|
|
HashUtils.ContentHashOnto(DefendPerfectEndTime.dynamicKey, ref lastHash);
|
|
}
|
|
HashUtils.ContentHashOnto(DefendDurationModifierName, ref lastHash);
|
|
HashUtils.ContentHashOnto(DefendPerfectDurationModifierName, ref lastHash);
|
|
if (DefendReplaceAttackEffect != null)
|
|
{
|
|
HashUtils.ContentHashOnto(DefendReplaceAttackEffect.EffectPattern, ref lastHash);
|
|
HashUtils.ContentHashOnto(DefendReplaceAttackEffect.SwitchName, ref lastHash);
|
|
HashUtils.ContentHashOnto(DefendReplaceAttackEffect.MuteAttackEffect, ref lastHash);
|
|
HashUtils.ContentHashOnto((int)DefendReplaceAttackEffect.AttackEffectTriggerPos, ref lastHash);
|
|
}
|
|
if (DefendStartActions != null)
|
|
{
|
|
ConfigAbilityAction[] defendStartActions = DefendStartActions;
|
|
foreach (ConfigAbilityAction configAbilityAction in defendStartActions)
|
|
{
|
|
if (configAbilityAction is IHashable)
|
|
{
|
|
HashUtils.ContentHashOnto((IHashable)configAbilityAction, ref lastHash);
|
|
}
|
|
}
|
|
}
|
|
if (DefendSuccessActions != null)
|
|
{
|
|
ConfigAbilityAction[] defendSuccessActions = DefendSuccessActions;
|
|
foreach (ConfigAbilityAction configAbilityAction2 in defendSuccessActions)
|
|
{
|
|
if (configAbilityAction2 is IHashable)
|
|
{
|
|
HashUtils.ContentHashOnto((IHashable)configAbilityAction2, ref lastHash);
|
|
}
|
|
}
|
|
}
|
|
if (DefendSuccessPerfectActions == null)
|
|
{
|
|
return;
|
|
}
|
|
ConfigAbilityAction[] defendSuccessPerfectActions = DefendSuccessPerfectActions;
|
|
foreach (ConfigAbilityAction configAbilityAction3 in defendSuccessPerfectActions)
|
|
{
|
|
if (configAbilityAction3 is IHashable)
|
|
{
|
|
HashUtils.ContentHashOnto((IHashable)configAbilityAction3, ref lastHash);
|
|
}
|
|
}
|
|
}
|
|
|
|
public override ConfigAbilityAction[][] GetAllSubActions()
|
|
{
|
|
return new ConfigAbilityAction[3][] { DefendStartActions, DefendSuccessActions, DefendSuccessPerfectActions };
|
|
}
|
|
|
|
public override BaseAbilityMixin CreateInstancedMixin(ActorAbility instancedAbility, ActorModifier instancedModifier)
|
|
{
|
|
return new AbilityDefendMixin(instancedAbility, instancedModifier, this);
|
|
}
|
|
}
|
|
}
|