From ca95d39a46ca61eecd987a64b227acb1422ff38c Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 16 Sep 2019 17:47:22 +0200 Subject: [PATCH 01/11] Slowing down police baton and tele baton speed. --- code/game/objects/items/melee/misc.dm | 19 ++++--- .../code/game/objects/items/melee/misc.dm | 57 ------------------- tgstation.dme | 1 - 3 files changed, 11 insertions(+), 66 deletions(-) delete mode 100644 modular_citadel/code/game/objects/items/melee/misc.dm diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index f9affc230d..82b751dc27 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -180,8 +180,14 @@ slot_flags = ITEM_SLOT_BELT force = 12 //9 hit crit w_class = WEIGHT_CLASS_NORMAL - var/cooldown = 0 + var/cooldown = 14 var/on = TRUE + var/last_hit = 0 + var/stun_stam_cost_coeff = 1.25 + var/hardstun_ds = 1 + var/softstun_ds = 0 + var/stam_dmg = 30 + total_mass = TOTAL_MASS_NORMAL_ITEM /obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user) if(!on) @@ -207,12 +213,10 @@ if(!isliving(target)) return if (user.a_intent == INTENT_HARM) - if(!..()) - return - if(!iscyborg(target)) + if(!..() || !iscyborg(target)) return else - if(cooldown <= world.time) + if(last_hit < world.time) if(ishuman(target)) var/mob/living/carbon/human/H = target if (H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) @@ -220,7 +224,7 @@ if(check_martial_counter(H, user)) return playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1) - target.Knockdown(60) + target.Knockdown(softstun_ds, TRUE, FALSE, hardstun_ds, stam_dmg) log_combat(user, target, "stunned", src) src.add_fingerprint(user) target.visible_message("[user] has knocked down [target] with [src]!", \ @@ -229,7 +233,7 @@ target.LAssailant = null else target.LAssailant = user - cooldown = world.time + last_hit = world.time + cooldown user.adjustStaminaLossBuffered(getweight())//CIT CHANGE - makes swinging batons cost stamina /obj/item/melee/classic_baton/telescopic @@ -245,7 +249,6 @@ item_flags = NONE force = 0 on = FALSE - total_mass = TOTAL_MASS_SMALL_ITEM /obj/item/melee/classic_baton/telescopic/suicide_act(mob/user) var/mob/living/carbon/human/H = user diff --git a/modular_citadel/code/game/objects/items/melee/misc.dm b/modular_citadel/code/game/objects/items/melee/misc.dm deleted file mode 100644 index 48c221696e..0000000000 --- a/modular_citadel/code/game/objects/items/melee/misc.dm +++ /dev/null @@ -1,57 +0,0 @@ -/obj/item/melee/classic_baton - var/last_hit = 0 - var/stun_stam_cost_coeff = 1.25 - var/hardstun_ds = 1 - var/softstun_ds = 0 - var/stam_dmg = 30 - cooldown = 0 - total_mass = 3.75 - -/obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user) - if(!on) - return ..() - - if(user.getStaminaLoss() >= STAMINA_SOFTCRIT)//CIT CHANGE - makes batons unusuable in stamina softcrit - to_chat(user, "You're too exhausted for that.")//CIT CHANGE - ditto - return //CIT CHANGE - ditto - - add_fingerprint(user) - if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) - to_chat(user, "You club yourself over the head.") - user.Knockdown(60 * force) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) - else - user.take_bodypart_damage(2*force) - return - if(iscyborg(target)) - ..() - return - if(!isliving(target)) - return - if (user.a_intent == INTENT_HARM) - if(!..()) - return - if(!iscyborg(target)) - return - else - if(last_hit + cooldown < world.time) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if (H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) - return - if(check_martial_counter(H, user)) - return - playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1) - target.Knockdown(softstun_ds, TRUE, FALSE, hardstun_ds, stam_dmg) - log_combat(user, target, "stunned", src) - src.add_fingerprint(user) - target.visible_message("[user] has knocked down [target] with [src]!", \ - "[user] has knocked down [target] with [src]!") - if(!iscarbon(user)) - target.LAssailant = null - else - target.LAssailant = user - last_hit = world.time - user.adjustStaminaLossBuffered(getweight())//CIT CHANGE - makes swinging batons cost stamina diff --git a/tgstation.dme b/tgstation.dme index 521afbc87a..5d09504aef 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2924,7 +2924,6 @@ #include "modular_citadel\code\game\objects\items\devices\radio\headset.dm" #include "modular_citadel\code\game\objects\items\devices\radio\shockcollar.dm" #include "modular_citadel\code\game\objects\items\melee\eutactic_blades.dm" -#include "modular_citadel\code\game\objects\items\melee\misc.dm" #include "modular_citadel\code\game\objects\items\robot\robot_upgrades.dm" #include "modular_citadel\code\game\objects\items\storage\firstaid.dm" #include "modular_citadel\code\game\objects\structures\tables_racks.dm" From 0d9b2847843186446241d3b6ade2d967c47a5359 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 16 Sep 2019 18:12:05 +0200 Subject: [PATCH 02/11] unneeded variable, no gameplay changes. --- code/game/objects/items/melee/misc.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 82b751dc27..d8e26cae9a 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -180,14 +180,13 @@ slot_flags = ITEM_SLOT_BELT force = 12 //9 hit crit w_class = WEIGHT_CLASS_NORMAL - var/cooldown = 14 + var/cooldown = 13 var/on = TRUE var/last_hit = 0 var/stun_stam_cost_coeff = 1.25 var/hardstun_ds = 1 var/softstun_ds = 0 var/stam_dmg = 30 - total_mass = TOTAL_MASS_NORMAL_ITEM /obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user) if(!on) From 5e52c62f29ca4277663362fc80f13a02345604db Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 17 Sep 2019 03:41:53 +0200 Subject: [PATCH 03/11] actual balance. --- code/game/objects/items/melee/misc.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index d8e26cae9a..10b84917bb 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -248,6 +248,7 @@ item_flags = NONE force = 0 on = FALSE + total_mass = TOTAL_MASS_NORMAL_ITEM /obj/item/melee/classic_baton/telescopic/suicide_act(mob/user) var/mob/living/carbon/human/H = user From 040b6472b48f47fa69e1849a0d32e4432671cd84 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Wed, 18 Sep 2019 01:21:18 +0200 Subject: [PATCH 04/11] FUCK --- code/modules/client/preferences_savefile.dm | 61 ++------------------- 1 file changed, 6 insertions(+), 55 deletions(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index c900349843..fcaf7769e5 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 22 +#define SAVEFILE_VERSION_MAX 23 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -49,62 +49,13 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car pda_style = "mono" if(current_version < 20) pda_color = "#808000" - if(current_version < 21) - job_preferences = list() //It loaded null from nonexistant savefile field. - var/job_civilian_high = 0 - var/job_civilian_med = 0 - var/job_civilian_low = 0 - - var/job_medsci_high = 0 - var/job_medsci_med = 0 - var/job_medsci_low = 0 - - var/job_engsec_high = 0 - var/job_engsec_med = 0 - var/job_engsec_low = 0 - - S["job_civilian_high"] >> job_civilian_high - S["job_civilian_med"] >> job_civilian_med - S["job_civilian_low"] >> job_civilian_low - S["job_medsci_high"] >> job_medsci_high - S["job_medsci_med"] >> job_medsci_med - S["job_medsci_low"] >> job_medsci_low - S["job_engsec_high"] >> job_engsec_high - S["job_engsec_med"] >> job_engsec_med - S["job_engsec_low"] >> job_engsec_low - - //Can't use SSjob here since this happens right away on login - for(var/job in subtypesof(/datum/job)) - var/datum/job/J = job - var/new_value - var/fval = initial(J.flag) - switch(initial(J.department_flag)) - if(CIVILIAN) - if(job_civilian_high & fval) - new_value = JP_HIGH - else if(job_civilian_med & fval) - new_value = JP_MEDIUM - else if(job_civilian_low & fval) - new_value = JP_LOW - if(MEDSCI) - if(job_medsci_high & fval) - new_value = JP_HIGH - else if(job_medsci_med & fval) - new_value = JP_MEDIUM - else if(job_medsci_low & fval) - new_value = JP_LOW - if(ENGSEC) - if(job_engsec_high & fval) - new_value = JP_HIGH - else if(job_engsec_med & fval) - new_value = JP_MEDIUM - else if(job_engsec_low & fval) - new_value = JP_LOW - if(new_value) - job_preferences[initial(J.title)] = new_value - if((current_version < 22) && features["meat_type"] && (features["meat_type"] == null)) + if((current_version < 21) && features["meat_type"] && (features["meat_type"] == null)) features["meat_type"] = "Mammalian" +//if you are wondering why we are skipping current_verion 22, that's because of some huge fuck ups that caused the game to be unplayable that we are fixing here. + if(current_version < 23) + job_preferences = list() //It loaded null from nonexistant savefile field. + /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) return From 63fbf225a6fd82fbe880a973e9f005eb9b865511 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Wed, 18 Sep 2019 01:24:44 +0200 Subject: [PATCH 05/11] aaaaa --- code/modules/client/preferences_savefile.dm | 56 ++++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index fcaf7769e5..a72122a6c8 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -51,9 +51,61 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car pda_color = "#808000" if((current_version < 21) && features["meat_type"] && (features["meat_type"] == null)) features["meat_type"] = "Mammalian" + var/itsallogre = TRUE + if(current_version < 22) + var/job_civilian_high = 0 + var/job_civilian_med = 0 + var/job_civilian_low = 0 -//if you are wondering why we are skipping current_verion 22, that's because of some huge fuck ups that caused the game to be unplayable that we are fixing here. - if(current_version < 23) + var/job_medsci_high = 0 + var/job_medsci_med = 0 + var/job_medsci_low = 0 + + var/job_engsec_high = 0 + var/job_engsec_med = 0 + var/job_engsec_low = 0 + + S["job_civilian_high"] >> job_civilian_high + S["job_civilian_med"] >> job_civilian_med + S["job_civilian_low"] >> job_civilian_low + S["job_medsci_high"] >> job_medsci_high + S["job_medsci_med"] >> job_medsci_med + S["job_medsci_low"] >> job_medsci_low + S["job_engsec_high"] >> job_engsec_high + S["job_engsec_med"] >> job_engsec_med + S["job_engsec_low"] >> job_engsec_low + + //Can't use SSjob here since this happens right away on login + for(var/job in subtypesof(/datum/job)) + var/datum/job/J = job + var/new_value + var/fval = initial(J.flag) + switch(initial(J.department_flag)) + if(CIVILIAN) + if(job_civilian_high & fval) + new_value = JP_HIGH + else if(job_civilian_med & fval) + new_value = JP_MEDIUM + else if(job_civilian_low & fval) + new_value = JP_LOW + if(MEDSCI) + if(job_medsci_high & fval) + new_value = JP_HIGH + else if(job_medsci_med & fval) + new_value = JP_MEDIUM + else if(job_medsci_low & fval) + new_value = JP_LOW + if(ENGSEC) + if(job_engsec_high & fval) + new_value = JP_HIGH + else if(job_engsec_med & fval) + new_value = JP_MEDIUM + else if(job_engsec_low & fval) + new_value = JP_LOW + if(new_value) + job_preferences[initial(J.title)] = new_value + itsallogre = FALSE + if(current_version < 23 && itsallogre) // we are fixing a gamebreaking bug. job_preferences = list() //It loaded null from nonexistant savefile field. /datum/preferences/proc/load_path(ckey,filename="preferences.sav") From 150da1d34a66fe53cdf6ea9c448a694217af96e1 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Wed, 18 Sep 2019 01:37:17 +0200 Subject: [PATCH 06/11] code quality --- code/modules/client/preferences_savefile.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index a72122a6c8..2ba98caa56 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -51,7 +51,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car pda_color = "#808000" if((current_version < 21) && features["meat_type"] && (features["meat_type"] == null)) features["meat_type"] = "Mammalian" - var/itsallogre = TRUE if(current_version < 22) var/job_civilian_high = 0 var/job_civilian_med = 0 @@ -104,8 +103,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car new_value = JP_LOW if(new_value) job_preferences[initial(J.title)] = new_value - itsallogre = FALSE - if(current_version < 23 && itsallogre) // we are fixing a gamebreaking bug. + else if(current_version < 23) // we are fixing a gamebreaking bug. job_preferences = list() //It loaded null from nonexistant savefile field. /datum/preferences/proc/load_path(ckey,filename="preferences.sav") From d0296a5e81fec85c22658b6a749f0751e121d89b Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 17 Sep 2019 20:15:06 -0400 Subject: [PATCH 07/11] fixes roundstart runtimes by job_preferences index checks be explicit key checks instead, plus some extra sanity checks --- code/controllers/subsystem/job.dm | 10 +++++----- code/modules/client/preferences.dm | 14 +++++++------- code/modules/client/preferences_savefile.dm | 4 ++-- .../mob/dead/new_player/preferences_setup.dm | 4 ++-- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 5983fa3ae5..cc46d35c25 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -116,7 +116,7 @@ SUBSYSTEM_DEF(job) if(player.mind && job.title in player.mind.restricted_roles) JobDebug("FOC incompatible with antagonist role, Player: [player]") continue - if(player.client.prefs.job_preferences[job.title] == level) + if(player.client.prefs.job_preferences["[job.title]"] == level) JobDebug("FOC pass, Player: [player], Level:[level]") candidates += player return candidates @@ -246,7 +246,7 @@ SUBSYSTEM_DEF(job) initial_players_to_assign = unassigned.len - JobDebug("DO, Len: [unassigned.len]") + JobDebug("DO, Len: [unassigned?.len]") if(unassigned.len == 0) return validate_required_jobs(required_jobs) @@ -270,7 +270,7 @@ SUBSYSTEM_DEF(job) JobDebug("DO, Running Overflow Check 1") var/datum/job/overflow = GetJob(SSjob.overflow_role) var/list/overflow_candidates = FindOccupationCandidates(overflow, JP_LOW) - JobDebug("AC1, Candidates: [overflow_candidates.len]") + JobDebug("AC1, Candidates: [overflow_candidates?.len]") for(var/mob/dead/new_player/player in overflow_candidates) JobDebug("AC1 pass, Player: [player]") AssignRole(player, SSjob.overflow_role) @@ -333,7 +333,7 @@ SUBSYSTEM_DEF(job) continue // If the player wants that job on this level, then try give it to him. - if(player.client.prefs.job_preferences[job.title] == level) + if(player.client.prefs.job_preferences["[job.title]"] == level) // If the job isn't filled if((job.current_positions < job.spawn_positions) || job.spawn_positions == -1) JobDebug("DO pass, Player: [player], Level:[level], Job:[job.title]") @@ -540,7 +540,7 @@ SUBSYSTEM_DEF(job) if(job.required_playtime_remaining(player.client)) young++ continue - switch(player.client.prefs.job_preferences[job.title]) + switch(player.client.prefs.job_preferences["[job.title]"]) if(JP_HIGH) high++ if(JP_MEDIUM) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 686d5d3572..f9fc7b9221 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1039,7 +1039,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/available_in_days = job.available_in_days(user.client) HTML += "[rank] \[IN [(available_in_days)] DAYS\]" continue - if((job_preferences[SSjob.overflow_role] == JP_LOW) && (rank != SSjob.overflow_role) && !jobban_isbanned(user, SSjob.overflow_role)) + if((job_preferences["[SSjob.overflow_role]"] == JP_LOW) && (rank != SSjob.overflow_role) && !jobban_isbanned(user, SSjob.overflow_role)) HTML += "[rank]" continue if((rank in GLOB.command_positions) || (rank == "AI"))//Bold head jobs @@ -1054,7 +1054,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/prefUpperLevel = -1 // level to assign on left click var/prefLowerLevel = -1 // level to assign on right click - switch(job_preferences[job.title]) + switch(job_preferences["[job.title]"]) if(JP_HIGH) prefLevelLabel = "High" prefLevelColor = "slateblue" @@ -1079,7 +1079,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) HTML += "" if(rank == SSjob.overflow_role)//Overflow is special - if(job_preferences[SSjob.overflow_role] == JP_LOW) + if(job_preferences["[SSjob.overflow_role]"] == JP_LOW) HTML += "Yes" else HTML += "No" @@ -1115,11 +1115,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) if (level == JP_HIGH) // to high //Set all other high to medium for(var/j in job_preferences) - if(job_preferences[j] == JP_HIGH) - job_preferences[j] = JP_MEDIUM + if(job_preferences["[j]"] == JP_HIGH) + job_preferences["[j]"] = JP_MEDIUM //technically break here - job_preferences[job.title] = level + job_preferences["[job.title]"] = level return TRUE /datum/preferences/proc/UpdateJobPreference(mob/user, role, desiredLvl) @@ -1147,7 +1147,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) jpval = JP_HIGH if(role == SSjob.overflow_role) - if(job_preferences[job.title] == JP_LOW) + if(job_preferences["[job.title]"] == JP_LOW) jpval = null else jpval = JP_LOW diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index c900349843..7da8017f56 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -101,7 +101,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car else if(job_engsec_low & fval) new_value = JP_LOW if(new_value) - job_preferences[initial(J.title)] = new_value + job_preferences["[initial(J.title)]"] = new_value if((current_version < 22) && features["meat_type"] && (features["meat_type"] == null)) features["meat_type"] = "Mammalian" @@ -485,7 +485,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car joblessrole = sanitize_integer(joblessrole, 1, 3, initial(joblessrole)) //Validate job prefs for(var/j in job_preferences) - if(job_preferences[j] != JP_LOW && job_preferences[j] != JP_MEDIUM && job_preferences[j] != JP_HIGH) + if(job_preferences["[j]"] != JP_LOW && job_preferences["[j]"] != JP_MEDIUM && job_preferences["[j]"] != JP_HIGH) job_preferences -= j all_quirks = SANITIZE_LIST(all_quirks) diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index b08fadefcb..994d082585 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -28,9 +28,9 @@ var/datum/job/previewJob var/highest_pref = 0 for(var/job in job_preferences) - if(job_preferences[job] > highest_pref) + if(job_preferences["[job]"] > highest_pref) previewJob = SSjob.GetJob(job) - highest_pref = job_preferences[job] + highest_pref = job_preferences["[job]"] if(previewJob) // Silicons only need a very basic preview since there is no customization for them. From cc6e436e96a207f6e0f3306a8cda132658036c72 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 17 Sep 2019 21:48:48 -0400 Subject: [PATCH 08/11] further fixes --- code/controllers/subsystem/job.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index cc46d35c25..a0d9226e14 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -182,7 +182,7 @@ SUBSYSTEM_DEF(job) if((job.current_positions >= job.total_positions) && job.total_positions != -1) continue var/list/candidates = FindOccupationCandidates(job, level) - if(!candidates.len) + if(!candidates?.len) continue var/mob/dead/new_player/candidate = pick(candidates) if(AssignRole(candidate, command_position)) @@ -200,7 +200,7 @@ SUBSYSTEM_DEF(job) if((job.current_positions >= job.total_positions) && job.total_positions != -1) continue var/list/candidates = FindOccupationCandidates(job, level) - if(!candidates.len) + if(!candidates?.len) continue var/mob/dead/new_player/candidate = pick(candidates) AssignRole(candidate, command_position) From 8bf4d5754eae92f0a88bfea6a14f2938976058db Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Wed, 18 Sep 2019 04:23:52 +0200 Subject: [PATCH 09/11] I'm a moron. --- code/modules/client/preferences_savefile.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 2ba98caa56..3782ba9d15 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -52,6 +52,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if((current_version < 21) && features["meat_type"] && (features["meat_type"] == null)) features["meat_type"] = "Mammalian" if(current_version < 22) + + job_preferences = list() //It loaded null from nonexistant savefile field. + var/job_civilian_high = 0 var/job_civilian_med = 0 var/job_civilian_low = 0 From aa610617f8724d05eff90e23e05a7c07c3541c0a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 18 Sep 2019 00:01:02 -0500 Subject: [PATCH 10/11] Automatic changelog generation for PR #9302 [ci skip] --- html/changelogs/AutoChangeLog-pr-9302.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9302.yml diff --git a/html/changelogs/AutoChangeLog-pr-9302.yml b/html/changelogs/AutoChangeLog-pr-9302.yml new file mode 100644 index 0000000000..4f6ed4d336 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9302.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - bugfix: "Things that access job_preferences now explicitly access keys, which means it no longer attempts to access invalid indices and runtimes as a result." From 2c70bd097cceab328f1f87d08b79d4eccfe671d5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 18 Sep 2019 00:03:31 -0500 Subject: [PATCH 11/11] Automatic changelog generation for PR #9295 [ci skip] --- html/changelogs/AutoChangeLog-pr-9295.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9295.yml diff --git a/html/changelogs/AutoChangeLog-pr-9295.yml b/html/changelogs/AutoChangeLog-pr-9295.yml new file mode 100644 index 0000000000..a96540c11b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9295.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - balance: "Slowed down police baton and tele baton speed by 75%, should be still be faster than the legacy speed (2 seconds) by 0.6 seconds. Telescopic batons' stamina cost per swing is now on par with police batons, ergo more expensive."