mirror of
https://github.com/MikuLeaks/KianaBH3.git
synced 2025-12-14 13:54:43 +01:00
53 lines
2.1 KiB
Python
53 lines
2.1 KiB
Python
import betterproto
|
|
from game_server.net.session import Session
|
|
from game_server.game.enum.data_type import DataType
|
|
from database import mongo
|
|
from lib.proto import (
|
|
DressEquipmentReq,
|
|
DressEquipmentRsp,
|
|
EquipmentSlot,
|
|
GetAvatarDataReq
|
|
)
|
|
|
|
async def handle(session: Session, msg: DressEquipmentReq) -> betterproto.Message:
|
|
avatar_data = session.player.avatars.get(msg.avatar_id)
|
|
if avatar_data:
|
|
replace_id = 0
|
|
match msg.slot:
|
|
case EquipmentSlot.EQUIPMENT_SLOT_WEAPON_1.value:
|
|
if avatar_data.weapon_id > 0:
|
|
replace_id = avatar_data.weapon_id
|
|
replace_weapon = session.player.inventory.weapon_items.get(avatar_data.weapon_id)
|
|
replace_weapon.equip_avatar_id = 0
|
|
|
|
avatar_data.weapon_id = msg.unique_id
|
|
|
|
weapon = session.player.inventory.weapon_items.get(msg.unique_id)
|
|
weapon.equip_avatar_id = msg.avatar_id
|
|
|
|
mongo.save(session,DataType.WEAPON,[msg.unique_id,replace_id])
|
|
case EquipmentSlot.EQUIPMENT_SLOT_STIGMATA_1.value | \
|
|
EquipmentSlot.EQUIPMENT_SLOT_STIGMATA_2.value | \
|
|
EquipmentSlot.EQUIPMENT_SLOT_STIGMATA_3.value:
|
|
slot_num = msg.slot-1
|
|
replace_id = avatar_data.stigmata_ids.get(slot_num,0)
|
|
if replace_id > 0:
|
|
replace_stigmata = session.player.inventory.stigmata_items.get(replace_id)
|
|
replace_stigmata.equip_avatar_id = 0
|
|
|
|
|
|
avatar_data.stigmata_ids[slot_num] = msg.unique_id
|
|
|
|
stigmata = session.player.inventory.stigmata_items.get(msg.unique_id)
|
|
stigmata.equip_avatar_id = msg.avatar_id
|
|
stigmata.slot_num = slot_num
|
|
|
|
mongo.save(session,DataType.STIGMATA,[msg.unique_id,replace_id])
|
|
|
|
await session.process_packet(session.create_packet(GetAvatarDataReq(avatar_id_list=[msg.avatar_id])))
|
|
return DressEquipmentRsp(
|
|
retcode=0,
|
|
unique_id=msg.unique_id,
|
|
slot=msg.slot
|
|
)
|