Skip to content

Quest collections - #166

Merged
GroaxyVRC merged 5 commits into
Open-Source-Free-Realms:mainfrom
Sulphural:quest-collections
Oct 28, 2026
Merged

GroaxyVRC merged 5 commits into
Open-Source-Free-Realms:mainfrom
Sulphural:quest-collections

Conversation

@Sulphural

Copy link
Copy Markdown
Contributor

Make quest collection nodes player-specific and add quest collections

  • Quest collection nodes are now per player. You only see them while you're on the collect goal, and gathering one hides it for you only. Abandoning or resetting the quest brings them back.

  • Gathering a quest node adds an entry to that quest's collection in the collection book's Quests tab.

  • Take Me There is hidden while on a collect goal.

  • Added the retail Snowhill Protector quest collection from the 2014 capture.

  • Removed A Booming Problem (Miner job quest) and its tin-ore nodes.

  • Fixed Hasti's Homework Heist goal text and the Burgl quest line helper lines.

Comment thread src/Resources/CollectionNodePools.json Outdated
"NodeType": "hastis-homework",
"MaxActiveNodes": 8,
"RespawnSeconds": 30
"RespawnSeconds": 30,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these supposed to respawn? I thought quest collections would just be collected once and not respawn.

Do any quests have one-by-one spawn behavior that we need to support as well (if its not already supported)

@Sulphural Sulphural Oct 28, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They don't actually respawn. Player-specific nodes just get hidden for whoever picked them up, so the timer never kicks in. Removed RespawnSeconds from those pools since it wasn't doing anything. All the nodes for a quest show at once.

return QuestGoalResult.None;

progress.Increment();
if (progress is not CollectProgress collectProgress || !collectProgress.TryAdd(((NodeGatheredEvent)questEvent).Node.SpawnDefinition.Id))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TBH, this might be unnecessary or super nitty, but Idk if having a cast here is good. Is there a way to rework this logic without having to cast?

I do understand that the previous check should prevent this cast from failing, but something about it doesn't feel right, though I could be tripping.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Swapped it for pattern matching, so the cast is gone.

@ImAlko

ImAlko commented Oct 28, 2026

Copy link
Copy Markdown
Contributor
  1. Make sure that any collections for a quest that are checked by ID are represented in the DB (iirc, I think you just have it as count for collections and by ID for talked-to NPCs). Example: if I collected 3 of the quest collections in a random order, then re-logged, what would happen?

  2. Do a double check against retail and then this should be good to go.

…er-specific pool and remove unused respawn times
@Sulphural

Sulphural commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor Author
  1. Make sure that any collections for a quest that are checked by ID are represented in the DB (iirc, I think you just have it as count for collections and by ID for talked-to NPCs). Example: if I collected 3 of the quest collections in a random order, then re-logged, what would happen?
  2. Do a double check against retail and then this should be good to go.
  1. Progress is saved per node ID, not as a count, so if you grab 3 in any order and relog, those same 3 stay collected. Tested it in game.

  2. Text, collections and rewards match retail research, but I don't have a capture of a quest pickup to check.

Also added a startup warning if a collect goal uses a node type with no player-specific pool.

@GroaxyVRC
GroaxyVRC merged commit 2853ab2 into Open-Source-Free-Realms:main Oct 28, 2026
1 check passed
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.

3 participants