This commit is contained in:
ntr 2019-12-11 14:52:25 +10:00
parent 18784e59ce
commit c1655c9496
2 changed files with 26 additions and 0 deletions

View File

@ -360,6 +360,25 @@ impl Construct {
None
}
pub fn immune(&self, skill: Skill) -> Option<Immunity> {
// also checked in resolve stage so shouldn't happen really
if self.is_ko() {
return Some(vec![Effect::Ko]);
}
let immunities = self.effects.iter()
.filter(|e| e.effect.immune(skill))
.map(|e| e.effect)
.collect::<Vec<Effect>>();
if immunities.len() > 0 {
return Some(immunities);
}
None
}
pub fn is_stunned(&self) -> bool {
self.available_skills().len() == 0
}

View File

@ -72,6 +72,7 @@ impl Effect {
pub fn immune(&self, skill: Skill) -> bool {
match self {
Effect::Banish => true,
Effect::Sustain => [
Skill::Stun,
Skill::Silence,
@ -84,6 +85,12 @@ impl Effect {
Skill::RestrictPlus,
Skill::RestrictPlusPlus
].contains(&skill),
Effect::Siphoned => [
Skill::SiphonTick,
Skill::SiphonTickPlus,
Skill::SiphonTickPlusPlus,
].contains(&skill),
_ => false,
}
}