diff --git a/VERSION b/VERSION
index afa2b351..b9268dae 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.8.0
\ No newline at end of file
+1.8.1
\ No newline at end of file
diff --git a/acp/package.json b/acp/package.json
index 69013a0e..904e91c6 100644
--- a/acp/package.json
+++ b/acp/package.json
@@ -1,6 +1,6 @@
{
"name": "mnml-client",
- "version": "1.8.0",
+ "version": "1.8.1",
"description": "",
"main": "index.js",
"scripts": {
diff --git a/client/animations.test.js b/client/animations.test.js
index b6cbc772..ece98666 100644
--- a/client/animations.test.js
+++ b/client/animations.test.js
@@ -1,14 +1,3 @@
require('./assets/styles/styles.less');
-require('./assets/styles/menu.less');
-require('./assets/styles/nav.less');
-require('./assets/styles/footer.less');
-require('./assets/styles/account.less');
-require('./assets/styles/controls.less');
-require('./assets/styles/instance.less');
-require('./assets/styles/vbox.less');
-require('./assets/styles/game.less');
-require('./assets/styles/player.less');
-require('./assets/styles/styles.mobile.less');
-require('./assets/styles/instance.mobile.less');
require('./src/animations.test.jsx');
diff --git a/client/assets/styles/account.less b/client/assets/styles/account.less
index ff102b69..a52e6e5b 100644
--- a/client/assets/styles/account.less
+++ b/client/assets/styles/account.less
@@ -1,5 +1,3 @@
-@import 'colours.less';
-
.account {
grid-template-columns: 1fr 1fr 1fr 1fr;
diff --git a/client/assets/styles/colours.less b/client/assets/styles/colours.less
index 8b4447ab..d8ca2a5d 100644
--- a/client/assets/styles/colours.less
+++ b/client/assets/styles/colours.less
@@ -140,7 +140,7 @@ svg {
}
}
-button {
+button, button:hover, button:active {
&.blue {
border-color: @blue;
}
@@ -150,6 +150,16 @@ button {
&.green {
border-color: @green;
}
+
+ &.red-border {
+ border-color: @red;
+ }
+ &.blue-border {
+ border-color: @blue;
+ }
+ &.green-border {
+ border-color: @green;
+ }
}
@keyframes rgb {
@@ -184,9 +194,9 @@ button {
@keyframes target-ko {
0% {
- opacity: 100%;
+ opacity: 1;
}
100% {
- opacity: 20%;
+ opacity: 0.2;
}
-}
\ No newline at end of file
+}
diff --git a/client/assets/styles/controls.less b/client/assets/styles/controls.less
index 69e89c1b..0bdb4b59 100644
--- a/client/assets/styles/controls.less
+++ b/client/assets/styles/controls.less
@@ -1,5 +1,3 @@
-@import 'colours.less';
-
aside {
grid-area: ctrl;
display: grid;
diff --git a/client/assets/styles/game.less b/client/assets/styles/game.less
index ef57d19b..ad9c7f47 100644
--- a/client/assets/styles/game.less
+++ b/client/assets/styles/game.less
@@ -1,6 +1,3 @@
-@import 'colours.less';
-/* GAME */
-
.game {
overflow: hidden;
// display: grid;
diff --git a/client/assets/styles/instance.less b/client/assets/styles/instance.less
index e5be3bdc..65032870 100644
--- a/client/assets/styles/instance.less
+++ b/client/assets/styles/instance.less
@@ -1,5 +1,3 @@
-@import 'colours.less';
-
.instance {
overflow: hidden;
display: grid;
diff --git a/client/assets/styles/instance.mobile.less b/client/assets/styles/instance.mobile.less
index 925b487f..3b68cc7f 100644
--- a/client/assets/styles/instance.mobile.less
+++ b/client/assets/styles/instance.mobile.less
@@ -1,5 +1,3 @@
-@import 'colours.less';
-
// tablet / ipad
@media (max-width: 1100px) {
.instance {
diff --git a/client/assets/styles/menu.less b/client/assets/styles/menu.less
index 7282cc94..c6349146 100644
--- a/client/assets/styles/menu.less
+++ b/client/assets/styles/menu.less
@@ -1,5 +1,3 @@
-@import 'colours.less';
-
.menu {
height: 100%;
display: grid;
diff --git a/client/assets/styles/player.less b/client/assets/styles/player.less
index cadd02fe..d731e418 100644
--- a/client/assets/styles/player.less
+++ b/client/assets/styles/player.less
@@ -1,5 +1,3 @@
-@import 'colours.less';
-
.player-box {
display: grid;
overflow: hidden;
diff --git a/client/assets/styles/styles.less b/client/assets/styles/styles.less
index 99329d24..340947c3 100644
--- a/client/assets/styles/styles.less
+++ b/client/assets/styles/styles.less
@@ -1,4 +1,15 @@
@import 'colours.less';
+@import 'account.less';
+@import 'menu.less';
+@import 'nav.less';
+@import 'footer.less';
+@import 'controls.less';
+@import 'instance.less';
+@import 'vbox.less';
+@import 'game.less';
+@import 'player.less';
+@import 'styles.mobile.less';
+@import 'instance.mobile.less';
html body {
margin: 0;
diff --git a/client/assets/styles/vbox.less b/client/assets/styles/vbox.less
index 6b868716..59109463 100644
--- a/client/assets/styles/vbox.less
+++ b/client/assets/styles/vbox.less
@@ -1,5 +1,3 @@
-@import 'colours.less';
-
.vbox {
margin-bottom: 2em;
diff --git a/client/index.js b/client/index.js
index c169c5ee..e90de601 100644
--- a/client/index.js
+++ b/client/index.js
@@ -1,15 +1,4 @@
require('./assets/styles/styles.less');
-require('./assets/styles/account.less');
-require('./assets/styles/menu.less');
-require('./assets/styles/nav.less');
-require('./assets/styles/footer.less');
-require('./assets/styles/controls.less');
-require('./assets/styles/instance.less');
-require('./assets/styles/vbox.less');
-require('./assets/styles/game.less');
-require('./assets/styles/player.less');
-require('./assets/styles/styles.mobile.less');
-require('./assets/styles/instance.mobile.less');
// kick it off
require('./src/app');
diff --git a/client/package.json b/client/package.json
index fbdfadd2..119c92f2 100644
--- a/client/package.json
+++ b/client/package.json
@@ -1,6 +1,6 @@
{
"name": "mnml-client",
- "version": "1.8.0",
+ "version": "1.8.1",
"description": "",
"main": "index.js",
"scripts": {
diff --git a/client/src/animations.socket.jsx b/client/src/animations.socket.jsx
index edd822c6..ae99e1cc 100644
--- a/client/src/animations.socket.jsx
+++ b/client/src/animations.socket.jsx
@@ -30,46 +30,54 @@ function createSocket(store) {
if (animating) return false;
store.dispatch(actions.setAnimating(true));
// stop fetching the game state til animations are done
+
return eachSeries(newRes, (r, cb) => {
- if (['Disable', 'TargetKo'].includes(r.event[0])) return cb();
-
- // convert server enum into anims keywords
- // todo make serersideonly
- const sequence = animations.getSequence(r);
- const timeout = animations.getTime(sequence);
- const anims = animations.getObjects(r, sequence, game, account);
- const text = animations.getText(r, sequence);
+ if (!r.event) return cb();
+ const timeout = animations.getTime(r.stages);
+ const anims = animations.getObjects(r, game, account);
+ const text = animations.getText(r);
store.dispatch(actions.setAnimFocus(animations.getFocusTargets(r, game)));
+ if (anims.animSkill) store.dispatch(actions.setAnimSkill(anims.animSkill));
- if (sequence.includes('START_SKILL') && anims.animSource) store.dispatch(actions.setAnimSource(anims.animSource));
- if (sequence.includes('END_SKILL') && anims.animTarget) {
+ if (r.stages.includes('START_SKILL') && anims.animSource) {
+ store.dispatch(actions.setAnimSource(anims.animSource));
+ }
+
+ if (r.stages.includes('END_SKILL') && anims.animTarget) {
store.dispatch(actions.setAnimTarget(anims.animTarget));
- if (!['Banish', 'Invert'].includes(removeTier(anims.animTarget.skill))) store.dispatch(actions.setAnimCb(cb));
+ if (animations.isCbAnim(anims.animSkill)) store.dispatch(actions.setAnimCb(cb));
}
- if (sequence.includes('POST_SKILL' && text)) {
+
+ if (r.stages.includes('POST_SKILL') && text) {
// timeout to prevent text classes from being added too soon
- setTimeout(
- () => store.dispatch(actions.setAnimText(text)),
- timeout - TIMES.POST_SKILL_DURATION_MS
- );
+ if (timeout === TIMES.POST_SKILL_DURATION_MS) {
+ store.dispatch(actions.setAnimText(text));
+ } else {
+ setTimeout(
+ () => store.dispatch(actions.setAnimText(text)),
+ timeout - TIMES.POST_SKILL_DURATION_MS
+ );
+ }
}
+
return setTimeout(() => {
+ store.dispatch(actions.setAnimSkill(null));
store.dispatch(actions.setAnimSource(null));
store.dispatch(actions.setAnimTarget(null));
store.dispatch(actions.setAnimText(null));
store.dispatch(actions.setAnimFocus([]));
- if (!sequence.includes('END_SKILL')
- || ['Banish', 'Invert'].includes(removeTier(anims.animTarget.skill))) return cb();
- return true;
+ if (r.stages.includes('END_SKILL') && animations.isCbAnim(anims.animSkill)) return true;
+ return cb();
}, timeout);
}, err => {
if (err) return console.error(err);
// clear animation state
+ store.dispatch(actions.setAnimSkill(null));
store.dispatch(actions.setAnimSource(null));
store.dispatch(actions.setAnimTarget(null));
store.dispatch(actions.setAnimText(null));
store.dispatch(actions.setAnimating(false));
-
+ store.dispatch(actions.setGameEffectInfo(null));
store.dispatch(actions.setSkip(false));
// set the game state so resolutions don't fire twice
diff --git a/client/src/components/anims/chaos.jsx b/client/src/components/anims/chaos.jsx
index d009c116..94bd40b4 100644
--- a/client/src/components/anims/chaos.jsx
+++ b/client/src/components/anims/chaos.jsx
@@ -20,6 +20,7 @@ function projectile(x, y, radius, colour) {
cy={y}
r={radius}
fill={colour}
+ stroke="none"
filter={colour === '#a52a2a' ? 'url(#chaosRedFilter)' : 'url(#chaosBlueFilter)'}
/>
);
diff --git a/client/src/components/anims/slay.jsx b/client/src/components/anims/slay.jsx
index 68654ea8..31bc57d2 100644
--- a/client/src/components/anims/slay.jsx
+++ b/client/src/components/anims/slay.jsx
@@ -20,6 +20,7 @@ function projectile(x, y, radius, colour) {