parry and other T2/T3
This commit is contained in:
parent
9aa6346be6
commit
88c3e97bc1
@ -62,7 +62,7 @@ impl CrypSkill {
|
|||||||
|
|
||||||
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
|
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
|
||||||
pub enum EffectMeta {
|
pub enum EffectMeta {
|
||||||
SkillTick(Skill),
|
Skill(Skill),
|
||||||
TickAmount(u64),
|
TickAmount(u64),
|
||||||
AddedDamage(u64),
|
AddedDamage(u64),
|
||||||
ScatterTarget(Uuid),
|
ScatterTarget(Uuid),
|
||||||
|
|||||||
@ -1166,7 +1166,7 @@ mod tests {
|
|||||||
// should not be stunned because of parry
|
// should not be stunned because of parry
|
||||||
assert!(game.player_by_id(x_player.id).unwrap().cryps[0].is_stunned() == false);
|
assert!(game.player_by_id(x_player.id).unwrap().cryps[0].is_stunned() == false);
|
||||||
// riposte
|
// riposte
|
||||||
assert_eq!(game.player_by_id(y_player.id).unwrap().cryps[0].green_life(), (1024 - x_cryp.red_damage().pct(Skill::Riposte.multiplier())));
|
assert_eq!(game.player_by_id(y_player.id).unwrap().cryps[0].green_life(), (1024 - x_cryp.red_damage().pct(Skill::RiposteI.multiplier())));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -1437,8 +1437,8 @@ mod tests {
|
|||||||
game.cryp_by_id(x_cryp.id).unwrap().reduce_cooldowns();
|
game.cryp_by_id(x_cryp.id).unwrap().reduce_cooldowns();
|
||||||
}
|
}
|
||||||
|
|
||||||
game.cryp_by_id(x_cryp.id).unwrap().learn_mut(Skill::Siphon);
|
game.cryp_by_id(x_cryp.id).unwrap().learn_mut(Skill::SiphonI);
|
||||||
while game.cryp_by_id(x_cryp.id).unwrap().skill_on_cd(Skill::Siphon).is_some() {
|
while game.cryp_by_id(x_cryp.id).unwrap().skill_on_cd(Skill::SiphonI).is_some() {
|
||||||
game.cryp_by_id(x_cryp.id).unwrap().reduce_cooldowns();
|
game.cryp_by_id(x_cryp.id).unwrap().reduce_cooldowns();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1476,7 +1476,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
game.add_skill(y_player.id, x_cryp.id, Some(y_cryp.id), Skill::Siphon).unwrap();
|
game.add_skill(y_player.id, x_cryp.id, Some(y_cryp.id), Skill::SiphonI).unwrap();
|
||||||
game.player_ready(x_player.id).unwrap();
|
game.player_ready(x_player.id).unwrap();
|
||||||
game.player_ready(y_player.id).unwrap();
|
game.player_ready(y_player.id).unwrap();
|
||||||
game = game.resolve_phase_start();
|
game = game.resolve_phase_start();
|
||||||
|
|||||||
@ -49,7 +49,9 @@ pub enum Item {
|
|||||||
AmplifyI,
|
AmplifyI,
|
||||||
AmplifyII,
|
AmplifyII,
|
||||||
AmplifyIII,
|
AmplifyIII,
|
||||||
Banish,
|
BanishI,
|
||||||
|
BanishII,
|
||||||
|
BanishIII,
|
||||||
BlastI,
|
BlastI,
|
||||||
BlastII,
|
BlastII,
|
||||||
BlastIII,
|
BlastIII,
|
||||||
@ -78,7 +80,9 @@ pub enum Item {
|
|||||||
InvertI,
|
InvertI,
|
||||||
InvertII,
|
InvertII,
|
||||||
InvertIII,
|
InvertIII,
|
||||||
Parry,
|
ParryI,
|
||||||
|
ParryII,
|
||||||
|
ParryIII,
|
||||||
PurgeI,
|
PurgeI,
|
||||||
PurgeII,
|
PurgeII,
|
||||||
PurgeIII,
|
PurgeIII,
|
||||||
@ -109,11 +113,15 @@ pub enum Item {
|
|||||||
SnareI,
|
SnareI,
|
||||||
SnareII,
|
SnareII,
|
||||||
SnareIII,
|
SnareIII,
|
||||||
Strangle,
|
StrangleI,
|
||||||
|
StrangleII,
|
||||||
|
StrangleIII,
|
||||||
StrikeI,
|
StrikeI,
|
||||||
StrikeII,
|
StrikeII,
|
||||||
StrikeIII,
|
StrikeIII,
|
||||||
Siphon,
|
SiphonI,
|
||||||
|
SiphonII,
|
||||||
|
SiphonIII,
|
||||||
TauntI,
|
TauntI,
|
||||||
TauntII,
|
TauntII,
|
||||||
TauntIII,
|
TauntIII,
|
||||||
@ -230,7 +238,9 @@ impl Item {
|
|||||||
Item::AmplifyI => Some(Skill::AmplifyI),
|
Item::AmplifyI => Some(Skill::AmplifyI),
|
||||||
Item::AmplifyII => Some(Skill::AmplifyII),
|
Item::AmplifyII => Some(Skill::AmplifyII),
|
||||||
Item::AmplifyIII => Some(Skill::AmplifyIII),
|
Item::AmplifyIII => Some(Skill::AmplifyIII),
|
||||||
Item::Banish => Some(Skill::Banish),
|
Item::BanishI => Some(Skill::BanishI),
|
||||||
|
Item::BanishII => Some(Skill::BanishII),
|
||||||
|
Item::BanishIII => Some(Skill::BanishIII),
|
||||||
Item::BlastI => Some(Skill::BlastI),
|
Item::BlastI => Some(Skill::BlastI),
|
||||||
Item::BlastII => Some(Skill::BlastII),
|
Item::BlastII => Some(Skill::BlastII),
|
||||||
Item::BlastIII => Some(Skill::BlastIII),
|
Item::BlastIII => Some(Skill::BlastIII),
|
||||||
@ -258,7 +268,9 @@ impl Item {
|
|||||||
Item::InvertI => Some(Skill::InvertI),
|
Item::InvertI => Some(Skill::InvertI),
|
||||||
Item::InvertII => Some(Skill::InvertII),
|
Item::InvertII => Some(Skill::InvertII),
|
||||||
Item::InvertIII => Some(Skill::InvertIII),
|
Item::InvertIII => Some(Skill::InvertIII),
|
||||||
Item::Parry => Some(Skill::Parry),
|
Item::ParryI => Some(Skill::ParryI),
|
||||||
|
Item::ParryII => Some(Skill::ParryII),
|
||||||
|
Item::ParryIII => Some(Skill::ParryIII),
|
||||||
Item::PurgeI => Some(Skill::PurgeI),
|
Item::PurgeI => Some(Skill::PurgeI),
|
||||||
Item::PurgeII => Some(Skill::PurgeII),
|
Item::PurgeII => Some(Skill::PurgeII),
|
||||||
Item::PurgeIII => Some(Skill::PurgeIII),
|
Item::PurgeIII => Some(Skill::PurgeIII),
|
||||||
@ -286,11 +298,15 @@ impl Item {
|
|||||||
Item::SleepI => Some(Skill::SleepI),
|
Item::SleepI => Some(Skill::SleepI),
|
||||||
Item::SleepII => Some(Skill::SleepII),
|
Item::SleepII => Some(Skill::SleepII),
|
||||||
Item::SleepIII => Some(Skill::SleepIII),
|
Item::SleepIII => Some(Skill::SleepIII),
|
||||||
Item::Siphon => Some(Skill::Siphon),
|
Item::SiphonI => Some(Skill::SiphonI),
|
||||||
|
Item::SiphonII => Some(Skill::SiphonII),
|
||||||
|
Item::SiphonIII => Some(Skill::SiphonIII),
|
||||||
Item::SnareI => Some(Skill::SnareI),
|
Item::SnareI => Some(Skill::SnareI),
|
||||||
Item::SnareII => Some(Skill::SnareII),
|
Item::SnareII => Some(Skill::SnareII),
|
||||||
Item::SnareIII => Some(Skill::SnareIII),
|
Item::SnareIII => Some(Skill::SnareIII),
|
||||||
Item::Strangle => Some(Skill::Strangle),
|
Item::StrangleI => Some(Skill::StrangleI),
|
||||||
|
Item::StrangleII => Some(Skill::StrangleII),
|
||||||
|
Item::StrangleIII => Some(Skill::StrangleIII),
|
||||||
Item::Stun => Some(Skill::Stun),
|
Item::Stun => Some(Skill::Stun),
|
||||||
Item::StrikeI => Some(Skill::StrikeI),
|
Item::StrikeI => Some(Skill::StrikeI),
|
||||||
Item::StrikeII => Some(Skill::StrikeII),
|
Item::StrikeII => Some(Skill::StrikeII),
|
||||||
@ -413,7 +429,9 @@ impl Item {
|
|||||||
self.into_skill().unwrap().effect().first().unwrap().get_multiplier() - 100,
|
self.into_skill().unwrap().effect().first().unwrap().get_multiplier() - 100,
|
||||||
self.into_skill().unwrap().effect().first().unwrap().get_duration()),
|
self.into_skill().unwrap().effect().first().unwrap().get_duration()),
|
||||||
|
|
||||||
Item::Banish => format!("Banish target for {:?}T.
|
Item::BanishI |
|
||||||
|
Item::BanishII |
|
||||||
|
Item::BanishIII => format!("Banish target for {:?}T.
|
||||||
Banished cryps are immune to all skills and effects.",
|
Banished cryps are immune to all skills and effects.",
|
||||||
self.into_skill().unwrap().effect().first().unwrap().get_duration()),
|
self.into_skill().unwrap().effect().first().unwrap().get_duration()),
|
||||||
|
|
||||||
@ -491,12 +509,14 @@ impl Item {
|
|||||||
"Reverse healing into damage and damage into healing.
|
"Reverse healing into damage and damage into healing.
|
||||||
Any excess red or blue damage is converted into shield recharge."),
|
Any excess red or blue damage is converted into shield recharge."),
|
||||||
|
|
||||||
Item::Parry => format!("{} {:?}% red power and blocks red skills for {:?}T. {} {:?}% red power.",
|
Item::ParryI |
|
||||||
|
Item::ParryII |
|
||||||
|
Item::ParryIII => format!("{} {:?}% red power and blocks red skills for {:?}T. {} {:?}% red power.",
|
||||||
"Self targetting skill. Recharges RedLife for",
|
"Self targetting skill. Recharges RedLife for",
|
||||||
self.into_skill().unwrap().multiplier(),
|
self.into_skill().unwrap().multiplier(),
|
||||||
self.into_skill().unwrap().effect().first().unwrap().get_duration(),
|
self.into_skill().unwrap().effect().first().unwrap().get_duration(),
|
||||||
"If a red skill is parried the cryp will riposte the source dealing red damage",
|
"If a red skill is parried the cryp will riposte the source dealing red damage",
|
||||||
Skill::Riposte.multiplier()),
|
Skill::RiposteI.multiplier()),
|
||||||
|
|
||||||
Item::PurgeI |
|
Item::PurgeI |
|
||||||
Item::PurgeII |
|
Item::PurgeII |
|
||||||
@ -560,7 +580,9 @@ impl Item {
|
|||||||
self.into_skill().unwrap().multiplier(),
|
self.into_skill().unwrap().multiplier(),
|
||||||
"Deals 35% more damage per red skill on target"),
|
"Deals 35% more damage per red skill on target"),
|
||||||
|
|
||||||
Item::Strangle => format!(
|
Item::StrangleI |
|
||||||
|
Item::StrangleII |
|
||||||
|
Item::StrangleIII => format!(
|
||||||
"Strangle the target disabling skills from both the caster and the target.
|
"Strangle the target disabling skills from both the caster and the target.
|
||||||
While strangling deal red damage each turn {:?}% red power. Lasts {:?}T.",
|
While strangling deal red damage each turn {:?}% red power. Lasts {:?}T.",
|
||||||
self.into_skill().unwrap().multiplier(),
|
self.into_skill().unwrap().multiplier(),
|
||||||
@ -572,7 +594,9 @@ impl Item {
|
|||||||
"Hits at maximum speed dealing red damage {:?}% red power",
|
"Hits at maximum speed dealing red damage {:?}% red power",
|
||||||
self.into_skill().unwrap().multiplier()),
|
self.into_skill().unwrap().multiplier()),
|
||||||
|
|
||||||
Item::Siphon => format!(
|
Item::SiphonI |
|
||||||
|
Item::SiphonII |
|
||||||
|
Item::SiphonIII => format!(
|
||||||
"Deals blue damage {:?}% blue power each turn and heals caster based on damage dealt. Lasts {:?}T",
|
"Deals blue damage {:?}% blue power each turn and heals caster based on damage dealt. Lasts {:?}T",
|
||||||
self.into_skill().unwrap().multiplier(),
|
self.into_skill().unwrap().multiplier(),
|
||||||
self.into_skill().unwrap().effect().first().unwrap().get_duration()),
|
self.into_skill().unwrap().effect().first().unwrap().get_duration()),
|
||||||
@ -607,87 +631,95 @@ impl Item {
|
|||||||
|
|
||||||
fn combo(&self) -> Vec<Item> {
|
fn combo(&self) -> Vec<Item> {
|
||||||
match self {
|
match self {
|
||||||
Item::TauntI => 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::TauntII => vec![Item::TauntI, Item::TauntI, Item::TauntI],
|
||||||
Item::TauntIII => vec![Item::TauntII, Item::TauntII, Item::TauntII],
|
Item::TauntIII => vec![Item::TauntII, Item::TauntII, Item::TauntII],
|
||||||
Item::TriageI => vec![Item::Buff, Item::Green, Item::Green],
|
Item::TriageI => vec![Item::Buff, Item::Green, Item::Green],
|
||||||
Item::TriageII => vec![Item::TriageI, Item::TriageI, Item::TriageI],
|
Item::TriageII => vec![Item::TriageI, Item::TriageI, Item::TriageI],
|
||||||
Item::TriageIII => vec![Item::TriageII, Item::TriageII, Item::TriageII],
|
Item::TriageIII => vec![Item::TriageII, Item::TriageII, Item::TriageII],
|
||||||
Item::ScatterI => vec![Item::Buff, Item::Blue, Item::Blue],
|
Item::ScatterI => vec![Item::Buff, Item::Blue, Item::Blue],
|
||||||
Item::ScatterII => vec![Item::ScatterI, Item::ScatterI, Item::ScatterI],
|
Item::ScatterII => vec![Item::ScatterI, Item::ScatterI, Item::ScatterI],
|
||||||
Item::ScatterIII => vec![Item::ScatterIII, Item::ScatterIII, Item::ScatterIII],
|
Item::ScatterIII => vec![Item::ScatterIII, Item::ScatterIII, Item::ScatterIII],
|
||||||
Item::Haste => vec![Item::Buff, Item::Red, Item::Green],
|
Item::Haste => vec![Item::Buff, Item::Red, Item::Green],
|
||||||
Item::Impurity => vec![Item::Buff, Item::Green, Item::Blue],
|
Item::Impurity => vec![Item::Buff, Item::Green, Item::Blue],
|
||||||
Item::AmplifyI => vec![Item::Buff, Item::Red, Item::Blue],
|
Item::AmplifyI => vec![Item::Buff, Item::Red, Item::Blue],
|
||||||
Item::AmplifyII => vec![Item::AmplifyI, Item::AmplifyI, Item::AmplifyI],
|
Item::AmplifyII => vec![Item::AmplifyI, Item::AmplifyI, Item::AmplifyI],
|
||||||
Item::AmplifyIII => vec![Item::AmplifyII, Item::AmplifyII, Item::AmplifyII],
|
Item::AmplifyIII => vec![Item::AmplifyII, Item::AmplifyII, Item::AmplifyII],
|
||||||
|
|
||||||
Item::SnareI => 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::SnareII => vec![Item::SnareI, Item::SnareI, Item::SnareI],
|
||||||
Item::SnareIII => vec![Item::SnareII, Item::SnareII, Item::SnareII],
|
Item::SnareIII => vec![Item::SnareII, Item::SnareII, Item::SnareII],
|
||||||
Item::PurgeI => vec![Item::Debuff, Item::Green, Item::Green], // Needs flavour
|
Item::PurgeI => vec![Item::Debuff, Item::Green, Item::Green], // Needs flavour
|
||||||
Item::PurgeII => vec![Item::PurgeI, Item::PurgeI, Item::PurgeI], // Needs flavour
|
Item::PurgeII => vec![Item::PurgeI, Item::PurgeI, Item::PurgeI], // Needs flavour
|
||||||
Item::PurgeIII => vec![Item::PurgeII, Item::PurgeII, Item::PurgeII], // Needs flavour
|
Item::PurgeIII => vec![Item::PurgeII, Item::PurgeII, Item::PurgeII], // Needs flavour
|
||||||
Item::SilenceI => vec![Item::Debuff, Item::Blue, Item::Blue],
|
Item::SilenceI => vec![Item::Debuff, Item::Blue, Item::Blue],
|
||||||
Item::SilenceII => vec![Item::SilenceI, Item::SilenceI, Item::SilenceI],
|
Item::SilenceII => vec![Item::SilenceI, Item::SilenceI, Item::SilenceI],
|
||||||
Item::SilenceIII => vec![Item::SilenceII, Item::SilenceII, Item::SilenceII],
|
Item::SilenceIII => vec![Item::SilenceII, Item::SilenceII, Item::SilenceII],
|
||||||
Item::CurseI => vec![Item::Debuff, Item::Red, Item::Green],
|
Item::CurseI => vec![Item::Debuff, Item::Red, Item::Green],
|
||||||
Item::CurseII => vec![Item::CurseI, Item::CurseI, Item::CurseI],
|
Item::CurseII => vec![Item::CurseI, Item::CurseI, Item::CurseI],
|
||||||
Item::CurseIII => vec![Item::CurseII, Item::CurseII, Item::CurseII],
|
Item::CurseIII => vec![Item::CurseII, Item::CurseII, Item::CurseII],
|
||||||
Item::DecayI => vec![Item::Debuff, Item::Green, Item::Blue],
|
Item::DecayI => vec![Item::Debuff, Item::Green, Item::Blue],
|
||||||
Item::DecayII => vec![Item::DecayI, Item::DecayI, Item::DecayI],
|
Item::DecayII => vec![Item::DecayI, Item::DecayI, Item::DecayI],
|
||||||
Item::DecayIII => vec![Item::DecayII, Item::DecayII, Item::DecayII],
|
Item::DecayIII => vec![Item::DecayII, Item::DecayII, Item::DecayII],
|
||||||
Item::InvertI => vec![Item::Debuff, Item::Red, Item::Blue],
|
Item::InvertI => vec![Item::Debuff, Item::Red, Item::Blue],
|
||||||
Item::InvertII => vec![Item::InvertI, Item::InvertI, Item::InvertI],
|
Item::InvertII => vec![Item::InvertI, Item::InvertI, Item::InvertI],
|
||||||
Item::InvertIII => vec![Item::InvertII, Item::InvertII, Item::InvertII],
|
Item::InvertIII => vec![Item::InvertII, Item::InvertII, Item::InvertII],
|
||||||
|
|
||||||
Item::Parry => vec![Item::Block, Item::Red, Item::Red], // Add red recharge
|
Item::ParryI => vec![Item::Block, Item::Red, Item::Red],
|
||||||
Item::PurifyI => vec![Item::Block, Item::Green, Item::Green],
|
Item::ParryII => vec![Item::ParryI, Item::ParryI, Item::ParryI],
|
||||||
Item::PurifyII => vec![Item::PurifyI, Item::PurifyI, Item::PurifyI],
|
Item::ParryIII => vec![Item::ParryII, Item::ParryII, Item::ParryII], // Add red recharge
|
||||||
Item::PurifyIII => vec![Item::PurifyII, Item::PurifyII, Item::PurifyII],
|
Item::PurifyI => vec![Item::Block, Item::Green, Item::Green],
|
||||||
Item::Corrupt => vec![Item::Block, Item::Blue, Item::Blue],
|
Item::PurifyII => vec![Item::PurifyI, Item::PurifyI, Item::PurifyI],
|
||||||
Item::ClutchI => vec![Item::Block, Item::Red, Item::Green],
|
Item::PurifyIII => vec![Item::PurifyII, Item::PurifyII, Item::PurifyII],
|
||||||
Item::ClutchII => vec![Item::ClutchI, Item::ClutchI, Item::ClutchI],
|
Item::Corrupt => vec![Item::Block, Item::Blue, Item::Blue],
|
||||||
Item::ClutchIII => vec![Item::ClutchII, Item::ClutchII, Item::ClutchII],
|
Item::ClutchI => vec![Item::Block, Item::Red, Item::Green],
|
||||||
Item::ReflectI => vec![Item::Block, Item::Green, Item::Blue],
|
Item::ClutchII => vec![Item::ClutchI, Item::ClutchI, Item::ClutchI],
|
||||||
Item::ReflectII => vec![Item::ReflectI, Item::ReflectI, Item::ReflectI],
|
Item::ClutchIII => vec![Item::ClutchII, Item::ClutchII, Item::ClutchII],
|
||||||
Item::ReflectIII => vec![Item::ReflectII, Item::ReflectII, Item::ReflectII],
|
Item::ReflectI => vec![Item::Block, Item::Green, Item::Blue],
|
||||||
Item::RechargeI => vec![Item::Block, Item::Red, Item::Blue],
|
Item::ReflectII => vec![Item::ReflectI, Item::ReflectI, Item::ReflectI],
|
||||||
Item::RechargeII => vec![Item::RechargeI, Item::RechargeI, Item::RechargeI],
|
Item::ReflectIII => vec![Item::ReflectII, Item::ReflectII, Item::ReflectII],
|
||||||
Item::RechargeIII => vec![Item::RechargeII, Item::RechargeII, Item::RechargeII],
|
Item::RechargeI => vec![Item::Block, Item::Red, Item::Blue],
|
||||||
|
Item::RechargeII => vec![Item::RechargeI, Item::RechargeI, Item::RechargeI],
|
||||||
|
Item::RechargeIII => vec![Item::RechargeII, Item::RechargeII, Item::RechargeII],
|
||||||
|
|
||||||
|
|
||||||
Item::Strangle => vec![Item::Stun, Item::Red, Item::Red],
|
Item::StrangleI => vec![Item::Stun, Item::Red, Item::Red],
|
||||||
Item::SleepI => vec![Item::Stun, Item::Green, Item::Green],
|
Item::StrangleII => vec![Item::StrangleI, Item::StrangleI, Item::StrangleI],
|
||||||
Item::SleepII => vec![Item::SleepI, Item::SleepI, Item::SleepI],
|
Item::StrangleIII => vec![Item::StrangleII, Item::StrangleII, Item::StrangleII],
|
||||||
Item::SleepIII => vec![Item::SleepII, Item::SleepII, Item::SleepII],
|
Item::SleepI => vec![Item::Stun, Item::Green, Item::Green],
|
||||||
Item::RuinI => vec![Item::Stun, Item::Blue, Item::Blue],
|
Item::SleepII => vec![Item::SleepI, Item::SleepI, Item::SleepI],
|
||||||
Item::RuinII => vec![Item::RuinI, Item::RuinI, Item::RuinI],
|
Item::SleepIII => vec![Item::SleepII, Item::SleepII, Item::SleepII],
|
||||||
Item::RuinIII => vec![Item::RuinII, Item::RuinII, Item::RuinII],
|
Item::RuinI => vec![Item::Stun, Item::Blue, Item::Blue],
|
||||||
Item::ThrowI => vec![Item::Stun, Item::Red, Item::Green],
|
Item::RuinII => vec![Item::RuinI, Item::RuinI, Item::RuinI],
|
||||||
Item::ThrowII => vec![Item::ThrowI, Item::ThrowI, Item::ThrowI],
|
Item::RuinIII => vec![Item::RuinII, Item::RuinII, Item::RuinII],
|
||||||
Item::ThrowIII => vec![Item::ThrowII, Item::ThrowII, Item::ThrowII],
|
Item::ThrowI => vec![Item::Stun, Item::Red, Item::Green],
|
||||||
Item::HexI => vec![Item::Stun, Item::Green, Item::Blue],
|
Item::ThrowII => vec![Item::ThrowI, Item::ThrowI, Item::ThrowI],
|
||||||
Item::HexII => vec![Item::HexI, Item::HexI, Item::HexI],
|
Item::ThrowIII => vec![Item::ThrowII, Item::ThrowII, Item::ThrowII],
|
||||||
Item::HexIII => vec![Item::HexII, Item::HexII, Item::HexII],
|
Item::HexI => vec![Item::Stun, Item::Green, Item::Blue],
|
||||||
Item::Banish => vec![Item::Stun, Item::Red, Item::Blue],
|
Item::HexII => vec![Item::HexI, Item::HexI, Item::HexI],
|
||||||
|
Item::HexIII => vec![Item::HexII, Item::HexII, Item::HexII],
|
||||||
|
Item::BanishI => vec![Item::Stun, Item::Red, Item::Blue],
|
||||||
|
Item::BanishII => vec![Item::BanishI, Item::BanishI, Item::BanishI],
|
||||||
|
Item::BanishIII => vec![Item::BanishII, Item::BanishII, Item::BanishII],
|
||||||
|
|
||||||
Item::StrikeI => vec![Item::Attack, Item::Red, Item::Red],
|
Item::StrikeI => vec![Item::Attack, Item::Red, Item::Red],
|
||||||
Item::StrikeII => vec![Item::StrikeI, Item::StrikeI, Item::StrikeI],
|
Item::StrikeII => vec![Item::StrikeI, Item::StrikeI, Item::StrikeI],
|
||||||
Item::StrikeIII => vec![Item::StrikeII, Item::StrikeII, Item::StrikeII],
|
Item::StrikeIII => vec![Item::StrikeII, Item::StrikeII, Item::StrikeII],
|
||||||
Item::HealI => vec![Item::Attack, Item::Green, Item::Green],
|
Item::HealI => vec![Item::Attack, Item::Green, Item::Green],
|
||||||
Item::HealII => vec![Item::HealI, Item::HealI, Item::HealI],
|
Item::HealII => vec![Item::HealI, Item::HealI, Item::HealI],
|
||||||
Item::HealIII => vec![Item::HealII, Item::HealII, Item::HealII],
|
Item::HealIII => vec![Item::HealII, Item::HealII, Item::HealII],
|
||||||
Item::BlastI => vec![Item::Attack, Item::Blue, Item::Blue],
|
Item::BlastI => vec![Item::Attack, Item::Blue, Item::Blue],
|
||||||
Item::BlastII => vec![Item::BlastI, Item::BlastI, Item::BlastI],
|
Item::BlastII => vec![Item::BlastI, Item::BlastI, Item::BlastI],
|
||||||
Item::BlastIII => vec![Item::BlastII, Item::BlastII, Item::BlastII],
|
Item::BlastIII => vec![Item::BlastII, Item::BlastII, Item::BlastII],
|
||||||
Item::SlayI => 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::SlayII => vec![Item::SlayI, Item::SlayI, Item::SlayI],
|
||||||
Item::SlayIII => vec![Item::SlayII, Item::SlayII, Item::SlayII],
|
Item::SlayIII => vec![Item::SlayII, Item::SlayII, Item::SlayII],
|
||||||
Item::Siphon => vec![Item::Attack, Item::Green, Item::Blue],
|
Item::SiphonI => vec![Item::Attack, Item::Green, Item::Blue],
|
||||||
Item::ChaosI => vec![Item::Attack, Item::Red, Item::Blue],
|
Item::SiphonII => vec![Item::SiphonI, Item::SiphonI, Item::SiphonI],
|
||||||
Item::ChaosII => vec![Item::ChaosI, Item::ChaosI, Item::ChaosI],
|
Item::SiphonIII => vec![Item::SiphonII, Item::SiphonII, Item::SiphonII],
|
||||||
Item::ChaosIII => vec![Item::ChaosII, Item::ChaosII, Item::ChaosII],
|
Item::ChaosI => vec![Item::Attack, Item::Red, Item::Blue],
|
||||||
|
Item::ChaosII => vec![Item::ChaosI, Item::ChaosI, Item::ChaosI],
|
||||||
|
Item::ChaosIII => vec![Item::ChaosII, Item::ChaosII, Item::ChaosII],
|
||||||
|
|
||||||
Item::RedDamageI => vec![Item::Damage, Item::Red, Item::Red],
|
Item::RedDamageI => vec![Item::Damage, Item::Red, Item::Red],
|
||||||
Item::GreenDamageI => vec![Item::Damage, Item::Green, Item::Green],
|
Item::GreenDamageI => vec![Item::Damage, Item::Green, Item::Green],
|
||||||
@ -722,7 +754,9 @@ impl From<Skill> for Item {
|
|||||||
Skill::AmplifyII => Item::AmplifyII,
|
Skill::AmplifyII => Item::AmplifyII,
|
||||||
Skill::AmplifyIII => Item::AmplifyIII,
|
Skill::AmplifyIII => Item::AmplifyIII,
|
||||||
Skill::Attack => Item::Attack,
|
Skill::Attack => Item::Attack,
|
||||||
Skill::Banish => Item::Banish,
|
Skill::BanishI => Item::BanishI,
|
||||||
|
Skill::BanishII => Item::BanishII,
|
||||||
|
Skill::BanishIII => Item::BanishIII,
|
||||||
Skill::BlastI => Item::BlastI,
|
Skill::BlastI => Item::BlastI,
|
||||||
Skill::BlastII => Item::BlastII,
|
Skill::BlastII => Item::BlastII,
|
||||||
Skill::BlastIII => Item::BlastIII,
|
Skill::BlastIII => Item::BlastIII,
|
||||||
@ -753,7 +787,9 @@ impl From<Skill> for Item {
|
|||||||
Skill::InvertI => Item::InvertI,
|
Skill::InvertI => Item::InvertI,
|
||||||
Skill::InvertII => Item::InvertII,
|
Skill::InvertII => Item::InvertII,
|
||||||
Skill::InvertIII => Item::InvertIII,
|
Skill::InvertIII => Item::InvertIII,
|
||||||
Skill::Parry => Item::Parry,
|
Skill::ParryI => Item::ParryI,
|
||||||
|
Skill::ParryII => Item::ParryII,
|
||||||
|
Skill::ParryIII => Item::ParryIII,
|
||||||
Skill::PurgeI => Item::PurgeI,
|
Skill::PurgeI => Item::PurgeI,
|
||||||
Skill::PurgeII => Item::PurgeII,
|
Skill::PurgeII => Item::PurgeII,
|
||||||
Skill::PurgeIII => Item::PurgeIII,
|
Skill::PurgeIII => Item::PurgeIII,
|
||||||
@ -775,7 +811,9 @@ impl From<Skill> for Item {
|
|||||||
Skill::SilenceI => Item::SilenceI,
|
Skill::SilenceI => Item::SilenceI,
|
||||||
Skill::SilenceII => Item::SilenceII,
|
Skill::SilenceII => Item::SilenceII,
|
||||||
Skill::SilenceIII => Item::SilenceIII,
|
Skill::SilenceIII => Item::SilenceIII,
|
||||||
Skill::Siphon => Item::Siphon,
|
Skill::SiphonI => Item::SiphonI,
|
||||||
|
Skill::SiphonII => Item::SiphonII,
|
||||||
|
Skill::SiphonIII => Item::SiphonIII,
|
||||||
Skill::SlayI => Item::SlayI,
|
Skill::SlayI => Item::SlayI,
|
||||||
Skill::SlayII => Item::SlayII,
|
Skill::SlayII => Item::SlayII,
|
||||||
Skill::SlayIII => Item::SlayIII,
|
Skill::SlayIII => Item::SlayIII,
|
||||||
@ -785,7 +823,9 @@ impl From<Skill> for Item {
|
|||||||
Skill::SnareI => Item::SnareI,
|
Skill::SnareI => Item::SnareI,
|
||||||
Skill::SnareII => Item::SnareII,
|
Skill::SnareII => Item::SnareII,
|
||||||
Skill::SnareIII => Item::SnareIII,
|
Skill::SnareIII => Item::SnareIII,
|
||||||
Skill::Strangle => Item::Strangle,
|
Skill::StrangleI => Item::StrangleI,
|
||||||
|
Skill::StrangleII => Item::StrangleII,
|
||||||
|
Skill::StrangleIII => Item::StrangleIII,
|
||||||
Skill::StrikeI => Item::StrikeI,
|
Skill::StrikeI => Item::StrikeI,
|
||||||
Skill::StrikeII => Item::StrikeII,
|
Skill::StrikeII => Item::StrikeII,
|
||||||
Skill::StrikeIII => Item::StrikeIII,
|
Skill::StrikeIII => Item::StrikeIII,
|
||||||
@ -802,8 +842,6 @@ impl From<Skill> for Item {
|
|||||||
Skill::Corrupt => Item::Corrupt,
|
Skill::Corrupt => Item::Corrupt,
|
||||||
|
|
||||||
Skill::CorruptionTick => Item::Corrupt,
|
Skill::CorruptionTick => Item::Corrupt,
|
||||||
Skill::SiphonTick => Item::Siphon,
|
|
||||||
Skill::StrangleTick => Item::Strangle,
|
|
||||||
|
|
||||||
Skill::TestTouch => Item::TestTouch,
|
Skill::TestTouch => Item::TestTouch,
|
||||||
Skill::TestStun => Item::TestStun,
|
Skill::TestStun => Item::TestStun,
|
||||||
@ -894,7 +932,9 @@ pub fn get_combos() -> Vec<Combo> {
|
|||||||
Combo { components: Item::InvertII.combo(), item: Item::InvertII },
|
Combo { components: Item::InvertII.combo(), item: Item::InvertII },
|
||||||
Combo { components: Item::InvertIII.combo(), item: Item::InvertIII },
|
Combo { components: Item::InvertIII.combo(), item: Item::InvertIII },
|
||||||
|
|
||||||
Combo { components: Item::Parry.combo(), item: Item::Parry }, // Add red recharge
|
Combo { components: Item::ParryI.combo(), item: Item::ParryI },
|
||||||
|
Combo { components: Item::ParryII.combo(), item: Item::ParryII },
|
||||||
|
Combo { components: Item::ParryIII.combo(), item: Item::ParryIII },
|
||||||
Combo { components: Item::PurifyI.combo(), item: Item::PurifyI },
|
Combo { components: Item::PurifyI.combo(), item: Item::PurifyI },
|
||||||
Combo { components: Item::PurifyII.combo(), item: Item::PurifyII },
|
Combo { components: Item::PurifyII.combo(), item: Item::PurifyII },
|
||||||
Combo { components: Item::PurifyIII.combo(), item: Item::PurifyIII },
|
Combo { components: Item::PurifyIII.combo(), item: Item::PurifyIII },
|
||||||
@ -911,10 +951,12 @@ pub fn get_combos() -> Vec<Combo> {
|
|||||||
Combo { components: Item::RechargeII.combo(), item: Item::RechargeII },
|
Combo { components: Item::RechargeII.combo(), item: Item::RechargeII },
|
||||||
Combo { components: Item::RechargeIII.combo(), item: Item::RechargeIII },
|
Combo { components: Item::RechargeIII.combo(), item: Item::RechargeIII },
|
||||||
|
|
||||||
Combo { components: Item::Strangle.combo(), item: Item::Strangle },
|
Combo { components: Item::StrangleI.combo(), item: Item::StrangleI },
|
||||||
|
Combo { components: Item::StrangleII.combo(), item: Item::StrangleII },
|
||||||
|
Combo { components: Item::StrangleIII.combo(), item: Item::StrangleIII },
|
||||||
Combo { components: Item::SleepI.combo(), item: Item::SleepI },
|
Combo { components: Item::SleepI.combo(), item: Item::SleepI },
|
||||||
Combo { components: Item::SleepII.combo(), item: Item::SleepII },
|
Combo { components: Item::SleepII.combo(), item: Item::SleepII },
|
||||||
Combo { components: Item::SleepIII.combo(), item: Item::SleepIII },
|
Combo { components: Item::SleepIII.combo(), item: Item::SleepIII },
|
||||||
Combo { components: Item::RuinI.combo(), item: Item::RuinI },
|
Combo { components: Item::RuinI.combo(), item: Item::RuinI },
|
||||||
Combo { components: Item::RuinII.combo(), item: Item::RuinII },
|
Combo { components: Item::RuinII.combo(), item: Item::RuinII },
|
||||||
Combo { components: Item::RuinIII.combo(), item: Item::RuinIII },
|
Combo { components: Item::RuinIII.combo(), item: Item::RuinIII },
|
||||||
@ -926,7 +968,9 @@ pub fn get_combos() -> Vec<Combo> {
|
|||||||
Combo { components: Item::HexI.combo(), item: Item::HexI },
|
Combo { components: Item::HexI.combo(), item: Item::HexI },
|
||||||
Combo { components: Item::HexII.combo(), item: Item::HexII },
|
Combo { components: Item::HexII.combo(), item: Item::HexII },
|
||||||
Combo { components: Item::HexIII.combo(), item: Item::HexIII },
|
Combo { components: Item::HexIII.combo(), item: Item::HexIII },
|
||||||
Combo { components: Item::Banish.combo(), item: Item::Banish },
|
Combo { components: Item::BanishI.combo(), item: Item::BanishI },
|
||||||
|
Combo { components: Item::BanishII.combo(), item: Item::BanishII },
|
||||||
|
Combo { components: Item::BanishIII.combo(), item: Item::BanishIII },
|
||||||
|
|
||||||
Combo { components: Item::StrikeI.combo(), item: Item::StrikeI },
|
Combo { components: Item::StrikeI.combo(), item: Item::StrikeI },
|
||||||
Combo { components: Item::StrikeII.combo(), item: Item::StrikeII },
|
Combo { components: Item::StrikeII.combo(), item: Item::StrikeII },
|
||||||
@ -941,7 +985,9 @@ pub fn get_combos() -> Vec<Combo> {
|
|||||||
Combo { components: Item::SlayI.combo(), item: Item::SlayI },
|
Combo { components: Item::SlayI.combo(), item: Item::SlayI },
|
||||||
Combo { components: Item::SlayII.combo(), item: Item::SlayII },
|
Combo { components: Item::SlayII.combo(), item: Item::SlayII },
|
||||||
Combo { components: Item::SlayIII.combo(), item: Item::SlayIII },
|
Combo { components: Item::SlayIII.combo(), item: Item::SlayIII },
|
||||||
Combo { components: Item::Siphon.combo(), item: Item::Siphon },
|
Combo { components: Item::SiphonI.combo(), item: Item::SiphonI },
|
||||||
|
Combo { components: Item::SiphonII.combo(), item: Item::SiphonII },
|
||||||
|
Combo { components: Item::SiphonIII.combo(), item: Item::SiphonIII },
|
||||||
Combo { components: Item::ChaosI.combo(), item: Item::ChaosI },
|
Combo { components: Item::ChaosI.combo(), item: Item::ChaosI },
|
||||||
Combo { components: Item::ChaosII.combo(), item: Item::ChaosII },
|
Combo { components: Item::ChaosII.combo(), item: Item::ChaosII },
|
||||||
Combo { components: Item::ChaosIII.combo(), item: Item::ChaosIII },
|
Combo { components: Item::ChaosIII.combo(), item: Item::ChaosIII },
|
||||||
|
|||||||
@ -91,7 +91,7 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
|||||||
match skill {
|
match skill {
|
||||||
Skill::BlastI |
|
Skill::BlastI |
|
||||||
Skill::ChaosI |
|
Skill::ChaosI |
|
||||||
Skill::Siphon => {
|
Skill::SiphonI => {
|
||||||
let amount = source.green_damage().pct(Skill::ImpureBlast.multiplier());
|
let amount = source.green_damage().pct(Skill::ImpureBlast.multiplier());
|
||||||
target.deal_blue_damage(Skill::ImpureBlast, amount)
|
target.deal_blue_damage(Skill::ImpureBlast, amount)
|
||||||
.into_iter()
|
.into_iter()
|
||||||
@ -116,7 +116,9 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
|||||||
Skill::AmplifyII |
|
Skill::AmplifyII |
|
||||||
Skill::AmplifyIII => amplify(source, target, resolutions, skill),
|
Skill::AmplifyIII => amplify(source, target, resolutions, skill),
|
||||||
|
|
||||||
Skill::Banish => banish(source, target, resolutions, skill), // TODO prevent all actions
|
Skill::BanishI |
|
||||||
|
Skill::BanishII |
|
||||||
|
Skill::BanishIII => banish(source, target, resolutions, skill), // TODO prevent all actions
|
||||||
|
|
||||||
Skill::BlastI |
|
Skill::BlastI |
|
||||||
Skill::BlastII |
|
Skill::BlastII |
|
||||||
@ -161,7 +163,9 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
|||||||
Skill::InvertII |
|
Skill::InvertII |
|
||||||
Skill::InvertIII => invert(source, target, resolutions, skill),
|
Skill::InvertIII => invert(source, target, resolutions, skill),
|
||||||
|
|
||||||
Skill::Parry => parry(source, target, resolutions, skill),
|
Skill::ParryI |
|
||||||
|
Skill::ParryII |
|
||||||
|
Skill::ParryIII => parry(source, target, resolutions, skill),
|
||||||
|
|
||||||
Skill::PurgeI |
|
Skill::PurgeI |
|
||||||
Skill::PurgeII |
|
Skill::PurgeII |
|
||||||
@ -191,8 +195,12 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
|||||||
Skill::SilenceII |
|
Skill::SilenceII |
|
||||||
Skill::SilenceIII => silence(source, target, resolutions, skill), // target cannot cast spells
|
Skill::SilenceIII => silence(source, target, resolutions, skill), // target cannot cast spells
|
||||||
|
|
||||||
Skill::Siphon => siphon(source, target, resolutions, skill),
|
Skill::SiphonI |
|
||||||
Skill::SiphonTick => siphon_tick(source, target, resolutions, skill), // hot
|
Skill::SiphonII |
|
||||||
|
Skill::SiphonIII => siphon(source, target, resolutions, skill), // dot
|
||||||
|
Skill::SiphonTickI |
|
||||||
|
Skill::SiphonTickII |
|
||||||
|
Skill::SiphonTickIII => siphon_tick(source, target, resolutions, skill), // dot
|
||||||
|
|
||||||
Skill::SlayI |
|
Skill::SlayI |
|
||||||
Skill::SlayII |
|
Skill::SlayII |
|
||||||
@ -206,8 +214,12 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
|||||||
Skill::SnareII |
|
Skill::SnareII |
|
||||||
Skill::SnareIII => snare(source, target, resolutions, skill),
|
Skill::SnareIII => snare(source, target, resolutions, skill),
|
||||||
|
|
||||||
Skill::Strangle => strangle(source, target, resolutions, skill),
|
Skill::StrangleI |
|
||||||
Skill::StrangleTick => strangle_tick(source, target, resolutions, skill),
|
Skill::StrangleII |
|
||||||
|
Skill::StrangleIII => strangle(source, target, resolutions, skill),
|
||||||
|
Skill::StrangleTickI |
|
||||||
|
Skill::StrangleTickII |
|
||||||
|
Skill::StrangleTickIII => strangle_tick(source, target, resolutions, skill),
|
||||||
|
|
||||||
Skill::StrikeI |
|
Skill::StrikeI |
|
||||||
Skill::StrikeII |
|
Skill::StrikeII |
|
||||||
@ -239,7 +251,9 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
|||||||
//Triggered
|
//Triggered
|
||||||
Skill::HasteStrike => panic!("should only trigger from haste"),
|
Skill::HasteStrike => panic!("should only trigger from haste"),
|
||||||
Skill::ImpureBlast => panic!("should only trigger from impurity"),
|
Skill::ImpureBlast => panic!("should only trigger from impurity"),
|
||||||
Skill::Riposte => panic!("should only trigger from parry"),
|
Skill::RiposteI |
|
||||||
|
Skill::RiposteII |
|
||||||
|
Skill::RiposteIII => panic!("should only trigger from parry"),
|
||||||
|
|
||||||
|
|
||||||
// Not used
|
// Not used
|
||||||
@ -252,8 +266,8 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
|||||||
Skill::TestTouch => touch(source, target, resolutions, skill),
|
Skill::TestTouch => touch(source, target, resolutions, skill),
|
||||||
Skill::TestStun => stun(source, target, resolutions, Skill::Stun),
|
Skill::TestStun => stun(source, target, resolutions, Skill::Stun),
|
||||||
Skill::TestBlock => block(source, target, resolutions, Skill::Block),
|
Skill::TestBlock => block(source, target, resolutions, Skill::Block),
|
||||||
Skill::TestParry => parry(source, target, resolutions, Skill::Parry),
|
Skill::TestParry => parry(source, target, resolutions, Skill::ParryI),
|
||||||
Skill::TestSiphon => siphon(source, target, resolutions, Skill::Siphon),
|
Skill::TestSiphon => siphon(source, target, resolutions, Skill::SiphonI),
|
||||||
};
|
};
|
||||||
|
|
||||||
return resolutions;
|
return resolutions;
|
||||||
@ -283,8 +297,15 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) ->
|
|||||||
|
|
||||||
Event::Immunity { skill: _, immunity } => match immunity.contains(&Effect::Parry) {
|
Event::Immunity { skill: _, immunity } => match immunity.contains(&Effect::Parry) {
|
||||||
true => {
|
true => {
|
||||||
resolutions = riposte(&mut target, &mut source, resolutions, Skill::Riposte);
|
let im_targ = target.clone();
|
||||||
}
|
let CrypEffect { effect: _, duration: _, meta, tick: _ } = im_targ.effects.iter()
|
||||||
|
.find(|e| e.effect == Effect::Parry).unwrap();
|
||||||
|
let &riposte_skill = match meta {
|
||||||
|
Some(EffectMeta::Skill(s)) => s,
|
||||||
|
_ => panic!("no parry skill"),
|
||||||
|
};
|
||||||
|
resolutions = riposte(&mut target, &mut source, resolutions, riposte_skill);
|
||||||
|
},
|
||||||
false => (),
|
false => (),
|
||||||
},
|
},
|
||||||
_ => (),
|
_ => (),
|
||||||
@ -472,18 +493,20 @@ impl Effect {
|
|||||||
Effect::Clutch => [
|
Effect::Clutch => [
|
||||||
Skill::Stun,
|
Skill::Stun,
|
||||||
Skill::HexI,
|
Skill::HexI,
|
||||||
Skill::HexII,
|
Skill::HexII,
|
||||||
Skill::HexIII,
|
Skill::HexIII,
|
||||||
Skill::SilenceI,
|
Skill::SilenceI,
|
||||||
Skill::SilenceII,
|
Skill::SilenceII,
|
||||||
Skill::SilenceIII,
|
Skill::SilenceIII,
|
||||||
Skill::RuinI,
|
Skill::RuinI,
|
||||||
Skill::RuinII,
|
Skill::RuinII,
|
||||||
Skill::RuinIII,
|
Skill::RuinIII,
|
||||||
Skill::Strangle,
|
Skill::StrangleI,
|
||||||
|
Skill::StrangleII,
|
||||||
|
Skill::StrangleIII,
|
||||||
Skill::SnareI,
|
Skill::SnareI,
|
||||||
Skill::SnareII,
|
Skill::SnareII,
|
||||||
Skill::SnareIII
|
Skill::SnareIII
|
||||||
].contains(&skill),
|
].contains(&skill),
|
||||||
Effect::Injured => skill.colours().contains(&Colour::Green),
|
Effect::Injured => skill.colours().contains(&Colour::Green),
|
||||||
_ => false,
|
_ => false,
|
||||||
@ -500,7 +523,12 @@ impl Effect {
|
|||||||
Effect::Hex => true,
|
Effect::Hex => true,
|
||||||
Effect::Banish => true,
|
Effect::Banish => true,
|
||||||
Effect::Strangle => true,
|
Effect::Strangle => true,
|
||||||
Effect::Strangling => skill != Skill::StrangleTick,
|
Effect::Strangling => match skill {
|
||||||
|
Skill::StrangleTickI |
|
||||||
|
Skill::StrangleTickII |
|
||||||
|
Skill::StrangleTickIII => false,
|
||||||
|
_ => true,
|
||||||
|
},
|
||||||
Effect::Silence => skill.colours().contains(&Colour::Blue),
|
Effect::Silence => skill.colours().contains(&Colour::Blue),
|
||||||
Effect::Snare => skill.colours().contains(&Colour::Red),
|
Effect::Snare => skill.colours().contains(&Colour::Red),
|
||||||
Effect::Ko => skill.ko_castable(),
|
Effect::Ko => skill.ko_castable(),
|
||||||
@ -635,7 +663,9 @@ pub enum Skill {
|
|||||||
AmplifyII,
|
AmplifyII,
|
||||||
AmplifyIII,
|
AmplifyIII,
|
||||||
|
|
||||||
Banish,
|
BanishI,
|
||||||
|
BanishII,
|
||||||
|
BanishIII,
|
||||||
|
|
||||||
BlastI,
|
BlastI,
|
||||||
BlastII,
|
BlastII,
|
||||||
@ -683,8 +713,9 @@ pub enum Skill {
|
|||||||
InvertII,
|
InvertII,
|
||||||
InvertIII,
|
InvertIII,
|
||||||
|
|
||||||
Parry, // avoid all damage
|
ParryI, // avoid all damage
|
||||||
|
ParryII,
|
||||||
|
ParryIII,
|
||||||
PurgeI,
|
PurgeI,
|
||||||
PurgeII,
|
PurgeII,
|
||||||
PurgeIII,
|
PurgeIII,
|
||||||
@ -701,7 +732,9 @@ pub enum Skill {
|
|||||||
ReflectII,
|
ReflectII,
|
||||||
ReflectIII,
|
ReflectIII,
|
||||||
|
|
||||||
Riposte,
|
RiposteI,
|
||||||
|
RiposteII,
|
||||||
|
RiposteIII,
|
||||||
|
|
||||||
RuinI,
|
RuinI,
|
||||||
RuinII,
|
RuinII,
|
||||||
@ -715,8 +748,12 @@ pub enum Skill {
|
|||||||
SilenceII,
|
SilenceII,
|
||||||
SilenceIII,
|
SilenceIII,
|
||||||
|
|
||||||
Siphon,
|
SiphonI,
|
||||||
SiphonTick,
|
SiphonII,
|
||||||
|
SiphonIII,
|
||||||
|
SiphonTickI,
|
||||||
|
SiphonTickII,
|
||||||
|
SiphonTickIII,
|
||||||
|
|
||||||
SlayI,
|
SlayI,
|
||||||
SlayII,
|
SlayII,
|
||||||
@ -730,8 +767,12 @@ pub enum Skill {
|
|||||||
SnareII,
|
SnareII,
|
||||||
SnareIII,
|
SnareIII,
|
||||||
|
|
||||||
Strangle,
|
StrangleI,
|
||||||
StrangleTick,
|
StrangleII,
|
||||||
|
StrangleIII,
|
||||||
|
StrangleTickI,
|
||||||
|
StrangleTickII,
|
||||||
|
StrangleTickIII,
|
||||||
|
|
||||||
StrikeI,
|
StrikeI,
|
||||||
StrikeII,
|
StrikeII,
|
||||||
@ -780,7 +821,9 @@ impl Skill {
|
|||||||
Skill::HealI => 130, //GG
|
Skill::HealI => 130, //GG
|
||||||
Skill::HealII => 160, //GG
|
Skill::HealII => 160, //GG
|
||||||
Skill::HealIII => 200, //GG
|
Skill::HealIII => 200, //GG
|
||||||
Skill::SiphonTick => 40, // GB
|
Skill::SiphonTickI => 40, // GB
|
||||||
|
Skill::SiphonTickII => 70,
|
||||||
|
Skill::SiphonTickIII => 110,
|
||||||
|
|
||||||
Skill::SlayI => 70, // RG
|
Skill::SlayI => 70, // RG
|
||||||
Skill::SlayII => 90,
|
Skill::SlayII => 90,
|
||||||
@ -792,8 +835,12 @@ impl Skill {
|
|||||||
|
|
||||||
// Block Base
|
// Block Base
|
||||||
Skill::CorruptionTick => 80,
|
Skill::CorruptionTick => 80,
|
||||||
Skill::Parry => 110,
|
Skill::ParryI => 110,
|
||||||
Skill::Riposte => 70,
|
Skill::ParryII => 145,
|
||||||
|
Skill::ParryIII => 200,
|
||||||
|
Skill::RiposteI => 70,
|
||||||
|
Skill::RiposteII => 95,
|
||||||
|
Skill::RiposteIII => 120,
|
||||||
|
|
||||||
Skill::PurifyI => 45, //Green dmg (heal)
|
Skill::PurifyI => 45, //Green dmg (heal)
|
||||||
Skill::PurifyII => 70,
|
Skill::PurifyII => 70,
|
||||||
@ -811,7 +858,9 @@ impl Skill {
|
|||||||
Skill::SleepI => 240, //Green dmg (heal)
|
Skill::SleepI => 240, //Green dmg (heal)
|
||||||
Skill::SleepII => 300,
|
Skill::SleepII => 300,
|
||||||
Skill::SleepIII => 400,
|
Skill::SleepIII => 400,
|
||||||
Skill::StrangleTick => 65,
|
Skill::StrangleTickI => 65,
|
||||||
|
Skill::StrangleTickII => 95,
|
||||||
|
Skill::StrangleTickIII => 140,
|
||||||
|
|
||||||
// Debuff Base
|
// Debuff Base
|
||||||
Skill::DecayTickI => 25,
|
Skill::DecayTickI => 25,
|
||||||
@ -851,7 +900,9 @@ impl Skill {
|
|||||||
Skill::AmplifyIII => vec![CrypEffect {effect: Effect::Amplify, duration: 4,
|
Skill::AmplifyIII => vec![CrypEffect {effect: Effect::Amplify, duration: 4,
|
||||||
meta: Some(EffectMeta::Multiplier(200)), tick: None}],
|
meta: Some(EffectMeta::Multiplier(200)), tick: None}],
|
||||||
|
|
||||||
Skill::Banish => vec![CrypEffect {effect: Effect::Banish, duration: 1,meta: None, tick: None}],
|
Skill::BanishI => vec![CrypEffect {effect: Effect::Banish, duration: 1,meta: None, tick: None}],
|
||||||
|
Skill::BanishII => vec![CrypEffect {effect: Effect::Banish, duration: 2,meta: None, tick: None}],
|
||||||
|
Skill::BanishIII => vec![CrypEffect {effect: Effect::Banish, duration: 3,meta: None, tick: None}],
|
||||||
Skill::Block => vec![CrypEffect {effect: Effect::Block, duration: 1,
|
Skill::Block => vec![CrypEffect {effect: Effect::Block, duration: 1,
|
||||||
meta: Some(EffectMeta::Multiplier(50)), tick: None}],
|
meta: Some(EffectMeta::Multiplier(50)), tick: None}],
|
||||||
Skill::Buff => vec![CrypEffect {effect: Effect::Buff, duration: 2,
|
Skill::Buff => vec![CrypEffect {effect: Effect::Buff, duration: 2,
|
||||||
@ -876,13 +927,13 @@ impl Skill {
|
|||||||
|
|
||||||
Skill::DecayI => vec![CrypEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None },
|
Skill::DecayI => vec![CrypEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None },
|
||||||
CrypEffect {effect: Effect::Decay, duration: 3,
|
CrypEffect {effect: Effect::Decay, duration: 3,
|
||||||
meta: Some(EffectMeta::SkillTick(Skill::DecayTickI)), tick: None}],
|
meta: Some(EffectMeta::Skill(Skill::DecayTickI)), tick: None}],
|
||||||
Skill::DecayII => vec![CrypEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(35)), tick: None },
|
Skill::DecayII => vec![CrypEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(35)), tick: None },
|
||||||
CrypEffect {effect: Effect::Decay, duration: 3,
|
CrypEffect {effect: Effect::Decay, duration: 3,
|
||||||
meta: Some(EffectMeta::SkillTick(Skill::DecayTickII)), tick: None}],
|
meta: Some(EffectMeta::Skill(Skill::DecayTickII)), tick: None}],
|
||||||
Skill::DecayIII => vec![CrypEffect {effect: Effect::Wither, duration: 4, meta: Some(EffectMeta::Multiplier(20)), tick: None },
|
Skill::DecayIII => vec![CrypEffect {effect: Effect::Wither, duration: 4, meta: Some(EffectMeta::Multiplier(20)), tick: None },
|
||||||
CrypEffect {effect: Effect::Decay, duration: 4,
|
CrypEffect {effect: Effect::Decay, duration: 4,
|
||||||
meta: Some(EffectMeta::SkillTick(Skill::DecayTickIII)), tick: None}],
|
meta: Some(EffectMeta::Skill(Skill::DecayTickIII)), tick: None}],
|
||||||
|
|
||||||
Skill::Haste => vec![CrypEffect {effect: Effect::Haste, duration: 2,
|
Skill::Haste => vec![CrypEffect {effect: Effect::Haste, duration: 2,
|
||||||
meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
||||||
@ -900,8 +951,13 @@ impl Skill {
|
|||||||
Skill::InvertII => vec![CrypEffect {effect: Effect::Invert, duration: 3, meta: None, tick: None}],
|
Skill::InvertII => vec![CrypEffect {effect: Effect::Invert, duration: 3, meta: None, tick: None}],
|
||||||
Skill::InvertIII => vec![CrypEffect {effect: Effect::Invert, duration: 4, meta: None, tick: None}],
|
Skill::InvertIII => vec![CrypEffect {effect: Effect::Invert, duration: 4, meta: None, tick: None}],
|
||||||
|
|
||||||
Skill::Parry => vec![CrypEffect {effect: Effect::Parry, duration: 2, meta: None, tick: None }],
|
Skill::ParryI => vec![CrypEffect {effect: Effect::Parry, duration: 2,
|
||||||
|
meta: Some(EffectMeta::Skill(Skill::RiposteI)), tick: None}],
|
||||||
|
Skill::ParryII => vec![CrypEffect {effect: Effect::Parry, duration: 2,
|
||||||
|
meta: Some(EffectMeta::Skill(Skill::RiposteII)), tick: None}],
|
||||||
|
Skill::ParryIII => vec![CrypEffect {effect: Effect::Parry, duration: 2,
|
||||||
|
meta: Some(EffectMeta::Skill(Skill::RiposteIII)), tick: None}],
|
||||||
|
|
||||||
Skill::ReflectI => vec![CrypEffect {effect: Effect::Reflect, duration: 1, 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::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::ReflectIII => vec![CrypEffect {effect: Effect::Reflect, duration: 3, meta: None, tick: None }],
|
||||||
@ -925,7 +981,12 @@ impl Skill {
|
|||||||
Skill::SilenceII => vec![CrypEffect {effect: Effect::Silence, duration: 3, meta: None, tick: None}],
|
Skill::SilenceII => vec![CrypEffect {effect: Effect::Silence, duration: 3, meta: None, tick: None}],
|
||||||
Skill::SilenceIII => vec![CrypEffect {effect: Effect::Silence, duration: 4, meta: None, tick: None}],
|
Skill::SilenceIII => vec![CrypEffect {effect: Effect::Silence, duration: 4, meta: None, tick: None}],
|
||||||
|
|
||||||
Skill::Siphon => vec![CrypEffect {effect: Effect::Siphon, duration: 2, meta: None, tick: None}],
|
Skill::SiphonI => vec![CrypEffect {effect: Effect::Siphon, duration: 2,
|
||||||
|
meta: Some(EffectMeta::Skill(Skill::SiphonTickI)), tick: None}],
|
||||||
|
Skill::SiphonII => vec![CrypEffect {effect: Effect::Siphon, duration: 3,
|
||||||
|
meta: Some(EffectMeta::Skill(Skill::SiphonTickII)), tick: None}],
|
||||||
|
Skill::SiphonIII => vec![CrypEffect {effect: Effect::Siphon, duration: 4,
|
||||||
|
meta: Some(EffectMeta::Skill(Skill::SiphonTickIII)), tick: None}],
|
||||||
|
|
||||||
Skill::SleepI => vec![CrypEffect {effect: Effect::Stun, 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::SleepII => vec![CrypEffect {effect: Effect::Stun, duration: 3, meta: None, tick: None}],
|
||||||
@ -935,7 +996,12 @@ impl Skill {
|
|||||||
Skill::SnareII => vec![CrypEffect {effect: Effect::Snare, duration: 3, 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::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::StrangleI => vec![CrypEffect {effect: Effect::Strangle, duration: 2,
|
||||||
|
meta: Some(EffectMeta::Skill(Skill::StrangleTickI)), tick: None}],
|
||||||
|
Skill::StrangleII => vec![CrypEffect {effect: Effect::Strangle, duration: 2,
|
||||||
|
meta: Some(EffectMeta::Skill(Skill::StrangleTickII)), tick: None}],
|
||||||
|
Skill::StrangleIII => vec![CrypEffect {effect: Effect::Strangle, duration: 2,
|
||||||
|
meta: Some(EffectMeta::Skill(Skill::StrangleTickIII)), tick: None}],
|
||||||
Skill::Stun => vec![CrypEffect {effect: Effect::Stun, 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::TauntI => vec![CrypEffect {effect: Effect::Taunt, duration: 2, meta: None, tick: None}],
|
||||||
@ -943,11 +1009,11 @@ impl Skill {
|
|||||||
Skill::TauntIII => vec![CrypEffect {effect: Effect::Taunt, duration: 4, meta: None, tick: None}],
|
Skill::TauntIII => vec![CrypEffect {effect: Effect::Taunt, duration: 4, meta: None, tick: None}],
|
||||||
|
|
||||||
Skill::TriageI => vec![CrypEffect {effect: Effect::Triage, duration: 2,
|
Skill::TriageI => vec![CrypEffect {effect: Effect::Triage, duration: 2,
|
||||||
meta: Some(EffectMeta::SkillTick(Skill::TriageTickI)), tick: None}],
|
meta: Some(EffectMeta::Skill(Skill::TriageTickI)), tick: None}],
|
||||||
Skill::TriageII => vec![CrypEffect {effect: Effect::Triage, duration: 3,
|
Skill::TriageII => vec![CrypEffect {effect: Effect::Triage, duration: 3,
|
||||||
meta: Some(EffectMeta::SkillTick(Skill::TriageTickII)), tick: None}],
|
meta: Some(EffectMeta::Skill(Skill::TriageTickII)), tick: None}],
|
||||||
Skill::TriageIII => vec![CrypEffect {effect: Effect::Triage, duration: 4,
|
Skill::TriageIII => vec![CrypEffect {effect: Effect::Triage, duration: 4,
|
||||||
meta: Some(EffectMeta::SkillTick(Skill::TriageTickIII)), tick: None}],
|
meta: Some(EffectMeta::Skill(Skill::TriageTickIII)), tick: None}],
|
||||||
|
|
||||||
//Unused
|
//Unused
|
||||||
Skill::Injure => vec![CrypEffect {effect: Effect::Injured, duration: 2, meta: None, tick: None }],
|
Skill::Injure => vec![CrypEffect {effect: Effect::Injured, duration: 2, meta: None, tick: None }],
|
||||||
@ -968,7 +1034,9 @@ impl Skill {
|
|||||||
Skill::StrikeII => None,
|
Skill::StrikeII => None,
|
||||||
Skill::StrikeIII => None,
|
Skill::StrikeIII => None,
|
||||||
Skill::Block => None, // reduce damage
|
Skill::Block => None, // reduce damage
|
||||||
Skill::Parry => Some(2), // avoid all damage
|
Skill::ParryI |
|
||||||
|
Skill::ParryII |
|
||||||
|
Skill::ParryIII => Some(2), // avoid all damage
|
||||||
|
|
||||||
Skill::SnareI => Some(2),
|
Skill::SnareI => Some(2),
|
||||||
Skill::SnareII => Some(2),
|
Skill::SnareII => Some(2),
|
||||||
@ -1006,7 +1074,9 @@ impl Skill {
|
|||||||
Skill::DecayI => Some(1), // dot
|
Skill::DecayI => Some(1), // dot
|
||||||
Skill::DecayII => Some(1),
|
Skill::DecayII => Some(1),
|
||||||
Skill::DecayIII => Some(1),
|
Skill::DecayIII => Some(1),
|
||||||
Skill::Siphon => None,
|
Skill::SiphonI |
|
||||||
|
Skill::SiphonII |
|
||||||
|
Skill::SiphonIII => None,
|
||||||
|
|
||||||
Skill::CurseI => Some(1),
|
Skill::CurseI => Some(1),
|
||||||
Skill::CurseII => Some(1),
|
Skill::CurseII => Some(1),
|
||||||
@ -1028,7 +1098,9 @@ impl Skill {
|
|||||||
Skill::PurgeII => None,
|
Skill::PurgeII => None,
|
||||||
Skill::PurgeIII => None,
|
Skill::PurgeIII => None,
|
||||||
|
|
||||||
Skill::Banish => Some(1),
|
Skill::BanishI => Some(1),
|
||||||
|
Skill::BanishII => Some(1),
|
||||||
|
Skill::BanishIII => Some(1),
|
||||||
|
|
||||||
Skill::HexI => Some(1),
|
Skill::HexI => Some(1),
|
||||||
Skill::HexII => Some(2),
|
Skill::HexII => Some(2),
|
||||||
@ -1055,7 +1127,9 @@ impl Skill {
|
|||||||
Skill::SleepII => Some(3),
|
Skill::SleepII => Some(3),
|
||||||
Skill::SleepIII => Some(3),
|
Skill::SleepIII => Some(3),
|
||||||
|
|
||||||
Skill::Strangle => Some(2),
|
Skill::StrangleI => Some(2),
|
||||||
|
Skill::StrangleII => Some(2),
|
||||||
|
Skill::StrangleIII => Some(2),
|
||||||
|
|
||||||
Skill::ClutchI => Some(1),
|
Skill::ClutchI => Some(1),
|
||||||
Skill::ClutchII => Some(2),
|
Skill::ClutchII => Some(2),
|
||||||
@ -1076,14 +1150,20 @@ impl Skill {
|
|||||||
// Trigger
|
// Trigger
|
||||||
Skill::ImpureBlast |
|
Skill::ImpureBlast |
|
||||||
Skill::HasteStrike |
|
Skill::HasteStrike |
|
||||||
Skill::Riposte | // parry
|
Skill::RiposteI |
|
||||||
|
Skill::RiposteII |
|
||||||
|
Skill::RiposteIII | // parry
|
||||||
// Ticks
|
// Ticks
|
||||||
Skill::CorruptionTick |
|
Skill::CorruptionTick |
|
||||||
Skill::DecayTickI |
|
Skill::DecayTickI |
|
||||||
Skill::DecayTickII |
|
Skill::DecayTickII |
|
||||||
Skill::DecayTickIII |
|
Skill::DecayTickIII |
|
||||||
Skill::SiphonTick |
|
Skill::SiphonTickI |
|
||||||
Skill::StrangleTick |
|
Skill::SiphonTickII |
|
||||||
|
Skill::SiphonTickIII |
|
||||||
|
Skill::StrangleTickI |
|
||||||
|
Skill::StrangleTickII |
|
||||||
|
Skill::StrangleTickIII |
|
||||||
Skill::TriageTickI |
|
Skill::TriageTickI |
|
||||||
Skill::TriageTickII |
|
Skill::TriageTickII |
|
||||||
Skill::TriageTickIII => None,
|
Skill::TriageTickIII => None,
|
||||||
@ -1107,7 +1187,9 @@ impl Skill {
|
|||||||
Skill::DecayTickI |
|
Skill::DecayTickI |
|
||||||
Skill::DecayTickII |
|
Skill::DecayTickII |
|
||||||
Skill::DecayTickIII |
|
Skill::DecayTickIII |
|
||||||
Skill::SiphonTick |
|
Skill::SiphonTickI |
|
||||||
|
Skill::SiphonTickII |
|
||||||
|
Skill::SiphonTickIII |
|
||||||
|
|
||||||
Skill::TriageTickI |
|
Skill::TriageTickI |
|
||||||
Skill::TriageTickII |
|
Skill::TriageTickII |
|
||||||
@ -1122,8 +1204,12 @@ impl Skill {
|
|||||||
Skill::DecayTickI |
|
Skill::DecayTickI |
|
||||||
Skill::DecayTickII |
|
Skill::DecayTickII |
|
||||||
Skill::DecayTickIII |
|
Skill::DecayTickIII |
|
||||||
Skill::SiphonTick |
|
Skill::SiphonTickI |
|
||||||
Skill::StrangleTick |
|
Skill::SiphonTickII |
|
||||||
|
Skill::SiphonTickIII |
|
||||||
|
Skill::StrangleTickI |
|
||||||
|
Skill::StrangleTickII |
|
||||||
|
Skill::StrangleTickIII |
|
||||||
|
|
||||||
Skill::TriageTickI |
|
Skill::TriageTickI |
|
||||||
Skill::TriageTickII |
|
Skill::TriageTickII |
|
||||||
@ -1148,7 +1234,9 @@ impl Skill {
|
|||||||
Skill::StrikeII => Skill::StrikeI.speed(),
|
Skill::StrikeII => Skill::StrikeI.speed(),
|
||||||
Skill::StrikeIII => Skill::StrikeI.speed(),
|
Skill::StrikeIII => Skill::StrikeI.speed(),
|
||||||
|
|
||||||
Skill::SiphonTick => Skill::Siphon.speed(),
|
Skill::SiphonTickI |
|
||||||
|
Skill::SiphonTickII |
|
||||||
|
Skill::SiphonTickIII => Skill::SiphonI.speed(),
|
||||||
Skill::DecayTickI |
|
Skill::DecayTickI |
|
||||||
Skill::DecayTickII |
|
Skill::DecayTickII |
|
||||||
Skill::DecayTickIII => Skill::DecayI.speed(),
|
Skill::DecayTickIII => Skill::DecayI.speed(),
|
||||||
@ -1157,7 +1245,9 @@ impl Skill {
|
|||||||
Skill::TriageTickII |
|
Skill::TriageTickII |
|
||||||
Skill::TriageTickIII => Skill::TriageI.speed(),
|
Skill::TriageTickIII => Skill::TriageI.speed(),
|
||||||
|
|
||||||
Skill::StrangleTick => Skill::Strangle.speed(),
|
Skill::StrangleTickI |
|
||||||
|
Skill::StrangleTickII |
|
||||||
|
Skill::StrangleTickIII => Skill::StrangleI.speed(),
|
||||||
Skill::CorruptionTick => Skill::Corrupt.speed(),
|
Skill::CorruptionTick => Skill::Corrupt.speed(),
|
||||||
|
|
||||||
_ => Item::from(*self).speed(),
|
_ => Item::from(*self).speed(),
|
||||||
@ -1180,7 +1270,9 @@ impl Skill {
|
|||||||
Skill::ClutchI |
|
Skill::ClutchI |
|
||||||
Skill::ClutchII |
|
Skill::ClutchII |
|
||||||
Skill::ClutchIII |
|
Skill::ClutchIII |
|
||||||
Skill::Parry |
|
Skill::ParryI |
|
||||||
|
Skill::ParryII |
|
||||||
|
Skill::ParryIII |
|
||||||
Skill::TestBlock |
|
Skill::TestBlock |
|
||||||
Skill::TestParry => true,
|
Skill::TestParry => true,
|
||||||
|
|
||||||
@ -1208,7 +1300,9 @@ impl Skill {
|
|||||||
Skill::InvertI |
|
Skill::InvertI |
|
||||||
Skill::InvertII |
|
Skill::InvertII |
|
||||||
Skill::InvertIII |
|
Skill::InvertIII |
|
||||||
Skill::Parry |
|
Skill::ParryI |
|
||||||
|
Skill::ParryII |
|
||||||
|
Skill::ParryIII |
|
||||||
Skill::PurifyI |
|
Skill::PurifyI |
|
||||||
Skill::PurifyII |
|
Skill::PurifyII |
|
||||||
Skill::PurifyIII |
|
Skill::PurifyIII |
|
||||||
@ -1225,7 +1319,9 @@ impl Skill {
|
|||||||
Skill::TriageII |
|
Skill::TriageII |
|
||||||
Skill::TriageIII => true,
|
Skill::TriageIII => true,
|
||||||
|
|
||||||
Skill::Banish => rng.gen_bool(0.5),
|
Skill::BanishI |
|
||||||
|
Skill::BanishII |
|
||||||
|
Skill::BanishIII => rng.gen_bool(0.5),
|
||||||
|
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
@ -1337,17 +1433,19 @@ fn throw(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill:
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn strangle(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn strangle(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
|
let CrypEffect { effect, duration, meta, tick: _ } = skill.effect().first().unwrap().clone();
|
||||||
|
let tick_skill = match meta {
|
||||||
|
Some(EffectMeta::Skill(s)) => s,
|
||||||
|
_ => panic!("no strangle tick skill"),
|
||||||
|
};
|
||||||
|
let strangle = CrypEffect::new(effect, duration).set_tick(Cast::new_tick(source, target, tick_skill));
|
||||||
|
results.push(Resolution::new(source, target).event(target.add_effect(skill, strangle)));
|
||||||
|
|
||||||
skill.effect().into_iter().for_each(|e| {
|
let attacker_strangle = CrypEffect::new(Effect::Strangling, duration);
|
||||||
let CrypEffect { effect: _, duration, meta: _, tick: _ } = e;
|
results.push(Resolution::new(source, source).event(source.add_effect(skill, attacker_strangle)));
|
||||||
let strangle = e.clone().set_tick(Cast::new_tick(source, target, Skill::StrangleTick));
|
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, strangle)));
|
|
||||||
|
|
||||||
let attacker_strangle = CrypEffect::new(Effect::Strangling, duration);
|
|
||||||
results.push(Resolution::new(source, source).event(source.add_effect(skill, attacker_strangle)));
|
return strangle_tick(source, target, results, tick_skill);
|
||||||
|
|
||||||
});
|
|
||||||
return strangle_tick(source, target, results, Skill::StrangleTick);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn strangle_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn strangle_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
@ -1450,7 +1548,7 @@ fn heal(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: S
|
|||||||
fn triage(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn triage(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
let CrypEffect { effect, duration, meta, tick: _ } = skill.effect().first().unwrap().clone();
|
let CrypEffect { effect, duration, meta, tick: _ } = skill.effect().first().unwrap().clone();
|
||||||
let tick_skill = match meta {
|
let tick_skill = match meta {
|
||||||
Some(EffectMeta::SkillTick(s)) => s,
|
Some(EffectMeta::Skill(s)) => s,
|
||||||
_ => panic!("no triage tick skill"),
|
_ => panic!("no triage tick skill"),
|
||||||
};
|
};
|
||||||
let triage = CrypEffect::new(effect, duration).set_tick(Cast::new_tick(source, target, tick_skill));
|
let triage = CrypEffect::new(effect, duration).set_tick(Cast::new_tick(source, target, tick_skill));
|
||||||
@ -1515,7 +1613,7 @@ fn decay(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill:
|
|||||||
|
|
||||||
let CrypEffect { effect, duration, meta, tick: _ } = skill.effect().last().unwrap().clone();
|
let CrypEffect { effect, duration, meta, tick: _ } = skill.effect().last().unwrap().clone();
|
||||||
let tick_skill = match meta {
|
let tick_skill = match meta {
|
||||||
Some(EffectMeta::SkillTick(s)) => s,
|
Some(EffectMeta::Skill(s)) => s,
|
||||||
_ => panic!("no decay tick skill"),
|
_ => panic!("no decay tick skill"),
|
||||||
};
|
};
|
||||||
let decay = CrypEffect::new(effect, duration).set_tick(Cast::new_tick(source, target, tick_skill));
|
let decay = CrypEffect::new(effect, duration).set_tick(Cast::new_tick(source, target, tick_skill));
|
||||||
@ -1620,23 +1718,26 @@ fn recharge(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skil
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn siphon(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn siphon(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
skill.effect().into_iter().for_each(|e| {
|
let CrypEffect { effect, duration, meta, tick: _ } = skill.effect().first().unwrap().clone();
|
||||||
let siphon = e.clone().set_tick(Cast::new_tick(source, target, Skill::SiphonTick));
|
let tick_skill = match meta {
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, siphon)));
|
Some(EffectMeta::Skill(s)) => s,
|
||||||
});
|
_ => panic!("no siphon tick skill"),
|
||||||
|
};
|
||||||
|
let siphon = CrypEffect::new(effect, duration).set_tick(Cast::new_tick(source, target, tick_skill));
|
||||||
|
results.push(Resolution::new(source, target).event(target.add_effect(skill, siphon)));
|
||||||
|
|
||||||
return siphon_tick(source, target, results, Skill::SiphonTick);
|
return siphon_tick(source, target, results, tick_skill);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn siphon_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn siphon_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
let amount = source.blue_damage().pct(skill.multiplier());
|
let amount = source.blue_damage().pct(skill.multiplier());
|
||||||
let siphon_events = target.deal_blue_damage(Skill::SiphonTick, amount);
|
let siphon_events = target.deal_blue_damage(skill, amount);
|
||||||
|
|
||||||
for e in siphon_events {
|
for e in siphon_events {
|
||||||
match e {
|
match e {
|
||||||
Event::Damage { amount, mitigation: _, colour: _, skill: _ } => {
|
Event::Damage { amount, mitigation: _, colour: _, skill: _ } => {
|
||||||
results.push(Resolution::new(source, target).event(e));
|
results.push(Resolution::new(source, target).event(e));
|
||||||
let heal = source.deal_green_damage(Skill::SiphonTick, amount);
|
let heal = source.deal_green_damage(skill, amount);
|
||||||
for h in heal {
|
for h in heal {
|
||||||
results.push(Resolution::new(source, source).event(h));
|
results.push(Resolution::new(source, source).event(h));
|
||||||
};
|
};
|
||||||
@ -1919,10 +2020,10 @@ mod tests {
|
|||||||
|
|
||||||
x.green_life.reduce(512);
|
x.green_life.reduce(512);
|
||||||
|
|
||||||
let mut results = resolve(Skill::Siphon, &mut x, &mut y, vec![]);
|
let mut results = resolve(Skill::SiphonI, &mut x, &mut y, vec![]);
|
||||||
|
|
||||||
assert!(y.affected(Effect::Siphon));
|
assert!(y.affected(Effect::Siphon));
|
||||||
assert!(x.green_life() == (512 + 256.pct(Skill::SiphonTick.multiplier())));
|
assert!(x.green_life() == (512 + 256.pct(Skill::SiphonTickI.multiplier())));
|
||||||
|
|
||||||
let Resolution { source: _, target: _, event } = results.remove(0);
|
let Resolution { source: _, target: _, event } = results.remove(0);
|
||||||
match event {
|
match event {
|
||||||
@ -1932,14 +2033,14 @@ mod tests {
|
|||||||
|
|
||||||
let Resolution { source: _, target: _, event } = results.remove(0);
|
let Resolution { source: _, target: _, event } = results.remove(0);
|
||||||
match event {
|
match event {
|
||||||
Event::Damage { amount, skill: _, mitigation: _, colour: _} => assert_eq!(amount, 256.pct(Skill::SiphonTick.multiplier())),
|
Event::Damage { amount, skill: _, mitigation: _, colour: _} => assert_eq!(amount, 256.pct(Skill::SiphonTickI.multiplier())),
|
||||||
_ => panic!("not damage siphon"),
|
_ => panic!("not damage siphon"),
|
||||||
};
|
};
|
||||||
|
|
||||||
let Resolution { source: _, target, event } = results.remove(0);
|
let Resolution { source: _, target, event } = results.remove(0);
|
||||||
match event {
|
match event {
|
||||||
Event::Healing { amount, skill: _, overhealing: _ } => {
|
Event::Healing { amount, skill: _, overhealing: _ } => {
|
||||||
assert_eq!(amount, 256.pct(Skill::SiphonTick.multiplier()));
|
assert_eq!(amount, 256.pct(Skill::SiphonTickI.multiplier()));
|
||||||
assert_eq!(target.id, x.id);
|
assert_eq!(target.id, x.id);
|
||||||
},
|
},
|
||||||
_ => panic!("not healing"),
|
_ => panic!("not healing"),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user