From 18c403cb51b1effb560185118793d229f40cdbb5 Mon Sep 17 00:00:00 2001
From: SuperPantsHero <98481852+SuperPantsHero@users.noreply.github.com>
Date: Sun, 8 Sep 2024 16:49:37 +0200
Subject: [PATCH 01/12] rcd and rpd upgrade defines to bitflags (#11425)
---
code/__DEFINES/construction.dm | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm
index afca149e46d0d..4d22480a84140 100644
--- a/code/__DEFINES/construction.dm
+++ b/code/__DEFINES/construction.dm
@@ -118,12 +118,12 @@
#define RCD_FURNISHING 6
#define RCD_LADDER 7
-#define RCD_UPGRADE_FRAMES 0
-#define RCD_UPGRADE_SIMPLE_CIRCUITS 1
-#define RCD_UPGRADE_SILO_LINK 2
-#define RCD_UPGRADE_FURNISHING 3
+#define RCD_UPGRADE_FRAMES (1<<0)
+#define RCD_UPGRADE_SIMPLE_CIRCUITS (1<<1)
+#define RCD_UPGRADE_SILO_LINK (1<<2)
+#define RCD_UPGRADE_FURNISHING (1<<3)
-#define RPD_UPGRADE_UNWRENCH 0
+#define RPD_UPGRADE_UNWRENCH (1<<0)
#define RCD_WINDOW_FULLTILE "full tile"
#define RCD_WINDOW_DIRECTIONAL "directional"
From df0c6c4deca5bde43a8ba4c5263d2dc6c9a504d5 Mon Sep 17 00:00:00 2001
From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com>
Date: Sun, 8 Sep 2024 09:59:38 -0500
Subject: [PATCH 02/12] Automatic changelog generation for PR #11425 [ci skip]
---
html/changelogs/AutoChangeLog-pr-11425.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-11425.yml
diff --git a/html/changelogs/AutoChangeLog-pr-11425.yml b/html/changelogs/AutoChangeLog-pr-11425.yml
new file mode 100644
index 0000000000000..98f349e69794f
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11425.yml
@@ -0,0 +1,4 @@
+author: SuperPantsHero
+delete-after: true
+changes:
+ - bugfix: fixed RCD and RPD upgrades
From 9c06c40c42eaced2eaadb0df55ad48e89a5af61c Mon Sep 17 00:00:00 2001
From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com>
Date: Sun, 8 Sep 2024 15:03:16 +0000
Subject: [PATCH 03/12] Automatic changelog compile [ci skip]
---
html/changelog.html | 10 ++++++++++
html/changelogs/.all_changelog.yml | 6 ++++++
html/changelogs/AutoChangeLog-pr-11414.yml | 6 ------
html/changelogs/AutoChangeLog-pr-11425.yml | 4 ----
4 files changed, 16 insertions(+), 10 deletions(-)
delete mode 100644 html/changelogs/AutoChangeLog-pr-11414.yml
delete mode 100644 html/changelogs/AutoChangeLog-pr-11425.yml
diff --git a/html/changelog.html b/html/changelog.html
index 974acac0e476c..9f171711c1f0e 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -57,6 +57,12 @@
08 September 2024
+
Ghommie, XeonMations updated:
+
+ - Fixed space movement
+ - Proper floating animations when in no gravity
+ - Possibly fixed an oversight which involved highpop and floating animations
+
Patience updated:
- Bandanas can now be worn in the head/neck slots without error texture
@@ -69,6 +75,10 @@ PowerfulBacon updated:
- Fixes race condition in atmos processing which results in unit tests failing due to shuttles loading post-roundstart.
- Fixes a maploading race condition that would result in invalid caches being used while loading maps.
+
SuperPantsHero updated:
+
+ - fixed RCD and RPD upgrades
+
07 September 2024
ToasterBiome updated:
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index af2b92cf0b55d..e6a8c2b45455e 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -44116,6 +44116,10 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
ToasterBiome:
- bugfix: Centcom Ban DB is now accessible again through PP
2024-09-08:
+ Ghommie, XeonMations:
+ - bugfix: Fixed space movement
+ - bugfix: Proper floating animations when in no gravity
+ - bugfix: Possibly fixed an oversight which involved highpop and floating animations
Patience:
- bugfix: Bandanas can now be worn in the head/neck slots without error texture
PowerfulBacon:
@@ -44126,3 +44130,5 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
due to shuttles loading post-roundstart.
- bugfix: Fixes a maploading race condition that would result in invalid caches
being used while loading maps.
+ SuperPantsHero:
+ - bugfix: fixed RCD and RPD upgrades
diff --git a/html/changelogs/AutoChangeLog-pr-11414.yml b/html/changelogs/AutoChangeLog-pr-11414.yml
deleted file mode 100644
index 6d6560bdb6e2b..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-11414.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: Ghommie, XeonMations
-delete-after: true
-changes:
- - bugfix: Fixed space movement
- - bugfix: Proper floating animations when in no gravity
- - bugfix: Possibly fixed an oversight which involved highpop and floating animations
diff --git a/html/changelogs/AutoChangeLog-pr-11425.yml b/html/changelogs/AutoChangeLog-pr-11425.yml
deleted file mode 100644
index 98f349e69794f..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-11425.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: SuperPantsHero
-delete-after: true
-changes:
- - bugfix: fixed RCD and RPD upgrades
From 94682fc03be4a36d89d2e3d2f4c61be88581a6c0 Mon Sep 17 00:00:00 2001
From: Rukofamicom
Date: Sun, 8 Sep 2024 14:00:56 -0500
Subject: [PATCH 04/12] Posibrains no longer limited to 1, but cyborgs cannot
have repeat names (#11426)
* Removes limit on posibrains, adds name randomizer
* Update mobs.dm
* Reworks the whole thing
---
code/__HELPERS/mobs.dm | 19 +++++++++++++++++++
code/_globalvars/lists/mobs.dm | 2 +-
code/modules/jobs/job_types/_job.dm | 2 +-
code/modules/mob/living/brain/MMI.dm | 2 ++
code/modules/mob/living/brain/posibrain.dm | 7 +------
.../modules/mob/living/silicon/robot/robot.dm | 8 ++++++--
6 files changed, 30 insertions(+), 10 deletions(-)
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index 3a763818771b6..96bba3a97a2dd 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -775,6 +775,25 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
return TRUE
return FALSE
+/// Special handler for cyborg naming to check if cyborg name preferences match a name that has already been used. Returns TRUE if preferences are good to use and FALSE if not.
+/mob/proc/check_cyborg_name(client/C, obj/item/mmi/mmi)
+ var/name = C?.prefs?.read_character_preference(/datum/preference/name/cyborg)
+
+ //Name is original, add it to the list to prevent it from being used again and return TRUE
+ if(!(name in GLOB.cyborg_name_list))
+ GLOB.cyborg_name_list += name
+ mmi.original_name = name
+ return TRUE
+
+ //Name is not original, but is this the original user of the name? If so we still return TRUE but do not need to add it to the list
+ else if(name == mmi.original_name)
+ return TRUE
+
+ //This name has already been taken and this is not the original user, return FALSE
+ else
+ to_chat(C.mob, "Cyborg name already used this round by another character, your name has been randomized")
+ return FALSE
+
/proc/view_or_range(distance = world.view , center = usr , type)
switch(type)
if("view")
diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm
index 73b9a2c418b4a..4daa7b969bfd6 100644
--- a/code/_globalvars/lists/mobs.dm
+++ b/code/_globalvars/lists/mobs.dm
@@ -52,7 +52,7 @@ GLOBAL_LIST_EMPTY(mob_config_movespeed_type_lookup)
GLOBAL_LIST_EMPTY(emote_list)
-GLOBAL_LIST_EMPTY(posi_key_list)
+GLOBAL_LIST_EMPTY(cyborg_name_list)
GLOBAL_LIST_INIT(construct_radial_images, list(
CONSTRUCT_JUGGERNAUT = image(icon = 'icons/mob/cult.dmi', icon_state = "juggernaut"),
diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm
index 39545f1901143..7f4ca8766fdcc 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -504,5 +504,5 @@
mmi.brainmob.real_name = organic_name //the name of the brain inside the cyborg is the robotized human's name.
mmi.brainmob.name = organic_name
// If this checks fails, then the name will have been handled during initialization.
- if(player_client.prefs.read_character_preference(/datum/preference/name/cyborg) != DEFAULT_CYBORG_NAME)
+ if(player_client.prefs.read_character_preference(/datum/preference/name/cyborg) != DEFAULT_CYBORG_NAME && check_cyborg_name(player_client, mmi))
apply_pref_name(/datum/preference/name/cyborg, player_client)
diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm
index 143c013c4aefa..3c44231a81026 100644
--- a/code/modules/mob/living/brain/MMI.dm
+++ b/code/modules/mob/living/brain/MMI.dm
@@ -13,6 +13,8 @@
var/datum/ai_laws/laws = new()
var/force_replace_ai_name = FALSE
var/overrides_aicore_laws = FALSE // Whether the laws on the MMI, if any, override possible pre-existing laws loaded on the AI core.
+ ///Used to reserve an "original" cyborg name. When this mmi first becomes a cyborg, their name will be stored here in case of deconstruction.
+ var/original_name
/obj/item/mmi/Initialize(mapload)
. = ..()
diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm
index 826fade383784..4fba144a59161 100644
--- a/code/modules/mob/living/brain/posibrain.dm
+++ b/code/modules/mob/living/brain/posibrain.dm
@@ -94,9 +94,6 @@ GLOBAL_VAR(posibrain_notify_cooldown)
return FALSE
if(is_occupied() || QDELETED(brainmob) || QDELETED(src) || QDELETED(user))
return FALSE
- if(user.ckey in GLOB.posi_key_list)
- to_chat(user, "Positronic brain spawns limited to 1 per round.")
- return FALSE
if(!(GLOB.ghost_role_flags & GHOSTROLE_SILICONS))
to_chat(user, "Central Command has temporarily outlawed posibrain sentience in this sector...")
return FALSE
@@ -108,9 +105,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
return FALSE
if(brainmob.suiciding) //clear suicide status if the old occupant suicided.
brainmob.set_suicide(FALSE)
- var/ckey = user.ckey
- if(transfer_personality(user))
- GLOB.posi_key_list += ckey
+ transfer_personality(user)
var/datum/job/posibrain/pj = SSjob.GetJob(JOB_NAME_POSIBRAIN)
pj.remove_posi_slot(src)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 39a1031d85993..b5152215a9b0a 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -297,8 +297,12 @@
if(custom_name)
changed_name = custom_name
if(changed_name == "" && C && C.prefs.read_character_preference(/datum/preference/name/cyborg) != DEFAULT_CYBORG_NAME)
- if(apply_pref_name(/datum/preference/name/cyborg, C))
- return //built in camera handled in proc
+ if(check_cyborg_name(C, mmi))
+ if(apply_pref_name(/datum/preference/name/cyborg, C))
+ return //built in camera handled in proc
+ else
+ //Failed the vibe check on name theft, time to randomize it
+ changed_name = get_standard_name()
if(!changed_name)
changed_name = get_standard_name()
From 3c88336267cdbe7884c03b903129120f6e8ff84c Mon Sep 17 00:00:00 2001
From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com>
Date: Sun, 8 Sep 2024 14:23:17 -0500
Subject: [PATCH 05/12] Automatic changelog generation for PR #11426 [ci skip]
---
html/changelogs/AutoChangeLog-pr-11426.yml | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-11426.yml
diff --git a/html/changelogs/AutoChangeLog-pr-11426.yml b/html/changelogs/AutoChangeLog-pr-11426.yml
new file mode 100644
index 0000000000000..31724d2edee92
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11426.yml
@@ -0,0 +1,9 @@
+author: Rukofamicom
+delete-after: true
+changes:
+ - tweak: Players are no longer limited to a single positronic brain per round.
+ - tweak: Cyborgs may no longer have duplicate names, unless they are being rebuilt
+ from the same brain that was previously a cyborg - if you are respawning as
+ a fresh cyborg and do not choose a different character profile first, you will
+ be given the default cyborg name instead of becoming a second copy of the same
+ cyborg.
From 8555c0644856b29aa0594b9ee6932f45c37859d2 Mon Sep 17 00:00:00 2001
From: Rukofamicom
Date: Sun, 8 Sep 2024 14:33:40 -0500
Subject: [PATCH 06/12] Service and mediborg tweaks and fixes (#11441)
* Fixes the apparatus for medi/service.
Also somewhat expands what both can carry. Neither holder starts with any container already inside of it.
* Expands service borg drinks
* beaker -> container
* more beaker -> container
* Medi/Service apparatus can now create new containers
* Optimization and polishing
* Re-organizes drinks
* Update borghydro.dm
* Update borghydro.dm
---
code/game/objects/items/robot/robot_items.dm | 60 ++++++++++---------
.../objects/items/robot/robot_upgrades.dm | 9 ++-
.../mob/living/silicon/robot/robot_modules.dm | 5 +-
.../reagents/reagent_containers/borghydro.dm | 33 ++++++----
4 files changed, 61 insertions(+), 46 deletions(-)
diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm
index eed38a704e5b2..2d53fad04d176 100644
--- a/code/game/objects/items/robot/robot_items.dm
+++ b/code/game/objects/items/robot/robot_items.dm
@@ -841,7 +841,7 @@
/**********************************************************************
Borg apparatus
***********************************************************************/
-//These are tools that can hold only specific items. For example, the mediborg gets one that can only hold beakers and bottles.
+//These are tools that can hold only specific items. For example, the mediborg and service borg get one that can only hold reagent containers
/obj/item/borg/apparatus/
name = "unknown storage apparatus"
@@ -923,33 +923,28 @@
return
. = ..()
-/////////////////
-//beaker holder//
-/////////////////
+////////////////////
+//container holder//
+////////////////////
-/obj/item/borg/apparatus/beaker
- name = "beaker storage apparatus"
- desc = "A special apparatus for carrying beakers without spilling the contents."
+/obj/item/borg/apparatus/container
+ name = "container storage apparatus"
+ desc = "A special apparatus for carrying containers without spilling the contents. It can also synthesize new beakers!"
icon_state = "borg_beaker_apparatus"
- storable = list(/obj/item/reagent_containers/glass/beaker,
- /obj/item/reagent_containers/glass/bottle)
-
-/obj/item/borg/apparatus/beaker/Initialize(mapload)
- . = ..()
- stored = new /obj/item/reagent_containers/glass/beaker/large(src)
- RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, TYPE_PROC_REF(/atom, update_icon))
- update_icon()
+ storable = list(/obj/item/reagent_containers/glass)
+ var/defaultcontainer = /obj/item/reagent_containers/glass/beaker
-/obj/item/borg/apparatus/beaker/Destroy()
+/obj/item/borg/apparatus/container/Destroy()
if(stored)
var/obj/item/reagent_containers/C = stored
C.SplashReagents(get_turf(src))
QDEL_NULL(stored)
. = ..()
-/obj/item/borg/apparatus/beaker/examine()
+/obj/item/borg/apparatus/container/examine()
. = ..()
- if(stored)
+ //apparatus/container/service means this will not always be true.
+ if(istype(stored, /obj/item/reagent_containers/glass))
var/obj/item/reagent_containers/C = stored
. += "The apparatus currently has [C] secured, which contains:"
if(length(C.reagents.reagent_list))
@@ -959,7 +954,7 @@
. += "Nothing."
. += "Alt-click will drop the currently stored [stored]."
-/obj/item/borg/apparatus/beaker/update_overlays()
+/obj/item/borg/apparatus/container/update_overlays()
. = ..()
var/mutable_appearance/arm = mutable_appearance(icon = icon, icon_state = "borg_beaker_apparatus_arm")
if(stored)
@@ -976,7 +971,14 @@
arm.pixel_y = arm.pixel_y - 5
. += arm
-/obj/item/borg/apparatus/beaker/attack_self(mob/living/silicon/robot/user)
+/obj/item/borg/apparatus/container/attack_self(mob/living/silicon/robot/user)
+ if(!stored)
+ var/newcontainer = new defaultcontainer(src)
+ stored = newcontainer
+ to_chat(user, "You synthesize a new [newcontainer]!")
+ playsound(src, 'sound/machines/click.ogg', 10, 1)
+ update_icon()
+ return
if(stored && !user.client?.keys_held["Alt"] && user.a_intent != "help")
var/obj/item/reagent_containers/C = stored
C.SplashReagents(get_turf(user))
@@ -984,9 +986,9 @@
return
. = ..()
-/obj/item/borg/apparatus/beaker/extra
- name = "secondary beaker storage apparatus"
- desc = "A supplementary beaker storage apparatus."
+/obj/item/borg/apparatus/container/extra
+ name = "container storage apparatus"
+ desc = "A supplementary container storage apparatus."
////////////////////
//engi part holder//
@@ -1033,10 +1035,11 @@
//versatile service holder//
////////////////////
-/obj/item/borg/apparatus/beaker/service
+/obj/item/borg/apparatus/container/service
name = "versatile service grasper"
- desc = "Specially designed for carrying glasses, food and seeds."
+ desc = "Specially designed for carrying glasses, food and seeds. It can also synthesize glasses for drinks!"
storable = list(/obj/item/reagent_containers/food,
+ /obj/item/reagent_containers/glass,
/obj/item/seeds,
/obj/item/storage/fancy/donut_box,
/obj/item/storage/fancy/egg_box,
@@ -1046,10 +1049,13 @@
/obj/item/reagent_containers/glass/bottle,
/obj/item/reagent_containers/glass/bucket
)
+ defaultcontainer = /obj/item/reagent_containers/food/drinks/drinkingglass
-/obj/item/borg/apparatus/beaker/service/examine()
+
+/obj/item/borg/apparatus/container/service/examine()
. = ..()
- if(stored)
+ //Parent type handles this type. All other objects held are handled here.
+ if(!istype(stored, /obj/item/reagent_containers/glass))
. += "You are currently holding [stored]."
. += "Alt-click will drop the currently stored [stored]."
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index c8a6796c9d501..42c09695b12c5 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -742,8 +742,8 @@
R.module.remove_module(C, TRUE)
/obj/item/borg/upgrade/beaker_app
- name = "beaker storage apparatus"
- desc = "A supplementary beaker storage apparatus for medical cyborgs."
+ name = "container storage apparatus"
+ desc = "A supplementary container storage apparatus for medical cyborgs."
icon_state = "cyborg_upgrade3"
require_module = TRUE
module_type = list(/obj/item/robot_module/medical)
@@ -752,7 +752,7 @@
/obj/item/borg/upgrade/beaker_app/action(mob/living/silicon/robot/R, user = usr)
. = ..()
if(.)
- var/obj/item/borg/apparatus/beaker/extra/E = locate() in R.module.modules
+ var/obj/item/borg/apparatus/container/extra/E = locate() in R.module.modules
if(E)
to_chat(user, "This unit has no room for additional beaker storage.")
return FALSE
@@ -764,11 +764,10 @@
/obj/item/borg/upgrade/beaker_app/deactivate(mob/living/silicon/robot/R, user = usr)
. = ..()
if (.)
- var/obj/item/borg/apparatus/beaker/extra/E = locate() in R.module.modules
+ var/obj/item/borg/apparatus/container/extra/E = locate() in R.module.modules
if (E)
R.module.remove_module(E, TRUE)
-
/obj/item/borg/upgrade/speciality
name = "Speciality Module"
icon_state = "cyborg_upgrade3"
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 7030ffef05079..4135e320427ed 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -271,7 +271,7 @@
/obj/item/borg/charger,
/obj/item/weldingtool/cyborg/mini,
/obj/item/reagent_containers/borghypo,
- /obj/item/borg/apparatus/beaker,
+ /obj/item/borg/apparatus/container,
/obj/item/reagent_containers/dropper,
/obj/item/reagent_containers/syringe,
/obj/item/surgical_drapes,
@@ -508,7 +508,6 @@
name = "Service"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
- /obj/item/reagent_containers/food/drinks/drinkingglass,
/obj/item/pen,
/obj/item/toy/crayon/spraycan/borg,
/obj/item/extinguisher/mini,
@@ -521,7 +520,7 @@
/obj/item/instrument/piano_synth,
/obj/item/reagent_containers/dropper,
/obj/item/lighter,
- /obj/item/borg/apparatus/beaker/service,
+ /obj/item/borg/apparatus/container/service,
/obj/item/reagent_containers/borghypo/borgshaker)
emag_modules = list(/obj/item/reagent_containers/borghypo/borgshaker/hacked)
ratvar_modules = list(
diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm
index d6f0ca14de7ec..a406ccf40967c 100644
--- a/code/modules/reagents/reagent_containers/borghydro.dm
+++ b/code/modules/reagents/reagent_containers/borghydro.dm
@@ -185,6 +185,21 @@ Borg Shaker
accepts_reagent_upgrades = FALSE
reagent_ids = list(
+ //Non-alcoholic
+ /datum/reagent/water,
+ /datum/reagent/consumable/coffee,
+ /datum/reagent/consumable/tea,
+ /datum/reagent/consumable/space_cola,
+ /datum/reagent/consumable/dr_gibb,
+ /datum/reagent/consumable/spacemountainwind,
+ /datum/reagent/consumable/space_up,
+ //Fruit Juice
+ /datum/reagent/consumable/banana,
+ /datum/reagent/consumable/lemonjuice,
+ /datum/reagent/consumable/limejuice,
+ /datum/reagent/consumable/orangejuice,
+ /datum/reagent/consumable/tomatojuice,
+ //Alcoholic
/datum/reagent/consumable/ethanol/absinthe,
/datum/reagent/consumable/ethanol/ale,
/datum/reagent/consumable/ethanol/beer,
@@ -192,25 +207,21 @@ Borg Shaker
/datum/reagent/consumable/ethanol/gin,
/datum/reagent/consumable/ethanol/kahlua,
/datum/reagent/consumable/ethanol/rum,
+ /datum/reagent/consumable/ethanol/sake,
/datum/reagent/consumable/ethanol/tequila,
/datum/reagent/consumable/ethanol/triple_sec,
/datum/reagent/consumable/ethanol/vermouth,
/datum/reagent/consumable/ethanol/vodka,
/datum/reagent/consumable/ethanol/whiskey,
/datum/reagent/consumable/ethanol/wine,
- /datum/reagent/consumable/banana,
- /datum/reagent/consumable/coffee,
- /datum/reagent/consumable/cream,
- /datum/reagent/consumable/grenadine,
+ //Other stuff for mixing
/datum/reagent/consumable/ice,
- /datum/reagent/consumable/lemonjuice,
- /datum/reagent/consumable/limejuice,
- /datum/reagent/consumable/milk,
- /datum/reagent/consumable/orangejuice,
/datum/reagent/consumable/sodawater,
- /datum/reagent/consumable/space_cola,
- /datum/reagent/consumable/tomatojuice,
- /datum/reagent/consumable/tonic)
+ /datum/reagent/consumable/tonic,
+ /datum/reagent/consumable/grenadine,
+ /datum/reagent/consumable/cream,
+ /datum/reagent/consumable/milk,
+ /datum/reagent/consumable/sugar)
/obj/item/reagent_containers/borghypo/borgshaker/attack(mob/M, mob/user)
return //Can't inject stuff with a shaker, can we? //not with that attitude
From 56c476062877ce42c326db44709a53ed8743148f Mon Sep 17 00:00:00 2001
From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com>
Date: Sun, 8 Sep 2024 14:48:41 -0500
Subject: [PATCH 07/12] Automatic changelog generation for PR #11441 [ci skip]
---
html/changelogs/AutoChangeLog-pr-11441.yml | 12 ++++++++++++
1 file changed, 12 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-11441.yml
diff --git a/html/changelogs/AutoChangeLog-pr-11441.yml b/html/changelogs/AutoChangeLog-pr-11441.yml
new file mode 100644
index 0000000000000..a90f094506eff
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11441.yml
@@ -0,0 +1,12 @@
+author: Rukofamicom
+delete-after: true
+changes:
+ - bugfix: Service borg glasses and graspers are no longer covered in industrial
+ glue and can actually be used to serve drinks again
+ - tweak: Service and Medical cyborgs can now synthesize standard, 50u drinking glasses
+ and beakers respectively with their graspers. Simply use their grasping tool
+ with nothing in it to produce one.
+ - tweak: Medical and service cyborgs can both hold a much wider variety of reagent
+ containers now
+ - tweak: Service cyborgs can now synthesize a wider variety of drinks instead of
+ being primarily focused on alcoholic beverages.
From beefe1113fee66df6a3f10d96965a3f84c1926ce Mon Sep 17 00:00:00 2001
From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com>
Date: Sun, 8 Sep 2024 20:03:33 +0000
Subject: [PATCH 08/12] Automatic changelog compile [ci skip]
---
html/changelog.html | 9 +++++++++
html/changelogs/.all_changelog.yml | 16 ++++++++++++++++
html/changelogs/AutoChangeLog-pr-11426.yml | 9 ---------
html/changelogs/AutoChangeLog-pr-11441.yml | 12 ------------
4 files changed, 25 insertions(+), 21 deletions(-)
delete mode 100644 html/changelogs/AutoChangeLog-pr-11426.yml
delete mode 100644 html/changelogs/AutoChangeLog-pr-11441.yml
diff --git a/html/changelog.html b/html/changelog.html
index 9f171711c1f0e..84e0b205006ea 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -75,6 +75,15 @@ PowerfulBacon updated:
Fixes race condition in atmos processing which results in unit tests failing due to shuttles loading post-roundstart.
Fixes a maploading race condition that would result in invalid caches being used while loading maps.
+ Rukofamicom updated:
+
+ - Players are no longer limited to a single positronic brain per round.
+ - Cyborgs may no longer have duplicate names, unless they are being rebuilt from the same brain that was previously a cyborg - if you are respawning as a fresh cyborg and do not choose a different character profile first, you will be given the default cyborg name instead of becoming a second copy of the same cyborg.
+ - Service borg glasses and graspers are no longer covered in industrial glue and can actually be used to serve drinks again
+ - Service and Medical cyborgs can now synthesize standard, 50u drinking glasses and beakers respectively with their graspers. Simply use their grasping tool with nothing in it to produce one.
+ - Medical and service cyborgs can both hold a much wider variety of reagent containers now
+ - Service cyborgs can now synthesize a wider variety of drinks instead of being primarily focused on alcoholic beverages.
+
SuperPantsHero updated:
- fixed RCD and RPD upgrades
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index e6a8c2b45455e..7c6e3b3d74751 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -44130,5 +44130,21 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
due to shuttles loading post-roundstart.
- bugfix: Fixes a maploading race condition that would result in invalid caches
being used while loading maps.
+ Rukofamicom:
+ - tweak: Players are no longer limited to a single positronic brain per round.
+ - tweak: Cyborgs may no longer have duplicate names, unless they are being rebuilt
+ from the same brain that was previously a cyborg - if you are respawning as
+ a fresh cyborg and do not choose a different character profile first, you will
+ be given the default cyborg name instead of becoming a second copy of the same
+ cyborg.
+ - bugfix: Service borg glasses and graspers are no longer covered in industrial
+ glue and can actually be used to serve drinks again
+ - tweak: Service and Medical cyborgs can now synthesize standard, 50u drinking glasses
+ and beakers respectively with their graspers. Simply use their grasping tool
+ with nothing in it to produce one.
+ - tweak: Medical and service cyborgs can both hold a much wider variety of reagent
+ containers now
+ - tweak: Service cyborgs can now synthesize a wider variety of drinks instead of
+ being primarily focused on alcoholic beverages.
SuperPantsHero:
- bugfix: fixed RCD and RPD upgrades
diff --git a/html/changelogs/AutoChangeLog-pr-11426.yml b/html/changelogs/AutoChangeLog-pr-11426.yml
deleted file mode 100644
index 31724d2edee92..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-11426.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-author: Rukofamicom
-delete-after: true
-changes:
- - tweak: Players are no longer limited to a single positronic brain per round.
- - tweak: Cyborgs may no longer have duplicate names, unless they are being rebuilt
- from the same brain that was previously a cyborg - if you are respawning as
- a fresh cyborg and do not choose a different character profile first, you will
- be given the default cyborg name instead of becoming a second copy of the same
- cyborg.
diff --git a/html/changelogs/AutoChangeLog-pr-11441.yml b/html/changelogs/AutoChangeLog-pr-11441.yml
deleted file mode 100644
index a90f094506eff..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-11441.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-author: Rukofamicom
-delete-after: true
-changes:
- - bugfix: Service borg glasses and graspers are no longer covered in industrial
- glue and can actually be used to serve drinks again
- - tweak: Service and Medical cyborgs can now synthesize standard, 50u drinking glasses
- and beakers respectively with their graspers. Simply use their grasping tool
- with nothing in it to produce one.
- - tweak: Medical and service cyborgs can both hold a much wider variety of reagent
- containers now
- - tweak: Service cyborgs can now synthesize a wider variety of drinks instead of
- being primarily focused on alcoholic beverages.
From e25d8be74680fd7f6c2c5f7d0e9bb114783a699f Mon Sep 17 00:00:00 2001
From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com>
Date: Mon, 9 Sep 2024 00:13:57 +0000
Subject: [PATCH 09/12] Automatic changelog compile [ci skip]
---
html/changelog.html | 19 -------------------
1 file changed, 19 deletions(-)
diff --git a/html/changelog.html b/html/changelog.html
index 84e0b205006ea..0a783c0934d5c 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -939,25 +939,6 @@ TsunamiAnt updated:
- paper bundle is now also called that
- add description text to paper bundle to show people you can just cut it open
-
- 08 July 2024
- EvilDragonfiend updated:
-
- - fixed a runtime that's caused by hallucination making an item to say
-
- PowerfulBacon updated:
-
- - Items will no longer drift out of your hand when picked up
-
- XeonMations updated:
-
- - All admin votes now automatically popup.
- - Fixed swarmer traps not working correctly.
-
- tonty updated:
-
- - starting an emote with " 's " or "," won't leave a space anymore. roleplay has been saved
-
GoonStation 13 Development Team
From 1ff8ec17c458e307390fc77fad70c00bd716c968 Mon Sep 17 00:00:00 2001
From: PowerfulBacon <26465327+PowerfulBacon@users.noreply.github.com>
Date: Mon, 9 Sep 2024 07:51:25 +0100
Subject: [PATCH 10/12] Disables broken uplink items (#11454)
---
code/modules/antagonists/wizard/equipment/spellbook.dm | 4 ++++
code/modules/uplink/uplink_items.dm | 7 +++++++
2 files changed, 11 insertions(+)
diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm
index 08bc6e67b5a93..e40f16ca2dded 100644
--- a/code/modules/antagonists/wizard/equipment/spellbook.dm
+++ b/code/modules/antagonists/wizard/equipment/spellbook.dm
@@ -12,6 +12,7 @@
var/limit //used to prevent a spellbook_entry from being bought more than X times with one wizard spellbook
var/list/no_coexistence_typecache //Used so you can't have specific spells together
var/no_random = FALSE // This is awful one to be a part of randomness - i.e.) soul tap
+ var/disabled = FALSE // Is this item disabled due to having issues? Must provide an issue reference and description of issue.
/datum/spellbook_entry/New()
..()
@@ -21,6 +22,8 @@
return TRUE
/datum/spellbook_entry/proc/CanBuy(mob/living/carbon/human/user,obj/item/spellbook/book) // Specific circumstances
+ if (disabled)
+ return FALSE
if(book.uses GLOB.joined_player_list.len)
@@ -137,6 +139,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list(
var/spawn_amount = 1 //How many times we should run the spawn
var/additional_uplink_entry = null //Bonus items you gain if you purchase it
var/is_bonus = FALSE // entry in 'additional_uplink_entry' will have this as TRUE. Used for logging detail
+ var/disabled = FALSE
/datum/uplink_item/New()
. = ..()
@@ -623,6 +626,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list(
player_minimum = 25
restricted = TRUE
refundable = TRUE
+ disabled = TRUE // #11096: Currently in a broken state, cannot recall as they will immediately manifest and cannot move despite having range stats.
/**
* Only allow holoparasites to be refunded if the injector is unused.
@@ -2119,6 +2123,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list(
item = /obj/item/gun/blastcannon
cost = 14 //High cost because of the potential for extreme damage in the hands of a skilled scientist.
restricted_roles = list(JOB_NAME_RESEARCHDIRECTOR, JOB_NAME_SCIENTIST)
+ disabled = TRUE // ! #11288 - Reported as non-functional
/datum/uplink_item/role_restricted/crushmagboots
name = "Crushing Magboots"
@@ -2363,6 +2368,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list(
player_minimum = 25
restricted = TRUE
restricted_roles = list(JOB_NAME_COOK, JOB_NAME_CHAPLAIN)
+ disabled = TRUE // #11096: Currently in a broken state, cannot recall as they will immediately manifest and cannot move despite having range stats.
/datum/uplink_item/role_restricted/ez_clean_bundle
name = "EZ Clean Grenade Bundle"
@@ -2572,3 +2578,4 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list(
item = /obj/item/mob_lasso/traitor
cost = 3
surplus = 0
+ disabled = TRUE // #11346 Currently in a broken state, lasso'd mobs will never unregister a target once they have locked onto one, making them unusable.
From d37cf5ba12a6c0d61103a051f7d50b7ab6c9edd8 Mon Sep 17 00:00:00 2001
From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com>
Date: Mon, 9 Sep 2024 02:01:06 -0500
Subject: [PATCH 11/12] Automatic changelog generation for PR #11454 [ci skip]
---
html/changelogs/AutoChangeLog-pr-11454.yml | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-11454.yml
diff --git a/html/changelogs/AutoChangeLog-pr-11454.yml b/html/changelogs/AutoChangeLog-pr-11454.yml
new file mode 100644
index 0000000000000..3755de9ad9e8a
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11454.yml
@@ -0,0 +1,5 @@
+author: PowerfulBacon
+delete-after: true
+changes:
+ - tweak: Holoparasites, Mindslave Lasso and The Blast Cannon are no longer purchasable
+ by wizards or traitors due to being broken.
From 83ab87920a7b67fa8d9b71edd8101f4330015152 Mon Sep 17 00:00:00 2001
From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com>
Date: Mon, 9 Sep 2024 07:03:36 +0000
Subject: [PATCH 12/12] Automatic changelog compile [ci skip]
---
html/changelog.html | 6 ++++++
html/changelogs/.all_changelog.yml | 4 ++++
html/changelogs/AutoChangeLog-pr-11454.yml | 5 -----
3 files changed, 10 insertions(+), 5 deletions(-)
delete mode 100644 html/changelogs/AutoChangeLog-pr-11454.yml
diff --git a/html/changelog.html b/html/changelog.html
index 0a783c0934d5c..a60d1e7c4865c 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -56,6 +56,12 @@
-->
+
09 September 2024
+
PowerfulBacon updated:
+
+ - Holoparasites, Mindslave Lasso and The Blast Cannon are no longer purchasable by wizards or traitors due to being broken.
+
+
08 September 2024
Ghommie, XeonMations updated:
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index 7c6e3b3d74751..5daceeff61590 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -44148,3 +44148,7 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
being primarily focused on alcoholic beverages.
SuperPantsHero:
- bugfix: fixed RCD and RPD upgrades
+2024-09-09:
+ PowerfulBacon:
+ - tweak: Holoparasites, Mindslave Lasso and The Blast Cannon are no longer purchasable
+ by wizards or traitors due to being broken.
diff --git a/html/changelogs/AutoChangeLog-pr-11454.yml b/html/changelogs/AutoChangeLog-pr-11454.yml
deleted file mode 100644
index 3755de9ad9e8a..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-11454.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: PowerfulBacon
-delete-after: true
-changes:
- - tweak: Holoparasites, Mindslave Lasso and The Blast Cannon are no longer purchasable
- by wizards or traitors due to being broken.