Commit Graph

98 Commits

Author SHA1 Message Date
hikari 65c4a409ca feat: extend quest content through endgame to cover P60–P160 (#175)
CI / Lint, Build & Test (pull_request) Failing after 57s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m11s
2026-03-31 16:45:03 -07:00
hikari 78b1c1ec17 balance: boost crafted combat recipe multipliers (#177) 2026-03-31 16:45:00 -07:00
hikari 4163137e64 balance: compress Zone 14 boss HP to close unlock gap (#176) 2026-03-31 16:44:55 -07:00
hikari 952e9d6299 balance: early crystal access and smoother production scaling (#173, #174)
CI / Lint, Build & Test (pull_request) Failing after 52s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m2s
Give Troll King 5 crystals (was 0) to signal the crystal economy from
the first boss kill, and halve crystal_focus cost from 100 to 50 so it
is reachable within the first zone's boss chain (#173).

Increase production multiplier base from 1.25 to 1.3 so each prestige
provides more perceptible run-time reduction in the P1-P30 window where
the treadmill effect was most pronounced (#174).
2026-03-31 15:10:33 -07:00
hikari 9cff54cfcd balance: smooth prestige income cliff, quadratic milestones, exponential combat scaling (#170, #171)
CI / Lint, Build & Test (pull_request) Failing after 52s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m7s
Reduce income_10 cost 30k→22.5k and income_11 80k→60k (25% cut each)
to ease the late-prestige runestone cliff without collapsing the timeline.

Change prestige milestone bonus from linear (n×25) to quadratic (n²×25)
so high-prestige milestones feel meaningful (P100 = 10k stones).

Replace linear prestige combat multiplier (1 + count×0.1) with exponential
(4^count) in both the tick engine and server-side boss route. Without this
the final boss (2×10^145 HP) was unreachable by ~112 orders of magnitude;
base-4 makes it achievable around P190, consistent with the 6-month target.
2026-03-31 15:05:41 -07:00
hikari f83728df57 balance: reduce quest and exploration durations (#172)
CI / Lint, Build & Test (pull_request) Failing after 1m1s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m2s
Quest max reduced from 168h to 24h (÷7 scaling).
Exploration max reduced from 144h to 12h (÷12 scaling).
Zone 1 quest durations restored to original short values (1–30min).
All inline duration comments updated to reflect new values.
2026-03-31 14:41:09 -07:00
hikari 50b9883951 fix: show unlock hint on locked codex entries (#146)
CI / Lint, Build & Test (pull_request) Failing after 1m1s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m6s
Locked codex entries previously showed only '???' with no indication
of how to unlock them. Each entry now displays a hint generated from
its sourceType and sourceId (e.g. 'Defeat Troll King', 'Complete:
Shadow Mere').

Closes #146
2026-03-31 13:41:44 -07:00
hikari 87686a310f feat: add opt-out toggle for prestige bot announcements
CI / Lint, Build & Test (pull_request) Failing after 1m2s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m9s
Adds enablePrestigeAnnouncements to ProfileSettings (defaults to true).
The prestige route now checks this setting before posting the Discord
webhook, and the edit profile modal exposes a toggle in the Sounds &
Notifications section so players can opt out.

Closes #169
2026-03-31 13:20:01 -07:00
hikari 19f5f5e54f feat: show projected runestone gain persistently in resource bar
Adds computeProjectedRunestones() to the shared tick engine using the
correct server-side formula (cbrt, (count+1)^2 threshold). The resource
bar now shows a persistent '+N On Prestige' row so players can always
see what they would earn. The prestige panel's own preview was also
fixed to use the shared helper, replacing a broken local calculation
that used sqrt and the wrong threshold formula.

Closes #168
2026-03-31 13:19:54 -07:00
hikari 7d1126e8ad fix: guarantee clicks challenge in daily set (#167)
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m7s
CI / Lint, Build & Test (pull_request) Successful in 1m12s
Players blocked on zone progression had days where all three daily
challenges (bossesDefeated, questsCompleted, prestige) required
progression they couldn't make. Always including a clicks challenge
ensures at least one challenge is completable regardless of where
the player is in the game.
2026-03-31 12:48:34 -07:00
hikari ec0763819e balance: increase runestone yield 50% per prestige (#166)
Raise runestonesPerPrestigeLevel from 10 to 15. Early-game players
were earning only 10-20 runestones per prestige, making the upgrade
shop feel out of reach. This boost helps mid-game without affecting
the cap behaviour (cbrt formula still prevents AFK windfalls).
2026-03-31 12:47:48 -07:00
hikari 4a9ecbf706 balance: improve mid-game crystal income (#165)
Add 150 crystals to shadow_mere and 500 to witch_coven quest rewards.
Double shadow_marshes boss crystal drops (700->1500, 1500->3000, 3000->6000)
to provide meaningful crystal flow for players reaching Shadow Marshes.
2026-03-31 12:46:58 -07:00
hikari 96868c4143 balance: reduce shadow_mere CP requirement 5M -> 2M (#164)
The zone unlocks at 1.5M CP (storm_citadel), making the 5M CP entry
quest unreachable for most players. 2M CP is achievable with Arcane
Scholar and Dragon Rider adventurers without being trivial.
2026-03-31 12:45:57 -07:00
hikari 48477ee286 fix: eliminate loading screen flash after prestige (#163)
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m6s
CI / Lint, Build & Test (pull_request) Successful in 1m13s
Add reloadSilent which rehydrates state without toggling isLoading,
preventing the game from unmounting and showing the loading screen
after auto- or manual prestige.
2026-03-31 12:35:13 -07:00
hikari b3d257048f fix: prevent duplicate prestige bot announcements on concurrent requests
Adds an optimistic lock on the prestige route so that a second concurrent
request for the same state is rejected with 409 rather than firing the
Discord announcement twice. Also adds missing branch-coverage tests for
debug.ts to satisfy the 100% threshold.

Closes #162
2026-03-31 12:12:42 -07:00
hikari 3735cff23f fix: unlock exploration areas when their zone is unlocked by boss kill or quest (#161)
applyBossResult and the tick engine both updated zone status to "unlocked"
but never propagated that unlock to state.exploration.areas, leaving all
areas in the new zone permanently locked until force-unlock was used.
Both code paths now map over exploration areas and set any locked area
whose zone just became unlocked to "available" in the same state update.
2026-03-31 10:35:36 -07:00
hikari a09280470e fix: prevent auto-save race from discarding collected exploration materials (#160)
Block the auto-save tick while the /explore/collect request is in-flight,
clear the stale HMAC signature after the server-side DB write, and reset
the save timer so the next auto-save fires after React has re-rendered with
the new materials in stateReference — eliminating the window where a stale
client snapshot could overwrite the server's freshly saved collect result.
2026-03-31 10:35:29 -07:00
hikari 48120e0789 fix: pull adventurer upgrade rewards forward to their relevant progression window
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m13s
CI / Lint, Build & Test (pull_request) Failing after 1m13s
Ten upgrades were dropping 1-2 zones after the adventurer they buff was
no longer meaningful. Moved apprentice_1 to goblin_camp, militia_1 to
haunted_mine, knight_1 to frozen_wastes, peasant_2 to glacier_tomb,
peasant_3 to shadow_mere, and pulled the T27-30 upgrades
(astral_sovereign_1, primordial_mage_1, reality_warden_1,
infinity_ranger_1) and cosmos_knight_1 into their adventurer's own zone.
2026-03-26 15:43:13 -07:00
hikari 0542402b4d fix: use computePartyCombatPower in quest panel for consistent CP display
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m5s
CI / Lint, Build & Test (pull_request) Failing after 1m10s
The quest panel was computing party combat power with a simplified
hand-rolled loop (base combatPower × count only) that did not account for
upgrade multipliers, prestige bonus, equipment set bonuses, echo or
crafted multipliers, or the active companion bonus.

This meant the displayed "you have X combat power" value diverged from
the value used by the auto-quest engine (computePartyCombatPower), which
could show the player an incorrect picture of whether a quest was
startable — particularly after upgrades or equipment began boosting
combat power.

Replacing the loop with computePartyCombatPower(state) makes the quest
card display fully consistent with the auto-quest eligibility check.

Closes #157
2026-03-26 10:25:06 -07:00
hikari 689133d05d fix: preserve autoAdventurer setting across prestige
The auto-buy adventurers toggle was silently reset to false on every
prestige because it was not included in the list of automation preferences
carried forward into the fresh state. This mirrors the existing handling
for autoBoss and autoQuest.

Closes #156
2026-03-26 10:24:53 -07:00
hikari 8a332dc9ce fix: show effective post-multiplier stats on adventurer cards (#154)
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m2s
CI / Lint, Build & Test (pull_request) Failing after 1m8s
Adds computeEffectiveAdventurerStats to tick.ts to calculate per-unit
gold/s, essence/s, and combat power with all active multipliers applied
(upgrades, prestige, equipment, echo, crafted, companions). Updates
AdventurerCard to display these effective values so players can see the
true contribution of each adventurer rather than raw base stats.
2026-03-25 17:13:00 -07:00
hikari 56d963dc90 fix: clarify combat power vs boss damage distinction (#153)
Expands the JSDoc on computePartyCombatPower to explicitly document
that the companion bossDamage multiplier is intentionally included in
all combat-power calculations (boss panel, resource bar, quest gating),
matching server-side behaviour and resolving labelling ambiguity.
2026-03-25 17:07:13 -07:00
hikari 77c7ee02a6 fix: assign upgrade rewards to late-game bosses (#140)
Distributes the nine unassigned adventurer-specific upgrade rewards
across Crystalline Spire through Eternal Throne bosses that previously
had empty upgradeRewards arrays, ensuring all adventurer upgrades are
obtainable via boss drops.
2026-03-25 17:05:56 -07:00
hikari d1559c327f fix: balance equipment, click_power recipe ceiling, adventurer cost curve
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m5s
CI / Lint, Build & Test (pull_request) Failing after 1m10s
- #141: Already resolved in prior commits (celestial_focus 4.25×,
  void_conduit 10.5×, crystal_matrix 7.5× all exceed free-drop tier)
- #142: Add primal_omega_lens cross-zone click_power recipe at 1.38×,
  matching the eternal_omega combat ceiling and closing the gap above
  the zone-17 cap of 1.25×
- #143: Already resolved in prior commits (elder_bark_shield 1.12×,
  void_fragment_amulet 1.15×, soul_bound_catalyst 1.20× all buffed)
- #144: Raise philosophers_stone click 2.25×→2.5× to differentiate from
  eternal_flame; raise crystal_shard click 1.55×→1.65× so the
  volcanic_forger set trinket beats void_compass (1.6×)
- #145: Militia goldPerSecond already fixed; raise celestial_guard
  baseCost 1.4T→1.8T, smoothing tier 14→15 from 4.67× to 6× and
  removing the jarring tier 15→16 wall (7.14×→5.56×)
2026-03-25 16:54:53 -07:00
hikari 4c297f1ce1 fix: resolve sync inflation, signature mismatch, CP accuracy, auto-buy cap, unlock hints
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m3s
CI / Lint, Build & Test (pull_request) Failing after 1m8s
- #147: Guard all patch functions with hasChanged before incrementing
  sync counter to prevent inflation on no-op patches
- #148: Clear stale HMAC signature after each boss fight so subsequent
  auto-saves do not send a mismatched signature
- #146: Auto-unlock adventurer-specific upgrades in applyTick when
  their adventurer count > 0; show recruit hint in upgrade panel
- #149: Add Essence/s row to resource bar dropdown
- #150: Fix broken auto-quest CP reduce formula; centralise via
  computePartyCombatPower which applies all multipliers correctly
- #151: Cap auto-buy at 100 for non-max-tier adventurers; max tier
  (highest level unlocked) remains uncapped
- #152: Export computePartyCombatPower from tick, applying global
  upgrades, prestige, equipment, set bonuses, echo, crafted, and
  companion multipliers; use it in resource bar and boss panel
2026-03-25 16:47:53 -07:00
hikari b6e218167d fix: differentiate philosophers_stone and buff crystal_shard
CI / Lint, Build & Test (pull_request) Successful in 1m17s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m18s
- philosophers_stone: gold 1.25x → 1.4x (income specialist, distinct
  from eternal_flame which has combat 1.1x + gold 1.25x)
- crystal_shard: gold 1.10x → 1.20x (zone-5 epic, better premium)
- Closes #144
2026-03-25 15:29:42 -07:00
hikari 0609cc7584 fix: buff rare-material crafting recipes to justify ingredient cost
- elder_bark_shield: combat 1.08x → 1.12x
- void_fragment_amulet: gold 1.10x → 1.15x
- soul_bound_catalyst: essence 1.15x → 1.20x
- Closes #143
2026-03-25 14:44:59 -07:00
hikari 7c390f45b5 fix: add zone-18 click_power recipe, raising ceiling to 1.28x
- Added absolute_focus (click 1.28x) to the_absolute zone
- Matches zone-18 pattern, filling gap left by existing gold/combat recipes
- Closes #142
2026-03-25 14:37:11 -07:00
hikari 7ecc655484 fix: buff purchasable equipment dominated by boss drops
- celestial_focus: click 3x → 4.25x (above free void_heart_gem)
- void_conduit: combat 7x → 10.5x (above free throne_blade)
- crystal_matrix: gold 4.75x → 7.5x (above free eternal_armour)
- Closes #141
2026-03-25 14:35:51 -07:00
hikari 4b3a856ef9 fix: smooth adventurer cost curve
- militia: GPS 0.5 → 0.7 to match 10x cost jump
- Tiers 11-14: costs raised to even ~4.7x spread through tier 15
- Closes #145
2026-03-25 14:25:34 -07:00
hikari d84725921a fix: restore upgrade drops to late-game bosses
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m5s
CI / Lint, Build & Test (pull_request) Successful in 1m10s
Assigned 3 previously orphaned adventurer upgrades to appropriate bosses:
- horizon_beast (Infinite Expanse) → oblivion_paladin_1
- maelstrom_god (Cosmic Maelstrom) → transcendent_rogue_1
- eternal_end (The Absolute) → omniversal_champion_1

Closes #140
2026-03-25 14:06:01 -07:00
hikari e4808680ed feat: add missing quests to Frozen Peaks zone
- Added glacier_tomb (200K combat, 2.5hr) between frozen_wastes and ice_caves
- Added frozen_throne (3M combat, 7hr) after storm_citadel
- Updated ice_caves prerequisite to chain from glacier_tomb
- Frozen Peaks now has 5 quests, in line with other zones

Closes #139
2026-03-25 14:02:16 -07:00
hikari f001acc382 fix: buff Astral Void quest rewards
- void_rift: zero gold → 2B gold + 300K essence + 1K crystals
- star_graveyard: 1B gold + 100K essence → 8B gold + 800K essence + 3K crystals
- between_worlds: zero gold + 250K essence → 25B gold + 2M essence + 8K crystals
- the_end: 10B gold + 1M essence → 80B gold + 5M essence + 20K crystals

Closes #137
2026-03-25 14:00:33 -07:00
hikari 8a38d02e69 fix: buff Shadow Marshes quest rewards
- shadow_mere: 150 essence → 5M gold + 5K essence
- witch_coven: 500 essence → 20M gold + 20K essence
- plague_ruins: 8M gold + 2K essence → 100M gold + 30K essence + 500 crystals

Closes #136
2026-03-25 13:58:54 -07:00
hikari eed61db410 fix: add dark_templar_1 upgrade reward to Void Titan boss
Closes #138
2026-03-25 13:56:44 -07:00
hikari 0ae6aa12b2 fix: rewrite prestige/transcendence formula and rebalance progression
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m8s
CI / Lint, Build & Test (pull_request) Successful in 1m11s
2026-03-24 20:44:25 -07:00
hikari 0d6d05e50b chore: raise runestone base cap to 200
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m6s
CI / Lint, Build & Test (pull_request) Successful in 1m10s
2026-03-24 20:08:53 -07:00
hikari 74dd3bf463 chore: raise runestone base cap to 100
CI / Lint, Build & Test (pull_request) Successful in 1m12s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m12s
2026-03-24 20:03:17 -07:00
hikari 959b86fa8b fix: apply cbrt and cap to runestone formula to prevent AFK windfalls
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m3s
CI / Lint, Build & Test (pull_request) Successful in 1m10s
2026-03-24 20:01:22 -07:00
naomi 9926e7f639 release: v0.3.2
CI / Lint, Build & Test (push) Successful in 1m13s
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 2m17s
v0.3.2
2026-03-24 18:50:37 -07:00
hikari 6bf1ac5e7d feat: grant Elysian role on auth and prompt non-members to join (#134)
CI / Lint, Build & Test (push) Has been cancelled
Security Scan and Upload / Security & DefectDojo Upload (push) Has been cancelled
## Summary

- Grants the Elysian Discord role to players on login/registration and persists an `inGuild` flag on the Player record
- Connects to the Discord Gateway via WebSocket to keep `inGuild` in sync as players join or leave the server
- Shows a dismissible "Join our community" modal to players who are not yet in the guild
- Hardens `inGuild` exposure through the load endpoint and game context
- Moves all non-secret Discord IDs (guild, role, client, redirect URI) out of env vars and into hardcoded constants; removes them from `prod.env`

## Test plan

- [ ] Lint, build, and test pipeline passes (100% coverage maintained)
- [ ] New player auth grants Elysian role and sets `inGuild: true`
- [ ] Existing player auth re-attempts role grant and updates `inGuild`
- [ ] Join community modal appears for players not in the guild
- [ ] Modal does not reappear within the same browser session after dismissal
- [ ] Gateway correctly sets `inGuild: true/false` on member add/remove events

 This issue was created with help from Hikari~ 🌸

Reviewed-on: #134
Co-authored-by: Hikari <hikari@nhcarrigan.com>
Co-committed-by: Hikari <hikari@nhcarrigan.com>
2026-03-24 18:49:51 -07:00
hikari b48beef474 feat: sync and patch all content stats on existing saves (#130)
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m2s
CI / Lint, Build & Test (push) Successful in 1m10s
## Summary

- Sync New Content now **injects** missing entries AND **patches canonical fields** on all existing entries to match current defaults
- Adventurers: stats (baseCost, combatPower, goldPerSecond, essencePerSecond, name, class, level)
- Quests: duration, prerequisites, combat requirement, rewards
- Bosses: HP, damage, rewards, prestige requirement, upgrade rewards
- Zones: unlock conditions (boss/quest required)
- Upgrades: multiplier, costs
- Equipment: bonus, cost, set membership
- Achievements: condition, reward
- Crafting: multipliers recomputed from `craftedRecipeIds` so recipe balance changes apply retroactively

Closes #126

## Test plan

- [ ] On an existing save, click Sync New Content and verify the notification reports patched counts for all content types
- [ ] Verify that rebalanced adventurer/boss/upgrade stats are reflected in the UI after syncing
- [ ] Verify that player-owned state (counts, unlock status, boss HP, quest status) is preserved after syncing
- [ ] Verify crafting multipliers are correct after syncing if any recipes were previously crafted

 This issue was created with help from Hikari~ 🌸

Reviewed-on: #130
Co-authored-by: Hikari <hikari@nhcarrigan.com>
Co-committed-by: Hikari <hikari@nhcarrigan.com>
2026-03-24 16:01:48 -07:00
hikari 6e573bea14 chore: more feedback fixes (#129)
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m5s
CI / Lint, Build & Test (push) Successful in 1m9s
## Summary

- Fix `NaN` displayed in Sync New Content / Force Unlock notifications by guarding against undefined counts
- Poll server for exploration claimability before showing Collect button to prevent client/server desync
- Return authoritative materials list from craft API to prevent client desync causing false affordability
- Add test coverage for `sync-new-content` and `explore/claimable` endpoints

Closes #125
Closes #127
Closes #128

## Test plan

- [ ] Trigger a sync with new content and verify the notification shows a real count instead of `NaN`
- [ ] Start an exploration, wait for it to complete, and verify the Collect button only appears after the server confirms claimable
- [ ] Attempt to craft a recipe and verify the material counts in the UI update to match the server's authoritative values

 This issue was created with help from Hikari~ 🌸

Reviewed-on: #129
Co-authored-by: Hikari <hikari@nhcarrigan.com>
Co-committed-by: Hikari <hikari@nhcarrigan.com>
2026-03-24 13:20:37 -07:00
hikari 790d35420f fix: patch quest and boss rewards on sync to restore unlock conditions
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m9s
CI / Lint, Build & Test (push) Failing after 1m11s
2026-03-23 18:45:14 -07:00
naomi 9f9edae45e release: v0.3.1
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m6s
CI / Lint, Build & Test (push) Failing after 1m11s
v0.3.1
2026-03-23 18:32:15 -07:00
hikari a7a255dab6 fix: sort injected entries by canonical defaults order after sync
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m9s
CI / Lint, Build & Test (push) Failing after 1m13s
2026-03-23 18:18:59 -07:00
hikari e92cf3c9a1 feat: add sync new content debug tool
CI / Lint, Build & Test (push) Failing after 51s
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m9s
Adds a new debug panel button that injects any adventurers, quests,
bosses, equipment, upgrades, achievements, zones, and exploration areas
that exist in the current game data but are missing from an existing
player save (e.g. content added after the save was first created).
2026-03-23 18:10:39 -07:00
naomi 26d30c271d release: v0.3.0
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m6s
CI / Lint, Build & Test (push) Successful in 1m11s
v0.3.0
2026-03-23 17:39:55 -07:00
hikari 34d07bec95 balance: comprehensive game balance pass (#103-#123) (#124)
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m3s
CI / Lint, Build & Test (push) Successful in 1m9s
## Summary

Comprehensive balance pass addressing 20 tickets (#103–#122) plus one audit-discovered fix (#123), ensuring no player soft-locks and aligning all content counts with achievements and progression milestones.

### Changes

- **Equipment** (#103–#111): Differentiated all stat pairs so every piece has a unique bonus combination; added missing stats to `eternal_flame` and increased `eternal_prism` multiplier to justify cost tier
- **Recipes** (#112–#115): Added 4 cross-zone crafting recipes requiring materials from multiple zones to incentivise exploration breadth
- **Achievements** (#116–#118): Aligned `fully_equipped` (40→65), `quest_eternal` (72→95), and `boss_eternal` (60→72) thresholds with actual content counts; updated `devourer_slayer` description
- **Quest CP scaling** (#120–#122): Verified and corrected combat power requirements across all zones to follow consistent 4×/4× progression pattern
- **Zone file ordering** (#123): Swapped Frozen Peaks and Shadow Marshes quest sections so file order matches the actual unlock chain (no gameplay change)

### Tickets Closed

Closes #103
Closes #104
Closes #105
Closes #106
Closes #107
Closes #108
Closes #109
Closes #110
Closes #111
Closes #112
Closes #113
Closes #114
Closes #115
Closes #116
Closes #117
Closes #118
Closes #120
Closes #121
Closes #122
Closes #123

 This PR was created with help from Hikari~ 🌸

Reviewed-on: #124
Co-authored-by: Hikari <hikari@nhcarrigan.com>
Co-committed-by: Hikari <hikari@nhcarrigan.com>
2026-03-23 17:28:29 -07:00
hikari 3ac1d566cb chore: community feedback fixes and UI improvements (#102)
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m3s
CI / Lint, Build & Test (push) Successful in 1m8s
## Summary

Addresses all community feedback tickets from the last deploy, plus several UI improvements made during the same session.

### Bug fixes & balance
- **#97** — Fix auto-adventurer tier priority: sort by combat power instead of current cost so the highest-tier affordable unit is always purchased
- **#98** — Add Dark Templar adventurer (80k CP) to bridge the Volcanic Depths progression wall; rewire upgrade and quest rewards accordingly
- **#99** — Reorder and buff Shadow Assassin (55k CP, level 12) so Witch Coven feels rewarding rather than a regression
- **#100** — Display effective Gold/s (all multipliers applied) in the resource bar
- **#101** — Add Peasant tier 2 (10x, essence) and tier 3 (50x, crystals) upgrades for meaningful late-game scaling

### Other fixes
- Sync game state to server before auto-boss challenges (matching manual challenge behaviour)
- Refresh Discord avatar hash on every game load via bot token so stale CDN URLs are corrected automatically

### UI improvements
- Replace Donate / Discord / Support / View Profile / Edit Profile buttons with a single avatar dropdown menu
- Collapse all resources except Gold into a click-to-toggle dropdown; orange alert dot appears when a hidden resource is capped

## Closes

Closes #97
Closes #98
Closes #99
Closes #100
Closes #101

Reviewed-on: #102
Co-authored-by: Hikari <hikari@nhcarrigan.com>
Co-committed-by: Hikari <hikari@nhcarrigan.com>
2026-03-23 16:07:25 -07:00