tick tiers and formatting
This commit is contained in:
parent
b0eb9a8a51
commit
9aa6346be6
@ -62,6 +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),
|
||||||
TickAmount(u64),
|
TickAmount(u64),
|
||||||
AddedDamage(u64),
|
AddedDamage(u64),
|
||||||
ScatterTarget(Uuid),
|
ScatterTarget(Uuid),
|
||||||
|
|||||||
@ -1432,8 +1432,8 @@ mod tests {
|
|||||||
// make the purify cryp super fast so it beats out decay
|
// make the purify cryp super fast so it beats out decay
|
||||||
game.cryp_by_id(y_cryp.id).unwrap().speed.force(10000000);
|
game.cryp_by_id(y_cryp.id).unwrap().speed.force(10000000);
|
||||||
|
|
||||||
game.cryp_by_id(x_cryp.id).unwrap().learn_mut(Skill::Decay);
|
game.cryp_by_id(x_cryp.id).unwrap().learn_mut(Skill::DecayI);
|
||||||
while game.cryp_by_id(x_cryp.id).unwrap().skill_on_cd(Skill::Decay).is_some() {
|
while game.cryp_by_id(x_cryp.id).unwrap().skill_on_cd(Skill::DecayI).is_some() {
|
||||||
game.cryp_by_id(x_cryp.id).unwrap().reduce_cooldowns();
|
game.cryp_by_id(x_cryp.id).unwrap().reduce_cooldowns();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1448,7 +1448,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// apply buff
|
// apply buff
|
||||||
game.add_skill(x_player.id, x_cryp.id, Some(y_cryp.id), Skill::Decay).unwrap();
|
game.add_skill(x_player.id, x_cryp.id, Some(y_cryp.id), Skill::DecayI).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();
|
||||||
@ -1456,7 +1456,7 @@ mod tests {
|
|||||||
|
|
||||||
let Resolution { source: _, target: _, event } = game.resolved.pop().unwrap();
|
let Resolution { source: _, target: _, event } = game.resolved.pop().unwrap();
|
||||||
match event {
|
match event {
|
||||||
Event::Damage { amount: _, skill, mitigation: _, colour: _ } => assert_eq!(skill, Skill::DecayTick),
|
Event::Damage { amount: _, skill, mitigation: _, colour: _ } => assert_eq!(skill, Skill::DecayTickI),
|
||||||
_ => panic!("not decay"),
|
_ => panic!("not decay"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -47,78 +47,82 @@ pub enum Item {
|
|||||||
RBSpeedI,
|
RBSpeedI,
|
||||||
|
|
||||||
AmplifyI,
|
AmplifyI,
|
||||||
AmplifyII,
|
AmplifyII,
|
||||||
AmplifyIII,
|
AmplifyIII,
|
||||||
Banish,
|
Banish,
|
||||||
BlastI,
|
BlastI,
|
||||||
BlastII,
|
BlastII,
|
||||||
BlastIII,
|
BlastIII,
|
||||||
ChaosI,
|
ChaosI,
|
||||||
ChaosII,
|
ChaosII,
|
||||||
ChaosIII,
|
ChaosIII,
|
||||||
ClutchI,
|
ClutchI,
|
||||||
ClutchII,
|
ClutchII,
|
||||||
ClutchIII,
|
ClutchIII,
|
||||||
Corrupt,
|
Corrupt,
|
||||||
CurseI,
|
CurseI,
|
||||||
CurseII,
|
CurseII,
|
||||||
CurseIII,
|
CurseIII,
|
||||||
Decay,
|
DecayI,
|
||||||
|
DecayII,
|
||||||
|
DecayIII,
|
||||||
Hostility,
|
Hostility,
|
||||||
Haste,
|
Haste,
|
||||||
HealI,
|
HealI,
|
||||||
HealII,
|
HealII,
|
||||||
HealIII,
|
HealIII,
|
||||||
HexI,
|
HexI,
|
||||||
HexII,
|
HexII,
|
||||||
HexIII,
|
HexIII,
|
||||||
Impurity,
|
Impurity,
|
||||||
InvertI,
|
InvertI,
|
||||||
InvertII,
|
InvertII,
|
||||||
InvertIII,
|
InvertIII,
|
||||||
Parry,
|
Parry,
|
||||||
PurgeI,
|
PurgeI,
|
||||||
PurgeII,
|
PurgeII,
|
||||||
PurgeIII,
|
PurgeIII,
|
||||||
PurifyI,
|
PurifyI,
|
||||||
PurifyII,
|
PurifyII,
|
||||||
PurifyIII,
|
PurifyIII,
|
||||||
ReflectI,
|
ReflectI,
|
||||||
ReflectII,
|
ReflectII,
|
||||||
ReflectIII,
|
ReflectIII,
|
||||||
RechargeI,
|
RechargeI,
|
||||||
RechargeII,
|
RechargeII,
|
||||||
RechargeIII,
|
RechargeIII,
|
||||||
RuinI,
|
RuinI,
|
||||||
RuinII,
|
RuinII,
|
||||||
RuinIII,
|
RuinIII,
|
||||||
ScatterI,
|
ScatterI,
|
||||||
ScatterII,
|
ScatterII,
|
||||||
ScatterIII,
|
ScatterIII,
|
||||||
SilenceI,
|
SilenceI,
|
||||||
SilenceII,
|
SilenceII,
|
||||||
SilenceIII,
|
SilenceIII,
|
||||||
SlayI,
|
SlayI,
|
||||||
SlayII,
|
SlayII,
|
||||||
SlayIII,
|
SlayIII,
|
||||||
SleepI,
|
SleepI,
|
||||||
SleepII,
|
SleepII,
|
||||||
SleepIII,
|
SleepIII,
|
||||||
SnareI,
|
SnareI,
|
||||||
SnareII,
|
SnareII,
|
||||||
SnareIII,
|
SnareIII,
|
||||||
Strangle,
|
Strangle,
|
||||||
StrikeI,
|
StrikeI,
|
||||||
StrikeII,
|
StrikeII,
|
||||||
StrikeIII,
|
StrikeIII,
|
||||||
Siphon,
|
Siphon,
|
||||||
TauntI,
|
TauntI,
|
||||||
TauntII,
|
TauntII,
|
||||||
TauntIII,
|
TauntIII,
|
||||||
ThrowI,
|
ThrowI,
|
||||||
ThrowII,
|
ThrowII,
|
||||||
ThrowIII,
|
ThrowIII,
|
||||||
Triage,
|
TriageI,
|
||||||
|
TriageII,
|
||||||
|
TriageIII,
|
||||||
|
|
||||||
|
|
||||||
TestTouch,
|
TestTouch,
|
||||||
@ -222,84 +226,88 @@ impl Item {
|
|||||||
|
|
||||||
pub fn into_skill(&self) -> Option<Skill> {
|
pub fn into_skill(&self) -> Option<Skill> {
|
||||||
match self {
|
match self {
|
||||||
Item::Attack => Some(Skill::Attack),
|
Item::Attack => Some(Skill::Attack),
|
||||||
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::Banish => Some(Skill::Banish),
|
||||||
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),
|
||||||
Item::Block => Some(Skill::Block),
|
Item::Block => Some(Skill::Block),
|
||||||
Item::Buff => Some(Skill::Buff),
|
Item::Buff => Some(Skill::Buff),
|
||||||
Item::ChaosI => Some(Skill::ChaosI),
|
Item::ChaosI => Some(Skill::ChaosI),
|
||||||
Item::ChaosII => Some(Skill::ChaosII),
|
Item::ChaosII => Some(Skill::ChaosII),
|
||||||
Item::ChaosIII => Some(Skill::ChaosIII),
|
Item::ChaosIII => Some(Skill::ChaosIII),
|
||||||
Item::CurseI => Some(Skill::CurseI),
|
Item::CurseI => Some(Skill::CurseI),
|
||||||
Item::CurseII => Some(Skill::CurseII),
|
Item::CurseII => Some(Skill::CurseII),
|
||||||
Item::CurseIII => Some(Skill::CurseIII),
|
Item::CurseIII => Some(Skill::CurseIII),
|
||||||
Item::Debuff => Some(Skill::Debuff),
|
Item::Debuff => Some(Skill::Debuff),
|
||||||
Item::Decay => Some(Skill::Decay),
|
Item::DecayI => Some(Skill::DecayI),
|
||||||
Item::Haste => Some(Skill::Haste),
|
Item::DecayII => Some(Skill::DecayII),
|
||||||
|
Item::DecayIII => Some(Skill::DecayIII),
|
||||||
|
Item::Haste => Some(Skill::Haste),
|
||||||
Item::HealI => Some(Skill::HealI),
|
Item::HealI => Some(Skill::HealI),
|
||||||
Item::HealII => Some(Skill::HealII),
|
Item::HealII => Some(Skill::HealII),
|
||||||
Item::HealIII => Some(Skill::HealIII),
|
Item::HealIII => Some(Skill::HealIII),
|
||||||
Item::HexI => Some(Skill::HexI),
|
Item::HexI => Some(Skill::HexI),
|
||||||
Item::HexII => Some(Skill::HexII),
|
Item::HexII => Some(Skill::HexII),
|
||||||
Item::HexIII => Some(Skill::HexIII),
|
Item::HexIII => Some(Skill::HexIII),
|
||||||
Item::Hostility => Some(Skill::Hostility),
|
Item::Hostility => Some(Skill::Hostility),
|
||||||
Item::Impurity => Some(Skill::Impurity),
|
Item::Impurity => Some(Skill::Impurity),
|
||||||
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::Parry => Some(Skill::Parry),
|
||||||
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),
|
||||||
Item::PurifyI => Some(Skill::PurifyI),
|
Item::PurifyI => Some(Skill::PurifyI),
|
||||||
Item::PurifyII => Some(Skill::PurifyII),
|
Item::PurifyII => Some(Skill::PurifyII),
|
||||||
Item::PurifyIII => Some(Skill::PurifyIII),
|
Item::PurifyIII => Some(Skill::PurifyIII),
|
||||||
Item::RechargeI => Some(Skill::RechargeI),
|
Item::RechargeI => Some(Skill::RechargeI),
|
||||||
Item::RechargeII => Some(Skill::RechargeII),
|
Item::RechargeII => Some(Skill::RechargeII),
|
||||||
Item::RechargeIII => Some(Skill::RechargeIII),
|
Item::RechargeIII => Some(Skill::RechargeIII),
|
||||||
Item::ReflectI => Some(Skill::ReflectI),
|
Item::ReflectI => Some(Skill::ReflectI),
|
||||||
Item::ReflectII => Some(Skill::ReflectII),
|
Item::ReflectII => Some(Skill::ReflectII),
|
||||||
Item::ReflectIII => Some(Skill::ReflectIII),
|
Item::ReflectIII => Some(Skill::ReflectIII),
|
||||||
Item::RuinI => Some(Skill::RuinI),
|
Item::RuinI => Some(Skill::RuinI),
|
||||||
Item::RuinII => Some(Skill::RuinII),
|
Item::RuinII => Some(Skill::RuinII),
|
||||||
Item::RuinIII => Some(Skill::RuinIII),
|
Item::RuinIII => Some(Skill::RuinIII),
|
||||||
Item::ScatterI => Some(Skill::ScatterI),
|
Item::ScatterI => Some(Skill::ScatterI),
|
||||||
Item::ScatterII => Some(Skill::ScatterII),
|
Item::ScatterII => Some(Skill::ScatterII),
|
||||||
Item::ScatterIII => Some(Skill::ScatterIII),
|
Item::ScatterIII => Some(Skill::ScatterIII),
|
||||||
Item::SilenceI => Some(Skill::SilenceI),
|
Item::SilenceI => Some(Skill::SilenceI),
|
||||||
Item::SilenceII => Some(Skill::SilenceII),
|
Item::SilenceII => Some(Skill::SilenceII),
|
||||||
Item::SilenceIII => Some(Skill::SilenceIII),
|
Item::SilenceIII => Some(Skill::SilenceIII),
|
||||||
Item::SlayI => Some(Skill::SlayI),
|
Item::SlayI => Some(Skill::SlayI),
|
||||||
Item::SlayII => Some(Skill::SlayII),
|
Item::SlayII => Some(Skill::SlayII),
|
||||||
Item::SlayIII => Some(Skill::SlayIII),
|
Item::SlayIII => Some(Skill::SlayIII),
|
||||||
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::Siphon => Some(Skill::Siphon),
|
||||||
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::Strangle => Some(Skill::Strangle),
|
||||||
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),
|
||||||
Item::StrikeIII => Some(Skill::StrikeIII),
|
Item::StrikeIII => Some(Skill::StrikeIII),
|
||||||
Item::ClutchI => Some(Skill::ClutchI),
|
Item::ClutchI => Some(Skill::ClutchI),
|
||||||
Item::ClutchII => Some(Skill::ClutchII),
|
Item::ClutchII => Some(Skill::ClutchII),
|
||||||
Item::ClutchIII => Some(Skill::ClutchIII),
|
Item::ClutchIII => Some(Skill::ClutchIII),
|
||||||
Item::TauntI => Some(Skill::TauntI),
|
Item::TauntI => Some(Skill::TauntI),
|
||||||
Item::TauntII => Some(Skill::TauntII),
|
Item::TauntII => Some(Skill::TauntII),
|
||||||
Item::TauntIII => Some(Skill::TauntIII),
|
Item::TauntIII => Some(Skill::TauntIII),
|
||||||
Item::ThrowI => Some(Skill::ThrowI),
|
Item::ThrowI => Some(Skill::ThrowI),
|
||||||
Item::ThrowII => Some(Skill::ThrowII),
|
Item::ThrowII => Some(Skill::ThrowII),
|
||||||
Item::ThrowIII => Some(Skill::ThrowIII),
|
Item::ThrowIII => Some(Skill::ThrowIII),
|
||||||
Item::Corrupt => Some(Skill::Corrupt),
|
Item::Corrupt => Some(Skill::Corrupt),
|
||||||
Item::Triage => Some(Skill::Triage),
|
Item::TriageI => Some(Skill::TriageI),
|
||||||
|
Item::TriageII => Some(Skill::TriageII),
|
||||||
|
Item::TriageIII => Some(Skill::TriageIII),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -438,7 +446,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::Decay => format!(
|
Item::DecayI |
|
||||||
|
Item::DecayII |
|
||||||
|
Item::DecayIII => format!(
|
||||||
"Reduces healing taken by {:?}% and deals blue damage {:?}% blue power each turn. Lasts {:?}T",
|
"Reduces healing taken by {:?}% and deals blue damage {:?}% blue power each turn. Lasts {:?}T",
|
||||||
100 - self.into_skill().unwrap().effect().first().unwrap().get_multiplier(),
|
100 - self.into_skill().unwrap().effect().first().unwrap().get_multiplier(),
|
||||||
self.into_skill().unwrap().multiplier(),
|
self.into_skill().unwrap().multiplier(),
|
||||||
@ -582,7 +592,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().last().unwrap().get_duration()),
|
self.into_skill().unwrap().effect().last().unwrap().get_duration()),
|
||||||
|
|
||||||
Item::Triage => format!(
|
Item::TriageI |
|
||||||
|
Item::TriageII |
|
||||||
|
Item::TriageIII => format!(
|
||||||
"Heals target for {:?}% green power each turn. Lasts {:?}T",
|
"Heals target for {:?}% green power each turn. 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()),
|
||||||
@ -596,82 +608,86 @@ 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::Triage => 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::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::Decay => 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::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::Parry => vec![Item::Block, Item::Red, Item::Red], // Add red recharge
|
||||||
Item::PurifyI => vec![Item::Block, Item::Green, Item::Green],
|
Item::PurifyI => vec![Item::Block, Item::Green, Item::Green],
|
||||||
Item::PurifyII => vec![Item::PurifyI, Item::PurifyI, Item::PurifyI],
|
Item::PurifyII => vec![Item::PurifyI, Item::PurifyI, Item::PurifyI],
|
||||||
Item::PurifyIII => vec![Item::PurifyII, Item::PurifyII, Item::PurifyII],
|
Item::PurifyIII => vec![Item::PurifyII, Item::PurifyII, Item::PurifyII],
|
||||||
Item::Corrupt => vec![Item::Block, Item::Blue, Item::Blue],
|
Item::Corrupt => vec![Item::Block, Item::Blue, Item::Blue],
|
||||||
Item::ClutchI => vec![Item::Block, Item::Red, Item::Green],
|
Item::ClutchI => vec![Item::Block, Item::Red, Item::Green],
|
||||||
Item::ClutchII => vec![Item::ClutchI, Item::ClutchI, Item::ClutchI],
|
Item::ClutchII => vec![Item::ClutchI, Item::ClutchI, Item::ClutchI],
|
||||||
Item::ClutchIII => vec![Item::ClutchII, Item::ClutchII, Item::ClutchII],
|
Item::ClutchIII => vec![Item::ClutchII, Item::ClutchII, Item::ClutchII],
|
||||||
Item::ReflectI => vec![Item::Block, Item::Green, Item::Blue],
|
Item::ReflectI => vec![Item::Block, Item::Green, Item::Blue],
|
||||||
Item::ReflectII => vec![Item::ReflectI, Item::ReflectI, Item::ReflectI],
|
Item::ReflectII => vec![Item::ReflectI, Item::ReflectI, Item::ReflectI],
|
||||||
Item::ReflectIII => vec![Item::ReflectII, Item::ReflectII, Item::ReflectII],
|
Item::ReflectIII => vec![Item::ReflectII, Item::ReflectII, Item::ReflectII],
|
||||||
Item::RechargeI => vec![Item::Block, Item::Red, Item::Blue],
|
Item::RechargeI => vec![Item::Block, Item::Red, Item::Blue],
|
||||||
Item::RechargeII => vec![Item::RechargeI, Item::RechargeI, Item::RechargeI],
|
Item::RechargeII => vec![Item::RechargeI, Item::RechargeI, Item::RechargeI],
|
||||||
Item::RechargeIII => vec![Item::RechargeII, Item::RechargeII, Item::RechargeII],
|
Item::RechargeIII => vec![Item::RechargeII, Item::RechargeII, Item::RechargeII],
|
||||||
|
|
||||||
|
|
||||||
Item::Strangle => vec![Item::Stun, Item::Red, Item::Red],
|
Item::Strangle => vec![Item::Stun, Item::Red, Item::Red],
|
||||||
Item::SleepI => 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::SleepII => vec![Item::SleepI, Item::SleepI, Item::SleepI],
|
||||||
Item::SleepIII => vec![Item::SleepII, Item::SleepII, Item::SleepII],
|
Item::SleepIII => vec![Item::SleepII, Item::SleepII, Item::SleepII],
|
||||||
Item::RuinI => vec![Item::Stun, Item::Blue, Item::Blue],
|
Item::RuinI => vec![Item::Stun, Item::Blue, Item::Blue],
|
||||||
Item::RuinII => vec![Item::RuinI, Item::RuinI, Item::RuinI],
|
Item::RuinII => vec![Item::RuinI, Item::RuinI, Item::RuinI],
|
||||||
Item::RuinIII => vec![Item::RuinII, Item::RuinII, Item::RuinII],
|
Item::RuinIII => vec![Item::RuinII, Item::RuinII, Item::RuinII],
|
||||||
Item::ThrowI => 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::ThrowII => vec![Item::ThrowI, Item::ThrowI, Item::ThrowI],
|
||||||
Item::ThrowIII => vec![Item::ThrowII, Item::ThrowII, Item::ThrowII],
|
Item::ThrowIII => vec![Item::ThrowII, Item::ThrowII, Item::ThrowII],
|
||||||
Item::HexI => vec![Item::Stun, Item::Green, Item::Blue],
|
Item::HexI => vec![Item::Stun, Item::Green, Item::Blue],
|
||||||
Item::HexII => vec![Item::HexI, Item::HexI, Item::HexI],
|
Item::HexII => vec![Item::HexI, Item::HexI, Item::HexI],
|
||||||
Item::HexIII => vec![Item::HexII, Item::HexII, Item::HexII],
|
Item::HexIII => vec![Item::HexII, Item::HexII, Item::HexII],
|
||||||
Item::Banish => vec![Item::Stun, Item::Red, Item::Blue],
|
Item::Banish => vec![Item::Stun, Item::Red, Item::Blue],
|
||||||
|
|
||||||
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::Siphon => vec![Item::Attack, Item::Green, Item::Blue],
|
||||||
Item::ChaosI => vec![Item::Attack, Item::Red, Item::Blue],
|
Item::ChaosI => vec![Item::Attack, Item::Red, Item::Blue],
|
||||||
Item::ChaosII => vec![Item::ChaosI, Item::ChaosI, Item::ChaosI],
|
Item::ChaosII => vec![Item::ChaosI, Item::ChaosI, Item::ChaosI],
|
||||||
Item::ChaosIII => vec![Item::ChaosII, Item::ChaosII, Item::ChaosII],
|
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],
|
||||||
@ -703,89 +719,91 @@ impl From<Skill> for Item {
|
|||||||
fn from(skill: Skill) -> Item {
|
fn from(skill: Skill) -> Item {
|
||||||
match skill {
|
match skill {
|
||||||
Skill::AmplifyI => Item::AmplifyI,
|
Skill::AmplifyI => Item::AmplifyI,
|
||||||
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::Banish => Item::Banish,
|
||||||
Skill::BlastI => Item::BlastI,
|
Skill::BlastI => Item::BlastI,
|
||||||
Skill::BlastII => Item::BlastII,
|
Skill::BlastII => Item::BlastII,
|
||||||
Skill::BlastIII => Item::BlastIII,
|
Skill::BlastIII => Item::BlastIII,
|
||||||
Skill::Block => Item::Block,
|
Skill::Block => Item::Block,
|
||||||
Skill::Buff => Item::Buff,
|
Skill::Buff => Item::Buff,
|
||||||
Skill::ChaosI => Item::ChaosI,
|
Skill::ChaosI => Item::ChaosI,
|
||||||
Skill::ChaosII => Item::ChaosII,
|
Skill::ChaosII => Item::ChaosII,
|
||||||
Skill::ChaosIII => Item::ChaosIII,
|
Skill::ChaosIII => Item::ChaosIII,
|
||||||
Skill::ClutchI => Item::ClutchI,
|
Skill::ClutchI => Item::ClutchI,
|
||||||
Skill::ClutchII => Item::ClutchII,
|
Skill::ClutchII => Item::ClutchII,
|
||||||
Skill::ClutchIII => Item::ClutchIII,
|
Skill::ClutchIII => Item::ClutchIII,
|
||||||
Skill::CurseI => Item::CurseI,
|
Skill::CurseI => Item::CurseI,
|
||||||
Skill::CurseII => Item::CurseII,
|
Skill::CurseII => Item::CurseII,
|
||||||
Skill::CurseIII => Item::CurseIII,
|
Skill::CurseIII => Item::CurseIII,
|
||||||
Skill::Decay => Item::Decay,
|
Skill::DecayI => Item::DecayI,
|
||||||
|
Skill::DecayII => Item::DecayII,
|
||||||
|
Skill::DecayIII => Item::DecayIII,
|
||||||
Skill::Debuff => Item::Debuff,
|
Skill::Debuff => Item::Debuff,
|
||||||
Skill::Haste => Item::Haste,
|
Skill::Haste => Item::Haste,
|
||||||
Skill::Hostility => Item::Hostility,
|
Skill::Hostility => Item::Hostility,
|
||||||
Skill::HealI => Item::HealI,
|
Skill::HealI => Item::HealI,
|
||||||
Skill::HealII => Item::HealII,
|
Skill::HealII => Item::HealII,
|
||||||
Skill::HealIII => Item::HealIII,
|
Skill::HealIII => Item::HealIII,
|
||||||
Skill::HexI => Item::HexI,
|
Skill::HexI => Item::HexI,
|
||||||
Skill::HexII => Item::HexII,
|
Skill::HexII => Item::HexII,
|
||||||
Skill::HexIII => Item::HexIII,
|
Skill::HexIII => Item::HexIII,
|
||||||
Skill::Impurity => Item::Impurity,
|
Skill::Impurity => Item::Impurity,
|
||||||
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::Parry => Item::Parry,
|
||||||
Skill::PurgeI => Item::PurgeI,
|
Skill::PurgeI => Item::PurgeI,
|
||||||
Skill::PurgeII => Item::PurgeII,
|
Skill::PurgeII => Item::PurgeII,
|
||||||
Skill::PurgeIII => Item::PurgeIII,
|
Skill::PurgeIII => Item::PurgeIII,
|
||||||
Skill::PurifyI => Item::PurifyI,
|
Skill::PurifyI => Item::PurifyI,
|
||||||
Skill::PurifyII => Item::PurifyII,
|
Skill::PurifyII => Item::PurifyII,
|
||||||
Skill::PurifyIII => Item::PurifyIII,
|
Skill::PurifyIII => Item::PurifyIII,
|
||||||
Skill::RechargeI => Item::RechargeI,
|
Skill::RechargeI => Item::RechargeI,
|
||||||
Skill::RechargeII => Item::RechargeII,
|
Skill::RechargeII => Item::RechargeII,
|
||||||
Skill::RechargeIII => Item::RechargeIII,
|
Skill::RechargeIII => Item::RechargeIII,
|
||||||
Skill::ReflectI => Item::ReflectI,
|
Skill::ReflectI => Item::ReflectI,
|
||||||
Skill::ReflectII => Item::ReflectII,
|
Skill::ReflectII => Item::ReflectII,
|
||||||
Skill::ReflectIII => Item::ReflectIII,
|
Skill::ReflectIII => Item::ReflectIII,
|
||||||
Skill::RuinI => Item::RuinI,
|
Skill::RuinI => Item::RuinI,
|
||||||
Skill::RuinII => Item::RuinII,
|
Skill::RuinII => Item::RuinII,
|
||||||
Skill::RuinIII => Item::RuinIII,
|
Skill::RuinIII => Item::RuinIII,
|
||||||
Skill::ScatterI => Item::ScatterI,
|
Skill::ScatterI => Item::ScatterI,
|
||||||
Skill::ScatterII => Item::ScatterII,
|
Skill::ScatterII => Item::ScatterII,
|
||||||
Skill::ScatterIII => Item::ScatterIII,
|
Skill::ScatterIII => Item::ScatterIII,
|
||||||
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::Siphon => Item::Siphon,
|
||||||
Skill::SlayI => Item::SlayI,
|
Skill::SlayI => Item::SlayI,
|
||||||
Skill::SlayII => Item::SlayII,
|
Skill::SlayII => Item::SlayII,
|
||||||
Skill::SlayIII => Item::SlayIII,
|
Skill::SlayIII => Item::SlayIII,
|
||||||
Skill::SleepI => Item::SleepI,
|
Skill::SleepI => Item::SleepI,
|
||||||
Skill::SleepII => Item::SleepII,
|
Skill::SleepII => Item::SleepII,
|
||||||
Skill::SleepIII => Item::SleepIII,
|
Skill::SleepIII => Item::SleepIII,
|
||||||
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::Strangle => Item::Strangle,
|
||||||
Skill::StrikeI => Item::StrikeI,
|
Skill::StrikeI => Item::StrikeI,
|
||||||
Skill::StrikeII => Item::StrikeII,
|
Skill::StrikeII => Item::StrikeII,
|
||||||
Skill::StrikeIII => Item::StrikeIII,
|
Skill::StrikeIII => Item::StrikeIII,
|
||||||
Skill::Stun => Item::Stun,
|
Skill::Stun => Item::Stun,
|
||||||
Skill::TauntI => Item::TauntI,
|
Skill::TauntI => Item::TauntI,
|
||||||
Skill::TauntII => Item::TauntII,
|
Skill::TauntII => Item::TauntII,
|
||||||
Skill::TauntIII => Item::TauntIII,
|
Skill::TauntIII => Item::TauntIII,
|
||||||
Skill::ThrowI => Item::ThrowI,
|
Skill::ThrowI => Item::ThrowI,
|
||||||
Skill::ThrowII => Item::ThrowII,
|
Skill::ThrowII => Item::ThrowII,
|
||||||
Skill::ThrowIII => Item::ThrowIII,
|
Skill::ThrowIII => Item::ThrowIII,
|
||||||
Skill::Triage => Item::Triage,
|
Skill::TriageI => Item::TriageI,
|
||||||
|
Skill::TriageII => Item::TriageII,
|
||||||
|
Skill::TriageIII => Item::TriageIII,
|
||||||
Skill::Corrupt => Item::Corrupt,
|
Skill::Corrupt => Item::Corrupt,
|
||||||
|
|
||||||
Skill::CorruptionTick => Item::Corrupt,
|
Skill::CorruptionTick => Item::Corrupt,
|
||||||
Skill::DecayTick => Item::Decay,
|
|
||||||
Skill::SiphonTick => Item::Siphon,
|
Skill::SiphonTick => Item::Siphon,
|
||||||
Skill::StrangleTick => Item::Strangle,
|
Skill::StrangleTick => Item::Strangle,
|
||||||
Skill::TriageTick => Item::Triage,
|
|
||||||
|
|
||||||
Skill::TestTouch => Item::TestTouch,
|
Skill::TestTouch => Item::TestTouch,
|
||||||
Skill::TestStun => Item::TestStun,
|
Skill::TestStun => Item::TestStun,
|
||||||
@ -838,70 +856,76 @@ pub struct Combo {
|
|||||||
pub fn get_combos() -> Vec<Combo> {
|
pub fn get_combos() -> Vec<Combo> {
|
||||||
let mut combinations = vec![
|
let mut combinations = vec![
|
||||||
Combo { components: Item::TauntI.combo(), item: Item::TauntI },
|
Combo { components: Item::TauntI.combo(), item: Item::TauntI },
|
||||||
Combo { components: Item::TauntII.combo(), item: Item::TauntII },
|
Combo { components: Item::TauntII.combo(), item: Item::TauntII },
|
||||||
Combo { components: Item::TauntIII.combo(), item: Item::TauntIII },
|
Combo { components: Item::TauntIII.combo(), item: Item::TauntIII },
|
||||||
Combo { components: Item::Triage.combo(), item: Item::Triage },
|
|
||||||
|
Combo { components: Item::TriageI.combo(), item: Item::TriageI },
|
||||||
|
Combo { components: Item::TriageII.combo(), item: Item::TriageII },
|
||||||
|
Combo { components: Item::TriageIII.combo(), item: Item::TriageIII },
|
||||||
|
|
||||||
Combo { components: Item::ScatterI.combo(), item: Item::ScatterI },
|
Combo { components: Item::ScatterI.combo(), item: Item::ScatterI },
|
||||||
Combo { components: Item::ScatterII.combo(), item: Item::ScatterII },
|
Combo { components: Item::ScatterII.combo(), item: Item::ScatterII },
|
||||||
Combo { components: Item::ScatterIII.combo(), item: Item::ScatterIII },
|
Combo { components: Item::ScatterIII.combo(), item: Item::ScatterIII },
|
||||||
Combo { components: Item::Haste.combo(), item: Item::Haste },
|
Combo { components: Item::Haste.combo(), item: Item::Haste },
|
||||||
Combo { components: Item::Impurity.combo(), item: Item::Impurity },
|
Combo { components: Item::Impurity.combo(), item: Item::Impurity },
|
||||||
Combo { components: Item::AmplifyI.combo(), item: Item::AmplifyI },
|
Combo { components: Item::AmplifyI.combo(), item: Item::AmplifyI },
|
||||||
Combo { components: Item::AmplifyII.combo(), item: Item::AmplifyII },
|
Combo { components: Item::AmplifyII.combo(), item: Item::AmplifyII },
|
||||||
Combo { components: Item::AmplifyIII.combo(), item: Item::AmplifyIII },
|
Combo { components: Item::AmplifyIII.combo(), item: Item::AmplifyIII },
|
||||||
|
|
||||||
Combo { components: Item::SnareI.combo(), item: Item::SnareI },
|
Combo { components: Item::SnareI.combo(), item: Item::SnareI },
|
||||||
Combo { components: Item::SnareII.combo(), item: Item::SnareII },
|
Combo { components: Item::SnareII.combo(), item: Item::SnareII },
|
||||||
Combo { components: Item::SnareIII.combo(), item: Item::SnareIII },
|
Combo { components: Item::SnareIII.combo(), item: Item::SnareIII },
|
||||||
Combo { components: Item::PurgeI.combo(), item: Item::PurgeI }, // Needs flavour
|
Combo { components: Item::PurgeI.combo(), item: Item::PurgeI }, // Needs flavour
|
||||||
Combo { components: Item::PurgeII.combo(), item: Item::PurgeII },
|
Combo { components: Item::PurgeII.combo(), item: Item::PurgeII },
|
||||||
Combo { components: Item::PurgeIII.combo(), item: Item::PurgeIII },
|
Combo { components: Item::PurgeIII.combo(), item: Item::PurgeIII },
|
||||||
|
|
||||||
Combo { components: Item::SilenceI.combo(), item: Item::SilenceI },
|
Combo { components: Item::SilenceI.combo(), item: Item::SilenceI },
|
||||||
Combo { components: Item::SilenceII.combo(), item: Item::SilenceII },
|
Combo { components: Item::SilenceII.combo(), item: Item::SilenceII },
|
||||||
Combo { components: Item::SilenceIII.combo(), item: Item::SilenceIII },
|
Combo { components: Item::SilenceIII.combo(), item: Item::SilenceIII },
|
||||||
|
|
||||||
|
|
||||||
Combo { components: Item::CurseI.combo(), item: Item::CurseI },
|
Combo { components: Item::CurseI.combo(), item: Item::CurseI },
|
||||||
Combo { components: Item::CurseII.combo(), item: Item::CurseII },
|
Combo { components: Item::CurseII.combo(), item: Item::CurseII },
|
||||||
Combo { components: Item::CurseIII.combo(), item: Item::CurseIII },
|
Combo { components: Item::CurseIII.combo(), item: Item::CurseIII },
|
||||||
Combo { components: Item::Decay.combo(), item: Item::Decay },
|
Combo { components: Item::DecayI.combo(), item: Item::DecayI },
|
||||||
|
Combo { components: Item::DecayII.combo(), item: Item::DecayII },
|
||||||
|
Combo { components: Item::DecayIII.combo(), item: Item::DecayIII },
|
||||||
Combo { components: Item::InvertI.combo(), item: Item::InvertI },
|
Combo { components: Item::InvertI.combo(), item: Item::InvertI },
|
||||||
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::Parry.combo(), item: Item::Parry }, // Add red recharge
|
||||||
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 },
|
||||||
Combo { components: Item::Corrupt.combo(), item: Item::Corrupt },
|
Combo { components: Item::Corrupt.combo(), item: Item::Corrupt },
|
||||||
Combo { components: Item::ClutchI.combo(), item: Item::ClutchI },
|
Combo { components: Item::ClutchI.combo(), item: Item::ClutchI },
|
||||||
Combo { components: Item::ClutchII.combo(), item: Item::ClutchII },
|
Combo { components: Item::ClutchII.combo(), item: Item::ClutchII },
|
||||||
Combo { components: Item::ClutchIII.combo(), item: Item::ClutchIII },
|
Combo { components: Item::ClutchIII.combo(), item: Item::ClutchIII },
|
||||||
Combo { components: Item::ReflectI.combo(), item: Item::ReflectI },
|
Combo { components: Item::ReflectI.combo(), item: Item::ReflectI },
|
||||||
Combo { components: Item::ReflectII.combo(), item: Item::ReflectII },
|
Combo { components: Item::ReflectII.combo(), item: Item::ReflectII },
|
||||||
Combo { components: Item::ReflectIII.combo(), item: Item::ReflectIII },
|
Combo { components: Item::ReflectIII.combo(), item: Item::ReflectIII },
|
||||||
|
|
||||||
|
|
||||||
Combo { components: Item::RechargeI.combo(), item: Item::RechargeI },
|
Combo { components: Item::RechargeI.combo(), item: Item::RechargeI },
|
||||||
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::Strangle.combo(), item: Item::Strangle },
|
||||||
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 },
|
||||||
|
|
||||||
|
|
||||||
Combo { components: Item::ThrowI.combo(), item: Item::ThrowI },
|
Combo { components: Item::ThrowI.combo(), item: Item::ThrowI },
|
||||||
Combo { components: Item::ThrowII.combo(), item: Item::ThrowII },
|
Combo { components: Item::ThrowII.combo(), item: Item::ThrowII },
|
||||||
Combo { components: Item::ThrowIII.combo(), item: Item::ThrowIII },
|
Combo { components: Item::ThrowIII.combo(), item: Item::ThrowIII },
|
||||||
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::Banish.combo(), item: Item::Banish },
|
||||||
|
|
||||||
Combo { components: Item::StrikeI.combo(), item: Item::StrikeI },
|
Combo { components: Item::StrikeI.combo(), item: Item::StrikeI },
|
||||||
@ -909,18 +933,18 @@ pub fn get_combos() -> Vec<Combo> {
|
|||||||
Combo { components: Item::StrikeIII.combo(), item: Item::StrikeIII },
|
Combo { components: Item::StrikeIII.combo(), item: Item::StrikeIII },
|
||||||
|
|
||||||
Combo { components: Item::HealI.combo(), item: Item::HealI },
|
Combo { components: Item::HealI.combo(), item: Item::HealI },
|
||||||
Combo { components: Item::HealII.combo(), item: Item::HealII },
|
Combo { components: Item::HealII.combo(), item: Item::HealII },
|
||||||
Combo { components: Item::HealIII.combo(), item: Item::HealIII },
|
Combo { components: Item::HealIII.combo(), item: Item::HealIII },
|
||||||
Combo { components: Item::BlastI.combo(), item: Item::BlastI },
|
Combo { components: Item::BlastI.combo(), item: Item::BlastI },
|
||||||
Combo { components: Item::BlastII.combo(), item: Item::BlastII },
|
Combo { components: Item::BlastII.combo(), item: Item::BlastII },
|
||||||
Combo { components: Item::BlastIII.combo(), item: Item::BlastIII },
|
Combo { components: Item::BlastIII.combo(), item: Item::BlastIII },
|
||||||
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::Siphon.combo(), item: Item::Siphon },
|
||||||
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 },
|
||||||
|
|
||||||
Combo { components: Item::RedDamageI.combo(), item: Item::RedDamageI },
|
Combo { components: Item::RedDamageI.combo(), item: Item::RedDamageI },
|
||||||
Combo { components: Item::GreenDamageI.combo(), item: Item::GreenDamageI },
|
Combo { components: Item::GreenDamageI.combo(), item: Item::GreenDamageI },
|
||||||
|
|||||||
@ -137,8 +137,12 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
|||||||
Skill::CurseII |
|
Skill::CurseII |
|
||||||
Skill::CurseIII => curse(source, target, resolutions, skill),
|
Skill::CurseIII => curse(source, target, resolutions, skill),
|
||||||
|
|
||||||
Skill::Decay => decay(source, target, resolutions, skill), // dot
|
Skill::DecayI |
|
||||||
Skill::DecayTick => decay_tick(source, target, resolutions, skill), // dot
|
Skill::DecayII |
|
||||||
|
Skill::DecayIII => decay(source, target, resolutions, skill), // dot
|
||||||
|
Skill::DecayTickI |
|
||||||
|
Skill::DecayTickII |
|
||||||
|
Skill::DecayTickIII => decay_tick(source, target, resolutions, skill), // dot
|
||||||
|
|
||||||
Skill::Haste => haste(source, target, resolutions, skill), // speed slow
|
Skill::Haste => haste(source, target, resolutions, skill), // speed slow
|
||||||
|
|
||||||
@ -217,8 +221,13 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
|||||||
Skill::ThrowII |
|
Skill::ThrowII |
|
||||||
Skill::ThrowIII => throw(source, target, resolutions, skill), // no damage stun, adds vulnerable
|
Skill::ThrowIII => throw(source, target, resolutions, skill), // no damage stun, adds vulnerable
|
||||||
|
|
||||||
Skill::Triage => triage(source, target, resolutions, skill), // hot
|
Skill::TriageI |
|
||||||
Skill::TriageTick => triage_tick(source, target, resolutions, skill), // hot
|
Skill::TriageII |
|
||||||
|
Skill::TriageIII => triage(source, target, resolutions, skill), // hot
|
||||||
|
|
||||||
|
Skill::TriageTickI |
|
||||||
|
Skill::TriageTickII |
|
||||||
|
Skill::TriageTickIII => triage_tick(source, target, resolutions, skill), // hot
|
||||||
|
|
||||||
// Base Skills
|
// Base Skills
|
||||||
Skill::Attack => attack(source, target, resolutions, skill),
|
Skill::Attack => attack(source, target, resolutions, skill),
|
||||||
@ -623,87 +632,126 @@ pub enum Skill {
|
|||||||
// Nightmare,
|
// Nightmare,
|
||||||
// Sleep,
|
// Sleep,
|
||||||
AmplifyI,
|
AmplifyI,
|
||||||
AmplifyII,
|
AmplifyII,
|
||||||
AmplifyIII,
|
AmplifyIII,
|
||||||
|
|
||||||
Banish,
|
Banish,
|
||||||
|
|
||||||
BlastI,
|
BlastI,
|
||||||
BlastII,
|
BlastII,
|
||||||
BlastIII,
|
BlastIII,
|
||||||
|
|
||||||
ChaosI,
|
ChaosI,
|
||||||
ChaosII,
|
ChaosII,
|
||||||
ChaosIII,
|
ChaosIII,
|
||||||
|
|
||||||
ClutchI,
|
ClutchI,
|
||||||
ClutchII,
|
ClutchII,
|
||||||
ClutchIII,
|
ClutchIII,
|
||||||
|
|
||||||
Corrupt,
|
Corrupt,
|
||||||
CorruptionTick,
|
CorruptionTick,
|
||||||
|
|
||||||
CurseI,
|
CurseI,
|
||||||
CurseII,
|
CurseII,
|
||||||
CurseIII,
|
CurseIII,
|
||||||
Decay, // dot
|
|
||||||
DecayTick, // dot
|
DecayI, // dot
|
||||||
|
DecayII,
|
||||||
|
DecayIII,
|
||||||
|
DecayTickI, // dot
|
||||||
|
DecayTickII,
|
||||||
|
DecayTickIII,
|
||||||
|
|
||||||
Haste,
|
Haste,
|
||||||
HasteStrike,
|
HasteStrike,
|
||||||
|
|
||||||
HealI,
|
HealI,
|
||||||
HealII,
|
HealII,
|
||||||
HealIII,
|
HealIII,
|
||||||
|
|
||||||
HexI,
|
HexI,
|
||||||
HexII,
|
HexII,
|
||||||
HexIII,
|
HexIII,
|
||||||
|
|
||||||
Hostility,
|
Hostility,
|
||||||
ImpureBlast,
|
ImpureBlast,
|
||||||
Impurity,
|
Impurity,
|
||||||
Injure,
|
Injure,
|
||||||
|
|
||||||
InvertI,
|
InvertI,
|
||||||
InvertII,
|
InvertII,
|
||||||
InvertIII,
|
InvertIII,
|
||||||
|
|
||||||
Parry, // avoid all damage
|
Parry, // avoid all damage
|
||||||
|
|
||||||
PurgeI,
|
PurgeI,
|
||||||
PurgeII,
|
PurgeII,
|
||||||
PurgeIII,
|
PurgeIII,
|
||||||
|
|
||||||
PurifyI,
|
PurifyI,
|
||||||
PurifyII,
|
PurifyII,
|
||||||
PurifyIII,
|
PurifyIII,
|
||||||
|
|
||||||
RechargeI,
|
RechargeI,
|
||||||
RechargeII,
|
RechargeII,
|
||||||
RechargeIII,
|
RechargeIII,
|
||||||
|
|
||||||
ReflectI,
|
ReflectI,
|
||||||
ReflectII,
|
ReflectII,
|
||||||
ReflectIII,
|
ReflectIII,
|
||||||
|
|
||||||
Riposte,
|
Riposte,
|
||||||
|
|
||||||
RuinI,
|
RuinI,
|
||||||
RuinII,
|
RuinII,
|
||||||
RuinIII,
|
RuinIII,
|
||||||
|
|
||||||
ScatterI,
|
ScatterI,
|
||||||
ScatterII,
|
ScatterII,
|
||||||
ScatterIII,
|
ScatterIII,
|
||||||
|
|
||||||
SilenceI,
|
SilenceI,
|
||||||
SilenceII,
|
SilenceII,
|
||||||
SilenceIII,
|
SilenceIII,
|
||||||
|
|
||||||
Siphon,
|
Siphon,
|
||||||
SiphonTick,
|
SiphonTick,
|
||||||
|
|
||||||
SlayI,
|
SlayI,
|
||||||
SlayII,
|
SlayII,
|
||||||
SlayIII,
|
SlayIII,
|
||||||
|
|
||||||
SleepI,
|
SleepI,
|
||||||
SleepII,
|
SleepII,
|
||||||
SleepIII,
|
SleepIII,
|
||||||
|
|
||||||
SnareI,
|
SnareI,
|
||||||
SnareII,
|
SnareII,
|
||||||
SnareIII,
|
SnareIII,
|
||||||
|
|
||||||
Strangle,
|
Strangle,
|
||||||
StrangleTick,
|
StrangleTick,
|
||||||
|
|
||||||
StrikeI,
|
StrikeI,
|
||||||
StrikeII,
|
StrikeII,
|
||||||
StrikeIII,
|
StrikeIII,
|
||||||
|
|
||||||
TauntI,
|
TauntI,
|
||||||
TauntII,
|
TauntII,
|
||||||
TauntIII,
|
TauntIII,
|
||||||
|
|
||||||
ThrowI, // no damage stun, adds vulnerable
|
ThrowI, // no damage stun, adds vulnerable
|
||||||
ThrowII,
|
ThrowII,
|
||||||
ThrowIII,
|
ThrowIII,
|
||||||
Triage, // hot
|
|
||||||
TriageTick,
|
TriageI, // hot
|
||||||
|
TriageII,
|
||||||
|
TriageIII,
|
||||||
|
|
||||||
|
TriageTickI,
|
||||||
|
TriageTickII,
|
||||||
|
TriageTickIII,
|
||||||
|
|
||||||
// used by tests, no cd, 100% multiplier
|
// used by tests, no cd, 100% multiplier
|
||||||
TestAttack,
|
TestAttack,
|
||||||
@ -722,61 +770,72 @@ impl Skill {
|
|||||||
Skill::Attack => 80, // Base
|
Skill::Attack => 80, // Base
|
||||||
|
|
||||||
Skill::BlastI => 110, // BB
|
Skill::BlastI => 110, // BB
|
||||||
Skill::BlastII => 130, // BB
|
Skill::BlastII => 130, // BB
|
||||||
Skill::BlastIII => 150, // BB
|
Skill::BlastIII => 150, // BB
|
||||||
|
|
||||||
Skill::ChaosI => 40, // BR
|
Skill::ChaosI => 40, // BR
|
||||||
Skill::ChaosII => 50, // BR
|
Skill::ChaosII => 50, // BR
|
||||||
Skill::ChaosIII => 60, // BR
|
Skill::ChaosIII => 60, // BR
|
||||||
|
|
||||||
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::SiphonTick => 40, // GB
|
||||||
|
|
||||||
Skill::SlayI => 70, // RG
|
Skill::SlayI => 70, // RG
|
||||||
Skill::SlayII => 90,
|
Skill::SlayII => 90,
|
||||||
Skill::SlayIII => 120,
|
Skill::SlayIII => 120,
|
||||||
|
|
||||||
Skill::StrikeI => 90, //RR
|
Skill::StrikeI => 90, //RR
|
||||||
Skill::StrikeII => 110,
|
Skill::StrikeII => 110,
|
||||||
Skill::StrikeIII => 140,
|
Skill::StrikeIII => 140,
|
||||||
|
|
||||||
// Block Base
|
// Block Base
|
||||||
Skill::CorruptionTick => 80,
|
Skill::CorruptionTick => 80,
|
||||||
Skill::Parry => 110,
|
Skill::Parry => 110,
|
||||||
Skill::Riposte => 70,
|
Skill::Riposte => 70,
|
||||||
|
|
||||||
Skill::PurifyI => 45, //Green dmg (heal)
|
Skill::PurifyI => 45, //Green dmg (heal)
|
||||||
Skill::PurifyII => 70,
|
Skill::PurifyII => 70,
|
||||||
Skill::PurifyIII => 105,
|
Skill::PurifyIII => 105,
|
||||||
|
|
||||||
Skill::ReflectI => 45, //restore blue life (heal)
|
Skill::ReflectI => 45, //restore blue life (heal)
|
||||||
Skill::ReflectII => 70,
|
Skill::ReflectII => 70,
|
||||||
Skill::ReflectIII => 100,
|
Skill::ReflectIII => 100,
|
||||||
|
|
||||||
Skill::RechargeI => 85, //restore red and blue life (heal)
|
Skill::RechargeI => 85, //restore red and blue life (heal)
|
||||||
Skill::RechargeII => 130,
|
Skill::RechargeII => 130,
|
||||||
Skill::RechargeIII => 200,
|
Skill::RechargeIII => 200,
|
||||||
|
|
||||||
// Stun Base
|
// Stun Base
|
||||||
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::StrangleTick => 65,
|
||||||
|
|
||||||
// Debuff Base
|
// Debuff Base
|
||||||
Skill::DecayTick => 25,
|
Skill::DecayTickI => 25,
|
||||||
|
Skill::DecayTickII => 45,
|
||||||
|
Skill::DecayTickIII => 70,
|
||||||
Skill::SilenceI => 55, // Deals more per blue skill on target
|
Skill::SilenceI => 55, // Deals more per blue skill on target
|
||||||
Skill::SilenceII => 80, // Deals more per blue skill on target
|
Skill::SilenceII => 80,
|
||||||
Skill::SilenceIII => 110, // Deals more per blue skill on target
|
Skill::SilenceIII => 110,
|
||||||
Skill::SnareI => 40, // Deals more per red skill on target
|
Skill::SnareI => 40, // Deals more per red skill on target
|
||||||
Skill::SnareII => 65,
|
Skill::SnareII => 65,
|
||||||
Skill::SnareIII => 100,
|
Skill::SnareIII => 100,
|
||||||
|
|
||||||
// Buff base
|
// Buff base
|
||||||
Skill::ImpureBlast => 25,
|
Skill::ImpureBlast => 25,
|
||||||
Skill::HasteStrike => 30,
|
Skill::HasteStrike => 30,
|
||||||
Skill::ScatterI => 140,
|
Skill::ScatterI => 140,
|
||||||
Skill::ScatterII => 200,
|
Skill::ScatterII => 200,
|
||||||
Skill::ScatterIII => 300,
|
Skill::ScatterIII => 300,
|
||||||
Skill::TauntI => 80,
|
Skill::TauntI => 80,
|
||||||
Skill::TauntII => 110,
|
Skill::TauntII => 110,
|
||||||
Skill::TauntIII => 150,
|
Skill::TauntIII => 150,
|
||||||
Skill::TriageTick => 75,
|
Skill::TriageTickI => 75,
|
||||||
|
Skill::TriageTickII => 110,
|
||||||
|
Skill::TriageTickIII => 140,
|
||||||
|
|
||||||
_ => 100,
|
_ => 100,
|
||||||
}
|
}
|
||||||
@ -785,73 +844,110 @@ impl Skill {
|
|||||||
pub fn effect(&self) -> Vec<CrypEffect> {
|
pub fn effect(&self) -> Vec<CrypEffect> {
|
||||||
match self {
|
match self {
|
||||||
// Modifiers
|
// Modifiers
|
||||||
Skill::AmplifyI => vec![CrypEffect {effect: Effect::Amplify, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
Skill::AmplifyI => vec![CrypEffect {effect: Effect::Amplify, duration: 2,
|
||||||
Skill::AmplifyII => vec![CrypEffect {effect: Effect::Amplify, duration: 3, meta: Some(EffectMeta::Multiplier(175)), tick: None}],
|
meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
||||||
Skill::AmplifyIII => vec![CrypEffect {effect: Effect::Amplify, duration: 4, meta: Some(EffectMeta::Multiplier(200)), tick: None}],
|
Skill::AmplifyII => vec![CrypEffect {effect: Effect::Amplify, duration: 3,
|
||||||
Skill::Banish => vec![CrypEffect {effect: Effect::Banish, duration: 1, meta: None, tick: None}],
|
meta: Some(EffectMeta::Multiplier(175)), tick: None}],
|
||||||
Skill::Block => vec![CrypEffect {effect: Effect::Block, duration: 1, meta: Some(EffectMeta::Multiplier(50)), tick: None}],
|
Skill::AmplifyIII => vec![CrypEffect {effect: Effect::Amplify, duration: 4,
|
||||||
Skill::Buff => vec![CrypEffect {effect: Effect::Buff, duration: 2, meta: Some(EffectMeta::Multiplier(125)), tick: None }],
|
meta: Some(EffectMeta::Multiplier(200)), tick: None}],
|
||||||
|
|
||||||
Skill::Corrupt => vec![CrypEffect {effect: Effect::Corrupt, duration: 2, meta: None, tick: None},
|
Skill::Banish => vec![CrypEffect {effect: Effect::Banish, duration: 1,meta: None, tick: None}],
|
||||||
|
Skill::Block => vec![CrypEffect {effect: Effect::Block, duration: 1,
|
||||||
|
meta: Some(EffectMeta::Multiplier(50)), tick: None}],
|
||||||
|
Skill::Buff => vec![CrypEffect {effect: Effect::Buff, duration: 2,
|
||||||
|
meta: Some(EffectMeta::Multiplier(125)), tick: None }],
|
||||||
|
|
||||||
|
Skill::Corrupt => vec![CrypEffect {effect: Effect::Corrupt, duration: 2, meta: None, tick: None},
|
||||||
CrypEffect {effect: Effect::Corruption, duration: 3, meta: None, tick: None}],
|
CrypEffect {effect: Effect::Corruption, duration: 3, meta: None, tick: None}],
|
||||||
|
|
||||||
Skill::ClutchI => vec![CrypEffect {effect: Effect::Clutch, duration: 1, meta: None, tick: None }],
|
Skill::ClutchI => vec![CrypEffect {effect: Effect::Clutch, duration: 1, meta: None, tick: None }],
|
||||||
Skill::ClutchII => vec![CrypEffect {effect: Effect::Clutch, duration: 2, meta: None, tick: None }],
|
Skill::ClutchII => vec![CrypEffect {effect: Effect::Clutch, duration: 2, meta: None, tick: None }],
|
||||||
Skill::ClutchIII => vec![CrypEffect {effect: Effect::Clutch, duration: 3, meta: None, tick: None }],
|
Skill::ClutchIII => vec![CrypEffect {effect: Effect::Clutch, duration: 3, meta: None, tick: None }],
|
||||||
Skill::CurseI => vec![CrypEffect {effect: Effect::Curse, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
|
||||||
Skill::CurseII => vec![CrypEffect {effect: Effect::Curse, duration: 2, meta: Some(EffectMeta::Multiplier(200)), tick: None}],
|
|
||||||
Skill::CurseIII => vec![CrypEffect {effect: Effect::Curse, duration: 3, meta: Some(EffectMeta::Multiplier(250)), tick: None}],
|
|
||||||
Skill::Debuff => vec![CrypEffect {effect: Effect::Slow, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None }],
|
|
||||||
|
|
||||||
Skill::Decay => vec![CrypEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None },
|
Skill::CurseI => vec![CrypEffect {effect: Effect::Curse, duration: 2,
|
||||||
CrypEffect {effect: Effect::Decay, duration: 3, meta: None, tick: None }],
|
meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
||||||
Skill::Haste => vec![CrypEffect {effect: Effect::Haste, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
Skill::CurseII => vec![CrypEffect {effect: Effect::Curse, duration: 2,
|
||||||
Skill::HexI => vec![CrypEffect {effect: Effect::Hex, duration: 2, meta: None, tick: None}],
|
meta: Some(EffectMeta::Multiplier(200)), tick: None}],
|
||||||
Skill::HexII => vec![CrypEffect {effect: Effect::Hex, duration: 3, meta: None, tick: None}],
|
Skill::CurseIII => vec![CrypEffect {effect: Effect::Curse, duration: 3,
|
||||||
Skill::HexIII => vec![CrypEffect {effect: Effect::Hex, duration: 4, meta: None, tick: None}],
|
meta: Some(EffectMeta::Multiplier(250)), tick: None}],
|
||||||
Skill::Hostility => vec![CrypEffect {effect: Effect::Hostility, duration: 2, meta: None, tick: None},
|
|
||||||
CrypEffect {effect: Effect::Hatred, duration: 5, meta: None, tick: None}],
|
|
||||||
Skill::Impurity => vec![CrypEffect {effect: Effect::Impurity, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
|
||||||
Skill::InvertI => vec![CrypEffect {effect: Effect::Invert, duration: 2, 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::Parry => vec![CrypEffect {effect: Effect::Parry, duration: 2, meta: None, tick: None }],
|
Skill::Debuff => vec![CrypEffect {effect: Effect::Slow, duration: 3,
|
||||||
Skill::ReflectI => vec![CrypEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }],
|
meta: Some(EffectMeta::Multiplier(50)), 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},
|
Skill::DecayI => vec![CrypEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None },
|
||||||
CrypEffect {effect: Effect::Vulnerable, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
CrypEffect {effect: Effect::Decay, duration: 3,
|
||||||
Skill::ThrowII => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None},
|
meta: Some(EffectMeta::SkillTick(Skill::DecayTickI)), tick: None}],
|
||||||
CrypEffect {effect: Effect::Vulnerable, duration: 4, meta: Some(EffectMeta::Multiplier(200)), tick: None}],
|
Skill::DecayII => vec![CrypEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(35)), tick: None },
|
||||||
Skill::ThrowIII => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None},
|
CrypEffect {effect: Effect::Decay, duration: 3,
|
||||||
CrypEffect {effect: Effect::Vulnerable, duration: 4, meta: Some(EffectMeta::Multiplier(250)), tick: None}],
|
meta: Some(EffectMeta::SkillTick(Skill::DecayTickII)), tick: None}],
|
||||||
|
Skill::DecayIII => vec![CrypEffect {effect: Effect::Wither, duration: 4, meta: Some(EffectMeta::Multiplier(20)), tick: None },
|
||||||
|
CrypEffect {effect: Effect::Decay, duration: 4,
|
||||||
|
meta: Some(EffectMeta::SkillTick(Skill::DecayTickIII)), tick: None}],
|
||||||
|
|
||||||
Skill::RuinI => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
|
Skill::Haste => vec![CrypEffect {effect: Effect::Haste, duration: 2,
|
||||||
Skill::RuinII => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
|
meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
||||||
Skill::RuinIII => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
|
Skill::HexI => vec![CrypEffect {effect: Effect::Hex, duration: 2, meta: None, tick: None}],
|
||||||
Skill::ScatterI => vec![CrypEffect {effect: Effect::Scatter, duration: 2, meta: None, tick: None}],
|
Skill::HexII => vec![CrypEffect {effect: Effect::Hex, duration: 3, meta: None, tick: None}],
|
||||||
Skill::ScatterII => vec![CrypEffect {effect: Effect::Scatter, duration: 3, meta: None, tick: None}],
|
Skill::HexIII => vec![CrypEffect {effect: Effect::Hex, duration: 4, 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::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::Hostility => vec![CrypEffect {effect: Effect::Hostility, duration: 2, meta: None, tick: None},
|
||||||
Skill::SnareII => vec![CrypEffect {effect: Effect::Snare, duration: 3, meta: None, tick: None}],
|
CrypEffect {effect: Effect::Hatred, duration: 5, 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::Impurity => vec![CrypEffect {effect: Effect::Impurity, duration: 3,
|
||||||
Skill::Stun => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
|
meta: Some(EffectMeta::Multiplier(150)), 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::InvertI => vec![CrypEffect {effect: Effect::Invert, duration: 2, meta: None, tick: None}],
|
||||||
Skill::TauntIII => vec![CrypEffect {effect: Effect::Taunt, duration: 4, meta: None, tick: None}],
|
Skill::InvertII => vec![CrypEffect {effect: Effect::Invert, duration: 3, meta: None, tick: None}],
|
||||||
Skill::Triage => vec![CrypEffect {effect: Effect::Triage, duration: 2, 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::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::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::SilenceI => vec![CrypEffect {effect: Effect::Silence, duration: 2, 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::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::TriageI => vec![CrypEffect {effect: Effect::Triage, duration: 2,
|
||||||
|
meta: Some(EffectMeta::SkillTick(Skill::TriageTickI)), tick: None}],
|
||||||
|
Skill::TriageII => vec![CrypEffect {effect: Effect::Triage, duration: 3,
|
||||||
|
meta: Some(EffectMeta::SkillTick(Skill::TriageTickII)), tick: None}],
|
||||||
|
Skill::TriageIII => vec![CrypEffect {effect: Effect::Triage, duration: 4,
|
||||||
|
meta: Some(EffectMeta::SkillTick(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 }],
|
||||||
@ -867,95 +963,131 @@ impl Skill {
|
|||||||
Skill::Attack => None,
|
Skill::Attack => None,
|
||||||
Skill::Debuff => Some(1),
|
Skill::Debuff => Some(1),
|
||||||
Skill::Buff => None,
|
Skill::Buff => None,
|
||||||
|
|
||||||
Skill::StrikeI => None,
|
Skill::StrikeI => None,
|
||||||
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::Parry => Some(2), // avoid all damage
|
||||||
Skill::Riposte => None, // used on parry
|
|
||||||
Skill::SnareI => Some(2),
|
Skill::SnareI => Some(2),
|
||||||
Skill::SnareII => Some(2),
|
Skill::SnareII => Some(2),
|
||||||
Skill::SnareIII => Some(2),
|
Skill::SnareIII => Some(2),
|
||||||
Skill::Stun => Some(2),
|
Skill::Stun => Some(2),
|
||||||
|
|
||||||
Skill::HealI => None,
|
Skill::HealI => None,
|
||||||
Skill::HealII => None,
|
Skill::HealII => None,
|
||||||
Skill::HealIII => None,
|
Skill::HealIII => None,
|
||||||
Skill::Triage => None, // hot
|
|
||||||
Skill::TriageTick => None,
|
Skill::TriageI => None, // hot
|
||||||
|
Skill::TriageII => None, // hot
|
||||||
|
Skill::TriageIII => None, // hot
|
||||||
|
|
||||||
Skill::ThrowI => Some(1), // no damage stun, adds vulnerable
|
Skill::ThrowI => Some(1), // no damage stun, adds vulnerable
|
||||||
Skill::ThrowII => Some(1),
|
Skill::ThrowII => Some(1),
|
||||||
Skill::ThrowIII => Some(1),
|
Skill::ThrowIII => Some(1),
|
||||||
|
|
||||||
Skill::BlastI => None,
|
Skill::BlastI => None,
|
||||||
Skill::BlastII => None,
|
Skill::BlastII => None,
|
||||||
Skill::BlastIII => None,
|
Skill::BlastIII => None,
|
||||||
|
|
||||||
Skill::ChaosI => None,
|
Skill::ChaosI => None,
|
||||||
Skill::ChaosII => None,
|
Skill::ChaosII => None,
|
||||||
Skill::ChaosIII => None,
|
Skill::ChaosIII => None,
|
||||||
|
|
||||||
Skill::AmplifyI => Some(1),
|
Skill::AmplifyI => Some(1),
|
||||||
Skill::AmplifyII => Some(1),
|
Skill::AmplifyII => Some(1),
|
||||||
Skill::AmplifyIII => Some(1),
|
Skill::AmplifyIII => Some(1),
|
||||||
Skill::Impurity => Some(3),
|
Skill::Impurity => Some(3),
|
||||||
Skill::ImpureBlast => None,
|
|
||||||
Skill::InvertI => Some(2),
|
Skill::InvertI => Some(2),
|
||||||
Skill::InvertII => Some(2),
|
Skill::InvertII => Some(2),
|
||||||
Skill::InvertIII => Some(2),
|
Skill::InvertIII => Some(2),
|
||||||
Skill::Decay => Some(1), // dot
|
Skill::DecayI => Some(1), // dot
|
||||||
Skill::DecayTick => None,
|
Skill::DecayII => Some(1),
|
||||||
|
Skill::DecayIII => Some(1),
|
||||||
Skill::Siphon => None,
|
Skill::Siphon => None,
|
||||||
Skill::SiphonTick => None,
|
|
||||||
Skill::CurseI => Some(1),
|
Skill::CurseI => Some(1),
|
||||||
Skill::CurseII => Some(1),
|
Skill::CurseII => Some(1),
|
||||||
Skill::CurseIII => Some(1),
|
Skill::CurseIII => Some(1),
|
||||||
|
|
||||||
Skill::ScatterI => Some(2),
|
Skill::ScatterI => Some(2),
|
||||||
Skill::ScatterII => Some(2),
|
Skill::ScatterII => Some(2),
|
||||||
Skill::ScatterIII => Some(2),
|
Skill::ScatterIII => Some(2),
|
||||||
|
|
||||||
Skill::SilenceI => Some(3),
|
Skill::SilenceI => Some(3),
|
||||||
Skill::SilenceII => Some(2),
|
Skill::SilenceII => Some(2),
|
||||||
Skill::SilenceIII => Some(2),
|
Skill::SilenceIII => Some(2),
|
||||||
|
|
||||||
Skill::PurifyI => None,
|
Skill::PurifyI => None,
|
||||||
Skill::PurifyII => None,
|
Skill::PurifyII => None,
|
||||||
Skill::PurifyIII => None,
|
Skill::PurifyIII => None,
|
||||||
|
|
||||||
Skill::PurgeI => None,
|
Skill::PurgeI => None,
|
||||||
Skill::PurgeII => None,
|
Skill::PurgeII => None,
|
||||||
Skill::PurgeIII => None,
|
Skill::PurgeIII => None,
|
||||||
|
|
||||||
Skill::Banish => Some(1),
|
Skill::Banish => Some(1),
|
||||||
|
|
||||||
Skill::HexI => Some(1),
|
Skill::HexI => Some(1),
|
||||||
Skill::HexII => Some(2),
|
Skill::HexII => Some(2),
|
||||||
Skill::HexIII => Some(2),
|
Skill::HexIII => Some(2),
|
||||||
Skill::Haste => Some(2),
|
Skill::Haste => Some(2),
|
||||||
Skill::HasteStrike => None, // Used in haste
|
|
||||||
|
|
||||||
Skill::ReflectI => Some(2),
|
Skill::ReflectI => Some(2),
|
||||||
Skill::ReflectII => Some(2),
|
Skill::ReflectII => Some(2),
|
||||||
Skill::ReflectIII => Some(2),
|
Skill::ReflectIII => Some(2),
|
||||||
|
|
||||||
Skill::RechargeI => Some(2),
|
Skill::RechargeI => Some(2),
|
||||||
Skill::RechargeII => Some(2),
|
Skill::RechargeII => Some(2),
|
||||||
Skill::RechargeIII => Some(2),
|
Skill::RechargeIII => Some(2),
|
||||||
|
|
||||||
Skill::RuinI => Some(3),
|
Skill::RuinI => Some(3),
|
||||||
Skill::RuinII => Some(2),
|
Skill::RuinII => Some(2),
|
||||||
Skill::RuinIII => Some(2),
|
Skill::RuinIII => Some(2),
|
||||||
|
|
||||||
Skill::SlayI => None,
|
Skill::SlayI => None,
|
||||||
Skill::SlayII => None,
|
Skill::SlayII => None,
|
||||||
Skill::SlayIII => None,
|
Skill::SlayIII => None,
|
||||||
|
|
||||||
Skill::SleepI => Some(3),
|
Skill::SleepI => Some(3),
|
||||||
Skill::SleepII => Some(3),
|
Skill::SleepII => Some(3),
|
||||||
Skill::SleepIII => Some(3),
|
Skill::SleepIII => Some(3),
|
||||||
|
|
||||||
Skill::Strangle => Some(2),
|
Skill::Strangle => Some(2),
|
||||||
Skill::StrangleTick => None,
|
|
||||||
Skill::ClutchI => Some(1),
|
Skill::ClutchI => Some(1),
|
||||||
Skill::ClutchII => Some(2),
|
Skill::ClutchII => Some(2),
|
||||||
Skill::ClutchIII => Some(3),
|
Skill::ClutchIII => Some(3),
|
||||||
|
|
||||||
Skill::TauntI => Some(2),
|
Skill::TauntI => Some(2),
|
||||||
Skill::TauntII => Some(2),
|
Skill::TauntII => Some(2),
|
||||||
Skill::TauntIII => Some(2),
|
Skill::TauntIII => Some(2),
|
||||||
Skill::Injure => Some(2),
|
Skill::Injure => Some(2),
|
||||||
|
|
||||||
Skill::Corrupt => Some(1),
|
Skill::Corrupt => Some(1),
|
||||||
Skill::CorruptionTick => None,
|
|
||||||
|
|
||||||
Skill::Hostility => Some(1),
|
Skill::Hostility => Some(1),
|
||||||
|
|
||||||
|
//-----------
|
||||||
|
// Never cast directly
|
||||||
|
//---------
|
||||||
|
// Trigger
|
||||||
|
Skill::ImpureBlast |
|
||||||
|
Skill::HasteStrike |
|
||||||
|
Skill::Riposte | // parry
|
||||||
|
// Ticks
|
||||||
|
Skill::CorruptionTick |
|
||||||
|
Skill::DecayTickI |
|
||||||
|
Skill::DecayTickII |
|
||||||
|
Skill::DecayTickIII |
|
||||||
|
Skill::SiphonTick |
|
||||||
|
Skill::StrangleTick |
|
||||||
|
Skill::TriageTickI |
|
||||||
|
Skill::TriageTickII |
|
||||||
|
Skill::TriageTickIII => None,
|
||||||
|
// Triggers
|
||||||
// -----------------
|
// -----------------
|
||||||
// Test
|
// Test
|
||||||
// -----------------
|
// -----------------
|
||||||
@ -971,21 +1103,32 @@ impl Skill {
|
|||||||
|
|
||||||
pub fn ko_castable(&self) -> bool {
|
pub fn ko_castable(&self) -> bool {
|
||||||
match self {
|
match self {
|
||||||
Skill::TriageTick => true,
|
Skill::CorruptionTick |
|
||||||
Skill::DecayTick => true,
|
Skill::DecayTickI |
|
||||||
Skill::SiphonTick => true,
|
Skill::DecayTickII |
|
||||||
Skill::CorruptionTick => true,
|
Skill::DecayTickIII |
|
||||||
|
Skill::SiphonTick |
|
||||||
|
|
||||||
|
Skill::TriageTickI |
|
||||||
|
Skill::TriageTickII |
|
||||||
|
Skill::TriageTickIII => true,
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_tick(&self) -> bool {
|
pub fn is_tick(&self) -> bool {
|
||||||
match self {
|
match self {
|
||||||
Skill::CorruptionTick => true,
|
Skill::CorruptionTick |
|
||||||
Skill::DecayTick => true,
|
Skill::DecayTickI |
|
||||||
Skill::SiphonTick => true,
|
Skill::DecayTickII |
|
||||||
Skill::StrangleTick => true,
|
Skill::DecayTickIII |
|
||||||
Skill::TriageTick => true,
|
Skill::SiphonTick |
|
||||||
|
Skill::StrangleTick |
|
||||||
|
|
||||||
|
Skill::TriageTickI |
|
||||||
|
Skill::TriageTickII |
|
||||||
|
Skill::TriageTickIII => true,
|
||||||
|
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1006,8 +1149,14 @@ impl Skill {
|
|||||||
Skill::StrikeIII => Skill::StrikeI.speed(),
|
Skill::StrikeIII => Skill::StrikeI.speed(),
|
||||||
|
|
||||||
Skill::SiphonTick => Skill::Siphon.speed(),
|
Skill::SiphonTick => Skill::Siphon.speed(),
|
||||||
Skill::DecayTick => Skill::Decay.speed(),
|
Skill::DecayTickI |
|
||||||
Skill::TriageTick => Skill::Triage.speed(),
|
Skill::DecayTickII |
|
||||||
|
Skill::DecayTickIII => Skill::DecayI.speed(),
|
||||||
|
|
||||||
|
Skill::TriageTickI |
|
||||||
|
Skill::TriageTickII |
|
||||||
|
Skill::TriageTickIII => Skill::TriageI.speed(),
|
||||||
|
|
||||||
Skill::StrangleTick => Skill::Strangle.speed(),
|
Skill::StrangleTick => Skill::Strangle.speed(),
|
||||||
Skill::CorruptionTick => Skill::Corrupt.speed(),
|
Skill::CorruptionTick => Skill::Corrupt.speed(),
|
||||||
|
|
||||||
@ -1027,11 +1176,11 @@ impl Skill {
|
|||||||
pub fn self_targeting(&self) -> bool {
|
pub fn self_targeting(&self) -> bool {
|
||||||
match self {
|
match self {
|
||||||
Skill::Block |
|
Skill::Block |
|
||||||
Skill::Parry |
|
|
||||||
Skill::ClutchI |
|
|
||||||
Skill::ClutchII |
|
|
||||||
Skill::ClutchIII |
|
|
||||||
Skill::Corrupt |
|
Skill::Corrupt |
|
||||||
|
Skill::ClutchI |
|
||||||
|
Skill::ClutchII |
|
||||||
|
Skill::ClutchIII |
|
||||||
|
Skill::Parry |
|
||||||
Skill::TestBlock |
|
Skill::TestBlock |
|
||||||
Skill::TestParry => true,
|
Skill::TestParry => true,
|
||||||
|
|
||||||
@ -1043,36 +1192,38 @@ impl Skill {
|
|||||||
let mut rng = thread_rng();
|
let mut rng = thread_rng();
|
||||||
|
|
||||||
match self {
|
match self {
|
||||||
Skill::HealI |
|
|
||||||
Skill::HealII |
|
|
||||||
Skill::HealIII |
|
|
||||||
Skill::Triage |
|
|
||||||
Skill::PurifyI |
|
|
||||||
Skill::PurifyII |
|
|
||||||
Skill::PurifyIII |
|
|
||||||
Skill::Parry |
|
|
||||||
Skill::ClutchI |
|
|
||||||
Skill::ClutchII |
|
|
||||||
Skill::ClutchIII |
|
|
||||||
Skill::ScatterI |
|
|
||||||
Skill::ScatterII |
|
|
||||||
Skill::ScatterIII |
|
|
||||||
Skill::RechargeI |
|
|
||||||
Skill::RechargeII |
|
|
||||||
Skill::RechargeIII |
|
|
||||||
Skill::ReflectI |
|
|
||||||
Skill::ReflectII |
|
|
||||||
Skill::ReflectIII |
|
|
||||||
Skill::Haste |
|
|
||||||
Skill::InvertI |
|
|
||||||
Skill::InvertII |
|
|
||||||
Skill::InvertIII |
|
|
||||||
Skill::AmplifyI |
|
Skill::AmplifyI |
|
||||||
Skill::AmplifyII |
|
Skill::AmplifyII |
|
||||||
Skill::AmplifyIII |
|
Skill::AmplifyIII |
|
||||||
Skill::Hostility |
|
Skill::Block |
|
||||||
|
Skill::ClutchI |
|
||||||
|
Skill::ClutchII |
|
||||||
|
Skill::ClutchIII |
|
||||||
Skill::Corrupt |
|
Skill::Corrupt |
|
||||||
Skill::Block => true,
|
Skill::Haste |
|
||||||
|
Skill::HealI |
|
||||||
|
Skill::HealII |
|
||||||
|
Skill::HealIII |
|
||||||
|
Skill::Hostility |
|
||||||
|
Skill::InvertI |
|
||||||
|
Skill::InvertII |
|
||||||
|
Skill::InvertIII |
|
||||||
|
Skill::Parry |
|
||||||
|
Skill::PurifyI |
|
||||||
|
Skill::PurifyII |
|
||||||
|
Skill::PurifyIII |
|
||||||
|
Skill::RechargeI |
|
||||||
|
Skill::RechargeII |
|
||||||
|
Skill::RechargeIII |
|
||||||
|
Skill::ReflectI |
|
||||||
|
Skill::ReflectII |
|
||||||
|
Skill::ReflectIII |
|
||||||
|
Skill::ScatterI |
|
||||||
|
Skill::ScatterII |
|
||||||
|
Skill::ScatterIII |
|
||||||
|
Skill::TriageI |
|
||||||
|
Skill::TriageII |
|
||||||
|
Skill::TriageIII => true,
|
||||||
|
|
||||||
Skill::Banish => rng.gen_bool(0.5),
|
Skill::Banish => rng.gen_bool(0.5),
|
||||||
|
|
||||||
@ -1297,17 +1448,20 @@ 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 {
|
||||||
skill.effect().into_iter().for_each(|e| {
|
let CrypEffect { effect, duration, meta, tick: _ } = skill.effect().first().unwrap().clone();
|
||||||
let triage = e.clone().set_tick(Cast::new_tick(source, target, Skill::TriageTick));
|
let tick_skill = match meta {
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, triage)));
|
Some(EffectMeta::SkillTick(s)) => s,
|
||||||
});
|
_ => panic!("no triage tick skill"),
|
||||||
|
};
|
||||||
|
let triage = CrypEffect::new(effect, duration).set_tick(Cast::new_tick(source, target, tick_skill));
|
||||||
|
results.push(Resolution::new(source, target).event(target.add_effect(skill, triage)));
|
||||||
|
|
||||||
return triage_tick(source, target, results, Skill::TriageTick);
|
return triage_tick(source, target, results, tick_skill);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn triage_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn triage_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
let amount = source.green_damage().pct(skill.multiplier());
|
let amount = source.green_damage().pct(skill.multiplier());
|
||||||
target.deal_green_damage(Skill::TriageTick, amount)
|
target.deal_green_damage(skill, amount)
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.for_each(|e| results.push(Resolution::new(source, target).event(e)));
|
.for_each(|e| results.push(Resolution::new(source, target).event(e)));
|
||||||
return results;
|
return results;
|
||||||
@ -1356,17 +1510,18 @@ fn debuff(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill:
|
|||||||
|
|
||||||
fn decay(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn decay(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
|
|
||||||
skill.effect().into_iter().for_each(|e| {
|
let wither = skill.effect().first().unwrap().clone();
|
||||||
let CrypEffect { effect, duration: _, meta: _, tick: _ } = e;
|
results.push(Resolution::new(source, target).event(target.add_effect(skill, wither)));
|
||||||
let apply_effect = match effect {
|
|
||||||
Effect::Wither => e.clone(),
|
|
||||||
Effect::Decay => e.clone().set_tick(Cast::new_tick(source, target, Skill::DecayTick)),
|
|
||||||
_ => panic!("wrong decay effects"),
|
|
||||||
};
|
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, apply_effect)));
|
|
||||||
});
|
|
||||||
|
|
||||||
return decay_tick(source, target, results, Skill::DecayTick);
|
let CrypEffect { effect, duration, meta, tick: _ } = skill.effect().last().unwrap().clone();
|
||||||
|
let tick_skill = match meta {
|
||||||
|
Some(EffectMeta::SkillTick(s)) => s,
|
||||||
|
_ => panic!("no decay tick skill"),
|
||||||
|
};
|
||||||
|
let decay = CrypEffect::new(effect, duration).set_tick(Cast::new_tick(source, target, tick_skill));
|
||||||
|
results.push(Resolution::new(source, target).event(target.add_effect(skill, decay)));
|
||||||
|
|
||||||
|
return decay_tick(source, target, results, tick_skill);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn decay_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn decay_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
@ -1610,7 +1765,7 @@ mod tests {
|
|||||||
let mut y = Cryp::new()
|
let mut y = Cryp::new()
|
||||||
.named(&"camel".to_string());
|
.named(&"camel".to_string());
|
||||||
|
|
||||||
decay(&mut x, &mut y, vec![], Skill::Decay);
|
decay(&mut x, &mut y, vec![], Skill::DecayI);
|
||||||
|
|
||||||
assert!(y.effects.iter().any(|e| e.effect == Effect::Decay));
|
assert!(y.effects.iter().any(|e| e.effect == Effect::Decay));
|
||||||
|
|
||||||
@ -1809,7 +1964,7 @@ mod tests {
|
|||||||
y.deal_red_damage(Skill::Attack, 5);
|
y.deal_red_damage(Skill::Attack, 5);
|
||||||
let prev_hp = y.green_life();
|
let prev_hp = y.green_life();
|
||||||
|
|
||||||
triage(&mut x, &mut y, vec![], Skill::Triage);
|
triage(&mut x, &mut y, vec![], Skill::TriageI);
|
||||||
|
|
||||||
assert!(y.effects.iter().any(|e| e.effect == Effect::Triage));
|
assert!(y.effects.iter().any(|e| e.effect == Effect::Triage));
|
||||||
assert!(y.green_life() > prev_hp);
|
assert!(y.green_life() > prev_hp);
|
||||||
@ -1869,7 +2024,7 @@ mod tests {
|
|||||||
let mut x = Cryp::new()
|
let mut x = Cryp::new()
|
||||||
.named(&"muji".to_string());
|
.named(&"muji".to_string());
|
||||||
|
|
||||||
decay(&mut x.clone(), &mut x, vec![], Skill::Decay);
|
decay(&mut x.clone(), &mut x, vec![], Skill::DecayI);
|
||||||
assert!(x.effects.iter().any(|e| e.effect == Effect::Decay));
|
assert!(x.effects.iter().any(|e| e.effect == Effect::Decay));
|
||||||
|
|
||||||
purify(&mut x.clone(), &mut x, vec![], Skill::PurifyI);
|
purify(&mut x.clone(), &mut x, vec![], Skill::PurifyI);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user