diff --git a/CHANGELOG.md b/CHANGELOG.md index 89a21131..3dca06b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,3 @@ -# Change Log -All notable changes to this project will be documented in this file. -This project adheres to [Semantic Versioning](http://semver.org/). - ## [1.8.1] - 2019-11-07 ### Fixed @@ -12,27 +8,28 @@ This project adheres to [Semantic Versioning](http://semver.org/). - Background for text overlapping with avatars in game phase (mobile) - Fixed issue where effect text would show when not highlighted - Avatar size doesn't decrease as effects are applied (now overlap) + - Added back KO! event when a construct is knocked out - Invert - Now reverses recharge into damage + - Now reverses recharge into damage - Link - Reworked completely - Now stuns target for 1T with 1T CD - Deals 20/45/70% blue power multiplied by number of effects on target as blue damage - Applies stun before effect multiplier calculation + - Reworked completely + - Now stuns target for 1T with 1T CD + - Deals 20/45/70% blue power multiplied by number of effects on target as blue damage + - Applies stun before effect multiplier calculation - Restrict - Changed cooldown from 2T -> 1T - Duration now 2T at all levels + - Changed cooldown from 2T -> 1T + - Duration now 2T at all levels - Ruin - Cooldown now 2T at all levels (down from 3T) - Now deals damage to each target (40/70/100)% + - Cooldown now 2T at all levels (down from 3T) + - Now deals damage to each target (40/70/100)% - Silence - Changed cooldown from 2T -> 1T - Duration now 2T at all levels + - Changed cooldown from 2T -> 1T + - Duration now 2T at all levels ## [1.8.0] - 2019-11-06 @@ -61,7 +58,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). - Game constructs and animations are much larger in mobile view - Amplify - Now increases green power + - Now increases green power - Absorb - Reduced duration and cooldown from 2T -> 1T (Absorption duration unchanged) @@ -69,13 +66,13 @@ This project adheres to [Semantic Versioning](http://semver.org/). - Now recharges blue life based on 95 / 120 / 155 blue power - Banish - Reduced cooldown to 1T + - Reduced cooldown to 1T - Decay - Removed cooldown + - Removed cooldown - Haste / Hybrid - Fixed issue when hybridblast and hastestrike wouldn't trigger from upgraded + skills + - Fixed issue when hybridblast and hastestrike wouldn't trigger from upgraded + skills - Intercept - Reduced duration to 1T down from 2T @@ -104,7 +101,8 @@ This project adheres to [Semantic Versioning](http://semver.org/). - Made general performance improvements - Now has default tutorial text for the first round (tells the player to select skills and then the targets) -- Moved the login page demo to a new info tab, increased the speed of demo and it now creates random combos +- Moved the login page demo to a new info tab +- Increased the speed of demo and it now creates random combos - Banish - Cooldown reduced to 2T (was 3T) @@ -247,245 +245,4 @@ We've updated the UI during the vbox / buy phase to give a better indication of * You can no longer select invalid combinations. * Controls - * Abandon button now asks for confirmation. - -## [1.1.5] - 2019-10-10 -### Changed -`Recharge` Skill multiplier reduced 85/130/200 -> 70/110/170 -`Absorption` Skill duration reduced 5/7/9 -> 3/5/7 - -## [1.1.4 2019-09-18] - -### Changed -Removed self targetting, all skills can be used on any target - -`Reflect` No cooldown, 1T duration -`Purify` No cooldown -`Recharge` No cooldown - -`Banish` - Now deals 40 / 75 / 125% target red / blue life before applying banish debuff - Constant 2T duration at all levels - Constant 3T cooldown at all levels - -`Link` reworked -> - Stuns caster for 3/2/1T - If target has higher green life than caster: - Deal blue damage to target equal to difference between green life - Heal with green damage to source equal to difference between green life - -`Counter` effect no longer applies immunities - Counter no cooldown - Counter applies for 1T - Counter skill now applies block at 40% / 60% / 80% reduction for 1T - Counter no longer recharges red life - -`Electrify` - No Cooldown - Duration -> 1T - Electrocute duration now 2/3/4T - -`Sustain` - Now has 1T cooldown at all levels - Has 1T duration at all levels - Now recharges red life to target (120 / 150 / 230)% - - -## [0.1.3 2019-??-??] - -### Added - -Added `Buff` as a skill - Increases Speed and RedDamage by 25% - Duration 2T - No CD - -### Changed - -`Sustain` now grants immunity to disables. - -## [0.1.2] - 2019-05-07 -### Added - -New skill `Link ` - Combines - Buff + BB - Links targets together so dmg taken is split - Recharge 140% source blue damage as blue life to target - -New skill `Hybrid` - Combines - Buff + GB - New buff that does the following - - Increase target green damage by 50% - Blue attacks do an additional blast equal to 25% source green damage - -### Fixed - -- Ruin sends a skill event so ruin only casts once, followed by debuffs -- Client side skip for source strangling effect straight to POST_SKILL - -### Changed - -- Removed Empower (Buff + RR) -> combined effect with amplify -- Skill Slow removed - -- Debuff is now a usable skill `(add buff as a usable skill also)` - Applies slow effect previously applied by skill Slow - Slow effect lasts 3T - Cooldown 1T - -- Amplify - Changed to Buff + RB (was Buff + BB) - Inc red and blue multiplier changed 200% -> 150% - Increases both red and blue power. - -- Attack - Multiplier changed 100% -> 80% - -- Blast - Multiplier changed 130% -> 110% - -- Chaos - Base Multiplier changed 50% -> 40% - RNG range changed from (0 - 20%) -> (0 - 30%) - Same dmg range but more RNG - -- Curse - Inc red and blue multiplier changed 200% -> 150% - `(More reworks soon to make this skill fun)` - -- Haste - Changed to Buff + RG (was Buff + RB) - Buff causes target to deal an extra attack when using red attack base skills (strike / slay / chaos) - Extra attack does 25% source speed as red damage - Cooldown increased to 2T - Speed bonus reduced 200% -> 150% - -- Heal - Changed multiplier 120% -> 130% - -- Counter - Changed duration 1T -> 2T - Changed cooldown 0T -> 2T - Now recharges 110% red damage as red life - CounterAttack multiplier reduced 100% -> 70% - -- Siphon - Multiplier changed 30% -> 40% - -- Strangle - No longer provides immunity to source or target - Damage multiplier for strangle tick changed 30% -> 65% - -- Strike - Change multipliers T1/T2/T3 (110/130/150 -> 90/110/130) - -- Intercept - Changed to Buff + RR (was Buff + RG) - Now recharges 80% source red damage as red life to target - -- Break - Stun duration reduced from 2T -> 1T - Vulnerable dmg bonus reduced 200% -> 150% - -- Triage - Multiplier changed 65% -> 75% - - -## [Unreleased] -## [0.1.1] - 2019-05-03 ->>>>>>> rebalance -### Added - Event::Skill - needed to convey the use of skill which is followed by other events - used for skill Purify to show that it is used and then followed by removal and other events - New Skill `Sleep` - Combined using Stun + GG - Stuns target for 3T (might need to be 4T) - Deals 240% green damage (heal) - Concept - high duration stun with the drawback of a big heal on the target - Base cooldown 3T - (Could be played aggressively or defensively) - -### Fixed - -### Changed - Switch purify with reflect - - Purify - Now GG + block (was GB + block) - Now applies a small heal 45% multiplier green damage (power) for each debuff removed - - - Reflect - Now GB + block (was GG + block) - Recharges blue life at 45% blue damage - - - Server function recharge changed to take skill, red amount and blue amount as inputs - - - Recharge Skill reworked - No longer restores full Red and Blue life - Now restores Red life and Blue life based on respective red and blue damage - Recharge value calculated at 85% multiplier with red and blue damage - - Silence - No longer Stun + GB (already exists as debuff BB) - Now also deals damage amount of 55% base blue damage - This damage amount does 45% more damage per blue skill blocked - Maximum = (0.55)(1.35)*base_blue_damage - Cooldown changed 1T -> 2T - Debuff duration increased 2T -> 3T - Restrict - Now also deals damage amount of 40% base blue damage - This damage amount does 45% more damage per red skill blocked - Maximum = (0.40)(1.35)*base_red_damage - Cooldown changed 1T -> 2T - Debuff duration increased 2T -> 3T - - - Switch sustain with intercept - Sustain now GR + Block (was GR + Buff) - Intercept now GR + Buff - No longer self-target only - - - Hex is now Stun + GB (was Stun + RB) - Banish is now Stun + RB (was Stun + RG) for rng theme - Break is now Stun + RG (was Stun + GG) - - Better fit as it applies inc Red taken debuff (vulnerability) - - -## [0.1.0] - 2019-05-02 -### Added - New skill `Chaos` - - 50% base red & blue with an additional rng 20% blue & red - - Combo'd with Attack + Red + Blue - - New skill `Slay` - - 70% base red, heals (green damage) for equivalent dmg dealt - - Combo'd with Attack + Red + Green - - New effect `Wither` - - Reduces green damage taken by 50% - -### Fixed -- Siphon deals damage before applying heal -- Changed tests to incorporate skill damage multipliers - -### Changed -- Changed Decay, Siphon and Purify vbox items - `Decay` - - 1 blue + 1 green + debuff - - now also applies new debuff `Wither` - - Cooldown increased 0T -> 1T - `Siphon` - - 1 blue + 1 green + attack - - Cooldown reduced 1T -> 0T - `Purify` 1 blue + 1 green + block - -- Changed skill damage multipliers - `Blast` 100% -> 130% - `ElectrocuteTick` 100% -> 80% - `Decay` 50% -> 25% - `Heal` 100% -> 120% - `SiphonTick` 100% -> 30% - `StrangleTick` 100% -> 30% - `Strike` 100% -> 110% - `TriageTick` 100% -> 65% \ No newline at end of file + * Abandon button now asks for confirmation. \ No newline at end of file diff --git a/client/assets/styles/colours.less b/client/assets/styles/colours.less index f3ea9020..8b4447ab 100644 --- a/client/assets/styles/colours.less +++ b/client/assets/styles/colours.less @@ -181,3 +181,12 @@ button { color: @blue; } } + +@keyframes target-ko { + 0% { + opacity: 100%; + } + 100% { + opacity: 20%; + } +} \ No newline at end of file diff --git a/client/assets/styles/game.less b/client/assets/styles/game.less index 0f446446..ef57d19b 100644 --- a/client/assets/styles/game.less +++ b/client/assets/styles/game.less @@ -10,10 +10,6 @@ // "opponent" // "target " // "player "; - - .skill-description { - font-size: 75%; - } } .game .team, .faceoff .team { @@ -101,7 +97,7 @@ justify-items: center; grid-template-columns: 1fr; - grid-template-rows: 1fr 2fr; + grid-template-rows: minmax(min-content, 1fr) min-content; grid-template-areas: "left" "right"; @@ -205,6 +201,10 @@ font-size: 100%; } + &.ko-transition { + animation: target-ko 1s ease-in-out 0s 1; + } + &.ko { animation: none; opacity: 0.20; diff --git a/client/assets/styles/styles.mobile.less b/client/assets/styles/styles.mobile.less index c0e8798b..e46e31a0 100644 --- a/client/assets/styles/styles.mobile.less +++ b/client/assets/styles/styles.mobile.less @@ -40,7 +40,7 @@ } svg { - height: 1em; + height: 1.5em; } } @@ -54,6 +54,13 @@ font-size: 1em; } + .skill-description { + font-size: 0.8em; + svg { + height: 1em; + } + } + .player { .game-construct { grid-template-areas: @@ -85,7 +92,7 @@ } .avatar { - bottom: 0px; + top: 3em; } } } diff --git a/client/src/animations.utils.jsx b/client/src/animations.utils.jsx index f749e43f..ad926a8f 100644 --- a/client/src/animations.utils.jsx +++ b/client/src/animations.utils.jsx @@ -111,7 +111,7 @@ function getText(resolution) { function generatePostSkill() { const [type, event] = resolution.event; if (type === 'Ko') { - return { text: 'KO!', css: 'ko' }; + return { text: 'KO!', css: 'ko-transition' }; } if (type === 'Disable') { diff --git a/client/src/components/game.construct.jsx b/client/src/components/game.construct.jsx index d1880edf..68df7d47 100644 --- a/client/src/components/game.construct.jsx +++ b/client/src/components/game.construct.jsx @@ -117,7 +117,8 @@ class GameConstruct extends Component { setGameEffectInfo, } = this.props; - const ko = construct.green_life.value === 0 ? 'ko' : ''; + const koEvent = animText ? animText.text === 'KO!' && animText.constructId === construct.id : false; + const ko = construct.green_life.value === 0 && !koEvent ? 'ko' : ''; const classes = eventClasses(animating, animFocus, construct, animText); const stats = ['RedLife', 'GreenLife', 'BlueLife'].map((s, j) => ( @@ -146,11 +147,9 @@ class GameConstruct extends Component { const speed = Speed {shapes.SpeedStat()} multiplier {fullInfo.speed * 4}% ; return (
- -

{gameSkillInfo.skill}

- {infoDescription} - {speed} -
+

{gameSkillInfo.skill}

+ {infoDescription} + {speed}
); } const effects = construct.effects.length diff --git a/server/src/construct.rs b/server/src/construct.rs index 6d7c2ea8..bce0d5c0 100644 --- a/server/src/construct.rs +++ b/server/src/construct.rs @@ -554,7 +554,9 @@ impl Construct { // Should red type immunity block recharge??? if let Some(immunity) = self.immune(skill) { - events.push(Event::Immunity { skill, immunity }); + if !self.is_ko() { + events.push(Event::Immunity { skill, immunity }); + } return events; } @@ -642,10 +644,9 @@ impl Construct { pub fn deal_green_damage(&mut self, skill: Skill, amount: u64) -> Vec { let mut events = vec![]; if let Some(immunity) = self.immune(skill) { - events.push(Event::Immunity { - immunity, - skill, - }); + if !self.is_ko() { + events.push(Event::Immunity { skill, immunity }); + } return events; } @@ -696,10 +697,9 @@ impl Construct { let mut events = vec![]; if let Some(immunity) = self.immune(skill) { - events.push(Event::Immunity { - skill, - immunity, - }); + if !self.is_ko() { + events.push(Event::Immunity { skill, immunity }); + } return events; } @@ -769,10 +769,9 @@ impl Construct { let mut events = vec![]; if let Some(immunity) = self.immune(skill) { - events.push(Event::Immunity { - skill, - immunity, - }); + if !self.is_ko() { + events.push(Event::Immunity { skill, immunity }); + } return events; } diff --git a/server/src/game.rs b/server/src/game.rs index ead95592..02854483 100644 --- a/server/src/game.rs +++ b/server/src/game.rs @@ -469,6 +469,14 @@ impl Game { let mut resolutions = resolution_steps(&cast, &mut self); r_animation_ms = resolutions.iter().fold(r_animation_ms, |acc, r| acc + r.clone().get_delay()); + + + // the cast itself goes into this temp vec to handle cooldowns + // if theres no resolution events, the skill didn't trigger (disable etc) + if resolutions.len() > 0 { + casts.push(cast); + } + self.resolved.append(&mut resolutions); // while let Some(resolution) = resolutions.pop() { @@ -477,10 +485,6 @@ impl Game { // self.resolved.push(resolution); // } - // the cast itself goes into this temp vec - // to handle cooldowns - casts.push(cast); - // sort the stack again in case speeds have changed self.stack_sort_speed(); }; diff --git a/server/src/skill.rs b/server/src/skill.rs index f0c5fe16..33f7ea3c 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -353,8 +353,8 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) -> }; if target.is_ko() { - // resolutions.push(Resolution::new(&source, &target).event(Event::Ko()).stages(EventStages::PostOnly)); target.effects.clear(); + resolutions.push(Resolution::new(&source, &target).event(Event::Ko()).stages(EventStages::PostOnly)); } game.update_construct(&mut source);