197 private float salvageRating, detectionRange, xpDiscover, xpSalvage, radiusOverride = -1f;
199 private float probDefenders, defQuality, minStr, maxStr, maxDefenderSize, minDefenderSize, probStation;
211 id = row.getString(
"id");
213 stationRole = row.getString(
"stationRole");
215 nameOverride = row.optString(
"name");
216 if (nameOverride !=
null && nameOverride.isEmpty()) nameOverride =
null;
218 salvageRating = (float) row.optDouble(
"rating", 0);
219 detectionRange = (float) row.optDouble(
"detection_range", 0);
221 float baseXP = 200 + 1 * (salvageRating * 20f);
223 baseXP = Misc.getRounded(baseXP);
227 xpDiscover = (float) row.optDouble(
"xpDiscover", baseXP);
228 xpSalvage = (float) row.optDouble(
"xpSalvage", baseXP * 3f);
230 radiusOverride = (float) row.optDouble(
"radius", -1);
232 defQuality = (float) row.optDouble(
"defQuality", 1f);
234 probDefenders = (float) row.optDouble(
"probDefenders", 0);
235 minStr = (float) row.optDouble(
"minStr", 0);
236 maxStr = (float) row.optDouble(
"maxStr", 0);
237 maxDefenderSize = (float) row.optDouble(
"maxSize", 4);
238 minDefenderSize = (float) row.optDouble(
"minSize", 0);
240 defFaction = row.optString(
"defFaction",
null);
241 if (defFaction !=
null && defFaction.isEmpty()) defFaction =
null;
243 probStation = (float) row.optDouble(
"probStation", 0);
245 type = Misc.mapToEnum(row,
"type", DiscoverabilityType.class, DiscoverabilityType.DISCOVERABLE);
247 if (row.has(
"drop_value") && !row.getString(
"drop_value").isEmpty()) {
249 String [] parts = row.getString(
"drop_value").split(
",");
250 for (String part : parts) {
252 String [] pair = part.split(
":");
253 String key = pair[0].trim();
254 String value = pair[1].trim();
256 DropData data =
new DropData();
258 data.value = Integer.valueOf(value);
265 if (row.has(
"drop_random") && !row.getString(
"drop_random").isEmpty()) {
267 String [] parts = row.getString(
"drop_random").split(
",");
268 for (String part : parts) {
270 String [] pair = part.split(
":");
271 String key = pair[0].trim();
272 String value = pair[1].trim();
274 DropData data =
new DropData();
277 if (value.contains(
"x")) {
278 String [] chancesXValue = value.split(
"x");
279 if (chancesXValue[0].trim().contains(
"-")) {
280 data.chances = Integer.valueOf(chancesXValue[0].trim().split(
"-")[0]);
281 data.maxChances = Integer.valueOf(chancesXValue[0].trim().split(
"-")[1]);
283 data.chances = Integer.valueOf(chancesXValue[0].trim());
285 data.value = Integer.valueOf(chancesXValue[1].trim());
289 if (value.contains(
"-")) {
290 data.chances = Integer.valueOf(value.trim().split(
"-")[0]);
291 data.maxChances = Integer.valueOf(value.trim().split(
"-")[1]);
293 float c = Float.valueOf(value);
294 data.chances = (int) Math.max(c, 1);
295 if (c < 1) data.valueMult = c;
300 dropRandom.add(data);
304 String tags = row.optString(
"tags",
null);
306 String [] split = tags.split(
",");
307 for (String tag : split) {
309 if (tag.isEmpty())
continue;