constructor(maxPlayers: number, players: Player.Player[], gameConfig: GameConfig = { seed: Date.now() }) { super(); this.maxPlayers = maxPlayers; this.map = gameConfig.map ? gameConfig.map : TEST_PARSE_RESULT; this.seed = gameConfig.seed; this.rng = Chance(this.seed); if (gameConfig.numModifiers) { this.minNumModifiers = gameConfig.numModifiers.minimum; this.maxNumModifiers = gameConfig.numModifiers.maximum; } else { this.minNumModifiers = 0; this.maxNumModifiers = Character.MAX_NUM_MODIFIERS; } this.players = players.map(player => this.convertPlayer(player)); // TODO: populate this.beasts = []; this.players.forEach((player) => { // reveal the area around the starting room if (Inventory.hasItem(player.character.inventory, 'Map')) { reveal(player.character.map, Map.getCell(this.map, this.map.startingPosition)); } }); this.turnNumber = 0; this.hasEnded = false; }
declare namespace Chance { interface Chance { time(): string; } } chance.mixin({ time() { const h = chance.hour({ twentyfour: true }); const m = chance.minute(); return `${h}:${m}`; }, }); const chanceConstructedWithSeed100 = new Chance(100); const chanceCalledWithSeed100 = Chance(); const chanceConstructedWithStringSeed = new Chance("test"); // Test new added typed functions let letter = chance.letter(); letter = chance.letter({opt: 'abc'}); let cf = chance.cf(); cf = chance.cf({opt: 'abc'}); let animal = chance.animal(); animal = chance.animal({opt: 'abc'}); let avatar = chance.avatar(); avatar = chance.avatar({opt: 'abc'});