From 64f18f7f06d25e3060b1265f49983ccf19eeac24 Mon Sep 17 00:00:00 2001 From: Mads Boddum Date: Fri, 22 Apr 2016 21:57:35 +0200 Subject: [PATCH] Fixed issues where any in-game object could be picked up and being able to exceed container volume limits --- scripts/commands/generic/transferItemArmor.js | 43 +++++++++++-------- scripts/commands/generic/transferItemMisc.js | 43 +++++++++++-------- src/resources/objects/SWGObject.java | 10 ++++- 3 files changed, 60 insertions(+), 36 deletions(-) diff --git a/scripts/commands/generic/transferItemArmor.js b/scripts/commands/generic/transferItemArmor.js index 7318d8e65..3edeb56cf 100644 --- a/scripts/commands/generic/transferItemArmor.js +++ b/scripts/commands/generic/transferItemArmor.js @@ -1,24 +1,33 @@ function executeCommand(galacticManager, player, target, args) { var actor = player.getCreatureObject(); - var inventory; - var oldContainer = target.getParent(); + + if(actor === null || target === null || actor === target) { + return; + } + var newContainer = galacticManager.getObjectManager().getObjectById(args.split(" ")[1]); - - if(actor == null || target == null) { - return; - } + var ContainerResult = Java.type("resources.containers.ContainerResult"); - inventory = actor.getSlottedObject("inventory"); + var containerResult = target.moveToContainer(actor, newContainer); - if(inventory == null) { - return; + switch (containerResult) { + case ContainerResult.SUCCESS: + if (actor.getEquipmentList().contains(target)) { + actor.removeEquipment(target); + } else if (newContainer === actor) { + actor.addEquipment(target); + } + break; + case ContainerResult.CONTAINER_FULL: + // TODO container03_prose if container is named + intentFactory.sendSystemMessage(player, "@container_error_message:container03"); + break; + case ContainerResult.NO_PERMISSION: + // TODO container08_prose if container is named + intentFactory.sendSystemMessage(player, "@container_error_message:container08"); + break; + default: + print("Unhandled ContainerResult " + containerResult + " in transferItemMisc!"); + break; } - - result = target.moveToContainer(actor, newContainer); // Move item from the old container to the new container - if (actor.getEquipmentList().contains(target)) { - actor.removeEquipment(target); - } else if (newContainer == actor) { - actor.addEquipment(target); - } - } \ No newline at end of file diff --git a/scripts/commands/generic/transferItemMisc.js b/scripts/commands/generic/transferItemMisc.js index 7318d8e65..3edeb56cf 100644 --- a/scripts/commands/generic/transferItemMisc.js +++ b/scripts/commands/generic/transferItemMisc.js @@ -1,24 +1,33 @@ function executeCommand(galacticManager, player, target, args) { var actor = player.getCreatureObject(); - var inventory; - var oldContainer = target.getParent(); + + if(actor === null || target === null || actor === target) { + return; + } + var newContainer = galacticManager.getObjectManager().getObjectById(args.split(" ")[1]); - - if(actor == null || target == null) { - return; - } + var ContainerResult = Java.type("resources.containers.ContainerResult"); - inventory = actor.getSlottedObject("inventory"); + var containerResult = target.moveToContainer(actor, newContainer); - if(inventory == null) { - return; + switch (containerResult) { + case ContainerResult.SUCCESS: + if (actor.getEquipmentList().contains(target)) { + actor.removeEquipment(target); + } else if (newContainer === actor) { + actor.addEquipment(target); + } + break; + case ContainerResult.CONTAINER_FULL: + // TODO container03_prose if container is named + intentFactory.sendSystemMessage(player, "@container_error_message:container03"); + break; + case ContainerResult.NO_PERMISSION: + // TODO container08_prose if container is named + intentFactory.sendSystemMessage(player, "@container_error_message:container08"); + break; + default: + print("Unhandled ContainerResult " + containerResult + " in transferItemMisc!"); + break; } - - result = target.moveToContainer(actor, newContainer); // Move item from the old container to the new container - if (actor.getEquipmentList().contains(target)) { - actor.removeEquipment(target); - } else if (newContainer == actor) { - actor.addEquipment(target); - } - } \ No newline at end of file diff --git a/src/resources/objects/SWGObject.java b/src/resources/objects/SWGObject.java index a65825650..43d4e17e3 100644 --- a/src/resources/objects/SWGObject.java +++ b/src/resources/objects/SWGObject.java @@ -181,11 +181,17 @@ public abstract class SWGObject extends BaselineObject implements Comparable