- Introduced killerName field in the Mission model within the Prisma schema and created a corresponding migration. - Updated mission management logic to assign a killerName during mission creation. - Enhanced overlay components to display killer information, including avatar and name, in both expanded and minimized panels. - Added new CSS styles for killer display in the overlay. - Included new avatar images for various killers in the overlay assets.
666 lines
26 KiB
JSON
666 lines
26 KiB
JSON
{
|
|
"version": "1.4.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": [
|
|
"A hex totem. I hear it before I see it. I break it anyway.",
|
|
"Just a dull totem. I cleanse it before it can become something worse.",
|
|
"The hex shatters. Whatever was draining us stops.",
|
|
"No curse on this one. Still worth clearing.",
|
|
"I don't know which hex it was. It's gone now. That's enough.",
|
|
"{{ally}} spots the hex. I make short work of it.",
|
|
"The glow fades. The hex is gone.",
|
|
"Dull totem. Cleansed. One less place for a hex to root itself.",
|
|
"{{ally}} calls it out — just a dull totem, but now it's ash.",
|
|
"One less totem in the trial."
|
|
],
|
|
"flavorFailure": [
|
|
"The hex totem pulls back. I can't finish this.",
|
|
"I reach it but something drives me off before it breaks.",
|
|
"The hex holds. The pressure doesn't lift.",
|
|
"Just a dull totem, but I can't stay long enough to cleanse it.",
|
|
"The hex hums. I'm not strong enough. Not yet.",
|
|
"{{ally}} calls wrong. The hex burns brighter.",
|
|
"No curse here, but no time either. I leave it standing.",
|
|
"{{ally}} needs me. The totem stays.",
|
|
"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.",
|
|
"{{killer}} is 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.",
|
|
"{{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. {{killer}} gives chase.",
|
|
"I misjudge the angle. Spotted.",
|
|
"My heartbeat is too loud. {{killer}} 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 {{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", "chase"],
|
|
"tier": 2,
|
|
"flavorSuccess": [
|
|
"{{killer}} is right behind me. I drop the pallet at the right instant. Distance bought.",
|
|
"Mid-chase. The wood crashes down between us. I gain ground.",
|
|
"I run the loop and hit the pallet at the last second. {{killer}} staggers.",
|
|
"Timed right. The pallet interrupts the chase.",
|
|
"{{killer}} tries to mindgame the drop. I read it. The pallet lands.",
|
|
"The chase breaks. The pallet did its job.",
|
|
"A roar of frustration behind me. I'm already running.",
|
|
"The gap widens. I don't look back.",
|
|
"{{killer}} can't close it. The pallet holds them.",
|
|
"I break the chase. For now."
|
|
],
|
|
"flavorFailure": [
|
|
"{{killer}} predicts the drop. I waste the pallet.",
|
|
"Too slow — {{killer}} is through before the wood lands.",
|
|
"I panic mid-chase. The pallet falls early. Useless.",
|
|
"{{killer}} vaults before the drop. The chase continues.",
|
|
"Wrong angle. The pallet saves nothing.",
|
|
"The chase doesn't stop. I'm out of pallets.",
|
|
"The swing comes before the wood hits the ground.",
|
|
"I misjudge the distance. Wasted.",
|
|
"One less pallet. The chase goes on.",
|
|
"The drop panics. So do I."
|
|
]
|
|
},
|
|
{
|
|
"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": ["survival", "chase"],
|
|
"tier": 1,
|
|
"flavorSuccess": [
|
|
"{{killer}} is closing in. I hit the window before they grab me.",
|
|
"Clean vault. I reset the chase distance.",
|
|
"In a chase and the window is right there. I take it.",
|
|
"I make it through before {{killer}} can follow cleanly.",
|
|
"The vault buys a second. In a chase, that's everything.",
|
|
"Practiced. Through before {{killer}} can react.",
|
|
"I land clean. The chase tilts my way.",
|
|
"The window resets the loop. I use it.",
|
|
"Fast vault. The gap opens.",
|
|
"I break the chase line. Through and running."
|
|
],
|
|
"flavorFailure": [
|
|
"Boarded. I lose the chase line.",
|
|
"Too slow. {{killer}} catches me mid-vault.",
|
|
"I misjudge the height. Mid-chase, that's fatal.",
|
|
"The window doesn't save me here.",
|
|
"Too narrow. Wrong call in a chase.",
|
|
"The vault fails at the worst moment.",
|
|
"{{killer}} reads the vault. I gain nothing.",
|
|
"Bad angle. The chase continues on their terms.",
|
|
"Blocked. I'm out of options on this loop.",
|
|
"The window doesn't help. The chase ends badly."
|
|
]
|
|
},
|
|
{
|
|
"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. {{killer}} not watching.",
|
|
"I get them down. The trial continues.",
|
|
"Fast hands, right timing.",
|
|
"They're off the hook. We move.",
|
|
"{{ally}} pulls them free before {{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. {{killer}} turns too soon.",
|
|
"The rescue fails. Both of us in danger.",
|
|
"Wrong timing.",
|
|
"{{ally}} reaches for the hook — {{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.",
|
|
"{{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.",
|
|
"{{killer}} looks in the wrong place.",
|
|
"The prediction fails. I'm safe.",
|
|
"{{killer}} checks elsewhere.",
|
|
"Wrong corner. I breathe.",
|
|
"{{killer}} is certain. {{killer}} is wrong.",
|
|
"The read was off. I move.",
|
|
"Not there. Not tonight.",
|
|
"{{killer}}'s instinct fails them.",
|
|
"{{killer}}'s focus breaks. I use it."
|
|
],
|
|
"flavorFailure": [
|
|
"{{killer}} knows exactly where I am.",
|
|
"Instinct and experience. I'm found.",
|
|
"There's no hiding from {{killer}}.",
|
|
"The read was right.",
|
|
"My position is given away before the search starts.",
|
|
"Exactly where expected.",
|
|
"{{killer}}'s certainty was earned.",
|
|
"Found before the search begins.",
|
|
"The instinct is right.",
|
|
"{{killer}} walks directly to me."
|
|
]
|
|
},
|
|
{
|
|
"key": "chase",
|
|
"baseProbability": 0.50,
|
|
"tags": ["survival", "chase"],
|
|
"tier": 2,
|
|
"flavorSuccess": [
|
|
"I run the loop. {{killer}} can't close the gap. I lose them.",
|
|
"Three pallets, two windows. I get out of the chase clean.",
|
|
"I break line of sight in the fog. {{killer}}'s terror radius fades.",
|
|
"I outlast the chase. {{killer}} gives up.",
|
|
"My legs burn. I find cover. The chase ends.",
|
|
"I played the tiles right. The chase breaks in my favour.",
|
|
"Down to one pallet and I make it count. Chase over.",
|
|
"I dodge into the fog. {{killer}} can't read where I went.",
|
|
"The terror radius fades. I'm clear.",
|
|
"I survive the chase. Barely."
|
|
],
|
|
"flavorFailure": [
|
|
"I run out of pallets. {{killer}} closes the gap.",
|
|
"One wrong turn. Cornered.",
|
|
"{{killer}} reads my loop before I complete it.",
|
|
"I panic. I lose the tiles. That's it.",
|
|
"No more pallets. No windows left. I go down.",
|
|
"{{killer}} predicts every move I have.",
|
|
"I run until there's nowhere left to run.",
|
|
"Caught mid-vault. That's all it takes.",
|
|
"The terror radius never fades. {{killer}} catches me.",
|
|
"{{killer}} closes the distance. I can't stop it."
|
|
]
|
|
},
|
|
{
|
|
"key": "hook_sabotage",
|
|
"baseProbability": 0.40,
|
|
"tags": ["altruistic", "objectives"],
|
|
"tier": 2,
|
|
"flavorSuccess": [
|
|
"I see {{killer}} carrying {{ally}}. I sprint to the nearest hook and sabo it before they arrive.",
|
|
"The hook comes apart in my hands. {{killer}} will have to carry them further.",
|
|
"I make it in time. One hook down.",
|
|
"Quick hands. The hook drops before {{killer}} turns the corner.",
|
|
"{{ally}} is being carried. The hook falls. Bought them a few more seconds.",
|
|
"Sabotaged and gone before anyone sees me.",
|
|
"The hook gives easily. I don't stay to watch.",
|
|
"One less hook {{killer}} can use.",
|
|
"I hear them struggling close by. I break the nearest hook and run.",
|
|
"The sabo lands. {{killer}} has to reroute. Use the time."
|
|
],
|
|
"flavorFailure": [
|
|
"Too slow. The hook is used before I get there.",
|
|
"I'm spotted mid-sabo. {{killer}} gives chase.",
|
|
"{{killer}} changes direction. They find a different hook.",
|
|
"I reach it but I'm too late to finish the sabo.",
|
|
"I start to sabo — then {{killer}}'s footsteps get too close.",
|
|
"{{ally}} is hooked before I can stop it.",
|
|
"{{killer}} anticipates it. They reroute.",
|
|
"Not fast enough. The hook holds.",
|
|
"{{ally}} goes up on the hook. I was too far.",
|
|
"The sabo fails. So does the rescue."
|
|
]
|
|
}
|
|
]
|
|
}
|