Merge branch 'release/1.5.5'
This commit is contained in:
commit
0ebe13f2c3
17
CHANGELOG.md
17
CHANGELOG.md
@ -2,17 +2,24 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
## [0.0.0] - YYYY-MM-DD
|
## [1.5.5] - 2019-10-15
|
||||||
### Added
|
|
||||||
### Fixed
|
|
||||||
### Changed
|
### Changed
|
||||||
|
* Purge
|
||||||
|
* Fixed bug where client animations would freeze when clearing a buff
|
||||||
|
* Cooldown increased to 1T
|
||||||
|
|
||||||
## [0.1.5] - YYYY-MM-DD
|
* VBOX
|
||||||
|
* You can no longer select invalid combinations.
|
||||||
|
|
||||||
|
* Controls
|
||||||
|
* Abandon button now asks for confirmation.
|
||||||
|
|
||||||
|
## [1.1.5] - 2019-10-10
|
||||||
### Changed
|
### Changed
|
||||||
`Recharge` Skill multiplier reduced 85/130/200 -> 70/110/170
|
`Recharge` Skill multiplier reduced 85/130/200 -> 70/110/170
|
||||||
`Absorption` Skill duration reduced 5/7/9 -> 3/5/7
|
`Absorption` Skill duration reduced 5/7/9 -> 3/5/7
|
||||||
|
|
||||||
## [0.1.4 2019-09-18]
|
## [1.1.4 2019-09-18]
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
Removed self targetting, all skills can be used on any target
|
Removed self targetting, all skills can be used on any target
|
||||||
|
|||||||
17
WORKLOG.md
17
WORKLOG.md
@ -1,20 +1,25 @@
|
|||||||
# WORK WORK
|
# WORK WORK
|
||||||
## NOW (Before PAX)
|
## NOW
|
||||||
|
|
||||||
*PRODUCTION*
|
*PRODUCTION*
|
||||||
|
|
||||||
|
* border colours for skills e.g. strike red border, slay half red half green
|
||||||
|
* rename vbox to shop
|
||||||
|
* combat phase info system
|
||||||
|
* drag and drop buy / equip / unequip items
|
||||||
|
|
||||||
* mobile styles
|
* mobile styles
|
||||||
* mobile info page
|
* mobile info page
|
||||||
|
|
||||||
* fix info page for tablet layout
|
* fix info page for tablet layout
|
||||||
|
|
||||||
* Add TOS and accept to register page
|
|
||||||
|
|
||||||
* can't reset password without knowing password =\
|
* can't reset password without knowing password =\
|
||||||
|
|
||||||
## SOON (Before or After PAX)
|
|
||||||
|
|
||||||
* Invert recharge
|
* Invert recharge
|
||||||
|
|
||||||
|
## SOON
|
||||||
|
|
||||||
|
* equip from shop (buy and equip without putting in your inventory) for bases
|
||||||
|
|
||||||
* bot game grind
|
* bot game grind
|
||||||
* ACP
|
* ACP
|
||||||
* essential
|
* essential
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "mnml-client",
|
"name": "mnml-client",
|
||||||
"version": "1.5.4",
|
"version": "1.5.5",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@ -205,7 +205,6 @@
|
|||||||
.resolving-skill {
|
.resolving-skill {
|
||||||
grid-area: target;
|
grid-area: target;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
text-align: center;
|
|
||||||
height: auto;
|
height: auto;
|
||||||
svg {
|
svg {
|
||||||
display: inline;
|
display: inline;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "mnml-client",
|
"name": "mnml-client",
|
||||||
"version": "1.5.4",
|
"version": "1.5.5",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@ -30,23 +30,21 @@ const store = createStore(
|
|||||||
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__(),
|
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__(),
|
||||||
);
|
);
|
||||||
|
|
||||||
document.fonts.load('16pt "Jura"').then(() => {
|
const events = registerEvents(store);
|
||||||
const events = registerEvents(store);
|
// store.subscribe(() => console.log(store.getState()));
|
||||||
// store.subscribe(() => console.log(store.getState()));
|
setupKeys(store);
|
||||||
setupKeys(store);
|
|
||||||
|
|
||||||
const ws = createSocket(events);
|
const ws = createSocket(events);
|
||||||
ws.connect();
|
ws.connect();
|
||||||
events.setWs(ws);
|
events.setWs(ws);
|
||||||
|
|
||||||
const App = () => (
|
const App = () => (
|
||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
<StripeProvider apiKey={stripeKey()}>
|
<StripeProvider apiKey={stripeKey()}>
|
||||||
<Mnml />
|
<Mnml />
|
||||||
</StripeProvider>
|
</StripeProvider>
|
||||||
</Provider>
|
</Provider>
|
||||||
);
|
);
|
||||||
|
|
||||||
// eslint-disable-next-line
|
// eslint-disable-next-line
|
||||||
preact.render(<App />, document.body);
|
preact.render(<App />, document.body);
|
||||||
});
|
|
||||||
|
|||||||
@ -49,9 +49,10 @@ function GameCtrlTopBtns(args) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const abandonClasses = `abandon ${abandonState ? 'confirming' : ''}`;
|
const abandonClasses = `abandon ${abandonState ? 'confirming' : ''}`;
|
||||||
|
const abandonText = abandonState ? 'Confirm' : 'Abandon';
|
||||||
const abandonAction = abandonState ? sendAbandon : abandonStateTrue;
|
const abandonAction = abandonState ? sendAbandon : abandonStateTrue;
|
||||||
|
|
||||||
const abandonBtn = <button class={abandonClasses} disabled={finished} onClick={abandonAction}>Abandon</button>;
|
const abandonBtn = <button class={abandonClasses} disabled={finished} onClick={abandonAction}>{abandonText}</button>;
|
||||||
const leaveBtn = <button class='abandon confirming' onClick={leave}>Leave</button>;
|
const leaveBtn = <button class='abandon confirming' onClick={leave}>Leave</button>;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@ -49,9 +49,10 @@ function InstanceTopBtns(args) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const abandonClasses = `abandon ${abandonState ? 'confirming' : ''}`;
|
const abandonClasses = `abandon ${abandonState ? 'confirming' : ''}`;
|
||||||
|
const abandonText = abandonState ? 'Confirm' : 'Abandon';
|
||||||
const abandonAction = abandonState ? sendAbandon : abandonStateTrue;
|
const abandonAction = abandonState ? sendAbandon : abandonStateTrue;
|
||||||
|
|
||||||
const abandonBtn = <button class={abandonClasses} disabled={finished} onClick={abandonAction}>Abandon</button>;
|
const abandonBtn = <button class={abandonClasses} disabled={finished} onClick={abandonAction}>{abandonText}</button>;
|
||||||
const leaveBtn = <button class='abandon confirming' onClick={leave}>Leave</button>;
|
const leaveBtn = <button class='abandon confirming' onClick={leave}>Leave</button>;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
const preact = require('preact');
|
const preact = require('preact');
|
||||||
const range = require('lodash/range');
|
const range = require('lodash/range');
|
||||||
|
const countBy = require('lodash/countBy');
|
||||||
const without = require('lodash/without');
|
const without = require('lodash/without');
|
||||||
const { connect } = require('preact-redux');
|
const { connect } = require('preact-redux');
|
||||||
|
|
||||||
@ -249,12 +250,35 @@ function Vbox(args) {
|
|||||||
if (vboxSelecting) clearVboxSelected();
|
if (vboxSelecting) clearVboxSelected();
|
||||||
if (reclaiming) return sendVboxReclaim(i);
|
if (reclaiming) return sendVboxReclaim(i);
|
||||||
|
|
||||||
|
// 4 things selected
|
||||||
|
if (combiner.length > 2) return combinerChange([i]);
|
||||||
|
|
||||||
|
// removing
|
||||||
const combinerIndex = combiner.indexOf(i);
|
const combinerIndex = combiner.indexOf(i);
|
||||||
if (combinerIndex > -1) {
|
if (combinerIndex > -1) {
|
||||||
return combinerChange(without(combiner, i));
|
return combinerChange(without(combiner, i));
|
||||||
}
|
}
|
||||||
|
|
||||||
combiner.push(i);
|
combiner.push(i);
|
||||||
|
|
||||||
|
// invalid combo
|
||||||
|
const combinerItems = combiner.map(j => vbox.bound[j]);
|
||||||
|
const combinerCounts = countBy(combinerItems, c => c);
|
||||||
|
|
||||||
|
// unless some combo
|
||||||
|
// contains every combinerItems
|
||||||
|
// and combinerItems.count of item >= components.count(item)
|
||||||
|
|
||||||
|
if (!itemInfo.combos
|
||||||
|
.some(combo => {
|
||||||
|
const comboCount = countBy(combo.components, c => c);
|
||||||
|
return combinerItems.every(c =>
|
||||||
|
combo.components.includes(c) && comboCount[c] >= combinerCounts[c]
|
||||||
|
);
|
||||||
|
})) {
|
||||||
|
return combinerChange([i]);
|
||||||
|
}
|
||||||
|
|
||||||
return combinerChange(combiner);
|
return combinerChange(combiner);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "mnml-ops",
|
"name": "mnml-ops",
|
||||||
"version": "1.5.4",
|
"version": "1.5.5",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "mnml"
|
name = "mnml"
|
||||||
version = "1.5.4"
|
version = "1.5.5"
|
||||||
authors = ["ntr <ntr@smokestack.io>"]
|
authors = ["ntr <ntr@smokestack.io>"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
@ -1080,9 +1080,9 @@ impl Skill {
|
|||||||
Skill::PurifyPlus |
|
Skill::PurifyPlus |
|
||||||
Skill::PurifyPlusPlus => None,
|
Skill::PurifyPlusPlus => None,
|
||||||
|
|
||||||
Skill::Purge=> None,
|
Skill::Purge=> Some(1),
|
||||||
Skill::PurgePlus => None,
|
Skill::PurgePlus => Some(1),
|
||||||
Skill::PurgePlusPlus => None,
|
Skill::PurgePlusPlus => Some(1),
|
||||||
|
|
||||||
Skill::Banish |
|
Skill::Banish |
|
||||||
Skill::BanishPlus |
|
Skill::BanishPlus |
|
||||||
@ -1804,7 +1804,8 @@ fn purge(source: &mut Construct, target: &mut Construct, mut results: Resolution
|
|||||||
}) {
|
}) {
|
||||||
let ce = target.effects.remove(i);
|
let ce = target.effects.remove(i);
|
||||||
results.push(Resolution::new(source, target)
|
results.push(Resolution::new(source, target)
|
||||||
.event(Event::Removal { effect: ce.effect, construct_effects: target.effects.clone() }));
|
.event(Event::Removal { effect: ce.effect, construct_effects: target.effects.clone() })
|
||||||
|
.stages(EventStages::PostOnly));
|
||||||
}
|
}
|
||||||
|
|
||||||
let effect = skill.effect()[0];
|
let effect = skill.effect()[0];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user