From 8837c8961b33ddd2140b992e0df4706b997bd6d5 Mon Sep 17 00:00:00 2001 From: NervanCatos Date: Sun, 28 Jan 2024 22:28:07 -0600 Subject: [PATCH 01/12] modified: code/game/objects/items/devices/motion_detector.dm modified: code/modules/clothing/suits/marine_armor.dm modified: code/modules/mob/living/carbon/human/human_helpers.dm --- .../objects/items/devices/motion_detector.dm | 7 ++ code/modules/clothing/suits/marine_armor.dm | 71 +++++++++++++++++++ .../mob/living/carbon/human/human_helpers.dm | 16 +++++ 3 files changed, 94 insertions(+) diff --git a/code/game/objects/items/devices/motion_detector.dm b/code/game/objects/items/devices/motion_detector.dm index c26db692f082..cd68a3489a54 100644 --- a/code/game/objects/items/devices/motion_detector.dm +++ b/code/game/objects/items/devices/motion_detector.dm @@ -191,6 +191,13 @@ if(ishuman(A.loc)) return A.loc +/obj/item/device/motiondetector/xm4 + +/obj/item/device/motiondetector/xm4/get_user() + var/atom/A = loc + if(ishuman(A.loc)) + return A.loc + /obj/item/device/motiondetector/proc/apply_debuff(mob/M) return diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index afefa2903ab4..5f457c0fb156 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -282,6 +282,77 @@ name = "\improper XM4 pattern intelligence officer armor" uniform_restricted = list(/obj/item/clothing/under/marine/officer, /obj/item/clothing/under/rank/qm_suit, /obj/item/clothing/under/marine/officer/intel) specialty = "XM4 pattern intel" + // XM4 Integral Motion Detector + actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/intel/toggle_motion_detector) + var/motion_detector = 0 + var/obj/item/device/motiondetector/xm4/MD + var/long_range_cooldown = 2 + var/recycletime = 120 + +/obj/item/clothing/suit/storage/marine/medium/rto/intel/Initialize(mapload, ...) + MD = new(src) + . = ..() + update_icon() +/datum/action/item_action/intel/action_activate() + if(!ishuman(owner)) + return + +/datum/action/item_action/intel/update_button_icon() + return + +/datum/action/item_action/intel/toggle_motion_detector/New(Target, obj/item/holder) + . = ..() + name = "Toggle Motion Detector" + action_icon_state = "motion_detector" + button.name = name + button.overlays.Cut() + button.overlays += image('icons/mob/hud/actions.dmi', button, action_icon_state) + +/datum/action/item_action/intel/toggle_motion_detector/action_activate() + . = ..() + var/obj/item/clothing/suit/storage/marine/medium/rto/intel/io = holder_item + io.toggle_motion_detector(usr) + +/datum/action/item_action/intel/toggle_motion_detector/proc/update_icon() + if(!holder_item) + return + var/obj/item/clothing/suit/storage/marine/medium/rto/intel/io = holder_item + if(io.motion_detector) + button.icon_state = "template_on" + else + button.icon_state = "template" + +/obj/item/clothing/suit/storage/marine/medium/rto/intel/process() + if(!motion_detector) + STOP_PROCESSING(SSobj, src) + if(motion_detector) + recycletime-- + if(!recycletime) + recycletime = initial(recycletime) + MD.refresh_blip_pool() + + long_range_cooldown-- + if(long_range_cooldown) + return + long_range_cooldown = initial(long_range_cooldown) + MD.scan() + +/obj/item/clothing/suit/storage/marine/medium/rto/intel/proc/toggle_motion_detector(mob/user) + to_chat(user, "[icon2html(src, usr)] You [motion_detector? "disable" : "enable"] \the [src]'s motion detector.") + if(!motion_detector) + playsound(loc,'sound/items/detector_turn_on.ogg', 25, 1) + else + playsound(loc,'sound/items/detector_turn_off.ogg', 25, 1) + motion_detector = !motion_detector + var/datum/action/item_action/intel/toggle_motion_detector/TMD = locate(/datum/action/item_action/intel/toggle_motion_detector) in actions + TMD.update_icon() + motion_detector() + +/obj/item/clothing/suit/storage/marine/medium/rto/intel/proc/motion_detector() + if(motion_detector) + START_PROCESSING(SSobj, src) + if(!motion_detector) + STOP_PROCESSING(SSobj, src) /obj/item/clothing/suit/storage/marine/MP name = "\improper M2 pattern MP armor" diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 08ddd11da5b3..02d88ef74087 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -248,6 +248,22 @@ TMD.update_icon() sg.motion_detector() + for(var/i in cont) + if(istype(i, /obj/item/device/assembly/prox_sensor)) + var/obj/item/device/assembly/prox_sensor/prox = i + if(prox.scanning) + prox.toggle_scan() + if(istype(i, /obj/item/device/motiondetector)) + var/obj/item/device/motiondetector/md = i + md.toggle_active(src, old_active = TRUE, forced = TRUE) + if(istype(i, /obj/item/clothing/suit/storage/marine/medium/rto/intel)) + var/obj/item/clothing/suit/storage/marine/medium/rto/intel/xm4 = i + if(xm4.motion_detector) + xm4.motion_detector = FALSE + var/datum/action/item_action/intel/toggle_motion_detector/TMD = locate(/datum/action/item_action/intel/toggle_motion_detector) in xm4.actions + TMD.update_icon() + xm4.motion_detector() + /mob/living/carbon/human/proc/disable_headsets() //Disable all radios to reduce radio spam for dead people var/list/cont = contents_recursive() From 181fbd372503d268a47b18d3b9ad7d347838c87a Mon Sep 17 00:00:00 2001 From: NervanCatos Date: Mon, 29 Jan 2024 20:01:48 -0600 Subject: [PATCH 02/12] Fixes that Birdtalon pointed out --- .../objects/items/devices/motion_detector.dm | 2 +- code/modules/clothing/suits/marine_armor.dm | 25 ++++++++++--------- .../mob/living/carbon/human/human_helpers.dm | 9 ------- 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/code/game/objects/items/devices/motion_detector.dm b/code/game/objects/items/devices/motion_detector.dm index cd68a3489a54..077a9603efe3 100644 --- a/code/game/objects/items/devices/motion_detector.dm +++ b/code/game/objects/items/devices/motion_detector.dm @@ -197,7 +197,7 @@ var/atom/A = loc if(ishuman(A.loc)) return A.loc - +///Forces a blue ping around the detected mob /obj/item/device/motiondetector/proc/apply_debuff(mob/M) return diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 5f457c0fb156..2e2929a25a73 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -282,17 +282,19 @@ name = "\improper XM4 pattern intelligence officer armor" uniform_restricted = list(/obj/item/clothing/under/marine/officer, /obj/item/clothing/under/rank/qm_suit, /obj/item/clothing/under/marine/officer/intel) specialty = "XM4 pattern intel" - // XM4 Integral Motion Detector + desc = "The XM4 armor is custom made for Intelligence Officers. It includes an experimental integrated motion detector. This took the R&D team a whole weekend to make." + /// XM4 Integral Motion Detector Ability actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/intel/toggle_motion_detector) - var/motion_detector = 0 - var/obj/item/device/motiondetector/xm4/MD + var/motion_detector = FALSE + var/obj/item/device/motiondetector/xm4/proximity var/long_range_cooldown = 2 var/recycletime = 120 /obj/item/clothing/suit/storage/marine/medium/rto/intel/Initialize(mapload, ...) - MD = new(src) . = ..() + proximity = new(src) update_icon() + /datum/action/item_action/intel/action_activate() if(!ishuman(owner)) return @@ -310,14 +312,14 @@ /datum/action/item_action/intel/toggle_motion_detector/action_activate() . = ..() - var/obj/item/clothing/suit/storage/marine/medium/rto/intel/io = holder_item - io.toggle_motion_detector(usr) + var/obj/item/clothing/suit/storage/marine/medium/rto/intel/armor = holder_item + armor.toggle_motion_detector(usr) /datum/action/item_action/intel/toggle_motion_detector/proc/update_icon() if(!holder_item) return - var/obj/item/clothing/suit/storage/marine/medium/rto/intel/io = holder_item - if(io.motion_detector) + var/obj/item/clothing/suit/storage/marine/medium/rto/intel/armor = holder_item + if(armor.motion_detector) button.icon_state = "template_on" else button.icon_state = "template" @@ -329,16 +331,15 @@ recycletime-- if(!recycletime) recycletime = initial(recycletime) - MD.refresh_blip_pool() - + proximity.refresh_blip_pool() long_range_cooldown-- if(long_range_cooldown) return long_range_cooldown = initial(long_range_cooldown) - MD.scan() + proximity.scan() /obj/item/clothing/suit/storage/marine/medium/rto/intel/proc/toggle_motion_detector(mob/user) - to_chat(user, "[icon2html(src, usr)] You [motion_detector? "disable" : "enable"] \the [src]'s motion detector.") + to_chat(user,SPAN_NOTICE("You [motion_detector? "disable" : "enable"] \the [src]'s motion detector.")) if(!motion_detector) playsound(loc,'sound/items/detector_turn_on.ogg', 25, 1) else diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 02d88ef74087..c38ddbcd552c 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -247,15 +247,6 @@ var/datum/action/item_action/smartgun/toggle_motion_detector/TMD = locate(/datum/action/item_action/smartgun/toggle_motion_detector) in sg.actions TMD.update_icon() sg.motion_detector() - - for(var/i in cont) - if(istype(i, /obj/item/device/assembly/prox_sensor)) - var/obj/item/device/assembly/prox_sensor/prox = i - if(prox.scanning) - prox.toggle_scan() - if(istype(i, /obj/item/device/motiondetector)) - var/obj/item/device/motiondetector/md = i - md.toggle_active(src, old_active = TRUE, forced = TRUE) if(istype(i, /obj/item/clothing/suit/storage/marine/medium/rto/intel)) var/obj/item/clothing/suit/storage/marine/medium/rto/intel/xm4 = i if(xm4.motion_detector) From 2e6eada3fc914dc190a54fc256577a1d2333c66f Mon Sep 17 00:00:00 2001 From: NervanCatos Date: Tue, 30 Jan 2024 19:27:52 -0600 Subject: [PATCH 03/12] Wording stuff --- code/game/objects/items/devices/motion_detector.dm | 3 ++- code/modules/clothing/suits/marine_armor.dm | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/devices/motion_detector.dm b/code/game/objects/items/devices/motion_detector.dm index 077a9603efe3..8c4f0561abd5 100644 --- a/code/game/objects/items/devices/motion_detector.dm +++ b/code/game/objects/items/devices/motion_detector.dm @@ -193,11 +193,12 @@ /obj/item/device/motiondetector/xm4 +///Forces the blue blip to appear around the detected mob /obj/item/device/motiondetector/xm4/get_user() var/atom/A = loc if(ishuman(A.loc)) return A.loc -///Forces a blue ping around the detected mob + /obj/item/device/motiondetector/proc/apply_debuff(mob/M) return diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 2e2929a25a73..0d17f7a7049a 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -282,7 +282,7 @@ name = "\improper XM4 pattern intelligence officer armor" uniform_restricted = list(/obj/item/clothing/under/marine/officer, /obj/item/clothing/under/rank/qm_suit, /obj/item/clothing/under/marine/officer/intel) specialty = "XM4 pattern intel" - desc = "The XM4 armor is custom made for Intelligence Officers. It includes an experimental integrated motion detector. This took the R&D team a whole weekend to make." + desc = "The XM4 armor is custom made for Intelligence Officers, it has an experimental integrated motion detector attached. The R&D team spent an entire weekend designing this armor." /// XM4 Integral Motion Detector Ability actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/intel/toggle_motion_detector) var/motion_detector = FALSE From c2603049aeb915d9dc64f501f0f83b2250d0a016 Mon Sep 17 00:00:00 2001 From: NervanCatos Date: Wed, 31 Jan 2024 22:02:04 -0600 Subject: [PATCH 04/12] Desc Update thanks Aegis Memebat System --- code/modules/clothing/suits/marine_armor.dm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 0d17f7a7049a..68da69fd29d6 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -282,7 +282,8 @@ name = "\improper XM4 pattern intelligence officer armor" uniform_restricted = list(/obj/item/clothing/under/marine/officer, /obj/item/clothing/under/rank/qm_suit, /obj/item/clothing/under/marine/officer/intel) specialty = "XM4 pattern intel" - desc = "The XM4 armor is custom made for Intelligence Officers, it has an experimental integrated motion detector attached. The R&D team spent an entire weekend designing this armor." + desc = "Tougher than steel, quieter than whispers, the XM4 Intel Armor provides capable protection combined with integrated compact motion detection sensors. It took an R&D team a weekend to develop and costs more than Chinook Station... probably." + desc_lore = "ARMAT Perfection. The XM4 Soldier Awareness System mixes M4-style hard armor and a distributed series of sensors around the breastplate. When connected to any HUD optic, it replicates the effects of an M134 Motion Detector unit, increasing user situational awareness. It is currently undergoing field trials by intelligence operatives." /// XM4 Integral Motion Detector Ability actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/intel/toggle_motion_detector) var/motion_detector = FALSE @@ -312,14 +313,14 @@ /datum/action/item_action/intel/toggle_motion_detector/action_activate() . = ..() - var/obj/item/clothing/suit/storage/marine/medium/rto/intel/armor = holder_item - armor.toggle_motion_detector(usr) + var/obj/item/clothing/suit/storage/marine/medium/rto/intel/recon = holder_item + recon.toggle_motion_detector(usr) /datum/action/item_action/intel/toggle_motion_detector/proc/update_icon() if(!holder_item) return - var/obj/item/clothing/suit/storage/marine/medium/rto/intel/armor = holder_item - if(armor.motion_detector) + var/obj/item/clothing/suit/storage/marine/medium/rto/intel/recon = holder_item + if(recon.motion_detector) button.icon_state = "template_on" else button.icon_state = "template" From 4b90bb8492bb6434628c127550d89e8cbfc6cab4 Mon Sep 17 00:00:00 2001 From: NervanCatos Date: Tue, 6 Feb 2024 19:55:33 -0600 Subject: [PATCH 05/12] Typo & wording --- code/modules/clothing/suits/marine_armor.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 68da69fd29d6..42f5a27ecf17 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -282,8 +282,8 @@ name = "\improper XM4 pattern intelligence officer armor" uniform_restricted = list(/obj/item/clothing/under/marine/officer, /obj/item/clothing/under/rank/qm_suit, /obj/item/clothing/under/marine/officer/intel) specialty = "XM4 pattern intel" - desc = "Tougher than steel, quieter than whispers, the XM4 Intel Armor provides capable protection combined with integrated compact motion detection sensors. It took an R&D team a weekend to develop and costs more than Chinook Station... probably." - desc_lore = "ARMAT Perfection. The XM4 Soldier Awareness System mixes M4-style hard armor and a distributed series of sensors around the breastplate. When connected to any HUD optic, it replicates the effects of an M134 Motion Detector unit, increasing user situational awareness. It is currently undergoing field trials by intelligence operatives." + desc = "Tougher than steel, quieter than whispers, the XM4 Intel Armor provides capable protection combined with an experimental integrated motion tracker. It took an R&D team a weekend to develop and costs more than the Chinook Station... probably." + desc_lore = "ARMAT Perfection. The XM4 Soldier Awareness System mixes M4-style hard armor and a distributed series of motion sensors around the breastplate. When connected to any HUD optic, it replicates the effects of an M314 Motion Detector unit, increasing user situational awareness. It is currently undergoing field trials by intelligence operatives." /// XM4 Integral Motion Detector Ability actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/intel/toggle_motion_detector) var/motion_detector = FALSE From 8fb429b8ae53f75a24a9680619237bbdacddf7e8 Mon Sep 17 00:00:00 2001 From: NervanCatos Date: Sun, 11 Feb 2024 11:58:30 -0600 Subject: [PATCH 06/12] Balance Changes Requested by Drathek --- code/modules/clothing/suits/marine_armor.dm | 31 +++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 42f5a27ecf17..92cd33c09b5e 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -282,8 +282,9 @@ name = "\improper XM4 pattern intelligence officer armor" uniform_restricted = list(/obj/item/clothing/under/marine/officer, /obj/item/clothing/under/rank/qm_suit, /obj/item/clothing/under/marine/officer/intel) specialty = "XM4 pattern intel" - desc = "Tougher than steel, quieter than whispers, the XM4 Intel Armor provides capable protection combined with an experimental integrated motion tracker. It took an R&D team a weekend to develop and costs more than the Chinook Station... probably." - desc_lore = "ARMAT Perfection. The XM4 Soldier Awareness System mixes M4-style hard armor and a distributed series of motion sensors around the breastplate. When connected to any HUD optic, it replicates the effects of an M314 Motion Detector unit, increasing user situational awareness. It is currently undergoing field trials by intelligence operatives." + desc = "Tougher than steel, quieter than whispers, the XM4 Intel Armor provides capable protection combined with an experimental integrated motion tracker. It took an R&D team a weekend to develop and costs more than the Chinook Station... probably. When worn, uniform accessories such as webbing cannot be attached due to the motion sensors occupying the clips." + desc_lore = "ARMAT Perfection. The XM4 Soldier Awareness System mixes M4-style hard armor and a distributed series of motion sensors clipped onto the breastplate. When connected to any HUD optic, it replicates the effects of an M314 Motion Detector unit, increasing user situational awareness. It is currently undergoing field trials by intelligence operatives." + storage_slots = 5 /// XM4 Integral Motion Detector Ability actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/intel/toggle_motion_detector) var/motion_detector = FALSE @@ -356,6 +357,32 @@ if(!motion_detector) STOP_PROCESSING(SSobj, src) +/obj/item/clothing/suit/storage/marine/medium/rto/intel/mob_can_equip(mob/living/carbon/human/user, slot, disable_warning) //Thanks to Drathek for the help on this part! + if(!..()) + return FALSE + + // Only equip if uniform doesn't already have a utility accessory slot equipped + var/obj/item/clothing/under/uniform = user.w_uniform + var/accessory = locate(/obj/item/clothing/accessory/storage) in uniform.accessories + if(accessory) + to_chat(user, SPAN_WARNING("[src] can't be worn with [accessory].")) + return FALSE + + return TRUE + +/obj/item/clothing/suit/storage/marine/medium/rto/intel/equipped(mob/user, slot, silent) //When XM4 is equipped this removes ACCESSORY_SLOT_UTILITY as a valid accessory for the uniform + . = ..() + var/mob/living/carbon/human/human = user + var/obj/item/clothing/under/uniform = human.w_uniform + if(slot == WEAR_JACKET) + uniform?.valid_accessory_slots -= ACCESSORY_SLOT_UTILITY + +/obj/item/clothing/suit/storage/marine/medium/rto/intel/unequipped(mob/user, slot) //When unequipped this adds the ACCESSORY_SLOT_UTILITY back as a valid accessory + . = ..() + var/mob/living/carbon/human/human = user + var/obj/item/clothing/under/uniform = human.w_uniform + uniform?.valid_accessory_slots += ACCESSORY_SLOT_UTILITY + /obj/item/clothing/suit/storage/marine/MP name = "\improper M2 pattern MP armor" desc = "A standard Colonial Marines M2 Pattern Chestplate. Protects the chest from ballistic rounds, bladed objects and accidents. It has a small leather pouch strapped to it for limited storage." From cc2fcf985d066cfb3988d66fe43eabbef460f0b2 Mon Sep 17 00:00:00 2001 From: NervanCatos Date: Sun, 11 Feb 2024 20:49:34 -0600 Subject: [PATCH 07/12] Patch_1 --- code/modules/clothing/suits/marine_armor.dm | 25 +++++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 92cd33c09b5e..101b77ab0928 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -354,7 +354,7 @@ /obj/item/clothing/suit/storage/marine/medium/rto/intel/proc/motion_detector() if(motion_detector) START_PROCESSING(SSobj, src) - if(!motion_detector) + else STOP_PROCESSING(SSobj, src) /obj/item/clothing/suit/storage/marine/medium/rto/intel/mob_can_equip(mob/living/carbon/human/user, slot, disable_warning) //Thanks to Drathek for the help on this part! @@ -372,16 +372,27 @@ /obj/item/clothing/suit/storage/marine/medium/rto/intel/equipped(mob/user, slot, silent) //When XM4 is equipped this removes ACCESSORY_SLOT_UTILITY as a valid accessory for the uniform . = ..() - var/mob/living/carbon/human/human = user - var/obj/item/clothing/under/uniform = human.w_uniform if(slot == WEAR_JACKET) - uniform?.valid_accessory_slots -= ACCESSORY_SLOT_UTILITY + var/mob/living/carbon/human/human = user + var/obj/item/clothing/under/uniform = human.w_uniform + if(uniform?.valid_accessory_slots) + uniform?.valid_accessory_slots -= ACCESSORY_SLOT_UTILITY /obj/item/clothing/suit/storage/marine/medium/rto/intel/unequipped(mob/user, slot) //When unequipped this adds the ACCESSORY_SLOT_UTILITY back as a valid accessory . = ..() - var/mob/living/carbon/human/human = user - var/obj/item/clothing/under/uniform = human.w_uniform - uniform?.valid_accessory_slots += ACCESSORY_SLOT_UTILITY + if(slot == WEAR_JACKET) + var/mob/living/carbon/human/human = user + var/obj/item/clothing/under/uniform = human.w_uniform + if(uniform) + // Figure out if the uniform originally allowed ACCESSORY_SLOT_UTILITY + var/obj/item/clothing/under/temp_uniform = new uniform.type + if(temp_uniform.valid_accessory_slots) + for(var/allowed in temp_uniform.valid_accessory_slots) + if(allowed == ACCESSORY_SLOT_UTILITY) + // It was allowed previously, now add it back + uniform.valid_accessory_slots += ACCESSORY_SLOT_UTILITY + break + qdel(temp_uniform) /obj/item/clothing/suit/storage/marine/MP name = "\improper M2 pattern MP armor" From 1abd37a693b107d4105693d035082e2d8567d0b8 Mon Sep 17 00:00:00 2001 From: NervanCatos <32654903+MobiusWon@users.noreply.github.com> Date: Mon, 12 Feb 2024 08:49:43 -0600 Subject: [PATCH 08/12] Edge Case Update uscm.dm IO Preset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Temporarily removes webbing as a preset equipment for the IO. When the mob is spawned, the XM4 armor doesn’t load because the XM4 no longer allows webbing. --- code/modules/gear_presets/uscm.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/gear_presets/uscm.dm b/code/modules/gear_presets/uscm.dm index 8f5243edf84d..06097ed70b63 100644 --- a/code/modules/gear_presets/uscm.dm +++ b/code/modules/gear_presets/uscm.dm @@ -251,8 +251,9 @@ /datum/equipment_preset/uscm/intel/full/load_gear(mob/living/carbon/human/new_human) var/obj/item/clothing/under/marine/officer/intel/U = new(new_human) - var/obj/item/clothing/accessory/storage/webbing/W = new() - U.attach_accessory(new_human, W) +// var/obj/item/clothing/accessory/storage/webbing/W = new() +// U.attach_accessory(new_human, W) +// Temporarily removing webbing on this preset, it causes the mob to spawn w/o the XM4 armor because XM4 doesn't allow webbing anymore. new_human.equip_to_slot_or_del(U, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/intel(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) From 810b0828ba44c580e0f6d715c226e9c21d631663 Mon Sep 17 00:00:00 2001 From: NervanCatos <32654903+MobiusWon@users.noreply.github.com> Date: Thu, 15 Feb 2024 09:43:58 -0600 Subject: [PATCH 09/12] Remove webbing from IO preset Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/modules/gear_presets/uscm.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/modules/gear_presets/uscm.dm b/code/modules/gear_presets/uscm.dm index 06097ed70b63..5402a5ed7305 100644 --- a/code/modules/gear_presets/uscm.dm +++ b/code/modules/gear_presets/uscm.dm @@ -251,9 +251,6 @@ /datum/equipment_preset/uscm/intel/full/load_gear(mob/living/carbon/human/new_human) var/obj/item/clothing/under/marine/officer/intel/U = new(new_human) -// var/obj/item/clothing/accessory/storage/webbing/W = new() -// U.attach_accessory(new_human, W) -// Temporarily removing webbing on this preset, it causes the mob to spawn w/o the XM4 armor because XM4 doesn't allow webbing anymore. new_human.equip_to_slot_or_del(U, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/intel(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) From fe9df046900561341745e393d9fa12467d37efa3 Mon Sep 17 00:00:00 2001 From: NervanCatos <32654903+MobiusWon@users.noreply.github.com> Date: Thu, 15 Feb 2024 09:44:34 -0600 Subject: [PATCH 10/12] var update Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/game/objects/items/devices/motion_detector.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/devices/motion_detector.dm b/code/game/objects/items/devices/motion_detector.dm index 8c4f0561abd5..7db2825deedf 100644 --- a/code/game/objects/items/devices/motion_detector.dm +++ b/code/game/objects/items/devices/motion_detector.dm @@ -195,9 +195,9 @@ ///Forces the blue blip to appear around the detected mob /obj/item/device/motiondetector/xm4/get_user() - var/atom/A = loc - if(ishuman(A.loc)) - return A.loc + var/atom/holder = loc + if(ishuman(holder.loc)) + return holder.loc /obj/item/device/motiondetector/proc/apply_debuff(mob/M) return From 5663c47f1440e37af3be657495431febcc0a01eb Mon Sep 17 00:00:00 2001 From: NervanCatos <32654903+MobiusWon@users.noreply.github.com> Date: Thu, 15 Feb 2024 09:45:02 -0600 Subject: [PATCH 11/12] var update 2: armor boogalo Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/modules/clothing/suits/marine_armor.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index f1359b55c5f4..01c8bf220baa 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -316,7 +316,7 @@ /datum/action/item_action/intel/toggle_motion_detector/action_activate() . = ..() var/obj/item/clothing/suit/storage/marine/medium/rto/intel/recon = holder_item - recon.toggle_motion_detector(usr) + recon.toggle_motion_detector(owner) /datum/action/item_action/intel/toggle_motion_detector/proc/update_icon() if(!holder_item) From d1fc270303f1f6a620b568951416bb613bb66e29 Mon Sep 17 00:00:00 2001 From: NervanCatos Date: Thu, 15 Feb 2024 19:13:48 -0600 Subject: [PATCH 12/12] SKILL_INTEL_EXPERT Required --- code/modules/clothing/suits/marine_armor.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 01c8bf220baa..bc29b0a33570 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -281,7 +281,7 @@ /obj/item/clothing/suit/storage/marine/medium/rto/intel name = "\improper XM4 pattern intelligence officer armor" - uniform_restricted = list(/obj/item/clothing/under/marine/officer, /obj/item/clothing/under/rank/qm_suit, /obj/item/clothing/under/marine/officer/intel) + uniform_restricted = list(/obj/item/clothing/under/marine/officer/intel) specialty = "XM4 pattern intel" desc = "Tougher than steel, quieter than whispers, the XM4 Intel Armor provides capable protection combined with an experimental integrated motion tracker. It took an R&D team a weekend to develop and costs more than the Chinook Station... probably. When worn, uniform accessories such as webbing cannot be attached due to the motion sensors occupying the clips." desc_lore = "ARMAT Perfection. The XM4 Soldier Awareness System mixes M4-style hard armor and a distributed series of motion sensors clipped onto the breastplate. When connected to any HUD optic, it replicates the effects of an M314 Motion Detector unit, increasing user situational awareness. It is currently undergoing field trials by intelligence operatives." @@ -368,7 +368,10 @@ if(accessory) to_chat(user, SPAN_WARNING("[src] can't be worn with [accessory].")) return FALSE - + // Only equip if user has expert intel skill level + if(!skillcheck(user, SKILL_INTEL, SKILL_INTEL_EXPERT)) + to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) + return FALSE return TRUE /obj/item/clothing/suit/storage/marine/medium/rto/intel/equipped(mob/user, slot, silent) //When XM4 is equipped this removes ACCESSORY_SLOT_UTILITY as a valid accessory for the uniform