From b51533dbbee4606528f168f5452ebc3e13d5fd94 Mon Sep 17 00:00:00 2001 From: Ethan O'Brien <77750390+ethanaobrien@users.noreply.github.com> Date: Mon, 6 May 2024 17:02:12 -0500 Subject: [PATCH] Add live completed count missions --- src/router/home.rs | 21 ++++++++++++++++----- src/router/items.rs | 41 +++++++++++++++++++++++------------------ src/router/live.rs | 5 +++-- src/router/mission.rs | 3 ++- 4 files changed, 44 insertions(+), 26 deletions(-) diff --git a/src/router/home.rs b/src/router/home.rs index a3a3f84..de69642 100644 --- a/src/router/home.rs +++ b/src/router/home.rs @@ -1,5 +1,6 @@ use json::{object, array, JsonValue}; use actix_web::{HttpResponse, HttpRequest}; +use lazy_static::lazy_static; use crate::router::{global, userdata, items}; use crate::encryption; @@ -67,6 +68,20 @@ pub fn preset_get(req: HttpRequest) -> HttpResponse { global::send(resp, req) } + +lazy_static! { + pub static ref HOME_MISSIONS: JsonValue = { + let mut missions = array![]; + for i in 1153001..=1153019 { + missions.push(i).unwrap(); + } + for i in 1105001..=1105017 { + missions.push(i).unwrap(); + } + missions + }; +} + pub fn home(req: HttpRequest) -> HttpResponse { let key = global::get_login(req.headers(), ""); let mut user = userdata::get_acc_home(&key); @@ -82,10 +97,6 @@ pub fn home(req: HttpRequest) -> HttpResponse { } let daily_missions = array![1224003, 1253003, 1273009, 1273010, 1273011, 1273012]; - let mut home_missions = array![]; - for i in 1153001..=1153019 { - home_missions.push(i).unwrap(); - } let mut clear_ct = 0; let mut daily_ct = 0; @@ -93,7 +104,7 @@ pub fn home(req: HttpRequest) -> HttpResponse { if mission["status"].as_i32().unwrap() != 2 { continue; } - if home_missions.contains(mission["master_mission_id"].as_i64().unwrap()) { + if HOME_MISSIONS.contains(mission["master_mission_id"].as_i64().unwrap()) { clear_ct += 1; } if daily_missions.contains(mission["master_mission_id"].as_i64().unwrap()) { diff --git a/src/router/items.rs b/src/router/items.rs index 658f12a..fb8f67f 100644 --- a/src/router/items.rs +++ b/src/router/items.rs @@ -287,7 +287,6 @@ pub fn update_mission_status(master_mission_id: i64, expire: u64, completed: boo mission["progress"] = (mission["progress"].as_i32().unwrap() + 1).into(); } - if completed && !claimed { return Some(master_mission_id); } @@ -326,6 +325,28 @@ pub fn change_mission_id(old: i64, new: i64, missions: &mut JsonValue) { } } +pub fn advance_variable_mission(min: i64, max: i64, missions: &mut JsonValue) -> JsonValue { + let mut rv = array![]; + for i in min..=max { + let mission_status = get_mission_status(i, missions); + if mission_status.is_empty() { + continue; + } + let mission_info = &crate::router::mission::MISSION_LIST[i.to_string()]; + if mission_info["conditionNumber"].as_i64().unwrap() > mission_status["progress"].as_i64().unwrap() + 1 { + if !update_mission_status(i, 0, false, false, true, missions).is_none() { + rv.push(i).unwrap(); + } + } else { + if !update_mission_status(i, 0, true, false, true, missions).is_none() { + rv.push(i).unwrap(); + } + } + break; + } + rv +} + pub fn completed_daily_mission(id: i64, missions: &mut JsonValue) -> JsonValue { let all_daily_missions = array![1224003, 1253003, 1273009, 1273010, 1273011, 1273012]; @@ -335,23 +356,7 @@ pub fn completed_daily_mission(id: i64, missions: &mut JsonValue) -> JsonValue { } let mut rv = array![]; if id == 1253003 { - for i in 1153001..=1153019 { - let mission_status = get_mission_status(i, missions); - if mission_status.is_empty() { - continue; - } - let mission_info = crate::router::mission::MISSION_LIST[i as usize].clone(); - if mission_info["conditionNumber"].as_i64().unwrap() > mission_status["progress"].as_i64().unwrap() + 1 { - if !update_mission_status(i, 0, true, false, false, missions).is_none() { - rv.push(i).unwrap(); - } - } else { - if !update_mission_status(i, 0, false, false, true, missions).is_none() { - rv.push(i).unwrap(); - } - } - break; - } + rv = advance_variable_mission(1153001, 1153019, missions); } let mission = get_mission_status(1224003, missions); let next_reset = global::timestamp_since_midnight() + (24 * 60 * 60); diff --git a/src/router/live.rs b/src/router/live.rs index d7198a0..847cacf 100644 --- a/src/router/live.rs +++ b/src/router/live.rs @@ -400,7 +400,7 @@ fn live_end(req: &HttpRequest, body: &String) -> JsonValue { let live = update_live_data(&mut user, &body, true); //1273009, 1273010, 1273011, 1273012 - let mut cleared_missions = array![]; + let mut cleared_missions = items::advance_variable_mission(1105001, 1105017, &mut user_missions); if body["master_live_id"].to_string().len() > 1 { let id = body["master_live_id"].to_string().split("").collect::>()[2].parse::().unwrap_or(0); if id <= 4 && id >= 1 { @@ -408,7 +408,6 @@ fn live_end(req: &HttpRequest, body: &String) -> JsonValue { } } - if body["live_score"]["score"].as_i64().unwrap() > 0 { live_completed(body["master_live_id"].as_i64().unwrap(), body["level"].as_i32().unwrap(), false, body["live_score"]["score"].as_i64().unwrap(), user["user"]["id"].as_i64().unwrap()); } @@ -514,6 +513,7 @@ pub fn skip(req: HttpRequest, body: String) -> HttpResponse { let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap(); let user2 = userdata::get_acc_home(&key); let mut user = userdata::get_acc(&key); + //let mut user_missions = userdata::get_acc_missions(&key); let live = update_live_data(&mut user, &object!{ master_live_id: body["master_live_id"].clone(), level: 1, @@ -539,6 +539,7 @@ pub fn skip(req: HttpRequest, body: String) -> HttpResponse { items::use_item(21000001, body["live_boost"].as_i64().unwrap(), &mut user); userdata::save_acc(&key, user.clone()); + //userdata::save_acc_missions(&key, user_missions.clone()); let resp = object!{ "code": 0, diff --git a/src/router/mission.rs b/src/router/mission.rs index 3d28fee..e7c9de2 100644 --- a/src/router/mission.rs +++ b/src/router/mission.rs @@ -82,7 +82,8 @@ 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 { + 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, false, &mut missions); } else {