syntax = "proto3"; package proto; option go_package = "beyond-go/proto/pbcommon;pbcommon"; import "common.proto"; import "options.proto"; enum BATTLE_PROTO_VERSION { BATTLE_PROTO_VERSION_NONE = 0; BATTLE_PROTO_VERSION_CURRENT = 2; } enum BATTLE_RESET_REASON { BATTLE_RESET_REASON_NONE = 0; BATTLE_RESET_REASON_GENDER_CHANGE = 1; BATTLE_RESET_REASON_DECO = 2; BATTLE_RESET_REASON_OBJ_ENTER_SCENE = 3; BATTLE_RESET_REASON_GM = 4; BATTLE_RESET_REASON_BATTLE_OP = 5; BATTLE_RESET_REASON_BEFORE_DESTROY_ENTITY = 6; BATTLE_RESET_REASON_SCENE_RESET_BATTLE = 7; BATTLE_RESET_REASON_ADD_AOI_OBSERVER = 8; BATTLE_RESET_REASON_REVIVE_CHAR = 9; BATTLE_RESET_REASON_RESET_PART_SUMMON = 10; BATTLE_RESET_REASON_RESET_BACKGROUND_CHAR = 11; } enum BATTLE_ACTION_OPERATE_TYPE { BATTLE_OP_NONE = 0; BATTLE_OP_ADD_BUFF = 1; BATTLE_OP_FINISH_BUFF = 2; BATTLE_OP_SKILL_ATTACH = 3; BATTLE_OP_SKILL_DETACH = 4; BATTLE_OP_SKILL_START_CAST = 5; BATTLE_OP_SKILL_END_CAST = 6; BATTLE_OP_SWITCH_MODE = 7; BATTLE_OP_TRIGGER_ACTION = 8; BATTLE_OP_ENTITY_DIE = 10; BATTLE_OP_ENTITY_VALUE_MODIFY = 11; BATTLE_OP_RESET_BATTLE_DATA = 12; BATTLE_OP_UPDATE_DATA_VERSION = 13; BATTLE_OP_ENABLE_PASSIVE_SKILL = 14; BATTLE_OP_TRIGGER_KEYWORD = 15; BATTLE_OP_SHIELD_VALUE_MODIFY = 16; BATTLE_OP_UPDATE_ATB_INFO = 17; BATTLE_OP_MODIFY_BATTLE_STATE = 18; BATTLE_OP_MODIFY_POISE_VALUE = 19; BATTLE_OP_SET_BUFF_ENABLE_STATE = 20; } enum MODIFY_POISE_VALUE_TYPE { MODIFY_POISE_VALUE_TYPE_NONE = 0; MODIFY_POISE_VALUE_TYPE_RESET = 1; MODIFY_POISE_VALUE_TYPE_POISE_DAMAGE = 2; MODIFY_POISE_VALUE_TYPE_POISE_HEAL = 3; MODIFY_POISE_VALUE_TYPE_MAX_VALUE_CHANGE = 4; } enum BATTLE_UPDATE_ATB_INFO_REASON { BATTLE_UPDATE_ATB_INFO_REASON_NONE = 0; BATTLE_UPDATE_ATB_INFO_REASON_CHANGE_RECOVERY_SPEED = 1; BATTLE_UPDATE_ATB_INFO_REASON_ADD_VALUE = 2; BATTLE_UPDATE_ATB_INFO_REASON_SYNC_CUR_VALUE = 3; BATTLE_UPDATE_ATB_INFO_REASON_GM = 4; } enum BATTLE_SKILL_SOURCE { BATTLE_SKILL_SOURCE_DEFAULT = 0; BATTLE_SKILL_SOURCE_MODE = 1; BATTLE_SKILL_SOURCE_WEAPON = 2; BATTLE_SKILL_SOURCE_EQUIP_SUIT = 3; BATTLE_SKILL_SOURCE_OTHER = 4; BATTLE_SKILL_SOURCE_INTERACTIVE = 5; BATTLE_SKILL_SOURCE_SUMMON = 6; BATTLE_SKILL_SOURCE_PLUNGING_ATTACK = 7; BATTLE_SKILL_SOURCE_POWER_ATTACK = 8; BATTLE_SKILL_SOURCE_TALENT_POTENTIAL = 9; BATTLE_SKILL_SOURCE_CHAR_COMMON = 10; BATTLE_SKILL_SOURCE_CLIENT_TEMP_ADD = 11; } enum BATTLE_TRIGGER_TYPE { BATTLE_TRIGGER_TYPE_EXECUTE = 0; BATTLE_TRIGGER_TYPE_TICK = 1; BATTLE_TRIGGER_TYPE_END = 2; } enum BATTLE_ACTION_OWNER_TYPE { BATTLE_ACTION_OWNER_TYPE_NONE = 0; BATTLE_ACTION_OWNER_TYPE_BUFF = 1; BATTLE_ACTION_OWNER_TYPE_SKILL = 2; BATTLE_ACTION_OWNER_TYPE_STANDALONE = 3; } enum SKILL_COST_TYPE { SKILL_COST_ULT_SP = 0; SKILL_COST_ATB = 1; } enum DamageDecorateType { PoiseBreak = 0; PowerAttack = 2; FireAbnormalInitial = 3; PulseAbnormalInitial = 4; CrystAbnormalInitial = 5; IgniteByMud = 6; NormalAttack = 7; NormalSkill = 8; UltimateSkill = 9; PlungingAttack = 10; NormalAttackEffect = 11; CanBreakWeakness = 12; ComboSkill = 13; Crush = 14; Airborne = 15; KnockDown = 16; DashAttack = 17; IgnoreDodgeImmune = 18; IgnoreSkillImmune = 19; NaturalAbnormalInitial = 20; NormalAttackLastCombo = 21; FireBurst = 22; CrystBurst = 23; PulseBurst = 24; NaturalBurst = 25; Burning = 26; Shatter = 27; Dot = 28; RemainArea = 29; Fracture = 30; } enum ATK_CALCULATION_TYPE { ATK_SCALE = 0; DEFINITE_VALUE = 1; MULTIPLY_ATTRIBUTE = 2; BREAKING_ATK_CALC = 3; PRIMARY_ATTR_CALC = 4; } enum DAMAGE_PROCESSOR_TYPE { ATTACKER_CRIT_RATE = 0; ATTACKER_ATK = 1; ATTACKER_CRIT_DAMAGE = 2; ATTACKER_PEN = 3; DAMAGE_SCALE = 4; DEFENDER_DEF = 5; MODIFY_CALCULATE_RESULT = 6; INSTANT_MODIFY_ATTRIBUTE = 7; PROCESSOR_TYPE_NONE = 999; } enum HEAL_PROCESSOR_TYPE { HEAL_PROCESSOR_EMPTY_TYPE = 0; HEAL_MODIFY_RESULT = 1; HEAL_INSTANT_MODIFY_ATTRIBUTE = 2; } enum SERVER_BATTLE_ACTION_TYPE { BATTLE_ACTION_NONE = 0; BATTLE_ACTION_DAMAGE = 1; BATTLE_ACTION_CREATE_BUFF = 2; BATTLE_ACTION_FINISH_BUFF = 3; BATTLE_ACTION_GAIN_COST = 4; BATTLE_ACTION_HEAL = 5; BATTLE_ACTION_SWITCH_MODE = 6; BATTLE_ACTION_MODIFY_DYNAMIC_BLACKBOARD = 7; BATTLE_ACTION_SPAWN_ENEMY = 8; BATTLE_ACTION_CHECK_DAMAGE_TYPE = 9; BATTLE_ACTION_CHECK_DAMAGE_DECORATE_MASK = 10; BATTLE_ACTION_CHECK_DISTANCE_CONDITION = 11; BATTLE_ACTION_CHECK_ENTITY_NUM = 12; BATTLE_ACTION_CHECK_HP = 13; BATTLE_ACTION_CHECK_IS_CRITICAL_DAMAGE = 14; BATTLE_ACTION_CHECK_MAIN_CHARACTER = 15; BATTLE_ACTION_CHECK_OBJECT_TYPE_MATCH = 16; BATTLE_ACTION_CHECK_SKILL_TYPE = 17; BATTLE_ACTION_CHECK_SQUAD_IN_FIGHT = 18; BATTLE_ACTION_CHECK_TAG_MATCH = 19; BATTLE_ACTION_CHECK_TARGET_ANGLE = 20; BATTLE_ACTION_COMPARE_FLOAT = 21; BATTLE_ACTION_PROBABILITY = 22; BATTLE_ACTION_LAUNCH_PROJECTILE = 23; BATTLE_ACTION_SPAWN_ABILITY_ENTITY = 24; BATTLE_ACTION_IF_ELSE = 25; BATTLE_ACTION_FOR_EACH = 26; BATTLE_ACTION_AURA = 27; BATTLE_ACTION_SPAWN_CUSTOM_SUMMON = 28; BATTLE_ACTION_CHANNELING = 29; BATTLE_ACTION_STORE_ATTRIBUTE_VALUE = 30; BATTLE_ACTION_REFRESH_BUFF_ATTR_MODIFIER_VALUE = 31; BATTLE_ACTION_SET_BLACKBOARD_FROM_PRESET = 32; BATTLE_ACTION_MODIFY_PART_DAMAGE_TRANSFER_RATIO = 33; BATTLE_ACTION_MODIFY_ENABLE_PART = 34; BATTLE_ACTION_READ_SKILL_ACTION_TO_BB = 35; BATTLE_ACTION_SIMPLE_CALC_BB = 36; BATTLE_ACTION_MULTI_MODIFY_BB = 37; } message TEMPLATE_ID { BATTLE_ACTION_OWNER_TYPE type = 3; oneof id_impl { string str_id = 1; int32 int_id = 2; } } message BATTLE_CLIENT_DATA { repeated BATTLE_CLIENT_OP_DATA op_list = 1; } message BATTLE_OP_MODIFY_POISE_VALUE_OP_DATA { MODIFY_POISE_VALUE_TYPE modify_type = 1; TEMPLATE_ID template_id = 2; TEMPLATE_ID original_source_template_id = 3; BATTLE_ACTION_OWNER_TYPE owner_type = 4; double value = 5; double cur_poise_value = 6; uint64 attacker_inst_id = 8; int32 action_id = 9; BATTLE_REPORT_INFO battle_report_info = 10; } message BATTLE_REPORT_INFO { repeated ATTR_MODIFY_INFO attacker_attr_modify_info = 1; repeated ATTR_MODIFY_INFO defender_attr_modify_info = 2; } message BATTLE_OP_SET_BUFF_ENABLE_STATE_OP_DATA { map buff_inst_id_to_enable_state = 1; } message ATTR_MODIFY_INFO { int32 attr_type = 1; repeated double attrs = 2; } message BATTLE_OP_MODIFY_BATTLE_STATE_OP_DATA { bool is_in_battle = 1; } message BATTLE_UPDATE_ATB_INFO_OP_DATA { BATTLE_ATB_DATA atb_data = 1; TEMPLATE_ID template_id = 2; TEMPLATE_ID original_source_template_id = 3; double delta_value = 4; } message BATTLE_ATB_DATA { double atb_value = 1; double atb_recovery_speed = 2; int64 client_tick_ts = 3; BATTLE_UPDATE_ATB_INFO_REASON reason = 4; } message BATTLE_ADD_BUFF_OP_DATA { uint64 src_inst_id = 1; uint64 target_inst_id = 2; TEMPLATE_ID buff_id = 3; uint64 buff_inst_id = 4; int64 client_add_ts = 5; BATTLE_BLACKBOARD assigned_items = 6; int32 buff_src_type = 7; string buff_src_args = 8; } message BATTLE_FINISH_BUFF_OP_DATA { uint64 buff_inst_id = 1; int32 reduce_layer = 2; bool force = 3; } message BATTLE_SKILL_ATTACH_OP_DATA { uint64 src_inst_id = 1; TEMPLATE_ID skill_id = 2; int32 skill_lv = 3; BATTLE_SKILL_SOURCE skill_source = 4; uint64 skill_inst_id = 5; } message BATTLE_SKILL_DETACH_OP_DATA { uint64 skill_inst_id = 1; } message BATTLE_SKILL_ENABLE_OP_DATA { uint64 skill_inst_id = 1; bool is_enable = 2; } message BATTLE_SKILL_START_CAST_OP_DATA { uint64 inst_id = 1; BATTLE_TARGET_HANDLE target = 2; BATTLE_ATB_DATA atb_data = 3; } message BATTLE_SKILL_END_CAST_OP_DATA { uint64 inst_id = 1; } message BATTLE_SWITCH_MODE_OP_DATA { uint32 mode_inst_id = 1; string mode_id = 2; int32 mode_change_type = 3; bool is_enable = 4; } message BATTLE_TRIGGER_ACTION_OP_DATA { uint64 owner_id = 1; uint64 inst_id = 2; TEMPLATE_ID template_id = 3; BATTLE_ACTION_INST action = 5; BATTLE_TRIGGER_TYPE trigger_type = 6; BATTLE_ACTION_OWNER_TYPE owner_type = 7; } message BATTLE_ENTITY_DIE_OP_DATA { uint64 entity_inst_id = 1; int32 scene_num_id = 2; bool disable_anti_cheat = 3; } message BATTLE_ENTITY_VALUE_MODIFY_DATA { uint64 entity_inst_id = 1; int32 scene_num_id = 2; BATTLE_INFO value = 3; int32 source = 4; TEMPLATE_ID template_id = 5; TEMPLATE_ID original_source_template_id = 6; double delta_value = 7; } message BATTLE_RESET_BATTLE_DATA_OP_DATA { } message BATTLE_UPDATE_DATA_VERSION_OP_DATA { string client_data_version = 1; int32 proto_version = 2; } message BATTLE_SHIELD_VALUE_MODIFY_OP_DATA { uint64 buff_inst_id = 1; double shield_value = 2; } message BATTLE_TRIGGER_KEYWORD_OP_DATA { uint64 buff_inst_id = 1; int32 add_buff_num_id = 2; repeated BATTLE_TRIGGER_KEYWORD_MODIFY_DATA modify = 3; } message BATTLE_TRIGGER_KEYWORD_MODIFY_DATA { int32 config_index = 1; double modify_value = 2; } message BATTLE_CLIENT_OP_DATA { uint64 owner_id = 1; BATTLE_ACTION_OPERATE_TYPE op_type = 2; uint32 generation = 3; int32 chapter_map_id = 4; int32 seq_id = 5; int64 client_tick_tms = 6; oneof op_data_impl { BATTLE_ADD_BUFF_OP_DATA add_buff_op_data = 101; BATTLE_FINISH_BUFF_OP_DATA finish_buff_op_data = 102; BATTLE_SKILL_ATTACH_OP_DATA skill_attach_op_data = 103; BATTLE_SKILL_DETACH_OP_DATA skill_detach_op_data = 104; BATTLE_SKILL_ENABLE_OP_DATA skill_enable_op_data = 105; BATTLE_SKILL_START_CAST_OP_DATA skill_start_cast_op_data = 106; BATTLE_SKILL_END_CAST_OP_DATA skill_end_cast_op_data = 107; BATTLE_SWITCH_MODE_OP_DATA skill_switch_mode_op_data = 108; BATTLE_TRIGGER_ACTION_OP_DATA trigger_action_op_data = 109; BATTLE_ENTITY_DIE_OP_DATA entity_die_op_data = 110; BATTLE_ENTITY_VALUE_MODIFY_DATA entity_value_modify_data = 111; BATTLE_RESET_BATTLE_DATA_OP_DATA reset_battle_op_data = 112; BATTLE_UPDATE_DATA_VERSION_OP_DATA update_data_version_op_data = 113; BATTLE_TRIGGER_KEYWORD_OP_DATA trigger_keyword_op_data = 114; BATTLE_SHIELD_VALUE_MODIFY_OP_DATA shield_value_modify_op_data = 115; BATTLE_UPDATE_ATB_INFO_OP_DATA update_atb_info_op_data = 116; BATTLE_OP_MODIFY_BATTLE_STATE_OP_DATA modify_battle_state_op_data = 117; BATTLE_OP_MODIFY_POISE_VALUE_OP_DATA modify_poise_value_op_data = 118; BATTLE_OP_SET_BUFF_ENABLE_STATE_OP_DATA set_buff_enable_state_op_data = 119; } } message BATTLE_ACTION_INST { int32 action_id = 1; SERVER_BATTLE_ACTION_TYPE action_type = 2; oneof inst_impl { BATTLE_DAMAGE_ACTION_RUNTIME damage_action = 3; BATTLE_CREATE_BUFF_ACTION_RUNTIME create_buff_action = 4; BATTLE_FINISH_BUFF_ACTION_RUNTIME finish_buff_action = 5; BATTLE_GAIN_COST_ACTION_RUNTIME gain_cost_action = 6; BATTLE_HEAL_ACTION_RUNTIME heal_action = 7; BATTLE_SWITCH_MODE_ACTION_RUNTIME switch_mode_action = 8; BATTLE_MODIFY_DYNAMIC_BLACKBOARD_ACTION_RUNTIME modify_dynamic_blackboard_action = 9; BATTLE_SPAWN_ENEMY_ACTION_RUNTIME spawn_enemy_action = 10; BATTLE_LAUNCH_PROJECTILE_ACTION_RUNTIME launch_projectile_action = 25; BATTLE_SPAWN_ABILITY_ENTITY_ACTION_RUNTIME spawn_ability_entity_action = 26; BATTLE_SPAWN_CUSTOM_SUMMON_ACTION_RUNTIME spawn_custom_summon_action = 27; BATTLE_REFRESH_BUFF_ATTR_MODIFIER_VALUE_ACTION_RUNTIME refresh_buff_attr_modifier_value_action = 28; BATTLE_STORE_ATTRIBUTE_VALUE_ACTION_RUNTIME store_attribute_value_action = 29; BATTLE_SET_BLACKBOARD_FROM_PRESET_RUNTIME set_blackboard_from_preset_action = 30; BATTLE_MODIFY_PART_DAMAGE_TRANSFER_RATIO_ACTION_RUNTIME modify_part_damage_transfer_ratio_action = 31; BATTLE_MODIFY_ENABLE_PART_ACTION_RUNTIME enable_part_action = 32; BATTLE_READ_SKILL_SETTING_TO_BB_ACTION_RUNTIME read_skill_setting_to_bb_action = 33; BATTLE_SIMPLE_CALC_BB_ACTION_RUNTIME simple_calc_bb_action = 34; BATTLE_ACTION_MULTI_MODIFY_BB_ACTION_RUNTIME multi_modify_bb_action = 35; EMPTY_BATTLE_ACTION empty_action = 999; } } message EMPTY_BATTLE_ACTION { } message BUFF_RES { string buff_id = 1; int32 life_type = 2; repeated BATTLE_ATTR_MODIFIER attr_modifiers = 3; repeated BUFF_DAMAGE_MODIFIER_RES damage_modifiers = 4; repeated BUFF_HEAL_MODIFIER_RES heal_modifiers = 5; BATTLE_BLACKBOARD blackboard = 6; map action_map = 7; repeated int32 apply_tags = 8; BUFF_STACKING_SETTINGS stacking_settings = 9; BATTLE_BLACKBOARD_FLOAT duration = 10; bool remove_on_repatriate = 11; bool ignore_immune_check = 12; uint32 spell_infliction_type = 13; uint32 physical_infliction_type = 14; uint32 spell_burst_type = 15; BUFF_SHIELD_SETTINGS shield_settings = 16; string stacking_id = 101; int32 stacking_type = 102; int32 max_stack_cnt = 103; double priority = 104; string priority_key = 105; string max_stack_cnt_key = 106; } message BUFF_STACKING_SETTINGS { int32 identifier_type = 1; int32 stacking_type = 2; string stacking_key = 3; string priority_key = 4; double priority = 5; int32 max_stack_cnt = 6; bool is_ascending_order = 7; string max_stack_cnt_key = 8; } message BUFF_SHIELD_SETTINGS { bool infinite_shield = 1; bool absorb_all_damage_when_shield_exhausted = 2; bool finish_buff_when_shield_exhausted = 3; BATTLE_BLACKBOARD_FLOAT max_absorption_count = 4; map dmg_type_info = 5; } message SHIELD_ABSORB_INFO { BATTLE_BLACKBOARD_FLOAT dmg_absorption_rate = 1; BATTLE_BLACKBOARD_FLOAT dmg_to_shield_ratio = 2; } message SKILL_COST_DATA { SKILL_COST_TYPE cost_type = 1; float cost_value = 2; } message SKILL_RES { string skill_id = 1; SKILL_COST_TYPE cost_type = 2; int32 skill_lv = 3; float cost_value = 4; repeated int32 tag_during_attach = 5; BATTLE_BLACKBOARD blackboard = 6; map action_map = 7; bool is_passive = 8; repeated BATTLE_ATTR_MODIFIER attr_modifiers = 9; int32 skill_type = 11; } message BUFF_DAMAGE_MODIFIER_RES { int32 enable_side = 1; int32 index = 2; repeated BATTLE_ACTION_RES cond_actions = 3; repeated BATTLE_DAMAGE_PROCESSOR damage_processors = 4; } message BUFF_HEAL_MODIFIER_RES { int32 enable_side = 1; int32 index = 2; repeated BATTLE_ACTION_RES cond_actions = 3; repeated BATTLE_HEAL_PROCESSOR heal_processors = 4; } message BUFF_INPUT { string buff_id = 1; bool assign_blackboard = 2; repeated BATTLE_BLACKBOARD_ASSIGN_ITEM assigned_items = 3; bool read_id_from_blackboard = 4; KEYWORD_CONFIG_RES keyword_config = 5; } message ENTITY_BATTLE_BLACKBOARD_DATA { string id = 1; BATTLE_BLACKBOARD blackboard = 2; } message BATTLE_BLACKBOARD { map blackboard = 1; } message BATTLE_BLACKBOARD_DATA { string str_value = 1; double float_value = 2; bool is_dynamic = 3; } message BATTLE_TARGET_WRAPPER { uint64 target_id = 1; VECTOR target_pos = 2; } message BATTLE_TARGET_HANDLE { repeated BATTLE_TARGET_WRAPPER targets = 1; } message BATTLE_BLACKBOARD_ASSIGN_ITEM { string target_key = 1; string input_value_key = 2; bool use_direct_value = 3; float numeric_value = 4; string string_value = 5; } message BATTLE_ATTR_MODIFIER { int32 modify_attr_type = 1; int32 attr_type = 2; int32 formula_item = 3; BATTLE_BLACKBOARD_FLOAT param = 4; } message BATTLE_BLACKBOARD_FLOAT { bool use_blackboard_key = 1; string blackboard_key = 2; double default_value = 3; } message BATTLE_BLACKBOARD_STRING { bool use_blackboard_key = 1; string blackboard_key = 2; string default_value = 3; } message BATTLE_STANDALONE_ACTION_RES { string template_id = 1; map action_map = 2; } message BATTLE_ACTION_RES { int32 action_id = 1; SERVER_BATTLE_ACTION_TYPE action_type = 2; oneof inst_impl { BATTLE_DAMAGE_ACTION_DATA damage_action = 3; BATTLE_CREATE_BUFF_ACTION_DATA create_buff_action = 4; BATTLE_FINISH_BUFF_ACTION_DATA finish_buff_action = 5; BATTLE_GAIN_COST_ACTION_DATA gain_cost_action = 6; BATTLE_HEAL_ACTION_DATA heal_action = 7; BATTLE_SWITCH_MODE_ACTION_DATA switch_mode_action = 8; BATTLE_MODIFY_DYNAMIC_BLACKBOARD_ACTION_DATA modify_dynamic_blackboard_action = 9; BATTLE_SPAWN_ENEMY_ACTION_DATA spawn_enemy_action = 10; BATTLE_LAUNCH_PROJECTILE_ACTION_DATA launch_projectile_action = 25; BATTLE_SPAWN_ABILITY_ENTITY_ACTION_DATA spawn_ability_entity_action = 26; BATTLE_SPAWN_CUSTOM_SUMMON_ACTION_DATA spawn_custom_summon_action = 27; BATTLE_REFRESH_BUFF_ATTR_MODIFIER_VALUE_ACTION_DATA refresh_buff_attr_modifier_value_action = 28; BATTLE_STORE_ATTRIBUTE_VALUE_ACTION_DATA store_attribute_value_action = 29; BATTLE_SET_BLACKBOARD_FROM_PRESET_DATA set_blackboard_from_preset_action = 30; BATTLE_MODIFY_PART_DAMAGE_TRANSFER_RATIO_ACTION_DATA modify_part_damage_transfer_ratio_action = 31; BATTLE_MODIFY_ENABLE_PART_ACTION_DATA enable_part_action = 32; BATTLE_READ_SKILL_SETTING_TO_BB_ACTION_DATA read_skill_setting_to_bb_action = 33; BATTLE_SIMPLE_CALC_BB_ACTION_DATA calc_bb_action = 34; BATTLE_ACTION_MULTI_MODIFY_BB_ACTION_DATA multi_modify_bb_action = 35; BATTLE_ACTION_EMPTY_RES empty_res = 999; } } message BATTLE_ACTION_EMPTY_RES { } message BATTLE_ACTION_TARGET_SETTING { int32 target_source = 1; string target_group_key = 2; } message BATTLE_DAMAGE_ATK_CALCULATION { ATK_CALCULATION_TYPE type = 1; oneof calculation_impl { ATK_SCALE_CALCULATION atk_scale_calculation = 2; DEFINITE_VALUE_CALCULATION definite_value_calculation = 3; MULTIPLY_ATTRIBUTE_CALCULATION multiply_attribute_calculation = 4; BREAKING_ATTACK_CALCULATION breaking_attack_calculation = 5; PRIMARY_ATTR_CALCULATION primary_attr_calculation = 6; } } message DEV_BATTLE_CALCULATION_RUNTIME_ARGS { oneof calculation_args { SIMPLE_CALC_RUNTIME_ARGS simple_calc_runtime_args = 100; ATK_SCALE_CALCULATION_RUNTIME_ARGS atk_scale_calculation_runtime_args = 101; DEFINITE_VALUE_CALCULATION_RUNTIME_ARGS definite_value_calculation_runtime_args = 102; MULTIPLY_ATTRIBUTE_CALCULATION_RUNTIME_ARGS multiply_attribute_calculation_runtime_args = 103; BREAKING_ATTACK_CALCULATION_RUNTIME_ARGS breaking_attack_calculation_runtime_args = 104; PRIMARY_ATTR_CALCULATION_RUNTIME_ARGS primary_attr_calculation_runtime_args = 105; } } message SIMPLE_CALC_RUNTIME_ARGS { double client_atk_scale = 1; double client_atk_value = 2; } message ATK_SCALE_CALCULATION { ATK_CALCULATION_TYPE type = 1; BATTLE_BLACKBOARD_FLOAT atk_scale = 2; } message ATK_SCALE_CALCULATION_RUNTIME_ARGS { double client_atk_scale = 1; double client_atk_value = 2; } message DEFINITE_VALUE_CALCULATION { ATK_CALCULATION_TYPE type = 1; BATTLE_BLACKBOARD_FLOAT definite_value = 2; bool apply_scale = 3; BATTLE_BLACKBOARD_FLOAT value_scale = 4; } message DEFINITE_VALUE_CALCULATION_RUNTIME_ARGS { double client_definite_value = 1; double client_value_scale = 2; } message MULTIPLY_ATTRIBUTE_CALCULATION { ATK_CALCULATION_TYPE type = 1; int32 value_source = 2; int32 attr_type = 3; BATTLE_BLACKBOARD_FLOAT multiplier = 4; BATTLE_BLACKBOARD_FLOAT add_value = 5; } message MULTIPLY_ATTRIBUTE_CALCULATION_RUNTIME_ARGS { double client_multiplier = 1; double client_add_value = 2; double client_value = 3; } message BREAKING_ATTACK_CALCULATION { ATK_CALCULATION_TYPE type = 1; BATTLE_BLACKBOARD_FLOAT atk_scale = 2; BATTLE_BLACKBOARD_FLOAT multiplier = 3; } message BREAKING_ATTACK_CALCULATION_RUNTIME_ARGS { double client_atk_scale = 1; double client_multiplier = 2; double client_attacker_atk = 3; double client_defender_breaking_attack_dmg_taken_scalar = 4; } message PRIMARY_ATTR_CALCULATION { int32 value_source = 1; int32 attr_type = 2; bool apply_scale = 3; BATTLE_BLACKBOARD_FLOAT value_scale = 4; } message PRIMARY_ATTR_CALCULATION_RUNTIME_ARGS { double client_attr_value = 1; double client_value_scale = 2; } message BATTLE_HEAL_PROCESSOR { HEAL_PROCESSOR_TYPE type = 1; oneof processor_impl { HEAL_PROCESSOR_EMPTY heal_processor_empty = 2; BATTLE_MODIFY_HEAL_CALC_RESULT heal_modify_calc_result = 3; INSTANT_MODIFY_ATTRIBUTE_FOR_HEAL_PROCESSOR instant_modify_attribute_for_heal_processor = 4; } } message HEAL_PROCESSOR_EMPTY { } message BATTLE_MODIFY_HEAL_CALC_RESULT { int32 modify_type = 1; BATTLE_BLACKBOARD_FLOAT multiplier = 2; BATTLE_BLACKBOARD_FLOAT multiplier_cnt = 3; } message INSTANT_MODIFY_ATTRIBUTE_FOR_HEAL_PROCESSOR { HEAL_PROCESSOR_TYPE type = 1; int32 target_side = 2; BATTLE_ATTR_MODIFIER attr_modifier = 3; } message BATTLE_DAMAGE_PROCESSOR { DAMAGE_PROCESSOR_TYPE type = 1; oneof processor_impl { ATTACKER_CRIT_RATE_PROCESSOR attacker_crit_rate_processor = 2; ATTACKER_ATK_PROCESSOR attacker_atk_processor = 3; ATTACKER_CRIT_DAMAGE_PROCESSOR attacker_crit_damage_processor = 4; ATTACKER_PEN_PROCESSOR attacker_pen_processor = 5; DAMAGE_SCALE_PROCESSOR damage_scale_processor = 6; DEFENDER_DEF_PROCESSOR defender_def_processor = 7; MODIFY_CALCULATE_RESULT_PROCESSOR modify_calulate_result_processor = 8; INSTANT_MODIFY_ATTRIBUTE_PROCESSOR instant_modify_attribute_processor = 9; } } message ATTACKER_CRIT_RATE_PROCESSOR { DAMAGE_PROCESSOR_TYPE type = 1; BATTLE_BLACKBOARD_FLOAT addition = 2; } message ATTACKER_ATK_PROCESSOR { DAMAGE_PROCESSOR_TYPE type = 1; BATTLE_BLACKBOARD_FLOAT scale = 2; } message ATTACKER_CRIT_DAMAGE_PROCESSOR { DAMAGE_PROCESSOR_TYPE type = 1; BATTLE_BLACKBOARD_FLOAT scale = 2; } message ATTACKER_PEN_PROCESSOR { DAMAGE_PROCESSOR_TYPE type = 1; BATTLE_BLACKBOARD_FLOAT scale = 2; } message DAMAGE_SCALE_PROCESSOR { DAMAGE_PROCESSOR_TYPE type = 1; int32 damage_scale_side = 2; string zone_name = 3; BATTLE_BLACKBOARD_FLOAT addition = 4; } message DEFENDER_DEF_PROCESSOR { DAMAGE_PROCESSOR_TYPE type = 1; BATTLE_BLACKBOARD_FLOAT multiplier = 2; } message MODIFY_CALCULATE_RESULT_PROCESSOR { DAMAGE_PROCESSOR_TYPE type = 1; int32 cal_type = 2; BATTLE_BLACKBOARD_FLOAT base_multiplier = 3; BATTLE_BLACKBOARD_FLOAT multiplier_cnt = 4; } message INSTANT_MODIFY_ATTRIBUTE_PROCESSOR { DAMAGE_PROCESSOR_TYPE type = 1; int32 target_side = 2; BATTLE_ATTR_MODIFIER attr_modifier = 3; } message GAMEPLAY_TAG_QUERY { int32 query_type = 1; repeated int32 tag_ids = 2; } message BATTLE_ACTION_DAMAGE_UNIT { int32 damage_type = 1; int32 damage_attribute_type = 2; int32 damage_decorate_mask = 3; bool simple_calculation = 4; BATTLE_BLACKBOARD_FLOAT atk_scale = 5; BATTLE_DAMAGE_ATK_CALCULATION atk_calculation = 6; repeated BATTLE_DAMAGE_PROCESSOR damage_processors = 7; bool gain_cost = 8; repeated SKILL_COST_DATA cost_data = 9; bool reduce_damage_for_guard = 10; float reduce_damage_for_guard_ratio = 11; } message BATTLE_ACTION_MULTI_MODIFY_BB_ACTION_DATA { repeated string keys = 1; } message BATTLE_ACTION_MULTI_MODIFY_BB_ACTION_RUNTIME { string key = 1; double value = 2; } message BATTLE_SIMPLE_CALC_BB_ACTION_DATA { BATTLE_BLACKBOARD_FLOAT value_a = 1; BATTLE_BLACKBOARD_FLOAT value_b = 2; BATTLE_BLACKBOARD_STRING target_key = 3; int32 modify_type = 4; } message BATTLE_SIMPLE_CALC_BB_ACTION_RUNTIME { double client_value_a = 1; double client_value_b = 2; string client_target_key = 3; double client_final_value = 4; } message BATTLE_READ_SKILL_SETTING_TO_BB_ACTION_DATA { repeated BATTLE_READ_SKILL_SETTING_TO_BB_ACTION_DATA_DETAIL configs = 1; } message BATTLE_READ_SKILL_SETTING_TO_BB_ACTION_DATA_DETAIL { string data_key = 1; string store_key = 2; BATTLE_BLACKBOARD_FLOAT layer_key = 3; } message BATTLE_READ_SKILL_SETTING_TO_BB_ACTION_RUNTIME { repeated BATTLE_READ_SKILL_SETTING_TO_BB_ACTION_RUNTIME_DETAIL runtime_details = 1; } message BATTLE_READ_SKILL_SETTING_TO_BB_ACTION_RUNTIME_DETAIL { int32 client_layer_cnt = 1; double client_value = 2; double enhance_attr_value = 3; uint64 attacker_battle_inst_id = 4; } message BATTLE_MODIFY_PART_DAMAGE_TRANSFER_RATIO_ACTION_DATA { BATTLE_BLACKBOARD_FLOAT ratio = 1; bool reset_on_end = 2; } message BATTLE_MODIFY_PART_DAMAGE_TRANSFER_RATIO_ACTION_RUNTIME { uint64 main_body_inst_id = 1; repeated uint64 part_inst_ids = 2; float client_ratio = 3; } message BATTLE_MODIFY_ENABLE_PART_ACTION_DATA { bool enable_when_execute = 1; bool reset_on_end = 2; bool modify_hp_on_enable = 3; int32 modify_type = 4; BATTLE_BLACKBOARD_FLOAT value = 5; bool clear_all_buff_on_disable = 6; } message BATTLE_MODIFY_ENABLE_PART_ACTION_RUNTIME { uint64 main_body_inst_id = 1; map part_inst_id_to_hp = 2; } message BATTLE_SET_BLACKBOARD_FROM_PRESET_DATA { repeated string valid_values = 1; string key = 2; bool skip_check = 3; } message BATTLE_SET_BLACKBOARD_FROM_PRESET_RUNTIME { string modified_value = 1; } message BATTLE_REFRESH_BUFF_ATTR_MODIFIER_VALUE_ACTION_DATA { } message BATTLE_REFRESH_BUFF_ATTR_MODIFIER_VALUE_ACTION_RUNTIME { } message BATTLE_STORE_ATTRIBUTE_VALUE_ACTION_DATA { string key = 1; } message BATTLE_STORE_ATTRIBUTE_VALUE_ACTION_RUNTIME { float value = 1; } message BATTLE_DAMAGE_ACTION_DATA { BATTLE_ACTION_TARGET_SETTING target = 1; int32 attacker_type = 2; repeated BATTLE_ACTION_DAMAGE_UNIT damage_unit = 3; bool is_cache_damage = 4; } message BATTLE_DAMAGE_ACTION_RUNTIME { uint64 attacker_id = 1; repeated BATTLE_DAMAGE_DETAIL details = 2; TEMPLATE_ID original_source_template_id = 3; } message BATTLE_DAMAGE_DETAIL { uint64 target_id = 1; int32 damage_unit_index = 2; bool is_crit = 3; double value = 4; BATTLE_DAMAGE_MODIFIER_ARGS modifier_args = 5; double cur_hp = 6; uint64 part_inst_id = 7; repeated DAMAGE_ABSORB_INFO damage_absorb_info = 8; BATTLE_REPORT_INFO battle_report_info = 9; DEV_BATTLE_CALCULATION_RUNTIME_ARGS calculation_check_args = 10; map processor_debug_args = 11; DEV_BATTLE_CALCULATE_DAMAGE_RUNTIME_ARGS calculate_damage_check_args = 12; CLIENT_ATTR_MODIFIER_DEBUG_DATA attacker_attr_modifier_debug_data = 13; CLIENT_ATTR_MODIFIER_DEBUG_DATA defender_attr_modifier_debug_data = 14; } message DAMAGE_ABSORB_INFO { uint64 buff_inst_id = 1; double remain_shield_value = 2; double remain_damage_value = 3; int32 remain_absorption_count = 4; } message BATTLE_DAMAGE_MODIFIER_ARGS { uint64 attacker_id = 1; uint64 defender_id = 2; repeated BATTLE_MODIFIER_HANDLE attacker_modifiers = 3; repeated BATTLE_MODIFIER_HANDLE defender_modifiers = 4; } message BATTLE_MODIFIER_HANDLE { uint64 buff_inst_id = 1; int32 index = 2; map processor_debug_args = 3; } message BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM { oneof processor_args { EMPTY_BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM empty_processor_args = 100; BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM_MODIFY_CALCULATE_RESULT modify_calculate_result_processor_args = 101; BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM_INSTANT_MODIFY_ATTRIBUTE instant_modify_attribute_processor_args = 102; BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM_DAMAGE_SCALE damage_scale_processor_args = 103; BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM_HEAL_MODIFY_RESULT heal_modify_result_processor_args = 201; BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM_HEAL_INSTANT_MODIFY_ATTRIBUTE heal_instant_modify_attribute_processor_args = 202; } } message EMPTY_BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM { } message BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM_MODIFY_CALCULATE_RESULT { double client_base_modifier = 1; double client_multiplier_cnt = 2; double client_val_before_modify = 3; } message BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM_INSTANT_MODIFY_ATTRIBUTE { double client_value = 1; CLIENT_ATTR_MODIFIER_DEBUG_DATA attr_modifier_debug_data = 2; } message BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM_DAMAGE_SCALE { double client_value = 1; } message BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM_HEAL_MODIFY_RESULT { double client_base_modifier = 1; double client_multiplier_cnt = 2; double client_val_before_modify = 3; } message BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM_HEAL_INSTANT_MODIFY_ATTRIBUTE { double client_value = 1; CLIENT_ATTR_MODIFIER_DEBUG_DATA attr_modifier_debug_data = 2; } message BATTLE_CREATE_BUFF_ACTION_DATA { repeated BUFF_INPUT buff_input = 1; BATTLE_BLACKBOARD_FLOAT count = 2; BATTLE_ACTION_TARGET_SETTING target = 3; int32 buff_source_type = 4; bool auto_finish_by_action = 5; } message BATTLE_CREATE_BUFF_ACTION_RUNTIME { repeated BATTLE_CREATE_BUFF_ACTION_DETAIL details = 2; } message BATTLE_CREATE_BUFF_ACTION_DETAIL { uint64 source_id = 1; uint64 target_id = 2; uint64 buff_inst_id = 3; int32 buff_input_index = 4; repeated BATTLE_BLACKBOARD_ASSIGN_ITEM assigned_items = 5; int32 buff_num_id = 6; string buff_id = 7; } message KEYWORD_CONFIG_RES { repeated KEYWORD_CONFIG_DATA keyword_configs = 1; } message KEYWORD_CONFIG_DATA { repeated string interesting_buff_ids = 1; int32 calc_type = 2; string modify_key = 3; BATTLE_BLACKBOARD_FLOAT value = 4; } message BATTLE_FINISH_BUFF_ACTION_DATA { BATTLE_ACTION_TARGET_SETTING buff_owner = 1; repeated string buff_ids = 2; bool finish_all_buff = 3; BATTLE_BLACKBOARD_FLOAT finish_layer_cnt = 4; bool ignore_check = 5; } message BATTLE_FINISH_BUFF_ACTION_RUNTIME { repeated BATTLE_FINISH_BUFF_ACTION_DETAIL finish_buffs = 1; int32 finish_layer_cnt = 2; } message BATTLE_FINISH_BUFF_ACTION_DETAIL { uint64 target_id = 1; uint64 buff_inst_id = 2; } message BATTLE_GAIN_COST_ACTION_DATA { SKILL_COST_DATA cost_data = 2; } message BATTLE_GAIN_COST_ACTION_RUNTIME { uint64 source_id = 1; uint64 target_id = 2; double final_value = 3; } message BATTLE_HEAL_ACTION_DATA { int32 heal_type = 1; BATTLE_DAMAGE_ATK_CALCULATION heal_calculation = 2; } message BATTLE_HEAL_ACTION_RUNTIME { repeated BATTLE_HEAL_ACTION_DETAIL details = 1; TEMPLATE_ID original_source_template_id = 2; } message BATTLE_HEAL_ACTION_DETAIL { uint64 source_id = 1; uint64 target_id = 2; double value = 3; BATTLE_HEAL_MODIFIER_ARGS modifier_args = 4; double cur_hp = 5; BATTLE_REPORT_INFO battle_report_info = 6; DEV_BATTLE_CALCULATION_RUNTIME_ARGS calculation_check_args = 10; CLIENT_ATTR_MODIFIER_DEBUG_DATA healer_attr_modifier_debug_data = 11; CLIENT_ATTR_MODIFIER_DEBUG_DATA receiver_attr_modifier_debug_data = 12; DEV_BATTLE_CALCULATE_HEAL_RUNTIME_ARGS calculate_heal_check_args = 13; } message DEV_BATTLE_CALCULATE_HEAL_RUNTIME_ARGS { double client_heal_value = 1; double client_heal_output_increase = 2; double client_heal_taken_increase = 3; } message DEV_BATTLE_CALCULATE_DAMAGE_RUNTIME_ARGS { double client_calc_result_value = 1; double client_final_damage_scale = 2; double client_attack_value = 3; double client_crit_add_scale = 4; double client_def_attr_defender_def = 5; double client_def_resistance = 6; double client_dmg_type_resistance = 7; double client_defender_poise_factor = 8; double client_ignite_damage_scalar = 9; double client_final_value = 10; double client_weak_damage_scalar = 11; double client_shelter_damage_scalar = 12; double client_physical_infliction_damage_scalar = 13; } message BATTLE_HEAL_MODIFIER_ARGS { uint64 healer_id = 1; uint64 heal_receive_id = 2; repeated BATTLE_MODIFIER_HANDLE healer_modifiers = 3; repeated BATTLE_MODIFIER_HANDLE heal_receive_modifiers = 4; } message BATTLE_SWITCH_MODE_ACTION_DATA { string mode_id = 1; bool reset_on_end = 2; } message BATTLE_SWITCH_MODE_ACTION_RUNTIME { uint64 source_id = 1; string mode_id = 2; uint32 mode_inst_id = 3; } message BATTLE_MODIFY_DYNAMIC_BLACKBOARD_ACTION_DATA { string key = 1; BATTLE_BLACKBOARD_FLOAT value = 2; int32 modify_type = 3; bool ignore_server_check = 4; } message BATTLE_MODIFY_DYNAMIC_BLACKBOARD_ACTION_RUNTIME { double client_value = 1; } message BATTLE_SPAWN_ENEMY_ACTION_DATA { string enemy_id = 1; BATTLE_BLACKBOARD_FLOAT hp_ratio = 2; } message BATTLE_SPAWN_ENEMY_ACTION_RUNTIME { uint32 client_key = 1; repeated BATTLE_SPAWN_ENEMY_ACTION_DETAIL details = 2; } message BATTLE_SPAWN_ENEMY_ACTION_DETAIL { uint64 source_id = 1; uint32 enemy_lv = 2; VECTOR pos = 3; VECTOR rotation = 4; int32 scene_num_id = 5; } message BATTLE_LAUNCH_PROJECTILE_ACTION_DATA { string projectile_id = 1; bool assign_blackboard = 3; } message BATTLE_LAUNCH_PROJECTILE_ACTION_RUNTIME { uint64 source_id = 1; repeated BATTLE_PROJECTILE_DETAIL details = 2; } message BATTLE_PROJECTILE_DETAIL { uint64 client_projectile_id = 1; } message BATTLE_SPAWN_ABILITY_ENTITY_ACTION_DATA { string ability_entity_id = 1; bool assign_blackboard = 3; bool set_spawner_as_source = 4; } message BATTLE_SPAWN_ABILITY_ENTITY_ACTION_RUNTIME { repeated BATTLE_ABILITY_ENTITY_DETAIL details = 1; } message BATTLE_ABILITY_ENTITY_DETAIL { uint64 client_ability_entity_id = 1; uint64 source_id = 2; VECTOR init_pos = 3; VECTOR rotation = 4; } message BATTLE_SPAWN_CUSTOM_SUMMON_ACTION_DATA { } message BATTLE_SPAWN_CUSTOM_SUMMON_ACTION_RUNTIME { repeated BATTLE_SPAWN_CUSTOM_SUMMON_DETAIL details = 1; } message BATTLE_SPAWN_CUSTOM_SUMMON_DETAIL { string summon_id = 1; TEMPLATE_ID summon_skill_id = 2; uint64 client_ability_entity_id = 3; VECTOR init_pos = 4; VECTOR rotation = 5; BATTLE_BLACKBOARD blackboard = 6; uint64 source_id = 7; } message SERVER_BUFF_STACKING_GROUP { string stacking_key = 1; int32 stacking_type = 2; int32 max_stack_cnt = 3; bool is_server_init = 4; repeated uint64 buff_inst_ids = 5; } message SERVER_BUFF { TEMPLATE_ID buff_id = 1; uint64 inst_id = 2; BATTLE_BLACKBOARD blackboard = 3; int64 duration = 4; double priority = 5; int32 enhance_multi = 6; bool is_server_init = 7; bool is_enable = 8; string stacking_group_id = 9; } message SERVER_SKILL { TEMPLATE_ID skill_id = 1; uint64 inst_id = 2; int32 potential_lv = 3; int32 level = 4; BATTLE_BLACKBOARD blackboard = 5; BATTLE_SKILL_SOURCE source = 6; repeated string talent_node_ids = 7; bool is_server_init = 8; bool is_enable = 9; bool is_passive = 10; } message BATTLE_MGR_INFO { repeated SERVER_BUFF buff_list = 1; repeated SERVER_SKILL skill_list = 2; uint32 msg_generation = 3; uint64 battle_inst_id = 4; repeated SERVER_BUFF_STACKING_GROUP stacking_group_list = 5; BATTLE_PART_INST_INFO part_inst_info = 6; } message BATTLE_PART_INST_INFO { map part_id_to_inst_id = 1; } message CLIENT_ATTR_MODIFIER_DEBUG_DATA { map attr_modifier_map = 1; } message CLIENT_ATTR_MODIFIER_LIST { repeated CLIENT_ATTR_MODIFIER attr_modifier_list = 1; double basic_value = 2; } message CLIENT_ATTR_MODIFIER { uint64 attr_src_mask = 1; ATTR_MODIFY_DATA modify_data = 2; } message ATTR_MODIFY_DATA { double modify_value = 1; double modify_ratio = 2; double final_modify_value = 3; double final_modify_ratio = 4; double base_modify_value = 5; double base_modify_ratio = 6; double base_final_modify_value = 7; double base_final_modify_ratio = 8; }