UNPKG

la-cosa-nostra

Version:

A Mafia bot designed to run in Discord - beware the traitors and the lies!

185 lines (142 loc) 6.2 kB
var logger = process.logger; var lcn = require("../../../source/lcn.js"); var configurations = { "C": { "1": ["one_shot_cop"], "2": ["cop"], "3": ["cop", "one_shot_cop"], "4": ["cop", "cop"], "5": ["cop", "cop", "one_shot_cop"], "6": ["cop", "cop", "cop"], "7": ["cop", "cop", "cop", "one_shot_cop"], "8": ["cop", "cop", "cop", "cop"], "9": ["cop", "cop", "cop", "cop", "one_shot_cop"], "10": ["cop", "cop", "cop", "cop", "cop"] }, "D": { "1": ["doctor"], "2": ["doctor", "one_shot_doctor"], "3": ["doctor", "doctor"], "4": ["doctor", "doctor", "one_shot_doctor"], "5": ["doctor", "doctor", "doctor"], "6": ["doctor", "doctor", "doctor", "one_shot_doctor"], "7": ["doctor", "doctor", "doctor", "doctor"], "8": ["doctor", "doctor", "doctor", "doctor", "one_shot_doctor"], "9": ["doctor", "doctor", "doctor", "doctor", "doctor"] }, "V": { "1": ["one_shot_vigilante"], "2": ["vigilante"], "3": ["vigilante", "one_shot_vigilante"], "4": ["vigilante", "vigilante"], "5": ["vigilante", "vigilante", "one_shot_vigilante"], "6": ["vigilante", "vigilante", "vigilante"], "7": ["vigilante", "vigilante", "vigilante", "one_shot_vigilante"], "8": ["vigilante", "vigilante", "vigilante", "vigilante"], "9": ["vigilante", "vigilante", "vigilante", "vigilante", "one_shot_vigilante"] }, "M": { "1": ["innocent_child"], "2": ["mason", "mason"], "3": ["mason", "mason", "innocent_child"], "4": ["mason", "mason", "mason"], "5": ["mason", "mason", "mason", "mason"], "6": ["mason", "mason", "mason", "mason", "mason"], "7": ["mason", "mason", "mason", "mason", "mason", "mason"], "8": ["mason", "mason", "mason", "mason", "mason", "mason", "mason"], "9": ["mason", "mason", "mason", "mason", "mason", "mason", "mason", "mason"] }, "W": { "1": ["one_shot_tracker"], "2": ["one_shot_tracker", "one_shot_watcher"], "3": ["tracker", "one_shot_watcher"], "4": ["one_shot_tracker", "watcher"], "5": ["tracker", "watcher"], "6": ["one_shot_tracker", "tracker", "watcher"], "7": ["one_shot_tracker", "one_shot_watcher", "tracker", "watcher"], "8": ["one_shot_watcher", "tracker", "tracker", "watcher"], "9": ["tracker", "tracker", "watcher", "watcher"] }, "B": { "1": ["roleblocker"], "2": ["roleblocker", "one_shot_roleblocker"], "3": ["roleblocker", "roleblocker"], "4": ["roleblocker", "roleblocker", "one_shot_roleblocker"], "5": ["roleblocker", "roleblocker", "roleblocker"], "6": ["roleblocker", "roleblocker", "roleblocker", "one_shot_roleblocker"], "7": ["roleblocker", "roleblocker", "roleblocker", "roleblocker"], "8": ["roleblocker", "roleblocker", "roleblocker", "roleblocker", "one_shot_roleblocker"], "9": ["roleblocker", "roleblocker", "roleblocker", "roleblocker", "roleblocker"] }, "T": { "0": ["mafia_goon", "mafia_goon", "mafia_godfather", "mafia_roleblocker", "mafia_one_shot_janitor"], "1": ["mafia_goon", "mafia_goon", "mafia_godfather", "mafia_roleblocker", "mafia_one_shot_janitor", "serial_killer"], "2": ["mafia_goon", "mafia_goon", "mafia_goon", "mafia_godfather", "mafia_roleblocker"], "3": ["mafia_goon", "mafia_goon", "mafia_goon", "mafia_godfather", "mafia_roleblocker", "serial_killer"], "4": ["mafia_goon", "mafia_goon", "mafia_goon", "mafia_godfather", "mafia_one_shot_janitor"], "5": ["mafia_goon", "mafia_goon", "mafia_goon", "mafia_godfather", "mafia_one_shot_janitor", "serial_killer"], "6": ["mafia_goon", "mafia_goon", "mafia_goon", "mafia_goon", "mafia_godfather"], "7": ["mafia_goon", "mafia_goon", "mafia_goon", "mafia_goon", "mafia_godfather", "serial_killer"], "8": ["mafia_goon", "mafia_goon", "mafia_goon", "mafia_goon", "mafia_goon"], "9": ["mafia_goon", "mafia_goon", "mafia_goon", "mafia_goon", "mafia_goon", "serial_killer"], "10": ["mafia_goon", "mafia_goon", "mafia_goon", "mafia_goon"], "11": ["mafia_goon", "mafia_goon", "mafia_goon", "mafia_goon", "serial_killer"] } }; module.exports = function (playing_config) { if (playing_config.roles) { logger.log(2, "[Primrose C9++] Not running setup randomiser as roles have been defined."); var override = {flavour: "primrose-c9++"}; return lcn.auxils.objectOverride(playing_config, override); }; var numbers = new Array(); var letters = new Array(); for (var i = 0; i < 11; i++) { var number = Math.ceil(lcn.auxils.cryptoRandom(100, 50) * 110); numbers.push(number); switch (true) { case (number <= 40): letters.push("T"); break; case (number > 40 && number <= 50): letters.push("W"); break; case (number > 50 && number <= 65): letters.push("C"); break; case (number > 65 && number <= 75): letters.push("D"); break; case (number > 75 && number <= 85): letters.push("V"); break; case (number > 85 && number <= 95): letters.push("M"); break; case (number > 95): letters.push("B"); break; }; }; letters.sort(); // Enumerate setup /* var roles = { mafia_goon: {identifier: "mafia_goon", attributes: [{identifier: "mafia_factionkill"}]}, mafia_roleblocker: {identifier: "mafia_roleblocker", attributes: [{identifier: "mafia_factionkill"}]}, mafia_godfather: {identifier: "mafia_godfather"} }; */ var setup = new Array(); for (var key in configurations) { // Assign var number = letters.filter(x => x === key).length; var addition = configurations[key][number.toString()] ? configurations[key][number.toString()] : new Array(); setup = setup.concat(addition); }; var townies = new Array(21 - setup.length).fill("vanilla_townie"); setup = setup.concat(townies); logger.log(2, "[Expanded Primrose C9++] Running setup: %s; rolled: %s", letters.join(""), numbers.join(", ")); var override = {roles: setup, flavour: "primrose-c9++", generated: {numbers: numbers, letters: letters}}; return lcn.auxils.objectOverride(playing_config, override); };