add skill delays
This commit is contained in:
parent
9c5b7d0c89
commit
5b45d9b5e4
@ -52,7 +52,7 @@ impl ConstructSkill {
|
||||
pub fn new(skill: Skill) -> ConstructSkill {
|
||||
ConstructSkill {
|
||||
skill,
|
||||
cd: skill.base_cd(),
|
||||
cd: skill.delay(),
|
||||
disabled: false,
|
||||
}
|
||||
}
|
||||
@ -443,12 +443,12 @@ impl Construct {
|
||||
|
||||
self.skills
|
||||
.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) {
|
||||
0 => s.set_cooldown(None),
|
||||
_ => s.set_cooldown(Some(cd.saturating_sub(delay_reduction)))
|
||||
},
|
||||
None => ()
|
||||
None => s.set_cooldown(None)
|
||||
});
|
||||
}
|
||||
|
||||
@ -1241,7 +1241,7 @@ mod tests {
|
||||
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
|
||||
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());
|
||||
|
||||
game.add_skill(x_player.id, x_construct.id, y_construct.id, Skill::Attack).unwrap();
|
||||
|
||||
@ -522,6 +522,155 @@ impl Skill {
|
||||
Skill::SustainPlus |
|
||||
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::InterceptPlus => Some(1),
|
||||
Skill::InterceptPlusPlus => Some(1),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user