use super::{combat::change_health, comms::broadcast_to_room};
#[double]
use crate::db::DBTrans;
use crate::{
models::{
effect::{Effect, EffectParameter, EffectSet, EffectType},
item::Item,
task::{Task, TaskDetails, TaskMeta},
},
regular_tasks::{TaskHandler, TaskRunContext},
static_content::species::SpeciesType,
DResult,
};
use ansi::ansi;
use async_trait::async_trait;
use chrono::Utc;
use log::info;
use mockall_double::double;
use once_cell::sync::OnceCell;
use serde::{Deserialize, Serialize};
use std::collections::{BTreeMap, VecDeque};
use std::time;
#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq, Ord, PartialOrd)]
pub struct DelayedParameterEffect {
magnitude: i64,
delay: u64,
parameter: EffectParameter,
message: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq, Ord, PartialOrd)]
pub struct DelayedMessageEffect {
delay: u64,
message: String,
is_direct: bool,
}
pub struct DelayedParameterTaskHandler;
#[async_trait]
impl TaskHandler for DelayedParameterTaskHandler {
async fn do_task(&self, ctx: &mut TaskRunContext) -> DResult