返回提交历史
Modified
src/services/worldStateService.ts
+293
-119
XFEstudio/XFESpaceNinjaServer
feat: night of naberus and qtcc flashsales (#2901)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2901 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
7d3915fe
代码差异
1 个文件
+293
-119
@@ -35,7 +35,8 @@ import type {
35
35
IVoidTrader,
36
36
IVoidTraderOffer,
37
37
IWorldState,
38
TCircuitGameMode
38
TCircuitGameMode,
39
IFlashSale
39
40
} from "../types/worldStateTypes.ts";
40
41
import { toMongoDate, toOid, version_compare } from "../helpers/inventoryHelpers.ts";
41
42
import { logger } from "../utils/logger.ts";
@@ -1580,21 +1581,16 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
1580
1581
}
1581
1582
1582
1583
if (config.worldState?.qtccAlerts) {
1584
const activationTimeStamp = "1759327200000";
1585
const expiryTimeStamp = "2000000000000";
1586
1583
1587
worldState.Alerts.push(
1584
1588
{
1585
1589
_id: {
1586
1590
$oid: "68dc23c42e9d3acfa708ff3b"
1587
1591
},
1588
Activation: {
1589
$date: {
1590
$numberLong: "1759327200000"
1591
}
1592
},
1593
Expiry: {
1594
$date: {
1595
$numberLong: "2000000000000"
1596
}
1597
},
1592
Activation: { $date: { $numberLong: activationTimeStamp } },
1593
Expiry: { $date: { $numberLong: expiryTimeStamp } },
1598
1594
MissionInfo: {
1599
1595
location: "SolNode123",
1600
1596
missionType: "MT_SURVIVAL",
@@ -1618,16 +1614,8 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
1618
1614
_id: {
1619
1615
$oid: "68dc2466e298b4f04206687a"
1620
1616
},
1621
Activation: {
1622
$date: {
1623
$numberLong: "1759327200000"
1624
}
1625
},
1626
Expiry: {
1627
$date: {
1628
$numberLong: "2000000000000"
1629
}
1630
},
1617
Activation: { $date: { $numberLong: activationTimeStamp } },
1618
Expiry: { $date: { $numberLong: expiryTimeStamp } },
1631
1619
MissionInfo: {
1632
1620
location: "SolNode149",
1633
1621
missionType: "MT_DEFENSE",
@@ -1651,16 +1639,8 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
1651
1639
_id: {
1652
1640
$oid: "68dc26865e7cb56b820b4252"
1653
1641
},
1654
Activation: {
1655
$date: {
1656
$numberLong: "1759327200000"
1657
}
1658
},
1659
Expiry: {
1660
$date: {
1661
$numberLong: "2000000000000"
1662
}
1663
},
1642
Activation: { $date: { $numberLong: activationTimeStamp } },
1643
Expiry: { $date: { $numberLong: expiryTimeStamp } },
1664
1644
MissionInfo: {
1665
1645
location: "SolNode39",
1666
1646
missionType: "MT_EXCAVATE",
@@ -1681,6 +1661,72 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
1681
1661
ForceUnlock: true
1682
1662
}
1683
1663
);
1664
1665
const storeItems: (Partial<IFlashSale> & { TypeName: string })[] = [
1666
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021D", RegularOverride: 1 },
1667
{ TypeName: "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooTennoI", RegularOverride: 1 },
1668
{ TypeName: "/Lotus/Upgrades/Skins/Operator/Tattoos/TattooTennoH", RegularOverride: 1 },
1669
{ TypeName: "/Lotus/Upgrades/Skins/Clan/QTCC2024EmblemItem", RegularOverride: 1 },
1670
{ TypeName: "/Lotus/Types/Items/ShipDecos/Conquera2024Display", RegularOverride: 1 },
1671
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/AvatarImageConqueraGlyphVII", RegularOverride: 1 },
1672
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/AvatarImageConqueraGlyphVI", RegularOverride: 1 },
1673
{ TypeName: "/Lotus/Interface/Graphics/CustomUI/ConqueraStyle", RegularOverride: 1 },
1674
{ TypeName: "/Lotus/Interface/Graphics/CustomUI/Backgrounds/ConqueraBackground", RegularOverride: 1 },
1675
{ TypeName: "/Lotus/Types/Items/ShipDecos/Conquera2021Deco", RegularOverride: 1 },
1676
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2022A", RegularOverride: 1 },
1677
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021B", RegularOverride: 1 },
1678
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021A", RegularOverride: 1 },
1679
{ TypeName: "/Lotus/Upgrades/Skins/Scarves/TnCharityRibbonSyandana", RegularOverride: 1 },
1680
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/ImageConquera2021C", RegularOverride: 1 },
1681
{ TypeName: "/Lotus/Types/Items/ShipDecos/Venus/Conquera2023CommunityDisplay", RegularOverride: 1 },
1682
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/AvatarImageConqueraGlyphUpdated", RegularOverride: 1 },
1683
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/ImageConquera", RegularOverride: 1 },
1684
{ TypeName: "/Lotus/Upgrades/Skins/Sigils/QTCC2023ConqueraSigil", RegularOverride: 1 },
1685
{ TypeName: "/Lotus/Upgrades/Skins/Sigils/ConqueraSigil", RegularOverride: 1 },
1686
{ TypeName: "/Lotus/Upgrades/Skins/Effects/Conquera2022Ephemera", RegularOverride: 1 },
1687
{ TypeName: "/Lotus/Upgrades/Skins/Effects/ConqueraEphemera", RegularOverride: 1 },
1688
{ TypeName: "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorL", RegularOverride: 1 },
1689
{ TypeName: "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraArmorA", RegularOverride: 1 },
1690
{ TypeName: "/Lotus/Upgrades/Skins/Armor/TnCharityRibbonArmor/ConqueraChestRibbon", RegularOverride: 1 },
1691
{ TypeName: "/Lotus/Types/Items/ShipDecos/Plushies/PlushyProtectorStalker", PremiumOverride: 35 }
1692
];
1693
1694
worldState.FlashSales.push(
1695
...storeItems.map(item => ({
1696
...{
1697
StartDate: { $date: { $numberLong: activationTimeStamp } },
1698
EndDate: { $date: { $numberLong: expiryTimeStamp } },
1699
ProductExpiryOverride: { $date: { $numberLong: expiryTimeStamp } },
1700
ShowInMarket: item.ShowInMarket ?? true,
1701
HideFromMarket: item.HideFromMarket ?? false,
1702
SupporterPack: item.SupporterPack ?? false,
1703
Discount: item.Discount ?? 0,
1704
BogoBuy: item.BogoBuy ?? 0,
1705
BogoGet: item.BogoGet ?? 0,
1706
RegularOverride: item.RegularOverride ?? 0,
1707
PremiumOverride: item.PremiumOverride ?? 0
1708
},
1709
...item
1710
}))
1711
);
1712
1713
const seasonalItems = storeItems.map(item => item.TypeName);
1714
1715
const seasonalCategory = worldState.InGameMarket.LandingPage.Categories.find(
1716
c => c.CategoryName == "COMMUNITY"
1717
);
1718
if (seasonalCategory) {
1719
seasonalCategory.Items ??= [];
1720
seasonalCategory.Items.push(...seasonalItems);
1721
} else {
1722
worldState.InGameMarket.LandingPage.Categories.push({
1723
CategoryName: "COMMUNITY",
1724
Name: "/Lotus/Language/Store/CommunityCategoryTitle",
1725
Icon: "community",
1726
AddToMenu: true,
1727
Items: seasonalItems
1728
});
1729
}
1684
1730
}
1685
1731
1686
1732
const isFebruary = date.getUTCMonth() == 1;
@@ -2048,82 +2094,39 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
2048
2094
NightLevel: "/Lotus/Levels/GrineerBeach/GrineerBeachEventNight.level"
2049
2095
});
2050
2096
2051
const baseStoreItem = {
2052
ShowInMarket: true,
2053
HideFromMarket: false,
2054
SupporterPack: false,
2055
Discount: 0,
2056
BogoBuy: 0,
2057
BogoGet: 0,
2058
StartDate: { $date: { $numberLong: activationTimeStamp } },
2059
EndDate: { $date: { $numberLong: expiryTimeStamp } },
2060
ProductExpiryOverride: { $date: { $numberLong: expiryTimeStamp } }
2061
};
2062
2063
const storeItems = [
2064
{
2065
TypeName: "/Lotus/Types/StoreItems/Packages/WaterFightNoggleBundle",
2066
PremiumOverride: 240,
2067
RegularOverride: 0
2068
},
2069
{
2070
TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFBeastMasterBobbleHead",
2071
PremiumOverride: 35,
2072
RegularOverride: 0
2073
},
2074
{
2075
TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFChargerBobbleHead",
2076
PremiumOverride: 35,
2077
RegularOverride: 0
2078
},
2079
{
2080
TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFEngineerBobbleHead",
2081
PremiumOverride: 35,
2082
RegularOverride: 0
2083
},
2084
{
2085
TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFGruntBobbleHead",
2086
PremiumOverride: 35,
2087
RegularOverride: 0
2088
},
2089
{
2090
TypeName: "/Lotus/Types/StoreItems/AvatarImages/ImagePopsicleGrineerPurple",
2091
PremiumOverride: 0,
2092
RegularOverride: 1
2093
},
2094
{
2095
TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFHealerBobbleHead",
2096
PremiumOverride: 35,
2097
RegularOverride: 0
2098
},
2099
{
2100
TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFHeavyBobbleHead",
2101
PremiumOverride: 35,
2102
RegularOverride: 0
2103
},
2104
{
2105
TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFHellionBobbleHead",
2106
PremiumOverride: 35,
2107
RegularOverride: 0
2108
},
2109
{
2110
TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFSniperBobbleHead",
2111
PremiumOverride: 35,
2112
RegularOverride: 0
2113
},
2114
{
2115
TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFTankBobbleHead",
2116
PremiumOverride: 35,
2117
RegularOverride: 0
2118
},
2119
{
2120
TypeName: "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerRollers",
2121
PremiumOverride: 75,
2122
RegularOverride: 0
2123
}
2097
const storeItems: (Partial<IFlashSale> & { TypeName: string })[] = [
2098
{ TypeName: "/Lotus/Types/StoreItems/Packages/WaterFightNoggleBundle", PremiumOverride: 240 },
2099
{ TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFBeastMasterBobbleHead", PremiumOverride: 35 },
2100
{ TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFChargerBobbleHead", PremiumOverride: 35 },
2101
{ TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFEngineerBobbleHead", PremiumOverride: 35 },
2102
{ TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFGruntBobbleHead", PremiumOverride: 35 },
2103
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/ImagePopsicleGrineerPurple", RegularOverride: 1 },
2104
{ TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFHealerBobbleHead", PremiumOverride: 35 },
2105
{ TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFHeavyBobbleHead", PremiumOverride: 35 },
2106
{ TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFHellionBobbleHead", PremiumOverride: 35 },
2107
{ TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFSniperBobbleHead", PremiumOverride: 35 },
2108
{ TypeName: "/Lotus/Types/Items/ShipDecos/Events/WFTankBobbleHead", PremiumOverride: 35 },
2109
{ TypeName: "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerRollers", PremiumOverride: 75 }
2124
2110
];
2125
2111
2126
worldState.FlashSales.push(...storeItems.map(item => ({ ...baseStoreItem, ...item })));
2112
worldState.FlashSales.push(
2113
...storeItems.map(item => ({
2114
...{
2115
StartDate: { $date: { $numberLong: activationTimeStamp } },
2116
EndDate: { $date: { $numberLong: expiryTimeStamp } },
2117
ProductExpiryOverride: { $date: { $numberLong: expiryTimeStamp } },
2118
ShowInMarket: item.ShowInMarket ?? true,
2119
HideFromMarket: item.HideFromMarket ?? false,
2120
SupporterPack: item.SupporterPack ?? false,
2121
Discount: item.Discount ?? 0,
2122
BogoBuy: item.BogoBuy ?? 0,
2123
BogoGet: item.BogoGet ?? 0,
2124
RegularOverride: item.RegularOverride ?? 0,
2125
PremiumOverride: item.PremiumOverride ?? 0
2126
},
2127
...item
2128
}))
2129
);
2127
2130
2128
2131
const seasonalItems = storeItems.map(item => item.TypeName);
2129
2132
@@ -2762,22 +2765,18 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
2762
2765
2763
2766
const isOctober = date.getUTCMonth() == 9; // October = month index 9
2764
2767
if (config.worldState?.naberusNightsOverride ?? isOctober) {
2768
const activationTimeStamp = config.worldState?.naberusNightsOverride
2769
? "1727881200000"
2770
: Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), 1).toString();
2771
2772
const expiryTimeStamp = config.worldState?.naberusNightsOverride
2773
? "2000000000000"
2774
: Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + 1, 1).toString();
2775
2765
2776
worldState.Goals.push({
2766
2777
_id: { $oid: "66fd602de1778d583419e8e7" },
2767
Activation: {
2768
$date: {
2769
$numberLong: config.worldState?.naberusNightsOverride
2770
? "1727881200000"
2771
: Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), 1).toString()
2772
}
2773
},
2774
Expiry: {
2775
$date: {
2776
$numberLong: config.worldState?.naberusNightsOverride
2777
? "2000000000000"
2778
: Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + 1, 1).toString()
2779
}
2780
},
2778
Activation: { $date: { $numberLong: activationTimeStamp } },
2779
Expiry: { $date: { $numberLong: expiryTimeStamp } },
2781
2780
Count: 0,
2782
2781
Goal: 0,
2783
2782
Success: 0,
@@ -2788,6 +2787,181 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
2788
2787
Tag: "DeimosHalloween",
2789
2788
Node: "DeimosHub"
2790
2789
});
2790
2791
const storeItems: (Partial<IFlashSale> & { TypeName: string })[] = [
2792
{ TypeName: "/Lotus/Types/StoreItems/Packages/Halloween2023GlyphBundleA", PremiumOverride: 65 },
2793
{ TypeName: "/Lotus/Types/StoreItems/Packages/Halloween2021GlyphBundle", PremiumOverride: 65 },
2794
{ TypeName: "/Lotus/Types/StoreItems/Packages/Halloween2019GlyphBundleA", PremiumOverride: 65 },
2795
{ TypeName: "/Lotus/Types/StoreItems/Packages/Halloween2019GlyphBundleB", PremiumOverride: 65 },
2796
{ TypeName: "/Lotus/Types/StoreItems/Packages/HalloweenGlyphBundle", PremiumOverride: 65 },
2797
{ TypeName: "/Lotus/Types/StoreItems/Packages/Halloween2023ArmorBundle", PremiumOverride: 125 },
2798
{ TypeName: "/Lotus/Types/StoreItems/Packages/HalloweenCrpCircArmorPack", PremiumOverride: 100 },
2799
{ TypeName: "/Lotus/Types/StoreItems/Packages/HalloweenScarfBundleB", PremiumOverride: 80 },
2800
{ TypeName: "/Lotus/Types/StoreItems/Packages/HalloweenSkinPack", PremiumOverride: 175 },
2801
{ TypeName: "/Lotus/Types/StoreItems/Packages/HalloweenShipSkinBundle", PremiumOverride: 80 },
2802
{ TypeName: "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackC", PremiumOverride: 175 },
2803
{ TypeName: "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackII", PremiumOverride: 145 },
2804
{ TypeName: "/Lotus/Types/StoreItems/Packages/HalloweenScarfBundle", PremiumOverride: 130 },
2805
{ TypeName: "/Lotus/Types/StoreItems/Packages/AcolyteNoggleBundle", PremiumOverride: 160 },
2806
{ TypeName: "/Lotus/Types/Items/ShipDecos/AcolyteAreaCasterBobbleHead", PremiumOverride: 35 },
2807
{ TypeName: "/Lotus/Types/Items/ShipDecos/AcolyteDuellistBobbleHead", PremiumOverride: 35 },
2808
{ TypeName: "/Lotus/Types/Items/ShipDecos/AcolyteControlBobbleHead", PremiumOverride: 35 },
2809
{ TypeName: "/Lotus/Types/Items/ShipDecos/AcolyteHeavyBobbleHead", PremiumOverride: 35 },
2810
{ TypeName: "/Lotus/Types/Items/ShipDecos/AcolyteRogueBobbleHead", PremiumOverride: 35 },
2811
{ TypeName: "/Lotus/Types/Items/ShipDecos/AcolyteStrikerBobbleHead", PremiumOverride: 35 },
2812
{ TypeName: "/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerHalloweenItemA", RegularOverride: 1 },
2813
{ TypeName: "/Lotus/Upgrades/Skins/Armor/Halloween2014Wings/Halloween2014ArmArmor", PremiumOverride: 50 },
2814
{ TypeName: "/Lotus/Upgrades/Skins/Festivities/PumpkinHead", RegularOverride: 1 },
2815
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenRegorAxeShield", PremiumOverride: 20 },
2816
{
2817
TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019CheshireKavat",
2818
PremiumOverride: 20
2819
},
2820
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenAkvasto", PremiumOverride: 20 },
2821
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenAngstrum", PremiumOverride: 20 },
2822
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenBoltor", PremiumOverride: 20 },
2823
{
2824
TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GhostChibiWisp",
2825
PremiumOverride: 20
2826
},
2827
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenBraton", PremiumOverride: 20 },
2828
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016A", PremiumOverride: 20 },
2829
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016C", PremiumOverride: 20 },
2830
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016B", PremiumOverride: 20 },
2831
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenBuzlok", PremiumOverride: 20 },
2832
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/AvatarImageHalloween2016D", PremiumOverride: 20 },
2833
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019CreepyClem", PremiumOverride: 20 },
2834
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenDaikyu", PremiumOverride: 20 },
2835
{
2836
TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Dethcube",
2837
PremiumOverride: 20
2838
},
2839
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenDragonNikana", PremiumOverride: 20 },
2840
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenDualZoren", PremiumOverride: 20 },
2841
{
2842
TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019FrankenCorpus",
2843
PremiumOverride: 20
2844
},
2845
{
2846
TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Grineer",
2847
PremiumOverride: 20
2848
},
2849
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenGlaive", PremiumOverride: 20 },
2850
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenGalatine", PremiumOverride: 20 },
2851
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenGrakata", PremiumOverride: 20 },
2852
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenGorgon", PremiumOverride: 20 },
2853
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenGlaxion", PremiumOverride: 20 },
2854
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenTwinGremlins", PremiumOverride: 20 },
2855
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenGrinlok", PremiumOverride: 20 },
2856
{ TypeName: "/Lotus/Upgrades/Skins/Scarves/HalloweenFireFlyScarf", PremiumOverride: 90 },
2857
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenImperator", PremiumOverride: 20 },
2858
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenKronen", PremiumOverride: 20 },
2859
{
2860
TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Lotus",
2861
PremiumOverride: 20
2862
},
2863
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenJatKittag", PremiumOverride: 20 },
2864
{ TypeName: "/Lotus/Upgrades/Skins/Scarves/HalloweenKyropteraScarf", PremiumOverride: 50 },
2865
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenKunai", PremiumOverride: 20 },
2866
{ TypeName: "/Lotus/Upgrades/Skins/Liset/LisetSkinHalloween", PremiumOverride: 50 },
2867
{ TypeName: "/Lotus/Upgrades/Skins/Liset/LisetInsectSkinHalloween", PremiumOverride: 50 },
2868
{
2869
TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageChillingGlyphFour",
2870
PremiumOverride: 20
2871
},
2872
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenMarelok", PremiumOverride: 20 },
2873
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenNikana", PremiumOverride: 20 },
2874
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenNukor", PremiumOverride: 20 },
2875
{
2876
TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Loid",
2877
PremiumOverride: 20
2878
},
2879
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenOpticor", PremiumOverride: 20 },
2880
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenOrthos", PremiumOverride: 20 },
2881
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenParis", PremiumOverride: 20 },
2882
{
2883
TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageChillingGlyphTwo",
2884
PremiumOverride: 20
2885
},
2886
{ TypeName: "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircC", PremiumOverride: 45 },
2887
{ TypeName: "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircA", PremiumOverride: 50 },
2888
{ TypeName: "/Lotus/Upgrades/Skins/Armor/CrpCircleArmour/HalloweenCrpCircL", PremiumOverride: 35 },
2889
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenScindo", PremiumOverride: 20 },
2890
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019GhoulGrave", PremiumOverride: 20 },
2891
{
2892
TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageHalloween2021Pumpkin",
2893
PremiumOverride: 20
2894
},
2895
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenSarpa", PremiumOverride: 20 },
2896
{
2897
TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageChillingGlyphThree",
2898
PremiumOverride: 20
2899
},
2900
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenSilvaAndAegis", PremiumOverride: 20 },
2901
{
2902
TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/AvatarImageChillingGlyphOne",
2903
PremiumOverride: 20
2904
},
2905
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenSoma", PremiumOverride: 20 },
2906
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenSkana", PremiumOverride: 20 },
2907
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019SlimeLoki", PremiumOverride: 20 },
2908
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenSobek", PremiumOverride: 20 },
2909
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenSonicor", PremiumOverride: 20 },
2910
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenSimulor", PremiumOverride: 20 },
2911
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenTonkor", PremiumOverride: 20 },
2912
{
2913
TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019TrickOrBalas",
2914
PremiumOverride: 20
2915
},
2916
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenSpira", PremiumOverride: 20 },
2917
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenStradavar", PremiumOverride: 20 },
2918
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenTwinGrakatas", PremiumOverride: 20 },
2919
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenArchSword", PremiumOverride: 20 },
2920
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenLato", PremiumOverride: 20 },
2921
{ TypeName: "/Lotus/Types/StoreItems/AvatarImages/Seasonal/Halloween2019Werefested", PremiumOverride: 20 },
2922
{ TypeName: "/Lotus/Upgrades/Skins/Scarves/HalloweenErosionCape", PremiumOverride: 50 },
2923
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenVasto", PremiumOverride: 20 },
2924
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenDarkSplitSword", PremiumOverride: 20 },
2925
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenDarkDagger", PremiumOverride: 20 },
2926
{ TypeName: "/Lotus/Upgrades/Skins/Scarves/HalloweenGrnBannerScarf", PremiumOverride: 75 },
2927
{ TypeName: "/Lotus/Upgrades/Skins/Halloween/HalloweenAmprex", PremiumOverride: 20 },
2928
{ TypeName: "/Lotus/Types/StoreItems/Packages/HalloweenSkinPackD", PremiumOverride: 180 }
2929
];
2930
2931
worldState.FlashSales.push(
2932
...storeItems.map(item => ({
2933
...{
2934
StartDate: { $date: { $numberLong: activationTimeStamp } },
2935
EndDate: { $date: { $numberLong: expiryTimeStamp } },
2936
ProductExpiryOverride: { $date: { $numberLong: expiryTimeStamp } },
2937
ShowInMarket: item.ShowInMarket ?? true,
2938
HideFromMarket: item.HideFromMarket ?? false,
2939
SupporterPack: item.SupporterPack ?? false,
2940
Discount: item.Discount ?? 0,
2941
BogoBuy: item.BogoBuy ?? 0,
2942
BogoGet: item.BogoGet ?? 0,
2943
RegularOverride: item.RegularOverride ?? 0,
2944
PremiumOverride: item.PremiumOverride ?? 0
2945
},
2946
...item
2947
}))
2948
);
2949
2950
const seasonalItems = storeItems.map(item => item.TypeName);
2951
const seasonalCategory = worldState.InGameMarket.LandingPage.Categories.find(c => c.CategoryName == "SEASONAL");
2952
2953
if (seasonalCategory) {
2954
seasonalCategory.Items ??= [];
2955
seasonalCategory.Items.push(...seasonalItems);
2956
} else {
2957
worldState.InGameMarket.LandingPage.Categories.push({
2958
CategoryName: "SEASONAL",
2959
Name: "/Lotus/Language/Store/SeasonalCategoryTitle",
2960
Icon: "seasonal",
2961
AddToMenu: true,
2962
Items: seasonalItems
2963
});
2964
}
2791
2965
}
2792
2966
2793
2967
if (config.worldState?.bellyOfTheBeast) {