Exemple #1
0
        public override void Visit(CreatureInstance defender)
        {
            var damage      = attacker.Damage - (defender.Breed as Creature).Protection;
            var damageDealt = Math.Min(damage, defender.CurrentHealth);

            defender.CurrentHealth -= damageDealt;

            var creatureSymbol = new Symbol("Creature", TypeSystem.Instance["CreatureInstance"], attacker.Id);
            var damageSymbol   = new Symbol("Damage", TypeSystem.Instance["Number"], damageDealt.ToString());

            ExecutionVisitor.ExecuteRunBlock(defender, "Attacked", new List <Symbol>()
            {
                creatureSymbol, damageSymbol
            });

            success = true;
        }
Exemple #2
0
 public MeleeAttackVisitor(CreatureInstance attacker)
 {
     this.attacker = attacker;
 }