From 7c60f7a0b56762e1cb8efcbbcbcf271e6b735002 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Sun, 8 Jun 2014 19:05:54 +0200 Subject: [PATCH] More work on RE --- .../tatooine/mos_eisley_shinn_bunker.py | 3 - .../FactoryCrateMessageBuilder.java | 2 +- .../factorycrate/FactoryCrateObject.java | 91 +++++++++++++++---- src/services/LootService.java | 35 ++++++- .../ReverseEngineeringService.java | 13 ++- 5 files changed, 116 insertions(+), 28 deletions(-) diff --git a/scripts/static_spawns/tatooine/mos_eisley_shinn_bunker.py b/scripts/static_spawns/tatooine/mos_eisley_shinn_bunker.py index 2e823c3c..4add2ca5 100644 --- a/scripts/static_spawns/tatooine/mos_eisley_shinn_bunker.py +++ b/scripts/static_spawns/tatooine/mos_eisley_shinn_bunker.py @@ -13,8 +13,6 @@ def addPlanetSpawns(core, planet): stcSvc = core.staticService objSvc = core.objectService -<<<<<<< HEAD -======= building = core.objectService.getObject(long(-466404038086555772)) # Shinn Mugger outisde @@ -63,7 +61,6 @@ def addPlanetSpawns(core, planet): # Vaigonn Shinn vaigonn_shinn = stcSvc.spawnObject('vaigon_shinn', 'tatooine', building.getCellByCellNumber(long(10)), float(1.7), float(-20.8), float(29.7), float(-1), float(0), float(0), float(0), 30) ->>>>>>> origin/master return diff --git a/src/resources/objects/factorycrate/FactoryCrateMessageBuilder.java b/src/resources/objects/factorycrate/FactoryCrateMessageBuilder.java index bcde4afc..4085f8e7 100644 --- a/src/resources/objects/factorycrate/FactoryCrateMessageBuilder.java +++ b/src/resources/objects/factorycrate/FactoryCrateMessageBuilder.java @@ -48,7 +48,7 @@ public class FactoryCrateMessageBuilder extends TangibleMessageBuilder{ buffer.putFloat(1.0f); //op0 buffer.put(getAsciiString("factory_n")); buffer.putInt(0); - buffer.put(getAsciiString("food_crate")); + buffer.put(getAsciiString(factoryCrateObject.getFactoryCrateType())); if (factoryCrateObject.getCustomName().length()>0) buffer.put(getUnicodeString(factoryCrateObject.getCustomName())); diff --git a/src/resources/objects/factorycrate/FactoryCrateObject.java b/src/resources/objects/factorycrate/FactoryCrateObject.java index b735ece8..54230a73 100644 --- a/src/resources/objects/factorycrate/FactoryCrateObject.java +++ b/src/resources/objects/factorycrate/FactoryCrateObject.java @@ -53,7 +53,9 @@ public class FactoryCrateObject extends TangibleObject implements Serializable { private byte capacity; private byte contentObjectQuantity; private int contentCRC; - private TangibleObject contentObjectType; + //private TangibleObject contentObjectType; + private String contentObjectTypeTemplate; + private String factoryCrateType; @NotPersistent private transient FactoryCrateMessageBuilder messageBuilder; @@ -75,20 +77,13 @@ public class FactoryCrateObject extends TangibleObject implements Serializable { this.contents = new Vector(); this.contentObjectQuantity = 0; this.capacity = 25; - this.getAttributes().put("@obj_attr_n:condition", "100/100"); - this.getAttributes().put("@obj_attr_n:volume", "1"); - this.getAttributes().put("@obj_attr_n:quantity", "1"); - this.getAttributes().put("@obj_attr_n:factory_count", "1"); - this.getAttributes().put("@obj_attr_n:factory_attribs", "------------"); - this.getAttributes().put("@obj_attr_n:type", "@got_n:component"); - this.getAttributes().put("@obj_attr_n:serial_number", "123"); - - + this.factoryCrateType = "factory_crate"; + this.setStackable(true); } public boolean setContentType(TangibleObject contentObject) { synchronized(objectMutex) { - this.contentObjectType = contentObject; + this.contentObjectTypeTemplate = contentObject.getTemplate(); if (contentObject.getTemplate().length()>0) this.contentCRC = CRC.StringtoCRC(contentObject.getTemplate()); else @@ -105,13 +100,13 @@ public class FactoryCrateObject extends TangibleObject implements Serializable { } } - public TangibleObject getContentType() { - return this.contentObjectType; + public String getContentType() { + return this.contentObjectTypeTemplate; } public boolean setContentTypeAndQuantity(TangibleObject contentObject, int quantity) { synchronized(objectMutex) { - this.contentObjectType = contentObject; + this.contentObjectTypeTemplate = contentObject.getTemplate(); if (contentObject.getTemplate().length()>0) this.contentCRC = CRC.StringtoCRC(contentObject.getTemplate()); else{ @@ -119,6 +114,8 @@ public class FactoryCrateObject extends TangibleObject implements Serializable { return false; // Does it make sense to continue anyway? } + this.setCustomName(contentObject.getCustomName()); + Map contentAttributes = contentObject.getAttributes(); for (Map.Entry entry : contentAttributes.entrySet()) { @@ -126,12 +123,60 @@ public class FactoryCrateObject extends TangibleObject implements Serializable { this.getAttributes().put(entry.getKey(), entry.getValue()); System.out.println(entry.getKey() + " " + entry.getValue()); } - if (quantity0) + this.factoryCrateType = crateType; + this.contentObjectTypeTemplate = contentObject.getTemplate(); + if (contentObject.getTemplate().length()>0) + this.contentCRC = CRC.StringtoCRC(contentObject.getTemplate()); + else{ + this.contentCRC = 0; + return false; // Does it make sense to continue anyway? + } + + this.setCustomName(contentObject.getCustomName()); + this.getAttributes().put("@obj_attr_n:condition", "100/100"); + this.getAttributes().put("@obj_attr_n:volume", "1"); + this.getAttributes().put("@obj_attr_n:quantity", "1"); + this.getAttributes().put("@obj_attr_n:factory_count", "1"); + this.getAttributes().put("@obj_attr_n:factory_attribs", "------------"); + this.getAttributes().put("@obj_attr_n:type", "@got_n:"+contentType); + this.getAttributes().put("@obj_attr_n:serial_number", "123"); + + Map contentAttributes = contentObject.getAttributes(); + for (Map.Entry entry : contentAttributes.entrySet()) + { + //if (!entry.getKey().equals(@obj_attr_n:condition)) + this.getAttributes().put(entry.getKey(), entry.getValue()); + } + if (quantity<=capacity) { + contentObject.setSerialNumber(contentObject.getSerialNumber()); + for (int i=0;i0){ - TangibleObject contentType = this.getContentType(); - if (contentType==null) - return; // Bad, crate had no content type set - TangibleObject contentItem = (TangibleObject) core.objectService.createObject(contentType.getTemplate(), player.getPlanet()); + + TangibleObject contentItem = (TangibleObject) core.objectService.createObject(contentObjectTypeTemplate, player.getPlanet()); contentItem.setOptions(resources.datatables.Options.SERIAL, true); int crc = this.getContentCRC();//CRC.StringtoCRC("object/tangible/food/crafted/shared_drink_alcohol.iff"); SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(contentItem.getObjectID(), player.getOrientation().x, player.getOrientation().y, player.getOrientation().z, player.getOrientation().w, player.getPosition().x, player.getPosition().y, player.getPosition().z, crc, (byte) 0); @@ -231,6 +274,8 @@ public class FactoryCrateObject extends TangibleObject implements Serializable { } public void sendAddItem(Client destination) { + if (destination==null) + return; destination.getSession().write(messageBuilder.buildDelta3()); this.getAttributes().put("@obj_attr_n:factory_count", ""+this.getQuantity()); this.getAttributes().put("@obj_attr_n:quantity", ""+this.getQuantity()); @@ -238,6 +283,8 @@ public class FactoryCrateObject extends TangibleObject implements Serializable { } public void sendSetQuantity(Client destination,int quantity) { + if (destination==null) + return; contentObjectQuantity = (byte) quantity; destination.getSession().write(messageBuilder.buildDelta3()); this.getAttributes().put("@obj_attr_n:factory_count", ""+quantity); @@ -276,4 +323,8 @@ public class FactoryCrateObject extends TangibleObject implements Serializable { return messageBuilder; } + public String getFactoryCrateType(){ + return factoryCrateType; + } + } \ No newline at end of file diff --git a/src/services/LootService.java b/src/services/LootService.java index 2b5e0b0b..e88c6617 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -47,6 +47,7 @@ import resources.datatables.DisplayType; import resources.loot.LootGroup; import resources.loot.LootRollSession; import resources.objects.creature.CreatureObject; +import resources.objects.factorycrate.FactoryCrateObject; import resources.objects.group.GroupObject; import resources.objects.intangible.IntangibleObject; import resources.objects.tangible.TangibleObject; @@ -2722,10 +2723,27 @@ public class LootService implements INetworkDispatch { playerInventory.add(item11a); + TangibleObject item12aa = (TangibleObject)core.objectService.createObject("object/tangible/wearables/shirt/shared_shirt_s07.iff", player.getPlanet()); + item12aa.setCustomName("Socketed Shirt"); + item12aa.setIntAttribute("@obj_attr_n:sockets", 1); + playerInventory.add(item12aa); + TangibleObject item12 = (TangibleObject)core.objectService.createObject("object/tangible/wearables/shirt/shared_shirt_s07.iff", player.getPlanet()); + + item12.setStfFilename("wearables_name"); + item12.setStfName("shirt_s01"); + item12.setDetailFilename("wearables_detail"); + item12.setDetailName("shirt_s01"); item12.setCustomName("Socketed Shirt"); - item12.setIntAttribute("@obj_attr_n:sockets", 1); - playerInventory.add(item12); + + item12.setIntAttribute("@obj_attr_n:sockets", 1); + + String crateTemplate = "object/factory/shared_factory_crate_clothing.iff"; + FactoryCrateObject crate1 = (FactoryCrateObject) core.objectService.createObject(crateTemplate, player.getPlanet()); + crate1.setContentTypeAndQuantity(item12,25, "clothing_factory_crate", "clothing", player.getClient()); + playerInventory.add(crate1); + + TangibleObject item12a = (TangibleObject)core.objectService.createObject("object/tangible/wearables/shirt/shared_shirt_s07.iff", player.getPlanet()); item12a.setCustomName("Socketed Shirt"); @@ -2762,6 +2780,19 @@ public class LootService implements INetworkDispatch { item24.setCustomName("Droid Motor (Red)"); playerInventory.add(item24); + TangibleObject item24a = (TangibleObject)core.objectService.createObject("object/tangible/loot/npc_loot/shared_medical_console_generic.iff", player.getPlanet()); + item24a.setCustomName("Medical Console"); + item24a.setStackable(true); + item24a.setUses(299); + core.objectService.addStackableItem(item24a,playerInventory); + + TangibleObject item24b = (TangibleObject)core.objectService.createObject("object/tangible/loot/npc_loot/shared_medical_device_generic.iff", player.getPlanet()); + item24b.setCustomName("Medical Device"); + item24b.setStackable(true); + item24b.setUses(399); + core.objectService.addStackableItem(item24b,playerInventory); + + String modifierBitTemplate = "object/tangible/component/reverse_engineering/shared_modifier_bit.iff"; TangibleObject modifierBit = (TangibleObject) core.objectService.createObject(modifierBitTemplate, player.getPlanet()); diff --git a/src/services/reverseengineering/ReverseEngineeringService.java b/src/services/reverseengineering/ReverseEngineeringService.java index 14f08978..adfa66e6 100644 --- a/src/services/reverseengineering/ReverseEngineeringService.java +++ b/src/services/reverseengineering/ReverseEngineeringService.java @@ -3084,8 +3084,17 @@ public class ReverseEngineeringService implements INetworkDispatch { System.err.println("Junkloot combination wrong/not registered yet or Junkloot names don't conform to http://www.nova-inside.com naming convention"); return; } - core.objectService.destroyObject(piece1.getObjectID()); - core.objectService.destroyObject(piece2.getObjectID()); +// core.objectService.destroyObject(piece1.getObjectID()); +// core.objectService.destroyObject(piece2.getObjectID()); + int piece1Uses = piece1.getUses()-1; + int piece2Uses = piece2.getUses()-1; + piece1.setUses(piece1Uses); + piece2.setUses(piece2Uses); + if (piece1Uses==0) + core.objectService.destroyObject(piece1.getObjectID()); + if (piece2Uses==0) + core.objectService.destroyObject(piece2.getObjectID()); + int pcrIntValue = Integer.parseInt(pcr); String modifierBitTemplate = "object/tangible/component/reverse_engineering/shared_modifier_bit.iff"; TangibleObject modifierBit = (TangibleObject) core.objectService.createObject(modifierBitTemplate, engineer.getPlanet());