XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

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
AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
提交于

代码差异

1 个文件 +293 -119
Modified src/services/worldStateService.ts +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) {