hatred -> absorb, clutch -> sustain
This commit is contained in:
@@ -511,7 +511,7 @@ impl Construct {
|
||||
|
||||
fn reduce_green_life(&mut self, amount: u64) {
|
||||
self.green_life.reduce(amount);
|
||||
if self.affected(Effect::Clutch) && self.green_life() == 0 {
|
||||
if self.affected(Effect::Sustain) && self.green_life() == 0 {
|
||||
self.green_life.value = 1;
|
||||
}
|
||||
}
|
||||
|
||||
+12
-12
@@ -10,7 +10,7 @@ pub enum Effect {
|
||||
Banish,
|
||||
Block,
|
||||
Buff,
|
||||
Clutch,
|
||||
Sustain,
|
||||
Curse,
|
||||
Haste,
|
||||
Hex,
|
||||
@@ -32,10 +32,10 @@ pub enum Effect {
|
||||
Electric,
|
||||
Electrocute,
|
||||
|
||||
// hostility is the buff
|
||||
// hatred is the increased damage
|
||||
Hostility,
|
||||
Hatred,
|
||||
// absorbtion is the buff
|
||||
// absorb is the increased damage
|
||||
Absorbtion,
|
||||
Absorb,
|
||||
|
||||
// magic immunity
|
||||
Scatter,
|
||||
@@ -72,7 +72,7 @@ impl Effect {
|
||||
_ => skill.colours().contains(&Colour::Red)
|
||||
},
|
||||
Effect::Banish => true,
|
||||
Effect::Clutch => [
|
||||
Effect::Sustain => [
|
||||
Skill::Stun,
|
||||
Skill::HexI,
|
||||
Skill::HexII,
|
||||
@@ -114,7 +114,7 @@ impl Effect {
|
||||
Effect::Block => vec![Stat::RedDamageTaken],
|
||||
Effect::Buff => vec![Stat::RedPower, Stat::Speed],
|
||||
|
||||
Effect::Hatred => vec![Stat::RedPower, Stat::BluePower],
|
||||
Effect::Absorb => vec![Stat::RedPower, Stat::BluePower],
|
||||
|
||||
Effect::Amplify => vec![Stat::RedPower, Stat::BluePower],
|
||||
Effect::Curse => vec![Stat::BlueDamageTaken],
|
||||
@@ -148,9 +148,9 @@ impl Effect {
|
||||
|
||||
Effect::Scatter => value >> 1,
|
||||
|
||||
Effect::Hatred => value + match meta {
|
||||
Effect::Absorb => value + match meta {
|
||||
Some(EffectMeta::AddedDamage(d)) => d,
|
||||
_ => panic!("hatred meta not damage"),
|
||||
_ => panic!("absorb meta not damage"),
|
||||
},
|
||||
|
||||
_ => {
|
||||
@@ -169,7 +169,7 @@ impl Effect {
|
||||
Effect::Counter => Some(Colour::Green),
|
||||
Effect::Vulnerable => Some(Colour::Red),
|
||||
Effect::Restrict => Some(Colour::Red),
|
||||
Effect::Clutch => Some(Colour::Green),
|
||||
Effect::Sustain => Some(Colour::Green),
|
||||
Effect::Intercept => Some(Colour::Green),
|
||||
|
||||
// magic
|
||||
@@ -180,7 +180,7 @@ impl Effect {
|
||||
|
||||
Effect::Slow => Some(Colour::Blue),
|
||||
Effect::Haste => Some(Colour::Green),
|
||||
Effect::Hatred => Some(Colour::Green),
|
||||
Effect::Absorb => Some(Colour::Green),
|
||||
Effect::Reflect => Some(Colour::Green),
|
||||
Effect::Amplify => Some(Colour::Green),
|
||||
Effect::Silence => Some(Colour::Blue),
|
||||
@@ -190,7 +190,7 @@ impl Effect {
|
||||
Effect::Electric => Some(Colour::Green),
|
||||
Effect::Electrocute => Some(Colour::Blue),
|
||||
|
||||
Effect::Hostility => Some(Colour::Green),
|
||||
Effect::Absorbtion => Some(Colour::Green),
|
||||
|
||||
// magic
|
||||
Effect::Hybrid => Some(Colour::Green),
|
||||
|
||||
+6
-6
@@ -1188,7 +1188,7 @@ mod tests {
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// fn hatred_test() {
|
||||
// fn absorb_test() {
|
||||
// let mut game = create_test_game();
|
||||
|
||||
// let x_player = game.players[0].clone();
|
||||
@@ -1197,18 +1197,18 @@ mod tests {
|
||||
// let x_construct = x_player.constructs[0].clone();
|
||||
// let y_construct = y_player.constructs[0].clone();
|
||||
|
||||
// game.construct_by_id(x_construct.id).unwrap().learn_mut(Skill::Hostility);
|
||||
// game.construct_by_id(x_construct.id).unwrap().learn_mut(Skill::Absorbtion);
|
||||
|
||||
// while game.construct_by_id(x_construct.id).unwrap().skill_on_cd(Skill::Hostility).is_some() {
|
||||
// while game.construct_by_id(x_construct.id).unwrap().skill_on_cd(Skill::Absorbtion).is_some() {
|
||||
// game.construct_by_id(x_construct.id).unwrap().reduce_cooldowns();
|
||||
// }
|
||||
|
||||
// // apply buff
|
||||
// game.add_skill(x_player.id, x_construct.id, Some(x_construct.id), Skill::Hostility).unwrap();
|
||||
// game.add_skill(x_player.id, x_construct.id, Some(x_construct.id), Skill::Absorbtion).unwrap();
|
||||
// game.player_ready(x_player.id).unwrap();
|
||||
// game.player_ready(y_player.id).unwrap();
|
||||
// game = game.resolve_phase_start();
|
||||
// assert!(game.construct_by_id(x_construct.id).unwrap().affected(Effect::Hostility));
|
||||
// assert!(game.construct_by_id(x_construct.id).unwrap().affected(Effect::Absorbtion));
|
||||
|
||||
// // attack and receive debuff
|
||||
// game.add_skill(y_player.id, y_construct.id, Some(x_construct.id), Skill::TestAttack).unwrap();
|
||||
@@ -1217,7 +1217,7 @@ mod tests {
|
||||
// game = game.resolve_phase_start();
|
||||
|
||||
// info!("{:#?}", game);
|
||||
// assert!(game.construct_by_id(y_construct.id).unwrap().affected(Effect::Hatred));
|
||||
// assert!(game.construct_by_id(y_construct.id).unwrap().affected(Effect::Absorb));
|
||||
// }
|
||||
|
||||
#[test]
|
||||
|
||||
+38
-38
@@ -100,9 +100,9 @@ pub enum Item {
|
||||
ChaosI,
|
||||
ChaosII,
|
||||
ChaosIII,
|
||||
ClutchI,
|
||||
ClutchII,
|
||||
ClutchIII,
|
||||
SustainI,
|
||||
SustainII,
|
||||
SustainIII,
|
||||
ElectrifyI,
|
||||
ElectrifyII,
|
||||
ElectrifyIII,
|
||||
@@ -112,9 +112,9 @@ pub enum Item {
|
||||
DecayI,
|
||||
DecayII,
|
||||
DecayIII,
|
||||
HostilityI,
|
||||
HostilityII,
|
||||
HostilityIII,
|
||||
AbsorbtionI,
|
||||
AbsorbtionII,
|
||||
AbsorbtionIII,
|
||||
HasteI,
|
||||
HasteII,
|
||||
HasteIII,
|
||||
@@ -326,9 +326,9 @@ impl Item {
|
||||
Item::HexI => Some(Skill::HexI),
|
||||
Item::HexII => Some(Skill::HexII),
|
||||
Item::HexIII => Some(Skill::HexIII),
|
||||
Item::HostilityI => Some(Skill::HostilityI),
|
||||
Item::HostilityII => Some(Skill::HostilityII),
|
||||
Item::HostilityIII=> Some(Skill::HostilityIII),
|
||||
Item::AbsorbtionI => Some(Skill::AbsorbtionI),
|
||||
Item::AbsorbtionII => Some(Skill::AbsorbtionII),
|
||||
Item::AbsorbtionIII=> Some(Skill::AbsorbtionIII),
|
||||
Item::HybridI => Some(Skill::HybridI),
|
||||
Item::HybridII => Some(Skill::HybridII),
|
||||
Item::HybridIII => Some(Skill::HybridIII),
|
||||
@@ -378,9 +378,9 @@ impl Item {
|
||||
Item::StrikeI => Some(Skill::StrikeI),
|
||||
Item::StrikeII => Some(Skill::StrikeII),
|
||||
Item::StrikeIII => Some(Skill::StrikeIII),
|
||||
Item::ClutchI => Some(Skill::ClutchI),
|
||||
Item::ClutchII => Some(Skill::ClutchII),
|
||||
Item::ClutchIII => Some(Skill::ClutchIII),
|
||||
Item::SustainI => Some(Skill::SustainI),
|
||||
Item::SustainII => Some(Skill::SustainII),
|
||||
Item::SustainIII => Some(Skill::SustainIII),
|
||||
Item::InterceptI => Some(Skill::InterceptI),
|
||||
Item::InterceptII => Some(Skill::InterceptII),
|
||||
Item::InterceptIII => Some(Skill::InterceptIII),
|
||||
@@ -595,9 +595,9 @@ impl Item {
|
||||
"Hits twice for red and blue damage. Damage {:?}% red and blue power. Randomly deals 0 to 30% more damage",
|
||||
self.into_skill().unwrap().multiplier()),
|
||||
|
||||
Item::ClutchI |
|
||||
Item::ClutchII |
|
||||
Item::ClutchIII => format!("Construct cannot be KO'd while active. Additionally provides immunity to disables. \
|
||||
Item::SustainI |
|
||||
Item::SustainII |
|
||||
Item::SustainIII => format!("Construct cannot be KO'd while active. Additionally provides immunity to disables. \
|
||||
Lasts {:?}T",
|
||||
self.into_skill().unwrap().effect()[0].get_duration()),
|
||||
|
||||
@@ -626,12 +626,12 @@ impl Item {
|
||||
self.into_skill().unwrap().effect()[1].get_skill().unwrap().multiplier(),
|
||||
self.into_skill().unwrap().effect()[1].get_duration()),
|
||||
|
||||
Item::HostilityI |
|
||||
Item::HostilityII |
|
||||
Item::HostilityIII => format!(
|
||||
"Gain Hostility for {:?}T. {} Hatred lasts {:?}T",
|
||||
Item::AbsorbtionI |
|
||||
Item::AbsorbtionII |
|
||||
Item::AbsorbtionIII => format!(
|
||||
"Gain Absorbtion for {:?}T. {} Absorb lasts {:?}T",
|
||||
self.into_skill().unwrap().effect()[0].get_duration(),
|
||||
"When attacked by Hostility you gain Hatred which increased red and blue power based on Damage taken.",
|
||||
"When attacked by Absorbtion you gain Absorb which increased red and blue power based on Damage taken.",
|
||||
self.into_skill().unwrap().effect()[0].get_skill().unwrap().effect()[0].get_duration()),
|
||||
|
||||
Item::HasteI |
|
||||
@@ -834,9 +834,9 @@ impl Item {
|
||||
Item::ElectrifyI => vec![Item::Block, Item::Blue, Item::Blue],
|
||||
Item::ElectrifyII => vec![Item::ElectrifyI, Item::ElectrifyI, Item::ElectrifyI],
|
||||
Item::ElectrifyIII => vec![Item::ElectrifyII, Item::ElectrifyII, Item::ElectrifyII],
|
||||
Item::ClutchI => vec![Item::Block, Item::Red, Item::Green],
|
||||
Item::ClutchII => vec![Item::ClutchI, Item::ClutchI, Item::ClutchI],
|
||||
Item::ClutchIII => vec![Item::ClutchII, Item::ClutchII, Item::ClutchII],
|
||||
Item::SustainI => vec![Item::Block, Item::Red, Item::Green],
|
||||
Item::SustainII => vec![Item::SustainI, Item::SustainI, Item::SustainI],
|
||||
Item::SustainIII => vec![Item::SustainII, Item::SustainII, Item::SustainII],
|
||||
Item::ReflectI => vec![Item::Block, Item::Green, Item::Blue],
|
||||
Item::ReflectII => vec![Item::ReflectI, Item::ReflectI, Item::ReflectI],
|
||||
Item::ReflectIII => vec![Item::ReflectII, Item::ReflectII, Item::ReflectII],
|
||||
@@ -969,9 +969,9 @@ impl From<Skill> for Item {
|
||||
Skill::ElectrifyI => Item::ElectrifyI,
|
||||
Skill::ElectrifyII => Item::ElectrifyII,
|
||||
Skill::ElectrifyIII => Item::ElectrifyIII,
|
||||
Skill::ClutchI => Item::ClutchI,
|
||||
Skill::ClutchII => Item::ClutchII,
|
||||
Skill::ClutchIII => Item::ClutchIII,
|
||||
Skill::SustainI => Item::SustainI,
|
||||
Skill::SustainII => Item::SustainII,
|
||||
Skill::SustainIII => Item::SustainIII,
|
||||
Skill::CurseI => Item::CurseI,
|
||||
Skill::CurseII => Item::CurseII,
|
||||
Skill::CurseIII => Item::CurseIII,
|
||||
@@ -982,9 +982,9 @@ impl From<Skill> for Item {
|
||||
Skill::HasteI => Item::HasteI,
|
||||
Skill::HasteII => Item::HasteII,
|
||||
Skill::HasteIII => Item::HasteIII,
|
||||
Skill::HostilityI => Item::HostilityI,
|
||||
Skill::HostilityII => Item::HostilityII,
|
||||
Skill::HostilityIII => Item::HostilityIII,
|
||||
Skill::AbsorbtionI => Item::AbsorbtionI,
|
||||
Skill::AbsorbtionII => Item::AbsorbtionII,
|
||||
Skill::AbsorbtionIII => Item::AbsorbtionIII,
|
||||
Skill::HealI => Item::HealI,
|
||||
Skill::HealII => Item::HealII,
|
||||
Skill::HealIII => Item::HealIII,
|
||||
@@ -1060,9 +1060,9 @@ impl From<Skill> for Item {
|
||||
Skill::DecayTickI => Item::DecayI,
|
||||
Skill::DecayTickII => Item::DecayII,
|
||||
Skill::DecayTickIII => Item::DecayIII,
|
||||
Skill::HatredI => Item::HostilityI,
|
||||
Skill::HatredII => Item::HostilityII,
|
||||
Skill::HatredIII => Item::HostilityIII,
|
||||
Skill::AbsorbI => Item::AbsorbtionI,
|
||||
Skill::AbsorbII => Item::AbsorbtionII,
|
||||
Skill::AbsorbIII => Item::AbsorbtionIII,
|
||||
Skill::HasteStrike => Item::HasteI,
|
||||
Skill::HybridBlast => Item::HybridI,
|
||||
Skill::CounterAttackI => Item::CounterI,
|
||||
@@ -1172,9 +1172,9 @@ pub fn get_combos() -> Vec<Combo> {
|
||||
Combo { components: Item::HasteI.combo(), item: Item::HasteI },
|
||||
Combo { components: Item::HasteII.combo(), item: Item::HasteII },
|
||||
Combo { components: Item::HasteIII.combo(), item: Item::HasteIII },
|
||||
Combo { components: Item::HostilityI.combo(), item: Item::HostilityI },
|
||||
Combo { components: Item::HostilityII.combo(), item: Item::HostilityII },
|
||||
Combo { components: Item::HostilityIII.combo(), item: Item::HostilityIII },
|
||||
Combo { components: Item::AbsorbtionI.combo(), item: Item::AbsorbtionI },
|
||||
Combo { components: Item::AbsorbtionII.combo(), item: Item::AbsorbtionII },
|
||||
Combo { components: Item::AbsorbtionIII.combo(), item: Item::AbsorbtionIII },
|
||||
Combo { components: Item::HybridI.combo(), item: Item::HybridI },
|
||||
Combo { components: Item::HybridII.combo(), item: Item::HybridII },
|
||||
Combo { components: Item::HybridIII.combo(), item: Item::HybridIII },
|
||||
@@ -1216,9 +1216,9 @@ pub fn get_combos() -> Vec<Combo> {
|
||||
Combo { components: Item::ElectrifyII.combo(), item: Item::ElectrifyII },
|
||||
Combo { components: Item::ElectrifyIII.combo(), item: Item::ElectrifyIII },
|
||||
|
||||
Combo { components: Item::ClutchI.combo(), item: Item::ClutchI },
|
||||
Combo { components: Item::ClutchII.combo(), item: Item::ClutchII },
|
||||
Combo { components: Item::ClutchIII.combo(), item: Item::ClutchIII },
|
||||
Combo { components: Item::SustainI.combo(), item: Item::SustainI },
|
||||
Combo { components: Item::SustainII.combo(), item: Item::SustainII },
|
||||
Combo { components: Item::SustainIII.combo(), item: Item::SustainIII },
|
||||
Combo { components: Item::ReflectI.combo(), item: Item::ReflectI },
|
||||
Combo { components: Item::ReflectII.combo(), item: Item::ReflectII },
|
||||
Combo { components: Item::ReflectIII.combo(), item: Item::ReflectIII },
|
||||
|
||||
+61
-61
@@ -142,9 +142,9 @@ pub fn resolve(skill: Skill, source: &mut Construct, target: &mut Construct, mut
|
||||
Skill::ChaosII |
|
||||
Skill::ChaosIII => chaos(source, target, resolutions, skill),
|
||||
|
||||
Skill::ClutchI |
|
||||
Skill::ClutchII |
|
||||
Skill::ClutchIII => clutch(source, target, resolutions, skill),
|
||||
Skill::SustainI |
|
||||
Skill::SustainII |
|
||||
Skill::SustainIII => sustain(source, target, resolutions, skill),
|
||||
|
||||
Skill::ElectrifyI |
|
||||
Skill::ElectrifyII |
|
||||
@@ -176,9 +176,9 @@ pub fn resolve(skill: Skill, source: &mut Construct, target: &mut Construct, mut
|
||||
Skill::HexII |
|
||||
Skill::HexIII => hex(source, target, resolutions, skill),
|
||||
|
||||
Skill::HostilityI |
|
||||
Skill::HostilityII |
|
||||
Skill::HostilityIII => hostility(source, target, resolutions, skill),
|
||||
Skill::AbsorbtionI |
|
||||
Skill::AbsorbtionII |
|
||||
Skill::AbsorbtionIII => absorbtion(source, target, resolutions, skill),
|
||||
|
||||
Skill::HybridI |
|
||||
Skill::HybridII |
|
||||
@@ -271,9 +271,9 @@ pub fn resolve(skill: Skill, source: &mut Construct, target: &mut Construct, mut
|
||||
Skill::ElectrocuteII |
|
||||
Skill::ElectrocuteIII => panic!("should only trigger from electrify hit"),
|
||||
Skill::HasteStrike => panic!("should only trigger from haste"),
|
||||
Skill::HatredI |
|
||||
Skill::HatredII |
|
||||
Skill::HatredIII => panic!("should only trigger from hatred"),
|
||||
Skill::AbsorbI |
|
||||
Skill::AbsorbII |
|
||||
Skill::AbsorbIII => panic!("should only trigger from absorb"),
|
||||
Skill::HybridBlast => panic!("should only trigger from hybrid"),
|
||||
Skill::CounterAttackI |
|
||||
Skill::CounterAttackII |
|
||||
@@ -304,14 +304,14 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) ->
|
||||
};
|
||||
}
|
||||
|
||||
if target.affected(Effect::Hostility) {
|
||||
if target.affected(Effect::Absorbtion) {
|
||||
let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter()
|
||||
.find(|e| e.effect == Effect::Hostility).unwrap().clone();
|
||||
.find(|e| e.effect == Effect::Absorbtion).unwrap().clone();
|
||||
match meta {
|
||||
Some(EffectMeta::Skill(s)) => {
|
||||
resolutions = hatred(&mut target, &mut source, resolutions, skill, amount, s);
|
||||
resolutions = absorb(&mut target, &mut source, resolutions, skill, amount, s);
|
||||
},
|
||||
_ => panic!("no hatred skill"),
|
||||
_ => panic!("no absorb skill"),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -506,9 +506,9 @@ pub enum Skill {
|
||||
ChaosII,
|
||||
ChaosIII,
|
||||
|
||||
ClutchI,
|
||||
ClutchII,
|
||||
ClutchIII,
|
||||
SustainI,
|
||||
SustainII,
|
||||
SustainIII,
|
||||
|
||||
ElectrifyI,
|
||||
ElectrifyII,
|
||||
@@ -544,12 +544,12 @@ pub enum Skill {
|
||||
HexII,
|
||||
HexIII,
|
||||
|
||||
HatredI,
|
||||
HatredII,
|
||||
HatredIII,
|
||||
HostilityI,
|
||||
HostilityII,
|
||||
HostilityIII,
|
||||
AbsorbI,
|
||||
AbsorbII,
|
||||
AbsorbIII,
|
||||
AbsorbtionI,
|
||||
AbsorbtionII,
|
||||
AbsorbtionIII,
|
||||
HybridBlast,
|
||||
|
||||
HybridI,
|
||||
@@ -756,9 +756,9 @@ impl Skill {
|
||||
Skill::ElectrocuteIII => vec![ConstructEffect {effect: Effect::Electrocute, duration: 5,
|
||||
meta: Some(EffectMeta::Skill(Skill::ElectrocuteTickIII)), tick: None}],
|
||||
|
||||
Skill::ClutchI => vec![ConstructEffect {effect: Effect::Clutch, duration: 1, meta: None, tick: None }],
|
||||
Skill::ClutchII => vec![ConstructEffect {effect: Effect::Clutch, duration: 2, meta: None, tick: None }],
|
||||
Skill::ClutchIII => vec![ConstructEffect {effect: Effect::Clutch, duration: 3, meta: None, tick: None }],
|
||||
Skill::SustainI => vec![ConstructEffect {effect: Effect::Sustain, duration: 1, meta: None, tick: None }],
|
||||
Skill::SustainII => vec![ConstructEffect {effect: Effect::Sustain, duration: 2, meta: None, tick: None }],
|
||||
Skill::SustainIII => vec![ConstructEffect {effect: Effect::Sustain, duration: 3, meta: None, tick: None }],
|
||||
|
||||
Skill::CurseI => vec![ConstructEffect {effect: Effect::Curse, duration: 2,
|
||||
meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
||||
@@ -790,16 +790,16 @@ impl Skill {
|
||||
Skill::HexII => vec![ConstructEffect {effect: Effect::Hex, duration: 3, meta: None, tick: None}],
|
||||
Skill::HexIII => vec![ConstructEffect {effect: Effect::Hex, duration: 4, meta: None, tick: None}],
|
||||
|
||||
Skill::HostilityI => vec![ConstructEffect {effect: Effect::Hostility, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::HatredI)), tick: None}],
|
||||
Skill::HostilityII => vec![ConstructEffect {effect: Effect::Hostility, duration: 3,
|
||||
meta: Some(EffectMeta::Skill(Skill::HatredII)), tick: None}],
|
||||
Skill::HostilityIII => vec![ConstructEffect {effect: Effect::Hostility, duration: 4,
|
||||
meta: Some(EffectMeta::Skill(Skill::HatredIII)), tick: None}],
|
||||
Skill::AbsorbtionI => vec![ConstructEffect {effect: Effect::Absorbtion, duration: 2,
|
||||
meta: Some(EffectMeta::Skill(Skill::AbsorbI)), tick: None}],
|
||||
Skill::AbsorbtionII => vec![ConstructEffect {effect: Effect::Absorbtion, duration: 3,
|
||||
meta: Some(EffectMeta::Skill(Skill::AbsorbII)), tick: None}],
|
||||
Skill::AbsorbtionIII => vec![ConstructEffect {effect: Effect::Absorbtion, duration: 4,
|
||||
meta: Some(EffectMeta::Skill(Skill::AbsorbIII)), tick: None}],
|
||||
|
||||
Skill::HatredI => vec![ConstructEffect {effect: Effect::Hatred, duration: 5, meta: None, tick: None}],
|
||||
Skill::HatredII => vec![ConstructEffect {effect: Effect::Hatred, duration: 7, meta: None, tick: None}],
|
||||
Skill::HatredIII => vec![ConstructEffect {effect: Effect::Hatred, duration: 9, meta: None, tick: None}],
|
||||
Skill::AbsorbI => vec![ConstructEffect {effect: Effect::Absorb, duration: 5, meta: None, tick: None}],
|
||||
Skill::AbsorbII => vec![ConstructEffect {effect: Effect::Absorb, duration: 7, meta: None, tick: None}],
|
||||
Skill::AbsorbIII => vec![ConstructEffect {effect: Effect::Absorb, duration: 9, meta: None, tick: None}],
|
||||
|
||||
Skill::HybridI => vec![ConstructEffect {effect: Effect::Hybrid, duration: 2,
|
||||
meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
||||
@@ -997,9 +997,9 @@ impl Skill {
|
||||
Skill::SleepII => Some(3),
|
||||
Skill::SleepIII => Some(3),
|
||||
|
||||
Skill::ClutchI => Some(1),
|
||||
Skill::ClutchII => Some(2),
|
||||
Skill::ClutchIII => Some(3),
|
||||
Skill::SustainI => Some(1),
|
||||
Skill::SustainII => Some(2),
|
||||
Skill::SustainIII => Some(3),
|
||||
|
||||
Skill::InterceptI => Some(2),
|
||||
Skill::InterceptII => Some(2),
|
||||
@@ -1010,9 +1010,9 @@ impl Skill {
|
||||
Skill::ElectrifyIII =>Some(1),
|
||||
|
||||
|
||||
Skill::HostilityI |
|
||||
Skill::HostilityII |
|
||||
Skill::HostilityIII => Some(1),
|
||||
Skill::AbsorbtionI |
|
||||
Skill::AbsorbtionII |
|
||||
Skill::AbsorbtionIII => Some(1),
|
||||
|
||||
//-----------
|
||||
// Never cast directly
|
||||
@@ -1026,9 +1026,9 @@ impl Skill {
|
||||
Skill::ElectrocuteI |
|
||||
Skill::ElectrocuteII |
|
||||
Skill::ElectrocuteIII |
|
||||
Skill::HatredI |
|
||||
Skill::HatredII |
|
||||
Skill::HatredIII |
|
||||
Skill::AbsorbI |
|
||||
Skill::AbsorbII |
|
||||
Skill::AbsorbIII |
|
||||
// Ticks
|
||||
Skill::ElectrocuteTickI |
|
||||
Skill::ElectrocuteTickII |
|
||||
@@ -1122,9 +1122,9 @@ impl Skill {
|
||||
pub fn self_targeting(&self) -> bool {
|
||||
match self {
|
||||
Skill::Block |
|
||||
Skill::ClutchI |
|
||||
Skill::ClutchII |
|
||||
Skill::ClutchIII |
|
||||
Skill::SustainI |
|
||||
Skill::SustainII |
|
||||
Skill::SustainIII |
|
||||
Skill::CounterI |
|
||||
Skill::CounterII |
|
||||
Skill::CounterIII => true,
|
||||
@@ -1141,9 +1141,9 @@ impl Skill {
|
||||
Skill::AmplifyII |
|
||||
Skill::AmplifyIII |
|
||||
Skill::Block |
|
||||
Skill::ClutchI |
|
||||
Skill::ClutchII |
|
||||
Skill::ClutchIII |
|
||||
Skill::SustainI |
|
||||
Skill::SustainII |
|
||||
Skill::SustainIII |
|
||||
Skill::ElectrifyI |
|
||||
Skill::ElectrifyII |
|
||||
Skill::ElectrifyIII |
|
||||
@@ -1153,9 +1153,9 @@ impl Skill {
|
||||
Skill::HealI |
|
||||
Skill::HealII |
|
||||
Skill::HealIII |
|
||||
Skill::HostilityI |
|
||||
Skill::HostilityII |
|
||||
Skill::HostilityIII |
|
||||
Skill::AbsorbtionI |
|
||||
Skill::AbsorbtionII |
|
||||
Skill::AbsorbtionIII |
|
||||
Skill::InvertI |
|
||||
Skill::InvertII |
|
||||
Skill::InvertIII |
|
||||
@@ -1281,7 +1281,7 @@ fn sleep(source: &mut Construct, target: &mut Construct, mut results: Resolution
|
||||
return results;
|
||||
}
|
||||
|
||||
fn clutch(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||
fn sustain(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||
skill.effect().into_iter()
|
||||
.for_each(|e| (results.push(Resolution::new(source, target).event(target.add_effect(skill, e)))));
|
||||
return results;
|
||||
@@ -1514,15 +1514,15 @@ fn hex(source: &mut Construct, target: &mut Construct, mut results: Resolutions,
|
||||
return results;;
|
||||
}
|
||||
|
||||
fn hostility(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||
fn absorbtion(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
|
||||
return results;;
|
||||
}
|
||||
|
||||
fn hatred(source: &mut Construct, target: &mut Construct, mut results: Resolutions, reflect_skill: Skill, amount: u64, skill: Skill) -> Resolutions {
|
||||
let hatred = skill.effect()[0].set_meta(EffectMeta::AddedDamage(amount));
|
||||
fn absorb(source: &mut Construct, target: &mut Construct, mut results: Resolutions, reflect_skill: Skill, amount: u64, skill: Skill) -> Resolutions {
|
||||
let absorb = skill.effect()[0].set_meta(EffectMeta::AddedDamage(amount));
|
||||
results.push(Resolution::new(source, target)
|
||||
.event(target.add_effect(reflect_skill, hatred))
|
||||
.event(target.add_effect(reflect_skill, absorb))
|
||||
.stages(LogStages::PostOnly));
|
||||
return results;;
|
||||
}
|
||||
@@ -1769,7 +1769,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn clutch_test() {
|
||||
fn sustain_test() {
|
||||
let mut x = Construct::new()
|
||||
.named(&"muji".to_string());
|
||||
|
||||
@@ -1778,13 +1778,13 @@ mod tests {
|
||||
|
||||
x.red_power.force(10000000000000); // multiplication of int max will cause overflow
|
||||
|
||||
clutch(&mut y.clone(), &mut y, vec![], Skill::ClutchI);
|
||||
assert!(y.affected(Effect::Clutch));
|
||||
sustain(&mut y.clone(), &mut y, vec![], Skill::SustainI);
|
||||
assert!(y.affected(Effect::Sustain));
|
||||
|
||||
let mut results = hex(&mut x, &mut y, vec![], Skill::HexI);
|
||||
let Resolution { source: _, target: _, event, stages: _ } = results.remove(0);
|
||||
match event {
|
||||
Event::Immunity { skill: _, immunity } => assert!(immunity.contains(&Effect::Clutch)),
|
||||
Event::Immunity { skill: _, immunity } => assert!(immunity.contains(&Effect::Sustain)),
|
||||
_ => panic!("not immune cluthc"),
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user