expanded teleport actor on maps added capitals

This commit is contained in:
Grimm
2022-08-17 16:57:56 +02:00
parent acaec64078
commit 745e9bc3ee
30 changed files with 2109 additions and 1814 deletions

View File

@@ -1,6 +1,7 @@
package forge.adventure.editor;
import forge.adventure.data.PointOfInterestData;
import forge.adventure.util.Config;
import javax.swing.*;
@@ -16,6 +17,7 @@ public class PointOfInterestEdit extends JComponent {
JTextField sprite = new JTextField();
FilePicker map = new FilePicker(new String[]{"tmx"});
JSpinner radiusFactor= new JSpinner(new SpinnerNumberModel(0.0f, 0.0f, 2.0f, 0.1f));
SwingAtlasPreview preview=new SwingAtlasPreview(256,2000);
private boolean updating=false;
@@ -34,6 +36,7 @@ public class PointOfInterestEdit extends JComponent {
parameters.add("Sprite:",sprite);
parameters.add("Map:",map);
parameters.add("Radius factor:",radiusFactor);
parameters.add(preview);
add(parameters);
@@ -80,6 +83,7 @@ public class PointOfInterestEdit extends JComponent {
map.getEdit().setText(currentData.map);
radiusFactor.setValue(currentData.radiusFactor);
preview.setSpritePath(currentData.spriteAtlas,currentData.sprite);
updating=false;
}
}

View File

@@ -18,6 +18,7 @@ public class PointOfInterestEditor extends JComponent {
JList<PointOfInterestData> list = new JList<>(model);
JToolBar toolBar = new JToolBar("toolbar");
PointOfInterestEdit edit=new PointOfInterestEdit();
static HashMap<String,SwingAtlas> atlas=new HashMap<>();

View File

@@ -6,6 +6,7 @@ import org.apache.commons.lang3.tuple.Pair;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -17,9 +18,13 @@ public class SwingAtlasPreview extends Box {
private String sprite="";
private String spriteName="";
Timer timer;
public SwingAtlasPreview() {
public SwingAtlasPreview()
{
this(32,200);
}
public SwingAtlasPreview(int imageSize,int timeDelay) {
super(BoxLayout.Y_AXIS);
timer = new Timer(200, new AbstractAction() {
timer = new Timer(timeDelay, new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
counter++;
@@ -28,7 +33,9 @@ public class SwingAtlasPreview extends Box {
}
}
});
this.imageSize=imageSize;
}
static Map<String,Map<Integer,SwingAtlas>> cache=new HashMap<>();
public SwingAtlasPreview(int size) {
this();
imageSize=size;
@@ -47,7 +54,16 @@ public class SwingAtlasPreview extends Box {
labels.clear();
this.sprite=sprite;
this.spriteName=name;
SwingAtlas atlas=new SwingAtlas(Config.instance().getFile(sprite),imageSize);
SwingAtlas atlas;
if(!cache.containsKey(sprite))
{
cache.put(sprite,new HashMap<>() );
}
if(!cache.get(sprite).containsKey(imageSize))
{
cache.get(sprite).put(imageSize,new SwingAtlas(Config.instance().getFile(sprite),imageSize) );
}
atlas=cache.get(sprite).get(imageSize);
int maxCount=0;
for(Map.Entry<String, ArrayList<ImageIcon>> element:atlas.getImages().entrySet())
{

View File

@@ -37,6 +37,7 @@ public class CharacterSprite extends MapActor {
}
protected void load(String path) {
if(path==null||path.isEmpty())return;
TextureAtlas atlas = Config.instance().getAtlas(path);
/*
for (Texture texture : new ObjectSet.ObjectSetIterator<>( atlas.getTextures()))

View File

@@ -8,17 +8,23 @@ import forge.adventure.util.MapDialog;
/**
* Map actor that will show a text message with optional choices
*/
public class DialogActor extends MapActor {
public class DialogActor extends CharacterSprite {
private final MapStage stage;
private final TextureRegion textureRegion;
private final MapDialog dialog;
public DialogActor(MapStage stage, int id, String S, TextureRegion textureRegion) {
super(id);
super(id,"");
this.stage = stage;
dialog = new MapDialog(S, stage, id);
this.textureRegion = textureRegion;
}
public DialogActor(MapStage stage, int id, String S, String sprite) {
super(id,sprite);
this.stage = stage;
dialog = new MapDialog(S, stage, id);
this.textureRegion = null;
}
@Override
public void onPlayerCollide() {
@@ -29,8 +35,10 @@ public class DialogActor extends MapActor {
@Override
public void draw(Batch batch, float alpha) {
batch.draw(textureRegion, getX(), getY(), getWidth(), getHeight());
super.draw(batch, alpha);
if(textureRegion!=null)
batch.draw(textureRegion, getX(), getY(), getWidth(), getHeight());
else
super.draw(batch, alpha);
}
}

View File

@@ -1,5 +1,6 @@
package forge.adventure.character;
import com.badlogic.gdx.math.Vector2;
import forge.adventure.scene.SceneType;
import forge.adventure.scene.TileMapScene;
import forge.adventure.stage.MapStage;
@@ -12,29 +13,28 @@ public class EntryActor extends MapActor{
private final MapStage stage;
String targetMap;
public EntryActor(MapStage stage,String sourceMap, int id,String targetMap,float x,float y,float w,float h,String direction)
public EntryActor(MapStage stage, int id,String targetMap,float x,float y,float w,float h,String direction,boolean spawnPlayerThere)
{
super(id);
this.stage = stage;
this.targetMap = targetMap;
if((targetMap==null||targetMap.isEmpty()&&sourceMap.isEmpty())||//if target is null and "from world"
!sourceMap.isEmpty()&&targetMap.equals(sourceMap)) //or if source is this target
if(spawnPlayerThere) //or if source is this target
{
switch(direction)
{
case "up":
stage.GetPlayer().setPosition(x,y+h);
stage.GetPlayer().setPosition(x+w/2-stage.GetPlayer().getWidth()/2,y+h);
break;
case "down":
stage.GetPlayer().setPosition(x,y-stage.GetPlayer().getHeight());
stage.GetPlayer().setPosition(x+w/2-stage.GetPlayer().getWidth()/2,y-stage.GetPlayer().getHeight());
break;
case "right":
stage.GetPlayer().setPosition(x-stage.GetPlayer().getWidth(),y);
stage.GetPlayer().setPosition(x-stage.GetPlayer().getWidth(),y+h/2-stage.GetPlayer().getHeight()/2);
break;
case "left":
stage.GetPlayer().setPosition(x+w,y);
stage.GetPlayer().setPosition(x+w,y+h/2-stage.GetPlayer().getHeight()/2);
break;
}

View File

@@ -23,6 +23,13 @@ public class ItemData {
public String iconName;
public boolean questItem=false;
public int cost=1000;
public boolean usableOnMap;
public boolean usableInPoi;
public String commandOnUse;
public int manaNeeded;
public ItemData()
{

View File

@@ -19,6 +19,10 @@ public class PointOfInterestData {
public String sprite;
public String map;
public float radiusFactor;
public float offsetX=0f;
public float offsetY=0f;
public boolean markOnMap;

View File

@@ -46,6 +46,7 @@ public class GameScene extends HudScene {
Forge.clearTransitionScreen();
Forge.clearCurrentScreen();
super.enter();
WorldStage.getInstance().handlePointsOfInterestCollision();
}
}

View File

@@ -78,6 +78,7 @@ public class MapStage extends GameStage {
//These maps are defined as embedded properties within the Tiled maps.
private EffectData effect; //"Dungeon Effect": Character Effect applied to all adversaries within the map.
private boolean preventEscape = false; //Prevents player from escaping the dungeon by any means that aren't an exit.
private boolean foundPlayerSpawn;
public boolean getDialogOnlyInput() {
@@ -343,6 +344,7 @@ public class MapStage extends GameStage {
GetPlayer().stop();
spriteLayer = null;
foundPlayerSpawn=false;
for (MapLayer layer : map.getLayers()) {
if (layer.getProperties().containsKey("spriteLayer") && layer.getProperties().get("spriteLayer", boolean.class)) {
spriteLayer = layer;
@@ -404,7 +406,18 @@ public class MapStage extends GameStage {
float y = Float.parseFloat(prop.get("y").toString());
float w = Float.parseFloat(prop.get("width").toString());
float h = Float.parseFloat(prop.get("height").toString());
EntryActor entry = new EntryActor(this, sourceMap, id, prop.get("teleport").toString(), x, y, w, h, prop.get("direction").toString());
String targetMap=prop.get("teleport").toString();
boolean spawnPlayerThere=(targetMap==null||targetMap.isEmpty()&&sourceMap.isEmpty())||//if target is null and "from world"
!sourceMap.isEmpty()&&targetMap.equals(sourceMap);
if(foundPlayerSpawn)
spawnPlayerThere=false;
if((prop.containsKey("spawn")&&prop.get("spawn").toString()=="true")&&spawnPlayerThere)
{
foundPlayerSpawn=true;
spawnPlayerThere=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);
addMapActor(obj, entry);
break;
case "reward":
@@ -486,7 +499,11 @@ public class MapStage extends GameStage {
case "dialog":
if(obj instanceof TiledMapTileMapObject) {
TiledMapTileMapObject tiledObj = (TiledMapTileMapObject) obj;
DialogActor dialog = new DialogActor(this, id, prop.get("dialog").toString(), tiledObj.getTextureRegion());
DialogActor dialog;
if(prop.containsKey("sprite"))
dialog= new DialogActor(this, id, prop.get("dialog").toString(), prop.get("sprite").toString());
else
dialog= new DialogActor(this, id, prop.get("dialog").toString(), tiledObj.getTextureRegion());
addMapActor(obj, dialog);
}
break;

View File

@@ -81,7 +81,7 @@ public class WorldBackground extends Actor {
}
private void loadChunk(int x, int y) {
public void loadChunk(int x, int y) {
if (chunksSprites[x][y] == null)
chunksSprites[x][y] = MapSprite.GetMapSprites(x, y);

View File

@@ -1,6 +1,7 @@
package forge.adventure.stage;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.math.GridPoint2;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Actor;
@@ -176,7 +177,7 @@ public class WorldStage extends GameStage implements SaveFileContent {
}
}
private void handlePointsOfInterestCollision() {
public void handlePointsOfInterestCollision() {
for (Actor actor : foregroundSprites.getChildren()) {
if (actor.getClass() == PointOfInterestMapSprite.class) {
@@ -286,6 +287,9 @@ public class WorldStage extends GameStage implements SaveFileContent {
"\nEnemy will use Preconstructed or Random Generated Decks. Genetic AI Decks will be available to some enemies on Hard difficulty.", WorldSave.getCurrentSave().getPlayer().getSelectedDeck());
WorldSave.getCurrentSave().getPlayer().clearAnnounceFantasy();
}
GridPoint2 pos = background.translateFromWorldToChunk(player.getX(), player.getY());
background.loadChunk(pos.x,pos.y);
handlePointsOfInterestCollision();
}
@Override

View File

@@ -426,7 +426,7 @@ public class World implements Disposable, SaveFileContent {
List<Rectangle> otherPoints = new ArrayList<>();
clearTerrain((int) (data.width * data.playerStartPosX), (int) (data.height * data.playerStartPosY), 10);
otherPoints.add(new Rectangle(((float) data.width * data.playerStartPosX * (float) data.tileSize) - data.tileSize * 3, ((float) data.height * data.playerStartPosY * data.tileSize) - data.tileSize * 3, data.tileSize * 6, data.tileSize * 6));
//otherPoints.add(new Rectangle(((float) data.width * data.playerStartPosX * (float) data.tileSize) - data.tileSize * 3, ((float) data.height * data.playerStartPosY * data.tileSize) - data.tileSize * 3, data.tileSize * 6, data.tileSize * 6));
int biomeIndex2 = -1;
for (BiomeData biome : data.GetBiomes()) {
biomeIndex2++;
@@ -443,6 +443,9 @@ public class World implements Disposable, SaveFileContent {
y *= (biome.height * height / 2);
y += (height - (biome.startPointY * height));
y += (poi.offsetY * (biome.height * height));
x += (poi.offsetX * (biome.width * width));
if ((int) x < 0 || (int) y <= 0 || (int) y >= height || (int) x >= width || biomeIndex2 != highestBiome(getBiome((int) x, (int) y))) {
continue;
}
@@ -492,8 +495,16 @@ public class World implements Disposable, SaveFileContent {
Color color = biome.GetColor();
pix.setColor(color.r, 0.1f, 0.1f, 1);
pix.fillRectangle((int) x / data.tileSize - 3, height - (int) y / data.tileSize - 3, 6, 6);
if(poi.markOnMap)
{
pix.setColor(0.1f, 0.1f, 1f, 1);
pix.fillCircle((int) x / data.tileSize - 3, height - (int) y / data.tileSize - 3, 10);
}
else
{
pix.setColor(1, 0.1f, 0.1f, 1);
pix.fillCircle((int) x / data.tileSize - 3, height - (int) y / data.tileSize - 3, 3);
}
if (poi.type != null && poi.type.equals("town")) {

View File

@@ -3,13 +3,13 @@
"height": 4300,
"width": 2
},
"activeFile": "map/main_story/skep.tmx",
"activeFile": "map/main_story/spawn.tmx",
"automapping.whileDrawing": false,
"expandedProjectPaths": [
"map/main_story",
"map",
"obj",
"tileset"
"tileset",
"obj"
],
"file.lastUsedOpenFilter": "All Files (*)",
"fileStates": {
@@ -1428,14 +1428,11 @@
}
},
"map/debug_map.tmx": {
"expandedObjectLayers": [
4
],
"scale": 3,
"selectedLayer": 4,
"viewCenter": {
"x": 179.5,
"y": 274.3333333333333
"x": 221.66666666666663,
"y": 302.83333333333337
}
},
"map/djinnpalace_1.tmx": {
@@ -2095,23 +2092,23 @@
"scale": 2,
"selectedLayer": 4,
"viewCenter": {
"x": 235.25,
"y": 208.5
"x": 235.5,
"y": 208.75
}
},
"map/main_story/blue_castle.tmx": {
"scale": 3,
"selectedLayer": 4,
"viewCenter": {
"x": 215.16666666666666,
"y": 331.3333333333333
"x": 214.99999999999997,
"y": 331.16666666666663
}
},
"map/main_story/colorless_castle.tmx": {
"scale": 2,
"selectedLayer": 1,
"viewCenter": {
"x": 242.75,
"x": 243,
"y": 339.25
}
},
@@ -2124,41 +2121,83 @@
}
},
"map/main_story/final_castle.tmx": {
"expandedObjectLayers": [
4
],
"scale": 1.5,
"selectedLayer": 4,
"viewCenter": {
"x": 273,
"y": 250.66666666666669
"x": 240,
"y": 912
}
},
"map/main_story/forest_capital.tmx": {
"scale": 1,
"selectedLayer": 0,
"viewCenter": {
"x": 240,
"y": 136
}
},
"map/main_story/green_castle.tmx": {
"scale": 3,
"selectedLayer": 4,
"viewCenter": {
"x": 218.5,
"y": 308
"x": 232,
"y": 239.66666666666666
}
},
"map/main_story/island_capital.tmx": {
"scale": 1,
"selectedLayer": 0,
"viewCenter": {
"x": 240,
"y": 136
}
},
"map/main_story/mountain_capital.tmx": {
"scale": 1,
"selectedLayer": 0,
"viewCenter": {
"x": 240,
"y": 136
}
},
"map/main_story/plains_capital.tmx": {
"scale": 8,
"selectedLayer": 5,
"viewCenter": {
"x": 320,
"y": 320
}
},
"map/main_story/red_castle.tmx": {
"scale": 2,
"selectedLayer": 4,
"viewCenter": {
"x": 272.25,
"y": 328
"x": 232,
"y": 240
}
},
"map/main_story/skep.tmx": {
"expandedObjectLayers": [
4
],
"scale": 1.5,
"selectedLayer": 4,
"viewCenter": {
"x": 232.33333333333331,
"y": 233.3333333333333
"x": 358.6666666666667,
"y": 348.3333333333333
}
},
"map/main_story/spawn.tmx": {
"scale": 1.5,
"selectedLayer": 4,
"viewCenter": {
"x": 840.6666666666667,
"y": 323.6666666666667
}
},
"map/main_story/swamp_capital.tmx": {
"scale": 1,
"selectedLayer": 0,
"viewCenter": {
"x": 240,
"y": 136
}
},
"map/main_story/unbenannt.tmx": {
@@ -2169,6 +2208,14 @@
"y": 480.34259430595574
}
},
"map/main_story/white_capital.tmx": {
"scale": 1,
"selectedLayer": 0,
"viewCenter": {
"x": 232,
"y": 240
}
},
"map/main_story/white_castle.tmx": {
"scale": 2,
"selectedLayer": 4,
@@ -2707,14 +2754,11 @@
}
},
"map/waste_town.tmx": {
"expandedObjectLayers": [
4
],
"scale": 1.5,
"selectedLayer": 4,
"viewCenter": {
"x": 214.33333333333331,
"y": 298.6666666666667
"x": 214.66666666666663,
"y": 299
}
},
"map/waste_town_2.tmx": {
@@ -2758,12 +2802,12 @@
}
},
"tileset/buildings.tsx": {
"scaleInDock": 1.5,
"scaleInDock": 3,
"scaleInEditor": 2
},
"tileset/main.tsx": {
"dynamicWrapping": false,
"scaleInDock": 1,
"scaleInDock": 3,
"scaleInEditor": 2
}
},
@@ -2774,25 +2818,32 @@
"map.tileWidth": 16,
"map.width": 90,
"openFiles": [
"map/waste_town.tmx",
"map/main_story/skep.tmx",
"map/debug_map.tmx"
"map/main_story/green_castle.tmx",
"map/main_story/red_castle.tmx",
"map/main_story/white_capital.tmx",
"map/main_story/forest_capital.tmx",
"map/main_story/swamp_capital.tmx",
"map/main_story/mountain_capital.tmx",
"map/main_story/island_capital.tmx",
"map/main_story/plains_capital.tmx",
"map/main_story/spawn.tmx",
"map/main_story/final_castle.tmx"
],
"project": "main.tiled-project",
"property.type": "string",
"recentFiles": [
"map/magetower_10.tmx",
"map/magetower_12.tmx",
"map/magetower_11.tmx",
"map/main_story/blue_castle.tmx",
"map/waste_town.tmx",
"map/debug_map.tmx",
"map/main_story/green_castle.tmx",
"map/main_story/red_castle.tmx",
"map/main_story/white_capital.tmx",
"map/main_story/forest_capital.tmx",
"map/main_story/swamp_capital.tmx",
"map/main_story/mountain_capital.tmx",
"map/main_story/island_capital.tmx",
"map/main_story/plains_capital.tmx",
"map/main_story/final_castle.tmx",
"map/main_story/spawn.tmx",
"map/main_story/skep.tmx",
"map/waste_town_3.tmx",
"map/waste_town_2.tmx",
"map/snowabbey_1.tmx",
"map/snowabbey_2.tmx",
"map/snowabbey_3.tmx"
"map/debug_map.tmx"
],
"resizeMap.removeObjects": true,
"textEdit.monospace": true

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<template>
<tileset firstgid="1" source="../tileset/buildings.tsx"/>
<object name="Inn" type="spellsmith" gid="1391" width="16" height="16"/>
<object name="Spellsmith" type="spellsmith" gid="1391" width="16" height="16"/>
</template>

View File

@@ -4,12 +4,6 @@ size: 448,800
format: RGBA8888
filter: Nearest,Nearest
repeat: none
IslandTown
xy: 144, 0
size: 48, 48
IslandTown
xy: 144, 0
size: 48, 48
IslandTown
xy: 144, 0
size: 48, 48
@@ -19,33 +13,33 @@ MountainTown
SwampTown
xy: 0, 0
size: 48, 48
SwampTown
xy: 97, 336
size: 32, 32
ForestTown
xy: 352, 496
size: 32, 32
ForestTown
xy: 384, 496
size: 32, 32
ForestTown
xy: 416, 496
size: 32, 32
ForestTown
xy: 0, 48
size: 32, 32
PlainsTown
xy: 96, 0
size: 48, 48
PlainsTown
xy: 160, 272
size: 32, 32
WasteTown
xy: 272, 128
size: 48, 48
WasteTown
xy: 320, 128
size: 48, 48
IslandCapital
xy: 128, 592
size: 64, 64
MountainCapital
xy: 128, 720
size: 64, 64
SwampCapital
xy: 128, 464
size: 64, 64
ForestCapital
xy: 64, 656
size: 64, 64
PlainsCapital
xy: 0, 464
size: 64, 64
Spawn
xy: 304, 288
size: 16, 16
Gate
xy: 384, 128
size: 64, 48

Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 KiB

After

Width:  |  Height:  |  Size: 228 KiB

View File

@@ -234,3 +234,24 @@ FortuneCoin
SpiritGuard
xy: 192,160
size: 16, 16
MulticolorRune
xy: 352,64
size: 16, 16
ColorlessRune
xy: 336,80
size: 16, 16
BlackRune
xy: 352,80
size: 16, 16
RedRune
xy: 336,96
size: 16, 16
GreenRune
xy: 352,96
size: 16, 16
BlueRune
xy: 336,112
size: 16, 16
WhiteRune
xy: 352,112
size: 16, 16

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 KiB

After

Width:  |  Height:  |  Size: 270 KiB

View File

@@ -1,5 +1,5 @@
player.png
knight.png
size: 64,96
format: RGBA8888
filter: Nearest,Nearest

View File

@@ -59,6 +59,7 @@
"pointsOfInterest": [
"Black Castle",
"Swamp Town",
"Swamp Capital",
"Swamp Town2",
"Zombie Town",
"Graveyard",

View File

@@ -49,6 +49,7 @@
"pointsOfInterest": [
"Blue Castle",
"Island Town",
"Island Capital",
"NestU",
"MerfolkPool",
"MerfolkPool1",

View File

@@ -63,6 +63,7 @@
],
"pointsOfInterest": [
"Green Castle",
"Forest Capital",
"Forest Town",
"ElfTown",
"WurmPond",

View File

@@ -1,317 +1,387 @@
[
{
"name": "Sol Ring",
"equipmentSlot": "Left",
"effect": {
"startBattleWithCard": [
"Sol Ring"
]
},
"iconName": "SolRing"
},
{
"name": "Mox Emerald",
"equipmentSlot": "Neck",
"effect": {
"startBattleWithCard": [
"Mox Emerald"
]
},
"description": "",
"iconName": "MoxEmerald"
},
{
"name": "Black Lotus",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"Black Lotus"
]
},
"iconName": "BlackLotus"
},
{
"name": "Mox Jet",
"equipmentSlot": "Neck",
"effect": {
"startBattleWithCard": [
"Mox Jet"
]
},
"iconName": "MoxJet"
},
{
"name": "Mox Pearl",
"equipmentSlot": "Neck",
"effect": {
"startBattleWithCard": [
"Mox Pearl"
]
},
"description": "",
"iconName": "MoxPearl"
},
{
"name": "Mox Ruby",
"equipmentSlot": "Neck",
"effect": {
"startBattleWithCard": [
"Mox Ruby"
]
},
"iconName": "MoxRuby"
},
{
"name": "Mox Sapphire",
"equipmentSlot": "Neck",
"effect": {
"startBattleWithCard": [
"Mox Sapphire"
]
},
"iconName": "MoxSapphire"
},
{
"name": "Life Amulet",
"equipmentSlot": "Neck",
"effect": {
"lifeModifier": 2
},
"iconName": "LifeAmulet"
},
{
"name": "Red Key",
"description": "A mysterious red key.",
"iconName": "RedKey",
"questItem": true
},
{
"name": "White Key",
"description": "A mysterious white key.",
"iconName": "WhiteKey",
"questItem": true
},
{
"name": "Blue Key",
"description": "A mysterious blue key.",
"iconName": "BlueKey",
"questItem": true
},
{
"name": "Green Key",
"description": "A mysterious green key.",
"iconName": "GreenKey",
"questItem": true
},
{
"name": "Black Key",
"description": "A mysterious black key.",
"iconName": "BlackKey",
"questItem": true
},
{
"name": "Strange Key",
"description": "A mysterious key.",
"iconName": "StrangeKey",
"questItem": true
},
{
"name": "Jungle Shield",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"g_0_1_plant"
]
},
"iconName": "JungleShield"
},
{
"name": "Iron Shield",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"c_0_2_a_wall_defender"
]
},
"iconName": "IronShield",
"cost": 500
},
{
"name": "Steel Shield",
"equipmentSlot": "Right",
"effect": {
"lifeModifier": 1,
"startBattleWithCard": [
"w_0_3_wall_defender"
]
},
"iconName": "SteelShield",
"cost": 1500
},
{
"name": "Spirit Guard",
"equipmentSlot": "Right",
"effect": {
"lifeModifier": 2,
"startBattleWithCard": [
"Geist of the Archives"
]
},
"iconName": "SpiritGuard"
},
{
"name": "Iron Armor",
"equipmentSlot": "Body",
"effect": {
"lifeModifier": 3
},
"iconName": "IronArmor",
"cost": 500
},
{
"name": "Steel Armor",
"equipmentSlot": "Body",
"effect": {
"lifeModifier": 5
},
"iconName": "SteelArmor",
"cost": 1500
},
{
"name": "Leather Boots",
"equipmentSlot": "Boots",
"effect": {
"moveSpeed": 1.2
},
"iconName": "LeatherBoots"
},
{
"name": "Iron Boots",
"equipmentSlot": "Boots",
"effect": {
"lifeModifier": 1,
"moveSpeed": 1.35
},
"iconName": "IronBoots",
"cost": 500
},
{
"name": "Steel Boots",
"equipmentSlot": "Boots",
"effect": {
"lifeModifier": 2,
"moveSpeed": 1.4
},
"iconName": "SteelBoots",
"cost": 1500
},
{
"name": "Cheat",
"equipmentSlot": "Neck",
"effect": {
"startBattleWithCard": [
"Blightsteel Colossus",
"Lightning Greaves"
]
},
"iconName": "Goose"
},
{
"name": "Shell Wand",
"equipmentSlot": "Left",
"effect": {
"opponent": {
"lifeModifier": -2
}
},
"iconName": "ShellWand"
},
{
"name": "Flame Sword",
"equipmentSlot": "Left",
"effect": {
"opponent": {
"lifeModifier": -5
}
},
"iconName": "FlameSword"
},
{
"name": "Dungeon Map",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"Dungeon Map"
]
},
"iconName": "DungeonMap"
},
{
"name": "Blood Vial",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"c_a_blood_draw"
]
},
"iconName": "Blood"
},
{
"name": "Charm",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"c_a_clue_draw"
]
},
"iconName": "Clue"
},
{
"name": "Snack",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"c_a_food_sac"
]
},
"iconName": "Cheese"
},
{
"name": "Change",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"c_a_gold_sac"
]
},
"iconName": "Gold"
},
{
"name": "Treasure",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"c_a_treasure_sac"
]
},
"iconName": "Treasure"
},
{
"name": "Manasight Amulet",
"equipmentSlot": "Neck",
"description": "Grants Manasight, letting you know the colors used by your adversaries.",
"effect": {
"colorView": true
},
"iconName": "RelicAmulet"
},
{
"name": "Fortune Coin",
"equipmentSlot": "Left",
"effect": {
"goldModifier": 0.85,
"cardRewardBonus": 1
},
"iconName": "FortuneCoin"
}
{
"name": "Sol Ring",
"equipmentSlot": "Left",
"effect": {
"startBattleWithCard": [
"Sol Ring"
]
},
"iconName": "SolRing"
},
{
"name": "Mox Emerald",
"equipmentSlot": "Neck",
"effect": {
"startBattleWithCard": [
"Mox Emerald"
]
},
"description": "",
"iconName": "MoxEmerald"
},
{
"name": "Black Lotus",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"Black Lotus"
]
},
"iconName": "BlackLotus"
},
{
"name": "Mox Jet",
"equipmentSlot": "Neck",
"effect": {
"startBattleWithCard": [
"Mox Jet"
]
},
"iconName": "MoxJet"
},
{
"name": "Mox Pearl",
"equipmentSlot": "Neck",
"effect": {
"startBattleWithCard": [
"Mox Pearl"
]
},
"description": "",
"iconName": "MoxPearl"
},
{
"name": "Mox Ruby",
"equipmentSlot": "Neck",
"effect": {
"startBattleWithCard": [
"Mox Ruby"
]
},
"iconName": "MoxRuby"
},
{
"name": "Mox Sapphire",
"equipmentSlot": "Neck",
"effect": {
"startBattleWithCard": [
"Mox Sapphire"
]
},
"iconName": "MoxSapphire"
},
{
"name": "Life Amulet",
"equipmentSlot": "Neck",
"effect": {
"lifeModifier": 2
},
"iconName": "LifeAmulet"
},
{
"name": "Red Key",
"description": "A mysterious red key.",
"iconName": "RedKey",
"questItem": true
},
{
"name": "White Key",
"description": "A mysterious white key.",
"iconName": "WhiteKey",
"questItem": true
},
{
"name": "Blue Key",
"description": "A mysterious blue key.",
"iconName": "BlueKey",
"questItem": true
},
{
"name": "Green Key",
"description": "A mysterious green key.",
"iconName": "GreenKey",
"questItem": true
},
{
"name": "Black Key",
"description": "A mysterious black key.",
"iconName": "BlackKey",
"questItem": true
},
{
"name": "Strange Key",
"description": "A mysterious key.",
"iconName": "StrangeKey",
"questItem": true
},
{
"name": "Jungle Shield",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"g_0_1_plant"
]
},
"iconName": "JungleShield"
},
{
"name": "Iron Shield",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"c_0_2_a_wall_defender"
]
},
"iconName": "IronShield",
"cost": 500
},
{
"name": "Steel Shield",
"equipmentSlot": "Right",
"effect": {
"lifeModifier": 1,
"startBattleWithCard": [
"w_0_3_wall_defender"
]
},
"iconName": "SteelShield",
"cost": 1500
},
{
"name": "Spirit Guard",
"equipmentSlot": "Right",
"effect": {
"lifeModifier": 2,
"startBattleWithCard": [
"Geist of the Archives"
]
},
"iconName": "SpiritGuard"
},
{
"name": "Iron Armor",
"equipmentSlot": "Body",
"effect": {
"lifeModifier": 3
},
"iconName": "IronArmor",
"cost": 500
},
{
"name": "Steel Armor",
"equipmentSlot": "Body",
"effect": {
"lifeModifier": 5
},
"iconName": "SteelArmor",
"cost": 1500
},
{
"name": "Leather Boots",
"equipmentSlot": "Boots",
"effect": {
"moveSpeed": 1.2
},
"iconName": "LeatherBoots"
},
{
"name": "Iron Boots",
"equipmentSlot": "Boots",
"effect": {
"lifeModifier": 1,
"moveSpeed": 1.35
},
"iconName": "IronBoots",
"cost": 500
},
{
"name": "Steel Boots",
"equipmentSlot": "Boots",
"effect": {
"lifeModifier": 2,
"moveSpeed": 1.4
},
"iconName": "SteelBoots",
"cost": 1500
},
{
"name": "Cheat",
"equipmentSlot": "Neck",
"effect": {
"startBattleWithCard": [
"Blightsteel Colossus",
"Lightning Greaves"
]
},
"iconName": "Goose"
},
{
"name": "Shell Wand",
"equipmentSlot": "Left",
"effect": {
"opponent": {
"lifeModifier": -2
}
},
"iconName": "ShellWand"
},
{
"name": "Flame Sword",
"equipmentSlot": "Left",
"effect": {
"opponent": {
"lifeModifier": -5
}
},
"iconName": "FlameSword"
},
{
"name": "Dungeon Map",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"Dungeon Map"
]
},
"iconName": "DungeonMap"
},
{
"name": "Blood Vial",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"c_a_blood_draw"
]
},
"iconName": "Blood"
},
{
"name": "Charm",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"c_a_clue_draw"
]
},
"iconName": "Clue"
},
{
"name": "Snack",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"c_a_food_sac"
]
},
"iconName": "Cheese"
},
{
"name": "Change",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"c_a_gold_sac"
]
},
"iconName": "Gold"
},
{
"name": "Treasure",
"equipmentSlot": "Right",
"effect": {
"startBattleWithCard": [
"c_a_treasure_sac"
]
},
"iconName": "Treasure"
},
{
"name": "Manasight Amulet",
"equipmentSlot": "Neck",
"effect": {
"colorView": true
},
"description": "Grants Manasight, letting you know the colors used by your adversaries.",
"iconName": "RelicAmulet"
},
{
"name": "Fortune Coin",
"equipmentSlot": "Left",
"effect": {
"name": "",
"goldModifier": 0.85,
"cardRewardBonus": 1
},
"description": "",
"iconName": "FortuneCoin"
},
{
"name": "Colorless rune",
"equipmentSlot": "",
"effect": {
"name": "",
"goldModifier": 0.85,
"cardRewardBonus": 1
},
"description": "Teleports you to the center",
"iconName": "ColorlessRune",
"questItem": true,
"cost": 100
},
{
"name": "White rune",
"equipmentSlot": "",
"effect": {
"name": ""
},
"description": "Teleports you to the plains",
"iconName": "WhiteRune",
"questItem": true,
"cost": 100
},
{
"name": "Black rune",
"equipmentSlot": "",
"effect": {
"name": ""
},
"description": "Teleports you to the swamp",
"iconName": "BlackRune",
"questItem": true,
"cost": 100
},
{
"name": "Blue rune",
"equipmentSlot": "",
"effect": {
"name": ""
},
"description": "Teleports you to the island",
"iconName": "BlueRune",
"questItem": true,
"cost": 100
},
{
"name": "Red rune",
"equipmentSlot": "",
"effect": {
"name": ""
},
"description": "Teleports you to the mountain",
"iconName": "RedRune",
"questItem": true,
"cost": 100
},
{
"name": "Green rune",
"equipmentSlot": "",
"effect": {
"name": ""
},
"description": "Teleports you to the forest",
"iconName": "GreenRune",
"questItem": true,
"cost": 100
}
]

File diff suppressed because it is too large Load Diff

View File

@@ -63,6 +63,7 @@
"pointsOfInterest": [
"Red Castle",
"Mountain Town",
"Mountain Capital",
"YuleTown",
"BarbarianCamp",
"BarbarianCamp1",

View File

@@ -54,6 +54,7 @@
"Doppelganger"
],
"pointsOfInterest": [
"Spawn",
"Final Castle",
"Colorless Castle",
"Skep",

View File

@@ -51,6 +51,7 @@
"pointsOfInterest": [
"White Castle",
"Plains Town",
"Plains Capital",
"Monastery",
"Monastery1",
"Monastery2",

View File

@@ -1,8 +1,8 @@
{
"width": 700,
"height": 700,
"playerStartPosX": 0.5025,
"playerStartPosY": 0.495,
"playerStartPosX": 0.5,
"playerStartPosY": 0.5,
"noiseZoomBiome": 30,
"tileSize": 16,
"roadTileset": {