Mining Points Carryover (#22941)

* Mining points now carry over between rounds for each character.
* Mining point carryover is capped at 15,000 points and expires after
one week of inactivity.


AI usage disclosure: The code for this was created in-part using GPT 5.6
Sol.
This commit is contained in:
Geeves
2026-08-02 01:24:37 +00:00
committed by GitHub
parent 13beeb437a
commit 958a54adaa
8 changed files with 47 additions and 4 deletions
@@ -244,6 +244,36 @@
id_card.citizenship = SSrecords.get_citizenship_record_name(citizenship)
id_card.mob_id = WEAKREF(src)
id_card.employer_faction = employer_faction
INVOKE_ASYNC(id_card, TYPE_PROC_REF(/obj/item/card/id, load_mining_points))
/obj/item/card/id/proc/load_mining_points()
var/mob/living/carbon/human/card_owner = mob_id?.resolve()
if(!card_owner?.character_id)
return
var/datum/persistent_record/saved_balance = SSpersistence.historyGetLastRecord(
/singleton/persistent_type/history/character/mining_point_balance,
card_owner.character_id
)
if(!saved_balance)
return
mining_points = clamp(text2num(saved_balance.value), 0, MINING_POINTS_CARRYOVER_MAX)
/obj/item/card/id/proc/save_mining_points()
var/mob/living/carbon/human/card_owner = mob_id?.resolve()
if(!card_owner?.character_id)
return
SSpersistence.historyAddCharacterRecord(
/singleton/persistent_type/history/character/mining_point_balance,
card_owner.character_id,
"[clamp(mining_points, 0, MINING_POINTS_CARRYOVER_MAX)]"
)
/obj/item/card/id/proc/adjust_mining_points(amount)
mining_points = max(0, mining_points + amount)
save_mining_points()
/obj/item/card/id/proc/dat()
var/dat = ("<table><tr><td>")