diff --git a/scripts/commands/transferitemarmor.py b/scripts/commands/transferitemarmor.py index 6bf734c3..c78c862c 100644 --- a/scripts/commands/transferitemarmor.py +++ b/scripts/commands/transferitemarmor.py @@ -39,12 +39,6 @@ def run(core, actor, target, commandString): if object != None: actor.transferTo(actor, oldContainer, object) - - if target.getTemplate().find('/wearables/') or target.getTemplate().find('/weapon/'): - core.equipmentService.equip(actor, target) - - for object in replacedObjects: - core.equipmentService.unequip(actor, object) oldContainer.transferTo(actor, container, target) diff --git a/scripts/commands/transferitemmisc.py b/scripts/commands/transferitemmisc.py index 03bf8fc3..d1dee497 100644 --- a/scripts/commands/transferitemmisc.py +++ b/scripts/commands/transferitemmisc.py @@ -78,13 +78,7 @@ def run(core, actor, target, commandString): if object != None: container.transferTo(actor, container, object) - - if target.getTemplate().find('/wearables/') or target.getTemplate().find('/weapon/'): - core.equipmentService.equip(actor, target) - - for object in replacedObjects: - core.equipmentService.unequip(actor, object) # Needs to be verified due to the new structure of the script - + oldContainer.transferTo(actor, container, target) if oldContainer == actor.getSlottedObject('appearance_inventory'): diff --git a/scripts/commands/transferitemweapon.py b/scripts/commands/transferitemweapon.py index c75635a3..c2586049 100644 --- a/scripts/commands/transferitemweapon.py +++ b/scripts/commands/transferitemweapon.py @@ -5,8 +5,6 @@ def setup(): def run(core, actor, target, commandString): - - parsedMsg = commandString.split(' ', 3) objService = core.objectService containerID = long(parsedMsg[1]) @@ -39,13 +37,7 @@ def run(core, actor, target, commandString): if object != None: container.transferTo(actor, container, object) - - if target.getTemplate().find('/wearables/') or target.getTemplate().find('/weapon/'): - core.equipmentService.equip(actor, target) - - for object in replacedObjects: - core.equipmentService.unequip(actor, object) - + oldContainer.transferTo(actor, container, target) return diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index 1d6daf61..91be0990 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -931,6 +931,15 @@ public class CreatureObject extends TangibleObject implements IPersistent { } } + public boolean isWearing(SWGObject object) + { + for (Equipment equipment : getEquipmentList()) + { + if (equipment.getObjectId() == object.getObjectId()) return true; + } + return false; + } + public void removeObjectFromEquipList(SWGObject object) { if (object instanceof TangibleObject) { for (Equipment equipment : getEquipmentList()) { diff --git a/src/services/equipment/EquipmentService.java b/src/services/equipment/EquipmentService.java index 29441989..be0b6729 100644 --- a/src/services/equipment/EquipmentService.java +++ b/src/services/equipment/EquipmentService.java @@ -163,15 +163,14 @@ public class EquipmentService implements INetworkDispatch { String serverTemplate = template.replace(".iff", ""); PyObject func = core.scriptService.getMethod("scripts/" + serverTemplate.split("shared_" , 2)[0].replace("shared_", ""), serverTemplate.split("shared_" , 2)[1], "equip"); - if(func != null) func.__call__(Py.java2py(core), Py.java2py(actor), Py.java2py(item)); - if(!actor.getEquipmentList().contains(item.getObjectID())) + if(func != null) func.__call__(Py.java2py(core), Py.java2py(actor), Py.java2py(item)); + + if(!actor.isWearing(item)) { //if(item instanceof WeaponObject){ //A rifle is not identified as a true WeaponObject ?!?!?!?! - if (item.getTemplate().contains("object/weapon/")){ - actor.setWeaponId(item.getObjectID()); // This line causes the rifle lockup - //System.out.println("WEAPON IDENTIFIED!"); - } + if (item.getTemplate().startsWith("object/weapon/")) actor.setWeaponId(item.getObjectID()); + actor.addObjectToEquipList(item); processItemAtrributes(actor, item, true); } @@ -185,10 +184,10 @@ public class EquipmentService implements INetworkDispatch { PyObject func = core.scriptService.getMethod("scripts/" + serverTemplate.split("shared_" , 2)[0].replace("shared_", ""), serverTemplate.split("shared_" , 2)[1], "unequip"); if(func != null) func.__call__(Py.java2py(core), Py.java2py(actor), Py.java2py(item)); - - if(actor.getEquipmentList().contains(item.getObjectID())) + if(actor.isWearing(item)) { - if(item instanceof WeaponObject) actor.setWeaponId(actor.getSlottedObject("default_weapon").getObjectID()); + // This should be changed to instanceof WeaponObject eventually... see comment in equip() + if (item.getTemplate().startsWith("object/weapon/")) actor.setWeaponId(actor.getSlottedObject("default_weapon").getObjectID()); actor.removeObjectFromEquipList(item); processItemAtrributes(actor, item, false);