From 63ba8b59ecdc6f333cea63c9cac964c88d6f25e4 Mon Sep 17 00:00:00 2001 From: Mads Boddum Date: Wed, 18 May 2016 13:23:38 +0200 Subject: [PATCH] Added support for equipping/unequipping weapons --- .../commands/generic/transferItemWeapon.js | 38 +++++++++++++++++++ .../objects/creature/CreatureObject.java | 9 +++++ .../player/CharacterCreationService.java | 1 + 3 files changed, 48 insertions(+) create mode 100644 scripts/commands/generic/transferItemWeapon.js diff --git a/scripts/commands/generic/transferItemWeapon.js b/scripts/commands/generic/transferItemWeapon.js new file mode 100644 index 000000000..5a7dfb6e0 --- /dev/null +++ b/scripts/commands/generic/transferItemWeapon.js @@ -0,0 +1,38 @@ +function executeCommand(galacticManager, player, target, args) { + var actor = player.getCreatureObject(); + + if(actor === null || target === null || actor === target || (!target instanceof Java.type("resources.objects.weapon.WeaponObject"))) { + return; + } + + var newContainer = galacticManager.getObjectManager().getObjectById(args.split(" ")[1]); + var ContainerResult = Java.type("resources.containers.ContainerResult"); + + var containerResult = target.moveToContainer(actor, newContainer); + + switch (containerResult) { + case ContainerResult.SUCCESS: + var defaultWeapon = actor.getDefaultWeapon(); + if (actor.getEquipmentList().contains(target)) { + actor.removeEquipment(target); + actor.addEquipment(defaultWeapon); + actor.setEquippedWeapon(defaultWeapon); + } else if (newContainer === actor) { + actor.removeEquipment(defaultWeapon); + actor.addEquipment(target); + actor.setEquippedWeapon(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; + } +} \ No newline at end of file diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index 6f57146f5..0a052b926 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -91,6 +91,7 @@ public class CreatureObject extends TangibleObject { private String moodAnimation = "neutral"; private String animation = ""; private WeaponObject equippedWeapon = null; + private WeaponObject defaultWeapon = null; private byte moodId = 0; private long lookAtTargetId = 0; private long intendedTargetId = 0; @@ -514,6 +515,14 @@ public class CreatureObject extends TangibleObject { sendDelta(6, 12, weapon.getObjectId()); } + public WeaponObject getDefaultWeapon() { + return defaultWeapon; + } + + public void setDefaultWeapon(WeaponObject defaultWeapon) { + this.defaultWeapon = defaultWeapon; + } + public byte getMoodId() { return moodId; } diff --git a/src/services/player/CharacterCreationService.java b/src/services/player/CharacterCreationService.java index 5385da8cf..5508e249d 100644 --- a/src/services/player/CharacterCreationService.java +++ b/src/services/player/CharacterCreationService.java @@ -395,6 +395,7 @@ public class CharacterCreationService extends Service { creatureObj.getSkills().add("species_" + creatureObj.getRace().getSpecies()); WeaponObject defWeapon = (WeaponObject) createInventoryObject(objManager, creatureObj, "object/weapon/melee/unarmed/shared_unarmed_default_player.iff"); + creatureObj.setDefaultWeapon(defWeapon); defWeapon.setMaxRange(5); creatureObj.setEquippedWeapon(defWeapon); creatureObj.addEquipment(createInventoryObject(objManager, creatureObj, "object/tangible/inventory/shared_character_inventory.iff"));