コード例 #1
0
ファイル: Shaman.cs プロジェクト: minalear/roguealak
            public override CombatResults CalculateResults(StatsPackage caster, StatsPackage target)
            {
                CombatResults results = DoesAttackHit(caster, target);

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

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

                    if (!target.HasEffect(typeof(Effect_FireLashDOT)))
                    {
                        target.ApplyEffect(new Effect_FireLashDOT());
                    }
                }

                return(results);
            }
コード例 #2
0
ファイル: Mage.cs プロジェクト: minalear/roguealak
            public override CombatResults CalculateResults(StatsPackage caster, StatsPackage target)
            {
                CombatResults results = DoesAttackHit(caster, target);

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

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

                    if (!target.HasEffect("Ignite"))
                    {
                        int result = Engine.RNG.Next(0, 100);
                        if (result <= 20)
                        {
                            target.ApplyEffect(new Effect_FireballDOT(target));
                        }
                    }
                }

                return(results);
            }
コード例 #3
0
        public override CombatResults CalculateResults(StatsPackage caster, StatsPackage target)
        {
            CombatResults results = DoesAttackHit(caster, target);

            if (!results.DidMiss && !results.DidAvoid)
            {
                int damage = 100;
                if (Engine.RNG.Next(0, 100) <= 10)
                {
                    damage         *= 2;
                    results.DidCrit = true;
                }

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

                if (!target.HasEffect("Ignite"))
                {
                    int result = Engine.RNG.Next(0, 100);
                    if (result <= 15)
                    {
                        target.ApplyEffect(new Core.Stats.Classes.Mage.Effect_FireballDOT(target));
                    }
                }
            }

            return(results);
        }
コード例 #4
0
 public override CombatResults CalculateResults(StatsPackage caster, StatsPackage target)
 {
     target.ApplyEffect(new Effect_HavocDOT(target));
     return(new CombatResults()
     {
         Caster = caster, Target = target, UsedAbility = this
     });
 }
コード例 #5
0
 public override CombatResults CalculateResults(StatsPackage caster, StatsPackage target)
 {
     caster.ApplyEffect(new Combat.Effects.BasicBleed(caster));
     return(new CombatResults()
     {
         Caster = caster, Target = target, UsedAbility = this
     });
 }
コード例 #6
0
 public override CombatResults CalculateResults(StatsPackage caster, StatsPackage target)
 {
     caster.ApplyEffect(new Effect_ShieldWall());
     return(new CombatResults()
     {
         Caster = caster, Target = target, UsedAbility = this
     });
 }
コード例 #7
0
ファイル: Shaman.cs プロジェクト: minalear/roguealak
            public override CombatResults CalculateResults(StatsPackage caster, StatsPackage target)
            {
                if (!target.HasEffect(typeof(Effect_WindShear)))
                {
                    target.ApplyEffect(new Effect_WindShear());
                }

                return(new CombatResults()
                {
                    Caster = caster, Target = target, UsedAbility = this
                });
            }
コード例 #8
0
ファイル: Summoner.cs プロジェクト: minalear/roguealak
            public override void CastAbilityGround(StatsPackage caster, int x0, int y0, int radius, Level level)
            {
                if (CanCastAbility(caster, x0, y0) && !caster.HasEffect(typeof(Effect_SoulLink)))
                {
                    Entity_Impling imp = new Entity_Impling(caster.ParentEntity, level)
                    {
                        X = x0, Y = y0
                    };
                    level.Entities.Add(imp);

                    caster.ApplyEffect(new Effect_SoulLink(imp, caster));
                }
            }
コード例 #9
0
ファイル: Mage.cs プロジェクト: minalear/roguealak
            public override CombatResults CalculateResults(StatsPackage caster, StatsPackage target)
            {
                for (int i = 0; i < target.AppliedEffects.Count; i++)
                {
                    if (target.AppliedEffects[i].IsHarmful)
                    {
                        target.PurgeEffect(target.AppliedEffects[i]);
                    }
                }

                target.AddHealth((int)(target.MaxHealth * 0.25));
                target.ApplyEffect(new Effect_IceBlock(target));
                return(new CombatResults()
                {
                    Caster = caster, Target = target, UsedAbility = this
                });
            }
コード例 #10
0
ファイル: Rogue.cs プロジェクト: minalear/roguealak
            public override CombatResults CalculateResults(StatsPackage caster, 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 <= 15)
                    {
                        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(results);
            }
コード例 #11
0
ファイル: Berserker.cs プロジェクト: minalear/roguealak
 public override CombatResults CalculateResults(StatsPackage caster, StatsPackage target)
 {
     caster.ApplyEffect(new Effect_DoubleDamage());
     return new CombatResults() { Caster = caster, Target = target, DidMiss = true, UsedAbility = this };
 }