traits
This commit is contained in:
parent
085db76001
commit
5d76593901
@ -322,23 +322,11 @@ pub enum Skill {
|
|||||||
Parry, // avoid all damage
|
Parry, // avoid all damage
|
||||||
Snare,
|
Snare,
|
||||||
|
|
||||||
Paralyse,
|
|
||||||
|
|
||||||
Strangle, // physical dot and disable
|
|
||||||
Strike,
|
Strike,
|
||||||
Stun,
|
Stun,
|
||||||
// Evade, // actively evade
|
// Evade, // actively evade
|
||||||
|
|
||||||
|
|
||||||
// -----------------
|
|
||||||
// Technology
|
|
||||||
// -----------------
|
|
||||||
Replicate,
|
|
||||||
Swarm,
|
|
||||||
Orbit,
|
|
||||||
Repair,
|
|
||||||
Scan, // track?
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Nonviolence
|
// Nonviolence
|
||||||
// -----------------
|
// -----------------
|
||||||
@ -346,9 +334,6 @@ pub enum Skill {
|
|||||||
Triage, // hot
|
Triage, // hot
|
||||||
TriageTick,
|
TriageTick,
|
||||||
Throw, // no damage stun, adds vulnerable
|
Throw, // no damage stun, adds vulnerable
|
||||||
Charm,
|
|
||||||
Calm,
|
|
||||||
Rez,
|
|
||||||
|
|
||||||
// Sleep,
|
// Sleep,
|
||||||
// Nightmare,
|
// Nightmare,
|
||||||
@ -363,29 +348,21 @@ pub enum Skill {
|
|||||||
Siphon,
|
Siphon,
|
||||||
SiphonTick,
|
SiphonTick,
|
||||||
Curse,
|
Curse,
|
||||||
Plague, // aoe dot
|
|
||||||
Ruin, // aoe
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Purity
|
// Purity
|
||||||
// -----------------
|
// -----------------
|
||||||
Empower,
|
Empower,
|
||||||
Slay,
|
|
||||||
Shield,
|
Shield,
|
||||||
Silence,
|
Silence,
|
||||||
Inquiry,
|
|
||||||
Purify,
|
Purify,
|
||||||
Purge,
|
Purge,
|
||||||
// Precision,
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Chaos
|
// Chaos
|
||||||
// -----------------
|
// -----------------
|
||||||
Banish,
|
Banish,
|
||||||
Hex,
|
Hex,
|
||||||
Fear,
|
|
||||||
Taunt,
|
|
||||||
Pause, // speed slow
|
|
||||||
Haste,
|
Haste,
|
||||||
Slow,
|
Slow,
|
||||||
|
|
||||||
@ -410,21 +387,13 @@ impl Skill {
|
|||||||
Skill::Parry => None, // avoid all damage
|
Skill::Parry => None, // avoid all damage
|
||||||
Skill::Snare => Some(1),
|
Skill::Snare => Some(1),
|
||||||
|
|
||||||
Skill::Paralyse => Some(1),
|
|
||||||
Skill::Strangle => Some(2),
|
|
||||||
|
|
||||||
// Strangle
|
|
||||||
|
|
||||||
Skill::Stun => Some(1),
|
Skill::Stun => Some(1),
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Technology
|
// Technology
|
||||||
// -----------------
|
// -----------------
|
||||||
Skill::Replicate => None,
|
|
||||||
Skill::Swarm => Some(2),
|
|
||||||
Skill::Orbit => Some(1),
|
|
||||||
Skill::Repair => None,
|
|
||||||
Skill::Scan => Some(1), // track?
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Preservation
|
// Preservation
|
||||||
@ -433,9 +402,6 @@ impl Skill {
|
|||||||
Skill::Triage => None, // hot
|
Skill::Triage => None, // hot
|
||||||
Skill::TriageTick => None,
|
Skill::TriageTick => None,
|
||||||
Skill::Throw => Some(1), // no damage stun, adds vulnerable
|
Skill::Throw => Some(1), // no damage stun, adds vulnerable
|
||||||
Skill::Charm => Some(1),
|
|
||||||
Skill::Calm => None,
|
|
||||||
Skill::Rez => Some(2),
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Destruction
|
// Destruction
|
||||||
@ -447,18 +413,13 @@ impl Skill {
|
|||||||
Skill::Siphon => Some(1),
|
Skill::Siphon => Some(1),
|
||||||
Skill::SiphonTick => None,
|
Skill::SiphonTick => None,
|
||||||
Skill::Curse => Some(1),
|
Skill::Curse => Some(1),
|
||||||
Skill::Plague => Some(1), // aoe dot
|
|
||||||
Skill::Ruin => Some(2), // aoe
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Purity
|
// Purity
|
||||||
// -----------------
|
// -----------------
|
||||||
// Skill::Precision => None,
|
|
||||||
Skill::Empower => Some(1),
|
Skill::Empower => Some(1),
|
||||||
Skill::Slay => None,
|
|
||||||
Skill::Shield => None,
|
Skill::Shield => None,
|
||||||
Skill::Silence => Some(1),
|
Skill::Silence => Some(1),
|
||||||
Skill::Inquiry => Some(1),
|
|
||||||
Skill::Purify => None,
|
Skill::Purify => None,
|
||||||
Skill::Purge => None,
|
Skill::Purge => None,
|
||||||
|
|
||||||
@ -467,9 +428,6 @@ impl Skill {
|
|||||||
// -----------------
|
// -----------------
|
||||||
Skill::Banish => Some(1),
|
Skill::Banish => Some(1),
|
||||||
Skill::Hex => None,
|
Skill::Hex => None,
|
||||||
Skill::Fear => None,
|
|
||||||
Skill::Taunt => Some(1),
|
|
||||||
Skill::Pause => Some(1), // speed slow
|
|
||||||
Skill::Haste => None,
|
Skill::Haste => None,
|
||||||
Skill::Slow => None,
|
Skill::Slow => None,
|
||||||
|
|
||||||
@ -496,21 +454,13 @@ impl Skill {
|
|||||||
Skill::Parry => Category::Red, // avoid all damage
|
Skill::Parry => Category::Red, // avoid all damage
|
||||||
Skill::Snare => Category::Red,
|
Skill::Snare => Category::Red,
|
||||||
|
|
||||||
Skill::Paralyse => Category::Red,
|
|
||||||
Skill::Strangle => Category::Red,
|
|
||||||
|
|
||||||
// Strangle
|
|
||||||
|
|
||||||
Skill::Stun => Category::Red,
|
Skill::Stun => Category::Red,
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Technology
|
// Technology
|
||||||
// -----------------
|
// -----------------
|
||||||
Skill::Replicate => Category::Red,
|
|
||||||
Skill::Swarm => Category::Red,
|
|
||||||
Skill::Orbit => Category::Red,
|
|
||||||
Skill::Repair => Category::Red,
|
|
||||||
Skill::Scan => Category::Red, // track?
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Preservation
|
// Preservation
|
||||||
@ -519,9 +469,6 @@ impl Skill {
|
|||||||
Skill::Triage => Category::Blue, // hot
|
Skill::Triage => Category::Blue, // hot
|
||||||
Skill::TriageTick => Category::BlueTick, // hot
|
Skill::TriageTick => Category::BlueTick, // hot
|
||||||
Skill::Throw => Category::Red, // no damage stun, adds vulnerable
|
Skill::Throw => Category::Red, // no damage stun, adds vulnerable
|
||||||
Skill::Charm => Category::Blue,
|
|
||||||
Skill::Calm => Category::Red,
|
|
||||||
Skill::Rez => Category::Blue,
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Destruction
|
// Destruction
|
||||||
@ -533,18 +480,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,
|
||||||
Skill::Plague => Category::Blue, // aoe dot
|
|
||||||
Skill::Ruin => Category::Blue, // aoe
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Purity
|
// Purity
|
||||||
// -----------------
|
// -----------------
|
||||||
// Skill::Precision => 1,
|
|
||||||
Skill::Empower => Category::Red,
|
Skill::Empower => Category::Red,
|
||||||
Skill::Slay => Category::Red,
|
|
||||||
Skill::Shield => Category::Blue,
|
Skill::Shield => Category::Blue,
|
||||||
Skill::Silence => Category::Blue,
|
Skill::Silence => Category::Blue,
|
||||||
Skill::Inquiry => Category::Blue,
|
|
||||||
Skill::Purify => Category::Blue,
|
Skill::Purify => Category::Blue,
|
||||||
Skill::Purge => Category::Blue,
|
Skill::Purge => Category::Blue,
|
||||||
|
|
||||||
@ -553,9 +495,6 @@ impl Skill {
|
|||||||
// -----------------
|
// -----------------
|
||||||
Skill::Banish => Category::Blue,
|
Skill::Banish => Category::Blue,
|
||||||
Skill::Hex => Category::Blue,
|
Skill::Hex => Category::Blue,
|
||||||
Skill::Fear => Category::Blue,
|
|
||||||
Skill::Taunt => Category::Blue,
|
|
||||||
Skill::Pause => Category::Blue, // extend durations
|
|
||||||
// Skill::Lag => 2, //
|
// Skill::Lag => 2, //
|
||||||
Skill::Haste => Category::Blue,
|
Skill::Haste => Category::Blue,
|
||||||
Skill::Slow => Category::Blue,
|
Skill::Slow => Category::Blue,
|
||||||
@ -593,8 +532,6 @@ impl Skill {
|
|||||||
// fast phys combat
|
// fast phys combat
|
||||||
Skill::Attack => 5,
|
Skill::Attack => 5,
|
||||||
Skill::Strike => 10,
|
Skill::Strike => 10,
|
||||||
Skill::Paralyse => 5,
|
|
||||||
Skill::Strangle => 5,
|
|
||||||
Skill::Banish => 5,
|
Skill::Banish => 5,
|
||||||
Skill::Blast => 5,
|
Skill::Blast => 5,
|
||||||
Skill::Decay => 5, // dot
|
Skill::Decay => 5, // dot
|
||||||
@ -602,7 +539,6 @@ impl Skill {
|
|||||||
// magic combat trickery
|
// magic combat trickery
|
||||||
Skill::Triage => 3, // hot
|
Skill::Triage => 3, // hot
|
||||||
Skill::Slow => 3,
|
Skill::Slow => 3,
|
||||||
Skill::Fear => 2,
|
|
||||||
Skill::Amplify => 3,
|
Skill::Amplify => 3,
|
||||||
Skill::Curse => 3,
|
Skill::Curse => 3,
|
||||||
Skill::Empower => 3,
|
Skill::Empower => 3,
|
||||||
@ -613,8 +549,6 @@ impl Skill {
|
|||||||
Skill::Siphon => 2,
|
Skill::Siphon => 2,
|
||||||
Skill::SiphonTick => 2, // hot
|
Skill::SiphonTick => 2, // hot
|
||||||
Skill::Hex => 2,
|
Skill::Hex => 2,
|
||||||
Skill::Pause => 2, // extend durations
|
|
||||||
Skill::Plague => 2, // aoe dot
|
|
||||||
Skill::Silence => 2,
|
Skill::Silence => 2,
|
||||||
Skill::Stun => 2,
|
Skill::Stun => 2,
|
||||||
Skill::Throw => 2, // no damage stun, adds vulnerable
|
Skill::Throw => 2, // no damage stun, adds vulnerable
|
||||||
@ -625,20 +559,7 @@ impl Skill {
|
|||||||
Skill::Purge => 1,
|
Skill::Purge => 1,
|
||||||
|
|
||||||
// unimplemented
|
// unimplemented
|
||||||
// Skill::Precision => 1,
|
|
||||||
// Skill::Lag => 2, //
|
// Skill::Lag => 2, //
|
||||||
Skill::Taunt => 10,
|
|
||||||
Skill::Ruin => 3, // aoe
|
|
||||||
Skill::Slay => 1,
|
|
||||||
Skill::Charm => 2,
|
|
||||||
Skill::Calm => 2,
|
|
||||||
Skill::Inquiry => 2,
|
|
||||||
Skill::Rez => 4,
|
|
||||||
Skill::Replicate => 1,
|
|
||||||
Skill::Swarm => 3,
|
|
||||||
Skill::Orbit => 2,
|
|
||||||
Skill::Repair => 1,
|
|
||||||
Skill::Scan => 2, // track?
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Test
|
// Test
|
||||||
@ -687,19 +608,12 @@ impl Skill {
|
|||||||
Skill::Parry => parry(source, target, resolution),
|
Skill::Parry => parry(source, target, resolution),
|
||||||
Skill::Snare => snare(source, target, resolution), // TODO prevent physical moves
|
Skill::Snare => snare(source, target, resolution), // TODO prevent physical moves
|
||||||
|
|
||||||
Skill::Paralyse => panic!("nyi"), // no physical moves
|
|
||||||
Skill::Strangle => panic!("nyi"), // no physical moves
|
|
||||||
|
|
||||||
Skill::Stun => stun(source, target, resolution),
|
Skill::Stun => stun(source, target, resolution),
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Technology
|
// Technology
|
||||||
// -----------------
|
// -----------------
|
||||||
Skill::Replicate => panic!("nyi"),
|
|
||||||
Skill::Swarm => panic!("nyi"),
|
|
||||||
Skill::Orbit => panic!("nyi"),
|
|
||||||
Skill::Repair => panic!("nyi"),
|
|
||||||
Skill::Scan => panic!("nyi"), // track?
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Preservation
|
// Preservation
|
||||||
@ -708,9 +622,6 @@ 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::Throw => throw(source, target, resolution), // no damage stun, adds vulnerable
|
Skill::Throw => throw(source, target, resolution), // no damage stun, adds vulnerable
|
||||||
Skill::Charm => panic!("nyi"), // target casts random spell on teammate
|
|
||||||
Skill::Calm => panic!("nyi"), // physical fear, taunt removal
|
|
||||||
Skill::Rez => panic!("nyi"),
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Destruction
|
// Destruction
|
||||||
@ -722,18 +633,13 @@ impl Skill {
|
|||||||
Skill::Siphon => siphon(source, target, resolution),
|
Skill::Siphon => siphon(source, target, resolution),
|
||||||
Skill::SiphonTick => siphon_tick(source, target, resolution), // hot
|
Skill::SiphonTick => siphon_tick(source, target, resolution), // hot
|
||||||
Skill::Curse => curse(source, target, resolution),
|
Skill::Curse => curse(source, target, resolution),
|
||||||
Skill::Plague => panic!("nyi"), // dot that spreads every turn
|
|
||||||
Skill::Ruin => panic!("nyi"), // aoe version of blast
|
|
||||||
|
|
||||||
// -----------------
|
// -----------------
|
||||||
// Purity
|
// Purity
|
||||||
// -----------------
|
// -----------------
|
||||||
// Skill::Precision => panic!("nyi"),
|
|
||||||
Skill::Empower => empower(source, target, resolution), // increased phys damage
|
Skill::Empower => empower(source, target, resolution), // increased phys damage
|
||||||
Skill::Slay => panic!("nyi"), // phys damage mult by target magic damage
|
|
||||||
Skill::Shield => shield(source, target, resolution), // target is immune to magic damage and fx
|
Skill::Shield => shield(source, target, resolution), // target is immune to magic damage and fx
|
||||||
Skill::Silence => silence(source, target, resolution), // target cannot cast spells
|
Skill::Silence => silence(source, target, resolution), // target cannot cast spells
|
||||||
Skill::Inquiry => panic!("nyi"), //
|
|
||||||
Skill::Purify => purify(source, target, resolution), // dispel all debuffs
|
Skill::Purify => purify(source, target, resolution), // dispel all debuffs
|
||||||
Skill::Purge => purge(source, target, resolution), // dispel all buffs
|
Skill::Purge => purge(source, target, resolution), // dispel all buffs
|
||||||
|
|
||||||
@ -742,9 +648,6 @@ impl Skill {
|
|||||||
// -----------------
|
// -----------------
|
||||||
Skill::Banish => banish(source, target, resolution), // TODO prevent all actions
|
Skill::Banish => banish(source, target, resolution), // TODO prevent all actions
|
||||||
Skill::Hex => hex(source, target, resolution), // todo prevent casting
|
Skill::Hex => hex(source, target, resolution), // todo prevent casting
|
||||||
Skill::Fear => panic!("nyi"), // cast random spell on self
|
|
||||||
Skill::Taunt => panic!("nyi"), // target forced to attack
|
|
||||||
Skill::Pause => panic!("nyi"), // speed slow
|
|
||||||
Skill::Haste => haste(source, target, resolution), // speed slow
|
Skill::Haste => haste(source, target, resolution), // speed slow
|
||||||
Skill::Slow => slow(source, target, resolution), // speed slow
|
Skill::Slow => slow(source, target, resolution), // speed slow
|
||||||
|
|
||||||
@ -775,7 +678,6 @@ impl Skill {
|
|||||||
Skill::Triage |
|
Skill::Triage |
|
||||||
Skill::Empower |
|
Skill::Empower |
|
||||||
Skill::Purify |
|
Skill::Purify |
|
||||||
Skill::Calm |
|
|
||||||
Skill::Parry |
|
Skill::Parry |
|
||||||
Skill::Block => true,
|
Skill::Block => true,
|
||||||
_ => false,
|
_ => false,
|
||||||
@ -1149,3 +1051,93 @@ mod tests {
|
|||||||
assert!(!x.effects.iter().any(|e| e.effect == Effect::Decay));
|
assert!(!x.effects.iter().any(|e| e.effect == Effect::Decay));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// pub enum Skill {
|
||||||
|
// Attack,
|
||||||
|
|
||||||
|
// // -----------------
|
||||||
|
// // Nature
|
||||||
|
// // -----------------
|
||||||
|
// Block, // reduce damage
|
||||||
|
// Parry, // avoid all damage
|
||||||
|
// Snare,
|
||||||
|
|
||||||
|
// Paralyse,
|
||||||
|
|
||||||
|
// Strangle, // physical dot and disable
|
||||||
|
// Strike,
|
||||||
|
// Stun,
|
||||||
|
// // Evade, // actively evade
|
||||||
|
|
||||||
|
|
||||||
|
// // -----------------
|
||||||
|
// // Technology
|
||||||
|
// // -----------------
|
||||||
|
// Replicate,
|
||||||
|
// Swarm,
|
||||||
|
// Orbit,
|
||||||
|
// Repair,
|
||||||
|
// Scan, // track?
|
||||||
|
|
||||||
|
// // -----------------
|
||||||
|
// // Nonviolence
|
||||||
|
// // -----------------
|
||||||
|
// Heal,
|
||||||
|
// Triage, // hot
|
||||||
|
// TriageTick,
|
||||||
|
// Throw, // no damage stun, adds vulnerable
|
||||||
|
// Charm,
|
||||||
|
// Calm,
|
||||||
|
// Rez,
|
||||||
|
|
||||||
|
// // Sleep,
|
||||||
|
// // Nightmare,
|
||||||
|
|
||||||
|
// // -------------------
|
||||||
|
// // Destruction
|
||||||
|
// // -------------------
|
||||||
|
// Blast,
|
||||||
|
// Amplify,
|
||||||
|
// Decay, // dot
|
||||||
|
// DecayTick, // dot
|
||||||
|
// Siphon,
|
||||||
|
// SiphonTick,
|
||||||
|
// Curse,
|
||||||
|
// Plague, // aoe dot
|
||||||
|
// Ruin, // aoe
|
||||||
|
|
||||||
|
// // -----------------
|
||||||
|
// // Purity
|
||||||
|
// // -----------------
|
||||||
|
// Empower,
|
||||||
|
// Slay,
|
||||||
|
// Shield,
|
||||||
|
// Silence,
|
||||||
|
// Inquiry,
|
||||||
|
// Purify,
|
||||||
|
// Purge,
|
||||||
|
// // Precision,
|
||||||
|
|
||||||
|
// // -----------------
|
||||||
|
// // Chaos
|
||||||
|
// // -----------------
|
||||||
|
// Banish,
|
||||||
|
// Hex,
|
||||||
|
// Fear,
|
||||||
|
// Taunt,
|
||||||
|
// Pause, // speed slow
|
||||||
|
// Haste,
|
||||||
|
// Slow,
|
||||||
|
|
||||||
|
// // used by tests, no cd, no damage
|
||||||
|
// TestTouch,
|
||||||
|
// TestStun,
|
||||||
|
// TestBlock,
|
||||||
|
// TestParry,
|
||||||
|
// TestSiphon,
|
||||||
|
// }
|
||||||
|
|||||||
@ -107,16 +107,16 @@ impl Var {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn effect(&self) -> Option<VarEffect> {
|
fn effect(&self) -> Option<VarEffect> {
|
||||||
if let Some(_skill) = self.skill() {
|
if let Some(_skill) = self.into_skill() {
|
||||||
return Some(VarEffect::Skill);
|
return Some(VarEffect::Skill);
|
||||||
}
|
}
|
||||||
if let Some(_spec) = self.spec() {
|
if let Some(_spec) = self.into_spec() {
|
||||||
return Some(VarEffect::Spec);
|
return Some(VarEffect::Spec);
|
||||||
}
|
}
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn skill(&self) -> Option<Skill> {
|
fn into_skill(&self) -> Option<Skill> {
|
||||||
match self {
|
match self {
|
||||||
Var::Amplify => Some(Skill::Amplify),
|
Var::Amplify => Some(Skill::Amplify),
|
||||||
Var::Banish => Some(Skill::Banish),
|
Var::Banish => Some(Skill::Banish),
|
||||||
@ -130,13 +130,13 @@ impl Var {
|
|||||||
Var::Purge => Some(Skill::Purge),
|
Var::Purge => Some(Skill::Purge),
|
||||||
Var::Purify => Some(Skill::Purify),
|
Var::Purify => Some(Skill::Purify),
|
||||||
// Var::Reflect => Some(Skill::Reflect),
|
// Var::Reflect => Some(Skill::Reflect),
|
||||||
Var::Ruin => Some(Skill::Ruin),
|
// Var::Ruin => Some(Skill::Ruin),
|
||||||
Var::Shield => Some(Skill::Shield),
|
Var::Shield => Some(Skill::Shield),
|
||||||
Var::Silence => Some(Skill::Silence),
|
Var::Silence => Some(Skill::Silence),
|
||||||
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),
|
||||||
@ -147,7 +147,7 @@ impl Var {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn spec(&self) -> Option<Spec> {
|
fn into_spec(&self) -> Option<Spec> {
|
||||||
match *self {
|
match *self {
|
||||||
Var::Speed => Some(Spec::SpeedI),
|
Var::Speed => Some(Spec::SpeedI),
|
||||||
|
|
||||||
@ -167,6 +167,56 @@ impl Var {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<Skill> for Var {
|
||||||
|
fn from(skill: Skill) -> Var {
|
||||||
|
match skill {
|
||||||
|
Skill::Amplify => Var::Amplify,
|
||||||
|
Skill::Attack => Var::Attack,
|
||||||
|
Skill::Banish => Var::Banish,
|
||||||
|
Skill::Blast => Var::Blast,
|
||||||
|
Skill::Block => Var::Block,
|
||||||
|
Skill::Curse => Var::Curse,
|
||||||
|
Skill::Empower => Var::Empower,
|
||||||
|
Skill::Haste => Var::Haste,
|
||||||
|
Skill::Heal => Var::Heal,
|
||||||
|
Skill::Hex => Var::Hex,
|
||||||
|
Skill::Parry => Var::Parry,
|
||||||
|
Skill::Purge => Var::Purge,
|
||||||
|
Skill::Purify => Var::Purify,
|
||||||
|
Skill::Shield => Var::Shield,
|
||||||
|
Skill::Silence => Var::Silence,
|
||||||
|
Skill::Siphon => Var::Siphon,
|
||||||
|
Skill::Slow => Var::Slow,
|
||||||
|
Skill::Snare => Var::Snare,
|
||||||
|
Skill::Strike => Var::Strike,
|
||||||
|
Skill::Stun => Var::Stun,
|
||||||
|
Skill::Throw => Var::Throw,
|
||||||
|
Skill::Triage => Var::Triage,
|
||||||
|
_ => panic!("{:?} not implemented as a var", skill),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<Spec> for Var {
|
||||||
|
fn from(spec: Spec) -> Var {
|
||||||
|
match spec {
|
||||||
|
Spec::SpeedI => Var::Speed,
|
||||||
|
|
||||||
|
Spec::RedDamageI => Var::RedDamageI,
|
||||||
|
Spec::BlueDamageI => Var::BlueDamageI,
|
||||||
|
Spec::GreenDamageI => Var::GreenDamageI,
|
||||||
|
|
||||||
|
Spec::LifeI => Var::LifeI,
|
||||||
|
Spec::LRSI => Var::LRSI,
|
||||||
|
Spec::LBSI => Var::LBSI,
|
||||||
|
Spec::RBSI => Var::RBSI,
|
||||||
|
Spec::RedShieldI => Var::RedShieldI,
|
||||||
|
Spec::BlueShieldI => Var::BlueShieldI,
|
||||||
|
// _ => panic!("{:?} not implemented as a var", spec),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct Combo {
|
struct Combo {
|
||||||
var: Var,
|
var: Var,
|
||||||
units: Vec<Var>,
|
units: Vec<Var>,
|
||||||
@ -414,7 +464,7 @@ pub fn vbox_apply(params: VboxApplyParams, tx: &mut Transaction, account: &Accou
|
|||||||
|
|
||||||
match var.effect() {
|
match var.effect() {
|
||||||
Some(VarEffect::Skill) => {
|
Some(VarEffect::Skill) => {
|
||||||
let skill = var.skill().ok_or(format_err!("var {:?} has no associated skill", var))?;
|
let skill = var.into_skill().ok_or(format_err!("var {:?} has no associated skill", var))?;
|
||||||
let cryp = player.cryp_get(params.cryp_id)?;
|
let cryp = player.cryp_get(params.cryp_id)?;
|
||||||
// done here because i teach them a tonne of skills for tests
|
// done here because i teach them a tonne of skills for tests
|
||||||
let max_skills = 4;
|
let max_skills = 4;
|
||||||
@ -425,7 +475,7 @@ pub fn vbox_apply(params: VboxApplyParams, tx: &mut Transaction, account: &Accou
|
|||||||
cryp.learn_mut(skill);
|
cryp.learn_mut(skill);
|
||||||
},
|
},
|
||||||
Some(VarEffect::Spec) => {
|
Some(VarEffect::Spec) => {
|
||||||
let spec = var.spec().ok_or(format_err!("var {:?} has no associated spec", var))?;
|
let spec = var.into_spec().ok_or(format_err!("var {:?} has no associated spec", var))?;
|
||||||
let cryp = player.cryp_get(params.cryp_id)?;
|
let cryp = player.cryp_get(params.cryp_id)?;
|
||||||
cryp.spec_add(spec)?;
|
cryp.spec_add(spec)?;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user