diff --git a/src/main/java/emu/grasscutter/game/gacha/GachaManager.java b/src/main/java/emu/grasscutter/game/gacha/GachaManager.java index c7fff96e5..b91d09a3a 100644 --- a/src/main/java/emu/grasscutter/game/gacha/GachaManager.java +++ b/src/main/java/emu/grasscutter/game/gacha/GachaManager.java @@ -50,7 +50,7 @@ public class GachaManager { private final GameServer server; private final Int2ObjectMap gachaBanners; private WatchService watchService; - + private static final int starglitterId = 221; private static final int stardustId = 222; private int[] fallbackItems4Pool2Default = {11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405}; @@ -70,15 +70,15 @@ public class GachaManager { public Int2ObjectMap getGachaBanners() { return gachaBanners; } - + public int randomRange(int min, int max) { // Both are inclusive return ThreadLocalRandom.current().nextInt(max - min + 1) + min; } - + public int getRandom(int[] array) { return array[randomRange(0, array.length - 1)]; } - + public synchronized void load() { try (Reader fileReader = new InputStreamReader(DataLoader.load("Banners.json"))) { getGachaBanners().clear(); @@ -87,7 +87,7 @@ public class GachaManager { for (GachaBanner banner : banners) { getGachaBanners().put(banner.getScheduleId(), banner); } - Grasscutter.getLogger().info("Banners successfully loaded."); + Grasscutter.getLogger().debug("Banners successfully loaded."); } else { Grasscutter.getLogger().error("Unable to load banners. Banners size is 0."); } @@ -256,18 +256,18 @@ public class GachaManager { yield getRandom(banner.getFallbackItems3()); }; } - + public synchronized void doPulls(Player player, int scheduleId, int times) { // Sanity check if (times != 10 && times != 1) { return; - } + } Inventory inventory = player.getInventory(); if (inventory.getInventoryTab(ItemType.ITEM_WEAPON).getSize() + times > inventory.getInventoryTab(ItemType.ITEM_WEAPON).getMaxCapacity()) { player.sendPacket(new PacketDoGachaRsp(Retcode.RET_ITEM_EXCEED_LIMIT)); return; } - + // Get banner GachaBanner banner = this.getGachaBanners().get(scheduleId); if (banner == null) { @@ -281,7 +281,7 @@ public class GachaManager { player.sendPacket(new PacketDoGachaRsp()); return; } - + // Add to character PlayerGachaBannerInfo gachaInfo = player.getGachaInfo().getBannerInfo(banner); BannerPools pools = new BannerPools(banner); @@ -296,7 +296,7 @@ public class GachaManager { pools.fallbackItems5Pool1 = removeC6FromPool(pools.fallbackItems5Pool1, player); pools.fallbackItems5Pool2 = removeC6FromPool(pools.fallbackItems5Pool2, player); } - + for (int i = 0; i < times; i++) { // Roll int itemId = doPull(banner, gachaInfo, pools); @@ -308,12 +308,12 @@ public class GachaManager { // Write gacha record GachaRecord gachaRecord = new GachaRecord(itemId, player.getUid(), banner.getGachaType()); DatabaseHelper.saveGachaRecord(gachaRecord); - + // Create gacha item GachaItem.Builder gachaItem = GachaItem.newBuilder(); int addStardust = 0, addStarglitter = 0; boolean isTransferItem = false; - + // Const check int constellation = checkPlayerAvatarConstellationLevel(player, itemId); switch (constellation) { @@ -348,10 +348,10 @@ public class GachaManager { GameItem item = new GameItem(itemData); gachaItem.setGachaItem(item.toItemParam()); inventory.addItem(item); - + stardust += addStardust; starglitter += addStarglitter; - + if (addStardust > 0) { gachaItem.addTokenItemList(ItemParam.newBuilder().setItemId(stardustId).setCount(addStardust)); } @@ -362,10 +362,10 @@ public class GachaManager { } gachaItem.addTokenItemList(starglitterParam); } - + list.add(gachaItem.build()); } - + // Add stardust/starglitter if (stardust > 0) { inventory.addItem(stardustId, stardust); @@ -376,7 +376,7 @@ public class GachaManager { // Packets player.sendPacket(new PacketDoGachaRsp(banner, list, gachaInfo)); - + // Battle Pass trigger player.getBattlePassManager().triggerMission(WatcherTriggerType.TRIGGER_GACHA_NUM, 0, times); } @@ -420,10 +420,10 @@ public class GachaManager { } } } - + private synchronized GetGachaInfoRsp createProto(Player player) { GetGachaInfoRsp.Builder proto = GetGachaInfoRsp.newBuilder().setGachaRandom(12345); - + long currentTime = System.currentTimeMillis() / 1000L; for (GachaBanner banner : getGachaBanners().values()) { @@ -432,7 +432,7 @@ public class GachaManager { proto.addGachaInfoList(banner.toProto(player)); } } - + return proto.build(); }