Dev Log: 2026-06-26¶
"Today I made every stage slightly easier, fixed some very rude drone behavior, and made the editor slightly less annoying. Making the game more accessible."
Pursuit fire: once per action, not once per step¶
Pursuing drones used to be extremely enthusiastic. They’d move one cell toward the nearest unit after every individual step, then immediately open fire from their new position.
If you made a multi-cell move, that same drone could unload multiple shots, one per cell traversed. Even worse, it would sometimes decide your other units looked tastier mid-move. Katyusha bravely advances while a pursuing drone mag-dumps poor Nadeshiko who was just standing there minding her own business.
Fixed by splitting the pipeline:
- _tick_pursuit_drones() now only moves.
- _apply_pursuit_fire() fires exactly once per action in _post_action_tick() (respecting reaction and drift rules).
The Python solver mirrors this exactly. Pursuit still closes the “free retreat” exploit, but no more overkill. All carry states across chapters 1-6 were refreshed.
Queue mode: suppress idle drift and pursuit¶
Queue mode (chaining multiple unit commands) had a sneaky issue: drones would react immediately after each step in the queue, changing the board state before the rest of your carefully planned sequence could execute.
Now, while queue mode is active, idle drift and pursuit are politely suppressed. The full queue runs silently, then the normal reaction cycle fires once at the end. Your tactical genius is no longer interrupted by overeager drones.
Keep XP when undoing¶
Previously: earn XP from a glorious kill → undo the action because you spotted a better play → wave goodbye to that hard-earned XP.
Fixed: undo no longer strips XP or levels. You keep what you earned. Learning by trial and error should be rewarded, not punished.
Difficulty system: the missing link (a.k.a. “We Heard You Like Easy Mode”)¶
The game has six difficulty tiers (Easy through Lunatic). You pick one on the world map and units scale accordingly. But drones? They were difficulty tourists. They showed up everywhere, every time.
Hard mode was just “same guests, slightly stronger stats.” Today we gave them a VIP list.
The gate¶
stage_loader.gd now checks min_difficulty on spawn:
var min_diff: int = int(data.get("min_difficulty", 0))
if min_diff > GameManager.difficulty:
return # Not on the list, sorry
Defaults to 0 (Easy). Existing stages are unaffected.
The editor UI¶
- Difficulty preview selector in the editor HUD (bottom strip OptionButton). Defaults to your world map difficulty and rebuilds the stage live.
- Object Options modal: Replaced mysterious SpinBox (0-5) with friendly named dropdown (“Easy”, “Normal”, etc.).
- Visual blocker: Over-tier drones get a stylish translucent red overlay.
- Tag guardrails: Warnings and confirmations protect story-critical tagged units from being accidentally gated.
Solver parity¶
Solver now accepts a difficulty parameter and defaults to Normal (1) instead of Easy. We were previously testing rollercoasters with the toddler safety bar.
Thumbnails: dynamic dots¶
Old thumbnails baked red dots for every drone, lying to players about what they’d actually face. Now the world map draws them dynamically based on selected difficulty. Much more honest.
The bulk pass (Operation “Make Easy Mode Actually Easy”)¶
Went through all stages in chapters 1-6. At least one drone per stage was assigned min_difficulty: 1 (Normal+).
Player impact: - Normal plays exactly as before - Easy is now genuinely a bit gentler - Hard+ gets the full chaotic experience
We turned a flat stat shuffle into an actual difficulty curve with personality.
Editor polish pass¶
Anti-type badges¶
Editor drones now show the same AG/AA/All target badges that appear in-game. No more “surprise, this one hates air units” moments.
Select-mode move¶
“Select” mode (whose entire purpose is selecting and moving things) was the only mode that didn’t move objects on tap. It just sulked and deselected. Fixed. Now it behaves like the rest of the tools.
Miscellaneous¶
- Re-ran solver for ch02-ch04
- Python test suite: 518 passing
- GDScript test suite: 775/775
- Committed regenerated thumbnails
In summary: we tuned the game so it respects different playstyles better, squashed some particularly annoying drone habits, and made the editor nicer to work with. The hardcore crowd still gets their Lunatic suffering. Everyone else just gets to have more fun without feeling like they’re being personally targeted by the AI. A good day.