mirror of
https://github.com/Sandstorm-Station/Sandstorm-Station-13.git
synced 2026-08-17 18:26:57 +01:00
25 lines
976 B
Plaintext
25 lines
976 B
Plaintext
/datum/controller/subsystem/processing/quirks/AssignQuirks(mob/living/user, client/cli, spawn_effects, roundstart = FALSE, datum/job/job, silent = FALSE, mob/to_chat_target)
|
|
. = ..()
|
|
var/list/my_quirks = cli.prefs.all_quirks.Copy()
|
|
var/list/cut_because_balance = check_and_cut_balance(my_quirks)
|
|
if(LAZYLEN(cut_because_balance))
|
|
to_chat(to_chat_target || user, span_boldwarning("Some quirks have been cut from your character due to invalid balance: [english_list(cut_because_balance)]"))
|
|
|
|
/// Code to automatically reduce positive quirks until balance is even.
|
|
/datum/controller/subsystem/processing/quirks/proc/check_and_cut_balance(list/our_quirks)
|
|
var/list/cut = list()
|
|
var/points_used = total_points(our_quirks)
|
|
|
|
if(points_used > 0)
|
|
//they owe us points, let's collect.
|
|
for(var/i in our_quirks)
|
|
var/points = quirk_points_by_name(i)
|
|
if(points > 0)
|
|
cut += i
|
|
our_quirks -= i
|
|
points_used -= points
|
|
if(points_used <= 0)
|
|
break
|
|
|
|
return cut
|