diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 1204393f095..3380355761e 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -392,7 +392,7 @@ Auto Patrol: []"}, ..() return - if(type != /obj/item/clothing/head/helmet) //Eh, but we don't want people making secbots out of space helmets. + if(type != /obj/item/clothing/head/helmet && type != /obj/item/clothing/head/helmet/sec) //Eh, but we don't want people making secbots out of space helmets. return if(S.secured) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 7429e162871..f93b7f48696 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -331,3 +331,18 @@ return 1 busy = 0 return 0 + + +/obj/machinery/camera/portable //Cameras which are placed inside of things, such as helmets. + var/turf/prev_turf + +/obj/machinery/camera/portable/New() + ..() + assembly.state = 0 //These cameras are portable, and so shall be in the portable state if removed. + assembly.anchored = 0 + assembly.update_icon() + +/obj/machinery/camera/portable/process() //Updates whenever the camera is moved. + if(cameranet && get_turf(src) != prev_turf) + cameranet.updatePortableCamera(src) + prev_turf = get_turf(src) \ No newline at end of file diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 8875e8fcb38..12d4290aea3 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -12,21 +12,27 @@ max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT strip_delay = 60 can_flashlight = 1 - var/obj/machinery/camera/helmetCam = null + var/obj/machinery/camera/portable/helmetCam = null var/spawnWithHelmetCam = 0 - var/canAttachCam = 1 + var/canAttachCam = 0 /obj/item/clothing/head/helmet/New() ..() if(spawnWithHelmetCam) - helmetCam = new /obj/machinery/camera(src) + helmetCam = new /obj/machinery/camera/portable(src) helmetCam.c_tag = "Helmet-Mounted Camera (No User)([rand(1,999)])" helmetCam.network = list("SS13") update_icon() +/obj/item/clothing/head/helmet/emp_act(severity) + if(helmetCam) + helmetCam.emp_act(severity) + ..() + /obj/item/clothing/head/helmet/sec spawnWithHelmetCam = 1 + canAttachCam = 1 /obj/item/clothing/head/helmet/alt name = "bulletproof helmet" @@ -34,7 +40,6 @@ icon_state = "helmetalt" item_state = "helmetalt" armor = list(melee = 25, bullet = 80, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0) - canAttachCam = 0 /obj/item/clothing/head/helmet/riot name = "riot helmet" @@ -48,7 +53,6 @@ action_button_name = "Toggle Helmet Visor" visor_flags = HEADCOVERSEYES|HEADCOVERSMOUTH visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE - canAttachCam = 0 /obj/item/clothing/head/helmet/riot/attack_self() if(usr.canmove && !usr.stat && !usr.restrained()) @@ -78,7 +82,6 @@ heat_protection = HEAD max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT strip_delay = 80 - canAttachCam = 0 /obj/item/clothing/head/helmet/thunderdome name = "\improper Thunderdome helmet" @@ -91,7 +94,6 @@ heat_protection = HEAD max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT strip_delay = 80 - canAttachCam = 0 /obj/item/clothing/head/helmet/roman name = "roman helmet" @@ -101,14 +103,12 @@ icon_state = "roman" item_state = "roman" strip_delay = 100 - canAttachCam = 0 /obj/item/clothing/head/helmet/roman/legionaire name = "roman legionaire helmet" desc = "An ancient helmet made of bronze and leather. Has a red crest on top of it." icon_state = "roman_c" item_state = "roman_c" - canAttachCam = 0 /obj/item/clothing/head/helmet/gladiator name = "gladiator helmet" @@ -117,7 +117,6 @@ flags = HEADCOVERSEYES|BLOCKHAIR item_state = "gladiator" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES - canAttachCam = 0 obj/item/clothing/head/helmet/redtaghelm name = "red laser tag helmet" @@ -128,7 +127,6 @@ obj/item/clothing/head/helmet/redtaghelm armor = list(melee = 30, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0) // Offer about the same protection as a hardhat. flags_inv = HIDEEARS|HIDEEYES - canAttachCam = 0 obj/item/clothing/head/helmet/bluetaghelm name = "blue laser tag helmet" @@ -139,7 +137,6 @@ obj/item/clothing/head/helmet/bluetaghelm armor = list(melee = 30, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0) // Offer about the same protection as a hardhat. flags_inv = HIDEEARS|HIDEEYES - canAttachCam = 0 //LightToggle @@ -203,7 +200,7 @@ obj/item/clothing/head/helmet/bluetaghelm user << "[src] already has a mounted camera." return user.drop_item() - helmetCam = new /obj/machinery/camera(src) + helmetCam = new /obj/machinery/camera/portable(src) helmetCam.assembly = A A.loc = helmetCam helmetCam.c_tag = "Helmet-Mounted Camera (No User)([rand(1,999)])" @@ -218,7 +215,7 @@ obj/item/clothing/head/helmet/bluetaghelm return user.visible_message("[user] removes [helmetCam] from [src]","You remove [helmetCam] from [src]") helmetCam.assembly.loc = get_turf(src) - helmetCam.assembly.state = 0//Not welded to a wall,. it was inside a helmet + helmetCam.assembly = null qdel(helmetCam) helmetCam = null update_icon() @@ -276,7 +273,8 @@ obj/item/clothing/head/helmet/bluetaghelm /obj/item/clothing/head/helmet/equipped(mob/user) if(helmetCam) - helmetCam.c_tag = "Helmet-Mounted Camera ([user.name])([rand(1,999)])" + spawn(10) //Gives time for the game to set a name (lol rhyme) to roundstart officers. + helmetCam.c_tag = "Helmet-Mounted Camera ([user.name])([rand(1,999)])" /obj/item/clothing/head/helmet/dropped(mob/user) if(F) diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index 29122abb26c..a97a9964824 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -6,7 +6,6 @@ slowdown = 1 armor = list(melee = 60, bullet = 30/*bullet through the visor*/, laser = 60, energy = 60, bomb = 30, bio = 90, rad = 90) var/obj/item/clothing/suit/space/chronos/suit = null - canAttachCam = 0 /obj/item/clothing/head/helmet/space/chronos/dropped() if(suit) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 2aeb3fc768f..610f50c5642 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -10,7 +10,7 @@ item_color = "engineering" //Determines used sprites: hardsuit[on]-[color] and hardsuit[on]-[color]2 (lying down sprite) action_button_name = "Toggle Helmet Light" flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP - canAttachCam = 0 + /obj/item/clothing/head/helmet/space/hardsuit/attack_self(mob/user) if(!isturf(user.loc)) @@ -57,7 +57,7 @@ armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0) heat_protection = HEAD //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - canAttachCam = 0 + /obj/item/clothing/suit/space/hardsuit/atmos name = "atmospherics hardsuit" @@ -80,7 +80,7 @@ armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 90) heat_protection = HEAD //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - canAttachCam = 0 + /obj/item/clothing/suit/space/hardsuit/elite icon_state = "hardsuit-white" @@ -102,7 +102,7 @@ item_color = "mining" armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50) brightness_on = 7 - canAttachCam = 0 + /obj/item/clothing/suit/space/hardsuit/mining icon_state = "hardsuit-mining" @@ -211,7 +211,7 @@ icon_state = "hardsuit1-owl" item_state = "s_helmet" item_color = "owl" - canAttachCam = 0 + /obj/item/clothing/suit/space/hardsuit/syndi/owl name = "owl hardsuit" @@ -235,7 +235,7 @@ heat_protection = HEAD //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT unacidable = 1 - canAttachCam = 0 + /obj/item/clothing/suit/space/hardsuit/wizard icon_state = "hardsuit-wiz" @@ -263,7 +263,7 @@ flash_protect = 0 flags_inv = HIDEMASK|HIDEEARS|HIDEEYES armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50) - canAttachCam = 0 + /obj/item/clothing/suit/space/hardsuit/medical icon_state = "hardsuit-medical" @@ -284,7 +284,7 @@ item_state = "sec_helm" item_color = "sec" armor = list(melee = 30, bullet = 15, laser = 30,energy = 10, bomb = 10, bio = 100, rad = 50) - canAttachCam = 0 + /obj/item/clothing/suit/space/hardsuit/security icon_state = "hardsuit-sec" @@ -301,7 +301,7 @@ icon_state = "hardsuit0-hos" item_color = "hos" armor = list(melee = 45, bullet = 25, laser = 30,energy = 10, bomb = 25, bio = 100, rad = 50) - canAttachCam = 0 + /obj/item/clothing/suit/space/hardsuit/security/hos icon_state = "hardsuit-hos" diff --git a/html/changelogs/Gun_Hog-RR-Steelpoint-PR-8439.yml b/html/changelogs/Gun_Hog-RR-Steelpoint-PR-8439.yml new file mode 100644 index 00000000000..049a26b1027 --- /dev/null +++ b/html/changelogs/Gun_Hog-RR-Steelpoint-PR-8439.yml @@ -0,0 +1,11 @@ + +# Your name. +author: Steelpoint, RemieRichards, and Gun Hog + + +delete-after: True + + +changes: + - rscadd: "Nanotrasen Security has authorized modifications to the standard issue helmets for officers. These helmets are now issued with a mounted camera, automatically synced to your assigned station's camera network. In addition, the helmets also include mounting points for the Seclite model of flashlights, found in your station's security vendors." + - rscadd: "Nanotrasen Security helmets are designed for easy repairs in the field. Officers may remove their Seclite attachment with any screwdriver, and the camera's assembly may be pried off with a crowbar. The assembly is also compatible with analyzer upgrades for scanning through the station's structure, and EMP shielding is possible by applying a sheet of plasma.