Esempio n. 1
0
        public override UnitDamage AddDamage(FarmUnit target, float attackStartTime, bool addNext, bool forceRanged)
        {
            UnitDamage nextDamage;
            var        damage = target.IncomingDamage.Find(x => x.IsPredicted && x.Source.Equals(this));

            damage?.Delete();

            if (this.Unit.IsRanged)
            {
                damage     = new RangedDamage(this, target, attackStartTime, 138, 0.048f);
                nextDamage = new RangedDamage(damage);
            }
            else
            {
                damage     = new MeleeDamage(this, target, attackStartTime, 0.036f);
                nextDamage = new MeleeDamage(damage);
            }

            target.IncomingDamage.Add(damage);

            if (addNext)
            {
                target.IncomingDamage.Add(nextDamage);
            }

            return(damage);
        }
    public void Defend(MeleeDamage attack)
    {
        Console.WriteLine($"{Name} takes {attack}");

        Health -= attack.DamagePoints;
        Console.WriteLine($"{Name} HP is {Health}");
    }
Esempio n. 3
0
        public virtual UnitDamage AddDamage(FarmUnit target, float attackStartTime, bool addNext, bool forceRanged)
        {
            UnitDamage damage;

            if (this.Unit.IsRanged || forceRanged)
            {
                damage = new RangedDamage(this, target, attackStartTime, 0, 0.05f);
            }
            else
            {
                damage = new MeleeDamage(this, target, attackStartTime, 0.033f);
            }

            target.IncomingDamage.Add(damage);

            return(damage);
        }