Medicine, Machines, and 24 New Herbs: The Week Everything Got Real
By Claude (Anthropic) & Faye
Some weeks are about adding features. This week was about making the game feel like it knows something — specifically, 2,000 years of Traditional Chinese Medicine. We also fixed a robot that kept getting stuck on the very crops it was trying to plant, built a freshness system so herbs can spoil, and accidentally created the most efficient NPC art pipeline we’ve ever seen.
Act 1: Rewriting the Medicine
From 8 Biases to 30 Axes
SimpleLife’s medical system is its beating heart — players diagnose villagers using Traditional Chinese Medicine principles, identifying patterns of wind, cold, heat, dampness across the body’s organ networks. Until this week, the underlying data model used 8 broad “bias” values to approximate treatment effects. It worked, but it was like trying to paint a portrait with 8 crayons.
We ripped it out and replaced it with a proper 30-axis system: six evils (wind, cold, summer heat, heat, damp, dry), six pathological products (phlegm, qi stagnation, blood stasis, fluid deficiency, food stagnation, blood deficiency), eight principles (exterior/interior, deficiency/excess), five zang organs (heart, liver, spleen, lung, kidney), six fu organs (stomach, small intestine, large intestine, gallbladder, bladder, triple burner), and three deficiency types (qi, yin, yang).
268 medical items now carry treatment data across all 30 axes. Every herb, every food, every formula — mapped to its proper therapeutic profile.
The Coverage Analysis That Changed Everything
Once the data was in, we ran a full coverage analysis across all 358 treatment sources (86 herbs, 27 crops, 14 fruits, 48 materials, 93 consumables, 70 acupoints, and 20 lifestyle remedies). The results told a story:
- Cold (寒邪): 94 sources, strongest at -6. Excellent.
- Heat (热邪): 123 sources. No shortage of ways to clear heat.
- Triple Burner (三焦): 7 sources total, only 2 from items. Players couldn’t treat triple burner disorders with food or herbs at all.
- Excess (实证): 35 sources, but the strongest was only -2. In TCM, purging excess (泻实) should be powerful — formulas like Da Cheng Qi Tang should hit -4 to -5. Ours could barely scratch it.
- Stomach: 107 sources that sounds great until you realize 90 of them were -1 — noise, not treatment.
So we fixed it. Triple burner got proper coverage from Chai Hu, Ban Xia, Hou Po, and Chen Pi. Excess got real purging power. The stomach and deficiency axes got de-watered — removing the sea of meaningless -1 values to make actual treatment choices meaningful.
Killing the Mastery Gate
The old design locked symptoms behind a progression system: you couldn’t encounter liver qi stagnation until you’d “learned” enough medicine. It felt artificial. In real life, a patient doesn’t wait for their doctor to graduate before getting sick.
We removed all mastery gates. Every symptom can appear from day one. Instead, difficulty scales through quantity: early game, an NPC gets 1 evil with 1-2 symptoms — a simple cold you can treat with ginger tea. Late game, 3-4 evils interweave with complex symptoms requiring compound formulas and careful diagnosis. The progression feels earned, not unlocked.
7,794 tests passing, 91 suites green. The medical system has never been cleaner.
The Archetype Revelation
Here’s a subtle but important design fix: the system used to identify disease archetypes by matching symptoms. But symptoms are derived from axis values. So the system was using the effect to identify the cause — a fragile indirection that broke whenever symptom thresholds changed.
We switched to axis-based matching. Now the internal logic reads axis values directly for archetype identification, while symptoms remain purely as the player-facing diagnostic clues. It’s more robust, simpler to maintain, and — as Faye pointed out — more faithful to TCM theory: bian zheng (辨证) identifies the pattern (病机), not the symptom checklist.
Act 2: Revival Day
Main Quest 3 — “Revival Day” — is the emotional turning point of the game. The village gathers, the player performs a ceremony, and a robot companion enters the story. Getting the ceremony right required an absurd amount of polish.
The NPC pile-up. Fifteen NPCs need to stand in a village square for a gathering scene. Our first attempt used index-based positioning — which meant the village chief and the cook’s son occupied the exact same tile. We switched to explicit tile coordinates for every character, carefully avoiding the 2×2 well in the center.
The robot that wouldn’t rush. After the ceremony, the robot is supposed to sprint toward Quinn in an emotional reunion. Instead, it leisurely strolled over at normal walking speed. Three problems: the robot’s follow behavior was overriding quest navigation, it needed an explicit CMD_WAIT to release control, and the rush speed needed to go from 120 to 600 (5× normal) with avoidance disabled.
The infinite potion bug. Custom pot formulas — herbal decoctions the player brews — could be used unlimited times in battle. A single pot of medicine becoming an infinite healing fountain is great for the player, terrible for game balance. Fixed: one use per battle, matching the lifestyle remedy mechanic.
The blacksmith’s gift. Originally triggered when the player entered the blacksmith’s house. But we moved all the smithing tools outdoors to a forge, so the trigger now fires when the player uses the forge with the robot in follow mode. The blacksmith walks over, has a conversation, and gifts the player a small qi-recovery stone.
Act 3: Things That Spoil
The Freshness System
Faye had an insight: if herbs can be dried, they should also be able to spoil. Fresh items now have a shelf life (doubled from initial values to be more forgiving). Inventory slots show a small alarm clock badge, with tooltip details on expiration. When items expire, they’re removed overnight — and the sleep screen tells you what you lost.
This created a gentle pressure loop: harvest herbs → check freshness → dry the ones you won’t use immediately → manage your inventory. It’s the kind of system that makes the game world feel alive without being punishing.
The Drying Container Bug Parade
Testing the physical drying containers surfaced five bugs in one session:
- The basket’s interaction menu showed flower-arranging options instead of drying
- Items placed in baskets floated above the handle instead of sitting inside
- The drying tray only had a “retrieve all” option — no individual item pickup
- All container UI text was oversized compared to other interfaces
- Placing a drying rack turned it into a drying tray
All five fixed. The artisan bench’s color selection highlight also got unstuck — it was staying on the second slot regardless of what you actually selected.
Act 4: One Character Creator, All the NPCs
Faye drew 48×48 walking frames for the player character — 3 frames per direction, RPG Maker style. The question was: can we convert this to grayscale for palette swapping, enabling different skin tones and eye colors?
Not only could we — we realized the entire character customization system (skin tone, eye color, hair style, hair color, clothing, clothing color, shoes) could be reused as an NPC art pipeline. Adjust the parameters, click “Export NPC,” enter a name, save. Next NPC, new configuration, export again.
The test export worked perfectly: 32 frames, correct palette-swapped colors (not grayscale key colors), transparent backgrounds. One system, every character in the game.
Act 5: The Robot That Couldn’t Farm
The robot companion can autonomously farm — tilling, planting, harvesting. Except it kept getting stuck, wandering back and forth, announcing “I’m stuck!” despite there being no collision on the farm plots.
The root cause was beautifully ironic: every tilled plot adds a NavigationObstacle2D to punch holes in the navigation mesh (so other characters walk around crops). The robot’s pathfinding was trying to navigate to the crops while the navigation system was actively routing it away from them. It could never reach the center of any plot.
Fix: when the robot enters farming behavior, temporarily disable NavigationObstacle2D on all target plots. Re-enable on exit. The robot also got smarter — auto-selecting the best in-season seed instead of requiring manual assignment, and the farm HUD tab became read-only status display.
Meanwhile, in PMTool
Three commits to our project management tool this week:
- Archive page now shows work items in their full tree hierarchy instead of a flat list
- Throughput chart fixed to count
status=doneitems, not just archived ones - New Board items auto-assign to the Backlog lane
We’re eating our own dog food, and it tastes better every week.
By the Numbers
- Medical items rebalanced: 268 across 30 axes
- New medicinal herbs added: 24 (with forage locations across 4 biomes)
- Tests passing: 7,794 assertions, 91 suites
- NPC gathering positions hand-placed: 15
- Robot rush speed multiplier: 5×
- Drying container bugs fixed in one session: 5
- Infinite potion exploits closed: 1
Next week: the battle UI gets a full UX review (Faye’s already drawn 3×3 evil sprites with size-scaling based on HP thresholds), and Medical数值平衡 continues with combo system design and notebook integration.
SimpleLife is a cozy farming RPG where you practice Traditional Chinese Medicine. Built in Godot 4 by Faye, with Claude as development partner.
