diff --git a/src/router/card.rs b/src/router/card.rs index a967dc7..aa581a2 100644 --- a/src/router/card.rs +++ b/src/router/card.rs @@ -12,7 +12,11 @@ fn do_reinforce(user: &mut JsonValue, body: &JsonValue, exp_id: &str, money_mult let mut money: i64 = 0; for (_j, data2) in materials.members().enumerate() { - items::use_item(data2["master_item_id"].as_i64().unwrap(), data2["amount"].as_i64().unwrap(), user); + items::use_item(&object!{ + value: data2["master_item_id"].as_i64().unwrap(), + amount: 1, + consumeType: 4 + }, data2["amount"].as_i64().unwrap(), user); let item = &databases::ITEM_INFO[data2["master_item_id"].to_string()]; if evolve { card["evolve"] = array![{type: 2,count: 1}]; diff --git a/src/router/exchange.rs b/src/router/exchange.rs index 2f43a21..dca2fce 100644 --- a/src/router/exchange.rs +++ b/src/router/exchange.rs @@ -17,11 +17,7 @@ pub fn exchange_post(req: HttpRequest, body: String) -> Option { let item = &databases::EXCHANGE_LIST[body["master_exchange_item_id"].to_string()]; - if item["consumeType"].as_i32().unwrap() == 4 { - items::use_item(item["value"].as_i64().unwrap(), item["amount"].as_i64().unwrap() * body["count"].as_i64().unwrap(), &mut user); - } else { - println!("Unknown consume type {}", item["consumeType"]); - } + items::use_item(item, body["count"].as_i64().unwrap(), &mut user); let mut gift = databases::EXCHANGE_REWARD[item["masterExchangeItemRewardId"].to_string()].clone(); gift["reward_type"] = gift["type"].clone(); diff --git a/src/router/items.rs b/src/router/items.rs index f3842d2..9fa26e0 100644 --- a/src/router/items.rs +++ b/src/router/items.rs @@ -77,6 +77,16 @@ pub fn give_item(master_item_id: i64, amount: i64, user: &mut JsonValue) -> bool false } +pub fn use_item(item: &JsonValue, multiplier: i64, user: &mut JsonValue) { + if item["consumeType"].as_i32().unwrap() == 1 { + remove_gems(user, item["amount"].as_i64().unwrap()); + } else if item["consumeType"] == 4 { + use_itemm(item["value"].as_i64().unwrap(), item["amount"].as_i64().unwrap() * multiplier, user); + } else { + println!("Unknown consume type {}", item["consumeType"]); + } +} + pub fn give_gift(data: &JsonValue, user: &mut JsonValue, missions: &mut JsonValue, clear_missions: &mut JsonValue) -> bool { if data.is_empty() { return false; @@ -141,7 +151,7 @@ pub fn give_points(master_item_id: i64, amount: i64, user: &mut JsonValue, missi false } -pub fn use_item(master_item_id: i64, amount: i64, user: &mut JsonValue) { +pub fn use_itemm(master_item_id: i64, amount: i64, user: &mut JsonValue) { for (_j, data) in user["item_list"].members_mut().enumerate() { if data["master_item_id"].as_i64().unwrap() == master_item_id { if data["amount"].as_i64().unwrap() >= amount { @@ -435,7 +445,11 @@ pub fn use_item_req(req: HttpRequest, body: String) -> Option { } else { println!("Use item not implemented for effect type {}", item["effectType"]); } - use_item(body["id"].as_i64().unwrap(), amount, &mut user); + use_item(&object!{ + value: body["id"].as_i64().unwrap(), + amount: 1, + consumeType: 4 + }, amount, &mut user); userdata::save_acc(&key, user.clone()); diff --git a/src/router/live.rs b/src/router/live.rs index f40a493..e292ba5 100644 --- a/src/router/live.rs +++ b/src/router/live.rs @@ -441,7 +441,11 @@ fn live_end(req: &HttpRequest, body: &String, skipped: bool) -> JsonValue { let live; if skipped { - items::use_item(21000001, body["live_boost"].as_i64().unwrap(), &mut user); + items::use_item(&object!{ + value: 21000001, + amount: 1, + consumeType: 4 + }, body["live_boost"].as_i64().unwrap(), &mut user); live = update_live_data(&mut user, &object!{ master_live_id: body["master_live_id"].clone(), level: 0, diff --git a/src/router/lottery.rs b/src/router/lottery.rs index 8dbb914..54d78fd 100644 --- a/src/router/lottery.rs +++ b/src/router/lottery.rs @@ -111,11 +111,11 @@ pub fn lottery_post(req: HttpRequest, body: String) -> Option { let lottery_id = body["master_lottery_id"].as_i64().unwrap(); let price = databases::PRICE[lottery_id.to_string()][body["master_lottery_price_number"].to_string()].clone(); - if price["consumeType"].as_i32().unwrap() == 1 { - items::remove_gems(&mut user, price["price"].as_i64().unwrap()); - } else if price["consumeType"].as_i32().unwrap() == 4 { - items::use_item(price["masterItemId"].as_i64().unwrap(), price["price"].as_i64().unwrap(), &mut user); - } + items::use_item(&object!{ + value: price["masterItemId"].clone(), + amount: price["price"].clone(), + consumeType: price["consumeType"].clone() + }, 1, &mut user); let cardstogive = get_random_cards(lottery_id, price["count"].as_usize().unwrap());