diff --git a/client/assets/styles/instance.less b/client/assets/styles/instance.less index 4b7cd9de..04077c41 100644 --- a/client/assets/styles/instance.less +++ b/client/assets/styles/instance.less @@ -287,66 +287,80 @@ flex: 1 0 100%; } +// .equipping { +// position: relative; +// } + +// .equipping::before { +// content: ''; +// position: absolute; +// top: 2px; +// left: 50%; +// width: 100%; +// height: 2px; +// transform-origin: center; +// background-color: whitesmoke; +// animation: equipping-skill 2s infinite ease-out alternate; +// opacity: 0; +// } + +// .equipping::after { +// content: ''; +// position: absolute; +// bottom: 2px; +// left: 50%; +// width: 100%; +// height: 2px; +// transform-origin: center; +// background-color: whitesmoke; +// animation: equipping-skill 2s infinite ease-out alternate; +// opacity: 0; +// animation-delay: 0.75s +// } + +// @keyframes equipping-skill { +// from { +// transform: translate(-50%, 0) scaleX(0); +// } + +// to { +// transform: translate(-50%, 0) scaleX(0.75); +// opacity: 1; +// } +// } + +// .equip-spec { +// position: relative; +// stroke: #333; +// } + +// .equip-spec::after { +// content: ''; +// position: absolute; +// bottom: 2px; +// left: 50%; +// width: 100%; +// height: 2px; +// transform-origin: center; +// background-color: whitesmoke; +// animation: equipping-skill 2s infinite ease-out alternate; +// opacity: 0; +// } + .equipping { - position: relative; + animation: equipping 2s infinite ease-in-out alternate; } -.equipping::before { - content: ''; - position: absolute; - top: 2px; - left: 50%; - width: 100%; - height: 2px; - transform-origin: center; - background-color: whitesmoke; - animation: equipping-skill 2s infinite ease-out alternate; - opacity: 0; -} - -.equipping::after { - content: ''; - position: absolute; - bottom: 2px; - left: 50%; - width: 100%; - height: 2px; - transform-origin: center; - background-color: whitesmoke; - animation: equipping-skill 2s infinite ease-out alternate; - opacity: 0; - animation-delay: 0.75s -} - -@keyframes equipping-skill { +@keyframes equipping { from { - transform: translate(-50%, 0) scaleX(0); + border-color: #444; } to { - transform: translate(-50%, 0) scaleX(0.75); - opacity: 1; + border-color: whitesmoke; } } -.equip-spec { - position: relative; - stroke: #333; -} - -.equip-spec::after { - content: ''; - position: absolute; - bottom: 2px; - left: 50%; - width: 100%; - height: 2px; - transform-origin: center; - background-color: whitesmoke; - animation: equipping-skill 2s infinite ease-out alternate; - opacity: 0; -} - .thresholds { display: flex; flex-flow: column; diff --git a/client/assets/styles/vbox.less b/client/assets/styles/vbox.less index f1947ce3..4af09140 100644 --- a/client/assets/styles/vbox.less +++ b/client/assets/styles/vbox.less @@ -78,9 +78,18 @@ background: @white; border: 1px solid @white; + // overwrite the classes on white svg elements ellipse.white { stroke: black; } + + rect.white { + stroke: black; + } + + polygon.white { + stroke: black; + } } } diff --git a/client/src/animations.socket.jsx b/client/src/animations.socket.jsx index ce2e883e..c1567fa5 100644 --- a/client/src/animations.socket.jsx +++ b/client/src/animations.socket.jsx @@ -41,7 +41,10 @@ function createSocket(store) { store.dispatch(actions.setAnimFocus(animations.getFocusTargets(r))); if (sequence.includes('START_SKILL')) store.dispatch(actions.setAnimSource(anims.animSource)); - if (sequence.includes('END_SKILL')) store.dispatch(actions.setAnimTarget(anims.animTarget)); + if (sequence.includes('END_SKILL')) { + store.dispatch(actions.setAnimTarget(anims.animTarget)); + if (!['Banish', 'Invert'].includes(anims.animTarget.skill)) store.dispatch(actions.setAnimCb(cb)); + } if (sequence.includes('POST_SKILL')) { // timeout to prevent text classes from being added too soon setTimeout( @@ -49,15 +52,14 @@ function createSocket(store) { timeout - TIMES.POST_SKILL_DURATION_MS ); } - return setTimeout(() => { store.dispatch(actions.setAnimSource(null)); store.dispatch(actions.setAnimTarget(null)); store.dispatch(actions.setAnimText(null)); store.dispatch(actions.setAnimFocus([])); - // We currently need another small timeout so that everything can properly dismount / unload - // Otherwise 3 x Attack on same target will only render the first time - return setTimeout(cb, 200); + if (!sequence.includes('END_SKILL') + || ['Banish', 'Invert'].includes(anims.animTarget.skill)) return cb(); + return true; }, timeout); }, err => { if (err) return console.error(err); diff --git a/client/src/components/instance.constructs.jsx b/client/src/components/instance.constructs.jsx index bda246d2..5a027298 100644 --- a/client/src/components/instance.constructs.jsx +++ b/client/src/components/instance.constructs.jsx @@ -144,7 +144,7 @@ function Construct(props) { if (!s) { const equipping = specList.includes(vbox.bound[itemEquip]); - const classes = `${equipping ? 'equip-spec' : 'gray'} empty`; + const classes = `${equipping ? 'equipping' : 'gray'} empty`; return (