コード例 #1
0
 public static void Heal(this Charakter charakter, int amount)
 {
     if (charakter.CurrentHitPoints + amount > charakter.MaxHitPoints)
     {
         Console.WriteLine(String.Format("{0} is healed by {1} to a maximum of {2} hit-points.", charakter.Name, charakter.MaxHitPoints - amount, charakter.MaxHitPoints));
         charakter.CurrentHitPoints = charakter.MaxHitPoints;
     }
     Console.WriteLine(String.Format("{0} is healed by {1} to {2} hit-points.", charakter.Name, amount, charakter.CurrentHitPoints));
     charakter.CurrentHitPoints = charakter.CurrentHitPoints + amount;
 }
コード例 #2
0
        internal static bool checkForHit(this Charakter charakter, int ac)
        {
            int hitRoll = calcHitRoll(charakter);

            if (hitRoll + charakter.AttackBonus >= ac)
            {
                return(true);
            }
            return(false);
        }
コード例 #3
0
 internal static int calcHitRoll(this Charakter charakter)
 {
     if (charakter.HasAdvantage())
     {
         return(RollHandler.RollAdvantage());
     }
     if (charakter.HasDisAdvantage())
     {
         return(RollHandler.RollDisadvantage());
     }
     return(DiceSimulator.RollD20());
 }
コード例 #4
0
 internal static void AttackTarget(this Charakter charakter, Charakter target)
 {
     if (ActionHandler.CheckForAttack(charakter))
     {
         if (checkForHit(charakter, target.ArmourClass))
         {
             DealDamage(charakter, target, charakter.Damage);
         }
         else
         {
             Console.WriteLine(String.Format("{0} missed with his attack.", charakter.Name));
         }
     }
 }
コード例 #5
0
        public Round(List <Charakter> particioners)
        {
            Count = 1;
            Console.WriteLine(String.Format("Round {0} has started", Count));
            Particioners = new List <CharakterOrder>(particioners.Capacity);
            foreach (Charakter charakter in particioners)
            {
                Particioners.Add(new CharakterOrder(charakter));
            }
            Particioners.Sort(new GFG());
            RoundHandler.ShowParticioners(this);

            Charakter subscribedObject = this.PickCharakter();

            subscribedObject.Event += ProveActionEconomy;
        }
コード例 #6
0
        internal static void DealDamage(this Charakter charakter, Charakter target, int amount)
        {
            var damage = target.TemporaryHitPoints - amount;

            if (damage < 0)
            {
                target.CurrentHitPoints = target.CurrentHitPoints + damage;
                Console.WriteLine(String.Format("{0} deals {1} points damage to {2}.", charakter.Name, amount, target.Name));
            }
            if (damage > 0)
            {
                target.TemporaryHitPoints = damage;
                Console.WriteLine(String.Format("{0} deals {1} points damage to {2}.", charakter.Name, amount, target.Name));
            }
            if (target.CurrentHitPoints <= 0)
            {
                Console.WriteLine(String.Format("{0} dropped below 0 HitPoints! {0} is unconcious.", target.Name));
            }
        }
コード例 #7
0
        private static void TakeDamage(this Charakter charakter, int amount)
        {
            var damage = charakter.TemporaryHitPoints - amount;

            if (damage < 0)
            {
                charakter.CurrentHitPoints = charakter.CurrentHitPoints + damage;
                Console.WriteLine(String.Format("{0} takes {1} points damage.", charakter.Name, amount));
            }
            if (damage > 0)
            {
                charakter.TemporaryHitPoints = damage;
                Console.WriteLine(String.Format("{0} takes {1} points damage. {0} has {2} temporary hit points left.", charakter.Name, amount, charakter.TemporaryHitPoints));
            }
            if (charakter.CurrentHitPoints <= 0)
            {
                Console.WriteLine(String.Format("{0} dropped below 0 HitPoints! {0} is unconcious.", charakter.Name));
            }
        }
コード例 #8
0
 public static void GetTemporaryHitPoints(this Charakter charakter, int amount)
 {
     Console.WriteLine(String.Format("{0} has {1} temporary hit-points.", charakter.Name, charakter.TemporaryHitPoints));
     charakter.TemporaryHitPoints = amount;
 }
コード例 #9
0
        public CharakterOrder(Charakter charakter)
        {
            Initiative = DiceSimulator.RollD20() + charakter.Initiative;

            Charakter = charakter;
        }
コード例 #10
0
 internal static void Move(this Charakter charakter, int amount)
 {
     MovementHandler.CheckMovementLeft(charakter, amount);
 }