Merge branch 'release/1.4.8' of ssh://git.mnml.gg:40022/~/mnml into release/1.4.8
This commit is contained in:
+1
-1
@@ -322,7 +322,7 @@ impl Game {
|
||||
return Err(err_msg("game not in skill phase"));
|
||||
}
|
||||
let mut game_state = self.clone();
|
||||
self.stack.retain(|s| game_state.construct_by_id(s.source_construct_id).unwrap().account == player_id);
|
||||
self.stack.retain(|s| game_state.construct_by_id(s.source_construct_id).unwrap().account != player_id);
|
||||
|
||||
return Ok(self);
|
||||
}
|
||||
|
||||
+27
-8
@@ -337,13 +337,27 @@ impl Item {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn speed(&self) -> u64 {
|
||||
pub fn base_speed(&self) -> u64 {
|
||||
match self {
|
||||
Item::Attack => 1,
|
||||
Item::Stun => 2,
|
||||
Item::Block => 3,
|
||||
Item::Buff |
|
||||
Item::Debuff => 4,
|
||||
Item::Blue => 1,
|
||||
Item::Green => 2,
|
||||
Item::Red => 3,
|
||||
_ => 0,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn speed(&self) -> u64 {
|
||||
match self {
|
||||
Item::Attack |
|
||||
Item::Stun |
|
||||
Item::Block |
|
||||
Item::Buff |
|
||||
Item::Debuff => 24 + self.base_speed(),
|
||||
_ => {
|
||||
let combos = get_combos();
|
||||
let combo = combos.iter().find(|c| c.item == *self)
|
||||
@@ -355,17 +369,17 @@ impl Item {
|
||||
|
||||
combo.components.iter().for_each(|unit| {
|
||||
colour_speed += match unit {
|
||||
Item::Red => 3,
|
||||
Item::Green => 2,
|
||||
Item::Blue => 1,
|
||||
Item::Red |
|
||||
Item::Green |
|
||||
Item::Blue => unit.base_speed(),
|
||||
_ => 0,
|
||||
};
|
||||
skill_speed += match unit {
|
||||
Item::Attack => 1,
|
||||
Item::Stun => 2,
|
||||
Item::Block => 3,
|
||||
Item::Attack |
|
||||
Item::Stun |
|
||||
Item::Block |
|
||||
Item::Buff |
|
||||
Item::Debuff => 4,
|
||||
Item::Debuff => unit.base_speed(),
|
||||
_ => 0,
|
||||
};
|
||||
if colour_speed == 0 && skill_speed == 0 {
|
||||
@@ -1441,6 +1455,7 @@ pub struct ItemInfo {
|
||||
pub spec: bool,
|
||||
pub values: Option<SpecValues>,
|
||||
pub skill: bool,
|
||||
pub speed: Option<u64>,
|
||||
pub cooldown: Cooldown,
|
||||
pub description: String,
|
||||
}
|
||||
@@ -1477,6 +1492,10 @@ pub fn item_info() -> ItemInfoCtr {
|
||||
},
|
||||
skill: v.into_skill().is_some(),
|
||||
description: v.into_description(),
|
||||
speed: match v.into_skill() {
|
||||
Some(s) => Some(s.speed()),
|
||||
None => None
|
||||
},
|
||||
cooldown: match v.into_skill() {
|
||||
Some(s) => s.base_cd(),
|
||||
None => None
|
||||
|
||||
+12
-11
@@ -293,7 +293,7 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) ->
|
||||
let mut target = game.construct_by_id(target.id).unwrap().clone();
|
||||
|
||||
match event {
|
||||
Event::Damage { amount, skill, mitigation: _, colour: _ } => {
|
||||
Event::Damage { amount, skill, mitigation: _, colour: c } => {
|
||||
if target.affected(Effect::Electric) {
|
||||
let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter()
|
||||
.find(|e| e.effect == Effect::Electric).unwrap().clone();
|
||||
@@ -315,16 +315,17 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) ->
|
||||
_ => panic!("no absorb skill"),
|
||||
};
|
||||
}
|
||||
|
||||
if target.affected(Effect::Counter) {
|
||||
let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter()
|
||||
.find(|e| e.effect == Effect::Counter).unwrap().clone();
|
||||
match meta {
|
||||
Some(EffectMeta::Skill(s)) => {
|
||||
resolutions = counter_attack(&mut target, &mut source, resolutions, s);
|
||||
},
|
||||
_ => panic!("no counter skill"),
|
||||
};
|
||||
if c == Colour::Red {
|
||||
if target.affected(Effect::Counter) {
|
||||
let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter()
|
||||
.find(|e| e.effect == Effect::Counter).unwrap().clone();
|
||||
match meta {
|
||||
Some(EffectMeta::Skill(s)) => {
|
||||
resolutions = counter_attack(&mut target, &mut source, resolutions, s);
|
||||
},
|
||||
_ => panic!("no counter skill"),
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
_ => (),
|
||||
|
||||
Reference in New Issue
Block a user