2PlayerGame/detective-game/casegen/motives/ransom.js

39 lines
3.4 KiB
JavaScript
Raw Normal View History

function generate(ctx) {
const { r, add, addPuzzle, motiveEvs, victim, killer, herring } = ctx;
const motiveId = 'Викуп';
const relative = ctx.witnessFrom(ctx.citizens.filter(c => c.home !== victim.home));
motiveEvs.push(add({
id: 'mot_lair', side: 'field', at: { type: 'spot', building: 'pier', spot: 'елінг' },
title: 'Підготовлене лігво', tag: 'мотив',
detail: 'В елінгу за брезентом — матрац, ланцюг із замком, каністра води, відро. Усе нове, з цінниками. Хтось готувався тримати тут людину. Живою.',
gives: { motive: true }
}));
motiveEvs.push(add({
id: 'mot_supplies', side: 'field', at: { type: 'person', cid: ctx.witnessFrom(ctx.citizens.filter(c => c.workplace === 'shop')).id }, needsIdentity: true,
title: 'Свідчення з мінімаркету', tag: 'мотив',
detail: `«Дивна закупівля була днями: стяжки, скотч, брезент, ланцюг — усе разом. Хто? Не пригадаю обличчя, але платили карткою, це точно в терміналі лишилось.»`
}));
motiveEvs.push(add({
id: 'mot_card', side: 'analyst', at: { type: 'sys', sys: 'bank' }, q: { sys: 'bank', match: ['термінал', ctx.district.buildings.find(b => b.id === 'shop').name] }, requires: ['mot_supplies'],
title: 'Термінал мінімаркету', tag: 'мотив',
detail: `Транзакція по картці за ту закупівлю: ${killer.name}. Стяжки, скотч, брезент і ланцюг — за три дні до смерті жертви.`,
gives: { pointsTo: killer.id, motive: true }
}));
motiveEvs.push(add({
id: 'mot_ransom_note', side: 'field', at: { type: 'unit', unit: killer.home, slot: 'письмовий стіл' },
title: 'Чернетка вимоги викупу', tag: 'мотив',
detail: `Аркуш із друкованими літерами, тричі переписаний: «200 000 за життя. Поліція = труна.» Адресат — рідня жертви. Лист так і не знадобився: викрадення пішло не за планом.`,
gives: { motive: true }
}));
add({
id: 'mot_relative', side: 'field', at: { type: 'person', cid: relative.id }, needsIdentity: true,
title: `Розмова: ${relative.name}`, tag: 'мотив',
detail: `${ctx.g(relative, 'Далекий родич', 'Далека родичка')} жертви. «За день до того був дзвінок із прихованого номера. Мовчали. Дихали. Я ще пожартувала: „Може, викрасти хочуть?" Господи.»`
});
const recapWhy = `План був інший: викрасти живою людину, тримати в елінгу і взяти з рідні 200 000. Але жертва пручалася — і план скінчився в перші ж хвилини. Автор плану — ${killer.name}.`;
const herringLead = `«${herring.name} нещодавно в барі розпитува${ctx.g(herring, 'в', 'ла')}, хто в районі має гроші і хто живе сам. Тоді здалося балачкою.»`;
return { motiveId, recapWhy, herringLead };
}
module.exports = { generate };