diff --git a/code/_onclick/hud/action.dm b/code/_onclick/hud/action.dm index c1442fe2e9c..507090fdb4e 100644 --- a/code/_onclick/hud/action.dm +++ b/code/_onclick/hud/action.dm @@ -264,4 +264,36 @@ if(owner.mind) if(target in owner.mind.spell_list) return 0 - return !(target in owner.mob_spell_list) \ No newline at end of file + return !(target in owner.mob_spell_list) + + +//Action button controlling a mob's research examine ability. +/datum/action/scan_mode + name = "Toggle Research Scanner" + button_icon_state = "scan_mode" + check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_ALIVE + action_type = AB_INNATE + var/devices = 0 //How may enabled scanners the mob has + +/datum/action/scan_mode/Activate() + active = 1 + owner.research_scanner = 1 + owner << " Research analyzer is now active." + +/datum/action/scan_mode/Deactivate() + active = 0 + owner.research_scanner = 0 + owner << " Research analyzer deactivated." + +/datum/action/scan_mode/Grant(mob/living/T) + devices += 1 + ..(T) + +/datum/action/scan_mode/CheckRemoval(mob/living/user) + if(devices) + return 0 + return 1 + +/datum/action/scan_mode/Remove(mob/living/T) + owner.research_scanner = 0 + ..(T) \ No newline at end of file diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index a58d351dc4c..b6f5ec56cd5 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -189,7 +189,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s msg += "[capitalize(copytext(mat, 2))]
" //Capitize first word, remove the "$" else msg += "No extractable materials detected.
" - msg += "*--------*
" + msg += "*--------*" user << msg diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index b4e82d05bd8..c033703bc83 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -38,11 +38,12 @@ item_state = "glasses" /obj/item/clothing/glasses/science/equipped(mob/user, slot) - user.research_scanner = 1 + if(slot == slot_glasses) + user.scanner.Grant(user) ..(user, slot) /obj/item/clothing/glasses/science/dropped(mob/user) - user.research_scanner = initial(user.research_scanner) //Because some mobs might have it defaulted to 1. + user.scanner.devices -= 1 ..(user) /obj/item/clothing/glasses/night diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 47e6064953f..143d308367d 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -325,11 +325,11 @@ armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 100, bio = 100, rad = 60) /obj/item/clothing/head/helmet/space/hardsuit/rd/equipped(mob/user, slot) - user.research_scanner = 1 + user.scanner.Grant(user) ..(user, slot) /obj/item/clothing/head/helmet/space/hardsuit/rd/dropped(mob/user) - user.research_scanner = 0 + user.scanner.devices -= 1 ..(user) /obj/item/clothing/suit/space/hardsuit/rd diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 905052b3ef0..bf1f812ae1f 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -125,6 +125,7 @@ playsound(loc, 'sound/voice/liveagain.ogg', 75, 1) aicamera = new/obj/item/device/camera/siliconcam/robot_camera(src) toner = 40 + scanner.Grant(src) //If there's an MMI in the robot, have it ejected when the mob goes away. --NEO /mob/living/silicon/robot/Destroy() diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index fafff43c6e0..3d449c4d653 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -80,6 +80,8 @@ var/obj/item/I = new default_hatmask(src) equip_to_slot_or_del(I, slot_head) + scanner.Grant(src) + alert_drones(DRONE_NET_CONNECT) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index a3beaa4912a..ddda848c270 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -94,6 +94,7 @@ var/datum/hud/hud_used = null var/research_scanner = 0 //For research scanner equipped mobs. Enable to show research data when examining. + var/datum/action/scan_mode/scanner = new var/list/grabbed_by = list( ) var/list/requests = list( ) diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 0beea599900..d4a903af875 100644 Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ