more wip
This commit is contained in:
parent
6bbf8d0e34
commit
b0eb9a8a51
@ -1346,15 +1346,15 @@ mod tests {
|
||||
let x_cryp = x_player.cryps[0].clone();
|
||||
let y_cryp = x_player.cryps[1].clone();
|
||||
|
||||
game.cryp_by_id(x_cryp.id).unwrap().learn_mut(Skill::Taunt);
|
||||
game.cryp_by_id(x_cryp.id).unwrap().learn_mut(Skill::TauntI);
|
||||
|
||||
while game.cryp_by_id(x_cryp.id).unwrap().skill_on_cd(Skill::Taunt).is_some() {
|
||||
while game.cryp_by_id(x_cryp.id).unwrap().skill_on_cd(Skill::TauntI).is_some() {
|
||||
game.cryp_by_id(x_cryp.id).unwrap().reduce_cooldowns();
|
||||
}
|
||||
|
||||
game.add_skill(i_player.id, i_cryp.id, Some(x_cryp.id), Skill::TestTouch).unwrap();
|
||||
game.add_skill(i_player.id, j_cryp.id, Some(x_cryp.id), Skill::TestTouch).unwrap();
|
||||
game.add_skill(x_player.id, x_cryp.id, Some(i_cryp.id), Skill::Taunt).unwrap();
|
||||
game.add_skill(x_player.id, x_cryp.id, Some(i_cryp.id), Skill::TauntI).unwrap();
|
||||
game.add_skill(x_player.id, y_cryp.id, Some(i_cryp.id), Skill::TestTouch).unwrap();
|
||||
|
||||
game.player_ready(i_player.id).unwrap();
|
||||
|
||||
@ -98,16 +98,26 @@ pub enum Item {
|
||||
SilenceI,
|
||||
SilenceII,
|
||||
SilenceIII,
|
||||
Slay,
|
||||
Sleep,
|
||||
Snare,
|
||||
SlayI,
|
||||
SlayII,
|
||||
SlayIII,
|
||||
SleepI,
|
||||
SleepII,
|
||||
SleepIII,
|
||||
SnareI,
|
||||
SnareII,
|
||||
SnareIII,
|
||||
Strangle,
|
||||
StrikeI,
|
||||
StrikeII,
|
||||
StrikeIII,
|
||||
Siphon,
|
||||
Taunt,
|
||||
Throw,
|
||||
TauntI,
|
||||
TauntII,
|
||||
TauntIII,
|
||||
ThrowI,
|
||||
ThrowII,
|
||||
ThrowIII,
|
||||
Triage,
|
||||
|
||||
|
||||
@ -264,10 +274,16 @@ impl Item {
|
||||
Item::SilenceI => Some(Skill::SilenceI),
|
||||
Item::SilenceII => Some(Skill::SilenceII),
|
||||
Item::SilenceIII => Some(Skill::SilenceIII),
|
||||
Item::Slay => Some(Skill::Slay),
|
||||
Item::Sleep => Some(Skill::Sleep),
|
||||
Item::SlayI => Some(Skill::SlayI),
|
||||
Item::SlayII => Some(Skill::SlayII),
|
||||
Item::SlayIII => Some(Skill::SlayIII),
|
||||
Item::SleepI => Some(Skill::SleepI),
|
||||
Item::SleepII => Some(Skill::SleepII),
|
||||
Item::SleepIII => Some(Skill::SleepIII),
|
||||
Item::Siphon => Some(Skill::Siphon),
|
||||
Item::Snare => Some(Skill::Snare),
|
||||
Item::SnareI => Some(Skill::SnareI),
|
||||
Item::SnareII => Some(Skill::SnareII),
|
||||
Item::SnareIII => Some(Skill::SnareIII),
|
||||
Item::Strangle => Some(Skill::Strangle),
|
||||
Item::Stun => Some(Skill::Stun),
|
||||
Item::StrikeI => Some(Skill::StrikeI),
|
||||
@ -276,8 +292,12 @@ impl Item {
|
||||
Item::ClutchI => Some(Skill::ClutchI),
|
||||
Item::ClutchII => Some(Skill::ClutchII),
|
||||
Item::ClutchIII => Some(Skill::ClutchIII),
|
||||
Item::Taunt => Some(Skill::Taunt),
|
||||
Item::Throw => Some(Skill::Throw),
|
||||
Item::TauntI => Some(Skill::TauntI),
|
||||
Item::TauntII => Some(Skill::TauntII),
|
||||
Item::TauntIII => Some(Skill::TauntIII),
|
||||
Item::ThrowI => Some(Skill::ThrowI),
|
||||
Item::ThrowII => Some(Skill::ThrowII),
|
||||
Item::ThrowIII => Some(Skill::ThrowIII),
|
||||
Item::Corrupt => Some(Skill::Corrupt),
|
||||
Item::Triage => Some(Skill::Triage),
|
||||
_ => None,
|
||||
@ -509,16 +529,22 @@ impl Item {
|
||||
self.into_skill().unwrap().multiplier(),
|
||||
"Deals 45% more damage per blue skill on target"),
|
||||
|
||||
Item::Slay => format!(
|
||||
Item::SlayI |
|
||||
Item::SlayII |
|
||||
Item::SlayIII => format!(
|
||||
"Deals red damage {:?}% red power and provides self healing based on damage dealt.",
|
||||
self.into_skill().unwrap().multiplier()),
|
||||
|
||||
Item::Sleep => format!(
|
||||
Item::SleepI |
|
||||
Item::SleepII |
|
||||
Item::SleepIII => format!(
|
||||
"Stun for {:?}T and heal for {:?}% green power.",
|
||||
self.into_skill().unwrap().effect().first().unwrap().get_duration(),
|
||||
self.into_skill().unwrap().multiplier()),
|
||||
|
||||
Item::Snare => format!(
|
||||
Item::SnareI |
|
||||
Item::SnareII |
|
||||
Item::SnareIII => format!(
|
||||
"Block the target from using red skills for {:?}T and deals red damage {:?}% red power. {}",
|
||||
self.into_skill().unwrap().effect().first().unwrap().get_duration(),
|
||||
self.into_skill().unwrap().multiplier(),
|
||||
@ -541,12 +567,16 @@ impl Item {
|
||||
self.into_skill().unwrap().multiplier(),
|
||||
self.into_skill().unwrap().effect().first().unwrap().get_duration()),
|
||||
|
||||
Item::Taunt => format!("{} {:?}T. Recharges RedLife for {:?} red power.",
|
||||
Item::TauntI |
|
||||
Item::TauntII |
|
||||
Item::TauntIII => format!("{} {:?}T. Recharges RedLife for {:?} red power.",
|
||||
"Taunt redirects skills against the team to target, lasts",
|
||||
self.into_skill().unwrap().effect().first().unwrap().get_duration(),
|
||||
self.into_skill().unwrap().multiplier()),
|
||||
|
||||
Item::Throw => format!(
|
||||
Item::ThrowI |
|
||||
Item::ThrowII |
|
||||
Item::ThrowIII => format!(
|
||||
"Stun the target for {:?}T and applies Vulnerable increasing red damage taken by {:?}% for {:?}T",
|
||||
self.into_skill().unwrap().effect().first().unwrap().get_duration(),
|
||||
self.into_skill().unwrap().effect().first().unwrap().get_multiplier() - 100,
|
||||
@ -565,7 +595,9 @@ impl Item {
|
||||
|
||||
fn combo(&self) -> Vec<Item> {
|
||||
match self {
|
||||
Item::Taunt => vec![Item::Buff, Item::Red, Item::Red],
|
||||
Item::TauntI => vec![Item::Buff, Item::Red, Item::Red],
|
||||
Item::TauntII => vec![Item::TauntI, Item::TauntI, Item::TauntI],
|
||||
Item::TauntIII => vec![Item::TauntII, Item::TauntII, Item::TauntII],
|
||||
Item::Triage => vec![Item::Buff, Item::Green, Item::Green],
|
||||
Item::ScatterI => vec![Item::Buff, Item::Blue, Item::Blue],
|
||||
Item::ScatterII => vec![Item::ScatterI, Item::ScatterI, Item::ScatterI],
|
||||
@ -576,7 +608,9 @@ impl Item {
|
||||
Item::AmplifyII => vec![Item::AmplifyI, Item::AmplifyI, Item::AmplifyI],
|
||||
Item::AmplifyIII => vec![Item::AmplifyII, Item::AmplifyII, Item::AmplifyII],
|
||||
|
||||
Item::Snare => vec![Item::Debuff, Item::Red, Item::Red],
|
||||
Item::SnareI => vec![Item::Debuff, Item::Red, Item::Red],
|
||||
Item::SnareII => vec![Item::SnareI, Item::SnareI, Item::SnareI],
|
||||
Item::SnareIII => vec![Item::SnareII, Item::SnareII, Item::SnareII],
|
||||
Item::PurgeI => vec![Item::Debuff, Item::Green, Item::Green], // Needs flavour
|
||||
Item::PurgeII => vec![Item::PurgeI, Item::PurgeI, Item::PurgeI], // Needs flavour
|
||||
Item::PurgeIII => vec![Item::PurgeII, Item::PurgeII, Item::PurgeII], // Needs flavour
|
||||
@ -608,11 +642,15 @@ impl Item {
|
||||
|
||||
|
||||
Item::Strangle => vec![Item::Stun, Item::Red, Item::Red],
|
||||
Item::Sleep => vec![Item::Stun, Item::Green, Item::Green],
|
||||
Item::SleepI => vec![Item::Stun, Item::Green, Item::Green],
|
||||
Item::SleepII => vec![Item::SleepI, Item::SleepI, Item::SleepI],
|
||||
Item::SleepIII => vec![Item::SleepII, Item::SleepII, Item::SleepII],
|
||||
Item::RuinI => vec![Item::Stun, Item::Blue, Item::Blue],
|
||||
Item::RuinII => vec![Item::RuinI, Item::RuinI, Item::RuinI],
|
||||
Item::RuinIII => vec![Item::RuinII, Item::RuinII, Item::RuinII],
|
||||
Item::Throw => vec![Item::Stun, Item::Red, Item::Green],
|
||||
Item::ThrowI => vec![Item::Stun, Item::Red, Item::Green],
|
||||
Item::ThrowII => vec![Item::ThrowI, Item::ThrowI, Item::ThrowI],
|
||||
Item::ThrowIII => vec![Item::ThrowII, Item::ThrowII, Item::ThrowII],
|
||||
Item::HexI => vec![Item::Stun, Item::Green, Item::Blue],
|
||||
Item::HexII => vec![Item::HexI, Item::HexI, Item::HexI],
|
||||
Item::HexIII => vec![Item::HexII, Item::HexII, Item::HexII],
|
||||
@ -627,7 +665,9 @@ impl Item {
|
||||
Item::BlastI => vec![Item::Attack, Item::Blue, Item::Blue],
|
||||
Item::BlastII => vec![Item::BlastI, Item::BlastI, Item::BlastI],
|
||||
Item::BlastIII => vec![Item::BlastII, Item::BlastII, Item::BlastII],
|
||||
Item::Slay => vec![Item::Attack, Item::Red, Item::Green],
|
||||
Item::SlayI => vec![Item::Attack, Item::Red, Item::Green],
|
||||
Item::SlayII => vec![Item::SlayI, Item::SlayI, Item::SlayI],
|
||||
Item::SlayIII => vec![Item::SlayII, Item::SlayII, Item::SlayII],
|
||||
Item::Siphon => vec![Item::Attack, Item::Green, Item::Blue],
|
||||
Item::ChaosI => vec![Item::Attack, Item::Red, Item::Blue],
|
||||
Item::ChaosII => vec![Item::ChaosI, Item::ChaosI, Item::ChaosI],
|
||||
@ -718,16 +758,26 @@ impl From<Skill> for Item {
|
||||
Skill::SilenceII => Item::SilenceII,
|
||||
Skill::SilenceIII => Item::SilenceIII,
|
||||
Skill::Siphon => Item::Siphon,
|
||||
Skill::Slay => Item::Slay,
|
||||
Skill::Sleep => Item::Sleep,
|
||||
Skill::Snare => Item::Snare,
|
||||
Skill::SlayI => Item::SlayI,
|
||||
Skill::SlayII => Item::SlayII,
|
||||
Skill::SlayIII => Item::SlayIII,
|
||||
Skill::SleepI => Item::SleepI,
|
||||
Skill::SleepII => Item::SleepII,
|
||||
Skill::SleepIII => Item::SleepIII,
|
||||
Skill::SnareI => Item::SnareI,
|
||||
Skill::SnareII => Item::SnareII,
|
||||
Skill::SnareIII => Item::SnareIII,
|
||||
Skill::Strangle => Item::Strangle,
|
||||
Skill::StrikeI => Item::StrikeI,
|
||||
Skill::StrikeII => Item::StrikeII,
|
||||
Skill::StrikeIII => Item::StrikeIII,
|
||||
Skill::StrikeII => Item::StrikeII,
|
||||
Skill::StrikeIII => Item::StrikeIII,
|
||||
Skill::Stun => Item::Stun,
|
||||
Skill::Taunt => Item::Taunt,
|
||||
Skill::Throw => Item::Throw,
|
||||
Skill::TauntI => Item::TauntI,
|
||||
Skill::TauntII => Item::TauntII,
|
||||
Skill::TauntIII => Item::TauntIII,
|
||||
Skill::ThrowI => Item::ThrowI,
|
||||
Skill::ThrowII => Item::ThrowII,
|
||||
Skill::ThrowIII => Item::ThrowIII,
|
||||
Skill::Triage => Item::Triage,
|
||||
Skill::Corrupt => Item::Corrupt,
|
||||
|
||||
@ -787,21 +837,25 @@ pub struct Combo {
|
||||
|
||||
pub fn get_combos() -> Vec<Combo> {
|
||||
let mut combinations = vec![
|
||||
Combo { components: Item::Taunt.combo(), item: Item::Taunt },
|
||||
Combo { components: Item::TauntI.combo(), item: Item::TauntI },
|
||||
Combo { components: Item::TauntII.combo(), item: Item::TauntII },
|
||||
Combo { components: Item::TauntIII.combo(), item: Item::TauntIII },
|
||||
Combo { components: Item::Triage.combo(), item: Item::Triage },
|
||||
Combo { components: Item::ScatterI.combo(), item: Item::ScatterI },
|
||||
Combo { components: Item::ScatterII.combo(), item: Item::ScatterII },
|
||||
Combo { components: Item::ScatterIII.combo(), item: Item::ScatterIII },
|
||||
Combo { components: Item::ScatterI.combo(), item: Item::ScatterI },
|
||||
Combo { components: Item::ScatterII.combo(), item: Item::ScatterII },
|
||||
Combo { components: Item::ScatterIII.combo(), item: Item::ScatterIII },
|
||||
Combo { components: Item::Haste.combo(), item: Item::Haste },
|
||||
Combo { components: Item::Impurity.combo(), item: Item::Impurity },
|
||||
Combo { components: Item::AmplifyI.combo(), item: Item::AmplifyI },
|
||||
Combo { components: Item::AmplifyII.combo(), item: Item::AmplifyII },
|
||||
Combo { components: Item::AmplifyIII.combo(), item: Item::AmplifyIII },
|
||||
|
||||
Combo { components: Item::Snare.combo(), item: Item::Snare },
|
||||
Combo { components: Item::SnareI.combo(), item: Item::SnareI },
|
||||
Combo { components: Item::SnareII.combo(), item: Item::SnareII },
|
||||
Combo { components: Item::SnareIII.combo(), item: Item::SnareIII },
|
||||
Combo { components: Item::PurgeI.combo(), item: Item::PurgeI }, // Needs flavour
|
||||
Combo { components: Item::PurgeII.combo(), item: Item::PurgeII },
|
||||
Combo { components: Item::PurgeIII.combo(), item: Item::PurgeIII },
|
||||
Combo { components: Item::PurgeII.combo(), item: Item::PurgeII },
|
||||
Combo { components: Item::PurgeIII.combo(), item: Item::PurgeIII },
|
||||
|
||||
Combo { components: Item::SilenceI.combo(), item: Item::SilenceI },
|
||||
Combo { components: Item::SilenceII.combo(), item: Item::SilenceII },
|
||||
@ -834,13 +888,17 @@ pub fn get_combos() -> Vec<Combo> {
|
||||
Combo { components: Item::RechargeIII.combo(), item: Item::RechargeIII },
|
||||
|
||||
Combo { components: Item::Strangle.combo(), item: Item::Strangle },
|
||||
Combo { components: Item::Sleep.combo(), item: Item::Sleep },
|
||||
Combo { components: Item::SleepI.combo(), item: Item::SleepI },
|
||||
Combo { components: Item::SleepII.combo(), item: Item::SleepII },
|
||||
Combo { components: Item::SleepIII.combo(), item: Item::SleepIII },
|
||||
Combo { components: Item::RuinI.combo(), item: Item::RuinI },
|
||||
Combo { components: Item::RuinII.combo(), item: Item::RuinII },
|
||||
Combo { components: Item::RuinIII.combo(), item: Item::RuinIII },
|
||||
|
||||
|
||||
Combo { components: Item::Throw.combo(), item: Item::Throw },
|
||||
Combo { components: Item::ThrowI.combo(), item: Item::ThrowI },
|
||||
Combo { components: Item::ThrowII.combo(), item: Item::ThrowII },
|
||||
Combo { components: Item::ThrowIII.combo(), item: Item::ThrowIII },
|
||||
Combo { components: Item::HexI.combo(), item: Item::HexI },
|
||||
Combo { components: Item::HexII.combo(), item: Item::HexII },
|
||||
Combo { components: Item::HexIII.combo(), item: Item::HexIII },
|
||||
@ -856,7 +914,9 @@ pub fn get_combos() -> Vec<Combo> {
|
||||
Combo { components: Item::BlastI.combo(), item: Item::BlastI },
|
||||
Combo { components: Item::BlastII.combo(), item: Item::BlastII },
|
||||
Combo { components: Item::BlastIII.combo(), item: Item::BlastIII },
|
||||
Combo { components: Item::Slay.combo(), item: Item::Slay },
|
||||
Combo { components: Item::SlayI.combo(), item: Item::SlayI },
|
||||
Combo { components: Item::SlayII.combo(), item: Item::SlayII },
|
||||
Combo { components: Item::SlayIII.combo(), item: Item::SlayIII },
|
||||
Combo { components: Item::Siphon.combo(), item: Item::Siphon },
|
||||
Combo { components: Item::ChaosI.combo(), item: Item::ChaosI },
|
||||
Combo { components: Item::ChaosII.combo(), item: Item::ChaosII },
|
||||
|
||||
@ -75,7 +75,7 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
||||
if source.affected(Effect::Haste) {
|
||||
match skill {
|
||||
Skill::Attack |
|
||||
Skill::Slay |
|
||||
Skill::SlayI |
|
||||
Skill::ChaosI |
|
||||
Skill::StrikeI => {
|
||||
let amount = source.speed().pct(Skill::HasteStrike.multiplier());
|
||||
@ -115,17 +115,13 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
||||
Skill::AmplifyI |
|
||||
Skill::AmplifyII |
|
||||
Skill::AmplifyIII => amplify(source, target, resolutions, skill),
|
||||
|
||||
Skill::Attack => attack(source, target, resolutions, skill),
|
||||
|
||||
Skill::Banish => banish(source, target, resolutions, skill), // TODO prevent all actions
|
||||
|
||||
|
||||
Skill::BlastI |
|
||||
Skill::BlastII |
|
||||
Skill::BlastIII => blast(source, target, resolutions, skill),
|
||||
|
||||
Skill::Block => block(source, target, resolutions, skill),
|
||||
Skill::Buff => buff(source, target, resolutions, skill),
|
||||
|
||||
|
||||
Skill::ChaosI |
|
||||
Skill::ChaosII |
|
||||
Skill::ChaosIII => chaos(source, target, resolutions, skill),
|
||||
@ -133,44 +129,44 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
||||
Skill::ClutchI |
|
||||
Skill::ClutchII |
|
||||
Skill::ClutchIII => clutch(source, target, resolutions, skill),
|
||||
|
||||
|
||||
Skill::Corrupt => corrupt(source, target, resolutions, skill),
|
||||
|
||||
Skill::CorruptionTick => corruption_tick(source, target, resolutions, skill),
|
||||
|
||||
|
||||
Skill::CurseI |
|
||||
Skill::CurseII |
|
||||
Skill::CurseIII => curse(source, target, resolutions, skill),
|
||||
|
||||
Skill::Debuff => debuff(source, target, resolutions, skill), // speed slow
|
||||
|
||||
Skill::Decay => decay(source, target, resolutions, skill), // dot
|
||||
Skill::DecayTick => decay_tick(source, target, resolutions, skill), // dot
|
||||
|
||||
Skill::Haste => haste(source, target, resolutions, skill), // speed slow
|
||||
|
||||
|
||||
Skill::HealI |
|
||||
Skill::HealII |
|
||||
Skill::HealIII => heal(source, target, resolutions, skill),
|
||||
|
||||
Skill::HealII |
|
||||
Skill::HealIII => heal(source, target, resolutions, skill),
|
||||
|
||||
Skill::HexI |
|
||||
Skill::HexII |
|
||||
Skill::HexIII => hex(source, target, resolutions, skill),
|
||||
|
||||
|
||||
Skill::Hostility => hostility(source, target, resolutions, skill),
|
||||
Skill::Impurity => impurity(source, target, resolutions, skill),
|
||||
|
||||
|
||||
Skill::InvertI |
|
||||
Skill::InvertII |
|
||||
Skill::InvertIII => invert(source, target, resolutions, skill),
|
||||
Skill::Parry => parry(source, target, resolutions, skill),
|
||||
|
||||
Skill::Parry => parry(source, target, resolutions, skill),
|
||||
|
||||
Skill::PurgeI |
|
||||
Skill::PurgeII |
|
||||
Skill::PurgeIII => purge(source, target, resolutions, skill), // dispel all buffs
|
||||
|
||||
|
||||
Skill::PurifyI |
|
||||
Skill::PurifyII |
|
||||
Skill::PurifyIII => purify(source, target, resolutions, skill),
|
||||
|
||||
|
||||
Skill::RechargeI |
|
||||
Skill::RechargeII |
|
||||
Skill::RechargeIII => recharge(source, target, resolutions, skill),
|
||||
@ -190,25 +186,48 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
||||
Skill::SilenceI |
|
||||
Skill::SilenceII |
|
||||
Skill::SilenceIII => silence(source, target, resolutions, skill), // target cannot cast spells
|
||||
|
||||
// Recharge -> Silence
|
||||
|
||||
Skill::Siphon => siphon(source, target, resolutions, skill),
|
||||
Skill::SiphonTick => siphon_tick(source, target, resolutions, skill), // hot
|
||||
Skill::Slay => slay(source, target, resolutions, skill), // hybrid dmg self heal
|
||||
Skill::Sleep => sleep(source, target, resolutions, skill), // speed slow
|
||||
Skill::Snare => snare(source, target, resolutions, skill),
|
||||
|
||||
Skill::SlayI |
|
||||
Skill::SlayII |
|
||||
Skill::SlayIII => slay(source, target, resolutions, skill), // hybrid dmg self heal
|
||||
|
||||
Skill::SleepI |
|
||||
Skill::SleepII |
|
||||
Skill::SleepIII => sleep(source, target, resolutions, skill), // heal stun
|
||||
|
||||
Skill::SnareI |
|
||||
Skill::SnareII |
|
||||
Skill::SnareIII => snare(source, target, resolutions, skill),
|
||||
|
||||
Skill::Strangle => strangle(source, target, resolutions, skill),
|
||||
Skill::StrangleTick => strangle_tick(source, target, resolutions, skill),
|
||||
Skill::StrikeI => strike(source, target, resolutions, skill),
|
||||
Skill::StrikeII => strike(source, target, resolutions, skill),
|
||||
Skill::StrikeIII => strike(source, target, resolutions, skill),
|
||||
Skill::Stun => stun(source, target, resolutions, skill),
|
||||
Skill::Taunt => taunt(source, target, resolutions, skill),
|
||||
Skill::Throw => throw(source, target, resolutions, skill), // no damage stun, adds vulnerable
|
||||
|
||||
Skill::StrikeI |
|
||||
Skill::StrikeII |
|
||||
Skill::StrikeIII => strike(source, target, resolutions, skill),
|
||||
|
||||
Skill::TauntI |
|
||||
Skill::TauntII |
|
||||
Skill::TauntIII => taunt(source, target, resolutions, skill),
|
||||
|
||||
Skill::ThrowI |
|
||||
Skill::ThrowII |
|
||||
Skill::ThrowIII => throw(source, target, resolutions, skill), // no damage stun, adds vulnerable
|
||||
|
||||
Skill::Triage => triage(source, target, resolutions, skill), // hot
|
||||
Skill::TriageTick => triage_tick(source, target, resolutions, skill), // hot
|
||||
|
||||
// Base Skills
|
||||
Skill::Attack => attack(source, target, resolutions, skill),
|
||||
Skill::Block => block(source, target, resolutions, skill),
|
||||
Skill::Buff => buff(source, target, resolutions, skill),
|
||||
Skill::Debuff => debuff(source, target, resolutions, skill), // speed slow
|
||||
Skill::Stun => stun(source, target, resolutions, skill),
|
||||
|
||||
//Triggered
|
||||
Skill::HasteStrike => panic!("should only trigger from haste"),
|
||||
Skill::ImpureBlast => panic!("should only trigger from impurity"),
|
||||
Skill::Riposte => panic!("should only trigger from parry"),
|
||||
@ -447,11 +466,15 @@ impl Effect {
|
||||
Skill::HexII,
|
||||
Skill::HexIII,
|
||||
Skill::SilenceI,
|
||||
Skill::SilenceII,
|
||||
Skill::SilenceIII,
|
||||
Skill::RuinI,
|
||||
Skill::RuinII,
|
||||
Skill::RuinIII,
|
||||
Skill::Strangle,
|
||||
Skill::Snare
|
||||
Skill::SnareI,
|
||||
Skill::SnareII,
|
||||
Skill::SnareIII
|
||||
].contains(&skill),
|
||||
Effect::Injured => skill.colours().contains(&Colour::Green),
|
||||
_ => false,
|
||||
@ -632,8 +655,8 @@ pub enum Skill {
|
||||
Impurity,
|
||||
Injure,
|
||||
InvertI,
|
||||
InvertII,
|
||||
InvertIII,
|
||||
InvertII,
|
||||
InvertIII,
|
||||
Parry, // avoid all damage
|
||||
PurgeI,
|
||||
PurgeII,
|
||||
@ -659,16 +682,26 @@ pub enum Skill {
|
||||
SilenceIII,
|
||||
Siphon,
|
||||
SiphonTick,
|
||||
Slay,
|
||||
Sleep,
|
||||
Snare,
|
||||
SlayI,
|
||||
SlayII,
|
||||
SlayIII,
|
||||
SleepI,
|
||||
SleepII,
|
||||
SleepIII,
|
||||
SnareI,
|
||||
SnareII,
|
||||
SnareIII,
|
||||
Strangle,
|
||||
StrangleTick,
|
||||
StrikeI,
|
||||
StrikeII,
|
||||
StrikeIII,
|
||||
Taunt,
|
||||
Throw, // no damage stun, adds vulnerable
|
||||
StrikeII,
|
||||
StrikeIII,
|
||||
TauntI,
|
||||
TauntII,
|
||||
TauntIII,
|
||||
ThrowI, // no damage stun, adds vulnerable
|
||||
ThrowII,
|
||||
ThrowIII,
|
||||
Triage, // hot
|
||||
TriageTick,
|
||||
|
||||
@ -698,10 +731,12 @@ impl Skill {
|
||||
Skill::HealII => 160, //GG
|
||||
Skill::HealIII => 200, //GG
|
||||
Skill::SiphonTick => 40, // GB
|
||||
Skill::Slay => 70, // RG
|
||||
Skill::SlayI => 70, // RG
|
||||
Skill::SlayII => 90,
|
||||
Skill::SlayIII => 120,
|
||||
Skill::StrikeI => 90, //RR
|
||||
Skill::StrikeII => 110,
|
||||
Skill::StrikeIII => 130,
|
||||
Skill::StrikeIII => 140,
|
||||
|
||||
// Block Base
|
||||
Skill::CorruptionTick => 80,
|
||||
@ -718,7 +753,9 @@ impl Skill {
|
||||
Skill::RechargeIII => 200,
|
||||
|
||||
// Stun Base
|
||||
Skill::Sleep => 240, //Green dmg (heal)
|
||||
Skill::SleepI => 240, //Green dmg (heal)
|
||||
Skill::SleepII => 300,
|
||||
Skill::SleepIII => 400,
|
||||
Skill::StrangleTick => 65,
|
||||
|
||||
// Debuff Base
|
||||
@ -726,7 +763,9 @@ impl Skill {
|
||||
Skill::SilenceI => 55, // Deals more per blue skill on target
|
||||
Skill::SilenceII => 80, // Deals more per blue skill on target
|
||||
Skill::SilenceIII => 110, // Deals more per blue skill on target
|
||||
Skill::Snare => 40, // Deals more per red skill on target
|
||||
Skill::SnareI => 40, // Deals more per red skill on target
|
||||
Skill::SnareII => 65,
|
||||
Skill::SnareIII => 100,
|
||||
|
||||
// Buff base
|
||||
Skill::ImpureBlast => 25,
|
||||
@ -734,7 +773,9 @@ impl Skill {
|
||||
Skill::ScatterI => 140,
|
||||
Skill::ScatterII => 200,
|
||||
Skill::ScatterIII => 300,
|
||||
Skill::Taunt => 80,
|
||||
Skill::TauntI => 80,
|
||||
Skill::TauntII => 110,
|
||||
Skill::TauntIII => 150,
|
||||
Skill::TriageTick => 75,
|
||||
|
||||
_ => 100,
|
||||
@ -777,27 +818,40 @@ impl Skill {
|
||||
|
||||
Skill::Parry => vec![CrypEffect {effect: Effect::Parry, duration: 2, meta: None, tick: None }],
|
||||
Skill::ReflectI => vec![CrypEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }],
|
||||
Skill::ReflectII => vec![CrypEffect {effect: Effect::Reflect, duration: 2, meta: None, tick: None }],
|
||||
Skill::ReflectIII => vec![CrypEffect {effect: Effect::Reflect, duration: 3, meta: None, tick: None }],
|
||||
Skill::Throw => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None},
|
||||
Skill::ReflectII => vec![CrypEffect {effect: Effect::Reflect, duration: 2, meta: None, tick: None }],
|
||||
Skill::ReflectIII => vec![CrypEffect {effect: Effect::Reflect, duration: 3, meta: None, tick: None }],
|
||||
|
||||
Skill::ThrowI => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None},
|
||||
CrypEffect {effect: Effect::Vulnerable, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
||||
Skill::ThrowII => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None},
|
||||
CrypEffect {effect: Effect::Vulnerable, duration: 4, meta: Some(EffectMeta::Multiplier(200)), tick: None}],
|
||||
Skill::ThrowIII => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None},
|
||||
CrypEffect {effect: Effect::Vulnerable, duration: 4, meta: Some(EffectMeta::Multiplier(250)), tick: None}],
|
||||
|
||||
Skill::RuinI => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
|
||||
Skill::RuinII => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
|
||||
Skill::RuinIII => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
|
||||
Skill::ScatterI => vec![CrypEffect {effect: Effect::Scatter, duration: 2, meta: None, tick: None}],
|
||||
Skill::ScatterII => vec![CrypEffect {effect: Effect::Scatter, duration: 3, meta: None, tick: None}],
|
||||
Skill::ScatterIII => vec![CrypEffect {effect: Effect::Scatter, duration: 4, meta: None, tick: None}],
|
||||
Skill::ScatterII => vec![CrypEffect {effect: Effect::Scatter, duration: 3, meta: None, tick: None}],
|
||||
Skill::ScatterIII => vec![CrypEffect {effect: Effect::Scatter, duration: 4, meta: None, tick: None}],
|
||||
Skill::SilenceI => vec![CrypEffect {effect: Effect::Silence, duration: 2, meta: None, tick: None}],
|
||||
Skill::SilenceII => vec![CrypEffect {effect: Effect::Silence, duration: 2, meta: None, tick: None}],
|
||||
Skill::SilenceIII => vec![CrypEffect {effect: Effect::Silence, duration: 3, meta: None, tick: None}],
|
||||
Skill::Siphon => vec![CrypEffect {effect: Effect::Siphon, duration: 2, meta: None, tick: None}],
|
||||
Skill::Sleep => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
|
||||
Skill::Snare => vec![CrypEffect {effect: Effect::Snare, duration: 2, meta: None, tick: None}],
|
||||
Skill::Strangle => vec![CrypEffect {effect: Effect::Strangle, duration: 2, meta: None, tick: None}],
|
||||
Skill::Stun => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
|
||||
Skill::Taunt => vec![CrypEffect {effect: Effect::Taunt, duration: 2, meta: None, tick: None}],
|
||||
Skill::Triage => vec![CrypEffect {effect: Effect::Triage, duration: 2, meta: None, tick: None}],
|
||||
Skill::SilenceII => vec![CrypEffect {effect: Effect::Silence, duration: 2, meta: None, tick: None}],
|
||||
Skill::SilenceIII => vec![CrypEffect {effect: Effect::Silence, duration: 3, meta: None, tick: None}],
|
||||
Skill::Siphon => vec![CrypEffect {effect: Effect::Siphon, duration: 2, meta: None, tick: None}],
|
||||
Skill::SleepI => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
|
||||
Skill::SleepII => vec![CrypEffect {effect: Effect::Stun, duration: 3, meta: None, tick: None}],
|
||||
Skill::SleepIII => vec![CrypEffect {effect: Effect::Stun, duration: 4, meta: None, tick: None}],
|
||||
|
||||
Skill::SnareI => vec![CrypEffect {effect: Effect::Snare, duration: 2, meta: None, tick: None}],
|
||||
Skill::SnareII => vec![CrypEffect {effect: Effect::Snare, duration: 3, meta: None, tick: None}],
|
||||
Skill::SnareIII => vec![CrypEffect {effect: Effect::Snare, duration: 4, meta: None, tick: None}],
|
||||
|
||||
Skill::Strangle => vec![CrypEffect {effect: Effect::Strangle, duration: 2, meta: None, tick: None}],
|
||||
Skill::Stun => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
|
||||
Skill::TauntI => vec![CrypEffect {effect: Effect::Taunt, duration: 2, meta: None, tick: None}],
|
||||
Skill::TauntII => vec![CrypEffect {effect: Effect::Taunt, duration: 3, meta: None, tick: None}],
|
||||
Skill::TauntIII => vec![CrypEffect {effect: Effect::Taunt, duration: 4, meta: None, tick: None}],
|
||||
Skill::Triage => vec![CrypEffect {effect: Effect::Triage, duration: 2, meta: None, tick: None}],
|
||||
|
||||
//Unused
|
||||
Skill::Injure => vec![CrypEffect {effect: Effect::Injured, duration: 2, meta: None, tick: None }],
|
||||
@ -819,14 +873,18 @@ impl Skill {
|
||||
Skill::Block => None, // reduce damage
|
||||
Skill::Parry => Some(2), // avoid all damage
|
||||
Skill::Riposte => None, // used on parry
|
||||
Skill::Snare => Some(2),
|
||||
Skill::SnareI => Some(2),
|
||||
Skill::SnareII => Some(2),
|
||||
Skill::SnareIII => Some(2),
|
||||
Skill::Stun => Some(2),
|
||||
Skill::HealI => None,
|
||||
Skill::HealII => None,
|
||||
Skill::HealIII => None,
|
||||
Skill::Triage => None, // hot
|
||||
Skill::TriageTick => None,
|
||||
Skill::Throw => Some(1), // no damage stun, adds vulnerable
|
||||
Skill::ThrowI => Some(1), // no damage stun, adds vulnerable
|
||||
Skill::ThrowII => Some(1),
|
||||
Skill::ThrowIII => Some(1),
|
||||
Skill::BlastI => None,
|
||||
Skill::BlastII => None,
|
||||
Skill::BlastIII => None,
|
||||
@ -876,15 +934,21 @@ impl Skill {
|
||||
Skill::RuinI => Some(3),
|
||||
Skill::RuinII => Some(2),
|
||||
Skill::RuinIII => Some(2),
|
||||
Skill::Slay => None,
|
||||
Skill::Sleep => Some(3),
|
||||
Skill::SlayI => None,
|
||||
Skill::SlayII => None,
|
||||
Skill::SlayIII => None,
|
||||
Skill::SleepI => Some(3),
|
||||
Skill::SleepII => Some(3),
|
||||
Skill::SleepIII => Some(3),
|
||||
|
||||
Skill::Strangle => Some(2),
|
||||
Skill::StrangleTick => None,
|
||||
Skill::ClutchI => Some(1),
|
||||
Skill::ClutchII => Some(2),
|
||||
Skill::ClutchIII => Some(3),
|
||||
Skill::Taunt => Some(2),
|
||||
Skill::TauntI => Some(2),
|
||||
Skill::TauntII => Some(2),
|
||||
Skill::TauntIII => Some(2),
|
||||
Skill::Injure => Some(2),
|
||||
|
||||
Skill::Corrupt => Some(1),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user