add summon unit & maze buff & refactor battle
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import betterproto
|
||||
from game_server.net.session import PlayerSession
|
||||
from game_server.game.scene.scene_manager import SceneManager
|
||||
from game_server.game.motion.motion_info import Motion
|
||||
from rail_proto.lib import (
|
||||
EnterSceneCsReq,
|
||||
@@ -9,10 +10,10 @@ from rail_proto.lib import (
|
||||
)
|
||||
|
||||
async def handle(session: PlayerSession, msg: EnterSceneCsReq) -> betterproto.Message:
|
||||
session.player.scene_manager = SceneManager(entry_id=msg.entry_id)
|
||||
scene = session.player.scene_manager
|
||||
scene.entry_id = msg.entry_id
|
||||
if msg.teleport_id > 0:
|
||||
session.player.scene_manager.teleport_id = msg.teleport_id
|
||||
scene.teleport_id = msg.teleport_id
|
||||
scene_proto = scene.ToProto(session)
|
||||
lineup = session.player.lineup_manager.get(session.player.data.cur_lineup).ToProto()
|
||||
session.pending_notify(
|
||||
@@ -23,7 +24,7 @@ async def handle(session: PlayerSession, msg: EnterSceneCsReq) -> betterproto.Me
|
||||
)
|
||||
session.pending_notify(
|
||||
SceneEntityMoveScNotify(
|
||||
entry_id=session.player.scene_manager.entry_id,
|
||||
entry_id=scene.entry_id,
|
||||
motion=Motion(
|
||||
x=session.player.data.pos.x,
|
||||
y=session.player.data.pos.y,
|
||||
@@ -33,7 +34,6 @@ async def handle(session: PlayerSession, msg: EnterSceneCsReq) -> betterproto.Me
|
||||
)
|
||||
)
|
||||
scene.teleport_id = 0
|
||||
#session.player.data.save_player_data()
|
||||
return EnterSceneScRsp(
|
||||
retcode=0
|
||||
)
|
||||
@@ -1,18 +1,46 @@
|
||||
import betterproto
|
||||
from game_server.net.session import PlayerSession
|
||||
from game_server.game.motion.motion_info import Motion
|
||||
from rail_proto.lib import (
|
||||
ReplaceLineupCsReq,
|
||||
ReplaceLineupScRsp,
|
||||
SyncLineupNotify
|
||||
SyncLineupNotify,
|
||||
SceneGroupRefreshScNotify,
|
||||
GroupRefreshInfo,
|
||||
SceneEntityRefreshInfo,
|
||||
SceneGroupRefreshType
|
||||
)
|
||||
|
||||
async def handle(session: PlayerSession, msg: ReplaceLineupCsReq) -> betterproto.Message:
|
||||
lineup = session.player.lineup_manager.get(msg.index)
|
||||
lineup.avatar_list = [avatar.id for avatar in msg.lineup_slot_list]
|
||||
lineup.leader_slot = msg.leader_slot
|
||||
await session.notify(
|
||||
SyncLineupNotify(
|
||||
lineup=lineup.ToProto()
|
||||
)
|
||||
)
|
||||
#lineup.save_lineup()
|
||||
player_pos = Motion(
|
||||
x=session.player.data.pos.x,
|
||||
y=session.player.data.pos.y,
|
||||
z=session.player.data.pos.z,
|
||||
rotY=session.player.data.rot.y
|
||||
).ToProto()
|
||||
for avatar_id in lineup.avatar_list:
|
||||
session.pending_notify(
|
||||
SceneGroupRefreshScNotify(
|
||||
floor_id=session.player.data.floor_id,
|
||||
group_refresh_list=[
|
||||
GroupRefreshInfo(
|
||||
refresh_type=SceneGroupRefreshType.SCENE_GROUP_REFRESH_TYPE_LOADED.value,
|
||||
refresh_entity=[
|
||||
SceneEntityRefreshInfo(
|
||||
add_entity=session.player.scene_manager.Actor(avatar_id, player_pos)
|
||||
)
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
return ReplaceLineupScRsp(retcode=0)
|
||||
@@ -15,6 +15,14 @@ async def handle(session: PlayerSession, msg: SceneCastSkillCsReq) -> betterprot
|
||||
if id not in targets and (id > 20000 or id < 10)
|
||||
)
|
||||
session.player.battle_manager = BattleManager(session.player)
|
||||
if msg.skill_index == 0 and targets:
|
||||
|
||||
avatars_lineup = session.player.lineup_manager.get(session.player.data.cur_lineup).avatar_list
|
||||
caster = msg.attacked_by_entity_id
|
||||
if caster >> 20 in avatars_lineup:
|
||||
if msg.skill_index > 0:
|
||||
scene = session.player.scene_manager
|
||||
await scene.GetSummonUnit(session,msg)
|
||||
|
||||
if targets:
|
||||
return session.player.battle_manager.EnterBattle(msg,targets)
|
||||
return SceneCastSkillScRsp(retcode=0)
|
||||
return SceneCastSkillScRsp()
|
||||
Reference in New Issue
Block a user