syntax = "proto3";
package proto;

option go_package = "/csproto";

message CS_GAME_MECHANICS_REQ_ACTIVE {
    string game_id = 1;
}
message CS_GAME_MECHANICS_REQ_REWARD {
    string game_id = 1;
    int32 reward_multiplier = 2;
    bool without_stamina_reward = 3;
    bool use_stamina_reduce = 4;
}
message CS_GAME_MECHANICS_NTF_INST_PREPARE_FINISH {
    string game_id = 1;
}
message CS_GAME_MECHANICS_REQ_SET_CUSTOM_REWARD_INDEX {
    string game_id = 1;
    int32 custom_reward_index = 2;
}
message CS_GAME_MECHANICS_REQ_START {
    string game_id = 1;
    uint64 interactive_obj_id = 2;
    string npc_proxy_id = 3;
    uint64 npc_obj_id = 4;
}
message CS_GAME_MECHANICS_REQ_STOP {
    string cur_game_id = 1;
}
message CS_GAME_MECHANICS_CONFIRM_LEAVE_GAME_INST {
    string game_id = 1;
}
message SCD_GAME_MECHANICS_GROUP_RECORD {
    string game_group_id = 1;
    int64 last_enter_game_group_ts = 2;
    repeated int32 rewarded_type_list = 3;
    oneof extra_details {
        GAME_MECHANICS_WORLD_ENERGY_POINT_GROUP_RECORD world_energy_point = 20;
    }
}
message GAME_MECHANICS_WORLD_ENERGY_POINT_GROUP_RECORD {
    repeated string select_terms = 1;
    string unreceived_reward_game_id = 2;
    int32 daily_start_count = 3;
}
message SCD_GAME_MECHANICS_RECORD {
    string game_id = 1;
    int64 last_enter_gameTS = 2;
    int32 best_pass_time = 3;
    int64 best_passTS = 4;
    bool is_pass = 5;
    bool is_challenged = 6;
    bool is_active = 7;
    bool once_reward_got = 8;
    repeated int32 rewarded_id_list = 9;
    int32 custom_reward_index = 11;
}
message SCD_GAME_MECHANICS_UNLOCK_CONDITIONS {
    string id = 1;
    int32 unlock_state = 2;
    map<string, int32> unlock_condition_values = 3;
    map<string, bool> unlock_condition_flags = 4;
}
message SCD_GAME_MECHANICS_CATEGORY_UNLOCK_CONDITIONS {
    string id = 1;
    int32 unlock_state = 2;
}
message SC_GAME_MECHANICS_SYNC {
    repeated SCD_GAME_MECHANICS_UNLOCK_CONDITIONS game_unlock_conditions = 1;
    repeated SCD_GAME_MECHANICS_RECORD game_records = 2;
    repeated SCD_GAME_MECHANICS_CATEGORY_UNLOCK_CONDITIONS game_category_unlock_conditions = 3;
    repeated SCD_GAME_MECHANICS_GROUP_RECORD game_group_records = 4;
}
message SC_GAME_MECHANICS_SYNC_UNLOCK_CONDITION {
    SCD_GAME_MECHANICS_UNLOCK_CONDITIONS game_unlock_condition = 1;
}
message SC_GAME_MECHANICS_SYNC_CATEGORY_UNLOCK_CONDITION {
    SCD_GAME_MECHANICS_CATEGORY_UNLOCK_CONDITIONS game_category_unlock_condition = 1;
}
message SC_GAME_MECHANICS_MODIFY_GROUP_RECORDS {
    repeated SCD_GAME_MECHANICS_GROUP_RECORD game_group_records = 1;
}
message SC_GAME_MECHANICS_MODIFY_RECORDS {
    repeated SCD_GAME_MECHANICS_RECORD game_records = 1;
}
message SC_GAME_MECHANICS_SYNC_CHALLENGE_START {
    string game_id = 1;
    int64 challenge_start_ts = 2;
    int64 challenge_expire_ts = 3;
    int32 prepare_challenge_seconds = 4;
}
message SC_GAME_MECHANICS_SYNC_CHALLENGE_COMPLETE {
    string game_id = 1;
    bool is_pass = 2;
    int64 force_leave_ts = 3;
    int32 pass_time = 4;
}
message SC_GAME_MECHANICS_SYNC_COMPLETION_REWARD {
    string game_id = 1;
    bool is_pass = 2;
    int64 force_leave_ts = 3;
    int32 reward_multiplier = 4;
    bool without_stamina_reward = 5;
    bool use_stamina_reduce = 6;
}
message SC_GAME_MECHANICS_SYNC_ENTER_GAME_INST {
    string game_id = 1;
    bool is_hunter_mode = 2;
    string game_inst_id = 3;
    int64 game_unique_id = 4;
}
message SC_GAME_MECHANICS_SYNC_LEAVE_GAME_INST {
    string game_id = 1;
    string game_inst_id = 2;
    int64 game_unique_id = 3;
}
message SC_GAME_MECHANICS_SYNC_RESTART_GAME_INST {
    string game_id = 1;
    bool is_hunter_mode = 2;
    string game_inst_id = 3;
    int64 game_unique_id = 4;
}
message SCD_GAME_MECHANICS_INST_TIME_FREEZE {
    int32 time_key = 1;
    int64 total_freeze_time_in_ms = 2;
}
message SC_GAME_MECHANICS_MODIFY_INST_TIME_FREEZE {
    string game_id = 1;
    repeated SCD_GAME_MECHANICS_INST_TIME_FREEZE time_freeze_infos = 2;
}
