diff --git a/client/assets/styles/game.less b/client/assets/styles/game.less
index a87344e0..8c218584 100644
--- a/client/assets/styles/game.less
+++ b/client/assets/styles/game.less
@@ -264,7 +264,10 @@
padding-left: 1em;
padding-right: 1em;
text-align: center;
- background-color: black;
+ z-index: 2;
+ span {
+ background-color: black;
+ }
svg {
display: inline;
height: 1em;
diff --git a/client/src/components/game.construct.jsx b/client/src/components/game.construct.jsx
index 0a475f7a..d1880edf 100644
--- a/client/src/components/game.construct.jsx
+++ b/client/src/components/game.construct.jsx
@@ -143,12 +143,14 @@ class GameConstruct extends Component {
const fullInfo = itemInfo.items.find(k => k.item === gameSkillInfo.skill) || INFO[gameSkillInfo.skill];
const regEx = /(RedPower|BluePower|GreenPower|RedLife|BlueLife|GreenLife|SpeedStat)/;
const infoDescription = reactStringReplace(fullInfo.description, regEx, match => shapes[match]());
- const speed =
Speed {shapes.SpeedStat()} multiplier {fullInfo.speed * 4}%
;
+ 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/item.rs b/server/src/item.rs
index f4197a36..3a547063 100644
--- a/server/src/item.rs
+++ b/server/src/item.rs
@@ -859,11 +859,10 @@ impl Item {
Item::Link|
Item::LinkPlus |
Item::LinkPlusPlus => format!(
- "Swap {:?}% of green life difference as blue damage to the target and healing to the caster.
- The swap only occurs if the target construct has more green life than caster.
- Stuns caster for {:?}T in the process.",
- self.into_skill().unwrap().multiplier(),
- self.into_skill().unwrap().effect()[0].get_duration()),
+ "Stun target for {:?}T.
+ Deal blue damage of {:?}% BluePower multiplied by number of effects on target.",
+ self.into_skill().unwrap().effect()[0].get_duration(),
+ self.into_skill().unwrap().multiplier()),
Item::Silence|
Item::SilencePlus |
diff --git a/server/src/skill.rs b/server/src/skill.rs
index 3092f44f..f0c5fe16 100644
--- a/server/src/skill.rs
+++ b/server/src/skill.rs
@@ -823,9 +823,9 @@ impl Skill {
Skill::BashPlus => 65,
Skill::BashPlusPlus => 100,
- Skill::Link => 75,
- Skill::LinkPlus => 100,
- Skill::LinkPlusPlus => 150,
+ Skill::Link => 25,
+ Skill::LinkPlus => 40,
+ Skill::LinkPlusPlus => 70,
Skill::Ruin => 40,
Skill::RuinPlus => 70,
@@ -981,8 +981,8 @@ impl Skill {
Skill::PurgePlus => vec![ConstructEffect {effect: Effect::Purge, duration: 3, meta: None, tick: None}],
Skill::PurgePlusPlus => vec![ConstructEffect {effect: Effect::Purge, duration: 4, meta: None, tick: None}],
- Skill::Link => vec![ConstructEffect {effect: Effect::Stun, duration: 3, meta: None, tick: None}],
- Skill::LinkPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
+ Skill::Link => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
+ Skill::LinkPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
Skill::LinkPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
Skill::Silence => vec![ConstructEffect {effect: Effect::Silence, duration: 2, meta: None, tick: None}],
@@ -1098,7 +1098,7 @@ impl Skill {
Skill::Link |
Skill::LinkPlus |
- Skill::LinkPlusPlus => Some(2),
+ Skill::LinkPlusPlus => Some(1),
Skill::Silence |
Skill::SilencePlus |
@@ -1786,27 +1786,12 @@ fn siphon_tick(source: &mut Construct, target: &mut Construct, mut results: Reso
}
fn link(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
- let swap = match target.green_life().checked_sub(source.green_life()) {
- Some(s) => s.pct(skill.multiplier()),
- None => 0
- };
-
- let link_events = target.deal_blue_damage(skill, swap);
- for e in link_events {
- match e {
- Event::Damage { amount, mitigation: _, colour: _, skill: _ } => {
- results.push(Resolution::new(source, target).event(e));
- let heal = source.deal_green_damage(skill, amount);
- for h in heal {
- results.push(Resolution::new(source, source).event(h).stages(EventStages::PostOnly));
- };
- },
- _ => results.push(Resolution::new(source, target).event(e)),
- }
- }
-
- results.push(Resolution::new(source, source)
- .event(source.add_effect(skill, skill.effect()[0])).stages(EventStages::PostOnly));
+ results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()[0])));
+
+ let amount = source.blue_power().pct(skill.multiplier().saturating_mul(target.effects.len() as u64));
+ target.deal_blue_damage(skill, amount)
+ .into_iter()
+ .for_each(|e| results.push(Resolution::new(source, target).event(e).stages(EventStages::PostOnly)));
return results;
}