From bdff330e12a967c8a4f7d3ad2545790d55f8d4e3 Mon Sep 17 00:00:00 2001 From: Max-023 Date: Sat, 14 Sep 2024 18:58:25 -0400 Subject: [PATCH] Camera Bullshit --- code/__DEFINES/equipment.dm | 2 ++ code/_globalvars/bitfields.dm | 1 + code/game/camera_manager/camera_manager.dm | 4 +++ code/game/machinery/camera/camera.dm | 4 +++ code/modules/clothing/glasses/night.dm | 12 ++++++++ code/modules/clothing/head/helmet.dm | 3 +- code/modules/cm_marines/equipment/gear.dm | 34 +++++++++++++++++++++ code/modules/cm_marines/overwatch.dm | 34 ++++++++++++++++----- code/modules/projectiles/guns/smartgun.dm | 4 +++ icons/mob/humans/onmob/ears.dmi | Bin 1300 -> 1440 bytes icons/obj/items/clothing/glasses.dmi | Bin 14946 -> 15112 bytes 11 files changed, 89 insertions(+), 9 deletions(-) diff --git a/code/__DEFINES/equipment.dm b/code/__DEFINES/equipment.dm index 5d5b81bf8c..fd97206a9d 100644 --- a/code/__DEFINES/equipment.dm +++ b/code/__DEFINES/equipment.dm @@ -159,6 +159,8 @@ #define BLOCK_KNOCKDOWN (1<<11) /// Whether wearing this suit grants you the ability to fire a smartgun #define SMARTGUN_HARNESS (1<<12) +///Whether wearing this headset grants you the ability to use the IFF targetting system of the smartgun +#define SMARTGUN_OPTIC (1<<13) //SUITS AND HELMETS==================================================================================== diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 6e5e239ef5..1289e7057f 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -210,6 +210,7 @@ DEFINE_BITFIELD(flags_inventory, list( "NOPRESSUREDMAGE" = NOPRESSUREDMAGE, "BLOCK_KNOCKDOWN" = BLOCK_KNOCKDOWN, "SMARTGUN_HARNESS" = SMARTGUN_HARNESS, + "SMARTGUN_OPTIC" = SMARTGUN_OPTIC, )) DEFINE_BITFIELD(flags_jumpsuit, list( diff --git a/code/game/camera_manager/camera_manager.dm b/code/game/camera_manager/camera_manager.dm index 90e80ec703..7ed9947bce 100644 --- a/code/game/camera_manager/camera_manager.dm +++ b/code/game/camera_manager/camera_manager.dm @@ -192,6 +192,10 @@ var/obj/item/clothing/clothing = current.loc cam_location = clothing.loc + else if(istype(current.loc, /obj/item/device/overwatch_camera)) + var/obj/item/device/overwatch_camera/cam_gear = current.loc + cam_location = cam_gear.loc + // 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. // Most security cameras will end here as they're not moving. diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 3b7d824928..c01bacfb41 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -366,3 +366,7 @@ GLOBAL_LIST_EMPTY_TYPED(all_cameras, /obj/structure/machinery/camera) /obj/structure/machinery/camera/cas/isXRay() return TRUE + +/obj/structure/machinery/camera/overwatch + name = "overwatch camera" + network = list(CAMERA_NET_OVERWATCH) diff --git a/code/modules/clothing/glasses/night.dm b/code/modules/clothing/glasses/night.dm index 297254ec67..38df8031d8 100644 --- a/code/modules/clothing/glasses/night.dm +++ b/code/modules/clothing/glasses/night.dm @@ -96,15 +96,27 @@ toggleable = TRUE actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/m56_goggles/far_sight) vision_flags = SEE_TURFS + flags_inventory = SMARTGUN_OPTIC fullscreen_vision = null eye_protection = EYE_PROTECTION_FLAVOR req_skill = SKILL_SPEC_WEAPONS req_skill_level = SKILL_SPEC_SMARTGUN + var/obj/structure/machinery/camera/camera var/far_sight = FALSE var/obj/item/weapon/gun/smartgun/linked_smartgun = null +/obj/item/clothing/glasses/night/m56_goggles/Initialize(mapload) + . = ..() + camera = new /obj/structure/machinery/camera/overwatch + +/obj/item/clothing/glasses/night/m56_goggles/equipped(mob/living/carbon/human/mob, slot) + if(camera) + camera.c_tag = mob.name + ..() + /obj/item/clothing/glasses/night/m56_goggles/Destroy() + QDEL_NULL(camera) linked_smartgun = null disable_far_sight() return ..() diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index caa38d8888..2d4ed60e36 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -441,8 +441,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( pockets.bypass_w_limit = GLOB.allowed_helmet_items pockets.max_storage_space = storage_max_storage_space - camera = new /obj/structure/machinery/camera(src) - camera.network = list(CAMERA_NET_OVERWATCH) + camera = new /obj/structure/machinery/camera/overwatch for(var/obj/visor as anything in built_in_visors) visor.forceMove(src) diff --git a/code/modules/cm_marines/equipment/gear.dm b/code/modules/cm_marines/equipment/gear.dm index 7ec7a68f6a..c396ff87f0 100644 --- a/code/modules/cm_marines/equipment/gear.dm +++ b/code/modules/cm_marines/equipment/gear.dm @@ -371,3 +371,37 @@ new /obj/item/reagent_container/food/snacks/cookie(src) if(5) new /obj/item/reagent_container/food/snacks/chocolatebar(src) + +/obj/item/device/overwatch_camera + name = "M5 Camera Gear" + desc = "A camera and associated headgear designed to allow marine commanders to see what their troops can see. A more robust version of this equipment is integrated into all standard USCM combat helmets." + icon = 'icons/obj/items/clothing/glasses.dmi' + icon_state = "overwatch_gear" + item_icons = list( + WEAR_L_EAR = 'icons/mob/humans/onmob/ears.dmi', + WEAR_R_EAR = 'icons/mob/humans/onmob/ears.dmi', + ) + item_state_slots = list( + WEAR_L_EAR = "cam_gear", + WEAR_R_EAR = "cam_gear", + ) + flags_equip_slot = SLOT_EAR + var/obj/structure/machinery/camera/camera + +/obj/item/device/overwatch_camera/Initialize(mapload, ...) + . = ..() + camera = new /obj/structure/machinery/camera/overwatch(src) + +/obj/item/device/overwatch_camera/Destroy() + QDEL_NULL(camera) + return ..() + +/obj/item/device/overwatch_camera/equipped(mob/living/carbon/human/mob, slot) + if(camera) + camera.c_tag = mob.name + ..() + +/obj/item/device/overwatch_camera/dropped(mob/user) + if(camera) + camera.c_tag = "Unknown" + ..() diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm index 4b0ec5fff6..d617ae1140 100644 --- a/code/modules/cm_marines/overwatch.dm +++ b/code/modules/cm_marines/overwatch.dm @@ -218,7 +218,7 @@ if(mob_state == "Conscious" && (locate(/datum/effects/crit) in marine_human.effects_list)) mob_state = "Incapacitated" - if(!istype(marine_human.head, /obj/item/clothing/head/helmet/marine)) + if(!marine_has_camera(marine_human)) has_helmet = FALSE if(!marine_human.key || !marine_human.client) @@ -652,13 +652,33 @@ cam = null user.reset_view(null) -//returns the helmet camera the human is wearing -/obj/structure/machinery/computer/overwatch/proc/get_camera_from_target(mob/living/carbon/human/H) +/// checks if the human has an overwatch camera at all +/obj/structure/machinery/computer/overwatch/proc/marine_has_camera(mob/living/carbon/human/marine) + if(istype(marine.head, /obj/item/clothing/head/helmet/marine)) + return TRUE + if(istype(marine.wear_l_ear, /obj/item/device/overwatch_camera) || istype(marine.wear_r_ear, /obj/item/device/overwatch_camera)) + return TRUE + if(istype(marine.glasses, /obj/item/clothing/glasses/night/m56_goggles)) + return TRUE + return FALSE +/// returns the overwatch camera the human is wearing +/obj/structure/machinery/computer/overwatch/proc/get_camera_from_target(mob/living/carbon/human/marine) if(current_squad) - if(H && istype(H) && istype(H.head, /obj/item/clothing/head/helmet/marine)) - var/obj/item/clothing/head/helmet/marine/helm = H.head - return helm.camera - + if(marine && istype(marine)) + if(istype(marine.head, /obj/item/clothing/head/helmet/marine)) + var/obj/item/clothing/head/helmet/marine/helm = marine.head + return helm.camera + var/obj/item/device/overwatch_camera/cam_gear + if(istype(marine.wear_l_ear, /obj/item/device/overwatch_camera)) + cam_gear = marine.wear_l_ear + return cam_gear.camera + if(istype(marine.wear_r_ear, /obj/item/device/overwatch_camera)) + cam_gear = marine.wear_r_ear + return cam_gear.camera + var/obj/item/clothing/glasses/night/m56_goggles/m56_cam + if(istype(marine.glasses, /obj/item/clothing/glasses/night/m56_goggles)) + m56_cam = marine.glasses + return m56_cam.camera // Alerts all groundside marines about the incoming OB /obj/structure/machinery/computer/overwatch/proc/alert_ob(turf/target) diff --git a/code/modules/projectiles/guns/smartgun.dm b/code/modules/projectiles/guns/smartgun.dm index ef36f9fd32..5e9ee8b3a5 100644 --- a/code/modules/projectiles/guns/smartgun.dm +++ b/code/modules/projectiles/guns/smartgun.dm @@ -328,6 +328,10 @@ to_chat(H, SPAN_WARNING("You can't fire \the [src] with the feed cover open! (alt-click to close)")) balloon_alert(user, "cannot fire; feed cover open") return FALSE + if(iff_enabled) + if(!H.glasses || !(H.glasses.flags_inventory & SMARTGUN_OPTIC)) + balloon_alert(user, "m56 headset required for iff tracking") + return FALSE /obj/item/weapon/gun/smartgun/unique_action(mob/user) if(isobserver(usr) || isxeno(usr)) diff --git a/icons/mob/humans/onmob/ears.dmi b/icons/mob/humans/onmob/ears.dmi index 3482dcf6fec314ed084c852a5e16ae98c25fa952..48b4662a7fefc8a020ab37c04d904bc34cd34cc2 100644 GIT binary patch delta 1184 zcmbQjwSaqq7(XKe2Qvc$L-v}85Fph!Q8m%>={f~VW4rn+1}+Bn|Nm#o$jGRvsU0|Q zz}3~&(b2J`r6n{pH2%NvH=ugPk|4ie28U-i(tw;T6Xz|cZ+Z9R$ekZ03%Uy;7q5Bn z>N!)NAp>(q^*+ByM*#)~7G6&m$B>FSZ|`y!UviLWOP=5U}>uuKD>j zznyCDRoLJE`mMN8F=y%g_f@|enLchVl%Ad5X|J{6jQC?Sv-3jrB~RX8$bZjQ{w~k^ z=})11D-IZazkGP^%UYnhhotBJu>R8in9pv?sn4o=0vl781%LL7sh`Jw&%^M`c9?Ap z4EGG}8-6lQx3@nKuduE7)28~F>yPE;%v1gM;>7)h+l&A0tDkxE%pT$C=?CwCjXe42 zao_Vle?2Yq%Rq8J?*QeVH<|~r++*rK`dcETk~_uzQFO)c*!`?`d5F5 z3i>zY??nmbZ*%@$%=s!9(c8oO#w_sXr5iO48~JQ6eL7jecC2CT{Oi9MRHBm$lUvW~ zY4tm`^92SOzK?pke$Cnq?LqfUUuyd%)i}96kDXkeQnvT zO?=10eoM^^e=HNX^h4RRDEpkPm!~~{z!C8_JLO%3bHz!O&P#eb+rrn*j@@~UKl<&K zqZ!Ln1N9x)U#f1Fo%?F(ulD_IRROaKH*)tke3>&j_we7St5pG2t}}&2wCY%{uKNn) z9Biq#Z;A@9-W~hfJ>c-Uz4!BH{r>#iHNyMU>yWgrt}lC4szkp9KsXoLGOypfUAXbwy>(NwtD2(xcD2RZZ-~upYAdd4+16D0ZJW=m;*B@w^c~*4 zOnt@IHQ7JDI{yxvotJax)K;MbmbOmyFWQe5fz(LL@*hD`Q#O0u_O)f}t|^>*DHvq0 zQ>uSyPWRb$7uA%u&FfDq)vn#&=8-D8Uhz_O=z7H_xs1>CPM6Akj)c~~x?MB-a>J%~+;IkEzh%jrocq(AVADQ{`)lc`5TYatQEUI@E>@8>HPBWZ>mBJhD(Zez2Becq;mCh?SEcj zp_TLA|IVKQagHa$0tug!?}E1_?v>d0sn($FAD72v`}|n@cD<$f^_LU*5A5IGxS#z} g<9mCk`yVX&%U*WfRCVrsOJ0zWr>mdKI;Vst0GG*3K>z>% delta 1043 zcmV+u1nm2u3zQ0w77qa62m=5B0NbBPVgLXDV38$Z7{I{5OnbVR00001bW%=J06^y0 zW&i*Hs*%5-e=cPOS3ehUL;wKk-*4`Un8}X-00XQ^L_t(|obBC-a@sHyg<(hoZ4y$T zEGB{E{U5V-hJcnUUCZ(k!~byAs25`qmb|w>GM5YhZtbFVq&cB=HWjc-LKiky! zvq>J$e!gGMZE9X7;b;UNXXiV!$3}TIA{dRq{QCvYf9H+zYQ!uQjl#Wu1ONa400000 z004S5bU)wu_Lcg)^L~El?N=gG*h@b@^!6hK;&10RH7}EJRAbB^=QcGjlW=qq?$Do} z&v%}m8s*i9U{qtw%i?@z@zN--Mg*g)aEJbSd4aEu@@hmdsxfA>)fX1WfG1q!X0`)=kJHdESK(`w7d*f z!RRX7q0iUfcLL|{&*OQ$^Y_DJRx9^TT3!Xg$PoDmtk++2kn<5J|A~L`?GODC00000 z000000Kk11_vQE7Ay?=dz#%Q4 zyw#q8<#Hu-=$l>qQCj|1{<1g|_Fn$79PJs{O`Hv!4oUge*?dI34n5KK&3OjSgzew= z_5>71XSnl#!zn3GLWd4jk(m!IdzW=oUZIu`P1~huoNuV)d}!J(3jhEB00000aPPeK ze>E}hfL8Zf?WosId-n0zYhM%dJmT~kg}0bn{jk?gd)}in;I*%bx$p?(EmIUmyChAo zSvO0$)en2^w8v?ubxChPf%cX;POkM*`_tb-J*cg?IK^i`d(OqN<9;o-9@O4Z?gE9( zub|fTUJq(-nD|#v?^}{R4=HhU;9*38fCz$oDH2wCWeXmV-HtywC2_P- zTP07rfWg2EG{of*#=&#(TzBKxUA>scFJR!znD-2NJ$F@H9#JUg?;FSN#ay|7!A@DA zaqDOAYGo?j1%Lr*<@DHp!h}kz=g0mNCNx?-KlYz60RR91003~`{sSqWFS-m}TT}o5 N002ovPDHLkV1lQ9|3v@* diff --git a/icons/obj/items/clothing/glasses.dmi b/icons/obj/items/clothing/glasses.dmi index 13dd0c542c6ee8260d93fa6e7dc3c3e91e20f8a4..e94d43c6bf47593a82830900cd0681a9128d9b97 100644 GIT binary patch literal 15112 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 b-s3e41?wV1CCk8fM*&4yHJJ)2qk#Vba9gT^