strangle
This commit is contained in:
parent
d814e20656
commit
17ecfdb41e
@ -20,13 +20,16 @@ ensure all skills impl
|
||||
Skill::Reflect -> reflect incoming attacks back to opponent
|
||||
Skill::Ruin -> aoe stun
|
||||
Skill::Slay -> red attack with bonus somethingorother for blue / maim no healing
|
||||
Skill::Strangle -> stun + dot
|
||||
Skill::Clutch -> cannot go below 1hp
|
||||
Skill::Taunt -> redirect incomnig attacks to self
|
||||
Skill::Toxic -> apply debuff to attackers
|
||||
|
||||
colour speeds
|
||||
|
||||
ticks apply on first turn
|
||||
update speed of rest of stack on cryp speed change
|
||||
include target name in effect resolution
|
||||
eg strangle applies buff to self
|
||||
|
||||
make parry semi-aggressive
|
||||
constants
|
||||
change to ownership pattern
|
||||
|
||||
@ -105,6 +105,8 @@ pub enum Effect {
|
||||
Empower,
|
||||
|
||||
Invert,
|
||||
Strangle,
|
||||
Strangling,
|
||||
|
||||
// magic
|
||||
Hex,
|
||||
@ -145,6 +147,8 @@ impl Effect {
|
||||
Category::Red => false,
|
||||
_ => false,
|
||||
},
|
||||
Effect::Strangle => skill != Skill::StrangleTick,
|
||||
Effect::Strangling => true,
|
||||
Effect::Banish => true,
|
||||
_ => false,
|
||||
}
|
||||
@ -155,6 +159,8 @@ impl Effect {
|
||||
Effect::Stun => true,
|
||||
Effect::Hex => true,
|
||||
Effect::Banish => true,
|
||||
Effect::Strangle => true,
|
||||
Effect::Strangling => skill != Skill::StrangleTick,
|
||||
Effect::Silence => match skill.category() {
|
||||
Category::Blue => true,
|
||||
Category::Red => false,
|
||||
@ -229,6 +235,8 @@ impl Effect {
|
||||
Effect::Snare => Category::RedDebuff,
|
||||
Effect::Clutch => Category::RedBuff,
|
||||
Effect::Empower => Category::RedBuff,
|
||||
Effect::Strangle => Category::RedDebuff,
|
||||
Effect::Strangling => Category::RedBuff,
|
||||
|
||||
// magic
|
||||
Effect::Hex => Category::BlueDebuff,
|
||||
@ -265,6 +273,9 @@ impl Effect {
|
||||
Effect::Parry => 1,
|
||||
Effect::Clutch => 1,
|
||||
|
||||
Effect::Strangle => 2,
|
||||
Effect::Strangling => 2,
|
||||
|
||||
Effect::Vulnerable => 2,
|
||||
Effect::Snare => 2,
|
||||
|
||||
@ -329,12 +340,14 @@ pub enum Skill {
|
||||
Reflect,
|
||||
Ruin,
|
||||
Slay,
|
||||
Strangle,
|
||||
Clutch,
|
||||
Taunt,
|
||||
Toxic,
|
||||
Invert,
|
||||
|
||||
Strangle,
|
||||
StrangleTick,
|
||||
|
||||
Strike,
|
||||
Stun,
|
||||
// Evade, // actively evade
|
||||
@ -420,7 +433,8 @@ impl Skill {
|
||||
Skill::Recharge => Some(2),
|
||||
Skill::Ruin => Some(1),
|
||||
Skill::Slay => None,
|
||||
Skill::Strangle => Some(1),
|
||||
Skill::Strangle => Some(2),
|
||||
Skill::StrangleTick => None,
|
||||
Skill::Clutch => Some(2),
|
||||
Skill::Taunt => Some(1),
|
||||
Skill::Toxic => Some(1),
|
||||
@ -441,12 +455,16 @@ impl Skill {
|
||||
Skill::Attack => Category::Red,
|
||||
Skill::Strike => Category::Red,
|
||||
|
||||
Skill::Strangle => Category::Red,
|
||||
Skill::StrangleTick => Category::Red,
|
||||
|
||||
// -----------------
|
||||
// Nature
|
||||
// -----------------
|
||||
Skill::Block => Category::Red, // reduce damage
|
||||
Skill::Parry => Category::Red, // avoid all damage
|
||||
Skill::Snare => Category::Red,
|
||||
Skill::Clutch => Category::Red,
|
||||
|
||||
|
||||
|
||||
@ -500,8 +518,6 @@ impl Skill {
|
||||
Skill::Reflect => Category::Blue,
|
||||
Skill::Ruin => Category::Blue,
|
||||
Skill::Slay => Category::Blue,
|
||||
Skill::Strangle => Category::Blue,
|
||||
Skill::Clutch => Category::Red,
|
||||
Skill::Taunt => Category::Blue,
|
||||
Skill::Toxic => Category::Blue,
|
||||
|
||||
@ -569,7 +585,8 @@ impl Skill {
|
||||
Skill::Reflect => 1,
|
||||
Skill::Ruin => 1,
|
||||
Skill::Slay => 1,
|
||||
Skill::Strangle => 1,
|
||||
Skill::Strangle => 5,
|
||||
Skill::StrangleTick => 5,
|
||||
Skill::Clutch => 1,
|
||||
Skill::Taunt => 1,
|
||||
Skill::Toxic => 1,
|
||||
@ -645,11 +662,12 @@ impl Skill {
|
||||
Skill::Triage => triage(source, target, resolution), // hot
|
||||
Skill::TriageTick => triage_tick(source, target, resolution), // hot
|
||||
Skill::Clutch => clutch(source, target, resolution),
|
||||
Skill::Strangle => strangle(source, target, resolution),
|
||||
Skill::StrangleTick => strangle_tick(source, target, resolution),
|
||||
|
||||
Skill::Reflect => unimplemented!(),
|
||||
Skill::Ruin => unimplemented!(),
|
||||
Skill::Slay => unimplemented!(),
|
||||
Skill::Strangle => unimplemented!(),
|
||||
Skill::Taunt => unimplemented!(),
|
||||
Skill::Toxic => unimplemented!(),
|
||||
|
||||
@ -716,6 +734,35 @@ fn throw(_cryp: &mut Cryp, target: &mut Cryp, mut resolution: Resolution) -> Res
|
||||
return resolution;
|
||||
}
|
||||
|
||||
fn strangle(cryp: &mut Cryp, target: &mut Cryp, mut resolution: Resolution) -> Resolution {
|
||||
let target_stun = CrypEffect {
|
||||
effect: Effect::Strangle,
|
||||
duration: Effect::Strangle.duration(),
|
||||
tick: Some(Cast::new_tick(cryp, target, Skill::StrangleTick))
|
||||
};
|
||||
let attacker_immunity = CrypEffect { effect: Effect::Strangling, duration: Effect::Strangling.duration(), tick: None };
|
||||
|
||||
resolution.results.push(target.add_effect(Skill::Strangle, target_stun));
|
||||
resolution.results.push(cryp.add_effect(Skill::Strangle, attacker_immunity));
|
||||
|
||||
return resolution;
|
||||
}
|
||||
|
||||
fn strangle_tick(cryp: &mut Cryp, target: &mut Cryp, mut resolution: Resolution) -> Resolution {
|
||||
let amount = cryp.red_damage();
|
||||
resolution.results.push(target.deal_red_damage(Skill::StrangleTick, amount));
|
||||
|
||||
// remove immunity if target ko
|
||||
if target.is_ko() {
|
||||
let i = cryp.effects
|
||||
.iter()
|
||||
.position(|e| e.effect == Effect::Strangling)
|
||||
.expect("no strangling on cryp");
|
||||
cryp.effects.remove(i);
|
||||
}
|
||||
|
||||
return resolution;
|
||||
}
|
||||
|
||||
fn block(_cryp: &mut Cryp, target: &mut Cryp, mut resolution: Resolution) -> Resolution {
|
||||
let block = CrypEffect { effect: Effect::Block, duration: Effect::Block.duration(), tick: None };
|
||||
|
||||
@ -161,6 +161,7 @@ impl Var {
|
||||
Var::Amplify => Some(Skill::Amplify),
|
||||
Var::Banish => Some(Skill::Banish),
|
||||
Var::Blast => Some(Skill::Blast),
|
||||
Var::Block => Some(Skill::Block),
|
||||
Var::Curse => Some(Skill::Curse),
|
||||
Var::Empower => Some(Skill::Empower),
|
||||
Var::Haste => Some(Skill::Haste),
|
||||
@ -178,7 +179,7 @@ impl Var {
|
||||
// Var::Slay => Some(Skill::Slay),
|
||||
Var::Slow => Some(Skill::Slow),
|
||||
Var::Snare => Some(Skill::Snare),
|
||||
// Var::Strangle => Some(Skill::Strangle),
|
||||
Var::Strangle => Some(Skill::Strangle),
|
||||
Var::Strike => Some(Skill::Strike),
|
||||
Var::Clutch => Some(Skill::Clutch),
|
||||
// Var::Taunt => Some(Skill::Taunt),
|
||||
@ -243,6 +244,7 @@ impl From<Skill> for Var {
|
||||
Skill::Slow => Var::Slow,
|
||||
Skill::Snare => Var::Snare,
|
||||
Skill::Strike => Var::Strike,
|
||||
Skill::Strangle => Var::Strangle,
|
||||
Skill::Stun => Var::Stun,
|
||||
Skill::Throw => Var::Throw,
|
||||
Skill::Triage => Var::Triage,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user