mirror of
https://github.com/MikuLeaks/KianaBH3.git
synced 2025-12-14 13:54:43 +01:00
Initial commit
This commit is contained in:
60
game_server/packet/handlers/AvatarSubSkillLevelUpReq.py
Normal file
60
game_server/packet/handlers/AvatarSubSkillLevelUpReq.py
Normal file
@@ -0,0 +1,60 @@
|
||||
import betterproto
|
||||
from game_server.net.session import Session
|
||||
from game_server.game.enum.data_type import DataType
|
||||
from game_server.resource import ResourceManager
|
||||
from game_server.resource.configdb.avatar_sub_skill_data import AvatarSubSkillData
|
||||
from database import mongo
|
||||
from lib.proto import (
|
||||
AvatarSubSkillLevelUpReq,
|
||||
AvatarSubSkillLevelUpRsp,
|
||||
AvatarSubSkill,
|
||||
GetAvatarDataReq,
|
||||
GetEquipmentDataRsp,
|
||||
Material
|
||||
)
|
||||
|
||||
async def handle(session: Session, msg: AvatarSubSkillLevelUpReq) -> betterproto.Message:
|
||||
avatar_data = session.player.avatars.get(msg.avatar_id)
|
||||
if not avatar_data:
|
||||
return AvatarSubSkillLevelUpRsp(retcode=2)
|
||||
|
||||
skill_data = avatar_data.skill_lists.get(msg.skill_id)
|
||||
if not skill_data:
|
||||
return AvatarSubSkillLevelUpRsp(retcode=3)
|
||||
|
||||
sub_skill_data = ResourceManager.instance().find_by_index(AvatarSubSkillData, msg.sub_skill_id)
|
||||
if not sub_skill_data:
|
||||
return AvatarSubSkillLevelUpRsp(retcode=4)
|
||||
|
||||
sub_skill = skill_data.sub_skill_lists.get(msg.sub_skill_id)
|
||||
if not sub_skill:
|
||||
skill_data.sub_skill_lists[msg.sub_skill_id] = AvatarSubSkill(
|
||||
sub_skill_id=msg.sub_skill_id,
|
||||
level=0
|
||||
)
|
||||
|
||||
current_level = skill_data.sub_skill_lists[msg.sub_skill_id].level
|
||||
new_level = sub_skill_data.maxLv if msg.is_level_up_all else current_level + 1
|
||||
|
||||
if new_level > sub_skill_data.maxLv:
|
||||
return AvatarSubSkillLevelUpRsp(retcode=10)
|
||||
|
||||
skill_data.sub_skill_lists[msg.sub_skill_id] = AvatarSubSkill(
|
||||
sub_skill_id=msg.sub_skill_id,
|
||||
level=new_level
|
||||
)
|
||||
avatar_data.skill_lists[msg.skill_id] = skill_data
|
||||
|
||||
await session.process_packet(session.create_packet(GetAvatarDataReq(avatar_id_list=[msg.avatar_id])))
|
||||
|
||||
coin = session.player.inventory.material_items.get(100)
|
||||
if coin:
|
||||
session.pending_notify(
|
||||
GetEquipmentDataRsp(
|
||||
material_list=[Material(id=coin.item_id, num=coin.num)]
|
||||
)
|
||||
)
|
||||
|
||||
mongo.save(session, DataType.AVATAR, [msg.avatar_id])
|
||||
|
||||
return AvatarSubSkillLevelUpRsp(retcode=0)
|
||||
Reference in New Issue
Block a user