feat: archon shard removal #724
@ -40,6 +40,25 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
|
|||||||
break;
|
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": {
|
case "n": {
|
||||||
// name the beast
|
// name the beast
|
||||||
const request = getJSONfromString(String(req.body)) as IHelminthNameRequest;
|
const request = getJSONfromString(String(req.body)) as IHelminthNameRequest;
|
||||||
@ -251,6 +270,11 @@ interface IShardInstallRequest {
|
|||||||
Color: string;
|
Color: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface IShardUninstallRequest {
|
||||||
|
SuitId: IOid;
|
||||||
|
Slot: number;
|
||||||
|
}
|
||||||
|
|
||||||
interface IHelminthNameRequest {
|
interface IHelminthNameRequest {
|
||||||
newName: string;
|
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.Slot
is within the expected range of 0–4 (since there are five archon crystal upgrade slots). This could cause runtime errors or unexpected behavior ifrequest.Slot
is out of range.📝 Committable suggestion