Add thrall table (but don't use it yet)
This commit is contained in:
parent
4a4c257182
commit
5785a27565
185
src/thralls.ts
Normal file
185
src/thralls.ts
Normal file
@ -0,0 +1,185 @@
|
||||
import {CheckData} from "./newmap.ts";
|
||||
import {
|
||||
bat0,
|
||||
bat1,
|
||||
charm0,
|
||||
charm1,
|
||||
lore0,
|
||||
lore1,
|
||||
party0,
|
||||
party1,
|
||||
stare0,
|
||||
stare1,
|
||||
stealth0,
|
||||
stealth1
|
||||
} from "./skills.ts";
|
||||
|
||||
export type Thrall = {
|
||||
id: number
|
||||
}
|
||||
|
||||
class ThrallsTable {
|
||||
#thralls: ThrallData[]
|
||||
|
||||
constructor() {
|
||||
this.#thralls = [];
|
||||
}
|
||||
|
||||
add(data: ThrallData) {
|
||||
let id = this.#thralls.length;
|
||||
this.#thralls.push(data);
|
||||
return {id};
|
||||
}
|
||||
|
||||
get(thrall: Thrall): ThrallData {
|
||||
return this.#thralls[thrall.id]
|
||||
}
|
||||
}
|
||||
export type ThrallData = {
|
||||
label: string
|
||||
initialCheck: CheckData
|
||||
}
|
||||
|
||||
let table = new ThrallsTable();
|
||||
|
||||
// Thralls are labeled by which zone's item they like
|
||||
// Their initial check is, generally, the initial check of the
|
||||
// thrall n-2 or thrall n+1 (ex: Party's initial check is Stealth
|
||||
// or Lore)
|
||||
export let thrallParty = table.add({
|
||||
label: "Garrett",
|
||||
initialCheck: {
|
||||
label: "That's Garrett. He plays poker, but he goes to the zoo to cool down after he's lost a lot of chips. His ice cream cone has melted.",
|
||||
options: [
|
||||
{
|
||||
skill: () => stealth1, // Disguise
|
||||
locked: "\"What's wrong, Garrett?\"",
|
||||
failure: "\"If you're not a large pile of money, don't talk to me.\"\n\nHe sobs into his ice cream.",
|
||||
unlockable: "*look like a large pile of money*",
|
||||
success: "He scoops you eagerly into his wallet.",
|
||||
},
|
||||
{
|
||||
skill: () => lore0, // Respect Elders
|
||||
locked: "TODO",
|
||||
failure: "TODO",
|
||||
unlockable: "TODO",
|
||||
success: "TODO",
|
||||
},
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
export let thrallLore = table.add({
|
||||
label: "Lupin",
|
||||
initialCheck: {
|
||||
label: "That's Lupin. He's a Wolf Scout, but hardcore about it. He's a packleader.",
|
||||
options: [
|
||||
{
|
||||
skill: () => stare1, // Hypnotize
|
||||
locked: "TODO",
|
||||
failure: "TODO",
|
||||
unlockable: "\"I'm a wolf too.\"",
|
||||
success: "He blinks a few times under your gaze -- then touches your muzzle -- then his own -- then arfs submissively.",
|
||||
},
|
||||
{
|
||||
skill: () => bat0, // Screech
|
||||
locked: "TODO",
|
||||
failure: "TODO",
|
||||
unlockable: "\"Wolf Scouts AWOO!\"",
|
||||
success: "Taken aback at how well you know the cheer, he freezes -- then joins you with a similar howl.",
|
||||
},
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
export let thrallBat = table.add({
|
||||
label: "Monica",
|
||||
initialCheck: {
|
||||
label: "That's Monica. You've seen her cook on TV! Looks like she's enjoying a kiwi flan.",
|
||||
options: [
|
||||
{
|
||||
skill: () => party1, // Rave
|
||||
locked: "TODO",
|
||||
failure: "TODO",
|
||||
unlockable: "Slide her a sachet of cocaine.",
|
||||
success: "\"No way. Ketamine if you've got it.\" You do.\n\n(It's not effective on vampires.)",
|
||||
},
|
||||
{
|
||||
skill: () => charm0, // Flatter
|
||||
locked: "TODO",
|
||||
failure: "TODO",
|
||||
unlockable: "\"You're the best cook ever!\"",
|
||||
success: "\"Settle down!\" she says, lowering your volume with a sweep of her hand. \"It's true though.\"",
|
||||
},
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
export let thrallCharm = table.add({
|
||||
label: "Renfield",
|
||||
initialCheck: {
|
||||
label: "Doesn't this guy seem a little creepy? His nametag says Renfield. Not sure you should trust him...",
|
||||
options: [
|
||||
{
|
||||
skill: () => lore1, // Brick by Brick
|
||||
locked: "TODO",
|
||||
failure: "TODO",
|
||||
unlockable: "\"Wanna see my crypt?\"",
|
||||
success: "He salivates -- swallowing hard before he manages, in response to the prospect, a firm \"YES!\"",
|
||||
},
|
||||
{
|
||||
skill: () => stealth0, // Be Quiet
|
||||
locked: "TODO",
|
||||
failure: "TODO",
|
||||
unlockable: "Say absolutely nothing.",
|
||||
success: "His mind overflows with fantasy, and when you let a glint of fang peek through, he claps his arms affectionately around your supercold torso.",
|
||||
},
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
export let thrallStealth = table.add({
|
||||
label: "Narthyss",
|
||||
initialCheck: {
|
||||
label: "Narthyss (dragon, heiress) actually owns the club, so she probably wouldn't talk to you... Would she?",
|
||||
options: [
|
||||
{
|
||||
skill: () => bat1, // Flap
|
||||
locked: "TODO",
|
||||
failure: "TODO",
|
||||
unlockable: "Hang upside-down and offer her a martini.",
|
||||
success: "\"You're ADORABLE!\" She's yours forever.",
|
||||
},
|
||||
{
|
||||
skill: () => stare0, // Dazzle
|
||||
locked: "TODO",
|
||||
failure: "TODO",
|
||||
unlockable: "TODO",
|
||||
success: "TODO",
|
||||
},
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
export let thrallStare = table.add({
|
||||
label: "Ridley",
|
||||
initialCheck: {
|
||||
label: "Ridley is the library's catalogue system. It can give you an incorrect answer to any question. (It has a couple gears loose.)",
|
||||
options: [
|
||||
{
|
||||
skill: () => charm1, // Befriend
|
||||
locked: "\"How many Rs in 'strawberry'?\"",
|
||||
failure: "It generates an image of a sad fruit shrugging in a muddy plantation.",
|
||||
unlockable: "TODO",
|
||||
success: "TODO",
|
||||
},
|
||||
{
|
||||
skill: () => party0, // Chug
|
||||
locked: "TODO",
|
||||
failure: "TODO",
|
||||
unlockable: "Drink a whole bottle of ink.",
|
||||
success: "TODO",
|
||||
},
|
||||
]
|
||||
}
|
||||
})
|
Loading…
x
Reference in New Issue
Block a user