From 389890bb2dc6db13d2534b4930994478f1766731 Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 21 Feb 2017 13:26:18 +0100 Subject: [PATCH 1/6] Additional admin interaction additions --- .../structures/crates_lockers/closets.dm | 118 +++++++++--------- .../closets/secure/secure_closets.dm | 54 ++++---- .../structures/crates_lockers/crates.dm | 12 +- code/game/objects/structures/false_walls.dm | 7 ++ .../game/objects/structures/tank_dispenser.dm | 25 ++-- code/modules/mining/equipment_locker.dm | 45 ++++--- 6 files changed, 141 insertions(+), 120 deletions(-) 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..6b8227d69f6 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 as obj, 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..8c2cdd1c09d 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(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 8d0962857f5..29e730d12e5 100644 --- a/code/game/objects/structures/tank_dispenser.dm +++ b/code/game/objects/structures/tank_dispenser.dm @@ -17,11 +17,9 @@ /obj/structure/dispenser/plasma oxygentanks = 0 - /obj/structure/dispenser/New() update_icon() - /obj/structure/dispenser/update_icon() overlays.Cut() switch(oxygentanks) @@ -31,18 +29,23 @@ if(1 to 4) overlays += "plasma-[plasmatanks]" if(5 to INFINITY) overlays += "plasma-5" - -/obj/structure/dispenser/attack_hand(mob/user as mob) +/obj/structure/dispenser/attack_hand(mob/user) + if(..()) + return + interact(user) + +/obj/structure/dispenser/attack_ghost(mob/user) + interact(user) + +/obj/structure/dispenser/interact(mob/user) user.set_machine(src) var/dat = "[src]

" dat += "Oxygen tanks: [oxygentanks] - [oxygentanks ? "Dispense" : "empty"]
" dat += "Plasma tanks: [plasmatanks] - [plasmatanks ? "Dispense" : "empty"]" user << browse(dat, "window=dispenser") onclose(user, "dispenser") - return - -/obj/structure/dispenser/attackby(obj/item/I as obj, mob/user as mob, params) +/obj/structure/dispenser/attackby(obj/item/I as obj, mob/user, params) if(istype(I, /obj/item/weapon/tank/oxygen) || istype(I, /obj/item/weapon/tank/air) || istype(I, /obj/item/weapon/tank/anesthetic)) if(oxygentanks < 10) user.drop_item() @@ -75,8 +78,9 @@ return /obj/structure/dispenser/Topic(href, href_list) - if(usr.stat || usr.restrained()) - return + if(..()) + return 1 + if(Adjacent(usr)) usr.set_machine(src) if(href_list["oxygen"]) @@ -107,5 +111,4 @@ updateUsrDialog() else usr << browse(null, "window=dispenser") - return - return \ No newline at end of file + return \ No newline at end of file diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 54ecf32cf74..95a5e44104a 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -139,10 +139,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) @@ -194,7 +197,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") @@ -211,11 +215,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 @@ -230,6 +235,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 @@ -246,6 +252,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 @@ -263,7 +270,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 @@ -383,12 +389,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) @@ -407,11 +415,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") @@ -427,19 +435,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 @@ -510,7 +517,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 @@ -539,7 +546,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.") @@ -620,7 +627,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.") From 3b9786488d8ff85772109d021d10d75d6055b410 Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 21 Feb 2017 13:33:31 +0100 Subject: [PATCH 2/6] Interaction with laptop vendor, make sure observers are considered incapacitated --- code/modules/computer3/lapvend.dm | 16 +++++++++++++--- code/modules/mob/dead/observer/observer.dm | 3 +++ 2 files changed, 16 insertions(+), 3 deletions(-) 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/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index d84e434456d..03f39868bbc 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 From 58a422c585f8b4d6e5c2b88f955f57db50a8364e Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 21 Feb 2017 13:38:59 +0100 Subject: [PATCH 3/6] PDA painter sanity checks --- code/game/machinery/PDApainter.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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) From a23493af865e746a8b8d6de240d8a53b32b6fe25 Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 21 Feb 2017 13:43:37 +0100 Subject: [PATCH 4/6] Remove as obj --- .../structures/crates_lockers/closets/secure/secure_closets.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6b8227d69f6..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 @@ -66,7 +66,7 @@ else to_chat(user, "Access Denied") -/obj/structure/closet/secure_closet/attackby(obj/item/weapon/W as obj, mob/user, params) +/obj/structure/closet/secure_closet/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/weapon/rcs)) return ..() From 481083dfcab2ea077ce585f040ef58bb9b557bf2 Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 21 Feb 2017 13:49:00 +0100 Subject: [PATCH 5/6] Variable fix --- code/game/objects/structures/crates_lockers/crates.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 8c2cdd1c09d..7368c98c60f 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -307,7 +307,7 @@ return return ..() -/obj/structure/closet/crate/secure/emag_act(user) +/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* From bbaef077db7c9019c61d1d3175e48eaa9359132d Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 21 Feb 2017 18:21:50 +0100 Subject: [PATCH 6/6] Conveyor switch interaction --- code/modules/recycling/conveyor2.dm | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) 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)