mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-01-09 17:53:17 +08:00
Fix quest chests not having drop data
This commit is contained in:
parent
43f3494073
commit
cef8b53dd6
@ -75,6 +75,7 @@ public class GadgetChest extends GadgetContent {
|
|||||||
} else if (chest.chest_drop_id != 0) {
|
} else if (chest.chest_drop_id != 0) {
|
||||||
status = dropSystem.handleChestDrop(chest.chest_drop_id, chest.drop_count, getGadget());
|
status = dropSystem.handleChestDrop(chest.chest_drop_id, chest.drop_count, getGadget());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (status) {
|
if (status) {
|
||||||
getGadget().updateState(ScriptGadgetState.ChestOpened);
|
getGadget().updateState(ScriptGadgetState.ChestOpened);
|
||||||
player.sendPacket(
|
player.sendPacket(
|
||||||
|
@ -1,15 +1,13 @@
|
|||||||
package emu.grasscutter.server.packet.recv;
|
package emu.grasscutter.server.packet.recv;
|
||||||
|
|
||||||
import emu.grasscutter.data.GameData;
|
import emu.grasscutter.data.GameData;
|
||||||
import emu.grasscutter.data.excels.GadgetData;
|
|
||||||
import emu.grasscutter.data.excels.ItemData;
|
import emu.grasscutter.data.excels.ItemData;
|
||||||
import emu.grasscutter.data.excels.monster.MonsterData;
|
import emu.grasscutter.data.excels.monster.MonsterData;
|
||||||
import emu.grasscutter.game.entity.*;
|
import emu.grasscutter.game.entity.*;
|
||||||
import emu.grasscutter.game.world.Position;
|
import emu.grasscutter.game.world.Position;
|
||||||
import emu.grasscutter.net.packet.Opcodes;
|
import emu.grasscutter.net.packet.*;
|
||||||
import emu.grasscutter.net.packet.PacketHandler;
|
|
||||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
|
||||||
import emu.grasscutter.net.proto.QuestCreateEntityReqOuterClass.QuestCreateEntityReq;
|
import emu.grasscutter.net.proto.QuestCreateEntityReqOuterClass.QuestCreateEntityReq;
|
||||||
|
import emu.grasscutter.scripts.data.SceneGadget;
|
||||||
import emu.grasscutter.server.game.GameSession;
|
import emu.grasscutter.server.game.GameSession;
|
||||||
import emu.grasscutter.server.packet.send.PacketQuestCreateEntityRsp;
|
import emu.grasscutter.server.packet.send.PacketQuestCreateEntityRsp;
|
||||||
import lombok.val;
|
import lombok.val;
|
||||||
@ -30,12 +28,29 @@ public class HandlerQuestCreateEntityReq extends PacketHandler {
|
|||||||
case GADGET_ID -> {
|
case GADGET_ID -> {
|
||||||
val gadgetId = entity.getGadgetId();
|
val gadgetId = entity.getGadgetId();
|
||||||
val gadgetInfo = entity.getGadget();
|
val gadgetInfo = entity.getGadget();
|
||||||
GadgetData gadgetData = GameData.getGadgetDataMap().get(gadgetId);
|
var gadgetData = GameData.getGadgetDataMap().get(gadgetId);
|
||||||
gameEntity =
|
gameEntity =
|
||||||
switch (gadgetData.getType()) {
|
switch (gadgetData.getType()) {
|
||||||
case Vehicle -> new EntityVehicle(scene, session.getPlayer(), gadgetId, 0, pos, rot);
|
case Vehicle -> new EntityVehicle(scene, session.getPlayer(), gadgetId, 0, pos, rot);
|
||||||
|
case Chest -> {
|
||||||
|
var chest = gadgetInfo.getChest();
|
||||||
|
var gadget = new EntityGadget(scene, gadgetId, pos, rot);
|
||||||
|
// Create the gadget data for the chest.
|
||||||
|
var metaGadget = new SceneGadget();
|
||||||
|
metaGadget.drop_count = 1; // TODO: Check if more items should be dropped.
|
||||||
|
metaGadget.chest_drop_id = chest.getChestDropId();
|
||||||
|
metaGadget.setShowcutscene(chest.getIsShowCutscene());
|
||||||
|
// Apply the gadget data to the chest.
|
||||||
|
gadget.setMetaGadget(metaGadget);
|
||||||
|
|
||||||
|
yield gadget;
|
||||||
|
}
|
||||||
default -> new EntityGadget(scene, gadgetId, pos, rot);
|
default -> new EntityGadget(scene, gadgetId, pos, rot);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (gameEntity instanceof EntityGadget gadget) {
|
||||||
|
gadget.buildContent();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
case ITEM_ID -> {
|
case ITEM_ID -> {
|
||||||
val itemId = entity.getItemId();
|
val itemId = entity.getItemId();
|
||||||
|
Loading…
Reference in New Issue
Block a user