From dcbcfefa010043f6e15a13840eb5e2007f7cb965 Mon Sep 17 00:00:00 2001 From: GunHog Date: Thu, 8 Oct 2015 11:30:39 -0500 Subject: [PATCH] Action buttons + More mobs! - Scanner control is now an action button. - Fixed multiple scanner bugs (I think) - Gave ability to drones and borgs. --- code/_onclick/hud/action.dm | 34 +++++++++++++++++- code/game/objects/items.dm | 2 +- code/modules/clothing/glasses/glasses.dm | 5 +-- code/modules/clothing/spacesuits/hardsuit.dm | 4 +-- .../modules/mob/living/silicon/robot/robot.dm | 1 + .../simple_animal/friendly/drone/_drone.dm | 2 ++ code/modules/mob/mob_defines.dm | 1 + icons/mob/actions.dmi | Bin 48686 -> 49427 bytes 8 files changed, 43 insertions(+), 6 deletions(-) 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 0beea59990080aec90722239912ac619a42dc22e..d4a903af875f72840882e776fc6265e9ce6fe986 100644 GIT binary patch delta 7702 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 QLI3~&07*qoM6N<$g4rrMd;kCd delta 6960 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