feat(goals): cetus events #2598

Merged
Sainan merged 5 commits from AMelonInsideLemon/SpaceNinjaServer:goals-cetus into main 2025-08-11 08:08:41 -07:00
4 changed files with 16 additions and 16 deletions
Showing only changes of commit b9ac660b7e - Show all commits

View File

@ -72,6 +72,8 @@
"resourceBoost": false,
"tennoLiveRelay": false,
"galleonOfGhouls": 0,
"ghoulEmergence": null,
"plagueStar": null,
Sainan marked this conversation as resolved Outdated

These fields obviously mismatch with the typings.

These fields obviously mismatch with the typings.
"starDaysOverride": null,
"eidolonOverride": "",
"vallisOverride": "",
@ -81,9 +83,7 @@
"circuitGameModes": null,
"darvoStockMultiplier": 1,
"varziaOverride": "",
"varziaFullyStocked": false,
"plagueStar": null,
"ghoulEmergence": null
"varziaFullyStocked": false
Sainan marked this conversation as resolved Outdated

Still ordered & named awkwardly:

  • Move it before starDaysOverride in config-vanilla.json + configService.ts to match the webui ordering.
  • Rename to plagueStarOverride and ghoulEmergenceOverride to match starDaysOverride.
Still ordered & named awkwardly: - Move it before `starDaysOverride` in config-vanilla.json + configService.ts to match the webui ordering. - Rename to `plagueStarOverride` and `ghoulEmergenceOverride` to match `starDaysOverride`.
},
"dev": {
"keepVendorsExpired": false

View File

@ -84,6 +84,8 @@ export interface IConfig {
tennoLiveRelay?: boolean;
baroTennoConRelay?: boolean;
galleonOfGhouls?: number;
ghoulEmergenceOverride?: boolean;
plagueStarOverride?: boolean;
starDaysOverride?: boolean;
eidolonOverride?: string;
vallisOverride?: string;
@ -94,8 +96,6 @@ export interface IConfig {
darvoStockMultiplier?: number;
varziaOverride?: string;
varziaFullyStocked?: boolean;
Sainan marked this conversation as resolved Outdated

The ordering here seems a bit weird compared to how they are ordered in the WebUI.

Also, from what I understand, these are periodic events, so something similar to Star Days would seem more appropriate.

The ordering here seems a bit weird compared to how they are ordered in the WebUI. Also, from what I understand, these are periodic events, so something similar to Star Days would seem more appropriate.

Plague Star is... awkwardly periodic. In that it kinda happens whenever DE remembers they got the code for it. There is... zero consistency for it, in terms of when it happens, how long it lasts, or when it's supposed to come back. Ghoul Purge and Thermia Fractures are also similarly awkwardly periodic, only they are properly recurring, just nobody has any idea when they'll actually drop until they do, save for a vague "every few weeks".

image.png

Plague Star is... *awkwardly* periodic. In that it kinda happens whenever DE remembers they got the code for it. There is... zero consistency for it, in terms of when it happens, how long it lasts, or when it's supposed to come back. Ghoul Purge and Thermia Fractures are also similarly awkwardly periodic, only they *are* properly recurring, just nobody has any idea *when* they'll actually drop until they do, save for a vague "every few weeks". ![image.png](/attachments/4e7d95d4-2674-45e8-9b9f-c8fbb36da5e1)

From a quick historical analysis, I can see that ghoul purge is active for 3-4 days and inactive for 15-17 days.

From a quick historical analysis, I can see that ghoul purge is active for 3-4 days and inactive for 15-17 days.
plagueStar?: boolean;
ghoulEmergence?: boolean;
};
dev?: {
keepVendorsExpired?: boolean;

View File

@ -1570,17 +1570,17 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
const plagueStarEnd = Date.UTC(date.getUTCFullYear(), 10, firstNovemberMondayOffset + 15, 16);
const isPlagueStarActive = timeMs >= plagueStarStart && timeMs < plagueStarEnd;
if (config.worldState?.plagueStar ?? isPlagueStarActive) {
if (config.worldState?.plagueStarOverride ?? isPlagueStarActive) {
worldState.Goals.push({
_id: { $oid: "654a5058c757487cdb11824f" },
Activation: {
$date: {
$numberLong: config.worldState?.plagueStar ? "1699372800000" : plagueStarStart.toString()
$numberLong: config.worldState?.plagueStarOverride ? "1699372800000" : plagueStarStart.toString()
}
},
Expiry: {
$date: {
$numberLong: config.worldState?.plagueStar ? "2000000000000" : plagueStarEnd.toString()
$numberLong: config.worldState?.plagueStarOverride ? "2000000000000" : plagueStarEnd.toString()
}
},
Tag: "InfestedPlains",
@ -1701,7 +1701,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
const ghoulsCycleDay = day % 21;
const isGhoulEmergenceActive = ghoulsCycleDay >= 17 && ghoulsCycleDay <= 20; // 4 days for event and 17 days for break
if (config.worldState?.ghoulEmergence ?? isGhoulEmergenceActive) {
if (config.worldState?.ghoulEmergenceOverride ?? isGhoulEmergenceActive) {
const ghoulPool = [...eidolonGhoulJobs];
const pastGhoulPool = [...eidolonGhoulJobs];
@ -1722,7 +1722,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
_id: { $oid: "687ebbe6d1d17841c9c59f38" },
Activation: {
$date: {
$numberLong: config.worldState?.ghoulEmergence
$numberLong: config.worldState?.ghoulEmergenceOverride
? "1753204900185"
: Date.UTC(
date.getUTCFullYear(),
@ -1733,7 +1733,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
},
Expiry: {
$date: {
$numberLong: config.worldState?.ghoulEmergence
$numberLong: config.worldState?.ghoulEmergenceOverride
? "2000000000000"
: Date.UTC(
date.getUTCFullYear(),
@ -1742,7 +1742,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
).toString()
}
},
HealthPct: config.worldState?.ghoulEmergence ? 1 : healthPct,
HealthPct: config.worldState?.ghoulEmergenceOverride ? 1 : healthPct,
VictimNode: "SolNode228",
Regions: [2],
Success: 0,

View File

@ -947,16 +947,16 @@
</select>
</div>
<div class="form-group mt-2">
<label class="form-label" for="worldState.ghoulEmergence" data-loc="worldState_ghoulEmergence"></label>
<select class="form-control" id="worldState.ghoulEmergence" data-default="null">
<label class="form-label" for="worldState.ghoulEmergenceOverride" data-loc="worldState_ghoulEmergence"></label>
<select class="form-control" id="worldState.ghoulEmergenceOverride" data-default="null">
<option value="null" data-loc="normal"></option>
<option value="true" data-loc="enabled"></option>
<option value="false" data-loc="disabled"></option>
</select>
</div>
<div class="form-group mt-2">
<label class="form-label" for="worldState.plagueStar" data-loc="worldState_plagueStar"></label>
<select class="form-control" id="worldState.plagueStar" data-default="null">
<label class="form-label" for="worldState.plagueStarOverride" data-loc="worldState_plagueStar"></label>
<select class="form-control" id="worldState.plagueStarOverride" data-default="null">
<option value="null" data-loc="normal"></option>
<option value="true" data-loc="enabled"></option>
<option value="false" data-loc="disabled"></option>