Files
fog/libs/encounter-library/src/lib/encounters.json

606 lines
22 KiB
JSON
Raw Normal View History

{
"version": "1.2.0",
"encounters": [
{
"key": "generator_repair",
"baseProbability": 0.55,
"tags": ["generator", "objectives"],
"tier": 1,
"flavorSuccess": [
"It catches. I step back before I let myself feel anything.",
"Sparks, then hum. I keep moving.",
"The last wire clicks. One down.",
"It's running. I don't stop to celebrate.",
"My hands stop shaking when the engine turns over.",
"{{ally}} holds the wire steady. It catches.",
"The gauge climbs. I'm already looking for the next one.",
"Takes too long. But it works.",
"Done. The light helps more than I expected.",
"{{ally}} calls out. I make the connection. Done."
],
"flavorFailure": [
"Something moves in the fog. I pull back.",
"A sound behind me. I leave the gen and run.",
"Too loud. I made it too loud.",
"The wiring's wrong. I can't fix it from here.",
"I miscalculate. The whole thing sparks wrong.",
"{{ally}} had to break away. I lose the progress.",
"My hand slips. The noise is too much.",
"A shadow on the gen. I'm already gone.",
"Not tonight. Not this one.",
"{{ally}} pulls back — something's close. I follow."
]
},
{
"key": "totem_cleanse",
"baseProbability": 0.50,
"tags": ["totem", "altruistic", "objectives"],
"tier": 1,
"flavorSuccess": [
"It breaks. Something screams — not here, but somewhere.",
"The bones scatter. I feel the curse lift.",
"One hex gone. The fog feels slightly less wrong.",
"It comes apart like it was never solid.",
"I don't understand what I just broke. I'm glad I broke it.",
"{{ally}} spots it first. I make short work of it.",
"The skull gives. Whatever watched through it is gone.",
"{{ally}} watches my back. The cleanse is fast.",
"It was waiting to fall. I let it.",
"One less curse."
],
"flavorFailure": [
"It pulls back. I can't finish this.",
"Something drives me away before it's done.",
"The hex holds. The air gets thicker.",
"I reach for it and stop. Something warns me off.",
"The totem hums. I'm not strong enough. Not yet.",
"{{ally}} calls wrong. The totem burns brighter.",
"The bones won't break. Wrong approach.",
"{{ally}} needs me. I leave the totem standing.",
"Halfway through. Then something changes. I run.",
"The hex endures. I'll find another way."
]
},
{
"key": "chest_search",
"baseProbability": 0.45,
"tags": ["chest", "item"],
"tier": 1,
"flavorSuccess": [
"A medkit. Worn, but real.",
"A flashlight, still charged. I pocket it.",
"Something useful. I don't ask how it got here.",
"Not empty. That's not nothing.",
"A toolbox, buried under rot. I'll take it.",
"Half a medkit. Better than nothing.",
"The chest creaks open. I take what's there.",
"Lucky.",
"The fog gives sometimes. Not often.",
"Supplies. They won't last, but they'll help."
],
"flavorFailure": [
"Empty. Just rust and old regret.",
"Nothing worth taking.",
"A sound cuts the search short.",
"Someone else was here first.",
"Locked. I don't have time to force it.",
"Debris. Nothing more.",
"Whatever was here is long gone.",
"Nothing. Time I don't have, wasted.",
"The trial takes without giving.",
"Move on."
]
},
{
"key": "hook_escape",
"baseProbability": 0.40,
"tags": ["hook", "survival"],
"tier": 2,
"flavorSuccess": [
"I don't know how. I don't care. I'm off.",
"Arms burning. The hook releases. Move.",
"Every instinct says give up. I don't.",
"It gives. I fall. I run.",
"Blood and effort. The barb comes free.",
"{{ally}}'s voice from out there somewhere. I fight harder. I'm free.",
"Will wins. I'm off the hook.",
"A fraction of movement — and it releases.",
"I stop thinking and just push. It works.",
"{{ally}} is coming. I hold on long enough. Then I'm free."
],
"flavorFailure": [
"The struggle costs everything. The hook doesn't move.",
"Every movement makes it worse. I go still.",
"The fog presses in. I'm still up here.",
"I try. The chains don't.",
"No leverage. Not this time.",
"{{ally}} can't get to me. Still stuck.",
"It's designed for exactly this. It holds.",
"Panic and pain in equal measure. Neither helps.",
"The barb shifts but doesn't release.",
"I lose this one."
]
},
{
"key": "exit_gate",
"baseProbability": 0.50,
"tags": ["exit", "objectives"],
"tier": 2,
"flavorSuccess": [
"The gate grinds open. Cold air. Real air.",
"The lock gives. I keep pressure on the switch.",
"Light from outside cuts through the fog.",
"The gate obeys. I don't let go until it does.",
"A long second. Then the mechanism gives.",
"The panel responds. I'm almost out.",
"It opens. It actually opens.",
"Through the iron, I can see outside.",
"The switch trips. The gate moves. I move.",
"One more thing behind me."
],
"flavorFailure": [
"The gate mechanism jams. I burn seconds I don't have.",
"A shadow at the panel. I abandon it.",
"The switch won't budge.",
"The gate refuses. Not now.",
"The panel sparks and resets. I try again.",
"Something holds it. Nothing mechanical.",
"The gate resists. I can't tell why.",
"The lock fails. The gate stays shut.",
"Too slow. The gate doesn't care.",
"Nothing. Wrong timing."
]
},
{
"key": "patrol_avoid",
"baseProbability": 0.60,
"tags": ["stealth", "survival"],
"tier": 1,
"flavorSuccess": [
"I don't breathe. I don't think. It passes.",
"A long silence — then the footsteps recede.",
"I melt into the fog. Unseen.",
"Predictable. Predictable is avoidable.",
"Close. Too close. But not enough.",
"{{ally}} draws the patrol the other way. I slip through.",
"A gap in the route. I take it.",
"The killer looks elsewhere. I don't waste it.",
"Footsteps near. Then far. Then gone.",
"The locker is cold and tight and it works."
],
"flavorFailure": [
"A wrong step. Eye contact. The chase starts.",
"I misjudge the angle. Spotted.",
"My heartbeat is too loud. The presence is too close.",
"The route changed. I didn't know.",
"No cover. Nowhere to go.",
"{{ally}} breaks stealth nearby. We're both compromised.",
"Every instinct says run. That instinct is wrong. I run anyway.",
"The fog doesn't protect me here.",
"Spotted. Everything changes.",
"{{ally}}'s noise pulls the killer my way."
]
},
{
"key": "medkit_use",
"baseProbability": 0.65,
"tags": ["healing", "altruistic", "survival"],
"tier": 1,
"flavorSuccess": [
"The bandages hold. The pain pulls back.",
"The medkit does what it's supposed to.",
"Not ideal. But the wound closes.",
"Not fixed. Functional. That's enough.",
"The bleeding stops. I breathe.",
"{{ally}}'s hands are steadier than mine. It works.",
"I use the supplies right. The wound yields.",
"{{ally}} moves fast. The treatment holds.",
"One less liability.",
"Better than nothing. Better than before."
],
"flavorFailure": [
"The supplies run out before the job is done.",
"My hands shake too much. Time runs out.",
"Worse than I thought. Supplies fall short.",
"The medkit can't do this.",
"Half-healed is still injured.",
"{{ally}} isn't here. I can't manage it alone.",
"Not enough supplies. Not enough time.",
"A sound. I have to stop.",
"The wound doesn't cooperate.",
"The medkit fails me. I move anyway."
]
},
{
"key": "pallet_drop",
"baseProbability": 0.55,
"tags": ["survival", "escape"],
"tier": 2,
"flavorSuccess": [
"It crashes down between us. A moment bought.",
"Wood and impact. I gain distance.",
"The drop lands right. The chase falters.",
"Timed right. The pallet works.",
"They stagger. I use every second.",
"The drop lands at the right instant.",
"A barrier placed. The chase interrupted.",
"It holds. That's all it needs to do.",
"A roar behind the pallet. I'm already running.",
"The gap widens. Use it."
],
"flavorFailure": [
"The pallet drops wide. No gap.",
"Too slow. It means nothing.",
"I miscalculate. The chase continues.",
"Too early. Wasted.",
"They vault before the wood lands.",
"Wrong angle. Wrong moment.",
"The swing comes first.",
"Not enough distance. Never was.",
"I panic. The pallet follows.",
"Wasted. The chase doesn't stop."
]
},
{
"key": "basement_search",
"baseProbability": 0.35,
"tags": ["chest", "item", "high-risk"],
"tier": 3,
"flavorSuccess": [
"Down there and back. Worth it.",
"A pristine toolbox. Almost worth dying for.",
"The gamble paid. I have what I need.",
"A full medkit in the basement. I don't question it.",
"The best supplies in the trial. Found.",
"I run the numbers. The risk pays out.",
"The stairs back up feel like a victory.",
"The basement gives up something good.",
"A rare find. The fog occasionally provides.",
"I go against every instinct. It works."
],
"flavorFailure": [
"The basement was a trap. I pay for it.",
"The stairs offer nothing. Getting back costs more.",
"The risk wasn't worth it. Nothing down here.",
"Empty. And now I'm out of time.",
"Going down is easy. Coming back is the problem.",
"They know about the basement.",
"Nothing down here but dread.",
"I find nothing. The stairs back feel endless.",
"An empty chest in a dangerous room.",
"The basement takes more than it gives."
]
},
{
"key": "hatch_find",
"baseProbability": 0.30,
"tags": ["exit", "survival", "high-risk"],
"tier": 3,
"flavorSuccess": [
"The hatch opens. One last way out.",
"That sound — I know that sound. I run toward it.",
"Against everything. The escape route is there.",
"It was here all along. Waiting.",
"The fog breaks once. That's enough.",
"I find it before they do.",
"One door left. It opens.",
"The hatch glows. I don't wait.",
"I hear it. I go.",
"Found. This ends here."
],
"flavorFailure": [
"Nothing. Only fog.",
"Close — so close. Then it closes.",
"That sound was something else.",
"It stays hidden.",
"Searching burns time I don't have.",
"They find the hatch first.",
"The fog gives nothing freely.",
"The sound led nowhere.",
"No hatch. No escape this way.",
"The trial isn't finished with me yet."
]
},
{
"key": "window_vault",
"baseProbability": 0.60,
"tags": ["escape", "survival"],
"tier": 1,
"flavorSuccess": [
"Clean vault. The frame holds.",
"Through and clear. Momentum kept.",
"Tight, but usable.",
"I make it through before they close the gap.",
"The vault buys distance. I use it.",
"Practiced. The window yields.",
"I land clean on the other side.",
"The window is a door when I need it.",
"Fast enough. The gap opens.",
"Through. The chase resets."
],
"flavorFailure": [
"Boarded. No exit here.",
"Too slow. I'm caught mid-vault.",
"The frame splinters wrong.",
"I misjudge the height. I pay for it.",
"The window doesn't solve the problem.",
"Too narrow.",
"The worst possible moment for this to fail.",
"The opening was an illusion.",
"Bad angle. Bad outcome.",
"The window doesn't help tonight."
]
},
{
"key": "locker_hide",
"baseProbability": 0.65,
"tags": ["stealth", "survival"],
"tier": 1,
"flavorSuccess": [
"The door closes. Footsteps pass. Breathe.",
"Rust and darkness. It works.",
"They walk past without a glance.",
"Still. Quiet. Safe.",
"Cold metal. Silence. It holds.",
"{{ally}} draws them off. The locker stays shut.",
"I hold my breath. The footsteps don't stop here.",
"One long minute. Then nothing. Clear.",
"The hiding spot works. They move on.",
"They don't check it. I don't breathe until they're gone."
],
"flavorFailure": [
"The door rattles. I'm found.",
"It yanks open. No hiding here.",
"Already checked. Bad call.",
"My breathing gives me away.",
"They know these lockers too well.",
"{{ally}} makes noise nearby. They look harder. They find me.",
"The wrong spot. I know it as soon as I'm inside.",
"Their instinct is right tonight.",
"Spotted going in. No time.",
"Pulled out."
]
},
{
"key": "trap_disarm",
"baseProbability": 0.50,
"tags": ["objectives", "altruistic"],
"tier": 2,
"flavorSuccess": [
"It clicks safe. One less hazard.",
"Patience. The mechanism yields.",
"The snap of metal — controlled this time.",
"Clean disarm. No mistakes.",
"It comes apart safely. I exhale.",
"One moment of focus. The trap is inert.",
"The floor is safer now.",
"Elegant mechanism. Now it's nothing.",
"One trap down. Keep moving.",
"Disarmed. Path clear."
],
"flavorFailure": [
"It snaps. A brutal reminder of what this place is.",
"One wrong move. The trap wins.",
"Subtler than I expected.",
"My attempt triggers it.",
"Too slow. The trap bites.",
"Whoever set this knew what they were doing.",
"I miscalculate. The mechanism fires.",
"It catches me.",
"I fail. Pain follows.",
"It wasn't meant to be easy."
]
},
{
"key": "survivor_rescue",
"baseProbability": 0.45,
"tags": ["altruistic", "hook"],
"tier": 2,
"flavorSuccess": [
"{{ally}} gets there first. Both of us run.",
"Clean unhook. Nobody watching.",
"I get them down. The trial continues.",
"Fast hands, right timing.",
"They're off the hook. We move.",
"{{ally}} pulls them free before the killer returns.",
"The rescue works. Don't stop moving.",
"The window was there. I took it.",
"{{ally}} gets them clear. Two of us running again.",
"Free. Both running now."
],
"flavorFailure": [
"{{ally}} pulls back. The killer turns too soon.",
"The rescue fails. Both of us in danger.",
"Wrong timing.",
"{{ally}} reaches for the hook — the killer is already watching.",
"No safe window. I leave.",
"The hook holds.",
"{{ally}}'s approach is spotted.",
"They're hooked again. Worse now.",
"The rescue was a trap.",
"The killer was closer than it looked."
]
},
{
"key": "ruin_destroy",
"baseProbability": 0.45,
"tags": ["totem", "objectives", "altruistic"],
"tier": 2,
"flavorSuccess": [
"It falls. Generator speed comes back.",
"The hex breaks. The pressure lifts.",
"Ruin is gone. Finally.",
"{{ally}} calls out the location. I put it down.",
"One less advantage for the fog.",
"The corrupting influence ends here.",
"Ruin undone. That mattered.",
"{{ally}} watches while I cleanse. The hex shatters.",
"Ruin falls. The whole trial shifts.",
"One of the fog's edges, removed."
],
"flavorFailure": [
"Ruin holds. The generators push back at every touch.",
"It's guarded.",
"Ruin endures. Progress is slower than it should be.",
"The hex is stronger than I am right now.",
"I fail. Ruin stays.",
"{{ally}} couldn't hold them back. Ruin stands.",
"The path to it is cut off.",
"Ruin sees everything. I can't get close.",
"The hex survives the attempt.",
"Ruin stands. The generators punish every mistake."
]
},
{
"key": "noise_check",
"baseProbability": 0.70,
"tags": ["stealth", "survival", "objectives"],
"tier": 1,
"flavorSuccess": [
"All clear. Back to work.",
"Nothing here. I was right to check.",
"Quiet. Safe to continue.",
"Seconds spent checking. Worth it.",
"Nothing threatening nearby.",
"{{ally}} signals clear. I continue.",
"Slow sweep. Nothing. Move.",
"My instincts were right. Safe.",
"The noise was nothing.",
"Empty. Continue."
],
"flavorFailure": [
"The check confirms what I feared.",
"Not clear. Move now.",
"Not empty.",
"That sound was not nothing.",
"{{ally}}'s signal cuts out. Something is here.",
"Confirmed. Worse than I thought.",
"Get out.",
"I'm being watched.",
"The noise was a warning.",
"Something is here."
]
},
{
"key": "map_find",
"baseProbability": 0.40,
"tags": ["item", "objectives"],
"tier": 1,
"flavorSuccess": [
"A map of the grounds. The generators are marked.",
"Routes, exits — all of it on one piece of paper.",
"The map helps. Decisions get clearer.",
"A schematic of the realm. Useful.",
"The map tells me things I couldn't know otherwise.",
"A rare find. I know where I'm going now.",
"Totem locations, hooks — the map knows.",
"Accurate. I didn't expect that.",
"A clearer picture.",
"Old, but correct. I'll take it."
],
"flavorFailure": [
"Nothing useful.",
"No map. If there was one, it's gone.",
"The search gives me nothing.",
"Fog and no information.",
"The grounds give nothing away.",
"The trial keeps its layout to itself.",
"No orientation gained.",
"Still blind.",
"The realm offers no guide tonight.",
"No map. Trust instinct."
]
},
{
"key": "scratch_marks",
"baseProbability": 0.55,
"tags": ["stealth", "altruistic"],
"tier": 1,
"flavorSuccess": [
"I read the trail right. Found.",
"{{ally}}'s marks, followed. They're close.",
"The fog leaves clues if you know how to look.",
"{{ally}} was just here. The trail is fresh.",
"The marks lead somewhere useful.",
"Reading the ground pays off.",
"The scratch marks don't lie.",
"I follow {{ally}}'s path. It ends well.",
"Legible. I find what I was looking for.",
"The trail ends somewhere worth being."
],
"flavorFailure": [
"The trail goes cold.",
"{{ally}}'s marks lead nowhere useful.",
"I read it wrong. Wrong direction.",
"The trail circles. I lose time.",
"The fog misleads. The signs are wrong.",
"Too old. {{ally}}'s trail is gone.",
"The marks weren't recent.",
"The trail leads somewhere I don't want to be.",
"I can't make sense of them.",
"No resolution."
]
},
{
"key": "bone_chill",
"baseProbability": 0.35,
"tags": ["high-risk", "survival"],
"tier": 3,
"flavorSuccess": [
"The presence passes over me. Not chosen. Not tonight.",
"Whatever stalks the fog — it moves on.",
"The terror recedes. I'm still here.",
"It considers. Then looks elsewhere.",
"I'm overlooked. I don't question it.",
"The cold lifts. It chose someone else.",
"The fog's attention slides away.",
"Stillness. It's gone.",
"Not taken. Not yet.",
"The chill passes. I continue."
],
"flavorFailure": [
"The fog thickens around me. Something is coming.",
"It locks on. There's no running from this.",
"The attention doesn't move.",
"Noticed. Everything changes.",
"The chill deepens. It's here.",
"Nothing escapes something this deliberate.",
"The fog moves with intent.",
"Something sees me. Something that doesn't forget.",
"The presence descends.",
"Chosen. The hardest part begins."
]
},
{
"key": "killer_instinct",
"baseProbability": 0.30,
"tags": ["high-risk", "stealth"],
"tier": 3,
"flavorSuccess": [
"The instinct misfires. I'm not found.",
"They look in the wrong place.",
"The prediction fails. I'm safe.",
"They check elsewhere.",
"Wrong corner. I breathe.",
"They're certain. They're wrong.",
"The read was off. I move.",
"Not there. Not tonight.",
"The instinct fails them.",
"Their focus breaks. I use it."
],
"flavorFailure": [
"They know exactly where I am.",
"Instinct and experience. I'm found.",
"There's no hiding from something this certain.",
"The read was right.",
"My position is given away before the search starts.",
"Exactly where expected.",
"Their certainty was earned.",
"Found before the search begins.",
"The instinct is right.",
"They walk directly to me."
]
}
]
}