diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c160cd9..c6a2090e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Fixed ### Changed +## [0.1.5] - YYYY-MM-DD +### Changed +`Recharge` Skill multiplier reduced 85/130/200 -> 70/110/170 +`Absorption` Skill duration reduced 5/7/9 -> 3/5/7 + ## [0.1.4 2019-09-18] ### Changed diff --git a/VERSION b/VERSION index 1d5e9e0b..63ebd3fe 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.5.3 \ No newline at end of file +1.5.4 \ No newline at end of file diff --git a/WORKLOG.md b/WORKLOG.md index 20cd76e7..1dd73284 100644 --- a/WORKLOG.md +++ b/WORKLOG.md @@ -14,6 +14,7 @@ ## SOON (Before or After PAX) +* Invert recharge * bot game grind * ACP * essential diff --git a/acp/package.json b/acp/package.json index f41793e6..43040b88 100644 --- a/acp/package.json +++ b/acp/package.json @@ -1,6 +1,6 @@ { "name": "mnml-client", - "version": "1.5.3", + "version": "1.5.4", "description": "", "main": "index.js", "scripts": { diff --git a/bin/client.sh b/bin/client.sh index 2ae62d06..06daf871 100755 --- a/bin/client.sh +++ b/bin/client.sh @@ -13,6 +13,8 @@ rm -rf dist npm i npm run build +cp tos.html dist/ + # echo "Building acp version $VERSION" # cd $MNML_PATH/acp # rm -rf dist diff --git a/client/assets/styles/controls.less b/client/assets/styles/controls.less index 80612c3e..ef8fbdeb 100644 --- a/client/assets/styles/controls.less +++ b/client/assets/styles/controls.less @@ -50,19 +50,31 @@ aside { } } - button.ready:enabled { - &:hover { - color: forestgreen; - border-color: forestgreen; - } + // button.ready:enabled { + // &:hover { + // color: forestgreen; + // border-color: forestgreen; + // } - &:active, &:focus, &.enabled { + // &:active, &:focus, &.enabled { + // background: forestgreen; + // color: black; + // border-color: forestgreen; + // } + // } + + button.ready:enabled { + color: forestgreen; + border-color: forestgreen; + + &:hover { background: forestgreen; color: black; border-color: forestgreen; } } + .timer-container { grid-area: timer; @@ -94,6 +106,7 @@ aside { .ready { color: forestgreen; + // animation: ready 2s linear 0s infinite alternate; transition-property: color, background; transition-duration: 0.25s; transition-timing-function: ease; @@ -137,4 +150,14 @@ aside { color: black; border: 2px solid black; } +} + +@keyframes ready { + from { + border-color: @gray-exists; + } + + to { + border-color: forestgreen; + } } \ No newline at end of file diff --git a/client/assets/styles/instance.mobile.less b/client/assets/styles/instance.mobile.less index 4621af75..9fec777b 100644 --- a/client/assets/styles/instance.mobile.less +++ b/client/assets/styles/instance.mobile.less @@ -17,6 +17,7 @@ @media (max-width: 800px) { .instance { + overflow-y: scroll; font-size: 8pt; display: grid; grid-template-columns: 1fr; diff --git a/client/assets/styles/menu.less b/client/assets/styles/menu.less index 9bcddbf2..4d0dd7ca 100644 --- a/client/assets/styles/menu.less +++ b/client/assets/styles/menu.less @@ -129,13 +129,30 @@ section { .demo { margin-top: 1em; - display: grid; - grid-template-areas: - "vinfo game" - "vcons game"; + display: block; - grid-template-columns: 1fr 1fr; - grid-template-rows: min-content 1fr; + button { + pointer-events: none; + } + + section { + margin-bottom: 0.5em; + + div:first-child { + padding-right: 1em; + } + } + + .construct-section { + .construct-list { + height: 25em; + grid-area: unset; + + .instance-construct { + // border: 0; + } + } + } .colour-info { grid-area: vinfo; @@ -152,17 +169,9 @@ section { } } - .vbox-demo { - grid-area: vinfo; - } - .game-demo { - grid-area: game; - - display: grid; - grid-template-columns: 1fr 2fr; - .game { + height: 25em; display: flex; flex-flow: column; @@ -171,15 +180,6 @@ section { } } } - - .construct-list { - grid-area: vcons; - height: 100%; - - svg { - height: 100%; - } - } } @media (max-width: 800px) { @@ -191,24 +191,6 @@ section { } } - .demo { - grid-template-columns: 1fr; - grid-template-areas: - "vinfo" - "vcons" - "game" - "game"; - - - .construct-list .instance-construct:not(:first-child) { - display: none; - } - - .game-demo { - grid-template-columns: 1fr; - } - } - .menu .team { grid-template-columns: 1fr; diff --git a/client/assets/styles/styles.less b/client/assets/styles/styles.less index 2e3b241c..f89cecb0 100644 --- a/client/assets/styles/styles.less +++ b/client/assets/styles/styles.less @@ -14,7 +14,7 @@ html body { -ms-user-select: none; overflow-x: hidden; - overflow-y: hidden; + // overflow-y: hidden; } #mnml { @@ -26,14 +26,14 @@ html body { /* stops inspector going skitz*/ overflow-x: hidden; - overflow-y: hidden; + // overflow-y: hidden; } -@media (min-width: 1921px) { - html, body, #mnml { - font-size: 16pt; - } -} +// @media (min-width: 1921px) { +// html, body, #mnml { +// font-size: 16pt; +// } +// } html { box-sizing: border-box; @@ -162,13 +162,12 @@ svg { fill: none; stroke: whitesmoke; stroke-width: 0.5em; - height: 2em; + height: 1.5em; } table { table-layout: fixed; width: 100%; - /*margin-bottom: 2em;*/ margin-bottom: 0; } diff --git a/client/assets/styles/styles.mobile.less b/client/assets/styles/styles.mobile.less index e8269bd2..be259075 100644 --- a/client/assets/styles/styles.mobile.less +++ b/client/assets/styles/styles.mobile.less @@ -123,4 +123,8 @@ padding: 0; } } + + .play-p { + display: none; + } } diff --git a/client/manifest.webmanifest b/client/manifest.webmanifest index afb2065e..3d2582a5 100644 --- a/client/manifest.webmanifest +++ b/client/manifest.webmanifest @@ -16,7 +16,6 @@ ], "start_url": "/index.html", "display": "fullscreen", - "orientation": "portrait", "theme_color": "#000000", "background_color": "#000000" } \ No newline at end of file diff --git a/client/package.json b/client/package.json index 90e180ae..e84f1421 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "mnml-client", - "version": "1.5.3", + "version": "1.5.4", "description": "", "main": "index.js", "scripts": { diff --git a/client/src/components/demo.jsx b/client/src/components/demo.jsx index 68fb7fb8..57c814ee 100644 --- a/client/src/components/demo.jsx +++ b/client/src/components/demo.jsx @@ -45,8 +45,6 @@ function Demo(args) { const { combiner, items, equipping, equipped, players } = demo; - console.log(items); - const vboxDemo = () => { function inventoryBtn(i, j) { if (!i) return ; @@ -86,7 +84,7 @@ function Demo(args) { function inventoryElement() { return ( -
+

VBOX PHASE {shapes.Red()} {shapes.Green()} {shapes.Blue()} @@ -118,39 +116,48 @@ function Demo(args) { ? 'equipping empty gray' : 'empty gray'; - return ( -
- {players[0].constructs.map((c, i) => ( -
-

{c.name}

- -
- {i === 0 && equipped - ? - : - } - - -
-
-
-
-
-
- ))} + const constructEl = c => ( +
+

{c.name}

+ +
+ {equipped + ? + : + } + + +
+
+
+
+
); + + return ( +
+
+

CONSTRUCTS

+

Constructs are the units you control. They are reset every game and their initial appearance is randomly generated.

+

Skills and Specs you create in the VBOX Phase are equipped to your constructs to create a build.

+
+
+ {constructEl(players[0].constructs[0])} +
+
+ ); }; const gameDemo = () => { return ( -
+

COMBAT PHASE

Battle your opponent using dynamic team builds from the VBOX phase.

-

Crafted skills can be used to damage the opponent or support your team.

-

Turn based combat, each team picks targets for their skills during this phase.

-

The damage dealt by skills, cast order and construct life depend on your decisions in the VBOX phase.

+

The skills crafted can be used to damage the opponent or support your team.

+

Simultaneous turn based combat: each team picks targets for their skills during this phase.

+

The damage dealt by skills, cast order and construct life depend on your decisions in the VBOX phase.

@@ -167,7 +174,7 @@ function Demo(args) {
-
+ ); }; diff --git a/client/src/components/game.construct.jsx b/client/src/components/game.construct.jsx index ea4db106..34349422 100644 --- a/client/src/components/game.construct.jsx +++ b/client/src/components/game.construct.jsx @@ -93,12 +93,12 @@ class GameConstruct extends Component { const skills = range(0, 3) .map(j => ); - let crypSkills =
 
; + let crypSkills =
; if (player) crypSkills = (
{skills}
); const effects = construct.effects.length ? construct.effects.map(c =>
{c.effect} - {c.duration}T
) - :
 
; + : null; return (
setInfo(null)} onTouchMove={onTouchMove}> +
setInfo(null)}> @@ -85,12 +85,19 @@ class Instance extends Component { } componentDidMount() { - this.bindSwipes(); + if (!this.h) this.bindSwipes(); + } + + componentDidUpdate() { + if (!this.h) this.bindSwipes(); } bindSwipes() { const instance = document.getElementById('instance'); - if (!instance) return setTimeout(this.bindSwipes, 50); + if (!instance) { + console.log('no instance, binding in 50'); + return setTimeout(this.bindSwipes, 50); + } if (this.h) this.h.destroy(); this.h = new Hammer(instance); this.h.on('swiperight', () => { diff --git a/client/src/components/instance.ctrl.btns.jsx b/client/src/components/instance.ctrl.btns.jsx index d2acd10c..f1ca2be5 100644 --- a/client/src/components/instance.ctrl.btns.jsx +++ b/client/src/components/instance.ctrl.btns.jsx @@ -38,6 +38,15 @@ function InstanceCtrlBtns(args) { const finished = instance && instance.phase === 'Finished'; + // cheeky to make sure nubs don't just abandon their first game + const beingNub = instance.phase_end + && instance.phase === 'Lobby' + && Date.parse(instance.phase_end) - Date.now() < 2000; + + if (beingNub) { + sendReady(); + } + return (
diff --git a/client/src/components/play.jsx b/client/src/components/play.jsx index 3e8fb916..3e0a7f5f 100644 --- a/client/src/components/play.jsx +++ b/client/src/components/play.jsx @@ -94,7 +94,7 @@ function Play(args) {

v{VERSION}

-

Use the buttons on the right to join an instance.

+

Use the buttons on the right to join an instance.

Select PVP to play against other players.
Select INVITE then click COPY LINK to generate an instance invitation for a friend.
diff --git a/client/src/components/welcome.register.jsx b/client/src/components/welcome.register.jsx index 838a48e7..c5ab9f79 100644 --- a/client/src/components/welcome.register.jsx +++ b/client/src/components/welcome.register.jsx @@ -34,7 +34,7 @@ function Register(args) { submitRegister, } = args; - const { password, confirm, name } = this.state; + const { password, confirm, name, terms } = this.state; const registerSubmit = (event) => { event.preventDefault(); @@ -45,7 +45,7 @@ function Register(args) { password === confirm; const registerDisabled = () => { - return !(registerConfirm() && password && name); + return !(registerConfirm() && password && name && terms); } return ( @@ -74,6 +74,14 @@ function Register(args) { value={this.state.confirm} onInput={linkState(this, 'confirm')} /> +

+ +   Confirm agreement to terms of service   + +