From e40291cdaace4b4ca94698b302c22de682b0a82b Mon Sep 17 00:00:00 2001 From: ntr Date: Thu, 2 May 2019 09:47:50 +1000 Subject: [PATCH 1/4] effects on enemies --- client/cryps.css | 15 +++++++-------- client/src/components/game.component.jsx | 17 ++++++++++++----- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/client/cryps.css b/client/cryps.css index 4b98de1e..3ee86ce6 100644 --- a/client/cryps.css +++ b/client/cryps.css @@ -634,6 +634,11 @@ table td svg { height: 100%; } +.cryp-box .effects { + height: 100%; + font-size: 1.5em; +} + .cryp-skill-btn { flex: 1 1 100%; font-size: 16pt; @@ -708,14 +713,8 @@ table td svg { padding: 0; } -.team-opponent .cryp-box-top { - flex-flow: column; - justify-content: center; - align-items: stretch; -} - -.team-opponent .cryp-box-top figure { - flex: 1; +.team-opponent .cryp-box .img { + order: 5; } /*.logs { diff --git a/client/src/components/game.component.jsx b/client/src/components/game.component.jsx index 809fef49..d3604a3a 100644 --- a/client/src/components/game.component.jsx +++ b/client/src/components/game.component.jsx @@ -153,11 +153,18 @@ function GamePanel(props) { className={`cryp-box ${ko} ${classes}`} style={ activeSkill ? { cursor: 'pointer' } : {}} onClick={() => selectSkillTarget(cryp.id)} > -
- {crypAvatar(cryp.name)} - {combatTextEl} -
{cryp.name}
-
+
+
selectSkillTarget(cryp.id)} > + {crypAvatar(cryp.name)} + {combatTextEl} +
{cryp.name}
+
+
+ {cryp.effects.map(c => {c.effect} - {c.duration}T)} +
+
{stats}
From 9fc799b9f69bb2509931185a2887730ee0c31dba Mon Sep 17 00:00:00 2001 From: ntr Date: Thu, 2 May 2019 09:49:24 +1000 Subject: [PATCH 2/4] fix siphon order --- server/src/skill.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/src/skill.rs b/server/src/skill.rs index 997e78f8..c4780dbe 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -74,7 +74,7 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio Skill::Strike => strike(source, target, resolutions, Skill::Strike), Skill::StrikeII => strike(source, target, resolutions, Skill::StrikeII), Skill::StrikeIII => strike(source, target, resolutions, Skill::StrikeIII), - + Skill::Stun => stun(source, target, resolutions, Skill::Stun), Skill::Taunt => taunt(source, target, resolutions, Skill::Taunt), Skill::Throw => throw(source, target, resolutions, Skill::Throw), // no damage stun, adds vulnerable @@ -1100,6 +1100,8 @@ fn siphon_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, s let siphon_events = target.deal_blue_damage(Skill::SiphonTick, amount); for e in siphon_events { + results.push(Resolution::new(source, target).event(e)); + match e { Event::Damage { amount, mitigation: _, colour: _, skill: _ } => { let heal = source.deal_green_damage(Skill::Siphon, amount); @@ -1109,8 +1111,6 @@ fn siphon_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, s }, _ => (), } - - results.push(Resolution::new(source, target).event(e)); } return results; From f93aba866fd031a14b22feec9486d4bbc05d93de Mon Sep 17 00:00:00 2001 From: ntr Date: Thu, 2 May 2019 11:40:08 +1000 Subject: [PATCH 3/4] cryp animations --- client/package.json | 2 ++ client/src/events.jsx | 22 +++++++++++++++++++++- server/src/skill.rs | 7 +++---- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/client/package.json b/client/package.json index a7b4f1de..659493d8 100644 --- a/client/package.json +++ b/client/package.json @@ -12,6 +12,8 @@ "author": "", "license": "UNLICENSED", "dependencies": { + "anime": "^0.1.2", + "animejs": "^3.0.1", "async": "^2.6.2", "borc": "^2.0.3", "bulma-toast": "^1.2.0", diff --git a/client/src/events.jsx b/client/src/events.jsx index 69beee55..689ca37d 100644 --- a/client/src/events.jsx +++ b/client/src/events.jsx @@ -1,5 +1,7 @@ const toast = require('izitoast'); const eachSeries = require('async/eachSeries'); +const anime = require('animejs').default; +const range = require('lodash/range'); const actions = require('./actions'); const { TIMES } = require('./constants'); @@ -9,12 +11,30 @@ function registerEvents(store) { // timeout handlers store.subscribe(() => { - const { game, instance, ws} = store.getState(); + const { game, instance, cryps, ws} = store.getState(); if (!game) ws.clearGameStateTimeout(); if (!instance) ws.clearInstanceStateTimeout(); }); + + // cryp animations + function crypAnimations() { + anime({ + targets: 'img', + translateX: () => anime.random(-20, 20), + translateY: () => anime.random(-20, 20), + rotate: () => anime.random(-90, 90), + duration: () => anime.random(5000, 6000), + delay: () => anime.random(0, 1000), + direction: 'alternate', + easing: 'linear', + loop: true, + }); + } + setInterval(crypAnimations, 5000); + crypAnimations(); + function setCryps(cryps) { console.log('EVENT ->', 'cryps', cryps); } diff --git a/server/src/skill.rs b/server/src/skill.rs index 0c767f6b..a11269ca 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -1137,13 +1137,12 @@ fn siphon_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, s let siphon_events = target.deal_blue_damage(Skill::SiphonTick, amount); for e in siphon_events { - results.push(Resolution::new(source, target).event(e)); - match e { Event::Damage { amount, mitigation: _, colour: _, skill: _ } => { + results.push(Resolution::new(source, target).event(e)); let heal = source.deal_green_damage(Skill::Siphon, amount); - for e in heal { - results.push(Resolution::new(source, source).event(e)); + for h in heal { + results.push(Resolution::new(source, source).event(h)); }; }, _ => (), From 4758ae1987858fb5a989c10a93c36afe1122445f Mon Sep 17 00:00:00 2001 From: ntr Date: Thu, 2 May 2019 11:51:56 +1000 Subject: [PATCH 4/4] siphon test fix --- client/src/events.jsx | 5 +++-- server/src/skill.rs | 13 ++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/client/src/events.jsx b/client/src/events.jsx index 689ca37d..c272ab88 100644 --- a/client/src/events.jsx +++ b/client/src/events.jsx @@ -20,13 +20,14 @@ function registerEvents(store) { // cryp animations function crypAnimations() { - anime({ + const cryps = document.querySelectorAll('img'); + if (!cryps.length) return window.requestAnimationFrame(crypAnimations); + return anime({ targets: 'img', translateX: () => anime.random(-20, 20), translateY: () => anime.random(-20, 20), rotate: () => anime.random(-90, 90), duration: () => anime.random(5000, 6000), - delay: () => anime.random(0, 1000), direction: 'alternate', easing: 'linear', loop: true, diff --git a/server/src/skill.rs b/server/src/skill.rs index a11269ca..e04aa052 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -1378,6 +1378,12 @@ mod tests { _ => panic!("not siphon"), }; + let Resolution { source: _, target: _, event } = results.remove(0); + match event { + Event::Damage { amount, skill: _, mitigation: _, colour: _} => assert_eq!(amount, 256), + _ => panic!("not damage siphon"), + }; + let Resolution { source: _, target, event } = results.remove(0); match event { Event::Healing { amount, skill: _, overhealing: _ } => { @@ -1386,13 +1392,6 @@ mod tests { }, _ => panic!("not healing"), }; - - let Resolution { source: _, target: _, event } = results.remove(0); - match event { - Event::Damage { amount, skill: _, mitigation: _, colour: _} => assert_eq!(amount, 256), - _ => panic!("not damage siphon"), - }; - }