コード例 #1
0
        public override CombatResults CalculateResults(Stats.StatsPackage caster, Stats.StatsPackage target)
        {
            CombatResults results = DoesAttackHit(caster, target);

            if (!results.DidMiss && !results.DidAvoid)
            {
                int damage = (int)(caster.AttackPower.EffectiveValue * 0.8);
                if (DoesAttackCrit(caster))
                {
                    damage          = ApplyCriticalDamage(damage, caster);
                    results.DidCrit = true;
                }

                results.PureDamage      = damage;
                results.AbsorbedDamage  = CalculateAbsorption(results.PureDamage, target);
                results.AppliedDamage   = results.PureDamage - results.AbsorbedDamage;
                results.ReflectedDamage = CalculateReflectedDamage(results.AppliedDamage, target);
            }

            int result = Engine.RNG.Next(0, 100);

            if (result <= 100)
            {
                if (!target.HasEffect("Basic DoT"))
                {
                    target.ApplyEffect(new Effects.SimpleDot(target));
                }
            }

            return(results);
        }
コード例 #2
0
            public override CombatResults CalculateResults(Stats.StatsPackage caster, Stats.StatsPackage target)
            {
                if (!target.HasEffect(typeof(Effect_Weaken)))
                {
                    target.ApplyEffect(new Effect_Weaken(target));
                }

                return(new CombatResults()
                {
                    Caster = caster, Target = target, UsedAbility = this
                });
            }
コード例 #3
0
ファイル: Rogue.cs プロジェクト: minalear/roguealak
            public override CombatResults CalculateResults(Stats.StatsPackage caster, Stats.StatsPackage target)
            {
                if (!target.HasEffect(typeof(Effect_Poison)))
                {
                    target.ApplyEffect(new Effect_Poison());
                }
                else
                {
                    Effect_Poison poison = (Effect_Poison)target.GetEffect(typeof(Effect_Poison));
                    if (poison.stacks < 5)
                    {
                        poison.stacks++;
                        poison.Duration = 10;
                    }
                }

                return(new CombatResults()
                {
                    Caster = caster, Target = target, UsedAbility = this
                });
            }