fix: properly randomise library daily task & update it every day
This commit is contained in:
parent
93afc2645c
commit
6d63b11ee9
@ -14,7 +14,7 @@ import {
|
|||||||
ExportVirtuals
|
ExportVirtuals
|
||||||
} from "warframe-public-export-plus";
|
} from "warframe-public-export-plus";
|
||||||
import { applyCheatsToInfestedFoundry, handleSubsumeCompletion } from "./infestedFoundryController";
|
import { applyCheatsToInfestedFoundry, handleSubsumeCompletion } from "./infestedFoundryController";
|
||||||
import { allDailyAffiliationKeys } from "@/src/services/inventoryService";
|
import { allDailyAffiliationKeys, createLibraryDailyTask } from "@/src/services/inventoryService";
|
||||||
|
|
||||||
export const inventoryController: RequestHandler = async (request, response) => {
|
export const inventoryController: RequestHandler = async (request, response) => {
|
||||||
const account = await getAccountForRequest(request);
|
const account = await getAccountForRequest(request);
|
||||||
@ -36,6 +36,10 @@ export const inventoryController: RequestHandler = async (request, response) =>
|
|||||||
inventory[key] = 16000 + inventory.PlayerLevel * 500;
|
inventory[key] = 16000 + inventory.PlayerLevel * 500;
|
||||||
}
|
}
|
||||||
inventory.DailyFocus = 250000 + inventory.PlayerLevel * 5000;
|
inventory.DailyFocus = 250000 + inventory.PlayerLevel * 5000;
|
||||||
|
|
||||||
|
inventory.LibraryAvailableDailyTaskInfo = createLibraryDailyTask();
|
||||||
|
inventory.LibraryActiveDailyTaskInfo = undefined;
|
||||||
|
|
||||||
await inventory.save();
|
await inventory.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ import {
|
|||||||
ICalendarProgress,
|
ICalendarProgress,
|
||||||
IPendingCouponDatabase,
|
IPendingCouponDatabase,
|
||||||
IPendingCouponClient,
|
IPendingCouponClient,
|
||||||
ILibraryAvailableDailyTaskInfo,
|
ILibraryDailyTaskInfo,
|
||||||
IDroneDatabase,
|
IDroneDatabase,
|
||||||
IDroneClient
|
IDroneClient
|
||||||
} from "../../types/inventoryTypes/inventoryTypes";
|
} from "../../types/inventoryTypes/inventoryTypes";
|
||||||
@ -950,7 +950,7 @@ pendingCouponSchema.set("toJSON", {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const libraryAvailableDailyTaskInfoSchema = new Schema<ILibraryAvailableDailyTaskInfo>(
|
const libraryDailyTaskInfoSchema = new Schema<ILibraryDailyTaskInfo>(
|
||||||
{
|
{
|
||||||
EnemyTypes: [String],
|
EnemyTypes: [String],
|
||||||
EnemyLocTag: String,
|
EnemyLocTag: String,
|
||||||
@ -1209,7 +1209,8 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
|||||||
//Cephalon Simaris Entries Example:"TargetType"+"Scans"(1-10)+"Completed": true|false
|
//Cephalon Simaris Entries Example:"TargetType"+"Scans"(1-10)+"Completed": true|false
|
||||||
LibraryPersonalProgress: [Schema.Types.Mixed],
|
LibraryPersonalProgress: [Schema.Types.Mixed],
|
||||||
//Cephalon Simaris Daily Task
|
//Cephalon Simaris Daily Task
|
||||||
LibraryAvailableDailyTaskInfo: libraryAvailableDailyTaskInfoSchema,
|
LibraryAvailableDailyTaskInfo: libraryDailyTaskInfoSchema,
|
||||||
|
LibraryActiveDailyTaskInfo: libraryDailyTaskInfoSchema,
|
||||||
|
|
||||||
//https://warframe.fandom.com/wiki/Invasion
|
//https://warframe.fandom.com/wiki/Invasion
|
||||||
InvasionChainProgress: [Schema.Types.Mixed],
|
InvasionChainProgress: [Schema.Types.Mixed],
|
||||||
|
@ -23,7 +23,7 @@ import {
|
|||||||
IInventoryDatabase,
|
IInventoryDatabase,
|
||||||
IKubrowPetEggDatabase,
|
IKubrowPetEggDatabase,
|
||||||
IKubrowPetEggClient,
|
IKubrowPetEggClient,
|
||||||
ILibraryAvailableDailyTaskInfo,
|
ILibraryDailyTaskInfo,
|
||||||
ICalendarProgress,
|
ICalendarProgress,
|
||||||
IDroneClient
|
IDroneClient
|
||||||
} from "@/src/types/inventoryTypes/inventoryTypes";
|
} from "@/src/types/inventoryTypes/inventoryTypes";
|
||||||
@ -41,6 +41,7 @@ import {
|
|||||||
ExportBundles,
|
ExportBundles,
|
||||||
ExportCustoms,
|
ExportCustoms,
|
||||||
ExportDrones,
|
ExportDrones,
|
||||||
|
ExportEnemies,
|
||||||
ExportFlavour,
|
ExportFlavour,
|
||||||
ExportFusionBundles,
|
ExportFusionBundles,
|
||||||
ExportGear,
|
ExportGear,
|
||||||
@ -62,6 +63,8 @@ import { generateRewardSeed } from "@/src/controllers/api/getNewRewardSeedContro
|
|||||||
import { addStartingGear } from "@/src/controllers/api/giveStartingGearController";
|
import { addStartingGear } from "@/src/controllers/api/giveStartingGearController";
|
||||||
import { addQuestKey, completeQuest } from "@/src/services/questService";
|
import { addQuestKey, completeQuest } from "@/src/services/questService";
|
||||||
import { handleBundleAcqusition } from "./purchaseService";
|
import { handleBundleAcqusition } from "./purchaseService";
|
||||||
|
import libraryDailyTasks from "@/static/fixed_responses/libraryDailyTasks.json";
|
||||||
|
import { getRandomElement, getRandomInt } from "./rngService";
|
||||||
|
|
||||||
export const createInventory = async (
|
export const createInventory = async (
|
||||||
accountOwnerId: Types.ObjectId,
|
accountOwnerId: Types.ObjectId,
|
||||||
@ -76,7 +79,7 @@ export const createInventory = async (
|
|||||||
ReceivedStartingGear: config.skipTutorial
|
ReceivedStartingGear: config.skipTutorial
|
||||||
});
|
});
|
||||||
|
|
||||||
inventory.LibraryAvailableDailyTaskInfo = createLibraryAvailableDailyTaskInfo();
|
inventory.LibraryAvailableDailyTaskInfo = createLibraryDailyTask();
|
||||||
inventory.CalendarProgress = createCalendar();
|
inventory.CalendarProgress = createCalendar();
|
||||||
inventory.RewardSeed = generateRewardSeed();
|
inventory.RewardSeed = generateRewardSeed();
|
||||||
inventory.DuviriInfo = {
|
inventory.DuviriInfo = {
|
||||||
@ -1173,15 +1176,19 @@ export const addKeyChainItems = async (
|
|||||||
|
|
||||||
return inventoryChanges;
|
return inventoryChanges;
|
||||||
};
|
};
|
||||||
const createLibraryAvailableDailyTaskInfo = (): ILibraryAvailableDailyTaskInfo => {
|
|
||||||
|
export const createLibraryDailyTask = (): ILibraryDailyTaskInfo => {
|
||||||
|
const enemyTypes = getRandomElement(libraryDailyTasks);
|
||||||
|
const enemyAvatar = ExportEnemies.avatars[enemyTypes[0]];
|
||||||
|
const scansRequired = getRandomInt(2, 4);
|
||||||
return {
|
return {
|
||||||
EnemyTypes: ["/Lotus/Types/Enemies/Orokin/RifleLancerAvatar"],
|
EnemyTypes: enemyTypes,
|
||||||
EnemyLocTag: "/Lotus/Language/Game/CorruptedLancer",
|
EnemyLocTag: enemyAvatar.name,
|
||||||
EnemyIcon: "/Lotus/Interface/Icons/Npcs/OrokinRifleLancerAvatar.png",
|
EnemyIcon: enemyAvatar.icon!,
|
||||||
ScansRequired: 3,
|
ScansRequired: scansRequired,
|
||||||
RewardStoreItem: "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/UncommonFusionBundle",
|
RewardStoreItem: "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/RareFusionBundle",
|
||||||
RewardQuantity: 7,
|
RewardQuantity: Math.trunc(scansRequired * 2.5),
|
||||||
RewardStanding: 7500
|
RewardStanding: 2500 * scansRequired
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -320,7 +320,8 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu
|
|||||||
LibraryPersonalTarget: string;
|
LibraryPersonalTarget: string;
|
||||||
LibraryPersonalProgress: ILibraryPersonalProgress[];
|
LibraryPersonalProgress: ILibraryPersonalProgress[];
|
||||||
CollectibleSeries: ICollectibleSery[];
|
CollectibleSeries: ICollectibleSery[];
|
||||||
LibraryAvailableDailyTaskInfo: ILibraryAvailableDailyTaskInfo;
|
LibraryAvailableDailyTaskInfo: ILibraryDailyTaskInfo;
|
||||||
|
LibraryActiveDailyTaskInfo?: ILibraryDailyTaskInfo;
|
||||||
HasResetAccount: boolean;
|
HasResetAccount: boolean;
|
||||||
PendingCoupon?: IPendingCouponClient;
|
PendingCoupon?: IPendingCouponClient;
|
||||||
Harvestable: boolean;
|
Harvestable: boolean;
|
||||||
@ -658,7 +659,7 @@ export interface ILastSortieReward {
|
|||||||
Manifest: string;
|
Manifest: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ILibraryAvailableDailyTaskInfo {
|
export interface ILibraryDailyTaskInfo {
|
||||||
EnemyTypes: string[];
|
EnemyTypes: string[];
|
||||||
EnemyLocTag: string;
|
EnemyLocTag: string;
|
||||||
EnemyIcon: string;
|
EnemyIcon: string;
|
||||||
|
148
static/fixed_responses/libraryDailyTasks.json
Normal file
148
static/fixed_responses/libraryDailyTasks.json
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
[
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/LaserCannonBipedAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/RailgunBipedAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/ShockwaveBipedAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/LaserDiscBipedAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Corpus/BipedRobot/AIWeek/SuperMoaBipedAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Corpus/Spaceman/EliteSpacemanAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/RifleSpacemanAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/DeployableSpacemanAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/MeleeSpacemanAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/ShotgunSpacemanAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/SniperSpacemanAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Corpus/Spaceman/AIWeek/NullifySpacemanAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/BeastMasterAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/BladeSawmanAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/BlowtorchSawmanAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/PistonSawmanAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Desert/Avatars/BladeSawmanAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Forest/Avatars/BladeSawmanAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/BladeSawmanAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RifleLancerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Desert/Avatars/EliteRifleLancerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Desert/Avatars/RifleLancerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Forest/Avatars/EliteRifleLancerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Forest/Avatars/RifleLancerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/EliteRifleLancerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/RifleLancerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EliteRifleLancerAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/EviseratorLancerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Forest/Avatars/EvisceratorLancerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/EvisceratorLancerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Desert/Avatars/EvisceratorLancerAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/FemaleGrineerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerSniperAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/FlameLancerAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/GrineerMeleeStaffAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/HeavyFemaleGrineerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Desert/HeavyFemaleGrineerAvatarDesert",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Forest/HeavyFemaleGrineerAvatarDesert",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerHeavyAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/IncendiaryBombardAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/JetpackMarineAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Desert/Avatars/JetpackMarineAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Forest/Avatars/JetpackMarineAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/JetpackMarineAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/MacheteWomanAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/FemaleGrineerMacheteAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ShieldLancerAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/ShotgunLancerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Desert/Avatars/ShotgunLancerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Forest/Avatars/ShotgunLancerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/ShotgunLancerAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/GrineerAvatars/GrineerMarinePistolAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Desert/Avatars/GrineerMarinePistolAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/Forest/Avatars/GrineerMarinePistolAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Grineer/SeaLab/Avatars/GrineerMarinePistolAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/Ancients/AncientAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/Ancients/HealingAncientAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/Ancients/ToxicAncientAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/Ancients/DiseasedAncientAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/Ancients/SpawningAncientAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/CrawlerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/NoxiousCrawlerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/GraspingCrawlerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/GrenadeAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/Crawlers/LightningAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/InfestedMoas/NaniteCloudBipedAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/InfestedMoas/SlowBombBipedAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/Quadrupeds/QuadrupedAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/Runners/LeapingRunnerAvatar",
|
||||||
|
"/Lotus/Types/Enemies/Infested/AiWeek/Runners/RunnerAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Orokin/OrokinHealingAncientAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Orokin/OrokinHeavyFemaleAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Orokin/OrokinNullifySpacemanAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Orokin/OrokinRocketBombardAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Orokin/RifleLancerAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Orokin/RifleSpacemanAvatar"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/Lotus/Types/Enemies/Grineer/AIWeek/Avatars/RocketBombardAvatar"
|
||||||
|
]
|
||||||
|
]
|
Loading…
x
Reference in New Issue
Block a user