feat: implement unbinding of focus upgrades (#352)

This commit is contained in:
Sainan 2024-06-22 03:01:05 +02:00 committed by GitHub
parent ae3fe49d95
commit 53dab12555
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -65,9 +65,6 @@ export const focusController: RequestHandler = async (req, res) => {
cost += focusUpgrade.FocusXpCost; cost += focusUpgrade.FocusXpCost;
const focusUpgradeDb = inventory.FocusUpgrades.find(entry => entry.ItemType == focusUpgrade.ItemType)!; const focusUpgradeDb = inventory.FocusUpgrades.find(entry => entry.ItemType == focusUpgrade.ItemType)!;
focusUpgradeDb.Level = focusUpgrade.Level; focusUpgradeDb.Level = focusUpgrade.Level;
if (focusUpgrade.IsUniversal) {
focusUpgradeDb.IsUniversal = true;
}
} }
inventory.FocusXP[focusPolarity] -= cost; inventory.FocusXP[focusPolarity] -= cost;
await inventory.save(); await inventory.save();
@ -77,6 +74,36 @@ export const focusController: RequestHandler = async (req, res) => {
}); });
break; break;
} }
case FocusOperation.UnbindUpgrade: {
const request = JSON.parse(req.body.toString()) as IUnbindUpgradeRequest;
const focusPolarity = focusTypeToPolarity(request.FocusTypes[0]);
const inventory = await getInventory(accountId);
inventory.FocusXP[focusPolarity] -= 750_000;
addMiscItems(inventory, [
{
ItemType: "/Lotus/Types/Gameplay/Eidolon/Resources/SentientShards/SentientShardBrilliantItem",
ItemCount: request.FocusTypes.length * -1
}
]);
request.FocusTypes.forEach(type => {
const focusUpgradeDb = inventory.FocusUpgrades.find(entry => entry.ItemType == type)!;
focusUpgradeDb.IsUniversal = true;
});
await inventory.save();
res.json({
FocusTypes: request.FocusTypes,
FocusPointCosts: {
[focusPolarity]: 750_000
},
MiscItemCosts: [
{
ItemType: "/Lotus/Types/Gameplay/Eidolon/Resources/SentientShards/SentientShardBrilliantItem",
ItemCount: request.FocusTypes.length
}
]
});
break;
}
case FocusOperation.ConvertShard: { case FocusOperation.ConvertShard: {
const request = JSON.parse(req.body.toString()) as IConvertShardRequest; const request = JSON.parse(req.body.toString()) as IConvertShardRequest;
// Tally XP // Tally XP
@ -110,6 +137,7 @@ enum FocusOperation {
UnlockUpgrade = "3", UnlockUpgrade = "3",
LevelUpUpgrade = "4", LevelUpUpgrade = "4",
ActivateWay = "5", ActivateWay = "5",
UnbindUpgrade = "8",
ConvertShard = "9" ConvertShard = "9"
} }
@ -132,6 +160,11 @@ interface ILevelUpUpgradeRequest {
}[]; }[];
} }
interface IUnbindUpgradeRequest {
ShardTypes: string[];
FocusTypes: string[];
}
interface IConvertShardRequest { interface IConvertShardRequest {
Shards: IMiscItem[]; Shards: IMiscItem[];
Polarity: TFocusPolarity; Polarity: TFocusPolarity;