From 52a3ce6a4b4a254dc5d3067979a09e93c060fa20 Mon Sep 17 00:00:00 2001 From: workhorse Date: Fri, 19 Jun 2026 03:57:06 -0400 Subject: feat: shops and rough assassin skill --- data/behaviors/client_talk.yaml | 217 +++++++++++++++++++++++++++++++++++ data/behaviors/general_store.yaml | 49 ++++++++ data/behaviors/stall_guard_talk.yaml | 36 ++++++ data/behaviors/weapons_shop.yaml | 43 +++++++ 4 files changed, 345 insertions(+) create mode 100644 data/behaviors/client_talk.yaml create mode 100644 data/behaviors/general_store.yaml create mode 100644 data/behaviors/stall_guard_talk.yaml create mode 100644 data/behaviors/weapons_shop.yaml (limited to 'data/behaviors') 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 -- cgit v1.2.3