mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
added item editor
This commit is contained in:
@@ -14,6 +14,9 @@ public class EditorMainWindow extends JFrame {
|
|||||||
BorderLayout layout=new BorderLayout();
|
BorderLayout layout=new BorderLayout();
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
add(tabs);
|
add(tabs);
|
||||||
|
tabs.addTab("POI",new PointOfInterestEditor());
|
||||||
|
tabs.addTab("World",new WorldEditor());
|
||||||
|
tabs.addTab("Items",new ItemsEditor());
|
||||||
tabs.addTab("Enemies",new EnemyEditor());
|
tabs.addTab("Enemies",new EnemyEditor());
|
||||||
setVisible(true);
|
setVisible(true);
|
||||||
setSize(800,600);
|
setSize(800,600);
|
||||||
|
|||||||
@@ -0,0 +1,115 @@
|
|||||||
|
package forge.adventure.editor;
|
||||||
|
|
||||||
|
import forge.adventure.data.EffectData;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import javax.swing.event.ChangeEvent;
|
||||||
|
import javax.swing.event.ChangeListener;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class EffectEditor extends JComponent {
|
||||||
|
EffectData currentData;
|
||||||
|
|
||||||
|
|
||||||
|
JTextField name =new JTextField();
|
||||||
|
JSpinner changeStartCards = new JSpinner(new SpinnerNumberModel(0, 0, 1000, 1));
|
||||||
|
JSpinner lifeModifier = new JSpinner(new SpinnerNumberModel(0, 0, 1000, 1));
|
||||||
|
JSpinner moveSpeed = new JSpinner(new SpinnerNumberModel(0f, 0, 1, 0.1f));
|
||||||
|
TextListEdit startBattleWithCard =new TextListEdit();
|
||||||
|
JCheckBox colorView =new JCheckBox();
|
||||||
|
EffectEditor opponent = null;
|
||||||
|
private boolean updating=false;
|
||||||
|
|
||||||
|
public EffectEditor(boolean isOpponentEffect)
|
||||||
|
{
|
||||||
|
if(!isOpponentEffect)
|
||||||
|
opponent=new EffectEditor(true);
|
||||||
|
setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
|
||||||
|
JPanel parameters=new JPanel();
|
||||||
|
parameters.setBorder(BorderFactory.createTitledBorder("Effect"));
|
||||||
|
parameters.setLayout(new GridLayout(7,2)) ;
|
||||||
|
|
||||||
|
parameters.add(new JLabel("Name:")); parameters.add(name);
|
||||||
|
parameters.add(new JLabel("Start with extra cards:")); parameters.add(changeStartCards);
|
||||||
|
parameters.add(new JLabel("Change life:")); parameters.add(lifeModifier);
|
||||||
|
parameters.add(new JLabel("Movement speed:")); parameters.add(moveSpeed);
|
||||||
|
parameters.add(new JLabel("Start battle with cards:")); parameters.add(startBattleWithCard);
|
||||||
|
parameters.add(new JLabel("color view:")); parameters.add(colorView);
|
||||||
|
add(parameters);
|
||||||
|
if(!isOpponentEffect)
|
||||||
|
{ add(new JLabel("Opponent:")); add(opponent);}
|
||||||
|
|
||||||
|
|
||||||
|
changeStartCards.addChangeListener(e -> EffectEditor.this.updateEffect());
|
||||||
|
lifeModifier.addChangeListener(e -> EffectEditor.this.updateEffect());
|
||||||
|
moveSpeed.addChangeListener(e -> EffectEditor.this.updateEffect());
|
||||||
|
colorView.addChangeListener(e -> EffectEditor.this.updateEffect());
|
||||||
|
name.getDocument().addDocumentListener(new DocumentChangeListener(() -> EffectEditor.this.updateEffect()));
|
||||||
|
startBattleWithCard.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(() -> EffectEditor.this.updateEffect()));
|
||||||
|
if(opponent!=null)
|
||||||
|
|
||||||
|
opponent.addChangeListener(e -> EffectEditor.this.updateEffect());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateEffect() {
|
||||||
|
if(currentData==null||updating)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
currentData.name=name.getText();
|
||||||
|
currentData.changeStartCards=((Integer)changeStartCards.getValue()).intValue();
|
||||||
|
currentData.lifeModifier= ((Integer)lifeModifier.getValue()).intValue();
|
||||||
|
currentData.moveSpeed= ((Float)moveSpeed.getValue()).floatValue();
|
||||||
|
currentData.startBattleWithCard = startBattleWithCard.getList();
|
||||||
|
currentData.colorView = colorView.isSelected();
|
||||||
|
currentData.opponent = opponent.currentData;
|
||||||
|
|
||||||
|
ChangeListener[] listeners = listenerList.getListeners(ChangeListener.class);
|
||||||
|
if (listeners != null && listeners.length > 0) {
|
||||||
|
ChangeEvent evt = new ChangeEvent(this);
|
||||||
|
for (ChangeListener listener : listeners) {
|
||||||
|
listener.stateChanged(evt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public void addChangeListener(ChangeListener l) {
|
||||||
|
listenerList.add(ChangeListener.class, l);
|
||||||
|
}
|
||||||
|
public void setCurrentEffect(EffectData data)
|
||||||
|
{
|
||||||
|
if(data==null)
|
||||||
|
return;
|
||||||
|
currentData=data;
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
public EffectData getCurrentEffect()
|
||||||
|
{
|
||||||
|
return currentData;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refresh() {
|
||||||
|
setEnabled(currentData!=null);
|
||||||
|
if(currentData==null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
updating=true;
|
||||||
|
name.setText(currentData.name);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
lifeModifier.setValue(currentData.lifeModifier);
|
||||||
|
changeStartCards.setValue(currentData.changeStartCards);
|
||||||
|
startBattleWithCard.setText(currentData.startBattleWithCard);
|
||||||
|
colorView.setSelected(currentData.colorView);
|
||||||
|
moveSpeed.setValue(currentData.moveSpeed);
|
||||||
|
if(opponent!=null)
|
||||||
|
opponent.setCurrentEffect(currentData.opponent);
|
||||||
|
|
||||||
|
|
||||||
|
updating=false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,8 +3,6 @@ package forge.adventure.editor;
|
|||||||
import forge.adventure.data.EnemyData;
|
import forge.adventure.data.EnemyData;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.event.ChangeEvent;
|
|
||||||
import javax.swing.event.ChangeListener;
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -15,6 +13,7 @@ public class EnemyEdit extends JComponent {
|
|||||||
|
|
||||||
|
|
||||||
JTextField nameField=new JTextField();
|
JTextField nameField=new JTextField();
|
||||||
|
JTextField colorField=new JTextField();
|
||||||
JSpinner lifeFiled= new JSpinner(new SpinnerNumberModel(0, 0, 1000, 1));
|
JSpinner lifeFiled= new JSpinner(new SpinnerNumberModel(0, 0, 1000, 1));
|
||||||
JSpinner spawnRate= new JSpinner(new SpinnerNumberModel(0.0, 0., 1, 0.1));
|
JSpinner spawnRate= new JSpinner(new SpinnerNumberModel(0.0, 0., 1, 0.1));
|
||||||
JSpinner difficulty= new JSpinner(new SpinnerNumberModel(0.0, 0., 1, 0.1));
|
JSpinner difficulty= new JSpinner(new SpinnerNumberModel(0.0, 0., 1, 0.1));
|
||||||
@@ -30,7 +29,7 @@ public class EnemyEdit extends JComponent {
|
|||||||
{
|
{
|
||||||
|
|
||||||
JComponent center=new JComponent() { };
|
JComponent center=new JComponent() { };
|
||||||
center.setLayout(new GridLayout(8,2));
|
center.setLayout(new GridLayout(9,2));
|
||||||
|
|
||||||
center.add(new JLabel("Name:")); center.add(nameField);
|
center.add(new JLabel("Name:")); center.add(nameField);
|
||||||
center.add(new JLabel("Life:")); center.add(lifeFiled);
|
center.add(new JLabel("Life:")); center.add(lifeFiled);
|
||||||
@@ -40,72 +39,24 @@ public class EnemyEdit extends JComponent {
|
|||||||
center.add(new JLabel("Deck:")); center.add(deck);
|
center.add(new JLabel("Deck:")); center.add(deck);
|
||||||
center.add(new JLabel("Sprite:")); center.add(atlas);
|
center.add(new JLabel("Sprite:")); center.add(atlas);
|
||||||
center.add(new JLabel("Equipment:")); center.add(equipment);
|
center.add(new JLabel("Equipment:")); center.add(equipment);
|
||||||
|
center.add(new JLabel("Colors:")); center.add(colorField);
|
||||||
BorderLayout layout=new BorderLayout();
|
BorderLayout layout=new BorderLayout();
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
add(center,BorderLayout.PAGE_START);
|
add(center,BorderLayout.PAGE_START);
|
||||||
add(rewards,BorderLayout.CENTER);
|
add(rewards,BorderLayout.CENTER);
|
||||||
add(preview,BorderLayout.LINE_START);
|
add(preview,BorderLayout.LINE_START);
|
||||||
|
|
||||||
equipment.getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
equipment.getDocument().addDocumentListener(new DocumentChangeListener(() -> EnemyEdit.this.updateEnemy()));
|
||||||
@Override
|
atlas.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(() -> EnemyEdit.this.updateEnemy()));
|
||||||
public void run() {
|
colorField.getDocument().addDocumentListener(new DocumentChangeListener(() -> EnemyEdit.this.updateEnemy()));
|
||||||
EnemyEdit.this.updateEnemy();
|
nameField.getDocument().addDocumentListener(new DocumentChangeListener(() -> EnemyEdit.this.updateEnemy()));
|
||||||
}
|
deck.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(() -> EnemyEdit.this.updateEnemy()));
|
||||||
}));
|
lifeFiled.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||||
atlas.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
speed.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||||
@Override
|
difficulty.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||||
public void run() {
|
spawnRate.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||||
EnemyEdit.this.updateEnemy();
|
rewards.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||||
}
|
lifeFiled.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||||
}));
|
|
||||||
nameField.getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
deck.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
lifeFiled.addChangeListener(new ChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
speed.addChangeListener(new ChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
difficulty.addChangeListener(new ChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
spawnRate.addChangeListener(new ChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
rewards.addChangeListener(new ChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
lifeFiled.addChangeListener(new ChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,6 +64,7 @@ public class EnemyEdit extends JComponent {
|
|||||||
if(currentData==null||updating)
|
if(currentData==null||updating)
|
||||||
return;
|
return;
|
||||||
currentData.name=nameField.getText();
|
currentData.name=nameField.getText();
|
||||||
|
currentData.colors=colorField.getText();
|
||||||
currentData.life= (int) lifeFiled.getValue();
|
currentData.life= (int) lifeFiled.getValue();
|
||||||
currentData.sprite= atlas.getEdit().getText();
|
currentData.sprite= atlas.getEdit().getText();
|
||||||
if(equipment.getText().isEmpty())
|
if(equipment.getText().isEmpty())
|
||||||
@@ -141,6 +93,7 @@ public class EnemyEdit extends JComponent {
|
|||||||
}
|
}
|
||||||
updating=true;
|
updating=true;
|
||||||
nameField.setText(currentData.name);
|
nameField.setText(currentData.name);
|
||||||
|
colorField.setText(currentData.colors);
|
||||||
lifeFiled.setValue(currentData.life);
|
lifeFiled.setValue(currentData.life);
|
||||||
atlas.getEdit().setText(currentData.sprite);
|
atlas.getEdit().setText(currentData.sprite);
|
||||||
if(currentData.equipment!=null)
|
if(currentData.equipment!=null)
|
||||||
|
|||||||
@@ -0,0 +1,88 @@
|
|||||||
|
package forge.adventure.editor;
|
||||||
|
|
||||||
|
import forge.adventure.data.ItemData;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Editor class to edit configuration, maybe moved or removed
|
||||||
|
*/
|
||||||
|
public class ItemEdit extends JComponent {
|
||||||
|
ItemData currentData;
|
||||||
|
|
||||||
|
|
||||||
|
JTextField nameField=new JTextField();
|
||||||
|
JTextField equipmentSlot=new JTextField();
|
||||||
|
JTextField iconName=new JTextField();
|
||||||
|
EffectEditor effect=new EffectEditor(false);
|
||||||
|
JTextField description=new JTextField();
|
||||||
|
JCheckBox questItem=new JCheckBox();
|
||||||
|
JSpinner cost= new JSpinner(new SpinnerNumberModel(0, 0, 100000, 1));
|
||||||
|
|
||||||
|
private boolean updating=false;
|
||||||
|
|
||||||
|
public ItemEdit()
|
||||||
|
{
|
||||||
|
|
||||||
|
setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
|
||||||
|
JPanel parameters=new JPanel();
|
||||||
|
parameters.setBorder(BorderFactory.createTitledBorder("Parameter"));
|
||||||
|
parameters.setLayout(new GridLayout(6,2)) ;
|
||||||
|
|
||||||
|
parameters.add(new JLabel("Name:")); parameters.add(nameField);
|
||||||
|
parameters.add(new JLabel("equipmentSlot:")); parameters.add(equipmentSlot);
|
||||||
|
parameters.add(new JLabel("description:")); parameters.add(description);
|
||||||
|
parameters.add(new JLabel("iconName")); parameters.add(iconName);
|
||||||
|
parameters.add(new JLabel("questItem")); parameters.add(questItem);
|
||||||
|
parameters.add(new JLabel("cost")); parameters.add(cost);
|
||||||
|
|
||||||
|
add(parameters);
|
||||||
|
add(effect);
|
||||||
|
|
||||||
|
nameField.getDocument().addDocumentListener(new DocumentChangeListener(() -> ItemEdit.this.updateItem()));
|
||||||
|
equipmentSlot.getDocument().addDocumentListener(new DocumentChangeListener(() -> ItemEdit.this.updateItem()));
|
||||||
|
description.getDocument().addDocumentListener(new DocumentChangeListener(() -> ItemEdit.this.updateItem()));
|
||||||
|
iconName.getDocument().addDocumentListener(new DocumentChangeListener(() -> ItemEdit.this.updateItem()));
|
||||||
|
cost.addChangeListener(e -> ItemEdit.this.updateItem());
|
||||||
|
questItem.addChangeListener(e -> ItemEdit.this.updateItem());
|
||||||
|
effect.addChangeListener(e -> ItemEdit.this.updateItem());
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateItem() {
|
||||||
|
if(currentData==null||updating)
|
||||||
|
return;
|
||||||
|
currentData.name=nameField.getText();
|
||||||
|
currentData.equipmentSlot= equipmentSlot.getText();
|
||||||
|
currentData.effect= effect.getCurrentEffect();
|
||||||
|
currentData.description=description.getText();
|
||||||
|
currentData.iconName=iconName.getText();
|
||||||
|
currentData.questItem=questItem.isSelected();
|
||||||
|
currentData.cost=((Integer) cost.getValue()).intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCurrentItem(ItemData data)
|
||||||
|
{
|
||||||
|
currentData=data;
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refresh() {
|
||||||
|
setEnabled(currentData!=null);
|
||||||
|
if(currentData==null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
updating=true;
|
||||||
|
nameField.setText(currentData.name);
|
||||||
|
effect.setCurrentEffect(currentData.effect);
|
||||||
|
equipmentSlot.setText(currentData.equipmentSlot);
|
||||||
|
description.setText(currentData.description);
|
||||||
|
iconName.setText(currentData.iconName);
|
||||||
|
questItem.setSelected(currentData.questItem);
|
||||||
|
cost.setValue(currentData.cost);
|
||||||
|
|
||||||
|
updating=false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
package forge.adventure.editor;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.files.FileHandle;
|
||||||
|
import com.badlogic.gdx.utils.Array;
|
||||||
|
import com.badlogic.gdx.utils.Json;
|
||||||
|
import com.badlogic.gdx.utils.JsonWriter;
|
||||||
|
import forge.adventure.data.ItemData;
|
||||||
|
import forge.adventure.util.Config;
|
||||||
|
import forge.adventure.util.Paths;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
public class ItemsEditor extends JComponent {
|
||||||
|
DefaultListModel<ItemData> model = new DefaultListModel<>();
|
||||||
|
JList<ItemData> list = new JList<>(model);
|
||||||
|
JToolBar toolBar = new JToolBar("toolbar");
|
||||||
|
ItemEdit edit=new ItemEdit();
|
||||||
|
static SwingAtlas itemAtlas;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class ItemDataRenderer extends DefaultListCellRenderer {
|
||||||
|
@Override
|
||||||
|
public Component getListCellRendererComponent(
|
||||||
|
JList list, Object value, int index,
|
||||||
|
boolean isSelected, boolean cellHasFocus) {
|
||||||
|
JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
|
||||||
|
if(!(value instanceof ItemData))
|
||||||
|
return label;
|
||||||
|
ItemData Item=(ItemData) value;
|
||||||
|
// Get the renderer component from parent class
|
||||||
|
|
||||||
|
label.setText(Item.name);
|
||||||
|
if(itemAtlas==null)
|
||||||
|
itemAtlas=new SwingAtlas(Config.instance().getFile(Paths.ITEMS_ATLAS));
|
||||||
|
|
||||||
|
if(itemAtlas.has(Item.iconName))
|
||||||
|
label.setIcon(itemAtlas.get(Item.iconName));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ImageIcon img=itemAtlas.getAny();
|
||||||
|
if(img!=null)
|
||||||
|
label.setIcon(img);
|
||||||
|
}
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void addButton(String name, ActionListener action)
|
||||||
|
{
|
||||||
|
JButton newButton=new JButton(name);
|
||||||
|
newButton.addActionListener(action);
|
||||||
|
toolBar.add(newButton);
|
||||||
|
|
||||||
|
}
|
||||||
|
public ItemsEditor()
|
||||||
|
{
|
||||||
|
|
||||||
|
list.setCellRenderer(new ItemsEditor.ItemDataRenderer());
|
||||||
|
list.addListSelectionListener(e -> ItemsEditor.this.updateEdit());
|
||||||
|
addButton("add", e -> ItemsEditor.this.addItem());
|
||||||
|
addButton("remove", e -> ItemsEditor.this.remove());
|
||||||
|
addButton("copy", e -> ItemsEditor.this.copy());
|
||||||
|
addButton("load", e -> ItemsEditor.this.load());
|
||||||
|
addButton("save", e -> ItemsEditor.this.save());
|
||||||
|
BorderLayout layout=new BorderLayout();
|
||||||
|
setLayout(layout);
|
||||||
|
add(new JScrollPane(list), BorderLayout.LINE_START);
|
||||||
|
add(toolBar, BorderLayout.PAGE_START);
|
||||||
|
add(edit,BorderLayout.CENTER);
|
||||||
|
load();
|
||||||
|
}
|
||||||
|
private void copy() {
|
||||||
|
|
||||||
|
int selected=list.getSelectedIndex();
|
||||||
|
if(selected<0)
|
||||||
|
return;
|
||||||
|
ItemData data=new ItemData(model.get(selected));
|
||||||
|
model.add(model.size(),data);
|
||||||
|
}
|
||||||
|
private void updateEdit() {
|
||||||
|
|
||||||
|
int selected=list.getSelectedIndex();
|
||||||
|
if(selected<0)
|
||||||
|
return;
|
||||||
|
edit.setCurrentItem(model.get(selected));
|
||||||
|
}
|
||||||
|
|
||||||
|
void save()
|
||||||
|
{
|
||||||
|
Array<ItemData> allEnemies=new Array<>();
|
||||||
|
for(int i=0;i<model.getSize();i++)
|
||||||
|
allEnemies.add(model.get(i));
|
||||||
|
Json json = new Json(JsonWriter.OutputType.json);
|
||||||
|
FileHandle handle = Config.instance().getFile(Paths.ITEMS);
|
||||||
|
handle.writeString(json.prettyPrint(json.toJson(allEnemies,Array.class, ItemData.class)),false);
|
||||||
|
|
||||||
|
}
|
||||||
|
void load()
|
||||||
|
{
|
||||||
|
model.clear();
|
||||||
|
Array<ItemData> allEnemies=new Array<>();
|
||||||
|
Json json = new Json();
|
||||||
|
FileHandle handle = Config.instance().getFile(Paths.ITEMS);
|
||||||
|
if (handle.exists())
|
||||||
|
{
|
||||||
|
Array readEnemies=json.fromJson(Array.class, ItemData.class, handle);
|
||||||
|
allEnemies = readEnemies;
|
||||||
|
}
|
||||||
|
for (int i=0;i<allEnemies.size;i++) {
|
||||||
|
model.add(i,allEnemies.get(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void addItem()
|
||||||
|
{
|
||||||
|
ItemData data=new ItemData();
|
||||||
|
data.name="Item "+model.getSize();
|
||||||
|
model.add(model.size(),data);
|
||||||
|
}
|
||||||
|
void remove()
|
||||||
|
{
|
||||||
|
int selected=list.getSelectedIndex();
|
||||||
|
if(selected<0)
|
||||||
|
return;
|
||||||
|
model.remove(selected);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package forge.adventure.editor;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class PointOfInterestEditor extends Component {
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package forge.adventure.editor;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class WorldEditor extends Component {
|
||||||
|
}
|
||||||
@@ -20,6 +20,20 @@ public class EffectData implements Serializable {
|
|||||||
//Opponent field.
|
//Opponent field.
|
||||||
public EffectData opponent; //Effects to be applied to the opponent's side.
|
public EffectData opponent; //Effects to be applied to the opponent's side.
|
||||||
|
|
||||||
|
public EffectData()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
public EffectData(EffectData effect) {
|
||||||
|
|
||||||
|
name=effect.name;
|
||||||
|
lifeModifier=effect.lifeModifier;
|
||||||
|
changeStartCards=effect.changeStartCards;
|
||||||
|
startBattleWithCard=effect.startBattleWithCard;
|
||||||
|
colorView=effect.colorView;
|
||||||
|
opponent=opponent==null?null:new EffectData(effect.opponent);
|
||||||
|
}
|
||||||
|
|
||||||
public Array<IPaperCard> startBattleWithCards() {
|
public Array<IPaperCard> startBattleWithCards() {
|
||||||
Array<IPaperCard> startCards=new Array<>();
|
Array<IPaperCard> startCards=new Array<>();
|
||||||
if(startBattleWithCard != null) {
|
if(startBattleWithCard != null) {
|
||||||
|
|||||||
@@ -23,6 +23,20 @@ public class ItemData {
|
|||||||
public String iconName;
|
public String iconName;
|
||||||
public boolean questItem=false;
|
public boolean questItem=false;
|
||||||
public int cost=1000;
|
public int cost=1000;
|
||||||
|
public ItemData()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
public ItemData(ItemData cpy)
|
||||||
|
{
|
||||||
|
name = cpy.name ;
|
||||||
|
equipmentSlot = cpy.equipmentSlot;
|
||||||
|
effect = new EffectData(cpy.effect);
|
||||||
|
description = cpy.description ;
|
||||||
|
iconName = cpy.iconName ;
|
||||||
|
questItem = cpy.questItem ;
|
||||||
|
cost = cpy.cost ;
|
||||||
|
}
|
||||||
|
|
||||||
public Sprite sprite()
|
public Sprite sprite()
|
||||||
{
|
{
|
||||||
@@ -67,4 +81,5 @@ public class ItemData {
|
|||||||
result += effect.getDescription();
|
result += effect.getDescription();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,283 +1,283 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "Sol Ring",
|
"name": "Sol Ring",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "SolRing",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Sol Ring"
|
"Sol Ring"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "SolRing"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Mox Emerald",
|
"name": "Mox Emerald",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "MoxEmerald",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Mox Emerald"
|
"Mox Emerald"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"description": "",
|
||||||
|
"iconName": "MoxEmerald"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Black Lotus",
|
"name": "Black Lotus",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "BlackLotus",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Black Lotus"
|
"Black Lotus"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "BlackLotus"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Mox Jet",
|
"name": "Mox Jet",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "MoxJet",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Mox Jet"
|
"Mox Jet"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "MoxJet"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Mox Pearl",
|
"name": "Mox Pearl",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "MoxPearl",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Mox Pearl"
|
"Mox Pearl"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"description": "",
|
||||||
|
"iconName": "MoxPearl"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Mox Ruby",
|
"name": "Mox Ruby",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "MoxRuby",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Mox Ruby"
|
"Mox Ruby"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "MoxRuby"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Mox Sapphire",
|
"name": "Mox Sapphire",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "MoxSapphire",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Mox Sapphire"
|
"Mox Sapphire"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "MoxSapphire"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Battle Standard",
|
"name": "Battle Standard",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "BattleStandard",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"lifeModifier": -1,
|
"lifeModifier": -1,
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"r_1_1_goblin"
|
"r_1_1_goblin"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "BattleStandard"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Life Amulet",
|
"name": "Life Amulet",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "LifeAmulet",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"lifeModifier": 2
|
"lifeModifier": 2
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "LifeAmulet"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Red Key",
|
"name": "Red Key",
|
||||||
"iconName": "RedKey",
|
|
||||||
"description": "A mysterious red key.",
|
"description": "A mysterious red key.",
|
||||||
|
"iconName": "RedKey",
|
||||||
"questItem": true
|
"questItem": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "White Key",
|
"name": "White Key",
|
||||||
"iconName": "WhiteKey",
|
|
||||||
"description": "A mysterious white key.",
|
"description": "A mysterious white key.",
|
||||||
|
"iconName": "WhiteKey",
|
||||||
"questItem": true
|
"questItem": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blue Key",
|
"name": "Blue Key",
|
||||||
"iconName": "BlueKey",
|
|
||||||
"description": "A mysterious blue key.",
|
"description": "A mysterious blue key.",
|
||||||
|
"iconName": "BlueKey",
|
||||||
"questItem": true
|
"questItem": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Green Key",
|
"name": "Green Key",
|
||||||
"iconName": "GreenKey",
|
|
||||||
"description": "A mysterious green key.",
|
"description": "A mysterious green key.",
|
||||||
|
"iconName": "GreenKey",
|
||||||
"questItem": true
|
"questItem": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Black Key",
|
"name": "Black Key",
|
||||||
"iconName": "BlackKey",
|
|
||||||
"description": "A mysterious black key.",
|
"description": "A mysterious black key.",
|
||||||
|
"iconName": "BlackKey",
|
||||||
"questItem": true
|
"questItem": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Strange Key",
|
"name": "Strange Key",
|
||||||
"iconName": "StrangeKey",
|
|
||||||
"description": "A mysterious key.",
|
"description": "A mysterious key.",
|
||||||
|
"iconName": "StrangeKey",
|
||||||
"questItem": true
|
"questItem": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Steel Sword",
|
"name": "Steel Sword",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "SteelSword",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Greatsword"
|
"Greatsword"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "SteelSword"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Axt",
|
"name": "Axt",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "SteelAxt",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Bonesplitter"
|
"Bonesplitter"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "SteelAxt"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Steel Boots",
|
"name": "Steel Boots",
|
||||||
"equipmentSlot": "Boots",
|
"equipmentSlot": "Boots",
|
||||||
"iconName": "SteelBoots",
|
|
||||||
"cost": 500,
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"lifeModifier": 1,
|
"lifeModifier": 1,
|
||||||
"moveSpeed": 1.2
|
"moveSpeed": 1.2
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "SteelBoots",
|
||||||
|
"cost": 500
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Steel Shield",
|
"name": "Steel Shield",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "SteelShield",
|
|
||||||
"cost": 500,
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"w_0_3_wall_defender"
|
"w_0_3_wall_defender"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "SteelShield",
|
||||||
|
"cost": 500
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Steel Armor",
|
"name": "Steel Armor",
|
||||||
"equipmentSlot": "Body",
|
"equipmentSlot": "Body",
|
||||||
"cost": 500,
|
|
||||||
"iconName": "SteelArmor",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"lifeModifier": 3
|
"lifeModifier": 3
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "SteelArmor",
|
||||||
|
"cost": 500
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Leather Boots",
|
"name": "Leather Boots",
|
||||||
"equipmentSlot": "Boots",
|
"equipmentSlot": "Boots",
|
||||||
"iconName": "LeatherBoots",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"moveSpeed": 1.15
|
"moveSpeed": 1.15
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "LeatherBoots"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Jungle Shield",
|
"name": "Jungle Shield",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "JungleShield",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"g_0_1_plant"
|
"g_0_1_plant"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "JungleShield"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Dagger",
|
"name": "Dagger",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "Dagger",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Spare Dagger"
|
"Spare Dagger"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "Dagger"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Cheat",
|
"name": "Cheat",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "Goose",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Blightsteel Colossus",
|
"Blightsteel Colossus",
|
||||||
"Lightning Greaves"
|
"Lightning Greaves"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "Goose"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Aladdin's Ring",
|
"name": "Aladdin's Ring",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "AladdinsRing",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Aladdin's Ring"
|
"Aladdin's Ring"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "AladdinsRing"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Spell Book",
|
"name": "Spell Book",
|
||||||
"iconName": "SpellBook",
|
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"effect": {
|
"effect": {
|
||||||
"changeStartCards": 1
|
"changeStartCards": 1
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "SpellBook"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Cursed Ring",
|
"name": "Cursed Ring",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "CursedRing",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"c_0_1_a_goblin_construct_noblock_ping",
|
"c_0_1_a_goblin_construct_noblock_ping",
|
||||||
"c_0_1_a_goblin_construct_noblock_ping",
|
"c_0_1_a_goblin_construct_noblock_ping",
|
||||||
"c_0_1_a_goblin_construct_noblock_ping"
|
"c_0_1_a_goblin_construct_noblock_ping"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "CursedRing"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Mithril Boots",
|
"name": "Mithril Boots",
|
||||||
"equipmentSlot": "Boots",
|
"equipmentSlot": "Boots",
|
||||||
"iconName": "MithrilBoots",
|
|
||||||
"cost": 1500,
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"lifeModifier": 2,
|
"lifeModifier": 2,
|
||||||
"moveSpeed": 1.3
|
"moveSpeed": 1.3
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "MithrilBoots",
|
||||||
|
"cost": 1500
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Mithril Shield",
|
"name": "Mithril Shield",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "MithrilShield",
|
|
||||||
"cost": 1500,
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"c_0_4_a_wall_defender"
|
"c_0_4_a_wall_defender"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "MithrilShield",
|
||||||
|
"cost": 1500
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Mithril Armor",
|
"name": "Mithril Armor",
|
||||||
"equipmentSlot": "Body",
|
"equipmentSlot": "Body",
|
||||||
"iconName": "MithrilArmor",
|
|
||||||
"cost": 1500,
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"lifeModifier": 5
|
"lifeModifier": 5
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "MithrilArmor",
|
||||||
|
"cost": 1500
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Death Ring",
|
"name": "Death Ring",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "DeathRing",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"opponent": {
|
"opponent": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
@@ -286,421 +286,424 @@
|
|||||||
"c_0_1_a_goblin_construct_noblock_ping"
|
"c_0_1_a_goblin_construct_noblock_ping"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "DeathRing"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Flame Sword",
|
"name": "Flame Sword",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "FlameSword",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"opponent": {
|
"opponent": {
|
||||||
"lifeModifier": -5
|
"lifeModifier": -5
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "FlameSword"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Mirror Shield",
|
"name": "Mirror Shield",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "MirrorShield",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Mirror Shield"
|
"Mirror Shield"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "MirrorShield"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Dungeon Map",
|
"name": "Dungeon Map",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "DungeonMap",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Dungeon Map"
|
"Dungeon Map"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "DungeonMap"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Aladdin's Lamp",
|
"name": "Aladdin's Lamp",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "AladdinsLamp",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Aladdin's Lamp"
|
"Aladdin's Lamp"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "AladdinsLamp"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Heart-Piercer",
|
"name": "Heart-Piercer",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "CompositeBow",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Heart-Piercer Bow"
|
"Heart-Piercer Bow"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "CompositeBow"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Wood Bow",
|
"name": "Wood Bow",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "WoodBow",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [ "Fyndhorn Bow" ]
|
"startBattleWithCard": [
|
||||||
}
|
"Fyndhorn Bow"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
"iconName": "WoodBow"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Sandals",
|
"name": "Sandals",
|
||||||
"equipmentSlot": "Boots",
|
"equipmentSlot": "Boots",
|
||||||
"iconName": "Sandals",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"moveSpeed": 1.1
|
"moveSpeed": 1.1
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "Sandals"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Gold Boots",
|
"name": "Gold Boots",
|
||||||
"equipmentSlot": "Boots",
|
"equipmentSlot": "Boots",
|
||||||
"iconName": "GoldBoots",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"lifeModifier": 2,
|
"lifeModifier": 2,
|
||||||
"moveSpeed": 1.3
|
"moveSpeed": 1.3
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "GoldBoots"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Gold Shield",
|
"name": "Gold Shield",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "GoldShield",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"lifeModifier": 3
|
"lifeModifier": 3
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "GoldShield"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Gold Armor",
|
"name": "Gold Armor",
|
||||||
"equipmentSlot": "Body",
|
"equipmentSlot": "Body",
|
||||||
"iconName": "GoldArmor",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"lifeModifier": 4
|
"lifeModifier": 4
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "GoldArmor"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Dark Boots",
|
"name": "Dark Boots",
|
||||||
"equipmentSlot": "Boots",
|
"equipmentSlot": "Boots",
|
||||||
"iconName": "DarkBoots",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
|
"lifeModifier": -2,
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Clattering Augur"
|
"Clattering Augur"
|
||||||
],
|
],
|
||||||
"lifeModifier": -2,
|
|
||||||
"moveSpeed": 1.3
|
"moveSpeed": 1.3
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "DarkBoots"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Dark Shield",
|
"name": "Dark Shield",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "DarkShield",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
|
"lifeModifier": -3,
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Barrier of Bones"
|
"Barrier of Bones"
|
||||||
],
|
]
|
||||||
"lifeModifier": -3
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "DarkShield"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Dark Armor",
|
"name": "Dark Armor",
|
||||||
"equipmentSlot": "Body",
|
"equipmentSlot": "Body",
|
||||||
"iconName": "DarkArmor",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
|
"lifeModifier": -4,
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Skeletal Snake"
|
"Skeletal Snake"
|
||||||
],
|
]
|
||||||
"lifeModifier": -4
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "DarkArmor"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Blood Vial",
|
"name": "Blood Vial",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "Blood",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"c_a_blood_draw"
|
"c_a_blood_draw"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "Blood"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Charm",
|
"name": "Charm",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "Clue",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"c_a_clue_draw"
|
"c_a_clue_draw"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "Clue"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Snack",
|
"name": "Snack",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "Cheese",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"c_a_food_sac"
|
"c_a_food_sac"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "Cheese"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Change",
|
"name": "Change",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "Gold",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"c_a_gold_draw"
|
"c_a_gold_draw"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "Gold"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Treasure",
|
"name": "Treasure",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "Treasure",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"c_a_treasure_sac"
|
"c_a_treasure_sac"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "Treasure"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Magic Shard",
|
"name": "Magic Shard",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "Shard",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"c_e_shard_draw"
|
"c_e_shard_draw"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "Shard"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Mad Staff",
|
"name": "Mad Staff",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "MadStaff",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Power Struggle"
|
"Power Struggle"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "MadStaff"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Dark Amulet",
|
"name": "Dark Amulet",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "DarkAmulet",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Necropolis of Azar"
|
"Necropolis of Azar"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "DarkAmulet"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Pandora's Box",
|
"name": "Pandora's Box",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "PandorasBox",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Pandora's Box"
|
"Pandora's Box"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "PandorasBox"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Disrupting Scepter",
|
"name": "Disrupting Scepter",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "DisruptingScepter",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Disrupting Scepter"
|
"Disrupting Scepter"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "DisruptingScepter"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Entrancing Lyre",
|
"name": "Entrancing Lyre",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "EntrancingLyre",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Entrancing Lyre"
|
"Entrancing Lyre"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "EntrancingLyre"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Heavy Arbalest",
|
"name": "Heavy Arbalest",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "HeavyArbalest",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Heavy Arbalest"
|
"Heavy Arbalest"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "HeavyArbalest"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Ring of Three Wishes",
|
"name": "Ring of Three Wishes",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "RingofThreeWishes",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Ring of Three Wishes"
|
"Ring of Three Wishes"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "RingofThreeWishes"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "The Blackstaff of Waterdeep",
|
"name": "The Blackstaff of Waterdeep",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "TheBlackstaffofWaterdeep",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"The Blackstaff of Waterdeep"
|
"The Blackstaff of Waterdeep"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "TheBlackstaffofWaterdeep"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Unerring Sling",
|
"name": "Unerring Sling",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "UnerringSling",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Unerring Sling"
|
"Unerring Sling"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "UnerringSling"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Jeweled Amulet",
|
"name": "Jeweled Amulet",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "JeweledAmulet",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Jeweled Amulet"
|
"Jeweled Amulet"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "JeweledAmulet"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Traveler's Amulet",
|
"name": "Traveler's Amulet",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "TravelersAmulet",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Traveler's Amulet"
|
"Traveler's Amulet"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "TravelersAmulet"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Relic Amulet",
|
"name": "Relic Amulet",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "RelicAmulet",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Relic Amulet"
|
"Relic Amulet"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "RelicAmulet"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Manasight Amulet",
|
"name": "Manasight Amulet",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "RelicAmulet",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"colorView": true
|
"colorView": true
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "RelicAmulet"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Amulet of Kroog",
|
"name": "Amulet of Kroog",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "AmuletofKroog",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Amulet of Kroog"
|
"Amulet of Kroog"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "AmuletofKroog"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Amulet of Vigor",
|
"name": "Amulet of Vigor",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "AmuletofVigor",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Amulet of Vigor"
|
"Amulet of Vigor"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "AmuletofVigor"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Veilstone Amulet",
|
"name": "Veilstone Amulet",
|
||||||
"equipmentSlot": "Neck",
|
"equipmentSlot": "Neck",
|
||||||
"iconName": "VeilstoneAmulet",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Veilstone Amulet"
|
"Veilstone Amulet"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "VeilstoneAmulet"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Jandor's Ring",
|
"name": "Jandor's Ring",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "JandorsRing",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Jandor's Ring"
|
"Jandor's Ring"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "JandorsRing"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Jinxed Ring",
|
"name": "Jinxed Ring",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "JinxedRing",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"opponent": {
|
"opponent": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Jinxed Ring"
|
"Jinxed Ring"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "JinxedRing"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Nine-Ringed Bo",
|
"name": "Nine-Ringed Bo",
|
||||||
"equipmentSlot": "Left",
|
"equipmentSlot": "Left",
|
||||||
"iconName": "Nine-RingedBo",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Nine-Ringed Bo"
|
"Nine-Ringed Bo"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "Nine-RingedBo"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Ring of Immortals",
|
"name": "Ring of Immortals",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "RingofImmortals",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Ring of Immortals"
|
"Ring of Immortals"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "RingofImmortals"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Prism Ring",
|
"name": "Prism Ring",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "PrismRing",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Prism Ring"
|
"Prism Ring"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "PrismRing"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Ring of Renewal",
|
"name": "Ring of Renewal",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "RingofRenewal",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Ring of Renewal"
|
"Ring of Renewal"
|
||||||
]
|
]
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
"iconName": "RingofRenewal"
|
||||||
|
},
|
||||||
|
{
|
||||||
"name": "Kite Shield",
|
"name": "Kite Shield",
|
||||||
"equipmentSlot": "Right",
|
"equipmentSlot": "Right",
|
||||||
"iconName": "KiteShield",
|
|
||||||
"effect": {
|
"effect": {
|
||||||
"startBattleWithCard": [
|
"startBattleWithCard": [
|
||||||
"Kite Shield"
|
"Kite Shield"
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
}
|
"iconName": "KiteShield"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
Reference in New Issue
Block a user