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