injure
This commit is contained in:
parent
efb55f6024
commit
2494b2dd5f
@ -52,9 +52,10 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
|||||||
Skill::Empower => empower(source, target, resolutions), // increased phys damage
|
Skill::Empower => empower(source, target, resolutions), // increased phys damage
|
||||||
Skill::Haste => haste(source, target, resolutions), // speed slow
|
Skill::Haste => haste(source, target, resolutions), // speed slow
|
||||||
Skill::Heal => heal(source, target, resolutions),
|
Skill::Heal => heal(source, target, resolutions),
|
||||||
Skill::Hex => hex(source, target, resolutions), // todo prevent casting
|
Skill::Hex => hex(source, target, resolutions),
|
||||||
Skill::Hostility => hostility(source, target, resolutions),
|
Skill::Hostility => hostility(source, target, resolutions),
|
||||||
Skill::Invert => invert(source, target, resolutions), // todo prevent casting
|
Skill::Invert => invert(source, target, resolutions),
|
||||||
|
Skill::Injure => injure(source, target, resolutions),
|
||||||
Skill::Parry => parry(source, target, resolutions),
|
Skill::Parry => parry(source, target, resolutions),
|
||||||
Skill::Purge => purge(source, target, resolutions), // dispel all buffs
|
Skill::Purge => purge(source, target, resolutions), // dispel all buffs
|
||||||
Skill::Purify => purify(source, target, resolutions), // dispel all debuffs
|
Skill::Purify => purify(source, target, resolutions), // dispel all debuffs
|
||||||
@ -68,7 +69,7 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
|||||||
Skill::SiphonTick => siphon_tick(source, target, resolutions), // hot
|
Skill::SiphonTick => siphon_tick(source, target, resolutions), // hot
|
||||||
Skill::Slay => unimplemented!(),
|
Skill::Slay => unimplemented!(),
|
||||||
Skill::Slow => slow(source, target, resolutions), // speed slow
|
Skill::Slow => slow(source, target, resolutions), // speed slow
|
||||||
Skill::Snare => snare(source, target, resolutions), // TODO prevent physical moves
|
Skill::Snare => snare(source, target, resolutions),
|
||||||
Skill::Strangle => strangle(source, target, resolutions),
|
Skill::Strangle => strangle(source, target, resolutions),
|
||||||
Skill::StrangleTick => strangle_tick(source, target, resolutions),
|
Skill::StrangleTick => strangle_tick(source, target, resolutions),
|
||||||
Skill::Strike => strike(source, target, resolutions),
|
Skill::Strike => strike(source, target, resolutions),
|
||||||
@ -226,6 +227,7 @@ pub enum Effect {
|
|||||||
Blind,
|
Blind,
|
||||||
Snare,
|
Snare,
|
||||||
Clutch,
|
Clutch,
|
||||||
|
Injured,
|
||||||
|
|
||||||
Reflect,
|
Reflect,
|
||||||
|
|
||||||
@ -289,6 +291,11 @@ impl Effect {
|
|||||||
Effect::Strangle => skill != Skill::StrangleTick,
|
Effect::Strangle => skill != Skill::StrangleTick,
|
||||||
Effect::Strangling => true,
|
Effect::Strangling => true,
|
||||||
Effect::Banish => true,
|
Effect::Banish => true,
|
||||||
|
Effect::Injured => match skill.category() {
|
||||||
|
Category::Green => true,
|
||||||
|
Category::GreenTick => true,
|
||||||
|
_ => false,
|
||||||
|
},
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -314,6 +321,7 @@ impl Effect {
|
|||||||
|
|
||||||
Effect::Ko => match skill.category() {
|
Effect::Ko => match skill.category() {
|
||||||
Category::BlueTick => false,
|
Category::BlueTick => false,
|
||||||
|
Category::GreenTick => false,
|
||||||
_ => true,
|
_ => true,
|
||||||
},
|
},
|
||||||
_ => false,
|
_ => false,
|
||||||
@ -380,6 +388,7 @@ impl Effect {
|
|||||||
Effect::Clutch => Category::RedBuff,
|
Effect::Clutch => Category::RedBuff,
|
||||||
Effect::Taunt => Category::RedBuff,
|
Effect::Taunt => Category::RedBuff,
|
||||||
Effect::Empower => Category::RedBuff,
|
Effect::Empower => Category::RedBuff,
|
||||||
|
Effect::Injured => Category::RedDebuff,
|
||||||
Effect::Strangle => Category::RedDebuff,
|
Effect::Strangle => Category::RedDebuff,
|
||||||
Effect::Strangling => Category::RedBuff,
|
Effect::Strangling => Category::RedBuff,
|
||||||
|
|
||||||
@ -428,6 +437,8 @@ impl Effect {
|
|||||||
|
|
||||||
Effect::Reflect => 1,
|
Effect::Reflect => 1,
|
||||||
|
|
||||||
|
Effect::Injured => 2,
|
||||||
|
|
||||||
Effect::Strangle => 2,
|
Effect::Strangle => 2,
|
||||||
Effect::Strangling => 2,
|
Effect::Strangling => 2,
|
||||||
|
|
||||||
@ -483,6 +494,7 @@ pub enum Category {
|
|||||||
BlueBuff,
|
BlueBuff,
|
||||||
BlueTick,
|
BlueTick,
|
||||||
Green,
|
Green,
|
||||||
|
GreenTick,
|
||||||
GreenDamage,
|
GreenDamage,
|
||||||
GreenBuff,
|
GreenBuff,
|
||||||
Ko,
|
Ko,
|
||||||
@ -499,6 +511,7 @@ pub enum Skill {
|
|||||||
Parry, // avoid all damage
|
Parry, // avoid all damage
|
||||||
Riposte,
|
Riposte,
|
||||||
Snare,
|
Snare,
|
||||||
|
Injure,
|
||||||
|
|
||||||
Recharge,
|
Recharge,
|
||||||
Reflect,
|
Reflect,
|
||||||
@ -607,6 +620,7 @@ impl Skill {
|
|||||||
Skill::StrangleTick => None,
|
Skill::StrangleTick => None,
|
||||||
Skill::Clutch => Some(2),
|
Skill::Clutch => Some(2),
|
||||||
Skill::Taunt => Some(1),
|
Skill::Taunt => Some(1),
|
||||||
|
Skill::Injure => Some(2),
|
||||||
|
|
||||||
Skill::Corrupt => Some(1),
|
Skill::Corrupt => Some(1),
|
||||||
Skill::CorruptionTick => None,
|
Skill::CorruptionTick => None,
|
||||||
@ -628,39 +642,30 @@ impl Skill {
|
|||||||
match self {
|
match self {
|
||||||
Skill::Attack => Category::Red,
|
Skill::Attack => Category::Red,
|
||||||
Skill::Strike => Category::Red,
|
Skill::Strike => Category::Red,
|
||||||
|
Skill::Injure => Category::Red,
|
||||||
Skill::Strangle => Category::Red,
|
Skill::Strangle => Category::Red,
|
||||||
Skill::StrangleTick => Category::Red,
|
Skill::StrangleTick => Category::Red,
|
||||||
|
|
||||||
// -----------------
|
|
||||||
// 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::Riposte => Category::Red, // avoid all damage
|
Skill::Riposte => Category::Red, // avoid all damage
|
||||||
Skill::Snare => Category::Red,
|
Skill::Snare => Category::Red,
|
||||||
Skill::Clutch => Category::Red,
|
Skill::Clutch => Category::Red,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Skill::Stun => Category::Red,
|
Skill::Stun => Category::Red,
|
||||||
|
Skill::Slay => Category::Red,
|
||||||
|
Skill::Taunt => Category::Red,
|
||||||
|
|
||||||
// -----------------
|
Skill::Heal => Category::Green,
|
||||||
// Technology
|
Skill::Triage => Category::Green, // hot
|
||||||
// -----------------
|
Skill::TriageTick => Category::GreenTick, // hot
|
||||||
|
Skill::Throw => Category::Green,
|
||||||
// -----------------
|
Skill::Empower => Category::Green,
|
||||||
// Preservation
|
Skill::Shield => Category::Green,
|
||||||
// -----------------
|
Skill::Purify => Category::Green,
|
||||||
Skill::Heal => Category::Red,
|
Skill::Recharge => Category::Green,
|
||||||
Skill::Triage => Category::Blue, // hot
|
Skill::Reflect => Category::Green,
|
||||||
Skill::TriageTick => Category::BlueTick, // hot
|
Skill::Haste => Category::Green,
|
||||||
Skill::Throw => Category::Red, // no damage stun, adds vulnerable
|
|
||||||
|
|
||||||
// -----------------
|
|
||||||
// Destruction
|
|
||||||
// -----------------
|
|
||||||
Skill::Invert => Category::Green,
|
Skill::Invert => Category::Green,
|
||||||
|
|
||||||
Skill::Blast => Category::Blue,
|
Skill::Blast => Category::Blue,
|
||||||
Skill::Amplify => Category::Blue,
|
Skill::Amplify => Category::Blue,
|
||||||
Skill::Decay => Category::Blue, // dot
|
Skill::Decay => Category::Blue, // dot
|
||||||
@ -668,35 +673,13 @@ impl Skill {
|
|||||||
Skill::Siphon => Category::Blue,
|
Skill::Siphon => Category::Blue,
|
||||||
Skill::SiphonTick => Category::BlueTick, // hot
|
Skill::SiphonTick => Category::BlueTick, // hot
|
||||||
Skill::Curse => Category::Blue,
|
Skill::Curse => Category::Blue,
|
||||||
|
|
||||||
// -----------------
|
|
||||||
// Purity
|
|
||||||
// -----------------
|
|
||||||
Skill::Empower => Category::Red,
|
|
||||||
Skill::Shield => Category::Blue,
|
|
||||||
Skill::Silence => Category::Blue,
|
Skill::Silence => Category::Blue,
|
||||||
Skill::Purify => Category::Blue,
|
|
||||||
Skill::Purge => Category::Blue,
|
Skill::Purge => Category::Blue,
|
||||||
|
|
||||||
// -----------------
|
|
||||||
// Chaos
|
|
||||||
// -----------------
|
|
||||||
Skill::Banish => Category::Blue,
|
Skill::Banish => Category::Blue,
|
||||||
Skill::Hex => Category::Blue,
|
Skill::Hex => Category::Blue,
|
||||||
// Skill::Lag => 2, //
|
|
||||||
Skill::Haste => Category::Blue,
|
|
||||||
Skill::Slow => Category::Blue,
|
Skill::Slow => Category::Blue,
|
||||||
|
|
||||||
|
|
||||||
// WRONG
|
|
||||||
Skill::Recharge => Category::Green,
|
|
||||||
Skill::Reflect => Category::Green,
|
|
||||||
Skill::Ruin => Category::Blue,
|
Skill::Ruin => Category::Blue,
|
||||||
Skill::Slay => Category::Red,
|
|
||||||
Skill::Taunt => Category::Red,
|
|
||||||
|
|
||||||
Skill::Hostility => Category::Blue,
|
Skill::Hostility => Category::Blue,
|
||||||
|
|
||||||
Skill::Corrupt => Category::Blue,
|
Skill::Corrupt => Category::Blue,
|
||||||
Skill::CorruptionTick => Category::Blue,
|
Skill::CorruptionTick => Category::Blue,
|
||||||
|
|
||||||
@ -804,6 +787,16 @@ fn strike(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions) -> Res
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn injure(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions) -> Resolutions {
|
||||||
|
let amount = source.red_damage();
|
||||||
|
target.deal_red_damage(Skill::Injure, amount)
|
||||||
|
.into_iter()
|
||||||
|
.for_each(|e| results.push(Resolution::new(source, target).event(e)));
|
||||||
|
|
||||||
|
let effect = CrypEffect::new(Effect::Injured);
|
||||||
|
results.push(Resolution::new(source, target).event(target.add_effect(Skill::Injure, effect)));
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
fn stun(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions) -> Resolutions {
|
fn stun(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions) -> Resolutions {
|
||||||
let effect = CrypEffect::new(Effect::Stun);
|
let effect = CrypEffect::new(Effect::Stun);
|
||||||
@ -1188,6 +1181,19 @@ mod tests {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn injure_test() {
|
||||||
|
let mut x = Cryp::new()
|
||||||
|
.named(&"muji".to_string());
|
||||||
|
|
||||||
|
let mut y = Cryp::new()
|
||||||
|
.named(&"camel".to_string());
|
||||||
|
|
||||||
|
resolve(Skill::Injure, &mut x, &mut y, vec![]);
|
||||||
|
assert!(y.immune(Skill::Heal).is_some());
|
||||||
|
// resolutions = heal(&mut y.clone(), &mut y, resolutions);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn invert_test() {
|
fn invert_test() {
|
||||||
let mut x = Cryp::new()
|
let mut x = Cryp::new()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user