feat: implement unbinding of focus upgrades
This commit is contained in:
		
							parent
							
								
									ae3fe49d95
								
							
						
					
					
						commit
						d28b07222e
					
				@ -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;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user