add skill delays
This commit is contained in:
parent
9c5b7d0c89
commit
5b45d9b5e4
@ -52,7 +52,7 @@ impl ConstructSkill {
|
|||||||
pub fn new(skill: Skill) -> ConstructSkill {
|
pub fn new(skill: Skill) -> ConstructSkill {
|
||||||
ConstructSkill {
|
ConstructSkill {
|
||||||
skill,
|
skill,
|
||||||
cd: skill.base_cd(),
|
cd: skill.delay(),
|
||||||
disabled: false,
|
disabled: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -443,12 +443,12 @@ impl Construct {
|
|||||||
|
|
||||||
self.skills
|
self.skills
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
.for_each(|s| match s.skill.base_cd() {
|
.for_each(|s| match s.skill.delay() {
|
||||||
Some(cd) => match cd.saturating_sub(delay_reduction) {
|
Some(cd) => match cd.saturating_sub(delay_reduction) {
|
||||||
0 => s.set_cooldown(None),
|
0 => s.set_cooldown(None),
|
||||||
_ => s.set_cooldown(Some(cd.saturating_sub(delay_reduction)))
|
_ => s.set_cooldown(Some(cd.saturating_sub(delay_reduction)))
|
||||||
},
|
},
|
||||||
None => ()
|
None => s.set_cooldown(None)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1241,7 +1241,7 @@ mod tests {
|
|||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_eq!(i, Skill::Sleep.base_cd().unwrap());
|
assert_eq!(i, Skill::Sleep.delay().unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1285,7 +1285,7 @@ mod tests {
|
|||||||
// should auto progress back to skill phase
|
// should auto progress back to skill phase
|
||||||
assert!(game.phase == Phase::Skill);
|
assert!(game.phase == Phase::Skill);
|
||||||
|
|
||||||
assert!(game.player_by_id(y_player.id).unwrap().constructs[0].skill_on_cd(Skill::Stun).is_some());
|
assert!(game.player_by_id(y_player.id).unwrap().constructs[0].skill_on_cd(Skill::Stun).is_none());
|
||||||
assert!(game.player_by_id(x_player.id).unwrap().constructs[0].skill_on_cd(Skill::Block).is_none());
|
assert!(game.player_by_id(x_player.id).unwrap().constructs[0].skill_on_cd(Skill::Block).is_none());
|
||||||
|
|
||||||
game.add_skill(x_player.id, x_construct.id, y_construct.id, Skill::Attack).unwrap();
|
game.add_skill(x_player.id, x_construct.id, y_construct.id, Skill::Attack).unwrap();
|
||||||
|
|||||||
@ -522,6 +522,155 @@ impl Skill {
|
|||||||
Skill::SustainPlus |
|
Skill::SustainPlus |
|
||||||
Skill::SustainPlusPlus => Some(1),
|
Skill::SustainPlusPlus => Some(1),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Skill::Electrify |
|
||||||
|
Skill::ElectrifyPlus |
|
||||||
|
Skill::ElectrifyPlusPlus => None,
|
||||||
|
|
||||||
|
Skill::Absorb |
|
||||||
|
Skill::AbsorbPlus |
|
||||||
|
Skill::AbsorbPlusPlus => Some(1),
|
||||||
|
|
||||||
|
//-----------
|
||||||
|
// Never cast directly
|
||||||
|
//---------
|
||||||
|
// Trigger
|
||||||
|
Skill::HybridBlast |
|
||||||
|
Skill::HasteStrike |
|
||||||
|
Skill::CounterAttack|
|
||||||
|
Skill::CounterAttackPlus |
|
||||||
|
Skill::CounterAttackPlusPlus | // counter
|
||||||
|
Skill::Electrocute|
|
||||||
|
Skill::ElectrocutePlus |
|
||||||
|
Skill::ElectrocutePlusPlus |
|
||||||
|
Skill::Absorption|
|
||||||
|
Skill::AbsorptionPlus |
|
||||||
|
Skill::AbsorptionPlusPlus |
|
||||||
|
// Ticks
|
||||||
|
Skill::ElectrocuteTick|
|
||||||
|
Skill::DecayTick|
|
||||||
|
Skill::SiphonTick|
|
||||||
|
Skill::TriageTick => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn delay(&self) -> Cooldown {
|
||||||
|
match self {
|
||||||
|
Skill::Attack => None,
|
||||||
|
Skill::Block => None, // reduce damage
|
||||||
|
Skill::Buff => None,
|
||||||
|
Skill::Debuff => None,
|
||||||
|
Skill::Stun => Some(1),
|
||||||
|
|
||||||
|
Skill::Strike=> None,
|
||||||
|
Skill::StrikePlus => None,
|
||||||
|
Skill::StrikePlusPlus => None,
|
||||||
|
|
||||||
|
Skill::Counter|
|
||||||
|
Skill::CounterPlus |
|
||||||
|
Skill::CounterPlusPlus => None, // avoid all damage
|
||||||
|
|
||||||
|
Skill::Restrict |
|
||||||
|
Skill::RestrictPlus |
|
||||||
|
Skill::RestrictPlusPlus => Some(1),
|
||||||
|
|
||||||
|
Skill::Bash |
|
||||||
|
Skill::BashPlus |
|
||||||
|
Skill::BashPlusPlus => Some(1),
|
||||||
|
|
||||||
|
Skill::Heal=> None,
|
||||||
|
Skill::HealPlus => None,
|
||||||
|
Skill::HealPlusPlus => None,
|
||||||
|
|
||||||
|
Skill::Triage=> None, // hot
|
||||||
|
Skill::TriagePlus => None, // hot
|
||||||
|
Skill::TriagePlusPlus => None, // hot
|
||||||
|
|
||||||
|
Skill::Break | // no damage stun, adds vulnerable
|
||||||
|
Skill::BreakPlus |
|
||||||
|
Skill::BreakPlusPlus => Some(1),
|
||||||
|
|
||||||
|
Skill::Blast |
|
||||||
|
Skill::BlastPlus |
|
||||||
|
Skill::BlastPlusPlus => None,
|
||||||
|
|
||||||
|
Skill::Chaos |
|
||||||
|
Skill::ChaosPlus |
|
||||||
|
Skill::ChaosPlusPlus => None,
|
||||||
|
|
||||||
|
Skill::Amplify |
|
||||||
|
Skill::AmplifyPlus |
|
||||||
|
Skill::AmplifyPlusPlus => Some(1),
|
||||||
|
|
||||||
|
Skill::Hybrid |
|
||||||
|
Skill::HybridPlus |
|
||||||
|
Skill::HybridPlusPlus => Some(1),
|
||||||
|
|
||||||
|
Skill::Invert |
|
||||||
|
Skill::InvertPlus |
|
||||||
|
Skill::InvertPlusPlus => Some(2),
|
||||||
|
|
||||||
|
Skill::Decay => None, // dot
|
||||||
|
Skill::DecayPlus => None,
|
||||||
|
Skill::DecayPlusPlus => None,
|
||||||
|
|
||||||
|
Skill::Siphon|
|
||||||
|
Skill::SiphonPlus |
|
||||||
|
Skill::SiphonPlusPlus => None,
|
||||||
|
|
||||||
|
Skill::Curse |
|
||||||
|
Skill::CursePlus |
|
||||||
|
Skill::CursePlusPlus => Some(1),
|
||||||
|
|
||||||
|
Skill::Link |
|
||||||
|
Skill::LinkPlus |
|
||||||
|
Skill::LinkPlusPlus => Some(1),
|
||||||
|
|
||||||
|
Skill::Silence |
|
||||||
|
Skill::SilencePlus |
|
||||||
|
Skill::SilencePlusPlus => Some(1),
|
||||||
|
|
||||||
|
Skill::Purify |
|
||||||
|
Skill::PurifyPlus |
|
||||||
|
Skill::PurifyPlusPlus => None,
|
||||||
|
|
||||||
|
Skill::Purge |
|
||||||
|
Skill::PurgePlus |
|
||||||
|
Skill::PurgePlusPlus => Some(1),
|
||||||
|
|
||||||
|
Skill::Banish |
|
||||||
|
Skill::BanishPlus |
|
||||||
|
Skill::BanishPlusPlus => Some(1),
|
||||||
|
|
||||||
|
Skill::Haste |
|
||||||
|
Skill::HastePlus |
|
||||||
|
Skill::HastePlusPlus => Some(1),
|
||||||
|
|
||||||
|
Skill::Reflect |
|
||||||
|
Skill::ReflectPlus |
|
||||||
|
Skill::ReflectPlusPlus => None,
|
||||||
|
|
||||||
|
Skill::Recharge |
|
||||||
|
Skill::RechargePlus |
|
||||||
|
Skill::RechargePlusPlus => None,
|
||||||
|
|
||||||
|
Skill::Ruin |
|
||||||
|
Skill::RuinPlus |
|
||||||
|
Skill::RuinPlusPlus => Some(2),
|
||||||
|
|
||||||
|
Skill::Slay=> None,
|
||||||
|
Skill::SlayPlus => None,
|
||||||
|
Skill::SlayPlusPlus => None,
|
||||||
|
|
||||||
|
Skill::Sleep |
|
||||||
|
Skill::SleepPlus |
|
||||||
|
Skill::SleepPlusPlus => Some(1),
|
||||||
|
|
||||||
|
Skill::Sustain |
|
||||||
|
Skill::SustainPlus |
|
||||||
|
Skill::SustainPlusPlus => Some(1),
|
||||||
|
|
||||||
Skill::Intercept => Some(1),
|
Skill::Intercept => Some(1),
|
||||||
Skill::InterceptPlus => Some(1),
|
Skill::InterceptPlus => Some(1),
|
||||||
Skill::InterceptPlusPlus => Some(1),
|
Skill::InterceptPlusPlus => Some(1),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user