diff --git a/CHANGELOG.md b/CHANGELOG.md
index 99142b7c..63a21137 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,7 +14,7 @@
- Amplify no longer increase GreenPower
- 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/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/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/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/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 (
+
{otherTeam.name}
diff --git a/client/src/events.jsx b/client/src/events.jsx
index 0741ee51..ab634d98 100644
--- a/client/src/events.jsx
+++ b/client/src/events.jsx
@@ -209,34 +209,23 @@ function registerEvents(store) {
return store.dispatch(actions.setInvite(code));
}
- let autoReady = null;
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));
- if (!instance || v.id !== instance.id) {
- clearTimeout(autoReady);
+ const skip = v.time_control === 'Practice' && v.phase === 'Lobby';
+ if (skip) {
+ ws.sendInstanceReady(v.id);
}
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/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/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]
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(),
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/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/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/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"))?;
diff --git a/server/src/skill.rs b/server/src/skill.rs
index c67e86b9..d490bbec 100644
--- a/server/src/skill.rs
+++ b/server/src/skill.rs
@@ -849,7 +849,7 @@ impl Skill {
Skill::HybridBlast => 50,
Skill::HasteStrike => 60,
-
+
Skill::Absorb=> 95,
Skill::AbsorbPlus => 120,
Skill::AbsorbPlusPlus => 155,
@@ -1024,11 +1024,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}],
_ => {
@@ -1048,7 +1048,7 @@ impl Skill {
Skill::Strike=> None,
Skill::StrikePlus => None,
Skill::StrikePlusPlus => None,
-
+
Skill::Counter|
Skill::CounterPlus |
Skill::CounterPlusPlus => None, // avoid all damage
@@ -1796,7 +1796,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()