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:

+

Patience updated:

+

SuperPantsHero updated:

+

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:

    + +

    08 September 2024

    Ghommie, XeonMations updated: