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<uint64, bool> 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<int32, BATTLE_ACTION_RES> 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<int32, SHIELD_ABSORB_INFO> 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<int32, BATTLE_ACTION_RES> 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<string, BATTLE_BLACKBOARD_DATA> 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<int32, BATTLE_ACTION_RES> 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<uint64, double> 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<int32, BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM> 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<int32, BATTLE_CLIENT_PROCESSOR_DEBUG_ARGS_ITEM> 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<string, uint64> part_id_to_inst_id = 1;
}
message CLIENT_ATTR_MODIFIER_DEBUG_DATA {
    map<int32, CLIENT_ATTR_MODIFIER_LIST> 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;
}
