diff --git a/scripts/object/tangible/quest/speeder_debris_wiring.py b/scripts/object/tangible/quest/speeder_debris_wiring.py index be9c7f1f..6aa7ddfe 100644 --- a/scripts/object/tangible/quest/speeder_debris_wiring.py +++ b/scripts/object/tangible/quest/speeder_debris_wiring.py @@ -2,4 +2,5 @@ import sys def setup(core, object): object.setAttachment('radial_filename', 'object/quest/speeder_debris_wiring') + print ('set attachment for the wiring') return \ No newline at end of file diff --git a/scripts/object/tangible/quest/speeder_junk_engine.py b/scripts/object/tangible/quest/speeder_junk_engine.py index b420c04f..7ad8d5f4 100644 --- a/scripts/object/tangible/quest/speeder_junk_engine.py +++ b/scripts/object/tangible/quest/speeder_junk_engine.py @@ -2,4 +2,5 @@ import sys def setup(core, object): object.setAttachment('radial_filename', 'object/quest/speeder_junk_engine') + print ('set attachment for the speeder part') return \ No newline at end of file diff --git a/scripts/radial/object/quest/speeder_debris_wiring.py b/scripts/radial/object/quest/speeder_debris_wiring.py index 11e38b44..db8b6e25 100644 --- a/scripts/radial/object/quest/speeder_debris_wiring.py +++ b/scripts/radial/object/quest/speeder_debris_wiring.py @@ -2,7 +2,7 @@ from resources.common import RadialOptions import sys def createRadial(core, owner, target, radials): - radials.add(RadialOptions(0, 21, 1, core.questService.getQuestItemRadialName(owner, target.getTemplate())) + radials.add(RadialOptions(0, 21, 1, core.questService.getQuestItemRadialName(owner, target.getTemplate()))) radials.add(RadialOptions(0, 7, 1, '')) return diff --git a/scripts/radial/object/quest/speeder_junk_engine.py b/scripts/radial/object/quest/speeder_junk_engine.py index 11e38b44..db8b6e25 100644 --- a/scripts/radial/object/quest/speeder_junk_engine.py +++ b/scripts/radial/object/quest/speeder_junk_engine.py @@ -2,7 +2,7 @@ from resources.common import RadialOptions import sys def createRadial(core, owner, target, radials): - radials.add(RadialOptions(0, 21, 1, core.questService.getQuestItemRadialName(owner, target.getTemplate())) + radials.add(RadialOptions(0, 21, 1, core.questService.getQuestItemRadialName(owner, target.getTemplate()))) radials.add(RadialOptions(0, 7, 1, '')) return diff --git a/scripts/radial/object/quest/speeder_junk_power.py b/scripts/radial/object/quest/speeder_junk_power.py index 11e38b44..db8b6e25 100644 --- a/scripts/radial/object/quest/speeder_junk_power.py +++ b/scripts/radial/object/quest/speeder_junk_power.py @@ -2,7 +2,7 @@ from resources.common import RadialOptions import sys def createRadial(core, owner, target, radials): - radials.add(RadialOptions(0, 21, 1, core.questService.getQuestItemRadialName(owner, target.getTemplate())) + radials.add(RadialOptions(0, 21, 1, core.questService.getQuestItemRadialName(owner, target.getTemplate()))) radials.add(RadialOptions(0, 7, 1, '')) return diff --git a/scripts/radial/object/quest/speeder_junk_steering.py b/scripts/radial/object/quest/speeder_junk_steering.py index 11e38b44..db8b6e25 100644 --- a/scripts/radial/object/quest/speeder_junk_steering.py +++ b/scripts/radial/object/quest/speeder_junk_steering.py @@ -2,7 +2,7 @@ from resources.common import RadialOptions import sys def createRadial(core, owner, target, radials): - radials.add(RadialOptions(0, 21, 1, core.questService.getQuestItemRadialName(owner, target.getTemplate())) + radials.add(RadialOptions(0, 21, 1, core.questService.getQuestItemRadialName(owner, target.getTemplate()))) radials.add(RadialOptions(0, 7, 1, '')) return diff --git a/src/resources/common/SpawnPoint.java b/src/resources/common/SpawnPoint.java index f0fac9af..6c0a0d5c 100644 --- a/src/resources/common/SpawnPoint.java +++ b/src/resources/common/SpawnPoint.java @@ -21,6 +21,7 @@ ******************************************************************************/ package resources.common; +import java.io.Serializable; import java.util.Random; import main.NGECore; @@ -31,7 +32,9 @@ import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; @Persistent -public class SpawnPoint { +public class SpawnPoint implements Serializable{ + + private static final long serialVersionUID = 1L; private Point3D position; private Quaternion orientation; diff --git a/src/services/SimulationService.java b/src/services/SimulationService.java index 874ac673..0d3366fe 100644 --- a/src/services/SimulationService.java +++ b/src/services/SimulationService.java @@ -185,11 +185,15 @@ public class SimulationService implements INetworkDispatch { } public void insertSnapShotObjects() { + System.out.println("Inserting snapshot buildings..."); List objectList = new ArrayList(core.objectService.getObjectList().values()); for(SWGObject obj : objectList) { - if(obj.getParentId() == 0 && /*(*/obj.isInSnapshot() /*|| obj.getAttachment("isBuildout") != null)*/) + // Buildings are inserted via another method from the odb, so no need to load them into the quadtree as well + if(obj.getParentId() == 0 && (obj.isInSnapshot() || obj.getAttachment("isBuildout") != null) && obj.getAttachment("buildoutBuilding") == null) { add(obj, obj.getPosition().x, obj.getPosition().z); + } } + System.out.println("Snapshots inserted!"); } public void insertPersistentBuildings() { diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index 9bd27972..94b7182e 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -236,7 +236,7 @@ public class ObjectService implements INetworkDispatch { } public void loadServerTemplates() { - System.out.println("Loading server templates..."); + System.out.println("Loading server templates... (" + loadServerTemplateTasks.size() + " templates)"); loadServerTemplateTasks.forEach(Runnable::run); loadServerTemplateTasks.clear(); System.out.println("Finished loading server templates..."); @@ -1440,7 +1440,7 @@ public class ObjectService implements INetworkDispatch { if (core.getSWGObjectODB().contains(objectId) && !duplicate.containsValue(objectId)) continue; containers.add(objectId); - object = createObject(template, objectId, planet, new Point3D(px + x1, py, pz + z1), new Quaternion(qw, qx, qy, qz), null, true, false); + object = createObject(template, objectId, planet, new Point3D(px + x1, py, pz + z1), new Quaternion(qw, qx, qy, qz), null, true, true); object.setAttachment("childObjects", null); /*if (!duplicate.containsValue(objectId)) { @@ -1449,7 +1449,7 @@ public class ObjectService implements INetworkDispatch { ((BuildingObject) object).getTransaction().commitSync(); }*/ } else { - object = createObject(template, 0, planet, new Point3D(px + x1, py, pz + z1), new Quaternion(qw, qx, qy, qz), null, false, false); + object = createObject(template, 0, planet, new Point3D(px + x1, py, pz + z1), new Quaternion(qw, qx, qy, qz), null, false, true); } if(object == null) continue; @@ -1459,7 +1459,7 @@ public class ObjectService implements INetworkDispatch { if (!duplicate.containsValue(objectId) && object instanceof BuildingObject && portalCRC != 0) persistentBuildings.add((BuildingObject) object); } else if(containerId != 0) { - object = createObject(template, 0, planet, new Point3D(px, py, pz), new Quaternion(qw, qx, qy, qz), null, false, false); + object = createObject(template, 0, planet, new Point3D(px, py, pz), new Quaternion(qw, qx, qy, qz), null, false, true); if(containers.contains(containerId)) { object.setContainerPermissions(WorldPermissions.WORLD_PERMISSIONS); object.setisInSnapshot(false); @@ -1477,7 +1477,7 @@ public class ObjectService implements INetworkDispatch { parent.add(object); } } else { - object = createObject(template, 0, planet, new Point3D(px + x1, py, pz + z1), new Quaternion(qw, qx, qy, qz), null, false, false); + object = createObject(template, 0, planet, new Point3D(px + x1, py, pz + z1), new Quaternion(qw, qx, qy, qz), null, false, true); object.setContainerPermissions(WorldPermissions.WORLD_PERMISSIONS); } @@ -1494,6 +1494,7 @@ public class ObjectService implements INetworkDispatch { } for(BuildingObject building : persistentBuildings) { + building.setAttachment("buildoutBuilding", true); core.getSWGObjectODB().put(building.getObjectID(), building); destroyObject(building); } diff --git a/src/services/quest/QuestService.java b/src/services/quest/QuestService.java index cd00b3d9..dbaf21d3 100644 --- a/src/services/quest/QuestService.java +++ b/src/services/quest/QuestService.java @@ -151,9 +151,6 @@ public class QuestService implements INetworkDispatch { int activeStep = quest.getActiveStep(); QuestTask task = qData.getTasks().get(activeStep); - - if (task.getGrantQuestOnComplete() != null && !task.getGrantQuestOnComplete().equals("")) - activateQuest(quester, task.getGrantQuestOnComplete()); String[] splitType = task.getType().split("\\."); String type = splitType[splitType.length - 1]; @@ -170,7 +167,7 @@ public class QuestService implements INetworkDispatch { // quest.task.ground.retrieve_item case "retrieve_item": - String template = convertToSharedFile(task.getServerTemplate()); + String template = task.getServerTemplate(); player.getQuestRetrieveItemTemplates().put(template, new QuestItem(quest.getName(), activeStep)); break; @@ -183,6 +180,9 @@ public class QuestService implements INetworkDispatch { } + //if (task.getGrantQuestOnComplete() != null && !task.getGrantQuestOnComplete().equals("")) + //activateQuest(quester, task.getGrantQuestOnComplete()); + if (activeStep + 1 >= qData.getTasks().size()) { QuestList listItem = questRewardMap.get(quest.getName()); @@ -214,8 +214,9 @@ public class QuestService implements INetworkDispatch { return; QuestList info = questRewardMap.get(questString); - if (info == null) + if (info == null) { info = getQuestListDatatable(questString); + } ProsePackage prose = new ProsePackage("@quest/ground/system_message:quest_received"); prose.setToCustomString(info.getJournalEntryTitle()); @@ -337,8 +338,10 @@ public class QuestService implements INetworkDispatch { if (player == null) return; - if (!player.hasRetrieveItemTemplate(target.getTemplate())) + if (!player.hasRetrieveItemTemplate(target.getTemplate())) { + System.out.println("Player doesn't have the template: " + target.getTemplate()); return; + } QuestItem item = player.getQuestRetrieveItemTemplates().get(target.getTemplate()); activateNextTask(quester, item.getQuestName()); @@ -354,7 +357,11 @@ public class QuestService implements INetworkDispatch { return questMap.get(questName); else { QuestData data = getQuestDatatable(questName); // parsing puts it in quest map - getQuestList(questName); + questMap.put(questName, data); + if (!questRewardMap.containsKey(questName)) { + QuestList listing = getQuestList(questName); + questRewardMap.put(questName, listing); + } return data; } } @@ -363,7 +370,9 @@ public class QuestService implements INetworkDispatch { if (questRewardMap.containsKey(questName)) return questRewardMap.get(questName); else { + System.out.println("Doesn't have it. Getting it from the list..."); QuestList list = getQuestListDatatable(questName); // parsing puts it in quest map + questRewardMap.put(questName, list); return list; } } @@ -458,7 +467,6 @@ public class QuestService implements INetworkDispatch { e.printStackTrace(); } - questMap.put(quest, data); return data; } @@ -467,10 +475,8 @@ public class QuestService implements INetworkDispatch { try { DatatableVisitor visitor = ClientFileManager.loadFile("datatables/questlist/quest/" + quest + ".iff", DatatableVisitor.class); - // Should only have 1 row - if (visitor.getRowCount() > 1) - return null; - + // Should only have 1 row with info + // not the full list. if (visitor.getObjectByColumnNameAndIndex("LEVEL", 0) != null) qList.setLevel((int) visitor.getObjectByColumnNameAndIndex("LEVEL", 0)); if (visitor.getObjectByColumnNameAndIndex("TIER", 0) != null) qList.setTier((int) visitor.getObjectByColumnNameAndIndex("TIER", 0)); @@ -496,7 +502,6 @@ public class QuestService implements INetworkDispatch { e.printStackTrace(); } - questRewardMap.put(quest, qList); return qList; }