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,
DecayII,
DecayIII,
Hostility,
HostilityI,
HostilityII,
HostilityIII,
Haste,
HealI,
HealII,
@ -265,7 +267,9 @@ impl Item {
Item::HexI => Some(Skill::HexI),
Item::HexII => Some(Skill::HexII),
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::InvertI => Some(Skill::InvertI),
Item::InvertII => Some(Skill::InvertII),
@ -477,7 +481,9 @@ impl Item {
self.into_skill().unwrap().multiplier(),
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",
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.",
@ -644,8 +650,10 @@ impl Item {
Item::ScatterI => vec![Item::Buff, Item::Blue, Item::Blue],
Item::ScatterII => vec![Item::ScatterI, Item::ScatterI, Item::ScatterI],
Item::ScatterIII => vec![Item::ScatterIII, Item::ScatterIII, Item::ScatterIII],
Item::Haste => vec![Item::Buff, Item::Red, Item::Green],
Item::Impurity => vec![Item::Buff, Item::Green, Item::Blue],
Item::AmplifyI => vec![Item::Buff, Item::Red, Item::Blue],
Item::AmplifyII => vec![Item::AmplifyI, Item::AmplifyI, Item::AmplifyI],
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::RechargeIII => vec![Item::RechargeII, Item::RechargeII, Item::RechargeII],
Item::StrangleI => vec![Item::Stun, Item::Red, Item::Red],
Item::StrangleII => vec![Item::StrangleI, Item::StrangleI, Item::StrangleI],
Item::StrangleIII => vec![Item::StrangleII, Item::StrangleII, Item::StrangleII],
@ -782,7 +789,9 @@ impl From<Skill> for Item {
Skill::DecayIII => Item::DecayIII,
Skill::Debuff => Item::Debuff,
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::HealII => Item::HealII,
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::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::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::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::InvertI |
@ -256,8 +258,11 @@ pub fn resolve(skill: Skill, source: &mut Construct, target: &mut Construct, mut
//Triggered
Skill::CorruptionI |
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::HatredI |
Skill::HatredII |
Skill::HatredIII => panic!("should only trigger from hatred"),
Skill::ImpureBlast => panic!("should only trigger from impurity"),
Skill::RiposteI |
Skill::RiposteII |
@ -300,7 +305,14 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) ->
}
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
@ -727,7 +739,12 @@ pub enum Skill {
HexII,
HexIII,
Hostility,
HatredI,
HatredII,
HatredIII,
HostilityI,
HostilityII,
HostilityIII,
ImpureBlast,
Impurity,
Injure,
@ -977,8 +994,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::Hostility => vec![ConstructEffect {effect: Effect::Hostility, duration: 2, meta: None, tick: None},
ConstructEffect {effect: Effect::Hatred, duration: 5, 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::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,
meta: Some(EffectMeta::Multiplier(150)), tick: None }],
@ -991,7 +1016,7 @@ impl Skill {
meta: Some(EffectMeta::Skill(Skill::RiposteI)), tick: None}],
Skill::ParryII => vec![ConstructEffect {effect: Effect::Parry, duration: 2,
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}],
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::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}],
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}],
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}],
Skill::SleepI => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
@ -1180,7 +1205,9 @@ impl Skill {
Skill::CorruptIII =>Some(1),
Skill::Hostility => Some(1),
Skill::HostilityI |
Skill::HostilityII |
Skill::HostilityIII => Some(1),
//-----------
// Never cast directly
@ -1194,6 +1221,9 @@ impl Skill {
Skill::CorruptionI |
Skill::CorruptionII |
Skill::CorruptionIII |
Skill::HatredI |
Skill::HatredII |
Skill::HatredIII |
// Ticks
Skill::CorruptionTickI |
Skill::CorruptionTickII |
@ -1349,7 +1379,9 @@ impl Skill {
Skill::HealI |
Skill::HealII |
Skill::HealIII |
Skill::Hostility |
Skill::HostilityI |
Skill::HostilityII |
Skill::HostilityIII |
Skill::InvertI |
Skill::InvertII |
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 {
let hatred = skill.effect().last().unwrap().clone()
let hatred = skill.effect().first().unwrap().clone()
.set_meta(EffectMeta::AddedDamage(amount));
results.push(Resolution::new(source, target).event(target.add_effect(reflect_skill, hatred)));