Skip to content

Add peacockContent option to control presence of peacock-exclusive content.#644

Open
Yanrishatum wants to merge 3 commits intothepeacockproject:masterfrom
Yanrishatum:feat_peacockContentFlag
Open

Add peacockContent option to control presence of peacock-exclusive content.#644
Yanrishatum wants to merge 3 commits intothepeacockproject:masterfrom
Yanrishatum:feat_peacockContentFlag

Conversation

@Yanrishatum
Copy link
Contributor

@Yanrishatum Yanrishatum commented Dec 3, 2025

Scope

  • Adds peacockContent option flag with supported values of ENABLED (default), NOXP and DISABLED
  • In NOXP - challenges tagged with peacock will award no mastery XP to preserve (lol) mastery progression balance parity of official servers.
  • When DISABLED - removes the challenges and escalations exclusive to Peacock outright.
  • New challenges that are exclusive to Peacock now should have a peacock tag. Including challenge packs.
  • New type field for MissionManifest.Peacock field: Currently only supports value of peacock to indicate that manifest is peacock-exclusive content.
    • New escalations/missions exclusive to peacock now should have that field set to peacock.
  • Updated escalation guidelines to include tagging requirement.
  • Misc: If challenge pack has no escalations it is now hidden in the User Profile -> Challenges -> Challenge Packs menu.

I've gone through stuff I know of, but I may have missed some challenges or escalations that are peacock-exclusive but not marked.

type field later can be utilized to filter other types of content that is missing on official servers, like content restoration.

Supersedes by #641 as a more generic user-controlled option via peacockContent=NOXP.

Test Plan

  1. Check if all peacock exclusive challenges have proper peacock tag added.
  2. Check if all escalations have Peacok.type set to "peacock".
  3. Set peacockContent to NOXP
  4. Ensure all peacock-exclusive challenges have no XP awards.
    • If it has one - it was not tagged with peacock tag.
  5. Set to DISABLED
  6. Ensure all peacock-exclusive content is gone: challenges, escalations (inc. one in ET arcade).

Optional:

  1. Set to ENABLED
  2. Complete a few challenges and do progress/complete some escalations.
  3. Set to DISABLED
  4. Log in into game
  5. Set to ENABLED
  6. Ensure that progression was not lost.

Checklist

  • I have run Prettier to reformat any changed files
  • I have verified my changes work

Undo prettier formatting in menuSystem
@suanjiansalt
Copy link
Contributor

What's called "isolated unlockableds" should be considered as Peacock exclusive in this case.

@Yanrishatum
Copy link
Contributor Author

Yes and no. They are already present in the game files. Peacock mainly just ties those to challenges. With how inventory currently works - when content is disabled - those items will be treated as "not in any reward pool" and thus available by default.

@suanjiansalt
Copy link
Contributor

suanjiansalt commented Dec 4, 2025

With how inventory currently works - when content is disabled - those items will be treated as "not in any reward pool" and thus available by default.

Not talking about Twitch drops or click-to-get items. In any case it's not official-like. Unless you just mechanically define the concept of "Peacock exclusive" as "Peacock introducing".

Comment on lines +329 to +345
contracts = contracts.filter((contract) => {
if (contract.Peacock?.type === "peacock") {
// We need to delete the contracts from hardcoded missionsInLocation
// in order to avoid issues with missing contracts in registry.
toDelete.add(contract.Metadata.Id)

if (contract.Metadata.Type === "arcade") {
orderedETAs.splice(
orderedETAs.indexOf(contract.Metadata.Id),
1,
)
}

return false
}

return true
Copy link
Member

Choose a reason for hiding this comment

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

I'm very happy with this PR except for this part. I'd much rather the menu do this filtering rather than delegating it to the internal registration. Otherwise, this won't work for plugins, etc. It also just generally feels out of place here.

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