public override void HandleAttack(DesignPatterns___DC_Design.EnumAttacks attack, DesignPatterns___DC_Design.Target targets, DesignPatterns___DC_Design.DungeonCharacter attacker)
        {
            if (attack.Equals(EnumAttacks.HyperBeam))
            {
                int str = (attacker.DCStats.GetStat(StatsType.Strength));
                // calculate raw damage
                // Strength Weight -> Each Str point = .8% - 1.2% damage increase of BaseDamage. FOR EXAMPLE: 100 Raw Str = 180%-220% * BaseDamage, OR 38-42 damage.
                int damage = _random.Next((int)(BaseDamage * StatAlgorithms.GetPercentStrength(str, LowPercent)), (int)(BaseDamage * StatAlgorithms.GetPercentStrength(str, HighPercent)));

                var cmd = new StatAugmentCommand();

                // Apply defense reduction
                int appliedDamage = StatAlgorithms.ApplyDefence(damage, targets.ElementAt(DEFAULT_INDEX));
                cmd.AddEffect(new EffectInformation(StatsType.CurHp, -appliedDamage), targets.ElementAt(DEFAULT_INDEX));

                cmd.AddEffect(StatAlgorithms.ModifyStatBy(StatsType.Agility, attacker, 0.1, 15), attacker);
                cmd.AddEffect(new EffectInformation(StatsType.CurResources, attack.Cost), attacker);

                // reduce target combat effectivness (lower str, agi, def by 15%)
                cmd.AddEffect(StatAlgorithms.ModifyStatBy(StatsType.Strength, targets.ElementAt(DEFAULT_INDEX), -.15, 4), targets.ElementAt(DEFAULT_INDEX));
                cmd.AddEffect(StatAlgorithms.ModifyStatBy(StatsType.Agility, targets.ElementAt(DEFAULT_INDEX), -.15, 4), targets.ElementAt(DEFAULT_INDEX));
                cmd.AddEffect(StatAlgorithms.ModifyStatBy(StatsType.Defense, targets.ElementAt(DEFAULT_INDEX), -.15, 4), targets.ElementAt(DEFAULT_INDEX));

                cmd.RegisterCommand();
            }
            else
            {
                NextLink.HandleAttack(attack, targets, attacker);
            }
        }
        public override void HandleAttack(DesignPatterns___DC_Design.EnumAttacks attack, DesignPatterns___DC_Design.Target targets, DesignPatterns___DC_Design.DungeonCharacter attacker)
        {
            if (attack.Equals(EnumAttacks.DemoralizingShout))
            {
                int str = (attacker.DCStats.GetStat(StatsType.Strength));

                var cmd = new StatAugmentCommand();

                cmd.AddEffect(new EffectInformation(StatsType.CurResources, attack.Cost + (int)(.1275 * attacker.DCStats.GetStat(StatsType.Intelegence))), attacker);

                double reduction = StatAlgorithms.ApplyStrengthToStatReduction(PercentReduction, str);

                foreach (var target in targets)
                {
                    // reduce target combat effectivness (lower str, agi, def by 15% + percent based off str)
                    cmd.AddEffect(StatAlgorithms.ModifyStatBy(StatsType.Strength, target, reduction, 5), target); //targets.ElementAt(DEFAULT_INDEX)
                    cmd.AddEffect(StatAlgorithms.ModifyStatBy(StatsType.Agility, target, reduction, 5), target);
                    cmd.AddEffect(StatAlgorithms.ModifyStatBy(StatsType.Defense, target, reduction, 5), target);
                }

                cmd.RegisterCommand();
            }
            else
            {
                NextLink.HandleAttack(attack, targets, attacker);
            }
        }
        public override void HandleAttack(DesignPatterns___DC_Design.EnumAttacks attack, DesignPatterns___DC_Design.Target targets, DesignPatterns___DC_Design.DungeonCharacter attacker)
        {
            if (attack.Equals(EnumAttacks.IceCone))
            {
                int str = (attacker.DCStats.GetStat(StatsType.Strength));
                var damage = _random.Next((int)(BaseDamage * StatAlgorithms.GetPercentStrength(str, LowPercent)), (int)(BaseDamage * StatAlgorithms.GetPercentStrength(str, HighPercent)));

                var cmd = new StatAugmentCommand();
                foreach (var target in targets)
                {
                    int appliedDamage = StatAlgorithms.ApplyDefence(damage, target);

                    cmd.AddEffect(new EffectInformation(StatsType.CurHp, -appliedDamage), target);

                    cmd.AddEffect(StatAlgorithms.ModifyStatBy(StatsType.Agility, target, -0.8, 4), target);
                    cmd.AddEffect(StatAlgorithms.ModifyStatBy(StatsType.Defense, target, -0.8, 4), target);

                }
                cmd.AddEffect(new EffectInformation(StatsType.CurResources, attack.Cost), attacker);
                cmd.RegisterCommand();
            }
            else
            {
                NextLink.HandleAttack(attack,targets,attacker);
            }
        }
        public override void HandleAttack(DesignPatterns___DC_Design.EnumAttacks attack, DesignPatterns___DC_Design.Target targets, DesignPatterns___DC_Design.DungeonCharacter attacker)
        {
            if (attack.Equals(EnumAttacks.GreaterHeal))
            {
                int str = (attacker.DCStats.GetStat(StatsType.Strength));
                int heal = _random.Next(BaseHeal * (int)(StatAlgorithms.GetPercentStrength(str, LowPercent)), (int)(BaseHeal * StatAlgorithms.GetPercentStrength(str, HighPercent)));
                StatAugmentCommand cmd = new StatAugmentCommand();

                cmd.AddEffect(new EffectInformation(StatsType.CurHp, heal), targets.ElementAt(DEFAULT_INDEX));

                cmd.AddEffect(StatAlgorithms.ModifyStatBy(StatsType.Agility, targets.ElementAt(DEFAULT_INDEX), .2, 4), attacker);
                cmd.AddEffect(new EffectInformation(StatsType.CurResources, attack.Cost), attacker);
                cmd.RegisterCommand();
            }
            else
            {
                NextLink.HandleAttack(attack, targets, attacker);
            }
        }
        public override void HandleAttack(DesignPatterns___DC_Design.EnumAttacks attack, DesignPatterns___DC_Design.Target targets, DesignPatterns___DC_Design.DungeonCharacter attacker)
        {
            if (attack.Equals(EnumAttacks.LifeTap))
            {
                int manaIncrease = attacker.DCStats.GetStat(StatsType.CurHp);
                int healthSacrifice = -1 * (manaIncrease / 2);
                StatAugmentCommand cmd = new StatAugmentCommand();

                cmd.AddEffect(new EffectInformation(StatsType.CurHp, healthSacrifice), attacker);

                cmd.AddEffect(StatAlgorithms.ModifyStatBy(StatsType.Defense, targets.ElementAt(DEFAULT_INDEX), .9, 6), attacker);
                cmd.AddEffect(new EffectInformation(StatsType.CurResources, manaIncrease), attacker);
                cmd.RegisterCommand();
            }
            else
            {
                NextLink.HandleAttack(attack, targets, attacker);
            }
        }
        public override void HandleAttack(DesignPatterns___DC_Design.EnumAttacks attack, DesignPatterns___DC_Design.Target targets, DesignPatterns___DC_Design.DungeonCharacter attacker)
        {
            if (attack.Equals(EnumAttacks.LightningBolt))
            {
                int str = (attacker.DCStats.GetStat(StatsType.Strength));

                int damage = _random.Next(BaseDamage, (int)(BaseDamage * StatAlgorithms.GetPercentStrength(str, HighPercent)));
                var cmd = new StatAugmentCommand();

                int appliedDamage = StatAlgorithms.ApplyDefence(damage, targets.ElementAt(DEFAULT_INDEX));

                cmd.AddEffect(new EffectInformation(StatsType.CurHp, -appliedDamage), targets.ElementAt(DEFAULT_INDEX));
                cmd.AddEffect(StatAlgorithms.ModifyStatBy(StatsType.Agility, targets.ElementAt(DEFAULT_INDEX), 1.5, 2), targets.ElementAt(DEFAULT_INDEX));

                cmd.AddEffect(new EffectInformation(StatsType.CurResources, attack.Cost), attacker);
                cmd.RegisterCommand();
            }
            else
            {
                NextLink.HandleAttack(attack, targets, attacker);
            }
        }
 public override void HandleAttack(DesignPatterns___DC_Design.EnumAttacks attack, DesignPatterns___DC_Design.Target targets, DesignPatterns___DC_Design.DungeonCharacter attacker)
 {
 }
Exemplo n.º 8
0
 public void SetType(DesignPatterns___DC_Design.EnumItemType type)
 {
     _type = type;
 }
Exemplo n.º 9
0
 public EffectInformation GetProperty(DesignPatterns___DC_Design.StatsType type)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 10
0
 public void SetType(DesignPatterns___DC_Design.EnumItemType type)
 {
     throw new NotImplementedException();
 }