public static float ApplyBaseStatBonuses_Float(CharacterInstance source, BaseStatProperty prop, float baseAmount, [Optional, DefaultParameterValue(true)] bool includeBuffs) { float num = source.getBaseStatModifier(prop); if (includeBuffs) { num += GameLogic.Binder.BuffSystem.getBaseStatModifierSumFromActiveBuffs(source, prop); } switch (prop) { case BaseStatProperty.AttacksPerSecond: if (source.getPerkInstanceCount(PerkType.BerserkersBlood) > 0) { num += (1f - source.CurrentHpNormalized) * source.getGenericModifierForPerkType(PerkType.BerserkersBlood); } if (source.IsBoss) { num += source.getGenericModifierForPerkType(PerkType.BossBonusSpeed); } break; case BaseStatProperty.MovementSpeed: if (source.IsBoss) { num += source.getGenericModifierForPerkType(PerkType.BossBonusSpeed); } break; } if (((includeBuffs && GameLogic.Binder.BuffSystem.hasBuffFromPerk(source, PerkType.DungeonBoostEnrageEnemies)) || (source.getPerkInstanceCount(PerkType.DungeonBoostEnrageEnemies) > 0)) && (prop == BaseStatProperty.AttacksPerSecond)) { num += ConfigPerks.EnrageEnemies.AttacksPerSecondModifier; } return(!BASESTAT_MODIFIER_IS_ABSOLUTE[prop] ? ((baseAmount != 0f) ? (baseAmount + (baseAmount * num)) : num) : (baseAmount + num)); }
public float getBaseStatModifier(BaseStatProperty prop) { float num = 0f; for (int i = 0; i < this.Perks.PerkInstances.Count; i++) { PerkInstance instance = this.Perks.PerkInstances[i]; float num3 = instance.getBaseStatModifier(prop); num += num3; if (num3 != 0f) { num += this.getEvolveBonusForPerk(instance.Type); } } for (int j = 0; j < this.Item.FixedPerks.PerkInstances.Count; j++) { PerkInstance instance2 = this.Item.FixedPerks.PerkInstances[j]; float num5 = instance2.getBaseStatModifier(prop); num += num5; if (num5 != 0f) { num += this.getEvolveBonusForPerk(instance2.Type); } } return(num); }
public void postDeserializeInitialization() { this.BaseStatsDouble.Clear(); foreach (KeyValuePair <string, double> pair in this.BaseStats) { BaseStatProperty key = (BaseStatProperty)((int)Enum.Parse(typeof(BaseStatProperty), pair.Key)); switch (key) { case BaseStatProperty.UNSPECIFIED: break; case BaseStatProperty.DamagePerHit: case BaseStatProperty.Life: case BaseStatProperty.SkillDamage: this.BaseStatsDouble.Add(key, pair.Value); break; default: this.BaseStatsFloat.Add(key, (float)pair.Value); break; } } if (!string.IsNullOrEmpty(this.AvatarSpriteId)) { this.AvatarSprite = new SpriteAtlasEntry("Menu", this.AvatarSpriteId); } }
public float getBaseStatModifier(BaseStatProperty prop) { if (ConfigPerks.SHARED_DATA[this.Type].BaseStat == prop) { return(this.Modifier); } return(0f); }
public float getBaseStatModifier(BaseStatProperty prop) { float num = 0f; for (int i = 0; i < this.PerkInstances.Count; i++) { num += this.PerkInstances[i].getBaseStatModifier(prop); } return(num); }
public float getBaseStatModifier(int rank, BaseStatProperty prop) { float num = 0f; for (int i = 0; i < this.Entries.Count; i++) { if (rank >= this.Entries[i].RankReq) { num += this.Entries[i].PerkInstance.getBaseStatModifier(prop); } } return(num); }
public float getBaseStatModifierSumFromActiveBuffs(CharacterInstance c, BaseStatProperty baseStat) { float a = 0f; List <Buff> list = this.m_characterBuffLists[c]; for (int i = 0; i < list.Count; i++) { Buff buff = list[i]; if (!buff.Ended && ((buff.BaseStat1 == baseStat) || (buff.BaseStat2 == baseStat))) { a += buff.TotalModifier; } } if (baseStat == BaseStatProperty.MovementSpeed) { return(Mathf.Max(a, ConfigGameplay.BUFFS_MOVEMENT_DEBUFF_TOTAL_MODIFIER_CAP)); } if (baseStat == BaseStatProperty.AttacksPerSecond) { a = Mathf.Max(a, ConfigGameplay.BUFFS_ATTACKS_PER_SECOND_DEBUFF_TOTAL_MODIFIER_CAP); } return(a); }
public float getBaseStatModifier(BaseStatProperty baseStat) { float num = 0f; for (int i = 0; i < this.SelectedRunestones.Count; i++) { if (this.SelectedRunestones[i].Source == RunestoneSelectionSource.Player) { string id = this.SelectedRunestones[i].Id; SkillType skillTypeForRunestone = ConfigRunestones.GetSkillTypeForRunestone(id); if ((skillTypeForRunestone != SkillType.NONE) && this.Player.ActiveCharacter.isSkillActive(skillTypeForRunestone)) { ConfigRunestones.SharedData runestoneData = ConfigRunestones.GetRunestoneData(id); if (runestoneData.PerkInstance != null) { PerkInstance perkInstance = runestoneData.PerkInstance; num += perkInstance.getBaseStatModifier(baseStat); } } } } return(num); }
public float getBaseStatModifier(BaseStatProperty baseStat) { return(this.m_quickLookup_baseStatModifier[baseStat]); }
protected void refreshQuickLookup() { this.m_quickLookup_perkType.Clear(); for (int i = 0; i < ConfigPerks.ALL_PERKS.Count; i++) { PerkType perkType = ConfigPerks.ALL_PERKS[i]; PerkTypeQuickLookup lookup = new PerkTypeQuickLookup(); int num2 = 0; for (int n = 0; n < this.QuickLookupPerkInstances.Count; n++) { PerkInstance instance = this.QuickLookupPerkInstances[n]; num2 += instance.getPerkInstanceCount(perkType); } lookup.PerkInstanceCount = num2; float num4 = 0f; for (int num5 = 0; num5 < this.QuickLookupPerkInstances.Count; num5++) { float num6 = this.QuickLookupPerkInstances[num5].getGenericModifierForPerkType(perkType); num4 += num6; } lookup.GenericModifierForPerkType = num4; this.m_quickLookup_perkType.Add(perkType, lookup); } this.m_quickLookup_baseStatModifier.Clear(); for (int j = 0; j < ConfigGameplay.ALL_BASE_STAT_PROPERTY_TYPES.Count; j++) { BaseStatProperty prop = ConfigGameplay.ALL_BASE_STAT_PROPERTY_TYPES[j]; float num8 = 0f; for (int num9 = 0; num9 < this.QuickLookupPerkInstances.Count; num9++) { float num10 = this.QuickLookupPerkInstances[num9].getBaseStatModifier(prop); num8 += num10; } this.m_quickLookup_baseStatModifier.Add(prop, num8); } this.m_quickLookup_skillType.Clear(); for (int k = 0; k < ConfigSkills.ALL_HERO_SKILLS.Count; k++) { SkillType skillType = ConfigSkills.ALL_HERO_SKILLS[k]; SkillTypeQuickLookup lookup2 = new SkillTypeQuickLookup(); float num12 = 0f; for (int num13 = 0; num13 < this.QuickLookupPerkInstances.Count; num13++) { float num14 = this.QuickLookupPerkInstances[num13].getSkillDamageModifier(skillType); num12 += num14; } lookup2.SkillDamageModifier = num12; int num15 = 0; for (int num16 = 0; num16 < this.QuickLookupPerkInstances.Count; num16++) { PerkInstance instance5 = this.QuickLookupPerkInstances[num16]; num15 += instance5.getSkillExtraCharges(skillType); } lookup2.SkillExtraCharges = num15; bool flag = false; for (int num17 = 0; num17 < this.QuickLookupPerkInstances.Count; num17++) { PerkInstance instance6 = this.QuickLookupPerkInstances[num17]; if (instance6.hasSkillInvulnerability(skillType)) { flag = true; break; } } lookup2.SkillInvulnerability = flag; float num18 = 0f; for (int num19 = 0; num19 < this.QuickLookupPerkInstances.Count; num19++) { float num20 = this.QuickLookupPerkInstances[num19].getSkillCooldownModifier(skillType); num18 += num20; } lookup2.SkillCooldownModifier = num18; this.m_quickLookup_skillType.Add(skillType, lookup2); } this.m_quickLookup_characterType.Clear(); for (int m = 0; m < ConfigGameplay.ALL_CHARACTER_TYPES_INCLUDING_UNSPECIFIED.Count; m++) { CharacterType characterType = ConfigGameplay.ALL_CHARACTER_TYPES_INCLUDING_UNSPECIFIED[m]; CharacterTypeQuickLookup lookup3 = new CharacterTypeQuickLookup(); float num22 = 0f; for (int num23 = 0; num23 < this.QuickLookupPerkInstances.Count; num23++) { float num24 = this.QuickLookupPerkInstances[num23].getCharacterTypeDamageModifier(characterType); num22 += num24; } lookup3.CharacterTypeDamageModifier = num22; float num25 = 0f; for (int num26 = 0; num26 < this.QuickLookupPerkInstances.Count; num26++) { float num27 = this.QuickLookupPerkInstances[num26].getCharacterTypeArmorModifier(characterType); num25 += num27; } lookup3.CharacterTypeArmorModifier = num25; float num28 = 0f; for (int num29 = 0; num29 < this.QuickLookupPerkInstances.Count; num29++) { float num30 = this.QuickLookupPerkInstances[num29].getCharacterTypeXpModifier(characterType); num28 += num30; } lookup3.CharacterTypeXpModifier = num28; float num31 = 0f; for (int num32 = 0; num32 < this.QuickLookupPerkInstances.Count; num32++) { float num33 = this.QuickLookupPerkInstances[num32].getCharacterTypeCoinModifier(characterType); num31 += num33; } lookup3.CoinModifier = num31; this.m_quickLookup_characterType.Add(characterType, lookup3); } }
public static double ApplyBaseStatBonuses_Double(CharacterInstance source, BaseStatProperty prop, double baseAmount, [Optional, DefaultParameterValue(true)] bool includeBuffs) { if (prop == BaseStatProperty.DamagePerHit) { baseAmount += baseAmount * source.getGenericModifierForPerkType(PerkType.CoreBonusDamagePerHit); } else if (prop == BaseStatProperty.Life) { baseAmount += baseAmount * source.getGenericModifierForPerkType(PerkType.CoreBonusLife); } else if (prop == BaseStatProperty.SkillDamage) { baseAmount += baseAmount * source.getGenericModifierForPerkType(PerkType.CoreBonusSkillDamage); } float num = source.getBaseStatModifier(prop); if (includeBuffs) { num += GameLogic.Binder.BuffSystem.getBaseStatModifierSumFromActiveBuffs(source, prop); } BaseStatProperty property = prop; switch (property) { case BaseStatProperty.Life: if (source.IsBoss) { num += source.getGenericModifierForPerkType(PerkType.BossBonusLife); } break; case BaseStatProperty.DamagePerHit: if (source.IsBoss) { num += source.getGenericModifierForPerkType(PerkType.BossBonusDamage); num += source.getGenericModifierForPerkType(PerkType.BossBonusWeaponDamage); } break; default: if (property == BaseStatProperty.SkillDamage) { num += source.getGenericModifierForPerkType(PerkType.DamageBonusAll); if (source.IsBoss) { num += source.getGenericModifierForPerkType(PerkType.BossBonusDamage); num += source.getGenericModifierForPerkType(PerkType.BossBonusSkillDamage); } } break; } if (source.getPerkInstanceCount(PerkType.Berserk) > 0) { if (prop == BaseStatProperty.Life) { num += ConfigPerks.Berserk.ArmorModifier; } else if (prop == BaseStatProperty.DamagePerHit) { num += ConfigPerks.Berserk.DamagePerHitModifier; } } if (((includeBuffs && GameLogic.Binder.BuffSystem.hasBuffFromPerk(source, PerkType.DungeonBoostEnrageEnemies)) || (source.getPerkInstanceCount(PerkType.DungeonBoostEnrageEnemies) > 0)) && (prop == BaseStatProperty.Life)) { num += ConfigPerks.EnrageEnemies.LifeModifier; } return(!BASESTAT_MODIFIER_IS_ABSOLUTE[prop] ? ((baseAmount != 0.0) ? (baseAmount + (baseAmount * num)) : ((double)num)) : (baseAmount + num)); }
public float getBaseStatFloat(BaseStatProperty prop) { return(this.BaseStatsFloat[prop]); }
public double getBaseStatDouble(BaseStatProperty prop) { return(this.BaseStatsDouble[prop]); }