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::Reflect -> reflect incoming attacks back to opponent
|
||||||
Skill::Ruin -> aoe stun
|
Skill::Ruin -> aoe stun
|
||||||
Skill::Slay -> red attack with bonus somethingorother for blue / maim no healing
|
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::Taunt -> redirect incomnig attacks to self
|
||||||
Skill::Toxic -> apply debuff to attackers
|
Skill::Toxic -> apply debuff to attackers
|
||||||
|
|
||||||
colour speeds
|
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
|
make parry semi-aggressive
|
||||||
constants
|
constants
|
||||||
change to ownership pattern
|
change to ownership pattern
|
||||||
|
|||||||
@ -105,6 +105,8 @@ pub enum Effect {
|
|||||||
Empower,
|
Empower,
|
||||||
|
|
||||||
Invert,
|
Invert,
|
||||||
|
Strangle,
|
||||||
|
Strangling,
|
||||||
|
|
||||||
// magic
|
// magic
|
||||||
Hex,
|
Hex,
|
||||||
@ -145,6 +147,8 @@ impl Effect {
|
|||||||
Category::Red => false,
|
Category::Red => false,
|
||||||
_ => false,
|
_ => false,
|
||||||
},
|
},
|
||||||
|
Effect::Strangle => skill != Skill::StrangleTick,
|
||||||
|
Effect::Strangling => true,
|
||||||
Effect::Banish => true,
|
Effect::Banish => true,
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
@ -155,6 +159,8 @@ impl Effect {
|
|||||||
Effect::Stun => true,
|
Effect::Stun => true,
|
||||||
Effect::Hex => true,
|
Effect::Hex => true,
|
||||||
Effect::Banish => true,
|
Effect::Banish => true,
|
||||||
|
Effect::Strangle => true,
|
||||||
|
Effect::Strangling => skill != Skill::StrangleTick,
|
||||||
Effect::Silence => match skill.category() {
|
Effect::Silence => match skill.category() {
|
||||||
Category::Blue => true,
|
Category::Blue => true,
|
||||||
Category::Red => false,
|
Category::Red => false,
|
||||||
@ -229,6 +235,8 @@ impl Effect {
|
|||||||
Effect::Snare => Category::RedDebuff,
|
Effect::Snare => Category::RedDebuff,
|
||||||
Effect::Clutch => Category::RedBuff,
|
Effect::Clutch => Category::RedBuff,
|
||||||
Effect::Empower => Category::RedBuff,
|
Effect::Empower => Category::RedBuff,
|
||||||
|
Effect::Strangle => Category::RedDebuff,
|
||||||
|
Effect::Strangling => Category::RedBuff,
|
||||||
|
|
||||||
// magic
|
// magic
|
||||||
Effect::Hex => Category::BlueDebuff,
|
Effect::Hex => Category::BlueDebuff,
|
||||||
@ -265,6 +273,9 @@ impl Effect {
|
|||||||
Effect::Parry => 1,
|
Effect::Parry => 1,
|
||||||
Effect::Clutch => 1,
|
Effect::Clutch => 1,
|
||||||
|
|
||||||
|
Effect::Strangle => 2,
|
||||||
|
Effect::Strangling => 2,
|
||||||
|
|
||||||
Effect::Vulnerable => 2,
|
Effect::Vulnerable => 2,
|
||||||
Effect::Snare => 2,
|
Effect::Snare => 2,
|
||||||
|
|
||||||
@ -329,12 +340,14 @@ pub enum Skill {
|
|||||||
Reflect,
|
Reflect,
|
||||||
Ruin,
|
Ruin,
|
||||||
Slay,
|
Slay,
|
||||||
Strangle,
|
|
||||||
Clutch,
|
Clutch,
|
||||||
Taunt,
|
Taunt,
|
||||||
Toxic,
|
Toxic,
|
||||||
Invert,
|
Invert,
|
||||||
|
|
||||||
|
Strangle,
|
||||||
|
StrangleTick,
|
||||||
|
|
||||||
Strike,
|
Strike,
|
||||||
Stun,
|
Stun,
|
||||||
// Evade, // actively evade
|
// Evade, // actively evade
|
||||||
@ -420,7 +433,8 @@ impl Skill {
|
|||||||
Skill::Recharge => Some(2),
|
Skill::Recharge => Some(2),
|
||||||
Skill::Ruin => Some(1),
|
Skill::Ruin => Some(1),
|
||||||
Skill::Slay => None,
|
Skill::Slay => None,
|
||||||
Skill::Strangle => Some(1),
|
Skill::Strangle => Some(2),
|
||||||
|
Skill::StrangleTick => None,
|
||||||
Skill::Clutch => Some(2),
|
Skill::Clutch => Some(2),
|
||||||
Skill::Taunt => Some(1),
|
Skill::Taunt => Some(1),
|
||||||
Skill::Toxic => Some(1),
|
Skill::Toxic => Some(1),
|
||||||
@ -441,12 +455,16 @@ impl Skill {
|
|||||||
Skill::Attack => Category::Red,
|
Skill::Attack => Category::Red,
|
||||||
Skill::Strike => Category::Red,
|
Skill::Strike => Category::Red,
|
||||||
|
|
||||||
|
Skill::Strangle => Category::Red,
|
||||||
|
Skill::StrangleTick => Category::Red,
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Nature
|
// Nature
|
||||||
// -----------------
|
// -----------------
|
||||||
Skill::Block => Category::Red, // reduce damage
|
Skill::Block => Category::Red, // reduce damage
|
||||||
Skill::Parry => Category::Red, // avoid all damage
|
Skill::Parry => Category::Red, // avoid all damage
|
||||||
Skill::Snare => Category::Red,
|
Skill::Snare => Category::Red,
|
||||||
|
Skill::Clutch => Category::Red,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -500,8 +518,6 @@ impl Skill {
|
|||||||
Skill::Reflect => Category::Blue,
|
Skill::Reflect => Category::Blue,
|
||||||
Skill::Ruin => Category::Blue,
|
Skill::Ruin => Category::Blue,
|
||||||
Skill::Slay => Category::Blue,
|
Skill::Slay => Category::Blue,
|
||||||
Skill::Strangle => Category::Blue,
|
|
||||||
Skill::Clutch => Category::Red,
|
|
||||||
Skill::Taunt => Category::Blue,
|
Skill::Taunt => Category::Blue,
|
||||||
Skill::Toxic => Category::Blue,
|
Skill::Toxic => Category::Blue,
|
||||||
|
|
||||||
@ -569,7 +585,8 @@ impl Skill {
|
|||||||
Skill::Reflect => 1,
|
Skill::Reflect => 1,
|
||||||
Skill::Ruin => 1,
|
Skill::Ruin => 1,
|
||||||
Skill::Slay => 1,
|
Skill::Slay => 1,
|
||||||
Skill::Strangle => 1,
|
Skill::Strangle => 5,
|
||||||
|
Skill::StrangleTick => 5,
|
||||||
Skill::Clutch => 1,
|
Skill::Clutch => 1,
|
||||||
Skill::Taunt => 1,
|
Skill::Taunt => 1,
|
||||||
Skill::Toxic => 1,
|
Skill::Toxic => 1,
|
||||||
@ -645,11 +662,12 @@ impl Skill {
|
|||||||
Skill::Triage => triage(source, target, resolution), // hot
|
Skill::Triage => triage(source, target, resolution), // hot
|
||||||
Skill::TriageTick => triage_tick(source, target, resolution), // hot
|
Skill::TriageTick => triage_tick(source, target, resolution), // hot
|
||||||
Skill::Clutch => clutch(source, target, resolution),
|
Skill::Clutch => clutch(source, target, resolution),
|
||||||
|
Skill::Strangle => strangle(source, target, resolution),
|
||||||
|
Skill::StrangleTick => strangle_tick(source, target, resolution),
|
||||||
|
|
||||||
Skill::Reflect => unimplemented!(),
|
Skill::Reflect => unimplemented!(),
|
||||||
Skill::Ruin => unimplemented!(),
|
Skill::Ruin => unimplemented!(),
|
||||||
Skill::Slay => unimplemented!(),
|
Skill::Slay => unimplemented!(),
|
||||||
Skill::Strangle => unimplemented!(),
|
|
||||||
Skill::Taunt => unimplemented!(),
|
Skill::Taunt => unimplemented!(),
|
||||||
Skill::Toxic => unimplemented!(),
|
Skill::Toxic => unimplemented!(),
|
||||||
|
|
||||||
@ -716,6 +734,35 @@ fn throw(_cryp: &mut Cryp, target: &mut Cryp, mut resolution: Resolution) -> Res
|
|||||||
return resolution;
|
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 {
|
fn block(_cryp: &mut Cryp, target: &mut Cryp, mut resolution: Resolution) -> Resolution {
|
||||||
let block = CrypEffect { effect: Effect::Block, duration: Effect::Block.duration(), tick: None };
|
let block = CrypEffect { effect: Effect::Block, duration: Effect::Block.duration(), tick: None };
|
||||||
|
|||||||
@ -161,6 +161,7 @@ impl Var {
|
|||||||
Var::Amplify => Some(Skill::Amplify),
|
Var::Amplify => Some(Skill::Amplify),
|
||||||
Var::Banish => Some(Skill::Banish),
|
Var::Banish => Some(Skill::Banish),
|
||||||
Var::Blast => Some(Skill::Blast),
|
Var::Blast => Some(Skill::Blast),
|
||||||
|
Var::Block => Some(Skill::Block),
|
||||||
Var::Curse => Some(Skill::Curse),
|
Var::Curse => Some(Skill::Curse),
|
||||||
Var::Empower => Some(Skill::Empower),
|
Var::Empower => Some(Skill::Empower),
|
||||||
Var::Haste => Some(Skill::Haste),
|
Var::Haste => Some(Skill::Haste),
|
||||||
@ -178,7 +179,7 @@ impl Var {
|
|||||||
// Var::Slay => Some(Skill::Slay),
|
// Var::Slay => Some(Skill::Slay),
|
||||||
Var::Slow => Some(Skill::Slow),
|
Var::Slow => Some(Skill::Slow),
|
||||||
Var::Snare => Some(Skill::Snare),
|
Var::Snare => Some(Skill::Snare),
|
||||||
// Var::Strangle => Some(Skill::Strangle),
|
Var::Strangle => Some(Skill::Strangle),
|
||||||
Var::Strike => Some(Skill::Strike),
|
Var::Strike => Some(Skill::Strike),
|
||||||
Var::Clutch => Some(Skill::Clutch),
|
Var::Clutch => Some(Skill::Clutch),
|
||||||
// Var::Taunt => Some(Skill::Taunt),
|
// Var::Taunt => Some(Skill::Taunt),
|
||||||
@ -243,6 +244,7 @@ impl From<Skill> for Var {
|
|||||||
Skill::Slow => Var::Slow,
|
Skill::Slow => Var::Slow,
|
||||||
Skill::Snare => Var::Snare,
|
Skill::Snare => Var::Snare,
|
||||||
Skill::Strike => Var::Strike,
|
Skill::Strike => Var::Strike,
|
||||||
|
Skill::Strangle => Var::Strangle,
|
||||||
Skill::Stun => Var::Stun,
|
Skill::Stun => Var::Stun,
|
||||||
Skill::Throw => Var::Throw,
|
Skill::Throw => Var::Throw,
|
||||||
Skill::Triage => Var::Triage,
|
Skill::Triage => Var::Triage,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user