class Equipment(ClassObject): key = String(desc='인스턴스 키') class_key = String(desc='아이템의 클래스. Item 의 key') primary_stat = Dict(Integer(), desc='주스탯') primary_option = List(Dict(Integer()), desc='주옵션 { str: 100}, {hp: 200}') sub_option = List(Dict(Integer()), desc='보조 옵션. 주 스탯이 아닌 보조 옵션들') skill_option = String(desc='아이템의 붙는 스킬 옵션 키') strengthen = Integer(desc='현재 장비의 강화도') remodeling_chance = Integer(desc='아이템 개조 횟수') remodeling_type = String(desc='리모델링 타입 primay / sub') remodeling_slot = Integer(desc='옵션 수정 위치 { 주/보조 옵션 : 슬롯 위치') curse = Boolean(default=False, desc='아이템 저부 여부 True 일 경우 저주 상태') bless = Boolean(default=False, desc='아이템의 축복 여부 True 일 경우 축복 상태') lock = Boolean(desc='아이템 잠금 여부') equipped = String(desc='이 아이템을 장착한 히어로의 key. 비 장착 중이면 None') equipped_preset_key = List(String(), desc='장착된 프리셋의 키. [2, 1, ...]') time_add = Integer(default=0, desc='획득 시각. utc.') aofei_bind = Boolean( default=False, desc='绑定' ) #add by ZHM, JoyGames, ALPHA GROUP CO.,LTD, at 2017-04-06 for 增加道具流通属性 time_tradable = Integer( default=0, desc='可交易的保护时间' ) #add by ZHM, JoyGames, ALPHA GROUP CO.,LTD, at 2017-03-17 for 增加道具流通属性
class AlphaFortWarSideInfo(ClassObject): clan_id = String(desc='公会id', default='') clan_name = String(desc='公会名', default='') mark = String(desc='公会图标', default='') mark_frame = String(desc='公会图标外框', default='') defense_count = Integer(desc='防守者数量', default=0) rep_list = List(Class(AlphaFortClanRepInfo), desc='公会代表信息') fort_point_snap_list = List(Class(AlphaFortWarPointSnap), desc='据点snap')
class BattleFieldFortDefenseInfo(ClassObject): rest_defense_count = Integer(desc='剩余防守者数量', default=0) is_battle_data_init = Boolean(desc='战斗数据是否初始化', default=False) battle_data_init_time = Integer(desc='战斗数据初始化时间', default=0) point_detail_dict = Dict(Class(FortPointDetail), desc='据点信息, point_id => info') before_battle_defense = Class(FortBeforeBattleDefense, desc='战前防守阵容信息') facility_info_list = List(Class(FortFacility), desc='公会建筑信息') defense_log_list = List(Class(BFBlockDefenseLog), desc='防守变更日志列表')
class BattleFieldBlockDefenseInfo(ClassObject): user_heroes = Dict(String(), desc='玩家防守英雄列表, server_user_id => hero class key') user_pets = Dict(List(String(), desc='pet base key list'), desc='玩家召唤兽列表, server_user_id => pet base key list') defense_list = List(Class(BattleFieldDefenseUnitBase), desc='防守列表') npc_party_key = Integer(desc='中立怪组id', default=-1) neutral_reward = Dict(Integer(), desc='中立怪奖励信息') defense_log_list = List(Class(BFBlockDefenseLog), desc='防守变更日志列表')
class BattleFieldClanInfo(ClassObject): clan_id = String(desc='公会id') season_key = Integer(desc='赛季') register_field_id = String(desc='报名的区域id') register_time = Integer(desc='报名时间') own_blocks = List(Integer(), desc='拥有的地块编号列表') is_give_reward = Boolean(desc='是否已给奖励', default=False) reward_items = Dict(Integer(), desc='奖励内容') reward_time = Integer(desc='给奖励时间', default=0) log_list = List(Class(BattleFieldClanLog), desc='公会相关日志列表')
class FortPointDetail(ClassObject): total_count = Integer(desc='总量', default=0) rest_count = Integer(desc='剩余量', default=0) update_time = Integer(desc='更新时间', default=0) battle_user_count = Integer(desc='当前攻击玩家数量, 第一、三阶段据点使用', default=0) point_battle_hero = List(Class(FortBattleDefenseHeroUnit), desc='hero list, 第二阶段据点使用') point_battle_pet = List(Class(FortBattleDefensePetUnit), desc='pet list, 第二阶段据点使用') battle_server_user_id = String(desc='当前战斗的server user id, 第二阶段据点使用') battle_end_time = Integer(desc='战斗结束时间, 第二阶段据点使用', default=0) last_attack_server_user_id = String(desc='最后一击玩家server user id')
class AlphaFortWarClan(ClassObject): season_no = Integer(desc='赛季', default=0) group_no = Integer(desc='组别', default=0) streak_win_count = Integer(desc='连胜次数', default=0) result = Integer(desc='要塞战结果', default=ALPHA_FORT_WAR_RESULT_NONE) result_time = Integer(desc='要塞战结果时间', default=0) last_reset_time = Integer(desc='上一次重置时间', default=0) battle_data_init_time = Integer(desc='第二阶段防守阵容数据是否初始化', default=0) rest_defense_count = Integer(desc='剩余防守者数量', default=0) point_dict = Dict(Class(AlphaFortWarPointDetail), desc='据点信息, point_id => info') facility_info_list = List(Class(AlphaFortFacility), desc='公会建筑信息') attend_user_list = List(String(), desc='参与玩家server_user_id列表')
class Combatant(ClassObject): key = String(desc='唯一key') base = String(desc='base key') name = String(desc='名字') res_id = String(desc='res_id,资源id') rarity = Integer(desc='rarity,品阶') str = Integer(desc='str,力量', default=0) dex = Integer(desc='dex,敏捷', default=0) int = Integer(desc='int,智力', default=0) con = Integer(desc='con,体质', default=0) move_speed = Number(desc='移动速度', default=0) atk_speed = Number(desc='攻击速度', default=0) p_atk = Integer(desc='物理攻击', default=0) m_atk = Integer(desc='魔法攻击', default=0) hp = Integer(desc='血量', default=0) p_def = Integer(desc='物理防御', default=0) res = Integer(desc='魔法抵抗', default=0) pen = Integer(desc='物理穿透', default=0) cond_dec = Integer(desc='被控制衰减', default=0) cri = Integer(desc='暴击', default=0) eva = Integer(desc='闪避', default=0) attr_res = Dict(Integer(), desc='属性抗性') cond_res = Dict(Integer(), desc='控制抗性') field_effect_immune = List(String(), desc='场景效果免疫') cri_damage = Float(desc='暴击伤害', default=0.0) base_gauge = Integer(desc='技能槽', default=0) level = Integer(desc='等级', default=0) aggro = Integer(desc='仇恨值', default=0) cri_rate = Float(desc='暴击率', default=0.0) p_immune = Float(desc='物攻伤害减免', default=0.0) m_immune = Float(desc='法攻伤害减免', default=0.0) cond_res_all = Float(desc='全部控制抗性', default=0.0)
class CGGetTeamInfoResponse(ProtocolBase): team_id = Integer(desc='队伍id', default=0) server_leader_id = String(desc='队长server user id', default=None) member_info_list = List(Class(MemberInfo), desc='成员信息列表') func_type = String(desc='玩法类型', default=None) func_flag = String(desc='玩法具体标识', default=None) is_in_match = Boolean(desc='是否在自动匹配中', default=False)
class MasterCombatantsBaseRow(ClassObject): key = String(desc='base key') category = String(desc='分类') c_class_d = String(desc='类别(坦克,治疗等)') property = List(String(), desc='属性') factor = String(desc='主要属性(力、敏、智)') group = String(desc='组(英雄,宠物,变身,NPC等)') row = String(desc='站位(前,中,后)') res_id = String(desc='资源id') rarity_min = Integer(desc='品阶最小值', default=0) rarity_max = Integer(desc='品阶最大值', default=0) size = Number(desc='大小', default=0) aggro = Integer(desc='仇恨值', default=0) available = String(desc='玩家是否可得到(Y|N)') grade = String(desc='品质级别(A|B|SS等)') def is_hero_group(self): return self.group in [ CombatantGroupDef.COMBATANT_GROUP_HERO, CombatantGroupDef.COMBATANT_GROUP_TU_HERO, CombatantGroupDef.COMBATANT_GROUP_TRANSFORM, CombatantGroupDef.COMBATANT_GROUP_TU_TRANSFORM ] def is_pet_group(self): return self.group in [ CombatantGroupDef.COMBATANT_GROUP_PET, CombatantGroupDef.COMBATANT_GROUP_TU_PET, CombatantGroupDef.COMBATANT_GROUP_MONSTER, CombatantGroupDef.COMBATANT_GROUP_TU_MONSTER, CombatantGroupDef.COMBATANT_GROUP_NPC ]
class FortBeforeBattleDefense(ClassObject): point_used_hero_slot = Dict(List(Integer(), desc='slot no list'), desc='point_id => slot no list') point_used_pet_slot = Dict(List(Integer(), desc='slot no list'), desc='point_id => slot no list') point_hero_defense = Dict(Dict(Class(FortDefenseHeroSlotInfo), desc='str_slot_no => hero info'), desc='point_id => info dict') point_pet_defense = Dict(Dict(Class(FortDefensePetSlotInfo), desc='str_slot_no => pet info'), desc='point_id => info dict') user_hero_defense = Dict(Dict(Class(FortPointSlotPair), desc='hero class key => point slot pair'), desc='server user id => hero dict') user_pet_defense = Dict(Dict(Class(FortPointSlotPair), desc='pet base key => point slot pair'), desc='server user id => pet dict')
class Heroes(ClassObject): user_id = String(desc='히어로를 소유한 유저의 id') active = String(desc='현재 선택된 디폴트 히어로. 히어로의 class_key.') heroes = List(String(), desc='히어로 목록. [영웅 class_key, ...]') skins = Dict( Dict(Integer()), desc="英雄皮肤" ) #add by ZHM, JoyGames, ALPHA GROUP CO.,LTD, at 2017-07-19 for 英雄装备服装,不存在英雄时临时保存
class AlphaFortWarBBDefense(ClassObject): last_reset_time = Integer(desc='重置时间') point_used_hero_slot = Dict(List(Integer(), desc='slot no list'), desc='point_id => slot no list') point_used_pet_slot = Dict(List(Integer(), desc='slot no list'), desc='point_id => slot no list') point_hero_defense = Dict(Dict(Class(AlphaFortDefenseHeroSlotInfo), desc='str_slot_no => hero info'), desc='point_id => info dict') point_pet_defense = Dict(Dict(Class(AlphaFortDefensePetSlotInfo), desc='str_slot_no => pet info'), desc='point_id => info dict') user_hero_defense = Dict(Dict(Class(AlphaFortWarPointSlotPair), desc='hero class key => point slot pair'), desc='server user id => hero dict') user_pet_defense = Dict(Dict(Class(AlphaFortWarPointSlotPair), desc='pet base key => point slot pair'), desc='server user id => pet dict')
class TeamInfo(ClassObject): team_id = Integer(desc='队伍id', default=0) server_leader_id = String(desc='队长server user id', default=None) leader_name = String(desc='队长名字', default=None) create_time = Integer(desc='创建时间', default=0) member_id_list = List(String(), desc='成员server user id列表') func_type = String(desc='选定的玩法类型', default=None) func_flag = String(desc='选定的玩法具体标识', default=None) opened_func_type = String(desc='已开启的玩法类型', default=None)
class MasterCombatantsRow(ClassObject): key = String(desc='唯一key') base = String(desc='base key') name = String(desc='名字') res_id = String(desc='res_id,资源id') rarity = Integer(desc='rarity,品阶', default=0) str = Integer(desc='str,力量', default=0) dex = Integer(desc='dex,敏捷', default=0) int = Integer(desc='int,智力', default=0) con = Integer(desc='con,体质', default=0) move_speed = Number(desc='移动速度', default=0) atk_speed = Number(desc='攻击速度', default=0) p_atk = Integer(desc='物理攻击', default=0) m_atk = Integer(desc='魔法攻击', default=0) hp = Integer(desc='血量', default=0) p_def = Integer(desc='物理防御', default=0) res = Integer(desc='魔法抵抗', default=0) pen = Integer(desc='物理穿透', default=0) cond_dec = Integer(desc='被控制衰减', default=0) cri = Integer(desc='暴击', default=0) eva = Integer(desc='闪避', default=0) attr_res = Dict(Integer(), desc='属性抗性') cond_res = Dict(Integer(), desc='控制抗性') field_effect_immune = List(String(), desc='场景效果免疫') def clone_to_combatant(self): clone = Combatant() clone.key = self.key clone.base = self.base clone.name = self.name clone.res_id = self.res_id clone.rarity = self.rarity clone.str = self.str if self.str else 0 clone.dex = self.dex if self.dex else 0 clone.int = self.int if self.int else 0 clone.con = self.con if self.con else 0 clone.move_speed = self.move_speed if self.move_speed else 0 clone.atk_speed = self.atk_speed if self.atk_speed else 0 clone.p_atk = self.p_atk if self.p_atk else 0 clone.m_atk = self.m_atk if self.m_atk else 0 clone.hp = self.hp if self.hp else 0 clone.p_def = self.p_def if self.p_def else 0 clone.res = self.res if self.res else 0 clone.pen = self.pen if self.pen else 0 clone.cond_dec = self.cond_dec if self.cond_dec else 0 clone.cri = self.cri if self.cri else 0 clone.eva = self.eva if self.eva else 0 if self.attr_res: for k, v in self.attr_res.iteritems(): clone.attr_res[k] = v if self.cond_res: for k, v in self.cond_res.iteritems(): clone.cond_res[k] = v if self.field_effect_immune: clone.field_effect_immune += self.field_effect_immune return clone
class TeamBossDetail(ClassObject): team_id = Integer(desc='队伍id', default=0) unique_id = String(desc='team boss唯一id', default=None) func_type = String(desc='team boss func', default=None) boss_key = String(desc='boss key', default=None) create_time = Integer(desc='创建时间', default=0) end_time = Integer(desc='结束时间', default=0) ready_member_list = List(String(), desc='已准备的成员server user id列表') first_step = Class(TeamBossFirstDetail, desc='第一阶段详细信息') second_step = Class(TeamBossSecondDetail, desc='第二阶段详细信息')
class CombatantStatus(ClassObject): # main stat str = Float(desc='力量', default=0.0) dex = Float(desc='敏捷', default=0.0) int = Float(desc='智力', default=0.0) # sub stat phy_atk = Float(desc='物攻', default=0.0) mag_atk = Float(desc='法攻', default=0.0) cri = Float(desc='暴击', default=0.0) cri_inc = Float(desc='暴击加成', default=0.0) phy_pen = Float(desc='物理穿透', default=0.0) phy_def = Float(desc='物防', default=0.0) mag_res = Float(desc='法抗', default=0.0) eva = Float(desc='闪避', default=0.0) cur_hp = Float(desc='当前血量', default=0.0) max_hp = Float(desc='最大血量', default=0.0) cond_dec = Float(desc='异常状态时间减少', default=0.0) move_speed = Float(desc='移速', default=0.0) atk_speed = Float(desc='攻速', default=0.0) aggro = Float(desc='仇恨值', default=0.0) high_power = Float(desc='', default=0.0) attr_res = Dict(Float(), desc='属性抗性') mesmerize_res = Dict(Float(), desc='控制抗性') field_immune = List(String(), desc='场景效果免疫') # develop stat class_immune = Dict(Float(), desc='类型攻击免疫') attr_immune = Dict(Float(), desc='属性攻击免疫') eva_rate = Float(desc='闪避率', default=0.0) mes_eva_rate = Float(desc='控制闪避率', default=0.0) taunt = Float(desc='嘲讽值', default=0.0) # caster mesmerize = List(String(), desc='异常状态列表') cri_rate = Float(desc='暴击率', default=0.0) # active skill charge rate charge_turn_rate = Float(desc='主动技能恢复比例', default=0.0)
class TeamBossBattleDetail(ClassObject): battle_unique_id = String(desc='战斗唯一id') team_boss_unique_id = String(desc='team boss唯一id') battle_status = Integer(desc='战斗状态(0-准备期,1-进行中,2-已结束)', default=0) start_time = Integer(desc='开始时间', default=0) real_start_time = Integer(desc='实际开始时间', default=0) end_time = Integer(desc='结束时间', default=0) ctrl_server_user_id = String(desc='当前控制的玩家id', default=None) member_data_dict = Dict(Class(TeamBossBattleMember), desc='战斗成员信息') boss_data = Class(TeamBossBattleUnitBoss, desc='boss信息') server_group_id = String(desc='服务器server group id') team_id = Integer(desc='队伍id') server_leader_id = String(desc='队长server user id') op_list = List(String(), desc='操作列表')
class Mail(ClassObject): mail_id = Integer(desc='Mail id') mail_type = String(desc='MailType') tab_id = Integer(desc='MailType 에 따른 tab_id') receiver = String(desc='받는사람') sender = String(desc='보낸사람') contents = String(desc='내용') attach = List(Class(ItemBase), desc='첨부 아이템 목록 [ItemBase, ...]') create_dt = Integer(desc='메일 발송 일시. seconds from 1970-01-01. utc.') expired_dt = Integer(desc='메일 보관만료 일시. seconds from 1970-01-01 utc.') sender_clan_role = String(default=None, desc='보내는 사람의 클랜 직위 ( 클랜 메일 용)')
class BattleFieldBlockInfoToC(ClassObject): is_fort = Boolean(desc='是否是要塞', default=False) status = Integer(desc='据点状态') clan_id = String(desc='公会id') clan_mission = Class(BattleFieldClanMission, desc='公会指示') protect_end_time = Integer(desc='保护结束时间', default=0) battle_server_user_id = String(desc='战斗中的玩家server_user_id') battle_timeout = Integer(desc='战斗超时时间戳', default=0) fort_war_clan_id = String(desc='攻击该要塞的公会id') fort_war_start_time = Integer(desc='要塞战开始时间戳(针对要塞据点)', default=0) fort_war_end_time = Integer(desc='要塞战结束时间戳(针对要塞据点)', default=0) product_items = Dict(Integer(), desc='据点产出的物品字典') last_product_time = Integer(desc='据点上一次产出时间', default=0) defense_unit_count = Integer(desc='当前防守单位数量', default=0) defense_info = List(Class(BattleFieldDefenseUnit), desc='防守信息')
class MasterItem(ClassObject): key = String(desc='아이템의 키(id)') name = String(desc='이름') type = String(desc='아이템 종류. 무기/방어구/장신구/기술서/재화/재료/영혼석/물약') equip_pos = String( desc='아이템 장착 위치. weapon/helm/armor/cloak/gloves/boots/ear/ring') rarity = Integer(desc='희구도. 별개수.') quality = String(desc='아이템 등급. 고급/일반=high/general') option = String(desc='장비품의 옵션 정보') set_option = String(desc='장비품의 세트 옵션 정보') owner_class = String(desc='사용 가능한 직업군. Combatant 의 key.') resource_id = String(desc='리소스 id') int_attr = Dict(Integer(), desc='정수로 표시되는 아이템 속성 값. {p_atk: 100, level: 2, ...}') str_attr = Dict(String(), desc='문자로 표시되는 아이템 속성 값. {key: 커츠, target: 천재, ...}') stage = List(String(), desc='출현 스테이지. [1-1, 2-3, ...]') strengthen_rate = String(desc='아이템 강화도 확률 아이디') strengthen_stat = String(desc='아이템 강화도 스텟 아이디') desc = String(desc='아이템 설명') price = Integer(desc='판매 가격') imprint_exp = Integer(desc='각인 경험치') # add by Yoray, JoyGames, ALPHA GROUP CO.,LTD, at 2017-03-29 # detail: 装备初始属性随机相关 aofei_int_type = String(desc='装备随机属性类型') aofei_int_min = Integer(desc='装备随机属性下限') aofei_int_max = Integer(desc='装备随机属性上限') # >>add by ZHM, JoyGames, ALPHA GROUP CO.,LTD, at 2017-04-06 for 增加道具流通属性 aofei_tradable = Boolean(desc='可交易') aofei_start_price = Integer(desc='初始均价') aofei_time_tradable = Integer(desc='交易间隔') aofei_look_time_trade = Integer(desc='公示期') aofei_order_type = String(desc='交易行分类') aofei_review_time = Integer(desc="审核时间(秒)") # <<add by ZHM, JoyGames, ALPHA GROUP CO.,LTD, at 2017-04-06 for 增加道具流通属性 def can_equip_by_hero(self, hero_class_key): return self.owner_class in ['Common', hero_class_key] def get_index_meta(self): """ 인덱싱에 사용할 메타 정보 반환 :return: dict: {인덱스 이름: 인덱스 컬럼 리스트, ...} """ return { 'type': (self.type, ) # 스킬 보유 캐릭터 기준 인덱싱 }
class BFBattleDefenseDeck(ClassObject): hero = Class(BFBattleDefenseHeroSnap, desc='英雄') pets = List(Class(BFBattleDefensePetSnap), desc='召唤兽列表') def set_hero(self, hero_do, inventory_do, rest_hp): self.hero = BFBattleDefenseHeroSnap() self.hero.load_from_hero(hero_do.doc, inventory_do.doc) self.hero.rest_hp = rest_hp return self def add_pet(self, user_id, server_id, pet, pets_do, rest_hp): add_pet = BFBattleDefensePetSnap.make_from_pets( server_id, user_id, pets_do.doc.pets, [pet]).values()[0] add_pet.rest_hp = rest_hp self.pets.append(add_pet) return self
class TeamBossBattleUnitBoss(ClassObject): combatant_data = Class(SimpleCombatantData, desc='战斗数据') dead_part_list = List(String(), desc='已死亡部位列表')
class CommonAttackDeckMultiMercenary(ClassObject): hero = String(desc='공격 댁 영웅의 정보. hero_class_key') pets = List(String(), desc='공격 덱 소환수의 정보. pet_base_key') mercenary_list = List(Class(MercenaryDeck, desc='공격 덱 용병'), desc='雇佣兵列表')
class ClanDungeonWarehouseInfo(ClassObject): item_dict = Dict(Integer(), desc='当前仓库道具列表') log_list = List(Class(ClanDungeonWarehouseDistLog), desc='分配日志列表') log_check_time = Integer(desc='日志检查时间,处理过期日志')
class UserMailTab(ClassObject): mail_list = List(Class(Mail), desc='우편 목록') read_mail_list = List(Class(ReadMail), desc='읽은 우편 목록') add_mail_count = Integer(default=0, desc='기록된 메일 카운트')
class MailList(ClassObject): mail_list = List(Class(Mail), desc='우편 목록')
class BattleFieldClanLog(ClassObject): log_type = String(desc='日志类型') log_time = Integer(desc='日志时间', default=0) param_list = List(String(), desc='参数列表')
class BFBlockDefenseLog(ClassObject): log_type = String(desc='日志类型') log_time = Integer(desc='日志时间', default=0) param_list = List(String(), desc='参数列表')
class FortFacility(ClassObject): facility_name = String(desc='据点id(名字)') reinforce_list = List(Integer(), desc='加强经验值列表')