From f27e99fcd17ed54ea5fa2a982b2c64fcc4a427cf Mon Sep 17 00:00:00 2001 From: Ethan O'Brien <77750390+ethanaobrien@users.noreply.github.com> Date: Sun, 5 May 2024 14:27:18 -0500 Subject: [PATCH] Add all perfect things --- src/router/global.rs | 12 +++++++++++- src/router/live.rs | 15 ++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/router/global.rs b/src/router/global.rs index b855812..c8eead7 100644 --- a/src/router/global.rs +++ b/src/router/global.rs @@ -174,6 +174,16 @@ fn get_full_combo_count(user: &JsonValue, level: i32) -> i64 { rv } +fn get_perfect_count(user: &JsonValue, level: i32) -> i64 { + let mut rv = 0; + for (_i, current) in user["live_mission_list"].members().enumerate() { + if current["clear_master_live_mission_ids"].contains(40 + level) { + rv += 1; + } + } + rv +} + pub fn get_user(id: i64, friends: &JsonValue, live_data: bool) -> JsonValue { let user = userdata::get_acc_from_uid(id); if !user["error"].is_empty() { @@ -197,7 +207,7 @@ pub fn get_user(id: i64, friends: &JsonValue, live_data: bool) -> JsonValue { rv["live_data_summary"] = object!{ clear_count_list: [get_clear_count(&user, 1), get_clear_count(&user, 2), get_clear_count(&user, 3), get_clear_count(&user, 4)], full_combo_list: [get_full_combo_count(&user, 1), get_full_combo_count(&user, 2), get_full_combo_count(&user, 3), get_full_combo_count(&user, 4)], - all_perfect_list: [0, 0, 0, 0], + all_perfect_list: [get_perfect_count(&user, 1), get_perfect_count(&user, 2), get_perfect_count(&user, 3), get_perfect_count(&user, 4)], high_score_rate: { rate: 0, detail: [] diff --git a/src/router/live.rs b/src/router/live.rs index f437aa5..57a4d61 100644 --- a/src/router/live.rs +++ b/src/router/live.rs @@ -319,7 +319,7 @@ fn get_live_mission_info(id: i64) -> JsonValue { MISSION_REWARD_DATA[id.to_string()].clone() } -fn get_live_mission_completed_ids(user: &JsonValue, live_id: i64, score: i64, combo: i64, clear_count: i64, level: i64, full_combo: bool) -> Option { +fn get_live_mission_completed_ids(user: &JsonValue, live_id: i64, score: i64, combo: i64, clear_count: i64, level: i64, full_combo: bool, all_perfect: bool) -> Option { let live_info = get_live_info(live_id); let mut out = array![]; let combo_info = get_live_combo_info(live_info["masterMusicId"].as_i64()?); @@ -346,6 +346,11 @@ fn get_live_mission_completed_ids(user: &JsonValue, live_id: i64, score: i64, co out.push(data["id"].as_i32()?).ok()?; } }, + 5 => { + if full_combo && all_perfect && data["level"].as_i64()? == level { + out.push(data["id"].as_i32()?).ok()?; + } + }, _ => {} } } @@ -369,6 +374,9 @@ fn give_mission_rewards(user: &mut JsonValue, missions: &JsonValue, multiplier: if !missions.contains(data["id"].as_i32().unwrap()) { continue; } + if data["masterLiveMissionRewardId"].as_i64().unwrap() == 0 { + continue; + } let mut gift = get_live_mission_info(data["masterLiveMissionRewardId"].as_i64().unwrap()); gift["reward_type"] = gift["type"].clone(); gift["amount"] = (gift["amount"].as_i64().unwrap() * multiplier).into(); @@ -395,7 +403,8 @@ fn live_end(req: &HttpRequest, body: &String) -> JsonValue { } let is_full_combo = (body["live_score"]["good"].as_i32().unwrap_or(1) + body["live_score"]["bad"].as_i32().unwrap_or(1) + body["live_score"]["miss"].as_i32().unwrap_or(1)) == 0; - let missions = get_live_mission_completed_ids(&user, body["master_live_id"].as_i64().unwrap(), body["live_score"]["score"].as_i64().unwrap(), body["live_score"]["max_combo"].as_i64().unwrap(), live["clear_count"].as_i64().unwrap_or(0), body["level"].as_i64().unwrap(), is_full_combo).unwrap_or(array![]); + let is_perfect = (body["live_score"]["great"].as_i32().unwrap_or(1) + body["live_score"]["good"].as_i32().unwrap_or(1) + body["live_score"]["bad"].as_i32().unwrap_or(1) + body["live_score"]["miss"].as_i32().unwrap_or(1)) == 0; + let missions = get_live_mission_completed_ids(&user, body["master_live_id"].as_i64().unwrap(), body["live_score"]["score"].as_i64().unwrap(), body["live_score"]["max_combo"].as_i64().unwrap(), live["clear_count"].as_i64().unwrap_or(0), body["level"].as_i64().unwrap(), is_full_combo, is_perfect).unwrap_or(array![]); update_live_mission_data(&mut user, &object!{ master_live_id: body["master_live_id"].as_i64().unwrap(), @@ -502,7 +511,7 @@ pub fn skip(req: HttpRequest, body: String) -> HttpResponse { } }, false); - let missions = get_live_mission_completed_ids(&user, body["master_live_id"].as_i64().unwrap(), live["high_score"].as_i64().unwrap(), live["max_combo"].as_i64().unwrap(), live["clear_count"].as_i64().unwrap(), live["level"].as_i64().unwrap(), false).unwrap_or(array![]); + let missions = get_live_mission_completed_ids(&user, body["master_live_id"].as_i64().unwrap(), live["high_score"].as_i64().unwrap(), live["max_combo"].as_i64().unwrap(), live["clear_count"].as_i64().unwrap(), live["level"].as_i64().unwrap(), false, false).unwrap_or(array![]); update_live_mission_data(&mut user, &object!{ master_live_id: body["master_live_id"].as_i64().unwrap(),