static void Postfix(RulesetCharacterHero __instance, ref RulesetAttackMode __result, ref WeaponDescription weaponDescription)
            {
                DamageForm           firstDamageForm = __result.EffectDescription.FindFirstDamageForm();
                WeaponTypeDefinition element         = DatabaseRepository.GetDatabase <WeaponTypeDefinition>().GetElement(weaponDescription.WeaponType);
                int originalAbilityScoreModifier     = AttributeDefinitions.ComputeAbilityScoreModifier(__instance.Attributes[__result.AbilityScore].CurrentValue);

                __result.AbilityScore = element.WeaponProximity == RuleDefinitions.AttackProximity.Melee ? "Strength" : "Dexterity";
                if (weaponDescription.WeaponTags.Contains("Finesse") && __instance.GetAttribute("Dexterity").CurrentValue > __instance.GetAttribute(__result.AbilityScore).CurrentValue)
                {
                    __result.AbilityScore = "Dexterity";
                }
                if (weaponDescription.WeaponTags.Contains("Knowledge") && __instance.GetAttribute("Intelligence").CurrentValue > __instance.GetAttribute(__result.AbilityScore).CurrentValue)
                {
                    __result.AbilityScore = "Intelligence";
                }
                if (weaponDescription.WeaponTags.Contains("Intuition") && __instance.GetAttribute("Wisdom").CurrentValue > __instance.GetAttribute(__result.AbilityScore).CurrentValue)
                {
                    __result.AbilityScore = "Wisdom";
                }
                if (weaponDescription.WeaponTags.Contains("Vigor") && __instance.GetAttribute("Constitution").CurrentValue > __instance.GetAttribute(__result.AbilityScore).CurrentValue)
                {
                    __result.AbilityScore = "Constitution";
                }
                if (weaponDescription.WeaponTags.Contains("Influence") && __instance.GetAttribute("Charisma").CurrentValue > __instance.GetAttribute(__result.AbilityScore).CurrentValue)
                {
                    __result.AbilityScore = "Charisma";
                }

                int abilityScoreModifier = AttributeDefinitions.ComputeAbilityScoreModifier(__instance.Attributes[__result.AbilityScore].CurrentValue);

                Predicate <RuleDefinitions.TrendInfo> predicate = FindAbilityScoreTrend;
                int ability_score_to_hit_trend_index            = __result.ToHitBonusTrends.FindIndex(predicate);
                int ability_score_damage_bonus_trend_index      = firstDamageForm.DamageBonusTrends.FindIndex(predicate);

                if (ability_score_to_hit_trend_index >= 0)
                {
                    __result.ToHitBonus -= originalAbilityScoreModifier;
                    __result.ToHitBonus += abilityScoreModifier;
                    __result.ToHitBonusTrends.RemoveAt(ability_score_to_hit_trend_index);
                    __result.ToHitBonusTrends.Add(new RuleDefinitions.TrendInfo(abilityScoreModifier, RuleDefinitions.FeatureSourceType.AbilityScore, __result.AbilityScore, (object)null));
                }

                if (ability_score_damage_bonus_trend_index >= 0)
                {
                    firstDamageForm.DamageBonusTrends.RemoveAt(ability_score_damage_bonus_trend_index);
                    firstDamageForm.BonusDamage -= originalAbilityScoreModifier;
                    firstDamageForm.BonusDamage += abilityScoreModifier;
                    firstDamageForm.DamageBonusTrends.Add(new RuleDefinitions.TrendInfo(abilityScoreModifier, RuleDefinitions.FeatureSourceType.AbilityScore, __result.AbilityScore, (object)null));
                }
            }
 public static T SetLastAttackMode <T>(this T entity, RulesetAttackMode value)
     where T : GuiCharacterAction
 {
     entity.SetField("lastAttackMode", value);
     return(entity);
 }