private Monster AssignMonsterStats(Monster monster, CombatContext combatContext) { monster.BaseStats = _statsGenerator.GenerateStats(monster.Class); monster.SetActionSelector(_actionSelector); monster.SetCombatContext(combatContext); monster.CurrentHitPoints = monster.MaxHitPoints; monster.CurrentEnergy = monster.MaxEnergy; var bossMultiplier = monster.IsBoss ? 4 : 1; monster.Gold = monster.Level * _dice.Roll(3 * bossMultiplier, 6); monster.Experience = (monster.Level * _dice.Roll(2 * bossMultiplier, 6)); if (monster.IsBoss) { monster.Weapon = weaponFactory.CreateWeapon(monster.Level + 1, true); } else { if (_dice.Random(1, 6) == 1) { // 1/6 monsters will have a weapon monster.Weapon = weaponFactory.CreateWeapon(monster.Level, false); } } monster = Itemize(monster); return monster; }