Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions code/modules/client/preferences/middleware/quirks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@
/datum/preference_middleware/quirks/proc/give_quirk(list/params, mob/user)
var/quirk_name = params["quirk"]
// DARKPACK EDIT ADD - MERITS/FLAWS
var/datum/st_stat/freebie/freebie_points = preferences.preference_storyteller_stats["[STAT_FREEBIE_POINTS]"]
var/datum/st_stat/freebie/freebie_points = preferences.preference_storyteller_stats[STAT_FREEBIE_POINTS]
var/datum/quirk/quirk_type = SSquirks.quirks[quirk_name]
freebie_points.decrease_points(quirk_type.value)
// DARKPACK EDIT END - MERITS/FLAWS
Expand All @@ -140,7 +140,7 @@
/datum/preference_middleware/quirks/proc/remove_quirk(list/params, mob/user)
var/quirk_name = params["quirk"]
// DARKPACK EDIT ADD - MERITS/FLAWS
var/datum/st_stat/freebie/freebie_points = preferences.preference_storyteller_stats["[STAT_FREEBIE_POINTS]"]
var/datum/st_stat/freebie/freebie_points = preferences.preference_storyteller_stats[STAT_FREEBIE_POINTS]
var/datum/quirk/quirk_type = SSquirks.quirks[quirk_name]
freebie_points.increase_points(quirk_type.value)
// DARKPACK EDIT END - MERITS/FLAWS
Expand Down Expand Up @@ -172,7 +172,7 @@
//DARKPACK EDIT ADD - MERITS/FLAWS

/datum/preference_middleware/quirks/proc/get_freebie_points()
var/datum/st_stat/freebie/freebie_stat = preferences.preference_storyteller_stats["[STAT_FREEBIE_POINTS]"]
var/datum/st_stat/freebie/freebie_stat = preferences.preference_storyteller_stats[STAT_FREEBIE_POINTS]
if(!freebie_stat)
return null

Expand Down
20 changes: 14 additions & 6 deletions code/modules/client/preferences_savefile.dm
Original file line number Diff line number Diff line change
Expand Up @@ -414,16 +414,24 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
// DARKPACK EDIT ADD END

// DARKPACK EDIT ADD START - STORYTELLER_STATS
preference_storyteller_stats = list() // Ensure we dont have our stats from our old char slot.
if(!stats_list)
preference_storyteller_stats = create_new_stat_prefs(preference_storyteller_stats)
for(var/stat_path in stats_list)
var/proper_stat_path = text2path(stat_path)
var/proper_stat_path
if(ispath(stat_path, /datum/st_stat))
// I thought when its saved it becomes a string but that seems to not always be the case?
// I belive its because the json handling is held in byond after the first fetch?
proper_stat_path = stat_path
else
proper_stat_path = text2path(stat_path)
if(!proper_stat_path)
continue
var/datum/st_stat/stat = new proper_stat_path()
if(stats_list[stat_path]) // If the stat_path already exists in our savefile, update our datum.
stat.set_score(stats_list[stat_path][STAT_SCORE])
stat.set_points(stats_list[stat_path][STAT_POINTS])
stat.freebie_cost_spent = stats_list[stat_path][STAT_FREEBIE_COST_SPENT]
preference_storyteller_stats[stat_path] = stat
stat.set_score(stats_list[stat_path][STAT_SCORE])
stat.set_points(stats_list[stat_path][STAT_POINTS])
stat.freebie_cost_spent = stats_list[stat_path][STAT_FREEBIE_COST_SPENT]
preference_storyteller_stats[proper_stat_path] = stat
update_middleware_stats(preference_storyteller_stats)
// DARKPACK EDIT ADD END

Expand Down
5 changes: 2 additions & 3 deletions modular_darkpack/modules/storyteller_dice/code/verbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@ ADMIN_VERB_ONLY_CONTEXT_MENU(roll_storyteller_dice, R_FUN, "Roll storyteller dic
set desc = "Roll dice!"

var/list/allowed_stats = list()
// Blame Xeon im pretty sure for the mobs storing this as a string.
for(var/stat_path_as_a_fucked_up_evil_string, dots_in in storyteller_stats)
var/datum/st_stat/stat = text2path(stat_path_as_a_fucked_up_evil_string)
for(var/stat_path, dots_in in storyteller_stats)
var/datum/st_stat/stat = stat_path
if(!ispath(stat))
continue
if(stat == stat::abstract_type)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
var/list/stats_list = list()
for(var/stat_path as anything in subtypesof(/datum/st_stat))
var/datum/st_stat/stat = new stat_path()
stat_path = "[stat_path]"
stat.set_score(stat.starting_score)
stats_list[stat_path] = stat
preference_storyteller_stats = stats_list
Expand All @@ -11,18 +10,18 @@

// This entire snowflake code is done purely so that we can properly update stats that are based on other stats.
/proc/update_middleware_stats(list/preference_storyteller_stats)
var/datum/st_stat/stat_courage = preference_storyteller_stats["[STAT_COURAGE]"]
var/datum/st_stat/stat_permenant_willpower = preference_storyteller_stats["[STAT_PERMANENT_WILLPOWER]"]
var/datum/st_stat/stat_courage = preference_storyteller_stats[STAT_COURAGE]
var/datum/st_stat/stat_permenant_willpower = preference_storyteller_stats[STAT_PERMANENT_WILLPOWER]
stat_permenant_willpower.add_stat_mod(clamp(-(stat_permenant_willpower.get_score(include_bonus = FALSE) - 10), 0, stat_courage.get_score(include_bonus = TRUE)), "COURAGE")
var/datum/st_stat/stat_temporary_willpower = preference_storyteller_stats["[STAT_TEMPORARY_WILLPOWER]"]
var/datum/st_stat/stat_temporary_willpower = preference_storyteller_stats[STAT_TEMPORARY_WILLPOWER]
stat_temporary_willpower.set_score(stat_permenant_willpower.get_score(include_bonus = TRUE))

var/datum/st_stat/morality_path/morality/stat_morality = preference_storyteller_stats["[STAT_MORALITY]"]
var/datum/st_stat/morality_path/morality/stat_morality = preference_storyteller_stats[STAT_MORALITY]
if(stat_morality?.morality_path)
var/datum/st_stat/stat_conscience = preference_storyteller_stats["[STAT_CONSCIENCE]"]
var/datum/st_stat/stat_self_control = preference_storyteller_stats["[STAT_SELF_CONTROL]"]
var/datum/st_stat/stat_conviction = preference_storyteller_stats["[STAT_CONVICTION]"]
var/datum/st_stat/stat_instinct = preference_storyteller_stats["[STAT_INSTINCT]"]
var/datum/st_stat/stat_conscience = preference_storyteller_stats[STAT_CONSCIENCE]
var/datum/st_stat/stat_self_control = preference_storyteller_stats[STAT_SELF_CONTROL]
var/datum/st_stat/stat_conviction = preference_storyteller_stats[STAT_CONVICTION]
var/datum/st_stat/stat_instinct = preference_storyteller_stats[STAT_INSTINCT]

if(stat_morality.morality_path.alignment == MORALITY_HUMANITY)
stat_morality.set_score(clamp(stat_conscience.get_score(include_bonus = TRUE) + stat_self_control.get_score(include_bonus = TRUE), 0, 10))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,36 +1,36 @@
/// Get a specific mob's stat from its stats list.
/mob/living/proc/st_get_stat(stat_path, include_bonus)
var/datum/st_stat/given_stat = storyteller_stats["[stat_path]"]
var/datum/st_stat/given_stat = storyteller_stats[stat_path]
return given_stat?.get_score(include_bonus)

/// Wrapper for st_get_stat to reduce copypaste. Get a specific mob's stat from its stats list.
/mob/living/proc/st_get_stats(list/stat_list, include_bonus)
var/total_score = 0
for(var/stat_path in stat_list)
var/datum/st_stat/given_stat = storyteller_stats["[stat_path]"]
var/datum/st_stat/given_stat = storyteller_stats[stat_path]
total_score += given_stat?.get_score(include_bonus)
return total_score

/// Set a specific mob's stat from its stats list.
/mob/living/proc/st_set_stat(stat_path, amount)
var/datum/st_stat/given_stat = storyteller_stats["[stat_path]"]
var/datum/st_stat/given_stat = storyteller_stats[stat_path]
return given_stat?.set_score(amount)

/// Changes a specific mob's stat from its stats list by the given amount.
/mob/living/proc/st_change_stat(stat_path, amount)
var/datum/st_stat/given_stat = storyteller_stats["[stat_path]"]
var/datum/st_stat/given_stat = storyteller_stats[stat_path]
if(amount > 0)
return given_stat?.increase_score(amount)
else
return given_stat?.decrease_score(amount)


/mob/living/proc/st_add_stat_mod(stat_path, amount, source)
var/datum/st_stat/given_stat = storyteller_stats["[stat_path]"]
var/datum/st_stat/given_stat = storyteller_stats[stat_path]
return given_stat?.add_stat_mod(amount, source)

/mob/living/proc/st_remove_stat_mod(stat_path, source)
var/datum/st_stat/given_stat = storyteller_stats["[stat_path]"]
var/datum/st_stat/given_stat = storyteller_stats[stat_path]
return given_stat?.remove_stat_mod(source)

/datum/preferences/proc/apply_stats_from_prefs(mob/living/carbon/human/character)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@
to_chat(user, span_warning("You cannot be spawned in as this character to adjust its stats."))
return FALSE

var/datum/st_stat/stat_path = preferences.preference_storyteller_stats[params["stat"]]
var/datum/st_stat/abstract_stat = preferences.preference_storyteller_stats["[stat_path.abstract_type]"]
var/datum/st_stat/freebie_point_stat = preferences.preference_storyteller_stats["[STAT_FREEBIE_POINTS]"]
var/datum/st_stat/stat_path = preferences.preference_storyteller_stats[text2path(params["stat"])]
var/datum/st_stat/abstract_stat = preferences.preference_storyteller_stats[stat_path.abstract_type]
var/datum/st_stat/freebie_point_stat = preferences.preference_storyteller_stats[STAT_FREEBIE_POINTS]
var/old_value = stat_path.get_score(include_bonus = FALSE)


Expand Down Expand Up @@ -69,9 +69,9 @@
to_chat(user, span_warning("You have to be in the main menu to adjust your stats."))
return FALSE

var/datum/st_stat/stat_path = preferences.preference_storyteller_stats[params["stat"]]
var/datum/st_stat/abstract_stat = preferences.preference_storyteller_stats["[stat_path.abstract_type]"]
var/datum/st_stat/freebie_point_stat = preferences.preference_storyteller_stats["[STAT_FREEBIE_POINTS]"]
var/datum/st_stat/stat_path = preferences.preference_storyteller_stats[text2path(params["stat"])]
var/datum/st_stat/abstract_stat = preferences.preference_storyteller_stats[stat_path.abstract_type]
var/datum/st_stat/freebie_point_stat = preferences.preference_storyteller_stats[STAT_FREEBIE_POINTS]
var/old_value = stat_path.get_score(include_bonus = FALSE)

if(!stat_path.can_decrease_score(1))
Expand Down Expand Up @@ -103,6 +103,6 @@
var/real_name = user.client.prefs.read_preference(/datum/preference/name/real_name)
user.log_message("reset all stats to default values on '[real_name]'", LOG_STATS)

preferences.preference_storyteller_stats = null
preferences.preference_storyteller_stats = list()
preferences.preference_storyteller_stats = create_new_stat_prefs(preferences.preference_storyteller_stats)
return TRUE
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
return choices[serialize(create_default_value())]

/datum/preference/choiced/vtm_morality/apply_to_human(mob/living/carbon/human/target, value)
var/datum/st_stat/morality_path/morality/stat_morality = target.storyteller_stats["[STAT_MORALITY]"]
var/datum/st_stat/morality_path/morality/stat_morality = target.storyteller_stats[STAT_MORALITY]
if(!stat_morality)
return

Expand Down
12 changes: 6 additions & 6 deletions modular_darkpack/modules/vitae/code/embracing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
for(var/i in 1 to 3)
childe.give_st_power(clan_disciplines[i])

var/datum/st_stat/morality_path/morality/stat_morality_childe = childe.storyteller_stats["[STAT_MORALITY]"]
var/datum/st_stat/morality_path/morality/stat_morality_childe = childe.storyteller_stats[STAT_MORALITY]

if(stat_morality_childe)
stat_morality_childe.morality_path = new /datum/morality/humanity(childe) // set morality to path of humanity
Expand All @@ -35,10 +35,10 @@

// update morality score and the splat enlightenment
if(istype(kindred_splat))
var/datum/st_stat/stat_conscience = childe.storyteller_stats["[STAT_CONSCIENCE]"]
var/datum/st_stat/stat_self_control = childe.storyteller_stats["[STAT_SELF_CONTROL]"]
var/datum/st_stat/stat_conviction = childe.storyteller_stats["[STAT_CONVICTION]"]
var/datum/st_stat/stat_instinct = childe.storyteller_stats["[STAT_INSTINCT]"]
var/datum/st_stat/stat_conscience = childe.storyteller_stats[STAT_CONSCIENCE]
var/datum/st_stat/stat_self_control = childe.storyteller_stats[STAT_SELF_CONTROL]
var/datum/st_stat/stat_conviction = childe.storyteller_stats[STAT_CONVICTION]
var/datum/st_stat/stat_instinct = childe.storyteller_stats[STAT_INSTINCT]

if(stat_morality_childe.morality_path.alignment == MORALITY_HUMANITY)
kindred_splat.enlightenment = FALSE
Expand Down Expand Up @@ -90,7 +90,7 @@
write_preference_midround(/datum/preference/choiced/subsplat/vampire_clan, get_clan()?.name) // clan should already be changed by the embracing itself...

// ...same with your morality path. unfortunately, this is a bit of a clusterfuck to get
var/datum/st_stat/morality_path/morality/stat_morality = storyteller_stats["[STAT_MORALITY]"]
var/datum/st_stat/morality_path/morality/stat_morality = storyteller_stats[STAT_MORALITY]
if(stat_morality?.morality_path)
write_preference_midround(/datum/preference/choiced/vtm_morality, stat_morality.morality_path.name)
// the actual stat isnt editable, so i *shouldnt* need to worry about setting the stat in preferences,
Expand Down
Loading