Custom macros recognize objects passed to it as strings, I don’t quite understand what’s going on and I think I’m letting something go…
<<addToInvent>>
{itemName: "water", quantity: 5, masQuantity: 12}
<</addToInvent>>
The macro recognizes this as a string… In this case I used the JSON.parse()
method.
Macro.add("addToInvent", {
tags : [null],
handler : function() {
if (this.payload[0].contents.length == 0) {
return this.error("Error! No items specified!");
}
var itemToAdd = JSON.parse(this.payload[0].contents);
var inventory = State.active.variables.player.inventory;
for(let index = 0; index < inventory.length; index++) {
if (inventory[index].itemName === itemToAdd.itemName) {
if (inventory[index].quantity < inventory[index].maxQuantity) {
inventory[index].quantity += itemToAdd.quantity;
if (inventory[index].quantity > inventory[index].maxQuantity) {
itemToAdd.quantity = inventory[index].quantity - inventory[index].maxQuantity;
inventory[index].quantity = inventory[index].maxQuantity;
} else {
return;
}
}
}
}
inventory.push({
itemName: itemToAdd.itemName,
quantity: itemToAdd.quantity,
maxQuantity: itemToAdd.maxQuantity
});
return;
}
});