diff options
| author | historia <[not public]> | 2026-06-19 02:51:05 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-06-19 02:51:05 -0400 |
| commit | dea4a06764c507699cf9adcd1fd0a572d227aff0 (patch) | |
| tree | 25769809d34db70cf0bec7d8c6d3422c23780a55 /TODO.md | |
| parent | 2ae4a052fd1c15c3c6ba0f1dd324d896371aaffc (diff) | |
| download | thehouseoficarus-dea4a06764c507699cf9adcd1fd0a572d227aff0.tar.gz | |
feat: scavenge/scrap system started
Diffstat (limited to 'TODO.md')
| -rw-r--r-- | TODO.md | 46 |
1 files changed, 2 insertions, 44 deletions
@@ -15,49 +15,7 @@ Detailed implementation plans for each skill/system are in `skill_plans/`. - [x] Step 2: Combat Overhaul — OSRS per-type attack/defense bonuses (stab/slash/crush/science/ranged), OSRS accuracy formula, AttackType on weapons, per-type mob defenses, 8 new mobs, ranged combat with ammo, stats command, showItemStats on look - [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 10: Pharmacy — clean (background action), mix (production), 14 herbs, 16 potions, 14 unfinished potions, 11 reagents, 30 recipes, herb drop tables - ---- - -## Step 1: Pharmacy Rename - -- [x] Rename Alchemy → Pharmacy across the entire codebase. `Alchemy SkillName = "alchemy"` → `Pharmacy SkillName = "pharmacy"` in `player.go`. Update `AllSkills`, `SkillAbbr` (`"alc"` → `"pha"`). Search all Go files and YAML files (help, rooms, etc.) for any reference to "alchemy" and replace with "pharmacy". This is a mechanical find-and-replace — do it now before any new code references the old name. See `skill_plans/pharmacy.md` section 2. - ---- - -## Step 2: Combat Overhaul - -The combat system needs to be upgraded from single AttackBonus/DefenseBonus to OSRS-style per-type bonuses (stab/slash/crush/science/ranged) before building Technology, Science, or Assassin on top of it. See `skill_plans/combat.md` for full details. - -- [x] **2a: ItemStats + Formulas** — Replace the `ItemStats` struct with per-type attack bonuses (stab/slash/crush/science/ranged), per-type defense bonuses, strength bonus, ranged strength, science damage, and technology bonus. Add `AttackType string` field to `ItemDef`. Update `formulas.go` with OSRS accuracy formula (hit chance based on attack/defense roll comparison). Update `MobDef` and `MobInstance` with Science/Ranged levels, per-type defense bonuses, attack bonus, strength bonus, and elemental weakness field. Propagate new mob fields through `SeedMobs`. - -- [x] **2b: Update All Item YAMLs** — Convert every weapon and armor YAML from the old `attack_bonus`/`defense_bonus` format to the new per-type format. Set `attack_type` on every weapon (swords=slash, daggers=stab, maces=crush, axes=slash, bows=ranged). Fix the shortbow/longbow bug where `attack:` should be `ranged_attack:`. See `combat.md` stat tables for exact numbers per tier. - -- [x] **2c: Update Mob YAMLs + New Mobs** — Update the 5 existing mobs (cow, man, guard, newbie_trainer, tanner) with new defense bonus fields. Add 8+ new mobs at various combat levels to give players something to fight: rat, goblin, skeleton, zombie, moss giant, lesser drone, greater drone, iron sentinel. Place them in appropriate rooms. See `combat.md` section 13. - -- [x] **2d: Wire Up Combat** — Update `playerAttack()` to determine attack type from weapon, sum all equipment's matching attack bonus, use mob's matching defense bonus. Update `mobAttack()` to use mob's attack bonus and strength bonus, sum player's matching defense bonus per the mob's attack type. Add a `playerEquipBonuses()` helper that sums all equipped items into a single stats struct. Remove the old single-bonus code paths. - -- [x] **2e: Equipment Stats Display** — When examining an equippable item via `look`, display its attack and defense bonuses in a formatted two-column layout. Add a new `stats` command (Instant) that shows total equipment bonuses summed from all worn items, current attack type, and weapon speed. Update `cmd_score.go` to show combat level calculation breakdown. - -- [x] **2f: Ranged Combat** — Make ranged weapons functional: when `weapon_type` is "ranged", use Ranged level for attack rolls and ranged_attack bonus for accuracy. Consume 1 ammo per attack from the ammo equipment slot. Use `ranged_strength` from ammo for max hit calculation. Award XP to Ranged (75%) + Hitpoints (25%). If ammo runs out mid-combat, switch to unarmed with a message. Require ammo to be equipped to attack with a bow. - ---- - -## Step 3: Combat Feel - -Small additions that make combat feel complete before building bigger systems on top. - -- [x] **Aggressive Mobs** — Mobs with `aggressive: true` initiate combat when a player enters their room. Add an `AggroTick()` or check in room-enter logic. Respect combat level difference (only aggro if mob's combat level is close to or above player's, or always aggro for certain mobs). Configurable via mob YAML. Some of the new mobs from step 2c should be aggressive. - -- [x] **Equipment Skill Requirements** — Add optional `requirements` map to `ItemDef` (e.g., `requirements: { attack: 20, defense: 10 }`). Check in `cmd_wear.go` before equipping. Display requirements when examining items. This prevents low-level players from wearing rune gear immediately. - ---- - -## Step 4: Technology (Prayer System) - -See `skill_plans/technology.md`. Battery = prayer points. Techs = prayers. Players toggle techs for combat bonuses and damage reduction. Battery drains per tick while techs are active. 1-tick flicking works like OSRS — enable and disable within the same tick for no drain. - -- [x] **Technology System** — Add `Battery float64` and `ActiveTechs map[string]bool` to Player. Define ~25 techs in Go (attack/strength/defense/ranged/science boosts at 3 tiers, 3 protection techs, utility techs). Add `tech` command (Instant): `tech <name>` toggles, `tech` toggles quick tech, `tech list` shows all. Add `TechTick()` to drain battery based on active techs, reduced by equipment TechnologyBonus. Implement 1-tick flicking (drain based on tick-start snapshot). Integrate protection techs into `mobAttack()` (40% damage reduction). Integrate stat boost techs into `playerAttack()`. Add "Charging Station" object to recharge battery. Show battery and active techs on score page. +- [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. --- @@ -65,7 +23,7 @@ See `skill_plans/technology.md`. Battery = prayer points. Techs = prayers. Playe 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. -- [ ] **Scavenging** — Verify existing mine_scrap behavior and scrap_pile object work. Create 4 base junk items (solarjunk, hydrojunk, ecojunk, biojunk — all stackable). Create 4 identifier tool items and 4 altar objects. Add `id`/`identify` command (Active): checks for correct identifier in inventory, converts all scrap to corresponding junk on next tick, awards Scavenging XP. Higher levels produce more junk per scrap (multiplier tiers). Create rooms for altars (off the existing Scavenging room 9). Add 6 higher-tier junk types (chaosjunk, deathjunk, bloodjunk, lawjunk, cosmicjunk, naturejunk) with corresponding altars and identifiers for Science to use later. +- [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. --- |
