Finish all general missions

This commit is contained in:
Ethan O'Brien 2024-05-09 12:10:09 -05:00
parent 466d211341
commit 53567d77af
7 changed files with 80 additions and 11 deletions

View file

@ -1,8 +1,7 @@
use json::object;
use actix_web::{HttpResponse, HttpRequest};
use crate::router::userdata;
use crate::router::global;
use crate::router::{global, items, userdata};
pub fn home(req: HttpRequest, body: String) -> HttpResponse {
let key = global::get_login(req.headers(), &body);
@ -44,7 +43,12 @@ pub fn start(req: HttpRequest, _body: String) -> HttpResponse {
global::send(resp, req)
}
pub fn end(req: HttpRequest, _body: String) -> HttpResponse {
pub fn end(req: HttpRequest, body: String) -> HttpResponse {
let key = global::get_login(req.headers(), &body);
let mut missions = userdata::get_acc_missions(&key);
items::advance_mission(1169001, 1, 50, &mut missions);
userdata::save_acc_missions(&key, missions);
let resp = object!{
"code": 0,

View file

@ -71,7 +71,7 @@ pub fn preset_get(req: HttpRequest) -> HttpResponse {
lazy_static! {
pub static ref HOME_MISSIONS: JsonValue = {
let mut missions = array![];
let mut missions = array![1176001, 1177001, 1177002, 1176002, 1176003, 1176004, 1176005, 1176006, 1169001];
for i in 1153001..=1153019 {
missions.push(i).unwrap();
}
@ -87,6 +87,9 @@ lazy_static! {
for i in 1121001..=1121019 {
missions.push(i).unwrap();
}
for i in 1112001..=1112033 {
missions.push(i).unwrap();
}
missions
};
}

View file

@ -102,7 +102,7 @@ pub fn give_gift(data: &JsonValue, user: &mut JsonValue, missions: &mut JsonValu
return !give_primogems(data["amount"].as_i64().unwrap(), user);
} else if data["reward_type"].to_string() == "2" {
//character
give_character(data["value"].to_string(), user);
give_character(data["value"].to_string(), user, missions, clear_missions);
return true;
} else if data["reward_type"].to_string() == "3" {
return !give_item(data["value"].as_i64().unwrap(), data["amount"].as_i64().unwrap(), user);
@ -131,9 +131,11 @@ pub fn give_points(master_item_id: i64, amount: i64, user: &mut JsonValue, missi
if master_item_id == 1 {
let cleared = advance_variable_mission(1121001, 1121019, amount, missions);
for (_i, data) in cleared.members().enumerate() {
if !clear_missions.contains(data.as_i64().unwrap()) {
clear_missions.push(data.clone()).unwrap();
}
}
}
let mut has = false;
for (_j, data) in user["point_list"].members_mut().enumerate() {
if data["type"].as_i64().unwrap() == master_item_id {
@ -246,13 +248,19 @@ pub fn lp_modification(user: &mut JsonValue, change_amount: u64, remove: bool) {
// true - added
// false - already has
pub fn give_character(id: String, user: &mut JsonValue) -> bool {
pub fn give_character(id: String, user: &mut JsonValue, missions: &mut JsonValue, clear_missions: &mut JsonValue) -> bool {
for (_i, data) in user["card_list"].members().enumerate() {
if data["master_card_id"].to_string() == id || data["id"].to_string() == id {
give_item(19100001, 50, user);
return false;
}
}
let cleared = advance_variable_mission(1112001, 1112033, 1, missions);
for (_i, data) in cleared.members().enumerate() {
if !clear_missions.contains(data.as_i64().unwrap()) {
clear_missions.push(data.clone()).unwrap();
}
}
let to_push = object!{
"id": id.parse::<i32>().unwrap(),
@ -386,6 +394,24 @@ pub fn advance_variable_mission(min: i64, max: i64, count: i64, missions: &mut J
rv
}
pub fn advance_mission(id: i64, count: i64, max: i64, missions: &mut JsonValue) -> Option<i64> {
let mission = get_mission_status(id, missions);
if mission["status"].as_i32().unwrap() > 1 {
return None;
}
let mut new = mission["progress"].as_i64().unwrap() + count;
if new > max {
new = max;
}
let completed = new == max;
let advanced = new - mission["progress"].as_i64().unwrap();
if !update_mission_status(id, 0, completed, false, advanced, missions).is_none() {
return Some(id);
}
None
}
pub fn completed_daily_mission(id: i64, missions: &mut JsonValue) -> JsonValue {
let all_daily_missions = array![1224003, 1253003, 1273009, 1273010, 1273011, 1273012];

View file

@ -485,7 +485,10 @@ fn live_end(req: &HttpRequest, body: &String, skipped: bool) -> JsonValue {
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 {
cleared_missions = items::completed_daily_mission(1273009 + id - 1, &mut user_missions);
let to_push = items::completed_daily_mission(1273009 + id - 1, &mut user_missions);
for (_i, data) in to_push.members().enumerate() {
cleared_missions.push(data.as_i32().unwrap()).unwrap();
}
}
}
@ -500,6 +503,37 @@ fn live_end(req: &HttpRequest, body: &String, skipped: bool) -> 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 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;
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![]);
if is_full_combo {
if !items::advance_mission(1176001, 1, 1, &mut user_missions).is_none() {
cleared_missions.push(1176001).unwrap();
}
if !items::advance_mission(1176002, 1, 100, &mut user_missions).is_none() {
cleared_missions.push(1176002).unwrap();
}
if !items::advance_mission(1176003, 1, 200, &mut user_missions).is_none() {
cleared_missions.push(1176003).unwrap();
}
if !items::advance_mission(1176004, 1, 300, &mut user_missions).is_none() {
cleared_missions.push(1176004).unwrap();
}
if !items::advance_mission(1176005, 1, 400, &mut user_missions).is_none() {
cleared_missions.push(1176005).unwrap();
}
if !items::advance_mission(1176006, 1, 500, &mut user_missions).is_none() {
cleared_missions.push(1176006).unwrap();
}
}
if is_perfect {
if !items::advance_mission(1177001, 1, 1, &mut user_missions).is_none() {
cleared_missions.push(1177001).unwrap();
}
}
if is_perfect && body["level"].as_i32().unwrap() == 4 {
if !items::advance_mission(1177002, 1, 1, &mut user_missions).is_none() {
cleared_missions.push(1177002).unwrap();
}
}
}
update_live_mission_data(&mut user, &object!{

View file

@ -189,7 +189,7 @@ pub fn lottery_post(req: HttpRequest, body: String) -> HttpResponse {
if lottery_type == 1 {
for (_i, data) in cardstogive.members().enumerate() {
let mut is_new = true;
if !items::give_character(data["master_card_id"].to_string(), &mut user) {
if !items::give_character(data["master_card_id"].to_string(), &mut user, &mut missions, &mut cleared_missions) {
is_new = false;
}
if is_new {

View file

@ -82,7 +82,7 @@ pub fn receive(req: HttpRequest, body: String) -> HttpResponse {
items::give_gift(&gift, &mut user, &mut missions, &mut array![]);
rewards.push(gift).unwrap();
let variable_missions = array![[1153001, 1153019], [1105001, 1105017], [1101001, 1101030], [1121001, 1121019]];
let variable_missions = array![[1153001, 1153019], [1105001, 1105017], [1101001, 1101030], [1121001, 1121019], [1112001, 1112033]];
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() {

View file

@ -415,6 +415,7 @@ pub fn initialize(req: HttpRequest, body: String) -> HttpResponse {
let mut user = userdata::get_acc(&key);
let mut user2 = userdata::get_acc_home(&key);
let mut missions = userdata::get_acc_missions(&key);
let ur = user["card_list"][user["card_list"].len() - 1]["master_card_id"].clone();
let id = ur.as_i32().unwrap(); //todo
@ -452,7 +453,7 @@ pub fn initialize(req: HttpRequest, body: String) -> HttpResponse {
// User is rewarded with all base cards in the team they chose. This makes up their new deck_list
for (i, data) in cardstoreward.members().enumerate() {
items::give_character(data.to_string(), &mut user);
items::give_character(data.to_string(), &mut user, &mut missions, &mut array![]);
if i < 10 {
user["deck_list"][0]["main_card_ids"][i] = data.clone();
}
@ -462,6 +463,7 @@ pub fn initialize(req: HttpRequest, body: String) -> HttpResponse {
userdata::save_acc(&key, user.clone());
userdata::save_acc_home(&key, user2);
userdata::save_acc_missions(&key, missions);
let resp = object!{
"code": 0,