From c560a347f463a1a93e35a97ea695de9d56071c87 Mon Sep 17 00:00:00 2001 From: ntr Date: Wed, 13 Nov 2019 17:12:36 +1100 Subject: [PATCH 1/6] v1.8.3 --- VERSION | 2 +- acp/package.json | 2 +- client/package.json | 2 +- ops/package.json | 2 +- server/Cargo.toml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index 0bfbd573..fe4e75fb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.8.2 \ No newline at end of file +1.8.3 \ No newline at end of file diff --git a/acp/package.json b/acp/package.json index 3a0fffbb..18b68a3f 100644 --- a/acp/package.json +++ b/acp/package.json @@ -1,6 +1,6 @@ { "name": "mnml-client", - "version": "1.8.2", + "version": "1.8.3", "description": "", "main": "index.js", "scripts": { diff --git a/client/package.json b/client/package.json index a6fc3780..96747156 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "mnml-client", - "version": "1.8.2", + "version": "1.8.3", "description": "", "main": "index.js", "scripts": { diff --git a/ops/package.json b/ops/package.json index e1198adc..654b3f8e 100644 --- a/ops/package.json +++ b/ops/package.json @@ -1,6 +1,6 @@ { "name": "mnml-ops", - "version": "1.8.2", + "version": "1.8.3", "description": "", "main": "index.js", "scripts": { diff --git a/server/Cargo.toml b/server/Cargo.toml index 6461cc90..46acb90a 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mnml" -version = "1.8.2" +version = "1.8.3" authors = ["ntr "] [dependencies] From 576244a5417dab3b8061f53a869c1f3c28617aa8 Mon Sep 17 00:00:00 2001 From: Mashy Date: Wed, 13 Nov 2019 19:10:54 +1000 Subject: [PATCH 2/6] version --- VERSION | 2 +- acp/package.json | 2 +- client/package.json | 2 +- ops/package.json | 2 +- server/Cargo.toml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index 0bfbd573..fe4e75fb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.8.2 \ No newline at end of file +1.8.3 \ No newline at end of file diff --git a/acp/package.json b/acp/package.json index 3a0fffbb..18b68a3f 100644 --- a/acp/package.json +++ b/acp/package.json @@ -1,6 +1,6 @@ { "name": "mnml-client", - "version": "1.8.2", + "version": "1.8.3", "description": "", "main": "index.js", "scripts": { diff --git a/client/package.json b/client/package.json index a6fc3780..96747156 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "mnml-client", - "version": "1.8.2", + "version": "1.8.3", "description": "", "main": "index.js", "scripts": { diff --git a/ops/package.json b/ops/package.json index e1198adc..654b3f8e 100644 --- a/ops/package.json +++ b/ops/package.json @@ -1,6 +1,6 @@ { "name": "mnml-ops", - "version": "1.8.2", + "version": "1.8.3", "description": "", "main": "index.js", "scripts": { diff --git a/server/Cargo.toml b/server/Cargo.toml index 6461cc90..46acb90a 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mnml" -version = "1.8.2" +version = "1.8.3" authors = ["ntr "] [dependencies] From 8aee7dc0848e3ea48b2b28f21dba41df1f39c1b1 Mon Sep 17 00:00:00 2001 From: ntr Date: Wed, 13 Nov 2019 20:23:59 +1100 Subject: [PATCH 3/6] purified => pure --- CHANGELOG.md | 2 +- client/src/utils.jsx | 2 +- server/src/effect.rs | 10 +++++----- server/src/item.rs | 2 +- server/src/names.rs | 2 +- server/src/skill.rs | 12 ++++++------ 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a58fa60..5195fed7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ - Purify - Now removes all effects on target - - Applies "Purified" increasing healing taken + - Applies "Pure" increasing healing taken - Purge - Now removes all effects on target diff --git a/client/src/utils.jsx b/client/src/utils.jsx index c23e9012..a14c684e 100644 --- a/client/src/utils.jsx +++ b/client/src/utils.jsx @@ -282,7 +282,7 @@ function effectInfo(i) { case 'Restrict': return 'Disable construct from casting any red skills'; case 'Stun': return 'Stunned construct cannot use skills'; case 'Intercept': return 'Redirect any skills on team to this target construct'; - case 'Purified': return `Construct will take ${i.meta[1] - 100}% increased healing`; + case 'Pure': return `Construct will take ${i.meta[1] - 100}% increased healing`; case 'Vulnerable': return `Construct will take ${i.meta[1] - 100}% increased red damage`; case 'Silence': return 'Disable construct from casting any blue skills'; case 'Wither': return `Construct will take ${100 - i.meta[1]}% reduced healing`; // diff --git a/server/src/effect.rs b/server/src/effect.rs index 77d110f9..e1a87604 100644 --- a/server/src/effect.rs +++ b/server/src/effect.rs @@ -16,7 +16,7 @@ pub enum Effect { Hybrid, Intercept, Invert, - Purified, + Pure, Purge, Reflect, Restrict, @@ -104,7 +104,7 @@ impl Effect { Effect::Block => vec![Stat::RedDamageTaken, Stat::BlueDamageTaken], Effect::Buff => vec![Stat::BluePower, Stat::RedPower, Stat::Speed], Effect::Slow => vec![Stat::Speed], - + // Power changes Effect::Absorption => vec![Stat::RedPower, Stat::BluePower], Effect::Amplify => vec![Stat::RedPower, Stat::BluePower], @@ -112,7 +112,7 @@ impl Effect { // Damage taken changes Effect::Curse => vec![Stat::RedDamageTaken, Stat::BlueDamageTaken], - Effect::Purified => vec![Stat::GreenDamageTaken], // increased green taken + Effect::Pure => vec![Stat::GreenDamageTaken], // increased green taken Effect::Vulnerable => vec![Stat::RedDamageTaken], Effect::Wither => vec![Stat::GreenDamageTaken], // reduced green taken @@ -133,7 +133,7 @@ impl Effect { Effect::Haste | Effect::Slow | Effect::Hybrid | - Effect::Purified | + Effect::Pure | Effect::Wither => value.pct(match meta { Some(EffectMeta::Multiplier(d)) => d, _ => 100, @@ -194,7 +194,7 @@ impl Effect { Effect::Decay => Some(Colour::Blue), Effect::Regen => Some(Colour::Green), Effect::Siphon => Some(Colour::Blue), - Effect::Purified => Some(Colour::Green), + Effect::Pure => Some(Colour::Green), Effect::Ko => None, } diff --git a/server/src/item.rs b/server/src/item.rs index 4903ec00..72639073 100644 --- a/server/src/item.rs +++ b/server/src/item.rs @@ -832,7 +832,7 @@ impl Item { Item::PurifyPlus | Item::PurifyPlusPlus => format!( "Remove all effects and heals for {:?}% GreenPower per effect removed. - Applies Purified increasing healing taken by {:?}%.", + Applies Pure increasing healing taken by {:?}%.", self.into_skill().unwrap().multiplier(), self.into_skill().unwrap().effect()[0].get_multiplier() - 100), diff --git a/server/src/names.rs b/server/src/names.rs index 16f0dfcc..07cc6ff0 100644 --- a/server/src/names.rs +++ b/server/src/names.rs @@ -44,7 +44,7 @@ const FIRSTS: [&'static str; 53] = [ "orbiting", "piscine", "polar", - "purified", + "pure", "recalcitrant", "rogue", "sealed", diff --git a/server/src/skill.rs b/server/src/skill.rs index cc700cd6..ec67ed14 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -853,7 +853,7 @@ impl Skill { Skill::HybridBlast => 50, Skill::HasteStrike => 60, - + Skill::Absorb=> 95, Skill::AbsorbPlus => 120, Skill::AbsorbPlusPlus => 155, @@ -1028,11 +1028,11 @@ impl Skill { Skill::TriagePlusPlus => vec![ConstructEffect {effect: Effect::Triage, duration: 4, meta: Some(EffectMeta::Skill(Skill::TriageTickPlusPlus)), tick: None}], - Skill::Purify => vec![ConstructEffect { effect: Effect::Purified, duration: 2, + Skill::Purify => vec![ConstructEffect { effect: Effect::Pure, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None}], - Skill::PurifyPlus => vec![ConstructEffect { effect: Effect::Purified, duration: 2, + Skill::PurifyPlus => vec![ConstructEffect { effect: Effect::Pure, duration: 2, meta: Some(EffectMeta::Multiplier(175)), tick: None}], - Skill::PurifyPlusPlus => vec![ConstructEffect { effect: Effect::Purified, duration: 2, + Skill::PurifyPlusPlus => vec![ConstructEffect { effect: Effect::Pure, duration: 2, meta: Some(EffectMeta::Multiplier(200)), tick: None}], _ => { @@ -1052,7 +1052,7 @@ impl Skill { Skill::Strike=> None, Skill::StrikePlus => None, Skill::StrikePlusPlus => None, - + Skill::Counter| Skill::CounterPlus | Skill::CounterPlusPlus => None, // avoid all damage @@ -1800,7 +1800,7 @@ fn siphon_tick(source: &mut Construct, target: &mut Construct, mut results: Reso fn link(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions { results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()[0]))); - + let amount = source.blue_power().pct(skill.multiplier().saturating_mul(target.effects.len() as u64)); target.deal_blue_damage(skill, amount) .into_iter() From 44f008740ecdfa7925d119ee4633f639e4648305 Mon Sep 17 00:00:00 2001 From: ntr Date: Wed, 13 Nov 2019 20:51:30 +1100 Subject: [PATCH 4/6] auto ready for learn mode and remove upkeep warnings --- client/src/components/instance.ctrl.btns.jsx | 5 ++++ client/src/events.jsx | 16 ------------- server/src/game.rs | 24 ++++++++++---------- server/src/player.rs | 10 +------- 4 files changed, 18 insertions(+), 37 deletions(-) diff --git a/client/src/components/instance.ctrl.btns.jsx b/client/src/components/instance.ctrl.btns.jsx index 45c26e1f..c4130385 100644 --- a/client/src/components/instance.ctrl.btns.jsx +++ b/client/src/components/instance.ctrl.btns.jsx @@ -49,6 +49,11 @@ function InstanceCtrlBtns(args) { const finished = instance && instance.phase === 'Finished'; + const skip = instance.time_control === 'Practice' && instance.phase === 'Lobby'; + if (skip) { + sendReady(); + } + return (
diff --git a/client/src/events.jsx b/client/src/events.jsx index 0741ee51..073c2ffc 100644 --- a/client/src/events.jsx +++ b/client/src/events.jsx @@ -209,7 +209,6 @@ function registerEvents(store) { return store.dispatch(actions.setInvite(code)); } - let autoReady = null; function setInstance(v) { const { account, instance, ws, tutorial } = store.getState(); if (v) { @@ -218,25 +217,10 @@ function registerEvents(store) { const player = v.players.find(p => p.id === account.id); store.dispatch(actions.setPlayer(player)); - if (!instance || v.id !== instance.id) { - clearTimeout(autoReady); - } - if (v.phase === 'Finished') { ws.sendAccountInstances(); } - if (v.phase_end && v.phase === 'Lobby' && !autoReady) { - const skip = v.time_control === 'Practice' ? 10000 : 2000; - const autoReadyDelay = Date.parse(v.phase_end) - Date.now() - skip; - autoReady = setTimeout(() => { - ws.sendInstanceReady(v.id); - autoReady = null; - }, autoReadyDelay); - } - - if (v.phase !== 'Lobby') clearTimeout(autoReady); - // instance.mobile.less hides info at @media 1000 if (localStorage.getItem('tutorial-complete') || window.innerWidth <= 1100) { store.dispatch(actions.setTutorial(null)); diff --git a/server/src/game.rs b/server/src/game.rs index 02854483..86fed074 100644 --- a/server/src/game.rs +++ b/server/src/game.rs @@ -469,14 +469,14 @@ impl Game { let mut resolutions = resolution_steps(&cast, &mut self); r_animation_ms = resolutions.iter().fold(r_animation_ms, |acc, r| acc + r.clone().get_delay()); - + // the cast itself goes into this temp vec to handle cooldowns // if theres no resolution events, the skill didn't trigger (disable etc) if resolutions.len() > 0 { casts.push(cast); } - + self.resolved.append(&mut resolutions); // while let Some(resolution) = resolutions.pop() { @@ -635,15 +635,15 @@ impl Game { for player in self.players.iter_mut() { if !player.ready { player.set_ready(true); - player.add_warning(); - info!("upkeep: {:} warned", player.name); - if player.warnings >= 3 { - player.forfeit(); - info!("upkeep: {:} forfeited", player.name); - //todo - // self.resolved.push(forfeit) - // self.log.push(format!("{:} forfeited.", player.name)); - } + // player.add_warning(); + // info!("upkeep: {:} warned", player.name); + // if player.warnings >= 3 { + // player.forfeit(); + // info!("upkeep: {:} forfeited", player.name); + // //todo + // // self.resolved.push(forfeit) + // // self.log.push(format!("{:} forfeited.", player.name)); + // } } } @@ -1622,6 +1622,6 @@ mod tests { game.players[0].set_ready(true); game.phase_end = Some(Utc::now().checked_sub_signed(Duration::seconds(500)).unwrap()); game = game.upkeep(); - assert!(game.players[1].warnings == 1); + // assert!(game.players[1].warnings == 1); } } diff --git a/server/src/player.rs b/server/src/player.rs index 0e0baf56..ffa7c379 100644 --- a/server/src/player.rs +++ b/server/src/player.rs @@ -63,7 +63,6 @@ pub struct Player { pub constructs: Vec, pub bot: bool, pub ready: bool, - pub warnings: u8, pub draw_offered: bool, pub score: Score, } @@ -85,7 +84,6 @@ impl Player { constructs, bot: false, ready: false, - warnings: 0, draw_offered: false, score: Score::Zero, }) @@ -100,7 +98,6 @@ impl Player { constructs, bot: false, ready: false, - warnings: 0, draw_offered: false, score: Score::Zero, } @@ -134,11 +131,6 @@ impl Player { self } - pub fn add_warning(&mut self) -> &mut Player { - self.warnings += 1; - self - } - pub fn forfeit(&mut self) -> &mut Player { for construct in self.constructs.iter_mut() { construct.force_ko(); @@ -358,7 +350,7 @@ impl Player { } self.vbox.bound.push(target); - + if target_construct_id.is_some() { let equip_index = self.vbox.bound.len() - 1; self.vbox_apply(equip_index, target_construct_id.expect("no construct"))?; From 70f99a6ffd09d5646ca0cfdb417c26645c65cb92 Mon Sep 17 00:00:00 2001 From: ntr Date: Wed, 13 Nov 2019 21:35:52 +1100 Subject: [PATCH 5/6] game cancelled --- client/assets/styles/instance.less | 4 ++++ client/src/components/faceoff.jsx | 6 ++++++ server/src/account.rs | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/client/assets/styles/instance.less b/client/assets/styles/instance.less index 4bb23969..b94ad2d9 100644 --- a/client/assets/styles/instance.less +++ b/client/assets/styles/instance.less @@ -434,6 +434,10 @@ &.winner { animation: win 2s ease-in-out 0s 1; } + + .cancelled { + color: white; + } } .tutorial { diff --git a/client/src/components/faceoff.jsx b/client/src/components/faceoff.jsx index ea3858cd..579a9e6e 100644 --- a/client/src/components/faceoff.jsx +++ b/client/src/components/faceoff.jsx @@ -80,6 +80,12 @@ class Faceoff extends preact.Component { } function faceoffText() { if (!instance.winner) { + if (instance.phase === 'Finished') return ( +
+
game cancelled
+
+ ); + return (
{otherTeam.name}
diff --git a/server/src/account.rs b/server/src/account.rs index 66af0821..c404d7d6 100644 --- a/server/src/account.rs +++ b/server/src/account.rs @@ -73,7 +73,7 @@ pub fn chat_wheel(_db: &Db, _id: Uuid) -> Result, Error> { "glhf".to_string(), "ez".to_string(), "rekt".to_string(), - "nice".to_string(), + "wow".to_string(), "wp".to_string(), "ok".to_string(), "...".to_string(), From 917b239647d6d74a8a37d3c4a02dd667c114e80c Mon Sep 17 00:00:00 2001 From: ntr Date: Wed, 13 Nov 2019 21:37:53 +1100 Subject: [PATCH 6/6] fix double ready --- client/src/components/instance.ctrl.btns.jsx | 5 ----- client/src/events.jsx | 7 ++++++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/client/src/components/instance.ctrl.btns.jsx b/client/src/components/instance.ctrl.btns.jsx index c4130385..45c26e1f 100644 --- a/client/src/components/instance.ctrl.btns.jsx +++ b/client/src/components/instance.ctrl.btns.jsx @@ -49,11 +49,6 @@ function InstanceCtrlBtns(args) { const finished = instance && instance.phase === 'Finished'; - const skip = instance.time_control === 'Practice' && instance.phase === 'Lobby'; - if (skip) { - sendReady(); - } - return (
diff --git a/client/src/events.jsx b/client/src/events.jsx index 073c2ffc..ab634d98 100644 --- a/client/src/events.jsx +++ b/client/src/events.jsx @@ -210,13 +210,18 @@ function registerEvents(store) { } function setInstance(v) { - const { account, instance, ws, tutorial } = store.getState(); + const { account, ws, tutorial } = store.getState(); if (v) { setInvite(null); setPvp(false); const player = v.players.find(p => p.id === account.id); store.dispatch(actions.setPlayer(player)); + const skip = v.time_control === 'Practice' && v.phase === 'Lobby'; + if (skip) { + ws.sendInstanceReady(v.id); + } + if (v.phase === 'Finished') { ws.sendAccountInstances(); }