diff --git a/src/controllers/api/focusController.ts b/src/controllers/api/focusController.ts index e625827f..0c7a7a3e 100644 --- a/src/controllers/api/focusController.ts +++ b/src/controllers/api/focusController.ts @@ -65,9 +65,6 @@ export const focusController: RequestHandler = async (req, res) => { cost += focusUpgrade.FocusXpCost; const focusUpgradeDb = inventory.FocusUpgrades.find(entry => entry.ItemType == focusUpgrade.ItemType)!; focusUpgradeDb.Level = focusUpgrade.Level; - if (focusUpgrade.IsUniversal) { - focusUpgradeDb.IsUniversal = true; - } } inventory.FocusXP[focusPolarity] -= cost; await inventory.save(); @@ -77,6 +74,36 @@ export const focusController: RequestHandler = async (req, res) => { }); 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: { const request = JSON.parse(req.body.toString()) as IConvertShardRequest; // Tally XP @@ -110,6 +137,7 @@ enum FocusOperation { UnlockUpgrade = "3", LevelUpUpgrade = "4", ActivateWay = "5", + UnbindUpgrade = "8", ConvertShard = "9" } @@ -132,6 +160,11 @@ interface ILevelUpUpgradeRequest { }[]; } +interface IUnbindUpgradeRequest { + ShardTypes: string[]; + FocusTypes: string[]; +} + interface IConvertShardRequest { Shards: IMiscItem[]; Polarity: TFocusPolarity;