forked from OpenWF/SpaceNinjaServer
		
	feat: implement unbinding of focus upgrades (#352)
This commit is contained in:
		
							parent
							
								
									ae3fe49d95
								
							
						
					
					
						commit
						53dab12555
					
				@ -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;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user