diff --git a/tools/MapleSkillbookChanceFetcher/src/mapleskillbookchancefetcher/MapleSkillbookChanceFetcher.java b/src/main/java/tools/mapletools/SkillbookChanceFetcher.java
similarity index 62%
rename from tools/MapleSkillbookChanceFetcher/src/mapleskillbookchancefetcher/MapleSkillbookChanceFetcher.java
rename to src/main/java/tools/mapletools/SkillbookChanceFetcher.java
index d8e6edfdc5..5d03f0aa84 100644
--- a/tools/MapleSkillbookChanceFetcher/src/mapleskillbookchancefetcher/MapleSkillbookChanceFetcher.java
+++ b/src/main/java/tools/mapletools/SkillbookChanceFetcher.java
@@ -1,94 +1,74 @@
-/*
- This file is part of the HeavenMS MapleStory Server
- Copyleft (L) 2016 - 2019 RonanLana
+package tools.mapletools;
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package mapleskillbookchancefetcher;
-
-import life.MapleLifeFactory;
-import life.MapleMonsterStats;
-import tools.DatabaseConnection;
+import server.life.MapleMonsterStats;
import tools.Pair;
+import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
+import java.nio.charset.StandardCharsets;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import java.util.*;
-import java.util.Map.Entry;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
- *
* @author RonanLana
- *
+ *
* This application traces missing meso drop data on the underlying DB (that must be
* defined on the DatabaseConnection file of this project) and generates a
* SQL file that proposes missing drop entries for the drop_data table.
- *
+ *
* The meso range is calculated accordingly with the target mob stats, such as level
* and if it's a boss or not, similarly as how it has been done for the actual meso
* drops.
- *
*/
-public class MapleSkillbookChanceFetcher {
+public class SkillbookChanceFetcher {
+ private static final File OUTPUT_FILE = ToolConstants.getOutputFile("skillbook_drop_data.sql");
+ private static final Map, Integer> skillbookChances = new HashMap<>();
private static PrintWriter printWriter;
- private static String newFile = "lib/skillbook_drop_data.sql";
-
private static Map mobStats;
- private static Map, Integer> skillbookChances = new HashMap<>();
-
- private static List, Integer>> sortedSkillbookChances() {
- List, Integer>> skillbookChancesList = new ArrayList<>(skillbookChances.entrySet());
-
- Collections.sort(skillbookChancesList, (o1, o2) -> {
+
+ private static List, Integer>> sortedSkillbookChances() {
+ List, Integer>> skillbookChancesList = new ArrayList<>(skillbookChances.entrySet());
+
+ skillbookChancesList.sort((o1, o2) -> {
if (o1.getKey().getLeft().equals(o2.getKey().getLeft())) {
return o1.getKey().getRight() < o2.getKey().getRight() ? -1 : (o1.getKey().getRight().equals(o2.getKey().getRight()) ? 0 : 1);
}
return (o1.getKey().getLeft() < o2.getKey().getLeft()) ? -1 : 1;
});
-
+
return skillbookChancesList;
}
-
+
private static boolean isLegendSkillUpgradeBook(int itemid) {
int itemidBranch = itemid / 10000;
return (itemidBranch == 228 && itemid >= 2280013 || itemidBranch == 229 && itemid >= 2290126); // drop rate of Legends are higher
}
-
+
private static void fetchSkillbookDropChances() {
- Connection con = DatabaseConnection.getConnection();
-
+ Connection con = SimpleDatabaseConnection.getConnection();
+
try {
PreparedStatement ps = con.prepareStatement("SELECT dropperid, itemid FROM drop_data WHERE itemid >= 2280000 AND itemid < 2300000");
ResultSet rs = ps.executeQuery();
-
- while(rs.next()) {
+
+ while (rs.next()) {
int mobid = rs.getInt("dropperid");
int itemid = rs.getInt("itemid");
-
+
int expectedChance = 250;
-
+
if (mobStats.get(mobid) != null) {
int level = mobStats.get(mobid).getLevel();
expectedChance *= Math.max(2, (level - 80) / 15);
-
+
if (mobStats.get(mobid).isBoss()) {
expectedChance *= 20;
} else {
@@ -97,53 +77,52 @@ public class MapleSkillbookChanceFetcher {
} else {
expectedChance = 1287;
}
-
+
if (isLegendSkillUpgradeBook(itemid)) { // drop rate of Legends seems to be higher than explorers, in retrospect from values in DB
expectedChance *= 3;
}
-
+
skillbookChances.put(new Pair<>(mobid, itemid), expectedChance);
}
-
+
rs.close();
ps.close();
con.close();
- } catch(Exception e) {
+ } catch (Exception e) {
e.printStackTrace();
}
}
-
+
private static void printSkillbookChanceUpdateSqlHeader() {
printWriter.println(" # SQL File autogenerated from the MapleSkillbookChanceFetcher feature by Ronan Lana.");
printWriter.println(" # Generated data takes into account mob stats such as level and boss for the chance rates.");
printWriter.println();
-
+
printWriter.println(" REPLACE INTO drop_data (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES");
}
-
+
private static void generateSkillbookChanceUpdateFile() {
try {
- printWriter = new PrintWriter(newFile, "UTF-8");
-
+ printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
+
printSkillbookChanceUpdateSqlHeader();
-
- List, Integer>> skillbookChancesList = sortedSkillbookChances();
- for (Entry, Integer> e : skillbookChancesList) {
+
+ List, Integer>> skillbookChancesList = sortedSkillbookChances();
+ for (Map.Entry, Integer> e : skillbookChancesList) {
printWriter.println("(" + e.getKey().getLeft() + ", " + e.getKey().getRight() + ", 1, 1, 0, " + e.getValue() + "),");
}
-
+
printWriter.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
-
+
public static void main(String[] args) {
// load mob stats from WZ
- mobStats = MapleLifeFactory.getAllMonsterStats();
-
+ mobStats = MonsterStatFetcher.getAllMonsterStats();
+
fetchSkillbookDropChances();
generateSkillbookChanceUpdateFile();
}
-
}
diff --git a/tools/MapleSkillbookChanceFetcher/lib/skillbook_drop_data.sql b/tools/MapleSkillbookChanceFetcher/lib/skillbook_drop_data.sql
deleted file mode 100644
index 01a6890faf..0000000000
--- a/tools/MapleSkillbookChanceFetcher/lib/skillbook_drop_data.sql
+++ /dev/null
@@ -1,619 +0,0 @@
- # SQL File autogenerated from the MapleSkillbookChanceFetcher feature by Ronan Lana.
- # Generated data takes into account mob stats such as level and boss for the chance rates.
-
- REPLACE INTO drop_data (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES
-(851000, 2290132, 1, 1, 0, 3861),
-(7090000, 2290087, 1, 1, 0, 10000),
-(8090000, 2290045, 1, 1, 0, 10000),
-(8140103, 2290044, 1, 1, 0, 500),
-(8140511, 2290009, 1, 1, 0, 500),
-(8140511, 2290050, 1, 1, 0, 500),
-(8140511, 2290083, 1, 1, 0, 500),
-(8140511, 2290134, 1, 1, 0, 1500),
-(8140512, 2290013, 1, 1, 0, 500),
-(8140512, 2290067, 1, 1, 0, 500),
-(8140512, 2290082, 1, 1, 0, 500),
-(8140512, 2290097, 1, 1, 0, 500),
-(8140512, 2290116, 1, 1, 0, 500),
-(8140512, 2290131, 1, 1, 0, 1500),
-(8140600, 2290132, 1, 1, 0, 1500),
-(8140700, 2290106, 1, 1, 0, 500),
-(8140700, 2290126, 1, 1, 0, 1500),
-(8140701, 2290122, 1, 1, 0, 500),
-(8140702, 2290112, 1, 1, 0, 500),
-(8140703, 2290088, 1, 1, 0, 500),
-(8140703, 2290099, 1, 1, 0, 500),
-(8141000, 2290082, 1, 1, 0, 500),
-(8141000, 2290097, 1, 1, 0, 500),
-(8141100, 2280005, 1, 1, 0, 500),
-(8141300, 2290098, 1, 1, 0, 500),
-(8142100, 2290032, 1, 1, 0, 500),
-(8142100, 2290082, 1, 1, 0, 500),
-(8142100, 2290114, 1, 1, 0, 500),
-(8143000, 2280004, 1, 1, 0, 500),
-(8150000, 2280013, 1, 1, 0, 30000),
-(8150000, 2290070, 1, 1, 0, 10000),
-(8150000, 2290091, 1, 1, 0, 10000),
-(8150100, 2290042, 1, 1, 0, 500),
-(8150100, 2290053, 1, 1, 0, 500),
-(8150100, 2290073, 1, 1, 0, 500),
-(8150100, 2290102, 1, 1, 0, 500),
-(8150100, 2290118, 1, 1, 0, 500),
-(8150101, 2290017, 1, 1, 0, 500),
-(8150101, 2290021, 1, 1, 0, 500),
-(8150101, 2290035, 1, 1, 0, 500),
-(8150101, 2290042, 1, 1, 0, 500),
-(8150101, 2290052, 1, 1, 0, 500),
-(8150101, 2290102, 1, 1, 0, 500),
-(8150200, 2290024, 1, 1, 0, 500),
-(8150200, 2290100, 1, 1, 0, 500),
-(8150200, 2290135, 1, 1, 0, 1500),
-(8150201, 2290004, 1, 1, 0, 500),
-(8150201, 2290006, 1, 1, 0, 500),
-(8150201, 2290024, 1, 1, 0, 500),
-(8150201, 2290036, 1, 1, 0, 500),
-(8150201, 2290056, 1, 1, 0, 500),
-(8150201, 2290072, 1, 1, 0, 500),
-(8150201, 2290078, 1, 1, 0, 500),
-(8150201, 2290117, 1, 1, 0, 500),
-(8150300, 2290003, 1, 1, 0, 500),
-(8150300, 2290033, 1, 1, 0, 500),
-(8150300, 2290111, 1, 1, 0, 500),
-(8150300, 2290120, 1, 1, 0, 500),
-(8150300, 2290127, 1, 1, 0, 1500),
-(8150301, 2290023, 1, 1, 0, 500),
-(8150301, 2290029, 1, 1, 0, 500),
-(8150301, 2290101, 1, 1, 0, 500),
-(8150301, 2290107, 1, 1, 0, 500),
-(8150302, 2290010, 1, 1, 0, 500),
-(8150302, 2290019, 1, 1, 0, 500),
-(8150302, 2290026, 1, 1, 0, 500),
-(8150302, 2290076, 1, 1, 0, 500),
-(8150302, 2290085, 1, 1, 0, 500),
-(8150302, 2290096, 1, 1, 0, 500),
-(8150302, 2290113, 1, 1, 0, 500),
-(8150302, 2290119, 1, 1, 0, 500),
-(8150302, 2290128, 1, 1, 0, 1500),
-(8160000, 2290017, 1, 1, 0, 500),
-(8160000, 2290045, 1, 1, 0, 500),
-(8160000, 2290065, 1, 1, 0, 500),
-(8160000, 2290067, 1, 1, 0, 500),
-(8160000, 2290081, 1, 1, 0, 500),
-(8170000, 2290012, 1, 1, 0, 500),
-(8170000, 2290086, 1, 1, 0, 500),
-(8170000, 2290087, 1, 1, 0, 500),
-(8170000, 2290134, 1, 1, 0, 1500),
-(8180000, 2290002, 1, 1, 0, 10000),
-(8180000, 2290003, 1, 1, 0, 10000),
-(8180000, 2290014, 1, 1, 0, 10000),
-(8180000, 2290015, 1, 1, 0, 10000),
-(8180000, 2290030, 1, 1, 0, 10000),
-(8180000, 2290035, 1, 1, 0, 10000),
-(8180000, 2290036, 1, 1, 0, 10000),
-(8180000, 2290063, 1, 1, 0, 10000),
-(8180000, 2290080, 1, 1, 0, 10000),
-(8180000, 2290098, 1, 1, 0, 10000),
-(8180000, 2290101, 1, 1, 0, 10000),
-(8180000, 2290117, 1, 1, 0, 10000),
-(8180000, 2290130, 1, 1, 0, 30000),
-(8180001, 2290018, 1, 1, 0, 10000),
-(8180001, 2290019, 1, 1, 0, 10000),
-(8180001, 2290032, 1, 1, 0, 10000),
-(8180001, 2290042, 1, 1, 0, 10000),
-(8180001, 2290058, 1, 1, 0, 10000),
-(8180001, 2290059, 1, 1, 0, 10000),
-(8180001, 2290068, 1, 1, 0, 10000),
-(8180001, 2290069, 1, 1, 0, 10000),
-(8180001, 2290072, 1, 1, 0, 10000),
-(8180001, 2290092, 1, 1, 0, 10000),
-(8180001, 2290099, 1, 1, 0, 10000),
-(8180001, 2290100, 1, 1, 0, 10000),
-(8180001, 2290102, 1, 1, 0, 10000),
-(8180001, 2290119, 1, 1, 0, 10000),
-(8180001, 2290128, 1, 1, 0, 30000),
-(8190000, 2280016, 1, 1, 0, 1500),
-(8190000, 2290030, 1, 1, 0, 500),
-(8190000, 2290044, 1, 1, 0, 500),
-(8190000, 2290054, 1, 1, 0, 500),
-(8190000, 2290066, 1, 1, 0, 500),
-(8190000, 2290075, 1, 1, 0, 500),
-(8190000, 2290092, 1, 1, 0, 500),
-(8190000, 2290103, 1, 1, 0, 500),
-(8190002, 2290000, 1, 1, 0, 500),
-(8190002, 2290008, 1, 1, 0, 500),
-(8190002, 2290018, 1, 1, 0, 500),
-(8190002, 2290038, 1, 1, 0, 500),
-(8190002, 2290060, 1, 1, 0, 500),
-(8190002, 2290080, 1, 1, 0, 500),
-(8190002, 2290124, 1, 1, 0, 500),
-(8190003, 2280013, 1, 1, 0, 1500),
-(8190003, 2290007, 1, 1, 0, 500),
-(8190003, 2290012, 1, 1, 0, 500),
-(8190003, 2290014, 1, 1, 0, 500),
-(8190003, 2290033, 1, 1, 0, 500),
-(8190003, 2290045, 1, 1, 0, 500),
-(8190003, 2290050, 1, 1, 0, 500),
-(8190003, 2290055, 1, 1, 0, 500),
-(8190003, 2290062, 1, 1, 0, 500),
-(8190003, 2290063, 1, 1, 0, 500),
-(8190003, 2290070, 1, 1, 0, 500),
-(8190003, 2290086, 1, 1, 0, 500),
-(8190003, 2290108, 1, 1, 0, 500),
-(8190003, 2290133, 1, 1, 0, 1500),
-(8190004, 2290002, 1, 1, 0, 500),
-(8190004, 2290009, 1, 1, 0, 500),
-(8190004, 2290021, 1, 1, 0, 500),
-(8190004, 2290034, 1, 1, 0, 500),
-(8190004, 2290041, 1, 1, 0, 500),
-(8190004, 2290052, 1, 1, 0, 500),
-(8190004, 2290053, 1, 1, 0, 500),
-(8190004, 2290058, 1, 1, 0, 500),
-(8190004, 2290068, 1, 1, 0, 500),
-(8190004, 2290071, 1, 1, 0, 500),
-(8190004, 2290073, 1, 1, 0, 500),
-(8190004, 2290090, 1, 1, 0, 500),
-(8190004, 2290112, 1, 1, 0, 500),
-(8190004, 2290121, 1, 1, 0, 500),
-(8190004, 2290130, 1, 1, 0, 1500),
-(8190005, 2290000, 1, 1, 0, 500),
-(8190005, 2290008, 1, 1, 0, 500),
-(8190005, 2290018, 1, 1, 0, 500),
-(8190005, 2290038, 1, 1, 0, 500),
-(8190005, 2290060, 1, 1, 0, 500),
-(8190005, 2290080, 1, 1, 0, 500),
-(8190005, 2290124, 1, 1, 0, 500),
-(8200000, 2290005, 1, 1, 0, 500),
-(8200000, 2290011, 1, 1, 0, 500),
-(8200000, 2290114, 1, 1, 0, 500),
-(8200001, 2280015, 1, 1, 0, 1500),
-(8200001, 2290050, 1, 1, 0, 500),
-(8200001, 2290059, 1, 1, 0, 500),
-(8200001, 2290065, 1, 1, 0, 500),
-(8200001, 2290129, 1, 1, 0, 1500),
-(8200002, 2290062, 1, 1, 0, 500),
-(8200002, 2290066, 1, 1, 0, 500),
-(8200002, 2290070, 1, 1, 0, 500),
-(8200002, 2290131, 1, 1, 0, 1500),
-(8200002, 2290139, 1, 1, 0, 1500),
-(8200003, 2290012, 1, 1, 0, 500),
-(8200003, 2290056, 1, 1, 0, 500),
-(8200003, 2290071, 1, 1, 0, 500),
-(8200003, 2290101, 1, 1, 0, 500),
-(8200003, 2290136, 1, 1, 0, 1500),
-(8200004, 2280016, 1, 1, 0, 1500),
-(8200004, 2290069, 1, 1, 0, 500),
-(8200004, 2290072, 1, 1, 0, 500),
-(8200004, 2290073, 1, 1, 0, 500),
-(8200004, 2290127, 1, 1, 0, 1500),
-(8200004, 2290134, 1, 1, 0, 1500),
-(8200005, 2280014, 1, 1, 0, 1500),
-(8200005, 2290078, 1, 1, 0, 500),
-(8200005, 2290079, 1, 1, 0, 500),
-(8200005, 2290095, 1, 1, 0, 500),
-(8200006, 2290003, 1, 1, 0, 500),
-(8200006, 2290064, 1, 1, 0, 500),
-(8200006, 2290076, 1, 1, 0, 500),
-(8200006, 2290077, 1, 1, 0, 500),
-(8200006, 2290129, 1, 1, 0, 1500),
-(8200006, 2290138, 1, 1, 0, 1500),
-(8200007, 2290006, 1, 1, 0, 500),
-(8200007, 2290007, 1, 1, 0, 500),
-(8200007, 2290011, 1, 1, 0, 500),
-(8200007, 2290016, 1, 1, 0, 500),
-(8200007, 2290125, 1, 1, 0, 500),
-(8200007, 2290136, 1, 1, 0, 1500),
-(8200008, 2290006, 1, 1, 0, 500),
-(8200008, 2290051, 1, 1, 0, 500),
-(8200008, 2290121, 1, 1, 0, 500),
-(8200008, 2290122, 1, 1, 0, 500),
-(8200008, 2290133, 1, 1, 0, 1500),
-(8200009, 2290013, 1, 1, 0, 500),
-(8200009, 2290016, 1, 1, 0, 500),
-(8200009, 2290031, 1, 1, 0, 500),
-(8200009, 2290039, 1, 1, 0, 500),
-(8200010, 2290026, 1, 1, 0, 500),
-(8200010, 2290059, 1, 1, 0, 500),
-(8200010, 2290088, 1, 1, 0, 500),
-(8200010, 2290089, 1, 1, 0, 500),
-(8200010, 2290127, 1, 1, 0, 1500),
-(8200011, 2290001, 1, 1, 0, 750),
-(8200011, 2290040, 1, 1, 0, 750),
-(8200011, 2290046, 1, 1, 0, 750),
-(8200011, 2290048, 1, 1, 0, 750),
-(8200011, 2290049, 1, 1, 0, 750),
-(8200011, 2290114, 1, 1, 0, 750),
-(8200011, 2290137, 1, 1, 0, 2250),
-(8200012, 2290041, 1, 1, 0, 750),
-(8200012, 2290092, 1, 1, 0, 750),
-(8200012, 2290093, 1, 1, 0, 750),
-(8200012, 2290115, 1, 1, 0, 750),
-(8200012, 2290137, 1, 1, 0, 2250),
-(8200012, 2290139, 1, 1, 0, 2250),
-(8220002, 2290020, 1, 1, 0, 10000),
-(8220002, 2290081, 1, 1, 0, 10000),
-(8220002, 2290085, 1, 1, 0, 10000),
-(8220002, 2290133, 1, 1, 0, 30000),
-(8220003, 2290006, 1, 1, 0, 10000),
-(8220003, 2290030, 1, 1, 0, 10000),
-(8220003, 2290031, 1, 1, 0, 10000),
-(8220003, 2290032, 1, 1, 0, 10000),
-(8220003, 2290033, 1, 1, 0, 10000),
-(8220003, 2290060, 1, 1, 0, 10000),
-(8220003, 2290061, 1, 1, 0, 10000),
-(8220003, 2290076, 1, 1, 0, 10000),
-(8220003, 2290077, 1, 1, 0, 10000),
-(8220003, 2290104, 1, 1, 0, 10000),
-(8220003, 2290105, 1, 1, 0, 10000),
-(8220003, 2290117, 1, 1, 0, 10000),
-(8220003, 2290118, 1, 1, 0, 10000),
-(8220004, 2290018, 1, 1, 0, 10000),
-(8220004, 2290019, 1, 1, 0, 10000),
-(8220004, 2290024, 1, 1, 0, 10000),
-(8220004, 2290025, 1, 1, 0, 10000),
-(8220004, 2290058, 1, 1, 0, 10000),
-(8220004, 2290059, 1, 1, 0, 10000),
-(8220004, 2290076, 1, 1, 0, 10000),
-(8220004, 2290077, 1, 1, 0, 10000),
-(8220004, 2290106, 1, 1, 0, 10000),
-(8220004, 2290127, 1, 1, 0, 30000),
-(8220004, 2290134, 1, 1, 0, 30000),
-(8220005, 2290002, 1, 1, 0, 15000),
-(8220005, 2290003, 1, 1, 0, 15000),
-(8220005, 2290036, 1, 1, 0, 15000),
-(8220005, 2290037, 1, 1, 0, 15000),
-(8220005, 2290055, 1, 1, 0, 15000),
-(8220005, 2290080, 1, 1, 0, 15000),
-(8220005, 2290099, 1, 1, 0, 15000),
-(8220005, 2290131, 1, 1, 0, 45000),
-(8220005, 2290136, 1, 1, 0, 45000),
-(8220006, 2290012, 1, 1, 0, 20000),
-(8220006, 2290013, 1, 1, 0, 20000),
-(8220006, 2290042, 1, 1, 0, 20000),
-(8220006, 2290043, 1, 1, 0, 20000),
-(8220006, 2290060, 1, 1, 0, 20000),
-(8220006, 2290061, 1, 1, 0, 20000),
-(8220006, 2290090, 1, 1, 0, 20000),
-(8220006, 2290119, 1, 1, 0, 20000),
-(8220006, 2290120, 1, 1, 0, 20000),
-(8220006, 2290135, 1, 1, 0, 60000),
-(8220006, 2290138, 1, 1, 0, 60000),
-(8220007, 2290035, 1, 1, 0, 10000),
-(8220007, 2290091, 1, 1, 0, 10000),
-(8220007, 2290108, 1, 1, 0, 10000),
-(8220009, 2290031, 1, 1, 0, 10000),
-(8220009, 2290129, 1, 1, 0, 30000),
-(8220015, 2280004, 1, 1, 0, 10000),
-(8220015, 2280005, 1, 1, 0, 10000),
-(8220015, 2280006, 1, 1, 0, 10000),
-(8500002, 2280007, 1, 1, 0, 15000),
-(8500002, 2280008, 1, 1, 0, 15000),
-(8500002, 2280009, 1, 1, 0, 15000),
-(8500002, 2280010, 1, 1, 0, 15000),
-(8500002, 2290006, 1, 1, 0, 15000),
-(8500002, 2290010, 1, 1, 0, 15000),
-(8500002, 2290011, 1, 1, 0, 15000),
-(8500002, 2290013, 1, 1, 0, 15000),
-(8500002, 2290028, 1, 1, 0, 15000),
-(8500002, 2290037, 1, 1, 0, 15000),
-(8500002, 2290043, 1, 1, 0, 15000),
-(8500002, 2290051, 1, 1, 0, 15000),
-(8500002, 2290056, 1, 1, 0, 15000),
-(8500002, 2290061, 1, 1, 0, 15000),
-(8500002, 2290066, 1, 1, 0, 15000),
-(8500002, 2290071, 1, 1, 0, 15000),
-(8500002, 2290078, 1, 1, 0, 15000),
-(8500002, 2290089, 1, 1, 0, 15000),
-(8500002, 2290091, 1, 1, 0, 15000),
-(8500002, 2290104, 1, 1, 0, 15000),
-(8500002, 2290107, 1, 1, 0, 15000),
-(8500002, 2290121, 1, 1, 0, 15000),
-(8500002, 2290123, 1, 1, 0, 15000),
-(8500002, 2290126, 1, 1, 0, 45000),
-(8500002, 2290129, 1, 1, 0, 45000),
-(8510000, 2280007, 1, 1, 0, 10000),
-(8510000, 2280008, 1, 1, 0, 10000),
-(8510000, 2280009, 1, 1, 0, 10000),
-(8510000, 2280010, 1, 1, 0, 10000),
-(8510000, 2290000, 1, 1, 0, 10000),
-(8510000, 2290001, 1, 1, 0, 10000),
-(8510000, 2290004, 1, 1, 0, 10000),
-(8510000, 2290005, 1, 1, 0, 10000),
-(8510000, 2290024, 1, 1, 0, 10000),
-(8510000, 2290025, 1, 1, 0, 10000),
-(8510000, 2290026, 1, 1, 0, 10000),
-(8510000, 2290027, 1, 1, 0, 10000),
-(8510000, 2290052, 1, 1, 0, 10000),
-(8510000, 2290053, 1, 1, 0, 10000),
-(8510000, 2290054, 1, 1, 0, 10000),
-(8510000, 2290055, 1, 1, 0, 10000),
-(8510000, 2290076, 1, 1, 0, 10000),
-(8510000, 2290077, 1, 1, 0, 10000),
-(8510000, 2290082, 1, 1, 0, 10000),
-(8510000, 2290083, 1, 1, 0, 10000),
-(8510000, 2290097, 1, 1, 0, 10000),
-(8510000, 2290099, 1, 1, 0, 10000),
-(8510000, 2290106, 1, 1, 0, 10000),
-(8510000, 2290108, 1, 1, 0, 10000),
-(8510000, 2290112, 1, 1, 0, 10000),
-(8510000, 2290114, 1, 1, 0, 10000),
-(8510000, 2290122, 1, 1, 0, 10000),
-(8510000, 2290124, 1, 1, 0, 10000),
-(8510000, 2290132, 1, 1, 0, 30000),
-(8520000, 2280007, 1, 1, 0, 10000),
-(8520000, 2280008, 1, 1, 0, 10000),
-(8520000, 2280009, 1, 1, 0, 10000),
-(8520000, 2280010, 1, 1, 0, 10000),
-(8520000, 2290000, 1, 1, 0, 10000),
-(8520000, 2290001, 1, 1, 0, 10000),
-(8520000, 2290004, 1, 1, 0, 10000),
-(8520000, 2290005, 1, 1, 0, 10000),
-(8520000, 2290024, 1, 1, 0, 10000),
-(8520000, 2290025, 1, 1, 0, 10000),
-(8520000, 2290026, 1, 1, 0, 10000),
-(8520000, 2290027, 1, 1, 0, 10000),
-(8520000, 2290052, 1, 1, 0, 10000),
-(8520000, 2290053, 1, 1, 0, 10000),
-(8520000, 2290054, 1, 1, 0, 10000),
-(8520000, 2290055, 1, 1, 0, 10000),
-(8520000, 2290076, 1, 1, 0, 10000),
-(8520000, 2290077, 1, 1, 0, 10000),
-(8520000, 2290082, 1, 1, 0, 10000),
-(8520000, 2290083, 1, 1, 0, 10000),
-(8520000, 2290097, 1, 1, 0, 10000),
-(8520000, 2290099, 1, 1, 0, 10000),
-(8520000, 2290106, 1, 1, 0, 10000),
-(8520000, 2290108, 1, 1, 0, 10000),
-(8520000, 2290112, 1, 1, 0, 10000),
-(8520000, 2290114, 1, 1, 0, 10000),
-(8520000, 2290122, 1, 1, 0, 10000),
-(8520000, 2290124, 1, 1, 0, 10000),
-(8520000, 2290132, 1, 1, 0, 30000),
-(8800002, 2280007, 1, 1, 0, 20000),
-(8800002, 2280008, 1, 1, 0, 20000),
-(8800002, 2280009, 1, 1, 0, 20000),
-(8800002, 2280010, 1, 1, 0, 20000),
-(8800002, 2280013, 1, 1, 0, 60000),
-(8800002, 2280014, 1, 1, 0, 60000),
-(8800002, 2280015, 1, 1, 0, 60000),
-(8800002, 2280016, 1, 1, 0, 60000),
-(8800002, 2290006, 1, 1, 0, 20000),
-(8800002, 2290007, 1, 1, 0, 20000),
-(8800002, 2290016, 1, 1, 0, 20000),
-(8800002, 2290020, 1, 1, 0, 20000),
-(8800002, 2290022, 1, 1, 0, 20000),
-(8800002, 2290024, 1, 1, 0, 20000),
-(8800002, 2290028, 1, 1, 0, 20000),
-(8800002, 2290029, 1, 1, 0, 20000),
-(8800002, 2290040, 1, 1, 0, 20000),
-(8800002, 2290046, 1, 1, 0, 20000),
-(8800002, 2290048, 1, 1, 0, 20000),
-(8800002, 2290056, 1, 1, 0, 20000),
-(8800002, 2290057, 1, 1, 0, 20000),
-(8800002, 2290058, 1, 1, 0, 20000),
-(8800002, 2290064, 1, 1, 0, 20000),
-(8800002, 2290067, 1, 1, 0, 20000),
-(8800002, 2290074, 1, 1, 0, 20000),
-(8800002, 2290079, 1, 1, 0, 20000),
-(8800002, 2290084, 1, 1, 0, 20000),
-(8800002, 2290094, 1, 1, 0, 20000),
-(8800002, 2290110, 1, 1, 0, 20000),
-(8800002, 2290115, 1, 1, 0, 20000),
-(8810018, 2290017, 1, 1, 0, 25000),
-(8810018, 2290021, 1, 1, 0, 25000),
-(8810018, 2290023, 1, 1, 0, 25000),
-(8810018, 2290041, 1, 1, 0, 25000),
-(8810018, 2290047, 1, 1, 0, 25000),
-(8810018, 2290049, 1, 1, 0, 25000),
-(8810018, 2290065, 1, 1, 0, 25000),
-(8810018, 2290075, 1, 1, 0, 25000),
-(8810018, 2290085, 1, 1, 0, 25000),
-(8810018, 2290095, 1, 1, 0, 25000),
-(8810018, 2290096, 1, 1, 0, 25000),
-(8810018, 2290111, 1, 1, 0, 25000),
-(8810018, 2290116, 1, 1, 0, 25000),
-(8810018, 2290125, 1, 1, 0, 25000),
-(8810018, 2290133, 1, 1, 0, 75000),
-(8810018, 2290137, 1, 1, 0, 75000),
-(8810018, 2290139, 1, 1, 0, 75000),
-(8820000, 2290010, 1, 1, 0, 30000),
-(8820000, 2290022, 1, 1, 0, 30000),
-(8820000, 2290040, 1, 1, 0, 30000),
-(8820000, 2290046, 1, 1, 0, 30000),
-(8820000, 2290048, 1, 1, 0, 30000),
-(8820000, 2290052, 1, 1, 0, 30000),
-(8820000, 2290084, 1, 1, 0, 30000),
-(8820000, 2290090, 1, 1, 0, 30000),
-(8820000, 2290106, 1, 1, 0, 30000),
-(8820000, 2290119, 1, 1, 0, 30000),
-(8820001, 2290010, 1, 1, 0, 30000),
-(8820001, 2290022, 1, 1, 0, 30000),
-(8820001, 2290040, 1, 1, 0, 30000),
-(8820001, 2290046, 1, 1, 0, 30000),
-(8820001, 2290048, 1, 1, 0, 30000),
-(8820001, 2290052, 1, 1, 0, 30000),
-(8820001, 2290084, 1, 1, 0, 30000),
-(8820001, 2290090, 1, 1, 0, 30000),
-(8820001, 2290106, 1, 1, 0, 30000),
-(8820001, 2290119, 1, 1, 0, 30000),
-(9300028, 2280015, 1, 1, 0, 30000),
-(9300028, 2290026, 1, 1, 0, 10000),
-(9300028, 2290064, 1, 1, 0, 10000),
-(9300028, 2290075, 1, 1, 0, 10000),
-(9300028, 2290093, 1, 1, 0, 10000),
-(9300028, 2290111, 1, 1, 0, 10000),
-(9300094, 2280004, 1, 1, 0, 10000),
-(9300094, 2280005, 1, 1, 0, 10000),
-(9300094, 2280006, 1, 1, 0, 10000),
-(9300095, 2280004, 1, 1, 0, 500),
-(9300095, 2280005, 1, 1, 0, 500),
-(9300095, 2280006, 1, 1, 0, 500),
-(9303016, 2290006, 1, 1, 0, 500),
-(9303016, 2290030, 1, 1, 0, 500),
-(9303016, 2290032, 1, 1, 0, 500),
-(9303016, 2290060, 1, 1, 0, 500),
-(9303016, 2290076, 1, 1, 0, 500),
-(9303016, 2290104, 1, 1, 0, 500),
-(9303016, 2290117, 1, 1, 0, 500),
-(9400014, 2290053, 1, 1, 0, 10000),
-(9400014, 2290087, 1, 1, 0, 10000),
-(9400014, 2290112, 1, 1, 0, 10000),
-(9400014, 2290122, 1, 1, 0, 10000),
-(9400120, 2290045, 1, 1, 0, 10000),
-(9400121, 2280014, 1, 1, 0, 45000),
-(9400121, 2290081, 1, 1, 0, 15000),
-(9400121, 2290087, 1, 1, 0, 15000),
-(9400121, 2290101, 1, 1, 0, 15000),
-(9400121, 2290103, 1, 1, 0, 15000),
-(9400122, 2290007, 1, 1, 0, 10000),
-(9400122, 2290062, 1, 1, 0, 10000),
-(9400122, 2290116, 1, 1, 0, 10000),
-(9400300, 2290045, 1, 1, 0, 30000),
-(9400300, 2290055, 1, 1, 0, 30000),
-(9400300, 2290063, 1, 1, 0, 30000),
-(9400300, 2290079, 1, 1, 0, 30000),
-(9400300, 2290081, 1, 1, 0, 30000),
-(9400300, 2290096, 1, 1, 0, 30000),
-(9400514, 2290023, 1, 1, 0, 10000),
-(9400514, 2290057, 1, 1, 0, 10000),
-(9400514, 2290088, 1, 1, 0, 10000),
-(9400514, 2290095, 1, 1, 0, 10000),
-(9400514, 2290115, 1, 1, 0, 10000),
-(9400514, 2290139, 1, 1, 0, 30000),
-(9400549, 2290001, 1, 1, 0, 10000),
-(9400549, 2290020, 1, 1, 0, 10000),
-(9400549, 2290045, 1, 1, 0, 10000),
-(9400549, 2290057, 1, 1, 0, 10000),
-(9400549, 2290086, 1, 1, 0, 10000),
-(9400575, 2290009, 1, 1, 0, 10000),
-(9400575, 2290051, 1, 1, 0, 10000),
-(9400575, 2290081, 1, 1, 0, 10000),
-(9400575, 2290087, 1, 1, 0, 10000),
-(9400575, 2290107, 1, 1, 0, 10000),
-(9400575, 2290123, 1, 1, 0, 10000),
-(9400580, 2290004, 1, 1, 0, 500),
-(9400580, 2290024, 1, 1, 0, 500),
-(9400580, 2290083, 1, 1, 0, 500),
-(9400580, 2290087, 1, 1, 0, 500),
-(9400580, 2290103, 1, 1, 0, 500),
-(9400580, 2290121, 1, 1, 0, 500),
-(9400582, 2290005, 1, 1, 0, 500),
-(9400582, 2290010, 1, 1, 0, 500),
-(9400582, 2290029, 1, 1, 0, 500),
-(9400582, 2290047, 1, 1, 0, 500),
-(9400582, 2290049, 1, 1, 0, 500),
-(9400582, 2290074, 1, 1, 0, 500),
-(9400582, 2290079, 1, 1, 0, 500),
-(9400582, 2290081, 1, 1, 0, 500),
-(9400582, 2290135, 1, 1, 0, 1500),
-(9400590, 2290088, 1, 1, 0, 15000),
-(9400590, 2290125, 1, 1, 0, 15000),
-(9400590, 2290135, 1, 1, 0, 45000),
-(9400591, 2290039, 1, 1, 0, 15000),
-(9400591, 2290074, 1, 1, 0, 15000),
-(9400591, 2290113, 1, 1, 0, 15000),
-(9400592, 2290047, 1, 1, 0, 15000),
-(9400592, 2290123, 1, 1, 0, 15000),
-(9400592, 2290131, 1, 1, 0, 45000),
-(9400593, 2290069, 1, 1, 0, 15000),
-(9400593, 2290093, 1, 1, 0, 15000),
-(9400593, 2290138, 1, 1, 0, 45000),
-(9420513, 2290039, 1, 1, 0, 10000),
-(9420513, 2290100, 1, 1, 0, 10000),
-(9420513, 2290108, 1, 1, 0, 10000),
-(9420513, 2290118, 1, 1, 0, 10000),
-(9420513, 2290138, 1, 1, 0, 30000),
-(9420514, 2290099, 1, 1, 0, 1287),
-(9420517, 2290000, 1, 1, 0, 1287),
-(9420517, 2290008, 1, 1, 0, 1287),
-(9420517, 2290018, 1, 1, 0, 1287),
-(9420517, 2290038, 1, 1, 0, 1287),
-(9420517, 2290060, 1, 1, 0, 1287),
-(9420517, 2290080, 1, 1, 0, 1287),
-(9420517, 2290103, 1, 1, 0, 1287),
-(9420518, 2290123, 1, 1, 0, 1287),
-(9420519, 2290113, 1, 1, 0, 1287),
-(9420522, 2290000, 1, 1, 0, 1287),
-(9420522, 2290001, 1, 1, 0, 1287),
-(9420522, 2290011, 1, 1, 0, 1287),
-(9420522, 2290025, 1, 1, 0, 1287),
-(9420522, 2290028, 1, 1, 0, 1287),
-(9420522, 2290037, 1, 1, 0, 1287),
-(9420522, 2290043, 1, 1, 0, 1287),
-(9420522, 2290066, 1, 1, 0, 1287),
-(9420522, 2290082, 1, 1, 0, 1287),
-(9420522, 2290083, 1, 1, 0, 1287),
-(9420522, 2290089, 1, 1, 0, 1287),
-(9420522, 2290091, 1, 1, 0, 1287),
-(9420522, 2290107, 1, 1, 0, 1287),
-(9420540, 2280006, 1, 1, 0, 500),
-(9420540, 2290119, 1, 1, 0, 500),
-(9420540, 2290120, 1, 1, 0, 500),
-(9420544, 2280007, 1, 1, 0, 20000),
-(9420544, 2280008, 1, 1, 0, 20000),
-(9420544, 2280009, 1, 1, 0, 20000),
-(9420544, 2280010, 1, 1, 0, 20000),
-(9420544, 2290002, 1, 1, 0, 20000),
-(9420544, 2290015, 1, 1, 0, 20000),
-(9420544, 2290022, 1, 1, 0, 20000),
-(9420544, 2290027, 1, 1, 0, 20000),
-(9420544, 2290034, 1, 1, 0, 20000),
-(9420544, 2290052, 1, 1, 0, 20000),
-(9420544, 2290054, 1, 1, 0, 20000),
-(9420544, 2290089, 1, 1, 0, 20000),
-(9420544, 2290094, 1, 1, 0, 20000),
-(9420544, 2290098, 1, 1, 0, 20000),
-(9420544, 2290105, 1, 1, 0, 20000),
-(9420544, 2290110, 1, 1, 0, 20000),
-(9420544, 2290119, 1, 1, 0, 20000),
-(9420549, 2280007, 1, 1, 0, 20000),
-(9420549, 2280008, 1, 1, 0, 20000),
-(9420549, 2280009, 1, 1, 0, 20000),
-(9420549, 2280010, 1, 1, 0, 20000),
-(9420549, 2290002, 1, 1, 0, 20000),
-(9420549, 2290015, 1, 1, 0, 20000),
-(9420549, 2290022, 1, 1, 0, 20000),
-(9420549, 2290027, 1, 1, 0, 20000),
-(9420549, 2290034, 1, 1, 0, 20000),
-(9420549, 2290052, 1, 1, 0, 20000),
-(9420549, 2290054, 1, 1, 0, 20000),
-(9420549, 2290089, 1, 1, 0, 20000),
-(9420549, 2290094, 1, 1, 0, 20000),
-(9420549, 2290098, 1, 1, 0, 20000),
-(9420549, 2290105, 1, 1, 0, 20000),
-(9420549, 2290110, 1, 1, 0, 20000),
-(9420549, 2290119, 1, 1, 0, 20000),
-(9500166, 2290044, 1, 1, 0, 500),
-(9500173, 2290018, 1, 1, 0, 10000),
-(9500173, 2290019, 1, 1, 0, 10000),
-(9500173, 2290032, 1, 1, 0, 10000),
-(9500173, 2290042, 1, 1, 0, 10000),
-(9500173, 2290058, 1, 1, 0, 10000),
-(9500173, 2290068, 1, 1, 0, 10000),
-(9500173, 2290072, 1, 1, 0, 10000),
-(9500173, 2290092, 1, 1, 0, 10000),
-(9500173, 2290099, 1, 1, 0, 10000),
-(9500173, 2290102, 1, 1, 0, 10000),
-(9500173, 2290119, 1, 1, 0, 10000),
-(9500173, 2290128, 1, 1, 0, 30000),
-(9500174, 2290002, 1, 1, 0, 10000),
-(9500174, 2290014, 1, 1, 0, 10000),
-(9500174, 2290030, 1, 1, 0, 10000),
-(9500174, 2290080, 1, 1, 0, 10000),
-(9500174, 2290130, 1, 1, 0, 30000),
-(9500180, 2290010, 1, 1, 0, 10000),
-(9500180, 2290028, 1, 1, 0, 10000),
-(9500180, 2290126, 1, 1, 0, 30000),
-(9500181, 2290010, 1, 1, 0, 10000),
-(9500181, 2290028, 1, 1, 0, 10000),
-(9500181, 2290126, 1, 1, 0, 30000),
-(9500331, 2290010, 1, 1, 0, 10000),
-(9500331, 2290028, 1, 1, 0, 10000),
-(9500331, 2290126, 1, 1, 0, 30000),
-(9500332, 2290132, 1, 1, 0, 30000),
-(9500333, 2290006, 1, 1, 0, 10000),
-(9500333, 2290030, 1, 1, 0, 10000),
-(9500333, 2290032, 1, 1, 0, 10000),
-(9500333, 2290060, 1, 1, 0, 10000),
-(9500333, 2290076, 1, 1, 0, 10000),
-(9500333, 2290104, 1, 1, 0, 10000),
-(9500333, 2290117, 1, 1, 0, 10000),
diff --git a/tools/MapleSkillbookChanceFetcher/src/life/Element.java b/tools/MapleSkillbookChanceFetcher/src/life/Element.java
deleted file mode 100644
index 5520ba3501..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/life/Element.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package life;
-
-public enum Element {
- NEUTRAL, FIRE, ICE, LIGHTING, POISON, HOLY, DARK;
-
- public static Element getFromChar(char c) {
- switch (Character.toUpperCase(c)) {
- case 'F':
- return FIRE;
- case 'I':
- return ICE;
- case 'L':
- return LIGHTING;
- case 'S':
- return POISON;
- case 'H':
- return HOLY;
- case 'D':
- return DARK;
- case 'P':
- return NEUTRAL;
- }
- throw new IllegalArgumentException("unknown elemnt char " + c);
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/life/ElementalEffectiveness.java b/tools/MapleSkillbookChanceFetcher/src/life/ElementalEffectiveness.java
deleted file mode 100644
index f8d23ef5c7..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/life/ElementalEffectiveness.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package life;
-
-public enum ElementalEffectiveness {
- NORMAL, IMMUNE, STRONG, WEAK, NEUTRAL;
-
- public static ElementalEffectiveness getByNumber(int num) {
- switch (num) {
- case 1:
- return IMMUNE;
- case 2:
- return STRONG;
- case 3:
- return WEAK;
- case 4:
- return NEUTRAL;
- default:
- throw new IllegalArgumentException("Unkown effectiveness: " + num);
- }
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/life/MapleLifeFactory.java b/tools/MapleSkillbookChanceFetcher/src/life/MapleLifeFactory.java
deleted file mode 100644
index 23ccd67e43..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/life/MapleLifeFactory.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
-This file is part of the OdinMS Maple Story Server
-Copyright (C) 2008 Patrick Huy
-Matthias Butz
-Jan Christian Meyer
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation version 3 as published by
-the Free Software Foundation. You may not use, modify or distribute
-this program under any other version of the GNU Affero General Public
-License.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
- */
-package life;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import provider.MapleData;
-import provider.MapleDataDirectoryEntry;
-import provider.MapleDataFileEntry;
-import provider.MapleDataProvider;
-import provider.MapleDataProviderFactory;
-import provider.MapleDataTool;
-import provider.wz.MapleDataType;
-import tools.Pair;
-
-public class MapleLifeFactory {
- private static String wzPath = "../../wz";
- private static MapleDataProvider data = MapleDataProviderFactory.getDataProvider(new File(wzPath + "/Mob.wz"));
- private final static MapleDataProvider stringDataWZ = MapleDataProviderFactory.getDataProvider(new File(wzPath + "/String.wz"));
- private static MapleData mobStringData = stringDataWZ.getData("Mob.img");
- private static MapleData npcStringData = stringDataWZ.getData("Npc.img");
- private static Map monsterStats = new HashMap<>();
-
- private static int getMonsterId(String fileName) {
- return Integer.parseInt(fileName.substring(0, 7));
- }
-
- public static Map getAllMonsterStats() {
- MapleDataDirectoryEntry root = data.getRoot();
-
- System.out.print("Parsing mob stats... ");
- for (MapleDataFileEntry mFile : root.getFiles()) {
- try {
- String fileName = mFile.getName();
-
- //System.out.println("Parsing '" + fileName + "'");
- MapleData monsterData = data.getData(fileName);
- if (monsterData == null) {
- continue;
- }
-
- Integer mid = getMonsterId(fileName);
-
- MapleData monsterInfoData = monsterData.getChildByPath("info");
- MapleMonsterStats stats = new MapleMonsterStats();
- stats.setHp(MapleDataTool.getIntConvert("maxHP", monsterInfoData));
- stats.setFriendly(MapleDataTool.getIntConvert("damagedByMob", monsterInfoData, 0) == 1);
- stats.setPADamage(MapleDataTool.getIntConvert("PADamage", monsterInfoData));
- stats.setPDDamage(MapleDataTool.getIntConvert("PDDamage", monsterInfoData));
- stats.setMADamage(MapleDataTool.getIntConvert("MADamage", monsterInfoData));
- stats.setMDDamage(MapleDataTool.getIntConvert("MDDamage", monsterInfoData));
- stats.setMp(MapleDataTool.getIntConvert("maxMP", monsterInfoData, 0));
- stats.setExp(MapleDataTool.getIntConvert("exp", monsterInfoData, 0));
- stats.setLevel(MapleDataTool.getIntConvert("level", monsterInfoData));
- stats.setRemoveAfter(MapleDataTool.getIntConvert("removeAfter", monsterInfoData, 0));
- stats.setBoss(MapleDataTool.getIntConvert("boss", monsterInfoData, 0) > 0);
- stats.setExplosiveReward(MapleDataTool.getIntConvert("explosiveReward", monsterInfoData, 0) > 0);
- stats.setFfaLoot(MapleDataTool.getIntConvert("publicReward", monsterInfoData, 0) > 0);
- stats.setUndead(MapleDataTool.getIntConvert("undead", monsterInfoData, 0) > 0);
- stats.setName(MapleDataTool.getString(mid + "/name", mobStringData, "MISSINGNO"));
- stats.setBuffToGive(MapleDataTool.getIntConvert("buff", monsterInfoData, -1));
- stats.setCP(MapleDataTool.getIntConvert("getCP", monsterInfoData, 0));
- stats.setRemoveOnMiss(MapleDataTool.getIntConvert("removeOnMiss", monsterInfoData, 0) > 0);
-
- MapleData special = monsterInfoData.getChildByPath("coolDamage");
- if (special != null) {
- int coolDmg = MapleDataTool.getIntConvert("coolDamage", monsterInfoData);
- int coolProb = MapleDataTool.getIntConvert("coolDamageProb", monsterInfoData, 0);
- stats.setCool(new Pair<>(coolDmg, coolProb));
- }
- special = monsterInfoData.getChildByPath("loseItem");
- if (special != null) {
- for (MapleData liData : special.getChildren()) {
- stats.addLoseItem(new loseItem(MapleDataTool.getInt(liData.getChildByPath("id")), (byte) MapleDataTool.getInt(liData.getChildByPath("prop")), (byte) MapleDataTool.getInt(liData.getChildByPath("x"))));
- }
- }
- special = monsterInfoData.getChildByPath("selfDestruction");
- if (special != null) {
- stats.setSelfDestruction(new selfDestruction((byte) MapleDataTool.getInt(special.getChildByPath("action")), MapleDataTool.getIntConvert("removeAfter", special, -1), MapleDataTool.getIntConvert("hp", special, -1)));
- }
- MapleData firstAttackData = monsterInfoData.getChildByPath("firstAttack");
- int firstAttack = 0;
- if (firstAttackData != null) {
- if (firstAttackData.getType() == MapleDataType.FLOAT) {
- firstAttack = Math.round(MapleDataTool.getFloat(firstAttackData));
- } else {
- firstAttack = MapleDataTool.getInt(firstAttackData);
- }
- }
- stats.setFirstAttack(firstAttack > 0);
- stats.setDropPeriod(MapleDataTool.getIntConvert("dropItemPeriod", monsterInfoData, 0) * 10000);
-
- stats.setTagColor(MapleDataTool.getIntConvert("hpTagColor", monsterInfoData, 0));
- stats.setTagBgColor(MapleDataTool.getIntConvert("hpTagBgcolor", monsterInfoData, 0));
-
- for (MapleData idata : monsterData) {
- if (!idata.getName().equals("info")) {
- int delay = 0;
- for (MapleData pic : idata.getChildren()) {
- delay += MapleDataTool.getIntConvert("delay", pic, 0);
- }
- stats.setAnimationTime(idata.getName(), delay);
- }
- }
- MapleData reviveInfo = monsterInfoData.getChildByPath("revive");
- if (reviveInfo != null) {
- List revives = new LinkedList<>();
- for (MapleData data_ : reviveInfo) {
- revives.add(MapleDataTool.getInt(data_));
- }
- stats.setRevives(revives);
- }
- decodeElementalString(stats, MapleDataTool.getString("elemAttr", monsterInfoData, ""));
- MapleData monsterSkillData = monsterInfoData.getChildByPath("skill");
- if (monsterSkillData != null) {
- int i = 0;
- List> skills = new ArrayList<>();
- while (monsterSkillData.getChildByPath(Integer.toString(i)) != null) {
- skills.add(new Pair<>(Integer.valueOf(MapleDataTool.getInt(i + "/skill", monsterSkillData, 0)), Integer.valueOf(MapleDataTool.getInt(i + "/level", monsterSkillData, 0))));
- i++;
- }
- stats.setSkills(skills);
- }
- MapleData banishData = monsterInfoData.getChildByPath("ban");
- if (banishData != null) {
- stats.setBanishInfo(new BanishInfo(MapleDataTool.getString("banMsg", banishData), MapleDataTool.getInt("banMap/0/field", banishData, -1), MapleDataTool.getString("banMap/0/portal", banishData, "sp")));
- }
-
- monsterStats.put(mid, stats);
- } catch(NullPointerException npe) {
- //System.out.println("[SEVERE] " + mFile.getName() + " failed to load. Issue: " + npe.getMessage() + "\n\n");
- }
- }
-
- System.out.println("done!");
- return monsterStats;
- }
-
- private static void decodeElementalString(MapleMonsterStats stats, String elemAttr) {
- for (int i = 0; i < elemAttr.length(); i += 2) {
- stats.setEffectiveness(Element.getFromChar(elemAttr.charAt(i)), ElementalEffectiveness.getByNumber(Integer.valueOf(String.valueOf(elemAttr.charAt(i + 1)))));
- }
- }
-
- public static class BanishInfo {
-
- private int map;
- private String portal, msg;
-
- public BanishInfo(String msg, int map, String portal) {
- this.msg = msg;
- this.map = map;
- this.portal = portal;
- }
-
- public int getMap() {
- return map;
- }
-
- public String getPortal() {
- return portal;
- }
-
- public String getMsg() {
- return msg;
- }
- }
-
- public static class loseItem {
-
- private int id;
- private byte chance, x;
-
- private loseItem(int id, byte chance, byte x) {
- this.id = id;
- this.chance = chance;
- this.x = x;
- }
-
- public int getId() {
- return id;
- }
-
- public byte getChance() {
- return chance;
- }
-
- public byte getX() {
- return x;
- }
- }
-
- public static class selfDestruction {
-
- private byte action;
- private int removeAfter;
- private int hp;
-
- private selfDestruction(byte action, int removeAfter, int hp) {
- this.action = action;
- this.removeAfter = removeAfter;
- this.hp = hp;
- }
-
- public int getHp() {
- return hp;
- }
-
- public byte getAction() {
- return action;
- }
-
- public int removeAfter() {
- return removeAfter;
- }
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/life/MapleMonsterStats.java b/tools/MapleSkillbookChanceFetcher/src/life/MapleMonsterStats.java
deleted file mode 100644
index ce2cacf6b3..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/life/MapleMonsterStats.java
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package life;
-
-import life.MapleLifeFactory.BanishInfo;
-import life.MapleLifeFactory.loseItem;
-import life.MapleLifeFactory.selfDestruction;
-import tools.Pair;
-
-import java.util.*;
-
-/**
- * @author Frz
- */
-public class MapleMonsterStats {
- private boolean changeable;
- private int exp, hp, mp, level, PADamage, PDDamage, MADamage, MDDamage, dropPeriod, cp, buffToGive, removeAfter;
- private boolean boss, undead, ffaLoot, isExplosiveReward, firstAttack, removeOnMiss;
- private String name;
- private Map animationTimes = new HashMap();
- private Map resistance = new HashMap();
- private List revives = Collections.emptyList();
- private byte tagColor, tagBgColor;
- private List> skills = new ArrayList>();
- private Pair cool = null;
- private BanishInfo banish = null;
- private List loseItem = null;
- private selfDestruction selfDestruction = null;
- private boolean friendly;
-
- public void setChange(boolean change) {
- this.changeable = change;
- }
-
- public boolean isChangeable() {
- return changeable;
- }
-
- public int getExp() {
- return exp;
- }
-
- public void setExp(int exp) {
- this.exp = exp;
- }
-
- public int getHp() {
- return hp;
- }
-
- public void setHp(int hp) {
- this.hp = hp;
- }
-
- public int getMp() {
- return mp;
- }
-
- public void setMp(int mp) {
- this.mp = mp;
- }
-
- public int getLevel() {
- return level;
- }
-
- public void setLevel(int level) {
- this.level = level;
- }
-
- public int removeAfter() {
- return removeAfter;
- }
-
- public void setRemoveAfter(int removeAfter) {
- this.removeAfter = removeAfter;
- }
-
- public int getDropPeriod() {
- return dropPeriod;
- }
-
- public void setDropPeriod(int dropPeriod) {
- this.dropPeriod = dropPeriod;
- }
-
- public void setBoss(boolean boss) {
- this.boss = boss;
- }
-
- public boolean isBoss() {
- return boss;
- }
-
- public void setFfaLoot(boolean ffaLoot) {
- this.ffaLoot = ffaLoot;
- }
-
- public boolean isFfaLoot() {
- return ffaLoot;
- }
-
- public void setAnimationTime(String name, int delay) {
- animationTimes.put(name, delay);
- }
-
- public int getAnimationTime(String name) {
- Integer ret = animationTimes.get(name);
- if (ret == null) {
- return 500;
- }
- return ret.intValue();
- }
-
- public boolean isMobile() {
- return animationTimes.containsKey("move") || animationTimes.containsKey("fly");
- }
-
- public List getRevives() {
- return revives;
- }
-
- public void setRevives(List revives) {
- this.revives = revives;
- }
-
- public void setUndead(boolean undead) {
- this.undead = undead;
- }
-
- public boolean getUndead() {
- return undead;
- }
-
- public void setEffectiveness(Element e, ElementalEffectiveness ee) {
- resistance.put(e, ee);
- }
-
- public ElementalEffectiveness getEffectiveness(Element e) {
- ElementalEffectiveness elementalEffectiveness = resistance.get(e);
- if (elementalEffectiveness == null) {
- return ElementalEffectiveness.NORMAL;
- } else {
- return elementalEffectiveness;
- }
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public byte getTagColor() {
- return tagColor;
- }
-
- public void setTagColor(int tagColor) {
- this.tagColor = (byte) tagColor;
- }
-
- public byte getTagBgColor() {
- return tagBgColor;
- }
-
- public void setTagBgColor(int tagBgColor) {
- this.tagBgColor = (byte) tagBgColor;
- }
-
- public void setSkills(List> skills) {
- this.skills.addAll(skills);
- }
-
- public List> getSkills() {
- return Collections.unmodifiableList(this.skills);
- }
-
- public int getNoSkills() {
- return this.skills.size();
- }
-
- public boolean hasSkill(int skillId, int level) {
- for (Pair skill : skills) {
- if (skill.getLeft() == skillId && skill.getRight() == level) {
- return true;
- }
- }
- return false;
- }
-
- public void setFirstAttack(boolean firstAttack) {
- this.firstAttack = firstAttack;
- }
-
- public boolean isFirstAttack() {
- return firstAttack;
- }
-
- public void setBuffToGive(int buff) {
- this.buffToGive = buff;
- }
-
- public int getBuffToGive() {
- return buffToGive;
- }
-
- void removeEffectiveness(Element e) {
- resistance.remove(e);
- }
-
- public BanishInfo getBanishInfo() {
- return banish;
- }
-
- public void setBanishInfo(BanishInfo banish) {
- this.banish = banish;
- }
-
- public int getPADamage() {
- return PADamage;
- }
-
- public void setPADamage(int PADamage) {
- this.PADamage = PADamage;
- }
-
- public int getCP() {
- return cp;
- }
-
- public void setCP(int cp) {
- this.cp = cp;
- }
-
- public List loseItem() {
- return loseItem;
- }
-
- public void addLoseItem(loseItem li) {
- if (loseItem == null) {
- loseItem = new LinkedList();
- }
- loseItem.add(li);
- }
-
- public selfDestruction selfDestruction() {
- return selfDestruction;
- }
-
- public void setSelfDestruction(selfDestruction sd) {
- this.selfDestruction = sd;
- }
-
- public void setExplosiveReward(boolean isExplosiveReward) {
- this.isExplosiveReward = isExplosiveReward;
- }
-
- public boolean isExplosiveReward() {
- return isExplosiveReward;
- }
-
- public void setRemoveOnMiss(boolean removeOnMiss) {
- this.removeOnMiss = removeOnMiss;
- }
-
- public boolean removeOnMiss() {
- return removeOnMiss;
- }
-
- public void setCool(Pair cool) {
- this.cool = cool;
- }
-
- public Pair getCool() {
- return cool;
- }
-
- public int getPDDamage() {
- return PDDamage;
- }
-
- public int getMADamage() {
- return MADamage;
- }
-
- public int getMDDamage() {
- return MDDamage;
- }
-
- public boolean isFriendly() {
- return friendly;
- }
-
- public void setFriendly(boolean value) {
- this.friendly = value;
- }
-
- public void setPDDamage(int PDDamage) {
- this.PDDamage = PDDamage;
- }
-
- public void setMADamage(int MADamage) {
- this.MADamage = MADamage;
- }
-
- public void setMDDamage(int MDDamage) {
- this.MDDamage = MDDamage;
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/MapleCanvas.java b/tools/MapleSkillbookChanceFetcher/src/provider/MapleCanvas.java
deleted file mode 100644
index 10ab682196..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/MapleCanvas.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-import java.awt.image.BufferedImage;
-
-public interface MapleCanvas {
- int getHeight();
- int getWidth();
- BufferedImage getImage();
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/MapleData.java b/tools/MapleSkillbookChanceFetcher/src/provider/MapleData.java
deleted file mode 100644
index 4d90a93804..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/MapleData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-import java.util.List;
-import provider.wz.MapleDataType;
-
-public interface MapleData extends MapleDataEntity, Iterable {
- @Override
- public String getName();
- public MapleDataType getType();
- public List getChildren();
- public MapleData getChildByPath(String path);
- public Object getData();
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataDirectoryEntry.java b/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataDirectoryEntry.java
deleted file mode 100644
index cb043e0c94..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataDirectoryEntry.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-import java.util.List;
-
-/**
- *
- * @author Matze
- */
-public interface MapleDataDirectoryEntry extends MapleDataEntry {
- public List getSubdirectories();
- public List getFiles();
- public MapleDataEntry getEntry(String name);
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataEntity.java b/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataEntity.java
deleted file mode 100644
index 03ff77649c..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataEntity.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-/**
- *
- * @author Matze
- */
-public interface MapleDataEntity {
- public String getName();
- public MapleDataEntity getParent();
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataEntry.java b/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataEntry.java
deleted file mode 100644
index 62db6d0abe..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataEntry.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-/**
- *
- * @author Matze
- */
-public interface MapleDataEntry extends MapleDataEntity {
- public String getName();
- public int getSize();
- public int getChecksum();
- public int getOffset();
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataFileEntry.java b/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataFileEntry.java
deleted file mode 100644
index 902130a612..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataFileEntry.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-/**
- *
- * @author Matze
- */
-public interface MapleDataFileEntry extends MapleDataEntry {
- public void setOffset(int offset);
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataProvider.java b/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataProvider.java
deleted file mode 100644
index 5237b7ac37..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataProvider.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-public interface MapleDataProvider {
- MapleData getData(String path);
- MapleDataDirectoryEntry getRoot();
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataProviderFactory.java b/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataProviderFactory.java
deleted file mode 100644
index 14753d4406..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataProviderFactory.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-import java.io.File;
-import java.io.IOException;
-import provider.wz.WZFile;
-import provider.wz.XMLWZFile;
-
-public class MapleDataProviderFactory {
- private final static String wzPath = System.getProperty("wzpath");
-
- private static MapleDataProvider getWZ(File in, boolean provideImages) {
- if (in.getName().toLowerCase().endsWith("wz") && !in.isDirectory()) {
- try {
- return new WZFile(in, provideImages);
- } catch (IOException e) {
- throw new RuntimeException("Loading WZ File failed", e);
- }
- } else {
- return new XMLWZFile(in);
- }
- }
-
- public static MapleDataProvider getDataProvider(File in) {
- return getWZ(in, false);
- }
-
- public static MapleDataProvider getImageProvidingDataProvider(File in) {
- return getWZ(in, true);
- }
-
- public static File fileInWZPath(String filename) {
- return new File(wzPath, filename);
- }
-}
\ No newline at end of file
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataTool.java b/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataTool.java
deleted file mode 100644
index 25f4c7f817..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/MapleDataTool.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-import java.awt.Point;
-import java.awt.image.BufferedImage;
-import provider.wz.MapleDataType;
-
-public class MapleDataTool {
- public static String getString(MapleData data) {
- return ((String) data.getData());
- }
-
- public static String getString(MapleData data, String def) {
- if (data == null || data.getData() == null) {
- return def;
- } else {
- return ((String) data.getData());
- }
- }
-
- public static String getString(String path, MapleData data) {
- return getString(data.getChildByPath(path));
- }
-
- public static String getString(String path, MapleData data, String def) {
- return getString(data.getChildByPath(path), def);
- }
-
- public static double getDouble(MapleData data) {
- return ((Double) data.getData()).doubleValue();
- }
-
- public static float getFloat(MapleData data) {
- return ((Float) data.getData()).floatValue();
- }
-
- public static int getInt(MapleData data) {
- if (data == null || data.getData() == null) {
- return 0;// DEF?
- }
- return ((Integer) data.getData()).intValue();
- }
-
- public static int getInt(String path, MapleData data) {
- return getInt(data.getChildByPath(path));
- }
-
- public static int getIntConvert(MapleData data) {
- if (data.getType() == MapleDataType.STRING) {
- return Integer.parseInt(getString(data));
- } else {
- return getInt(data);
- }
- }
-
- public static int getIntConvert(String path, MapleData data) {
- MapleData d = data.getChildByPath(path);
- if (d.getType() == MapleDataType.STRING) {
- return Integer.parseInt(getString(d));
- } else {
- return getInt(d);
- }
- }
-
- public static int getInt(MapleData data, int def) {
- if (data == null || data.getData() == null) {
- return def;
- } else if (data.getType() == MapleDataType.STRING) {
- return Integer.parseInt(getString(data));
- } else {
- return ((Integer) data.getData()).intValue();
- }
- }
-
- public static int getInt(String path, MapleData data, int def) {
- return getInt(data.getChildByPath(path), def);
- }
-
- public static int getIntConvert(String path, MapleData data, int def) {
- MapleData d = data.getChildByPath(path);
- if (d == null) {
- return def;
- }
- if (d.getType() == MapleDataType.STRING) {
- try {
- return Integer.parseInt(getString(d));
- } catch (NumberFormatException nfe) {
- nfe.printStackTrace();
- return def;
- }
- } else {
- return getInt(d, def);
- }
- }
-
- public static BufferedImage getImage(MapleData data) {
- return ((MapleCanvas) data.getData()).getImage();
- }
-
- public static Point getPoint(MapleData data) {
- return ((Point) data.getData());
- }
-
- public static Point getPoint(String path, MapleData data) {
- return getPoint(data.getChildByPath(path));
- }
-
- public static Point getPoint(String path, MapleData data, Point def) {
- final MapleData pointData = data.getChildByPath(path);
- if (pointData == null) {
- return def;
- }
- return getPoint(pointData);
- }
-
- public static String getFullDataPath(MapleData data) {
- String path = "";
- MapleDataEntity myData = data;
- while (myData != null) {
- path = myData.getName() + "/" + path;
- myData = myData.getParent();
- }
- return path.substring(0, path.length() - 1);
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/FileStoredPngMapleCanvas.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/FileStoredPngMapleCanvas.java
deleted file mode 100644
index 21736c2c16..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/FileStoredPngMapleCanvas.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
-import javax.imageio.ImageIO;
-import provider.MapleCanvas;
-
-public class FileStoredPngMapleCanvas implements MapleCanvas {
- private File file;
- private int width;
- private int height;
- private BufferedImage image;
-
- public FileStoredPngMapleCanvas(int width, int height, File fileIn) {
- this.width = width;
- this.height = height;
- this.file = fileIn;
- }
-
- @Override
- public int getHeight() {
- return height;
- }
-
- @Override
- public int getWidth() {
- return width;
- }
-
- @Override
- public BufferedImage getImage() {
- loadImageIfNecessary();
- return image;
- }
-
- private void loadImageIfNecessary() {
- if (image == null) {
- try {
- image = ImageIO.read(file);
- // replace the dimensions loaded from the wz by the REAL dimensions from the image - should be equal tho
- width = image.getWidth();
- height = image.getHeight();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/ImgMapleSound.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/ImgMapleSound.java
deleted file mode 100644
index 8add2ccb36..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/ImgMapleSound.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-public class ImgMapleSound {
- private int dataLength, offset;
-
- public ImgMapleSound(int dataLength, int offset) {
- this.dataLength = dataLength;
- this.offset = offset;
- }
-
- public int getDataLength() {
- return dataLength;
- }
-
- public int getOffset() {
- return offset;
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/ListWZFile.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/ListWZFile.java
deleted file mode 100644
index 1672a08c59..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/ListWZFile.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import provider.MapleDataProviderFactory;
-import tools.data.input.GenericLittleEndianAccessor;
-import tools.data.input.InputStreamByteStream;
-import tools.data.input.LittleEndianAccessor;
-
-public class ListWZFile {
- private LittleEndianAccessor lea;
- private List entries = new ArrayList();
- private static Collection modernImgs = new HashSet();
-
- public static byte[] xorBytes(byte[] a, byte[] b) {
- byte[] wusched = new byte[a.length];
- for (int i = 0; i < a.length; i++) {
- wusched[i] = (byte) (a[i] ^ b[i]);
- }
- return wusched;
- }
-
- public ListWZFile(File listwz) throws FileNotFoundException {
- lea = new GenericLittleEndianAccessor(new InputStreamByteStream(new BufferedInputStream(new FileInputStream(listwz))));
- while (lea.available() > 0) {
- int l = lea.readInt() * 2;
- byte[] chunk = new byte[l];
- for (int i = 0; i < chunk.length; i++) {
- chunk[i] = lea.readByte();
- }
- lea.readChar();
- final String value = String.valueOf(WZTool.readListString(chunk));
- entries.add(value);
- }
- entries = Collections.unmodifiableList(entries);
- }
-
- public List getEntries() {
- return entries;
- }
-
- public static void init() {
- final String listWz = System.getProperty("listwz");
- if (listWz != null) {
- ListWZFile listwz;
- try {
- listwz = new ListWZFile(MapleDataProviderFactory.fileInWZPath("List.wz"));
- modernImgs = new HashSet(listwz.getEntries());
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
-
- public static boolean isModernImgFile(String path) {
- return modernImgs.contains(path);
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/MapleDataType.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/MapleDataType.java
deleted file mode 100644
index e074d57d14..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/MapleDataType.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-public enum MapleDataType {
- NONE, IMG_0x00, SHORT, INT, FLOAT, DOUBLE, STRING, EXTENDED, PROPERTY, CANVAS, VECTOR, CONVEX, SOUND, UOL, UNKNOWN_TYPE, UNKNOWN_EXTENDED_TYPE;
-}
\ No newline at end of file
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/PNGMapleCanvas.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/PNGMapleCanvas.java
deleted file mode 100644
index 97c2303804..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/PNGMapleCanvas.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.awt.Point;
-import java.awt.image.BufferedImage;
-import java.awt.image.DataBuffer;
-import java.awt.image.DataBufferByte;
-import java.awt.image.PixelInterleavedSampleModel;
-import java.awt.image.Raster;
-import java.awt.image.SampleModel;
-import java.awt.image.WritableRaster;
-import java.util.zip.DataFormatException;
-import java.util.zip.Inflater;
-import provider.MapleCanvas;
-
-public class PNGMapleCanvas implements MapleCanvas {
- private static final int[] ZAHLEN = new int[]{2, 1, 0, 3};
- private int height;
- private int width;
- private int dataLength;
- private int format;
- private byte[] data;
-
- public PNGMapleCanvas(int width, int height, int dataLength, int format, byte[] data) {
- super();
- this.height = height;
- this.width = width;
- this.dataLength = dataLength;
- this.format = format;
- this.data = data;
- }
-
- public int getHeight() {
- return height;
- }
-
- public int getWidth() {
- return width;
- }
-
- public int getFormat() {
- return format;
- }
-
- private byte[] getData() {
- return data;
- }
-
- @Override
- public BufferedImage getImage() {
- int sizeUncompressed = 0;
- int size8888 = 0;
- int maxWriteBuf = 2;
- int maxHeight = 3;
- byte[] writeBuf = new byte[maxWriteBuf];
- @SuppressWarnings ("unused")
- byte[] rowPointers = new byte[maxHeight];
- switch (getFormat()) {
- case 1:
- case 513:
- sizeUncompressed = getHeight() * getWidth() * 4;
- break;
- case 2:
- sizeUncompressed = getHeight() * getWidth() * 8;
- break;
- case 517:
- sizeUncompressed = getHeight() * getWidth() / 128;
- break;
- }
- size8888 = getHeight() * getWidth() * 8;
- if (size8888 > maxWriteBuf) {
- maxWriteBuf = size8888;
- writeBuf = new byte[maxWriteBuf];
- }
- if (getHeight() > maxHeight) {
- maxHeight = getHeight();
- rowPointers = new byte[maxHeight];
- }
- Inflater dec = new Inflater();
- dec.setInput(getData(), 0, dataLength);
- int declen = 0;
- byte[] uc = new byte[sizeUncompressed];
- try {
- declen = dec.inflate(uc);
- } catch (DataFormatException ex) {
- throw new RuntimeException("zlib fucks", ex);
- }
- dec.end();
- if (getFormat() == 1) {
- for (int i = 0; i < sizeUncompressed; i++) {
- byte low = (byte) (uc[i] & 0x0F);
- byte high = (byte) (uc[i] & 0xF0);
- writeBuf[(i << 1)] = (byte) (((low << 4) | low) & 0xFF);
- writeBuf[(i << 1) + 1] = (byte) (high | ((high >>> 4) & 0xF));
- }
- } else if (getFormat() == 2) {
- writeBuf = uc;
- } else if (getFormat() == 513) {
- for (int i = 0; i < declen; i += 2) {
- byte bBits = (byte) ((uc[i] & 0x1F) << 3);
- byte gBits = (byte) (((uc[i + 1] & 0x07) << 5) | ((uc[i] & 0xE0) >> 3));
- byte rBits = (byte) (uc[i + 1] & 0xF8);
- writeBuf[(i << 1)] = (byte) (bBits | (bBits >> 5));
- writeBuf[(i << 1) + 1] = (byte) (gBits | (gBits >> 6));
- writeBuf[(i << 1) + 2] = (byte) (rBits | (rBits >> 5));
- writeBuf[(i << 1) + 3] = (byte) 0xFF;
- }
- } else if (getFormat() == 517) {
- byte b = 0x00;
- int pixelIndex = 0;
- for (int i = 0; i < declen; i++) {
- for (int j = 0; j < 8; j++) {
- b = (byte) (((uc[i] & (0x01 << (7 - j))) >> (7 - j)) * 255);
- for (int k = 0; k < 16; k++) {
- pixelIndex = (i << 9) + (j << 6) + k * 2;
- writeBuf[pixelIndex] = b;
- writeBuf[pixelIndex + 1] = b;
- writeBuf[pixelIndex + 2] = b;
- writeBuf[pixelIndex + 3] = (byte) 0xFF;
- }
- }
- }
- }
- DataBufferByte imgData = new DataBufferByte(writeBuf, sizeUncompressed);
- SampleModel sm = new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE, getWidth(), getHeight(), 4, getWidth() * 4, ZAHLEN);
- WritableRaster imgRaster = Raster.createWritableRaster(sm, imgData, new Point(0, 0));
- BufferedImage aa = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
- aa.setData(imgRaster);
- return aa;
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZDirectoryEntry.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZDirectoryEntry.java
deleted file mode 100644
index d24b8cb2b9..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZDirectoryEntry.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import provider.MapleDataDirectoryEntry;
-import provider.MapleDataEntity;
-import provider.MapleDataEntry;
-import provider.MapleDataFileEntry;
-
-public class WZDirectoryEntry extends WZEntry implements MapleDataDirectoryEntry {
- private List subdirs = new ArrayList();
- private List files = new ArrayList();
- private Map entries = new HashMap();
-
- public WZDirectoryEntry(String name, int size, int checksum, MapleDataEntity parent) {
- super(name, size, checksum, parent);
- }
-
- public WZDirectoryEntry() {
- super(null, 0, 0, null);
- }
-
- public void addDirectory(MapleDataDirectoryEntry dir) {
- subdirs.add(dir);
- entries.put(dir.getName(), dir);
- }
-
- public void addFile(MapleDataFileEntry fileEntry) {
- files.add(fileEntry);
- entries.put(fileEntry.getName(), fileEntry);
- }
-
- public List getSubdirectories() {
- return Collections.unmodifiableList(subdirs);
- }
-
- public List getFiles() {
- return Collections.unmodifiableList(files);
- }
-
- public MapleDataEntry getEntry(String name) {
- return entries.get(name);
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZEntry.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZEntry.java
deleted file mode 100644
index 1e921b2082..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZEntry.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import provider.MapleDataEntity;
-import provider.MapleDataEntry;
-
-public class WZEntry implements MapleDataEntry {
- private String name;
- private int size;
- private int checksum;
- private int offset;
- private MapleDataEntity parent;
-
- public WZEntry(String name, int size, int checksum, MapleDataEntity parent) {
- super();
- this.name = name;
- this.size = size;
- this.checksum = checksum;
- this.parent = parent;
- }
-
- public String getName() {
- return name;
- }
-
- public int getSize() {
- return size;
- }
-
- public int getChecksum() {
- return checksum;
- }
-
- public int getOffset() {
- return offset;
- }
-
- public MapleDataEntity getParent() {
- return parent;
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZFile.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZFile.java
deleted file mode 100644
index c6c0abf537..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZFile.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import provider.MapleData;
-import provider.MapleDataDirectoryEntry;
-import provider.MapleDataFileEntry;
-import provider.MapleDataProvider;
-import tools.data.input.GenericLittleEndianAccessor;
-import tools.data.input.GenericSeekableLittleEndianAccessor;
-import tools.data.input.InputStreamByteStream;
-import tools.data.input.LittleEndianAccessor;
-import tools.data.input.RandomAccessByteStream;
-import tools.data.input.SeekableLittleEndianAccessor;
-
-public class WZFile implements MapleDataProvider {
- static {
- ListWZFile.init();
- }
- private File wzfile;
- private LittleEndianAccessor lea;
- private SeekableLittleEndianAccessor slea;
- private int headerSize;
- private WZDirectoryEntry root;
- private boolean provideImages;
- private int cOffset;
-
- public WZFile(File wzfile, boolean provideImages) throws IOException {
- this.wzfile = wzfile;
- lea = new GenericLittleEndianAccessor(new InputStreamByteStream(new BufferedInputStream(new FileInputStream(wzfile))));
- RandomAccessFile raf = new RandomAccessFile(wzfile, "r");
- slea = new GenericSeekableLittleEndianAccessor(new RandomAccessByteStream(raf));
- root = new WZDirectoryEntry(wzfile.getName(), 0, 0, null);
- this.provideImages = provideImages;
- load();
- }
-
- private void load() throws IOException {
- lea.readAsciiString(4);
- lea.readInt();
- lea.readInt();
- headerSize = lea.readInt();
- lea.readNullTerminatedAsciiString();
- lea.readShort();
- parseDirectory(root);
- cOffset = (int) lea.getBytesRead();
- getOffsets(root);
- }
-
- private void getOffsets(MapleDataDirectoryEntry dir) {
- for (MapleDataFileEntry file : dir.getFiles()) {
- file.setOffset(cOffset);
- cOffset += file.getSize();
- }
- for (MapleDataDirectoryEntry sdir : dir.getSubdirectories()) {
- getOffsets(sdir);
- }
- }
-
- private void parseDirectory(WZDirectoryEntry dir) {
- int entries = WZTool.readValue(lea);
- for (int i = 0; i < entries; i++) {
- byte marker = lea.readByte();
- String name = null;
- int size, checksum;
- switch (marker) {
- case 0x02:
- name = WZTool.readDecodedStringAtOffsetAndReset(slea, lea.readInt() + this.headerSize + 1);
- size = WZTool.readValue(lea);
- checksum = WZTool.readValue(lea);
- lea.readInt(); //dummy int
- dir.addFile(new WZFileEntry(name, size, checksum, dir));
- break;
- case 0x03:
- case 0x04:
- name = WZTool.readDecodedString(lea);
- size = WZTool.readValue(lea);
- checksum = WZTool.readValue(lea);
- lea.readInt(); //dummy int
- if (marker == 3) {
- dir.addDirectory(new WZDirectoryEntry(name, size, checksum, dir));
- } else {
- dir.addFile(new WZFileEntry(name, size, checksum, dir));
- }
- break;
- default:
- }
- }
- for (MapleDataDirectoryEntry idir : dir.getSubdirectories()) {
- parseDirectory((WZDirectoryEntry) idir);
- }
- }
-
- public WZIMGFile getImgFile(String path) throws IOException {
- String segments[] = path.split("/");
- WZDirectoryEntry dir = root;
- for (int x = 0; x < segments.length - 1; x++) {
- dir = (WZDirectoryEntry) dir.getEntry(segments[x]);
- if (dir == null) {
- return null;
- }
- }
- WZFileEntry entry = (WZFileEntry) dir.getEntry(segments[segments.length - 1]);
- if (entry == null) {
- return null;
- }
- String fullPath = wzfile.getName().substring(0, wzfile.getName().length() - 3).toLowerCase() + "/" + path;
- return new WZIMGFile(this.wzfile, entry, provideImages, ListWZFile.isModernImgFile(fullPath));
- }
-
- @Override
- public synchronized MapleData getData(String path) {
- try {
- WZIMGFile imgFile = getImgFile(path);
- if (imgFile == null) {
- return null;
- }
- MapleData ret = imgFile.getRoot();
- return ret;
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
- }
-
- @Override
- public MapleDataDirectoryEntry getRoot() {
- return root;
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZFileEntry.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZFileEntry.java
deleted file mode 100644
index 792371d9cf..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZFileEntry.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import provider.MapleDataEntity;
-import provider.MapleDataFileEntry;
-
-public class WZFileEntry extends WZEntry implements MapleDataFileEntry {
- private int offset;
-
- public WZFileEntry(String name, int size, int checksum, MapleDataEntity parent) {
- super(name, size, checksum, parent);
- }
-
- @Override
- public int getOffset() {
- return offset;
- }
-
- public void setOffset(int offset) {
- this.offset = offset;
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZIMGEntry.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZIMGEntry.java
deleted file mode 100644
index 385d785183..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZIMGEntry.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import provider.MapleData;
-import provider.MapleDataEntity;
-
-public class WZIMGEntry implements MapleData {
- private String name;
- private MapleDataType type;
- private List children = new ArrayList(10);
- private Object data;
- private MapleDataEntity parent;
-
- public WZIMGEntry(MapleDataEntity parent) {
- this.parent = parent;
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- @Override
- public MapleDataType getType() {
- return type;
- }
-
- @Override
- public List getChildren() {
- return Collections.unmodifiableList(children);
- }
-
- @Override
- public MapleData getChildByPath(String path) {
- String segments[] = path.split("/");
- if (segments[0].equals("..")) {
- return ((MapleData) getParent()).getChildByPath(path.substring(path.indexOf("/") + 1));
- }
- MapleData ret = this;
- for (int x = 0; x < segments.length; x++) {
- boolean foundChild = false;
- for (MapleData child : ret.getChildren()) {
- if (child.getName().equals(segments[x])) {
- ret = child;
- foundChild = true;
- break;
- }
- }
- if (!foundChild) {
- return null;
- }
- }
- return ret;
- }
-
- @Override
- public Object getData() {
- return data;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public void setType(MapleDataType type) {
- this.type = type;
- }
-
- public void setData(Object data) {
- this.data = data;
- }
-
- public void addChild(WZIMGEntry entry) {
- children.add(entry);
- }
-
- @Override
- public Iterator iterator() {
- return getChildren().iterator();
- }
-
- @Override
- public String toString() {
- return getName() + ":" + getData();
- }
-
- public MapleDataEntity getParent() {
- return parent;
- }
-
- public void finish() {
- ((ArrayList) children).trimToSize();
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZIMGFile.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZIMGFile.java
deleted file mode 100644
index bec06c78bd..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZIMGFile.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.awt.Point;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.RandomAccessFile;
-import tools.data.input.GenericSeekableLittleEndianAccessor;
-import tools.data.input.RandomAccessByteStream;
-import tools.data.input.SeekableLittleEndianAccessor;
-
-public class WZIMGFile {
- private WZFileEntry file;
- private WZIMGEntry root;
- private boolean provideImages;
- @SuppressWarnings ("unused")
- private boolean modernImg;
-
- public WZIMGFile(File wzfile, WZFileEntry file, boolean provideImages, boolean modernImg) throws IOException {
- RandomAccessFile raf = new RandomAccessFile(wzfile, "r");
- SeekableLittleEndianAccessor slea = new GenericSeekableLittleEndianAccessor(new RandomAccessByteStream(raf));
- slea.seek(file.getOffset());
- this.file = file;
- this.provideImages = provideImages;
- root = new WZIMGEntry(file.getParent());
- root.setName(file.getName());
- root.setType(MapleDataType.EXTENDED);
- this.modernImg = modernImg;
- parseExtended(root, slea, 0);
- root.finish();
- raf.close();
- }
-
- protected void dumpImg(OutputStream out, SeekableLittleEndianAccessor slea) throws IOException {
- DataOutputStream os = new DataOutputStream(out);
- long oldPos = slea.getPosition();
- slea.seek(file.getOffset());
- for (int x = 0; x < file.getSize(); x++) {
- os.write(slea.readByte());
- }
- slea.seek(oldPos);
- }
-
- public WZIMGEntry getRoot() {
- return root;
- }
-
- private void parse(WZIMGEntry entry, SeekableLittleEndianAccessor slea) {
- byte marker = slea.readByte();
- switch (marker) {
- case 0: {
- String name = WZTool.readDecodedString(slea);
- entry.setName(name);
- break;
- }
- case 1: {
- String name = WZTool.readDecodedStringAtOffsetAndReset(slea, file.getOffset() + slea.readInt());
- entry.setName(name);
- break;
- }
- default:
- System.out.println("Unknown Image identifier: " + marker + " at offset " + (slea.getPosition() - file.getOffset()));
- }
- marker = slea.readByte();
- switch (marker) {
- case 0:
- entry.setType(MapleDataType.IMG_0x00);
- break;
- case 2:
- case 11: //??? no idea, since 0.49
- entry.setType(MapleDataType.SHORT);
- entry.setData(Short.valueOf(slea.readShort()));
- break;
- case 3:
- entry.setType(MapleDataType.INT);
- entry.setData(Integer.valueOf(WZTool.readValue(slea)));
- break;
- case 4:
- entry.setType(MapleDataType.FLOAT);
- entry.setData(Float.valueOf(WZTool.readFloatValue(slea)));
- break;
- case 5:
- entry.setType(MapleDataType.DOUBLE);
- entry.setData(Double.valueOf(slea.readDouble()));
- break;
- case 8:
- entry.setType(MapleDataType.STRING);
- byte iMarker = slea.readByte();
- if (iMarker == 0) {
- entry.setData(WZTool.readDecodedString(slea));
- } else if (iMarker == 1) {
- entry.setData(WZTool.readDecodedStringAtOffsetAndReset(slea, slea.readInt() + file.getOffset()));
- } else {
- System.out.println("Unknown String type " + iMarker);
- }
- break;
- case 9:
- entry.setType(MapleDataType.EXTENDED);
- long endOfExtendedBlock = slea.readInt();
- endOfExtendedBlock += slea.getPosition();
- parseExtended(entry, slea, endOfExtendedBlock);
- break;
- default:
- System.out.println("Unknown Image type " + marker);
- }
- }
-
- private void parseExtended(WZIMGEntry entry, SeekableLittleEndianAccessor slea, long endOfExtendedBlock) {
- byte marker = slea.readByte();
- String type;
- switch (marker) {
- case 0x73:
- type = WZTool.readDecodedString(slea);
- break;
- case 0x1B:
- type = WZTool.readDecodedStringAtOffsetAndReset(slea, file.getOffset() + slea.readInt());
- break;
- default:
- throw new RuntimeException("Unknown extended image identifier: " + marker + " at offset " +
- (slea.getPosition() - file.getOffset()));
- }
- if (type.equals("Property")) {
- entry.setType(MapleDataType.PROPERTY);
- slea.readByte();
- slea.readByte();
- int children = WZTool.readValue(slea);
- for (int i = 0; i < children; i++) {
- WZIMGEntry cEntry = new WZIMGEntry(entry);
- parse(cEntry, slea);
- cEntry.finish();
- entry.addChild(cEntry);
- }
- } else if (type.equals("Canvas")) {
- entry.setType(MapleDataType.CANVAS);
- slea.readByte();
- marker = slea.readByte();
- if (marker == 0) {
- // do nothing
- } else if (marker == 1) {
- slea.readByte();
- slea.readByte();
- int children = WZTool.readValue(slea);
- for (int i = 0; i < children; i++) {
- WZIMGEntry child = new WZIMGEntry(entry);
- parse(child, slea);
- child.finish();
- entry.addChild(child);
- }
- } else {
- System.out.println("Canvas marker != 1 (" + marker + ")");
- }
- int width = WZTool.readValue(slea);
- int height = WZTool.readValue(slea);
- int format = WZTool.readValue(slea);
- int format2 = slea.readByte();
- slea.readInt();
- int dataLength = slea.readInt() - 1;
- slea.readByte();
- if (provideImages) {
- byte[] pngdata = slea.read(dataLength);
- entry.setData(new PNGMapleCanvas(width, height, dataLength, format + format2, pngdata));
- } else {
- entry.setData(new PNGMapleCanvas(width, height, dataLength, format + format2, null));
- slea.skip(dataLength);
- }
- } else if (type.equals("Shape2D#Vector2D")) {
- entry.setType(MapleDataType.VECTOR);
- int x = WZTool.readValue(slea);
- int y = WZTool.readValue(slea);
- entry.setData(new Point(x, y));
- } else if (type.equals("Shape2D#Convex2D")) {
- int children = WZTool.readValue(slea);
- for (int i = 0; i < children; i++) {
- WZIMGEntry cEntry = new WZIMGEntry(entry);
- parseExtended(cEntry, slea, 0);
- cEntry.finish();
- entry.addChild(cEntry);
- }
- } else if (type.equals("Sound_DX8")) {
- entry.setType(MapleDataType.SOUND);
- slea.readByte();
- int dataLength = WZTool.readValue(slea);
- WZTool.readValue(slea); // no clue what this is
- int offset = (int) slea.getPosition();
- entry.setData(new ImgMapleSound(dataLength, offset - file.getOffset()));
- slea.seek(endOfExtendedBlock);
- } else if (type.equals("UOL")) {
- entry.setType(MapleDataType.UOL);
- slea.readByte();
- byte uolmarker = slea.readByte();
- switch (uolmarker) {
- case 0:
- entry.setData(WZTool.readDecodedString(slea));
- break;
- case 1:
- entry.setData(WZTool.readDecodedStringAtOffsetAndReset(slea, file.getOffset() + slea.readInt()));
- break;
- default:
- System.out.println("Unknown UOL marker: " + uolmarker + " " + entry.getName());
- }
- } else {
- throw new RuntimeException("Unhandled extended type: " + type);
- }
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZTool.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZTool.java
deleted file mode 100644
index 7f5452cd03..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/WZTool.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import tools.data.input.LittleEndianAccessor;
-import tools.data.input.SeekableLittleEndianAccessor;
-
-import javax.crypto.BadPaddingException;
-import javax.crypto.Cipher;
-import javax.crypto.IllegalBlockSizeException;
-import javax.crypto.NoSuchPaddingException;
-import javax.crypto.spec.SecretKeySpec;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-
-/*
- * Ported Code, see WZFile.java for more info
- */
-public class WZTool {
- private static byte[] encKey;
-
- static {
- byte[] iv = new byte[]{(byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b,
- (byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b,
- (byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b,
- (byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b,};
- byte[] key = new byte[]{(byte) 0x13, 0x00, 0x00, 0x00,
- (byte) 0x08, 0x00, 0x00, 0x00,
- (byte) 0x06, 0x00, 0x00, 0x00,
- (byte) 0xB4, 0x00, 0x00, 0x00,
- (byte) 0x1B, 0x00, 0x00, 0x00,
- (byte) 0x0F, 0x00, 0x00, 0x00,
- (byte) 0x33, 0x00, 0x00, 0x00,
- (byte) 0x52, 0x00, 0x00, 0x00
- };
- Cipher cipher = null;
- SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
- try {
- cipher = Cipher.getInstance("AES");
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- } catch (NoSuchPaddingException e) {
- e.printStackTrace();
- }
- try {
- cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
- } catch (InvalidKeyException e) {
- e.printStackTrace();
- }
- encKey = new byte[0xFFFF];
- for (int i = 0; i < (0xFFFF / 16); i++) {
- try {
- iv = cipher.doFinal(iv);
- } catch (IllegalBlockSizeException e) {
- e.printStackTrace();
- } catch (BadPaddingException e) {
- e.printStackTrace();
- }
- System.arraycopy(iv, 0, encKey, (i * 16), 16);
- }
- try {
- iv = cipher.doFinal(iv);
- } catch (IllegalBlockSizeException e) {
- e.printStackTrace();
- } catch (BadPaddingException e) {
- e.printStackTrace();
- }
- System.arraycopy(iv, 0, encKey, 65520, 15);
- }
-
- public static byte[] readListString(byte[] str) {
- for (int i = 0; i < str.length; i++) {
- str[i] = (byte) (str[i] ^ encKey[i]);
- }
- return str;
- }
-
- public static String readDecodedString(LittleEndianAccessor llea) {
- int strLength;
- byte b = llea.readByte();
- if (b == 0x00) {
- return "";
- }
- if (b >= 0) {
- if (b == 0x7F) {
- strLength = llea.readInt();
- } else {
- strLength = b;
- }
- if (strLength < 0) {
- return "";
- }
- byte str[] = new byte[strLength * 2];
- for (int i = 0; i < strLength * 2; i++) {
- str[i] = llea.readByte();
- }
- return DecryptUnicodeStr(str);
- } else {
- if (b == -128) {
- strLength = llea.readInt();
- } else {
- strLength = -b;
- }
- if (strLength < 0) {
- return "";
- }
- byte str[] = new byte[strLength];
- for (int i = 0; i < strLength; i++) {
- str[i] = llea.readByte();
- }
- return DecryptAsciiStr(str);
- }
- }
-
- public static String DecryptAsciiStr(byte[] str) {
- byte xorByte = (byte) 0xAA;
- for (int i = 0; i < str.length; i++) {
- str[i] = (byte) (str[i] ^ xorByte ^ encKey[i]);
- xorByte++;
- }
- return new String(str);
- }
-
- public static String DecryptUnicodeStr(byte[] str) {
- int xorByte = 0xAAAA;
- char[] charRet = new char[str.length / 2];
- for (int i = 0; i < str.length; i++) {
- str[i] = (byte) (str[i] ^ encKey[i]);
- }
- for (int i = 0; i < (str.length / 2); i++) {
- char toXor = (char) ((str[i] << 8) | str[i + 1]);
- charRet[i] = (char) (toXor ^ xorByte);
- xorByte++;
- }
- return String.valueOf(charRet);
- }
-
- public static String readDecodedStringAtOffset(SeekableLittleEndianAccessor slea, int offset) {
- slea.seek(offset);
- return readDecodedString(slea);
- }
-
- public static String readDecodedStringAtOffsetAndReset(SeekableLittleEndianAccessor slea, int offset) {
- long pos = 0;
- pos = slea.getPosition();
- slea.seek(offset);
- String ret = readDecodedString(slea);
- slea.seek(pos);
- return ret;
- }
-
- public static int readValue(LittleEndianAccessor lea) {
- byte b = lea.readByte();
- if (b == -128) {
- return lea.readInt();
- } else {
- return b;
- }
- }
-
- public static float readFloatValue(LittleEndianAccessor lea) {
- byte b = lea.readByte();
- if (b == -128) {
- return lea.readFloat();
- } else {
- return 0;
- }
- }
-}
\ No newline at end of file
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/XMLDomMapleData.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/XMLDomMapleData.java
deleted file mode 100644
index 151a04c2fd..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/XMLDomMapleData.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
- */
-package provider.wz;
-
-import java.awt.Point;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.text.NumberFormat;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import provider.MapleData;
-import provider.MapleDataEntity;
-import org.w3c.dom.Document;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-public class XMLDomMapleData implements MapleData {
- private Node node;
- private File imageDataDir;
- private NumberFormat nf;
-
- public XMLDomMapleData(FileInputStream fis, File imageDataDir) {
- try {
- DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
- Document document = documentBuilder.parse(fis);
- this.node = document.getFirstChild();
- } catch (ParserConfigurationException e) {
- throw new RuntimeException(e);
- } catch (SAXException e) {
- throw new RuntimeException(e);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- this.imageDataDir = imageDataDir;
- this.nf = NumberFormat.getInstance(Locale.FRANCE);
- }
-
- private XMLDomMapleData(Node node) {
- this.node = node;
- this.nf = NumberFormat.getInstance(Locale.FRANCE);
- }
-
- @Override
- public MapleData getChildByPath(String path) {
- String segments[] = path.split("/");
- if (segments[0].equals("..")) {
- return ((MapleData) getParent()).getChildByPath(path.substring(path.indexOf("/") + 1));
- }
-
- Node myNode = node;
- for (int x = 0; x < segments.length; x++) {
- NodeList childNodes = myNode.getChildNodes();
- boolean foundChild = false;
- for (int i = 0; i < childNodes.getLength(); i++) {
- Node childNode = childNodes.item(i);
- if (childNode.getNodeType() == Node.ELEMENT_NODE && childNode.getAttributes().getNamedItem("name").getNodeValue().equals(segments[x])) {
- myNode = childNode;
- foundChild = true;
- break;
- }
- }
- if (!foundChild) {
- return null;
- }
- }
- XMLDomMapleData ret = new XMLDomMapleData(myNode);
- ret.imageDataDir = new File(imageDataDir, getName() + "/" + path).getParentFile();
- return ret;
- }
-
- @Override
- public List getChildren() {
- List ret = new ArrayList();
- NodeList childNodes = node.getChildNodes();
- for (int i = 0; i < childNodes.getLength(); i++) {
- Node childNode = childNodes.item(i);
- if (childNode.getNodeType() == Node.ELEMENT_NODE) {
- XMLDomMapleData child = new XMLDomMapleData(childNode);
- child.imageDataDir = new File(imageDataDir, getName());
- ret.add(child);
- }
- }
- return ret;
- }
-
- @Override
- public Object getData() {
- NamedNodeMap attributes = node.getAttributes();
- MapleDataType type = getType();
- switch (type) {
- case DOUBLE:
- case FLOAT:
- case INT:
- case SHORT: {
- String value = attributes.getNamedItem("value").getNodeValue();
- Number nval;
-
- try {
- nval = nf.parse(value);
- }
- catch(java.text.ParseException pe) {
- pe.printStackTrace();
- nval = 0.0f;
- }
-
- switch (type) {
- case DOUBLE:
- return nval.doubleValue();
- case FLOAT:
- return nval.floatValue();
- case INT:
- return nval.intValue();
- case SHORT:
- return nval.shortValue();
- default:
- return null;
- }
- }
- case STRING:
- case UOL: {
- String value = attributes.getNamedItem("value").getNodeValue();
- return value;
- }
- case VECTOR: {
- String x = attributes.getNamedItem("x").getNodeValue();
- String y = attributes.getNamedItem("y").getNodeValue();
- return new Point(Integer.parseInt(x), Integer.parseInt(y));
- }
- case CANVAS: {
- String width = attributes.getNamedItem("width").getNodeValue();
- String height = attributes.getNamedItem("height").getNodeValue();
- return new FileStoredPngMapleCanvas(Integer.parseInt(width), Integer.parseInt(height), new File(
- imageDataDir, getName() + ".png"));
- }
- default:
- return null;
- }
- }
-
- @Override
- public MapleDataType getType() {
- String nodeName = node.getNodeName();
- if (nodeName.equals("imgdir")) {
- return MapleDataType.PROPERTY;
- } else if (nodeName.equals("canvas")) {
- return MapleDataType.CANVAS;
- } else if (nodeName.equals("convex")) {
- return MapleDataType.CONVEX;
- } else if (nodeName.equals("sound")) {
- return MapleDataType.SOUND;
- } else if (nodeName.equals("uol")) {
- return MapleDataType.UOL;
- } else if (nodeName.equals("double")) {
- return MapleDataType.DOUBLE;
- } else if (nodeName.equals("float")) {
- return MapleDataType.FLOAT;
- } else if (nodeName.equals("int")) {
- return MapleDataType.INT;
- } else if (nodeName.equals("short")) {
- return MapleDataType.SHORT;
- } else if (nodeName.equals("string")) {
- return MapleDataType.STRING;
- } else if (nodeName.equals("vector")) {
- return MapleDataType.VECTOR;
- } else if (nodeName.equals("null")) {
- return MapleDataType.IMG_0x00;
- }
- return null;
- }
-
- @Override
- public MapleDataEntity getParent() {
- Node parentNode = node.getParentNode();
- if (parentNode.getNodeType() == Node.DOCUMENT_NODE) {
- return null;
- }
- XMLDomMapleData parentData = new XMLDomMapleData(parentNode);
- parentData.imageDataDir = imageDataDir.getParentFile();
- return parentData;
- }
-
- @Override
- public String getName() {
- return node.getAttributes().getNamedItem("name").getNodeValue();
- }
-
- @Override
- public Iterator iterator() {
- return getChildren().iterator();
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/provider/wz/XMLWZFile.java b/tools/MapleSkillbookChanceFetcher/src/provider/wz/XMLWZFile.java
deleted file mode 100644
index 2a7694fdc9..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/provider/wz/XMLWZFile.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import provider.MapleData;
-import provider.MapleDataDirectoryEntry;
-import provider.MapleDataProvider;
-
-public class XMLWZFile implements MapleDataProvider {
- private File root;
- private WZDirectoryEntry rootForNavigation;
-
- public XMLWZFile(File fileIn) {
- root = fileIn;
- rootForNavigation = new WZDirectoryEntry(fileIn.getName(), 0, 0, null);
- fillMapleDataEntitys(root, rootForNavigation);
- }
-
- private void fillMapleDataEntitys(File lroot, WZDirectoryEntry wzdir) {
- for (File file : lroot.listFiles()) {
- String fileName = file.getName();
- if (file.isDirectory() && !fileName.endsWith(".img")) {
- WZDirectoryEntry newDir = new WZDirectoryEntry(fileName, 0, 0, wzdir);
- wzdir.addDirectory(newDir);
- fillMapleDataEntitys(file, newDir);
- } else if (fileName.endsWith(".xml")) {
- wzdir.addFile(new WZFileEntry(fileName.substring(0, fileName.length() - 4), 0, 0, wzdir));
- }
- }
- }
-
- @Override
- public MapleData getData(String path) {
- File dataFile = new File(root, path + ".xml");
- File imageDataDir = new File(root, path);
- if (!dataFile.exists()) {
- return null;//bitches
- }
- FileInputStream fis;
- try {
- fis = new FileInputStream(dataFile);
- } catch (FileNotFoundException e) {
- throw new RuntimeException("Datafile " + path + " does not exist in " + root.getAbsolutePath());
- }
- final XMLDomMapleData domMapleData;
- try {
- domMapleData = new XMLDomMapleData(fis, imageDataDir.getParentFile());
- } finally {
- try {
- fis.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- return domMapleData;
- }
-
- @Override
- public MapleDataDirectoryEntry getRoot() {
- return rootForNavigation;
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/DatabaseConnection.java b/tools/MapleSkillbookChanceFetcher/src/tools/DatabaseConnection.java
deleted file mode 100644
index b887280343..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/DatabaseConnection.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package tools;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-
-/**
- * @author Frz (Big Daddy)
- * @author The Real Spookster - some modifications to this beautiful code
- */
-public class DatabaseConnection {
- private static String DB_URL = "jdbc:mysql://localhost:3306/cosmic";
- private static String DB_USER = "cosmic_server";
- private static String DB_PASS = "snailshell";
-
- public static final int RETURN_GENERATED_KEYS = 1;
-
- private static ThreadLocal con = new ThreadLocalConnection();
-
- public static Connection getConnection() {
- Connection c = con.get();
- try {
- c.getMetaData();
- } catch (SQLException e) { // connection is dead, therefore discard old object 5ever
- con.remove();
- c = con.get();
- }
- return c;
- }
-
- private static class ThreadLocalConnection extends ThreadLocal {
-
- @Override
- protected Connection initialValue() {
- try {
- Class.forName("com.mysql.jdbc.Driver"); // touch the mysql driver
- } catch (ClassNotFoundException e) {
- System.out.println("[SEVERE] SQL Driver Not Found. Consider death by clams.");
- e.printStackTrace();
- return null;
- }
- try {
- return DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
- } catch (SQLException e) {
- System.out.println("[SEVERE] Unable to make database connection.");
- e.printStackTrace();
- return null;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/HexTool.java b/tools/MapleSkillbookChanceFetcher/src/tools/HexTool.java
deleted file mode 100644
index 8cc0c8aa84..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/HexTool.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools;
-
-import java.io.ByteArrayOutputStream;
-
-public class HexTool {
- private static final char[] HEX = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
-
- private static String toString(byte byteValue) {
- int tmp = byteValue << 8;
- char[] retstr = new char[]{HEX[(tmp >> 12) & 0x0F], HEX[(tmp >> 8) & 0x0F]};
- return String.valueOf(retstr);
- }
-
- public static String toString(byte[] bytes) {
- StringBuilder hexed = new StringBuilder();
- for (int i = 0; i < bytes.length; i++) {
- hexed.append(toString(bytes[i]));
- hexed.append(' ');
- }
- return hexed.substring(0, hexed.length() - 1);
- }
-
- public static byte[] getByteArrayFromHexString(String hex) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- int nexti = 0;
- int nextb = 0;
- boolean highoc = true;
- outer:
- for (;;) {
- int number = -1;
- while (number == -1) {
- if (nexti == hex.length()) {
- break outer;
- }
- char chr = hex.charAt(nexti);
- if (chr >= '0' && chr <= '9') {
- number = chr - '0';
- } else if (chr >= 'a' && chr <= 'f') {
- number = chr - 'a' + 10;
- } else if (chr >= 'A' && chr <= 'F') {
- number = chr - 'A' + 10;
- } else {
- number = -1;
- }
- nexti++;
- }
- if (highoc) {
- nextb = number << 4;
- highoc = false;
- } else {
- nextb |= number;
- highoc = true;
- baos.write(nextb);
- }
- }
- return baos.toByteArray();
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/Pair.java b/tools/MapleSkillbookChanceFetcher/src/tools/Pair.java
deleted file mode 100644
index b127e71110..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/Pair.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-This file is part of the OdinMS Maple Story Server
-Copyright (C) 2008 ~ 2010 Patrick Huy
-Matthias Butz
-Jan Christian Meyer
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License version 3
-as published by the Free Software Foundation. You may not use, modify
-or distribute this program under any other version of the
-GNU Affero General Public License.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
- */
-package tools;
-
-/**
- * Represents a pair of values.
- *
- * @author Frz
- * @since Revision 333
- * @version 1.0
- *
- * @param The type of the left value.
- * @param The type of the right value.
- */
-public class Pair {
-
- public E left;
- public F right;
-
- /**
- * Class constructor - pairs two objects together.
- *
- * @param left The left object.
- * @param right The right object.
- */
- public Pair(E left, F right) {
- this.left = left;
- this.right = right;
- }
-
- /**
- * Gets the left value.
- *
- * @return The left value.
- */
- public E getLeft() {
- return left;
- }
-
- /**
- * Gets the right value.
- *
- * @return The right value.
- */
- public F getRight() {
- return right;
- }
-
- /**
- * Turns the pair into a string.
- *
- * @return Each value of the pair as a string joined with a colon.
- */
- @Override
- public String toString() {
- return left.toString() + ":" + right.toString();
- }
-
- /**
- * Gets the hash code of this pair.
- */
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((left == null) ? 0 : left.hashCode());
- result = prime * result + ((right == null) ? 0 : right.hashCode());
- return result;
- }
-
- /**
- * Checks to see if two pairs are equal.
- */
- @SuppressWarnings("unchecked")
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final Pair other = (Pair) obj;
- if (left == null) {
- if (other.left != null) {
- return false;
- }
- } else if (!left.equals(other.left)) {
- return false;
- }
- if (right == null) {
- if (other.right != null) {
- return false;
- }
- } else if (!right.equals(other.right)) {
- return false;
- }
- return true;
- }
-}
\ No newline at end of file
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/ByteArrayByteStream.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/input/ByteArrayByteStream.java
deleted file mode 100644
index eac7de21ea..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/ByteArrayByteStream.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.io.IOException;
-import tools.HexTool;
-
-public class ByteArrayByteStream implements SeekableInputStreamBytestream {
- private int pos = 0;
- private long bytesRead = 0;
- private byte[] arr;
-
- public ByteArrayByteStream(byte[] arr) {
- this.arr = arr;
- }
-
- @Override
- public long getPosition() {
- return pos;
- }
-
- @Override
- public void seek(long offset) throws IOException {
- pos = (int) offset;
- }
-
- @Override
- public long getBytesRead() {
- return bytesRead;
- }
-
- @Override
- public int readByte() {
- bytesRead++;
- return ((int) arr[pos++]) & 0xFF;
- }
-
- @Override
- public String toString() {
- String nows = "kevintjuh93 pwns";//I lol'd
- if (arr.length - pos > 0) {
- byte[] now = new byte[arr.length - pos];
- System.arraycopy(arr, pos, now, 0, arr.length - pos);
- nows = HexTool.toString(now);
- }
- return "All: " + HexTool.toString(arr) + "\nNow: " + nows;
- }
-
- @Override
- public long available() {
- return arr.length - pos;
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/ByteInputStream.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/input/ByteInputStream.java
deleted file mode 100644
index 107f71843e..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/ByteInputStream.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-/**
- * Represents an abstract stream of bytes.
- *
- * @author Frz
- * @version 1.0
- * @since Revision 323
- */
-public interface ByteInputStream {
- int readByte();
- long getBytesRead();
- long available();
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/GenericLittleEndianAccessor.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/input/GenericLittleEndianAccessor.java
deleted file mode 100644
index d08a9b8374..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/GenericLittleEndianAccessor.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.awt.Point;
-import java.io.ByteArrayOutputStream;
-
-/**
- * Provides a generic interface to a Little Endian stream of bytes.
- *
- * @version 1.0
- * @author Frz
- * @since Revision 323
- */
-public class GenericLittleEndianAccessor implements LittleEndianAccessor {
- private ByteInputStream bs;
-
- /**
- * Class constructor - Wraps the accessor around a stream of bytes.
- *
- * @param bs The byte stream to wrap the accessor around.
- */
- public GenericLittleEndianAccessor(ByteInputStream bs) {
- this.bs = bs;
- }
-
- /**
- * Read a single byte from the stream.
- *
- * @return The byte read.
- * @see tools.data.input.ByteInputStream#readByte
- */
- @Override
- public byte readByte() {
- return (byte) bs.readByte();
- }
-
- /**
- * Reads an integer from the stream.
- *
- * @return The integer read.
- */
- @Override
- public int readInt() {
- return bs.readByte() + (bs.readByte() << 8) + (bs.readByte() << 16) + (bs.readByte() << 24);
- }
-
- /**
- * Reads a short integer from the stream.
- *
- * @return The short read.
- */
- @Override
- public short readShort() {
- return (short) (bs.readByte() + (bs.readByte() << 8));
- }
-
- /**
- * Reads a single character from the stream.
- *
- * @return The character read.
- */
- @Override
- public char readChar() {
- return (char) readShort();
- }
-
- /**
- * Reads a long integer from the stream.
- *
- * @return The long integer read.
- */
- @Override
- public long readLong() {
- long byte1 = bs.readByte();
- long byte2 = bs.readByte();
- long byte3 = bs.readByte();
- long byte4 = bs.readByte();
- long byte5 = bs.readByte();
- long byte6 = bs.readByte();
- long byte7 = bs.readByte();
- long byte8 = bs.readByte();
- return (byte8 << 56) + (byte7 << 48) + (byte6 << 40) + (byte5 << 32) + (byte4 << 24) + (byte3 << 16) + (byte2 << 8) + byte1;
- }
-
- /**
- * Reads a floating point integer from the stream.
- *
- * @return The float-type integer read.
- */
- @Override
- public float readFloat() {
- return Float.intBitsToFloat(readInt());
- }
-
- /**
- * Reads a double-precision integer from the stream.
- *
- * @return The double-type integer read.
- */
- @Override
- public double readDouble() {
- return Double.longBitsToDouble(readLong());
- }
-
- /**
- * Reads an ASCII string from the stream with length n.
- *
- * @param n Number of characters to read.
- * @return The string read.
- */
- public final String readAsciiString(int n) {
- char ret[] = new char[n];
- for (int x = 0; x < n; x++) {
- ret[x] = (char) readByte();
- }
- return String.valueOf(ret);
- }
-
- /**
- * Reads a null-terminated string from the stream.
- *
- * @return The string read.
- */
- public final String readNullTerminatedAsciiString() {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- byte b;
- while (true) {
- b = readByte();
- if (b == 0) {
- break;
- }
- baos.write(b);
- }
- byte[] buf = baos.toByteArray();
- char[] chrBuf = new char[buf.length];
- for (int x = 0; x < buf.length; x++) {
- chrBuf[x] = (char) buf[x];
- }
- return String.valueOf(chrBuf);
- }
-
- /**
- * Gets the number of bytes read from the stream so far.
- *
- * @return A long integer representing the number of bytes read.
- * @see tools.data.input.ByteInputStream#getBytesRead()
- */
- public long getBytesRead() {
- return bs.getBytesRead();
- }
-
- /**
- * Reads a MapleStory convention lengthed ASCII string.
- * This consists of a short integer telling the length of the string,
- * then the string itself.
- *
- * @return The string read.
- */
- @Override
- public String readMapleAsciiString() {
- return readAsciiString(readShort());
- }
-
- /**
- * Reads num bytes off the stream.
- *
- * @param num The number of bytes to read.
- * @return An array of bytes with the length of num
- */
- @Override
- public byte[] read(int num) {
- byte[] ret = new byte[num];
- for (int x = 0; x < num; x++) {
- ret[x] = readByte();
- }
- return ret;
- }
-
- /**
- * Reads a MapleStory Position information.
- * This consists of 2 short integer.
- *
- * @return The Position read.
- */
- @Override
- public final Point readPos() {
- final int x = readShort();
- final int y = readShort();
- return new Point(x, y);
- }
-
- /**
- * Skips the current position of the stream num bytes ahead.
- *
- * @param num Number of bytes to skip.
- */
- @Override
- public void skip(int num) {
- for (int x = 0; x < num; x++) {
- readByte();
- }
- }
-
- /**
- * @see tools.data.input.ByteInputStream#available
- */
- @Override
- public long available() {
- return bs.available();
- }
-
- /**
- * @see java.lang.Object#toString
- */
- @Override
- public String toString() {
- return bs.toString();
- }
-}
\ No newline at end of file
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/GenericSeekableLittleEndianAccessor.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/input/GenericSeekableLittleEndianAccessor.java
deleted file mode 100644
index fdd147d796..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/GenericSeekableLittleEndianAccessor.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.io.IOException;
-
-/**
- * Provides an abstract accessor to a generic Little Endian byte stream. This
- * accessor is seekable.
- *
- * @author Frz
- * @version 1.0
- * @since Revision 323
- * @see tools.data.input.GenericLittleEndianAccessor
- */
-public class GenericSeekableLittleEndianAccessor extends GenericLittleEndianAccessor implements SeekableLittleEndianAccessor {
- private SeekableInputStreamBytestream bs;
-
- /**
- * Class constructor
- * Provide a seekable input stream to wrap this object around.
- *
- * @param bs The byte stream to wrap this around.
- */
- public GenericSeekableLittleEndianAccessor(SeekableInputStreamBytestream bs) {
- super(bs);
- this.bs = bs;
- }
-
- /**
- * Seek the pointer to offset
- *
- * @param offset The offset to seek to.
- * @see tools.data.input.SeekableInputStreamBytestream#seek
- */
- @Override
- public void seek(long offset) {
- try {
- bs.seek(offset);
- } catch (IOException e) {
- e.printStackTrace();
- System.out.println("Seek failed " + e);
- }
- }
-
- /**
- * Get the current position of the pointer.
- *
- * @return The current position of the pointer as a long integer.
- * @see tools.data.input.SeekableInputStreamBytestream#getPosition
- */
- @Override
- public long getPosition() {
- try {
- return bs.getPosition();
- } catch (IOException e) {
- e.printStackTrace();
- System.out.println("getPosition failed" + e);
- return -1;
- }
- }
-
- /**
- * Skip num number of bytes in the stream.
- *
- * @param num The number of bytes to skip.
- */
- @Override
- public void skip(int num) {
- seek(getPosition() + num);
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/InputStreamByteStream.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/input/InputStreamByteStream.java
deleted file mode 100644
index 70aef3489f..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/InputStreamByteStream.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Provides an abstract wrapper to a stream of bytes.
- *
- * @author Frz
- * @version 1.0
- * @since Revision 323
- */
-public class InputStreamByteStream implements ByteInputStream {
- private InputStream is;
- private long read = 0;
-
- /**
- * Class constructor.
- * Provide an input stream to wrap this around.
- *
- * @param is The input stream to wrap this object around.
- */
- public InputStreamByteStream(InputStream is) {
- this.is = is;
- }
-
- /**
- * Reads the next byte from the stream.
- *
- * @return Then next byte in the stream.
- */
- @Override
- public int readByte() {
- int temp;
- try {
- temp = is.read();
- if (temp == -1) {
- throw new RuntimeException("EOF");
- }
- read++;
- return temp;
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Gets the number of bytes read from the stream.
- *
- * @return The number of bytes read as a long integer.
- */
- @Override
- public long getBytesRead() {
- return read;
- }
-
- /**
- * Returns the number of bytes left in the stream.
- *
- * @return The number of bytes available for reading as a long integer.
- */
- @Override
- public long available() {
- try {
- return is.available();
- } catch (IOException e) {
- e.printStackTrace();
- System.out.println("ERROR" + e);
- return 0;
- }
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/LittleEndianAccessor.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/input/LittleEndianAccessor.java
deleted file mode 100644
index f991dbf537..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/LittleEndianAccessor.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.awt.Point;
-
-/**
- * @author Frz
- */
-public interface LittleEndianAccessor {
- byte readByte();
- char readChar();
- short readShort();
- int readInt();
- Point readPos();
- long readLong();
- void skip(int num);
- byte[] read(int num);
- float readFloat();
- double readDouble();
- String readAsciiString(int n);
- String readNullTerminatedAsciiString();
- String readMapleAsciiString();
- long getBytesRead();
- long available();
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/RandomAccessByteStream.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/input/RandomAccessByteStream.java
deleted file mode 100644
index c0004be17f..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/RandomAccessByteStream.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.io.IOException;
-import java.io.RandomAccessFile;
-
-/**
- * Provides an abstract layer to a byte stream. This layer can be accessed
- * randomly.
- *
- * @author Frz
- * @version 1.0
- * @since Revision 323
- */
-public class RandomAccessByteStream implements SeekableInputStreamBytestream {
- private RandomAccessFile raf;
- private long read = 0;
-
- public RandomAccessByteStream(RandomAccessFile raf) {
- super();
- this.raf = raf;
- }
-
- @Override
- public int readByte() {
- int temp;
- try {
- temp = raf.read();
- if (temp == -1) {
- throw new RuntimeException("EOF");
- }
- read++;
- return temp;
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- @Override
- public void seek(long offset) throws IOException {
- raf.seek(offset);
- }
-
- @Override
- public long getPosition() throws IOException {
- return raf.getFilePointer();
- }
-
- @Override
- public long getBytesRead() {
- return read;
- }
-
- @Override
- public long available() {
- try {
- return raf.length() - raf.getFilePointer();
- } catch (IOException e) {
- e.printStackTrace();
- System.out.println("ERROR " + e);
- return 0;
- }
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/SeekableInputStreamBytestream.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/input/SeekableInputStreamBytestream.java
deleted file mode 100644
index f4922dc876..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/SeekableInputStreamBytestream.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.io.IOException;
-
-/**
- * Provides an abstract interface to a stream of bytes. This stream can be
- * seeked.
- *
- * @author Frz
- * @version 1.0
- * @since 299
- */
-public interface SeekableInputStreamBytestream extends ByteInputStream {
- /**
- * Seeks the stream by the specified offset.
- *
- * @param offset
- * Number of bytes to seek.
- * @throws IOException
- */
- void seek(long offset) throws IOException;
-
- /**
- * Gets the current position of the stream.
- *
- * @return The stream position as a long integer.
- * @throws IOException
- */
- long getPosition() throws IOException;
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/SeekableLittleEndianAccessor.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/input/SeekableLittleEndianAccessor.java
deleted file mode 100644
index 16b2317f7a..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/input/SeekableLittleEndianAccessor.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-public interface SeekableLittleEndianAccessor extends LittleEndianAccessor {
- void seek(long offset);
- long getPosition();
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/output/BAOSByteOutputStream.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/output/BAOSByteOutputStream.java
deleted file mode 100644
index 80cbc9301e..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/output/BAOSByteOutputStream.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.output;
-
-import java.io.ByteArrayOutputStream;
-
-/**
- * Uses a byte array to output a stream of bytes.
- *
- * @author Frz
- * @version 1.0
- * @since Revision 352
- */
-class BAOSByteOutputStream implements ByteOutputStream {
- private ByteArrayOutputStream baos;
-
- /**
- * Class constructor - Wraps the stream around a Java BAOS.
- *
- * @param baos The ByteArrayOutputStream to wrap this around.
- */
- BAOSByteOutputStream(ByteArrayOutputStream baos) {
- super();
- this.baos = baos;
- }
-
- /**
- * Writes a byte to the stream.
- *
- * @param b The byte to write to the stream.
- * @see tools.data.output.ByteOutputStream#writeByte(byte)
- */
- @Override
- public void writeByte(byte b) {
- baos.write(b);
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/output/ByteOutputStream.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/output/ByteOutputStream.java
deleted file mode 100644
index 0df7ca7753..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/output/ByteOutputStream.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.output;
-
-/**
- * Provides an interface to an output stream of bytes.
- *
- * @author Frz
- * @since Revision 323
- * @version 1.0
- */
-interface ByteOutputStream {
- /**
- * Writes a byte to the stream.
- *
- * @param b The byte to write.
- */
- void writeByte(byte b);
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/output/GenericLittleEndianWriter.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/output/GenericLittleEndianWriter.java
deleted file mode 100644
index e804fd8000..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/output/GenericLittleEndianWriter.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.output;
-
-import java.awt.Point;
-import java.nio.charset.Charset;
-
-/**
- * Provides a generic writer of a little-endian sequence of bytes.
- *
- * @author Frz
- * @version 1.0
- * @since Revision 323
- */
-public class GenericLittleEndianWriter implements LittleEndianWriter {
- private static Charset ASCII = Charset.forName("US-ASCII");
- private ByteOutputStream bos;
-
- /**
- * Class constructor - Protected to prevent instantiation with no arguments.
- */
- protected GenericLittleEndianWriter() {
- // Blah!
- }
-
- /**
- * Sets the byte-output stream for this instance of the object.
- *
- * @param bos The new output stream to set.
- */
- void setByteOutputStream(ByteOutputStream bos) {
- this.bos = bos;
- }
-
- /**
- * Write an array of bytes to the stream.
- *
- * @param b The bytes to write.
- */
- @Override
- public void write(byte[] b) {
- for (int x = 0; x < b.length; x++) {
- bos.writeByte(b[x]);
- }
- }
-
- /**
- * Write a byte to the stream.
- *
- * @param b The byte to write.
- */
- @Override
- public void write(byte b) {
- bos.writeByte(b);
- }
-
- /**
- * Write a byte in integer form to the stream.
- *
- * @param b The byte as an Integer to write.
- */
- @Override
- public void write(int b) {
- bos.writeByte((byte) b);
- }
-
- @Override
- public void skip(int b) {
- write(new byte[b]);
- }
-
- /**
- * Write a short integer to the stream.
- *
- * @param i The short integer to write.
- */
- @Override
- public void writeShort(int i) {
- bos.writeByte((byte) (i & 0xFF));
- bos.writeByte((byte) ((i >>> 8) & 0xFF));
- }
-
- /**
- * Writes an integer to the stream.
- *
- * @param i The integer to write.
- */
- @Override
- public void writeInt(int i) {
- bos.writeByte((byte) (i & 0xFF));
- bos.writeByte((byte) ((i >>> 8) & 0xFF));
- bos.writeByte((byte) ((i >>> 16) & 0xFF));
- bos.writeByte((byte) ((i >>> 24) & 0xFF));
- }
-
- /**
- * Writes an ASCII string the the stream.
- *
- * @param s The ASCII string to write.
- */
- @Override
- public void writeAsciiString(String s) {
- write(s.getBytes(ASCII));
- }
-
- /**
- * Writes a maple-convention ASCII string to the stream.
- *
- * @param s The ASCII string to use maple-convention to write.
- */
- @Override
- public void writeMapleAsciiString(String s) {
- writeShort((short) s.length());
- writeAsciiString(s);
- }
-
- /**
- * Writes a null-terminated ASCII string to the stream.
- *
- * @param s The ASCII string to write.
- */
- @Override
- public void writeNullTerminatedAsciiString(String s) {
- writeAsciiString(s);
- write(0);
- }
-
- /**
- * Write a long integer to the stream.
- * @param l The long integer to write.
- */
- @Override
- public void writeLong(long l) {
- bos.writeByte((byte) (l & 0xFF));
- bos.writeByte((byte) ((l >>> 8) & 0xFF));
- bos.writeByte((byte) ((l >>> 16) & 0xFF));
- bos.writeByte((byte) ((l >>> 24) & 0xFF));
- bos.writeByte((byte) ((l >>> 32) & 0xFF));
- bos.writeByte((byte) ((l >>> 40) & 0xFF));
- bos.writeByte((byte) ((l >>> 48) & 0xFF));
- bos.writeByte((byte) ((l >>> 56) & 0xFF));
- }
-
- /**
- * Writes a 2D 4 byte position information
- *
- * @param s The Point position to write.
- */
- @Override
- public void writePos(Point s) {
- writeShort(s.x);
- writeShort(s.y);
- }
-
- /**
- * Writes a boolean true ? 1 : 0
- *
- * @param b The boolean to write.
- */
- @Override
- public void writeBool(final boolean b) {
- write(b ? 1 : 0);
- }
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/output/LittleEndianWriter.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/output/LittleEndianWriter.java
deleted file mode 100644
index f17bd7c72e..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/output/LittleEndianWriter.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
- */
-package tools.data.output;
-
-import java.awt.Point;
-
-/**
- * Provides an interface to a writer class that writes a little-endian sequence
- * of bytes.
- *
- * @author Frz
- * @version 1.0
- * @since Revision 323
- */
-public interface LittleEndianWriter {
-
- /**
- * Write an array of bytes to the sequence.
- *
- * @param b The bytes to write.
- */
- public void write(byte b[]);
-
- /**
- * Write a byte to the sequence.
- *
- * @param b The byte to write.
- */
- public void write(byte b);
-
- /**
- * Write a byte in integer form to the sequence.
- *
- * @param b The byte as an Integer to write.
- */
- public void write(int b);
-
- public void skip(int b);
-
- /**
- * Writes an integer to the sequence.
- *
- * @param i The integer to write.
- */
- public void writeInt(int i);
-
- /**
- * Write a short integer to the sequence.
- *
- * @param s The short integer to write.
- */
- public void writeShort(int s);
-
- /**
- * Write a long integer to the sequence.
- *
- * @param l The long integer to write.
- */
- public void writeLong(long l);
-
- /**
- * Writes an ASCII string the the sequence.
- *
- * @param s The ASCII string to write.
- */
- void writeAsciiString(String s);
-
- /**
- * Writes a null-terminated ASCII string to the sequence.
- *
- * @param s The ASCII string to write.
- */
- void writeNullTerminatedAsciiString(String s);
-
- /**
- * Writes a maple-convention ASCII string to the sequence.
- *
- * @param s The ASCII string to use maple-convention to write.
- */
- void writeMapleAsciiString(String s);
-
- /**
- * Writes a 2D 4 byte position information
- *
- * @param s The Point position to write.
- */
- void writePos(Point s);
-
- /**
- * Writes a boolean true ? 1 : 0
- *
- * @param b The boolean to write.
- */
- void writeBool(final boolean b);
-}
diff --git a/tools/MapleSkillbookChanceFetcher/src/tools/data/output/MaplePacketLittleEndianWriter.java b/tools/MapleSkillbookChanceFetcher/src/tools/data/output/MaplePacketLittleEndianWriter.java
deleted file mode 100644
index b02365ec62..0000000000
--- a/tools/MapleSkillbookChanceFetcher/src/tools/data/output/MaplePacketLittleEndianWriter.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.output;
-
-import java.io.ByteArrayOutputStream;
-import tools.HexTool;
-
-/**
- * Writes a maplestory-packet little-endian stream of bytes.
- *
- * @author Frz
- * @version 1.0
- * @since Revision 352
- */
-public class MaplePacketLittleEndianWriter extends GenericLittleEndianWriter {
- private ByteArrayOutputStream baos;
-
- /**
- * Constructor - initializes this stream with a default size.
- */
- public MaplePacketLittleEndianWriter() {
- this(32);
- }
-
- /**
- * Constructor - initializes this stream with size size.
- *
- * @param size The size of the underlying stream.
- */
- public MaplePacketLittleEndianWriter(int size) {
- this.baos = new ByteArrayOutputStream(size);
- setByteOutputStream(new BAOSByteOutputStream(baos));
- }
-
- /**
- * Gets a MaplePacket instance representing this
- * sequence of bytes.
- *
- * @return A MaplePacket with the bytes in this stream.
- */
- public byte[] getPacket() {
- return baos.toByteArray();
- }
-
- /**
- * Changes this packet into a human-readable hexadecimal stream of bytes.
- *
- * @return This packet as hex digits.
- */
- @Override
- public String toString() {
- return HexTool.toString(baos.toByteArray());
- }
-}