diff --git a/forge-core/src/main/java/forge/ImageKeys.java b/forge-core/src/main/java/forge/ImageKeys.java index 7b67f396603..98a4b070944 100644 --- a/forge-core/src/main/java/forge/ImageKeys.java +++ b/forge-core/src/main/java/forge/ImageKeys.java @@ -18,6 +18,7 @@ public final class ImageKeys { public static final String BOOSTERBOX_PREFIX = "x:"; public static final String PRECON_PREFIX = "p:"; public static final String TOURNAMENTPACK_PREFIX = "o:"; + public static final String ADVENTURECARD_PREFIX = "a:"; public static final String HIDDEN_CARD = "hidden"; public static final String MORPH_IMAGE = "morph"; @@ -33,6 +34,7 @@ public final class ImageKeys { private static String CACHE_CARD_PICS_DIR, CACHE_TOKEN_PICS_DIR, CACHE_ICON_PICS_DIR, CACHE_BOOSTER_PICS_DIR, CACHE_FATPACK_PICS_DIR, CACHE_BOOSTERBOX_PICS_DIR, CACHE_PRECON_PICS_DIR, CACHE_TOURNAMENTPACK_PICS_DIR; + public static String ADVENTURE_CARD_PICS_DIR; private static Map CACHE_CARD_PICS_SUBDIR; private static Map editionImageLookup = new HashMap<>(); @@ -112,7 +114,10 @@ public final class ImageKeys { } else if (key.startsWith(ImageKeys.TOURNAMENTPACK_PREFIX)) { filename = key.substring(ImageKeys.TOURNAMENTPACK_PREFIX.length()); dir = CACHE_TOURNAMENTPACK_PICS_DIR; - } else { + } else if (key.startsWith(ImageKeys.ADVENTURECARD_PREFIX)) { + filename = key.substring(ImageKeys.ADVENTURECARD_PREFIX.length()); + dir = ADVENTURE_CARD_PICS_DIR; + }else { filename = key; dir = CACHE_CARD_PICS_DIR; } diff --git a/forge-core/src/main/java/forge/item/PaperCard.java b/forge-core/src/main/java/forge/item/PaperCard.java index 69c9634de49..eea20d881b3 100644 --- a/forge-core/src/main/java/forge/item/PaperCard.java +++ b/forge-core/src/main/java/forge/item/PaperCard.java @@ -37,7 +37,7 @@ import java.io.Serializable; * * @author Forge */ -public final class PaperCard implements Comparable, InventoryItemFromSet, IPaperCard, Serializable { +public class PaperCard implements Comparable, InventoryItemFromSet, IPaperCard, Serializable { private static final long serialVersionUID = 2942081982620691205L; // Reference to rules diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index e3968130e48..5d9a99a4f01 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -332,6 +332,7 @@ public class Forge implements ApplicationListener { } private static void loadAdventureResources(boolean startScene) { try { + Config.instance().loadResources(); if (startScene) switchScene(StartScene.instance()); } catch (Exception e) { diff --git a/forge-gui-mobile/src/forge/adventure/character/EntryActor.java b/forge-gui-mobile/src/forge/adventure/character/EntryActor.java index 15d84f2ea5e..767e92c05d3 100644 --- a/forge-gui-mobile/src/forge/adventure/character/EntryActor.java +++ b/forge-gui-mobile/src/forge/adventure/character/EntryActor.java @@ -10,34 +10,24 @@ import forge.adventure.stage.MapStage; public class EntryActor extends MapActor{ private final MapStage stage; String targetMap; + private float x; + private float y; + private float w; + private float h; + private String direction; - public EntryActor(MapStage stage, int id,String targetMap,float x,float y,float w,float h,String direction,boolean spawnPlayerThere) + public EntryActor(MapStage stage, int id,String targetMap,float x,float y,float w,float h,String direction) { super(id); this.stage = stage; this.targetMap = targetMap; + this.x = x; + this.y = y; + this.w = w; + this.h = h; - if(spawnPlayerThere) //or if source is this target - { - switch(direction) - { - case "up": - stage.getPlayerSprite().setPosition(x+w/2-stage.getPlayerSprite().getWidth()/2,y+h); - break; - case "down": - stage.getPlayerSprite().setPosition(x+w/2-stage.getPlayerSprite().getWidth()/2,y-stage.getPlayerSprite().getHeight()); - break; - case "right": - stage.getPlayerSprite().setPosition(x-stage.getPlayerSprite().getWidth(),y+h/2-stage.getPlayerSprite().getHeight()/2); - break; - case "left": - stage.getPlayerSprite().setPosition(x+w,y+h/2-stage.getPlayerSprite().getHeight()/2); - break; - - } - } - + this.direction = direction; } public MapStage getMapStage() @@ -58,5 +48,23 @@ public class EntryActor extends MapActor{ } } + public void spawn() { + switch(direction) + { + case "up": + stage.getPlayerSprite().setPosition(x+w/2-stage.getPlayerSprite().getWidth()/2,y+h); + break; + case "down": + stage.getPlayerSprite().setPosition(x+w/2-stage.getPlayerSprite().getWidth()/2,y-stage.getPlayerSprite().getHeight()); + break; + case "right": + stage.getPlayerSprite().setPosition(x-stage.getPlayerSprite().getWidth(),y+h/2-stage.getPlayerSprite().getHeight()/2); + break; + case "left": + stage.getPlayerSprite().setPosition(x+w,y+h/2-stage.getPlayerSprite().getHeight()/2); + break; + + } + } } diff --git a/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java b/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java index ea224a7dbb4..7cf7a5de778 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java @@ -105,6 +105,7 @@ public class TileMapScene extends HudScene { stage.getPlayerSprite().setPosition(0, 0); WorldSave.getCurrentSave().getWorld().setSeed(point.getSeedOffset()); tiledMapRenderer.loadMap(map, ""); + stage.getPlayerSprite().stop(); } public boolean inTown() { @@ -121,6 +122,7 @@ public class TileMapScene extends HudScene { WorldSave.getCurrentSave().getWorld().setSeed(rootPoint.getSeedOffset()); tiledMapRenderer.loadMap(map, oldMap); oldMap = targetMap; + stage.getPlayerSprite().stop(); } diff --git a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java index 2464532cef8..f86fd619ae9 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java @@ -80,7 +80,7 @@ public class MapStage extends GameStage { private int selected = 0; public InputEvent eventTouchDown, eventTouchUp; TextraButton selectedKey; - private boolean foundPlayerSpawn=false; + private boolean respawnEnemies; public boolean getDialogOnlyInput() { @@ -246,6 +246,9 @@ public class MapStage extends GameStage { setDialogStage(GameHUD.getInstance()); showDialog(); } + Array otherEntries=new Array<>(); + Array spawnClassified=new Array<>(); + Array sourceMapMatch=new Array<>(); public void loadMap(TiledMap map, String sourceMap) { isLoadingMatch = false; @@ -278,6 +281,14 @@ public class MapStage extends GameStage { effect = JSONStringLoader.parse(EffectData.class, map.getProperties().get("dungeonEffect").toString(), ""); effectDialog(effect); } + if(MP.get("respawnEnemies")!=null&&MP.get("respawnEnemies") instanceof Boolean&&(Boolean)MP.get("respawnEnemies")) + { + respawnEnemies=true; + } + else + { + respawnEnemies=false; + } if (MP.get("preventEscape") != null) preventEscape = (boolean) MP.get("preventEscape"); if (MP.get("music") != null && !MP.get("music").toString().isEmpty()) { @@ -286,7 +297,9 @@ public class MapStage extends GameStage { getPlayerSprite().stop(); spriteLayer = null; - foundPlayerSpawn=false; + otherEntries.clear(); + spawnClassified.clear(); + sourceMapMatch.clear(); for (MapLayer layer : map.getLayers()) { if (layer.getProperties().containsKey("spriteLayer") && layer.getProperties().get("spriteLayer", boolean.class)) { spriteLayer = layer; @@ -297,6 +310,12 @@ public class MapStage extends GameStage { loadObjects(layer, sourceMap); } } + if(!spawnClassified.isEmpty()) + spawnClassified.first().spawn(); + else if(!sourceMapMatch.isEmpty()) + sourceMapMatch.first().spawn(); + else if(!otherEntries.isEmpty()) + otherEntries.first().spawn(); //reduce geometry in collision rectangles int oldSize; @@ -329,6 +348,7 @@ public class MapStage extends GameStage { }while (oldSize!=collisionRect.size); if (spriteLayer == null) System.err.print("Warning: No spriteLayer present in map.\n"); + getPlayerSprite().stop(); } static public boolean containsOrEquals(Rectangle r1,Rectangle r2) { @@ -387,13 +407,18 @@ public class MapStage extends GameStage { boolean spawnPlayerThere=(targetMap==null||targetMap.isEmpty()&&sourceMap.isEmpty())||//if target is null and "from world" !sourceMap.isEmpty()&&targetMap.equals(sourceMap); - if(foundPlayerSpawn) - spawnPlayerThere=false; + EntryActor entry=new EntryActor(this, id, prop.get("teleport").toString(), x, y, w, h, prop.get("direction").toString()); if((prop.containsKey("spawn")&& prop.get("spawn").toString().equals("true"))&&spawnPlayerThere) { - foundPlayerSpawn=true; - }//set spawn to option with "spawn" over other entries - EntryActor entry = new EntryActor(this, id, prop.get("teleport").toString(), x, y, w, h, prop.get("direction").toString(),spawnPlayerThere); + spawnClassified.add(entry); + }else if(spawnPlayerThere) + { + sourceMapMatch.add(entry); + } + else + { + otherEntries.add(entry); + } addMapActor(obj, entry); break; case "reward": @@ -591,7 +616,8 @@ public class MapStage extends GameStage { if (currentMob.defeatDialog == null) { currentMob.remove(); actors.removeValue(currentMob, true); - changes.deleteObject(currentMob.getId()); + if(!respawnEnemies||currentMob.getData().boss) + changes.deleteObject(currentMob.getId()); } else { currentMob.defeatDialog.activate(); player.setAnimation(CharacterSprite.AnimationTypes.Idle); diff --git a/forge-gui-mobile/src/forge/adventure/util/Config.java b/forge-gui-mobile/src/forge/adventure/util/Config.java index ef98bb51300..41753b47bad 100644 --- a/forge-gui-mobile/src/forge/adventure/util/Config.java +++ b/forge-gui-mobile/src/forge/adventure/util/Config.java @@ -6,24 +6,34 @@ import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Json; import com.badlogic.gdx.utils.JsonWriter; import com.badlogic.gdx.utils.ObjectMap; +import forge.CardStorageReader; import forge.Forge; +import forge.ImageKeys; import forge.adventure.data.ConfigData; import forge.adventure.data.DifficultyData; +import forge.adventure.data.RewardData; import forge.adventure.data.SettingData; -import forge.card.ColorSet; +import forge.card.*; import forge.deck.Deck; import forge.deck.DeckProxy; import forge.deck.DeckgenUtil; import forge.gui.GuiBase; +import forge.item.PaperCard; import forge.localinstance.properties.ForgeConstants; import forge.localinstance.properties.ForgePreferences; import forge.localinstance.properties.ForgeProfileProperties; import forge.model.FModel; +import forge.util.FileUtil; import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStreamReader; +import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Paths; import java.util.HashMap; +import java.util.List; /** * Main resource class to access files from the selected adventure @@ -100,6 +110,7 @@ public class Config { configData=new ConfigData(); } + } private String resPath() { @@ -229,4 +240,31 @@ public class Config { handle.writeString(json.prettyPrint(json.toJson(settingsData, SettingData.class)),false); } + + public void loadResources() { + RewardData.getAllCards();//initialize before loading custom cards + final CardRules.Reader rulesReader = new CardRules.Reader(); + ImageKeys.ADVENTURE_CARD_PICS_DIR=Config.currentConfig.getFilePath(forge.adventure.util.Paths.CUSTOM_CARDS_PICS);// not the cleanest solution + for(File cardFile:new File(getFilePath(forge.adventure.util.Paths.CUSTOM_CARDS)).listFiles()) + { + + FileInputStream fileInputStream; + try { + fileInputStream = new FileInputStream(cardFile); + rulesReader.reset(); + final List lines = FileUtil.readAllLines(new InputStreamReader(fileInputStream, Charset.forName(CardStorageReader.DEFAULT_CHARSET_NAME)), true); + CardRules rules= rulesReader.readCard(lines, com.google.common.io.Files.getNameWithoutExtension(cardFile.getName())); + rules.setCustom(); + PaperCard card=new PaperCard(rules, CardEdition.UNKNOWN.getCode(), CardRarity.Special){ + @Override + public String getImageKey(boolean altState) { + return ImageKeys.ADVENTURECARD_PREFIX + getName(); + } + }; + FModel.getMagicDb().getCommonCards().addCard(card); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + } + } } diff --git a/forge-gui-mobile/src/forge/adventure/util/MapDialog.java b/forge-gui-mobile/src/forge/adventure/util/MapDialog.java index a84f97edb73..4d8206ee860 100644 --- a/forge-gui-mobile/src/forge/adventure/util/MapDialog.java +++ b/forge-gui-mobile/src/forge/adventure/util/MapDialog.java @@ -22,7 +22,7 @@ import forge.util.Localizer; public class MapDialog { private final MapStage stage; - private final Array data; + private Array data; private final int parentID; private final static float WIDTH = 260f; static private final String defaultJSON = "[\n" + @@ -41,12 +41,21 @@ public class MapDialog { public MapDialog(String S, MapStage stage, int parentID) { this.stage = stage; this.parentID = parentID; - if (S.isEmpty()) { - System.err.print("Dialog error. Dialog property is empty.\n"); - this.data = JSONStringLoader.parse(Array.class, DialogData.class, defaultJSON, defaultJSON); - return; + try + { + + if (S.isEmpty()) { + System.err.print("Dialog error. Dialog property is empty.\n"); + this.data = JSONStringLoader.parse(Array.class, DialogData.class, defaultJSON, defaultJSON); + return; + } + this.data = JSONStringLoader.parse(Array.class, DialogData.class, S, defaultJSON); + } + catch (Exception exception) + { + exception.printStackTrace(); + } - this.data = JSONStringLoader.parse(Array.class, DialogData.class, S, defaultJSON); } static AudioClip audio=null; @@ -70,6 +79,7 @@ public class MapDialog { A.setWrap(true); D.getContentTable().add(A).width(WIDTH); //Add() returns a Cell, which is what the width is being applied to. if(dialog.options != null) { + int i=0; for(DialogData option:dialog.options) { if( isConditionOk(option.condition) ) { String name; //Get localized label if present. @@ -80,9 +90,13 @@ public class MapDialog { D.getButtonTable().add(B).width(WIDTH - 10); //The button table also returns a Cell when adding. //TODO: Reducing the space a tiny bit could help. But should be fine as long as there aren't more than 4-5 options. D.getButtonTable().row(); //Add a row. Tried to allow a few per row but it was a bit erratic. + i++; } } - stage.showDialog(); + if(i==0) + stage.hideDialog(); + else + stage.showDialog(); } else { stage.hideDialog(); diff --git a/forge-gui-mobile/src/forge/adventure/util/Paths.java b/forge-gui-mobile/src/forge/adventure/util/Paths.java index 0bfc3fe151c..5207ab20353 100644 --- a/forge-gui-mobile/src/forge/adventure/util/Paths.java +++ b/forge-gui-mobile/src/forge/adventure/util/Paths.java @@ -26,4 +26,6 @@ public class Paths { public static final String EFFECT_SPRINT = "particle_effects/sprint.p"; public static final String EFFECT_FLY = "particle_effects/fly.p"; public static final String EFFECT_TELEPORT = "particle_effects/teleport.p"; + public static final String CUSTOM_CARDS = "custom_cards"; + public static final String CUSTOM_CARDS_PICS = "custom_card_pics"; } diff --git a/forge-gui/res/adventure/Shandalar/custom_card_pics/Akroma presence.jpg b/forge-gui/res/adventure/Shandalar/custom_card_pics/Akroma presence.jpg new file mode 100644 index 00000000000..a60f99214af Binary files /dev/null and b/forge-gui/res/adventure/Shandalar/custom_card_pics/Akroma presence.jpg differ diff --git a/forge-gui/res/adventure/Shandalar/custom_card_pics/Ghalta presence.jpg b/forge-gui/res/adventure/Shandalar/custom_card_pics/Ghalta presence.jpg new file mode 100644 index 00000000000..43df50c248e Binary files /dev/null and b/forge-gui/res/adventure/Shandalar/custom_card_pics/Ghalta presence.jpg differ diff --git a/forge-gui/res/adventure/Shandalar/custom_card_pics/Griselbrand presence.jpg b/forge-gui/res/adventure/Shandalar/custom_card_pics/Griselbrand presence.jpg new file mode 100644 index 00000000000..a8fa0b71d25 Binary files /dev/null and b/forge-gui/res/adventure/Shandalar/custom_card_pics/Griselbrand presence.jpg differ diff --git a/forge-gui/res/adventure/Shandalar/custom_card_pics/Lathliss presence.jpg b/forge-gui/res/adventure/Shandalar/custom_card_pics/Lathliss presence.jpg new file mode 100644 index 00000000000..7f14bd0ef3a Binary files /dev/null and b/forge-gui/res/adventure/Shandalar/custom_card_pics/Lathliss presence.jpg differ diff --git a/forge-gui/res/adventure/Shandalar/custom_card_pics/Lorthos presence.jpg b/forge-gui/res/adventure/Shandalar/custom_card_pics/Lorthos presence.jpg new file mode 100644 index 00000000000..5ed7efae589 Binary files /dev/null and b/forge-gui/res/adventure/Shandalar/custom_card_pics/Lorthos presence.jpg differ diff --git a/forge-gui/res/adventure/Shandalar/custom_cards/akroma_presence.txt b/forge-gui/res/adventure/Shandalar/custom_cards/akroma_presence.txt new file mode 100644 index 00000000000..0a141b0ec9d --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/custom_cards/akroma_presence.txt @@ -0,0 +1,8 @@ +Name:Akroma presence +ManaCost:no cost +Colors:White +Types:Enchantment +K:Hexproof +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ At the beginning of your upkeep you gain 4 life. +SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 4 +Oracle: At the beginning of your upkeep gain 4 life. \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/custom_cards/ghalta_presence.txt b/forge-gui/res/adventure/Shandalar/custom_cards/ghalta_presence.txt new file mode 100644 index 00000000000..2d3c3b52eca --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/custom_cards/ghalta_presence.txt @@ -0,0 +1,8 @@ +Name:Ghalta presence +ManaCost:no cost +Colors:Green +Types:Enchantment +K:Hexproof +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDestroyAll | TriggerDescription$ At the beginning of your upkeep, destroy all artifacts and enchantments you dont control. +SVar:TrigDestroyAll:DB$ DestroyAll | ValidCards$ Artifact.YouDontCtrl,Enchantment.YouDontCtrl,Planeswalker.YouDontCtrl | +Oracle:At the beginning of your upkeep, destroy all artifacts and enchantments you dont control. diff --git a/forge-gui/res/adventure/Shandalar/custom_cards/griselbrand_presence.txt b/forge-gui/res/adventure/Shandalar/custom_cards/griselbrand_presence.txt new file mode 100644 index 00000000000..c20453d3ecf --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/custom_cards/griselbrand_presence.txt @@ -0,0 +1,10 @@ +Name:Griselbrand presence +ManaCost:no cost +Colors:Black +Types:Enchantment +K:Hexproof +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDrain | TriggerDescription$ At the beginning of your end step, each opponent loses 1 life and you gain 1 life. +SVar:TrigDrain:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 1 | SubAbility$ DBGainOneLife +SVar:DBGainOneLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 +DeckHas:Ability$LifeGain +Oracle:At the beginning of your end step, each opponent loses 1 life and you gain 1 life. \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/custom_cards/lathliss_presence.txt b/forge-gui/res/adventure/Shandalar/custom_cards/lathliss_presence.txt new file mode 100644 index 00000000000..6c26cc6bd4d --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/custom_cards/lathliss_presence.txt @@ -0,0 +1,8 @@ +Name:Lathliss presence +ManaCost:no cost +Colors:Red +Types:Enchantment +K:Hexproof +T:Mode$ Phase | Phase$ Upkeep | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ At the beginning of each upkeep, CARDNAME deals 2 damage to every none red creature. +SVar:TrigDamage:DB$ DamageAll | ValidCards$ Creature.nonRed | NumDmg$ 2 +Oracle:At the beginning of each upkeep, Lathliss presence deals 2 damage to every none red creature. \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/custom_cards/lorthos_presence.txt b/forge-gui/res/adventure/Shandalar/custom_cards/lorthos_presence.txt new file mode 100644 index 00000000000..457370d7d3a --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/custom_cards/lorthos_presence.txt @@ -0,0 +1,7 @@ +Name:Lorthos presence +ManaCost:no cost +Colors:Blue +Types:Enchantment +K:Hexproof +S:Mode$ Continuous | Affected$ Player.Opponent | AddKeyword$ UntapAdjust:Land:1 | SVarCompare$ EQ1 | Description$ Opponents can't untap more than one land during their untap steps. +Oracle:Opponents can't untap more than one land during their untap steps. \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/maps/main.tiled-session b/forge-gui/res/adventure/Shandalar/maps/main.tiled-session index 1e961121276..72ab58ee95a 100644 --- a/forge-gui/res/adventure/Shandalar/maps/main.tiled-session +++ b/forge-gui/res/adventure/Shandalar/maps/main.tiled-session @@ -3,7 +3,7 @@ "height": 4300, "width": 2 }, - "activeFile": "tileset/buildings.tsx", + "activeFile": "map/castle_plains_2.tmx", "automapping.whileDrawing": false, "expandedProjectPaths": [ "tileset", @@ -92,32 +92,32 @@ "scale": 1.5, "selectedLayer": 0, "viewCenter": { - "x": 241, - "y": 137.33333333333334 + "x": 359.66666666666663, + "y": 295.33333333333326 } }, "map/castle_plains_3.tmx": { "scale": 2, "selectedLayer": 4, "viewCenter": { - "x": 239.75, - "y": 137 + "x": 240, + "y": 136 } }, "map/catlair_1.tmx": { "scale": 4, "selectedLayer": 0, "viewCenter": { - "x": 198.375, - "y": 183.25 + "x": 240, + "y": 136 } }, "map/catlair_2.tmx": { "scale": 2, "selectedLayer": 0, "viewCenter": { - "x": 157.25, - "y": 117 + "x": 240, + "y": 136 } }, "map/catlair_3.tmx": { @@ -167,8 +167,8 @@ "scale": 2, "selectedLayer": 1, "viewCenter": { - "x": 276.25, - "y": 184.5 + "x": 240, + "y": 136 } }, "map/cave_11.tmx": { @@ -343,8 +343,8 @@ "scale": 1.0548958333333331, "selectedLayer": 0, "viewCenter": { - "x": 239.83410684309274, - "y": 136.50636911227411 + "x": 757.8947368421054, + "y": 362.12106250617165 } }, "map/cave_18.tmx": { @@ -1399,11 +1399,14 @@ } }, "map/crypt.tmx": { + "expandedObjectLayers": [ + 4 + ], "scale": 1.5, "selectedLayer": 4, "viewCenter": { - "x": 243.33333333333337, - "y": 151.33333333333334 + "x": 243.66666666666666, + "y": 150.66666666666669 } }, "map/crypt_2.tmx": { @@ -1712,8 +1715,8 @@ "scale": 1.5, "selectedLayer": 4, "viewCenter": { - "x": 232.33333333333331, - "y": 136 + "x": 289.66666666666663, + "y": 135.33333333333334 } }, "map/graveyard_2.tmx": { @@ -2111,27 +2114,58 @@ } }, "map/main_story/black_castle.tmx": { - "scale": 4, + "expandedObjectLayers": [ + 4 + ], + "scale": 2, + "selectedLayer": 3, + "viewCenter": { + "x": 449, + "y": 440 + } + }, + "map/main_story/black_castle_f1.tmx": { + "expandedObjectLayers": [ + 4 + ], + "scale": 1.7891666666666666, "selectedLayer": 4, "viewCenter": { - "x": 220.375, - "y": 487 + "x": 288.402421984164, + "y": 240.33535165346998 } }, "map/main_story/blue_castle.tmx": { + "expandedObjectLayers": [ + 4 + ], "scale": 3, + "selectedLayer": 5, + "viewCenter": { + "x": 391.5, + "y": 493 + } + }, + "map/main_story/blue_castle_f1.tmx": { + "expandedObjectLayers": [ + 4 + ], + "scale": 1.7891666666666666, "selectedLayer": 4, "viewCenter": { - "x": 214.99999999999997, - "y": 331.16666666666663 + "x": 288.402421984164, + "y": 240.33535165346998 } }, "map/main_story/colorless_castle.tmx": { + "expandedObjectLayers": [ + 4 + ], "scale": 2, "selectedLayer": 5, "viewCenter": { - "x": 242.75, - "y": 339 + "x": 240, + "y": 240 } }, "map/main_story/crypt.tmx": { @@ -2143,11 +2177,22 @@ } }, "map/main_story/final_castle.tmx": { - "scale": 4, + "expandedObjectLayers": [ + 4 + ], + "scale": 1.5, "selectedLayer": 4, "viewCenter": { - "x": 212.125, - "y": 1718.25 + "x": 326.66666666666663, + "y": 1110.6666666666665 + } + }, + "map/main_story/final_castle_f1.tmx": { + "scale": 0.4708333333333333, + "selectedLayer": 0, + "viewCenter": { + "x": 241.06194690265477, + "y": 913.2743362831858 } }, "map/main_story/forest_capital.tmx": { @@ -2162,11 +2207,22 @@ } }, "map/main_story/green_castle.tmx": { - "scale": 3, + "scale": 2, + "selectedLayer": 5, + "viewCenter": { + "x": 359.75, + "y": 536.5 + } + }, + "map/main_story/green_castle_f1.tmx": { + "expandedObjectLayers": [ + 4 + ], + "scale": 1.7891666666666666, "selectedLayer": 4, "viewCenter": { - "x": 246, - "y": 239.66666666666663 + "x": 307.6851420586866, + "y": 240.33535165346998 } }, "map/main_story/island_capital.tmx": { @@ -2203,19 +2259,33 @@ } }, "map/main_story/red_castle.tmx": { + "expandedObjectLayers": [ + 4 + ], "scale": 2, + "selectedLayer": 2, + "viewCenter": { + "x": 265.25, + "y": 576 + } + }, + "map/main_story/red_castle_f1.tmx": { + "expandedObjectLayers": [ + 4 + ], + "scale": 1.5120833333333332, "selectedLayer": 4, "viewCenter": { - "x": 240, - "y": 240 + "x": 296.6106365389915, + "y": 239.4047947092863 } }, "map/main_story/skep.tmx": { "scale": 1.5, "selectedLayer": 4, "viewCenter": { - "x": 240.33333333333334, - "y": 240 + "x": 105.33333333333331, + "y": 239.3333333333333 } }, "map/main_story/spawn.tmx": { @@ -2225,8 +2295,8 @@ "scale": 3, "selectedLayer": 4, "viewCenter": { - "x": 231.83333333333331, - "y": 243.66666666666666 + "x": 240, + "y": 240 } }, "map/main_story/swamp_capital.tmx": { @@ -2257,11 +2327,25 @@ } }, "map/main_story/white_castle.tmx": { - "scale": 4, + "expandedObjectLayers": [ + 4 + ], + "scale": 1.5, + "selectedLayer": 3, + "viewCenter": { + "x": 427.66666666666663, + "y": 637.3333333333333 + } + }, + "map/main_story/white_castle_f1.tmx": { + "expandedObjectLayers": [ + 4 + ], + "scale": 3, "selectedLayer": 4, "viewCenter": { - "x": 240, - "y": 240 + "x": 286.5, + "y": 176 } }, "map/maze_1.tmx": { @@ -2866,28 +2950,38 @@ "map.tileWidth": 16, "map.width": 90, "openFiles": [ - "map/cave_1.tmx", "tileset/main.tsx", "map/cave_17.tmx", "map/cave_2.tmx", "map/cave_3.tmx", - "tileset/buildings.tsx" - ], - "project": "main.tiled-project", - "property.type": "int", - "recentFiles": [ - "map/cave_1.tmx", - "map/cave_1..tmx", + "tileset/buildings.tsx", + "map/barbariancamp_4.tmx", + "map/castle_plains_1.tmx", + "map/castle_plains_2.tmx", + "map/castle_plains_3.tmx", "map/catlair_1.tmx", "map/catlair_2.tmx", - "map/catlair_3.tmx", - "map/main_story/black_castle.tmx", - "map/aerie_1.tmx", - "map/aerie_1B.tmx", - "map/aerie_1C.tmx", + "map/cave_10.tmx", "map/main_story/skep.tmx", "map/main_story/spawn.tmx", - "map/barbariancamp_4.tmx" + "map/main_story/colorless_castle.tmx", + "map/main_story/final_castle.tmx" + ], + "project": "main.tiled-project", + "property.type": "string", + "recentFiles": [ + "map/main_story/green_castle_f1.tmx", + "map/main_story/white_castle_f1.tmx", + "map/main_story/green_castle.tmx", + "map/castle_plains_2.tmx", + "map/castle_plains_3.tmx", + "map/catlair_1.tmx", + "map/catlair_2.tmx", + "map/cave_10.tmx", + "map/main_story/skep.tmx", + "map/main_story/spawn.tmx", + "map/main_story/colorless_castle.tmx", + "map/main_story/final_castle.tmx" ], "resizeMap.removeObjects": true, "textEdit.monospace": true diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/black_castle.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/black_castle.tmx index 3d79575a902..eab33989f10 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/black_castle.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/black_castle.tmx @@ -1,56 +1,179 @@ - + + + + + - - + + - eJztwzEJAAAMA7C+8w/VWyFLIL2kqqqqvjuO1S8b + eJzt2LEJACEQRUFTsyvhqrZeuRrc049MMJksDxUER29tAAAAXOx9subATt+9rXKqP2mOfv369etfn7fz3Tn1zqXuv379Kf1Va/Tr169f///9lf8K1RLPKJn++/snqiFdMg== - + - eJxz5mNgcB7FGNgNiB9iwa40ttcFiLEBp1F7qYpX8DIwLAXiZbwQ+5ZA+ct56ZO+YP6mtT/paS8ozzwB4sdY6EdQex/gkAfR5OYtbGmohhd7usImTm5YwOxt5GdgaCIBN/NTx155AQYGBRKwosCovaP2jto7au/A2LsXaM4+LFgVh/h+KtmLCygJ4JcftZc4DGtLYcOg9hXI3iV41NCizQUKC5C9A9G+Gsr2AgDO0wnp + eJztmEEOwjAMBPOD5AdVBR9tq/Ir4Gtw4YbAbtdxDjNSbpZ3VCWy1VIAAAAAAAAA4BtLLWUVnq329Z+att8s7vePj//+/m6Pdvzcaq7/2VxVn6xc/HNz8c/NVftb59JV7H9pmjnnnUsqf1XevfPc8c7Bp+iejXr/e+eO7L8Y3tzI/qqaCPC310SAv70mAvztNR68+9uvvUtVE7m/9Ua1v3l2vLP/KCL2NwtZb1MF/jZe3r59Qg== - + + + eJzt2LENgDAMRcGwAMoACFGw/05sgiJ24GNy17jMqyw5rQEAfMe1pgsA6tn6M/ee7QAAajmXdAHMK/3/kX4fZvWH+/0o3D7oz9KfM/bP6Ld/ct7ovwHh8AWB + + + - eJzt0cEJACAMBME0YMvWnnd+Ioj3mKlgYasA4N5evwumtB7OJb1LagF4qQHcQwIt + eJztmN0NwyAMhFmASt0lE0RNXjpgF+hP1ukGbSZpogYpRRiuYCBSjHRPtexPpDYHzUGpRiQSiUQikSij+klvUOcjHtsV4j9NyrFa4d8F/6CVugG66y/XFYx/6PK9jHynUvu6F350fo4L/wuMl/kp/MKfry+7QvzIfHD1eoirLcSP5Hd9q1h+9Hylzmcu/mHJSfGY893OH/u/pfJQ/mTNRnmNOWeIh6qLnmtUHyF1qRhTez4zQ+flSNRF+4KKR+qaGLt/U3qSiz+mpvBvgx+9k1w0nYuDP/ddx1WTkz/FQ7jmn3n/8HmHHPy9VR+5J/jqIzU5+REW4f/9zZ4B1PsD5UNq81P5/qmXwu/zb749ezr6Hrm/2z5kzeaa54bNNztD/i2X9w/tbYgN9W+uPeNcodrmW3P6txqL0//UWLH+J+Z+GHu/rP3Wu9X3T+Hn1QdsjEll - + - eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + eJzt17EJACAQA8Bs8Buro+sC1o94B+lTBZIAAAD8bVQyT1Z1NwEAAABu/Hegi/3hBRuEwwT/ - - - + - + [ + { + "type": "gold", + "count": 180, + "addMaxCount": 40 + } +] - + + + [ + { + "type": "gold", + "count": 180, + "addMaxCount": 40 + } +] + + + + + + + + + + [{ + "text":"A gate is blocking the path. I looks like it is open elsewhere", + "options":[ + { "name":"continue" } + ] +}] + + + - + - [ - { - "type": "life", - "count": 2 - } -] - - + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] + + + + + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] + + + + + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/black_castle_f1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/black_castle_f1.tmx new file mode 100644 index 00000000000..b20cfd35a74 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/black_castle_f1.tmx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + eJztwzEJAAAMA7C+8w/VWyFLIL2kqqqqvjuO1S8b + + + + + eJxz5mNgcB7FGNgNiB9iwa40ttcFiLEBp1F7qYpX8DIwLAXiZbwQ+5ZA+ct56ZO+YP6mtT/paS8ozzwB4sdY6EdQex/gkAfR5OYtbGmohhd7usImTm5YwOxt5GdgaCIBN/NTx155AQYGBRKwosCovaP2jto7au/A2LsXaM4+LFgVh/h+KtmLCygJ4JcftZc4DGtLYcOg9hXI3iV41NCizQUKC5C9A9G+Gsr2AgDO0wnp + + + + + + + + eJzt0cEJACAMBME0YMvWnnd+Ioj3mKlgYasA4N5evwumtB7OJb1LagF4qQHcQwIt + + + + + eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + + + + + + + + + + + + + + + + + + [ + { + "type": "life", + "count": 2 + } +] + + + + + + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/blue_castle.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/blue_castle.tmx index c412d20428b..b6694251364 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/blue_castle.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/blue_castle.tmx @@ -1,57 +1,180 @@ - + + + + + - - + + - eJztwzEJAAAMA7C+8w/VWyFLIL2kqqqqvjuO1S8b + eJzt2LEJACEQRUFTsyvhqrZeuRrc049MMJksDxUER29tAAAAXOx9subATt+9rXKqP2mOfv369etfn7fz3Tn1zqXuv379Kf1Va/Tr169f///9lf8K1RLPKJn++/snqiFdMg== - + - eJzjE2Bg4BvFGFgQiNdgwQI0tpcfiLEB3lF7qYqL+RkYCoC4kB9iXz6UX8RPn/QF8zet/UlPe0F5Zj0Qr8NCr4XauxqHPIgmN2/hSkPEAnLDAmZvIzDNNJGAm/mpY688kFYgAStSGPej9o7aO2rvqL3k2rsXSO/DglVxiO+nkr24gBIB+VF7icOwthQ2DGpfgezNx6OGFm0uUFiA7B2I9tVQthcA8ByJ4Q== + eJztmEEOwjAMBPOD5AdVBR9tq/Ir4Gtw4YbAbtdxDjNSbpZ3VCWy1VIAAAAAAAAA4BtLLWUVnq329Z+att8s7vePj//+/m6Pdvzcaq7/2VxVn6xc/HNz8c/NVftb59JV7H9pmjnnnUsqf1XevfPc8c7Bp+iejXr/e+eO7L8Y3tzI/qqaCPC310SAv70mAvztNR68+9uvvUtVE7m/9Ua1v3l2vLP/KCL2NwtZb1MF/jZe3r59Qg== - + + + eJzt2MEJgDAQRNHYgQWIeLD8FCkLNuDFMea9BvJPA5vWAAC+o6/pAoDxbPd27jYUAHjgXNIFMK/0/0f6fZjVH+73Y+D2oj9Lf07tT/Xbn5w3+i9iHwTo + + + - eJzt0rEJADAIAEGrTJD9x8h8TiBoFZC78uuPANjlnlmHjlf8U3Xo8BXwWwKJagMl + eJztmOsNgzAMhLMAJOzCFh2mD4bpEJRpulBbQSSK4vgIMUHCkfyrke9TqO1L2tqYVkNDQ0NDQ0NDMBpnzAuMS4PvdW4ffvvVkViV8p+Cv7PG3IC425HrCu5/2P1rGflOe53rWfjR/jlM/L32T+VXfnF+ri59fUnzI/0hVOscV7UTP5I/9K1S+dH5Ss3nXPzdlJPi8fN9mT/1f0vlofzJnI3yGr+cHA+li841qo4QXWqP137X/LwcCF20Lqj9iG7vwvW7pSZz8adoKv8x+NfeSaT4pe86Ic2c/Fs8RKj/+fePmHeQ4G8W+sg9IaaPaObkR1iU//+3ZQ+g3h8oH1Kan8q3Rm8Lf8y/xc6Mmvvc/X3pQ+ZsoX7+rEa2WO/k/JuU9+fOlmND/VvozHIuTlvCv5VYOf1PiZXqf1Luh6n3y9JvvUd9/1T+vPEBSIXzeQ== - + - eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + eJzt17EJACAQA8Bs8Buro+sC1o94B+lTBZIAAAD8bVQyT1Z1NwEAAABu/Hegi/3hBRuEwwT/ - - + [ { - "type": "life", - "count": 2 - } -] - - + "type": "gold", + "count": 180, + "addMaxCount": 40 + } +] - - + - + [ + { + "type": "gold", + "count": 180, + "addMaxCount": 40 + } +] - + + + + + + + + [{ + "text":"A gate is blocking the path. I looks like it is open elsewhere", + "options":[ + { "name":"continue" } + ] +}] + + + + + + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] + + + + + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] + + + + + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/blue_castle_f1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/blue_castle_f1.tmx new file mode 100644 index 00000000000..06a8a90fc49 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/blue_castle_f1.tmx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + eJztwzEJAAAMA7C+8w/VWyFLIL2kqqqqvjuO1S8b + + + + + eJzjE2Bg4BvFGFgQiNdgwQI0tpcfiLEB3lF7qYqL+RkYCoC4kB9iXz6UX8RPn/QF8zet/UlPe0F5Zj0Qr8NCr4XauxqHPIgmN2/hSkPEAnLDAmZvIzDNNJGAm/mpY688kFYgAStSGPej9o7aO2rvqL3k2rsXSO/DglVxiO+nkr24gBIB+VF7icOwthQ2DGpfgezNx6OGFm0uUFiA7B2I9tVQthcA8ByJ4Q== + + + + + + + + eJzt0rEJADAIAEGrTJD9x8h8TiBoFZC78uuPANjlnlmHjlf8U3Xo8BXwWwKJagMl + + + + + eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + + + + + + + [ + { + "type": "life", + "count": 2 + } +] + + + + + + + + + + + + + + + + + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/final_castle.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/final_castle.tmx index 6ee6d1d39dd..c0fd25282db 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/final_castle.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/final_castle.tmx @@ -3,8 +3,11 @@ + + + - + eJztw8EJAAAMA6H7dn/IvF1EwV1NVVVVVVVVVVVVVVVV1R62fUyd diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/green_castle.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/green_castle.tmx index 4c0a19453a9..4ba260e015a 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/green_castle.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/green_castle.tmx @@ -1,56 +1,179 @@ - + + + + + - - + + - eJztwzEJAAAMA7C+8w/VWyFLIL2kqqqqvjuO1S8b + eJzt2LEJACEQRUFTsyvhqrZeuRrc049MMJksDxUER29tAAAAXOx9subATt+9rXKqP2mOfv369etfn7fz3Tn1zqXuv379Kf1Va/Tr169f///9lf8K1RLPKJn++/snqiFdMg== - + - eJwTFmBgEB7FGFgMiDdiwaI0tlcEiLEBoVF7qYor+BkYSoG4jB9iXwmUX85Pn/QF8zet/UlPe0F5ZgsQb8ZCb4LauwGHPIgmN29hS0NNvNjTFTZxcsMCZm8jMM00kYCb+aljrzyQViABK1IY96P2jto7au+oveTauxdI78OCVXGI76eSvbiAEgH5UXuJw7C2FDYMal+B7C3Bo4YWbS5QWIDsHYj21VC2FwAIdpdw + eJztmEEOwjAMBPOD5AdVBR9tq/Ir4Gtw4YbAbtdxDjNSbpZ3VCWy1VIAAAAAAAAA4BtLLWUVnq329Z+att8s7vePj//+/m6Pdvzcaq7/2VxVn6xc/HNz8c/NVftb59JV7H9pmjnnnUsqf1XevfPc8c7Bp+iejXr/e+eO7L8Y3tzI/qqaCPC310SAv70mAvztNR68+9uvvUtVE7m/9Ua1v3l2vLP/KCL2NwtZb1MF/jZe3r59Qg== - + + + eJzt2MEJgDAQRNHYgQWIeLB/SIeyYANeHGPeayD/NLBpDQDgO/qaLgAYz3Zv525DAYAHziVdAPNK/3+k34dZ/eF+PwZuL/qz9OfU/lS//cl5o/8CUIoE9w== + + + - eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + eJztmH0OwiAMxTnBNo3uIu4WXsePHUt3FS+kiyOZhNI3RsFkJelfkr5fhm0fdJUxnYaGhoaGhoaGYLSNMU8wzjt877HJw3/46EisvfJvgr+vjbkCcau/XBdw/73OX8vIOeX6rlvhR/vnMPE/tH8qv/KL83N1aetLmh/pD75a57j2mfiR/L6ziuVH5ys1n1Px91NOisfOdzd/7P+WykP5kzkb5TXGnBwPpYvONaqOEF1qj9UeZyY3L19V/LmH9nO6cza3ftfUZCr+GE3l/w/+pXcSKX7pu45PMyX/Gg/h63/2/SPkHST4W0cfuSeE9BHNlPwIi/L//ub2AOr9gfIhpfmpfEv01vCH/Fvom1Fzn7u/DwvOcu7fQr2T829S3p/7thwb6t9c75Z6hbSl/FuJldL/lFix/ifmfhh7vyz91mvP9CSso/xl+d+e+Pwi - + - eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + eJzt17EJACAQA8Bs8Buro+sC1o94B+lTBZIAAAD8bVQyT1Z1NwEAAABu/Hegi/3hBRuEwwT/ - - - + + + [ + { + "type": "gold", + "count": 180, + "addMaxCount": 40 + } +] + + + + + [ + { + "type": "gold", + "count": 180, + "addMaxCount": 40 + } +] + + + + + + + + + + [{ + "text":"A gate is blocking the path. I looks like it is open elsewhere", + "options":[ + { "name":"continue" } + ] +}] + + + - + - + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] - + - [ - { - "type": "life", - "count": 2 - } -] - - + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] + + + + + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/green_castle_f1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/green_castle_f1.tmx new file mode 100644 index 00000000000..9a22f8f7ee9 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/green_castle_f1.tmx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + eJztwzEJAAAMA7C+8w/VWyFLIL2kqqqqvjuO1S8b + + + + + eJwTFmBgEB7FGFgMiDdiwaI0tlcEiLEBoVF7qYor+BkYSoG4jB9iXwmUX85Pn/QF8zet/UlPe0F5ZgsQb8ZCb4LauwGHPIgmN29hS0NNvNjTFTZxcsMCZm8jMM00kYCb+aljrzyQViABK1IY96P2jto7au+oveTauxdI78OCVXGI76eSvbiAEgH5UXuJw7C2FDYMal+B7C3Bo4YWbS5QWIDsHYj21VC2FwAIdpdw + + + + + + + + eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + + + + + eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + + + + + + + + + + + + + + + + + + [ + { + "type": "life", + "count": 2 + } +] + + + + + + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/red_castle.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/red_castle.tmx index 56ff2c4a7d0..c28d295a9fe 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/red_castle.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/red_castle.tmx @@ -1,56 +1,179 @@ - + + + + + - - + + - eJztwzEJAAAMA7C+8w/VWyFLIL2kqqqqvjuO1S8b + eJzt2LEJACEQRUFTsyvhqrZeuRrc049MMJksDxUER29tAAAAXOx9subATt+9rXKqP2mOfv369etfn7fz3Tn1zqXuv379Kf1Va/Tr169f///9lf8K1RLPKJn++/snqiFdMg== - + - eJwz4WNgMBnFGNgciC9hwWY0ttcUiLEB41F7qYpn8jIwTAPi6bwQ+6ZC+TN46ZO+YP6mtT/paS8oz1wF4itY6MtQey/ikAfR5OYtbGnoMzv2dIVNnNywgNnbyM/A0EQCbuanjr3yAgwMCiRgRYFRe0ftHbV31N6BsXcv0Jx9WLAqDvH9VLIXF1ASwC8/ai9xGNaWwoZB7SuQvVPxqKFFmwsUFiB7B6J9NZTtBQBeSeVp + eJztmEEOwjAMBPOD5AdVBR9tq/Ir4Gtw4YbAbtdxDjNSbpZ3VCWy1VIAAAAAAAAA4BtLLWUVnq329Z+att8s7vePj//+/m6Pdvzcaq7/2VxVn6xc/HNz8c/NVftb59JV7H9pmjnnnUsqf1XevfPc8c7Bp+iejXr/e+eO7L8Y3tzI/qqaCPC310SAv70mAvztNR68+9uvvUtVE7m/9Ua1v3l2vLP/KCL2NwtZb1MF/jZe3r59Qg== - + + + eJzt2LENgDAMRcGwAMoACFGw/zBMhCJ24GNy17jMqyw5rQEAfMe1pgsA6tn6M/ee7QAAajmXdAHMK/3/kX4fZvWH+/0o3D7oz9KfM/bP6Ld/ct7ovwEWvgVU + + + - eJzt0jERACAMBMFUIAH/GjGAhXyRhtktr74qgL+clXXouDvr0OErJviKxANqBgYX + eJztmH0OgyAMxbmAS3YWnR5i59uHx3JeaJpJ4gilT6RgYkneX2voL7i2D5qLMY1KpVKpVCqVoLpJH1D3Kx7bZuK/TZJYtfKfgr+vjHkCelU/rgcY/67y1zLynXKd61n40f45LvwDGK/9U/mVX64u20z8SH/w1TrHVWfiR/b3fatYfnS+UvM5FX+/7Enx2Pnu7h/7v6X2ofzJmo3yGvOeHA+VF51rVB0heakYm3uemdy8HIm8aF1Q8UheG+PW756aTMUfk1P5j8G/9U4ixS991/HlTMm/x0P4+p99/wh5Bwn+zsmP3BNC+ZGcKfkRFuX//83tAdT7A+VDSvNT+23Jt4c/5N9CZ0bNfe7+7vqQNZuvn1u2UO/k/JuU9+fOlmND/ZvvzFIuLreEfyuxUvqfEivW/8TcD2Pvl6Xfeo/6/qn8afUFIW0wJA== - + - eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + eJzt17EJACAQA8Bs8Buro+sC1o94B+lTBZIAAAD8bVQyT1Z1NwEAAABu/Hegi/3hBRuEwwT/ - - - + + + [ + { + "type": "gold", + "count": 180, + "addMaxCount": 40 + } +] + + + + + [ + { + "type": "gold", + "count": 180, + "addMaxCount": 40 + } +] + + + + + + + + + + [{ + "text":"A gate is blocking the path. I looks like it is open elsewhere", + "options":[ + { "name":"continue" } + ] +}] + + + - + - + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] - + - [ - { - "type": "life", - "count": 2 - } -] - - + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] + + + + + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/red_castle_f1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/red_castle_f1.tmx new file mode 100644 index 00000000000..1367226c9ca --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/red_castle_f1.tmx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + eJztwzEJAAAMA7C+8w/VWyFLIL2kqqqqvjuO1S8b + + + + + eJwz4WNgMBnFGNgciC9hwWY0ttcUiLEB41F7qYpn8jIwTAPi6bwQ+6ZC+TN46ZO+YP6mtT/paS8oz1wF4itY6MtQey/ikAfR5OYtbGnoMzv2dIVNnNywgNnbyM/A0EQCbuanjr3yAgwMCiRgRYFRe0ftHbV31N6BsXcv0Jx9WLAqDvH9VLIXF1ASwC8/ai9xGNaWwoZB7SuQvVPxqKFFmwsUFiB7B6J9NZTtBQBeSeVp + + + + + + + + eJzt0jERACAMBMFUIAH/GjGAhXyRhtktr74qgL+clXXouDvr0OErJviKxANqBgYX + + + + + eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + + + + + + + + + + + + + + + + + + [ + { + "type": "life", + "count": 2 + } +] + + + + + + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/white_castle.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/white_castle.tmx index 93ce68ae254..3473ba1bd37 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/white_castle.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/white_castle.tmx @@ -1,56 +1,179 @@ - + + + + + - - + + - eJztwzEJAAAMA7C+8w/VWyFLIL2kqqqqvjuO1S8b + eJzt2LEJACEQRUFTsyvhqrZeuRrc049MMJksDxUER29tAAAAXOx9subATt+9rXKqP2mOfv369etfn7fz3Tn1zqXuv379Kf1Va/Tr169f///9lf8K1RLPKJn++/snqiFdMg== - + - eJyz5GNgsBzFGNgGiK9jwdY0ttcKiLEBi1F7qYrn8TIwzAbiObwQ+2ZB+XN56ZO+YP6mtT/paS8oz9wC4ptY6BtQe6/hkAfR5OYtbGkolB17usImTm5YwOxt5GdgaCIBN/NTx155AQYGBRKwosCovaP2jto7au/A2LsXaM4+LFgVh/h+KtmLCygJ4JcftZc4DGtLYcOg9hXI3ll41NCizQUKC5C9A9G+Gsr2AgDj7PCe + eJztmEEOwjAMBPOD5AdVBR9tq/Ir4Gtw4YbAbtdxDjNSbpZ3VCWy1VIAAAAAAAAA4BtLLWUVnq329Z+att8s7vePj//+/m6Pdvzcaq7/2VxVn6xc/HNz8c/NVftb59JV7H9pmjnnnUsqf1XevfPc8c7Bp+iejXr/e+eO7L8Y3tzI/qqaCPC310SAv70mAvztNR68+9uvvUtVE7m/9Ua1v3l2vLP/KCL2NwtZb1MF/jZe3r59Qg== - + + + eJzt2LENgDAMRcGwAMoACFGw/zqsgyJ24GNy17jMqyw5rQEAfMe1pgsA6tn6M/ee7QAAajmXdAHMK/3/kX4fZvWH+/0o3D7oz9KfM/bP6Ld/ct7ovwEFKQVj + + + - eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + eJztmH0KgzAMxb2Awu4iTKY32A334aUGm8eZMguuNM2zNq1gCu+vleRHXdKX1lVR1CqVSqVSqVSC6kZ9QF1P+N42Ef9llMRqlP8Q/H1ZFHdAj/LHdQP3P8v0tYx8p1TnehT+c4X1w2Hmf4P7tX8qv/KHi/M1bSJ+xF+5ap3jahLxI/Fd3yqUH71fqfs5Fn8/x6R4zP1uxw/931JxKH+yZKO8xhST46HyonMBVUdIXmqPyT3dmdx9+SLyonVB7efyLtns+t1Sk7H4Q3Iq/z74184kUvzSs44rZ0z+LR7C1f/M+4fPO0jwd1Z+ZE7w5UdyxuRHWJT//ze7B1DvD5QPyc1PxVuTbwu/z7/5zoy697n53fYhSzZXPzdsvt7J+Tcp78+dLceG+rdBmJ/LLeHfcqyY/ifHCvU/IfNh6HyZ+613r++fyh9XX36YOI8= - + - eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + eJzt17EJACAQA8Bs8Buro+sC1o94B+lTBZIAAAD8bVQyT1Z1NwEAAABu/Hegi/3hBRuEwwT/ - - - + - + [ + { + "type": "gold", + "count": 180, + "addMaxCount": 40 + } +] - + + + [ + { + "type": "gold", + "count": 180, + "addMaxCount": 40 + } +] + + + + + + + + + + [{ + "text":"A gate is blocking the path. I looks like it is open elsewhere", + "options":[ + { "name":"continue" } + ] +}] + + + - + - [ - { - "type": "life", - "count": 2 - } -] - - + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] + + + + + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] + + + + + [ + { + "text":"Hmm a big switch is embedded into the wall", + "options":[ + { + "text":"You hear some loud sounds from the center", + "action":[{"deleteMapObject":-1},{"advanceMapFlag":"gate"}], + "name":"flip the switch" + "options":[{ + "condition":[{"getMapFlag":{"key":"gate","op":">=","val":3}}], + "action":[{"deleteMapObject":55}], + "name":"ok" }] + }, + { "name":"go away" } + ] + } + +] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/white_castle_f1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/white_castle_f1.tmx new file mode 100644 index 00000000000..4bb8402a4d7 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/white_castle_f1.tmx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + eJztwzEJAAAMA7C+8w/VWyFLIL2kqqqqvjuO1S8b + + + + + eJyz5GNgsBzFGNgGiK9jwdY0ttcKiLEBi1F7qYrn8TIwzAbiObwQ+2ZB+XN56ZO+YP6mtT/paS8oz9wC4ptY6BtQe6/hkAfR5OYtbGkolB17usImTm5YwOxt5GdgaCIBN/NTx155AQYGBRKwosCovaP2jto7au/A2LsXaM4+LFgVh/h+KtmLCygJ4JcftZc4DGtLYcOg9hXI3ll41NCizQUKC5C9A9G+Gsr2AgDj7PCe + + + + + + + + eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + + + + + eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ== + + + + + + + + + + + + + + + + + + [ + { + "type": "life", + "count": 2 + } +] + + + + + + diff --git a/forge-gui/res/adventure/Shandalar/maps/tileset/main.png b/forge-gui/res/adventure/Shandalar/maps/tileset/main.png index 75fbdd818a4..40283ac7ea5 100644 Binary files a/forge-gui/res/adventure/Shandalar/maps/tileset/main.png and b/forge-gui/res/adventure/Shandalar/maps/tileset/main.png differ diff --git a/forge-gui/res/adventure/Shandalar/world/items.json b/forge-gui/res/adventure/Shandalar/world/items.json index 11c2f573307..1acdf7d9dd8 100644 --- a/forge-gui/res/adventure/Shandalar/world/items.json +++ b/forge-gui/res/adventure/Shandalar/world/items.json @@ -241,7 +241,7 @@ "startBattleWithCard": [ "Blightsteel Colossus", "Urabrask the Hidden", - "Unnatural Growth" + "Avatar of Slaughter" ] } },