Mission rewards - take 2

This commit is contained in:
holmityd 2023-09-02 01:56:08 +04:00
parent 460d868715
commit 66a384088e
17 changed files with 212 additions and 11 deletions

View File

@ -1,8 +1,17 @@
import { RequestHandler } from "express"; import { RequestHandler } from "express";
import { missionInventoryUpdate } from "@/src/services/inventoryService"; import { missionInventoryUpdate } from "@/src/services/inventoryService";
import { MissionInventoryUpdate, MissionInventoryUpdateRewardInfo } from "@/src/types/missionInventoryUpdateType"; import { MissionInventoryUpdate, MissionInventoryUpdateRewardInfo } from "@/src/types/missionInventoryUpdateType";
import missionNames from "@/static/data/mission-names.json";
import missionReward from "@/static/data/mission-rewards.json"; import missionsDropTable from "@/static/json/missions-drop-table.json";
import missionNames from "@/static/json/mission-names.json";
import modNames from "@/static/json/mod-names.json";
import relicNames from "@/static/json/relic-names.json";
import skinNames from "@/static/json/skin-names.json";
import miscNames from "@/static/json/misc-names.json";
import resourceNames from "@/static/json/resource-names.json";
import gearNames from "@/static/json/gear-names.json";
import arcaneNames from "@/static/json/arcane-names.json";
import craftNames from "@/static/json/craft-names.json";
/* /*
**** INPUT **** **** INPUT ****
@ -89,14 +98,14 @@ const missionInventoryUpdateController: RequestHandler = async (req, res) => {
- [ ] FusionPoints int - [ ] FusionPoints int
*/ */
interface MissionNames { interface StringDictionary {
[key: string]: string; [key: string]: string;
} }
const getRewards = (rewardInfo: MissionInventoryUpdateRewardInfo | undefined): Reward[] | undefined => { const getRewards = (rewardInfo: MissionInventoryUpdateRewardInfo | undefined) => {
if (!rewardInfo) return; if (!rewardInfo) return;
const missionName = (missionNames as MissionNames)[rewardInfo.node]; const missionName = (missionNames as StringDictionary)[rewardInfo.node];
const rewards = missionReward.find(i => i.mission === missionName)?.rewards; const rewards = missionsDropTable.find(i => i.mission === missionName)?.rewards;
if (!rewards) return []; if (!rewards) return [];
@ -113,7 +122,7 @@ const getRewards = (rewardInfo: MissionInventoryUpdateRewardInfo | undefined): R
const randomDrop = getRandomRewardByChance(chanceDrops); const randomDrop = getRandomRewardByChance(chanceDrops);
if (randomDrop) guaranteedDrops.push(randomDrop); if (randomDrop) guaranteedDrops.push(randomDrop);
return guaranteedDrops; return formatRewardsToInventoryType(guaranteedDrops);
}; };
interface Reward { interface Reward {
@ -138,4 +147,48 @@ const getRandomRewardByChance = (data: Reward[] | undefined): Reward | undefined
return; return;
}; };
const formatRewardsToInventoryType = (rewards: Reward[]) => {
return rewards.map(i => {
const mod = (modNames as StringDictionary)[i.name];
const skin = (skinNames as StringDictionary)[i.name];
const gear = (gearNames as StringDictionary)[i.name];
const arcane = (arcaneNames as StringDictionary)[i.name];
const craft = (craftNames as StringDictionary)[i.name];
const misc =
(miscNames as StringDictionary)[i.name] || (miscNames as StringDictionary)[i.name.replace(/\d+X\s*/, "")];
const resource =
(resourceNames as StringDictionary)[i.name] ||
(resourceNames as StringDictionary)[i.name.replace(/\d+X\s*/, "")];
const relic =
(relicNames as StringDictionary)[i.name.replace("Relic", "Exceptional")] ||
(relicNames as StringDictionary)[i.name.replace("Relic (Radiant)", "Radiant")];
let ItemType: string = mod;
const ItemCount = 1;
if (mod) {
ItemType = mod;
} else if (skin) {
ItemType = skin;
} else if (gear) {
ItemType = gear;
} else if (arcane) {
ItemType = arcane;
} else if (craft) {
ItemType = craft;
} else if (misc) {
ItemType = misc;
} else if (resource) {
ItemType = resource;
} else if (relic) {
ItemType = relic;
} else if (i.name.includes(" Endo")) {
/* endo */
} else if (i.name.includes(" Credits Cache") || i.name.includes("Return: ")) {
/* credits */
}
return { ItemType, ItemCount };
});
};
export { missionInventoryUpdateController }; export { missionInventoryUpdateController };

View File

@ -83,7 +83,7 @@ RawUpgrades.set("toJSON", {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid;
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
returnedObject.LastAdded = { $oid: returnedObject.__v.toString() } satisfies Oid; returnedObject.LastAdded = { $oid: returnedObject._id.toString() } satisfies Oid;
delete returnedObject._id; delete returnedObject._id;
delete returnedObject.__v; delete returnedObject.__v;
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,31 @@
/* eslint-disable */
import missionsDropTable from '../missions-drop-table.json' assert { type: "json" };
import modNames from '../mod-names.json' assert { type: "json" };
import relicNames from '../relic-names.json' assert { type: "json" };
import skinNames from '../skin-names.json' assert { type: "json" };
import miscNames from '../misc-names.json' assert { type: "json" };
import resourceNames from '../resource-names.json' assert { type: "json" };
import gearNames from '../gear-names.json' assert { type: "json" };
import arcaneNames from '../arcane-names.json' assert { type: "json" };
import craftNames from '../craft-names.json' assert { type: "json" };
let tempRewards = [];
missionsDropTable.forEach(i=>{
i.rewards.forEach(j=>{
tempRewards.push(j);
});
});
tempRewards = tempRewards
.filter(i=>!modNames[i.name])
.filter(i=>!relicNames[i.name.replace('Relic','Exceptional')] && !relicNames[i.name.replace('Relic (Radiant)','Radiant')])
.filter(i=>!skinNames[i.name])
.filter(i=>!miscNames[i.name])
.filter(i=>!miscNames[i.name.replace(/\d+X\s*/, '')])
.filter(i=>!resourceNames[i.name])
.filter(i=>!resourceNames[i.name.replace(/\d+X\s*/, '')])
.filter(i=>!gearNames[i.name])
.filter(i=>!arcaneNames[i.name])
.filter(i=>!craftNames[i.name])
.filter(i=>!i.name.includes(' Endo'))
.filter(i=>!i.name.includes(' Credits Cache') && !i.name.includes('Return: '));
console.log(tempRewards);

View File

@ -0,0 +1,89 @@
/* eslint-disable */
import Warframes from './Warframes.json' assert { type: "json" };
import Gear from './Gear.json' assert { type: "json" };
import Melee from './Melee.json' assert { type: "json" };
import Primary from './Primary.json' assert { type: "json" };
import Secondary from './Secondary.json' assert { type: "json" };
import Sentinels from './Sentinels.json' assert { type: "json" };
import Misc from './Misc.json' assert { type: "json" };
import ArchGun from './Arch-Gun.json' assert { type: "json" };
import ArchMelee from './Arch-Melee.json' assert { type: "json" };
import fs from 'fs';
const formated = {};
Warframes.forEach(j=>{
j.components?.forEach(i=>{
if(i.drops && i.drops[0]){
formated[i.drops[0].type] = i.uniqueName;
}
})
});
Gear.forEach(j=>{
j.components?.forEach(i=>{
if(i.drops && i.drops[0]){
formated[i.drops[0].type] = i.uniqueName;
}
})
});
Melee.forEach(j=>{
j.components?.forEach(i=>{
if(i.drops && i.drops[0]){
formated[i.drops[0].type] = i.uniqueName;
}
})
});
Primary.forEach(j=>{
j.components?.forEach(i=>{
if(i.drops && i.drops[0]){
formated[i.drops[0].type] = i.uniqueName;
}
})
});
Secondary.forEach(j=>{
j.components?.forEach(i=>{
if(i.drops && i.drops[0]){
formated[i.drops[0].type] = i.uniqueName;
}
})
});
Sentinels.forEach(j=>{
j.components?.forEach(i=>{
if(i.drops && i.drops[0]){
formated[i.drops[0].type] = i.uniqueName;
}
})
});
Misc.forEach(j=>{
j.components?.forEach(i=>{
if(i.drops && i.drops[0]){
formated[i.drops[0].type] = i.uniqueName;
}
})
});
ArchGun.forEach(j=>{
j.components?.forEach(i=>{
if(i.drops && i.drops[0]){
formated[i.drops[0].type] = i.uniqueName;
}
})
});
ArchMelee.forEach(j=>{
j.components?.forEach(i=>{
if(i.drops && i.drops[0]){
formated[i.drops[0].type] = i.uniqueName;
}
})
});
formated['Forma Blueprint'] = "/Lotus/StoreItems/Types/Items/MiscItems/Forma";
console.log(formated);
const fileBody = JSON.stringify(formated);
fs.writeFile("./craft-names.json", fileBody, err => {
if (err) {
console.log(err.message);
throw err;
}
console.log('data written to file');
});

View File

@ -0,0 +1,20 @@
/* eslint-disable */
import mods from './Arch-Melee.json' assert { type: "json" };
import fs from 'fs';
const formatedMods = {};
for (let index = 0; index < mods.length; index++) {
const {name, uniqueName} = mods[index];
formatedMods[name] = uniqueName;
}
const fileBody = JSON.stringify(formatedMods);
fs.writeFile("./arch-melee-names.json", fileBody, err => {
if (err) {
console.log(err.message);
throw err;
}
console.log('data written to file');
});

View File

@ -15,7 +15,7 @@
const formatedMission = mission.substring(0, mission.indexOf(' (')) const formatedMission = mission.substring(0, mission.indexOf(' ('))
lastItem.mission = formatedMission; lastItem.mission = formatedMission;
} else{ } else{
rotation = element.children[0].textContent.replace('Rotation '); rotation = element.children[0].textContent.replace('Rotation ', '');
} }
} else { } else {
if (!lastItem.rewards) if (!lastItem.rewards)

File diff suppressed because one or more lines are too long