Exemple #1
0
        /// <summary>
        /// Increase a statistic
        /// </summary>
        /// <param name="ganger">Ganger</param>
        /// <param name="stat">Statistic</param>
        /// <param name="interval">Interval</param>
        /// <returns>Updated ganger</returns>
        public Ganger IncreaseStat(Ganger ganger, GangerStatistics stat, int interval = 1)
        {
            switch (stat)
            {
            case GangerStatistics.Move:
                ganger.Move += interval;
                break;

            case GangerStatistics.WeaponSkill:
                ganger.WeaponSkill += interval;
                break;

            case GangerStatistics.BallisticSkill:
                ganger.BallisticSkill += interval;
                break;

            case GangerStatistics.Strength:
                ganger.Strength += interval;
                break;

            case GangerStatistics.Toughness:
                ganger.Toughness += interval;
                break;

            case GangerStatistics.Attack:
                ganger.Attack += interval;
                break;

            case GangerStatistics.Wounds:
                ganger.Wounds += interval;
                break;

            case GangerStatistics.Initiative:
                ganger.Initiative += interval;
                break;

            case GangerStatistics.Leadership:
                ganger.Leadership += interval;
                break;

            default:
                break;
            }

            UpdateGanger(ganger);
            return(ganger);
        }
Exemple #2
0
        public void IncreaseStatTest(GangerStatistics stat)
        {
            var ganger = new Ganger()
            {
                Move           = 1,
                WeaponSkill    = 1,
                BallisticSkill = 1,
                Strength       = 1,
                Toughness      = 1,
                Wounds         = 1,
                Attack         = 1,
                Leadership     = 1,
                Initiative     = 1,
            };

            var updated = _gangerManager.IncreaseStat(ganger, stat);

            var properties = updated.GetType().GetProperties();

            foreach (var prop in properties)
            {
                if (!Enum.TryParse <GangerStatistics>(prop.Name, out var result))
                {
                    continue;
                }

                if (prop.Name == Enum.GetName(typeof(GangerStatistics), stat))
                {
                    Assert.AreEqual(2, prop.GetValue(updated));
                }
                else
                {
                    Assert.AreEqual(1, prop.GetValue(updated));
                }
            }
        }
Exemple #3
0
        private GangerLevelUpReport DoAdvanceRoll(Ganger ganger, GangHouse house)
        {
            GangerStatistics stat = 0;
            int roll           = DiceRoller.RollDice(6, 2);
            int statToIncrease = DiceRoller.RollDie();

            switch (roll)
            {
            case 2:
            case 12:
                return(new GangerLevelUpReport()
                {
                    Description = "Pick any skill",
                    GangerName = ganger.Name,
                    NewSkillFromCategory = new[] { SkillType.AGILITY, SkillType.COMBAT, SkillType.FEROCITY, SkillType.MUSCLE, SkillType.SHOOTING, SkillType.STEALTH, SkillType.TECHNO }
                });

            case 3:
            case 4:
            case 10:
            case 11:
                return(new GangerLevelUpReport()
                {
                    Description = "New gang skill",
                    GangerName = ganger.Name,
                    NewSkillFromCategory = GetGangSkill(ganger.GangerType, house)
                });

            case 5:
                stat = (statToIncrease <= 3) ? GangerStatistics.STRENGTH : GangerStatistics.ATTACK;
                _gangerFactory.IncreaseStat(ganger, stat, null);
                return(new GangerLevelUpReport()
                {
                    Description = Enum.GetName(typeof(GangerStatistics), stat) + " increased",
                    GangerName = ganger.Name,
                    NewSkillFromCategory = null
                });

            case 6:
            case 8:
                stat = (statToIncrease <= 3) ? GangerStatistics.WEAPON_SKILL : GangerStatistics.BALLISTIC_SKILL;
                _gangerFactory.IncreaseStat(ganger, stat, null);
                return(new GangerLevelUpReport()
                {
                    Description = Enum.GetName(typeof(GangerStatistics), stat) + " increased",
                    GangerName = ganger.Name,
                    NewSkillFromCategory = null
                });

            case 7:
                stat = (statToIncrease <= 3) ? GangerStatistics.INITIATIVE : GangerStatistics.LEADERSHIP;
                _gangerFactory.IncreaseStat(ganger, stat, null);
                return(new GangerLevelUpReport()
                {
                    Description = Enum.GetName(typeof(GangerStatistics), stat) + " increased",
                    GangerName = ganger.Name,
                    NewSkillFromCategory = null
                });

            case 9:
                stat = (statToIncrease <= 3) ? GangerStatistics.WOUNDS : GangerStatistics.ATTACK;
                _gangerFactory.IncreaseStat(ganger, stat, null);
                return(new GangerLevelUpReport()
                {
                    Description = Enum.GetName(typeof(GangerStatistics), stat) + " increased",
                    GangerName = ganger.Name,
                    NewSkillFromCategory = null
                });
            }
            return(null);
        }
Exemple #4
0
        /// <summary>
        /// Do an advance roll
        /// </summary>
        /// <param name="ganger">Ganger advancing</param>
        /// <param name="house">Ganger's house</param>
        /// <returns>Ganger level up report</returns>
        public GangerLevelUpReport DoAdvanceRoll(Ganger ganger, GangHouse house)
        {
            GangerStatistics stat = 0;
            int roll           = _diceRoller.RollDice(6, 2);
            int statToIncrease = _diceRoller.RollDie();

            switch (roll)
            {
            case 2:
            case 12:
                var advancementId = _gangerManager.RegisterGangerAdvancement(ganger.GangerId);
                return(new GangerLevelUpReport()
                {
                    Description = "Pick any skill",
                    GangerName = ganger.Name,
                    GangerId = ganger.GangerId,
                    NewSkillFromCategory = new[] { SkillType.Agility, SkillType.Combat, SkillType.Ferocity, SkillType.Muscle, SkillType.Shooting, SkillType.Stealth, SkillType.Techno },
                    AdvancementId = advancementId,
                });

            case 3:
            case 4:
            case 10:
            case 11:
                advancementId = _gangerManager.RegisterGangerAdvancement(ganger.GangerId);
                return(new GangerLevelUpReport()
                {
                    Description = "New gang skill",
                    GangerName = ganger.Name,
                    GangerId = ganger.GangerId,
                    NewSkillFromCategory = GetGangSkill(ganger.GangerType, house),
                    AdvancementId = advancementId,
                });

            case 5:
                stat = (statToIncrease <= 3) ? GangerStatistics.Strength : GangerStatistics.Attack;
                _gangerManager.IncreaseStat(ganger, stat);
                return(new GangerLevelUpReport()
                {
                    Description = Enum.GetName(typeof(GangerStatistics), stat) + " increased",
                    GangerName = ganger.Name,
                    GangerId = ganger.GangerId,
                    NewSkillFromCategory = null,
                });

            case 6:
            case 8:
                stat = (statToIncrease <= 3) ? GangerStatistics.WeaponSkill : GangerStatistics.BallisticSkill;
                _gangerManager.IncreaseStat(ganger, stat);
                return(new GangerLevelUpReport()
                {
                    Description = Enum.GetName(typeof(GangerStatistics), stat) + " increased",
                    GangerName = ganger.Name,
                    GangerId = ganger.GangerId,
                    NewSkillFromCategory = null,
                });

            case 7:
                stat = (statToIncrease <= 3) ? GangerStatistics.Initiative : GangerStatistics.Leadership;
                _gangerManager.IncreaseStat(ganger, stat);
                return(new GangerLevelUpReport()
                {
                    Description = Enum.GetName(typeof(GangerStatistics), stat) + " increased",
                    GangerName = ganger.Name,
                    GangerId = ganger.GangerId,
                    NewSkillFromCategory = null,
                });

            case 9:
                stat = (statToIncrease <= 3) ? GangerStatistics.Wounds : GangerStatistics.Attack;
                _gangerManager.IncreaseStat(ganger, stat);
                return(new GangerLevelUpReport()
                {
                    Description = Enum.GetName(typeof(GangerStatistics), stat) + " increased",
                    GangerName = ganger.Name,
                    GangerId = ganger.GangerId,
                    NewSkillFromCategory = null,
                });
            }

            return(null);
        }