diff --git a/src/router/items.rs b/src/router/items.rs index 96b7e44..09e8b7d 100644 --- a/src/router/items.rs +++ b/src/router/items.rs @@ -262,7 +262,7 @@ pub fn get_user_rank_data(exp: i64) -> JsonValue { return ranks[ranks.len() - 1].clone(); } -pub fn give_exp(amount: i32, user: &mut JsonValue, mission: &mut JsonValue) { +pub fn give_exp(amount: i32, user: &mut JsonValue, mission: &mut JsonValue, rv: &mut JsonValue) { let current_rank = get_user_rank_data(user["user"]["exp"].as_i64().unwrap()); user["user"]["exp"] = (user["user"]["exp"].as_i32().unwrap() + amount).into(); let new_rank = get_user_rank_data(user["user"]["exp"].as_i64().unwrap()); @@ -275,7 +275,10 @@ pub fn give_exp(amount: i32, user: &mut JsonValue, mission: &mut JsonValue) { return; } let to_advance = new_rank["rank"].as_i64().unwrap() - status["progress"].as_i64().unwrap(); - advance_variable_mission(1101001, 1101030, to_advance, mission); + let rvv = advance_variable_mission(1101001, 1101030, to_advance, mission); + for (_i, id) in rvv.members().enumerate() { + rv.push(id.as_i64().unwrap()).unwrap(); + } } } @@ -354,7 +357,7 @@ pub fn advance_variable_mission(min: i64, max: i64, count: i64, missions: &mut J if i == max && mission_info["conditionNumber"].as_i64().unwrap() <= mission_status["progress"].as_i64().unwrap() { break; } - if mission_info["conditionNumber"].as_i64().unwrap() > mission_status["progress"].as_i64().unwrap() + 1 { + if mission_info["conditionNumber"].as_i64().unwrap() > mission_status["progress"].as_i64().unwrap() + count { if !update_mission_status(i, 0, false, false, count, missions).is_none() { rv.push(i).unwrap(); } diff --git a/src/router/live.rs b/src/router/live.rs index ee000ab..e42c96c 100644 --- a/src/router/live.rs +++ b/src/router/live.rs @@ -425,7 +425,7 @@ fn live_end(req: &HttpRequest, body: &String) -> JsonValue { items::lp_modification(&mut user, body["use_lp"].as_u64().unwrap(), true); - items::give_exp(body["use_lp"].as_i32().unwrap(), &mut user, &mut user_missions); + items::give_exp(body["use_lp"].as_i32().unwrap(), &mut user, &mut user_missions, &mut cleared_missions); userdata::save_acc(&key, user.clone()); userdata::save_acc_missions(&key, user_missions); @@ -534,7 +534,8 @@ pub fn skip(req: HttpRequest, body: String) -> HttpResponse { items::lp_modification(&mut user, 10 * body["live_boost"].as_u64().unwrap(), true); - items::give_exp(10 * body["live_boost"].as_i32().unwrap(), &mut user, &mut user_missions); + let mut cleared_missions = array![]; + items::give_exp(10 * body["live_boost"].as_i32().unwrap(), &mut user, &mut user_missions, &mut cleared_missions); items::use_item(21000001, body["live_boost"].as_i64().unwrap(), &mut user); @@ -556,7 +557,7 @@ pub fn skip(req: HttpRequest, body: String) -> HttpResponse { "character_list": user["character_list"].clone(), "reward_list": reward_list, "gift_list": user2["home"]["gift_list"].clone(), - "clear_mission_ids": [], + "clear_mission_ids": cleared_missions, "event_point_reward_list": [], "ranking_change": [], "event_member": [], diff --git a/src/router/mission.rs b/src/router/mission.rs index cb12121..eaa2800 100644 --- a/src/router/mission.rs +++ b/src/router/mission.rs @@ -82,11 +82,17 @@ pub fn receive(req: HttpRequest, body: String) -> HttpResponse { items::give_gift(&gift, &mut user); rewards.push(gift).unwrap(); - if mission.as_i64().unwrap() >= 1153001 && mission.as_i64().unwrap() < 1153019 || - mission.as_i64().unwrap() >= 1105001 && mission.as_i64().unwrap() < 1105017 { - items::change_mission_id(mission.as_i64().unwrap(), mission.as_i64().unwrap() + 1, &mut missions); - items::update_mission_status(mission.as_i64().unwrap() + 1, 0, false, false, 0, &mut missions); - } else { + let variable_missions = array![[1153001, 1153019], [1105001, 1105017], [1101001, 1101030]]; + let mut variable = false; + for (_i, id) in variable_missions.members().enumerate() { + if mission.as_i64().unwrap() >= id[0].as_i64().unwrap() && mission.as_i64().unwrap() < id[1].as_i64().unwrap() { + items::change_mission_id(mission.as_i64().unwrap(), mission.as_i64().unwrap() + 1, &mut missions); + items::advance_variable_mission(id[0].as_i64().unwrap(), id[1].as_i64().unwrap(), 0, &mut missions); + variable = true; + break; + } + } + if !variable { items::update_mission_status(mission.as_i64().unwrap(), 0, true, true, 0, &mut missions); } }