Exemplo n.º 1
0
        public string TriggerAilments(ICombative attacker)
        {
            var logMessage = "";

            if (CurrentAilments.Count == 0)
            {
                return("");
            }
            foreach (var ailment in CurrentAilments.Values)
            {
                ailment.ApplyAilment(this);
                if (CurrentAilments.ContainsKey(ailment.Name))
                {
                    logMessage += $"|{Name} was afflicted by {ailment.Name}! \n";
                }

                if (ailment.Name.Equals("leech-seed"))
                {
                    System.Console.WriteLine("BINGO");
                    var healthLeeched = ((Leech)ailment).healthLeeched(this);
                    attacker.Heal((int)healthLeeched);
                }
                else if (ailment.Name.Equals("confusion"))
                {
                    logMessage += $"|{Name} is confused!";
                    var confusionDamage = ((Confusion)ailment).GetDamage(this);
                    if (((Confusion)ailment).isTargetOther(PokeType.Name))
                    {
                        attacker.TakeDamage((int)confusionDamage);
                    }
                    else
                    {
                        logMessage += $"|{Name} hurt itself in confusion!";
                        this.TakeDamage((int)confusionDamage);
                    }
                }
            }
            return(logMessage);
        }
Exemplo n.º 2
0
        private string Attack(ICombative other, Move move)
        {
            if (!other.isAttackDodged(this, move))
            {
                var damage = CalculateDamage(other, move);
                other.TakeDamage(damage);

                if (!move.StatChangeName.Equals("none"))
                {
                    ApplyEffect(other, move);
                }
                if (move.Ailment != null)
                {
                    other.ReceiveAilment(move.Ailment);
                }
                return(CreateEffectiveMoveMessage(other, move));
            }
            else
            {
                return("|It missed!\n");
            }
        }
Exemplo n.º 3
0
 /// <summary>Damage mechanics when having hit an ICombative target. Overridable.</summary>
 virtual public void DamageObject(ICombative target)
 {
     target.TakeDamage(projectileDamage);
 }