Exemplo n.º 1
0
        private int GenerateEnemy(IMobPack pack, IRaceTemplate race, MobPackStrength strength)
        {
            var charFac = _model.CharacterFactory;

            var newEnemy = charFac.CreateRandomCharacter(1, race);

            switch (strength)
            {
            case MobPackStrength.Stronger:
                pack.AddEnemy(newEnemy, strength, 1.2d);
                return(40);

            case MobPackStrength.Challenging:
                pack.AddEnemy(newEnemy, strength, 1.5d);
                return(60);

            case MobPackStrength.Elite:
                pack.AddEnemy(newEnemy, strength, 2d);
                return(100);

            default:
                pack.AddEnemy(newEnemy, strength, 1.1d);
                return(25);
            }
        }
Exemplo n.º 2
0
        public ICharacter CreateRandomCharacter(int level = 1, IRaceTemplate race = null)
        {
            var newChar = new Character(GetRandomName());

            SharedGenerationFunction(newChar, level, race);
            return(newChar);
        }
Exemplo n.º 3
0
        public void SharedGenerationFunction(ICharacter newChar, int level, IRaceTemplate race = null)
        {
            var rTemplate   = race ?? _model.RaceFactory.GetRandomTemplate();
            var randomStats = Stats.GetRandomBaseStats();

            newChar.Race  = rTemplate.Name;
            newChar.Lore  = rTemplate.Description;
            newChar.Stats = randomStats;
            ApplyRaceTemplate(rTemplate, randomStats);
            newChar.LvlUp(_model.Party.Experience);
            var spells = new List <ISpell> {
                _spellFactory.GetSpell("Attack"), _spellFactory.GetSpell("Defend")
            };
            var spellCount = RHelper.Roll(2, 5);

            for (var i = 0; i < spellCount; ++i)
            {
                ISpell spell;

                do
                {
                    spell = _spellFactory.GetRandomSpell();
                } while (spells.Contains(spell));

                spells.Add(spell);
            }
            newChar.Spells = spells;
        }
Exemplo n.º 4
0
 private static void ApplyRaceTemplate(IRaceTemplate rTemplate, IStats stats)
 {
     for (var stat = Stat.HP; stat <= Stat.SIL; ++stat)
     {
         stats[stat][StatType.Base]   *= rTemplate.Stats[stat];
         stats[stat][StatType.Growth] *= rTemplate.Stats[stat];
     }
 }
Exemplo n.º 5
0
 public CharacterBuilder WithRace(IRaceTemplate race)
 {
     return(WithRaceId(race.Id));
 }