Gacha now provides the right amount of stardust/ember/eidolons

This commit is contained in:
Melledy
2023-09-27 19:02:09 -07:00
parent 889a26028d
commit c43a86be70

View File

@@ -16,6 +16,7 @@ import emu.lunarcore.game.player.Player;
import emu.lunarcore.proto.GachaItemOuterClass.GachaItem; import emu.lunarcore.proto.GachaItemOuterClass.GachaItem;
import emu.lunarcore.proto.GetGachaInfoScRspOuterClass.GetGachaInfoScRsp; import emu.lunarcore.proto.GetGachaInfoScRspOuterClass.GetGachaInfoScRsp;
import emu.lunarcore.proto.ItemListOuterClass.ItemList; import emu.lunarcore.proto.ItemListOuterClass.ItemList;
import emu.lunarcore.proto.ItemOuterClass.Item;
import emu.lunarcore.server.game.BaseGameService; import emu.lunarcore.server.game.BaseGameService;
import emu.lunarcore.server.game.GameServer; import emu.lunarcore.server.game.GameServer;
import emu.lunarcore.server.packet.send.PacketDoGachaScRsp; import emu.lunarcore.server.packet.send.PacketDoGachaScRsp;
@@ -35,8 +36,8 @@ public class GachaService extends BaseGameService {
private int[] purpleWeapons = new int[] {21000, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21008, 21009, 21010, 21011, 21012, 21013, 21014, 21015, 21016, 21017, 21018, 21019, 21020}; private int[] purpleWeapons = new int[] {21000, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21008, 21009, 21010, 21011, 21012, 21013, 21014, 21015, 21016, 21017, 21018, 21019, 21020};
private int[] blueWeapons = new int[] {20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20009, 20010, 20011, 20012, 20013, 20014, 20015, 20016, 20017, 20018, 20019, 20020}; private int[] blueWeapons = new int[] {20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20009, 20010, 20011, 20012, 20013, 20014, 20015, 20016, 20017, 20018, 20019, 20020};
private static int starglitterId = 251; private static int starglightId = 252;
private static int stardustId = 252; private static int embersId = 251;
public GachaService(GameServer server) { public GachaService(GameServer server) {
super(server); super(server);
@@ -177,6 +178,8 @@ public class GachaService extends BaseGameService {
// Create gacha item // Create gacha item
GachaItem gachaItem = GachaItem.newInstance(); GachaItem gachaItem = GachaItem.newInstance();
gachaItem.setTransferItemList(ItemList.newInstance());
gachaItem.setTokenItem(ItemList.newInstance());
int addStardust = 0, addStarglitter = 0; int addStardust = 0, addStarglitter = 0;
// Dupe check // Dupe check
@@ -184,27 +187,26 @@ public class GachaService extends BaseGameService {
int avatarId = itemData.getId(); int avatarId = itemData.getId();
GameAvatar avatar = player.getAvatars().getAvatarById(avatarId); GameAvatar avatar = player.getAvatars().getAvatarById(avatarId);
if (avatar != null) { if (avatar != null) {
int constLevel = avatar.getRank(); int dupeLevel = avatar.getRank();
int constItemId = avatarId + 10000; // Hacky. TODO optimize by using AvatarRankExcel int dupeItemId = avatarId + 10000; // Hacky. TODO optimize by using AvatarRankExcel
GameItem constItem = player.getInventory().getInventoryTab(ItemMainType.Material).getItemById(constItemId); GameItem dupeItem = player.getInventory().getInventoryTab(ItemMainType.Material).getItemById(dupeItemId);
if (constItem != null) { if (dupeItem != null) {
constLevel += constItem.getCount(); dupeLevel += dupeItem.getCount();
} }
if (constLevel < 6) { if (dupeLevel < 6) {
// Not max const // Not max const
addStarglitter = 2; addStarglitter = 8;
// Add 1 const // Add 1 rank
//gachaItem.addTransferItems(GachaTransferItem.newBuilder().setItem(ItemParam.newBuilder().setItemId(constItemId).setCount(1)).setIsTransferItemNew(constItem == null)); gachaItem.getTransferItemList().addItemList(Item.newInstance().setItemId(dupeItemId).setNum(1));
//gachaItem.addTokenItemList(ItemParam.newBuilder().setItemId(constItemId).setCount(1)); player.getInventory().addItem(dupeItemId, 1);
player.getInventory().addItem(constItemId, 1);
} else { } else {
// Is max const // Is max rank
addStarglitter = 5; addStarglitter = 20;
} }
if (itemData.getRarity() == ItemRarity.SuperRare) { if (itemData.getRarity() == ItemRarity.SuperRare) {
addStarglitter *= 5; addStarglitter *= 2.5;
} }
} else { } else {
// New // New
@@ -214,13 +216,13 @@ public class GachaService extends BaseGameService {
// Is weapon // Is weapon
switch (itemData.getRarity()) { switch (itemData.getRarity()) {
case SuperRare: case SuperRare:
addStarglitter = 10; addStarglitter = 40;
break; break;
case VeryRare: case VeryRare:
addStarglitter = 2; addStarglitter = 8;
break; break;
case Rare: case Rare:
addStardust = 15; addStardust = 20;
break; break;
default: default:
break; break;
@@ -230,33 +232,27 @@ public class GachaService extends BaseGameService {
// Create item // Create item
GameItem item = new GameItem(itemData); GameItem item = new GameItem(itemData);
gachaItem.setGachaItem(item.toProto()); gachaItem.setGachaItem(item.toProto());
gachaItem.setUnk1(ItemList.newInstance());
gachaItem.setUnk2(ItemList.newInstance());
player.getInventory().addItem(item); player.getInventory().addItem(item);
// Add embers/starlight
stardust += addStardust; stardust += addStardust;
starglitter += addStarglitter; starglitter += addStarglitter;
/*
if (addStardust > 0) { if (addStardust > 0) {
gachaItem.addTokenItemList(ItemParam.newBuilder().setItemId(stardustId).setCount(addStardust)); gachaItem.getTokenItem().addItemList(Item.newInstance().setItemId(embersId).setNum(addStardust));
} if (addStarglitter > 0) { } if (addStarglitter > 0) {
ItemParam starglitterParam = ItemParam.newBuilder().setItemId(starglitterId).setCount(addStarglitter).build(); gachaItem.getTokenItem().addItemList(Item.newInstance().setItemId(starglightId).setNum(addStarglitter));
if (isTransferItem) {
gachaItem.addTransferItems(GachaTransferItem.newBuilder().setItem(starglitterParam));
}
gachaItem.addTokenItemList(starglitterParam);
} }
*/
// Add to gacha item list rsp
list.add(gachaItem.newInstance()); list.add(gachaItem);
} }
// Add stardust/starglitter // Add stardust/starglitter
if (stardust > 0) { if (stardust > 0) {
player.getInventory().addItem(stardustId, stardust); player.getInventory().addItem(embersId, stardust);
} if (starglitter > 0) { } if (starglitter > 0) {
player.getInventory().addItem(starglitterId, starglitter); player.getInventory().addItem(starglightId, starglitter);
} }
// Packets // Packets