Add data for new drop system

This commit is contained in:
KingRainbow44
2023-04-13 22:44:50 -04:00
parent 84713d9b2e
commit af01282594
3 changed files with 16089 additions and 12 deletions

View File

@@ -21,46 +21,51 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import java.util.*; import java.util.*;
public class DropSystem extends BaseGameSystem { public final class DropSystem extends BaseGameSystem {
private final Int2ObjectMap<DropTableData> dropTable; private final Int2ObjectMap<DropTableData> dropTable;
private final Map<String, List<BaseDropData>> chestReward; private final Map<String, List<BaseDropData>> chestReward;
private final Map<String, List<BaseDropData>> monsterDrop; private final Map<String, List<BaseDropData>> monsterDrop;
private final Random rand; private final Random rand;
//TODO:don't know how to determine boss level.Have to hard-code the data from wiki.
// TODO: don't know how to determine boss level.Have to hard-code the data from wiki.
private final int[] bossLevel = {36, 37, 41, 50, 62, 72, 83, 91, 93}; private final int[] bossLevel = {36, 37, 41, 50, 62, 72, 83, 91, 93};
public DropSystem(GameServer server) { public DropSystem(GameServer server) {
super(server); super(server);
rand = new Random();
dropTable = GameData.getDropTableDataMap(); this.rand = new Random();
chestReward = new HashMap<>(); this.dropTable = GameData.getDropTableDataMap();
monsterDrop = new HashMap<>(); this.chestReward = new HashMap<>();
this.monsterDrop = new HashMap<>();
try { try {
List<ChestDropData> dataList = DataLoader.loadList("ChestDrop.json", ChestDropData.class); var dataList = DataLoader.loadList("ChestDrop.json", ChestDropData.class);
for (var i : dataList) { for (var i : dataList) {
if (!chestReward.containsKey(i.getIndex())) { if (!chestReward.containsKey(i.getIndex())) {
chestReward.put(i.getIndex(), new ArrayList<>()); chestReward.put(i.getIndex(), new ArrayList<>());
} }
chestReward.get(i.getIndex()).add(i); chestReward.get(i.getIndex()).add(i);
} }
} catch (Exception e) { } catch (Exception ignored) {
Grasscutter.getLogger().error("Unable to load chest drop data.Please place ChestDrop.json in data folder."); Grasscutter.getLogger().error("Unable to load chest drop data. Please place ChestDrop.json in data folder.");
} }
try { try {
List<BaseDropData> dataList = DataLoader.loadList("MonsterDrop.json", BaseDropData.class); var dataList = DataLoader.loadList("MonsterDrop.json", BaseDropData.class);
for (var i : dataList) { for (var i : dataList) {
if (!monsterDrop.containsKey(i.getIndex())) { if (!monsterDrop.containsKey(i.getIndex())) {
monsterDrop.put(i.getIndex(), new ArrayList<>()); monsterDrop.put(i.getIndex(), new ArrayList<>());
} }
monsterDrop.get(i.getIndex()).add(i); monsterDrop.get(i.getIndex()).add(i);
} }
} catch (Exception e) { } catch (Exception ignored) {
Grasscutter.getLogger().error("Unable to load monster drop data.Please place MonsterDrop.json in data folder."); Grasscutter.getLogger().error("Unable to load monster drop data. Please place MonsterDrop.json in data folder.");
} }
} }
private int queryDropData(String dropTag, int level, Map<String, List<BaseDropData>> rewards) { private int queryDropData(String dropTag, int level, Map<String, List<BaseDropData>> rewards) {
if (!rewards.containsKey(dropTag)) return 0; if (!rewards.containsKey(dropTag)) return 0;
var rewardList = rewards.get(dropTag); var rewardList = rewards.get(dropTag);
BaseDropData dropData = null; BaseDropData dropData = null;
int minLevel = 0; int minLevel = 0;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff