diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm
index b2d288b25e1..f8d0610d410 100644
--- a/code/_onclick/hud/ai.dm
+++ b/code/_onclick/hud/ai.dm
@@ -1,3 +1,137 @@
+/obj/screen/ai
+ icon = 'icons/mob/screen_ai.dmi'
+
+/obj/screen/ai/aicore
+ name = "AI core"
+ icon_state = "ai_core"
+
+/obj/screen/ai/aicore/Click()
+ var/mob/living/silicon/ai/AI = usr
+ AI.view_core()
+
+/obj/screen/ai/camera_list
+ name = "Show Camera List"
+ icon_state = "camera"
+
+/obj/screen/ai/camera_list/Click()
+ var/mob/living/silicon/ai/AI = usr
+ var/camera = input(AI, "Choose which camera you want to view", "Cameras") as null|anything in AI.get_camera_list()
+ AI.ai_camera_list(camera)
+
+/obj/screen/ai/camera_track
+ name = "Track With Camera"
+ icon_state = "track"
+
+/obj/screen/ai/camera_track/Click()
+ var/mob/living/silicon/ai/AI = usr
+ var/target_name = input(AI, "Choose who you want to track", "Tracking") as null|anything in AI.trackable_mobs()
+ AI.ai_camera_track(target_name)
+
+/obj/screen/ai/camera_light
+ name = "Toggle Camera Light"
+ icon_state = "camera_light"
+
+/obj/screen/ai/camera_light/Click()
+ var/mob/living/silicon/ai/AI = usr
+ AI.toggle_camera_light()
+
+/obj/screen/ai/crew_monitor
+ name = "Crew Monitoring Console"
+ icon_state = "crew_monitor"
+
+/obj/screen/ai/crew_monitor/Click()
+ var/mob/living/silicon/ai/AI = usr
+ crewmonitor(AI,AI)
+
+/obj/screen/ai/crew_manifest
+ name = "Crew Manifest"
+ icon_state = "manifest"
+
+/obj/screen/ai/crew_manifest/Click()
+ var/mob/living/silicon/ai/AI = usr
+ AI.ai_roster()
+
+/obj/screen/ai/alerts
+ name = "Show Alerts"
+ icon_state = "alerts"
+
+/obj/screen/ai/alerts/Click()
+ var/mob/living/silicon/ai/AI = usr
+ AI.ai_alerts()
+
+/obj/screen/ai/announcement
+ name = "Make Announcement"
+ icon_state = "announcement"
+
+/obj/screen/ai/announcement/Click()
+ var/mob/living/silicon/ai/AI = usr
+ AI.announcement()
+
+/obj/screen/ai/call_shuttle
+ name = "Call Emergency Shuttle"
+ icon_state = "call_shuttle"
+
+/obj/screen/ai/call_shuttle/Click()
+ var/mob/living/silicon/ai/AI = usr
+ AI.ai_call_shuttle()
+
+/obj/screen/ai/state_laws
+ name = "State Laws"
+ icon_state = "state_laws"
+
+/obj/screen/ai/state_laws/Click()
+ var/mob/living/silicon/ai/AI = usr
+ AI.checklaws()
+
+/obj/screen/ai/pda_msg_send
+ name = "PDA - Send Message"
+ icon_state = "pda_send"
+
+/obj/screen/ai/pda_msg_send/Click()
+ var/mob/living/silicon/ai/AI = usr
+ AI.cmd_send_pdamesg(usr)
+
+/obj/screen/ai/pda_msg_show
+ name = "PDA - Show Message Log"
+ icon_state = "pda_receive"
+
+/obj/screen/ai/pda_msg_show/Click()
+ var/mob/living/silicon/ai/AI = usr
+ AI.cmd_show_message_log(usr)
+
+/obj/screen/ai/image_take
+ name = "Take Image"
+ icon_state = "take_picture"
+
+/obj/screen/ai/image_take/Click()
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ AI.aicamera.toggle_camera_mode()
+ else if(isrobot(usr))
+ var/mob/living/silicon/robot/R = usr
+ R.aicamera.toggle_camera_mode()
+
+/obj/screen/ai/image_view
+ name = "View Images"
+ icon_state = "view_images"
+
+/obj/screen/ai/image_view/Click()
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ AI.aicamera.viewpictures()
+ else if(isrobot(usr))
+ var/mob/living/silicon/robot/R = usr
+ R.aicamera.viewpictures()
+
+/obj/screen/ai/sensors
+ name = "Sensor Augmentation"
+ icon_state = "ai_sensor"
+
+/obj/screen/ai/sensors/Click()
+ var/mob/living/silicon/S = usr
+ S.sensor_mode()
+
+
/datum/hud/proc/ai_hud()
adding = list()
other = list()
@@ -5,139 +139,79 @@
var/obj/screen/using
//AI core
- using = new /obj/screen()
- using.name = "AI Core"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "ai_core"
+ using = new /obj/screen/ai/aicore()
using.screen_loc = ui_ai_core
- using.layer = 20
adding += using
//Camera list
- using = new /obj/screen()
- using.name = "Show Camera List"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "camera"
+ using = new /obj/screen/ai/camera_list()
using.screen_loc = ui_ai_camera_list
- using.layer = 20
adding += using
//Track
- using = new /obj/screen()
- using.name = "Track With Camera"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "track"
+ using = new /obj/screen/ai/camera_track()
using.screen_loc = ui_ai_track_with_camera
- using.layer = 20
adding += using
//Camera light
- using = new /obj/screen()
- using.name = "Toggle Camera Light"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "camera_light"
+ using = new /obj/screen/ai/camera_light()
using.screen_loc = ui_ai_camera_light
- using.layer = 20
adding += using
-//Crew Monitorting
- using = new /obj/screen()
- using.name = "Crew Monitorting"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "crew_monitor"
+//Crew Monitoring
+ using = new /obj/screen/ai/crew_monitor()
using.screen_loc = ui_ai_crew_monitor
- using.layer = 20
adding += using
//Crew Manifest
- using = new /obj/screen()
- using.name = "Show Crew Manifest"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "manifest"
+ using = new /obj/screen/ai/crew_manifest()
using.screen_loc = ui_ai_crew_manifest
- using.layer = 20
adding += using
//Alerts
- using = new /obj/screen()
- using.name = "Show Alerts"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "alerts"
+ using = new /obj/screen/ai/alerts()
using.screen_loc = ui_ai_alerts
- using.layer = 20
adding += using
//Announcement
- using = new /obj/screen()
- using.name = "Announcement"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "announcement"
+ using = new /obj/screen/ai/announcement()
using.screen_loc = ui_ai_announcement
- using.layer = 20
adding += using
//Shuttle
- using = new /obj/screen()
- using.name = "Call Emergency Shuttle"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "call_shuttle"
+ using = new /obj/screen/ai/call_shuttle()
using.screen_loc = ui_ai_shuttle
- using.layer = 20
adding += using
//Laws
- using = new /obj/screen()
- using.name = "State Laws"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "state_laws"
+ using = new /obj/screen/ai/state_laws()
using.screen_loc = ui_ai_state_laws
- using.layer = 20
adding += using
//PDA message
- using = new /obj/screen()
- using.name = "PDA - Send Message"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "pda_send"
+ using = new /obj/screen/ai/pda_msg_send()
using.screen_loc = ui_ai_pda_send
- using.layer = 20
adding += using
//PDA log
- using = new /obj/screen()
- using.name = "PDA - Show Message Log"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "pda_receive"
+ using = new /obj/screen/ai/pda_msg_show()
using.screen_loc = ui_ai_pda_log
- using.layer = 20
adding += using
//Take image
- using = new /obj/screen()
- using.name = "Take Image"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "take_picture"
+ using = new /obj/screen/ai/image_take()
using.screen_loc = ui_ai_take_picture
- using.layer = 20
adding += using
//View images
- using = new /obj/screen()
- using.name = "View Images"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "view_images"
+ using = new /obj/screen/ai/image_view()
using.screen_loc = ui_ai_view_images
- using.layer = 20
adding += using
//Medical/Security sensors
- using = new /obj/screen()
- using.name = "Sensor Augmentation"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "ai_sensor"
+ using = new /obj/screen/ai/sensors()
using.screen_loc = ui_ai_sensor
- using.layer = 20
adding += using
mymob.client.screen += adding + other
diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm
index ff3c1405301..7b183381253 100644
--- a/code/_onclick/hud/alien.dm
+++ b/code/_onclick/hud/alien.dm
@@ -1,3 +1,24 @@
+/obj/screen/alien
+ icon = 'icons/mob/screen_alien.dmi'
+
+/obj/screen/alien/leap
+ name = "toggle leap"
+ icon_state = "leap_off"
+
+/obj/screen/alien/leap/Click()
+ if(istype(usr, /mob/living/carbon/alien/humanoid))
+ var/mob/living/carbon/alien/humanoid/hunter/AH = usr
+ AH.toggle_leap()
+
+/obj/screen/alien/nightvision
+ name = "toggle night-vision"
+ icon_state = "nightvision1"
+
+/obj/screen/alien/nightvision/Click()
+ var/mob/living/carbon/alien/humanoid/A = usr
+ A.nightvisiontoggle()
+
+
/datum/hud/proc/alien_hud()
adding = list()
other = list()
@@ -50,59 +71,42 @@
using.layer = 19
adding += using
- using = new /obj/screen()
- using.name = "act_intent"
+ using = new /obj/screen/act_intent()
using.icon = 'icons/mob/screen_alien.dmi'
using.icon_state = mymob.a_intent
using.screen_loc = ui_acti
- using.layer = 20
adding += using
action_intent = using
if(istype(mymob, /mob/living/carbon/alien/humanoid/hunter))
- mymob.leap_icon = new /obj/screen()
- mymob.leap_icon.name = "leap"
- mymob.leap_icon.icon = 'icons/mob/screen_alien.dmi'
- mymob.leap_icon.icon_state = "leap_off"
+ mymob.leap_icon = new /obj/screen/alien/leap()
mymob.leap_icon.screen_loc = ui_alien_storage_r
- mymob.leap_icon.layer = 20
adding += mymob.leap_icon
- using = new /obj/screen()
- using.name = "mov_intent"
+ using = new /obj/screen/mov_intent()
using.icon = 'icons/mob/screen_alien.dmi'
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
using.screen_loc = ui_movi
- using.layer = 20
adding += using
move_intent = using
- using = new /obj/screen()
- using.name = "drop"
+ using = new /obj/screen/drop()
using.icon = 'icons/mob/screen_alien.dmi'
- using.icon_state = "act_drop"
using.screen_loc = ui_drop_throw
- using.layer = 19
adding += using
- using = new /obj/screen()
- using.name = "resist"
+ using = new /obj/screen/resist()
using.icon = 'icons/mob/screen_alien.dmi'
- using.icon_state = "act_resist"
using.screen_loc = ui_pull_resist
- using.layer = 19
adding += using
- mymob.throw_icon = new /obj/screen()
+ mymob.throw_icon = new /obj/screen/throw_catch()
mymob.throw_icon.icon = 'icons/mob/screen_alien.dmi'
- mymob.throw_icon.icon_state = "act_throw_off"
- mymob.throw_icon.name = "throw/catch"
mymob.throw_icon.screen_loc = ui_drop_throw
- mymob.pullin = new /obj/screen()
+ mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = 'icons/mob/screen_alien.dmi'
mymob.pullin.icon_state = "pull0"
- mymob.pullin.name = "pull"
mymob.pullin.screen_loc = ui_pull_resist
//begin indicators
@@ -131,10 +135,7 @@
mymob.healths.name = "health"
mymob.healths.screen_loc = ui_alien_health
- nightvisionicon = new /obj/screen()
- nightvisionicon.icon ='icons/mob/screen_alien.dmi'
- nightvisionicon.icon_state = "nightvision1"
- nightvisionicon.name = "nightvision"
+ nightvisionicon = new /obj/screen/alien/nightvision()
nightvisionicon.screen_loc = ui_alien_nightvision
alien_plasma_display = new /obj/screen()
diff --git a/code/_onclick/hud/alien_larva.dm b/code/_onclick/hud/alien_larva.dm
index 2775f546c6f..716947a1245 100644
--- a/code/_onclick/hud/alien_larva.dm
+++ b/code/_onclick/hud/alien_larva.dm
@@ -4,21 +4,17 @@
var/obj/screen/using
- using = new /obj/screen()
- using.name = "act_intent"
+ using = new /obj/screen/act_intent()
using.icon = 'icons/mob/screen_alien.dmi'
using.icon_state = mymob.a_intent
using.screen_loc = ui_acti
- using.layer = 20
adding += using
action_intent = using
- using = new /obj/screen()
- using.name = "mov_intent"
+ using = new /obj/screen/mov_intent()
using.icon = 'icons/mob/screen_alien.dmi'
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
using.screen_loc = ui_movi
- using.layer = 20
adding += using
move_intent = using
@@ -48,16 +44,12 @@
mymob.healths.name = "health"
mymob.healths.screen_loc = ui_alien_health
- nightvisionicon = new /obj/screen()
- nightvisionicon.icon ='icons/mob/screen_alien.dmi'
- nightvisionicon.icon_state = "nightvision1"
- nightvisionicon.name = "nightvision"
+ nightvisionicon = new /obj/screen/alien/nightvision()
nightvisionicon.screen_loc = ui_alien_nightvision
- mymob.pullin = new /obj/screen()
+ mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = 'icons/mob/screen_alien.dmi'
mymob.pullin.icon_state = "pull0"
- mymob.pullin.name = "pull"
mymob.pullin.screen_loc = ui_pull_resist
mymob.blind = new /obj/screen()
diff --git a/code/_onclick/hud/drones.dm b/code/_onclick/hud/drones.dm
index 26b803f830d..086dc39c95a 100644
--- a/code/_onclick/hud/drones.dm
+++ b/code/_onclick/hud/drones.dm
@@ -4,18 +4,14 @@
var/obj/screen/using
var/obj/screen/inventory/inv_box
- using = new /obj/screen()
- using.name = "drop"
+ using = new /obj/screen/drop()
using.icon = ui_style
- using.icon_state = "act_drop"
using.screen_loc = ui_drone_drop
- using.layer = 19
adding += using
- mymob.pullin = new /obj/screen()
+ mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = ui_style
mymob.pullin.icon_state = "pull0"
- mymob.pullin.name = "pull"
mymob.pullin.screen_loc = ui_drone_pull
adding += mymob.pullin
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index 87b3aaa984a..5b4b2c7fc09 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -1,3 +1,45 @@
+/obj/screen/human
+ icon = 'icons/mob/screen_midnight.dmi'
+
+/obj/screen/human/toggle
+ name = "toggle"
+ icon_state = "toggle"
+
+/obj/screen/human/toggle/Click()
+ if(usr.hud_used.inventory_shown)
+ usr.hud_used.inventory_shown = 0
+ usr.client.screen -= usr.hud_used.other
+ else
+ usr.hud_used.inventory_shown = 1
+ usr.client.screen += usr.hud_used.other
+
+ usr.hud_used.hidden_inventory_update()
+
+/obj/screen/human/equip
+ name = "equip"
+ icon_state = "act_equip"
+
+/obj/screen/human/equip/Click()
+ if(istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech
+ return 1
+ var/mob/living/carbon/human/H = usr
+ H.quick_equip()
+
+/obj/screen/ling
+ invisibility = 101
+
+/obj/screen/ling/sting
+ name = "current sting"
+
+/obj/screen/ling/sting/Click()
+ var/mob/living/carbon/U = usr
+ U.unset_sting()
+
+/obj/screen/ling/chems
+ name = "chemical storage"
+ icon_state = "power_display"
+
+
/datum/hud/proc/human_hud(ui_style = 'icons/mob/screen_midnight.dmi')
adding = list()
other = list()
@@ -6,29 +48,22 @@
var/obj/screen/using
var/obj/screen/inventory/inv_box
- using = new /obj/screen()
- using.name = "act_intent"
+ using = new /obj/screen/act_intent()
using.icon_state = mymob.a_intent
using.screen_loc = ui_acti
- using.layer = 20
adding += using
action_intent = using
- using = new /obj/screen()
- using.name = "mov_intent"
+ using = new /obj/screen/mov_intent()
using.icon = ui_style
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
using.screen_loc = ui_movi
- using.layer = 20
adding += using
move_intent = using
- using = new /obj/screen()
- using.name = "drop"
+ using = new /obj/screen/drop()
using.icon = ui_style
- using.icon_state = "act_drop"
using.screen_loc = ui_drop_throw
- using.layer = 19
hotkeybuttons += using
inv_box = new /obj/screen/inventory()
@@ -143,28 +178,19 @@
inv_box.layer = 19
adding += inv_box
- using = new /obj/screen()
- using.name = "resist"
+ using = new /obj/screen/resist()
using.icon = ui_style
- using.icon_state = "act_resist"
using.screen_loc = ui_pull_resist
- using.layer = 19
hotkeybuttons += using
- using = new /obj/screen()
- using.name = "toggle"
+ using = new /obj/screen/human/toggle()
using.icon = ui_style
- using.icon_state = "toggle"
using.screen_loc = ui_inventory
- using.layer = 20
adding += using
- using = new /obj/screen()
- using.name = "equip"
+ using = new /obj/screen/human/equip()
using.icon = ui_style
- using.icon_state = "act_equip"
using.screen_loc = ui_equip
- using.layer = 20
adding += using
inv_box = new /obj/screen/inventory()
@@ -221,10 +247,8 @@
inv_box.layer = 19
adding += inv_box
- mymob.throw_icon = new /obj/screen()
+ mymob.throw_icon = new /obj/screen/throw_catch()
mymob.throw_icon.icon = ui_style
- mymob.throw_icon.icon_state = "act_throw_off"
- mymob.throw_icon.name = "throw/catch"
mymob.throw_icon.screen_loc = ui_drop_throw
hotkeybuttons += mymob.throw_icon
@@ -243,9 +267,7 @@
mymob.toxin.name = "toxin"
mymob.toxin.screen_loc = ui_toxin
- mymob.internals = new /obj/screen()
- mymob.internals.icon_state = "internal0"
- mymob.internals.name = "internal"
+ mymob.internals = new /obj/screen/internals()
mymob.internals.screen_loc = ui_internal
mymob.fire = new /obj/screen()
@@ -268,25 +290,17 @@
mymob.nutrition_icon.name = "nutrition"
mymob.nutrition_icon.screen_loc = ui_nutrition
- mymob.pullin = new /obj/screen()
+ mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = ui_style
mymob.pullin.icon_state = "pull0"
- mymob.pullin.name = "pull"
mymob.pullin.screen_loc = ui_pull_resist
hotkeybuttons += mymob.pullin
- lingchemdisplay = new /obj/screen()
- lingchemdisplay.name = "chemical storage"
- lingchemdisplay.icon_state = "power_display"
+ lingchemdisplay = new /obj/screen/ling/chems()
lingchemdisplay.screen_loc = ui_lingchemdisplay
- lingchemdisplay.layer = 20
- lingchemdisplay.invisibility = 101
- lingstingdisplay = new /obj/screen()
- lingstingdisplay.name = "current sting"
+ lingstingdisplay = new /obj/screen/ling/sting()
lingstingdisplay.screen_loc = ui_lingstingdisplay
- lingstingdisplay.layer = 20
- lingstingdisplay.invisibility = 101
mymob.blind = new /obj/screen()
mymob.blind.icon = 'icons/mob/screen_full.dmi'
diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm
index fecbfb5c513..8b2227e1009 100644
--- a/code/_onclick/hud/monkey.dm
+++ b/code/_onclick/hud/monkey.dm
@@ -5,30 +5,23 @@
var/obj/screen/using
var/obj/screen/inventory/inv_box
- using = new /obj/screen()
- using.name = "act_intent"
+ using = new /obj/screen/act_intent()
using.icon = ui_style
using.icon_state = mymob.a_intent
using.screen_loc = ui_acti
- using.layer = 20
adding += using
action_intent = using
- using = new /obj/screen()
- using.name = "mov_intent"
+ using = new /obj/screen/mov_intent()
using.icon = ui_style
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
using.screen_loc = ui_movi
- using.layer = 20
adding += using
move_intent = using
- using = new /obj/screen()
- using.name = "drop"
+ using = new /obj/screen/drop()
using.icon = ui_style
- using.icon_state = "act_drop"
using.screen_loc = ui_drop_throw
- using.layer = 19
adding += using
inv_box = new /obj/screen/inventory()
@@ -89,10 +82,8 @@
inv_box.layer = 19
adding += inv_box
- mymob.throw_icon = new /obj/screen()
+ mymob.throw_icon = new /obj/screen/throw_catch()
mymob.throw_icon.icon = ui_style
- mymob.throw_icon.icon_state = "act_throw_off"
- mymob.throw_icon.name = "throw/catch"
mymob.throw_icon.screen_loc = ui_drop_throw
mymob.oxygen = new /obj/screen()
@@ -110,9 +101,7 @@
mymob.toxin.name = "toxin"
mymob.toxin.screen_loc = ui_toxin
- mymob.internals = new /obj/screen()
- mymob.internals.icon_state = "internal0"
- mymob.internals.name = "internal"
+ mymob.internals = new /obj/screen/internals()
mymob.internals.screen_loc = ui_internal
mymob.fire = new /obj/screen()
@@ -130,24 +119,16 @@
mymob.healths.name = "health"
mymob.healths.screen_loc = ui_health
- mymob.pullin = new /obj/screen()
+ mymob.pullin = new /obj/screen/pull()
mymob.pullin.icon = ui_style
mymob.pullin.icon_state = "pull0"
- mymob.pullin.name = "pull"
mymob.pullin.screen_loc = ui_pull_resist
- lingchemdisplay = new /obj/screen()
- lingchemdisplay.name = "chemical storage"
- lingchemdisplay.icon_state = "power_display"
+ lingchemdisplay = new /obj/screen/ling/chems()
lingchemdisplay.screen_loc = ui_lingchemdisplay
- lingchemdisplay.layer = 20
- lingchemdisplay.invisibility = 101
- lingstingdisplay = new /obj/screen()
- lingstingdisplay.name = "current sting"
+ lingstingdisplay = new /obj/screen/ling/sting()
lingstingdisplay.screen_loc = ui_lingstingdisplay
- lingstingdisplay.layer = 20
- lingstingdisplay.invisibility = 101
mymob.blind = new /obj/screen()
mymob.blind.icon = 'icons/mob/screen_full.dmi'
@@ -169,12 +150,9 @@
mymob.client.screen = null
- using = new /obj/screen()
- using.name = "resist"
+ using = new /obj/screen/resist()
using.icon = ui_style
- using.icon_state = "act_resist"
using.screen_loc = ui_pull_resist
- using.layer = 19
adding += using
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach )
diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm
index f81d908e36a..7e3efee803b 100644
--- a/code/_onclick/hud/robot.dm
+++ b/code/_onclick/hud/robot.dm
@@ -1,3 +1,59 @@
+/obj/screen/robot
+ icon = 'icons/mob/screen_cyborg.dmi'
+
+/obj/screen/robot/module
+ name = "cyborg module"
+ icon_state = "nomod"
+
+/obj/screen/robot/module/Click()
+ var/mob/living/silicon/robot/R = usr
+ if(R.module)
+ R.hud_used.toggle_show_robot_modules()
+ return 1
+ R.pick_module()
+
+/obj/screen/robot/module1
+ name = "module1"
+ icon_state = "inv1"
+
+/obj/screen/robot/module1/Click()
+ var/mob/living/silicon/robot/R = usr
+ R.toggle_module(1)
+
+/obj/screen/robot/module2
+ name = "module2"
+ icon_state = "inv2"
+
+/obj/screen/robot/module2/Click()
+ var/mob/living/silicon/robot/R = usr
+ R.toggle_module(2)
+
+/obj/screen/robot/module3
+ name = "module3"
+ icon_state = "inv3"
+
+/obj/screen/robot/module3/Click()
+ var/mob/living/silicon/robot/R = usr
+ R.toggle_module(3)
+
+
+/obj/screen/robot/radio
+ name = "radio"
+ icon_state = "radio"
+
+/obj/screen/robot/radio/Click()
+ var/mob/living/silicon/robot/R = usr
+ R.radio_menu()
+
+/obj/screen/robot/store
+ name = "store"
+ icon_state = "store"
+
+/obj/screen/robot/store/Click()
+ var/mob/living/silicon/robot/R = usr
+ R.uneq_active()
+
+
/datum/hud/proc/robot_hud()
adding = list()
other = list()
@@ -6,88 +62,60 @@
//Radio
- using = new /obj/screen()
- using.name = "radio"
- using.icon = 'icons/mob/screen_cyborg.dmi'
- using.icon_state = "radio"
+ using = new /obj/screen/robot/radio()
using.screen_loc = ui_borg_radio
- using.layer = 20
adding += using
//Module select
- using = new /obj/screen()
- using.name = "module1"
- using.icon = 'icons/mob/screen_cyborg.dmi'
- using.icon_state = "inv1"
+ var/mob/living/silicon/robot/mymobR = mymob
+
+ using = new /obj/screen/robot/module1()
using.screen_loc = ui_inv1
- using.layer = 20
adding += using
- mymob:inv1 = using
+ mymobR.inv1 = using
- using = new /obj/screen()
- using.name = "module2"
- using.icon = 'icons/mob/screen_cyborg.dmi'
- using.icon_state = "inv2"
+ using = new /obj/screen/robot/module2()
using.screen_loc = ui_inv2
- using.layer = 20
adding += using
- mymob:inv2 = using
+ mymobR.inv2 = using
- using = new /obj/screen()
- using.name = "module3"
- using.icon = 'icons/mob/screen_cyborg.dmi'
- using.icon_state = "inv3"
+ using = new /obj/screen/robot/module3()
using.screen_loc = ui_inv3
- using.layer = 20
adding += using
- mymob:inv3 = using
+ mymobR.inv3 = using
//End of module select
//Photography stuff
- using = new /obj/screen()
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "take_picture"
- using.name = "Take Image"
+ using = new /obj/screen/ai/image_take()
using.screen_loc = ui_borg_camera
- using.layer = 20
adding += using
- using = new /obj/screen()
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "view_images"
- using.name = "View Images"
+ using = new /obj/screen/ai/image_view()
using.screen_loc = ui_borg_album
- using.layer = 20
adding += using
//Sec/Med HUDs
- using = new /obj/screen()
- using.name = "Sensor Augmentation"
- using.icon = 'icons/mob/screen_ai.dmi'
- using.icon_state = "ai_sensor"
+ using = new /obj/screen/ai/sensors()
using.screen_loc = ui_borg_sensor
- using.layer = 20
adding += using
//Intent
- using = new /obj/screen()
- using.name = "act_intent"
+ using = new /obj/screen/act_intent()
using.icon = 'icons/mob/screen_cyborg.dmi'
using.icon_state = mymob.a_intent
using.screen_loc = ui_borg_intents
- using.layer = 20
adding += using
action_intent = using
//Cell
- mymob:cells = new /obj/screen()
- mymob:cells.icon = 'icons/mob/screen_cyborg.dmi'
- mymob:cells.icon_state = "charge-empty"
- mymob:cells.name = "cell"
- mymob:cells.screen_loc = ui_toxin
+ mymobR.cells = new /obj/screen()
+ mymobR.cells.icon = 'icons/mob/screen_cyborg.dmi'
+ mymobR.cells.icon_state = "charge-empty"
+ mymobR.cells.name = "cell"
+ mymobR.cells.screen_loc = ui_toxin
//Health
mymob.healths = new /obj/screen()
@@ -97,17 +125,11 @@
mymob.healths.screen_loc = ui_borg_health
//Installed Module
- mymob.hands = new /obj/screen()
- mymob.hands.icon = 'icons/mob/screen_cyborg.dmi'
- mymob.hands.icon_state = "nomod"
- mymob.hands.name = "module"
+ mymob.hands = new /obj/screen/robot/module()
mymob.hands.screen_loc = ui_borg_module
//Store
- mymob.throw_icon = new /obj/screen()
- mymob.throw_icon.icon = 'icons/mob/screen_cyborg.dmi'
- mymob.throw_icon.icon_state = "store"
- mymob.throw_icon.name = "store"
+ mymob.throw_icon = new /obj/screen/robot/store()
mymob.throw_icon.screen_loc = ui_borg_store
//Temp
@@ -155,7 +177,7 @@
mymob.client.screen = null
- mymob.client.screen += list(mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach )
+ mymob.client.screen += list(mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymobR.cells, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += adding + other
return
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index b64cf1cdb41..7d777c9fae6 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -68,6 +68,15 @@
return
+/obj/screen/drop
+ name = "drop"
+ icon = 'icons/mob/screen_midnight.dmi'
+ icon_state = "act_drop"
+ layer = 19
+
+/obj/screen/drop/Click()
+ usr.drop_item_v()
+
/obj/screen/grab
name = "grab"
@@ -82,6 +91,112 @@
/obj/screen/grab/attackby()
return
+/obj/screen/act_intent
+ name = "intent"
+ icon_state = "help"
+
+/obj/screen/act_intent/Click(location, control, params)
+ if(ishuman(usr) && (usr.client.prefs.toggles & INTENT_STYLE))
+
+ var/_x = text2num(params2list(params)["icon-x"])
+ var/_y = text2num(params2list(params)["icon-y"])
+
+ if(_x<=16 && _y<=16)
+ usr.a_intent_change("harm")
+
+ else if(_x<=16 && _y>=17)
+ usr.a_intent_change("help")
+
+ else if(_x>=17 && _y<=16)
+ usr.a_intent_change("grab")
+
+ else if(_x>=17 && _y>=17)
+ usr.a_intent_change("disarm")
+
+ else
+ usr.a_intent_change("right")
+
+/obj/screen/internals
+ name = "toggle internals"
+ icon_state = "internal0"
+
+/obj/scren/internals/Click()
+ if(iscarbon(usr))
+ var/mob/living/carbon/C = usr
+ if(!C.stat && !C.stunned && !C.paralysis && !C.restrained())
+ if(C.internal)
+ C.internal = null
+ C << "No longer running on internals."
+ icon_state = "internal0"
+ else
+ if(!istype(C.wear_mask, /obj/item/clothing/mask))
+ C << "You are not wearing a mask."
+ return 1
+ else
+ if(istype(C.l_hand, /obj/item/weapon/tank))
+ C << "You are now running on internals from the [C.l_hand] on your left hand."
+ C.internal = C.l_hand
+ else if(istype(C.r_hand, /obj/item/weapon/tank))
+ C << "You are now running on internals from the [C.r_hand] on your right hand."
+ C.internal = C.r_hand
+ else if(ishuman(C))
+ var/mob/living/carbon/human/H = C
+ if(istype(H.s_store, /obj/item/weapon/tank))
+ H << "You are now running on internals from the [H.s_store] on your [H.wear_suit]."
+ H.internal = H.s_store
+ else if(istype(H.belt, /obj/item/weapon/tank))
+ H << "You are now running on internals from the [H.belt] on your belt."
+ H.internal = H.belt
+ else if(istype(H.l_store, /obj/item/weapon/tank))
+ H << "You are now running on internals from the [H.l_store] in your left pocket."
+ H.internal = H.l_store
+ else if(istype(H.r_store, /obj/item/weapon/tank))
+ H << "You are now running on internals from the [H.r_store] in your right pocket."
+ H.internal = H.r_store
+
+ //Seperate so CO2 jetpacks are a little less cumbersome.
+ if(!C.internal && istype(C.back, /obj/item/weapon/tank))
+ C << "You are now running on internals from the [C.back] on your back."
+ C.internal = C.back
+
+ if(C.internal)
+ icon_state = "internal1"
+ else
+ C << "You don't have an oxygen tank."
+
+/obj/screen/mov_intent
+ name = "run/walk toggle"
+ icon = 'icons/mob/screen_midnight.dmi'
+ icon_state = "running"
+
+/obj/screen/mov_intent/Click()
+ switch(usr.m_intent)
+ if("run")
+ usr.m_intent = "walk"
+ icon_state = "walking"
+ if("walk")
+ usr.m_intent = "run"
+ icon_state = "running"
+ usr.update_icons()
+
+/obj/screen/pull
+ name = "stop pulling"
+ icon = 'icons/mob/screen_midnight.dmi'
+ icon_state = "pull"
+
+/obj/screen/pull/Click()
+ usr.stop_pulling()
+
+/obj/screen/resist
+ name = "resist"
+ icon = 'icons/mob/screen_midnight.dmi'
+ icon_state = "act_resist"
+ layer = 19
+
+/obj/screen/resist/Click()
+ if(isliving(usr))
+ var/mob/living/L = usr
+ L.resist()
/obj/screen/storage
name = "storage"
@@ -99,6 +214,16 @@
master.attackby(I, usr)
return 1
+/obj/screen/throw_catch
+ name = "throw/catch"
+ icon = 'icons/mob/screen_midnight.dmi'
+ icon_state = "act_throw_off"
+
+/obj/screen/throw_catch/Click()
+ if(iscarbon(usr) && !usr.stat && isturf(usr.loc) && !usr.restrained())
+ var/mob/living/carbon/C = usr
+ C.toggle_throw_mode()
+
/obj/screen/zone_sel
name = "damage zone"
icon_state = "zone_sel"
@@ -166,243 +291,11 @@
/obj/screen/Click(location, control, params)
if(!usr) return 1
- switch(name)
- if("toggle")
- if(usr.hud_used.inventory_shown)
- usr.hud_used.inventory_shown = 0
- usr.client.screen -= usr.hud_used.other
- else
- usr.hud_used.inventory_shown = 1
- usr.client.screen += usr.hud_used.other
+ if(name == "Reset Machine") //I don't know what this is, CTRL+F has the only entry right here in this file, so I'm going to leave it in case it is something important
+ usr.unset_machine()
+ else
+ return 0
- usr.hud_used.hidden_inventory_update()
-
- if("equip")
- if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech
- return 1
- if(ishuman(usr))
- var/mob/living/carbon/human/H = usr
- H.quick_equip()
-
- if("current sting")
- var/mob/living/carbon/U = usr
- U.unset_sting()
-
- if("resist")
- if(isliving(usr))
- var/mob/living/L = usr
- L.resist()
-
- if("mov_intent")
- switch(usr.m_intent)
- if("run")
- usr.m_intent = "walk"
- usr.hud_used.move_intent.icon_state = "walking"
- if("walk")
- usr.m_intent = "run"
- usr.hud_used.move_intent.icon_state = "running"
- if(istype(usr,/mob/living/carbon/alien/humanoid))
- usr.update_icons()
- if("Reset Machine")
- usr.unset_machine()
- if("internal")
- if(iscarbon(usr))
- var/mob/living/carbon/C = usr
- if(!C.stat && !C.stunned && !C.paralysis && !C.restrained())
- if(C.internal)
- C.internal = null
- C << "No longer running on internals."
- if(C.internals)
- C.internals.icon_state = "internal0"
- else
- if(!istype(C.wear_mask, /obj/item/clothing/mask))
- C << "You are not wearing a mask."
- return 1
- else
- if(istype(C.l_hand, /obj/item/weapon/tank))
- C << "You are now running on internals from the [C.l_hand] on your left hand."
- C.internal = C.l_hand
- else if(istype(C.r_hand, /obj/item/weapon/tank))
- C << "You are now running on internals from the [C.r_hand] on your right hand."
- C.internal = C.r_hand
- else if(ishuman(C))
- var/mob/living/carbon/human/H = C
- if(istype(H.s_store, /obj/item/weapon/tank))
- H << "You are now running on internals from the [H.s_store] on your [H.wear_suit]."
- H.internal = H.s_store
- else if(istype(H.belt, /obj/item/weapon/tank))
- H << "You are now running on internals from the [H.belt] on your belt."
- H.internal = H.belt
- else if(istype(H.l_store, /obj/item/weapon/tank))
- H << "You are now running on internals from the [H.l_store] in your left pocket."
- H.internal = H.l_store
- else if(istype(H.r_store, /obj/item/weapon/tank))
- H << "You are now running on internals from the [H.r_store] in your right pocket."
- H.internal = H.r_store
-
- //Seperate so CO2 jetpacks are a little less cumbersome.
- if(!C.internal && istype(C.back, /obj/item/weapon/tank))
- C << "You are now running on internals from the [C.back] on your back."
- C.internal = C.back
-
- if(C.internal)
- if(C.internals)
- C.internals.icon_state = "internal1"
- else
- C << "You don't have an oxygen tank."
-
- if("act_intent")
- if(ishuman(usr) && (usr.client.prefs.toggles & INTENT_STYLE))
-
- var/_x = text2num(params2list(params)["icon-x"])
- var/_y = text2num(params2list(params)["icon-y"])
-
- if(_x<=16 && _y<=16)
- usr.a_intent_change("harm")
-
- else if(_x<=16 && _y>=17)
- usr.a_intent_change("help")
-
- else if(_x>=17 && _y<=16)
- usr.a_intent_change("grab")
-
- else if(_x>=17 && _y>=17)
- usr.a_intent_change("disarm")
-
- else
- usr.a_intent_change("right")
-
- if("pull")
- usr.stop_pulling()
- if("throw/catch")
- if(!usr.stat && isturf(usr.loc) && !usr.restrained())
- usr:toggle_throw_mode()
- if("drop")
- usr.drop_item_v()
-
- if("module")
- if(isrobot(usr))
- var/mob/living/silicon/robot/R = usr
- if(R.module)
- R.hud_used.toggle_show_robot_modules()
- return 1
- R.pick_module()
-
- if("radio")
- if(issilicon(usr))
- usr:radio_menu()
- if("panel")
- if(issilicon(usr))
- usr:installed_modules()
-
- if("store")
- if(isrobot(usr))
- var/mob/living/silicon/robot/R = usr
- R.uneq_active()
-
- if("module1")
- if(istype(usr, /mob/living/silicon/robot))
- usr:toggle_module(1)
-
- if("module2")
- if(istype(usr, /mob/living/silicon/robot))
- usr:toggle_module(2)
-
- if("module3")
- if(istype(usr, /mob/living/silicon/robot))
- usr:toggle_module(3)
-
- if("AI Core")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- AI.view_core()
-
- if("Show Camera List")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- var/camera = input(AI, "Choose which camera you want to view", "Cameras") as null|anything in AI.get_camera_list()
- AI.ai_camera_list(camera)
-
- if("Track With Camera")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- var/target_name = input(AI, "Choose who you want to track", "Tracking") as null|anything in AI.trackable_mobs()
- AI.ai_camera_track(target_name)
-
- if("Toggle Camera Light")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- AI.toggle_camera_light()
-
- if("Crew Monitorting")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- crewmonitor(AI,AI)
-
- if("Show Crew Manifest")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- AI.ai_roster()
-
- if("Show Alerts")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- AI.ai_alerts()
-
- if("Announcement")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- AI.announcement()
-
- if("Call Emergency Shuttle")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- AI.ai_call_shuttle()
-
- if("State Laws")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- AI.checklaws()
-
- if("PDA - Send Message")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- AI.cmd_send_pdamesg(usr)
-
- if("PDA - Show Message Log")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- AI.cmd_show_message_log(usr)
-
- if("Take Image")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- AI.aicamera.toggle_camera_mode()
- else if(isrobot(usr))
- var/mob/living/silicon/robot/R = usr
- R.aicamera.toggle_camera_mode()
-
- if("View Images")
- if(isAI(usr))
- var/mob/living/silicon/ai/AI = usr
- AI.aicamera.viewpictures()
- else if(isrobot(usr))
- var/mob/living/silicon/robot/R = usr
- R.aicamera.viewpictures()
- if("nightvision")
- if(isalien(usr))
- var/mob/living/carbon/alien/humanoid/A = usr
- A.nightvisiontoggle()
- if("Sensor Augmentation")
- if(issilicon(usr))
- var/mob/living/silicon/S = usr
- S.sensor_mode()
- if("leap")
- if(istype(usr, /mob/living/carbon/alien/humanoid))
- var/mob/living/carbon/alien/humanoid/hunter/AH = usr
- AH.toggle_leap()
- else
- return 0
return 1
/obj/screen/inventory/Click()