feat: archon shard removal #724
@ -40,6 +40,25 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        case "x": {
 | 
			
		||||
            // shard removal
 | 
			
		||||
            const request = getJSONfromString(String(req.body)) as IShardUninstallRequest;
 | 
			
		||||
            const inventory = await getInventory(accountId);
 | 
			
		||||
            const suit = inventory.Suits.find(suit => suit._id.toString() == request.SuitId.$oid)!;
 | 
			
		||||
            suit.ArchonCrystalUpgrades![request.Slot] = {};
 | 
			
		||||
            const bile = inventory.InfestedFoundry!.Resources!.find(
 | 
			
		||||
                x => x.ItemType == "/Lotus/Types/Items/InfestedFoundry/HelminthBile"
 | 
			
		||||
            )!;
 | 
			
		||||
            bile.Count -= 300;
 | 
			
		||||
            await inventory.save();
 | 
			
		||||
            res.json({
 | 
			
		||||
                InventoryChanges: {
 | 
			
		||||
                    InfestedFoundry: inventory.toJSON().InfestedFoundry
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
| 
					
	
	
	
	
	
	
	
	 | 
			||||
 | 
			
		||||
        case "n": {
 | 
			
		||||
            // name the beast
 | 
			
		||||
            const request = getJSONfromString(String(req.body)) as IHelminthNameRequest;
 | 
			
		||||
@ -251,6 +270,11 @@ interface IShardInstallRequest {
 | 
			
		||||
    Color: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface IShardUninstallRequest {
 | 
			
		||||
    SuitId: IOid;
 | 
			
		||||
    Slot: number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface IHelminthNameRequest {
 | 
			
		||||
    newName: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	
⚠️ Potential issue
Handle insufficient HelminthBile gracefully
The code subtracts 300 from the HelminthBile count without checking if there is enough HelminthBile in the inventory, potentially resulting in a negative count. Consider adding a defensive check to prevent negative inventory:
📝 Committable suggestion
🛠️ Refactor suggestion
Validate slot range to avoid out-of-bounds indexing
The code sets
suit.ArchonCrystalUpgrades![request.Slot]without validating whetherrequest.Slotis within the expected range of 0–4 (since there are five archon crystal upgrade slots). This could cause runtime errors or unexpected behavior ifrequest.Slotis out of range.📝 Committable suggestion