Exemplo n.º 1
0
        public virtual CombatResults CastAbilityTarget(StatsPackage caster, StatsPackage target)
        {
            if (CanCastAbility(caster, target))
            {
                ApplyAbilityCost(caster);
                currentCD = cooldown;
                results   = CalculateResults(caster, target);

                return(results);
            }
            return(new CombatResults()
            {
                Caster = caster, Target = target, UsedAbility = this, CanAfford = false
            });
        }
Exemplo n.º 2
0
        public CombatResults DoesAttackHit(StatsPackage caster, StatsPackage target)
        {
            CombatResults results = new CombatResults()
            {
                DidMiss = true, DidAvoid = false, Caster = caster, Target = target, UsedAbility = this
            };

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

            if (abilityType == AbilityTypes.Physical)
            {
                if (result <= caster.PhysicalHitChance.EffectiveValue)
                {
                    results.DidMiss = false;

                    result = Engine.RNG.Next(0, 100);
                    if (result <= target.PhysicalAvoidance.EffectiveValue)
                    {
                        results.DidAvoid = true;
                    }
                    else
                    {
                        results.DidAvoid = false;
                    }
                }
            }
            else if (abilityType == AbilityTypes.Magical)
            {
                if (result <= caster.SpellHitChance.EffectiveValue)
                {
                    results.DidMiss = false;

                    result = Engine.RNG.Next(0, 100);
                    if (result <= target.SpellAvoidance.EffectiveValue)
                    {
                        results.DidAvoid = true;
                    }
                    else
                    {
                        results.DidAvoid = false;
                    }
                }
            }

            return(results);
        }
Exemplo n.º 3
0
        }                                                       //Whenever the holder attacks

        public virtual void OnDefend(CombatResults results)
        {
        }                                                       //Whenever the holder is attacked
Exemplo n.º 4
0
 public virtual void OnAttack(CombatResults results)
 {
 }                                                       //Whenever the holder attacks