diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index ec897f97e2..1d47155c33 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -139,8 +139,8 @@ var/list/visible_turfs = list() - // Is this camera located in or attached to a living thing? If so, assume the camera's loc is the living thing. - var/cam_location = isliving(active_camera.loc) ? active_camera.loc : active_camera + // Need to get camera's location or it + var/cam_location = get_atom_on_turf(active_camera) // If we're not forcing an update for some reason and the cameras are in the same location, // we don't need to update anything. diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index e0b1afe72e..a38d9ad5e2 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -269,9 +269,10 @@ inputs = list( "camera name" = IC_PINTYPE_STRING, "camera active" = IC_PINTYPE_BOOLEAN, + "camera fast mode" = IC_PINTYPE_BOOLEAN, "camera network" = IC_PINTYPE_LIST ) - inputs_default = list("1" = "video camera circuit", "3" = list("rd")) + inputs_default = list("1" = "video camera circuit", "4" = list("rd")) outputs = list() activators = list() spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -280,6 +281,8 @@ var/obj/machinery/camera/camera var/updating = FALSE + var/update_speed = 10 // How often to update the camera + /obj/item/integrated_circuit/output/video_camera/New() ..() camera = new(src) @@ -290,11 +293,11 @@ QDEL_NULL(camera) return ..() -/obj/item/integrated_circuit/output/video_camera/proc/set_camera_status(var/status) +/obj/item/integrated_circuit/output/video_camera/proc/set_camera_status(status) if(camera) camera.status = status GLOB.cameranet.updatePortableCamera(camera) - power_draw_idle = camera.status ? 20 : 0 + power_draw_idle = camera.status ? (20 / (update_speed * 0.1)) : 0 if(camera.status) // Ensure that there's actually power. if(!draw_idle_power()) power_fail() @@ -303,7 +306,8 @@ if(camera) var/cam_name = get_pin_data(IC_INPUT, 1) var/cam_active = get_pin_data(IC_INPUT, 2) - var/list/new_network = get_pin_data(IC_INPUT, 3) + update_speed = get_pin_data(IC_INPUT, 3) ? 5 : 10 + var/list/new_network = get_pin_data(IC_INPUT, 4) if(!isnull(cam_name)) camera.c_tag = cam_name if(!isnull(new_network)) @@ -319,13 +323,11 @@ . = ..() update_camera_location(oldLoc) -#define VIDEO_CAMERA_BUFFER 10 /obj/item/integrated_circuit/output/video_camera/proc/update_camera_location(oldLoc) oldLoc = get_turf(oldLoc) if(!QDELETED(camera) && !updating && oldLoc != get_turf(src)) updating = TRUE - addtimer(CALLBACK(src, .proc/do_camera_update, oldLoc), VIDEO_CAMERA_BUFFER) -#undef VIDEO_CAMERA_BUFFER + addtimer(CALLBACK(src, .proc/do_camera_update, oldLoc), update_speed) /obj/item/integrated_circuit/output/video_camera/proc/do_camera_update(oldLoc) if(!QDELETED(camera) && oldLoc != get_turf(src)) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 81c1cc0d78..510c958872 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -614,6 +614,7 @@ "Otie" = image(icon = 'modular_splurt/icons/mob/widerobot.dmi', icon_state = "otiee-b"), // SPLURT Adoon (Skyrat Port) "Drake" = image(icon = 'modular_sand/icons/mob/cyborg/drakemech.dmi', icon_state = "drakeengbox"), "Assaultron" = image(icon = 'modular_splurt/icons/mob/robots.dmi', icon_state = "assaultron_engi"), // SPLURT Addon + "Meka" = image(icon = 'modular_splurt/icons/mob/robots_32x64.dmi', icon_state = "mekaengi"), // SPLURT Addon "Haydee" = image(icon = 'modular_splurt/icons/mob/robots.dmi', icon_state = "haydeeengi"), // SPLURT Addon "Feline" = image(icon = 'modular_splurt/icons/mob/widerobot.dmi', icon_state = "vixengi-b"), // SPLURT Addon (ChompS Port) "Raptor V-4" = image(icon = 'modular_splurt/icons/mob/robots_64x45.dmi', icon_state = "engiraptor-b"), // SPLURT Addon (ChompS Port) @@ -748,6 +749,11 @@ cyborg_base_icon = "assaultron_engi" cyborg_icon_override = 'modular_splurt/icons/mob/robots.dmi' hat_offset = 3 + if("Meka") + cyborg_base_icon = "mekaengi" + cyborg_icon_override = 'modular_splurt/icons/mob/robots_32x64.dmi' + hat_offset = 3 + hasrest = TRUE if("Haydee") // SPLURT Addon cyborg_base_icon = "haydeeengi" cyborg_icon_override = 'modular_splurt/icons/mob/robots.dmi' diff --git a/code/modules/modular_computers/file_system/programs/secureye.dm b/code/modules/modular_computers/file_system/programs/secureye.dm index d2d7590cb1..4dc3188443 100644 --- a/code/modules/modular_computers/file_system/programs/secureye.dm +++ b/code/modules/modular_computers/file_system/programs/secureye.dm @@ -144,8 +144,8 @@ var/list/visible_turfs = list() - // Is this camera located in or attached to a living thing? If so, assume the camera's loc is the living thing. - var/cam_location = isliving(active_camera.loc) ? active_camera.loc : active_camera + // Need to get camera's location or it + var/cam_location = get_atom_on_turf(active_camera) // If we're not forcing an update for some reason and the cameras are in the same location, // we don't need to update anything. diff --git a/code/modules/unit_tests/create_and_destroy.dm b/code/modules/unit_tests/create_and_destroy.dm index 85e34dd87d..0145148930 100644 --- a/code/modules/unit_tests/create_and_destroy.dm +++ b/code/modules/unit_tests/create_and_destroy.dm @@ -134,10 +134,8 @@ GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) ignore += typesof(/obj/machinery/rnd/production) // This one sleeps too in it's AI code ignore += typesof(/mob/living/simple_animal/hostile/swarmer) - - for(var/obj/item/stack/stacktype in typesof(/obj/item/stack)) - if(initial(stacktype.is_cyborg)) - ignore += typesof(stacktype) + // Some stack objects can't be initialized outside a borg module + ignore += typesof(/obj/item/stack) var/list/cached_contents = spawn_at.contents.Copy() var/original_turf_type = spawn_at.type diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml index 6446b3f52e..64b4de82ad 100644 --- a/html/changelogs/archive/2024-01.yml +++ b/html/changelogs/archive/2024-01.yml @@ -13,3 +13,8 @@ 2024-01-06: Fabian272: - spellcheck: Fixes naming of the Mechanical Pinches and Searing Tool in lathes. +2024-01-09: + Anonymous: + - rscadd: Added box of hugs into loadout. + AyyRobotics: + - rscadd: Added Engineering 'Meka' diff --git a/modular_splurt/code/modules/client/loadout/backpack.dm b/modular_splurt/code/modules/client/loadout/backpack.dm index a69846a37b..dd923be7ac 100644 --- a/modular_splurt/code/modules/client/loadout/backpack.dm +++ b/modular_splurt/code/modules/client/loadout/backpack.dm @@ -104,12 +104,16 @@ name = "Towel" path = /obj/item/reagent_containers/rag/towel +/datum/gear/backpack/hugbox + name = "Box of Hugs" + path = /obj/item/storage/box/hug + /datum/gear/backpack/shockcollar name = "Shock Collar Kit" path = /obj/item/storage/box/shockcollar subcategory = LOADOUT_SUBCATEGORY_BACKPACK_TOYS cost = 3 - + /datum/gear/backpack/standard_chastity_box name = "Chastity Box" path = /obj/item/storage/box/chastity_cage diff --git a/modular_splurt/icons/mob/robots_32x64.dmi b/modular_splurt/icons/mob/robots_32x64.dmi index 8a1fc1c18a..534ef74568 100644 Binary files a/modular_splurt/icons/mob/robots_32x64.dmi and b/modular_splurt/icons/mob/robots_32x64.dmi differ