Skip to content

Improve starter gameplay and bot population lifecycle - #68

Merged
pmbstyle merged 16 commits into
mainfrom
gameplay-population-and-merchants
Jul 23, 2026
Merged

Improve starter gameplay and bot population lifecycle#68
pmbstyle merged 16 commits into
mainfrom
gameplay-population-and-merchants

Conversation

@pmbstyle

@pmbstyle pmbstyle commented Jul 23, 2026

Copy link
Copy Markdown
Owner

Summary

This PR improves the early-game loop and makes the simulated population grow like a persistent world rather than a static bot pack.

Player-facing gameplay

  • Gatekeepers now present quest and teleport actions together when both are available.
  • City shot merchants stock Soulshots, Spiritshots, and Blessed Spiritshots at the town's intended grade only: no-grade in starter villages; D in Gludin, Gludio, and Dion; C in Giran; B in Oren, Hunter's Village, and Heine; A in Aden; and S in Goddard and Rune.
  • Static stalls in the starter villages, Oren, Hunter's Village, and Aden use geodata-validated ground positions near each town's gatekeeper, so their stores remain visible and selectable.
  • Respawned NPCs clear stale known-object state, so a monster that has respawned can be targeted and attacked immediately.

Persistent bot population

  • Replaced the legacy static adventurer spawn with racial starter cohorts: 30 Human, Elf, Dark Elf, Orc, and Dwarf bots on the level-one starter grounds.
  • Expanded the population in paced cohorts while retaining regional balance and same-race starter-party grouping.
  • The hard cap covers every generated bot, including characters temporarily running a private store; fixed merchant and crafting service stations remain outside that cap.
  • At x1-x10, a new cohort opens once the previous cohort averages level 5. At x50 and higher, it waits for level 10 to avoid flooding starter areas on fast rates.
  • Removed level-based automatic gear grants. Bots now evaluate gear needs, earn Adena, buy reasonable equipment, or farm drops before continuing their progression.
  • Generated bots do not trade before level 10. Loot from level 1-5 mobs is retained instead of becoming immediate market or NPC-liquidation stock, while crafting materials remain sellable once trading begins.
  • No-grade private stores use the nearest racial starter market to their farming location instead of falling back to Giran.

Reliability and observability

  • Added source-mob-level provenance to background drops for the sale policy.
  • Added generated bot names that remain client-safe and varied.
  • Added coverage for staged population limits, race/region seeding, starter party grouping, high-rate wave pacing, market eligibility, low-level loot protection, gear acquisition, gatekeeper menus, merchant shop stock, and NPC visibility after respawn.

Validation

  • npm run check
  • git diff --check
  • node tests/test_population_seed_planner.js
  • node tests/test_bot_cold_market_listing.js
  • node tests/test_bot_background_drops.js
  • node tests/test_bot_gear_acquisition.js
  • node tests/test_gatekeeper_teleports.js
  • node tests/test_npc_known_object_lifecycle.js
  • node tests/test_npc_shop_stock.js
  • node tests/test_bot_market_town_routing.js

Live verification

On a fresh x50 bot wipe, the server seeded 150 level-one adventurers evenly across the five racial starter regions, kept pre-10 bots out of trade, formed race-local starter parties, and deferred the second cohort until the level-10 threshold.

@pmbstyle pmbstyle self-assigned this Jul 23, 2026
@pmbstyle
pmbstyle marked this pull request as ready for review July 23, 2026 14:48
@pmbstyle
pmbstyle merged commit 3d85dec into main Jul 23, 2026
3 checks passed
@pmbstyle
pmbstyle deleted the gameplay-population-and-merchants branch July 23, 2026 15:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant