Exemple #1
0
 public void ObjectContentHashOnto(ref int lastHash)
 {
     if (this != null)
     {
         foreach (KeyValuePair <string, object> pair in this)
         {
             HashUtils.ContentHashOnto(pair.Key, ref lastHash);
             HashUtils.ContentHashOntoFallback(pair.Value, ref lastHash);
         }
     }
 }
Exemple #2
0
 public void ObjectContentHashOnto(ref int lastHash)
 {
     if (this.CommonArguments != null)
     {
         HashUtils.ContentHashOnto(this.CommonArguments.HP, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.Attack, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.Defence, ref lastHash);
         if (this.CommonArguments.FadeInHeight.HasValue)
         {
             HashUtils.ContentHashOnto(this.CommonArguments.FadeInHeight.Value, ref lastHash);
         }
         HashUtils.ContentHashOnto(this.CommonArguments.BePushedSpeedRatio, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.BePushedSpeedRatioThrow, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.HitboxInactiveDelay, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.UseTransparentShaderDistanceThreshold, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.UseSwitchShader, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.UseEliteShader, ref lastHash);
         HashUtils.ContentHashOnto((int)this.CommonArguments.Nature, ref lastHash);
         HashUtils.ContentHashOnto((int)this.CommonArguments.Class, ref lastHash);
         HashUtils.ContentHashOnto((int)this.CommonArguments.RoleName, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.DefaultAnimEventPredicate, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.CreatePosYOffset, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.CreateCollisionRadius, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.CreateCollisionHeight, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.CollisionLevel, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.CollisionRadius, ref lastHash);
         if (this.CommonArguments.PreloadEffectPatternGroups != null)
         {
             foreach (string str in this.CommonArguments.PreloadEffectPatternGroups)
             {
                 HashUtils.ContentHashOnto(str, ref lastHash);
             }
         }
         if (this.CommonArguments.RequestSoundBankNames != null)
         {
             foreach (string str2 in this.CommonArguments.RequestSoundBankNames)
             {
                 HashUtils.ContentHashOnto(str2, ref lastHash);
             }
         }
         if (this.CommonArguments.EffectPredicates != null)
         {
             foreach (string str3 in this.CommonArguments.EffectPredicates)
             {
                 HashUtils.ContentHashOnto(str3, ref lastHash);
             }
         }
         HashUtils.ContentHashOnto(this.CommonArguments.HasLowPrefab, ref lastHash);
         HashUtils.ContentHashOnto(this.CommonArguments.CameraMinAngleRatio, ref lastHash);
     }
     if (this.StateMachinePattern != null)
     {
         HashUtils.ContentHashOnto(this.StateMachinePattern.AIMode, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.ThrowAnimDefenceRatio, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.ThrowDieEffectPattern, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.FastDieEffectPattern, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.FastDieAnimationWaitDuration, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.ThrowUpNamedState, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.ThrowUpNamedStateRetreatStopNormalizedTime, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.ThrowBlowNamedState, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.ThrowBlowDieNamedState, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.ThrowBlowAirNamedState, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.ThrowBlowAirNamedStateRetreatStopNormalizedTime, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.RetreatToVelocityScaleRatio, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.RetreatBlowVelocityRatio, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.HeavyRetreatThreshold, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.UseRandomLeftRightHitEffectAsNormal, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.UseBackHitAngleCheck, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.BackHitDegreeThreshold, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.UseLeftRightHitAngleCheck, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.LeftRightHitAngleRange, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.UseStandByWalkSteer, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.WalkSteerTimeThreshold, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.WalkSteerAnimatorStateName, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.KeepHitboxStanding, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.KeepHitboxStandingMinHeight, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.UseAbsMoveSpeed, ref lastHash);
         if (this.StateMachinePattern.BeHitEffect != null)
         {
             HashUtils.ContentHashOnto(this.StateMachinePattern.BeHitEffect.EffectPattern, ref lastHash);
             HashUtils.ContentHashOnto(this.StateMachinePattern.BeHitEffect.SwitchName, ref lastHash);
             HashUtils.ContentHashOnto(this.StateMachinePattern.BeHitEffect.MuteAttackEffect, ref lastHash);
             HashUtils.ContentHashOnto((int)this.StateMachinePattern.BeHitEffect.AttackEffectTriggerPos, ref lastHash);
         }
         if (this.StateMachinePattern.BeHitEffectMid != null)
         {
             HashUtils.ContentHashOnto(this.StateMachinePattern.BeHitEffectMid.EffectPattern, ref lastHash);
             HashUtils.ContentHashOnto(this.StateMachinePattern.BeHitEffectMid.SwitchName, ref lastHash);
             HashUtils.ContentHashOnto(this.StateMachinePattern.BeHitEffectMid.MuteAttackEffect, ref lastHash);
             HashUtils.ContentHashOnto((int)this.StateMachinePattern.BeHitEffectMid.AttackEffectTriggerPos, ref lastHash);
         }
         if (this.StateMachinePattern.BeHitEffectBig != null)
         {
             HashUtils.ContentHashOnto(this.StateMachinePattern.BeHitEffectBig.EffectPattern, ref lastHash);
             HashUtils.ContentHashOnto(this.StateMachinePattern.BeHitEffectBig.SwitchName, ref lastHash);
             HashUtils.ContentHashOnto(this.StateMachinePattern.BeHitEffectBig.MuteAttackEffect, ref lastHash);
             HashUtils.ContentHashOnto((int)this.StateMachinePattern.BeHitEffectBig.AttackEffectTriggerPos, ref lastHash);
         }
         HashUtils.ContentHashOnto(this.StateMachinePattern.DieAnimEventID, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.ConstMoveSpeed, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.AniMinSpeedRatio, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.AniMaxSpeedRatio, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.ChangeDirLerpRatioForMove, ref lastHash);
         HashUtils.ContentHashOnto(this.StateMachinePattern.DefaultAnimDefenceRatio, ref lastHash);
     }
     if (this.DynamicArguments != null)
     {
         foreach (KeyValuePair <string, object> pair in this.DynamicArguments)
         {
             HashUtils.ContentHashOnto(pair.Key, ref lastHash);
             HashUtils.ContentHashOntoFallback(pair.Value, ref lastHash);
         }
     }
     if (this.EliteArguments != null)
     {
         HashUtils.ContentHashOnto(this.EliteArguments.HPRatio, ref lastHash);
         HashUtils.ContentHashOnto(this.EliteArguments.DefenseRatio, ref lastHash);
         HashUtils.ContentHashOnto(this.EliteArguments.AttackRatio, ref lastHash);
         HashUtils.ContentHashOnto(this.EliteArguments.DebuffResistanceRatio, ref lastHash);
         HashUtils.ContentHashOnto(this.EliteArguments.HexColorElite1, ref lastHash);
         HashUtils.ContentHashOnto(this.EliteArguments.EliteEmissionScaler1, ref lastHash);
         HashUtils.ContentHashOnto(this.EliteArguments.EliteNormalDisplacement1, ref lastHash);
         HashUtils.ContentHashOnto(this.EliteArguments.HexColorElite2, ref lastHash);
         HashUtils.ContentHashOnto(this.EliteArguments.EliteEmissionScaler2, ref lastHash);
         HashUtils.ContentHashOnto(this.EliteArguments.EliteNormalDisplacement2, ref lastHash);
     }
     if (this.AIArguments != null)
     {
         HashUtils.ContentHashOnto(this.AIArguments.AttackRange, ref lastHash);
     }
     if (this.EntityProperties != null)
     {
         foreach (KeyValuePair <string, ConfigAbilityPropertyEntry> pair2 in this.EntityProperties)
         {
             HashUtils.ContentHashOnto(pair2.Key, ref lastHash);
             HashUtils.ContentHashOnto((int)pair2.Value.Type, ref lastHash);
             HashUtils.ContentHashOnto(pair2.Value.Default, ref lastHash);
             HashUtils.ContentHashOnto(pair2.Value.Ceiling, ref lastHash);
             HashUtils.ContentHashOnto(pair2.Value.Floor, ref lastHash);
             HashUtils.ContentHashOnto((int)pair2.Value.Stacking, ref lastHash);
         }
     }
     if (this.Abilities != null)
     {
         foreach (KeyValuePair <string, ConfigEntityAbilityEntry> pair3 in this.Abilities)
         {
             HashUtils.ContentHashOnto(pair3.Key, ref lastHash);
             HashUtils.ContentHashOnto(pair3.Value.AbilityName, ref lastHash);
             HashUtils.ContentHashOnto(pair3.Value.AbilityOverride, ref lastHash);
         }
     }
     if (this.Skills != null)
     {
         foreach (KeyValuePair <string, ConfigMonsterSkill> pair4 in this.Skills)
         {
             HashUtils.ContentHashOnto(pair4.Key, ref lastHash);
             if (pair4.Value.AnimatorStateNames != null)
             {
                 foreach (string str4 in pair4.Value.AnimatorStateNames)
                 {
                     HashUtils.ContentHashOnto(str4, ref lastHash);
                 }
             }
             HashUtils.ContentHashOnto(pair4.Value.AnimatorEventPattern, ref lastHash);
             HashUtils.ContentHashOnto(pair4.Value.AnimDefenceRatio, ref lastHash);
             HashUtils.ContentHashOnto(pair4.Value.AnimDefenceNormalizedTimeStart, ref lastHash);
             HashUtils.ContentHashOnto(pair4.Value.AnimDefenceNormalizedTimeStop, ref lastHash);
             HashUtils.ContentHashOnto(pair4.Value.AttackNormalizedTimeStart, ref lastHash);
             HashUtils.ContentHashOnto(pair4.Value.AttackNormalizedTimeStop, ref lastHash);
             HashUtils.ContentHashOnto(pair4.Value.HighSpeedMovement, ref lastHash);
             HashUtils.ContentHashOnto(pair4.Value.SteerToTargetOnEnter, ref lastHash);
             HashUtils.ContentHashOnto(pair4.Value.MassRatio, ref lastHash);
             HashUtils.ContentHashOnto(pair4.Value.NeedClearEffect, ref lastHash);
             HashUtils.ContentHashOnto(pair4.Value.Unselectable, ref lastHash);
         }
     }
     if (this.NamedStates != null)
     {
         foreach (KeyValuePair <string, ConfigNamedState> pair5 in this.NamedStates)
         {
             HashUtils.ContentHashOnto(pair5.Key, ref lastHash);
             if (pair5.Value.AnimatorStateNames != null)
             {
                 foreach (string str5 in pair5.Value.AnimatorStateNames)
                 {
                     HashUtils.ContentHashOnto(str5, ref lastHash);
                 }
             }
             HashUtils.ContentHashOnto(pair5.Value.HighSpeedMovement, ref lastHash);
         }
     }
     if (this.AnimEvents != null)
     {
         foreach (KeyValuePair <string, ConfigMonsterAnimEvent> pair6 in this.AnimEvents)
         {
             HashUtils.ContentHashOnto(pair6.Key, ref lastHash);
             if (pair6.Value.AttackHint != null)
             {
                 HashUtils.ContentHashOnto(pair6.Value.AttackHint.InnerStartDelay, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackHint.InnerInflateDuration, ref lastHash);
                 HashUtils.ContentHashOnto((int)pair6.Value.AttackHint.OffsetBase, ref lastHash);
             }
             if (pair6.Value.PhysicsProperty != null)
             {
             }
             HashUtils.ContentHashOnto(pair6.Value.Predicate, ref lastHash);
             HashUtils.ContentHashOnto(pair6.Value.Predicate2, ref lastHash);
             if (pair6.Value.AttackPattern != null)
             {
             }
             if (pair6.Value.AttackProperty != null)
             {
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.DamagePercentage, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.AddedDamageValue, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.NormalDamage, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.NormalDamagePercentage, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.FireDamage, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.FireDamagePercentage, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.ThunderDamage, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.ThunderDamagePercentage, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.IceDamage, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.IceDamagePercentage, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.AlienDamage, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.AlienDamagePercentage, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.AniDamageRatio, ref lastHash);
                 HashUtils.ContentHashOnto((int)pair6.Value.AttackProperty.HitType, ref lastHash);
                 HashUtils.ContentHashOnto((int)pair6.Value.AttackProperty.HitEffect, ref lastHash);
                 HashUtils.ContentHashOnto((int)pair6.Value.AttackProperty.HitEffectAux, ref lastHash);
                 HashUtils.ContentHashOnto((int)pair6.Value.AttackProperty.KillEffect, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.FrameHalt, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.RetreatVelocity, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.IsAnimEventAttack, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.IsInComboCount, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.SPRecover, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.WitchTimeRatio, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.NoTriggerEvadeAndDefend, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackProperty.NoBreakFrameHaltAdd, ref lastHash);
                 HashUtils.ContentHashOnto((int)pair6.Value.AttackProperty.AttackTargetting, ref lastHash);
                 if (pair6.Value.AttackProperty.CategoryTag != null)
                 {
                     foreach (AttackResult.AttackCategoryTag tag in pair6.Value.AttackProperty.CategoryTag)
                     {
                         HashUtils.ContentHashOnto((int)tag, ref lastHash);
                     }
                 }
             }
             if (pair6.Value.CameraShake != null)
             {
                 HashUtils.ContentHashOnto(pair6.Value.CameraShake.ShakeOnNotHit, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.CameraShake.ShakeRange, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.CameraShake.ShakeTime, ref lastHash);
                 if (pair6.Value.CameraShake.ShakeAngle.HasValue)
                 {
                     HashUtils.ContentHashOnto(pair6.Value.CameraShake.ShakeAngle.Value, ref lastHash);
                 }
                 HashUtils.ContentHashOnto(pair6.Value.CameraShake.ShakeStepFrame, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.CameraShake.ClearPreviousShake, ref lastHash);
             }
             if (pair6.Value.AttackEffect != null)
             {
                 HashUtils.ContentHashOnto(pair6.Value.AttackEffect.EffectPattern, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackEffect.SwitchName, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.AttackEffect.MuteAttackEffect, ref lastHash);
                 HashUtils.ContentHashOnto((int)pair6.Value.AttackEffect.AttackEffectTriggerPos, ref lastHash);
             }
             if (pair6.Value.TriggerAbility != null)
             {
                 HashUtils.ContentHashOnto(pair6.Value.TriggerAbility.ID, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.TriggerAbility.Name, ref lastHash);
             }
             if (pair6.Value.TriggerEffectPattern != null)
             {
                 HashUtils.ContentHashOnto(pair6.Value.TriggerEffectPattern.EffectPattern, ref lastHash);
             }
             if (pair6.Value.TimeSlow != null)
             {
                 HashUtils.ContentHashOnto(pair6.Value.TimeSlow.Force, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.TimeSlow.Duration, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.TimeSlow.SlowRatio, ref lastHash);
             }
             if (pair6.Value.TriggerTintCamera != null)
             {
                 HashUtils.ContentHashOnto(pair6.Value.TriggerTintCamera.RenderDataName, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.TriggerTintCamera.Duration, ref lastHash);
                 HashUtils.ContentHashOnto(pair6.Value.TriggerTintCamera.TransitDuration, ref lastHash);
             }
         }
     }
     if (this.MultiAnimEvents != null)
     {
         foreach (KeyValuePair <string, ConfigMultiAnimEvent> pair7 in this.MultiAnimEvents)
         {
             HashUtils.ContentHashOnto(pair7.Key, ref lastHash);
             if (pair7.Value.AnimEventNames != null)
             {
                 foreach (string str6 in pair7.Value.AnimEventNames)
                 {
                     HashUtils.ContentHashOnto(str6, ref lastHash);
                 }
             }
         }
     }
     if (this.AnimatorConfig != null)
     {
         foreach (KeyValuePair <string, bool> pair8 in this.AnimatorConfig)
         {
             HashUtils.ContentHashOnto(pair8.Key, ref lastHash);
             HashUtils.ContentHashOnto(pair8.Value, ref lastHash);
         }
     }
     if (this.ATKRatioNames != null)
     {
         foreach (List <string> list in this.ATKRatioNames)
         {
             if (list != null)
             {
                 foreach (string str7 in list)
                 {
                     HashUtils.ContentHashOnto(str7, ref lastHash);
                 }
             }
         }
     }
     if (this.DebuffResistance != null)
     {
         if (this.DebuffResistance.ImmuneStates != null)
         {
             foreach (AbilityState state in this.DebuffResistance.ImmuneStates)
             {
                 HashUtils.ContentHashOnto((int)state, ref lastHash);
             }
         }
         HashUtils.ContentHashOnto(this.DebuffResistance.ResistanceRatio, ref lastHash);
         HashUtils.ContentHashOnto(this.DebuffResistance.DurationRatio, ref lastHash);
     }
     if (base.AnimatorStateParamBinds != null)
     {
         foreach (ConfigBindAnimatorStateToParameter parameter in base.AnimatorStateParamBinds)
         {
             if (parameter.AnimatorStateNames != null)
             {
                 foreach (string str8 in parameter.AnimatorStateNames)
                 {
                     HashUtils.ContentHashOnto(str8, ref lastHash);
                 }
             }
             if (parameter.ParameterConfig != null)
             {
                 HashUtils.ContentHashOnto(parameter.ParameterConfig.ParameterID, ref lastHash);
                 HashUtils.ContentHashOnto(parameter.ParameterConfig.ParameterIDSub, ref lastHash);
                 HashUtils.ContentHashOnto(parameter.ParameterConfig.NormalizedTimeStart, ref lastHash);
                 HashUtils.ContentHashOnto(parameter.ParameterConfig.NormalizedTimeStop, ref lastHash);
             }
         }
     }
     if (base.MPArguments != null)
     {
         HashUtils.ContentHashOnto(base.MPArguments.SyncSendInterval, ref lastHash);
         HashUtils.ContentHashOnto((int)base.MPArguments.RemoteMode, ref lastHash);
         if (base.MPArguments.MuteSyncAnimatorTags != null)
         {
             foreach (string str9 in base.MPArguments.MuteSyncAnimatorTags)
             {
                 HashUtils.ContentHashOnto(str9, ref lastHash);
             }
         }
     }
 }
Exemple #3
0
 public void ObjectContentHashOnto(ref int lastHash)
 {
     HashUtils.ContentHashOnto(this.AbilityName, ref lastHash);
     HashUtils.ContentHashOnto(this.UseAbilityArgumentAsSpecialKey, ref lastHash);
     HashUtils.ContentHashOnto(this.SetAbilityArgumentToOverrideMap, ref lastHash);
     if (this.AbilityMixins != null)
     {
         foreach (ConfigAbilityMixin mixin in this.AbilityMixins)
         {
             if (mixin is IHashable)
             {
                 HashUtils.ContentHashOnto((IHashable)mixin, ref lastHash);
             }
         }
     }
     if (this.AbilitySpecials != null)
     {
         foreach (KeyValuePair <string, object> pair in this.AbilitySpecials)
         {
             HashUtils.ContentHashOnto(pair.Key, ref lastHash);
             HashUtils.ContentHashOntoFallback(pair.Value, ref lastHash);
         }
     }
     if (this.Modifiers != null)
     {
         foreach (KeyValuePair <string, ConfigAbilityModifier> pair2 in this.Modifiers)
         {
             HashUtils.ContentHashOnto(pair2.Key, ref lastHash);
             HashUtils.ContentHashOnto((int)pair2.Value.TimeScale, ref lastHash);
             HashUtils.ContentHashOnto((int)pair2.Value.Stacking, ref lastHash);
             HashUtils.ContentHashOnto(pair2.Value.IsBuff, ref lastHash);
             HashUtils.ContentHashOnto(pair2.Value.IsDebuff, ref lastHash);
             HashUtils.ContentHashOnto(pair2.Value.IsUnique, ref lastHash);
             if (pair2.Value.Duration != null)
             {
                 HashUtils.ContentHashOnto(pair2.Value.Duration.isDynamic, ref lastHash);
                 HashUtils.ContentHashOnto(pair2.Value.Duration.fixedValue, ref lastHash);
                 HashUtils.ContentHashOnto(pair2.Value.Duration.dynamicKey, ref lastHash);
             }
             if (pair2.Value.ThinkInterval != null)
             {
                 HashUtils.ContentHashOnto(pair2.Value.ThinkInterval.isDynamic, ref lastHash);
                 HashUtils.ContentHashOnto(pair2.Value.ThinkInterval.fixedValue, ref lastHash);
                 HashUtils.ContentHashOnto(pair2.Value.ThinkInterval.dynamicKey, ref lastHash);
             }
             if (pair2.Value.ModifierMixins != null)
             {
                 foreach (ConfigAbilityMixin mixin2 in pair2.Value.ModifierMixins)
                 {
                     if (mixin2 is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)mixin2, ref lastHash);
                     }
                 }
             }
             if (pair2.Value.Properties != null)
             {
                 IEnumerator <KeyValuePair <string, DynamicFloat> > enumerator = pair2.Value.Properties.GetEnumerator();
                 try
                 {
                     while (enumerator.MoveNext())
                     {
                         KeyValuePair <string, DynamicFloat> current = enumerator.Current;
                         HashUtils.ContentHashOnto(current.Key, ref lastHash);
                         HashUtils.ContentHashOnto(current.Value.isDynamic, ref lastHash);
                         HashUtils.ContentHashOnto(current.Value.fixedValue, ref lastHash);
                         HashUtils.ContentHashOnto(current.Value.dynamicKey, ref lastHash);
                     }
                 }
                 finally
                 {
                     if (enumerator == null)
                     {
                     }
                     enumerator.Dispose();
                 }
             }
             if (pair2.Value.EntityProperties != null)
             {
                 IEnumerator <KeyValuePair <string, DynamicFloat> > enumerator4 = pair2.Value.EntityProperties.GetEnumerator();
                 try
                 {
                     while (enumerator4.MoveNext())
                     {
                         KeyValuePair <string, DynamicFloat> pair4 = enumerator4.Current;
                         HashUtils.ContentHashOnto(pair4.Key, ref lastHash);
                         HashUtils.ContentHashOnto(pair4.Value.isDynamic, ref lastHash);
                         HashUtils.ContentHashOnto(pair4.Value.fixedValue, ref lastHash);
                         HashUtils.ContentHashOnto(pair4.Value.dynamicKey, ref lastHash);
                     }
                 }
                 finally
                 {
                     if (enumerator4 == null)
                     {
                     }
                     enumerator4.Dispose();
                 }
             }
             HashUtils.ContentHashOnto((int)pair2.Value.State, ref lastHash);
             if (pair2.Value.StateOption != null)
             {
             }
             HashUtils.ContentHashOnto(pair2.Value.MuteStateDisplayEffect, ref lastHash);
             HashUtils.ContentHashOnto(pair2.Value.ApplyAttackerWitchTimeRatio, ref lastHash);
             if (pair2.Value.OnAdded != null)
             {
                 foreach (ConfigAbilityAction action in pair2.Value.OnAdded)
                 {
                     if (action is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)action, ref lastHash);
                     }
                 }
             }
             if (pair2.Value.OnRemoved != null)
             {
                 foreach (ConfigAbilityAction action2 in pair2.Value.OnRemoved)
                 {
                     if (action2 is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)action2, ref lastHash);
                     }
                 }
             }
             if (pair2.Value.OnBeingHit != null)
             {
                 foreach (ConfigAbilityAction action3 in pair2.Value.OnBeingHit)
                 {
                     if (action3 is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)action3, ref lastHash);
                     }
                 }
             }
             if (pair2.Value.OnBeingHitResolved != null)
             {
                 foreach (ConfigAbilityAction action4 in pair2.Value.OnBeingHitResolved)
                 {
                     if (action4 is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)action4, ref lastHash);
                     }
                 }
             }
             if (pair2.Value.OnAttackLanded != null)
             {
                 foreach (ConfigAbilityAction action5 in pair2.Value.OnAttackLanded)
                 {
                     if (action5 is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)action5, ref lastHash);
                     }
                 }
             }
             if (pair2.Value.OnThinkInterval != null)
             {
                 foreach (ConfigAbilityAction action6 in pair2.Value.OnThinkInterval)
                 {
                     if (action6 is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)action6, ref lastHash);
                     }
                 }
             }
             if (pair2.Value.OnEvadeStart != null)
             {
                 foreach (ConfigAbilityAction action7 in pair2.Value.OnEvadeStart)
                 {
                     if (action7 is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)action7, ref lastHash);
                     }
                 }
             }
             if (pair2.Value.OnEvadeSuccess != null)
             {
                 foreach (ConfigAbilityAction action8 in pair2.Value.OnEvadeSuccess)
                 {
                     if (action8 is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)action8, ref lastHash);
                     }
                 }
             }
             if (pair2.Value.OnDefendStart != null)
             {
                 foreach (ConfigAbilityAction action9 in pair2.Value.OnDefendStart)
                 {
                     if (action9 is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)action9, ref lastHash);
                     }
                 }
             }
             if (pair2.Value.OnDefendSuccess != null)
             {
                 foreach (ConfigAbilityAction action10 in pair2.Value.OnDefendSuccess)
                 {
                     if (action10 is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)action10, ref lastHash);
                     }
                 }
             }
             if (pair2.Value.OnMonsterCreated != null)
             {
                 foreach (ConfigAbilityAction action11 in pair2.Value.OnMonsterCreated)
                 {
                     if (action11 is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)action11, ref lastHash);
                     }
                 }
             }
             if (pair2.Value.OnAvatarCreated != null)
             {
                 foreach (ConfigAbilityAction action12 in pair2.Value.OnAvatarCreated)
                 {
                     if (action12 is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)action12, ref lastHash);
                     }
                 }
             }
             if (pair2.Value.OnKilled != null)
             {
                 foreach (ConfigAbilityAction action13 in pair2.Value.OnKilled)
                 {
                     if (action13 is IHashable)
                     {
                         HashUtils.ContentHashOnto((IHashable)action13, ref lastHash);
                     }
                 }
             }
         }
     }
     if (this.DefaultModifier != null)
     {
         HashUtils.ContentHashOnto((int)this.DefaultModifier.TimeScale, ref lastHash);
         HashUtils.ContentHashOnto((int)this.DefaultModifier.Stacking, ref lastHash);
         HashUtils.ContentHashOnto(this.DefaultModifier.IsBuff, ref lastHash);
         HashUtils.ContentHashOnto(this.DefaultModifier.IsDebuff, ref lastHash);
         HashUtils.ContentHashOnto(this.DefaultModifier.IsUnique, ref lastHash);
         if (this.DefaultModifier.Duration != null)
         {
             HashUtils.ContentHashOnto(this.DefaultModifier.Duration.isDynamic, ref lastHash);
             HashUtils.ContentHashOnto(this.DefaultModifier.Duration.fixedValue, ref lastHash);
             HashUtils.ContentHashOnto(this.DefaultModifier.Duration.dynamicKey, ref lastHash);
         }
         if (this.DefaultModifier.ThinkInterval != null)
         {
             HashUtils.ContentHashOnto(this.DefaultModifier.ThinkInterval.isDynamic, ref lastHash);
             HashUtils.ContentHashOnto(this.DefaultModifier.ThinkInterval.fixedValue, ref lastHash);
             HashUtils.ContentHashOnto(this.DefaultModifier.ThinkInterval.dynamicKey, ref lastHash);
         }
         if (this.DefaultModifier.ModifierMixins != null)
         {
             foreach (ConfigAbilityMixin mixin3 in this.DefaultModifier.ModifierMixins)
             {
                 if (mixin3 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)mixin3, ref lastHash);
                 }
             }
         }
         if (this.DefaultModifier.Properties != null)
         {
             IEnumerator <KeyValuePair <string, DynamicFloat> > enumerator5 = this.DefaultModifier.Properties.GetEnumerator();
             try
             {
                 while (enumerator5.MoveNext())
                 {
                     KeyValuePair <string, DynamicFloat> pair5 = enumerator5.Current;
                     HashUtils.ContentHashOnto(pair5.Key, ref lastHash);
                     HashUtils.ContentHashOnto(pair5.Value.isDynamic, ref lastHash);
                     HashUtils.ContentHashOnto(pair5.Value.fixedValue, ref lastHash);
                     HashUtils.ContentHashOnto(pair5.Value.dynamicKey, ref lastHash);
                 }
             }
             finally
             {
                 if (enumerator5 == null)
                 {
                 }
                 enumerator5.Dispose();
             }
         }
         if (this.DefaultModifier.EntityProperties != null)
         {
             IEnumerator <KeyValuePair <string, DynamicFloat> > enumerator6 = this.DefaultModifier.EntityProperties.GetEnumerator();
             try
             {
                 while (enumerator6.MoveNext())
                 {
                     KeyValuePair <string, DynamicFloat> pair6 = enumerator6.Current;
                     HashUtils.ContentHashOnto(pair6.Key, ref lastHash);
                     HashUtils.ContentHashOnto(pair6.Value.isDynamic, ref lastHash);
                     HashUtils.ContentHashOnto(pair6.Value.fixedValue, ref lastHash);
                     HashUtils.ContentHashOnto(pair6.Value.dynamicKey, ref lastHash);
                 }
             }
             finally
             {
                 if (enumerator6 == null)
                 {
                 }
                 enumerator6.Dispose();
             }
         }
         HashUtils.ContentHashOnto((int)this.DefaultModifier.State, ref lastHash);
         if (this.DefaultModifier.StateOption != null)
         {
         }
         HashUtils.ContentHashOnto(this.DefaultModifier.MuteStateDisplayEffect, ref lastHash);
         HashUtils.ContentHashOnto(this.DefaultModifier.ApplyAttackerWitchTimeRatio, ref lastHash);
         if (this.DefaultModifier.OnAdded != null)
         {
             foreach (ConfigAbilityAction action14 in this.DefaultModifier.OnAdded)
             {
                 if (action14 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)action14, ref lastHash);
                 }
             }
         }
         if (this.DefaultModifier.OnRemoved != null)
         {
             foreach (ConfigAbilityAction action15 in this.DefaultModifier.OnRemoved)
             {
                 if (action15 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)action15, ref lastHash);
                 }
             }
         }
         if (this.DefaultModifier.OnBeingHit != null)
         {
             foreach (ConfigAbilityAction action16 in this.DefaultModifier.OnBeingHit)
             {
                 if (action16 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)action16, ref lastHash);
                 }
             }
         }
         if (this.DefaultModifier.OnBeingHitResolved != null)
         {
             foreach (ConfigAbilityAction action17 in this.DefaultModifier.OnBeingHitResolved)
             {
                 if (action17 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)action17, ref lastHash);
                 }
             }
         }
         if (this.DefaultModifier.OnAttackLanded != null)
         {
             foreach (ConfigAbilityAction action18 in this.DefaultModifier.OnAttackLanded)
             {
                 if (action18 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)action18, ref lastHash);
                 }
             }
         }
         if (this.DefaultModifier.OnThinkInterval != null)
         {
             foreach (ConfigAbilityAction action19 in this.DefaultModifier.OnThinkInterval)
             {
                 if (action19 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)action19, ref lastHash);
                 }
             }
         }
         if (this.DefaultModifier.OnEvadeStart != null)
         {
             foreach (ConfigAbilityAction action20 in this.DefaultModifier.OnEvadeStart)
             {
                 if (action20 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)action20, ref lastHash);
                 }
             }
         }
         if (this.DefaultModifier.OnEvadeSuccess != null)
         {
             foreach (ConfigAbilityAction action21 in this.DefaultModifier.OnEvadeSuccess)
             {
                 if (action21 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)action21, ref lastHash);
                 }
             }
         }
         if (this.DefaultModifier.OnDefendStart != null)
         {
             foreach (ConfigAbilityAction action22 in this.DefaultModifier.OnDefendStart)
             {
                 if (action22 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)action22, ref lastHash);
                 }
             }
         }
         if (this.DefaultModifier.OnDefendSuccess != null)
         {
             foreach (ConfigAbilityAction action23 in this.DefaultModifier.OnDefendSuccess)
             {
                 if (action23 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)action23, ref lastHash);
                 }
             }
         }
         if (this.DefaultModifier.OnMonsterCreated != null)
         {
             foreach (ConfigAbilityAction action24 in this.DefaultModifier.OnMonsterCreated)
             {
                 if (action24 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)action24, ref lastHash);
                 }
             }
         }
         if (this.DefaultModifier.OnAvatarCreated != null)
         {
             foreach (ConfigAbilityAction action25 in this.DefaultModifier.OnAvatarCreated)
             {
                 if (action25 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)action25, ref lastHash);
                 }
             }
         }
         if (this.DefaultModifier.OnKilled != null)
         {
             foreach (ConfigAbilityAction action26 in this.DefaultModifier.OnKilled)
             {
                 if (action26 is IHashable)
                 {
                     HashUtils.ContentHashOnto((IHashable)action26, ref lastHash);
                 }
             }
         }
     }
     if (this.OnAdded != null)
     {
         foreach (ConfigAbilityAction action27 in this.OnAdded)
         {
             if (action27 is IHashable)
             {
                 HashUtils.ContentHashOnto((IHashable)action27, ref lastHash);
             }
         }
     }
     if (this.OnRemoved != null)
     {
         foreach (ConfigAbilityAction action28 in this.OnRemoved)
         {
             if (action28 is IHashable)
             {
                 HashUtils.ContentHashOnto((IHashable)action28, ref lastHash);
             }
         }
     }
     if (this.OnAbilityStart != null)
     {
         foreach (ConfigAbilityAction action29 in this.OnAbilityStart)
         {
             if (action29 is IHashable)
             {
                 HashUtils.ContentHashOnto((IHashable)action29, ref lastHash);
             }
         }
     }
     if (this.OnKilled != null)
     {
         foreach (ConfigAbilityAction action30 in this.OnKilled)
         {
             if (action30 is IHashable)
             {
                 HashUtils.ContentHashOnto((IHashable)action30, ref lastHash);
             }
         }
     }
     if (this.OnDestroy != null)
     {
         foreach (ConfigAbilityAction action31 in this.OnDestroy)
         {
             if (action31 is IHashable)
             {
                 HashUtils.ContentHashOnto((IHashable)action31, ref lastHash);
             }
         }
     }
     if (this.OnFieldEnter != null)
     {
         foreach (ConfigAbilityAction action32 in this.OnFieldEnter)
         {
             if (action32 is IHashable)
             {
                 HashUtils.ContentHashOnto((IHashable)action32, ref lastHash);
             }
         }
     }
     if (this.OnFieldExit != null)
     {
         foreach (ConfigAbilityAction action33 in this.OnFieldExit)
         {
             if (action33 is IHashable)
             {
                 HashUtils.ContentHashOnto((IHashable)action33, ref lastHash);
             }
         }
     }
 }