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."