aboutsummaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorworkhorse <workhorse@localhost.localdomain>2026-06-19 03:57:06 -0400
committerworkhorse <workhorse@localhost.localdomain>2026-06-19 03:57:06 -0400
commit52a3ce6a4b4a254dc5d3067979a09e93c060fa20 (patch)
tree167c62990013733bc8669c1387078bc86ea48db5 /data
parentfbd1c30d7b9777c9df6653f0c393afa7a7dfa519 (diff)
downloadthehouseoficarus-52a3ce6a4b4a254dc5d3067979a09e93c060fa20.tar.gz
feat: shops and rough assassin skill
Diffstat (limited to 'data')
-rw-r--r--data/behaviors/client_talk.yaml217
-rw-r--r--data/behaviors/general_store.yaml49
-rw-r--r--data/behaviors/stall_guard_talk.yaml36
-rw-r--r--data/behaviors/weapons_shop.yaml43
-rw-r--r--data/drops/bioengineer_steal.yaml20
-rw-r--r--data/drops/credit_stick_drop.yaml17
-rw-r--r--data/drops/farmer_steal.yaml20
-rw-r--r--data/drops/man_steal.yaml8
-rw-r--r--data/drops/market_stall_steal.yaml11
-rw-r--r--data/help/assassin.yaml27
-rw-r--r--data/help/shop.yaml20
-rw-r--r--data/help/sneak.yaml19
-rw-r--r--data/help/steal.yaml29
-rw-r--r--data/help/task.yaml13
-rw-r--r--data/help/thieving.yaml21
-rw-r--r--data/items/acid_vial.yaml6
-rw-r--r--data/items/apple.yaml8
-rw-r--r--data/items/cabbage_seed.yaml6
-rw-r--r--data/items/cheese.yaml8
-rw-r--r--data/items/chitin_plate.yaml6
-rw-r--r--data/items/circuit_board.yaml6
-rw-r--r--data/items/credit_stick.yaml9
-rw-r--r--data/items/ectoplasm.yaml6
-rw-r--r--data/items/insulated_gloves.yaml9
-rw-r--r--data/items/onion_seed.yaml6
-rw-r--r--data/items/potato_seed.yaml6
-rw-r--r--data/items/ranarr_seed.yaml6
-rw-r--r--data/items/salt.yaml6
-rw-r--r--data/items/slug_mucus.yaml6
-rw-r--r--data/items/snapdragon_seed.yaml6
-rw-r--r--data/items/spectral_visor.yaml9
-rw-r--r--data/items/strawberry_seed.yaml6
-rw-r--r--data/items/sweetcorn_seed.yaml6
-rw-r--r--data/items/tomato_seed.yaml6
-rw-r--r--data/items/torstol_seed.yaml6
-rw-r--r--data/items/watermelon_seed.yaml6
-rw-r--r--data/mobs/bioengineer.yaml44
-rw-r--r--data/mobs/client.yaml20
-rw-r--r--data/mobs/crawler.yaml32
-rw-r--r--data/mobs/drone.yaml32
-rw-r--r--data/mobs/farmer.yaml44
-rw-r--r--data/mobs/general_store_clerk.yaml24
-rw-r--r--data/mobs/man.yaml4
-rw-r--r--data/mobs/phantom.yaml32
-rw-r--r--data/mobs/slug.yaml27
-rw-r--r--data/mobs/weapons_smith.yaml24
-rw-r--r--data/objects/market_stall.yaml11
-rw-r--r--data/rooms/1.yaml1
-rw-r--r--data/rooms/100.yaml7
-rw-r--r--data/rooms/101.yaml8
-rw-r--r--data/rooms/102.yaml8
-rw-r--r--data/rooms/103.yaml8
-rw-r--r--data/rooms/104.yaml7
-rw-r--r--data/rooms/105.yaml8
-rw-r--r--data/rooms/106.yaml7
-rw-r--r--data/rooms/107.yaml8
-rw-r--r--data/rooms/108.yaml7
-rw-r--r--data/rooms/109.yaml7
-rw-r--r--data/rooms/110.yaml8
-rw-r--r--data/rooms/111.yaml9
-rw-r--r--data/rooms/112.yaml9
-rw-r--r--data/rooms/113.yaml7
-rw-r--r--data/rooms/115.yaml7
-rw-r--r--data/rooms/116.yaml8
-rw-r--r--data/rooms/117.yaml9
-rw-r--r--data/rooms/118.yaml8
-rw-r--r--data/rooms/119.yaml8
-rw-r--r--data/rooms/12.yaml2
-rw-r--r--data/rooms/120.yaml8
-rw-r--r--data/rooms/121.yaml9
-rw-r--r--data/rooms/122.yaml7
-rw-r--r--data/rooms/126.yaml8
-rw-r--r--data/rooms/127.yaml9
-rw-r--r--data/rooms/128.yaml9
-rw-r--r--data/rooms/129.yaml7
-rw-r--r--data/rooms/130.yaml8
-rw-r--r--data/rooms/131.yaml8
-rw-r--r--data/rooms/136.yaml8
-rw-r--r--data/rooms/137.yaml9
-rw-r--r--data/rooms/138.yaml9
-rw-r--r--data/rooms/139.yaml6
-rw-r--r--data/rooms/140.yaml7
-rw-r--r--data/rooms/141.yaml8
-rw-r--r--data/rooms/142.yaml7
-rw-r--r--data/rooms/143.yaml6
-rw-r--r--data/rooms/145.yaml6
-rw-r--r--data/rooms/146.yaml8
-rw-r--r--data/rooms/147.yaml8
-rw-r--r--data/rooms/148.yaml8
-rw-r--r--data/rooms/149.yaml8
-rw-r--r--data/rooms/150.yaml8
-rw-r--r--data/rooms/151.yaml8
-rw-r--r--data/rooms/152.yaml8
-rw-r--r--data/rooms/153.yaml8
-rw-r--r--data/rooms/154.yaml7
-rw-r--r--data/rooms/155.yaml7
-rw-r--r--data/rooms/156.yaml7
-rw-r--r--data/rooms/157.yaml7
-rw-r--r--data/rooms/158.yaml7
-rw-r--r--data/rooms/159.yaml7
-rw-r--r--data/rooms/160.yaml17
-rw-r--r--data/rooms/161.yaml13
-rw-r--r--data/rooms/162.yaml6
-rw-r--r--data/rooms/31.yaml1
-rw-r--r--data/rooms/50.yaml7
-rw-r--r--data/rooms/51.yaml10
-rw-r--r--data/rooms/52.yaml9
-rw-r--r--data/rooms/53.yaml9
-rw-r--r--data/rooms/54.yaml8
109 files changed, 1066 insertions, 393 deletions
diff --git a/data/behaviors/client_talk.yaml b/data/behaviors/client_talk.yaml
new file mode 100644
index 0000000..84e4f6a
--- /dev/null
+++ b/data/behaviors/client_talk.yaml
@@ -0,0 +1,217 @@
+id: client_talk
+type: talk
+nodes:
+ start:
+ message: "The Client looks up from their data pad. \"What do you need?\""
+ options:
+ - text: "\"I need a job.\""
+ goto: assign_task
+ condition:
+ player_flag: assassin_task_mob
+ not: true
+ - text: "\"What's my current task?\""
+ goto: current_task
+ condition:
+ player_flag: assassin_task_mob
+ not: false
+ - text: "\"I want to skip my task.\""
+ goto: skip_confirm
+ condition:
+ player_flag: assassin_task_mob
+ not: false
+ - text: "\"I want to extend my task.\""
+ goto: extend_confirm
+ condition:
+ all_of:
+ - player_flag: assassin_task_mob
+ not: false
+ - player_flag: assassin_unlocked_extend
+ value: true
+ - text: "\"I'd like to browse the Reputation Shop.\""
+ goto: rep_shop
+ - text: "\"I need supplies.\""
+ goto: supplies
+ - text: "\"Goodbye.\""
+ end: true
+
+ assign_task:
+ message: "\"Let me check what's available...\" The Client scrolls through their data pad."
+ action:
+ assign_task: true
+ options:
+ - text: "\"Understood.\""
+ end: true
+ - text: "\"What else do you have?\""
+ goto: start
+
+ current_task:
+ message: "\"Let me check your file.\" The Client pulls up your record."
+ options:
+ - text: "\"Okay.\""
+ end: true
+
+ skip_confirm:
+ message: "\"Skipping a task costs 30 Reputation and resets your streak. Are you sure?\""
+ options:
+ - text: "\"Yes, skip it.\""
+ goto: skip_done
+ - text: "\"Never mind.\""
+ goto: start
+
+ skip_done:
+ message: "\"Task cancelled. Your streak has been reset.\""
+ action:
+ skip_task: true
+ options:
+ - text: "\"Give me a new one.\""
+ goto: assign_task
+ - text: "\"Goodbye.\""
+ end: true
+
+ extend_confirm:
+ message: "\"Extending your task costs 30 Reputation and adds more kills. Want to proceed?\""
+ options:
+ - text: "\"Yes, extend it.\""
+ goto: extend_done
+ - text: "\"Never mind.\""
+ goto: start
+
+ extend_done:
+ message: "\"Done. I've added more targets to your contract.\""
+ action:
+ extend_task: true
+ options:
+ - text: "\"Thanks.\""
+ end: true
+
+ rep_shop:
+ message: "\"Here's what I've got. All purchases are permanent.\""
+ options:
+ - text: "\"Auto-finish: Salt (200 Rep) - Never consume salt on finishing blows.\""
+ goto: buy_auto_salt
+ condition:
+ player_flag: assassin_unlocked_auto_salt
+ not: true
+ - text: "\"Auto-finish: Acid Vial (200 Rep) - Never consume acid vials on finishing blows.\""
+ goto: buy_auto_acid
+ condition:
+ player_flag: assassin_unlocked_auto_acid_vial
+ not: true
+ - text: "\"Unlock Superior Mobs (300 Rep) - Rare superior variants may spawn.\""
+ goto: buy_superiors
+ condition:
+ player_flag: assassin_unlocked_superiors
+ not: true
+ - text: "\"Unlock Extended Tasks (100 Rep) - Allows extending tasks.\""
+ goto: buy_extend_unlock
+ condition:
+ player_flag: assassin_unlocked_extend
+ not: true
+ - text: "\"Back.\""
+ goto: start
+
+ buy_auto_salt:
+ message: "\"Auto-salt purchased. You'll no longer consume salt on finishing blows.\""
+ action:
+ reputation_cost: 200
+ set_player_flags:
+ assassin_unlocked_auto_salt: true
+ options:
+ - text: "\"Thanks.\""
+ goto: rep_shop
+
+ buy_auto_acid:
+ message: "\"Auto-acid purchased. Acid vials will no longer be consumed.\""
+ action:
+ reputation_cost: 200
+ set_player_flags:
+ assassin_unlocked_auto_acid_vial: true
+ options:
+ - text: "\"Thanks.\""
+ goto: rep_shop
+
+ buy_superiors:
+ message: "\"Superior encounters unlocked. Watch yourself out there.\""
+ action:
+ reputation_cost: 300
+ set_player_flags:
+ assassin_unlocked_superiors: true
+ options:
+ - text: "\"Thanks.\""
+ goto: rep_shop
+
+ buy_extend_unlock:
+ message: "\"You can now extend tasks via our conversation.\""
+ action:
+ reputation_cost: 100
+ set_player_flags:
+ assassin_unlocked_extend: true
+ options:
+ - text: "\"Thanks.\""
+ goto: rep_shop
+
+ supplies:
+ message: "\"I stock everything you need for the job. Cheap, too.\""
+ options:
+ - text: "\"Buy salt (5 credits each).\""
+ goto: buy_salt
+ condition:
+ min_credits: 5
+ - text: "\"Buy acid vial (10 credits each).\""
+ goto: buy_acid
+ condition:
+ min_credits: 10
+ - text: "\"Buy insulated gloves (50 credits).\""
+ goto: buy_gloves
+ condition:
+ min_credits: 50
+ - text: "\"Buy spectral visor (75 credits).\""
+ goto: buy_visor
+ condition:
+ min_credits: 75
+ - text: "\"Back.\""
+ goto: start
+
+ buy_salt:
+ message: "\"Here you go.\" The Client slides a packet of salt across the table."
+ action:
+ give_item: salt
+ cost: 5
+ options:
+ - text: "\"Buy more.\""
+ goto: buy_salt
+ condition:
+ min_credits: 5
+ - text: "\"Thanks.\""
+ goto: supplies
+
+ buy_acid:
+ message: "\"Handle with care.\" The Client passes you a vial of corrosive acid."
+ action:
+ give_item: acid_vial
+ cost: 10
+ options:
+ - text: "\"Buy more.\""
+ goto: buy_acid
+ condition:
+ min_credits: 10
+ - text: "\"Thanks.\""
+ goto: supplies
+
+ buy_gloves:
+ message: "\"These'll keep the current from frying your hands.\" The Client tosses you a pair of thick rubber gloves."
+ action:
+ give_item: insulated_gloves
+ cost: 50
+ options:
+ - text: "\"Thanks.\""
+ goto: supplies
+
+ buy_visor:
+ message: "\"Spectral frequency filter. Makes the invisible visible — and keeps their attacks from scrambling your brain.\""
+ action:
+ give_item: spectral_visor
+ cost: 75
+ options:
+ - text: "\"Thanks.\""
+ goto: supplies
diff --git a/data/behaviors/general_store.yaml b/data/behaviors/general_store.yaml
new file mode 100644
index 0000000..657e842
--- /dev/null
+++ b/data/behaviors/general_store.yaml
@@ -0,0 +1,49 @@
+id: general_store
+type: talk
+nodes:
+ start:
+ message: "\"Welcome to the General Store! Need any supplies?\""
+ options:
+ - text: "\"I'd like to browse.\""
+ goto: shop
+ - text: "\"Goodbye.\""
+ end: true
+ shop:
+ message: "\"Take your time. What can I get you?\""
+ action:
+ shop:
+ message: "What would you like to buy or sell?"
+ items:
+ - item_id: fishing_rod
+ buy_price: 10
+ sell_price: 2
+ - item_id: fishing_bait
+ buy_price: 2
+ sell_price: 0
+ - item_id: matches
+ buy_price: 10
+ sell_price: 2
+ - item_id: firesteel
+ buy_price: 40
+ sell_price: 10
+ - item_id: lighter
+ buy_price: 30
+ sell_price: 7
+ - item_id: hammer
+ buy_price: 20
+ sell_price: 5
+ - item_id: knife
+ buy_price: 10
+ sell_price: 2
+ - item_id: chisel
+ buy_price: 10
+ sell_price: 2
+ - item_id: bread
+ buy_price: 10
+ sell_price: 2
+ - item_id: bowstring
+ buy_price: 20
+ sell_price: 5
+ options:
+ - text: "\"I'm done.\""
+ goto: start
diff --git a/data/behaviors/stall_guard_talk.yaml b/data/behaviors/stall_guard_talk.yaml
new file mode 100644
index 0000000..c9434af
--- /dev/null
+++ b/data/behaviors/stall_guard_talk.yaml
@@ -0,0 +1,36 @@
+id: stall_guard_talk
+type: talk
+nodes:
+ start:
+ message: "Caught you red-handed! You have three options, thief."
+ options:
+ - text: "\"I'll pay a fine. (500 credits)\""
+ goto: bribe
+ condition:
+ min_credits: 500
+ - text: "\"Take me to jail.\""
+ goto: jail
+ - text: "\"You'll have to catch me first!\""
+ goto: fight
+ bribe:
+ message: "Smart choice. Hand over 500 credits and we'll forget this happened."
+ action:
+ cost: 500
+ options:
+ - text: "\"Fine, take it.\""
+ end: true
+ jail:
+ message: "Off to the detention cell with you!"
+ action:
+ teleport: 162
+ options:
+ - text: "(You are dragged away)"
+ end: true
+ fight:
+ message: "Then defend yourself!"
+ action:
+ set_flags:
+ guard_hostile: true
+ options:
+ - text: "(The guard attacks!)"
+ end: true \ No newline at end of file
diff --git a/data/behaviors/weapons_shop.yaml b/data/behaviors/weapons_shop.yaml
new file mode 100644
index 0000000..d12a4e6
--- /dev/null
+++ b/data/behaviors/weapons_shop.yaml
@@ -0,0 +1,43 @@
+id: weapons_shop
+type: talk
+nodes:
+ start:
+ message: "\"Welcome to the Smithy! Finest weapons and armor on the asteroid.\""
+ options:
+ - text: "\"Show me what you've got.\""
+ goto: shop
+ - text: "\"Nothing right now.\""
+ end: true
+ shop:
+ message: "\"Here's the current inventory. All quality guaranteed.\""
+ action:
+ shop:
+ message: "The Smithy — buy or sell weapons and armor."
+ items:
+ - item_id: bronze_sword
+ buy_price: 25
+ sell_price: 6
+ - item_id: iron_sword
+ buy_price: 60
+ sell_price: 15
+ - item_id: bronze_axe
+ buy_price: 20
+ sell_price: 5
+ - item_id: iron_axe
+ buy_price: 50
+ sell_price: 12
+ - item_id: bronze_pickaxe
+ buy_price: 20
+ sell_price: 5
+ - item_id: iron_pickaxe
+ buy_price: 50
+ sell_price: 12
+ - item_id: bronze_med_helm
+ buy_price: 16
+ sell_price: 4
+ - item_id: iron_med_helm
+ buy_price: 40
+ sell_price: 10
+ options:
+ - text: "\"That's all for now.\""
+ goto: start \ No newline at end of file
diff --git a/data/drops/bioengineer_steal.yaml b/data/drops/bioengineer_steal.yaml
new file mode 100644
index 0000000..3e5e7ce
--- /dev/null
+++ b/data/drops/bioengineer_steal.yaml
@@ -0,0 +1,20 @@
+id: bioengineer_steal
+drops:
+ - item_id: sweetcorn_seed
+ weight: 25
+ quantity: 1
+ - item_id: strawberry_seed
+ weight: 20
+ quantity: 1
+ - item_id: watermelon_seed
+ weight: 20
+ quantity: 1
+ - item_id: ranarr_seed
+ weight: 15
+ quantity: 1
+ - item_id: snapdragon_seed
+ weight: 12
+ quantity: 1
+ - item_id: torstol_seed
+ weight: 8
+ quantity: 1 \ No newline at end of file
diff --git a/data/drops/credit_stick_drop.yaml b/data/drops/credit_stick_drop.yaml
new file mode 100644
index 0000000..d78dc57
--- /dev/null
+++ b/data/drops/credit_stick_drop.yaml
@@ -0,0 +1,17 @@
+id: credit_stick_drop
+drops:
+ - item_id: credits
+ weight: 40
+ quantity: 15
+ - item_id: credits
+ weight: 30
+ quantity: 30
+ - item_id: credits
+ weight: 20
+ quantity: 50
+ - item_id: credits
+ weight: 8
+ quantity: 100
+ - item_id: credits
+ weight: 2
+ quantity: 250 \ No newline at end of file
diff --git a/data/drops/farmer_steal.yaml b/data/drops/farmer_steal.yaml
new file mode 100644
index 0000000..e64f245
--- /dev/null
+++ b/data/drops/farmer_steal.yaml
@@ -0,0 +1,20 @@
+id: farmer_steal
+drops:
+ - item_id: potato_seed
+ weight: 30
+ quantity: 1
+ - item_id: onion_seed
+ weight: 25
+ quantity: 1
+ - item_id: cabbage_seed
+ weight: 20
+ quantity: 1
+ - item_id: tomato_seed
+ weight: 15
+ quantity: 1
+ - item_id: sweetcorn_seed
+ weight: 8
+ quantity: 1
+ - item_id: strawberry_seed
+ weight: 2
+ quantity: 1 \ No newline at end of file
diff --git a/data/drops/man_steal.yaml b/data/drops/man_steal.yaml
new file mode 100644
index 0000000..d0ec45f
--- /dev/null
+++ b/data/drops/man_steal.yaml
@@ -0,0 +1,8 @@
+id: man_steal
+drops:
+ - item_id: credit_stick
+ weight: 80
+ quantity: 1
+ - item_id: credits
+ weight: 20
+ quantity: 5 \ No newline at end of file
diff --git a/data/drops/market_stall_steal.yaml b/data/drops/market_stall_steal.yaml
new file mode 100644
index 0000000..e45c878
--- /dev/null
+++ b/data/drops/market_stall_steal.yaml
@@ -0,0 +1,11 @@
+id: market_stall_steal
+drops:
+ - item_id: bread
+ weight: 40
+ quantity: 1
+ - item_id: apple
+ weight: 35
+ quantity: 1
+ - item_id: cheese
+ weight: 25
+ quantity: 1 \ No newline at end of file
diff --git a/data/help/assassin.yaml b/data/help/assassin.yaml
new file mode 100644
index 0000000..60508e0
--- /dev/null
+++ b/data/help/assassin.yaml
@@ -0,0 +1,27 @@
+name: "assassin"
+category: "Skills"
+description: |
+ The Assassin skill (Slayer equivalent).
+
+ Talk to The Client in The Assassin's Den to receive tasks. Each task
+ assigns you a number of specific mobs to kill. Killing mobs on-task
+ awards Assassin XP (mob's max HP x 2) in addition to normal combat XP.
+
+ Some mobs require a minimum Assassin level to attack:
+ Slug - Level 1 (needs salt to finish off)
+ Drone - Level 15 (extra damage without insulated gloves)
+ Crawler - Level 30 (needs acid vial to finish off)
+ Phantom - Level 45 (extra damage without spectral visor)
+
+ Finishing Blow: Some mobs cannot be killed below 1 HP. Use the
+ required item on them during combat: "use salt on slug"
+
+ Protection: Some mobs deal 1.5x damage unless you have the
+ required protective item equipped.
+
+ Reputation is earned on task completion (1 per task + streak bonuses
+ at 10th, 50th, 100th, 250th, and 1000th consecutive tasks).
+ Spend Reputation at The Client's Reputation Shop for permanent
+ unlocks and task management options.
+
+ Related: task, attack, use
diff --git a/data/help/shop.yaml b/data/help/shop.yaml
new file mode 100644
index 0000000..a0fd187
--- /dev/null
+++ b/data/help/shop.yaml
@@ -0,0 +1,20 @@
+name: "shop"
+category: "Interaction"
+description: |
+ Buy and sell items at shops.
+
+ Find a shopkeeper NPC and talk to them to open their shop. While
+ browsing a shop, these commands are available:
+
+ browse List all items for sale with buy/sell prices
+ list Same as browse
+ buy <item> Purchase an item with credits (use # to buy by number)
+ sell <item> Sell an item from your inventory for credits
+ leave Exit the shop and return to conversation
+
+ Shops buy items at a lower price than they sell them. Some items
+ cannot be sold back.
+
+ Shopkeepers can be found throughout the world:
+ - General Store: Town Square (sells tools and supplies)
+ - Smithy: Forge (sells weapons, armor, and tools) \ No newline at end of file
diff --git a/data/help/sneak.yaml b/data/help/sneak.yaml
new file mode 100644
index 0000000..b10866c
--- /dev/null
+++ b/data/help/sneak.yaml
@@ -0,0 +1,19 @@
+name: "sneak"
+category: "Skills"
+description: |
+ Toggle sneak mode on and off.
+
+ Usage: sneak
+
+ While sneaking, you receive messages telling you when guards are
+ watching or looking away from objects they protect. Use this
+ information to time your steals for when the guard is distracted.
+
+ Stealing from a guarded object while the guard is looking away
+ has no penalty on failure. Stealing while the guard is watching
+ halves your success chance, and a failure causes the guard to
+ confront you.
+
+ Sneak mode is lost when you disconnect.
+
+ See also: help steal, help thieving \ No newline at end of file
diff --git a/data/help/steal.yaml b/data/help/steal.yaml
new file mode 100644
index 0000000..dc12a2f
--- /dev/null
+++ b/data/help/steal.yaml
@@ -0,0 +1,29 @@
+name: "steal"
+category: "Skills"
+description: |
+ Steal from mobs or objects.
+
+ Usage: steal [target]
+
+ Attempts to pickpocket a mob or shoplift from an object. Requires
+ a minimum thieving level depending on the target.
+
+ If there is only one stealable target in the room, you can type
+ just "steal". If there are multiple different targets, you must
+ specify: "steal man", "steal stall", "steal 2.man".
+
+ On success, you receive a random item from the target's loot table
+ and gain thieving XP. The action repeats automatically until you
+ run out of inventory space or are interrupted.
+
+ On failure against a mob, the mob turns hostile and attacks you.
+
+ On failure against a guarded object while the guard is watching,
+ the guard confronts you with options to pay a bribe, go to jail,
+ or fight.
+
+ Use "sneak" to see when guards are watching or looking away.
+
+ Aliases: thieve
+
+ See also: help sneak, help thieving \ No newline at end of file
diff --git a/data/help/task.yaml b/data/help/task.yaml
new file mode 100644
index 0000000..2b38e04
--- /dev/null
+++ b/data/help/task.yaml
@@ -0,0 +1,13 @@
+name: "task"
+category: "Assassin"
+description: |
+ Check your current Assassin task status.
+
+ Usage: task
+
+ Displays your current task target, kills remaining, streak count,
+ and unspent Reputation points. If you have no active task, visit
+ The Client to receive a new assignment.
+
+ The Client can be found in The Assassin's Den, accessible from
+ the lower levels of the settlement.
diff --git a/data/help/thieving.yaml b/data/help/thieving.yaml
new file mode 100644
index 0000000..e5aea10
--- /dev/null
+++ b/data/help/thieving.yaml
@@ -0,0 +1,21 @@
+name: "thieving"
+category: "Skills"
+description: |
+ Thieving lets you steal from mobs and objects for loot and XP.
+
+ Targets:
+ Man - Level 1, 8 XP - Credit sticks
+ Market Stall - Level 5, 12 XP - Food items (guarded)
+ Farmer - Level 10, 15 XP - Low/mid seeds
+ Bioengineer - Level 38, 45 XP - Mid/high seeds
+
+ Success chance increases with your thieving level relative to
+ the target's requirement. Failing against a mob starts combat.
+ Failing against a guarded object while the guard watches triggers
+ a confrontation (bribe, jail, or fight).
+
+ Credit sticks obtained from stealing can be searched for credits.
+
+ Commands: steal, sneak
+
+ See also: help steal, help sneak \ No newline at end of file
diff --git a/data/items/acid_vial.yaml b/data/items/acid_vial.yaml
new file mode 100644
index 0000000..7a49e2d
--- /dev/null
+++ b/data/items/acid_vial.yaml
@@ -0,0 +1,6 @@
+id: acid_vial
+name: acid vial
+color: "46"
+description: "A small vial of concentrated acid. Used to dissolve crawlers."
+value: 10
+stackable: true
diff --git a/data/items/apple.yaml b/data/items/apple.yaml
new file mode 100644
index 0000000..10c09c1
--- /dev/null
+++ b/data/items/apple.yaml
@@ -0,0 +1,8 @@
+id: apple
+name: apple
+color: "196"
+description: "A bright red apple."
+value: 3
+stackable: false
+heal_value: 2
+eat_message: "You eat the apple. Refreshing." \ No newline at end of file
diff --git a/data/items/cabbage_seed.yaml b/data/items/cabbage_seed.yaml
new file mode 100644
index 0000000..35ebee3
--- /dev/null
+++ b/data/items/cabbage_seed.yaml
@@ -0,0 +1,6 @@
+id: cabbage_seed
+name: cabbage seed
+color: "34"
+description: "A seed for growing cabbages."
+value: 4
+stackable: true \ No newline at end of file
diff --git a/data/items/cheese.yaml b/data/items/cheese.yaml
new file mode 100644
index 0000000..79d9fe8
--- /dev/null
+++ b/data/items/cheese.yaml
@@ -0,0 +1,8 @@
+id: cheese
+name: cheese
+color: "226"
+description: "A wedge of sharp cheese."
+value: 4
+stackable: false
+heal_value: 2
+eat_message: "You eat the cheese. Tasty." \ No newline at end of file
diff --git a/data/items/chitin_plate.yaml b/data/items/chitin_plate.yaml
new file mode 100644
index 0000000..4148a2a
--- /dev/null
+++ b/data/items/chitin_plate.yaml
@@ -0,0 +1,6 @@
+id: chitin_plate
+name: chitin plate
+color: "130"
+description: "A thick plate of biological armor from a crawler's exoskeleton."
+value: 50
+stackable: false
diff --git a/data/items/circuit_board.yaml b/data/items/circuit_board.yaml
new file mode 100644
index 0000000..5b4db83
--- /dev/null
+++ b/data/items/circuit_board.yaml
@@ -0,0 +1,6 @@
+id: circuit_board
+name: circuit board
+color: "40"
+description: "A scorched circuit board salvaged from a destroyed drone."
+value: 25
+stackable: false
diff --git a/data/items/credit_stick.yaml b/data/items/credit_stick.yaml
new file mode 100644
index 0000000..46b3050
--- /dev/null
+++ b/data/items/credit_stick.yaml
@@ -0,0 +1,9 @@
+id: credit_stick
+name: credit stick
+color: "220"
+description: "A small electronic stick loaded with credits. You can search it to extract the credits."
+value: 10
+stackable: false
+search_table: credit_stick_drop
+search_ticks: 2
+search_message: "cracking open the credit stick" \ No newline at end of file
diff --git a/data/items/ectoplasm.yaml b/data/items/ectoplasm.yaml
new file mode 100644
index 0000000..8417e2d
--- /dev/null
+++ b/data/items/ectoplasm.yaml
@@ -0,0 +1,6 @@
+id: ectoplasm
+name: ectoplasm
+color: "159"
+description: "A shimmering residue left behind by a destroyed phantom."
+value: 75
+stackable: false
diff --git a/data/items/insulated_gloves.yaml b/data/items/insulated_gloves.yaml
new file mode 100644
index 0000000..3e53614
--- /dev/null
+++ b/data/items/insulated_gloves.yaml
@@ -0,0 +1,9 @@
+id: insulated_gloves
+name: insulated gloves
+color: "214"
+description: "Heavy rubber gloves that protect against electrical attacks. Essential when fighting drones."
+value: 50
+stackable: false
+equip_slot: hands
+stats:
+ defense_bonus: 1
diff --git a/data/items/onion_seed.yaml b/data/items/onion_seed.yaml
new file mode 100644
index 0000000..fbf6a8a
--- /dev/null
+++ b/data/items/onion_seed.yaml
@@ -0,0 +1,6 @@
+id: onion_seed
+name: onion seed
+color: "229"
+description: "A seed for growing onions."
+value: 3
+stackable: true \ No newline at end of file
diff --git a/data/items/potato_seed.yaml b/data/items/potato_seed.yaml
new file mode 100644
index 0000000..8cc4669
--- /dev/null
+++ b/data/items/potato_seed.yaml
@@ -0,0 +1,6 @@
+id: potato_seed
+name: potato seed
+color: "94"
+description: "A seed for growing potatoes."
+value: 2
+stackable: true \ No newline at end of file
diff --git a/data/items/ranarr_seed.yaml b/data/items/ranarr_seed.yaml
new file mode 100644
index 0000000..af464ec
--- /dev/null
+++ b/data/items/ranarr_seed.yaml
@@ -0,0 +1,6 @@
+id: ranarr_seed
+name: ranarr seed
+color: "28"
+description: "A rare herb seed with potent alchemical properties."
+value: 500
+stackable: true \ No newline at end of file
diff --git a/data/items/salt.yaml b/data/items/salt.yaml
new file mode 100644
index 0000000..d9c1b2a
--- /dev/null
+++ b/data/items/salt.yaml
@@ -0,0 +1,6 @@
+id: salt
+name: salt
+color: "255"
+description: "A packet of coarse industrial salt. Used to destroy slugs."
+value: 5
+stackable: true
diff --git a/data/items/slug_mucus.yaml b/data/items/slug_mucus.yaml
new file mode 100644
index 0000000..620038a
--- /dev/null
+++ b/data/items/slug_mucus.yaml
@@ -0,0 +1,6 @@
+id: slug_mucus
+name: slug mucus
+color: "82"
+description: "A glob of toxic slug mucus. Unpleasant."
+value: 5
+stackable: false
diff --git a/data/items/snapdragon_seed.yaml b/data/items/snapdragon_seed.yaml
new file mode 100644
index 0000000..3ec440d
--- /dev/null
+++ b/data/items/snapdragon_seed.yaml
@@ -0,0 +1,6 @@
+id: snapdragon_seed
+name: snapdragon seed
+color: "92"
+description: "An extremely rare herb seed. Highly valued by alchemists."
+value: 1500
+stackable: true \ No newline at end of file
diff --git a/data/items/spectral_visor.yaml b/data/items/spectral_visor.yaml
new file mode 100644
index 0000000..851a929
--- /dev/null
+++ b/data/items/spectral_visor.yaml
@@ -0,0 +1,9 @@
+id: spectral_visor
+name: spectral visor
+color: "141"
+description: "A visor fitted with spectral frequency filters. Dampens psychic attacks from phantoms."
+value: 75
+stackable: false
+equip_slot: head
+stats:
+ defense_bonus: 2
diff --git a/data/items/strawberry_seed.yaml b/data/items/strawberry_seed.yaml
new file mode 100644
index 0000000..bcf8ddc
--- /dev/null
+++ b/data/items/strawberry_seed.yaml
@@ -0,0 +1,6 @@
+id: strawberry_seed
+name: strawberry seed
+color: "197"
+description: "A seed for growing strawberries."
+value: 40
+stackable: true \ No newline at end of file
diff --git a/data/items/sweetcorn_seed.yaml b/data/items/sweetcorn_seed.yaml
new file mode 100644
index 0000000..56bc587
--- /dev/null
+++ b/data/items/sweetcorn_seed.yaml
@@ -0,0 +1,6 @@
+id: sweetcorn_seed
+name: sweetcorn seed
+color: "226"
+description: "A seed for growing sweetcorn."
+value: 25
+stackable: true \ No newline at end of file
diff --git a/data/items/tomato_seed.yaml b/data/items/tomato_seed.yaml
new file mode 100644
index 0000000..622db9b
--- /dev/null
+++ b/data/items/tomato_seed.yaml
@@ -0,0 +1,6 @@
+id: tomato_seed
+name: tomato seed
+color: "196"
+description: "A seed for growing tomatoes."
+value: 8
+stackable: true \ No newline at end of file
diff --git a/data/items/torstol_seed.yaml b/data/items/torstol_seed.yaml
new file mode 100644
index 0000000..5db6f9d
--- /dev/null
+++ b/data/items/torstol_seed.yaml
@@ -0,0 +1,6 @@
+id: torstol_seed
+name: torstol seed
+color: "46"
+description: "The rarest of herb seeds. Worth a small fortune."
+value: 5000
+stackable: true \ No newline at end of file
diff --git a/data/items/watermelon_seed.yaml b/data/items/watermelon_seed.yaml
new file mode 100644
index 0000000..adfecc2
--- /dev/null
+++ b/data/items/watermelon_seed.yaml
@@ -0,0 +1,6 @@
+id: watermelon_seed
+name: watermelon seed
+color: "34"
+description: "A seed for growing watermelons."
+value: 80
+stackable: true \ No newline at end of file
diff --git a/data/mobs/bioengineer.yaml b/data/mobs/bioengineer.yaml
new file mode 100644
index 0000000..a6f2823
--- /dev/null
+++ b/data/mobs/bioengineer.yaml
@@ -0,0 +1,44 @@
+id: bioengineer
+name: Bioengineer
+description: "A lab-coated scientist carrying a satchel of genetically modified seeds. Her pockets are stuffed with rare specimens."
+combat_descriptions:
+ - "jabs a syringe at %s"
+ - "is being overpowered by %s"
+ - "fights desperately against %s"
+idle_descriptions:
+ - "scribbles notes on a clipboard"
+ - "carefully inspects a vial of green liquid"
+ - "adjusts her safety goggles"
+ - "mutters about gene splicing yields"
+attack: 6
+strength: 4
+defense: 5
+hp: 25
+speed: 5
+aggressive: false
+respawn_ticks: 50
+attack_type: crush
+stab_defense: 0
+slash_defense: 0
+crush_defense: 0
+science_defense: 0
+ranged_defense: 0
+steal_table: bioengineer_steal
+steal_level: 38
+steal_xp: 45
+steal_speed: 4
+drops:
+ remains: "bones"
+ loot:
+ - item_id: "sweetcorn_seed"
+ weight: 30
+ quantity: 2
+ - item_id: "strawberry_seed"
+ weight: 25
+ quantity: 1
+ - item_id: "watermelon_seed"
+ weight: 15
+ quantity: 1
+ - item_id: "ranarr_seed"
+ weight: 5
+ quantity: 1 \ No newline at end of file
diff --git a/data/mobs/client.yaml b/data/mobs/client.yaml
new file mode 100644
index 0000000..9bcae4e
--- /dev/null
+++ b/data/mobs/client.yaml
@@ -0,0 +1,20 @@
+id: client
+name: The Client
+description: "A shadowy figure in a dark coat. They speak in clipped, measured tones and seem to know everything about every creature in the sector."
+unique: true
+protected: true
+behavior: client_talk
+attack: 1
+strength: 1
+defense: 1
+hp: 100
+speed: 5
+aggressive: false
+respawn_ticks: 30
+idle_descriptions:
+ - "reviews a holographic dossier"
+ - "marks a location on a worn star chart"
+ - "flips a credit chit between their fingers"
+ - "mutters coordinates under their breath"
+ - "glances at you appraisingly"
+ - "taps a data pad with a stylus"
diff --git a/data/mobs/crawler.yaml b/data/mobs/crawler.yaml
new file mode 100644
index 0000000..ace034b
--- /dev/null
+++ b/data/mobs/crawler.yaml
@@ -0,0 +1,32 @@
+id: crawler
+name: crawler
+description: "A heavily armored bio-mechanical creature with a chitinous exoskeleton. Its regenerative biology prevents death unless dissolved with acid."
+assassin_level: 30
+finishing_blow: acid_vial
+attack: 25
+strength: 22
+defense: 30
+hp: 80
+speed: 5
+aggressive: false
+respawn_ticks: 45
+idle_descriptions:
+ - "scrapes its mandibles together menacingly"
+ - "clicks and chitters in an alien rhythm"
+ - "tests the air with feathered antennae"
+ - "coils its segmented body defensively"
+combat_descriptions:
+ - "snaps its mandibles at %s"
+ - "lashes out with a barbed tail at %s"
+ - "charges headlong into %s"
+drops:
+ remains: chitin_plate
+ loot:
+ - item_id: credits
+ weight: 70
+ quantity: 250
+ - item_id: acid_vial
+ weight: 10
+ - item_id: credits
+ weight: 20
+ quantity: 500
diff --git a/data/mobs/drone.yaml b/data/mobs/drone.yaml
new file mode 100644
index 0000000..4ceafc0
--- /dev/null
+++ b/data/mobs/drone.yaml
@@ -0,0 +1,32 @@
+id: drone
+name: drone
+description: "A malfunctioning security drone crackling with electrical discharge. Its attacks are especially dangerous to anyone not wearing insulated gloves."
+assassin_level: 15
+damage_without: insulated_gloves
+attack: 15
+strength: 14
+defense: 12
+hp: 45
+speed: 4
+aggressive: true
+respawn_ticks: 35
+idle_descriptions:
+ - "hovers erratically, sparking"
+ - "emits a high-pitched whine"
+ - "scans the area with a flickering red beam"
+ - "rotates its weapon array with a mechanical click"
+combat_descriptions:
+ - "fires an electrical bolt at %s"
+ - "charges its capacitors and zaps %s"
+ - "swoops down on %s with crackling energy"
+drops:
+ remains: circuit_board
+ loot:
+ - item_id: credits
+ weight: 80
+ quantity: 75
+ - item_id: insulated_gloves
+ weight: 5
+ - item_id: credits
+ weight: 15
+ quantity: 200
diff --git a/data/mobs/farmer.yaml b/data/mobs/farmer.yaml
new file mode 100644
index 0000000..7b12b9f
--- /dev/null
+++ b/data/mobs/farmer.yaml
@@ -0,0 +1,44 @@
+id: farmer
+name: Farmer
+description: "A weathered farmer in muddy overalls, pockets bulging with seeds."
+combat_descriptions:
+ - "swings a shovel at %s"
+ - "is getting beaten by %s"
+ - "grapples with %s"
+idle_descriptions:
+ - "examines a handful of seeds"
+ - "wipes dirt from his hands"
+ - "mutters about the growing season"
+ - "adjusts his wide-brimmed hat"
+attack: 3
+strength: 3
+defense: 3
+hp: 15
+speed: 5
+aggressive: false
+respawn_ticks: 40
+attack_type: crush
+stab_defense: 0
+slash_defense: 0
+crush_defense: 0
+science_defense: 0
+ranged_defense: 0
+steal_table: farmer_steal
+steal_level: 10
+steal_xp: 15
+steal_speed: 4
+drops:
+ remains: "bones"
+ loot:
+ - item_id: "potato_seed"
+ weight: 40
+ quantity: 3
+ - item_id: "onion_seed"
+ weight: 30
+ quantity: 2
+ - item_id: "cabbage_seed"
+ weight: 20
+ quantity: 2
+ - item_id: "tomato_seed"
+ weight: 10
+ quantity: 1 \ No newline at end of file
diff --git a/data/mobs/general_store_clerk.yaml b/data/mobs/general_store_clerk.yaml
new file mode 100644
index 0000000..842a98b
--- /dev/null
+++ b/data/mobs/general_store_clerk.yaml
@@ -0,0 +1,24 @@
+id: general_store_clerk
+name: Shopkeeper
+description: "A friendly merchant with a tidy apron, standing behind a well-stocked counter."
+behavior: general_store
+unique: true
+protected: true
+hp: 50
+attack: 1
+strength: 1
+defense: 1
+speed: 5
+aggressive: false
+respawn_ticks: 30
+attack_type: crush
+stab_defense: 0
+slash_defense: 0
+crush_defense: 0
+science_defense: 0
+ranged_defense: 0
+idle_descriptions:
+ - "arranges items on the shelves"
+ - "polishes the counter"
+ - "counts credits in the register"
+ - "greets a passerby with a nod" \ No newline at end of file
diff --git a/data/mobs/man.yaml b/data/mobs/man.yaml
index fe60cbd..c65f85c 100644
--- a/data/mobs/man.yaml
+++ b/data/mobs/man.yaml
@@ -21,6 +21,10 @@ hp: 7
speed: 5
aggressive: false
respawn_ticks: 30
+steal_table: man_steal
+steal_level: 1
+steal_xp: 8
+steal_speed: 4
attack_type: crush
stab_defense: 0
slash_defense: 0
diff --git a/data/mobs/phantom.yaml b/data/mobs/phantom.yaml
new file mode 100644
index 0000000..3fb1893
--- /dev/null
+++ b/data/mobs/phantom.yaml
@@ -0,0 +1,32 @@
+id: phantom
+name: phantom
+description: "A semi-transparent entity that phases in and out of visible light. Its psychic attacks are devastating to anyone without a spectral visor."
+assassin_level: 45
+damage_without: spectral_visor
+attack: 35
+strength: 30
+defense: 25
+hp: 100
+speed: 3
+aggressive: true
+respawn_ticks: 50
+idle_descriptions:
+ - "flickers between visible and invisible"
+ - "emits a low, resonant hum"
+ - "drifts through a wall and back again"
+ - "stares at you with hollow, glowing eyes"
+combat_descriptions:
+ - "blasts %s with a psychic wave"
+ - "phases through %s's defenses"
+ - "unleashes a spectral shriek at %s"
+drops:
+ remains: ectoplasm
+ loot:
+ - item_id: credits
+ weight: 60
+ quantity: 500
+ - item_id: spectral_visor
+ weight: 3
+ - item_id: credits
+ weight: 37
+ quantity: 1000
diff --git a/data/mobs/slug.yaml b/data/mobs/slug.yaml
new file mode 100644
index 0000000..2275ca7
--- /dev/null
+++ b/data/mobs/slug.yaml
@@ -0,0 +1,27 @@
+id: slug
+name: slug
+description: "A bloated, translucent slug the size of a dog. Its skin glistens with toxic mucus. It cannot be killed by conventional means — only salt can destroy it."
+assassin_level: 1
+finishing_blow: salt
+attack: 3
+strength: 3
+defense: 1
+hp: 15
+speed: 6
+aggressive: false
+respawn_ticks: 25
+idle_descriptions:
+ - "oozes along the floor leaving a slimy trail"
+ - "contracts and expands rhythmically"
+ - "extends its eyestalks toward you"
+ - "secretes a glob of toxic mucus"
+combat_descriptions:
+ - "lunges slimily at %s"
+ - "sprays mucus toward %s"
+ - "writhes in combat with %s"
+drops:
+ remains: slug_mucus
+ loot:
+ - item_id: credits
+ weight: 100
+ quantity: 15
diff --git a/data/mobs/weapons_smith.yaml b/data/mobs/weapons_smith.yaml
new file mode 100644
index 0000000..da6ef3b
--- /dev/null
+++ b/data/mobs/weapons_smith.yaml
@@ -0,0 +1,24 @@
+id: weapons_smith
+name: Weaponsmith
+description: "A burly smith with soot-stained hands and a heavy leather apron, standing proudly by the forge."
+behavior: weapons_shop
+unique: true
+protected: true
+hp: 80
+attack: 1
+strength: 1
+defense: 1
+speed: 5
+aggressive: false
+respawn_ticks: 30
+attack_type: crush
+stab_defense: 0
+slash_defense: 0
+crush_defense: 0
+science_defense: 0
+ranged_defense: 0
+idle_descriptions:
+ - "hammers at a glowing blade on the anvil"
+ - "wipes soot from his brow"
+ - "inspects a finished sword"
+ - "tends to the furnace fire" \ No newline at end of file
diff --git a/data/objects/market_stall.yaml b/data/objects/market_stall.yaml
new file mode 100644
index 0000000..a94d5cb
--- /dev/null
+++ b/data/objects/market_stall.yaml
@@ -0,0 +1,11 @@
+id: market_stall
+name: Market Stall
+description: "A wooden stall piled with food and sundries. The vendor doesn't seem particularly attentive."
+color: "179"
+inroom_description: "A bustling {179}market stall{/} is set up here."
+hidden: false
+steal_table: market_stall_steal
+steal_level: 5
+steal_xp: 12
+steal_speed: 5
+guard_mob: guard \ No newline at end of file
diff --git a/data/rooms/1.yaml b/data/rooms/1.yaml
index 6fe6518..fa3fb9b 100644
--- a/data/rooms/1.yaml
+++ b/data/rooms/1.yaml
@@ -12,6 +12,7 @@ objects:
- id: charging_station
mobs:
- "newbie_trainer"
+ - "general_store_clerk"
spawns:
- item_id: cape_of_agility
quantity: 1
diff --git a/data/rooms/100.yaml b/data/rooms/100.yaml
deleted file mode 100644
index b8b0f1e..0000000
--- a/data/rooms/100.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 100
-name: "Grand Concourse"
-description: "The expansive white platform of Station X1's main thoroughfare. Neon strips pulse along the ceiling, reflecting off polished permacrete floors. Citizens and synthetics stream past in a constant dance of commerce and purpose."
-map_symbol: "+"
-exits:
- east: 101
- north: 110
diff --git a/data/rooms/101.yaml b/data/rooms/101.yaml
deleted file mode 100644
index fa5af97..0000000
--- a/data/rooms/101.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 101
-name: "Customs & Immigration"
-description: "A long hall lined with automated kiosks. Holographic scanners bathe travelers in cool blue light as bio-signatures are verified. The air smells of ozone and recycled stationery."
-map_symbol: "#"
-exits:
- west: 100
- east: 102
- north: 111
diff --git a/data/rooms/102.yaml b/data/rooms/102.yaml
deleted file mode 100644
index 1bc8573..0000000
--- a/data/rooms/102.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 102
-name: "Port Authority Office"
-description: "Cluttered desks float in low gravity, terminals displaying shipping manifests and docking schedules. A large viewscreen shows the constant traffic of orbital freighters beyond the station."
-map_symbol: "P"
-exits:
- west: 101
- east: 103
- north: 112
diff --git a/data/rooms/103.yaml b/data/rooms/103.yaml
deleted file mode 100644
index f216fc4..0000000
--- a/data/rooms/103.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 103
-name: "Interstellar Cargo Bay 3"
-description: "Massive crates stamped with corporate logos are stacked to the ceiling. Loading clamps hum with magnetic tension. Echoes of distant announcements reverberate through the spacious bay."
-map_symbol: "C"
-exits:
- west: 102
- east: 104
- north: 113
diff --git a/data/rooms/104.yaml b/data/rooms/104.yaml
deleted file mode 100644
index c7821c1..0000000
--- a/data/rooms/104.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 104
-name: "Freight Elevator Lobby"
-description: "A utilitarian chamber where cargo lifters descend into the station's underbelly. Indicator lights blink in sequence as massive elevator doors cycle open and closed with hydraulic sighs."
-map_symbol: "E"
-exits:
- west: 103
- east: 105
diff --git a/data/rooms/105.yaml b/data/rooms/105.yaml
deleted file mode 100644
index f07c8aa..0000000
--- a/data/rooms/105.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 105
-name: "Hydroponic Distribution Hub"
-description: "Towering racks of fresh produce await sorting. Leafy greens spill from aeroponic towers as workers in sterile suits package the station's food supply for distribution."
-map_symbol: "H"
-exits:
- west: 104
- east: 106
- north: 115
diff --git a/data/rooms/106.yaml b/data/rooms/106.yaml
deleted file mode 100644
index a264b01..0000000
--- a/data/rooms/106.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 106
-name: "Recycled Water Processing"
-description: "The air is humid and warm. Pipes of all sizes crisscross the ceiling, carrying reclaimed water through filtration stages. The low rumble of pumps is a constant companion."
-map_symbol: "W"
-exits:
- west: 105
- east: 107
diff --git a/data/rooms/107.yaml b/data/rooms/107.yaml
deleted file mode 100644
index 34401bc..0000000
--- a/data/rooms/107.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 107
-name: "Atmospheric Scrubber Array"
-description: "Wall-mounted scrubbers cycle station air through banks of moss and activated carbon. Green LED strips indicate optimal CO2 absorption. The room breathes like a mechanical lung."
-map_symbol: "S"
-exits:
- west: 106
- east: 108
- north: 117
diff --git a/data/rooms/108.yaml b/data/rooms/108.yaml
deleted file mode 100644
index 3f6914a..0000000
--- a/data/rooms/108.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 108
-name: "Power Relay Station Gamma"
-description: "Crackling conduits channel raw solar energy from the exterior arrays. Warning signs in three languages adorn every surface. The hum is powerful enough to feel in your chest."
-map_symbol: "G"
-exits:
- west: 107
- east: 109
diff --git a/data/rooms/109.yaml b/data/rooms/109.yaml
deleted file mode 100644
index c22b9d0..0000000
--- a/data/rooms/109.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 109
-name: "Solar Array Access Corridor"
-description: "A narrow passage leading to the station's exterior skin. Small viewports reveal the blindingly bright solar panels stretching into the void, harvesting the star's energy."
-map_symbol: "A"
-exits:
- west: 108
- north: 119
diff --git a/data/rooms/110.yaml b/data/rooms/110.yaml
deleted file mode 100644
index fd9c061..0000000
--- a/data/rooms/110.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 110
-name: "Cryo-Sleep Recovery Ward"
-description: "Pale blue light fills this sterile room. Recovery pods line the walls, their occupants slowly reacclimating to standard gravity after decades in suspended animation."
-map_symbol: "R"
-exits:
- south: 100
- east: 111
- north: 120
diff --git a/data/rooms/111.yaml b/data/rooms/111.yaml
deleted file mode 100644
index d3a5a2a..0000000
--- a/data/rooms/111.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-id: 111
-name: "Medical Bay Alpha"
-description: "State-of-the-art diagnostic bays with hovering holographic displays. Automated medbots glide silently between stations. The scent of antiseptic gel lingers in the recycled air."
-map_symbol: "+"
-exits:
- south: 101
- west: 110
- east: 112
- north: 121
diff --git a/data/rooms/112.yaml b/data/rooms/112.yaml
deleted file mode 100644
index d5d46c0..0000000
--- a/data/rooms/112.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-id: 112
-name: "Pharmacy & Genetek"
-description: "Racks of color-coded pharmaceuticals glow under UV-protected lighting. A geneprinter in the corner hums as it synthesizes custom therapies and genetic patches on demand."
-map_symbol: "G"
-exits:
- south: 102
- west: 111
- east: 113
- north: 122
diff --git a/data/rooms/113.yaml b/data/rooms/113.yaml
deleted file mode 100644
index 4a3333e..0000000
--- a/data/rooms/113.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 113
-name: "Café Synthesizer"
-description: "A cozy establishment where food printers whir and steam. Patrons sit at floating tables sipping replicated coffee that is surprisingly close to the real thing."
-map_symbol: "c"
-exits:
- west: 112
- south: 103
diff --git a/data/rooms/115.yaml b/data/rooms/115.yaml
deleted file mode 100644
index b0c9a4f..0000000
--- a/data/rooms/115.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 115
-name: "Community Garden Atrium"
-description: "Sunlight-mimicking lamps nourish a lush indoor forest of ferns, flowering vines, and small fruit trees. A path of stepping stones winds through the greenery. Birds chirp from hidden perches."
-map_symbol: "G"
-exits:
- south: 105
- east: 116
diff --git a/data/rooms/116.yaml b/data/rooms/116.yaml
deleted file mode 100644
index 9c6c258..0000000
--- a/data/rooms/116.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 116
-name: "School of Zero-G Arts"
-description: "Students float in a vast open chamber, practicing zero-gravity dance and sculpture. Paint droplets hang suspended mid-air, forming impromptu art installations that drift lazily."
-map_symbol: "Z"
-exits:
- west: 115
- east: 117
- north: 126
diff --git a/data/rooms/117.yaml b/data/rooms/117.yaml
deleted file mode 100644
index 5a1ecf0..0000000
--- a/data/rooms/117.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-id: 117
-name: "Library of Forgotten Code"
-description: "Data crystals line the walls from floor to ceiling. Vintage terminals allow access to archived knowledge from before the Collapse. The soft click of crystal readers fills the reverent silence."
-map_symbol: "L"
-exits:
- west: 116
- east: 118
- south: 107
- north: 127
diff --git a/data/rooms/118.yaml b/data/rooms/118.yaml
deleted file mode 100644
index 95a4a1f..0000000
--- a/data/rooms/118.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 118
-name: "Quiet Meditation Spire"
-description: "A narrow tower lined with sound-dampening panels. Cushions arranged in concentric circles face a central fountain that flows upward into a recycling grate. No words are spoken here."
-map_symbol: "M"
-exits:
- west: 117
- east: 119
- north: 128
diff --git a/data/rooms/119.yaml b/data/rooms/119.yaml
deleted file mode 100644
index dbe9402..0000000
--- a/data/rooms/119.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 119
-name: "Sleep Pod Cluster 7"
-description: "Hundreds of stacked sleep pods line the corridor, their occupants visible through frosted transparencies. A few are open, revealing neatly made bunks with personal hologram projections."
-map_symbol: "p"
-exits:
- west: 118
- south: 109
- north: 129
diff --git a/data/rooms/12.yaml b/data/rooms/12.yaml
index d8850eb..0c4443b 100644
--- a/data/rooms/12.yaml
+++ b/data/rooms/12.yaml
@@ -4,6 +4,8 @@ description: "A blazing forge and anvil dominate this smoky workshop. The heat f
exits:
east: 13
west: 11
+mobs:
+ - "weapons_smith"
objects:
- id: furnace
- id: anvil
diff --git a/data/rooms/120.yaml b/data/rooms/120.yaml
deleted file mode 100644
index a03d2f2..0000000
--- a/data/rooms/120.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 120
-name: "The Neon Drake Tavern"
-description: "Neon dragons coil across the ceiling in animated loops. The bar serves synthesized spirits that pack a surprising punch. A jukebox plays synthwave classics from the pre-Collapse era."
-map_symbol: "T"
-exits:
- south: 110
- east: 121
- north: 130
diff --git a/data/rooms/121.yaml b/data/rooms/121.yaml
deleted file mode 100644
index 8adf8c3..0000000
--- a/data/rooms/121.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-id: 121
-name: "Dance Floor Theta-9"
-description: "The floor pulses with reactive LED tiles that shift color with every step. A spherical DJ booth hovers in the center, surrounded by a crowd of moving silhouettes lost in the beat."
-map_symbol: "D"
-exits:
- west: 120
- east: 122
- south: 111
- north: 131
diff --git a/data/rooms/122.yaml b/data/rooms/122.yaml
deleted file mode 100644
index d4ec067..0000000
--- a/data/rooms/122.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 122
-name: "VR Combat Arena"
-description: "Rows of neural-interface pods line the walls. Spectators watch live feeds of digital battles where players fight with light and code in simulated zero-G deathmatches."
-map_symbol: "V"
-exits:
- west: 121
- south: 112
diff --git a/data/rooms/126.yaml b/data/rooms/126.yaml
deleted file mode 100644
index a76b7d1..0000000
--- a/data/rooms/126.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 126
-name: "Holographic Tattoo Parlor"
-description: "Clients float in zero-g chairs while artists etch animated holograms onto their skin. A woman displays a sleeve of swimming koi that ripple and dart as she moves her arm."
-map_symbol: "t"
-exits:
- south: 116
- east: 127
- north: 136
diff --git a/data/rooms/127.yaml b/data/rooms/127.yaml
deleted file mode 100644
index f7565c8..0000000
--- a/data/rooms/127.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-id: 127
-name: "Underground Fight Club"
-description: "In a repurposed cargo container, bare-knuckle brawls draw crowds of gamblers. The ring is marked by glow tape. A hulking enforcer named Jax watches the crowd with narrowed eyes."
-map_symbol: "F"
-exits:
- west: 126
- east: 128
- south: 117
- north: 137
diff --git a/data/rooms/128.yaml b/data/rooms/128.yaml
deleted file mode 100644
index 93abe6c..0000000
--- a/data/rooms/128.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-id: 128
-name: "Ration Exchange Trade Post"
-description: "Bulletin boards display trading offers for ration cards, spare parts, and favors. A grumpy quartermaster oversees the exchange from behind a counter of reinforced polyglass."
-map_symbol: "X"
-exits:
- west: 127
- east: 129
- south: 118
- north: 138
diff --git a/data/rooms/129.yaml b/data/rooms/129.yaml
deleted file mode 100644
index 35a5087..0000000
--- a/data/rooms/129.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 129
-name: "Viewing Platform Nebula Vista"
-description: "A panoramic window overlooks the Crab Nebula in all its colorful glory. Telescopes mounted on tracks allow close-up viewing of distant stars and planets. Benches face the void."
-map_symbol: "V"
-exits:
- west: 128
- south: 119
diff --git a/data/rooms/130.yaml b/data/rooms/130.yaml
deleted file mode 100644
index 35c0b35..0000000
--- a/data/rooms/130.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 130
-name: "Reactor Core Access"
-description: "Warning lights pulse a deep amber. The massive blast door is reinforced with thermal shielding. A placard reads 'Authorized Personnel Only — Class 3 Radiation Zone.'"
-map_symbol: "R"
-exits:
- south: 120
- east: 131
- north: 140
diff --git a/data/rooms/131.yaml b/data/rooms/131.yaml
deleted file mode 100644
index 2825c15..0000000
--- a/data/rooms/131.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 131
-name: "Engineering Bay 4"
-description: "Tools hang on magnetic strips along every wall. Schematic blueprints float in holographic displays. Engineers in grease-stained jumpsuits argumentatively debate power allocation."
-map_symbol: "E"
-exits:
- west: 130
- south: 121
- north: 141
diff --git a/data/rooms/136.yaml b/data/rooms/136.yaml
deleted file mode 100644
index a5a87ae..0000000
--- a/data/rooms/136.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 136
-name: "Research Lab Xenobotany"
-description: "Terrariums contain alien flora from a dozen star systems. A pulsating purple fungus emits a low-frequency hum. The lead researcher takes meticulous notes on bioluminescent patterns."
-map_symbol: "L"
-exits:
- south: 126
- east: 137
- north: 146
diff --git a/data/rooms/137.yaml b/data/rooms/137.yaml
deleted file mode 100644
index a14651b..0000000
--- a/data/rooms/137.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-id: 137
-name: "Zero-G Forge"
-description: "Molten metal floats in perfect spheres as magnetic fields shape it into precision components. A welder in a full environmental suit guides the process with practiced hand gestures."
-map_symbol: "F"
-exits:
- west: 136
- east: 138
- south: 127
- north: 147
diff --git a/data/rooms/138.yaml b/data/rooms/138.yaml
deleted file mode 100644
index c00d30d..0000000
--- a/data/rooms/138.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-id: 138
-name: "Tool Locker Fabrication"
-description: "Walls covered with every tool imaginable, from micro-screwdrivers to plasma cutters. A 3D fabricator in the corner hums quietly, ready to print custom tool heads on demand."
-map_symbol: "T"
-exits:
- west: 137
- east: 139
- south: 128
- north: 148
diff --git a/data/rooms/139.yaml b/data/rooms/139.yaml
deleted file mode 100644
index a8226fa..0000000
--- a/data/rooms/139.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-id: 139
-name: "Maintenance Tunnel 9"
-description: "A narrow, cramped tunnel lined with exposed conduit and crawling with maintenance drones. The flickering fluorescent light makes the shadows dance along the curved walls."
-map_symbol: "M"
-exits:
- west: 138
diff --git a/data/rooms/140.yaml b/data/rooms/140.yaml
deleted file mode 100644
index c4d7db3..0000000
--- a/data/rooms/140.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 140
-name: "Captain's Quarter Balcony"
-description: "A private balcony overlooking the grand concourse below. Potted orchids thrive in the artificial light. The captain's telescope is aimed at a distant binary star system."
-map_symbol: "K"
-exits:
- south: 130
- east: 141
diff --git a/data/rooms/141.yaml b/data/rooms/141.yaml
deleted file mode 100644
index d1ba9bf..0000000
--- a/data/rooms/141.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 141
-name: "Executive Lounge Nebula"
-description: "Chrome and glass furniture floats in arranged clusters. A fully stocked bar offers genuine Earth spirits at exorbitant prices. The view of the nebula through the window is breathtaking."
-map_symbol: "E"
-exits:
- west: 140
- east: 142
- south: 131
diff --git a/data/rooms/142.yaml b/data/rooms/142.yaml
deleted file mode 100644
index e903d24..0000000
--- a/data/rooms/142.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 142
-name: "Board Room Round Table"
-description: "A circular table dominates the room, its surface a holographic display of the sector map. Chairs hover at precise intervals. Decisions that affect thousands are made around this table."
-map_symbol: "B"
-exits:
- west: 141
- east: 143
diff --git a/data/rooms/143.yaml b/data/rooms/143.yaml
deleted file mode 100644
index 7e16905..0000000
--- a/data/rooms/143.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-id: 143
-name: "Observation Dome"
-description: "The entire ceiling is a transparent dome offering an unobstructed view of deep space. Stars wheel slowly overhead as the station rotates. A gentle chime marks each passing hour."
-map_symbol: "O"
-exits:
- west: 142
diff --git a/data/rooms/145.yaml b/data/rooms/145.yaml
deleted file mode 100644
index fc8948e..0000000
--- a/data/rooms/145.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-id: 145
-name: "AI Core Chamber"
-description: "A massive crystalline structure pulses with internal light. The station's artificial intelligence, AURA, processes billions of operations per second. A respectful silence is observed here."
-map_symbol: "A"
-exits:
- east: 146
diff --git a/data/rooms/146.yaml b/data/rooms/146.yaml
deleted file mode 100644
index b3512b4..0000000
--- a/data/rooms/146.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 146
-name: "Master Timekeeper's Office"
-description: "Clocks of every conceivable design cover the walls — analog, digital, atomic, celestial. The Master Timekeeper ensures all station systems are synchronized to the galactic standard."
-map_symbol: "T"
-exits:
- west: 145
- east: 147
- south: 136
diff --git a/data/rooms/147.yaml b/data/rooms/147.yaml
deleted file mode 100644
index 4c89429..0000000
--- a/data/rooms/147.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 147
-name: "Archives of Station Law"
-description: "A solemn chamber where the station's founding charter is displayed in a sealed crys-glass case. Legal precedents and arbitration records line the walls in data-slate form."
-map_symbol: "A"
-exits:
- west: 146
- east: 148
- south: 137
diff --git a/data/rooms/148.yaml b/data/rooms/148.yaml
deleted file mode 100644
index 603536d..0000000
--- a/data/rooms/148.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 148
-name: "Comm Spire Antenna Array"
-description: "A vertical shaft rises into a transparent dome bristling with antennae and dishes. Signal boosters amplify transmissions across the sector. The air crackles with silent communication."
-map_symbol: "C"
-exits:
- west: 147
- east: 149
- south: 138
diff --git a/data/rooms/149.yaml b/data/rooms/149.yaml
deleted file mode 100644
index a5bb1d9..0000000
--- a/data/rooms/149.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 149
-name: "Escape Pod Bay 0"
-description: "A circular chamber lined with escape pods, their hatches open for inspection. A sign reminds all personnel to familiarize themselves with emergency procedures before departure."
-map_symbol: "E"
-exits:
- west: 148
-mobs:
- - id: iron_sentinel
diff --git a/data/rooms/150.yaml b/data/rooms/150.yaml
deleted file mode 100644
index ba13c81..0000000
--- a/data/rooms/150.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 150
-name: "Solar Altar Chamber"
-description: "A circular chamber bathed in warm {220}golden light{/}. At its center stands a humming {220 bold}solar altar{/}, its surface etched with fractal circuit patterns that glow softly."
-exits:
- south: 9
- east: 156
-objects:
- - id: solar_altar
diff --git a/data/rooms/151.yaml b/data/rooms/151.yaml
deleted file mode 100644
index 8d79273..0000000
--- a/data/rooms/151.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 151
-name: "Hydro Altar Chamber"
-description: "Condensation drips from the ceiling of this cool, blue-lit chamber. A {39 bold}hydro altar{/} dominates the room, its crystalline surface rippling with patterns like flowing water."
-exits:
- north: 9
- east: 157
-objects:
- - id: hydro_altar
diff --git a/data/rooms/152.yaml b/data/rooms/152.yaml
deleted file mode 100644
index 26523a4..0000000
--- a/data/rooms/152.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 152
-name: "Eco Altar Chamber"
-description: "Bioluminescent moss covers the walls of this overgrown chamber. An {34 bold}eco altar{/} rises from the floor, entwined with living circuitry that pulses with green light."
-exits:
- southwest: 9
- north: 158
-objects:
- - id: eco_altar
diff --git a/data/rooms/153.yaml b/data/rooms/153.yaml
deleted file mode 100644
index 36ef05c..0000000
--- a/data/rooms/153.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-id: 153
-name: "Bio Altar Chamber"
-description: "The air here is thick and warm. A {196 bold}bio altar{/} throbs at the center of the room, its surface covered in red organic membranes threaded with copper wire."
-exits:
- northwest: 9
- north: 159
-objects:
- - id: bio_altar
diff --git a/data/rooms/154.yaml b/data/rooms/154.yaml
deleted file mode 100644
index b86be53..0000000
--- a/data/rooms/154.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 154
-name: "Chaos Altar Chamber"
-description: "The air crackles with {226 bold}unstable energy{/} in this chamber. A {226 bold}chaos altar{/} of twisting metal and sparking wires stands at the center, humming with discordant frequencies."
-exits:
- southeast: 9
-objects:
- - id: chaos_altar
diff --git a/data/rooms/155.yaml b/data/rooms/155.yaml
deleted file mode 100644
index c333836..0000000
--- a/data/rooms/155.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 155
-name: "Death Altar Chamber"
-description: "Shadows pool in the corners of this cold, silent chamber. A {52 bold}death altar{/} of polished obsidian dominates the room, absorbing all light that touches it."
-exits:
- northeast: 9
-objects:
- - id: death_altar
diff --git a/data/rooms/156.yaml b/data/rooms/156.yaml
deleted file mode 100644
index d77f1e5..0000000
--- a/data/rooms/156.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 156
-name: "Blood Altar Chamber"
-description: "The walls of this chamber are veined with dark crimson lines that pulse rhythmically. A {124 bold}blood altar{/} of deep red crystal stands at the center, radiating gentle warmth."
-exits:
- west: 150
-objects:
- - id: blood_altar
diff --git a/data/rooms/157.yaml b/data/rooms/157.yaml
deleted file mode 100644
index 40f6b5b..0000000
--- a/data/rooms/157.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 157
-name: "Law Altar Chamber"
-description: "Orderly lines of blue light trace geometric patterns across every surface of this pristine chamber. A {27 bold}law altar{/} of perfect blue stone rises from the floor, its surface engraved with precise mathematical formulas."
-exits:
- west: 151
-objects:
- - id: law_altar
diff --git a/data/rooms/158.yaml b/data/rooms/158.yaml
deleted file mode 100644
index ec0f760..0000000
--- a/data/rooms/158.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 158
-name: "Cosmic Altar Chamber"
-description: "Darkness envelops this chamber save for thousands of {201}twinkling lights{/} that float like stars. A {201 bold}cosmic altar{/} of translucent pink crystal hovers above the floor, surrounded by orbiting motes of light."
-exits:
- south: 152
-objects:
- - id: cosmic_altar
diff --git a/data/rooms/159.yaml b/data/rooms/159.yaml
deleted file mode 100644
index ac65867..0000000
--- a/data/rooms/159.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-id: 159
-name: "Nature Altar Chamber"
-description: "Vines and flowering moss carpet every surface of this verdant chamber. A {46 bold}nature altar{/} of living green stone rises from the floor, entwined with blooming plants that turn toward you as you enter."
-exits:
- south: 153
-objects:
- - id: nature_altar
diff --git a/data/rooms/160.yaml b/data/rooms/160.yaml
new file mode 100644
index 0000000..dea9d00
--- /dev/null
+++ b/data/rooms/160.yaml
@@ -0,0 +1,17 @@
+id: 160
+name: "Market Square"
+description: "A noisy open-air market wedged between crumbling hab-blocks. Vendors hawk salvaged tech and reconstituted food from makeshift stalls. A {220 bold}Guard{/} watches over the area with a stern expression."
+map_symbol: "M"
+exits:
+ north: 1
+ east: 161
+objects:
+ - id: market_stall
+mobs:
+ - id: man
+ wander_interval: 15
+ - id: man
+ wander_interval: 18
+ - id: man
+ wander_interval: 20
+ - id: guard \ No newline at end of file
diff --git a/data/rooms/161.yaml b/data/rooms/161.yaml
new file mode 100644
index 0000000..c887347
--- /dev/null
+++ b/data/rooms/161.yaml
@@ -0,0 +1,13 @@
+id: 161
+name: "Farm Outpost"
+description: "A cluster of hydroponic grow-pods on the asteroid's surface, shielded by a flickering atmospheric dome. Rows of bio-luminescent crops stretch into the distance."
+map_symbol: "F"
+exits:
+ west: 160
+mobs:
+ - id: farmer
+ wander_rooms: [161]
+ - id: farmer
+ wander_rooms: [161]
+ - id: bioengineer
+ wander_rooms: [161] \ No newline at end of file
diff --git a/data/rooms/162.yaml b/data/rooms/162.yaml
new file mode 100644
index 0000000..a8333d8
--- /dev/null
+++ b/data/rooms/162.yaml
@@ -0,0 +1,6 @@
+id: 162
+name: "Detention Cell"
+description: "A small, grimy holding cell. The walls are scratched with tally marks from previous occupants. A heavy door bars the only exit."
+map_symbol: "J"
+exits:
+ north: 1 \ No newline at end of file
diff --git a/data/rooms/31.yaml b/data/rooms/31.yaml
index fc57b2d..3d010df 100644
--- a/data/rooms/31.yaml
+++ b/data/rooms/31.yaml
@@ -4,3 +4,4 @@ description: "The central square of Lumbridge. A fountain gurgles peacefully in
map_symbol: "b"
exits:
up: 1
+ down: 50
diff --git a/data/rooms/50.yaml b/data/rooms/50.yaml
new file mode 100644
index 0000000..0c9ebf2
--- /dev/null
+++ b/data/rooms/50.yaml
@@ -0,0 +1,7 @@
+id: 50
+name: "The Assassin's Den"
+description: "A dimly lit basement accessible through a trapdoor. Tactical maps and bounty posters line the walls. The air smells of gun oil and burnt ozone. {141}The Client{/} sits behind a reinforced desk."
+exits:
+ up: 31
+mobs:
+ - "client"
diff --git a/data/rooms/51.yaml b/data/rooms/51.yaml
new file mode 100644
index 0000000..74a97ef
--- /dev/null
+++ b/data/rooms/51.yaml
@@ -0,0 +1,10 @@
+id: 51
+name: "Sewer Tunnels"
+description: "Dark, damp tunnels beneath the settlement. The floor is slick with moisture and something {82}slimy{/}. The smell is indescribable."
+exits:
+ north: 50
+ south: 52
+mobs:
+ - "slug"
+ - "slug"
+ - "slug"
diff --git a/data/rooms/52.yaml b/data/rooms/52.yaml
new file mode 100644
index 0000000..2f90abd
--- /dev/null
+++ b/data/rooms/52.yaml
@@ -0,0 +1,9 @@
+id: 52
+name: "Abandoned Sector"
+description: "A decommissioned sector of the asteroid's infrastructure. Broken monitors flicker and exposed wiring {214}sparks{/} dangerously."
+exits:
+ north: 51
+ south: 53
+mobs:
+ - "drone"
+ - "drone"
diff --git a/data/rooms/53.yaml b/data/rooms/53.yaml
new file mode 100644
index 0000000..126719b
--- /dev/null
+++ b/data/rooms/53.yaml
@@ -0,0 +1,9 @@
+id: 53
+name: "Deep Tunnels"
+description: "The tunnels descend deeper into the asteroid's core. Strange chitinous scraping echoes from the darkness. The walls are scarred with {130}claw marks{/}."
+exits:
+ north: 52
+ south: 54
+mobs:
+ - "crawler"
+ - "crawler"
diff --git a/data/rooms/54.yaml b/data/rooms/54.yaml
new file mode 100644
index 0000000..5bb6a1d
--- /dev/null
+++ b/data/rooms/54.yaml
@@ -0,0 +1,8 @@
+id: 54
+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
+mobs:
+ - "phantom"
+ - "phantom"