npc/animals arrangement & support enter room scene

This commit is contained in:
Akka
2022-06-15 17:20:08 +08:00
committed by Melledy
parent e16633e34b
commit 7a247e70e0
9 changed files with 145 additions and 21 deletions

View File

@@ -1,11 +1,13 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.game.world.Scene;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeSceneJumpReqOuterClass;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketHomeSceneJumpRsp;
import emu.grasscutter.utils.Position;
@Opcodes(PacketOpcodes.HomeSceneJumpReq)
public class HandlerHomeSceneJumpReq extends PacketHandler {
@@ -20,21 +22,14 @@ public class HandlerHomeSceneJumpReq extends PacketHandler {
var homeScene = home.getHomeSceneItem(realmId);
home.save();
if(req.getIsEnterRoomScene()){
var roomScene = home.getHomeSceneItem(homeScene.getRoomSceneId());
session.getPlayer().getWorld().transferPlayerToScene(
session.getPlayer(),
homeScene.getRoomSceneId(),
roomScene.getBornPos()
);
}else{
session.getPlayer().getWorld().transferPlayerToScene(
session.getPlayer(),
realmId,
homeScene.getBornPos()
);
}
Scene scene = session.getPlayer().getWorld().getSceneById(req.getIsEnterRoomScene() ? homeScene.getRoomSceneId() : realmId);
Position pos = scene.getScriptManager().getConfig().born_pos;
session.getPlayer().getWorld().transferPlayerToScene(
session.getPlayer(),
req.getIsEnterRoomScene() ? homeScene.getRoomSceneId() : realmId,
pos
);
session.send(new PacketHomeSceneJumpRsp(req.getIsEnterRoomScene()));
}

View File

@@ -30,13 +30,18 @@ public class HandlerTryEnterHomeReq extends PacketHandler {
int realmId = 2000 + session.getPlayer().getCurrentRealmId();
var home = session.getPlayer().getHome();
// prepare the default arrangement for first come in
var homeScene = home.getHomeSceneItem(realmId);
home.save();
Scene scene = session.getPlayer().getWorld().getSceneById(realmId);
Position pos = scene.getScriptManager().getConfig().born_pos;
session.getPlayer().getWorld().transferPlayerToScene(
session.getPlayer(),
realmId,
homeScene.getBornPos()
pos
);