예제 #1
0
        private void GainFromDealtDamage(SuffixStaticData p_suffix)
        {
            Int32  suffixLevel   = m_equipment.SuffixLevel;
            Single valueForLevel = p_suffix.GetValueForLevel(suffixLevel, m_equipment.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND);
            Single num           = m_attackResult.DamageDone;
            EnchantmentEffectEventArgs suffixEffectEntry;

            if (p_suffix.Effect == ESuffixEffect.GAIN_HP_PERCENTAGE_FROM_DEALT_DAMAGE)
            {
                Int32 num2 = Math.Max(1, (Int32)Math.Round(num * valueForLevel, MidpointRounding.AwayFromZero));
                m_character.ChangeHP(num2);
                suffixEffectEntry = new EnchantmentEffectEventArgs(p_suffix, num2);
                DamageEventArgs p_eventArgs = new DamageEventArgs(new AttackResult
                {
                    Result        = EResultType.HEAL,
                    DamageResults =
                    {
                        new DamageResult(EDamageType.HEAL, num2, 0, 1f)
                    }
                });
                LegacyLogic.Instance.EventManager.InvokeEvent(m_character, EEventType.CHARACTER_HEALS, p_eventArgs);
            }
            else
            {
                Int32 num3 = Math.Max(1, (Int32)Math.Round(num * valueForLevel, MidpointRounding.AwayFromZero));
                m_character.ChangeMP(num3);
                suffixEffectEntry = new EnchantmentEffectEventArgs(p_suffix, num3);
            }
            m_character.FightHandler.FeedActionLog(suffixEffectEntry);
        }
예제 #2
0
        public List <Attack> DealDamageToAttacker(Monster p_attacker)
        {
            List <Attack> list = new List <Attack>();

            for (Int32 i = 0; i < 10; i++)
            {
                Equipment equipment = m_character.Equipment.GetItemAt((EEquipSlots)i) as Equipment;
                if (equipment != null)
                {
                    if (i != 1 || !(equipment is MeleeWeapon) || (equipment as MeleeWeapon).GetSubType() != EEquipmentType.TWOHANDED)
                    {
                        List <SuffixStaticData> suffixes = equipment.Suffixes;
                        for (Int32 j = 0; j < suffixes.Count; j++)
                        {
                            if (suffixes[j].Effect == ESuffixEffect.ATTACKING_MONSTER_DAMAGED)
                            {
                                EDamageType edamageType = suffixes[j].MagicSchool;
                                if (edamageType == EDamageType.NONE)
                                {
                                    edamageType = EDamageType.PHYSICAL;
                                }
                                Damage p_damages = new Damage(edamageType, (Int32)suffixes[j].GetValueForLevel(equipment.SuffixLevel, equipment.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND), 0f, 1f);
                                Attack item      = new Attack(m_character.FightValues.MainHandAttackValue, 0f, p_damages);
                                EnchantmentEffectEventArgs item2 = new EnchantmentEffectEventArgs(suffixes[j], p_damages.Value);
                                m_logEntries.Add(item2);
                                list.Add(item);
                            }
                        }
                    }
                }
            }
            return(list);
        }
예제 #3
0
        private void RemoveAllBlockAttempts(SuffixStaticData p_suffix)
        {
            m_target.CurrentGeneralBlockAttempts = 0;
            m_target.CurrentMeleeBlockAttempts   = 0;
            EnchantmentEffectEventArgs suffixEffectEntry = new EnchantmentEffectEventArgs(p_suffix);

            m_character.FightHandler.FeedActionLog(suffixEffectEntry);
        }
예제 #4
0
        private void TargetDealMagicDamageOnTile(SuffixStaticData p_suffix)
        {
            Int32 suffixLevel = m_equipment.SuffixLevel;
            Int32 damageValue = (Int32)Math.Round(p_suffix.GetValueForLevel(suffixLevel, m_equipment.ItemSlot == EItemSlot.ITEM_SLOT_2_HAND), MidpointRounding.AwayFromZero);
            EnchantmentEffectEventArgs suffixEffectEntry = new EnchantmentEffectEventArgs(p_suffix);

            m_character.FightHandler.FeedActionLog(suffixEffectEntry);
            m_character.FightHandler.AttackAllMonstersOnTargetsTile(m_target, damageValue, p_suffix.MagicSchool, m_counterAttack);
        }