コード例 #1
0
ファイル: Combat.cs プロジェクト: vvoland/TextRPG
 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();
 }
コード例 #2
0
ファイル: Combat.cs プロジェクト: vvoland/TextRPG
        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
                });
            }
        }
コード例 #3
0
ファイル: Combat.cs プロジェクト: vvoland/TextRPG
        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);
        }