private void DecreaseDamageValuePenalty(FightValues p_fightValues, EEquipSlots p_slot, SkillEffectStaticData p_effect, Skill p_skill) { if (p_slot == EEquipSlots.OFF_HAND) { p_fightValues.DualWieldDamageBonus = ResolveValue(p_fightValues.DualWieldDamageBonus, p_effect, p_skill); } }
private void IncreaseArmorValue(FightValues p_fightValues, SkillEffectStaticData p_effect, Skill p_skill) { if (p_effect.Condition == ESkillEffectCondition.IS_EQUIPED) { p_fightValues.ArmorValue = (Int32)ResolveValue(p_fightValues.ArmorValue, p_effect, p_skill); } }
private void AddFightValues(FightValues p_fightValues, BaseItem p_equipment, EEquipSlots p_slot) { if (p_equipment is MagicFocus && p_slot == EEquipSlots.OFF_HAND && m_character.Equipment.GetItemAt(EEquipSlots.MAIN_HAND) is MagicFocus) { return; } Skill requiredSkill = GetRequiredSkill(p_equipment); if (requiredSkill != null && p_equipment is Equipment) { AddSkillEffects(p_fightValues, (Equipment)p_equipment, p_slot, requiredSkill); } MeleeWeapon meleeWeapon = p_equipment as MeleeWeapon; MeleeWeapon meleeWeapon2 = m_character.Equipment.GetItemAt(EEquipSlots.MAIN_HAND) as MeleeWeapon; if (meleeWeapon2 != null && meleeWeapon != null && p_slot == EEquipSlots.OFF_HAND) { Skill skill = FindSkill(10); if (skill != null) { AddSkillEffects(p_fightValues, meleeWeapon, p_slot, skill); } } if (meleeWeapon != null && meleeWeapon.GetSubType() == EEquipmentType.TWOHANDED) { Skill skill2 = FindSkill(8); if (skill2 != null) { AddSkillEffects(p_fightValues, meleeWeapon, p_slot, skill2); } } }
public void AddFightValues(FightValues p_fightValues) { AddEquipmentDependentFightValues(p_fightValues); foreach (Skill skill in m_availableSkills) { foreach (SkillEffectStaticData skillEffectStaticData in skill.CurrentlyAvailableEffects) { ESkillEffectType type = skillEffectStaticData.Type; switch (type) { case ESkillEffectType.INCREASE_MAGIC_RESISTANCE: IncreaseMagicResistance(p_fightValues, skillEffectStaticData, skill); break; default: if (type == ESkillEffectType.INCREASE_MAGIC_FACTOR_SKILL_BONUS) { IncreaseMagicSkillBonus(p_fightValues, skillEffectStaticData, skill); } break; case ESkillEffectType.INCREASE_EVADE_VALUE: p_fightValues.EvadeValue = (Int32)Math.Round(ResolveValue(p_fightValues.EvadeValue, skillEffectStaticData, skill), MidpointRounding.AwayFromZero); break; } } } }
public void ModifyFightValues(FightValues p_fightValues) { for (Int32 i = m_buffs.Count - 1; i >= 0; i--) { m_buffs[i].ModifyFightValues(p_fightValues); } }
private void IncreaseCriticalMagicDamageFactor(FightValues p_fightValues, SkillEffectStaticData p_effect, Skill p_skill) { if (p_effect.Condition == ESkillEffectCondition.IS_EQUIPED) { p_fightValues.MagicalCriticalDamageMod = ResolveValue(p_fightValues.MagicalCriticalDamageMod, p_effect, p_skill); } }
private void IncreaseMagicResistance(FightValues p_fightValues, SkillEffectStaticData p_effect, Skill p_skill) { ResistanceCollection resistance = p_fightValues.Resistance; resistance.Set(new Resistance(EDamageType.AIR, (Int32)ResolveValue(resistance[EDamageType.AIR].Value, p_effect, p_skill))); resistance.Set(new Resistance(EDamageType.EARTH, (Int32)ResolveValue(resistance[EDamageType.EARTH].Value, p_effect, p_skill))); resistance.Set(new Resistance(EDamageType.FIRE, (Int32)ResolveValue(resistance[EDamageType.FIRE].Value, p_effect, p_skill))); resistance.Set(new Resistance(EDamageType.WATER, (Int32)ResolveValue(resistance[EDamageType.WATER].Value, p_effect, p_skill))); resistance.Set(new Resistance(EDamageType.DARK, (Int32)ResolveValue(resistance[EDamageType.DARK].Value, p_effect, p_skill))); resistance.Set(new Resistance(EDamageType.LIGHT, (Int32)ResolveValue(resistance[EDamageType.LIGHT].Value, p_effect, p_skill))); resistance.Set(new Resistance(EDamageType.PRIMORDIAL, (Int32)ResolveValue(resistance[EDamageType.PRIMORDIAL].Value, p_effect, p_skill))); }
private void IncreaseDamageFactor(FightValues p_fightValues, SkillEffectStaticData p_effect, Skill p_skill, EEquipSlots p_slot) { if (p_effect.Condition == ESkillEffectCondition.IS_EQUIPED) { if (p_slot == EEquipSlots.MAIN_HAND) { p_fightValues.MainHandDamageFactor = ResolveValue(p_fightValues.MainHandDamageFactor, p_effect, p_skill); } else if (p_slot == EEquipSlots.OFF_HAND) { p_fightValues.OffHandDamageFactor = ResolveValue(p_fightValues.OffHandDamageFactor, p_effect, p_skill); } } }
private void IncreaseAttackValue(FightValues p_fightValues, SkillEffectStaticData p_effect, Skill p_skill, EEquipSlots p_slot) { if (p_slot == EEquipSlots.MAIN_HAND) { p_fightValues.MainHandAttackValue = ResolveValue(p_fightValues.MainHandAttackValue, p_effect, p_skill); } else if (p_slot == EEquipSlots.OFF_HAND) { p_fightValues.OffHandAttackValue = ResolveValue(p_fightValues.OffHandAttackValue, p_effect, p_skill); } else if (p_slot == EEquipSlots.RANGE_WEAPON) { p_fightValues.RangedAttackValue = ResolveValue(p_fightValues.RangedAttackValue, p_effect, p_skill); } }
private void AddEquipmentDependentFightValues(FightValues p_fightValues) { BaseItem itemAt = m_character.Equipment.GetItemAt(EEquipSlots.MAIN_HAND); BaseItem itemAt2 = m_character.Equipment.GetItemAt(EEquipSlots.OFF_HAND); BaseItem itemAt3 = m_character.Equipment.GetItemAt(EEquipSlots.RANGE_WEAPON); BaseItem itemAt4 = m_character.Equipment.GetItemAt(EEquipSlots.BODY); AddFightValues(p_fightValues, itemAt, EEquipSlots.MAIN_HAND); if (itemAt != itemAt2) { AddFightValues(p_fightValues, itemAt2, EEquipSlots.OFF_HAND); } AddFightValues(p_fightValues, itemAt3, EEquipSlots.RANGE_WEAPON); AddFightValues(p_fightValues, itemAt4, EEquipSlots.BODY); }
public override void FillFightValues(Boolean p_offHand, FightValues p_fightValue) { DamageData baseDamage = GetBaseDamage(); if (p_offHand) { p_fightValue.OffHandDamage.Add(baseDamage); p_fightValue.OffHandCriticalDamageMod = 0f; } else { p_fightValue.MainHandDamage.Add(baseDamage); p_fightValue.MainHandCriticalDamageMod = 0f; } p_fightValue.MagicalCriticalDamageMod += m_staticData.AddCritDamage; }
private void IncreaseDamageSkillBonus(FightValues p_fightValues, SkillEffectStaticData p_effect, Skill p_skill, EEquipSlots p_slot) { if (p_effect.Condition == ESkillEffectCondition.IS_EQUIPED) { if (p_slot == EEquipSlots.MAIN_HAND) { p_fightValues.MainHandSkillLevelBonus = ResolveValue(p_fightValues.MainHandSkillLevelBonus, p_effect, p_skill); } else if (p_slot == EEquipSlots.OFF_HAND) { p_fightValues.OffHandSkillLevelBonus = ResolveValue(p_fightValues.OffHandSkillLevelBonus, p_effect, p_skill); } else if (p_slot == EEquipSlots.RANGE_WEAPON) { p_fightValues.RangedSkillLevelBonus = ResolveValue(p_fightValues.RangedSkillLevelBonus, p_effect, p_skill); } } }
private void IncreaseCriticalHitDestinyMultiplier(FightValues p_fightValues, EEquipSlots p_slot, SkillEffectStaticData p_effect, Skill p_skill) { Int32 destiny = m_character.CurrentAttributes.Destiny; Single num = p_effect.Value * destiny; if (p_slot == EEquipSlots.OFF_HAND) { p_fightValues.OffHandCriticalHitDestinyMultiplier += num; } else if (p_slot == EEquipSlots.MAIN_HAND) { p_fightValues.MainHandCriticalHitDestinyMultiplier += num; } else if (p_slot == EEquipSlots.RANGE_WEAPON) { p_fightValues.RangedCriticalHitDestinyMultiplier += num; } }
private void IncreaseCriticalHitChances(FightValues p_fightValues, SkillEffectStaticData p_effect, Skill p_skill, EEquipSlots p_slot) { if (p_effect.Condition == ESkillEffectCondition.FOR_EACH_EQUIPMENT) { p_fightValues.CriticalMainHandHitChance = ResolveValue(p_fightValues.CriticalMainHandHitChance, p_effect, p_skill); p_fightValues.CriticalOffHandHitChance = ResolveValue(p_fightValues.CriticalOffHandHitChance, p_effect, p_skill); } else if (p_slot == EEquipSlots.RANGE_WEAPON) { p_fightValues.CriticalRangeHitChance = ResolveValue(p_fightValues.CriticalRangeHitChance, p_effect, p_skill); } else if (p_slot == EEquipSlots.MAIN_HAND) { p_fightValues.CriticalMainHandHitChance = ResolveValue(p_fightValues.CriticalMainHandHitChance, p_effect, p_skill); } else if (p_slot == EEquipSlots.OFF_HAND) { p_fightValues.CriticalOffHandHitChance = ResolveValue(p_fightValues.CriticalOffHandHitChance, p_effect, p_skill); } }
public override void FillFightValues(Boolean p_offHand, FightValues p_fightValue) { Int32 minDamage = MinDamage; Int32 maxDamage = MaxDamage; String value = (minDamage != maxDamage) ? (minDamage.ToString() + "-" + maxDamage.ToString()) : maxDamage.ToString(); m_properties["MELEE_EFFECT_DAMAGE"] = value; DamageData p_data = new DamageData(EDamageType.PHYSICAL, minDamage, maxDamage); if (p_offHand) { p_fightValue.OffHandDamage.Add(p_data); p_fightValue.OffHandCriticalDamageMod = m_staticData.CritDamageFactor; } else { p_fightValue.MainHandDamage.Add(p_data); p_fightValue.MainHandCriticalDamageMod = m_staticData.CritDamageFactor; } }
public override void FillFightValues(Boolean p_offHand, FightValues p_fightValues) { p_fightValues.ArmorValue += ArmorValue; m_properties["SHIELD_EFFECT_AC"] = ArmorValue.ToString(); }
public override void FillFightValues(Boolean p_offHand, FightValues p_fightValues) { }
public override void FillFightValues(Boolean p_offHand, FightValues p_fightValues) { p_fightValues.ArmorValue += ArmorValue; ModifyProperties(); }
public override void FillFightValues(Boolean p_offHand, FightValues p_fightValue) { p_fightValue.RangeDamage.Add(new DamageData(EDamageType.PHYSICAL, m_staticData.MinDamage, m_staticData.MaxDamage)); p_fightValue.RangeCriticalDamageMod += m_staticData.CritDamageFactor; }
private void IncreaseMeleeBlockAttempts(FightValues p_fightValues, SkillEffectStaticData p_effect, Skill p_skill) { p_fightValues.MeleeBlockAttempts += (Int32)p_effect.Value; }
private void DecreaseAttackValuePenalty(FightValues p_fightValues, SkillEffectStaticData p_effect, Skill p_skill) { p_fightValues.AttackValuePenaltyReduction = (Int32)ResolveValue(p_fightValues.AttackValuePenaltyReduction, p_effect, p_skill); }
private void IncreaseBlockChance(FightValues p_fightValues, SkillEffectStaticData p_effect, Skill p_skill) { p_fightValues.GeneralBlockChance = ResolveValue(p_fightValues.GeneralBlockChance, p_effect, p_skill); }
private void AddSkillEffects(FightValues p_fightValues, Equipment p_equipment, EEquipSlots p_slot, Skill p_skill) { List <SkillEffectStaticData> currentlyAvailableEffects = p_skill.CurrentlyAvailableEffects; foreach (SkillEffectStaticData skillEffectStaticData in currentlyAvailableEffects) { ESkillEffectType type = skillEffectStaticData.Type; switch (type) { case ESkillEffectType.INCREASE_ATTACK_VALUE: IncreaseAttackValue(p_fightValues, skillEffectStaticData, p_skill, p_slot); break; case ESkillEffectType.INCREASE_DAMAGE_FACTOR: IncreaseDamageFactor(p_fightValues, skillEffectStaticData, p_skill, p_slot); break; case ESkillEffectType.INCREASE_DAMAGE_SKILL_BONUS: IncreaseDamageSkillBonus(p_fightValues, skillEffectStaticData, p_skill, p_slot); break; default: if (type == ESkillEffectType.INCREASE_ARMOR_VALUE) { IncreaseArmorValue(p_fightValues, skillEffectStaticData, p_skill); } break; case ESkillEffectType.INCREASE_CRITICAL_HIT_CHANCE: IncreaseCriticalHitChances(p_fightValues, skillEffectStaticData, p_skill, p_slot); break; case ESkillEffectType.INCREASE_CRITICAL_DAMAGE: IncreaseCriticalDamageFactor(p_fightValues, skillEffectStaticData, p_skill, p_slot); break; case ESkillEffectType.INCREASE_CRITICAL_MAGIC_DAMAGE: IncreaseCriticalMagicDamageFactor(p_fightValues, skillEffectStaticData, p_skill); break; case ESkillEffectType.INCREASE_CRITICAL_MAGIC_HIT_CHANCE: IncreaseMagicalCriticalHitChances(p_fightValues, skillEffectStaticData, p_skill); break; case ESkillEffectType.ADDITIONAL_BLOCK_ATTEMPT: IncreaseBlockAttempts(p_fightValues, skillEffectStaticData, p_skill); break; case ESkillEffectType.ADDITIONAL_MELEE_BLOCK_ATTEMPT: IncreaseMeleeBlockAttempts(p_fightValues, skillEffectStaticData, p_skill); break; case ESkillEffectType.INCREASE_CRITICAL_HIT_DESTINY_MULTIPLIER: IncreaseCriticalHitDestinyMultiplier(p_fightValues, p_slot, skillEffectStaticData, p_skill); break; case ESkillEffectType.DECREASE_DAMAGE_PENALTY: DecreaseDamageValuePenalty(p_fightValues, p_slot, skillEffectStaticData, p_skill); break; case ESkillEffectType.DECREASE_ATTACK_VALUE_PENALTY: DecreaseAttackValuePenalty(p_fightValues, skillEffectStaticData, p_skill); break; case ESkillEffectType.INCREASE_BLOCK_CHANCE: IncreaseBlockChance(p_fightValues, skillEffectStaticData, p_skill); break; } } }
private void IncreaseMagicalCriticalHitChances(FightValues p_fightValues, SkillEffectStaticData p_effect, Skill p_skill) { p_fightValues.CriticalMagicHitChance = ResolveValue(p_fightValues.CriticalMagicHitChance, p_effect, p_skill); }
private void IncreaseMagicSkillBonus(FightValues p_fightValues, SkillEffectStaticData p_effect, Skill p_skill) { p_fightValues.MagicFactorSkillBonus[(ESkillID)p_skill.StaticID] = ResolveValue(p_fightValues.MagicFactorSkillBonus[(ESkillID)p_skill.StaticID], p_effect, p_skill); }
public void ResolveFightValueEffects(EEquipSlots p_equipSlot, Equipment p_equip, FightValues p_fightValues) { m_fightValues = p_fightValues; Int32 prefixLevel = p_equip.PrefixLevel; List <PrefixStaticData> prefixes = p_equip.Prefixes; foreach (PrefixStaticData prefixStaticData in prefixes) { if (prefixStaticData.Effect == EPrefixEffect.INCREASE_ELEMENTAL_PROTECTION) { IncreaseElementalProtection(prefixStaticData, prefixLevel); } else if (prefixStaticData.Effect == EPrefixEffect.ADD_ELEMENTAL_DAMAGE) { AddElementalDamage(prefixStaticData, prefixLevel, p_equipSlot); } } Int32 suffixLevel = p_equip.SuffixLevel; List <SuffixStaticData> suffixes = p_equip.Suffixes; foreach (SuffixStaticData suffixStaticData in suffixes) { ESuffixEffect effect = suffixStaticData.Effect; switch (effect) { case ESuffixEffect.INCREASE_MELEE_ATTACK_VALUE: if (p_equipSlot == EEquipSlots.OFF_HAND) { m_fightValues.OffHandAttackValue += (Int32)suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); } else { m_fightValues.MainHandAttackValue += (Int32)suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); } break; case ESuffixEffect.INCREASE_RANGE_ATTACK_VALUE: m_fightValues.RangedAttackValue += (Int32)suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); break; default: switch (effect) { case ESuffixEffect.PROTECTION_AGAINST_PARALYZED: m_fightValues.ConditionProtectionParalysis += suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); break; case ESuffixEffect.PROTECTION_AGAINST_SLEEPING: m_fightValues.ConditionProtectionSleep += suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); break; case ESuffixEffect.PROTECTION_AGAINST_POISONED: m_fightValues.ConditionProtectionPoison += suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); break; case ESuffixEffect.PROTECTION_AGAINST_CONFUSED: m_fightValues.ConditionProtectionConfusion += suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); break; case ESuffixEffect.PROTECTION_AGAINST_WEAK: m_fightValues.ConditionProtectionWeakness += suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); break; case ESuffixEffect.PROTECTION_AGAINST_CURSED: m_fightValues.ConditionProtectionCurses += suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); break; case ESuffixEffect.PROTECTION_AGAINST_KNOCKOUT: m_fightValues.ConditionProtectionKnockOut += suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); break; } break; case ESuffixEffect.INCREASE_CRITICAL_HIT_CHANCE: if (p_equipSlot == EEquipSlots.OFF_HAND) { m_fightValues.CriticalOffHandHitChance += suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND) / 100f; } else if (p_equipSlot == EEquipSlots.RANGE_WEAPON) { m_fightValues.CriticalRangeHitChance += suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND) / 100f; } else { m_fightValues.CriticalMainHandHitChance += suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND) / 100f; } break; case ESuffixEffect.INCREASE_CRITICAL_DAMAGE: if (p_equipSlot == EEquipSlots.OFF_HAND) { m_fightValues.OffHandCriticalDamageMod += (Int32)suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND) / 100f; } else if (p_equipSlot == EEquipSlots.RANGE_WEAPON) { m_fightValues.RangeCriticalDamageMod += (Int32)suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND) / 100f; } else { m_fightValues.MainHandCriticalDamageMod += (Int32)suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND) / 100f; } break; case ESuffixEffect.INCREASE_EVADE_VALUE: m_fightValues.EvadeValue += (Int32)suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); break; case ESuffixEffect.INCREASE_ARMOR_VALUE: m_fightValues.ArmorValue += (Int32)suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); break; case ESuffixEffect.INCREASE_MELEE_BLOCK_ATTEMPTS: m_fightValues.MeleeBlockAttempts += (Int32)suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); break; case ESuffixEffect.INCREASE_GENERAL_BLOCK_ATTEMPTS: m_fightValues.GeneralBlockAttempts += (Int32)suffixStaticData.GetValueForLevel(suffixLevel, p_equip.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND); break; } } }