Example #1
0
  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'});