hostility

This commit is contained in:
Mashy 2019-05-27 16:58:09 +10:00
parent 0971c3a2e2
commit 7d0b66ca3d
2 changed files with 62 additions and 20 deletions

View File

@ -70,7 +70,9 @@ pub enum Item {
DecayI, DecayI,
DecayII, DecayII,
DecayIII, DecayIII,
Hostility, HostilityI,
HostilityII,
HostilityIII,
Haste, Haste,
HealI, HealI,
HealII, HealII,
@ -265,7 +267,9 @@ impl Item {
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::HostilityI => Some(Skill::HostilityI),
Item::HostilityII => Some(Skill::HostilityII),
Item::HostilityIII=> Some(Skill::HostilityIII),
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),
@ -477,7 +481,9 @@ impl Item {
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()),
Item::Hostility => format!( Item::HostilityI |
Item::HostilityII |
Item::HostilityIII => format!(
"Gain Hostility for {:?}T. {} Hatred lasts {:?}T", "Gain Hostility for {:?}T. {} Hatred lasts {:?}T",
self.into_skill().unwrap().effect().first().unwrap().get_duration(), self.into_skill().unwrap().effect().first().unwrap().get_duration(),
"When attacked by Hostility you gain Hatred which increased red and blue power based on Damage taken.", "When attacked by Hostility you gain Hatred which increased red and blue power based on Damage taken.",
@ -644,8 +650,10 @@ impl Item {
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],
@ -688,7 +696,6 @@ impl Item {
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::StrangleI => vec![Item::Stun, Item::Red, Item::Red], Item::StrangleI => vec![Item::Stun, Item::Red, Item::Red],
Item::StrangleII => vec![Item::StrangleI, Item::StrangleI, Item::StrangleI], Item::StrangleII => vec![Item::StrangleI, Item::StrangleI, Item::StrangleI],
Item::StrangleIII => vec![Item::StrangleII, Item::StrangleII, Item::StrangleII], Item::StrangleIII => vec![Item::StrangleII, Item::StrangleII, Item::StrangleII],
@ -782,7 +789,9 @@ impl From<Skill> for Item {
Skill::DecayIII => Item::DecayIII, 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::HostilityI => Item::HostilityI,
Skill::HostilityII => Item::HostilityII,
Skill::HostilityIII => Item::HostilityIII,
Skill::HealI => Item::HealI, Skill::HealI => Item::HealI,
Skill::HealII => Item::HealII, Skill::HealII => Item::HealII,
Skill::HealIII => Item::HealIII, Skill::HealIII => Item::HealIII,
@ -912,8 +921,9 @@ pub fn get_combos() -> Vec<Combo> {
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::Hostility.combo(), item: Item::Hostility }, 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::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 },

View File

@ -161,7 +161,9 @@ pub fn resolve(skill: Skill, source: &mut Construct, target: &mut Construct, mut
Skill::HexII | Skill::HexII |
Skill::HexIII => hex(source, target, resolutions, skill), Skill::HexIII => hex(source, target, resolutions, skill),
Skill::Hostility => hostility(source, target, resolutions, skill), Skill::HostilityI |
Skill::HostilityII |
Skill::HostilityIII => hostility(source, target, resolutions, skill),
Skill::Impurity => impurity(source, target, resolutions, skill), Skill::Impurity => impurity(source, target, resolutions, skill),
Skill::InvertI | Skill::InvertI |
@ -256,8 +258,11 @@ pub fn resolve(skill: Skill, source: &mut Construct, target: &mut Construct, mut
//Triggered //Triggered
Skill::CorruptionI | Skill::CorruptionI |
Skill::CorruptionII | Skill::CorruptionII |
Skill::CorruptionIII => panic!("should only trigget from corrupt hit"), Skill::CorruptionIII => panic!("should only trigger from corrupt hit"),
Skill::HasteStrike => panic!("should only trigger from haste"), Skill::HasteStrike => panic!("should only trigger from haste"),
Skill::HatredI |
Skill::HatredII |
Skill::HatredIII => panic!("should only trigger from hatred"),
Skill::ImpureBlast => panic!("should only trigger from impurity"), Skill::ImpureBlast => panic!("should only trigger from impurity"),
Skill::RiposteI | Skill::RiposteI |
Skill::RiposteII | Skill::RiposteII |
@ -300,7 +305,14 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) ->
} }
if target.affected(Effect::Hostility) { if target.affected(Effect::Hostility) {
resolutions = hatred(&mut source, &mut target, resolutions, skill, amount, Skill::Hostility); let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter()
.find(|e| e.effect == Effect::Hostility).unwrap().clone();
match meta {
Some(EffectMeta::Skill(s)) => {
resolutions = hatred(&mut target, &mut source, resolutions, skill, amount, s);
},
_ => panic!("no hatred skill"),
};
} }
// beware that scatter doesn't cause any damage // beware that scatter doesn't cause any damage
@ -727,7 +739,12 @@ pub enum Skill {
HexII, HexII,
HexIII, HexIII,
Hostility, HatredI,
HatredII,
HatredIII,
HostilityI,
HostilityII,
HostilityIII,
ImpureBlast, ImpureBlast,
Impurity, Impurity,
Injure, Injure,
@ -977,8 +994,16 @@ impl Skill {
Skill::HexII => vec![ConstructEffect {effect: Effect::Hex, duration: 3, meta: None, tick: None}], 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::HexIII => vec![ConstructEffect {effect: Effect::Hex, duration: 4, meta: None, tick: None}],
Skill::Hostility => vec![ConstructEffect {effect: Effect::Hostility, duration: 2, meta: None, tick: None}, Skill::HostilityI => vec![ConstructEffect {effect: Effect::Hostility, duration: 2,
ConstructEffect {effect: Effect::Hatred, duration: 5, meta: None, tick: None}], 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::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::Impurity => vec![ConstructEffect {effect: Effect::Impurity, duration: 3, Skill::Impurity => vec![ConstructEffect {effect: Effect::Impurity, duration: 3,
meta: Some(EffectMeta::Multiplier(150)), tick: None }], meta: Some(EffectMeta::Multiplier(150)), tick: None }],
@ -991,7 +1016,7 @@ impl Skill {
meta: Some(EffectMeta::Skill(Skill::RiposteI)), tick: None}], meta: Some(EffectMeta::Skill(Skill::RiposteI)), tick: None}],
Skill::ParryII => vec![ConstructEffect {effect: Effect::Parry, duration: 2, Skill::ParryII => vec![ConstructEffect {effect: Effect::Parry, duration: 2,
meta: Some(EffectMeta::Skill(Skill::RiposteII)), tick: None}], meta: Some(EffectMeta::Skill(Skill::RiposteII)), tick: None}],
Skill::ParryIII => vec![ConstructEffect {effect: Effect::Parry, duration: 2, Skill::ParryIII => vec![ConstructEffect {effect: Effect::Parry, duration: 2,
meta: Some(EffectMeta::Skill(Skill::RiposteIII)), tick: None}], meta: Some(EffectMeta::Skill(Skill::RiposteIII)), tick: None}],
Skill::ReflectI => vec![ConstructEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }], Skill::ReflectI => vec![ConstructEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }],
@ -1017,11 +1042,11 @@ impl Skill {
Skill::SilenceII => vec![ConstructEffect {effect: Effect::Silence, duration: 3, meta: None, tick: None}], Skill::SilenceII => vec![ConstructEffect {effect: Effect::Silence, duration: 3, meta: None, tick: None}],
Skill::SilenceIII => vec![ConstructEffect {effect: Effect::Silence, duration: 4, meta: None, tick: None}], Skill::SilenceIII => vec![ConstructEffect {effect: Effect::Silence, duration: 4, meta: None, tick: None}],
Skill::SiphonI => vec![ConstructEffect {effect: Effect::Siphon, duration: 2, Skill::SiphonI => vec![ConstructEffect {effect: Effect::Siphon, duration: 2,
meta: Some(EffectMeta::Skill(Skill::SiphonTickI)), tick: None}], meta: Some(EffectMeta::Skill(Skill::SiphonTickI)), tick: None}],
Skill::SiphonII => vec![ConstructEffect {effect: Effect::Siphon, duration: 3, Skill::SiphonII => vec![ConstructEffect {effect: Effect::Siphon, duration: 3,
meta: Some(EffectMeta::Skill(Skill::SiphonTickII)), tick: None}], meta: Some(EffectMeta::Skill(Skill::SiphonTickII)), tick: None}],
Skill::SiphonIII => vec![ConstructEffect {effect: Effect::Siphon, duration: 4, Skill::SiphonIII => vec![ConstructEffect {effect: Effect::Siphon, duration: 4,
meta: Some(EffectMeta::Skill(Skill::SiphonTickIII)), tick: None}], meta: Some(EffectMeta::Skill(Skill::SiphonTickIII)), tick: None}],
Skill::SleepI => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], Skill::SleepI => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
@ -1180,7 +1205,9 @@ impl Skill {
Skill::CorruptIII =>Some(1), Skill::CorruptIII =>Some(1),
Skill::Hostility => Some(1), Skill::HostilityI |
Skill::HostilityII |
Skill::HostilityIII => Some(1),
//----------- //-----------
// Never cast directly // Never cast directly
@ -1194,6 +1221,9 @@ impl Skill {
Skill::CorruptionI | Skill::CorruptionI |
Skill::CorruptionII | Skill::CorruptionII |
Skill::CorruptionIII | Skill::CorruptionIII |
Skill::HatredI |
Skill::HatredII |
Skill::HatredIII |
// Ticks // Ticks
Skill::CorruptionTickI | Skill::CorruptionTickI |
Skill::CorruptionTickII | Skill::CorruptionTickII |
@ -1349,7 +1379,9 @@ impl Skill {
Skill::HealI | Skill::HealI |
Skill::HealII | Skill::HealII |
Skill::HealIII | Skill::HealIII |
Skill::Hostility | Skill::HostilityI |
Skill::HostilityII |
Skill::HostilityIII |
Skill::InvertI | Skill::InvertI |
Skill::InvertII | Skill::InvertII |
Skill::InvertIII | Skill::InvertIII |
@ -1728,7 +1760,7 @@ fn hostility(source: &mut Construct, target: &mut Construct, mut results: Resolu
} }
fn hatred(source: &mut Construct, target: &mut Construct, mut results: Resolutions, reflect_skill: Skill, amount: u64, skill: Skill) -> Resolutions { fn hatred(source: &mut Construct, target: &mut Construct, mut results: Resolutions, reflect_skill: Skill, amount: u64, skill: Skill) -> Resolutions {
let hatred = skill.effect().last().unwrap().clone() let hatred = skill.effect().first().unwrap().clone()
.set_meta(EffectMeta::AddedDamage(amount)); .set_meta(EffectMeta::AddedDamage(amount));
results.push(Resolution::new(source, target).event(target.add_effect(reflect_skill, hatred))); results.push(Resolution::new(source, target).event(target.add_effect(reflect_skill, hatred)));