返回提交历史
Modified
config-vanilla.json
+1
-0
Modified
src/constants/gameToBuildVersion.ts
+1
-0
Modified
src/services/configService.ts
+1
-0
Modified
src/services/worldStateService.ts
+89
-0
Modified
static/webui/index.html
+8
-0
Modified
static/webui/translations/de.js
+1
-0
Modified
static/webui/translations/en.js
+1
-0
Modified
static/webui/translations/es.js
+1
-0
Modified
static/webui/translations/fr.js
+1
-0
Modified
static/webui/translations/ru.js
+1
-0
Modified
static/webui/translations/uk.js
+1
-0
Modified
static/webui/translations/zh.js
+1
-0
XFEstudio/XFESpaceNinjaServer
feat: pride (#4310)
Closes #4232 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/4310 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: rk-watchdog-timer <347+rk-watchdog-timer@noreply.localhost> Co-committed-by: rk-watchdog-timer <347+rk-watchdog-timer@noreply.localhost>
555d64fd
代码差异
12 个文件
+107
-0
@@ -99,6 +99,7 @@
99
99
"plagueStarOverride": null,
100
100
"starDaysOverride": null,
101
101
"saintPatrickOverride": null,
102
"prideOverride": null,
102
103
"xmasOverride": null,
103
104
"lunarNewYear": null,
104
105
"dogDaysOverride": null,
@@ -24,6 +24,7 @@ const gameToBuildVersion = {
24
24
"33.0.0": "2023.04.25.23.40",
25
25
"32.2.0": "2022.11.30.08.13",
26
26
"32.0.0": "2022.09.06.19.24",
27
"31.6.0": "2022.06.09.08.45",
27
28
"31.5.0": "2022.04.29.12.53",
28
29
"31.0.0": "2021.12.15.00.15",
29
30
"30.5.0": "2021.07.05.17.03",
@@ -107,6 +107,7 @@ export interface IConfig {
107
107
plagueStarOverride?: boolean;
108
108
starDaysOverride?: boolean;
109
109
saintPatrickOverride?: boolean;
110
prideOverride?: boolean;
110
111
xmasOverride?: boolean;
111
112
lunarNewYear?: string;
112
113
dogDaysOverride?: boolean;
@@ -2682,6 +2682,95 @@ export const getWorldState = (
2682
2682
pushFlashSales(worldState, storeItems, activation, expiry, "SEASONAL", buildLabel);
2683
2683
}
2684
2684
2685
// Pride Month - June
2686
const isJune = date.getUTCMonth() == 5;
2687
if (
2688
(config.worldState?.prideOverride ?? isJune) &&
2689
version_compare(buildLabel, gameToBuildVersion["29.5.0"]) >= 0
2690
) {
2691
const activation = config.worldState?.prideOverride ? 1772467200000 : Date.UTC(date.getUTCFullYear(), 5, 1);
2692
const expiry = config.worldState?.prideOverride ? 2000000000000 : Date.UTC(date.getUTCFullYear(), 6, 1);
2693
const storeItems: (Partial<IFlashSale> & { TypeName: string; minBuildLabel?: string })[] = [
2694
// Color palettes
2695
{ TypeName: "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerPrideItemA", RegularOverride: 1 },
2696
{
2697
TypeName: "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerPrideItemB",
2698
RegularOverride: 1,
2699
minBuildLabel: gameToBuildVersion["31.5.0"]
2700
},
2701
// Glyphs
2702
{
2703
TypeName: "/Lotus/Types/StoreItems/AvatarImages/AvatarImagePrideLotusSymbolGlyph",
2704
RegularOverride: 1,
2705
minBuildLabel: gameToBuildVersion["42.0.0"]
2706
},
2707
{
2708
TypeName: "/Lotus/Types/StoreItems/AvatarImages/AvatarImagePrideCommunity",
2709
RegularOverride: 1,
2710
minBuildLabel: gameToBuildVersion["31.6.0"]
2711
},
2712
{
2713
TypeName: "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHildrynPrideCommunity",
2714
RegularOverride: 1,
2715
minBuildLabel: gameToBuildVersion["33.5.0"]
2716
},
2717
{
2718
TypeName: "/Lotus/Types/StoreItems/AvatarImages/AvatarImagePrideGlyph",
2719
RegularOverride: 1,
2720
minBuildLabel: gameToBuildVersion["35.5.0"]
2721
},
2722
{
2723
TypeName: "/Lotus/Types/StoreItems/AvatarImages/AvatarImagePride2025Glyph",
2724
RegularOverride: 1,
2725
minBuildLabel: gameToBuildVersion["38.5.0"]
2726
},
2727
// Ship decorations
2728
{
2729
TypeName: "/Lotus/Types/Items/ShipDecos/Venus/PrideCommunityDisplay",
2730
RegularOverride: 1,
2731
minBuildLabel: gameToBuildVersion["31.6.0"]
2732
},
2733
{
2734
TypeName: "/Lotus/Types/Items/ShipDecos/Pride2023Display",
2735
RegularOverride: 1,
2736
minBuildLabel: gameToBuildVersion["33.5.0"]
2737
},
2738
{
2739
TypeName: "/Lotus/Types/Items/ShipDecos/Venus/Pride2024Display",
2740
RegularOverride: 1,
2741
minBuildLabel: gameToBuildVersion["35.5.0"]
2742
},
2743
{
2744
TypeName: "/Lotus/Types/Items/ShipDecos/Pride2in1Display",
2745
RegularOverride: 1,
2746
minBuildLabel: gameToBuildVersion["38.6.0"]
2747
},
2748
{
2749
TypeName: "/Lotus/Types/Items/ShipDecos/Events/NeonPrideWings",
2750
RegularOverride: 1,
2751
minBuildLabel: gameToBuildVersion["35.5.0"]
2752
},
2753
{
2754
TypeName: "/Lotus/Types/Items/ShipDecos/HeartOroRainbowDeco",
2755
RegularOverride: 1,
2756
minBuildLabel: gameToBuildVersion["38.6.0"]
2757
},
2758
// 2026 items
2759
{
2760
TypeName: "/Lotus/Types/Items/ShipDecos/Pride2026Poster",
2761
RegularOverride: 1,
2762
minBuildLabel: gameToBuildVersion["42.0.0"]
2763
},
2764
{
2765
TypeName: "/Lotus/Types/Items/ShipDecos/Props/Seasonal/Pride2026SquarePictureFrame",
2766
RegularOverride: 1,
2767
minBuildLabel: gameToBuildVersion["42.0.0"]
2768
}
2769
];
2770
2771
pushFlashSales(worldState, storeItems, activation, expiry, "SEASONAL", buildLabel);
2772
}
2773
2685
2774
const xmasStart = Date.UTC(date.getUTCFullYear(), 11, 1);
2686
2775
const xmasEnd = Date.UTC(date.getUTCFullYear() + 1, 1, 1);
2687
2776
const isXmas = timeMs >= xmasStart && timeMs < xmasEnd;
@@ -1563,6 +1563,14 @@
1563
1563
<option value="false" data-loc="disabled"></option>
1564
1564
</select>
1565
1565
</div>
1566
<div class="form-group mt-2">
1567
<label class="form-label" for="worldState.prideOverride" data-loc="worldState_prideOverride"></label>
1568
<select class="form-control" id="worldState.prideOverride" data-default="null">
1569
<option value="null" data-loc="normal"></option>
1570
<option value="true" data-loc="enabled"></option>
1571
<option value="false" data-loc="disabled"></option>
1572
</select>
1573
</div>
1566
1574
<div class="form-group mt-2">
1567
1575
<label class="form-label" for="worldState.lunarNewYear" data-loc-itemMap="/Lotus/Language/Store/LunarNewYearSearchTag"></label>
1568
1576
<select class="form-control" id="worldState.lunarNewYear" data-default="null">
@@ -318,6 +318,7 @@ dict = {
318
318
worldState_tennoLiveRelay: `TennoLive Relais`,
319
319
worldState_baroTennoConRelay: `Baros TennoCon-Relais`,
320
320
worldState_saintPatrick: `St. Patrick’s Day`,
321
worldState_prideOverride: `[UNTRANSLATED] Pride Month`,
321
322
worldState_xmas: `Tennobaum`,
322
323
worldState_lunarNewYearEntry: `|VAL|: Jahr |ANIMAL|`,
323
324
worldState_lunarNewYearAnimal1: `der Ratte`,
@@ -317,6 +317,7 @@ dict = {
317
317
worldState_tennoLiveRelay: `TennoLive Relay`,
318
318
worldState_baroTennoConRelay: `Baro's TennoCon Relay`,
319
319
worldState_saintPatrick: `St. Patrick’s Day`,
320
worldState_prideOverride: `Pride Month`,
320
321
worldState_xmas: `Tennobaum`,
321
322
worldState_lunarNewYearEntry: `|VAL|: Year of the |ANIMAL|`,
322
323
worldState_lunarNewYearAnimal1: `Rat`,
@@ -318,6 +318,7 @@ dict = {
318
318
worldState_tennoLiveRelay: `Repetidor de TennoLive`,
319
319
worldState_baroTennoConRelay: `Repetidor de Baro de la TennoCon`,
320
320
worldState_saintPatrick: `Día de San Patricio`,
321
worldState_prideOverride: `[UNTRANSLATED] Pride Month`,
321
322
worldState_xmas: `[UNTRANSLATED] Tennobaum`,
322
323
worldState_lunarNewYearEntry: `[UNTRANSLATED] |VAL|: Year of the |ANIMAL|`,
323
324
worldState_lunarNewYearAnimal1: `[UNTRANSLATED] Rat`,
@@ -318,6 +318,7 @@ dict = {
318
318
worldState_tennoLiveRelay: `Relais TennoLive`,
319
319
worldState_baroTennoConRelay: `Relais Baro TennoCon`,
320
320
worldState_saintPatrick: `Saint-Patrick`,
321
worldState_prideOverride: `[UNTRANSLATED] Pride Month`,
321
322
worldState_xmas: `Tennobaum`,
322
323
worldState_lunarNewYearEntry: `|VAL|: Année |ANIMAL|`,
323
324
worldState_lunarNewYearAnimal1: `du Rat`,
@@ -318,6 +318,7 @@ dict = {
318
318
worldState_tennoLiveRelay: `Реле TennoLive`,
319
319
worldState_baroTennoConRelay: `Реле Баро TennoCon`,
320
320
worldState_saintPatrick: `День Святого Патрика`,
321
worldState_prideOverride: `[UNTRANSLATED] Pride Month`,
321
322
worldState_xmas: `Теннобаум`,
322
323
worldState_lunarNewYearEntry: `|VAL|: Год |ANIMAL|`,
323
324
worldState_lunarNewYearAnimal1: `Крысы`,
@@ -318,6 +318,7 @@ dict = {
318
318
worldState_tennoLiveRelay: `Реле TennoLive`,
319
319
worldState_baroTennoConRelay: `Реле Баро TennoCon`,
320
320
worldState_saintPatrick: `День святого Патрика`,
321
worldState_prideOverride: `[UNTRANSLATED] Pride Month`,
321
322
worldState_xmas: `Теннобаум`,
322
323
worldState_lunarNewYearEntry: `|VAL|: Рік |ANIMAL|`,
323
324
worldState_lunarNewYearAnimal1: `[UNTRANSLATED] Rat`,
@@ -318,6 +318,7 @@ dict = {
318
318
worldState_tennoLiveRelay: `TennoLive中继站`,
319
319
worldState_baroTennoConRelay: `Baro的TennoCon中继站`,
320
320
worldState_saintPatrick: `圣帕特里克节`,
321
worldState_prideOverride: `[UNTRANSLATED] Pride Month`,
321
322
worldState_xmas: `活动:Tennobaum`,
322
323
worldState_lunarNewYearEntry: `|VAL|:|ANIMAL|年`,
323
324
worldState_lunarNewYearAnimal1: `鼠`,