mirror of
https://github.com/AndorsTrailRelease/ATCS.git
synced 2025-10-27 18:44:03 +01:00
Merged all changes from my fork. They are needed to work on AT v0.7.10
This commit is contained in:
@@ -47,6 +47,9 @@ import java.util.Vector;
|
||||
import java.util.zip.DeflaterOutputStream;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
import com.gpl.rpg.atcontentstudio.model.GameSource.Type;
|
||||
import com.gpl.rpg.atcontentstudio.model.maps.TMXMapSet;
|
||||
|
||||
import tiled.core.AnimatedTile;
|
||||
import tiled.core.Map;
|
||||
import tiled.core.MapLayer;
|
||||
@@ -238,7 +241,15 @@ public class TMXMapWriter
|
||||
} else {
|
||||
w.startElement("tileset");
|
||||
w.writeAttribute("firstgid", getFirstGidForTileset(set));
|
||||
if (set.sheet != null && set.sheet.parent.getDataType() == Type.source) {
|
||||
String fileName = set.getName();
|
||||
if (fileName.length() > 3 && !(fileName.substring(fileName.length() - 4).equalsIgnoreCase(".png"))) {
|
||||
fileName += ".png";
|
||||
}
|
||||
w.writeAttribute("source", (TMXMapSet.DEFAULT_REL_PATH_TO_DRAWABLE + fileName).replace("\\", "/"));
|
||||
} else {
|
||||
w.writeAttribute("source", getRelativePath(wp, source));
|
||||
}
|
||||
if (set.getBaseDir() != null) {
|
||||
w.writeAttribute("basedir", set.getBaseDir());
|
||||
}
|
||||
@@ -279,7 +290,15 @@ public class TMXMapWriter
|
||||
|
||||
if (tileBitmapFile != null) {
|
||||
w.startElement("image");
|
||||
if (set.sheet != null && set.sheet.parent.getDataType() == Type.source) {
|
||||
String fileName = set.getName();
|
||||
if (fileName.length() > 3 && !(fileName.substring(fileName.length() - 4).equalsIgnoreCase(".png"))) {
|
||||
fileName += ".png";
|
||||
}
|
||||
w.writeAttribute("source", (TMXMapSet.DEFAULT_REL_PATH_TO_DRAWABLE + fileName).replace("\\", "/"));
|
||||
} else {
|
||||
w.writeAttribute("source", getRelativePath(wp, tileBitmapFile));
|
||||
}
|
||||
if (set.sheetDimensions != null) {
|
||||
w.writeAttribute("width", set.sheetDimensions.width);
|
||||
w.writeAttribute("height", set.sheetDimensions.height);
|
||||
|
||||
@@ -11,6 +11,10 @@ import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Enumeration;
|
||||
@@ -74,6 +78,8 @@ import com.gpl.rpg.atcontentstudio.utils.FileUtils;
|
||||
public class Project implements ProjectTreeNode, Serializable {
|
||||
|
||||
private static final long serialVersionUID = 4807454973303366758L;
|
||||
private static final String drawablePath = TMXMapSet.DEFAULT_REL_PATH_TO_DRAWABLE.replace("\\", "/");
|
||||
|
||||
|
||||
//Every instance field that is not transient will be saved in this file.
|
||||
public static final String SETTINGS_FILE = ".project";
|
||||
@@ -1079,10 +1085,16 @@ public class Project implements ProjectTreeNode, Serializable {
|
||||
public void run() {
|
||||
Notification.addInfo("Exporting project \""+name+"\" as "+target.getAbsolutePath());
|
||||
|
||||
File tmpDir = exportProjectToTmpDir();
|
||||
|
||||
File tmpDir;
|
||||
try {
|
||||
tmpDir = exportProjectToTmpDir();
|
||||
FileUtils.writeToZip(tmpDir, target);
|
||||
FileUtils.deleteDir(tmpDir);
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Notification.addSuccess("Project \""+name+"\" exported as "+target.getAbsolutePath());
|
||||
}
|
||||
|
||||
@@ -1096,10 +1108,16 @@ public class Project implements ProjectTreeNode, Serializable {
|
||||
public void run() {
|
||||
Notification.addInfo("Exporting project \""+name+"\" into "+target.getAbsolutePath());
|
||||
|
||||
File tmpDir = exportProjectToTmpDir();
|
||||
|
||||
File tmpDir;
|
||||
try {
|
||||
tmpDir = exportProjectToTmpDir();
|
||||
FileUtils.copyOver(tmpDir, target);
|
||||
FileUtils.deleteDir(tmpDir);
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Notification.addSuccess("Project \""+name+"\" exported into "+target.getAbsolutePath());
|
||||
}
|
||||
|
||||
@@ -1107,7 +1125,7 @@ public class Project implements ProjectTreeNode, Serializable {
|
||||
});
|
||||
}
|
||||
|
||||
public File exportProjectToTmpDir() {
|
||||
public File exportProjectToTmpDir() throws IOException {
|
||||
File tmpDir = new File(baseFolder, "tmp");
|
||||
FileUtils.deleteDir(tmpDir);
|
||||
tmpDir.mkdir();
|
||||
@@ -1139,12 +1157,12 @@ public class Project implements ProjectTreeNode, Serializable {
|
||||
writtenFiles = new LinkedList<String>();
|
||||
for (File createdMapFile : createdContent.gameMaps.mapFolder.listFiles()) {
|
||||
if (createdMapFile.getName().equalsIgnoreCase("worldmap.xml")) continue;
|
||||
FileUtils.copyFile(createdMapFile, new File(tmpMapDir, createdMapFile.getName()));
|
||||
copyTmxConverted(createdMapFile.toPath(), Paths.get(tmpMapDir.getAbsolutePath(), createdMapFile.getName()));
|
||||
writtenFiles.add(createdMapFile.getName());
|
||||
}
|
||||
for (File alteredMapFile : alteredContent.gameMaps.mapFolder.listFiles()) {
|
||||
if (alteredMapFile.getName().equalsIgnoreCase("worldmap.xml")) continue;
|
||||
FileUtils.copyFile(alteredMapFile, new File(tmpMapDir, alteredMapFile.getName()));
|
||||
copyTmxConverted(alteredMapFile.toPath(), Paths.get(tmpMapDir.getAbsolutePath(), alteredMapFile.getName()));
|
||||
writtenFiles.add(alteredMapFile.getName());
|
||||
}
|
||||
writtenFilesPerDataType.put(TMXMap.class, writtenFiles);
|
||||
@@ -1177,6 +1195,16 @@ public class Project implements ProjectTreeNode, Serializable {
|
||||
return tmpDir;
|
||||
}
|
||||
|
||||
private void copyTmxConverted(Path from, Path to) throws IOException {
|
||||
String xml = new String(Files.readAllBytes(from), StandardCharsets.UTF_8);
|
||||
xml = xml.replace("../../altered/spritesheets/", drawablePath);
|
||||
xml = xml.replace("../../created/spritesheets/", drawablePath);
|
||||
xml = xml.replace("../spritesheets/", drawablePath);
|
||||
xml = xml.replace("../spritesheets/", drawablePath);
|
||||
Files.write(to, xml.getBytes(StandardCharsets.UTF_8));
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public List<String> writeDataDeltaForDataType(GameDataCategory<? extends JSONElement> created, GameDataCategory<? extends JSONElement> altered, GameDataCategory<? extends JSONElement> source, Class<? extends JSONElement> gdeClass, File targetFolder) {
|
||||
List<String> filenamesToWrite = new LinkedList<String>();
|
||||
|
||||
@@ -83,6 +83,7 @@ public class Item extends JSONElement {
|
||||
public Integer increase_block_chance = null;
|
||||
public Integer increase_damage_resistance = null;
|
||||
public Double critical_multiplier = null;
|
||||
public Integer damage_modifier = null;
|
||||
}
|
||||
|
||||
public static class ConditionEffect {
|
||||
@@ -202,6 +203,7 @@ public class Item extends JSONElement {
|
||||
//TODO correct game data, to unify format.
|
||||
// this.equip_effect.critical_multiplier = JSONElement.getDouble((Number) equipEffect.get("setCriticalMultiplier"));
|
||||
if (equipEffect.get("setCriticalMultiplier") != null) this.equip_effect.critical_multiplier = JSONElement.getDouble(Double.parseDouble(equipEffect.get("setCriticalMultiplier").toString()));
|
||||
this.equip_effect.damage_modifier = JSONElement.getInteger((Number) equipEffect.get("setNonWeaponDamageModifier"));
|
||||
|
||||
List conditionsJson = (List) equipEffect.get("addedConditions");
|
||||
if (conditionsJson != null && !conditionsJson.isEmpty()) {
|
||||
@@ -216,6 +218,7 @@ public class Item extends JSONElement {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Map hitEffect = (Map) itemJson.get("hitEffect");
|
||||
if (hitEffect != null) {
|
||||
this.hit_effect = new HitEffect();
|
||||
@@ -426,6 +429,7 @@ public class Item extends JSONElement {
|
||||
clone.has_manual_price = this.has_manual_price;
|
||||
if (this.equip_effect != null) {
|
||||
clone.equip_effect = new EquipEffect();
|
||||
clone.equip_effect.damage_modifier = this.equip_effect.damage_modifier;
|
||||
clone.equip_effect.critical_multiplier = this.equip_effect.critical_multiplier;
|
||||
clone.equip_effect.damage_boost_max = this.equip_effect.damage_boost_max;
|
||||
clone.equip_effect.damage_boost_min = this.equip_effect.damage_boost_min;
|
||||
@@ -642,6 +646,7 @@ public class Item extends JSONElement {
|
||||
if (this.equip_effect.increase_block_chance != null) equipEffectJson.put("increaseBlockChance", this.equip_effect.increase_block_chance);
|
||||
if (this.equip_effect.increase_damage_resistance != null) equipEffectJson.put("increaseDamageResistance", this.equip_effect.increase_damage_resistance);
|
||||
if (this.equip_effect.critical_multiplier != null) equipEffectJson.put("setCriticalMultiplier", this.equip_effect.critical_multiplier);
|
||||
if (this.equip_effect.damage_modifier != null) equipEffectJson.put("setNonWeaponDamageModifier", this.equip_effect.damage_modifier);
|
||||
if (this.equip_effect.conditions != null) {
|
||||
List conditionsJson = new ArrayList();
|
||||
equipEffectJson.put("addedConditions", conditionsJson);
|
||||
|
||||
@@ -26,10 +26,13 @@ public class Requirement extends JSONElement {
|
||||
countedItemTypes.add(RequirementType.inventoryRemove);
|
||||
countedItemTypes.add(RequirementType.inventoryKeep);
|
||||
countedItemTypes.add(RequirementType.usedItem);
|
||||
countedItemTypes.add(RequirementType.wear);
|
||||
countedItemTypes.add(RequirementType.wearRemove);
|
||||
COMPATIBLE_TYPES.put(RequirementType.inventoryRemove, countedItemTypes);
|
||||
COMPATIBLE_TYPES.put(RequirementType.inventoryKeep, countedItemTypes);
|
||||
COMPATIBLE_TYPES.put(RequirementType.usedItem, countedItemTypes);
|
||||
|
||||
COMPATIBLE_TYPES.put(RequirementType.wear, countedItemTypes);
|
||||
COMPATIBLE_TYPES.put(RequirementType.wearRemove, countedItemTypes);
|
||||
}
|
||||
|
||||
//Available from parsed state
|
||||
@@ -55,7 +58,9 @@ public class Requirement extends JSONElement {
|
||||
consumedBonemeals,
|
||||
hasActorCondition,
|
||||
factionScore,
|
||||
random
|
||||
random,
|
||||
factionScoreEquals,
|
||||
wearRemove
|
||||
}
|
||||
|
||||
public enum SkillID {
|
||||
@@ -91,6 +96,7 @@ public class Requirement extends JSONElement {
|
||||
,weaponProficiencyAxe
|
||||
,weaponProficiencyBlunt
|
||||
,weaponProficiencyUnarmed
|
||||
,weaponProficiencyPole
|
||||
,armorProficiencyShield
|
||||
,armorProficiencyUnarmored
|
||||
,armorProficiencyLight
|
||||
@@ -166,6 +172,7 @@ public class Requirement extends JSONElement {
|
||||
case inventoryRemove:
|
||||
case usedItem:
|
||||
case wear:
|
||||
case wearRemove:
|
||||
this.required_obj = proj.getItem(required_obj_id);
|
||||
break;
|
||||
case killedMonster:
|
||||
@@ -186,6 +193,7 @@ public class Requirement extends JSONElement {
|
||||
case spentGold:
|
||||
case timerElapsed:
|
||||
case factionScore:
|
||||
case factionScoreEquals:
|
||||
case random:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -258,7 +258,7 @@ public class TMXMap extends GameDataElement {
|
||||
if (getDataType() == GameSource.Type.source) {
|
||||
writer.writeMap(tmxMap, baos, tmxFile.getAbsolutePath());
|
||||
} else {
|
||||
writer.writeMap(tmxMap, baos, getProject().baseContent.gameMaps.mapFolder.getAbsolutePath()+File.separator+"placeholder.tmx");
|
||||
writer.writeMap(tmxMap, baos, ((TMXMapSet)this.parent).mapFolder.getAbsolutePath()+File.separator+"placeholder.tmx");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Notification.addError("Error while converting map "+getDesc()+" to XML: "+e.getMessage());
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
package com.gpl.rpg.atcontentstudio.model.tools.i18n;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.Writer;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
@@ -17,7 +20,7 @@ public class PoPotWriter {
|
||||
|
||||
public static void writePoFile(Map<String, List<String>> stringsResources, Map<String, String> translations, File destination) {
|
||||
try {
|
||||
FileWriter fw = new FileWriter(destination);
|
||||
Writer fw = new OutputStreamWriter(new FileOutputStream(destination), StandardCharsets.UTF_8);
|
||||
if (translations.get("") != null) {
|
||||
fw.write(translations.get(""));
|
||||
writeEndOfEntry(fw);
|
||||
|
||||
@@ -735,6 +735,8 @@ public class DialogueEditor extends JSONElementEditor {
|
||||
case inventoryKeep:
|
||||
case inventoryRemove:
|
||||
case usedItem:
|
||||
case wear:
|
||||
case wearRemove:
|
||||
requirementObj = addItemBox(pane, project, "Item: ", (Item) requirement.required_obj, writable, listener);
|
||||
requirementObjId = null;
|
||||
requirementValue = addIntegerField(pane, "Quantity: ", requirement.required_value, false, writable, listener);
|
||||
@@ -770,10 +772,10 @@ public class DialogueEditor extends JSONElementEditor {
|
||||
requirementObjId = addTextField(pane, "Faction ID:", requirement.required_obj_id, writable, listener);
|
||||
requirementValue = addIntegerField(pane, "Minimum score: ", requirement.required_value, true, writable, listener);
|
||||
break;
|
||||
case wear:
|
||||
requirementObj = addItemBox(pane, project, "Item: ", (Item) requirement.required_obj, writable, listener);
|
||||
requirementObjId = null;
|
||||
requirementValue = null;
|
||||
case factionScoreEquals:
|
||||
requirementObj = null;
|
||||
requirementObjId = addTextField(pane, "Faction ID:", requirement.required_obj_id, writable, listener);
|
||||
requirementValue = addIntegerField(pane, "Exact value: ", requirement.required_value, true, writable, listener);
|
||||
break;
|
||||
}
|
||||
requirementNegated = addBooleanBasedCheckBox(pane, "Negate this requirement.", requirement.negated, writable, listener);
|
||||
@@ -1174,7 +1176,7 @@ public class DialogueEditor extends JSONElementEditor {
|
||||
label.setIcon(new ImageIcon(DefaultIcons.getBonemealIcon()));
|
||||
} else if (req.type == Requirement.RequirementType.timerElapsed) {
|
||||
label.setIcon(new ImageIcon(DefaultIcons.getTimerIcon()));
|
||||
} else if (req.type == Requirement.RequirementType.factionScore) {
|
||||
} else if (req.type == Requirement.RequirementType.factionScore || req.type == Requirement.RequirementType.factionScoreEquals) {
|
||||
label.setIcon(new ImageIcon(DefaultIcons.getAlignmentIcon()));
|
||||
}
|
||||
if (req.type == null) {
|
||||
|
||||
@@ -82,6 +82,7 @@ public class ItemEditor extends JSONElementEditor {
|
||||
private JSpinner equipBoostBC;
|
||||
private JSpinner equipBoostCS;
|
||||
private JSpinner equipSetCM;
|
||||
private JSpinner equipSetDM;
|
||||
private JSpinner equipBoostDR;
|
||||
private JSpinner equipIncMoveCost;
|
||||
private JSpinner equipIncUseCost;
|
||||
@@ -217,6 +218,7 @@ public class ItemEditor extends JSONElementEditor {
|
||||
}
|
||||
equipDmgMin = addIntegerField(equipEffectPane, "Attack Damage min: ", equipEffect.damage_boost_min, true, item.writable, listener);
|
||||
equipDmgMax = addIntegerField(equipEffectPane, "Attack Damage max: ", equipEffect.damage_boost_max, true, item.writable, listener);
|
||||
equipSetDM = addIntegerField(equipEffectPane, "Damage modifier %: ", equipEffect.damage_modifier, 100, false, item.writable, listener);
|
||||
equipBoostHP = addIntegerField(equipEffectPane, "Boost max HP: ", equipEffect.max_hp_boost, true, item.writable, listener);
|
||||
equipBoostAP = addIntegerField(equipEffectPane, "Boost max AP: ", equipEffect.max_ap_boost, true, item.writable, listener);
|
||||
equipBoostAC = addIntegerField(equipEffectPane, "Boost attack chance: ", equipEffect.increase_attack_chance, true, item.writable, listener);
|
||||
@@ -1431,6 +1433,7 @@ public class ItemEditor extends JSONElementEditor {
|
||||
public static boolean isNull(Item.EquipEffect effect) {
|
||||
if (effect.conditions != null) return false;
|
||||
if (effect.critical_multiplier != null) return false;
|
||||
if (effect.damage_modifier != null) return false;
|
||||
if (effect.damage_boost_max != null) return false;
|
||||
if (effect.damage_boost_min != null) return false;
|
||||
if (effect.increase_attack_chance != null) return false;
|
||||
@@ -1619,6 +1622,10 @@ public class ItemEditor extends JSONElementEditor {
|
||||
equipEffect.critical_multiplier = (Double) value;
|
||||
updatePrice = true;
|
||||
updateEquip = true;
|
||||
} else if (source == equipSetDM) {
|
||||
equipEffect.damage_modifier = (Integer) value;
|
||||
updatePrice = true;
|
||||
updateEquip = true;
|
||||
} else if (source == equipBoostDR) {
|
||||
equipEffect.increase_damage_resistance = (Integer) value;
|
||||
updatePrice = true;
|
||||
|
||||
@@ -688,6 +688,8 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
|
||||
case inventoryKeep:
|
||||
case inventoryRemove:
|
||||
case usedItem:
|
||||
case wear:
|
||||
case wearRemove:
|
||||
requirementObj = addItemBox(pane, project, "Item: ", (Item) requirement.required_obj, writable, listener);
|
||||
requirementObjId = null;
|
||||
requirementValue = addIntegerField(pane, "Quantity: ", requirement.required_value, false, writable, listener);
|
||||
@@ -722,10 +724,10 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
|
||||
requirementObjId = addTextField(pane, "Faction ID:", requirement.required_obj_id, writable, listener);
|
||||
requirementValue = addIntegerField(pane, "Minimum score: ", requirement.required_value, true, writable, listener);
|
||||
break;
|
||||
case wear:
|
||||
requirementObj = addItemBox(pane, project, "Item: ", (Item) requirement.required_obj, writable, listener);
|
||||
requirementObjId = null;
|
||||
requirementValue = null;
|
||||
case factionScoreEquals:
|
||||
requirementObj = null;
|
||||
requirementObjId = addTextField(pane, "Faction ID:", requirement.required_obj_id, writable, listener);
|
||||
requirementValue = addIntegerField(pane, "Exact value: ", requirement.required_value, true, writable, listener);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class ItemsTableView extends ElementTableView {
|
||||
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return 33;
|
||||
return 43;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -62,20 +62,30 @@ public class ItemsTableView extends ElementTableView {
|
||||
case 16: return "On kill - AP min";
|
||||
case 17: return "On kill - AP max";
|
||||
case 18: return "On kill - # conditions";
|
||||
case 19: return "AD min";
|
||||
case 20: return "AD max";
|
||||
case 21: return "Max HP";
|
||||
case 22: return "Max AP";
|
||||
case 23: return "Attack cost";
|
||||
case 24: return "AC";
|
||||
case 25: return "BC";
|
||||
case 26: return "DR";
|
||||
case 27: return "CS";
|
||||
case 28: return "CM";
|
||||
case 29: return "Move cost";
|
||||
case 30: return "Use cost";
|
||||
case 31: return "Reequip cost";
|
||||
case 32: return "# conditions";
|
||||
case 19: return "On hit recv - HP min";
|
||||
case 20: return "On hit recv - HP max";
|
||||
case 21: return "On hit recv - AP min";
|
||||
case 22: return "On hit recv - AP max";
|
||||
case 23: return "On hit recv - # conditions";
|
||||
case 24: return "On hit recv - Tgt HP min";
|
||||
case 25: return "On hit recv - Tgt HP max";
|
||||
case 26: return "On hit recv - Tgt AP min";
|
||||
case 27: return "On hit recv - Tgt AP max";
|
||||
case 28: return "AD min";
|
||||
case 29: return "AD max";
|
||||
case 30: return "Damage modifier %";
|
||||
case 31: return "Max HP";
|
||||
case 32: return "Max AP";
|
||||
case 33: return "Attack cost";
|
||||
case 34: return "AC";
|
||||
case 35: return "BC";
|
||||
case 36: return "DR";
|
||||
case 37: return "CS";
|
||||
case 38: return "CM";
|
||||
case 39: return "Move cost";
|
||||
case 40: return "Use cost";
|
||||
case 41: return "Reequip cost";
|
||||
case 42: return "# conditions";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -103,20 +113,30 @@ public class ItemsTableView extends ElementTableView {
|
||||
case 16: return Integer.class;//"On kill - AP min";
|
||||
case 17: return Integer.class;//"On kill - AP max";
|
||||
case 18: return Integer.class;//"On kill - # conditions";
|
||||
case 19: return Integer.class;//"AD min";
|
||||
case 20: return Integer.class;//"AD max";
|
||||
case 21: return Integer.class;//"Max HP";
|
||||
case 22: return Integer.class;//"Max AP";
|
||||
case 23: return Integer.class;//"Attack cost";
|
||||
case 24: return Integer.class;//"AC";
|
||||
case 25: return Integer.class;//"BC";
|
||||
case 26: return Integer.class;//"DR";
|
||||
case 27: return Integer.class;//"CS";
|
||||
case 28: return Double.class;//"CM";
|
||||
case 29: return Integer.class;//"Move cost";
|
||||
case 30: return Integer.class;//"Use cost";
|
||||
case 31: return Integer.class;//"Reequip cost";
|
||||
case 32: return Integer.class;//"# conditions";
|
||||
case 19: return Integer.class;//"On hit recv - HP min";
|
||||
case 20: return Integer.class;//"On hit recv - HP max";
|
||||
case 21: return Integer.class;//"On hit recv - AP min";
|
||||
case 22: return Integer.class;//"On hit recv - AP max";
|
||||
case 23: return Integer.class;//"On hit recv - # conditions";
|
||||
case 24: return Integer.class;//"On hit recv - Tgt HP min";
|
||||
case 25: return Integer.class;//"On hit recv - Tgt HP max";
|
||||
case 26: return Integer.class;//"On hit recv - Tgt AP min";
|
||||
case 27: return Integer.class;//"On hit recv - Tgt AP max";
|
||||
case 28: return Integer.class;//"AD min";
|
||||
case 29: return Integer.class;//"AD max";
|
||||
case 30: return Integer.class;//"Damage modifier";
|
||||
case 31: return Integer.class;//"Max HP";
|
||||
case 32: return Integer.class;//"Max AP";
|
||||
case 33: return Integer.class;//"Attack cost";
|
||||
case 34: return Integer.class;//"AC";
|
||||
case 35: return Integer.class;//"BC";
|
||||
case 36: return Integer.class;//"DR";
|
||||
case 37: return Integer.class;//"CS";
|
||||
case 38: return Double.class;//"CM";
|
||||
case 39: return Integer.class;//"Move cost";
|
||||
case 40: return Integer.class;//"Use cost";
|
||||
case 41: return Integer.class;//"Reequip cost";
|
||||
case 42: return Integer.class;//"# conditions";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -177,20 +197,30 @@ public class ItemsTableView extends ElementTableView {
|
||||
case 16: return (!canUse && item.kill_effect != null) ? item.kill_effect.ap_boost_min : null;//"On kill - AP min";
|
||||
case 17: return (!canUse && item.kill_effect != null) ? item.kill_effect.ap_boost_max : null;//"On kill - AP max";
|
||||
case 18: return (!canUse && item.kill_effect != null && item.kill_effect.conditions_source != null) ? item.kill_effect.conditions_source.size() : null;//"On kill - # conditions";
|
||||
case 19: return (canEquip && item.equip_effect != null) ? item.equip_effect.damage_boost_min : null;//"AD min";
|
||||
case 20: return (canEquip && item.equip_effect != null) ? item.equip_effect.damage_boost_max : null;//"AD max";
|
||||
case 21: return (canEquip && item.equip_effect != null) ? item.equip_effect.max_hp_boost : null;//"Max HP";
|
||||
case 22: return (canEquip && item.equip_effect != null) ? item.equip_effect.max_ap_boost : null;//"Max AP";
|
||||
case 23: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_attack_cost : null;//"Attack cost";
|
||||
case 24: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_attack_chance : null;//"AC";
|
||||
case 25: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_block_chance : null;//"BC";
|
||||
case 26: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_damage_resistance : null;//"DR";
|
||||
case 27: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_critical_skill : null;//"CS";
|
||||
case 28: return (canEquip && item.equip_effect != null) ? item.equip_effect.critical_multiplier : null;//"CM";
|
||||
case 29: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_move_cost : null;//"Move cost";
|
||||
case 30: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_use_item_cost : null;//"Use cost";
|
||||
case 31: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_reequip_cost : null;//"Reequip cost";
|
||||
case 32: return (canEquip && item.equip_effect != null && item.equip_effect.conditions != null) ? item.equip_effect.conditions.size() : null;//"# conditions";
|
||||
case 19: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.hp_boost_min : null;//"On hit recv - HP min";
|
||||
case 20: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.hp_boost_max : null;//"On hit recv - HP max";
|
||||
case 21: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.ap_boost_min : null;//"On hit recv - AP min";
|
||||
case 22: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.ap_boost_max : null;//"On hit recv - AP max";
|
||||
case 23: return (!canUse && item.hit_received_effect != null && item.hit_received_effect.conditions_source != null) ? item.hit_received_effect.conditions_source.size() : null;//"On hit recv - # conditions";
|
||||
case 24: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.hp_boost_min : null;//"On hit recv - Tgt HP min";
|
||||
case 25: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.hp_boost_max : null;//"On hit recv - Tgt HP max";
|
||||
case 26: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.ap_boost_min : null;//"On hit recv - Tgt AP min";
|
||||
case 27: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.ap_boost_max : null;//"On hit recv - Tgt AP max";
|
||||
case 28: return (canEquip && item.equip_effect != null) ? item.equip_effect.damage_boost_min : null;//"AD min";
|
||||
case 29: return (canEquip && item.equip_effect != null) ? item.equip_effect.damage_boost_max : null;//"AD max";
|
||||
case 30: return (canEquip && item.equip_effect != null) ? item.equip_effect.damage_modifier : null;//"Damage modifier";
|
||||
case 31: return (canEquip && item.equip_effect != null) ? item.equip_effect.max_hp_boost : null;//"Max HP";
|
||||
case 32: return (canEquip && item.equip_effect != null) ? item.equip_effect.max_ap_boost : null;//"Max AP";
|
||||
case 33: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_attack_cost : null;//"Attack cost";
|
||||
case 34: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_attack_chance : null;//"AC";
|
||||
case 35: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_block_chance : null;//"BC";
|
||||
case 36: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_damage_resistance : null;//"DR";
|
||||
case 37: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_critical_skill : null;//"CS";
|
||||
case 38: return (canEquip && item.equip_effect != null) ? item.equip_effect.critical_multiplier : null;//"CM";
|
||||
case 39: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_move_cost : null;//"Move cost";
|
||||
case 40: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_use_item_cost : null;//"Use cost";
|
||||
case 41: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_reequip_cost : null;//"Reequip cost";
|
||||
case 42: return (canEquip && item.equip_effect != null && item.equip_effect.conditions != null) ? item.equip_effect.conditions.size() : null;//"# conditions";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,8 @@ import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.util.Vector;
|
||||
|
||||
public class POParser
|
||||
@@ -60,11 +62,9 @@ public class POParser
|
||||
POFile result = null;
|
||||
try
|
||||
{
|
||||
FileReader fr = new FileReader(file);
|
||||
BufferedReader br = new BufferedReader(fr);
|
||||
BufferedReader br = Files.newBufferedReader(file.toPath(), StandardCharsets.UTF_8);
|
||||
result = parse(br);
|
||||
br.close();
|
||||
fr.close();
|
||||
}
|
||||
catch (java.io.FileNotFoundException e)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user