UNPKG

werewolf-core

Version:

Are you a WEREWOLF?

97 lines (96 loc) 4.17 kB
"use strict"; var events = require('../event'); var priority = require('../priority'); var count = require('../lib/count'); var choice_1 = require('../lib/choice'); var werewolfevent = require('./werewolf.event'); var seerevent = require('./seer.event'); var mediumevent = require('./medium.event'); var ROLE_WEREWOLF = 'core.werewolf'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = { role: ROLE_WEREWOLF, playerProducers: (_a = {}, _a[ROLE_WEREWOLF] = (_b = {}, _b[events.EVENT_QUERY_COUNT] = [{ priority: priority.QUERY_RESULT_INIT, handler: function (_a) { var players = _a.players, event = _a.event; var event2 = event; var pl = players.get(event2.on); if (pl && pl.type === ROLE_WEREWOLF) { event2.count = count.COUNT_WEREWOLF; } }, }], _b[events.EVENT_PHASE_NIGHT] = [{ priority: priority.MIDNIGHT_STANDARD, handler: function (_a) { var event = _a.event, player = _a.player, players = _a.players, runner = _a.runner; runner.addEvent(events.initOpenChoiceEvent({ on: player.id, kind: werewolfevent.CHOICE_WEREWOLF, options: choice_1.alivePlayerOptions(players), })); }, }], _b[events.EVENT_CHOICE] = [{ priority: priority.CHOICE_REACTION, handler: function (_a) { var event = _a.event, players = _a.players, effects = _a.effects, field = _a.field, runner = _a.runner; var event2 = event; if (event2.prevented) { return; } var ef = effects.get(event2.choice_id); if (ef != null && ef.choice_kind === werewolfevent.CHOICE_WEREWOLF) { runner.addEvent(werewolfevent.initJobWerewolfEvent({ from: event2.from, to: event2.value, })); } }, }], _b[seerevent.EVENT_QUERY_SEER] = seerevent.seerEffect(ROLE_WEREWOLF, seerevent.SEER_RESULT_WEREWOLF), _b[mediumevent.EVENT_QUERY_MEDIUM] = mediumevent.mediumEffect(ROLE_WEREWOLF, mediumevent.MEDIUM_RESULT_WEREWOLF), _b ), _a ), actions: (_c = {}, _c[werewolfevent.EVENT_JOB_WEREWOLF] = function (_a) { var field = _a.field, effects = _a.effects, event = _a.event; var _b = event, from = _b.from, to = _b.to; if (field.werewolfRemains > 0) { field.werewolfRemains--; field.werewolfTarget.push({ from: from, to: to, }); if (field.werewolfRemains <= 0) { var rmvs = []; for (var _i = 0, _c = effects.asArray(); _i < _c.length; _i++) { var e = _c[_i]; if (e.type === werewolfevent.CHOICE_WEREWOLF) { rmvs.push(e.id); } } for (var _d = 0, rmvs_1 = rmvs; _d < rmvs_1.length; _d++) { var id = rmvs_1[_d]; effects.removeById(id); } } else { for (var _e = 0, _f = effects.asArray(); _e < _f.length; _e++) { var e = _f[_e]; if (e.type === werewolfevent.CHOICE_WEREWOLF) { e.value = undefined; } } } } }, _c ), }; var _a, _b, _c;