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); }
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"); } }
/// <summary>Damage mechanics when having hit an ICombative target. Overridable.</summary> virtual public void DamageObject(ICombative target) { target.TakeDamage(projectileDamage); }