Re-balanced items
This commit is contained in:
parent
04cb04bdd6
commit
2000d536ff
@ -1,6 +1,6 @@
|
||||
use crate::album_manager::AlbumManager;
|
||||
use crate::error::Error;
|
||||
use crate::migrations::do_migration;
|
||||
use crate::migrations::{CURRENT_DB_VERSION, do_migration};
|
||||
use crate::rass::RaaSHandler;
|
||||
use config::{Config, File};
|
||||
use j_db::database::Database;
|
||||
@ -12,6 +12,7 @@ use serenity::prelude::TypeMapKey;
|
||||
use std::net::SocketAddr;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::sync::Arc;
|
||||
use j_db::metadata::DBMetadata;
|
||||
use structopt::StructOpt;
|
||||
use tokio::sync::mpsc::{channel, Receiver, Sender};
|
||||
use tokio::sync::Mutex;
|
||||
@ -87,6 +88,15 @@ impl GlobalData {
|
||||
pub async fn new(args: Args, cfg: BotConfig) -> Result<Self, Error> {
|
||||
let db = Database::new(&cfg.db_path)?;
|
||||
|
||||
let version = db.version()?;
|
||||
|
||||
if version == 0 {
|
||||
db.insert::<j_db::metadata::DBMetadata>( DBMetadata {
|
||||
id: None,
|
||||
version: CURRENT_DB_VERSION,
|
||||
}).unwrap();
|
||||
}
|
||||
|
||||
do_migration(&db);
|
||||
|
||||
Ok(Self {
|
||||
|
||||
@ -341,6 +341,24 @@ async fn use_item(ctx: &Context, msg: &Message, args: Args) -> CommandResult {
|
||||
msg.reply(&ctx.http, "You're trusty helmet regards you helmetly")
|
||||
.await?;
|
||||
}
|
||||
ItemType::TacticalNuke => {
|
||||
let mut users: Vec<User> = global_data.db.filter(|_, _user: &User| {
|
||||
true
|
||||
}
|
||||
)?.collect();
|
||||
|
||||
for user in &mut users {
|
||||
for item in &mut user.inventory.inventory {
|
||||
if item.item_type == ItemType::KillGun || item.item_type == ItemType::CancelRay || item.item_type == ItemType::CancelInsurance || item.item_type == ItemType::Helmet {
|
||||
item.quantity = 0;
|
||||
}
|
||||
}
|
||||
|
||||
global_data.db.insert(user.clone())?;
|
||||
}
|
||||
|
||||
msg.reply(&ctx.http, "I have become cancel, the canceller of worlds. https://tenor.com/view/explosion-mushroom-cloud-atomic-bomb-bomb-boom-gif-4464831").await?;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
@ -455,6 +473,10 @@ pub async fn restock_shop(ctx: &Context, global_data: &GlobalData) -> Result<(),
|
||||
bot_user
|
||||
.inventory
|
||||
.give_item(ItemType::Helmet, thread_rng().gen_range(1..=3), None);
|
||||
|
||||
bot_user
|
||||
.inventory
|
||||
.give_item(ItemType::TacticalNuke, thread_rng().gen_range(0..=1), None);
|
||||
|
||||
loop {
|
||||
let mut dir = tokio::fs::read_dir(&global_data.cfg.nft_path).await?;
|
||||
|
||||
@ -36,6 +36,7 @@ pub enum ItemType {
|
||||
KillGun,
|
||||
CancelRay,
|
||||
Helmet,
|
||||
TacticalNuke,
|
||||
}
|
||||
|
||||
impl ItemType {
|
||||
@ -51,6 +52,7 @@ impl ItemType {
|
||||
ItemType::KillGun => "Used to kill people. `!use kill gun @Austin`".to_string(),
|
||||
ItemType::CancelRay => "Used to cancel people. `!use cancel ray @Austin`".to_string(),
|
||||
ItemType::Helmet => "Automatically used to block being killed".to_string(),
|
||||
ItemType::TacticalNuke => "Reset everyone back to the stone age".to_string(),
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -85,6 +87,8 @@ impl FromStr for ItemType {
|
||||
Ok(ItemType::Helmet)
|
||||
} else if item.starts_with("cancelray") {
|
||||
Ok(ItemType::CancelRay)
|
||||
} else if item.starts_with("tacticalnuke") {
|
||||
Ok(ItemType::TacticalNuke)
|
||||
} else {
|
||||
Err(InventoryError::UnkownItem)
|
||||
}
|
||||
@ -102,6 +106,7 @@ impl Display for ItemType {
|
||||
ItemType::KillGun => "Kill Gun".to_string(),
|
||||
ItemType::Helmet => "Helmet".to_string(),
|
||||
ItemType::CancelRay => "Cancel Ray".to_string(),
|
||||
ItemType::TacticalNuke => "Tactical Nuke".to_string()
|
||||
};
|
||||
|
||||
write!(f, "{}", name)
|
||||
@ -128,14 +133,15 @@ pub struct InventorySlot {
|
||||
impl InventorySlot {
|
||||
pub fn value(&self) -> i64 {
|
||||
match self.item_type {
|
||||
ItemType::CancelInsurance => 500,
|
||||
ItemType::CancelInsurance => 10_000,
|
||||
ItemType::TheConceptOfLove => 300,
|
||||
ItemType::GoodFortune => 75,
|
||||
ItemType::Nft => 100,
|
||||
ItemType::LicenseToBeHorny => 100,
|
||||
ItemType::KillGun => 1000,
|
||||
ItemType::Helmet => 500,
|
||||
ItemType::CancelRay => 1000,
|
||||
ItemType::Nft => 250,
|
||||
ItemType::LicenseToBeHorny => 250,
|
||||
ItemType::KillGun => 2_000,
|
||||
ItemType::Helmet => 10_000,
|
||||
ItemType::CancelRay => 2_000,
|
||||
ItemType::TacticalNuke => 100_000,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@ mod migration3_remove_img;
|
||||
mod migration_4_update_random;
|
||||
mod migration_5_update_motivation;
|
||||
|
||||
const CURRENT_DB_VERSION: u64 = 5;
|
||||
pub const CURRENT_DB_VERSION: u64 = 5;
|
||||
|
||||
#[allow(clippy::single_match)]
|
||||
pub fn do_migration(db: &Database) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user