diff --git a/client/assets/styles/game.css b/client/assets/styles/game.css index def3b571..b4704296 100644 --- a/client/assets/styles/game.css +++ b/client/assets/styles/game.css @@ -1,6 +1,7 @@ /* GAME */ .game { + overflow: hidden; display: grid; grid-template-rows: min-content min-content 1fr 1.5fr; grid-template-areas: diff --git a/server/src/item.rs b/server/src/item.rs index 2eefbbb0..807bb2cf 100644 --- a/server/src/item.rs +++ b/server/src/item.rs @@ -312,7 +312,8 @@ impl Item { "Hits twice for red and blue damage. Damage is random 0 to 30% + {:?}% red and blue power.", self.into_skill().unwrap().multiplier()), - Item::Clutch => format!("description"), // WIP + Item::Clutch => format!("Cryp cannot be KO'd while active. + Additionally provides immunity to disables."), Item::Corrupt => format!( "Self targetting defensive for {:?}T. Applies corrupt to attackers dealing blue damage {:?}% blue power per turn for {:?}T.", diff --git a/server/src/skill.rs b/server/src/skill.rs index 4728450c..eee15e6c 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -316,32 +316,28 @@ pub type Cooldown = Option; #[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)] pub enum Effect { - // physical - Stun, - Buff, - Parry, - Block, - Bleed, - Leech, Airborne, - Untouchable, - Deadly, - Vulnerable, - Fury, + Bleed, Blind, - Snare, + Block, + Buff, Clutch, - Injured, - - Reflect, - - Taunt, + Deadly, + Fury, Impurity, + Injured, Invert, + Leech, + Parry, + Reflect, + Snare, Strangle, Strangling, + Stun, + Taunt, + Untouchable, + Vulnerable, - // magic Hex, Ruin, Curse, @@ -388,6 +384,14 @@ impl Effect { _ => false, }, Effect::Banish => true, + Effect::Clutch => [ + Skill::Stun, + Skill::Hex, + Skill::Silence, + Skill::Ruin, + Skill::Strangle, + Skill::Snare + ].contains(&skill), Effect::Injured => match skill.category() { Category::Green => true, Category::GreenTick => true, @@ -568,77 +572,52 @@ pub enum Skill { Block, // reduce damage Stun, - // ----------------- - // Nature - // ----------------- - Parry, // avoid all damage - Riposte, - Snare, + // Boost -- sounds nice + // Evade, // actively evade + // Nightmare, + // Sleep, + Amplify, + Banish, + Blast, + Chaos, + Clutch, + Corrupt, + CorruptionTick, + Curse, + Decay, // dot + DecayTick, // dot + Haste, + HasteStrike, + Heal, + Hex, + Hostility, + ImpureBlast, + Impurity, Injure, - + Invert, + Parry, // avoid all damage + Purge, + Purify, Recharge, Reflect, + Riposte, Ruin, + Scatter, + Silence, + Siphon, + SiphonTick, Slay, Sleep, - Clutch, - Taunt, - Impurity, - ImpureBlast, - Invert, - + Snare, Strangle, StrangleTick, - Strike, StrikeII, StrikeIII, - // Evade, // actively evade - - // ----------------- - // Nonviolence - // ----------------- - Heal, + Taunt, + Throw, // no damage stun, adds vulnerable Triage, // hot TriageTick, - Throw, // no damage stun, adds vulnerable - - // Sleep, - // Nightmare, - - // ------------------- - // Destruction - // ------------------- - Blast, - Amplify, - Decay, // dot - DecayTick, // dot - Siphon, - SiphonTick, - Curse, - - Hostility, - - Corrupt, - CorruptionTick, - - - // ----------------- - // Purity - // ----------------- - Scatter, - Silence, - Purify, - Purge, - - // ----------------- - // Chaos - // ----------------- - Banish, - Chaos, - Hex, - Haste, - HasteStrike, // used by tests, no cd, 100% multiplier TestAttack, @@ -1512,6 +1491,13 @@ mod tests { clutch(&mut y.clone(), &mut y, vec![], Skill::Clutch); assert!(y.affected(Effect::Clutch)); + let mut results = hex(&mut x, &mut y, vec![], Skill::Hex); + let Resolution { source: _, target: _, event } = results.remove(0); + match event { + Event::Immunity { skill: _, immunity } => assert!(immunity.contains(&Effect::Clutch)), + _ => panic!("not immune cluthc"), + }; + let mut results = attack(&mut x, &mut y, vec![], Skill::Attack); assert!(y.green_life() == 1);