Merge branch 'remove-categories' of ssh://cryps.gg:40022/~/cryps into remove-categories
This commit is contained in:
commit
1d1a55bf7d
54
server/src/skill.rs
Normal file → Executable file
54
server/src/skill.rs
Normal file → Executable file
@ -525,12 +525,6 @@ impl Effect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug,Clone,PartialEq,Serialize,Deserialize)]
|
|
||||||
pub enum SkillEffect {
|
|
||||||
Modifier {effect: Effect, multiplier: u64, duration: u8},
|
|
||||||
Disable {effect: Effect, duration: u8},
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
|
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
|
||||||
pub enum Colour {
|
pub enum Colour {
|
||||||
Red,
|
Red,
|
||||||
@ -661,22 +655,21 @@ impl Skill {
|
|||||||
}),
|
}),
|
||||||
*/
|
*/
|
||||||
|
|
||||||
pub fn effect(&self) -> CrypEffect {
|
pub fn effect(&self) -> Vec<CrypEffect> {
|
||||||
// Buff -> Effect, Multiplier, duration
|
|
||||||
match self {
|
match self {
|
||||||
// Modifiers
|
// Modifiers
|
||||||
Skill::Amplify => CrypEffect {effect: Effect::Amplify, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None},
|
Skill::Amplify => vec![CrypEffect {effect: Effect::Amplify, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
||||||
Skill::Block => CrypEffect {effect: Effect::Block, duration: 1, meta: Some(EffectMeta::Multiplier(50)), tick: None},
|
Skill::Block => vec![CrypEffect {effect: Effect::Block, duration: 1, meta: Some(EffectMeta::Multiplier(50)), tick: None}],
|
||||||
Skill::Buff => CrypEffect {effect: Effect::Buff, duration: 2, meta: Some(EffectMeta::Multiplier(125)), tick: None },
|
Skill::Buff => vec![CrypEffect {effect: Effect::Buff, duration: 2, meta: Some(EffectMeta::Multiplier(125)), tick: None }],
|
||||||
Skill::Curse => CrypEffect {effect: Effect::Curse, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None},
|
Skill::Curse => vec![CrypEffect {effect: Effect::Curse, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
||||||
Skill::Debuff => CrypEffect {effect: Effect::Slow, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None },
|
Skill::Debuff => vec![CrypEffect {effect: Effect::Slow, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None }],
|
||||||
Skill::Decay => CrypEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None },
|
Skill::Decay => vec![CrypEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None }],
|
||||||
Skill::Impurity => CrypEffect {effect: Effect::Impurity, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None },
|
Skill::Impurity => vec![CrypEffect {effect: Effect::Impurity, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
||||||
Skill::Haste => CrypEffect {effect: Effect::Haste, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None },
|
Skill::Haste => vec![CrypEffect {effect: Effect::Haste, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None }],
|
||||||
Skill::Throw => CrypEffect {effect: Effect::Vulnerable, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None},
|
Skill::Throw => vec![CrypEffect {effect: Effect::Vulnerable, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None}],
|
||||||
|
|
||||||
// Disables
|
// Disables
|
||||||
Skill::Stun => CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None},
|
Skill::Stun => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
|
||||||
|
|
||||||
_ => {
|
_ => {
|
||||||
panic!("no skill effect");
|
panic!("no skill effect");
|
||||||
@ -999,7 +992,7 @@ fn taunt(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill:
|
|||||||
fn throw(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn throw(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
let stun = CrypEffect::new(Effect::Stun, skill.duration());
|
let stun = CrypEffect::new(Effect::Stun, skill.duration());
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, stun)));
|
results.push(Resolution::new(source, target).event(target.add_effect(skill, stun)));
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect())));
|
skill.effect().into_iter().for_each(|e| (results.push(Resolution::new(source, target).event(target.add_effect(skill, e)))));
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1034,12 +1027,12 @@ fn strangle_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions,
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn block(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn block(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect())));
|
skill.effect().into_iter().for_each(|e| (results.push(Resolution::new(source, target).event(target.add_effect(skill, e)))));
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn buff(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn buff(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect())));
|
skill.effect().into_iter().for_each(|e| (results.push(Resolution::new(source, target).event(target.add_effect(skill, e)))));
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1149,17 +1142,20 @@ fn blast(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill:
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn amplify(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn amplify(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect())));
|
skill.effect().into_iter().for_each(|e| (results.push(Resolution::new(source, target).event(target.add_effect(skill, e)))));
|
||||||
|
|
||||||
return results;;
|
return results;;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn haste(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn haste(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect())));
|
skill.effect().into_iter().for_each(|e| (results.push(Resolution::new(source, target).event(target.add_effect(skill, e)))));
|
||||||
|
|
||||||
return results;;
|
return results;;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn debuff(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn debuff(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect())));
|
skill.effect().into_iter().for_each(|e| (results.push(Resolution::new(source, target).event(target.add_effect(skill, e)))));
|
||||||
|
|
||||||
return results;;
|
return results;;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1168,7 +1164,9 @@ fn decay(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill:
|
|||||||
.set_tick(Cast::new_tick(source, target, Skill::DecayTick));
|
.set_tick(Cast::new_tick(source, target, Skill::DecayTick));
|
||||||
|
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, decay)));
|
results.push(Resolution::new(source, target).event(target.add_effect(skill, decay)));
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect())));
|
|
||||||
|
skill.effect().into_iter().for_each(|e| (results.push(Resolution::new(source, target).event(target.add_effect(skill, e)))));
|
||||||
|
|
||||||
return decay_tick(source, target, results, Skill::DecayTick);
|
return decay_tick(source, target, results, Skill::DecayTick);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1232,12 +1230,12 @@ fn hatred(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, reflec
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn curse(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn curse(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect())));
|
skill.effect().into_iter().for_each(|e| (results.push(Resolution::new(source, target).event(target.add_effect(skill, e)))));
|
||||||
return results;;
|
return results;;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn impurity(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn impurity(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect())));
|
skill.effect().into_iter().for_each(|e| (results.push(Resolution::new(source, target).event(target.add_effect(skill, e)))));
|
||||||
return results;;
|
return results;;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1349,7 +1347,7 @@ fn silence(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn purge(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
fn purge(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, _skill: Skill) -> Resolutions {
|
||||||
while let Some(i) = target.effects
|
while let Some(i) = target.effects
|
||||||
.iter()
|
.iter()
|
||||||
.position(|ce| ce.effect.category() == EffectCategory::Buff) {
|
.position(|ce| ce.effect.category() == EffectCategory::Buff) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user