diff --git a/src/router/databases/mod.rs b/src/router/databases/mod.rs index 82daae3..8febf6d 100644 --- a/src/router/databases/mod.rs +++ b/src/router/databases/mod.rs @@ -271,6 +271,18 @@ lazy_static! { pub static ref RANKS: JsonValue = t("user_rank"); + pub static ref USER_RANK_REWARD: JsonValue = { + let mut info = object! {}; + for data in t("user_rank_reward").members() { + let id = data["id"].to_string(); + if info[&id].is_null() { + info[&id] = array![]; + } + info[&id].push(data.clone()).unwrap(); + } + info + }; + pub static ref EVOLVE_COST: JsonValue = { let mut info = object! {}; for data in t("card_evolve").members() { diff --git a/src/router/items.rs b/src/router/items.rs index 7096ef8..0c0a706 100644 --- a/src/router/items.rs +++ b/src/router/items.rs @@ -367,6 +367,22 @@ pub fn give_exp(amount: i32, user: &mut JsonValue, mission: &mut JsonValue, rv: if current_rank["rank"] != new_rank["rank"] { user["stamina"]["stamina"] = (user["stamina"]["stamina"].as_i64().unwrap() + new_rank["maxLp"].as_i64().unwrap()).into(); + let from = current_rank["rank"].as_i64().unwrap(); + let to = new_rank["rank"].as_i64().unwrap(); + for rank in databases::RANKS.members() { + let num = rank["rank"].as_i64().unwrap(); + if num <= from || num > to { + continue; + } + for reward in databases::USER_RANK_REWARD[rank["masterUserRankRewardId"].to_string()].members() { + give_gift(&object!{ + reward_type: reward["type"].clone(), + value: reward["value"].clone(), + amount: reward["amount"].clone() + }, user, mission, &mut array![], &mut array![]); + } + } + let status = get_mission_status(get_variable_mission_num(1101001, 1101030, mission), mission); if status.is_empty() { return;