diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index 3fb9960be9..7e1a3fce72 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -399,6 +399,10 @@
var/obj/screen/g_dither = null
var/obj/screen/blurry = null
var/list/darkMask = null
+ var/obj/screen/r_hand_hud_object = null
+ var/obj/screen/l_hand_hud_object = null
+ var/list/obj/screen/intent_small_hud_objects = null
+ var/show_intent_icons = 0
var/h_type = /obj/screen //this is like...the most pointless thing ever. Use a god damn define!
diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm
index 1409642550..084336973a 100644
--- a/code/game/atom_procs.dm
+++ b/code/game/atom_procs.dm
@@ -713,43 +713,44 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
// ------- SHIFT-CLICK -------
- var/parameters = params2list(params)
+ if(params)
+ var/parameters = params2list(params)
- if(parameters["shift"]){
- if(!isAI(usr))
- ShiftClick(usr)
- else
- AIShiftClick(usr)
- return
- }
-
- // ------- ALT-CLICK -------
-
- if(parameters["alt"]){
- if(!isAI(usr))
- AltClick(usr)
- else
- AIAltClick(usr)
- return
- }
-
- // ------- CTRL-CLICK -------
-
- if(parameters["ctrl"]){
- if(!isAI(usr))
- CtrlClick(usr)
- else
- AICtrlClick(usr)
- return
- }
-
- // ------- MIDDLE-CLICK -------
-
- if(parameters["middle"]){
- if(!isAI(usr))
- MiddleClick(usr)
+ if(parameters["shift"]){
+ if(!isAI(usr))
+ ShiftClick(usr)
+ else
+ AIShiftClick(usr)
return
- }
+ }
+
+ // ------- ALT-CLICK -------
+
+ if(parameters["alt"]){
+ if(!isAI(usr))
+ AltClick(usr)
+ else
+ AIAltClick(usr)
+ return
+ }
+
+ // ------- CTRL-CLICK -------
+
+ if(parameters["ctrl"]){
+ if(!isAI(usr))
+ CtrlClick(usr)
+ else
+ AICtrlClick(usr)
+ return
+ }
+
+ // ------- MIDDLE-CLICK -------
+
+ if(parameters["middle"]){
+ if(!isAI(usr))
+ MiddleClick(usr)
+ return
+ }
// ------- THROW -------
if(usr.in_throw_mode)
diff --git a/code/game/hud.dm b/code/game/hud.dm
index 17c3fa4574..c100d0ca7e 100644
--- a/code/game/hud.dm
+++ b/code/game/hud.dm
@@ -1,54 +1,105 @@
-#define ui_dropbutton "SOUTH-1,7"
-#define ui_swapbutton "SOUTH-1,7"
-#define ui_iclothing "SOUTH-1,2"
-#define ui_oclothing "SOUTH,2"
+
+
+//Lower left, persistant menu
+#define ui_inventory "1:6,1:5"
+
+
+//Inventory close areas. When you pass your mouse over these areas they close the inventory.
+#define ui_invclosearea1 "1,1 to 1:6,5"
+#define ui_invclosearea2 "1,1 to 4,1:16"
+#define ui_invclosearea3 "4:16,1 to 5:16,5"
+#define ui_invclosearea4 "1,5:16 to 4,5:16"
+
+
+//Lower center, persistant menu
+#define ui_id "4:12,1:5"
+#define ui_belt "5:14,1:5"
+#define ui_back "6:14,1:5"
+#define ui_rhand "7:16,1:5"
+#define ui_lhand "8:16,1:5"
+#define ui_swaphand1 "7:16,2:5"
+#define ui_swaphand2 "8:16,2:5"
+#define ui_storage1 "9:18,1:5"
+#define ui_storage2 "10:20,1:5"
+
+#define ui_alien_head "4:12,1:5" //aliens
+#define ui_alien_oclothing "5:14,1:5" //aliens
+
+#define ui_inv1 "6:16,1:5" //borgs
+#define ui_inv2 "7:16,1:5" //borgs
+#define ui_inv3 "8:16,1:5" //borgs
+#define ui_borg_store "9:14,1:5" //borgs
+
+#define ui_monkey_mask "5:14,1:5" //monkey
+#define ui_monkey_back "6:14,1:5" //monkey
+
+//Lower right, persistant menu
+#define ui_dropbutton "12:24,2:7"
+#define ui_throw "13:26,2:7"
+#define ui_pull "14:28,2:7"
+#define ui_acti "12:24,1:5"
+#define ui_movi "13:26,1:5"
+#define ui_zonesel "14:28,1:5"
+
+//Gun buttons
+#define ui_gun1 "11:22,2:7"
+#define ui_gun2 "10:20,2:7"
+#define ui_gun3 "9:18,2:7"
+#define ui_gun_select "11:22,1:5"
+
+//Middle right (damage indicators)
+#define ui_pressure "14:28,6:13"
+#define ui_oxygen "14:28,7:15"
+#define ui_fire "14:28,8:17"
+#define ui_toxin "14:28,9:19"
+
+#define ui_borg_health "14:28,6:13" //borgs have the health display where humans have the pressure damage indicator.
+#define ui_alien_health "14:28,6:13" //aliens have the health display where humans have the pressure damage indicator.
+
+
+//Upper right (status indicators)
+#define ui_nutrition "11:22,15:-5"
+#define ui_internal "12:24,15:-5"
+#define ui_health "13:26,15:-5"
+#define ui_temp "14:28,15:-5"
+
+
+//Pop-up inventory
+#define ui_shoes "1:6,2:7"
+#define ui_iclothing "2:8,2:7"
+#define ui_gloves "3:10,2:7"
+
+#define ui_sstore1 "1:6,3:9"
+#define ui_oclothing "2:8,3:9"
+#define ui_glasses "3:10,3:9"
+
+#define ui_mask "1:6,4:11"
+#define ui_head "2:8,4:11"
+#define ui_lear "3:10,4:11"
+#define ui_rear "4:12,4:11"
+
+//Intent small buttons
+#define ui_help_small "12:8,1:1"
+#define ui_disarm_small "12:15,1:18"
+#define ui_grab_small "12:32,1:18"
+#define ui_harm_small "12:39,1:1"
+
+
+
+//#define ui_swapbutton "6:-16,1:5" //Unused
+
+
//#define ui_headset "SOUTH,8"
-#define ui_rhand "SOUTH,1"
-#define ui_lhand "SOUTH,3"
-#define ui_id "SOUTH-1,1"
-#define ui_mask "SOUTH+1,1"
-#define ui_back "SOUTH+1,3"
-#define ui_storage1 "SOUTH-1,4"
-#define ui_storage2 "SOUTH-1,5"
-#define ui_sstore1 "SOUTH+1,4"
-#define ui_hstore1 "SOUTH+1,6"
+#define ui_hand "6:14,1:5"
+#define ui_hstore1 "5,5"
#define ui_resist "EAST+1,SOUTH-1"
-#define ui_gloves "SOUTH,5"
-#define ui_glasses "SOUTH+1,5"
-#define ui_lear "SOUTH,7"
-#define ui_rear "SOUTH,6"
-#define ui_head "SOUTH+1,2"
-#define ui_shoes "SOUTH,4"
-#define ui_belt "SOUTH-1,3"
-#define ui_throw "SOUTH-1,8"
-#define ui_oxygen "EAST+1, NORTH-4"
-#define ui_pressure "EAST+1, NORTH-5"
-#define ui_toxin "EAST+1, NORTH-6"
-#define ui_internal "EAST+1, NORTH-2"
-#define ui_fire "EAST+1, NORTH-8"
-#define ui_temp "EAST+1, NORTH-10"
-#define ui_health "EAST+1, NORTH-11"
-#define ui_nutrition "EAST+1, NORTH-12"
-#define ui_pull "SOUTH-1,10"
-#define ui_hand "SOUTH-1,6"
#define ui_sleep "EAST+1, NORTH-13"
#define ui_rest "EAST+1, NORTH-14"
-#define ui_acti "SOUTH-1,12"
-#define ui_movi "SOUTH-1,14"
#define ui_iarrowleft "SOUTH-1,11"
#define ui_iarrowright "SOUTH-1,13"
-#define ui_inv1 "SOUTH-1,1"
-#define ui_inv2 "SOUTH-1,2"
-#define ui_inv3 "SOUTH-1,3"
-
-
-#define ui_gun1 "SOUTH,8"
-#define ui_gun2 "SOUTH,9"
-#define ui_gun3 "SOUTH,10"
-#define ui_gun_select "SOUTH-1,9"
@@ -68,6 +119,10 @@ obj/hud/New(var/type = 0)
if(mymob:r_ear) mymob:r_ear:screen_loc = ui_rear
if(mymob:s_store) mymob:s_store:screen_loc = ui_sstore1
if(mymob:glasses) mymob:glasses:screen_loc = ui_glasses
+ if(mymob:w_uniform) mymob:w_uniform:screen_loc = ui_iclothing
+ if(mymob:wear_suit) mymob:wear_suit:screen_loc = ui_oclothing
+ if(mymob:wear_mask) mymob:wear_mask:screen_loc = ui_mask
+ if(mymob:head) mymob:head:screen_loc = ui_head
else
if(istype(mymob, /mob/living/carbon/human))
if(mymob:shoes) mymob:shoes:screen_loc = null
@@ -76,6 +131,10 @@ obj/hud/New(var/type = 0)
if(mymob:r_ear) mymob:r_ear:screen_loc = null
if(mymob:s_store) mymob:s_store:screen_loc = null
if(mymob:glasses) mymob:glasses:screen_loc = null
+ if(mymob:w_uniform) mymob:w_uniform:screen_loc = null
+ if(mymob:wear_suit) mymob:wear_suit:screen_loc = null
+ if(mymob:wear_mask) mymob:wear_mask:screen_loc = null
+ if(mymob:head) mymob:head:screen_loc = null
/obj/hud/var/show_otherinventory = 1
diff --git a/code/game/objects/secstorage/secstorage.dm b/code/game/objects/secstorage/secstorage.dm
index e2d6a2599f..725f27e488 100644
--- a/code/game/objects/secstorage/secstorage.dm
+++ b/code/game/objects/secstorage/secstorage.dm
@@ -79,18 +79,25 @@
src.closer.screen_loc = text("[],[]", mx, my)
return
-/obj/item/weapon/secstorage/proc/orient2hud(mob/user as mob)
+//This proc draws out the inventory and places the items on it. It uses the standard position.
+/obj/item/weapon/secstorage/proc/standard_orient_objs()
+ var/rows = 0
+ var/cols = 6
+ var/cx = 4
+ var/cy = 2+rows
+ src.boxes.screen_loc = text("4:16,2:16 to [4+cols]:16,[2+rows]:16")
+ for(var/obj/O in src.contents)
+ O.screen_loc = text("[cx]:16,[cy]:16")
+ O.layer = 20
+ cx++
+ if (cx > (4+cols))
+ cx = 4
+ cy--
+ src.closer.screen_loc = text("11:16,2:16")
+ return
- if (src == user.l_hand)
- src.orient_objs(3, 11, 3, 4)
- else
- if (src == user.r_hand)
- src.orient_objs(1, 11, 1, 4)
- else
- if (src == user.back)
- src.orient_objs(4, 10, 4, 3)
- else
- src.orient_objs(7, 8, 10, 7)
+/obj/item/weapon/secstorage/proc/orient2hud(mob/user as mob)
+ standard_orient_objs()
return
/obj/item/weapon/secstorage/attackby(obj/item/weapon/W as obj, mob/user as mob)
@@ -160,7 +167,7 @@
/obj/item/weapon/secstorage/dropped(mob/user as mob)
- src.orient_objs(7, 8, 10, 7)
+ standard_orient_objs()
return
/obj/item/weapon/secstorage/MouseDrop(over_object, src_location, over_location)
@@ -168,6 +175,7 @@
if (src.locked == 1)
return
+ orient2hud(usr)
if ((over_object == usr && ((get_dist(src, usr) <= 1 ||src.locked == 0) || usr.contents.Find(src)))) //|| usr.telekinesis == 1
if (usr.s_active)
usr.s_active.close(usr)
@@ -258,6 +266,6 @@
src.closer.icon_state = "x"
src.closer.layer = 20
spawn( 5 )
- src.orient_objs(7, 8, 10, 7)
+ standard_orient_objs()
return
return
diff --git a/code/game/objects/storage/coat.dm b/code/game/objects/storage/coat.dm
index 96c0404f5f..38a180e138 100644
--- a/code/game/objects/storage/coat.dm
+++ b/code/game/objects/storage/coat.dm
@@ -1,221 +1,11 @@
-
/obj/item/clothing/suit/storage
- var/obj/screen/storage/boxes
- var/obj/screen/close/closer
- var/obj/slot1
- var/obj/slot2
-
-/obj/item/clothing/suit/storage/New()
- src.boxes = new /obj/screen/storage( )
- src.boxes.name = "storage"
- src.boxes.master = src
- src.boxes.icon_state = "block"
- src.boxes.screen_loc = "7,7 to 9,7"
- src.boxes.layer = 19
- src.closer = new /obj/screen/close( )
- src.closer.master = src
- src.closer.icon_state = "x"
- src.closer.layer = 20
- src.closer.screen_loc = "9,7"
-
-/obj/item/clothing/suit/storage/proc/view_inv(mob/user as mob)
- if(!user.client)
- return
- user.client.screen += src.boxes
- user.client.screen += src.closer
- user.client.screen += src.contents
-
-/obj/item/clothing/suit/storage/proc/close(mob/user as mob)
- if(!user.client)
- return
- user.client.screen -= src.boxes
- user.client.screen -= src.closer
- user.client.screen -= src.contents
-
-/obj/item/clothing/suit/storage/MouseDrop(atom/over_object)
- if(ishuman(usr))
- var/mob/living/carbon/human/M = usr
- if (!( istype(over_object, /obj/screen) ))
- return ..()
- playsound(src.loc, "rustle", 50, 1, -5)
- if ((!( M.restrained() ) && !( M.stat ) && M.wear_suit == src))
- if (over_object.name == "r_hand")
- if (!( M.r_hand ))
- M.u_equip(src)
- M.r_hand = src
- else
- if (over_object.name == "l_hand")
- if (!( M.l_hand ))
- M.u_equip(src)
- M.l_hand = src
- M.update_clothing()
- src.add_fingerprint(usr)
- return
- if(over_object == usr && in_range(src, usr) || usr.contents.Find(src))
- src.view_inv(M)
- src.orient_objs(7,7,9,7)
- return
- return
-
-/obj/item/clothing/suit/storage/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(W.w_class > 2 || src.loc == W )
- return
- if(istype(W,/obj/item/weapon/evidencebag) && src.loc != user)
- return
- if(src.contents.len >= 2)
- user << "\red There's nowhere to place that!"
- return
- user.u_equip(W)
- W.loc = src
- if ((user.client && user.s_active != src))
- user.client.screen -= W
- else if(user.s_active == src)
- close(user)
- view_inv(user)
- orient2hud(user)
- W.dropped(user)
-
-/obj/item/clothing/suit/storage/attack_paw(mob/user as mob)
- playsound(src.loc, "rustle", 50, 1, -5)
- return attack_hand(user)
-
-/obj/item/clothing/suit/storage/attack_hand(mob/user as mob)
- playsound(src.loc, "rustle", 50, 1, -5)
- if (src.loc == user)
- if (user.s_active)
- user.s_active.close(user)
- src.show_to(user)
- else
- ..()
- for(var/mob/M in range(1))
- if (M.s_active == src)
- src.close(M)
- src.orient2hud(user)
- src.add_fingerprint(user)
- return
-
-/obj/item/clothing/suit/storage/proc/orient2hud(mob/user as mob)
- if (src == user.l_hand)
- src.orient_objs(3, 4, 3, 3)
- else if (src == user.r_hand)
- src.orient_objs(1, 4, 1, 3)
- else if (istype(user,/mob/living/carbon/human) && src == user:wear_suit)
- src.orient_objs(1, 3, 2, 3)
- else
- src.orient_objs(4, 3, 4, 2)
- return
-
-/obj/item/clothing/suit/storage/proc/orient_objs(tx, ty, mx, my)
- var/cx = tx
- var/cy = ty
- src.boxes.screen_loc = "[tx],[ty] to [mx],[my]"
- for(var/obj/O in src.contents)
- O.screen_loc = "[cx],[cy]"
- O.layer = 20
- cx++
- if (cx > mx)
- cx = tx
- cy--
- src.closer.screen_loc = "[mx+1],[my]"
- return
-
-/obj/item/clothing/suit/storage/proc/show_to(mob/user as mob)
- for(var/obj/item/weapon/mousetrap/MT in src)
- if(MT.armed)
- for(var/mob/O in viewers(user, null))
- if(O == user)
- user.show_message(text("\red You reach into the [src.name], but there was a live mousetrap in there!"), 1)
- else
- user.show_message(text("\red [user] reaches into the [src.name] and sets off a hidden mousetrap!"), 1)
- MT.loc = user.loc
- MT.triggered(user, user.hand ? "l_hand" : "r_hand")
- MT.layer = OBJ_LAYER
- return
- user.client.screen -= src.boxes
- user.client.screen -= src.closer
- user.client.screen -= src.contents
- user.client.screen += src.boxes
- user.client.screen += src.closer
- user.client.screen += src.contents
- user.s_active = src
- return
-
-/*/obj/item/clothing/suit/storage/New()
-
- src.boxes = new /obj/screen/storage( )
- src.boxes.name = "storage"
- src.boxes.master = src
- src.boxes.icon_state = "block"
- src.boxes.screen_loc = "7,7 to 10,8"
- src.boxes.layer = 19
- src.closer = new /obj/screen/close( )
- src.closer.master = src
- src.closer.icon_state = "x"
- src.closer.layer = 20
- spawn( 5 )
- src.orient_objs(7, 8, 10, 7)
- return
- return
-
-/obj/item/clothing/suit/storage/attackby(obj/item/weapon/W as obj, mob/user as mob)
-
- if(can_hold.len)
- var/ok = 0
- for(var/A in can_hold)
- if(istype(W, text2path(A) )) ok = 1
- if(!ok)
- user << "\red This container cannot hold [W]."
- return
-
- if (src.contents.len >= 7)
- return
- if ((W.w_class >= 3 || istype(W, /obj/item/weapon/storage) || src.loc == W))
- return
- user.u_equip(W)
- W.loc = src
- if ((user.client && user.s_active != src))
- user.client.screen -= W
- src.orient2hud(user)
- W.dropped(user)
- add_fingerprint(user)
- if (istype(W, /obj/item/weapon/gun/energy/crossbow)) return //STEALTHY
- for(var/mob/O in viewers(user, null))
- O.show_message(text("\blue [] has added [] to []!", user, W, src), 1)
- //Foreach goto(139)
- return
-
-/obj/item/clothing/suit/storage/dropped(mob/user as mob)
- src.orient_objs(7, 8, 10, 7)
- return
-
-/obj/item/clothing/suit/storage/MouseDrop(over_object, src_location, over_location)
- ..()
- if ((over_object == usr && (in_range(src, usr) || usr.contents.Find(src))))
- if (usr.s_active)
- usr.s_active.close(usr)
- src.show_to(usr)
- return
-
-/obj/item/clothing/suit/storage/attack_paw(mob/user as mob)
- playsound(src.loc, "rustle", 50, 1, -5)
- return src.attack_hand(user)
- return
-
-/obj/item/clothing/suit/storage/attack_hand(mob/user as mob)
- playsound(src.loc, "rustle", 50, 1, -5)
- if (src.loc == user)
- if (user.s_active)
- user.s_active.close(user)
- src.show_to(user)
- else
- ..()
- for(var/mob/M in range(1))
- if (M.s_active == src)
- src.close(M)
- //Foreach goto(76)
- src.orient2hud(user)
- src.add_fingerprint(user)
- return
+ var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else)
+ var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set)
+ var/max_w_class = 2 //Max size of objects that this object can store (in effect only if can_hold isn't set)
+ var/max_combined_w_class = 4 //The sum of the w_classes of all the items in this storage item.
+ var/storage_slots = 2 //The number of storage slots in this container.
+ var/obj/screen/storage/boxes = null
+ var/obj/screen/close/closer = null
/obj/item/clothing/suit/storage/proc/return_inv()
@@ -267,19 +57,169 @@
user.s_active = null
return
-/obj/item/weapon/storage/proc/orient_objs(tx, ty, mx, my)
-
+//This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right.
+//The numbers are calculated from the bottom-left The bottom-left slot being 1,1.
+/obj/item/clothing/suit/storage/proc/orient_objs(tx, ty, mx, my)
var/cx = tx
var/cy = ty
- src.boxes.screen_loc = text("[],[] to [],[]", tx, ty, mx, my)
+ src.boxes.screen_loc = text("[tx]:,[ty] to [mx],[my]")
for(var/obj/O in src.contents)
- O.screen_loc = text("[],[]", cx, cy)
+ O.screen_loc = text("[cx],[cy]")
O.layer = 20
cx++
if (cx > mx)
cx = tx
cy--
- //Foreach goto(56)
- src.closer.screen_loc = text("[],[]", mx, my)
+ src.closer.screen_loc = text("[mx+1],[my]")
return
-*/
\ No newline at end of file
+
+//This proc draws out the inventory and places the items on it. It uses the standard position.
+/obj/item/clothing/suit/storage/proc/standard_orient_objs(var/rows,var/cols)
+ var/cx = 4
+ var/cy = 2+rows
+ src.boxes.screen_loc = text("4:16,2:16 to [4+cols]:16,[2+rows]:16")
+ for(var/obj/O in src.contents)
+ O.screen_loc = text("[cx]:16,[cy]:16")
+ O.layer = 20
+ cx++
+ if (cx > (4+cols))
+ cx = 4
+ cy--
+ src.closer.screen_loc = text("[4+cols+1]:16,2:16")
+ return
+
+//This proc determins the size of the inventory to be displayed. Please touch it only if you know what you're doing.
+/obj/item/clothing/suit/storage/proc/orient2hud(mob/user as mob)
+ //var/mob/living/carbon/human/H = user
+ var/row_num = 0
+ var/col_count = min(7,storage_slots) -1
+ if (contents.len > 7)
+ row_num = round((contents.len-1) / 7) // 7 is the maximum allowed width.
+ src.standard_orient_objs(row_num,col_count)
+ return
+
+//This proc is called when you want to place an item into the storage item.
+/obj/item/clothing/suit/storage/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(istype(W,/obj/item/weapon/evidencebag) && src.loc != user)
+ return
+
+ ..()
+ if(isrobot(user))
+ user << "\blue You're a robot. No."
+ return //Robots can't interact with storage items.
+
+ if(src.loc == W)
+ return //Means the item is already in the storage item
+
+ if(contents.len >= storage_slots)
+ user << "\red The [src] is full, make some space."
+ return //Storage item is full
+
+ if(can_hold.len)
+ var/ok = 0
+ for(var/A in can_hold)
+ if(istype(W, text2path(A) ))
+ ok = 1
+ break
+ if(!ok)
+ user << "\red This [src] cannot hold [W]."
+ return
+
+ for(var/A in cant_hold) //Check for specific items which this container can't hold.
+ if(istype(W, text2path(A) ))
+ user << "\red This [src] cannot hold [W]."
+ return
+
+ if (W.w_class > max_w_class)
+ user << "\red This [W] is too big for this [src]"
+ return
+
+ var/sum_w_class = W.w_class
+ for(var/obj/item/I in contents)
+ sum_w_class += I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it.
+
+ if(sum_w_class > max_combined_w_class)
+ user << "\red The [src] is full, make some space."
+ return
+
+ if(W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage)))
+ if(!istype(src, /obj/item/weapon/storage/backpack/holding)) //bohs should be able to hold backpacks again. The override for putting a boh in a boh is in backpack.dm.
+ user << "\red The [src] cannot hold [W] as it's a storage item of the same size."
+ return //To prevent the stacking of the same sized items.
+
+ user.u_equip(W)
+ W.loc = src
+ if ((user.client && user.s_active != src))
+ user.client.screen -= W
+ src.orient2hud(user)
+ W.dropped(user)
+ add_fingerprint(user)
+
+
+
+/obj/item/weapon/storage/dropped(mob/user as mob)
+ return
+
+/obj/item/clothing/suit/storage/MouseDrop(atom/over_object)
+ if(ishuman(usr))
+ var/mob/living/carbon/human/M = usr
+ if (!( istype(over_object, /obj/screen) ))
+ return ..()
+ playsound(src.loc, "rustle", 50, 1, -5)
+ if ((!( M.restrained() ) && !( M.stat ) && M.wear_suit == src))
+ if (over_object.name == "r_hand")
+ if (!( M.r_hand ))
+ M.u_equip(src)
+ M.r_hand = src
+ else
+ if (over_object.name == "l_hand")
+ if (!( M.l_hand ))
+ M.u_equip(src)
+ M.l_hand = src
+ M.update_clothing()
+ src.add_fingerprint(usr)
+ return
+ if(over_object == usr && in_range(src, usr) || usr.contents.Find(src))
+ usr.s_active.close(usr)
+ src.show_to(usr)
+ return
+
+/obj/item/clothing/suit/storage/attack_paw(mob/user as mob)
+ //playsound(src.loc, "rustle", 50, 1, -5) // what
+ return src.attack_hand(user)
+
+/obj/item/clothing/suit/storage/attack_hand(mob/user as mob)
+ playsound(src.loc, "rustle", 50, 1, -5)
+ src.orient2hud(user)
+ if (src.loc == user)
+ if (user.s_active)
+ user.s_active.close(user)
+ src.show_to(user)
+ else
+ ..()
+ for(var/mob/M in range(1))
+ if (M.s_active == src)
+ src.close(M)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/clothing/suit/storage/New()
+
+ src.boxes = new /obj/screen/storage( )
+ src.boxes.name = "storage"
+ src.boxes.master = src
+ src.boxes.icon_state = "block"
+ src.boxes.screen_loc = "7,7 to 10,8"
+ src.boxes.layer = 19
+ src.closer = new /obj/screen/close( )
+ src.closer.master = src
+ src.closer.icon_state = "x"
+ src.closer.layer = 20
+ orient2hud()
+ return
+
+/obj/item/weapon/storage/emp_act(severity)
+ if(!istype(src.loc, /mob/living))
+ for(var/obj/O in contents)
+ O.emp_act(severity)
+ ..()
\ No newline at end of file
diff --git a/code/game/objects/storage/storage.dm b/code/game/objects/storage/storage.dm
index 4cf94bd067..a5397a36c6 100644
--- a/code/game/objects/storage/storage.dm
+++ b/code/game/objects/storage/storage.dm
@@ -62,11 +62,11 @@
return
//This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right.
-//The numbers are calculated from the bottom-left (Right hand slot on the map) being 1,1.
+//The numbers are calculated from the bottom-left The bottom-left slot being 1,1.
/obj/item/weapon/storage/proc/orient_objs(tx, ty, mx, my)
var/cx = tx
var/cy = ty
- src.boxes.screen_loc = text("[tx],[ty] to [mx],[my]")
+ src.boxes.screen_loc = text("[tx]:,[ty] to [mx],[my]")
for(var/obj/O in src.contents)
O.screen_loc = text("[cx],[cy]")
O.layer = 20
@@ -77,23 +77,29 @@
src.closer.screen_loc = text("[mx+1],[my]")
return
+//This proc draws out the inventory and places the items on it. It uses the standard position.
+/obj/item/weapon/storage/proc/standard_orient_objs(var/rows,var/cols)
+ var/cx = 4
+ var/cy = 2+rows
+ src.boxes.screen_loc = text("4:16,2:16 to [4+cols]:16,[2+rows]:16")
+ for(var/obj/O in src.contents)
+ O.screen_loc = text("[cx]:16,[cy]:16")
+ O.layer = 20
+ cx++
+ if (cx > (4+cols))
+ cx = 4
+ cy--
+ src.closer.screen_loc = text("[4+cols+1]:16,2:16")
+ return
+
//This proc determins the size of the inventory to be displayed. Please touch it only if you know what you're doing.
/obj/item/weapon/storage/proc/orient2hud(mob/user as mob)
- var/mob/living/carbon/human/H = user
- var/col_num = 0
- var/row_count = min(7,storage_slots) -1 //For belts, the meanings of the two variables are inverted, so we don't have to declare new ones
+ //var/mob/living/carbon/human/H = user
+ var/row_num = 0
+ var/col_count = min(7,storage_slots) -1
if (contents.len > 7)
- col_num = round((contents.len-1) / 7) // 7 is the maximum allowed column height for r_hand, l_hand and back storage items.
- if (src == user.l_hand)
- src.orient_objs(3-col_num, 3+row_count, 3, 3)
- else if(src == user.r_hand)
- src.orient_objs(1, 3+row_count, 1+col_num, 3)
- else if(src == user.back)
- src.orient_objs(4-col_num, 3+row_count, 4, 3)
- else if(istype(user, /mob/living/carbon/human) && src == H.belt)//only humans have belts
- src.orient_objs(1, 3+col_num, 1+row_count, 3)
- else
- src.orient_objs(5, 10+col_num, 5 + row_count, 10)
+ row_num = round((contents.len-1) / 7) // 7 is the maximum allowed width.
+ src.standard_orient_objs(row_num,col_count)
return
//This proc is called when you want to place an item into the storage item.
@@ -186,15 +192,11 @@
return
/obj/item/weapon/storage/dropped(mob/user as mob)
- var/col_num = 0
- var/row_count = min(7,storage_slots) -1
- if (contents.len > 7)
- col_num = round((contents.len-1) / 7) // 7 is the maximum allowed column height for r_hand, l_hand and back storage items.
- src.orient_objs(5, 10+col_num, 5 + row_count, 10)
return
/obj/item/weapon/storage/MouseDrop(over_object, src_location, over_location)
..()
+ orient2hud(usr)
if ((over_object == usr && (in_range(src, usr) || usr.contents.Find(src))))
if (usr.s_active)
usr.s_active.close(usr)
@@ -244,14 +246,7 @@
src.closer.master = src
src.closer.icon_state = "x"
src.closer.layer = 20
- spawn( 5 )
- var/col_num = 0
- var/row_count = min(7,storage_slots) -1
- if (contents.len > 7)
- if(contents.len % 7)
- col_num = round(contents.len / 7) // 7 is the maximum allowed column height for r_hand, l_hand and back storage items.
- src.orient_objs(5, 10+col_num, 5 + row_count, 10)
- return
+ orient2hud()
return
/obj/item/weapon/storage/emp_act(severity)
@@ -442,4 +437,4 @@
..()
return
-////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/humanoid/hud.dm b/code/modules/mob/living/carbon/alien/humanoid/hud.dm
index 37ec382bc7..9b48bde3e6 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/hud.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/hud.dm
@@ -8,6 +8,7 @@
src.mov_int = list( )
src.vimpaired = list( )
src.darkMask = list( )
+ src.intent_small_hud_objects = list( )
src.g_dither = new src.h_type( src )
src.g_dither.screen_loc = "WEST,SOUTH to EAST,NORTH"
@@ -49,6 +50,41 @@
src.adding += using
action_intent = using
+//intent small hud objects
+ using = new src.h_type( src )
+ using.name = "help"
+ using.icon = 'screen1_alien.dmi'
+ using.icon_state = "help_small"
+ using.screen_loc = ui_help_small
+ using.layer = 21
+ src.intent_small_hud_objects += using
+
+ using = new src.h_type( src )
+ using.name = "disarm"
+ using.icon = 'screen1_alien.dmi'
+ using.icon_state = "disarm_small"
+ using.screen_loc = ui_disarm_small
+ using.layer = 21
+ src.intent_small_hud_objects += using
+
+ using = new src.h_type( src )
+ using.name = "grab"
+ using.icon = 'screen1_alien.dmi'
+ using.icon_state = "grab_small"
+ using.screen_loc = ui_grab_small
+ using.layer = 21
+ src.intent_small_hud_objects += using
+
+ using = new src.h_type( src )
+ using.name = "harm"
+ using.icon = 'screen1_alien.dmi'
+ using.icon_state = "harm_small"
+ using.screen_loc = ui_harm_small
+ using.layer = 21
+ src.intent_small_hud_objects += using
+
+//end intent small hud objects
+
using = new src.h_type( src )
using.name = "mov_intent"
using.dir = SOUTHWEST
@@ -59,6 +95,7 @@
src.adding += using
move_intent = using
+/*
using = new src.h_type(src) //Right hud bar
using.dir = SOUTH
using.icon = 'screen1_alien.dmi'
@@ -79,7 +116,9 @@
using.screen_loc = "EAST+1,SOUTH-1"
using.layer = 19
src.adding += using
+*/
+ /*
using = new src.h_type( src )
using.name = "arrowleft"
using.icon = 'screen1_alien.dmi'
@@ -97,6 +136,7 @@
using.screen_loc = ui_iarrowright
using.layer = 19
src.adding += using
+ */
using = new src.h_type( src )
using.name = "drop"
@@ -115,7 +155,7 @@
using.dir = SOUTH
using.icon = 'screen1_alien.dmi'
using.icon_state = "equip"
- using.screen_loc = ui_iclothing
+ using.screen_loc = ui_alien_oclothing
using.layer = 19
src.adding += using
@@ -125,7 +165,7 @@
using.dir = WEST
using.icon = 'screen1_alien.dmi'
using.icon_state = "equip"
- using.screen_loc = ui_id
+ using.screen_loc = ui_rhand
using.layer = 19
src.adding += using
@@ -135,7 +175,7 @@
using.dir = EAST
using.icon = 'screen1_alien.dmi'
using.icon_state = "equip"
- using.screen_loc = ui_belt
+ using.screen_loc = ui_lhand
using.layer = 19
src.adding += using
@@ -162,11 +202,12 @@
using.name = "head"
using.icon = 'screen1_alien.dmi'
using.icon_state = "hair"
- using.screen_loc = ui_oclothing
+ using.screen_loc = ui_alien_head
using.layer = 19
src.adding += using
//end of equippable shit
+/*
using = new src.h_type( src )
using.name = "resist"
using.icon = 'screen1_alien.dmi'
@@ -174,8 +215,7 @@
using.screen_loc = ui_resist
using.layer = 19
src.adding += using
-
-
+*/
using = new src.h_type( src )
using.name = null
@@ -241,7 +281,7 @@
mymob.healths.icon = 'screen1_alien.dmi'
mymob.healths.icon_state = "health0"
mymob.healths.name = "health"
- mymob.healths.screen_loc = ui_health
+ mymob.healths.screen_loc = ui_alien_health
mymob.pullin = new /obj/screen( null )
mymob.pullin.icon = 'screen1_alien.dmi'
@@ -265,6 +305,7 @@
mymob.flash.screen_loc = "1,1 to 15,15"
mymob.flash.layer = 17
+ /*
mymob.hands = new /obj/screen( null )
mymob.hands.icon = 'screen1_alien.dmi'
mymob.hands.icon_state = "hand"
@@ -285,6 +326,7 @@
mymob.rest.screen_loc = ui_rest
mymob.gun_setting_icon = new /obj/screen/gun/mode(null)
+ */
mymob.zone_sel = new /obj/screen/zone_sel( null )
@@ -293,6 +335,6 @@
mymob.client.screen = null
- mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.hands, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach )
+ mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += src.adding + src.other
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 8dff96afd7..bd1da4e299 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -398,7 +398,7 @@
overlays += image("icon" = 'blood.dmi', "icon_state" = "armorblood[!lying ? "" : "2"]", "layer" = MOB_LAYER)
else
overlays += image("icon" = 'blood.dmi', "icon_state" = "suitblood[!lying ? "" : "2"]", "layer" = MOB_LAYER)
- wear_suit.screen_loc = ui_iclothing
+ wear_suit.screen_loc = ui_alien_oclothing
if (istype(wear_suit, /obj/item/clothing/suit/straight_jacket))
if (handcuffed)
handcuffed.loc = loc
@@ -420,7 +420,7 @@
overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
if (head.blood_DNA)
overlays += image("icon" = 'blood.dmi', "icon_state" = "helmetblood[!lying ? "" : "2"]", "layer" = MOB_LAYER)
- head.screen_loc = ui_oclothing
+ head.screen_loc = ui_alien_head
if (l_store)
l_store.screen_loc = ui_storage1
@@ -435,12 +435,12 @@
if (r_hand)
overlays += image("icon" = 'items_righthand.dmi', "icon_state" = r_hand.item_state ? r_hand.item_state : r_hand.icon_state, "layer" = MOB_LAYER+1)
- r_hand.screen_loc = ui_id
+ r_hand.screen_loc = ui_rhand
if (l_hand)
overlays += image("icon" = 'items_lefthand.dmi', "icon_state" = l_hand.item_state ? l_hand.item_state : l_hand.icon_state, "layer" = MOB_LAYER+1)
- l_hand.screen_loc = ui_belt
+ l_hand.screen_loc = ui_lhand
diff --git a/code/modules/mob/living/carbon/alien/larva/hud.dm b/code/modules/mob/living/carbon/alien/larva/hud.dm
index e51b8b48de..aeaba01f23 100644
--- a/code/modules/mob/living/carbon/alien/larva/hud.dm
+++ b/code/modules/mob/living/carbon/alien/larva/hud.dm
@@ -61,6 +61,7 @@
src.adding += using
move_intent = using
+/*
using = new src.h_type(src) //Right hud bar
using.dir = SOUTH
using.icon = 'screen1_alien.dmi'
@@ -81,7 +82,9 @@
using.screen_loc = "EAST+1,SOUTH-1"
using.layer = 19
src.adding += using
+*/
+/*
using = new src.h_type( src )
using.name = "arrowleft"
using.icon = 'screen1_alien.dmi'
@@ -100,7 +103,6 @@
using.layer = 19
src.adding += using
-
using = new src.h_type( src )
using.name = "resist"
using.icon = 'screen1_alien.dmi'
@@ -108,7 +110,7 @@
using.screen_loc = ui_resist
using.layer = 19
src.adding += using
-
+*/
using = new src.h_type( src )
@@ -171,7 +173,7 @@
mymob.healths.icon = 'screen1_alien.dmi'
mymob.healths.icon_state = "health0"
mymob.healths.name = "health"
- mymob.healths.screen_loc = ui_health
+ mymob.healths.screen_loc = ui_alien_health
mymob.pullin = new /obj/screen( null )
mymob.pullin.icon = 'screen1_alien.dmi'
@@ -194,7 +196,7 @@
mymob.flash.screen_loc = "1,1 to 15,15"
mymob.flash.layer = 17
-
+/*
mymob.sleep = new /obj/screen( null )
mymob.sleep.icon = 'screen1_alien.dmi'
mymob.sleep.icon_state = "sleep0"
@@ -206,7 +208,7 @@
mymob.rest.icon_state = "rest0"
mymob.rest.name = "rest"
mymob.rest.screen_loc = ui_rest
-
+*/
mymob.zone_sel = new /obj/screen/zone_sel( null )
mymob.zone_sel.overlays = null
@@ -214,7 +216,7 @@
mymob.client.screen = null
- mymob.client.screen += list( mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep) //, mymob.mach )
+ mymob.client.screen += list( mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += src.adding + src.other
diff --git a/code/modules/mob/living/carbon/brain/hud.dm b/code/modules/mob/living/carbon/brain/hud.dm
index f575d5ffbb..1ce2c9726e 100644
--- a/code/modules/mob/living/carbon/brain/hud.dm
+++ b/code/modules/mob/living/carbon/brain/hud.dm
@@ -1,5 +1,7 @@
/obj/hud/proc/brain_hud(var/ui_style='screen1_old.dmi')
+ ui_style='screen1_old.dmi' //Overriding the parameter. Only this UI style is acceptable with the 'sleek' layout.
+
blurry = new h_type( src )
blurry.screen_loc = "WEST,SOUTH to EAST,NORTH"
blurry.name = "Blurry"
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 7dfe4cb590..005c693f8e 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -173,12 +173,32 @@
usr << "Your other hand is too busy holding the [item_in_hand.name]"
return
src.hand = !( src.hand )
- if (!( src.hand ))
+ if(hud_used.l_hand_hud_object && hud_used.r_hand_hud_object)
+ if(hand) //This being 1 means the left hand is in use
+ hud_used.l_hand_hud_object.icon_state = "hand_active"
+ hud_used.r_hand_hud_object.icon_state = "hand_inactive"
+ else
+ hud_used.l_hand_hud_object.icon_state = "hand_inactive"
+ hud_used.r_hand_hud_object.icon_state = "hand_active"
+ /*if (!( src.hand ))
src.hands.dir = NORTH
else
- src.hands.dir = SOUTH
+ src.hands.dir = SOUTH*/
return
+/mob/living/carbon/proc/activate_hand(var/selhand) //0 or "r" or "right" for right hand; 1 or "l" or "left" for left hand.
+
+ if(istext(selhand))
+ selhand = lowertext(selhand)
+
+ if(selhand == "right" || selhand == "r")
+ selhand = 0
+ if(selhand == "left" || selhand == "l")
+ selhand = 1
+
+ if(selhand != src.hand)
+ swap_hand()
+
/mob/living/carbon/proc/help_shake_act(mob/living/carbon/M)
if (src.health > 0)
if(src == M && istype(src, /mob/living/carbon/human))
@@ -262,11 +282,12 @@
if(src.sleeping_willingly)
src.sleeping = 0
src.sleeping_willingly = 0
- // Update the hands-indicator on re-join.
+/* // Update the hands-indicator on re-join.
if (!( src.hand ))
src.hands.dir = NORTH
else
src.hands.dir = SOUTH
+*/
/mob/living/carbon/human/proc/GetOrgans()
var/list/L = list( )
diff --git a/code/modules/mob/living/carbon/human/hud.dm b/code/modules/mob/living/carbon/human/hud.dm
index 34ef0189cc..8a9cf5edbd 100644
--- a/code/modules/mob/living/carbon/human/hud.dm
+++ b/code/modules/mob/living/carbon/human/hud.dm
@@ -1,5 +1,7 @@
/obj/hud/proc/human_hud(var/ui_style='screen1_old.dmi')
+ ui_style='screen1_old.dmi' //Overriding the parameter. Only this UI style is acceptable with the 'sleek' layout.
+
src.adding = list( )
src.other = list( )
src.intents = list( )
@@ -8,6 +10,7 @@
src.mov_int = list( )
src.vimpaired = list( )
src.darkMask = list( )
+ src.intent_small_hud_objects = list( )
src.g_dither = new src.h_type( src )
src.g_dither.screen_loc = "WEST,SOUTH to EAST,NORTH"
@@ -53,6 +56,41 @@
src.adding += using
action_intent = using
+//intent small hud objects
+ using = new src.h_type( src )
+ using.name = "help"
+ using.icon = ui_style
+ using.icon_state = "help_small"
+ using.screen_loc = ui_help_small
+ using.layer = 21
+ src.intent_small_hud_objects += using
+
+ using = new src.h_type( src )
+ using.name = "disarm"
+ using.icon = ui_style
+ using.icon_state = "disarm_small"
+ using.screen_loc = ui_disarm_small
+ using.layer = 21
+ src.intent_small_hud_objects += using
+
+ using = new src.h_type( src )
+ using.name = "grab"
+ using.icon = ui_style
+ using.icon_state = "grab_small"
+ using.screen_loc = ui_grab_small
+ using.layer = 21
+ src.intent_small_hud_objects += using
+
+ using = new src.h_type( src )
+ using.name = "harm"
+ using.icon = ui_style
+ using.icon_state = "harm_small"
+ using.screen_loc = ui_harm_small
+ using.layer = 21
+ src.intent_small_hud_objects += using
+
+//end intent small hud objects
+
using = new src.h_type( src )
using.name = "mov_intent"
using.dir = SOUTHWEST
@@ -63,6 +101,7 @@
src.adding += using
move_intent = using
+/*
using = new src.h_type(src) //Right hud bar
using.dir = SOUTH
using.icon = ui_style
@@ -101,6 +140,7 @@
using.screen_loc = ui_iarrowright
using.layer = 19
src.adding += using
+*/
using = new src.h_type( src )
using.name = "drop"
@@ -117,7 +157,7 @@
using.icon_state = "center"
using.screen_loc = ui_iclothing
using.layer = 19
- src.adding += using
+ src.other += using
using = new src.h_type( src )
using.name = "o_clothing"
@@ -126,7 +166,7 @@
using.icon_state = "equip"
using.screen_loc = ui_oclothing
using.layer = 19
- src.adding += using
+ src.other += using
/* using = new src.h_type( src )
using.name = "headset"
@@ -141,25 +181,49 @@
using.name = "r_hand"
using.dir = WEST
using.icon = ui_style
- using.icon_state = "equip"
+ using.icon_state = "hand_inactive"
+ if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use
+ using.icon_state = "hand_active"
using.screen_loc = ui_rhand
using.layer = 19
+ src.r_hand_hud_object = using
src.adding += using
using = new src.h_type( src )
using.name = "l_hand"
using.dir = EAST
using.icon = ui_style
- using.icon_state = "equip"
+ using.icon_state = "hand_inactive"
+ if(mymob && mymob.hand) //This being 1 means the left hand is in use
+ using.icon_state = "hand_active"
using.screen_loc = ui_lhand
using.layer = 19
+ src.l_hand_hud_object = using
+ src.adding += using
+
+ using = new src.h_type( src )
+ using.name = "hand"
+ using.dir = SOUTH
+ using.icon = ui_style
+ using.icon_state = "hand1"
+ using.screen_loc = ui_swaphand1
+ using.layer = 19
+ src.adding += using
+
+ using = new src.h_type( src )
+ using.name = "hand"
+ using.dir = SOUTH
+ using.icon = ui_style
+ using.icon_state = "hand2"
+ using.screen_loc = ui_swaphand2
+ using.layer = 19
src.adding += using
using = new src.h_type( src )
using.name = "id"
- using.dir = SOUTHWEST
+ using.dir = NORTH
using.icon = ui_style
- using.icon_state = "equip"
+ using.icon_state = "id"
using.screen_loc = ui_id
using.layer = 19
src.adding += using
@@ -171,13 +235,13 @@
using.icon_state = "equip"
using.screen_loc = ui_mask
using.layer = 19
- src.adding += using
+ src.other += using
using = new src.h_type( src )
using.name = "back"
- using.dir = NORTHEAST
+ using.dir = NORTH
using.icon = ui_style
- using.icon_state = "equip"
+ using.icon_state = "back"
using.screen_loc = ui_back
using.layer = 19
src.adding += using
@@ -201,11 +265,13 @@
using = new src.h_type( src )
using.name = "suit storage"
using.icon = ui_style
+ using.dir = 8 //The sprite at dir=8 has the background whereas the others don't.
using.icon_state = "belt"
using.screen_loc = ui_sstore1
using.layer = 19
src.other += using
+/*
using = new src.h_type( src )
using.name = "resist"
using.icon = ui_style
@@ -213,12 +279,13 @@
using.screen_loc = ui_resist
using.layer = 19
src.adding += using
+*/
using = new src.h_type( src )
using.name = "other"
using.icon = ui_style
using.icon_state = "other"
- using.screen_loc = ui_shoes
+ using.screen_loc = ui_inventory
using.layer = 20
src.adding += using
@@ -256,7 +323,6 @@
using = new src.h_type( src )
using.name = "l_ear"
- using.dir = EAST
using.icon = ui_style
using.icon_state = "ears"
using.screen_loc = ui_lear
@@ -265,7 +331,6 @@
using = new src.h_type( src )
using.name = "r_ear"
- using.dir = WEST
using.icon = ui_style
using.icon_state = "ears"
using.screen_loc = ui_rear
@@ -278,7 +343,7 @@
using.icon_state = "hair"
using.screen_loc = ui_head
using.layer = 19
- src.adding += using
+ src.other += using
using = new src.h_type( src )
using.name = "shoes"
@@ -467,6 +532,8 @@
mymob.pressure.icon_state = "pressure0"
mymob.pressure.name = "pressure"
mymob.pressure.screen_loc = ui_pressure
+
+
/*
mymob.i_select = new /obj/screen( null )
mymob.i_select.icon_state = "selector"
@@ -542,6 +609,7 @@
mymob.pain.screen_loc = "1,1 to 15,15"
mymob.pain.layer = 17
+/*
mymob.hands = new /obj/screen( null )
mymob.hands.icon = ui_style
mymob.hands.icon_state = "hand"
@@ -560,6 +628,7 @@
mymob.rest.icon_state = "rest0"
mymob.rest.name = "rest"
mymob.rest.screen_loc = ui_rest
+*/
/*/Monkey blockers
@@ -658,7 +727,7 @@
mymob.client.screen = null
//, mymob.i_select, mymob.m_select
- mymob.client.screen += list( mymob.pain, mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.hands, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.pressure, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach )
+ mymob.client.screen += list( mymob.pain, mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.gun_setting_icon) //, mymob.hands, mymob.rest, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach )
mymob.client.screen += src.adding + src.other
//if(istype(mymob,/mob/living/carbon/monkey)) mymob.client.screen += src.mon_blo
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index b73ded273d..8194483c4f 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1060,8 +1060,6 @@
overlays += image("icon" = 'belt_mirror.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
s_store.screen_loc = ui_sstore1
- if(client) hud_used.other_update() //Update the screenloc of the items on the 'other' inventory bar
- //to hide / show them.
if (client)
if (i_select)
if (intent)
@@ -1178,6 +1176,8 @@
overlays += image("icon" = 'back.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
back.screen_loc = ui_back
+ if(client) hud_used.other_update() //Update the screenloc of the items on the 'other' inventory bar
+ //to hide / show them.
if (handcuffed)
pulling = null
var/h1 = handcuffed.icon_state
diff --git a/code/modules/mob/living/carbon/monkey/hud.dm b/code/modules/mob/living/carbon/monkey/hud.dm
index d0596badac..39a3d29af9 100644
--- a/code/modules/mob/living/carbon/monkey/hud.dm
+++ b/code/modules/mob/living/carbon/monkey/hud.dm
@@ -1,5 +1,7 @@
/obj/hud/proc/monkey_hud(var/ui_style='screen1_old.dmi')
+ ui_style='screen1_old.dmi' //Overriding the parameter. Only this UI style is acceptable with the 'sleek' layout.
+
src.adding = list( )
src.other = list( )
src.intents = list( )
@@ -8,8 +10,9 @@
src.mov_int = list( )
src.vimpaired = list( )
src.darkMask = list( )
+ src.intent_small_hud_objects = list( )
- var/icon/blocked = icon(ui_style,"blocked")
+ //var/icon/blocked = icon(ui_style,"blocked")
src.g_dither = new src.h_type( src )
src.g_dither.screen_loc = "WEST,SOUTH to EAST,NORTH"
@@ -55,6 +58,41 @@
src.adding += using
action_intent = using
+//intent small hud objects
+ using = new src.h_type( src )
+ using.name = "help"
+ using.icon = ui_style
+ using.icon_state = "help_small"
+ using.screen_loc = ui_help_small
+ using.layer = 21
+ src.intent_small_hud_objects += using
+
+ using = new src.h_type( src )
+ using.name = "disarm"
+ using.icon = ui_style
+ using.icon_state = "disarm_small"
+ using.screen_loc = ui_disarm_small
+ using.layer = 21
+ src.intent_small_hud_objects += using
+
+ using = new src.h_type( src )
+ using.name = "grab"
+ using.icon = ui_style
+ using.icon_state = "grab_small"
+ using.screen_loc = ui_grab_small
+ using.layer = 21
+ src.intent_small_hud_objects += using
+
+ using = new src.h_type( src )
+ using.name = "harm"
+ using.icon = ui_style
+ using.icon_state = "harm_small"
+ using.screen_loc = ui_harm_small
+ using.layer = 21
+ src.intent_small_hud_objects += using
+
+//end intent small hud objects
+
using = new src.h_type( src )
using.name = "mov_intent"
using.dir = SOUTHWEST
@@ -65,6 +103,7 @@
src.adding += using
move_intent = using
+/*
using = new src.h_type(src) //Right hud bar
using.dir = SOUTH
using.icon = ui_style
@@ -102,7 +141,7 @@
using.dir = EAST
using.screen_loc = ui_iarrowright
using.layer = 19
- src.adding += using
+ src.adding += using*/
using = new src.h_type( src )
using.name = "drop"
@@ -111,7 +150,7 @@
using.screen_loc = ui_dropbutton
using.layer = 19
src.adding += using
-
+/*
using = new src.h_type( src )
using.name = "i_clothing"
using.dir = SOUTH
@@ -131,7 +170,7 @@
using.layer = 19
using.overlays += blocked
src.adding += using
-
+*/
/* using = new src.h_type( src )
using.name = "headset"
using.dir = SOUTHEAST
@@ -145,20 +184,44 @@
using.name = "r_hand"
using.dir = WEST
using.icon = ui_style
- using.icon_state = "equip"
+ using.icon_state = "hand_inactive"
+ if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use
+ using.icon_state = "hand_active"
using.screen_loc = ui_rhand
using.layer = 19
+ src.r_hand_hud_object = using
src.adding += using
using = new src.h_type( src )
using.name = "l_hand"
using.dir = EAST
using.icon = ui_style
- using.icon_state = "equip"
+ using.icon_state = "hand_inactive"
+ if(mymob && mymob.hand) //This being 1 means the left hand is in use
+ using.icon_state = "hand_active"
using.screen_loc = ui_lhand
using.layer = 19
+ src.l_hand_hud_object = using
+ src.adding += using
+
+ using = new src.h_type( src )
+ using.name = "hand"
+ using.dir = SOUTH
+ using.icon = ui_style
+ using.icon_state = "hand1"
+ using.screen_loc = ui_swaphand1
+ using.layer = 19
src.adding += using
+ using = new src.h_type( src )
+ using.name = "hand"
+ using.dir = SOUTH
+ using.icon = ui_style
+ using.icon_state = "hand2"
+ using.screen_loc = ui_swaphand2
+ using.layer = 19
+ src.adding += using
+/*
using = new src.h_type( src )
using.name = "id"
using.dir = SOUTHWEST
@@ -168,13 +231,14 @@
using.layer = 19
using.overlays += blocked
src.adding += using
+*/
using = new src.h_type( src )
using.name = "mask"
using.dir = NORTH
using.icon = ui_style
using.icon_state = "equip"
- using.screen_loc = ui_mask
+ using.screen_loc = ui_monkey_mask
using.layer = 19
src.adding += using
@@ -186,7 +250,7 @@
using.screen_loc = ui_back
using.layer = 19
src.adding += using
-
+/*
using = new src.h_type( src )
using.name = "storage1"
using.icon = ui_style
@@ -204,7 +268,6 @@
using.layer = 19
using.overlays += blocked
src.adding += using
-
using = new src.h_type( src )
using.name = "resist"
using.icon = ui_style
@@ -283,6 +346,7 @@
using.layer = 19
using.overlays += blocked
src.adding += using
+*/
/*
using = new src.h_type( src )
@@ -399,6 +463,7 @@
mymob.m_select.name = "moving"
mymob.m_select.screen_loc = "16:-11,14"
*/
+
mymob.toxin = new /obj/screen( null )
mymob.toxin.icon = ui_style
mymob.toxin.icon_state = "tox0"
@@ -450,6 +515,7 @@
mymob.flash.screen_loc = "1,1 to 15,15"
mymob.flash.layer = 17
+/*
mymob.hands = new /obj/screen( null )
mymob.hands.icon = ui_style
mymob.hands.icon_state = "hand"
@@ -467,7 +533,7 @@
mymob.rest.icon = ui_style
mymob.rest.icon_state = "rest0"
mymob.rest.name = "rest"
- mymob.rest.screen_loc = ui_rest
+ mymob.rest.screen_loc = ui_rest*/
/*/Monkey blockers
@@ -566,7 +632,7 @@
mymob.client.screen = null
//, mymob.i_select, mymob.m_select
- mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.hands, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep, mymob.pressure, mymob.gun_setting_icon) //, mymob.mach )
+ 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, mymob.gun_setting_icon) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach, mymob.hands, )
mymob.client.screen += src.adding + src.other
//if(istype(mymob,/mob/living/carbon/monkey)) mymob.client.screen += src.mon_blo
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index a39ff6a39d..688ad10eaf 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -511,7 +511,7 @@
if (istype(wear_mask, /obj/item/clothing/mask))
var/t1 = wear_mask.icon_state
overlays += image("icon" = 'monkey.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = layer)
- wear_mask.screen_loc = ui_mask
+ wear_mask.screen_loc = ui_monkey_mask
if (r_hand)
if(update_icon)
@@ -526,7 +526,7 @@
if (back)
var/t1 = back.icon_state //apparently tables make me upset and cause my dreams to shatter
overlays += image("icon" = 'back.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = layer)
- back.screen_loc = ui_back
+ back.screen_loc = ui_monkey_back
if (handcuffed && update_icon)
pulling = null
diff --git a/code/modules/mob/living/silicon/robot/hud.dm b/code/modules/mob/living/silicon/robot/hud.dm
index 8c1f6a5f3d..8d74866ccf 100644
--- a/code/modules/mob/living/silicon/robot/hud.dm
+++ b/code/modules/mob/living/silicon/robot/hud.dm
@@ -53,6 +53,7 @@
//Generic overlays
+/*
using = new src.h_type(src) //Right hud bar
using.dir = SOUTH
using.icon = 'screen1_robot.dmi'
@@ -72,7 +73,7 @@
using.icon = 'screen1_robot.dmi'
using.screen_loc = "EAST+1,SOUTH-1"
using.layer = 19
- src.adding += using
+ src.adding += using*/
//Module select
@@ -119,7 +120,7 @@
using.layer = 20
src.adding += using
action_intent = using
-
+/*
using = new src.h_type( src )
using.name = "arrowleft"
using.icon = 'screen1_robot.dmi'
@@ -136,7 +137,7 @@
using.dir = EAST
using.screen_loc = ui_iarrowright
using.layer = 19
- src.adding += using
+ src.adding += using*/
//End of Intent
//Cell
@@ -151,7 +152,7 @@
mymob.healths.icon = 'screen1_robot.dmi'
mymob.healths.icon_state = "health0"
mymob.healths.name = "health"
- mymob.healths.screen_loc = ui_health
+ mymob.healths.screen_loc = ui_borg_health
//Installed Module
mymob.hands = new /obj/screen( null )
@@ -174,7 +175,7 @@
mymob.throw_icon.icon = 'screen1_robot.dmi'
mymob.throw_icon.icon_state = "store"
mymob.throw_icon.name = "store"
- mymob.throw_icon.screen_loc = ui_hand
+ mymob.throw_icon.screen_loc = ui_borg_store
//Temp
mymob.bodytemp = new /obj/screen( null )
@@ -218,6 +219,7 @@
mymob.flash.screen_loc = "1,1 to 15,15"
mymob.flash.layer = 17
+ /*
mymob.sleep = new /obj/screen( null )
mymob.sleep.icon = 'screen1_robot.dmi'
mymob.sleep.icon_state = "sleep0"
@@ -229,6 +231,7 @@
mymob.rest.icon_state = "rest0"
mymob.rest.name = "rest"
mymob.rest.screen_loc = ui_rest
+ */
mymob.zone_sel = new /obj/screen/zone_sel( null )
@@ -239,7 +242,7 @@
mymob.client.screen = null
- mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach )
+ mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, mymob.blind, mymob.flash, mymob.gun_setting_icon) //, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += src.adding + src.other
return
diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm
index 92b960b3d8..66c5ed464a 100644
--- a/code/modules/mob/new_player/preferences.dm
+++ b/code/modules/mob/new_player/preferences.dm
@@ -102,7 +102,7 @@ datum/preferences
b_eyes = 0
//UI style
- UI = UI_NEW
+ UI = UI_OLD
//Mob preview
icon/preview_icon = null
@@ -262,7 +262,7 @@ datum/preferences
dat += "Age: [age]"
dat += "
"
- dat += "UI Style: [UI == UI_NEW ? "New" : "Old"]
"
+ //dat += "UI Style: [UI == UI_NEW ? "New" : "Old"]
" -- UI Style no longer a thing
dat += "Play admin midis: [midis == 1 ? "Yes" : "No"]
"
dat += "Ghost ears: [ghost_ears == 0 ? "Nearest Creatures" : "All Speech"]
"
dat += "Ghost sight: [ghost_sight == 0 ? "Nearest Creatures" : "All Emotes"]
"
diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm
index 1560deb972..89d5bd10d5 100644
--- a/code/modules/mob/screen.dm
+++ b/code/modules/mob/screen.dm
@@ -33,7 +33,7 @@
icon = 'zone_sel.dmi'
icon_state = "blank"
var/selecting = "chest"
- screen_loc = "EAST+1,NORTH"
+ screen_loc = ui_zonesel
/obj/screen/gun
name = "gun"
@@ -227,21 +227,71 @@
/obj/screen/grab/attackby()
return
+/obj/screen/MouseEntered(object,location,control,params)
+ if(!ishuman(usr) && !istype(usr,/mob/living/carbon/alien/humanoid) && !islarva(usr) && !ismonkey(usr))
+ return
+ switch(name)
+ /*
+ if("other")
+ if (usr.hud_used.show_otherinventory)
+ usr.hud_used.show_otherinventory = 0
+ usr.client.screen -= usr.hud_used.other
+ else
+ usr.hud_used.show_otherinventory = 1
+ usr.client.screen += usr.hud_used.other
+
+ usr.hud_used.other_update()*/
+ if("act_intent")
+ if(!usr.hud_used.show_intent_icons)
+ usr.hud_used.show_intent_icons = 1
+ usr.client.screen += usr.hud_used.intent_small_hud_objects
+ if("harm")
+ if(!usr.hud_used.show_intent_icons)
+ usr.hud_used.show_intent_icons = 1
+ usr.client.screen += usr.hud_used.intent_small_hud_objects
+ if("help")
+ if(!usr.hud_used.show_intent_icons)
+ usr.hud_used.show_intent_icons = 1
+ usr.client.screen += usr.hud_used.intent_small_hud_objects
+ if("disarm")
+ if(!usr.hud_used.show_intent_icons)
+ usr.hud_used.show_intent_icons = 1
+ usr.client.screen += usr.hud_used.intent_small_hud_objects
+ if("grab")
+ if(!usr.hud_used.show_intent_icons)
+ usr.hud_used.show_intent_icons = 1
+ usr.client.screen += usr.hud_used.intent_small_hud_objects
+
+
+/obj/screen/MouseExited(object,location,control,params)
+ if(!ishuman(usr) && !istype(usr,/mob/living/carbon/alien/humanoid) && !islarva(usr) && !ismonkey(usr))
+ return
+ switch(name)
+ if("act_intent")
+ if (usr.hud_used.show_intent_icons)
+ usr.hud_used.show_intent_icons = 0
+ usr.client.screen -= usr.hud_used.intent_small_hud_objects
+ if("harm")
+ if (usr.hud_used.show_intent_icons)
+ usr.hud_used.show_intent_icons = 0
+ usr.client.screen -= usr.hud_used.intent_small_hud_objects
+ if("help")
+ if (usr.hud_used.show_intent_icons)
+ usr.hud_used.show_intent_icons = 0
+ usr.client.screen -= usr.hud_used.intent_small_hud_objects
+ if("disarm")
+ if (usr.hud_used.show_intent_icons)
+ usr.hud_used.show_intent_icons = 0
+ usr.client.screen -= usr.hud_used.intent_small_hud_objects
+ if("grab")
+ if (usr.hud_used.show_intent_icons)
+ usr.hud_used.show_intent_icons = 0
+ usr.client.screen -= usr.hud_used.intent_small_hud_objects
+
/obj/screen/Click(location, control, params)
-
- var/list/pa = params2list(params)
-
switch(name)
if("map")
-
usr.clearmap()
- if("maprefresh")
- var/obj/machinery/computer/security/seccomp = usr.machine
-
- if(seccomp!=null)
- seccomp.drawmap(usr)
- else
- usr.clearmap()
if("other")
if (usr.hud_used.show_otherinventory)
@@ -253,36 +303,13 @@
usr.hud_used.other_update()
+ if("maprefresh")
+ var/obj/machinery/computer/security/seccomp = usr.machine
- if("act_intent")
- if(pa.Find("left"))
- switch(usr.a_intent)
- if("help")
- usr.a_intent = "disarm"
- usr.hud_used.action_intent.icon_state = "disarm"
- if("disarm")
- usr.a_intent = "hurt"
- usr.hud_used.action_intent.icon_state = "harm"
- if("hurt")
- usr.a_intent = "grab"
- usr.hud_used.action_intent.icon_state = "grab"
- if("grab")
- usr.a_intent = "help"
- usr.hud_used.action_intent.icon_state = "help"
+ if(seccomp!=null)
+ seccomp.drawmap(usr)
else
- switch(usr.a_intent)
- if("help")
- usr.a_intent = "grab"
- usr.hud_used.action_intent.icon_state = "grab"
- if("disarm")
- usr.a_intent = "help"
- usr.hud_used.action_intent.icon_state = "help"
- if("hurt")
- usr.a_intent = "disarm"
- usr.hud_used.action_intent.icon_state = "disarm"
- if("grab")
- usr.a_intent = "hurt"
- usr.hud_used.action_intent.icon_state = "harm"
+ usr.clearmap()
if("arrowleft")
switch(usr.a_intent)
@@ -344,20 +371,6 @@
if("walk")
usr.m_intent = "run"
usr.hud_used.move_intent.icon_state = "running"
-
- if("intent")
- if (!( usr.intent ))
- switch(usr.a_intent)
- if("help")
- usr.intent = "13,15"
- if("disarm")
- usr.intent = "14,15"
- if("hurt")
- usr.intent = "15,15"
- if("grab")
- usr.intent = "12,15"
- else
- usr.intent = null
if("m_intent")
if (!( usr.m_int ))
switch(usr.m_intent)
@@ -378,20 +391,6 @@
if("run")
usr.m_intent = "run"
usr.m_int = "13,14"
- if("hurt")
- usr.a_intent = "hurt"
- usr.intent = "15,15"
- if("grab")
- usr.a_intent = "grab"
- usr.intent = "12,15"
- if("disarm")
- if (istype(usr, /mob/living/carbon/human))
- var/mob/M = usr
- M.a_intent = "disarm"
- M.intent = "14,15"
- if("help")
- usr.a_intent = "help"
- usr.intent = "13,15"
if("Reset Machine")
usr.machine = null
if("internal")
@@ -435,18 +434,43 @@
usr.internals.icon_state = "internal1"
else
usr << "\blue You don't have an oxygen tank."
+ if("act_intent")
+ if(ishuman(usr) || istype(usr,/mob/living/carbon/alien/humanoid) || islarva(usr))
+ if (usr.hud_used.show_intent_icons)
+ usr.hud_used.show_intent_icons = 0
+ usr.client.screen -= usr.hud_used.intent_small_hud_objects
+ else
+ usr.hud_used.show_intent_icons = 1
+ usr.client.screen += usr.hud_used.intent_small_hud_objects
+ if(issilicon(usr))
+ if(usr.a_intent == "help")
+ usr.a_intent = "hurt"
+ usr.hud_used.action_intent.icon_state = "harm"
+ else
+ usr.a_intent = "help"
+ usr.hud_used.action_intent.icon_state = "help"
+ if("help")
+ usr.a_intent = "help"
+ usr.hud_used.action_intent.icon_state = "help"
+ usr.hud_used.show_intent_icons = 0
+ usr.client.screen -= usr.hud_used.intent_small_hud_objects
+ if("harm")
+ usr.a_intent = "hurt"
+ usr.hud_used.action_intent.icon_state = "harm"
+ usr.hud_used.show_intent_icons = 0
+ usr.client.screen -= usr.hud_used.intent_small_hud_objects
+ if("grab")
+ usr.a_intent = "grab"
+ usr.hud_used.action_intent.icon_state = "grab"
+ usr.hud_used.show_intent_icons = 0
+ usr.client.screen -= usr.hud_used.intent_small_hud_objects
+ if("disarm")
+ usr.a_intent = "disarm"
+ usr.hud_used.action_intent.icon_state = "disarm"
+ usr.hud_used.show_intent_icons = 0
+ usr.client.screen -= usr.hud_used.intent_small_hud_objects
if("pull")
usr.pulling = null
- if("sleep")
- if(usr.sleeping && usr.sleeping_willingly)
- usr.sleeping = 0
- usr.sleeping_willingly = 0
- else if(!usr.sleeping)
- usr.sleeping = 20 //Short nap
- usr.sleeping_willingly = 1
- if("rest")
- usr.resting = !( usr.resting )
- //kavala2
if("throw")
if (!usr.stat && isturf(usr.loc) && !usr.restrained())
usr:toggle_throw_mode()
@@ -456,135 +480,14 @@
usr:swap_hand()
if("hand")
usr:swap_hand()
- if("resist")
- if(usr.next_move > world.time)
- return
- usr.next_move = world.time + 20
- if ((!( usr.stat ) && usr.canmove && !( usr.restrained() )))
- var/resisting = 0
- for(var/obj/O in usr.requests)
- del(O)
- resisting++
- for(var/obj/item/weapon/grab/G in usr.grabbed_by)
- resisting++
- if (G.state == 1)
- del(G)
- else
- if (G.state == 2)
- if (prob(25))
- for(var/mob/O in viewers(usr, null))
- O.show_message(text("\red [] has broken free of []'s grip!", usr, G.assailant), 1)
- del(G)
- else
- if (G.state == 3)
- if (prob(5))
- for(var/mob/O in viewers(usr, null))
- O.show_message(text("\red [] has broken free of []'s headlock!", usr, G.assailant), 1)
- del(G)
- if(resisting)
- for(var/mob/O in viewers(usr, null))
- O.show_message(text("\red [] resists!", usr), 1)
- if(usr:handcuffed && usr:canmove && (usr.last_special <= world.time))
- var/breakouttime = 1200
- var/displaytime = 2
- if(!usr:canmove)
- breakouttime = 2400
- displaytime = 4
- usr.next_move = world.time + 100
- usr.last_special = world.time + 100
- if(isalienadult(usr) || usr.mutations & HULK)//Don't want to do a lot of logic gating here.
- usr << "\green You attempt to break \the [usr:handcuffed]. (This will take around 5 seconds and you need to stand still)"
- for(var/mob/O in viewers(usr))
- O.show_message(text("\red [] is trying to break \the [usr:handcuffed]!", usr), 1)
- spawn(0)
- if(do_after(usr, 50))
- if(!usr:handcuffed || usr:buckled)
- return
- for(var/mob/O in viewers(usr))
- O.show_message(text("\red [] manages to break \the [usr:handcuffed]!", usr), 1)
- usr << "\green You successfully break \the [usr:handcuffed]."
- del(usr:handcuffed)
- usr:handcuffed = null
- else
- if(istype(usr:handcuffed, /obj/item/weapon/handcuffs/cable))
- breakouttime = 300
- displaytime = 0.5
- usr << "\red You attempt to remove \the [usr:handcuffed]. (This will take around [displaytime] minutes and you need to stand still)"
- for(var/mob/O in viewers(usr))
- O.show_message(text("\red [] attempts to remove \the [usr:handcuffed]!", usr), 1)
- spawn(0)
- var/increment = 150
- for(var/i = 0, i < breakouttime, i += increment)
- if(!do_after(usr, increment))
- return
-
- else
- usr << pick("You hear something click, but it doesn't open yet.", // - Uristqwerty
- "The latch resists!", // - IRC: BowlSoldier
- "The chain is starting to give!", // - IRC: BowlSoldier
- "The chain bends a little.", // - IRC: STALKER
- "Your wrist hurts.", // - IRC: STALKER
- "Unnng", // - IRC: Doug_H_Nuts
- "The chain jangles a bit.", // - SkyMarshal
- "\red Hurry up, dammit!", // - SkyMarshal
- "This is exhausting!") // - SkyMarshal
- for(var/mob/O in viewers(usr))
- if(prob(50)) //Reduces spam slightly
- O.show_message(text("\red [] continues to struggle in \the [usr:handcuffed]!", usr), 1)
- if(!usr:handcuffed) return
- for(var/mob/O in viewers(usr))
- O.show_message(text("\red [] manages to remove \the [usr:handcuffed]!", usr), 1)
- usr << "\blue You successfully remove \the [usr:handcuffed]."
- usr:handcuffed:loc = usr:loc
- usr:handcuffed = null
- usr.update_clothing()
-
- if(istype(usr, /mob/living/carbon/human) && istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket) && usr:canmove && (usr.last_special <= world.time))
- usr.next_move = world.time + 200
- usr.last_special = world.time + 200
- if(isalienadult(usr) || usr.mutations & HULK)//Don't want to do a lot of logic gating here.
- usr << "\green You attempt to break out of your straight jacket. (This will take around 5 seconds and you need to stand still)"
- for(var/mob/O in viewers(usr))
- O.show_message(text("\red [] is trying to break out of \his straight jacket!", usr), 1)
- spawn(0)
- if(do_after(usr, 50))
- if(!istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket)) return
- for(var/mob/O in viewers(usr))
- O.show_message(text("\red [] manages to break out of the straight jacket!", usr), 1)
- usr << "\green You successfully break out of your straight jacket."
- var/obj/sj = usr:wear_suit
- usr.remove_from_mob(sj)
- sj.loc = usr.loc
- else
- usr << "\red You attempt to get out of your straight jacket. (This will take around 4 minutes and you need to stand still)"
- for(var/mob/O in viewers(usr))
- O.show_message(text("\red [] attempts to get out \his straight jacket!", usr), 1)
- spawn(0)
- if(do_after(usr, 1200))
- if(!istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket)) return
- for(var/mob/O in viewers(usr))
- O.show_message(text("\red [] manages to wriggle out of the straight jacket!", usr), 1)
- usr << "\blue You successfully get out of your straight jacket."
- var/obj/sj = usr:wear_suit
- usr.remove_from_mob(sj)
- sj.loc = usr.loc
-
- if(usr:handcuffed && (usr.last_special <= world.time) && usr:buckled)
- usr.next_move = world.time + 100
- usr.last_special = world.time + 100
- usr << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)"
- for(var/mob/O in viewers(usr))
- O.show_message(text("\red [] attempts to unbuckle themself!", usr), 1)
- spawn(0)
- if(do_after(usr, 1200))
- if(!usr:buckled)
- return
- for(var/mob/O in viewers(usr))
- O.show_message(text("\red [] manages to unbuckle themself!", usr), 1)
- usr << "\blue You successfully unbuckle yourself."
- usr:buckled.manual_unbuckle(usr)
-
-
+ if("r_hand")
+ if(iscarbon(usr))
+ var/mob/living/carbon/C = usr
+ C.activate_hand("r")
+ if("l_hand")
+ if(iscarbon(usr))
+ var/mob/living/carbon/C = usr
+ C.activate_hand("l")
if("module")
if(issilicon(usr))
if(usr:module)
@@ -704,3 +607,152 @@
/obj/screen/attack_paw(mob/user as mob, using)
user.db_click(name, using)
return
+
+
+/mob/living/verb/mob_sleep()
+ set name = "Sleep"
+ set category = "IC"
+
+ if(usr.sleeping && usr.sleeping_willingly)
+ usr.sleeping = 0
+ usr.sleeping_willingly = 0
+ else if(!usr.sleeping)
+ usr.sleeping = 20 //Short nap
+ usr.sleeping_willingly = 1
+
+/mob/living/verb/lay_down()
+ set name = "Lay down / Get up"
+ set category = "IC"
+
+ usr.resting = !( usr.resting )
+ usr << "\blue You are now [(usr.resting) ? "resting" : "getting up"]"
+
+/mob/living/verb/resist()
+ set name = "Resist"
+ set category = "IC"
+
+ if(usr.next_move > world.time)
+ return
+ usr.next_move = world.time + 20
+ if ((!( usr.stat ) && usr.canmove && !( usr.restrained() )))
+ var/resisting = 0
+ for(var/obj/O in usr.requests)
+ del(O)
+ resisting++
+ for(var/obj/item/weapon/grab/G in usr.grabbed_by)
+ resisting++
+ if (G.state == 1)
+ del(G)
+ else
+ if (G.state == 2)
+ if (prob(25))
+ for(var/mob/O in viewers(usr, null))
+ O.show_message(text("\red [] has broken free of []'s grip!", usr, G.assailant), 1)
+ del(G)
+ else
+ if (G.state == 3)
+ if (prob(5))
+ for(var/mob/O in viewers(usr, null))
+ O.show_message(text("\red [] has broken free of []'s headlock!", usr, G.assailant), 1)
+ del(G)
+ if(resisting)
+ for(var/mob/O in viewers(usr, null))
+ O.show_message(text("\red [] resists!", usr), 1)
+ if(usr:handcuffed && usr:canmove && (usr.last_special <= world.time))
+ var/breakouttime = 1200
+ var/displaytime = 2
+ if(!usr:canmove)
+ breakouttime = 2400
+ displaytime = 4
+ usr.next_move = world.time + 100
+ usr.last_special = world.time + 100
+ if(isalienadult(usr) || usr.mutations & HULK)//Don't want to do a lot of logic gating here.
+ usr << "\green You attempt to break \the [usr:handcuffed]. (This will take around 5 seconds and you need to stand still)"
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] is trying to break \the [usr:handcuffed]!", usr), 1)
+ spawn(0)
+ if(do_after(usr, 50))
+ if(!usr:handcuffed || usr:buckled)
+ return
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] manages to break \the [usr:handcuffed]!", usr), 1)
+ usr << "\green You successfully break \the [usr:handcuffed]."
+ del(usr:handcuffed)
+ usr:handcuffed = null
+ else
+ if(istype(usr:handcuffed, /obj/item/weapon/handcuffs/cable))
+ breakouttime = 300
+ displaytime = 0.5
+ usr << "\red You attempt to remove \the [usr:handcuffed]. (This will take around [displaytime] minutes and you need to stand still)"
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] attempts to remove \the [usr:handcuffed]!", usr), 1)
+ spawn(0)
+ var/increment = 150
+ for(var/i = 0, i < breakouttime, i += increment)
+ if(!do_after(usr, increment))
+ return
+
+ else
+ usr << pick("You hear something click, but it doesn't open yet.", // - Uristqwerty
+ "The latch resists!", // - IRC: BowlSoldier
+ "The chain is starting to give!", // - IRC: BowlSoldier
+ "The chain bends a little.", // - IRC: STALKER
+ "Your wrist hurts.", // - IRC: STALKER
+ "Unnng", // - IRC: Doug_H_Nuts
+ "The chain jangles a bit.", // - SkyMarshal
+ "\red Hurry up, dammit!", // - SkyMarshal
+ "This is exhausting!") // - SkyMarshal
+ for(var/mob/O in viewers(usr))
+ if(prob(50)) //Reduces spam slightly
+ O.show_message(text("\red [] continues to struggle in \the [usr:handcuffed]!", usr), 1)
+ if(!usr:handcuffed) return
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] manages to remove \the [usr:handcuffed]!", usr), 1)
+ usr << "\blue You successfully remove \the [usr:handcuffed]."
+ usr:handcuffed:loc = usr:loc
+ usr:handcuffed = null
+ usr.update_clothing()
+
+ if(istype(usr, /mob/living/carbon/human) && istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket) && usr:canmove && (usr.last_special <= world.time))
+ usr.next_move = world.time + 200
+ usr.last_special = world.time + 200
+ if(isalienadult(usr) || usr.mutations & HULK)//Don't want to do a lot of logic gating here.
+ usr << "\green You attempt to break out of your straight jacket. (This will take around 5 seconds and you need to stand still)"
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] is trying to break out of \his straight jacket!", usr), 1)
+ spawn(0)
+ if(do_after(usr, 50))
+ if(!istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket)) return
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] manages to break out of the straight jacket!", usr), 1)
+ usr << "\green You successfully break out of your straight jacket."
+ var/obj/sj = usr:wear_suit
+ usr.remove_from_mob(sj)
+ sj.loc = usr.loc
+ else
+ usr << "\red You attempt to get out of your straight jacket. (This will take around 4 minutes and you need to stand still)"
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] attempts to get out \his straight jacket!", usr), 1)
+ spawn(0)
+ if(do_after(usr, 1200))
+ if(!istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket)) return
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] manages to wriggle out of the straight jacket!", usr), 1)
+ usr << "\blue You successfully get out of your straight jacket."
+ var/obj/sj = usr:wear_suit
+ usr.remove_from_mob(sj)
+ sj.loc = usr.loc
+ if(usr:handcuffed && (usr.last_special <= world.time) && usr:buckled)
+ usr.next_move = world.time + 100
+ usr.last_special = world.time + 100
+ usr << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)"
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] attempts to unbuckle themself!", usr), 1)
+ spawn(0)
+ if(do_after(usr, 1200))
+ if(!usr:buckled)
+ return
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] manages to unbuckle themself!", usr), 1)
+ usr << "\blue You successfully unbuckle yourself."
+ usr:buckled.manual_unbuckle(usr)
\ No newline at end of file
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index d2abc52d7b..c4a70baa1d 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -514,7 +514,7 @@ client/verb
usr.gun_move_icon.name = "Disallow Walking"
else
// winset(usr,"default.target_can_move","is-flat=false;border=none")
- usr << "Target may no longer move."
+ usr << "Target may no longegr move."
target_can_run = 0
del(usr.gun_run_icon)
if(usr.gun_move_icon)
@@ -529,7 +529,8 @@ client/verb
if(!target_can_run)
M << "\red Your move intent is now set to walk, as your targeter permits it."
M.m_intent = "walk"
- M.hud_used.move_intent.icon_state = "walking"
+ if(M.hud_used.move_intent)
+ M.hud_used.move_intent.icon_state = "walking"
else
M << "\red Your character will now be shot if they move."
AllowTargetRun()
diff --git a/icons/mob/screen1.dmi b/icons/mob/screen1.dmi
index 30feeb2818..1b935639a4 100644
Binary files a/icons/mob/screen1.dmi and b/icons/mob/screen1.dmi differ
diff --git a/icons/mob/screen1_alien.dmi b/icons/mob/screen1_alien.dmi
index 188d9f16d0..be825eee1e 100644
Binary files a/icons/mob/screen1_alien.dmi and b/icons/mob/screen1_alien.dmi differ
diff --git a/icons/mob/screen1_old.dmi b/icons/mob/screen1_old.dmi
index dd390f6caf..c8d7e48afe 100644
Binary files a/icons/mob/screen1_old.dmi and b/icons/mob/screen1_old.dmi differ