Files
neonsr/game_server/handlers/SceneCastSkillCsReq.py
2025-04-16 21:31:18 +08:00

28 lines
1.1 KiB
Python

import betterproto
from game_server.net.session import PlayerSession
from game_server.game.battle.battle_manager import BattleManager
from rail_proto.lib import (
SceneCastSkillCsReq,
SceneCastSkillScRsp,
)
async def handle(session: PlayerSession, msg: SceneCastSkillCsReq) -> betterproto.Message:
targets = [id for id in msg.assist_monster_entity_id_list if id > 20000 or id < 10]
for monster in msg.assist_monster_entity_info:
targets.extend(
id for id in monster.entity_id_list
if id not in targets and (id > 20000 or id < 10)
)
session.player.battle_manager = BattleManager(session.player)
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()