diff --git a/scripts/commands/setgodmode.py b/scripts/commands/setgodmode.py index b0e78d52..680ba082 100644 --- a/scripts/commands/setgodmode.py +++ b/scripts/commands/setgodmode.py @@ -116,5 +116,13 @@ def run(core, actor, target, commandString): elif command == 'setBounty': core.playerService.sendSetBountyWindow(actor, actor) return + + elif command == 'genloot': + object = core.lootService.generateLootItem(actor, arg1) + + inventory = actor.getSlottedObject('inventory') + + if inventory: + inventory.add(object) return diff --git a/scripts/loot/lootItems/armor/bone/bone_armor_bicep_left.py b/scripts/loot/lootItems/armor/bone/bone_armor_bicep_left.py index c6582c41..fe66e1ab 100644 --- a/scripts/loot/lootItems/armor/bone/bone_armor_bicep_left.py +++ b/scripts/loot/lootItems/armor/bone/bone_armor_bicep_left.py @@ -3,9 +3,9 @@ def itemTemplate(): return ['object/tangible/wearables/armor/bone/shared_armor_bone_s01_bicep_l.iff'] -def customItemName(): +#def customItemName(): - return 'Bone Armor Bicep Left' +# return 'Bone Armor Bicep Left' def customItemStackCount(): diff --git a/scripts/loot/lootItems/veryrareloot/rare_ankarres_sapphire.py b/scripts/loot/lootItems/veryrareloot/rare_ankarres_sapphire.py index 5559fc50..cee3f5ae 100644 --- a/scripts/loot/lootItems/veryrareloot/rare_ankarres_sapphire.py +++ b/scripts/loot/lootItems/veryrareloot/rare_ankarres_sapphire.py @@ -15,3 +15,5 @@ def requiredCL(): return 80 +def customSetup(object): + object.setCustomName2("Success!") \ No newline at end of file diff --git a/src/resources/loot/LootRollSession.java b/src/resources/loot/LootRollSession.java index d6f26ad4..b20f1030 100644 --- a/src/resources/loot/LootRollSession.java +++ b/src/resources/loot/LootRollSession.java @@ -49,7 +49,10 @@ public class LootRollSession { private int lootedObjectLevel=0; private int lootedObjectDifficulty=0; - public LootRollSession(){ + public LootRollSession() + { + droppedItems = new ArrayList(); + errorMessages = new ArrayList(); } public LootRollSession(CreatureObject requester, TangibleObject lootedObject){ @@ -113,6 +116,11 @@ public class LootRollSession { public Planet getSessionPlanet() { return sessionPlanet; } + + public void setSessionPlanet(Planet planet) + { + this.sessionPlanet = planet; + } public List getErrorMessages() { return errorMessages; diff --git a/src/services/EquipmentService.java b/src/services/EquipmentService.java index 3f2b5a20..36aecbe8 100644 --- a/src/services/EquipmentService.java +++ b/src/services/EquipmentService.java @@ -134,7 +134,7 @@ public class EquipmentService implements INetworkDispatch { return result; } - public void equip(CreatureObject actor, SWGObject item) + synchronized public void equip(CreatureObject actor, SWGObject item) { String template = ((item.getAttachment("customServerTemplate") == null) ? item.getTemplate() : (item.getTemplate().split("shared_")[0] + "shared_" + ((String) item.getAttachment("customServerTemplate")) + ".iff")); String serverTemplate = template.replace(".iff", ""); @@ -151,7 +151,7 @@ public class EquipmentService implements INetworkDispatch { } } - public void unequip(CreatureObject actor, SWGObject item) + synchronized public void unequip(CreatureObject actor, SWGObject item) { String template = ((item.getAttachment("customServerTemplate") == null) ? item.getTemplate() : (item.getTemplate().split("shared_")[0] + "shared_" + ((String) item.getAttachment("customServerTemplate")) + ".iff")); String serverTemplate = template.replace(".iff", ""); diff --git a/src/services/LootService.java b/src/services/LootService.java index f5a62344..6881da6b 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -285,6 +285,17 @@ public class LootService implements INetworkDispatch { } } + public SWGObject generateLootItem(CreatureObject requester, String template) + { + LootRollSession rollSession = new LootRollSession(); + rollSession.setSessionPlanet(requester.getPlanet()); + + handleLootPoolItems(template, rollSession); + if(rollSession.getDroppedItems().get(0) != null) return rollSession.getDroppedItems().get(0); + + return null; + } + @SuppressWarnings("unused") private void handleLootPoolItems(String itemName,LootRollSession lootRollSession){ @@ -399,7 +410,7 @@ public class LootService implements INetworkDispatch { customName = setRandomStatsJewelry(droppedItem, lootRollSession); } - if (customName!=null) + if (!customName.isEmpty()) handleCustomDropName(droppedItem, customName); if (stackable!=-1){ @@ -451,6 +462,9 @@ public class LootService implements INetworkDispatch { droppedItem.setStringAttribute("required_faction", requiredFaction); } + if(core.scriptService.getMethod(itemPath,"","customSetup") != null) + core.scriptService.callScript(itemPath, "", "customSetup", droppedItem); + lootRollSession.addDroppedItem(droppedItem); System.out.println("END REACHED");