diff --git a/forge-adventure/src/main/java/forge/adventure/editor/EnemyEdit.java b/forge-adventure/src/main/java/forge/adventure/editor/EnemyEdit.java index cc2b1d676c4..b5f141c5d04 100644 --- a/forge-adventure/src/main/java/forge/adventure/editor/EnemyEdit.java +++ b/forge-adventure/src/main/java/forge/adventure/editor/EnemyEdit.java @@ -97,7 +97,7 @@ public class EnemyEdit extends FormPanel { - existingModel = QuestController.getInstance().getEnemyTags(true); + existingModel = QuestController.getInstance().getEnemyTags(); existingTags.setModel(existingModel); @@ -243,7 +243,7 @@ public class EnemyEdit extends FormPanel { private void filterExisting(DefaultListModel filter){ DefaultListModel toReturn = new DefaultListModel<>(); - for (Enumeration e = QuestController.getInstance().getEnemyTags(true).elements(); e.hasMoreElements();){ + for (Enumeration e = QuestController.getInstance().getEnemyTags().elements(); e.hasMoreElements();){ String toTest = e.nextElement(); if (toTest != null & !filter.contains(toTest)){ toReturn.addElement(toTest); diff --git a/forge-adventure/src/main/java/forge/adventure/editor/PointOfInterestEdit.java b/forge-adventure/src/main/java/forge/adventure/editor/PointOfInterestEdit.java index 156bda3933e..2c7f2caa86c 100644 --- a/forge-adventure/src/main/java/forge/adventure/editor/PointOfInterestEdit.java +++ b/forge-adventure/src/main/java/forge/adventure/editor/PointOfInterestEdit.java @@ -90,7 +90,7 @@ public class PointOfInterestEdit extends JComponent { - existingModel = QuestController.getInstance().getPOITags(true); + existingModel = QuestController.getInstance().getPOITags(); existingTags.setModel(existingModel); @@ -231,7 +231,7 @@ public class PointOfInterestEdit extends JComponent { private void filterExisting(DefaultListModel filter){ DefaultListModel toReturn = new DefaultListModel<>(); - for (Enumeration e = QuestController.getInstance().getPOITags(true).elements(); e.hasMoreElements();){ + for (Enumeration e = QuestController.getInstance().getPOITags().elements(); e.hasMoreElements();){ String toTest = e.nextElement(); if (toTest != null & !filter.contains(toTest)){ toReturn.addElement(toTest); diff --git a/forge-adventure/src/main/java/forge/adventure/editor/QuestController.java b/forge-adventure/src/main/java/forge/adventure/editor/QuestController.java index fe4c4ca7df5..00e35bdaa31 100644 --- a/forge-adventure/src/main/java/forge/adventure/editor/QuestController.java +++ b/forge-adventure/src/main/java/forge/adventure/editor/QuestController.java @@ -24,6 +24,7 @@ public class QuestController { public final DefaultListModel questPOITags = new DefaultListModel<>(); private final DefaultListModel allPOI = new DefaultListModel<>(); private final DefaultListModel allEnemies = new DefaultListModel<>(); + private final DefaultListModel questSourceTags = new DefaultListModel<>(); private final DefaultListModel allQuests = new DefaultListModel<>(); @@ -43,21 +44,13 @@ public class QuestController { load(); } - public DefaultListModel getEnemyTags(boolean includeQuest){ + public DefaultListModel getEnemyTags(){ DefaultListModel toReturn = new DefaultListModel<>(); for (int i = 0; i < enemyTags.size(); i++){ toReturn.removeElement(enemyTags.get(i)); toReturn.addElement(enemyTags.get(i)); } - if (includeQuest){ - for (int i = 0; i < questEnemyTags.size(); i++) - { - toReturn.removeElement(questEnemyTags.get(i)); - toReturn.addElement(questEnemyTags.get(i)); - } - } - List sortedObjects = Arrays.stream(toReturn.toArray()).sorted().collect(Collectors.toList()); toReturn.clear(); @@ -69,19 +62,31 @@ public class QuestController { return toReturn; } - public DefaultListModel getPOITags(boolean includeQuest){ + public DefaultListModel getPOITags(){ DefaultListModel toReturn = new DefaultListModel<>(); for (int i = 0; i < POITags.size(); i++){ toReturn.removeElement(POITags.get(i)); toReturn.addElement(POITags.get(i)); } - if (includeQuest){ - for (int i = 0; i < questEnemyTags.size(); i++) - { - toReturn.removeElement(questEnemyTags.get(i)); - toReturn.addElement(questEnemyTags.get(i)); - } + List sortedObjects = Arrays.stream(toReturn.toArray()).sorted().collect(Collectors.toList()); + + toReturn.clear(); + + for (Object sortedObject : sortedObjects) { + toReturn.addElement((String) sortedObject); + } + + return toReturn; + } + + public DefaultListModel getSourceTags(){ + DefaultListModel toReturn = new DefaultListModel<>(); + + for (int i = 0; i < questSourceTags.size(); i++) + { + toReturn.removeElement(questSourceTags.get(i)); + toReturn.addElement(questSourceTags.get(i)); } List sortedObjects = Arrays.stream(toReturn.toArray()).sorted().collect(Collectors.toList()); @@ -101,6 +106,7 @@ public class QuestController { questPOITags.clear(); questEnemyTags.clear(); questTags.clear(); + questSourceTags.clear(); for (int i=0;i existingModel = new DefaultListModel<>(); + DefaultListModel selectedTagModel = new DefaultListModel<>(); + JList existingTags; + JList selectedTags; + JPanel tags = new JPanel(); + public QuestEdit() { @@ -46,6 +59,125 @@ public class QuestEdit extends FormPanel { tabs.add("Epilogue",getEpilogueTab()); tabs.add("Failure Dialog", getFailureTab()); tabs.add("Decline Dialog",getDeclineTab()); + tabs.add("Quest Sources", getSourcesTab()); + + + + existingTags = new JList<>(); + + + existingTags.getInputMap(JList.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put( + KeyStroke.getKeyStroke("ENTER"), "addSelected"); + existingTags.getActionMap().put("addSelected", new AbstractAction() { + + @Override + public void actionPerformed(ActionEvent e) { + addSelected(); + + int index = existingTags.getSelectedIndex(); + + String selectedItem = existingTags.getSelectedValue(); + + if (selectedItem != null) { + selectedTagModel.addElement(selectedItem); + existingTags.grabFocus(); + existingTags.setSelectedIndex(index(); + selectedTagModel = new DefaultListModel<>(); + selectedTags.setModel(selectedTagModel); + + selectedTags.getModel().addListDataListener(new ListDataListener() { + @Override + public void intervalAdded(ListDataEvent e) { + doUpdate(); + } + + @Override + public void intervalRemoved(ListDataEvent e) { + doUpdate(); + } + + @Override + public void contentsChanged(ListDataEvent e) { + doUpdate(); + } + }); + + JButton select = new JButton("Select"); + select.addActionListener(q -> addSelected()); + JButton add = new JButton("Manual Add"); + add.addActionListener(q -> manualAdd(selectedTagModel)); + JButton remove = new JButton("Remove Item"); + remove.addActionListener(q -> removeSelected()); + + tags.setLayout(new BorderLayout()); + + JPanel left = new JPanel(); + left.setLayout(new BorderLayout()); + left.add(new JLabel("Tags already in use"), BorderLayout.NORTH); + JScrollPane listScroller = new JScrollPane(existingTags); + listScroller.setMinimumSize(new Dimension(400, 800)); + left.add(listScroller, BorderLayout.CENTER); + tags.add(left, BorderLayout.WEST); + + FormPanel tagEdit = new FormPanel(); + tagEdit.setLayout(new BorderLayout()); + + FormPanel mappedTags = new FormPanel(); + mappedTags.setLayout(new BorderLayout()); + mappedTags.add(new JLabel("Tags Mapped to this object"), BorderLayout.NORTH); + JScrollPane listScroller2 = new JScrollPane(selectedTags); + listScroller2.setMinimumSize(new Dimension(400, 800)); + mappedTags.add(listScroller2, BorderLayout.CENTER); + tagEdit.add(mappedTags,BorderLayout.EAST); + + JPanel controlPanel = new JPanel(); + + controlPanel.add(select); + controlPanel.add(add); + controlPanel.add(manualEntry); + + manualEntry.getInputMap(JList.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put( + KeyStroke.getKeyStroke("ENTER"), "addTyped"); + manualEntry.getActionMap().put("addTyped", new AbstractAction() { + + @Override + public void actionPerformed(ActionEvent e) { + if (!manualEntry.getText().trim().isEmpty()) { + manualAdd(selectedTagModel); + manualEntry.grabFocus(); + } + } + }); + + + controlPanel.add(remove); + tagEdit.add(controlPanel, BorderLayout.CENTER); + tags.add(tagEdit,BorderLayout.CENTER); + + JTextArea right1 = new JTextArea("This is really just to pad some space\n" + + "but also to explain the use of tags.\n" + + "Rather than adding 100's of object names\n" + + "to every quest definition, instead we will\n"+ + "categorize enemies and points of interest with\n"+ + "tags and reference those categories in quests"); + right1.setEnabled(false); + tags.add(right1, BorderLayout.EAST); + + name.getDocument().addDocumentListener(new DocumentChangeListener(QuestEdit.this::updateQuest)); description.getDocument().addDocumentListener(new DocumentChangeListener(QuestEdit.this::updateQuest)); @@ -59,10 +191,60 @@ public class QuestEdit extends FormPanel { failureEditor.addChangeListener(e -> QuestEdit.this.updateQuest()); declineEditor.addChangeListener(e -> QuestEdit.this.updateQuest()); stages.addChangeListener(e -> QuestEdit.this.updateQuest()); + selectedTagModel.addListDataListener(new ListDataListener() { + @Override + public void intervalAdded(ListDataEvent e) { + QuestEdit.this.updateQuest(); + } + + @Override + public void intervalRemoved(ListDataEvent e) { + QuestEdit.this.updateQuest(); + } + + @Override + public void contentsChanged(ListDataEvent e) { + QuestEdit.this.updateQuest(); + } + }); refresh(); } + private void doUpdate(){ + QuestEdit.this.updateQuest(); + } + + private void addSelected(){ + if (existingTags.getSelectedIndex()>-1) + selectedTagModel.addElement(existingTags.getModel().getElementAt(existingTags.getSelectedIndex())); + doUpdate(); + } + + private void removeSelected(){ + if (selectedTags.getSelectedIndex()>-1) + selectedTagModel.remove(selectedTags.getSelectedIndex()); + doUpdate(); + } + + private void filterExisting(DefaultListModel filter){ + DefaultListModel toReturn = new DefaultListModel<>(); + for (Enumeration e = QuestController.getInstance().getSourceTags().elements(); e.hasMoreElements();){ + String toTest = e.nextElement(); + if (toTest != null & !filter.contains(toTest)){ + toReturn.addElement(toTest); + } + } + existingTags.setModel(toReturn); + } + + private void manualAdd(DefaultListModel model){ + if (!manualEntry.getText().trim().isEmpty()) + model.addElement(manualEntry.getText().trim()); + manualEntry.setText(""); + doUpdate(); + } + protected void updateQuest() { if(currentData==null||updating) return; @@ -78,6 +260,15 @@ public class QuestEdit extends FormPanel { currentData.epilogue = epilogueEditor.getDialogData(); currentData.failureDialog = failureEditor.getDialogData(); currentData.declinedDialog = declineEditor.getDialogData(); + + ArrayList tags = new ArrayList<>(); + for (Enumeration e = selectedTagModel.elements(); e.hasMoreElements();){ + tags.add(e.nextElement()); + } + + currentData.questSourceTags = tags.toArray(currentData.questSourceTags); + QuestController.getInstance().refresh(); + filterExisting(selectedTagModel); } public void setCurrentQuest(AdventureQuestData data) @@ -108,6 +299,13 @@ public class QuestEdit extends FormPanel { failureEditor.loadData(currentData.failureDialog); declineEditor.loadData(currentData.declinedDialog); + selectedTagModel.clear(); + for(String val : currentData.questSourceTags) { + if (val != null) + selectedTagModel.addElement(val); + } + filterExisting(selectedTagModel); + updating=false; } @@ -164,4 +362,13 @@ public class QuestEdit extends FormPanel { stagesTab.add(center); return stagesTab; } + + public JPanel getSourcesTab(){ + JPanel sourcesTab = new JPanel(); + sourcesTab.setLayout(new BoxLayout(sourcesTab, BoxLayout.Y_AXIS)); + FormPanel center = new FormPanel(); + center.add(tags); + sourcesTab.add(center); + return sourcesTab; + } } diff --git a/forge-adventure/src/main/java/forge/adventure/editor/QuestTagSelector.java b/forge-adventure/src/main/java/forge/adventure/editor/QuestTagSelector.java index 3e3e229c34c..48c25a4d6a7 100644 --- a/forge-adventure/src/main/java/forge/adventure/editor/QuestTagSelector.java +++ b/forge-adventure/src/main/java/forge/adventure/editor/QuestTagSelector.java @@ -77,10 +77,10 @@ public class QuestTagSelector extends JComponent { selectedItems.clear(); if (useEnemyTags){ - allItems = QuestController.getInstance().getEnemyTags(true); + allItems = QuestController.getInstance().getEnemyTags(); } else if (usePOITags) { - allItems = QuestController.getInstance().getPOITags(true); + allItems = QuestController.getInstance().getPOITags(); } unselectedList.setModel(allItems); for (int i=0;i winners = new Array<>(); Array winnersEnemies = new Array<>(); for (int i = 0; i < fighters.size - 2; i += 2) { - boolean leftWon = rand.nextBoolean(); + int matchHP = enemies.get(i).getData().life + enemies.get(i+1).getData().life; + boolean leftWon = rand.nextInt(matchHP) < enemies.get(i).getData().life; if (leftWon) { winners.add(fighters.get(i)); winnersEnemies.add(enemies.get(i)); diff --git a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java index 450a08e7490..0e7f35ee491 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java @@ -241,6 +241,7 @@ public class SaveLoadScene extends UIScene { Current.player().updateDifficulty(Config.instance().getConfigData().difficulties[difficulty.getSelectedIndex()]); Current.player().setWorldPosY((int) (WorldSave.getCurrentSave().getWorld().getData().playerStartPosY * WorldSave.getCurrentSave().getWorld().getData().height * WorldSave.getCurrentSave().getWorld().getTileSize())); Current.player().setWorldPosX((int) (WorldSave.getCurrentSave().getWorld().getData().playerStartPosX * WorldSave.getCurrentSave().getWorld().getData().width * WorldSave.getCurrentSave().getWorld().getTileSize())); + Current.player().getQuests().clear(); SoundSystem.instance.changeBackgroundTrack(); Forge.switchScene(GameScene.instance()); } else { diff --git a/forge-gui-mobile/src/forge/adventure/util/AdventureQuestController.java b/forge-gui-mobile/src/forge/adventure/util/AdventureQuestController.java index 6e2155eaf7e..e8d0db215b0 100644 --- a/forge-gui-mobile/src/forge/adventure/util/AdventureQuestController.java +++ b/forge-gui-mobile/src/forge/adventure/util/AdventureQuestController.java @@ -351,9 +351,24 @@ public class AdventureQuestController implements Serializable { ret.offerDialog = response; return ret; } - //todo - Make use of questOrigin in selecting appropriate quests + //todo - Should quest availability be weighted instead of uniform? nextQuestDate.put(pointID, LocalDate.now().toEpochDay()); - ret = new AdventureQuestData(Aggregates.random(allSideQuests)); + + Array validSideQuests = new Array<>(); + for (AdventureQuestData option : allSideQuests){ + if (option.questSourceTags.length == 0) + validSideQuests.add(option); + for (int i = 0; i < option.questSourceTags.length; i++){ + if (option.questSourceTags[i] != null && option.questSourceTags[i].equals(questOrigin)){ + validSideQuests.add(option); + break; + } + } + } + if (validSideQuests.size > 0) + ret = new AdventureQuestData(Aggregates.random(validSideQuests)); + else + ret = new AdventureQuestData(Aggregates.random(allSideQuests)); ret.sourceID = pointID; ret.initialize(); return ret; diff --git a/forge-gui/res/adventure/Shandalar/maps/map/island_town_generic.tmx b/forge-gui/res/adventure/Shandalar/maps/map/island_town_generic.tmx index 737dba1e9e3..206de9779ae 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/island_town_generic.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/island_town_generic.tmx @@ -13,7 +13,7 @@ - eJxjYBgFQwHosw+MvWeB9pby0s78SWwMDJOx4AtI/tXHwSYHlBHwy1l2wmxagHPsCL/nciDYeRwQeULuJhfQyl/Y0ow+jvCEiaPTlAJYmF4gEKfoNKX2Z0PjLAcpHs9jiV90GhbX1AS0TrfIoIQXQdPTXmQwai9xAADlPiO/ + eJxjYBgFQwHosw+MvWeB9pby0s78SWwMDJOx4AtI/tXHwSYHlBHwy1l2wmxagHPsCL/nciDYeRwQeULuJhfQyl/IaQZmhz6O8NRnx05TCmBheoFAnKLTlNoPMycHKR7PY4lfdBoW1+SCbCz6aZ1ukUEJL4Kmp73IYNRe4gAA1fMlZw== @@ -21,12 +21,12 @@ - eJxjYKAfKORgYCgC4mIOOloKBPycDAwCQCzISV97KQWdWgwMXVoQtrEOA4OJDu3s2qjOwLBJHcJeCrRzGRDrDZLwQvY7NcMhl4s8uZEI9I3I02cNTEc2BNIwTBydphUgFLfLuBkYDMn0L0z/YAUmUH8ZUOC/4QiusDMwXGWnv70DUR+CAABO1BOr + eJxjYKAfKORgYCgC4mIOOloKBPycDAwCQCzISV97KQWdWgwMXVoQtrEOA4OJDu3s2qjOwLBJHcJeCrRzGRDrDZLwQvY7NcMhl4s8uaEIrIHxaaNFvn59I8rdgCvuYOLoNK0Aobhdxs3AYEgF/9IbgNxNCJhA/WUwBP1HS3CFnYHhKjv97R2I+hAEAFsEE6s= - eJxjYBgFpABxHQYGCR3amT9VnYFhmjqE3anFwNClRTu7SAXIfqd1OIwC6gJ5YDpSgKYlXHEHE0enR8EoGAXDCwAAl/AHJQ== + eJxjYBgFpABxHQYGCR3amT9VnYFhmjqE3anFwNClRTu7SAXIfqd1OAxXIA+MT4UBjlNccQcTR6dHwSgYBcMLAADc2Acl @@ -80,13 +80,13 @@ - + - + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/island_town_identity.tmx b/forge-gui/res/adventure/Shandalar/maps/map/island_town_identity.tmx index e8a8eaeec1f..f4a34656059 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/island_town_identity.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/island_town_identity.tmx @@ -12,7 +12,7 @@ - eJxjYBgFQwHosw+MvWeB9pby0s78SWwMDJOx4AtI/tXHwSYHlBHwy1l2wmxagHPsCL/nciDYeRwQeULuJhfQyl/Y0ow+jvCEiaPTlAJYmF4gEKfoNKX2Z0PjLAcpHs9jiV90GhbX1AS0TrfIoIQXQdPTXmQwai9xAADlPiO/ + eJxjYBgFQwHosw+MvWeB9pby0s78SWwMDJOx4AtI/tXHwSYHlBHwy1l2wmxagHPsCL/nciDYeRwQeULuJhfQyl/IaQZmhz6O8NRnx05TCmBheoFAnKLTlNoPMycHKR7PY4lfdBoW1+SCbCz6aZ1ukUEJL4Kmp73IYNRe4gAA1fMlZw== @@ -20,12 +20,12 @@ - eJxjYKAfKORgYCgC4mIOOloKBPycDAwCQCzISV97KQWdWgwMXVoQtrEOA4OJDu3s2qjOwLBJHcJeCrRzGRDrDZLwQvY7NcMhl4s8uZEInmiQp88amI5s0NLwWTSzYOLoNLXBS6i9hOJ2GTdl9lCqfxTQH1xhZ2C4yk5/eweiPgQBAMi+FTE= + eJxjYKAfKORgYCgC4mIOOloKBPycDAwCQCzISV97KQWdWgwMXVoQtrEOA4OJDu3s2qjOwLBJHcJeCrRzGRDrDZLwQvY7NcMhl4s8uaEIrIHxaaNFvv4nGpS7ARZ3ZzWwi6PT1AYvofYSittl3NS3mx5gqLp7MIAr7AwMV9npb+9A1IcgAADU7hUx - eJxjYBgFpABxHQYGCR3amT9VnYFhmjqE3anFwNClRTu7SAXIfqd1OIwC7OCEBnn65IHpSAGalnDFHUwcnR4Fo2AUDC8AAJuECBU= + eJxjYBgFpABxHQYGCR3amT9VnYFhmjqE3anFwNClRTu7SAXIfqd1OAxXIA+MTwUK4vSEBuVuwBV3MHF0ehSMglEwvAAA4GwIFQ== @@ -79,13 +79,13 @@ - + - + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/island_town_tribal.tmx b/forge-gui/res/adventure/Shandalar/maps/map/island_town_tribal.tmx index 81209f2f7e8..685af78128c 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/island_town_tribal.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/island_town_tribal.tmx @@ -13,7 +13,7 @@ - eJxjYBgFQwHosw+MvWeB9pby0s78SWwMDJOx4AtI/tXHwSYHlBHwy1l2wmxagHPsCL/nciDYeRwQeULuJhfQyl/Y0ow+jvCEiaPTlAJYmF4gEKfoNKX2Z0PjLAcpHs9jiV90GhbX1AS0TrfIoIQXQdPTXmQwai9xAADlPiO/ + eJxjYBgFQwHosw+MvWeB9pby0s78SWwMDJOx4AtI/tXHwSYHlBHwy1l2wmxagHPsCL/nciDYeRwQeULuJhfQyl/IaQZmhz6O8NRnx05TCmBheoFAnKLTlNoPMycHKR7PY4lfdBoW1+SCbCz6aZ1ukUEJL4Kmp73IYNRe4gAA1fMlZw== @@ -21,12 +21,12 @@ - eJxjYKAfKORgYCgC4mIO+tn5n4mBgZ+TgUEAiAU56WcvzG5SwVR1BoZp6hB2pxYDQ5cWhG2sw8BgokM9t6GDjUA7N0HtXQq0cxkQ69E5vHABZL9TMxxyuciTG0og3Qi3XAoeOWoBa2A6ssGRhmH2w8TRaVoBQnG7jJsy8ynVPwroD66wMzBcBWIGZvraS+/6EAYAMd8XYg== + eJxjYKAfKORgYCgC4mIO+tn5n4mBgZ+TgUEAiAU56WcvzG5SwVR1BoZp6hB2pxYDQ5cWhG2sw8BgokM9t6GDjUA7N0HtXQq0cxkQ69E5vHABZL9TMxxyuciTG0og3QhCWwPj00YLVS7FiL5uQY87mP0wcXSaVoBQ3C7jpp3dtARD1d2DAVxhZ2C4CsQMzPS1l971IQwAAD4PF2I= - eJxjYBgFpABxHQYGCR362NWpxcDQpUUfu4gByH6nZziMAsqBPDAdKUDTEq64g4mj06NgFIyC4QUAK4MFrA== + eJxjYBgFpABxHQYGCR362NWpxcDQpUUfu4gByH6nZzgMJyAPjE+FAY5TXHEHE0enR8EoGAXDCwAAcGsFrA== @@ -80,13 +80,13 @@ - + - + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx index a32b9db7a50..ecbbff4557c 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx @@ -18,7 +18,7 @@ - eJzNmEtOwzAQhr0CpBa14nWBQiiEFbCDi7CnUPa8LgCFFeIAcAZAXADaAqLiFJyANxsQExGr02HGjp209JdGysNxvow944mDvFIhWAA2DdYPmop5wthKYA2wZp/w1YFjMmaM2O7BNgtKbfWJbRfajHpMR4pKjfaJjRXbfmwSvgmw83+yccKHNcLcmxbmRy2n1AGyw1zn/f0c/5xNHAN3z9Z/PY6nhhBXveDT76jMm/ssMTxHcH4cX1sjzy/MKbU413mt7MinmHeaRL+nBf588MhVLnzRGGLGatg+5nxAvwczY82iY+1b3c6FLwthvskE7bvBx/mS4+NE57YL31r4t42POMY7oW0vxvcEgvG0bG/XDb4rv9caheeHD1/Vkv+yVBr/1YS1LK1w/k7Dp2vGqN55g9h5t8TPF8zBb8d56MJXIe+vZ1TDmnJ72vioGWqWJyh2nqWCJ6F8+HCu0j6M6tqrfPZz0ZWPy617+d+5GHbhfyrN+OL5WBd8uASL/3JcAHxA+08hhtaF61muH5gRz8dwMNnzWDpmfPmmLIx4rKtDUJ8O/NrGkBunC59Ul7zA2LwKY01jW6oDpL7TjC+t07FwXEtxk2TtTsp3Y+lHYpXiRusWHa/MmBmaCdgrpP6mYl7hnHvWhfVXrwUmPk62/zm6DnLtV4U+MIP+zqR8pWGZKTAjW7kkvoDh2/Xcz4mUdo9pp2DnS7Ofk9UeEze+Z0W3vZxLdHxR/NvHpWN/56Q/6j9fPZbN577i+GjO+U9l5T8X6fIVr3sNpl2U+649+ZLkkpZ7tx21uWYLe+w/uq95wDBR66V0zuA4AuQzfP4DEgnvlw== + eJzNmEtO40AQhnsFSAlKxOsCARMwK2AHF2FPIOxnBi4AgRXiAHAGQFwAkgAi4hScgNcMmxlNWbiVSlHVLzshv1SSH+325+qu6nJHRaVisAhsHmwYNJfyxKlVwFpg7SHhawLHbMqYsD2A/Sgp9XNI7Fepy6jHdKKs1OSQ2FS568c24ZsBu/gmmyZ8WBPMvXlhfjQKSh0iOyr03j8o8M/ZxDFw92z9N9N4aglxNQg+/Y7asrnPCsNzDOcn6bUt8vzKklKrS73Xqp58inmnSfR7OuDPx4Bc5cOXjCFmrMfdY84H9HswM9YiOta+1e18+PIQ5pt1aN8PPs6XHB8nOrd9+Lbir21CxDHeC20HMb6nEIxnVXu7fvBdh73WKDw/QvjqlvyXp7L4ryGsZVmF83cWPl0zJvXOO8TOb4f4+Qvz8J/HXPThq5H3N3OqYU25PWt8NAw1yzMUOy9SweOoED6cq7QPk7r2upj/XPTl43LrfvFzLsZ9+J/KMr54PjYFH67B4r+eFgB/oP2HEEPbwvU81w/MiOdjPOr2PJaOmVC+OQsjHuv6GNSnI5+2M+bH6cMn1SWvMDZvwljT2JbqAKnvLONL63QsHNdS3Lis3a58t5Z+JFYpbrTu0PHGgpmh7cBeI/U3FfMK79yzLay/ei0w8XGy/c/RdZBrvyn0gRn0d7ryVcZlpsiMbOWS+CKGby9wPydR1j2m3ZKdL8t+Tl57TNz4npf99nKu0PFl+WsfV579XZD+qP9C9VQ1n4eK46M55zuVl/98pMtXvO61mHZJ7rsJ5HPJJR3/bntqc80WD9h/dF/zkGGiNkjpnMFxRMhn+Pw/CN3vlw== @@ -31,7 +31,7 @@ - eJzt1EsKgCAUBdC7g4Y1q1lirrHf5lpB/xaT0DCKIOuF3QOCjny+jwAR0TWhASIjHYUs5sAd5tKtSgG1ko7CHfbH94wZMGXSUTxDqt/aFOjS9++l98QaSPS2n+38LJ7MkI9/9NGbeluz4WbdfMwXEf1THgCFXWUgHcleo87PRPRfKyQjEbs= + eJzt1DkOgzAQBdB/A0rShQ7L0HE/tobcg9yFE5CE5TBYookUSBBBDMt/kiVbLjyeGRsgIprG9oGLLx2FLOZgOczlshIFpEo6it9yU/P7hLqzP7an8oDak45iviwAbsHwnlS/lS7wcNc/l9Zz1YCj+3lj3k+74zf07oh/9NidnqZmrz/rdsR8EdE5hRYQmRFb0pF8KtT3NRGdVwdj7hTP @@ -139,7 +139,7 @@ - + { diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx index a325b7b2756..e13473c7fcb 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx @@ -5,14 +5,15 @@ + - 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 @@ -22,7 +23,7 @@ - eJztlU0OQDAUhN9xcAXuhHPgFH5K2Pk5kYN4i25EF0SbtsyXvIUumjHTdogAAKZoI6Iuur8O/ECVX8zfCbI2zh/8/OI/riHRFtpW4Re+9EcaEGVy8sC2misFayrlVIb0vclEsKZezuCgf8AeJu96zfs2ir0Fr/UOvS8uMbIv0wNvZu68xfPee3MGXesq8G129OcJ+GEfnRkgTwD0cABSpCk/ + eJztlT0SQDAUhF/jLrgCd8I5UDmC/6HzcyIH8Yo0hoIhkrDfzCukiLUrWSIAgCxKl6hyz68DMzjKz+NnH1lL5w9+fvEbJ4dodlSrMAtT+iOwiUIxka1azZ6YNSViUkn67mRSs6ZGTKuhf0AdMs96zvsWB3vXvNZodL+cIbPeeU/HvvQXvBm480bDe+/OP6hbV4Fvs6A/N8AP9TyZAfIE4BlWYdkp1w== @@ -35,7 +36,7 @@ - eJxjYBgFo2DogBMaqPxOLQaGLi1MddjE0fWOgsELsMWfPJCvQGRcjwLyASXhOZB5jBS7h2OamanJwDBLc6BdMbQAKfXHKMAN8oF5rwCKC2lUBlASJ91AN/VAce9oO2AUIAFa5vV2oLkdWMzuBor1UMnOwdiupcRN/cBwmUBC2EwH1nkzhni9R0kaHK2rRgE9wWAsbwYSjIbHwANqxsFofGKCOn4GhnoobuAfaNeMglFAHQAAkqgpdw== + eJxjYBgFo2DogBMaqPxOLQaGLi1MddjE0fWOgsELsMWfPJCvQGRcjwLyASXhOZB5jBS7h2OamanJwDBLc6BdMbQAKfXHKMAN8oF5rwCKC2lUBlASJ91AN/VAce9oO2AUIAFa5vV2oLkdWMzuBor1UMnOwdiupcRN/cBwmUBC2EwH1nkz6FDvtRsD49KYfP2LgXqX4NBPSRocratGAT3BYCxvBhKMhsfAA2rGwWh8YoI6fgaGeihu4B9o14yCUUAdAADsPiyZ diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx index 939f3fd222f..90fd135e033 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx @@ -13,7 +13,7 @@ - eJzVmUtv00AQx7exVETU+NLYNyCc8iDiFQoHuCD4BIUz9DvAqSCRlguPEohoC4grfIIWDnyLgsIZKjgRmgRQzuywu/J4vbteO25qRhqts7se//wfP9aTqkvI41LU16gLW/EIue+xdlXye9SP+8HcGo3XcEnEFguEPHEIGdF2zH2P+lMn8AEaE/5QwfagFD7GMZ8xQFuh3uZcFT/MZrKhgumZE50zQg7zq26Yq645f2yg4xHK9b1sxwbW4fr8KkTHutIcwQatTjPZ1tG20NGk3ZkZNaOsmTyv44RzbquZrT23nKfilw2uWbgPNqhv5sxflJiWwNei2p3LmS/wfEJe88wH9r/xXaD+ccp+PgEfHpuWmRgOms89kY6vN0+I72Xrn+ejfJeL6fg8L3utREz3bKCdiW/9gPgw46T69Wo0LzW2/aNJSL8ZPe472vce9f+s07VKne9D2349HPPNYUIOcd+dkG8WxTL5W4s5Wx5rrxaZfuI9PI3rD/IUZyImngucafhulZPdm9sWc26XAz64N0wM/bl4bbPWT9iXYpBznX7wrbA3t798gypdt1eD3zMNQgqN6Dwdg2p9lbV+cr9qXlK+U/QcT/Pz/E2fDX/480HXL457kY5d4uNb9Hmz3WT9d1us72aL/b7Dfy+1zHyq9R+M2T5TsF8pqvu/Sv27CfSLG0tiIm8fZsP9y1wjodmypB1om5TPJqe4H/MluY9NDKaxSfIr8ol1XJK0uyFpOs38prH94sNrRPz+UK3zsuJ7leA7Fd6n4nsV9NuQ+m39ZcmeL41DPNU6bpJ4eefTrQ/ywveI1yB33PTfrT3efuJ8O1J/Wod4sH75Vg7qeKqaEtSQritqdiqTny+qfV/bhfpnkN/VmFrjUFNTtOGDfdccQq4VmGPWk5r6WhdtQ37bnppxkceEmrHuGDZ8Y1SvFXFs8wH5XeG15LbEiOvFA3QMk5YqPlwPHyNOzNglURPXhqglH/XDOg5RLFF3j9NAxzeSOE3nKecNuEQtvoLqyqpaNa6/y3VkFV/H8N+BrKFgw1qA/wXqmqpm + eJzVmUtv00AQx7exVETU+NI4NyCc8qDiFQoHuCD4BIUz9DvAqSCRlguPEohoC4grfIIWDnyLgsIZKjgRmgRQuDJT78rj9Xq9fjQ1I4023p2Of/5P7KynNZuxx6Wgr4ILW3YYu++444rk98CPV7zYOuRr2ixgCwXGnliMjWAcc98Ff2p5PiBrwh8q2B6U/Oc4VnEZcKyCtzlXteJn09lQwfTMCsaMiGN8zfZzNUKunxrqeAS4vpfN2NA6XJ9fheBaV4oRbDiGaSbbGvksdNRpd2ZKzShrJsd1LH/NTTUzteeGcSp+2fA7i/fBOvhGzvxFydUS+Vqg3bmc+TyvJ9Y1z3xo/xvfBfCPE/bzMfjo2qRMx3DQfPaJZHy9WcYqTrb+eTbId7mYjM+BfH/nstUKc+5pdtbTTse3FsGXtdGcgjGNfsJ6dahN3f38AzTtS7q+g+P3ZO5nA/YqDR4PY7/hz/nmMGOHuO+k5JsmuXT+1iBm03HHq0VXP/E7nFY/E8M6RZnISWORMwnfrXK8e3PLIOZ22ePDe0PH0J+J1jZr/YR9KXo1D9MP3xV2Z/aXb1CDfXvNO55qMlZoBuPCGFT7q6z1k+dVcXH5TsE1nubX+RueDX/48yFsXpz3Iqxd4uub8LzZmnPn77bcuZst9/gOP15s6flU+z9cM32mUL9SVM9/leZ3YugXtRbHRN0+TPvnl7hGQrMlSTvUNi6fSU3pPOWLcx/rGHRraeor6kl1XJS0uyFpOsn6JrH94qN7RPr7odrnZcX3KsZ7Kv6eivdV1G9dmjf1lyVzviSO+VT7uDT58s4Xtj/IC98j3oPctpO/t/b4+InzbUvzSR3z4f7lW9nr46l6SthDuq7o2alMfr6o/va1Wao9w/quRPQahyE9RRM+/NtVi7FrBdcp68mQ/lqXfMb6th014wLPiT3jsHOY8I1Jv1bkMa0H1neZ95LbEiPtFw/IOXRaqvhoP3xMOCljlwVNfDdEL/loxa/jkOQSffcoDcL4RhKn7jrluiGX6MVXSV9Z1aum/Xe5j6zi62j+dyBrKNioFuj/AOUjq4k= @@ -26,12 +26,12 @@ - eJztwQENAAAAwqD3T20PBxQAAAAAAMCXARkAAAE= + eJztzgENADAIA7B5QuSRjQxO0ipoAgDAL14lXdsLAAAAuG8Ag6wBdg== - eJzt1O8JgzAQh+HfBo5gv2nEGatb+GeTdolaLdQFdA4PbLFgP0hBRPs+EHI5ErgQchIAAMDxXELpGo7xLZaqeL6nsFz5kb87qXavMzZXbv06gb1pAukRTOvO/kn/B3/laXds3fL4zY+kUzTGmfWb/EsvwvZ+fV8Ac2dPSmyk3taVYA28L4C9GQDl9SK0 + eJzt1EsKwjAUheGzgy7BztoUZ92fugsfU91E3YT1AboB3UKnXqiitJMqXGrx/yDkJoRwQkgkAACAz1TjvhN0U6TSNq3rnWUuG7mXNl69ze2DdAiP9daXwSfXOpc2uc/egLdjIp2S1/hq7+Tm9FZ+ydnOeAnd66dRJsVZXc/tv1kM5P/8N9/eL4C2SSRNrc2ivpPAA/cLYGju2YIlhA== @@ -99,7 +99,7 @@ - + @@ -114,7 +114,7 @@ - + { diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx index 09cc96033b8..32c421d6046 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx @@ -31,7 +31,7 @@ - eJxjYBgFo2AUUALMNRgYLIDYUmOgXTIKsIHr2gwMN7QH2hWooENzoF0wCmgBBLUYGIS0BtoVIxsYAvOWEY78JQ+MGwWk+JEGsmVwxJe4DgODhA5+Nja1hIAvnrxvDXSLDZp7LEbT04gEtEp/17Sxs3GJYVMzCkbBSAF1/AwM9UDcwD/QLsEEi5jx84caKDDAzx8swHKQtt+HSviNglEwUGAwl+ejYBSMAvoBAFbjF4A= + eJzt1kEKwjAQBdAPHqDoRkFBl7XJQu3CFr2Cd/EE6s6eQz2TehxnqbaNiKST4n8QSEIWn0ymFCCiXyxjIJORx9pJ/DumQJFqp/jOzQB3o53iVTHVTkA+dBOgl2inKDtb4GK1UzRjLr21qOmvsdRm8lSfocxHNfXqy30NrHtedfaTjaP3V5Jl/ZYnC/A9kX++3t/VVM/r9qrOEP2LXQTsZRwi7SRlp4573TbbmXsdijzQ//e23B+RlpC/50TUnAdcVxqU diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx index 19ba32e670d..cf3faf42af4 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx @@ -5,6 +5,7 @@ + eJztw7ENAAAMAiB3l/5/rX80kNBLqqqqqqqq+ugA4iKowQ== @@ -17,7 +18,7 @@ - eJztV0tOwzAQHQk2iZtcoWFJrgArRIPoniPAPShXgZYeClRacw88aqwMlv9x06rKk0ZxHNvzMs/jD8CIESPOBe8FwMeRbFm4+d2VAI2wn4FtJuy+9OPn0y41fP2m4LfLAX7zsD5D8ntlAG8srE9ffiExofy+aoDvOszvi6W9iR/6XGXmfpQ/tp2JcuNp2K9v/NaZXTP6Hfll4j132ILtn1eT/vxc8aP8XP8isSBtVL8mjWk71Iy39pB3mnHl2SjfsWz7Fxe/eW3mSNtNRdyriVkf+o1le02xjiWInwmx6wtqKmMm84PGlyuGdcjPlB9zD31duBFj3NYdJ1d+0HhXRJsU+aEDzRnKzzc/YvzKdhciLpdtbExllZ9NX1VnWo5Z/3bKmDofppyleSXzRqerfI/Rl/pQc1j6qBQeOk19tT50/ur2NJ77r4WHmH8Ua6KjGm/U7+k6LT+6d5jmH63DOIXmbCy/z6Kbf7o1S1fP2vU59v6yKvz4bQLvDVzYtuz2j01bF3MH2QbO+8f6/9MG25lZHcdnvFBuz44xXeevlNxiEHPnGBIxe+6QcOl7bNDz3yni1OfftD2HjBhxTvgDGpfgIw== + eJztV0tOwzAQHQk2iZtcoWFJrgArRIPoniPAPShXgZYeClRacw88aqwMlv9x06rKk0ZxHNvzMs/jD8CIESPOBe8FwMeRbFm4+d2VAI2wn4FtJuy+9OPn0y41fP2m4LfLAX7zsD5D8ntlAG8srE9ffiExkfy+aoDvOpzfi6WPiR/6XGXmfpQ/tp2JcuNp2K9v/NaZXTP6Hfll4j132ILtn1eT/vxc8aP8XP8isSBtVL8mjWk71Iy39pB3mnHl2SjfsWz7Fxe/eW3mSNtNRdyriVkf+o1le02xjiWInwmx6wtqKmMm84PGlyuGdcjPlB9zD31duBFj3NYdJ1d+0HhXRJsU+aEDzRnKzzc/YvzKdhciLpdtbExllZ9NX1VnWo5Z/3bKmDofppyleSXzRqerfI/Rl/pQc1j6qBQeOk19tT50/ur2NJ77r4WHmH8Ua6KjGm/U7+k6LT+6d5jmH63DOIXmbCy/z6Kbf7o1S1fP2vU59v6yKvz4bQLvDVzYtuz2j01bF3MH2QbO+8f6/9MG25lZHcdnvFBuz44xXeevlNxiEHPnGBIxe+6QcOl7bNDz3yni1OfftD2HjBhxTvgDItPgIw== @@ -30,12 +31,12 @@ - eJzt0sEJg0AQheHXgSWYm6ztRGOqibZmLqYHc0kuWkbmEGHBJeTgsiT+HwizD4SBeRIAAOkcS6kq13lv2dXLB5tv3nt00t3F3w9rtd3hFLhZY9k5kGNbfve/mfcmtw4efriHMe872T+z+zwjnkchPYvUW6RD/7C4ZFL7/ros9TYAAODfvQDOSyqr + eJzt0s0JwkAQhuGvg5Sgt7BLbinF32rUm/ahjehFe9CLXkwZzkEhGhGFLIP6PrAw88HCwIwEAEB681JalM28F6V+vM/W1m8esq31u1q2D9IhtD/nJ5aFtCp8Z/AwsD0MYzMfWTZ+kqNd9dt/p/43HbvB7hffYcr9nu1PFV7XSOeYS6fcewo/3B9uJpk0vb5Z5j0NAAD4dRedmS2/ - + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/maze_1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/maze_1.tmx index 36f2481fb75..dfc7ea5ac6d 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/maze_1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/maze_1.tmx @@ -1,13 +1,13 @@ - + - + - eJxjYBgFo2AUjIJRAAN7eAbG3iheys3YC3R7PTfl5pAKooFu3z1A4TYKSAcAGL8Dsg== + eJxjYBgFo2AUjIJRMBzAXh4Ghnpu+tsbzcvAsJuH/vaOAvIAAN0IAoM= @@ -41,9 +41,10 @@ - + + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/mountain_town_generic.tmx b/forge-gui/res/adventure/Shandalar/maps/map/mountain_town_generic.tmx index 1ee1229a4cc..aaaefa18c71 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/mountain_town_generic.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/mountain_town_generic.tmx @@ -21,12 +21,12 @@ - eJxjYBgFQwXsYGFgkMaDd7FQph8X/saKas4uNgYGeS0GBgUtCD+UFdMuZIAsr2uEaRYMZGoyMGQB8Xp1BoYN6hAxPaB6Yx0GBhMgPsvOwGANtNOGBHthekEAmQ0DepwMDK1AO9uAWJ8d1X05HAwMk4HuO88OofM4iLcXZBYMILORwVl2VBqu3gi7ODH2wtwMwhdw2HsOzT+43EWsvV9YUdMgsn7kMMcljhy/yHxC9qK78SyOMMclro8W/jA+qfYih3kuEhuWbtDFYWwYTWy6QgbIYY5eBoD8Q0peR8/f5ABY+JPiB2qAUXvJAwAGckIl + eJxjYBgFQwXsYGFgkMaDd7FQph8X/saKas4uNgYGeS0GBgUtCD+UFdMuZIAsr2uEaRYMZGoyMGQB8Xp1BoYN6hAxYx0GBhMdCPssOwODNdBOGyDWMyLOXmT9yGwY0ONkYGgF2tkGxPrsqO7L4WBgmAx033l2CJ3HQbx/QWbBADIbGZxlR6Xh6o2wixNjL8zNIHwBh73n0PyDy13E2vuFFTUNIutHjz9s4jA2TB7GJ2QvuhvP4ghzXOL6aOEP45NqL3KY5yKxYekGXRzGhtHEpitkgBzm6GUAyD+k5HX0/E0OgIU/KX6gBhi1lzwAAABuQiU= - eJxjYBgFowA7mKzOwDBFHcEX12FgkNAhzyxkvZSYMwrIA7jCHF+8jMbTKBgFwxMAAMK5BSc= + eJxjYBgFowA7mKzOwDBFHcIW12FgkNAh3yxk/ZSaNQpIB7jCHF+8jMbTKBgFwxMAAMTVBSc= diff --git a/forge-gui/res/adventure/Shandalar/maps/map/mountain_town_identity.tmx b/forge-gui/res/adventure/Shandalar/maps/map/mountain_town_identity.tmx index 2817288db35..f8ea20dd80c 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/mountain_town_identity.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/mountain_town_identity.tmx @@ -20,12 +20,12 @@ - eJxjYBgFQwXsYGFgkMaDd7FQph8X/saKas4uNlR+KJo8OsAnj2xWpiYDQxYQr1dnYNigjhA31mFgMAHis+wMDNZaDAw2WsTbC9OLbA4y0ONkYGgF2tkGxPrsqHI5HAwMk4HuO88OofM4iLcX2Sx0c2HgLDsqjUse2VxC9sLcDMIXcJh7Ds0/lNr7hRU1DSLrRw5zkPgrDUxx5PhF5hOyF92NZ3GEOS5xfbTwh/FJtRc5zHOR2LB0gy4OY8NoYtMVMkAOc/QyAOQfUvI6ev4mB8DCnxQ/UAOM2kseAAD38kEl + eJxjYBgFQwXsYGFgkMaDd7FQph8X/saKas4uNlR+KJo8OsAnj2xWpiYDQxYQr1dnYNigDhEz1mFgMNGBsM+yMzBYazEw2GgRby+yfmQ2DOhxMjC0Au1sA2J9dlS5HA4GhslA951nh9B5HMTbi2wWurkwcJYdlcYlj2wuIXthbgbhCzjMPYfmH0rt/cKKmgaR9aPH3ysNTHEYG6YPxidkL7obz+IIc1zi+mjhD+OTai9ymOcisWHpBl0cxobRxKYrZIAc5uhlAMg/pOR19PxNDoCFPyl+oAYYtZc8AAD67kEl - eJxjYBgFowA7mKzOwDBFHcEX12FgkNCBsOW1GBgUtIg3C1kvMnsU0Aegh/k5DUxxdDWj8TQKRsHwBADmvgaw + eJxjYBgFowA7mKzOwDBFHcIW12FgkNBByMlrMTAoaBFvFrJ+dLNGAe0Bepif08AUR1czGk+jYBQMTwAA6NoGsA== diff --git a/forge-gui/res/adventure/Shandalar/maps/map/mountain_town_tribal.tmx b/forge-gui/res/adventure/Shandalar/maps/map/mountain_town_tribal.tmx index 419af466433..ace2f63670c 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/mountain_town_tribal.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/mountain_town_tribal.tmx @@ -21,12 +21,12 @@ - eJy9VF0OwUAQ/qhazuAAUhFNyhvXcASE4BY8eXMQHsUdisOIR2zTTMyOLG3Yfsl0Zna68+3M/gDF4V52m7/kpbrsmeObQH+8t9+d4uGg1kMFaHyQY+W3+Ta5+WaeY9X0hyIu8SnOc031Ps207JrAXssoAsZaum2gpyVWQL8FDFrZeWluAm4TOnVgpTnXQZp/Er1i8xqw1es7q1Qva9l5Q/Xyuc0RK1Pb4jzvN15acyIXS96TqOdX3qtvnkE+n/fcNs73l/vfeOUaY0vPbeOh6D/5eXl5zxfMpnMjx8kmnfVccfCeyzcgqSfPXZf3Ow/oTaf+Uw3yDXYFzlsUp+QtEv/ifQLOoEZF + eJy9VF0OwUAQ/qhqncEBpCKa4I1rOAJCcAuevDkIj+IOxWHEI1aaSWeHrTZsv2Q6szPd+XZmf4DicC/bzV9yYl12dP8mUB/n7XereFio9VAB6ilyrPw23yQ3Fxh3kjzHqp536KbzpsV5rqnap5mSXQPYKxkpzm4L6LXieOQB/SYwaGbn5fO5TWjXgJXiXAdx/gmrc+4DW7W+sxfrpZ+dN/SSMbc5Ik/XpjjP+42X1vySiyHvSdTzK+/V1c8gny/375OfbIrT+BuvXGNk6LnJH4r+0zgvL+/5gtl0bqSfbNJZzxUH77l8A1715Lnrtxy8EvSmU/+pBvkG2wLnLYpT8haJf/E+ARjrRkU= - eJxjYBgFowA7mKzOwDBFHcEX12FgkNCBsOW1GBgUtIg3C1kvMnsU0AfgCnN88TIaT6NgFAxPAAAOuQW6 + eJxjYBgFowA7mKzOwDBFHcIW12FgkNBByMlrMTAoaBFvFrJ+dLNGAe0BrjDHFy+j8TQKRsHwBAAQ1QW6 diff --git a/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.png b/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.png index 4a3815e0661..dc09805b10d 100644 Binary files a/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.png and b/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.png differ diff --git a/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.xcf b/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.xcf index a8a5b09f6a2..5c98cb8920b 100644 Binary files a/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.xcf and b/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.xcf differ diff --git a/forge-gui/res/adventure/Shandalar/world/quests.json b/forge-gui/res/adventure/Shandalar/world/quests.json index 86bf383b5ec..900b50277eb 100644 --- a/forge-gui/res/adventure/Shandalar/world/quests.json +++ b/forge-gui/res/adventure/Shandalar/world/quests.json @@ -215,6 +215,11 @@ }, "POIToken": "" } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_tribal", + "waste_town_identity" ] }, { @@ -697,6 +702,11 @@ }, "POIToken": "" } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" ] }, { @@ -934,6 +944,12 @@ "epilogue": {}, "POIToken": "" } + ], + "questSourceTags": [ + "forest_town_generic", + "forest_town_identity", + "forest_town_tribal", + "forest_capital" ] }, { @@ -1181,6 +1197,12 @@ "epilogue": {}, "POIToken": "" } + ], + "questSourceTags": [ + "swamp_town_generic", + "swamp_town_identity", + "swamp_town_tribal", + "swamp_capital" ] }, { @@ -1577,6 +1599,12 @@ "epilogue": {}, "POIToken": "" } + ], + "questSourceTags": [ + "plains_town_generic", + "plains_town_identity", + "plains_town_tribal", + "plains_capital" ] }, { @@ -1588,9 +1616,6 @@ "text": "Stepping out of the cool shade of the local tavern, you find yourself face to face with a Viashino adorned in tribal garb.", "options": [ { - "action": [ - null - ], "name": "\"...Can I help you?\"", "text": "\"Shaman Izka hunts defilers of sacred sands. You will help.\"", "options": [ @@ -1788,6 +1813,12 @@ "epilogue": {}, "POIToken": "" } + ], + "questSourceTags": [ + "mountain_town_generic", + "mountain_town_identity", + "mountain_town_tribal", + "mountain_capital" ] }, { @@ -2090,6 +2121,12 @@ "epilogue": {}, "POIToken": "" } + ], + "questSourceTags": [ + "island_town_generic", + "island_town_identity", + "island_town_tribal", + "island_capital" ] }, { @@ -2364,6 +2401,11 @@ "epilogue": {}, "POIToken": "" } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_tribal", + "waste_town_identity" ] }, { @@ -2767,6 +2809,12 @@ "epilogue": {}, "POIToken": "" } + ], + "questSourceTags": [ + "forest_town_generic", + "forest_town_identity", + "forest_town_tribal", + "forest_capital" ] }, { @@ -3189,6 +3237,12 @@ "epilogue": {}, "POIToken": "" } + ], + "questSourceTags": [ + "plains_town_generic", + "plains_town_identity", + "plains_town_tribal", + "plains_capital" ] }, { @@ -3620,6 +3674,12 @@ "epilogue": {}, "POIToken": "" } + ], + "questSourceTags": [ + "swamp_town_generic", + "swamp_town_identity", + "swamp_town_tribal", + "swamp_capital" ] }, { @@ -3936,6 +3996,12 @@ "epilogue": {}, "POIToken": "" } + ], + "questSourceTags": [ + "mountain_town_generic", + "mountain_town_identity", + "mountain_town_tribal", + "mountain_capital" ] }, { @@ -4165,6 +4231,12 @@ "epilogue": {}, "POIToken": "" } + ], + "questSourceTags": [ + "island_town_generic", + "island_town_identity", + "island_town_tribal", + "island_capital" ] }, { @@ -4398,6 +4470,11 @@ "epilogue": {}, "POIToken": "" } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" ] }, { @@ -4662,6 +4739,12 @@ "epilogue": {}, "POIToken": "" } + ], + "questSourceTags": [ + "swamp_town_generic", + "swamp_town_identity", + "swamp_town_tribal", + "swamp_capital" ] }, { @@ -4858,6 +4941,12 @@ "failureDialog": {}, "POIToken": "" } + ], + "questSourceTags": [ + "island_town_generic", + "island_town_identity", + "island_town_tribal", + "island_capital" ] }, { @@ -5112,6 +5201,12 @@ "failureDialog": {}, "POIToken": "" } + ], + "questSourceTags": [ + "forest_capital", + "forest_town_generic", + "forest_town_identity", + "forest_town_tribal" ] }, { @@ -5369,6 +5464,12 @@ "failureDialog": {}, "POIToken": "" } + ], + "questSourceTags": [ + "plains_capital", + "plains_town_generic", + "plains_town_identity", + "plains_town_tribal" ] }, { @@ -5509,6 +5610,11 @@ "failureDialog": {}, "POIToken": "" } + ], + "questSourceTags": [ + "waste_town_generic", + "waste_town_identity", + "waste_town_tribal" ] }, { @@ -5665,6 +5771,12 @@ "failureDialog": {}, "POIToken": "" } + ], + "questSourceTags": [ + "mountain_town_generic", + "mountain_town_identity", + "mountain_town_tribal", + "mountain_capital" ] } ] \ No newline at end of file