speed fix, counter fix, client side anim fix

This commit is contained in:
Mashy 2019-09-20 15:34:09 +10:00
parent 2894e346e3
commit 2e366e2eca
4 changed files with 36 additions and 21 deletions

View File

@ -91,7 +91,7 @@ function registerEvents(store) {
store.dispatch(actions.setAnimTarget(null)); store.dispatch(actions.setAnimTarget(null));
store.dispatch(actions.setAnimText(null)); store.dispatch(actions.setAnimText(null));
store.dispatch(actions.setAnimFocus([])); store.dispatch(actions.setAnimFocus([]));
if (!sequence.includes('END_SKILL') if (!sequence.includes('END_SKILL' && anims.animTarget)
|| ['Banish', 'Invert'].includes(removeTier(anims.animTarget.skill))) return cb(); || ['Banish', 'Invert'].includes(removeTier(anims.animTarget.skill))) return cb();
return true; return true;
}, timeout); }, timeout);

View File

@ -322,7 +322,7 @@ impl Game {
return Err(err_msg("game not in skill phase")); return Err(err_msg("game not in skill phase"));
} }
let mut game_state = self.clone(); 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); return Ok(self);
} }

View File

@ -337,13 +337,27 @@ impl Item {
} }
} }
pub fn speed(&self) -> u64 { pub fn base_speed(&self) -> u64 {
match self { match self {
Item::Attack => 1, Item::Attack => 1,
Item::Stun => 2, Item::Stun => 2,
Item::Block => 3, Item::Block => 3,
Item::Buff | Item::Buff |
Item::Debuff => 4, 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 combos = get_combos();
let combo = combos.iter().find(|c| c.item == *self) let combo = combos.iter().find(|c| c.item == *self)
@ -355,17 +369,17 @@ impl Item {
combo.components.iter().for_each(|unit| { combo.components.iter().for_each(|unit| {
colour_speed += match unit { colour_speed += match unit {
Item::Red => 3, Item::Red |
Item::Green => 2, Item::Green |
Item::Blue => 1, Item::Blue => unit.base_speed(),
_ => 0, _ => 0,
}; };
skill_speed += match unit { skill_speed += match unit {
Item::Attack => 1, Item::Attack |
Item::Stun => 2, Item::Stun |
Item::Block => 3, Item::Block |
Item::Buff | Item::Buff |
Item::Debuff => 4, Item::Debuff => unit.base_speed(),
_ => 0, _ => 0,
}; };
if colour_speed == 0 && skill_speed == 0 { if colour_speed == 0 && skill_speed == 0 {

View File

@ -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(); let mut target = game.construct_by_id(target.id).unwrap().clone();
match event { match event {
Event::Damage { amount, skill, mitigation: _, colour: _ } => { Event::Damage { amount, skill, mitigation: _, colour: c } => {
if target.affected(Effect::Electric) { if target.affected(Effect::Electric) {
let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter() let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter()
.find(|e| e.effect == Effect::Electric).unwrap().clone(); .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"), _ => panic!("no absorb skill"),
}; };
} }
if c == Colour::Red {
if target.affected(Effect::Counter) { if target.affected(Effect::Counter) {
let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter() let ConstructEffect { effect: _, duration: _, meta, tick: _ } = target.effects.iter()
.find(|e| e.effect == Effect::Counter).unwrap().clone(); .find(|e| e.effect == Effect::Counter).unwrap().clone();
match meta { match meta {
Some(EffectMeta::Skill(s)) => { Some(EffectMeta::Skill(s)) => {
resolutions = counter_attack(&mut target, &mut source, resolutions, s); resolutions = counter_attack(&mut target, &mut source, resolutions, s);
}, },
_ => panic!("no counter skill"), _ => panic!("no counter skill"),
}; };
}
} }
}, },
_ => (), _ => (),