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 --- TODO.md | 33 +++------------------------------ 1 file changed, 3 insertions(+), 30 deletions(-) (limited to 'TODO.md') diff --git a/TODO.md b/TODO.md index 67c77f1..61d2738 100644 --- a/TODO.md +++ b/TODO.md @@ -16,39 +16,12 @@ Detailed implementation plans for each skill/system are in `skill_plans/`. - [x] Step 3: Combat Feel — Aggressive mobs (auto-attack on room enter, OSRS combat level rule), equipment skill requirements on all tiered gear - [x] Step 4: Technology — 25 techs (attack/str/def/ranged/science boosts, 3 protection techs, utility techs), Battery drain, 1-tick flicking, tech command, TechTick, charging station, score/prompt integration - [x] Step 5: Scavenging — mine_scrap behavior verified. Created 10 junk items (solar, hydro, cosmic, eco, chaos, bio, nature, law, death, blood — all stackable) with matching identifier tools and altar objects. `id`/`identify` command (Active): scans room for altar, checks for matching identifier in inventory, converts all scrap to junk on next tick with level-based multipliers, awards Scavenging XP. 10 altar rooms (150-159) branching from Scavenging Post (room 9). Help files created. -- [x] Step 6: Science — 40 mods (20 combat, 2 processing, 3 utility, 7 transport, 4 enchant, 4 chip), ModDef/AllMods in science.go. `trigger`/`cast` command (Active). `autocast`/`auto` (Instant). `mods`/`modlist` (Instant). Autocast in startCombat with 5-tick science speed and melee fallback. `scienceAttack()` with elemental weakness +30%. Junk cost system with deck exemptions. `ProvidesJunk` on ItemDef, `AutocastMod` on Player, `FindByInput` on RecipeStore, `science_mod` color target. 9 deck items, 24 jewelry items, 8 bolt items, nutrient_bar. Help files created. - ---- - -## Step 5: Scavenging - -See `skill_plans/scavenging.md`. The simplest new skill — mine scrap (already exists), identify it at altars to produce junk. Must be implemented before Science since Science consumes junk. - -- [x] Step 5: Scavenging — mine_scrap behavior verified. Created 10 junk items (solar, hydro, cosmic, eco, chaos, bio, nature, law, death, blood — all stackable) with matching identifier tools and altar objects. `id`/`identify` command (Active): scans room for altar, checks for matching identifier in inventory, converts all scrap to junk on next tick with level-based multipliers, awards Scavenging XP. 10 altar rooms (150-159) branching from Scavenging Post (room 9). Help files created. - ---- - -## Step 6: Science (Magic System) - -See `skill_plans/science.md`. Players "trigger mods" (cast spells) powered by junk (runes). Decks (staves) provide unlimited supply of one junk type and remove scrap requirement. Depends on combat overhaul + scavenging. - - [x] Step 6: Science — 40 mods (20 combat, 2 processing, 3 utility, 7 transport, 4 enchant, 4 chip), ModDef/AllMods in science.go. `trigger`/`cast` command (Active) routes to combat/transport/processing/utility/enchant handlers. `autocast`/`auto` command (Instant) sets science combat autocast. `mods`/`modlist` command (Instant) shows available mods with effective junk costs. Integrated autocast into `startCombat()` in cmd_attack.go with 5-tick science speed and melee fallback on junk depletion. `scienceAttack()` with Science level + science_attack roll, elemental weakness +30% accuracy, mod MaxHit damage. Junk cost system: deck-equipped removes scrap_metal, elemental deck provides unlimited junk type. Added `ProvidesJunk` to ItemDef, `AutocastMod` to Player, `FindByInput` to RecipeStore, `science_mod` color target. 9 deck items, 24 jewelry items, 8 bolt items, nutrient_bar item. Help files created. +- [x] Step 7: Shop System — Added `shop` talk node action that opens a buy/sell interface. `ShopConfig` with items + buy/sell prices defined in behavior YAML. `StateShop` session state with `buy`, `sell`, `browse`/`list`, `leave` commands. Items bought with credits, sold back at reduced prices. Created General Store clerk (Town Square) and Weapons Smith (Forge) NPCs. Created help files and worldbuilding guide docs. --- -## Step 7: Shop System - -Originally Phase 2, but needed before Assassin and generally useful. Add a buy/sell interface via talk node actions. - -- [ ] **Shop System** — Add a `shop` talk node action that opens a buy/sell interface. The shop inventory is defined in the behavior YAML as a list of items with buy/sell prices. Player enters `StateShop`. Commands: `buy `, `sell `, `browse`/`list`, `leave`. Items are bought with credits, sold back at a percentage. Add a General Store NPC and a Weapons Shop NPC. Place in appropriate rooms. - ---- - -## Step 8: Thieving - -See `skill_plans/thieving.md`. Steal from mobs and objects. Sneak mode, guard mechanics. - -- [ ] **Thieving** — Add `steal`/`thieve` command (Active) and `sneak` command (Instant toggle). Stealing from mobs: roll success based on Thieving level vs mob's thieving level requirement. On fail, mob turns hostile (starts combat). Stealing from objects: market stall gives random low-value food. Guard watching mechanic: mobs can guard objects, `sneak` mode shows guard attention cycle, lower success when watched, guard called on watched failure. Create credit_stick item (non-stackable, searchable for credits). Create Farmer and Bioengineer mobs (steal seeds from them). Add guard confrontation dialog (bribe/jail/fight). Create jail room. Update Man mob to be stealable. +- [x] Step 8: Thieving — `steal`/`thieve` command (Active) with continuous steal action. `sneak` command (Instant toggle) with guard-watching notifications. Success formula: 0.5 base + 0.03 per level, halved when guard watches. Mob stealing with aggro on failure. Object stealing with guard mechanic (SneakTick, watch/away cycles). Guard confrontation dialog (bribe 500cr, jail, fight). Created Market Stall object, Farmer + Bioengineer mobs, credit_stick item (searchable), 11 seed items, 5 new drop tables, 3 new rooms (160-162), 3 help files. Updated Man mob for stealability. --- @@ -56,7 +29,7 @@ See `skill_plans/thieving.md`. Steal from mobs and objects. Sneak mode, guard me See `skill_plans/assassin.md`. Task system, reputation, slayer-only mobs. Depends on combat being solid and having enough mobs to assign as tasks. -- [ ] **Assassin System** — Add `task` command (Instant) to check current assignment. Create Client NPC with talk behavior: assigns random mob kill tasks, skip/extend via reputation, reputation shop. Store task state in player flags (task_mob, task_count, task_remaining, tasks_completed, streak, reputation). In `endCombat()`, check if killed mob is on-task and award Assassin XP + reputation. Streak bonuses at 10th/50th/100th/250th/1000th task. Create 4+ slayer-only mobs with assassin_level requirements, finishing blow items (slug+salt, crawler+acid_vial), and damage-without equipment (drone needs insulated_gloves, phantom needs spectral_visor). Add assassin equipment items (cheap, sold by Client). Place slayer mobs in appropriate rooms. +- [x] **Assassin System** — Added `task` command (Instant) to check current assignment. Created Client NPC with talk behavior: assigns random mob kill tasks, skip/extend via reputation, reputation shop. Task state stored in player flags (task_mob, task_count, task_remaining, tasks_completed, streak, reputation). In `endCombat()`, on-task kills award Assassin XP (mob.MaxHP * 2) + reputation. Streak bonuses at 10th/50th/100th/250th/1000th task. Created 4 slayer-only mobs (slug/drone/crawler/phantom) with assassin_level requirements, finishing blow items (slug+salt, crawler+acid_vial), and damage-without equipment (drone needs insulated_gloves, phantom needs spectral_visor). Added assassin equipment items (salt, acid_vial, insulated_gloves, spectral_visor) sold by Client. Added 5 new rooms (50-54: Assassin Den + Sewer Tunnels chain). Created help files (task, assassin). --- -- cgit v1.2.3