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 OnCombatReceivedDamage(ref Damage damage, ref Resistance resistance, ref DamageResult damageResult, Boolean p_isCritical, Boolean p_isMelee, EDamageType p_damageType) { foreach (Skill skill in m_availableSkills) { foreach (SkillEffectStaticData skillEffectStaticData in skill.CurrentlyAvailableEffects) { ESkillEffectType type = skillEffectStaticData.Type; if (type == ESkillEffectType.REDUCE_INCOMING_CRITICAL_MAGIC_DAMAGE) { if (p_isCritical) { damageResult.EffectiveValue = (Int32)Math.Round(damageResult.EffectiveValue * (1f - skillEffectStaticData.Value), MidpointRounding.AwayFromZero); } } } } }
public void OnCombatEnd(AttackResult p_result, Boolean p_isMelee, EDamageType p_damageType) { foreach (Skill skill in m_availableSkills) { foreach (SkillEffectStaticData skillEffectStaticData in skill.CurrentlyAvailableEffects) { ESkillEffectType type = skillEffectStaticData.Type; if (type == ESkillEffectType.RESTORE_MANA_ON_RESIST_MAGIC) { if (p_result.Result == EResultType.EVADE && p_damageType != EDamageType.PHYSICAL) { Int32 num = (Int32)ResolveValue(m_character.ManaPoints, skillEffectStaticData, skill); m_character.ChangeMP(num - m_character.ManaPoints); } } } } }
public Single GetReducePriceDifferenceCoefficient() { Single result = 0; foreach (Skill skill in m_availableSkills) { foreach (SkillEffectStaticData skillEffectStaticData in skill.CurrentlyAvailableEffects) { ESkillEffectType type = skillEffectStaticData.Type; if (type == ESkillEffectType.ReducePriceDifference) { result = ResolveValue(result, skillEffectStaticData, skill); } } } return(result); }
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; } } }