diff options
Diffstat (limited to 'data')
123 files changed, 1899 insertions, 32 deletions
diff --git a/data/behaviors/estate_broker_talk.yaml b/data/behaviors/estate_broker_talk.yaml new file mode 100644 index 0000000..b14323d --- /dev/null +++ b/data/behaviors/estate_broker_talk.yaml @@ -0,0 +1,49 @@ +id: estate_broker_talk +type: talk +nodes: + start: + message: "Welcome to the Local Neighborhood development! I'm selling premium housing plots for only 10 credits. Interested in buying a house?" + options: + - text: "Yes, I'd like to buy a house." + condition: + not: + player_flag: owns_house_local_neighborhood + action: + cost: 10 + set_player_flags: + owns_house_local_neighborhood: "local_neighborhood" + next: purchased + - text: "I already own a house here." + condition: + player_flag: owns_house_local_neighborhood + next: already_own + - text: "No thanks." + next: goodbye + - text: "What do I get with a house?" + next: info + purchased: + message: "Excellent! The plot is yours. You'll find your new home in the Local Neighborhood just north of here. Use the Estate Directory terminal to enter your house. The home comes with a workshop — perfect for construction projects." + options: + - text: "Thanks!" + next: start + already_own: + message: "Yes, you're already a proud homeowner here! Your house is waiting for you. Use the Estate Directory to enter it, or expand your workshop." + options: + - text: "Good to know." + next: start + info: + message: "Each house comes with an entrance hall and a workshop equipped with a workbench. You can use the workbench with a saw to turn logs into planks, or assemble planks into furniture. Furniture can be sold for a profit or displayed in your home. Future developments will allow adding more rooms to your house." + options: + - text: "Sounds great! I'll buy one." + condition: + not: + player_flag: owns_house_local_neighborhood + action: + cost: 10 + set_player_flags: + owns_house_local_neighborhood: "local_neighborhood" + next: purchased + - text: "Maybe later." + next: goodbye + goodbye: + message: "Come back when you're ready to invest in your future!" diff --git a/data/behaviors/netrunner_talk.yaml b/data/behaviors/netrunner_talk.yaml new file mode 100644 index 0000000..e20f12f --- /dev/null +++ b/data/behaviors/netrunner_talk.yaml @@ -0,0 +1,63 @@ +id: netrunner_talk +type: talk +nodes: + start: + message: "The Netrunner looks up. \"You want in on the network? I can give you some pointers.\"" + options: + - text: "\"What is hacking?\"" + goto: what_is + - text: "\"Where can I find terminals?\"" + goto: terminals + - text: "\"Any tips for the basic terminal?\"" + goto: tips_basic + - text: "\"What about the advanced terminal?\"" + goto: tips_advanced + condition: + player_flag: hacking_asked_basic + value: true + - text: "\"Tell me about the secure terminal.\"" + goto: tips_secure + condition: + player_flag: hacking_asked_advanced + value: true + - text: "\"Goodbye.\"" + end: true + what_is: + message: "\"Hacking's about jacking into terminals and running their gauntlets. Each terminal runs a different challenge -- puzzles, hunts, pattern games. Crack 'em and you get better at it. Simple as that.\"" + options: + - text: "\"Where can I find terminals?\"" + goto: terminals + - text: "\"Goodbye.\"" + end: true + terminals: + message: "\"There's a basic terminal right here in this lab -- good for beginners. The station down east has an advanced one if you've got the chops. And if you're really good, there's a secure terminal deep in the compound. You'll need the skills to match though.\"" + options: + - text: "\"Any tips?\"" + goto: tips_basic + - text: "\"Thanks.\"" + end: true + tips_basic: + message: "\"The basic terminal runs an old rogue AI hunt. Twenty nodes in a network. You've got probes to flush it out. Listen for the warnings -- corrupted data means it's close, voids mean a trap, static means ICE. Shoot into adjacent nodes, don't walk into danger.\"" + action: + set_player_flags: + hacking_asked_basic: true + options: + - text: "\"What about the advanced terminal?\"" + goto: tips_advanced + - text: "\"Thanks.\"" + end: true + tips_advanced: + message: "\"Advanced terminal runs a cipher crack. Four symbols, no repeats. You get feedback after each guess -- locked means right spot, found means right symbol wrong spot. Process of elimination. Ten tries.\"" + action: + set_player_flags: + hacking_asked_advanced: true + options: + - text: "\"Tell me about the secure terminal.\"" + goto: tips_secure + - text: "\"Thanks.\"" + end: true + tips_secure: + message: "\"Secure terminal? Signal Bluff. It's a bluffing game -- you and the system each roll hidden dice and take turns making claims about the total. Ones are wild. Call the bluff or raise the stakes. Read the probabilities, play the odds, and don't let it psych you out.\"" + options: + - text: "\"Thanks.\"" + end: true diff --git a/data/behaviors/sawmill_operator_talk.yaml b/data/behaviors/sawmill_operator_talk.yaml new file mode 100644 index 0000000..338ee61 --- /dev/null +++ b/data/behaviors/sawmill_operator_talk.yaml @@ -0,0 +1,37 @@ +id: sawmill_operator_talk +type: talk +nodes: + start: + message: "Welcome to the lumberyard! I can turn your logs into planks — for a small fee, of course. What can I do for ya?" + options: + - text: "Turn all my logs into planks." + condition: + any_of: + - has_item: logs + - has_item: oak_logs + - has_item: teak_logs + - has_item: mahogany_logs + next: prices + - text: "What are your prices?" + next: prices + - text: "Nothing for now." + next: goodbye + prices: + message: "Here's what I charge per log:\n Regular logs: 5 credits\n Oak logs: 10 credits\n Teak logs: 20 credits\n Mahogany logs: 40 credits\n\nWant me to process your logs?" + options: + - text: "Yes, process all my logs." + condition: + any_of: + - has_item: logs + - has_item: oak_logs + - has_item: teak_logs + - has_item: mahogany_logs + next: process + - text: "No thanks." + next: goodbye + process: + message: "" + action: + sawmill: true + goodbye: + message: "Come back anytime you need more planks!" diff --git a/data/courses/reactor.yaml b/data/courses/reactor.yaml new file mode 100644 index 0000000..fcf2824 --- /dev/null +++ b/data/courses/reactor.yaml @@ -0,0 +1,69 @@ +id: "reactor" +name: "Reactor Course" +required_level: 50 +start_room: 200 +completion_xp: 350 +obstacles: + - room_id: 220 + verb: climb + ticks_per_phase: 3 + xp: 40 + fail_damage: [3, 6] + messages: + - "You grip the reactor scaffolding and begin your ascent..." + - "The metal groans under your weight as you climb higher, heat radiating from below..." + - "You pull yourself onto the upper platform, the reactor humming beneath you!" + - room_id: 221 + verb: swing + ticks_per_phase: 3 + xp: 45 + fail_damage: [3, 7] + messages: + - "You seize the heavy coolant chain dangling above the reactor pit..." + - "You swing out over the glowing core, heat blasting your face..." + - "You release and land hard on the maintenance gantry, chain clanging behind you!" + - room_id: 222 + verb: balance + ticks_per_phase: 3 + xp: 50 + fail_damage: [4, 7] + messages: + - "You step onto the massive steam pipe spanning the reactor chamber..." + - "Steam jets hiss from valves on either side as you shuffle along the pipe..." + - "You reach the junction platform and hop off the pipe with relief!" + - room_id: 223 + verb: jump + ticks_per_phase: 2 + xp: 45 + fail_damage: [3, 6] + messages: + - "A section of the reactor platform is missing, leaving a gaping void..." + - "You back up, sprint, and leap with everything you've got..." + - "You slam into the far platform and roll to safety!" + - room_id: 224 + verb: crawl + ticks_per_phase: 3 + xp: 40 + fail_damage: [3, 5] + messages: + - "You squeeze into the narrow service conduit, radiation warnings plastered on every surface..." + - "You drag yourself through on your elbows, sparks showering from damaged wiring above..." + - "You tumble out the far end and gulp down clean air!" + - room_id: 225 + verb: vault + ticks_per_phase: 2 + xp: 50 + fail_damage: [4, 7] + messages: + - "A radiation containment barrier blocks the path, humming with energy..." + - "You time the pulse cycle, sprint at the barrier, and throw yourself over it..." + - "You clear the barrier and land on the other side, heart pounding!" + - room_id: 226 + verb: leap + ticks_per_phase: 3 + xp: 55 + fail_damage: [4, 8] + messages: + - "The final obstacle: a massive chasm over the reactor coolant pool..." + - "You sprint along the narrow runway, the abyss yawning below..." + - "You launch into the void, arms windmilling, and crash onto the far platform!" diff --git a/data/courses/rooftop.yaml b/data/courses/rooftop.yaml new file mode 100644 index 0000000..4cc6748 --- /dev/null +++ b/data/courses/rooftop.yaml @@ -0,0 +1,60 @@ +id: "rooftop" +name: "Rooftop Course" +required_level: 20 +start_room: 200 +completion_xp: 120 +obstacles: + - room_id: 210 + verb: climb + ticks_per_phase: 2 + xp: 15 + fail_damage: [2, 4] + messages: + - "You grab the rough permacrete wall and begin to climb..." + - "Your fingers find cracks and ledges as you pull yourself higher..." + - "You heave yourself over the edge and onto the rooftop!" + - room_id: 211 + verb: jump + ticks_per_phase: 2 + xp: 22 + fail_damage: [2, 4] + messages: + - "You eye the gap between this building and the next..." + - "You sprint toward the edge, boots pounding on the rooftop..." + - "You launch yourself across and roll to a stop on the other roof!" + - room_id: 212 + verb: swing + ticks_per_phase: 3 + xp: 20 + fail_damage: [2, 5] + messages: + - "You grab the dangling power cable with both hands..." + - "You kick off the ledge and swing out over the street far below..." + - "You release at the peak of the arc and land on the opposite platform!" + - room_id: 213 + verb: balance + ticks_per_phase: 3 + xp: 18 + fail_damage: [2, 4] + messages: + - "You step onto the narrow structural beam spanning the alley..." + - "The beam sways slightly as you inch forward, arms out for balance..." + - "You reach the far side and step gratefully onto solid rooftop!" + - room_id: 214 + verb: vault + ticks_per_phase: 2 + xp: 15 + fail_damage: [2, 3] + messages: + - "You run toward the maintenance railing at full speed..." + - "You plant one hand on the rail and swing your legs over..." + - "You clear the railing and land in a crouch on the other side!" + - room_id: 215 + verb: leap + ticks_per_phase: 2 + xp: 20 + fail_damage: [3, 5] + messages: + - "You stare at the final gap -- the widest yet..." + - "You take a deep breath, charge forward, and throw yourself into the air..." + - "You barely catch the far ledge, pull yourself up, and stand triumphant!" diff --git a/data/courses/vent_shaft.yaml b/data/courses/vent_shaft.yaml new file mode 100644 index 0000000..a59a16c --- /dev/null +++ b/data/courses/vent_shaft.yaml @@ -0,0 +1,51 @@ +id: "vent_shaft" +name: "Ventilation Shaft Course" +required_level: 1 +start_room: 200 +completion_xp: 40 +obstacles: + - room_id: 201 + verb: scramble + ticks_per_phase: 2 + xp: 8 + fail_damage: [1, 2] + messages: + - "You approach the corroded ventilation wall..." + - "You find footholds in the rusted panels and begin to climb..." + - "You scramble up the wall and haul yourself onto the ledge!" + - room_id: 202 + verb: balance + ticks_per_phase: 2 + xp: 8 + fail_damage: [1, 2] + messages: + - "You step onto the narrow coolant pipe..." + - "Arms outstretched, you carefully place one foot in front of the other..." + - "You reach the other side of the pipe and step onto solid ground!" + - room_id: 203 + verb: jump + ticks_per_phase: 2 + xp: 7 + fail_damage: [1, 2] + messages: + - "You peer across the dark gap in the shaft floor..." + - "You take a few steps back, then sprint toward the edge..." + - "You leap across the gap and land safely on the other side!" + - room_id: 204 + verb: crawl + ticks_per_phase: 3 + xp: 7 + fail_damage: [1, 1] + messages: + - "You drop to your hands and knees at the narrow vent opening..." + - "You squeeze through the tight passage, metal scraping against your back..." + - "You emerge from the vent and stand up, brushing dust from your clothes!" + - room_id: 205 + verb: slide + ticks_per_phase: 2 + xp: 10 + fail_damage: [1, 2] + messages: + - "You sit at the top of the emergency chute..." + - "You push off and accelerate down the smooth metal surface..." + - "You shoot out the bottom of the chute and land on your feet!" diff --git a/data/help/agility.yaml b/data/help/agility.yaml new file mode 100644 index 0000000..2dc298e --- /dev/null +++ b/data/help/agility.yaml @@ -0,0 +1,35 @@ +id: agility +title: "Agility" +body: | + Agility is trained by completing obstacle courses. Each course is a sequence + of rooms with obstacles that you traverse using special commands. + + COMMANDS + scramble, jump, swing, balance, climb, crawl, vault, leap, slide + Each obstacle room tells you which command to use. Type it to begin + the obstacle. After a few ticks of sequenced messages, you'll either + succeed and move to the next obstacle, or slip and fall. + + COURSES + Ventilation Shaft Level 1 - 5 obstacles, 80 XP/lap + Rooftop Level 20 - 6 obstacles, 230 XP/lap + Reactor Level 50 - 7 obstacles, 675 XP/lap + + FAILING + Each obstacle has a chance to fail. If you fail, you take minor damage + and are teleported back to the Agility Training Grounds. Fail chance + decreases as your agility level increases above the course requirement. + + LAP TRACKING + The game tracks how many laps you've completed on each course. Your + lap count is displayed when you finish a course. + + TIPS + - The "down" exit in any obstacle room returns you to the Training + Grounds without penalty (but no XP either). + - Agility level also determines how many steps you can queue with the + "walk" command. + - Graceful equipment and Cape of Agility reduce movement speed. +related: + - skills + - walk diff --git a/data/help/bank.yaml b/data/help/bank.yaml new file mode 100644 index 0000000..7b505ae --- /dev/null +++ b/data/help/bank.yaml @@ -0,0 +1,17 @@ +name: "bank" +category: "Interaction" +description: | + Store items in your personal bank vault to free up inventory space. + + Find a bank booth and type 'bank' or 'use bank' to access + your bank. While banking, these commands are available: + + browse List your bank contents + list Same as browse + deposit <item> Move an item from your inventory to the bank + deposit all Deposit everything from your inventory + withdraw <item> Move an item from the bank to your inventory + leave Exit the bank interface + + Bank booths can be found in Town Square and the Forge. + Items in storage are safe and accessible from any bank booth. diff --git a/data/help/construct.yaml b/data/help/construct.yaml new file mode 100644 index 0000000..7bd18b2 --- /dev/null +++ b/data/help/construct.yaml @@ -0,0 +1,22 @@ +name: "construct" +category: "Production" +description: | + Construct furniture and process logs into planks at a workbench. + + Use 'construct' or 'make' at a workbench to build items. + + You'll need a saw to turn logs into planks. Planks can then be + assembled into furniture like shelves, tables, and chairs. + + Higher level planks (oak, teak, mahogany) produce more valuable + furniture and require higher construction levels. + + Alternative ways to get planks: + - Visit the sawmill operator in the lumberyard (east of Construction + Site) to convert logs to planks for a credit fee + - Use the Plank Make science mod (Lv86) to convert logs at 70% + of the sawmill cost using junk and credits + + You can also buy a house from the estate broker at the Construction + Site. Your house includes a private workshop with a workbench and + bank booth. diff --git a/data/help/drink.yaml b/data/help/drink.yaml new file mode 100644 index 0000000..98843b3 --- /dev/null +++ b/data/help/drink.yaml @@ -0,0 +1,28 @@ +name: "drink" +category: "Skills" +description: | + Drink potions to gain temporary stat boosts or restore resources. + + Usage: drink <potion> + + Potions provide various effects: + - Stim potions: boost Attack + - Amp potions: boost Strength + - Shield potions: boost Defense + - Tech serum: boosts Technology + - Science serum: boosts Science + - Targeting serum: boosts Ranged + - Restoration compound: boosts all combat stats + - Bio serum / Nano restore / Full restore: restore hitpoints + - Stim cells: restore battery power + + Stat boosts are percentage-based and last for a limited number + of ticks. Use "score" to see your active buffs and remaining time. + + Drinking has a 3-tick cooldown between uses. + + Drinking during combat replaces your next attack. Drinking outside + combat cancels any current action (except combat) and takes effect + on the next tick. + + See also: pharmacy, mix, clean, score diff --git a/data/help/hacking.yaml b/data/help/hacking.yaml new file mode 100644 index 0000000..c3aa67a --- /dev/null +++ b/data/help/hacking.yaml @@ -0,0 +1,23 @@ +id: hacking +title: "Hacking" +body: | + Hacking is trained by jacking into terminals and completing + their minigames. Different terminals offer different challenges + at different difficulty levels. + + Find terminals scattered around the world. Use the 'jack' command + to connect. Each terminal runs a unique puzzle -- solve it for XP. + Winning gives full XP; losing or quitting early gives a small + consolation amount. + + Talk to the Netrunner in the Hacking Lab for tips on each + terminal's challenge. + + XP scales slightly with your Hacking level above the terminal's + requirement, but the main progression is unlocking harder terminals + with bigger rewards. + + See also: help jack +related: + - jack + - skills diff --git a/data/help/jack.yaml b/data/help/jack.yaml new file mode 100644 index 0000000..33f404a --- /dev/null +++ b/data/help/jack.yaml @@ -0,0 +1,25 @@ +id: jack +title: "Jack" +body: | + Jack into a terminal to start a hacking minigame. + + Usage: jack [terminal] + + Connects to a hacking terminal in the room and starts its + minigame. Each terminal type offers a different challenge + and requires a minimum Hacking level. + + If there's only one terminal in the room, you can just type 'jack'. + + While jacked in, all input goes to the minigame. Type 'jack out' + or 'quit' to disconnect early. + + Terminal types: + Basic terminal - Level 1 - Hunt the Rogue AI + Advanced terminal - Level 20 - Code Breaker + Secure terminal - Level 40 - Signal Bluff + + See also: help hacking +related: + - hacking + - skills diff --git a/data/items/amp_potion.yaml b/data/items/amp_potion.yaml index 0d88a53..8167932 100644 --- a/data/items/amp_potion.yaml +++ b/data/items/amp_potion.yaml @@ -1,6 +1,9 @@ id: amp_potion name: "amp potion" -color: "255" -description: "A milky white potion that temporarily amplifies physical strength. [Effect not yet implemented]" +color: "220" +description: "A glowing gold potion that amplifies physical strength." value: 55 stackable: false +potion_effect: "strength" +potion_bonus: 10 +potion_duration: 200 diff --git a/data/items/bio_serum.yaml b/data/items/bio_serum.yaml index 4795749..b397e46 100644 --- a/data/items/bio_serum.yaml +++ b/data/items/bio_serum.yaml @@ -1,6 +1,9 @@ id: bio_serum name: "bio serum" color: "48" -description: "A clear green serum that neutralizes biological toxins. [Effect not yet implemented]" +description: "A green serum that neutralizes biological toxins and restores health." value: 45 stackable: false +potion_effect: "heal" +potion_bonus: 60 +potion_duration: 0 diff --git a/data/items/full_restore.yaml b/data/items/full_restore.yaml index d34d94d..96f6036 100644 --- a/data/items/full_restore.yaml +++ b/data/items/full_restore.yaml @@ -1,6 +1,9 @@ id: full_restore name: "full restore" -color: "207" -description: "A shimmering pink potion. Restores all diminished stats simultaneously. [Effect not yet implemented]" +color: "208" +description: "A powerful orange potion that completely restores health." value: 200 stackable: false +potion_effect: "heal" +potion_bonus: 500 +potion_duration: 0 diff --git a/data/items/mahogany_planks.yaml b/data/items/mahogany_planks.yaml new file mode 100644 index 0000000..d551321 --- /dev/null +++ b/data/items/mahogany_planks.yaml @@ -0,0 +1,6 @@ +id: mahogany_planks +name: mahogany planks +color: "96" +description: "Luxurious mahogany planks with a deep reddish hue." +value: 120 +stackable: false diff --git a/data/items/mahogany_table.yaml b/data/items/mahogany_table.yaml new file mode 100644 index 0000000..245b929 --- /dev/null +++ b/data/items/mahogany_table.yaml @@ -0,0 +1,6 @@ +id: mahogany_table +name: mahogany table +color: "96" +description: "A luxurious mahogany table, the centerpiece of any room." +value: 240 +stackable: false diff --git a/data/items/nano_restore.yaml b/data/items/nano_restore.yaml index 2714b9f..e430b49 100644 --- a/data/items/nano_restore.yaml +++ b/data/items/nano_restore.yaml @@ -1,6 +1,9 @@ id: nano_restore name: "nano restore" color: "208" -description: "An orange potion containing nanobots that restore diminished attributes. [Effect not yet implemented]" +description: "An orange potion containing nanobots that restore diminished attributes." value: 70 stackable: false +potion_effect: "heal" +potion_bonus: 100 +potion_duration: 0 diff --git a/data/items/oak_planks.yaml b/data/items/oak_planks.yaml new file mode 100644 index 0000000..29376c6 --- /dev/null +++ b/data/items/oak_planks.yaml @@ -0,0 +1,6 @@ +id: oak_planks +name: oak planks +color: "102" +description: "Sturdy oak planks, ideal for furniture." +value: 40 +stackable: false diff --git a/data/items/oak_shelf.yaml b/data/items/oak_shelf.yaml new file mode 100644 index 0000000..0f08fa5 --- /dev/null +++ b/data/items/oak_shelf.yaml @@ -0,0 +1,6 @@ +id: oak_shelf +name: oak shelf +color: "94" +description: "A solid oak shelf, built to last." +value: 80 +stackable: false diff --git a/data/items/oak_table.yaml b/data/items/oak_table.yaml new file mode 100644 index 0000000..e94b372 --- /dev/null +++ b/data/items/oak_table.yaml @@ -0,0 +1,6 @@ +id: oak_table +name: oak table +color: "94" +description: "A fine oak table with carved legs." +value: 100 +stackable: false diff --git a/data/items/planks.yaml b/data/items/planks.yaml new file mode 100644 index 0000000..67de72e --- /dev/null +++ b/data/items/planks.yaml @@ -0,0 +1,6 @@ +id: planks +name: planks +color: "137" +description: "Some regular wooden planks, ready for construction." +value: 20 +stackable: false diff --git a/data/items/restoration_compound.yaml b/data/items/restoration_compound.yaml index b4179bc..913153f 100644 --- a/data/items/restoration_compound.yaml +++ b/data/items/restoration_compound.yaml @@ -1,6 +1,9 @@ id: restoration_compound name: "restoration compound" -color: "214" -description: "A golden compound that restores hitpoints and boosts defense, but drains other stats. [Effect not yet implemented]" +color: "51" +description: "A teal compound that enhances all combat capabilities." value: 250 stackable: false +potion_effect: "all_combat" +potion_bonus: 15 +potion_duration: 150 diff --git a/data/items/saw.yaml b/data/items/saw.yaml new file mode 100644 index 0000000..4a7ad6a --- /dev/null +++ b/data/items/saw.yaml @@ -0,0 +1,7 @@ +id: saw +name: saw +tool_type: saw +color: "152" +description: "A sharp-toothed saw for cutting planks from logs at a workbench." +value: 30 +stackable: false diff --git a/data/items/science_serum.yaml b/data/items/science_serum.yaml index 08b807e..e78f915 100644 --- a/data/items/science_serum.yaml +++ b/data/items/science_serum.yaml @@ -1,6 +1,9 @@ id: science_serum name: "science serum" -color: "93" -description: "A violet serum that heightens scientific cognition and casting ability. [Effect not yet implemented]" +color: "141" +description: "A violet serum that heightens scientific cognition." value: 200 stackable: false +potion_effect: "science" +potion_bonus: 10 +potion_duration: 200 diff --git a/data/items/shield_potion.yaml b/data/items/shield_potion.yaml index ccc2d0b..4cd91e8 100644 --- a/data/items/shield_potion.yaml +++ b/data/items/shield_potion.yaml @@ -1,6 +1,9 @@ id: shield_potion name: "shield potion" -color: "39" -description: "A luminous blue potion that temporarily reinforces defensive capability. [Effect not yet implemented]" +color: "21" +description: "A deep blue potion that reinforces defensive capability." value: 85 stackable: false +potion_effect: "defense" +potion_bonus: 10 +potion_duration: 200 diff --git a/data/items/stim_cell.yaml b/data/items/stim_cell.yaml index 03930e7..b431532 100644 --- a/data/items/stim_cell.yaml +++ b/data/items/stim_cell.yaml @@ -1,6 +1,9 @@ id: stim_cell name: "stim cell" color: "226" -description: "A bright yellow energy supplement that restores stamina. [Effect not yet implemented]" +description: "A bright yellow energy supplement that restores stamina." value: 65 stackable: false +potion_effect: "battery" +potion_bonus: 25 +potion_duration: 0 diff --git a/data/items/stim_potion.yaml b/data/items/stim_potion.yaml index 19841d0..de51291 100644 --- a/data/items/stim_potion.yaml +++ b/data/items/stim_potion.yaml @@ -1,6 +1,9 @@ id: stim_potion name: "stim potion" color: "196" -description: "A bubbling red potion that temporarily boosts attack capability. [Effect not yet implemented]" +description: "A bubbling red potion that temporarily boosts attack capability." value: 30 stackable: false +potion_effect: "attack" +potion_bonus: 10 +potion_duration: 200 diff --git a/data/items/super_amp.yaml b/data/items/super_amp.yaml index 153e01f..3bea59b 100644 --- a/data/items/super_amp.yaml +++ b/data/items/super_amp.yaml @@ -1,6 +1,9 @@ id: super_amp name: "super amp" -color: "231" -description: "A dangerously concentrated strength amplifier. Handle carefully. [Effect not yet implemented]" +color: "220" +description: "A concentrated gold potion that significantly amplifies physical strength." value: 155 stackable: false +potion_effect: "strength" +potion_bonus: 20 +potion_duration: 200 diff --git a/data/items/super_bio_serum.yaml b/data/items/super_bio_serum.yaml index d2ef4de..fbc5ebe 100644 --- a/data/items/super_bio_serum.yaml +++ b/data/items/super_bio_serum.yaml @@ -1,6 +1,9 @@ id: super_bio_serum name: "super bio serum" -color: "34" -description: "A concentrated antitoxin. Provides extended poison immunity. [Effect not yet implemented]" +color: "48" +description: "A concentrated green serum that powerfully restores health." value: 130 stackable: false +potion_effect: "heal" +potion_bonus: 120 +potion_duration: 0 diff --git a/data/items/super_shield.yaml b/data/items/super_shield.yaml index 5f6053d..7545b2e 100644 --- a/data/items/super_shield.yaml +++ b/data/items/super_shield.yaml @@ -1,6 +1,9 @@ id: super_shield name: "super shield" -color: "27" -description: "A deep indigo potion that provides significant defensive enhancement. [Effect not yet implemented]" +color: "21" +description: "A concentrated blue potion that provides significant defensive enhancement." value: 175 stackable: false +potion_effect: "defense" +potion_bonus: 20 +potion_duration: 200 diff --git a/data/items/super_stim.yaml b/data/items/super_stim.yaml index d82704c..c290c5f 100644 --- a/data/items/super_stim.yaml +++ b/data/items/super_stim.yaml @@ -1,6 +1,9 @@ id: super_stim name: "super stim" -color: "160" -description: "A potent dark-red stimulant. Dramatically boosts attack capability. [Effect not yet implemented]" +color: "196" +description: "A potent red potion that dramatically boosts attack capability." value: 120 stackable: false +potion_effect: "attack" +potion_bonus: 20 +potion_duration: 200 diff --git a/data/items/super_stim_cell.yaml b/data/items/super_stim_cell.yaml index 7952603..1f25597 100644 --- a/data/items/super_stim_cell.yaml +++ b/data/items/super_stim_cell.yaml @@ -1,6 +1,9 @@ id: super_stim_cell name: "super stim cell" -color: "220" -description: "An advanced energy compound that fully restores stamina. [Effect not yet implemented]" +color: "226" +description: "A concentrated yellow energy supplement that fully restores stamina." value: 140 stackable: false +potion_effect: "battery" +potion_bonus: 50 +potion_duration: 0 diff --git a/data/items/targeting_serum.yaml b/data/items/targeting_serum.yaml index fd583d6..b10ebc5 100644 --- a/data/items/targeting_serum.yaml +++ b/data/items/targeting_serum.yaml @@ -1,6 +1,9 @@ id: targeting_serum name: "targeting serum" -color: "70" -description: "A dark green serum that sharpens ranged targeting systems. [Effect not yet implemented]" +color: "202" +description: "A pink serum that sharpens ranged targeting." value: 190 stackable: false +potion_effect: "ranged" +potion_bonus: 10 +potion_duration: 200 diff --git a/data/items/teak_planks.yaml b/data/items/teak_planks.yaml new file mode 100644 index 0000000..f0a0642 --- /dev/null +++ b/data/items/teak_planks.yaml @@ -0,0 +1,6 @@ +id: teak_planks +name: teak planks +color: "100" +description: "Fine teak planks with a rich grain." +value: 80 +stackable: false diff --git a/data/items/teak_table.yaml b/data/items/teak_table.yaml new file mode 100644 index 0000000..5c2c5c5 --- /dev/null +++ b/data/items/teak_table.yaml @@ -0,0 +1,6 @@ +id: teak_table +name: teak table +color: "100" +description: "An elegant teak table with a polished surface." +value: 160 +stackable: false diff --git a/data/items/tech_serum.yaml b/data/items/tech_serum.yaml index fd1b857..aac3fdc 100644 --- a/data/items/tech_serum.yaml +++ b/data/items/tech_serum.yaml @@ -1,6 +1,9 @@ id: tech_serum name: "tech serum" -color: "51" -description: "A cyan serum that temporarily enhances technology interface capability. [Effect not yet implemented]" +color: "75" +description: "A cyan serum that enhances technology interface." value: 100 stackable: false +potion_effect: "technology" +potion_bonus: 10 +potion_duration: 200 diff --git a/data/items/wooden_chair.yaml b/data/items/wooden_chair.yaml new file mode 100644 index 0000000..16220ef --- /dev/null +++ b/data/items/wooden_chair.yaml @@ -0,0 +1,6 @@ +id: wooden_chair +name: wooden chair +color: "130" +description: "A comfortable wooden chair with a smooth finish." +value: 35 +stackable: false diff --git a/data/items/wooden_shelf.yaml b/data/items/wooden_shelf.yaml new file mode 100644 index 0000000..3b0d97d --- /dev/null +++ b/data/items/wooden_shelf.yaml @@ -0,0 +1,6 @@ +id: wooden_shelf +name: wooden shelf +color: "130" +description: "A simple wooden shelf, useful for storing small items." +value: 40 +stackable: false diff --git a/data/items/wooden_table.yaml b/data/items/wooden_table.yaml new file mode 100644 index 0000000..171a9bb --- /dev/null +++ b/data/items/wooden_table.yaml @@ -0,0 +1,6 @@ +id: wooden_table +name: wooden table +color: "130" +description: "A sturdy wooden table, perfect for dining or displaying objects." +value: 50 +stackable: false diff --git a/data/mobs/ancient_construct.yaml b/data/mobs/ancient_construct.yaml new file mode 100644 index 0000000..0e2d04e --- /dev/null +++ b/data/mobs/ancient_construct.yaml @@ -0,0 +1,47 @@ +id: ancient_construct +name: ancient construct +description: "An impossibly old machine from before the regression, still operational. Its design is alien even by modern standards, covered in glowing runes that predate recorded history." +attack: 58 +strength: 62 +defense: 66 +hp: 152 +speed: 4 +aggressive: true +respawn_ticks: 150 +attack_type: slash +attack_bonus: 55 +strength_bonus: 55 +stab_defense: 95 +slash_defense: 100 +crush_defense: 85 +science_defense: -40 +ranged_defense: 70 +weakness: chaos +idle_descriptions: + - "etches glowing symbols into the air" + - "reconfigures its form with clicking sounds" + - "projects a holographic star map" + - "emits a resonant chime that shakes the walls" +combat_descriptions: + - "slices at %s with a blade of pure light" + - "unleashes a cascade of ancient energy at %s" + - "teleports behind %s and strikes" +drops: + remains: scrap_metal + loot: + - item_id: credits + weight: 40 + quantity: 10000 + - item_id: bloodjunk + weight: 20 + quantity: 8 + - item_id: deathjunk + weight: 15 + quantity: 8 + - table: gem_table + weight: 10 + - item_id: uncut_diamond + weight: 5 + quantity: 3 + - table: herb_table_high + weight: 10 diff --git a/data/mobs/bandit.yaml b/data/mobs/bandit.yaml new file mode 100644 index 0000000..e3cc0ae --- /dev/null +++ b/data/mobs/bandit.yaml @@ -0,0 +1,38 @@ +id: bandit +name: bandit +description: "A scrappy outlaw with a cybernetic arm and patched armor. He eyes you with predatory intent." +attack: 10 +strength: 12 +defense: 12 +hp: 28 +speed: 5 +aggressive: true +respawn_ticks: 30 +attack_type: slash +attack_bonus: 5 +strength_bonus: 5 +stab_defense: 10 +slash_defense: 15 +crush_defense: 8 +science_defense: -5 +ranged_defense: 12 +idle_descriptions: + - "scans the horizon for targets" + - "wipes a blade on his sleeve" + - "spits on the ground" + - "adjusts a cybernetic knuckle" +combat_descriptions: + - "slashes at %s with a serrated blade" + - "delivers a crushing punch with a cybernetic fist" + - "lunges at %s with a battle cry" +drops: + remains: bones + loot: + - item_id: credits + weight: 70 + quantity: 30 + - item_id: credits + weight: 20 + quantity: 80 + - table: herb_table_low + weight: 10 diff --git a/data/mobs/corrupted_scientist.yaml b/data/mobs/corrupted_scientist.yaml new file mode 100644 index 0000000..962dd3a --- /dev/null +++ b/data/mobs/corrupted_scientist.yaml @@ -0,0 +1,43 @@ +id: corrupted_scientist +name: corrupted scientist +description: "A researcher whose mind was consumed by their own experiments. Energy crackles around their fingertips and their lab coat is singed and tattered." +attack: 1 +strength: 1 +defense: 18 +hp: 40 +science: 50 +speed: 5 +aggressive: true +respawn_ticks: 45 +attack_type: science +attack_bonus: 0 +strength_bonus: 0 +stab_defense: 25 +slash_defense: 25 +crush_defense: 20 +science_defense: 35 +ranged_defense: -5 +weakness: eco +idle_descriptions: + - "mutters incomprehensible formulas" + - "energy arcs between their fingers" + - "scribbles equations on the wall in soot" + - "stares at their own hands in horror" +combat_descriptions: + - "blasts %s with a burst of unstable energy" + - "unleashes a wave of chaotic force at %s" + - "channels raw power through their hands at %s" +drops: + remains: bones + loot: + - item_id: credits + weight: 50 + quantity: 150 + - item_id: solarjunk + weight: 20 + quantity: 2 + - item_id: hydrojunk + weight: 15 + quantity: 2 + - table: herb_table_mid + weight: 15 diff --git a/data/mobs/elite_synth.yaml b/data/mobs/elite_synth.yaml new file mode 100644 index 0000000..9a4a3e8 --- /dev/null +++ b/data/mobs/elite_synth.yaml @@ -0,0 +1,43 @@ +id: elite_synth +name: elite synth +description: "A sleek combat android with glowing blue optics and a compact energy weapon. Its chassis is polished alloy and its movements are disturbingly fluid." +attack: 1 +strength: 1 +defense: 38 +hp: 104 +science: 65 +speed: 4 +aggressive: true +respawn_ticks: 75 +attack_type: science +attack_bonus: 0 +strength_bonus: 0 +stab_defense: 45 +slash_defense: 45 +crush_defense: 40 +science_defense: 55 +ranged_defense: -15 +weakness: chaos +idle_descriptions: + - "calibrates targeting sensors with a soft chime" + - "projects a holographic tactical display" + - "emits a binary chirp" + - "reconfigures its weapon array silently" +combat_descriptions: + - "unleashes a coherent energy beam at %s" + - "fires a pulse of disruptor energy at %s" + - "overloads its emitters and blasts %s" +drops: + remains: circuit_board + loot: + - item_id: credits + weight: 50 + quantity: 1500 + - item_id: biojunk + weight: 20 + quantity: 3 + - item_id: naturejunk + weight: 15 + quantity: 3 + - table: gem_table + weight: 15 diff --git a/data/mobs/enforcer_bot.yaml b/data/mobs/enforcer_bot.yaml new file mode 100644 index 0000000..623e210 --- /dev/null +++ b/data/mobs/enforcer_bot.yaml @@ -0,0 +1,42 @@ +id: enforcer_bot +name: enforcer bot +description: "A heavy riot control automaton with impact shields and a shock baton. It moves with deliberate, crushing steps." +attack: 30 +strength: 35 +defense: 32 +hp: 70 +speed: 5 +aggressive: true +respawn_ticks: 55 +attack_type: crush +attack_bonus: 25 +strength_bonus: 25 +stab_defense: 40 +slash_defense: 40 +crush_defense: 50 +science_defense: -15 +ranged_defense: 30 +weakness: solar +idle_descriptions: + - "patrols the area with heavy footsteps" + - "deploys its riot shield with a hiss" + - "announces a warning in garbled speech" + - "tests its shock baton against a wall" +combat_descriptions: + - "smashes %s with a shock baton" + - "slams its riot shield into %s" + - "delivers a stunning blow to %s" +drops: + remains: scrap_metal + loot: + - item_id: credits + weight: 60 + quantity: 350 + - item_id: scrap_metal + weight: 20 + quantity: 5 + - item_id: credits + weight: 15 + quantity: 800 + - table: gem_table + weight: 5 diff --git a/data/mobs/estate_broker.yaml b/data/mobs/estate_broker.yaml new file mode 100644 index 0000000..0b56c4c --- /dev/null +++ b/data/mobs/estate_broker.yaml @@ -0,0 +1,7 @@ +id: estate_broker +name: estate broker +behavior: estate_broker_talk +unique: true +color: "227" +description: "A sharply-dressed real estate agent with a datapad and a practiced smile." +idle: "The estate broker flashes a professional smile." diff --git a/data/mobs/feral_cyborg.yaml b/data/mobs/feral_cyborg.yaml new file mode 100644 index 0000000..e05f01b --- /dev/null +++ b/data/mobs/feral_cyborg.yaml @@ -0,0 +1,38 @@ +id: feral_cyborg +name: feral cyborg +description: "A heavily augmented human whose implants have driven them to madness. Razor-sharp blades extend from their forearms and their optical implant glows red." +attack: 34 +strength: 36 +defense: 32 +hp: 82 +speed: 4 +aggressive: true +respawn_ticks: 50 +attack_type: slash +attack_bonus: 30 +strength_bonus: 28 +stab_defense: 35 +slash_defense: 45 +crush_defense: 30 +science_defense: -10 +ranged_defense: 35 +idle_descriptions: + - "paces back and forth, muttering" + - "retracts and extends forearm blades" + - "emits a distorted laugh" + - "scratches at their own cybernetics" +combat_descriptions: + - "slashes %s with forearm blades" + - "delivers a powered kick to %s" + - "grapples %s with augmented strength" +drops: + remains: bones + loot: + - item_id: credits + weight: 60 + quantity: 300 + - item_id: scrap_metal + weight: 25 + quantity: 3 + - table: herb_table_mid + weight: 15 diff --git a/data/mobs/ghoul.yaml b/data/mobs/ghoul.yaml new file mode 100644 index 0000000..4c4bfa8 --- /dev/null +++ b/data/mobs/ghoul.yaml @@ -0,0 +1,38 @@ +id: ghoul +name: ghoul +description: "A radiation-scarred crew member, barely recognizable as human. Its flesh glows faintly and its eyes are hollow sockets." +attack: 22 +strength: 22 +defense: 20 +hp: 54 +speed: 4 +aggressive: true +respawn_ticks: 35 +attack_type: crush +attack_bonus: 15 +strength_bonus: 12 +stab_defense: 20 +slash_defense: 25 +crush_defense: 15 +science_defense: -5 +ranged_defense: 20 +weakness: hydro +idle_descriptions: + - "shambles aimlessly and moans" + - "scratches at the walls leaving glowing marks" + - "stares blankly into the darkness" + - "emits a low, rattling groan" +combat_descriptions: + - "claws at %s with irradiated hands" + - "lunges at %s with a gurgling shriek" + - "bites %s with decaying teeth" +drops: + remains: bones + loot: + - item_id: credits + weight: 60 + quantity: 80 + - item_id: scrap_metal + weight: 25 + - table: herb_table_low + weight: 15 diff --git a/data/mobs/heavy_mech.yaml b/data/mobs/heavy_mech.yaml new file mode 100644 index 0000000..fa8db8c --- /dev/null +++ b/data/mobs/heavy_mech.yaml @@ -0,0 +1,42 @@ +id: heavy_mech +name: heavy mech +description: "A lumbering assault mech with layered armor plating and a rotary cannon arm. Steam vents from its exhaust ports with each step." +attack: 40 +strength: 44 +defense: 44 +hp: 94 +speed: 5 +aggressive: true +respawn_ticks: 70 +attack_type: crush +attack_bonus: 35 +strength_bonus: 35 +stab_defense: 55 +slash_defense: 55 +crush_defense: 65 +science_defense: -25 +ranged_defense: 40 +weakness: solar +idle_descriptions: + - "scans the room with a blue optical beam" + - "vents a cloud of steam" + - "rotates its cannon with a mechanical whine" + - "announces a threat level assessment" +combat_descriptions: + - "fires its rotary cannon at %s" + - "smashes %s with a hydraulic fist" + - "unleashes a missile salvo at %s" +drops: + remains: scrap_metal + loot: + - item_id: credits + weight: 55 + quantity: 1000 + - item_id: scrap_metal + weight: 25 + quantity: 8 + - table: gem_table + weight: 10 + - item_id: lawjunk + weight: 10 + quantity: 2 diff --git a/data/mobs/molten_elemental.yaml b/data/mobs/molten_elemental.yaml new file mode 100644 index 0000000..315e27a --- /dev/null +++ b/data/mobs/molten_elemental.yaml @@ -0,0 +1,42 @@ +id: molten_elemental +name: molten elemental +description: "A flowing mass of liquid metal and superheated slag, roughly humanoid. The air around it shimmers with heat and droplets of molten alloy drip to the floor." +attack: 48 +strength: 52 +defense: 52 +hp: 115 +speed: 5 +aggressive: true +respawn_ticks: 80 +attack_type: crush +attack_bonus: 40 +strength_bonus: 42 +stab_defense: 60 +slash_defense: 60 +crush_defense: 70 +science_defense: -30 +ranged_defense: 45 +weakness: hydro +idle_descriptions: + - "bubbles and churns, throwing off sparks" + - "melts a nearby chunk of metal absent-mindedly" + - "pulses with an inner orange glow" + - "drips glowing droplets onto the floor" +combat_descriptions: + - "hurls a glob of molten metal at %s" + - "engulfs %s in a wave of liquid fire" + - "smashes %s with a superheated limb" +drops: + remains: scrap_metal + loot: + - item_id: credits + weight: 50 + quantity: 2000 + - item_id: biojunk + weight: 20 + quantity: 3 + - item_id: bloodjunk + weight: 15 + quantity: 2 + - table: herb_table_high + weight: 15 diff --git a/data/mobs/mutant_rat.yaml b/data/mobs/mutant_rat.yaml new file mode 100644 index 0000000..11ec0ad --- /dev/null +++ b/data/mobs/mutant_rat.yaml @@ -0,0 +1,39 @@ +id: mutant_rat +name: mutant rat +description: "A bloated rodent with glowing green eyes and exposed muscle tissue. Bio-engineering runoff has made it unnaturally aggressive." +attack: 13 +strength: 13 +defense: 12 +hp: 32 +speed: 4 +aggressive: true +respawn_ticks: 25 +attack_type: crush +attack_bonus: 8 +strength_bonus: 6 +stab_defense: 15 +slash_defense: 15 +crush_defense: 10 +science_defense: -10 +ranged_defense: 5 +weakness: bio +idle_descriptions: + - "scurries frantically in circles" + - "gnaws on a rusted pipe" + - "emits a gurgling screech" + - "twitches unnaturally" +combat_descriptions: + - "bites %s with glowing teeth" + - "slashes %s with mutated claws" + - "lunges at %s with unnatural speed" +drops: + remains: bones + loot: + - item_id: credits + weight: 60 + quantity: 20 + - item_id: scrap_metal + weight: 30 + - item_id: credits + weight: 10 + quantity: 60 diff --git a/data/mobs/plasma_wraith.yaml b/data/mobs/plasma_wraith.yaml new file mode 100644 index 0000000..9600ddc --- /dev/null +++ b/data/mobs/plasma_wraith.yaml @@ -0,0 +1,43 @@ +id: plasma_wraith +name: plasma wraith +description: "A shimmering entity of contained plasma, vaguely humanoid in shape. It radiates intense heat and hums with barely contained energy." +attack: 1 +strength: 1 +defense: 22 +hp: 56 +science: 65 +speed: 4 +aggressive: true +respawn_ticks: 60 +attack_type: science +attack_bonus: 0 +strength_bonus: 0 +stab_defense: 30 +slash_defense: 30 +crush_defense: 25 +science_defense: 45 +ranged_defense: -10 +weakness: hydro +idle_descriptions: + - "drifts silently, leaving heat shimmer in its wake" + - "pulses with internal light" + - "phases partially through a wall" + - "emits a low frequency hum" +combat_descriptions: + - "lashes %s with a whip of plasma" + - "engulfs %s in a superheated cloud" + - "discharges a concentrated beam at %s" +drops: + remains: ectoplasm + loot: + - item_id: credits + weight: 50 + quantity: 400 + - item_id: chaosjunk + weight: 20 + quantity: 2 + - item_id: cosmicjunk + weight: 15 + quantity: 2 + - table: gem_table + weight: 15 diff --git a/data/mobs/psionic_entity.yaml b/data/mobs/psionic_entity.yaml new file mode 100644 index 0000000..4b71836 --- /dev/null +++ b/data/mobs/psionic_entity.yaml @@ -0,0 +1,46 @@ +id: psionic_entity +name: psionic entity +description: "A barely visible distortion in the air, only detectable by the pressure it exerts on your mind. When it focuses, you see a shimmering outline of something vast and ancient." +attack: 1 +strength: 1 +defense: 42 +hp: 128 +science: 97 +speed: 4 +aggressive: true +respawn_ticks: 100 +attack_type: science +attack_bonus: 0 +strength_bonus: 0 +stab_defense: 50 +slash_defense: 50 +crush_defense: 45 +science_defense: 70 +ranged_defense: -20 +idle_descriptions: + - "probes the edges of your consciousness" + - "flickers between visible and invisible states" + - "emits a subsonic pulse you feel in your teeth" + - "momentarily shows you visions of another dimension" +combat_descriptions: + - "assaults %s's mind with psionic force" + - "tears at %s's perception of reality" + - "unleashes a devastating mental blast at %s" +drops: + remains: ectoplasm + loot: + - item_id: credits + weight: 40 + quantity: 5000 + - item_id: lawjunk + weight: 20 + quantity: 5 + - item_id: cosmicjunk + weight: 15 + quantity: 5 + - table: gem_table + weight: 15 + - item_id: spectral_visor + weight: 5 + - table: herb_table_high + weight: 5 diff --git a/data/mobs/sawmill_operator.yaml b/data/mobs/sawmill_operator.yaml new file mode 100644 index 0000000..64f6e45 --- /dev/null +++ b/data/mobs/sawmill_operator.yaml @@ -0,0 +1,7 @@ +id: sawmill_operator +name: sawmill operator +behavior: sawmill_operator_talk +unique: true +color: "186" +description: "A burly worker in a thick apron, covered in sawdust. He operates the industrial sawmill." +idle: "The sawmill operator wipes sawdust from his goggles." diff --git a/data/mobs/scrap_bot.yaml b/data/mobs/scrap_bot.yaml new file mode 100644 index 0000000..5b5c3e3 --- /dev/null +++ b/data/mobs/scrap_bot.yaml @@ -0,0 +1,39 @@ +id: scrap_bot +name: scrap bot +description: "A malfunctioning maintenance robot that has gone rogue. Its chassis is covered in dents and rust, and one optical sensor flickers erratically." +attack: 15 +strength: 15 +defense: 14 +hp: 30 +speed: 5 +aggressive: true +respawn_ticks: 30 +attack_type: crush +attack_bonus: 10 +strength_bonus: 8 +stab_defense: 20 +slash_defense: 15 +crush_defense: 25 +science_defense: -5 +ranged_defense: 10 +idle_descriptions: + - "beeps erratically and twitches" + - "bumps into a wall and reverses" + - "emits a burst of static" + - "scans the floor with a flickering beam" +combat_descriptions: + - "rams %s with its chassis" + - "swings a broken manipulator arm at %s" + - "discharges a spark at %s" +drops: + remains: scrap_metal + loot: + - item_id: credits + weight: 60 + quantity: 40 + - item_id: scrap_metal + weight: 30 + quantity: 2 + - item_id: credits + weight: 10 + quantity: 100 diff --git a/data/mobs/security_turret.yaml b/data/mobs/security_turret.yaml new file mode 100644 index 0000000..3d6b774 --- /dev/null +++ b/data/mobs/security_turret.yaml @@ -0,0 +1,41 @@ +id: security_turret +name: security turret +description: "A ceiling-mounted auto-turret with twin barrels and a red targeting laser. It tracks you with mechanical precision." +attack: 1 +strength: 1 +defense: 16 +hp: 44 +ranged: 34 +speed: 5 +aggressive: true +respawn_ticks: 40 +attack_type: ranged +attack_bonus: 0 +strength_bonus: 0 +stab_defense: 30 +slash_defense: 20 +crush_defense: 40 +science_defense: -20 +ranged_defense: 15 +weakness: solar +idle_descriptions: + - "pans the room with a targeting laser" + - "emits a rhythmic clicking sound" + - "calibrates its targeting sensors" + - "beeps a warning tone" +combat_descriptions: + - "fires twin bolts at %s" + - "unleashes a burst of rounds at %s" + - "locks onto %s and opens fire" +drops: + remains: scrap_metal + loot: + - item_id: credits + weight: 70 + quantity: 100 + - item_id: scrap_metal + weight: 20 + quantity: 3 + - item_id: credits + weight: 10 + quantity: 250 diff --git a/data/mobs/titan_sentinel.yaml b/data/mobs/titan_sentinel.yaml new file mode 100644 index 0000000..554ab4b --- /dev/null +++ b/data/mobs/titan_sentinel.yaml @@ -0,0 +1,41 @@ +id: titan_sentinel +name: titan sentinel +description: "A colossal automaton, the bigger brother of the iron sentinel. Its armor is reinforced adamantite alloy and its optics burn with crimson fire." +attack: 50 +strength: 52 +defense: 56 +hp: 132 +speed: 5 +aggressive: true +respawn_ticks: 120 +attack_type: crush +attack_bonus: 48 +strength_bonus: 45 +stab_defense: 90 +slash_defense: 90 +crush_defense: 80 +science_defense: -35 +ranged_defense: 60 +weakness: solar +idle_descriptions: + - "stands motionless, gyros humming" + - "scans the area with a sweeping crimson beam" + - "vents superheated exhaust" + - "rotates its armored torso with a deep grinding sound" +combat_descriptions: + - "smashes %s with a titan-grade fist" + - "unleashes a devastating plasma barrage at %s" + - "drives %s into the ground with overwhelming force" +drops: + loot: + - item_id: scrap_metal + weight: 30 + quantity: 10 + - item_id: credits + weight: 50 + quantity: 8000 + - table: gem_table + weight: 15 + - item_id: deathjunk + weight: 5 + quantity: 5 diff --git a/data/mobs/veteran_merc.yaml b/data/mobs/veteran_merc.yaml new file mode 100644 index 0000000..a33e73d --- /dev/null +++ b/data/mobs/veteran_merc.yaml @@ -0,0 +1,42 @@ +id: veteran_merc +name: veteran merc +description: "A battle-hardened soldier with a high-powered rifle and tactical armor covered in campaign patches. Their cybernetic eye locks onto you instantly." +attack: 1 +strength: 1 +defense: 40 +hp: 93 +ranged: 79 +speed: 5 +aggressive: true +respawn_ticks: 65 +attack_type: ranged +attack_bonus: 0 +strength_bonus: 0 +stab_defense: 40 +slash_defense: 40 +crush_defense: 35 +science_defense: 20 +ranged_defense: 55 +idle_descriptions: + - "checks their rifle's ammunition counter" + - "adjusts their tactical vest" + - "scans the area through their scope" + - "spits and mutters a war story" +combat_descriptions: + - "fires a high-caliber round at %s" + - "puts %s in their crosshairs and squeezes the trigger" + - "unleashes suppressive fire at %s" +drops: + remains: bones + loot: + - item_id: credits + weight: 55 + quantity: 1200 + - item_id: chaosjunk + weight: 15 + quantity: 2 + - item_id: deathjunk + weight: 15 + quantity: 2 + - table: herb_table_mid + weight: 15 diff --git a/data/mobs/void_reaper.yaml b/data/mobs/void_reaper.yaml new file mode 100644 index 0000000..8c48d07 --- /dev/null +++ b/data/mobs/void_reaper.yaml @@ -0,0 +1,52 @@ +id: void_reaper +name: void reaper +description: "A shadowy figure that seems to absorb light itself. Its form shifts between a hooded specter and an armored construct. A scythe of dark energy flickers in its grasp." +attack: 62 +strength: 68 +defense: 72 +hp: 170 +speed: 3 +aggressive: true +respawn_ticks: 200 +attack_type: slash +attack_bonus: 60 +strength_bonus: 60 +stab_defense: 100 +slash_defense: 110 +crush_defense: 90 +science_defense: -45 +ranged_defense: 75 +weakness: bio +assassin_level: 80 +finishing_blow: lawjunk +idle_descriptions: + - "flickers in and out of existence" + - "draws the warmth from the surrounding air" + - "whispers in a language that predates humanity" + - "reaches out with shadowy tendrils" +combat_descriptions: + - "swings its void scythe at %s" + - "drains the life force from %s" + - "envelops %s in absolute darkness" +drops: + remains: ectoplasm + loot: + - item_id: credits + weight: 30 + quantity: 20000 + - item_id: law_identifier + weight: 5 + - item_id: death_identifier + weight: 5 + - item_id: blood_identifier + weight: 5 + - item_id: bloodjunk + weight: 20 + quantity: 10 + - table: gem_table + weight: 15 + - item_id: uncut_diamond + weight: 10 + quantity: 5 + - table: herb_table_high + weight: 10 diff --git a/data/mobs/war_drone.yaml b/data/mobs/war_drone.yaml new file mode 100644 index 0000000..c9d1bbe --- /dev/null +++ b/data/mobs/war_drone.yaml @@ -0,0 +1,42 @@ +id: war_drone +name: war drone +description: "An upgraded combat drone with reinforced plating and a heavier weapons array. Its targeting systems whir as it locks onto you." +attack: 25 +strength: 28 +defense: 25 +hp: 65 +speed: 4 +aggressive: true +respawn_ticks: 50 +attack_type: slash +attack_bonus: 20 +strength_bonus: 18 +stab_defense: 35 +slash_defense: 30 +crush_defense: 40 +science_defense: -10 +ranged_defense: 20 +weakness: solar +idle_descriptions: + - "hovers aggressively, weapons armed" + - "emits a low, threatening hum" + - "paints a targeting reticle on the wall" + - "cycles through weapon modes with a click" +combat_descriptions: + - "fires a plasma bolt at %s" + - "slashes at %s with a rotary blade" + - "launches a concussion grenade at %s" +drops: + remains: circuit_board + loot: + - item_id: credits + weight: 60 + quantity: 200 + - item_id: scrap_metal + weight: 20 + quantity: 4 + - item_id: credits + weight: 10 + quantity: 500 + - table: gem_table + weight: 10 diff --git a/data/objects/bank_booth.yaml b/data/objects/bank_booth.yaml new file mode 100644 index 0000000..0cc9fc7 --- /dev/null +++ b/data/objects/bank_booth.yaml @@ -0,0 +1,5 @@ +id: bank_booth +name: bank booth +color: "226" +description: "A sleek terminal with a biometric scanner. You can deposit or withdraw items here. Type 'bank' to access it." +inroom_description: "A bank booth is set into the wall." diff --git a/data/objects/estate_directory.yaml b/data/objects/estate_directory.yaml new file mode 100644 index 0000000..3c1ecec --- /dev/null +++ b/data/objects/estate_directory.yaml @@ -0,0 +1,5 @@ +id: estate_directory +name: Estate Directory +color: "39" +description: "A holographic terminal displaying property records. The screen glows with a soft cyan light." +inroom_description: "An estate directory terminal stands in the center of the neighborhood." diff --git a/data/objects/netrunner.yaml b/data/objects/netrunner.yaml new file mode 100644 index 0000000..f81f7c5 --- /dev/null +++ b/data/objects/netrunner.yaml @@ -0,0 +1,6 @@ +id: netrunner +name: Netrunner +color: "39" +behavior: netrunner_talk +description: "A wiry figure hunched over a custom rig, fingers dancing across holographic keys. Cables snake from the back of their neck into the terminal. They glance up at you with augmented eyes." +inroom_description: "A {39}Netrunner{/} sits cross-legged on the floor, wired into the network." diff --git a/data/objects/terminal_advanced.yaml b/data/objects/terminal_advanced.yaml new file mode 100644 index 0000000..ca2cde7 --- /dev/null +++ b/data/objects/terminal_advanced.yaml @@ -0,0 +1,5 @@ +id: terminal_advanced +name: advanced terminal +color: "33" +description: "A sleek terminal with a holographic display. Encrypted data streams flow across the screen in complex patterns. {33}[Level 20 Hacking]{/}" +inroom_description: "An {33}advanced terminal{/} projects a holographic interface." diff --git a/data/objects/terminal_basic.yaml b/data/objects/terminal_basic.yaml new file mode 100644 index 0000000..3e1b35a --- /dev/null +++ b/data/objects/terminal_basic.yaml @@ -0,0 +1,5 @@ +id: terminal_basic +name: basic terminal +color: "40" +description: "A battered terminal with a cracked screen. Faded text scrolls across the display -- it looks like it's running some kind of legacy intrusion detection system. {40}[Level 1 Hacking]{/}" +inroom_description: "A {40}basic terminal{/} hums quietly against the wall." diff --git a/data/objects/terminal_secure.yaml b/data/objects/terminal_secure.yaml new file mode 100644 index 0000000..f196a86 --- /dev/null +++ b/data/objects/terminal_secure.yaml @@ -0,0 +1,5 @@ +id: terminal_secure +name: secure terminal +color: "196" +description: "A heavily reinforced terminal embedded in the wall. Warning glyphs pulse across its surface. A bluffing protocol runs on loop -- it's probing you as much as you're probing it. {196}[Level 40 Hacking]{/}" +inroom_description: "A {196}secure terminal{/} glows with warning indicators." diff --git a/data/objects/workbench.yaml b/data/objects/workbench.yaml new file mode 100644 index 0000000..d3dd396 --- /dev/null +++ b/data/objects/workbench.yaml @@ -0,0 +1,5 @@ +id: workbench +name: workbench +color: "172" +description: "A sturdy wooden workbench covered in sawdust, nails, and blueprints. The surface is worn from years of crafting." +inroom_description: "A workbench stands against the wall, cluttered with tools and wood shavings." diff --git a/data/recipes/construct_mahogany_planks.yaml b/data/recipes/construct_mahogany_planks.yaml new file mode 100644 index 0000000..07e0f40 --- /dev/null +++ b/data/recipes/construct_mahogany_planks.yaml @@ -0,0 +1,12 @@ +id: construct_mahogany_planks +type: construction +level: 50 +xp: 30 +wait: 20 +station: [workbench] +tool: saw +consume: + - items: [mahogany_logs] + qty: 1 +output: mahogany_planks +message: "You saw the mahogany logs into luxurious mahogany planks." diff --git a/data/recipes/construct_mahogany_table.yaml b/data/recipes/construct_mahogany_table.yaml new file mode 100644 index 0000000..252736f --- /dev/null +++ b/data/recipes/construct_mahogany_table.yaml @@ -0,0 +1,11 @@ +id: construct_mahogany_table +type: construction +level: 52 +xp: 120 +wait: 6 +station: [workbench] +consume: + - items: [mahogany_planks] + qty: 3 +output: mahogany_table +message: "You build a luxurious mahogany table." diff --git a/data/recipes/construct_oak_planks.yaml b/data/recipes/construct_oak_planks.yaml new file mode 100644 index 0000000..5858208 --- /dev/null +++ b/data/recipes/construct_oak_planks.yaml @@ -0,0 +1,12 @@ +id: construct_oak_planks +type: construction +level: 15 +xp: 10 +wait: 20 +station: [workbench] +tool: saw +consume: + - items: [oak_logs] + qty: 1 +output: oak_planks +message: "You saw the oak logs into sturdy oak planks." diff --git a/data/recipes/construct_oak_shelf.yaml b/data/recipes/construct_oak_shelf.yaml new file mode 100644 index 0000000..8661679 --- /dev/null +++ b/data/recipes/construct_oak_shelf.yaml @@ -0,0 +1,11 @@ +id: construct_oak_shelf +type: construction +level: 18 +xp: 40 +wait: 6 +station: [workbench] +consume: + - items: [oak_planks] + qty: 2 +output: oak_shelf +message: "You assemble the oak planks into a sturdy shelf." diff --git a/data/recipes/construct_oak_table.yaml b/data/recipes/construct_oak_table.yaml new file mode 100644 index 0000000..e8eff24 --- /dev/null +++ b/data/recipes/construct_oak_table.yaml @@ -0,0 +1,11 @@ +id: construct_oak_table +type: construction +level: 20 +xp: 50 +wait: 6 +station: [workbench] +consume: + - items: [oak_planks] + qty: 3 +output: oak_table +message: "You build a fine oak table." diff --git a/data/recipes/construct_planks.yaml b/data/recipes/construct_planks.yaml new file mode 100644 index 0000000..4a2a363 --- /dev/null +++ b/data/recipes/construct_planks.yaml @@ -0,0 +1,12 @@ +id: construct_planks +type: construction +level: 1 +xp: 5 +wait: 20 +station: [workbench] +tool: saw +consume: + - items: [logs] + qty: 1 +output: planks +message: "You saw the logs into some regular planks." diff --git a/data/recipes/construct_teak_planks.yaml b/data/recipes/construct_teak_planks.yaml new file mode 100644 index 0000000..022ff7f --- /dev/null +++ b/data/recipes/construct_teak_planks.yaml @@ -0,0 +1,12 @@ +id: construct_teak_planks +type: construction +level: 35 +xp: 20 +wait: 20 +station: [workbench] +tool: saw +consume: + - items: [teak_logs] + qty: 1 +output: teak_planks +message: "You saw the teak logs into fine teak planks." diff --git a/data/recipes/construct_teak_table.yaml b/data/recipes/construct_teak_table.yaml new file mode 100644 index 0000000..db926b8 --- /dev/null +++ b/data/recipes/construct_teak_table.yaml @@ -0,0 +1,11 @@ +id: construct_teak_table +type: construction +level: 38 +xp: 80 +wait: 6 +station: [workbench] +consume: + - items: [teak_planks] + qty: 3 +output: teak_table +message: "You build an elegant teak table." diff --git a/data/recipes/construct_wooden_chair.yaml b/data/recipes/construct_wooden_chair.yaml new file mode 100644 index 0000000..cad6200 --- /dev/null +++ b/data/recipes/construct_wooden_chair.yaml @@ -0,0 +1,11 @@ +id: construct_wooden_chair +type: construction +level: 8 +xp: 30 +wait: 6 +station: [workbench] +consume: + - items: [planks] + qty: 2 +output: wooden_chair +message: "You craft a comfortable wooden chair." diff --git a/data/recipes/construct_wooden_shelf.yaml b/data/recipes/construct_wooden_shelf.yaml new file mode 100644 index 0000000..f09a199 --- /dev/null +++ b/data/recipes/construct_wooden_shelf.yaml @@ -0,0 +1,11 @@ +id: construct_wooden_shelf +type: construction +level: 4 +xp: 20 +wait: 6 +station: [workbench] +consume: + - items: [planks] + qty: 2 +output: wooden_shelf +message: "You assemble the planks into a wooden shelf." diff --git a/data/recipes/construct_wooden_table.yaml b/data/recipes/construct_wooden_table.yaml new file mode 100644 index 0000000..8451f31 --- /dev/null +++ b/data/recipes/construct_wooden_table.yaml @@ -0,0 +1,11 @@ +id: construct_wooden_table +type: construction +level: 6 +xp: 25 +wait: 6 +station: [workbench] +consume: + - items: [planks] + qty: 3 +output: wooden_table +message: "You build a sturdy wooden table." diff --git a/data/rooms/1.yaml b/data/rooms/1.yaml index fa3fb9b..c4ec261 100644 --- a/data/rooms/1.yaml +++ b/data/rooms/1.yaml @@ -10,6 +10,7 @@ exits: objects: - id: lumby_fountain - id: charging_station + - id: bank_booth mobs: - "newbie_trainer" - "general_store_clerk" diff --git a/data/rooms/10.yaml b/data/rooms/10.yaml index 73ac75a..edeac4d 100644 --- a/data/rooms/10.yaml +++ b/data/rooms/10.yaml @@ -7,3 +7,4 @@ exits: mobs: - id: skeleton - id: skeleton + - id: mutant_rat diff --git a/data/rooms/12.yaml b/data/rooms/12.yaml index 0c4443b..80380b8 100644 --- a/data/rooms/12.yaml +++ b/data/rooms/12.yaml @@ -9,6 +9,7 @@ mobs: objects: - id: furnace - id: anvil + - id: bank_booth spawns: - item_id: copper_ore quantity: 3 diff --git a/data/rooms/16.yaml b/data/rooms/16.yaml index 115d55b..3776f4f 100644 --- a/data/rooms/16.yaml +++ b/data/rooms/16.yaml @@ -1,8 +1,12 @@ id: 16 name: "Construction Site" -description: "A half-built structure surrounded by planks, nails, and blueprints. This area is not yet accessible." +description: "A half-built structure surrounded by planks, nails, and blueprints. A workbench stands ready for crafting. Signs point north toward the Local Neighborhood and east toward the lumberyard." exits: - east: 17 + east: 171 west: 15 + north: 170 +objects: + - id: workbench mobs: - id: greater_drone + - id: estate_broker diff --git a/data/rooms/17.yaml b/data/rooms/17.yaml index 80b1dfc..512ec9e 100644 --- a/data/rooms/17.yaml +++ b/data/rooms/17.yaml @@ -1,6 +1,10 @@ id: 17 name: "Bonfire" -description: "A ring of stones surrounds a bed of ash. A few unlit logs wait nearby. This area is not yet accessible." +description: "A ring of stones surrounds a bed of ash. A few unlit logs wait nearby. A narrow passage leads north toward what sounds like echoing footsteps and clanging metal." exits: east: 18 west: 16 + north: 200 +mobs: + - id: scrap_bot + - id: scrap_bot diff --git a/data/rooms/170.yaml b/data/rooms/170.yaml new file mode 100644 index 0000000..35d539f --- /dev/null +++ b/data/rooms/170.yaml @@ -0,0 +1,7 @@ +id: 170 +name: "Local Neighborhood" +description: "A quiet cul-de-sac of modest homes, each with a small garden plot. An estate directory terminal glows in the center, listing residents and property information." +exits: + south: 16 +objects: + - id: estate_directory diff --git a/data/rooms/171.yaml b/data/rooms/171.yaml new file mode 100644 index 0000000..552ccd4 --- /dev/null +++ b/data/rooms/171.yaml @@ -0,0 +1,7 @@ +id: 171 +name: "Lumberyard" +description: "Stacks of fresh-cut timber fill the air with the scent of pine. A massive industrial sawmill hums in the background, operated by a burly worker." +exits: + west: 16 +mobs: + - id: sawmill_operator diff --git a/data/rooms/200.yaml b/data/rooms/200.yaml new file mode 100644 index 0000000..469e214 --- /dev/null +++ b/data/rooms/200.yaml @@ -0,0 +1,8 @@ +id: 200 +name: "Agility Training Grounds" +description: "A cavernous space beneath the asteroid's surface, repurposed as a training facility. Scaffolding, pipes, and platforms fill the chamber. Signs point to three courses of increasing difficulty: {33}Ventilation Shaft{/} (beginner), {214}Rooftop{/} (intermediate), and {196}Reactor{/} (advanced)." +exits: + south: 17 + north: 201 + east: 210 + west: 220 diff --git a/data/rooms/201.yaml b/data/rooms/201.yaml new file mode 100644 index 0000000..2beb2ec --- /dev/null +++ b/data/rooms/201.yaml @@ -0,0 +1,9 @@ +id: 201 +name: "Ventilation Shaft - Corroded Wall" +description: "A towering wall of corroded ventilation panels rises before you. Rust-eaten handholds and buckled seams offer a treacherous path upward. The air smells of old metal and recycled atmosphere." +on_enter: + - message: "Type 'scramble' to climb the wall." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/202.yaml b/data/rooms/202.yaml new file mode 100644 index 0000000..b9c0292 --- /dev/null +++ b/data/rooms/202.yaml @@ -0,0 +1,9 @@ +id: 202 +name: "Ventilation Shaft - Coolant Pipe Walkway" +description: "A narrow coolant pipe stretches across a dark chasm. Condensation drips from its surface, making it slick. Far below, you can hear the distant hum of machinery." +on_enter: + - message: "Type 'balance' to cross the pipe." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/203.yaml b/data/rooms/203.yaml new file mode 100644 index 0000000..4f5d883 --- /dev/null +++ b/data/rooms/203.yaml @@ -0,0 +1,9 @@ +id: 203 +name: "Ventilation Shaft - Shaft Gap" +description: "The ventilation shaft floor is missing here -- a jagged gap drops into darkness. The far side is just barely within jumping distance. Exposed wiring sparks intermittently below." +on_enter: + - message: "Type 'jump' to leap across the gap." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/204.yaml b/data/rooms/204.yaml new file mode 100644 index 0000000..2d82040 --- /dev/null +++ b/data/rooms/204.yaml @@ -0,0 +1,9 @@ +id: 204 +name: "Ventilation Shaft - Narrow Vent" +description: "The passage narrows dramatically here, becoming a tight rectangular vent barely wide enough to fit through. Scratches on the metal walls suggest others have squeezed through before you." +on_enter: + - message: "Type 'crawl' to squeeze through the vent." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/205.yaml b/data/rooms/205.yaml new file mode 100644 index 0000000..d814f7d --- /dev/null +++ b/data/rooms/205.yaml @@ -0,0 +1,9 @@ +id: 205 +name: "Ventilation Shaft - Emergency Chute" +description: "A smooth metal chute angles steeply downward, polished by countless slides. An old emergency evacuation sign hangs crookedly on the wall. This is the final obstacle -- the chute leads back to the training grounds." +on_enter: + - message: "Type 'slide' to descend the chute." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/210.yaml b/data/rooms/210.yaml new file mode 100644 index 0000000..2b86500 --- /dev/null +++ b/data/rooms/210.yaml @@ -0,0 +1,9 @@ +id: 210 +name: "Rooftop Course - Hab Block Wall" +description: "The exterior wall of Hab Block 7 rises three stories above the street. Rough permacrete and maintenance handholds provide a challenging climb. The city spreads out below, neon signs flickering in the perpetual twilight." +on_enter: + - message: "Type 'climb' to scale the wall." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/211.yaml b/data/rooms/211.yaml new file mode 100644 index 0000000..8b1f069 --- /dev/null +++ b/data/rooms/211.yaml @@ -0,0 +1,9 @@ +id: 211 +name: "Rooftop Course - Building Gap" +description: "You stand on the edge of Hab Block 7's roof. Across a three-meter gap, the roof of Hab Block 8 awaits. The street below is a dizzying drop. A few old bootprints mark the takeoff point." +on_enter: + - message: "Type 'jump' to leap to the next building." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/212.yaml b/data/rooms/212.yaml new file mode 100644 index 0000000..0393a7e --- /dev/null +++ b/data/rooms/212.yaml @@ -0,0 +1,9 @@ +id: 212 +name: "Rooftop Course - Cable Array" +description: "A tangle of power cables and data lines stretches between two antenna towers. One thick cable hangs low enough to grab. The gap below drops to a dark alleyway between hab blocks." +on_enter: + - message: "Type 'swing' to cross on the cable." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/213.yaml b/data/rooms/213.yaml new file mode 100644 index 0000000..be3b736 --- /dev/null +++ b/data/rooms/213.yaml @@ -0,0 +1,9 @@ +id: 213 +name: "Rooftop Course - Narrow Beam" +description: "A structural I-beam extends across the gap between two buildings, no wider than your foot. It sways slightly in the recycled air currents. Someone has scratched tally marks into the near end." +on_enter: + - message: "Type 'balance' to cross the beam." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/214.yaml b/data/rooms/214.yaml new file mode 100644 index 0000000..9f9e081 --- /dev/null +++ b/data/rooms/214.yaml @@ -0,0 +1,9 @@ +id: 214 +name: "Rooftop Course - Maintenance Railing" +description: "A high maintenance railing blocks the path forward, topped with sensor equipment and warning labels. It's too high to step over but the right technique could clear it. Beyond the railing, the course continues." +on_enter: + - message: "Type 'vault' to clear the railing." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/215.yaml b/data/rooms/215.yaml new file mode 100644 index 0000000..7ea39f9 --- /dev/null +++ b/data/rooms/215.yaml @@ -0,0 +1,9 @@ +id: 215 +name: "Rooftop Course - Rooftop Edge" +description: "The final jump. The gap here is wider than any before -- a full four meters of empty air between you and the landing platform. Far below, the streets of the asteroid colony pulse with dim light. This is the last obstacle." +on_enter: + - message: "Type 'leap' to make the final jump." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/220.yaml b/data/rooms/220.yaml new file mode 100644 index 0000000..d6826a3 --- /dev/null +++ b/data/rooms/220.yaml @@ -0,0 +1,9 @@ +id: 220 +name: "Reactor Course - Scaffolding" +description: "Massive metal scaffolding surrounds the outer reactor housing. The structure vibrates with the reactor's pulse. Heat radiates from every surface, and warning klaxons sound periodically in the distance." +on_enter: + - message: "Type 'climb' to ascend the scaffolding." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/221.yaml b/data/rooms/221.yaml new file mode 100644 index 0000000..936ee65 --- /dev/null +++ b/data/rooms/221.yaml @@ -0,0 +1,9 @@ +id: 221 +name: "Reactor Course - Coolant Chain" +description: "A heavy chain hangs from an overhead crane, suspended above the reactor cooling pit. The pit glows with an eerie blue-green light. The chain is your only way across -- the gantry ahead is the landing zone." +on_enter: + - message: "Type 'swing' to cross on the chain." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/222.yaml b/data/rooms/222.yaml new file mode 100644 index 0000000..119db01 --- /dev/null +++ b/data/rooms/222.yaml @@ -0,0 +1,9 @@ +id: 222 +name: "Reactor Course - Steam Pipe" +description: "An enormous steam pipe, two meters in diameter, stretches across the reactor chamber. Steam vents periodically blast from pressure valves along its length. The pipe's surface is warm but not scalding -- yet." +on_enter: + - message: "Type 'balance' to traverse the pipe." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/223.yaml b/data/rooms/223.yaml new file mode 100644 index 0000000..0e557f6 --- /dev/null +++ b/data/rooms/223.yaml @@ -0,0 +1,9 @@ +id: 223 +name: "Reactor Course - Platform Gap" +description: "A section of the reactor maintenance platform has collapsed into the void below. Emergency barriers block the edges, but someone has moved them aside here. The gap is intimidating but clearable." +on_enter: + - message: "Type 'jump' to clear the gap." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/224.yaml b/data/rooms/224.yaml new file mode 100644 index 0000000..4e70f7a --- /dev/null +++ b/data/rooms/224.yaml @@ -0,0 +1,9 @@ +id: 224 +name: "Reactor Course - Service Conduit" +description: "A narrow service conduit leads through the reactor shielding. Radiation warning symbols are painted on every surface. Damaged wiring hangs from the ceiling, sparking occasionally. It's the only way forward." +on_enter: + - message: "Type 'crawl' to enter the conduit." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/225.yaml b/data/rooms/225.yaml new file mode 100644 index 0000000..3413792 --- /dev/null +++ b/data/rooms/225.yaml @@ -0,0 +1,9 @@ +id: 225 +name: "Reactor Course - Radiation Barrier" +description: "A containment barrier hums with energy, its surface shimmering with a faint purple glow. It pulses on and off in a regular cycle. Beyond it, the final stretch of the course is visible." +on_enter: + - message: "Type 'vault' to clear the barrier." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/226.yaml b/data/rooms/226.yaml new file mode 100644 index 0000000..6faa2c1 --- /dev/null +++ b/data/rooms/226.yaml @@ -0,0 +1,9 @@ +id: 226 +name: "Reactor Course - Reactor Chasm" +description: "The final obstacle. A massive chasm separates you from the exit platform, the reactor's coolant pool churning far below in shades of luminous green. A narrow runway of grating leads to the edge. This is the longest leap on the course." +on_enter: + - message: "Type 'leap' to make the final jump." +exits: + down: + room: 200 + blocked_message: "" diff --git a/data/rooms/54.yaml b/data/rooms/54.yaml index 5bb6a1d..e86e5b7 100644 --- a/data/rooms/54.yaml +++ b/data/rooms/54.yaml @@ -3,6 +3,7 @@ name: "The Void Chamber" description: "A vast cavern where reality seems to thin. The air shimmers with {141}spectral energy{/} and strange whispers fill your mind." exits: north: 53 + down: 55 mobs: - "phantom" - "phantom" diff --git a/data/rooms/55.yaml b/data/rooms/55.yaml new file mode 100644 index 0000000..8000170 --- /dev/null +++ b/data/rooms/55.yaml @@ -0,0 +1,12 @@ +id: 55 +name: "The Deeper Tunnels" +description: "A junction deep beneath the void chamber. The walls here are reinforced with pre-regression alloys. Several passages branch off into the darkness, and you can hear the sounds of machinery echoing from all directions. A steep shaft descends further into the depths." +exits: + up: 54 + north: 56 + east: 57 + south: 58 + west: 60 + down: 62 +mobs: + - id: security_turret diff --git a/data/rooms/56.yaml b/data/rooms/56.yaml new file mode 100644 index 0000000..375696d --- /dev/null +++ b/data/rooms/56.yaml @@ -0,0 +1,9 @@ +id: 56 +name: "Irradiated Sector" +description: "Warning symbols cover every surface, their paint long since faded. A faint green glow emanates from cracks in the walls. The air is thick with the taste of old radiation." +exits: + south: 55 +mobs: + - id: ghoul + - id: ghoul + - id: corrupted_scientist diff --git a/data/rooms/57.yaml b/data/rooms/57.yaml new file mode 100644 index 0000000..714197d --- /dev/null +++ b/data/rooms/57.yaml @@ -0,0 +1,8 @@ +id: 57 +name: "Drone Assembly" +description: "A long-abandoned drone manufacturing bay. Conveyor belts lie still, and half-assembled drone chassis hang from the ceiling. A few of them still twitch with residual power." +exits: + west: 55 +mobs: + - id: war_drone + - id: war_drone diff --git a/data/rooms/58.yaml b/data/rooms/58.yaml new file mode 100644 index 0000000..f4d1829 --- /dev/null +++ b/data/rooms/58.yaml @@ -0,0 +1,8 @@ +id: 58 +name: "Security Checkpoint" +description: "A fortified security station with blast shields and a decommissioned weapons locker. Scorch marks on the walls tell the story of a last stand." +exits: + north: 55 + south: 59 +mobs: + - id: enforcer_bot diff --git a/data/rooms/59.yaml b/data/rooms/59.yaml new file mode 100644 index 0000000..a1cc594 --- /dev/null +++ b/data/rooms/59.yaml @@ -0,0 +1,9 @@ +id: 59 +name: "Plasma Core" +description: "A massive plasma containment chamber with cracked magnetic coils lining the walls. Streams of superheated gas leak from the containment vessel, forming shimmering wraith-like shapes in the air." +exits: + north: 58 +mobs: + - id: plasma_wraith + - id: plasma_wraith + - id: feral_cyborg diff --git a/data/rooms/60.yaml b/data/rooms/60.yaml new file mode 100644 index 0000000..e9b7114 --- /dev/null +++ b/data/rooms/60.yaml @@ -0,0 +1,8 @@ +id: 60 +name: "Heavy Mech Bay" +description: "An enormous maintenance bay built to house assault mechs. A gantry crane hangs overhead, and hydraulic lifts dot the floor. The bay's occupant is still active — and it has noticed you." +exits: + east: 55 + west: 61 +mobs: + - id: heavy_mech diff --git a/data/rooms/61.yaml b/data/rooms/61.yaml new file mode 100644 index 0000000..a85c7ba --- /dev/null +++ b/data/rooms/61.yaml @@ -0,0 +1,7 @@ +id: 61 +name: "Synth Lab" +description: "A sterile laboratory where combat androids were designed and assembled. White panels line the walls, some splattered with old coolant stains. Diagnostic screens flicker with corrupted data." +exits: + east: 60 +mobs: + - id: elite_synth diff --git a/data/rooms/62.yaml b/data/rooms/62.yaml new file mode 100644 index 0000000..9ed1fad --- /dev/null +++ b/data/rooms/62.yaml @@ -0,0 +1,8 @@ +id: 62 +name: "Abandoned Bunker" +description: "A fortified bunker from some forgotten conflict. Sandbags are piled in the corners and spent shell casings litter the floor. A solitary figure stands watch over the remains." +exits: + up: 55 + down: 63 +mobs: + - id: veteran_merc diff --git a/data/rooms/63.yaml b/data/rooms/63.yaml new file mode 100644 index 0000000..b6bf53e --- /dev/null +++ b/data/rooms/63.yaml @@ -0,0 +1,8 @@ +id: 63 +name: "Magma Conduit" +description: "A geothermal vent has been tapped and routed through industrial conduits. The heat is oppressive, and molten rivulets course through channels in the floor. Something moves within the glowing flow." +exits: + up: 62 + down: 64 +mobs: + - id: molten_elemental diff --git a/data/rooms/64.yaml b/data/rooms/64.yaml new file mode 100644 index 0000000..b412992 --- /dev/null +++ b/data/rooms/64.yaml @@ -0,0 +1,8 @@ +id: 64 +name: "The Foundry" +description: "A vast smelting facility where sentinels were once forged. Massive crucibles hang from chains, and rivers of cooled slag form a maze-like floor. A single iron sentinel stands guard over the dormant machinery." +exits: + up: 63 + down: 65 +mobs: + - id: iron_sentinel diff --git a/data/rooms/65.yaml b/data/rooms/65.yaml new file mode 100644 index 0000000..47aed6b --- /dev/null +++ b/data/rooms/65.yaml @@ -0,0 +1,8 @@ +id: 65 +name: "Titan's Rest" +description: "A colossal vault built to house something immense. The ceiling vanishes into darkness above, and the walls are etched with maintenance schematics for a machine of staggering proportions. At the center, a titan sentinel awakens." +exits: + up: 64 + down: 66 +mobs: + - id: titan_sentinel diff --git a/data/rooms/66.yaml b/data/rooms/66.yaml new file mode 100644 index 0000000..755d5e2 --- /dev/null +++ b/data/rooms/66.yaml @@ -0,0 +1,8 @@ +id: 66 +name: "Psionic Nexus" +description: "Reality grows thin here. The walls are covered in strange geometric patterns that hurt to look at directly. A low hum vibrates through your skull, and the air seems to bend around a central point of unseen pressure." +exits: + up: 65 + down: 67 +mobs: + - id: psionic_entity diff --git a/data/rooms/67.yaml b/data/rooms/67.yaml new file mode 100644 index 0000000..6b8d663 --- /dev/null +++ b/data/rooms/67.yaml @@ -0,0 +1,8 @@ +id: 67 +name: "Ancient Chamber" +description: "A perfectly spherical room carved from an unknown black metal. Glowing runes spiral across every surface in patterns that predate the asteroid itself. At the center, an ancient construct stirs from its eons-long vigil." +exits: + up: 66 + down: 68 +mobs: + - id: ancient_construct diff --git a/data/rooms/68.yaml b/data/rooms/68.yaml new file mode 100644 index 0000000..f631981 --- /dev/null +++ b/data/rooms/68.yaml @@ -0,0 +1,7 @@ +id: 68 +name: "The Void" +description: "The bottom of the world. Light itself seems to hesitate before entering this place. The floor is unnaturally smooth black glass, and the only sound is the beating of your own heart. Something waits in the darkness — something that was here before the asteroid, before the colony, before anything." +exits: + up: 67 +mobs: + - id: void_reaper diff --git a/data/rooms/7.yaml b/data/rooms/7.yaml index 7458314..37dfed9 100644 --- a/data/rooms/7.yaml +++ b/data/rooms/7.yaml @@ -6,3 +6,4 @@ exits: mobs: - id: goblin - id: goblin + - id: bandit diff --git a/data/rooms/8.yaml b/data/rooms/8.yaml index 4e36af4..b82c1bb 100644 --- a/data/rooms/8.yaml +++ b/data/rooms/8.yaml @@ -1,6 +1,11 @@ id: 8 name: "Hacking Lab" -description: "A dimly lit room filled with old terminals and flickering screens. This area is not yet accessible." +description: "A dimly lit room filled with old terminals and flickering screens. Cables dangle from the ceiling, some still sparking. The air smells of ozone and burnt circuitry. A {40}basic terminal{/} against the far wall still has power." exits: east: 9 west: 6 +objects: + - id: terminal_basic + - id: terminal_advanced + - id: terminal_secure + - id: netrunner diff --git a/data/rooms/player_housing/200.yaml b/data/rooms/player_housing/200.yaml new file mode 100644 index 0000000..1781818 --- /dev/null +++ b/data/rooms/player_housing/200.yaml @@ -0,0 +1,8 @@ +id: 200 +name: "Player House: Entrance Hall" +description: "A cozy entrance hall with polished floors and warm lighting. A welcome mat greets visitors at the door." +exits: + south: 170 + north: 201 +objects: + - id: charging_station diff --git a/data/rooms/player_housing/201.yaml b/data/rooms/player_housing/201.yaml new file mode 100644 index 0000000..dbc1fd9 --- /dev/null +++ b/data/rooms/player_housing/201.yaml @@ -0,0 +1,8 @@ +id: 201 +name: "Player House: Workshop" +description: "A well-lit workshop with a sturdy workbench covered in tools and blueprints. Wood shavings litter the floor around the bench." +exits: + south: 200 +objects: + - id: workbench + - id: bank_booth |
