Implement using fuels

This commit is contained in:
Melledy
2023-11-13 22:48:36 -08:00
parent a313903455
commit bb62a6a2cb
6 changed files with 1215 additions and 1 deletions

View File

@@ -425,6 +425,27 @@ public class Inventory extends BasePlayerManager {
public boolean verifyHcoin(int cost) {
return this.getPlayer().getHcoin() >= cost;
}
// Use item
public List<GameItem> useItem(int itemId, int count, int baseAvatarId) {
// Verify that the player actually has the item
GameItem useItem = this.getMaterialByItemId(itemId);
if (useItem == null || useItem.getCount() < count) {
return null;
}
// Remove item from inventory
this.removeItem(useItem, count);
// Use the item now
// TODO write better handler for this later
if (itemId == 201) {
this.getPlayer().addStamina(60 * count);
}
return null;
}
// Equips

View File

@@ -360,7 +360,7 @@ public class Player {
}
public void addStamina(int amount) {
this.stamina = Math.min(this.stamina + amount, GameConstants.MAX_STAMINA);
this.stamina += amount;
this.sendPacket(new PacketStaminaInfoScNotify(this));
}

View File

@@ -0,0 +1,24 @@
package emu.lunarcore.server.packet.recv;
import java.util.List;
import emu.lunarcore.game.inventory.GameItem;
import emu.lunarcore.proto.UseItemCsReqOuterClass.UseItemCsReq;
import emu.lunarcore.server.game.GameSession;
import emu.lunarcore.server.packet.CmdId;
import emu.lunarcore.server.packet.Opcodes;
import emu.lunarcore.server.packet.PacketHandler;
import emu.lunarcore.server.packet.send.PacketUseItemScRsp;
@Opcodes(CmdId.UseItemCsReq)
public class HandlerUseItemCsReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] data) throws Exception {
var req = UseItemCsReq.parseFrom(data);
List<GameItem> returnItems = session.getPlayer().getInventory().useItem(req.getUseItemId(), req.getUseItemCount(), req.getBaseAvatarId());
session.send(new PacketUseItemScRsp(req.getUseItemId(), req.getUseItemCount(), returnItems));
}
}

View File

@@ -0,0 +1,31 @@
package emu.lunarcore.server.packet.send;
import java.util.List;
import emu.lunarcore.game.inventory.GameItem;
import emu.lunarcore.proto.ItemListOuterClass.ItemList;
import emu.lunarcore.proto.UseItemScRspOuterClass.UseItemScRsp;
import emu.lunarcore.server.packet.BasePacket;
import emu.lunarcore.server.packet.CmdId;
public class PacketUseItemScRsp extends BasePacket {
public PacketUseItemScRsp(int itemId, int itemCount, List<GameItem> returnItems) {
super(CmdId.UseItemScRsp);
var itemList = ItemList.newInstance();
if (returnItems != null && returnItems.size() > 0) {
for (var item : returnItems) {
itemList.addItemList(item.toProto());
}
}
var data = UseItemScRsp.newInstance()
.setUseItemId(itemId)
.setUseItemCount(itemCount)
.setReturnData(itemList);
this.setData(data);
}
}