mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-15 14:54:43 +01:00
Gacha now provides the right amount of stardust/ember/eidolons
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user