diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm
index ba29205452..719735392d 100644
--- a/code/__HELPERS/_lists.dm
+++ b/code/__HELPERS/_lists.dm
@@ -69,7 +69,7 @@
/proc/english_list(list/input, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" )
var/total = input.len
if (!total)
- return "[nothing_text]"
+ return nothing_text
else if (total == 1)
return "[input[1]]"
else if (total == 2)
diff --git a/code/datums/skills/_check_skills.dm b/code/datums/skills/_check_skills.dm
index 30f105ab4b..dc33166581 100644
--- a/code/datums/skills/_check_skills.dm
+++ b/code/datums/skills/_check_skills.dm
@@ -28,6 +28,15 @@
. = list()
var/datum/asset/spritesheet/simple/assets = get_asset_datum(/datum/asset/spritesheet/simple/skills)
+ var/all_mods = list()
+ for(var/id in all_current_skill_modifiers)
+ var/datum/skill_modifier/M = GLOB.skill_modifiers[id]
+ all_mods[id] = list(
+ name = M.name,
+ desc = M.desc,
+ icon = assets.icon_class_name(M.icon)
+ )
+
.["categories"] = list()
var/list/current
var/category
@@ -42,12 +51,15 @@
var/skill_value = owner.get_skill_value(path, FALSE)
var/skill_level = owner.get_skill_level(path, FALSE)
+ var/list/mod_list = list()
+ var/list/modifiers
var/list/mod_ids = list()
var/value_mods = LAZYACCESS(skill_value_mods, path)
var/mod_value = skill_value
for(var/k in value_mods)
var/datum/skill_modifier/M = GLOB.skill_modifiers[k]
+ mod_list |= M.name
mod_ids |= M.identifier
mod_value = M.apply_modifier(mod_value, path, src, MODIFIER_TARGET_VALUE)
@@ -55,16 +67,24 @@
var/mod_level = skill_level
for(var/k in lvl_mods)
var/datum/skill_modifier/M = GLOB.skill_modifiers[k]
+ mod_list |= M.name
mod_ids |= M.identifier
mod_level = M.apply_modifier(mod_level, path, src, MODIFIER_TARGET_LEVEL)
mod_level = SANITIZE_SKILL_LEVEL(S.type, round(mod_level, 1))
+ for(var/k in mod_ids)
+ var/list/mod = all_current_skill_modifiers[k]
+ if(mod)
+ LAZYADD(modifiers, list(mod))
+
var/list/data = list(
name = S.name,
+ desc = S.desc,
color = S.name_color,
skill_base = S.standard_render_value(skill_value, skill_level),
skill_mod = S.standard_render_value(mod_value, mod_level),
- mod_ids = mod_ids
+ mods_tooltip = english_list(mod_list, null),
+ modifiers = modifiers
)
current += list(data)
@@ -72,17 +92,6 @@
var/list/cat = list("name" = category, "skills" = current)
.["categories"] += list(cat)
-
- var/all_mods = list()
- for(var/id in all_current_skill_modifiers)
- var/datum/skill_modifier/M = GLOB.skill_modifiers[id]
- all_mods[id] = list(
- name = M.name,
- desc = M.desc,
- icon = assets.icon_class_name(M.icon)
- )
- .["modifiers"] = all_mods
-
/datum/skill_holder/ui_data(mob/user)
. = list()
.["see_skill_mods"] = see_skill_mods
diff --git a/tgui-next/packages/tgui/interfaces/Skills.js b/tgui-next/packages/tgui/interfaces/Skills.js
index 548d5ebee3..462990811d 100644
--- a/tgui-next/packages/tgui/interfaces/Skills.js
+++ b/tgui-next/packages/tgui/interfaces/Skills.js
@@ -1,120 +1,93 @@
import { decodeHtmlEntities } from 'common/string';
import { Component, Fragment } from 'inferno';
import { act } from '../byond';
-import { Box, Button, Input, Section, Table, Tabs } from '../components';
+import { Box, Button, Section, Table, Tabs } from '../components';
-// It's a class because we need to store state in the form of
-// the current hovered item
-export class Uplink extends Component {
- constructor() {
- super();
- this.state = {
- hoveredItem: {},
- };
- }
-
- setHoveredItem(hoveredItem) {
- this.setState({
- hoveredItem,
- });
- }
-
- render() {
- const { state } = this.props;
- const { config, data } = state;
- const { ref } = config;
- const {
- see_skill_mods,
- compact_mode,
- categories = [],
- } = data;
- return (
-