werewolf-core
Version:
Are you a WEREWOLF?
97 lines (96 loc) • 4.17 kB
JavaScript
;
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;