diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm
index 24b233a4b41..485bbd58b0e 100644
--- a/code/game/machinery/PDApainter.dm
+++ b/code/game/machinery/PDApainter.dm
@@ -61,7 +61,8 @@
/obj/machinery/pdapainter/attack_hand(mob/user as mob)
- ..()
+ if(..())
+ return 1
src.add_fingerprint(user)
@@ -84,6 +85,9 @@
set name = "Eject PDA"
set category = "Object"
set src in oview(1)
+
+ if(usr.incapacitated())
+ return
if(storedpda)
storedpda.loc = get_turf(src.loc)
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index e213c555c43..7f02a93bd38 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -22,7 +22,7 @@
..()
spawn(1)
if(!opened) // if closed, any item at the crate's loc is put in the contents
- for(var/obj/item/I in src.loc)
+ for(var/obj/item/I in loc)
if(I.density || I.anchored || I == src) continue
I.forceMove(src)
@@ -39,7 +39,7 @@
return (!density)
/obj/structure/closet/proc/can_open()
- if(src.welded)
+ if(welded)
return 0
return 1
@@ -59,46 +59,46 @@
throwing = 0
/obj/structure/closet/proc/open()
- if(src.opened)
+ if(opened)
return 0
- if(!src.can_open())
+ if(!can_open())
return 0
- src.dump_contents()
+ dump_contents()
- src.icon_state = src.icon_opened
- src.opened = 1
+ icon_state = icon_opened
+ opened = 1
if(sound)
- playsound(src.loc, src.sound, 15, 1, -3)
+ playsound(loc, sound, 15, 1, -3)
else
- playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3)
+ playsound(loc, 'sound/machines/click.ogg', 15, 1, -3)
density = 0
return 1
/obj/structure/closet/proc/close()
- if(!src.opened)
+ if(!opened)
return 0
- if(!src.can_close())
+ if(!can_close())
return 0
var/itemcount = 0
//Cham Projector Exception
- for(var/obj/effect/dummy/chameleon/AD in src.loc)
+ for(var/obj/effect/dummy/chameleon/AD in loc)
if(itemcount >= storage_capacity)
break
AD.forceMove(src)
itemcount++
- for(var/obj/item/I in src.loc)
+ for(var/obj/item/I in loc)
if(itemcount >= storage_capacity)
break
if(!I.anchored)
I.forceMove(src)
itemcount++
- for(var/mob/M in src.loc)
+ for(var/mob/M in loc)
if(itemcount >= storage_capacity)
break
if(istype (M, /mob/dead/observer))
@@ -109,37 +109,37 @@
M.forceMove(src)
itemcount++
- src.icon_state = src.icon_closed
- src.opened = 0
+ icon_state = icon_closed
+ opened = 0
if(sound)
- playsound(src.loc, src.sound, 15, 1, -3)
+ playsound(loc, sound, 15, 1, -3)
else
- playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3)
+ playsound(loc, 'sound/machines/click.ogg', 15, 1, -3)
density = 1
return 1
-/obj/structure/closet/proc/toggle(mob/user as mob)
- if(!(src.opened ? src.close() : src.open()))
+/obj/structure/closet/proc/toggle(mob/user)
+ if(!(opened ? close() : open()))
to_chat(user, "It won't budge!")
// this should probably use dump_contents()
/obj/structure/closet/ex_act(severity)
switch(severity)
if(1)
- for(var/atom/movable/A as mob|obj in src)//pulls everything out of the locker and hits it with an explosion
- A.forceMove(src.loc)
+ for(var/atom/movable/A in src)//pulls everything out of the locker and hits it with an explosion
+ A.forceMove(loc)
A.ex_act(severity++)
qdel(src)
if(2)
if(prob(50))
- for(var/atom/movable/A as mob|obj in src)
+ for(var/atom/movable/A in src)
A.forceMove(loc)
A.ex_act(severity++)
new /obj/item/stack/sheet/metal(loc)
qdel(src)
if(3)
if(prob(5))
- for(var/atom/movable/A as mob|obj in src)
+ for(var/atom/movable/A in src)
A.forceMove(loc)
A.ex_act(severity++)
new /obj/item/stack/sheet/metal(loc)
@@ -150,32 +150,32 @@
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
health -= Proj.damage
if(health <= 0)
- for(var/atom/movable/A as mob|obj in src)
+ for(var/atom/movable/A in src)
A.forceMove(loc)
qdel(src)
-/obj/structure/closet/attack_animal(mob/living/simple_animal/user as mob)
+/obj/structure/closet/attack_animal(mob/living/simple_animal/user)
if(user.environment_smash)
user.do_attack_animation(src)
visible_message("\red [user] destroys the [src]. ")
- for(var/atom/movable/A as mob|obj in src)
+ for(var/atom/movable/A in src)
A.forceMove(loc)
qdel(src)
// this should probably use dump_contents()
/obj/structure/closet/blob_act()
if(prob(75))
- for(var/atom/movable/A as mob|obj in src)
+ for(var/atom/movable/A in src)
A.forceMove(loc)
qdel(src)
-/obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
- if(istype(W, /obj/item/weapon/rcs) && !src.opened)
+/obj/structure/closet/attackby(obj/item/weapon/W, mob/user, params)
+ if(istype(W, /obj/item/weapon/rcs) && !opened)
if(user in contents) //to prevent self-teleporting.
return
var/obj/item/weapon/rcs/E = W
if(E.rcell && (E.rcell.charge >= E.chargecost))
- if(!is_level_reachable(src.z))
+ if(!is_level_reachable(z))
to_chat(user, "The rapid-crate-sender can't locate any telepads!")
return
if(E.mode == 0)
@@ -194,7 +194,7 @@
var/desc = input("Please select a telepad.", "RCS") in L
E.pad = L[desc]
playsound(E.loc, 'sound/machines/click.ogg', 50, 1)
- to_chat(user, "\blue Teleporting [src.name]...")
+ to_chat(user, "\blue Teleporting [name]...")
E.teleporting = 1
if(!do_after(user, 50, target = src))
E.teleporting = 0
@@ -216,7 +216,7 @@
E.rand_y = rand(50,200)
var/L = locate(E.rand_x, E.rand_y, 6)
playsound(E.loc, 'sound/machines/click.ogg', 50, 1)
- to_chat(user, "\blue Teleporting [src.name]...")
+ to_chat(user, "\blue Teleporting [name]...")
E.teleporting = 1
if(!do_after(user, 50, target = src))
E.teleporting = 0
@@ -237,9 +237,9 @@
to_chat(user, "Out of charges.")
return
- if(src.opened)
+ if(opened)
if(istype(W, /obj/item/weapon/grab))
- src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
+ MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
if(istype(W,/obj/item/tk_grab))
return 0
if(istype(W, cutting_tool))
@@ -276,14 +276,14 @@
if(!WT.remove_fuel(0,user))
to_chat(user, "You need more welding fuel to complete this task.")
return
- src.welded = !src.welded
- src.update_icon()
+ welded = !welded
+ update_icon()
for(var/mob/M in viewers(src))
M.show_message("[src] has been [welded?"welded shut":"unwelded"] by [user.name].", 3, "You hear welding.", 2)
else
- src.attack_hand(user)
+ attack_hand(user)
-/obj/structure/closet/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
+/obj/structure/closet/MouseDrop_T(atom/movable/O, mob/user)
..()
if(istype(O, /obj/screen)) //fix for HUD elements making their way into the world -Pete
return
@@ -297,24 +297,24 @@
return
if(!istype(user.loc, /turf)) // are you in a container/closet/pod/etc?
return
- if(!src.opened)
+ if(!opened)
return
if(istype(O, /obj/structure/closet))
return
- step_towards(O, src.loc)
+ step_towards(O, loc)
if(user != O)
user.visible_message("[user] stuffs [O] into [src]!", "You stuff [O] into [src]!")
- src.add_fingerprint(user)
+ add_fingerprint(user)
/obj/structure/closet/attack_ai(mob/user)
- if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) //Robots can open/close it, but not the AI
+ if(isrobot(user) && Adjacent(user)) //Robots can open/close it, but not the AI
attack_hand(user)
-/obj/structure/closet/relaymove(mob/user as mob)
- if(user.stat || !isturf(src.loc))
+/obj/structure/closet/relaymove(mob/user)
+ if(user.stat || !isturf(loc))
return
- if(!src.open())
+ if(!open())
to_chat(user, "It won't budge!")
if(!lastbang)
lastbang = 1
@@ -323,14 +323,18 @@
spawn(30)
lastbang = 0
-/obj/structure/closet/attack_hand(mob/user as mob)
- src.add_fingerprint(user)
- src.toggle(user)
+/obj/structure/closet/attack_hand(mob/user)
+ add_fingerprint(user)
+ toggle(user)
+
+/obj/structure/closet/attack_ghost(mob/user)
+ if(user.can_advanced_admin_interact())
+ toggle(user)
// tk grab then use on self
-/obj/structure/closet/attack_self_tk(mob/user as mob)
- src.add_fingerprint(user)
- if(!src.toggle())
+/obj/structure/closet/attack_self_tk(mob/user)
+ add_fingerprint(user)
+ if(!toggle())
to_chat(usr, "It won't budge!")
/obj/structure/closet/verb/verb_toggleopen()
@@ -338,12 +342,12 @@
set category = null
set name = "Toggle Open"
- if(!usr.canmove || usr.stat || usr.restrained())
+ if(usr.incapacitated())
return
if(ishuman(usr))
- src.add_fingerprint(usr)
- src.toggle(usr)
+ add_fingerprint(usr)
+ toggle(usr)
else
to_chat(usr, "This mob type can't use this verb.")
@@ -399,8 +403,8 @@
to_chat(usr, "You successfully break out!")
for(var/mob/O in viewers(L.loc))
O.show_message("\the [usr] successfully broke out of \the [src]!", 1)
- if(istype(src.loc, /obj/structure/bigDelivery)) //nullspace ect.. read the comment above
- var/obj/structure/bigDelivery/BD = src.loc
+ if(istype(loc, /obj/structure/bigDelivery)) //nullspace ect.. read the comment above
+ var/obj/structure/bigDelivery/BD = loc
BD.attack_hand(usr)
open()
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index db589c027e6..cf7c2eec052 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -19,14 +19,14 @@
/obj/structure/closet/secure_closet/can_open()
if(!..())
return 0
- if(src.locked)
+ if(locked)
return 0
return ..()
/obj/structure/closet/secure_closet/close()
if(..())
if(broken)
- icon_state = src.icon_off
+ icon_state = icon_off
return 1
else
return 0
@@ -36,29 +36,29 @@
O.emp_act(severity)
if(!broken)
if(prob(50/severity))
- src.locked = !src.locked
- src.update_icon()
+ locked = !locked
+ update_icon()
if(prob(20/severity) && !opened)
if(!locked)
open()
else
- src.req_access = list()
- src.req_access += pick(get_all_accesses())
+ req_access = list()
+ req_access += pick(get_all_accesses())
..()
-/obj/structure/closet/secure_closet/proc/togglelock(mob/user as mob)
- if(src.opened)
+/obj/structure/closet/secure_closet/proc/togglelock(mob/user)
+ if(opened)
to_chat(user, "Close the locker first.")
return
- if(src.broken)
+ if(broken)
to_chat(user, "The locker appears to be broken.")
return
if(user.loc == src)
to_chat(user, "You can't reach the lock from inside.")
return
- if(src.allowed(user))
- src.locked = !src.locked
- playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3)
+ if(allowed(user))
+ locked = !locked
+ playsound(loc, 'sound/machines/click.ogg', 15, 1, -3)
for(var/mob/O in viewers(user, 3))
if((O.client && !( O.blinded )))
to_chat(O, "The locker has been [locked ? null : "un"]locked by [user].")
@@ -66,14 +66,14 @@
else
to_chat(user, "Access Denied")
-/obj/structure/closet/secure_closet/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+/obj/structure/closet/secure_closet/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/rcs))
return ..()
- if(src.opened)
+ if(opened)
if(istype(W, /obj/item/weapon/grab))
- if(src.large)
- src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
+ if(large)
+ MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
else
to_chat(user, "The locker is too small to stuff [W:affecting] into!")
if(isrobot(user))
@@ -88,7 +88,7 @@
else
togglelock(user)
-/obj/structure/closet/secure_closet/emag_act(user as mob)
+/obj/structure/closet/secure_closet/emag_act(mob/user)
if(!broken)
broken = 1
locked = 0
@@ -97,24 +97,24 @@
flick(icon_broken, src)
to_chat(user, "You unlock \the [src].")
-/obj/structure/closet/secure_closet/attack_hand(mob/user as mob)
- src.add_fingerprint(user)
- if(src.locked)
- src.togglelock(user)
+/obj/structure/closet/secure_closet/attack_hand(mob/user)
+ add_fingerprint(user)
+ if(locked)
+ togglelock(user)
else
- src.toggle(user)
+ toggle(user)
/obj/structure/closet/secure_closet/verb/verb_togglelock()
set src in oview(1) // One square distance
set category = "Object"
set name = "Toggle Lock"
- if(!usr.canmove || usr.stat || usr.restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain
+ if(usr.incapacitated()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain
return
if(ishuman(usr))
- src.add_fingerprint(usr)
- src.togglelock(usr)
+ add_fingerprint(usr)
+ togglelock(usr)
else
to_chat(usr, "This mob type can't use this verb.")
@@ -170,7 +170,7 @@
to_chat(usr, "\red You successfully break out!")
for(var/mob/O in viewers(L.loc))
O.show_message("\the [usr] successfully broke out of \the [src]!", 1)
- if(istype(src.loc, /obj/structure/bigDelivery)) //Do this to prevent contents from being opened into nullspace (read: bluespace)
- var/obj/structure/bigDelivery/BD = src.loc
+ if(istype(loc, /obj/structure/bigDelivery)) //Do this to prevent contents from being opened into nullspace (read: bluespace)
+ var/obj/structure/bigDelivery/BD = loc
BD.attack_hand(usr)
open()
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 23f5330e48a..7368c98c60f 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -80,7 +80,7 @@
src.opened = 0
return 1
-/obj/structure/closet/crate/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+/obj/structure/closet/crate/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/rcs) && !src.opened)
var/obj/item/weapon/rcs/E = W
if(E.rcell && (E.rcell.charge >= E.chargecost))
@@ -191,7 +191,7 @@
else
return
-/obj/structure/closet/crate/attack_hand(mob/user as mob)
+/obj/structure/closet/crate/attack_hand(mob/user)
if(manifest)
to_chat(user, "You tear the manifest off of the crate.")
playsound(src.loc, 'sound/items/poster_ripped.ogg', 75, 1)
@@ -250,7 +250,7 @@
/obj/structure/closet/crate/secure/can_open()
return !locked
-/obj/structure/closet/crate/secure/proc/togglelock(mob/user as mob)
+/obj/structure/closet/crate/secure/proc/togglelock(mob/user)
if(src.opened)
to_chat(user, "Close the crate first.")
return
@@ -280,7 +280,7 @@
else
to_chat(usr, "This mob type can't use this verb.")
-/obj/structure/closet/crate/secure/attack_hand(mob/user as mob)
+/obj/structure/closet/crate/secure/attack_hand(mob/user)
if(manifest)
to_chat(user, "You tear the manifest off of the crate.")
playsound(src.loc, 'sound/items/poster_ripped.ogg', 75, 1)
@@ -296,7 +296,7 @@
src.toggle(user)
-/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W, mob/user, params)
if(is_type_in_list(W, list(/obj/item/stack/packageWrap, /obj/item/stack/cable_coil, /obj/item/device/radio/electropack, /obj/item/weapon/wirecutters,/obj/item/weapon/rcs)))
return ..()
if((istype(W, /obj/item/weapon/card/emag) || istype(W, /obj/item/weapon/melee/energy/blade)))
@@ -307,7 +307,7 @@
return
return ..()
-/obj/structure/closet/crate/secure/emag_act(user as mob)
+/obj/structure/closet/crate/secure/emag_act(mob/user)
if(locked)
overlays += sparks
spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface*
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index a10d5add7fb..57909ebc6d7 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -38,7 +38,14 @@
/obj/structure/falsewall/CanAtmosPass(turf/T)
return !density
+/obj/structure/falsewall/attack_ghost(mob/user)
+ if(user.can_advanced_admin_interact())
+ toggle(user)
+
/obj/structure/falsewall/attack_hand(mob/user)
+ toggle(user)
+
+/obj/structure/falsewall/proc/toggle(mob/user)
if(opening)
return
diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm
index 2f2c4e3e6f5..fb176ce9dba 100644
--- a/code/game/objects/structures/tank_dispenser.dm
+++ b/code/game/objects/structures/tank_dispenser.dm
@@ -35,6 +35,9 @@
add_fingerprint(user)
ui_interact(user)
+/obj/structure/dispenser/attack_ghost(mob/user)
+ ui_interact(user)
+
/obj/structure/dispenser/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state)
user.set_machine(src)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
@@ -83,30 +86,35 @@
if(..())
return 1
- if(href_list["oxygen"])
- if(oxygentanks > 0)
- var/obj/item/weapon/tank/oxygen/O
- if(oxytanks.len == oxygentanks)
- O = oxytanks[1]
- oxytanks.Remove(O)
- else
- O = new /obj/item/weapon/tank/oxygen(loc)
- O.forceMove(get_turf(src))
- to_chat(usr, "You take [O] out of [src].")
- oxygentanks--
- update_icon()
- if(href_list["plasma"])
- if(plasmatanks > 0)
- var/obj/item/weapon/tank/plasma/P
- if(platanks.len == plasmatanks)
- P = platanks[1]
- platanks.Remove(P)
- else
- P = new /obj/item/weapon/tank/plasma(loc)
- P.forceMove(get_turf(src))
- to_chat(usr, "You take [P] out of [src].")
- plasmatanks--
- update_icon()
-
- nanomanager.update_uis(src)
- return 1
\ No newline at end of file
+ if(Adjacent(usr))
+ usr.set_machine(src)
+ if(href_list["oxygen"])
+ if(oxygentanks > 0)
+ var/obj/item/weapon/tank/oxygen/O
+ if(oxytanks.len == oxygentanks)
+ O = oxytanks[1]
+ oxytanks.Remove(O)
+ else
+ O = new /obj/item/weapon/tank/oxygen(loc)
+ O.loc = loc
+ to_chat(usr, "You take [O] out of [src].")
+ oxygentanks--
+ update_icon()
+ if(href_list["plasma"])
+ if(plasmatanks > 0)
+ var/obj/item/weapon/tank/plasma/P
+ if(platanks.len == plasmatanks)
+ P = platanks[1]
+ platanks.Remove(P)
+ else
+ P = new /obj/item/weapon/tank/plasma(loc)
+ P.loc = loc
+ to_chat(usr, "You take [P] out of [src].")
+ plasmatanks--
+ update_icon()
+ add_fingerprint(usr)
+ updateUsrDialog()
+ nanomanager.update_uis(src)
+ else
+ nanomanager.close_user_uis(usr,src)
+ return 1
diff --git a/code/modules/computer3/lapvend.dm b/code/modules/computer3/lapvend.dm
index 0eb665f70b2..e77298dc35e 100644
--- a/code/modules/computer3/lapvend.dm
+++ b/code/modules/computer3/lapvend.dm
@@ -61,7 +61,15 @@
..()
-/obj/machinery/lapvend/attack_hand(mob/user as mob)
+/obj/machinery/lapvend/attack_hand(mob/user)
+ if(..())
+ return 1
+ interact(user)
+
+/obj/machinery/lapvend/attack_ghost(mob/user)
+ interact(user)
+
+/obj/machinery/lapvend/interact(mob/user)
user.set_machine(src)
var/vendorname = (src.name) //import the machine's name
var/dat = "[vendorname]
" //display the name, and added a horizontal rule
@@ -133,8 +141,10 @@
/obj/machinery/lapvend/Topic(href, href_list)
- if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))))
- usr.set_machine(src)
+ if(..())
+ return 1
+
+ usr.set_machine(src)
switch(href_list["choice"])
if("single_add")
cardreader = 1
diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm
index 621e2cc80cd..c9365c57da4 100644
--- a/code/modules/mining/equipment_locker.dm
+++ b/code/modules/mining/equipment_locker.dm
@@ -143,10 +143,13 @@
qdel(O)//No refined type? Purge it.
return
-/obj/machinery/mineral/ore_redemption/attack_hand(user as mob)
+/obj/machinery/mineral/ore_redemption/attack_hand(mob/user)
if(..())
return
interact(user)
+
+/obj/machinery/mineral/ore_redemption/attack_ghost(mob/user)
+ interact(user)
/obj/machinery/mineral/ore_redemption/interact(mob/user)
user.set_machine(src)
@@ -198,7 +201,8 @@
/obj/machinery/mineral/ore_redemption/Topic(href, href_list)
if(..())
- return
+ return 1
+
if(href_list["choice"])
if(istype(inserted_id))
if(href_list["choice"] == "eject")
@@ -215,11 +219,12 @@
var/obj/item/weapon/card/id/I = usr.get_active_hand()
if(istype(I))
if(!usr.drop_item())
- return
+ return 1
I.loc = src
inserted_id = I
else
to_chat(usr, "No valid ID.")
+
if(href_list["release"])
if(check_access(inserted_id) || allowed(usr)) //Check the ID inside, otherwise check the user.
if(!(text2path(href_list["release"]) in stack_list)) return
@@ -234,6 +239,7 @@
stack_list -= text2path(href_list["release"])
else
to_chat(usr, "Required access not found.")
+
if(href_list["plasteel"])
if(check_access(inserted_id) || allowed(usr))
if(!(/obj/item/stack/sheet/metal in stack_list)) return
@@ -250,6 +256,7 @@
unload_mineral(plasteelout)
else
to_chat(usr, "Required access not found.")
+
if(href_list["plasglass"])
if(check_access(inserted_id) || allowed(usr))
if(!(/obj/item/stack/sheet/glass in stack_list)) return
@@ -267,7 +274,6 @@
else
to_chat(usr, "Required access not found.")
updateUsrDialog()
- return
/obj/machinery/mineral/ore_redemption/ex_act(severity, target)
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
@@ -387,12 +393,14 @@
icon_state = initial(icon_state)
else
icon_state = "[initial(icon_state)]-off"
- return
-/obj/machinery/mineral/equipment_vendor/attack_hand(user as mob)
+/obj/machinery/mineral/equipment_vendor/attack_hand(mob/user)
if(..())
return
interact(user)
+
+/obj/machinery/mineral/equipment_vendor/attack_ghost(mob/user)
+ interact(user)
/obj/machinery/mineral/equipment_vendor/interact(mob/user)
user.set_machine(src)
@@ -411,11 +419,11 @@
var/datum/browser/popup = new(user, "miningvendor", "Mining Equipment Vendor", 400, 350)
popup.set_content(dat)
popup.open()
- return
/obj/machinery/mineral/equipment_vendor/Topic(href, href_list)
if(..())
- return
+ return 1
+
if(href_list["choice"])
if(istype(inserted_id))
if(href_list["choice"] == "eject")
@@ -431,19 +439,18 @@
inserted_id = I
else
to_chat(usr, "No valid ID.")
+
if(href_list["purchase"])
if(istype(inserted_id))
var/datum/data/mining_equipment/prize = locate(href_list["purchase"])
- if(!prize || !(prize in prize_list))
+ if(!prize || !(prize in prize_list) || prize.cost > inserted_id.mining_points)
return
- if(prize.cost > inserted_id.mining_points)
- else
- inserted_id.mining_points -= prize.cost
- new prize.equipment_path(src.loc)
- updateUsrDialog()
- return
-/obj/machinery/mineral/equipment_vendor/attackby(obj/item/I as obj, mob/user as mob, params)
+ inserted_id.mining_points -= prize.cost
+ new prize.equipment_path(src.loc)
+ updateUsrDialog()
+
+/obj/machinery/mineral/equipment_vendor/attackby(obj/item/I, mob/user, params)
if(default_deconstruction_screwdriver(user, "mining-open", "mining", I))
updateUsrDialog()
return
@@ -514,7 +521,7 @@
icon_state = "data"
var/points = 500
-/obj/item/weapon/card/mining_point_card/attackby(obj/item/I as obj, mob/user as mob, params)
+/obj/item/weapon/card/mining_point_card/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/card/id))
if(points)
var/obj/item/weapon/card/id/C = I
@@ -543,7 +550,7 @@
throw_range = 5
origin_tech = "bluespace=2"
-/obj/item/device/wormhole_jaunter/attack_self(mob/user as mob)
+/obj/item/device/wormhole_jaunter/attack_self(mob/user)
var/turf/device_turf = get_turf(user)
if(!device_turf||is_teleport_allowed(device_turf.z))
to_chat(user, "You're having difficulties getting the [src.name] to work.")
@@ -624,7 +631,7 @@
spawn(burst_time)
fieldsactive--
-/obj/item/weapon/resonator/attack_self(mob/user as mob)
+/obj/item/weapon/resonator/attack_self(mob/user)
if(burst_time == 50)
burst_time = 30
to_chat(user, "You set the resonator's fields to detonate after 3 seconds.")
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 10bd7c3884f..1621cffbd16 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -657,6 +657,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
return TRUE
return FALSE
+
+/mob/dead/observer/incapacitated()
+ return TRUE
//this is a mob verb instead of atom for performance reasons
//see /mob/verb/examinate() in mob.dm for more info
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index 3d57f950995..2430ed122dd 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -253,9 +253,20 @@
// attack with hand, switch position
/obj/machinery/conveyor_switch/attack_hand(mob/user)
- if(!allowed(user)) //this is in Para but not TG. I don't think there's any which are set anyway.
+ if(..())
+ return 1
+
+ toggle(user)
+
+/obj/machinery/conveyor_switch/attack_ghost(mob/user)
+ if(user.can_advanced_admin_interact())
+ toggle(user)
+
+/obj/machinery/conveyor_switch/proc/toggle(mob/user)
+ if(!allowed(user) && !user.can_advanced_admin_interact()) //this is in Para but not TG. I don't think there's any which are set anyway.
to_chat(user, "Access denied.")
return
+
add_fingerprint(user)
if(position == 0)
if(convdir) //is it a oneway switch
@@ -280,8 +291,7 @@
S.position = position
S.update()
CHECK_TICK
-
-
+
/obj/machinery/conveyor_switch/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/crowbar))
var/obj/item/conveyor_switch_construct/C = new/obj/item/conveyor_switch_construct(src.loc)