mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 02:08:00 +00:00
added item editor
This commit is contained in:
@@ -14,6 +14,9 @@ public class EditorMainWindow extends JFrame {
|
||||
BorderLayout layout=new BorderLayout();
|
||||
setLayout(layout);
|
||||
add(tabs);
|
||||
tabs.addTab("POI",new PointOfInterestEditor());
|
||||
tabs.addTab("World",new WorldEditor());
|
||||
tabs.addTab("Items",new ItemsEditor());
|
||||
tabs.addTab("Enemies",new EnemyEditor());
|
||||
setVisible(true);
|
||||
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 javax.swing.*;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
@@ -15,6 +13,7 @@ public class EnemyEdit extends JComponent {
|
||||
|
||||
|
||||
JTextField nameField=new JTextField();
|
||||
JTextField colorField=new JTextField();
|
||||
JSpinner lifeFiled= new JSpinner(new SpinnerNumberModel(0, 0, 1000, 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));
|
||||
@@ -30,7 +29,7 @@ public class EnemyEdit extends 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("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("Sprite:")); center.add(atlas);
|
||||
center.add(new JLabel("Equipment:")); center.add(equipment);
|
||||
center.add(new JLabel("Colors:")); center.add(colorField);
|
||||
BorderLayout layout=new BorderLayout();
|
||||
setLayout(layout);
|
||||
add(center,BorderLayout.PAGE_START);
|
||||
add(rewards,BorderLayout.CENTER);
|
||||
add(preview,BorderLayout.LINE_START);
|
||||
|
||||
equipment.getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
EnemyEdit.this.updateEnemy();
|
||||
}
|
||||
}));
|
||||
atlas.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
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();
|
||||
}
|
||||
});
|
||||
equipment.getDocument().addDocumentListener(new DocumentChangeListener(() -> EnemyEdit.this.updateEnemy()));
|
||||
atlas.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(() -> EnemyEdit.this.updateEnemy()));
|
||||
colorField.getDocument().addDocumentListener(new DocumentChangeListener(() -> 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());
|
||||
speed.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||
difficulty.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||
spawnRate.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||
rewards.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||
lifeFiled.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||
refresh();
|
||||
}
|
||||
|
||||
@@ -113,6 +64,7 @@ public class EnemyEdit extends JComponent {
|
||||
if(currentData==null||updating)
|
||||
return;
|
||||
currentData.name=nameField.getText();
|
||||
currentData.colors=colorField.getText();
|
||||
currentData.life= (int) lifeFiled.getValue();
|
||||
currentData.sprite= atlas.getEdit().getText();
|
||||
if(equipment.getText().isEmpty())
|
||||
@@ -141,6 +93,7 @@ public class EnemyEdit extends JComponent {
|
||||
}
|
||||
updating=true;
|
||||
nameField.setText(currentData.name);
|
||||
colorField.setText(currentData.colors);
|
||||
lifeFiled.setValue(currentData.life);
|
||||
atlas.getEdit().setText(currentData.sprite);
|
||||
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.
|
||||
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() {
|
||||
Array<IPaperCard> startCards=new Array<>();
|
||||
if(startBattleWithCard != null) {
|
||||
|
||||
@@ -23,6 +23,20 @@ public class ItemData {
|
||||
public String iconName;
|
||||
public boolean questItem=false;
|
||||
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()
|
||||
{
|
||||
@@ -67,4 +81,5 @@ public class ItemData {
|
||||
result += effect.getDescription();
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,283 +1,283 @@
|
||||
[
|
||||
{
|
||||
{
|
||||
"name": "Sol Ring",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "SolRing",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Sol Ring"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "SolRing"
|
||||
},
|
||||
{
|
||||
"name": "Mox Emerald",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "MoxEmerald",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Mox Emerald"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
"iconName": "MoxEmerald"
|
||||
},
|
||||
{
|
||||
"name": "Black Lotus",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "BlackLotus",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Black Lotus"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "BlackLotus"
|
||||
},
|
||||
{
|
||||
"name": "Mox Jet",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "MoxJet",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Mox Jet"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "MoxJet"
|
||||
},
|
||||
{
|
||||
"name": "Mox Pearl",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "MoxPearl",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Mox Pearl"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
"iconName": "MoxPearl"
|
||||
},
|
||||
{
|
||||
"name": "Mox Ruby",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "MoxRuby",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Mox Ruby"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "MoxRuby"
|
||||
},
|
||||
{
|
||||
"name": "Mox Sapphire",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "MoxSapphire",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Mox Sapphire"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "MoxSapphire"
|
||||
},
|
||||
{
|
||||
"name": "Battle Standard",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "BattleStandard",
|
||||
"effect": {
|
||||
"lifeModifier": -1,
|
||||
"startBattleWithCard": [
|
||||
"r_1_1_goblin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "BattleStandard"
|
||||
},
|
||||
{
|
||||
"name": "Life Amulet",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "LifeAmulet",
|
||||
"effect": {
|
||||
"lifeModifier": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "LifeAmulet"
|
||||
},
|
||||
{
|
||||
"name": "Red Key",
|
||||
"iconName": "RedKey",
|
||||
"description": "A mysterious red key.",
|
||||
"iconName": "RedKey",
|
||||
"questItem": true
|
||||
},
|
||||
{
|
||||
},
|
||||
{
|
||||
"name": "White Key",
|
||||
"iconName": "WhiteKey",
|
||||
"description": "A mysterious white key.",
|
||||
"iconName": "WhiteKey",
|
||||
"questItem": true
|
||||
},
|
||||
{
|
||||
},
|
||||
{
|
||||
"name": "Blue Key",
|
||||
"iconName": "BlueKey",
|
||||
"description": "A mysterious blue key.",
|
||||
"iconName": "BlueKey",
|
||||
"questItem": true
|
||||
},
|
||||
{
|
||||
},
|
||||
{
|
||||
"name": "Green Key",
|
||||
"iconName": "GreenKey",
|
||||
"description": "A mysterious green key.",
|
||||
"iconName": "GreenKey",
|
||||
"questItem": true
|
||||
},
|
||||
{
|
||||
},
|
||||
{
|
||||
"name": "Black Key",
|
||||
"iconName": "BlackKey",
|
||||
"description": "A mysterious black key.",
|
||||
"iconName": "BlackKey",
|
||||
"questItem": true
|
||||
},
|
||||
{
|
||||
},
|
||||
{
|
||||
"name": "Strange Key",
|
||||
"iconName": "StrangeKey",
|
||||
"description": "A mysterious key.",
|
||||
"iconName": "StrangeKey",
|
||||
"questItem": true
|
||||
},
|
||||
{
|
||||
},
|
||||
{
|
||||
"name": "Steel Sword",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "SteelSword",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Greatsword"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "SteelSword"
|
||||
},
|
||||
{
|
||||
"name": "Axt",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "SteelAxt",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Bonesplitter"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "SteelAxt"
|
||||
},
|
||||
{
|
||||
"name": "Steel Boots",
|
||||
"equipmentSlot": "Boots",
|
||||
"iconName": "SteelBoots",
|
||||
"cost": 500,
|
||||
"effect": {
|
||||
"lifeModifier": 1,
|
||||
"moveSpeed": 1.2
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "SteelBoots",
|
||||
"cost": 500
|
||||
},
|
||||
{
|
||||
"name": "Steel Shield",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "SteelShield",
|
||||
"cost": 500,
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"w_0_3_wall_defender"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "SteelShield",
|
||||
"cost": 500
|
||||
},
|
||||
{
|
||||
"name": "Steel Armor",
|
||||
"equipmentSlot": "Body",
|
||||
"cost": 500,
|
||||
"iconName": "SteelArmor",
|
||||
"effect": {
|
||||
"lifeModifier": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "SteelArmor",
|
||||
"cost": 500
|
||||
},
|
||||
{
|
||||
"name": "Leather Boots",
|
||||
"equipmentSlot": "Boots",
|
||||
"iconName": "LeatherBoots",
|
||||
"effect": {
|
||||
"moveSpeed": 1.15
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "LeatherBoots"
|
||||
},
|
||||
{
|
||||
"name": "Jungle Shield",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "JungleShield",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"g_0_1_plant"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "JungleShield"
|
||||
},
|
||||
{
|
||||
"name": "Dagger",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "Dagger",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Spare Dagger"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "Dagger"
|
||||
},
|
||||
{
|
||||
"name": "Cheat",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "Goose",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Blightsteel Colossus",
|
||||
"Lightning Greaves"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "Goose"
|
||||
},
|
||||
{
|
||||
"name": "Aladdin's Ring",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "AladdinsRing",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Aladdin's Ring"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "AladdinsRing"
|
||||
},
|
||||
{
|
||||
"name": "Spell Book",
|
||||
"iconName": "SpellBook",
|
||||
"equipmentSlot": "Left",
|
||||
"effect": {
|
||||
"changeStartCards": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "SpellBook"
|
||||
},
|
||||
{
|
||||
"name": "Cursed Ring",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "CursedRing",
|
||||
"effect": {
|
||||
"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"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "CursedRing"
|
||||
},
|
||||
{
|
||||
"name": "Mithril Boots",
|
||||
"equipmentSlot": "Boots",
|
||||
"iconName": "MithrilBoots",
|
||||
"cost": 1500,
|
||||
"effect": {
|
||||
"lifeModifier": 2,
|
||||
"moveSpeed": 1.3
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "MithrilBoots",
|
||||
"cost": 1500
|
||||
},
|
||||
{
|
||||
"name": "Mithril Shield",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "MithrilShield",
|
||||
"cost": 1500,
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"c_0_4_a_wall_defender"
|
||||
]
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"iconName": "MithrilShield",
|
||||
"cost": 1500
|
||||
},
|
||||
{
|
||||
"name": "Mithril Armor",
|
||||
"equipmentSlot": "Body",
|
||||
"iconName": "MithrilArmor",
|
||||
"cost": 1500,
|
||||
"effect": {
|
||||
"lifeModifier": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "MithrilArmor",
|
||||
"cost": 1500
|
||||
},
|
||||
{
|
||||
"name": "Death Ring",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "DeathRing",
|
||||
"effect": {
|
||||
"opponent": {
|
||||
"startBattleWithCard": [
|
||||
@@ -286,421 +286,424 @@
|
||||
"c_0_1_a_goblin_construct_noblock_ping"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "DeathRing"
|
||||
},
|
||||
{
|
||||
"name": "Flame Sword",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "FlameSword",
|
||||
"effect": {
|
||||
"opponent": {
|
||||
"lifeModifier": -5
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "FlameSword"
|
||||
},
|
||||
{
|
||||
"name": "Mirror Shield",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "MirrorShield",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Mirror Shield"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "MirrorShield"
|
||||
},
|
||||
{
|
||||
"name": "Dungeon Map",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "DungeonMap",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Dungeon Map"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "DungeonMap"
|
||||
},
|
||||
{
|
||||
"name": "Aladdin's Lamp",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "AladdinsLamp",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Aladdin's Lamp"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "AladdinsLamp"
|
||||
},
|
||||
{
|
||||
"name": "Heart-Piercer",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "CompositeBow",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Heart-Piercer Bow"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "CompositeBow"
|
||||
},
|
||||
{
|
||||
"name": "Wood Bow",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "WoodBow",
|
||||
"effect": {
|
||||
"startBattleWithCard": [ "Fyndhorn Bow" ]
|
||||
}
|
||||
"startBattleWithCard": [
|
||||
"Fyndhorn Bow"
|
||||
]
|
||||
},
|
||||
{
|
||||
"iconName": "WoodBow"
|
||||
},
|
||||
{
|
||||
"name": "Sandals",
|
||||
"equipmentSlot": "Boots",
|
||||
"iconName": "Sandals",
|
||||
"effect": {
|
||||
"moveSpeed": 1.1
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "Sandals"
|
||||
},
|
||||
{
|
||||
"name": "Gold Boots",
|
||||
"equipmentSlot": "Boots",
|
||||
"iconName": "GoldBoots",
|
||||
"effect": {
|
||||
"lifeModifier": 2,
|
||||
"moveSpeed": 1.3
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "GoldBoots"
|
||||
},
|
||||
{
|
||||
"name": "Gold Shield",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "GoldShield",
|
||||
"effect": {
|
||||
"lifeModifier": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "GoldShield"
|
||||
},
|
||||
{
|
||||
"name": "Gold Armor",
|
||||
"equipmentSlot": "Body",
|
||||
"iconName": "GoldArmor",
|
||||
"effect": {
|
||||
"lifeModifier": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "GoldArmor"
|
||||
},
|
||||
{
|
||||
"name": "Dark Boots",
|
||||
"equipmentSlot": "Boots",
|
||||
"iconName": "DarkBoots",
|
||||
"effect": {
|
||||
"lifeModifier": -2,
|
||||
"startBattleWithCard": [
|
||||
"Clattering Augur"
|
||||
],
|
||||
"lifeModifier": -2,
|
||||
"moveSpeed": 1.3
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "DarkBoots"
|
||||
},
|
||||
{
|
||||
"name": "Dark Shield",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "DarkShield",
|
||||
"effect": {
|
||||
"lifeModifier": -3,
|
||||
"startBattleWithCard": [
|
||||
"Barrier of Bones"
|
||||
],
|
||||
"lifeModifier": -3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"iconName": "DarkShield"
|
||||
},
|
||||
{
|
||||
"name": "Dark Armor",
|
||||
"equipmentSlot": "Body",
|
||||
"iconName": "DarkArmor",
|
||||
"effect": {
|
||||
"lifeModifier": -4,
|
||||
"startBattleWithCard": [
|
||||
"Skeletal Snake"
|
||||
],
|
||||
"lifeModifier": -4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"iconName": "DarkArmor"
|
||||
},
|
||||
{
|
||||
"name": "Blood Vial",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "Blood",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"c_a_blood_draw"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "Blood"
|
||||
},
|
||||
{
|
||||
"name": "Charm",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "Clue",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"c_a_clue_draw"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "Clue"
|
||||
},
|
||||
{
|
||||
"name": "Snack",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "Cheese",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"c_a_food_sac"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "Cheese"
|
||||
},
|
||||
{
|
||||
"name": "Change",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "Gold",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"c_a_gold_draw"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "Gold"
|
||||
},
|
||||
{
|
||||
"name": "Treasure",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "Treasure",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"c_a_treasure_sac"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "Treasure"
|
||||
},
|
||||
{
|
||||
"name": "Magic Shard",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "Shard",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"c_e_shard_draw"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "Shard"
|
||||
},
|
||||
{
|
||||
"name": "Mad Staff",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "MadStaff",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Power Struggle"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "MadStaff"
|
||||
},
|
||||
{
|
||||
"name": "Dark Amulet",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "DarkAmulet",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Necropolis of Azar"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "DarkAmulet"
|
||||
},
|
||||
{
|
||||
"name": "Pandora's Box",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "PandorasBox",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Pandora's Box"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "PandorasBox"
|
||||
},
|
||||
{
|
||||
"name": "Disrupting Scepter",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "DisruptingScepter",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Disrupting Scepter"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "DisruptingScepter"
|
||||
},
|
||||
{
|
||||
"name": "Entrancing Lyre",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "EntrancingLyre",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Entrancing Lyre"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "EntrancingLyre"
|
||||
},
|
||||
{
|
||||
"name": "Heavy Arbalest",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "HeavyArbalest",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Heavy Arbalest"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "HeavyArbalest"
|
||||
},
|
||||
{
|
||||
"name": "Ring of Three Wishes",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "RingofThreeWishes",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Ring of Three Wishes"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "RingofThreeWishes"
|
||||
},
|
||||
{
|
||||
"name": "The Blackstaff of Waterdeep",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "TheBlackstaffofWaterdeep",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"The Blackstaff of Waterdeep"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "TheBlackstaffofWaterdeep"
|
||||
},
|
||||
{
|
||||
"name": "Unerring Sling",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "UnerringSling",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Unerring Sling"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "UnerringSling"
|
||||
},
|
||||
{
|
||||
"name": "Jeweled Amulet",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "JeweledAmulet",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Jeweled Amulet"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "JeweledAmulet"
|
||||
},
|
||||
{
|
||||
"name": "Traveler's Amulet",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "TravelersAmulet",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Traveler's Amulet"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "TravelersAmulet"
|
||||
},
|
||||
{
|
||||
"name": "Relic Amulet",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "RelicAmulet",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Relic Amulet"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "RelicAmulet"
|
||||
},
|
||||
{
|
||||
"name": "Manasight Amulet",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "RelicAmulet",
|
||||
"effect": {
|
||||
"colorView": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "RelicAmulet"
|
||||
},
|
||||
{
|
||||
"name": "Amulet of Kroog",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "AmuletofKroog",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Amulet of Kroog"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "AmuletofKroog"
|
||||
},
|
||||
{
|
||||
"name": "Amulet of Vigor",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "AmuletofVigor",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Amulet of Vigor"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "AmuletofVigor"
|
||||
},
|
||||
{
|
||||
"name": "Veilstone Amulet",
|
||||
"equipmentSlot": "Neck",
|
||||
"iconName": "VeilstoneAmulet",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Veilstone Amulet"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "VeilstoneAmulet"
|
||||
},
|
||||
{
|
||||
"name": "Jandor's Ring",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "JandorsRing",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Jandor's Ring"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "JandorsRing"
|
||||
},
|
||||
{
|
||||
"name": "Jinxed Ring",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "JinxedRing",
|
||||
"effect": {
|
||||
"opponent": {
|
||||
"startBattleWithCard": [
|
||||
"Jinxed Ring"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "JinxedRing"
|
||||
},
|
||||
{
|
||||
"name": "Nine-Ringed Bo",
|
||||
"equipmentSlot": "Left",
|
||||
"iconName": "Nine-RingedBo",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Nine-Ringed Bo"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "Nine-RingedBo"
|
||||
},
|
||||
{
|
||||
"name": "Ring of Immortals",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "RingofImmortals",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Ring of Immortals"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "RingofImmortals"
|
||||
},
|
||||
{
|
||||
"name": "Prism Ring",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "PrismRing",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Prism Ring"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "PrismRing"
|
||||
},
|
||||
{
|
||||
"name": "Ring of Renewal",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "RingofRenewal",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Ring of Renewal"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"iconName": "RingofRenewal"
|
||||
},
|
||||
{
|
||||
"name": "Kite Shield",
|
||||
"equipmentSlot": "Right",
|
||||
"iconName": "KiteShield",
|
||||
"effect": {
|
||||
"startBattleWithCard": [
|
||||
"Kite Shield"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"iconName": "KiteShield"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user