Beispiel #1
0
        public Dictionary <Feat, AbilityDetail> BuildAbilities()
        {
            var builder = new AbilityBuilder()
                          .Create(Feat.Sleep, PerkType.Sleep)
                          .Name("Sleep")
                          .HasRecastDelay(RecastGroup.Sleep, 12f)
                          .HasActivationDelay(2f)
                          .RequirementMP(8)
                          .UsesActivationType(AbilityActivationType.Casted)
                          .DisplaysVisualEffectWhenActivating()
                          .HasImpactAction((activator, target, level) =>
            {
                var resistance   = Resistance.GetResistance(target, ResistanceType.Sleep);
                var baseDuration = Random.NextFloat(15.0f, 30.0f);
                var duration     = baseDuration * resistance;

                StatusEffect.Apply(activator, target, StatusEffectType.Sleep, duration);
                Resistance.ModifyResistance(target, ResistanceType.Sleep, -0.25f);

                CombatPoint.AddCombatPoint(activator, target, SkillType.BlackMagic, 3);
                Enmity.ModifyEnmity(activator, target, 18);
            });

            return(builder.Build());
        }
    public void TakeDamage(float amount, ElementalType type)
    {
        float resistance = m_Resistance.GetResistance(type);

        m_Damage = (int)System.Math.Round(amount * (1.0f - resistance));
        TakeDamage(m_Damage);
    }
        private static int CalculateDamage(uint activator, uint target, int baseDamage)
        {
            var resistance     = Resistance.GetResistance(target, ResistanceType.Ice);
            var statAdjustment = 0.1f * (GetAbilityModifier(AbilityType.Intelligence, activator) - GetAbilityModifier(AbilityType.Intelligence, target));

            resistance += statAdjustment;
            var damage = (int)(baseDamage * resistance);

            if (damage < 1)
            {
                damage = 1;
            }

            return(damage);
        }