Esempio n. 1
0
 public Combat(PlayerEntity player, IEnumerable <CombatActor> enemies)
 {
     Player      = player;
     _Actors     = enemies.ToList();
     PlayerActor = new CombatActor(player, player.Stats, player.Damageable, player);
     _Actors.Add(PlayerActor);
     InitiativeStatsVisitor = new CombatInitiativeStatsVisitor();
     SetTargets();
 }
Esempio n. 2
0
        private void Attack(CombatActor actor)
        {
            var dmg = actor.DamageDealer.Damage();

            if (actor.Target != null)
            {
                actor.Target.Damageable.ReceiveDamage(ref dmg);
                OnAction(new CombatAction
                {
                    Type   = CombatActionType.Attack,
                    Actor  = actor,
                    Target = actor.Target,
                    Damage = dmg
                });
            }
        }
Esempio n. 3
0
        private bool AttemptRetreat(CombatActor actor)
        {
            int initiative = InitiativeStatsVisitor.Calculate(actor.Stats);
            int chance     = 20 + initiative;
            var rng        = new Random();

            FinishedByRetreat = rng.Next(100) < chance;
            OnAction(new CombatAction
            {
                Actor  = actor,
                Target = actor,
                Damage = null,
                Type   = FinishedByRetreat ? CombatActionType.RetreatSuccess : CombatActionType.RetreatFail
            });

            return(FinishedByRetreat);
        }