Add live completed count missions

This commit is contained in:
Ethan O'Brien 2024-05-06 17:02:12 -05:00
parent 556060ca8b
commit b51533dbbe
4 changed files with 44 additions and 26 deletions

View file

@ -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()) {

View file

@ -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);

View file

@ -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::<Vec<_>>()[2].parse::<i64>().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,

View file

@ -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 {