28 lines
1.1 KiB
Python
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() |