feat: Void Corruption 2025 #2865

Merged
Sainan merged 39 commits from Slayer55555/SpaceNinjaServer:void-alerts into main 2025-10-09 00:28:35 -07:00
4 changed files with 21 additions and 9 deletions
Showing only changes of commit 0d394d4591 - Show all commits

View File

@ -31,7 +31,6 @@
"baroAlwaysAvailable": false,
"baroFullyStocked": false,
"varziaFullyStocked": false,
"voidCorruption": false,
"wolfHunt": false,
"orphixVenom": false,
"longShadow": false,
@ -42,6 +41,7 @@
"naberusNightsOverride": null,
"proxyRebellion": false,
"proxyRebellionRewardsOverride": 0,
"voidCorruption": 0,
"galleonOfGhouls": 0,
"ghoulEmergenceOverride": null,
"plagueStarOverride": null,

View File

@ -41,7 +41,6 @@ export interface IConfig {
baroAlwaysAvailable?: boolean;
baroFullyStocked?: boolean;
varziaFullyStocked?: boolean;
voidCorruption?: boolean;
wolfHunt?: boolean;
orphixVenom?: boolean;
longShadow?: boolean;
@ -52,6 +51,7 @@ export interface IConfig {
naberusNightsOverride?: boolean;
proxyRebellion?: boolean;
proxyRebellionRewardsOverride?: number;
voidCorruption?: number;
galleonOfGhouls?: number;
ghoulEmergenceOverride?: boolean;
plagueStarOverride?: boolean;

View File

@ -117,7 +117,7 @@ const voidCorruptionAlerts = [
{
_id: { $oid: "677d452e2f324ee7b90f8ccf" },
Activation: { $date: { $numberLong: "1736524800000" } },
Expiry: { $date: { $numberLong: "1736784000000" } },
Expiry: { $date: { $numberLong: "2000000000000" } },
MissionInfo: {
location: "SolNode61",
missionType: "MT_SABOTAGE",
@ -1565,8 +1565,13 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
worldState.VoidTraders.push(vt);
fullyStockBaro(vt);
}
if (config.worldState?.voidCorruption) {
worldState.Alerts = [...worldState.Alerts, ...voidCorruptionAlerts];
const voidCorruptionWeeks = config.worldState?.voidCorruption ?? 0;
Sainan marked this conversation as resolved Outdated

There's really no reason to use structuredClone here. You can update IWorldState to also specify readonly IAlert[] for what little value it has.

There's really no reason to use `structuredClone` here. You can update `IWorldState` to also specify `readonly IAlert[]` for what little value it has.
if (voidCorruptionWeeks > 0) {
worldState.Alerts = [
...worldState.Alerts,
...voidCorruptionAlerts.slice(0, voidCorruptionWeeks)
];
}
const isFebruary = date.getUTCMonth() == 1;
if (config.worldState?.starDaysOverride ?? isFebruary) {

View File

@ -1169,10 +1169,7 @@
<label class="form-check-label" for="unfaithfulBugFixes.useAnniversaryTagForOldGoals" data-loc="worldState_useAnniversaryTagForOldGoals"></label>
<abbr data-loc-inc="worldState_anniversary"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576zM320 200C333.3 200 344 210.7 344 224L344 336C344 349.3 333.3 360 320 360C306.7 360 296 349.3 296 336L296 224C296 210.7 306.7 200 320 200zM293.3 416C292.7 406.1 297.6 396.7 306.1 391.5C314.6 386.4 325.3 386.4 333.8 391.5C342.3 396.7 347.2 406.1 346.6 416C347.2 425.9 342.3 435.3 333.8 440.5C325.3 445.6 314.6 445.6 306.1 440.5C297.6 435.3 292.7 425.9 293.3 416z"/></svg></abbr>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="worldState.voidCorruption" />
<label class="form-check-label" for="worldState.voidCorruption" data-loc="worldState_voidCorruption"></label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="worldState.wolfHunt" />
<label class="form-check-label" for="worldState.wolfHunt" data-loc="worldState_wolfHunt"></label>
@ -1236,6 +1233,16 @@
</select>
</div>
</div>
<div class="form-group mt-2">
<label class="form-label" for="worldState.voidCorruption" data-loc="worldState_voidCorruption"></label>
<select class="form-control" id="worldState.voidCorruption" data-default="0">
<option value="0" data-loc="disabled"></option>
<option value="1" data-loc="worldState_week" data-loc-replace="1"></option>
<option value="2" data-loc="worldState_week" data-loc-replace="2"></option>
<option value="3" data-loc="worldState_week" data-loc-replace="3"></option>
<option value="4" data-loc="worldState_week" data-loc-replace="4"></option>
</select>
</div>
<div class="form-group mt-2">
<label class="form-label" for="worldState.galleonOfGhouls" data-loc="worldState_galleonOfGhouls"></label>
<abbr data-loc-inc="worldState_wolfHunt|worldState_anniversary|worldState_orphixVenom"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576zM320 200C333.3 200 344 210.7 344 224L344 336C344 349.3 333.3 360 320 360C306.7 360 296 349.3 296 336L296 224C296 210.7 306.7 200 320 200zM293.3 416C292.7 406.1 297.6 396.7 306.1 391.5C314.6 386.4 325.3 386.4 333.8 391.5C342.3 396.7 347.2 406.1 346.6 416C347.2 425.9 342.3 435.3 333.8 440.5C325.3 445.6 314.6 445.6 306.1 440.5C297.6 435.3 292.7 425.9 293.3 416z"/></svg></abbr>