Skip to content

feat: add 3 intermediate quests — Roads Run Red, Iron Will, Warchief'#18

Closed
terminaldestiny wants to merge 2309 commits intoHyperscapeAI:mainfrom
terminaldestiny:feat/intermediate-quests
Closed

feat: add 3 intermediate quests — Roads Run Red, Iron Will, Warchief'#18
terminaldestiny wants to merge 2309 commits intoHyperscapeAI:mainfrom
terminaldestiny:feat/intermediate-quests

Conversation

@terminaldestiny
Copy link
Copy Markdown

Adds a connected quest arc bridging the 7 starter quests into mid-game combat and smithing progression.

  • roads_run_red: kill 15 bandits, uncover barbarian war standard (Captain Rowan)
  • iron_will: mine/smelt/smith iron scimitar, test on barbarian outriders (Torvin)
  • warchiefs_fury: storm Grundar's war camp, defeat the warchief boss (Horvik)

NPCs reference each other by name across the arc. Each quest completion hands the player off to the next NPC. Adds barbarian_warchief boss NPC (level 28, health 45, aggressive, respawns every 200 ticks).

lalalune and others added 30 commits February 21, 2026 05:33
…scapeAI/hyperscape into hackathon

# Conflicts:
#	packages/contracts/deploys/31337/latest.json
#	packages/contracts/worlds.json
#	packages/gold-betting-demo/app/bun.lock
…cape into hackathon

# Conflicts:
#	packages/gold-betting-demo/app/src/App.tsx
#	packages/gold-betting-demo/app/src/components/PredictionMarketPanel.tsx
…scapeAI/hyperscape into hackathon

# Conflicts:
#	bun.lock
#	packages/contracts/deploys/31337/latest.json
#	packages/contracts/worlds.json
Add spatial bounds check so SafeAreaDeathHandler never creates
gravestones in the duel arena — duel deaths are fully owned by
DuelSystem/StreamingDuelScheduler. This is robust against server
restarts and race conditions where runtime duel flags may have
been cleared before death processing ran.
…eatures

- Added PointsLeaderboard and PointsHistory components for displaying user points and activity.
- Updated PointsDisplay to include rank and multiplier details.
- Integrated new API endpoints for fetching rank and multiplier data.
- Introduced a referral panel for tracking referral bonuses.
- Updated package.json to include new dependencies for real-time features.
Add spatial bounds check so SafeAreaDeathHandler never creates
gravestones in the duel arena — duel deaths are fully owned by
DuelSystem/StreamingDuelScheduler. This is robust against server
restarts and race conditions where runtime duel flags may have
been cleared before death processing ran.
lalalune and others added 26 commits February 24, 2026 16:16
Bumps the typescript group with 1 update in the / directory: [@types/chai](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chai).


Updates `@types/chai` from 4.3.17 to 5.2.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chai)

---
updated-dependencies:
- dependency-name: "@types/chai"
  dependency-version: 5.2.3
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: typescript
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…king

Add weighted random combat role selection (50% melee, 25% ranged, 25% mage)
with full gear equip/cleanup lifecycle in DuelOrchestrator. DuelCombatAI now
receives its combat role and adapts style switching accordingly.

Fix two bugs preventing mage agents from attacking:

1. Combat state key mismatch: CombatStateService syncs abbreviated keys
   (data.c/data.ct) but getGameState() only read full keys (data.inCombat/
   data.combatTarget), so DuelCombatAI always saw inCombat=false and flooded
   executeAttack every tick instead of letting auto-attacks drive combat.

2. Async TOCTOU race in handleMagicAttack: cooldown was checked early but
   claimed after the async consumeRunesForSpell call. With bug 1 flooding
   attacks, two concurrent invocations could both pass the cooldown check
   before either claimed it. Moved cooldown claim and enterCombat before
   the async rune consumption to close the race window.

Also removes stale planning docs and debug images.
…aming-audit-remediation

Resolve manifest conflict by deleting model-bounds.json — manifests
are sourced from the separate HyperscapeAI/assets repo.
…audit-remediation

fix(duel): add ranged/mage combat roles and fix mage agents not attacking
# Conflicts:
#	packages/server/world/assets/manifests/gathering/woodcutting.json
The npm override for playwright (>=1.55.1) conflicted with the direct
dependency (^1.55.1) in Cloudflare's build environment, causing
EOVERRIDE error during deployment.
Enable the build-app workflow to build native desktop and mobile apps
for Tauri-based releases on Windows, macOS, Linux, iOS, and Android.
The job-level 'if' condition cannot reference matrix variables as the
matrix context is not available until the job runs. Remove the desktop
build filtering to fix workflow parsing errors.
The job-level 'if' condition cannot reference matrix variables as the
matrix context is not available until the job runs. Remove the desktop
build filtering to fix workflow parsing errors.
- Add keep-alive re-engagement in DuelCombatAI to prevent agents idling when combat state times out (2H sword fix)
- Propagate weapon type (mage/ranged/melee) through DuelOrchestrator into startCombat so correct attack speeds are used
- Add rune inventory readiness polling and rune validation bypass for duel bot agents
- Guard against state starvation from repeated startCombat resets on slow weapons
- Refresh combat timeout after ranged/magic attacks in both CombatSystem and CombatTickProcessor
- Bypass PvP zone checks for streaming duel combatants
- Block aggro and chase on players in safe zones via AggroSystem
…rd-fixes

fix(duel): fix mage staff and 2H sword combat in streaming duels
Fix two pre-existing bugs in the IndexedDB processed model cache:

1. Missing objects (e.g. altars): serializeNode used findIndex-by-name
   to map hierarchy nodes to mesh data. Models with duplicate mesh names
   (common: "", "Cube", "Cube") all resolved to the same index. During
   deserialization, Three.js add() auto-removes from previous parent,
   so only the last reference survived. Fixed by using a Map<Object3D, number>
   identity map built during traversal.

2. Lost textures (white/wrong colors after restart): textures were serialized
   as ephemeral blob: URLs but never reloaded during deserialization.
   Fixed by extracting raw RGBA pixels via canvas getImageData (synchronous)
   and restoring as THREE.DataTexture — no async loading race conditions.

Also fixes grey tree materials: createDissolveMaterial used instanceof
MeshStandardMaterial which fails for MeshStandardNodeMaterial in the
WebGPU build. Replaced with duck-type property check.

Additional improvements:
- localStorage.setItem('disable-model-cache', 'true') to bypass cache
- Error logging on IndexedDB put/transaction failures
- Bumped PROCESSED_CACHE_VERSION to 3 to invalidate broken entries

Co-authored-by: Cursor <cursoragent@cursor.com>
- Fix mobType always undefined in getNearbyEntities: setProperty() stores
  in entity.config.properties, not entity.data — add fallback to read from
  entityConfig.properties.mobType so warchief/barbarian are correctly
  distinguished during kill stages

- Fix attack cancel-requeue loop: pickQuestAction issued a new attack
  command every 8s tick, which cancelled the pending walk-to-target via
  requestServerAttack/cancelPendingAttack before the agent could close
  the distance — add 15s cooldown (lastAttackCommandAt/TargetId) so the
  walk completes before re-issuing

All 10 quests now complete; DESTINY advancing to skill grinding
@terminaldestiny
Copy link
Copy Markdown
Author

  • All 10 quests are now complete and verified
    • The two key bugs fixed (mobType lookup, attack requeue loop)
    • DESTINY tested end-to-end through the full quest chain

- Fix mobType always undefined in getNearbyEntities (stored in
  entity.config.properties, not entity.data) — mobs now correctly
  identified for kill stage targeting
- Fix attack cancel-requeue loop: add 15s cooldown per target so
  walk-to-attack completes before re-issuing requestServerAttack
- Fix findMobForQuest to use exact mobType match (barbarian_warchief
  no longer matches barbarian kill stage)
- Fix moveTowardMobType includes() matching navigating agent to wrong mob
- Add barbarian/warchief spawning for intermediate quest camps
- Fix QuestSystem missing RUNECRAFTING/CRAFTING/FLETCHING_COMPLETE subscribers
- Fix gathering: stop player movement before starting gather session
- Fix ore/fish resource variants (were falling back to tree_normal)
- Fix ore_essence 100% mining success rate
- Fix inventory management during quest gather stages (drop non-target ores)
- Fix pickup filter to ignore non-target ores during iron ore quest stage
- All 10 quests verified working end-to-end with DESTINY agent
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.

6 participants