diff --git a/client/assets/styles/styles.less b/client/assets/styles/styles.less index 9680f077..aa852df9 100644 --- a/client/assets/styles/styles.less +++ b/client/assets/styles/styles.less @@ -117,6 +117,10 @@ dl { .logo { margin: 2em 0; } + + .list { + margin-bottom: 0; + } } } diff --git a/client/assets/styles/styles.mobile.less b/client/assets/styles/styles.mobile.less index 430627bc..e713faab 100644 --- a/client/assets/styles/styles.mobile.less +++ b/client/assets/styles/styles.mobile.less @@ -7,6 +7,12 @@ font-size: 8pt; padding: 0; + &.front-page { + main { + padding: 0 0.5em; + } + } + .instance { grid-template-areas: "vbox vbox" @@ -273,6 +279,9 @@ } .info-combiner { + max-height: 7em; + overflow-y: scroll; + .info { display: none; } diff --git a/client/src/components/front.page.jsx b/client/src/components/front.page.jsx index 565d7946..32cf3e16 100644 --- a/client/src/components/front.page.jsx +++ b/client/src/components/front.page.jsx @@ -75,9 +75,9 @@ function Play(args) {
{list()}
- {news} -
+
+ {news} ); } diff --git a/core/src/effect.rs b/core/src/effect.rs index 7db563f8..c1d98d39 100644 --- a/core/src/effect.rs +++ b/core/src/effect.rs @@ -75,38 +75,19 @@ impl Effect { match self { Effect::Banish => true, - // delete sustain immunitiy??? - /*Effect::Sustain => [ - Skill::Stun, - Skill::Silence, - Skill::SilencePlus, - Skill::SilencePlusPlus, - Skill::Ruin, - Skill::RuinPlus, - Skill::RuinPlusPlus, - Skill::Restrict, - Skill::RestrictPlus, - Skill::RestrictPlusPlus - ].contains(&skill),*/ - + // these provide immunity for the ticks + // the base skills will still resolve + // but they have early return checks + // to ensure the effect is reapplied but damage is not Effect::Siphoned => [ - Skill::Siphon, - Skill::SiphonPlus, - Skill::SiphonPlusPlus, Skill::SiphonTick, ].contains(&skill), Effect::Decayed => [ - Skill::Decay, - Skill::DecayPlus, - Skill::DecayPlusPlus, Skill::DecayTick, ].contains(&skill), Effect::Triaged => [ - Skill::Triage, - Skill::TriagePlus, - Skill::TriagePlusPlus, Skill::TriageTick, ].contains(&skill), diff --git a/core/src/game.rs b/core/src/game.rs index d35292d4..aa84d2b3 100644 --- a/core/src/game.rs +++ b/core/src/game.rs @@ -388,6 +388,11 @@ impl Game { let mut sorted = self.stack.clone(); sorted.iter_mut() .for_each(|s| { + + // we do not modify the speed of ticks + // as they are considered to be pinned to the speed + // that they were initially cast + if !s.skill.is_tick() { let caster = self.construct_by_id(s.source).unwrap(); let speed = caster.skill_speed(s.skill); @@ -452,7 +457,15 @@ impl Game { self.skill_phase_start(r_animation_ms) } - fn modify_cast(&self, cast: Cast) -> Vec { + fn modify_cast(&self, mut cast: Cast) -> Vec { + + // reassign the speeds based on the caster + // for test purposes + if !cast.skill.is_tick() { + let speed = self.construct(cast.source).skill_speed(cast.skill); + cast.speed = speed; + } + let target_player = self.players.iter() .find(|t| t.constructs.iter().any(|c| c.id == cast.target)) .unwrap(); @@ -499,11 +512,11 @@ impl Game { } let casts = self.modify_cast(cast); - - let castable = casts.clone() - .into_iter() + + let castable = casts + .iter() .any(|c| !self.construct(c.target).is_ko() && !self.construct(c.target).immune(c.skill).is_some()); - + if castable { self.action(cast, Action::Cast); if cast.skill.aoe() { @@ -639,11 +652,14 @@ impl Game { Value::TickDamage { construct, effect } => self.construct(construct).stat(Stat::TickDamage(effect)), - // Skills { construct: Uuid, colour: Colour }, } } + pub fn affected(&self, construct: Uuid, effect: Effect) -> bool { + self.construct(construct).affected(effect) + } + fn cast(&mut self, cast: Cast) -> Event { Event::Cast { construct: cast.source, player: cast.player, target: cast.target, skill: cast.skill, direction: self.direction(cast) } } @@ -840,6 +856,7 @@ pub enum Value { Removals { construct: Uuid }, DamageReceived { construct: Uuid, colour: Colour }, TickDamage { construct: Uuid, effect: Effect }, + // Affected { construct: Uuid, effect: Effect }, // not an int :( } #[derive(Debug,Clone,PartialEq)] diff --git a/core/src/skill.rs b/core/src/skill.rs index 9d4d3902..fcaf33f9 100644 --- a/core/src/skill.rs +++ b/core/src/skill.rs @@ -989,6 +989,10 @@ fn siphon(cast: Cast, game: &mut Game, values: Siphon) { } ); + // should only reapply the dot if they have already been hit by the dmg + // from either this or the tick + if game.affected(cast.target, Effect::Siphoned) { return; } + game.action(cast, Action::Damage { construct: cast.target, @@ -1580,6 +1584,8 @@ fn decay(cast: Cast, game: &mut Game, values: Decay) { } ); + if game.affected(cast.target, Effect::Decayed) { return; } + game.action(cast, Action::Effect { construct: cast.target, @@ -2194,6 +2200,9 @@ fn triage(cast: Cast, game: &mut Game, values: Triage) { Some(EffectMeta::CastTick { source: cast.source, target: cast.target, skill: Skill::TriageTick, speed: cast.speed, amount }) }, } ); + + if game.affected(cast.target, Effect::Triaged) { return; } + game.action(cast, Action::Heal { construct: cast.target,