Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.

Commit ba17312

Browse files
exploit fix
1 parent 9768a62 commit ba17312

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

code/_onclick/hud/hud.dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
4040
var/atom/movable/screen/rest_icon
4141
var/atom/movable/screen/throw_icon
4242
var/atom/movable/screen/module_store_icon
43-
var/atom/movable/screen/skill_menu
43+
var/atom/movable/screen/skill_menu/skill_menu
4444

4545
var/list/static_inventory = list() //the screen objects which are static
4646
var/list/toggleable_inventory = list() //the screen objects which can be hidden

code/datums/mind.dm

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -808,9 +808,15 @@
808808
/mob/proc/add_exp(skill, amount)
809809
if(!mind)
810810
return FALSE
811-
if(mind.exp_progress[skill] + amount >= EXPERIENCE_PER_LEVEL * (2**mind.skills[skill])) // exp required scales exponentially
812-
mind.exp_progress[skill] = 0
813-
adjust_skill(skill, 1)
811+
var/exp_required = EXPERIENCE_PER_LEVEL * (2**mind.skills[skill]) // exp required scales exponentially
812+
if(mind.exp_progress[skill] + amount >= exp_required)
813+
var/levels_gained = round(log(2, 1 + (mind.exp_progress[skill] + amount) / exp_required)) // in case you gained so much you go up more than one level
814+
var/levels_allocated = hud_used?.skill_menu ? hud_used.skill_menu.allocated_skills[skill] : 0
815+
if(levels_allocated > 0) // adjust any already allocated skills to prevent shenanigans (you know who you are)
816+
hud_used.skill_menu.allocated_points -= min(levels_gained, levels_allocated)
817+
hud_used.skill_menu.allocated_skills[skill] -= min(levels_gained, levels_allocated)
818+
mind.exp_progress[skill] += amount - exp_required * (2**(levels_gained - 1))
819+
adjust_skill(skill, levels_gained)
814820
to_chat(src, span_boldnotice("Your [skill] skill is now level [get_skill(skill)]!"))
815821
return TRUE
816822
mind.exp_progress[skill] += amount

0 commit comments

Comments
 (0)