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()