diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 09de3f917bd..b11c43299ad 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -76,14 +76,19 @@ var/bomb_set if(panel_open && (istype(O, /obj/item/multitool) || istype(O, /obj/item/wirecutters))) return attack_hand(user) - - if(extended) - if(istype(O, /obj/item/disk/nuclear)) - usr.drop_item() - O.loc = src + + if(istype(O, /obj/item/disk/nuclear)) + if(extended) + if(!user.drop_item()) + to_chat(user, "\The [O] is stuck to your hand!") + return + O.forceMove(src) auth = O add_fingerprint(user) return attack_hand(user) + else + to_chat(user, "You need to deploy \the [src] first. Right click on the sprite, select 'Make Deployable' then click on \the [src] with an empty hand.") + return if(anchored) switch(removal_stage) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index b8c0f3d02f4..1284a9a485c 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -510,6 +510,7 @@ About the new airlock wires panel: else to_chat(user, "There's a [note.name] pinned to the front...") note.examine(user) + to_chat(user, "Use an empty hand on the airlock on grab mode to remove [note.name].") if(panel_open) switch(security_level) diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index fbdc403d758..45309b381c0 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -45,7 +45,7 @@ /obj/item/defibrillator/examine(mob/user) ..(user) - to_chat(user,"Ctrl-click to remove the paddles from the defibrillator.") + to_chat(user, "Ctrl-click to remove the paddles from the defibrillator.") /obj/item/defibrillator/proc/update_power() if(bcell) diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm index acedb317bb3..d22f0a59a61 100644 --- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm +++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm @@ -6,203 +6,194 @@ icon_state = "fireaxe1000" icon_closed = "fireaxe1000" icon_opened = "fireaxe1100" - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE armor = list(melee = 50, bullet = 50, laser = 50, energy = 100, bomb = 10, bio = 100, rad = 100) - var/localopened = 0 //Setting this to keep it from behaviouring like a normal closet and obstructing movement in the map. -Agouri - opened = 1 - var/hitstaken = 0 - locked = 1 - var/smashed = 0 + var/localopened = FALSE //Setting this to keep it from behaviouring like a normal closet and obstructing movement in the map. -Agouri + opened = TRUE + var/hitstaken = FALSE + locked = TRUE + var/smashed = FALSE - attackby(var/obj/item/O as obj, var/mob/living/user as mob) //Marker -Agouri - //..() //That's very useful, Erro +/obj/structure/closet/fireaxecabinet/examine(mob/user) + . = ..() + to_chat(user, "Use a multitool to lock/unlock it.") - var/hasaxe = 0 //gonna come in handy later~ - if(fireaxe) - hasaxe = 1 - - if(isrobot(user) || src.locked) - if(istype(O, /obj/item/multitool)) - to_chat(user, "Resetting circuitry...") - playsound(user, 'sound/machines/lockreset.ogg', 50, 1) - if(do_after(user, 20 * O.toolspeed, target = src)) - src.locked = 0 - to_chat(user, " You disable the locking modules.") - update_icon() - return - else if(istype(O, /obj/item)) - user.changeNext_move(CLICK_CD_MELEE) - var/obj/item/W = O - if(src.smashed || src.localopened) - if(localopened) - localopened = 0 - icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - return - else - user.do_attack_animation(src) - playsound(user, 'sound/effects/Glasshit.ogg', 100, 1) //We don't want this playing every time - if(W.force < 15) - to_chat(user, "The cabinet's protective glass glances off the hit.") - else - src.hitstaken++ - if(src.hitstaken == 4) - playsound(user, 'sound/effects/glassbr3.ogg', 100, 1) //Break cabinet, receive goodies. Cabinet's fucked for life after that. - src.smashed = 1 - src.locked = 0 - src.localopened = 1 +/obj/structure/closet/fireaxecabinet/attackby(var/obj/item/O as obj, var/mob/living/user as mob) //Marker -Agouri + if(isrobot(user) || locked) + if(istype(O, /obj/item/multitool)) + to_chat(user, "Resetting circuitry...") + playsound(user, 'sound/machines/lockreset.ogg', 50, 1) + if(do_after(user, 20 * O.toolspeed, target = src)) + locked = FALSE + to_chat(user, " You disable the locking modules.") update_icon() return - if(istype(O, /obj/item/twohanded/fireaxe) && src.localopened) - if(!fireaxe) - if(O:wielded) - to_chat(user, "Unwield the axe first.") - return - fireaxe = O - user.drop_item(O) - src.contents += O - to_chat(user, "You place the fire axe back in the [src.name].") - update_icon() - else - if(src.smashed) - return - else - localopened = !localopened - if(localopened) - icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - else - icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - else - if(src.smashed) - return - if(istype(O, /obj/item/multitool)) + else if(istype(O, /obj/item)) + user.changeNext_move(CLICK_CD_MELEE) + var/obj/item/W = O + if(smashed || localopened) if(localopened) - localopened = 0 - icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - return - else - to_chat(user, "Resetting circuitry...") - sleep(50) - src.locked = 1 - to_chat(user, "You re-enable the locking modules.") - playsound(user, 'sound/machines/lockenable.ogg', 50, 1) - if(do_after(user, 20 * O.toolspeed, target = src)) - src.locked = 1 - to_chat(user, " You re-enable the locking modules.") - return + localopened = FALSE + update_icon_closing() + return + else + user.do_attack_animation(src) + playsound(user, 'sound/effects/Glasshit.ogg', 100, 1) //We don't want this playing every time + if(W.force < 15) + to_chat(user, "The cabinet's protective glass glances off the hit.") + else + hitstaken++ + if(hitstaken == 4) + playsound(user, 'sound/effects/glassbr3.ogg', 100, 1) //Break cabinet, receive goodies. Cabinet's fucked for life after that. + smashed = TRUE + locked = FALSE + localopened = TRUE + update_icon() + return + if(istype(O, /obj/item/twohanded/fireaxe) && localopened) + if(!fireaxe) + var/obj/item/twohanded/fireaxe/F = O + if(F.wielded) + to_chat(user, "Unwield \the [F] first.") + return + if(!user.unEquip(F, FALSE)) + to_chat(user, "\The [F] stays stuck to your hands!") + return + fireaxe = F + contents += F + to_chat(user, "You place \the [F] back in the [name].") + update_icon() + else + if(smashed) + return else localopened = !localopened if(localopened) - icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() + update_icon_opening() else - icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - - - - - attack_hand(mob/user as mob) - - var/hasaxe = 0 - if(fireaxe) - hasaxe = 1 - - if(src.locked) - to_chat(user, "The cabinet won't budge!") + update_icon_closing() + else + if(smashed) return - if(localopened) - if(fireaxe) - user.put_in_hands(fireaxe) - fireaxe = null - to_chat(user, "You take the fire axe from the [name].") - src.add_fingerprint(user) - update_icon() - else - if(src.smashed) - return - else - localopened = !localopened - if(localopened) - src.icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - else - src.icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - - else - localopened = !localopened //I'm pretty sure we don't need an if(src.smashed) in here. In case I'm wrong and it fucks up teh cabinet, **MARKER**. -Agouri + if(istype(O, /obj/item/multitool)) if(localopened) - src.icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() + localopened = FALSE + update_icon_closing() + return else - src.icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed) - spawn(10) update_icon() - - attack_tk(mob/user as mob) - if(localopened && fireaxe) - fireaxe.forceMove(loc) - to_chat(user, "You telekinetically remove the fire axe.") - fireaxe = null - update_icon() - return - attack_hand(user) - - verb/toggle_openness() //nice name, huh? HUH?! -Erro //YEAH -Agouri - set name = "Open/Close" - set category = "Object" - - if(isrobot(usr) || src.locked || src.smashed) - if(src.locked) - to_chat(usr, "The cabinet won't budge!") - else if(src.smashed) - to_chat(usr, "The protective glass is broken!") - return - - localopened = !localopened - update_icon() - - verb/remove_fire_axe() - set name = "Remove Fire Axe" - set category = "Object" - - if(isrobot(usr)) - return - - if(localopened) - if(fireaxe) - usr.put_in_hands(fireaxe) - fireaxe = null - to_chat(usr, "You take the Fire axe from the [name].") - else - to_chat(usr, "The [src.name] is empty.") + to_chat(user, "Resetting circuitry...") + playsound(user, 'sound/machines/lockenable.ogg', 50, 1) + if(do_after(user, 20 * O.toolspeed, target = src)) + locked = TRUE + to_chat(user, " You re-enable the locking modules.") + return else - to_chat(usr, "The [src.name] is closed.") - update_icon() - - attack_ai(mob/user as mob) - if(src.smashed) - to_chat(user, "The security of the cabinet is compromised.") - return - else - locked = !locked - if(locked) - to_chat(user, "Cabinet locked.") + localopened = !localopened + if(localopened) + update_icon_opening() else - to_chat(user, "Cabinet unlocked.") + update_icon_closing() - update_icon() //Template: fireaxe[has fireaxe][is opened][hits taken][is smashed]. If you want the opening or closing animations, add "opening" or "closing" right after the numbers - var/hasaxe = 0 +/obj/structure/closet/fireaxecabinet/attack_hand(mob/user as mob) + if(locked) + to_chat(user, "The cabinet won't budge!") + return + if(localopened) if(fireaxe) - hasaxe = 1 - icon_state = text("fireaxe[][][][]",hasaxe,src.localopened,src.hitstaken,src.smashed) + user.put_in_hands(fireaxe) + to_chat(user, "You take \the [fireaxe] from the [src].") + fireaxe = null + + add_fingerprint(user) + update_icon() + else + if(smashed) + return + else + localopened = !localopened + if(localopened) + update_icon_opening() + else + update_icon_closing() - open() + else + localopened = !localopened //I'm pretty sure we don't need an if(smashed) in here. In case I'm wrong and it fucks up teh cabinet, **MARKER**. -Agouri + if(localopened) + update_icon_opening() + else + update_icon_closing() + +/obj/structure/closet/fireaxecabinet/attack_tk(mob/user as mob) + if(localopened && fireaxe) + fireaxe.forceMove(loc) + to_chat(user, "You telekinetically remove \the [fireaxe].") + fireaxe = null + update_icon() + return + attack_hand(user) + +/obj/structure/closet/fireaxecabinet/verb/toggle_openness() //nice name, huh? HUH?! -Erro //YEAH -Agouri + set name = "Open/Close" + set category = "Object" + + if(isrobot(usr) || locked || smashed) + if(locked) + to_chat(usr, "The cabinet won't budge!") + else if(smashed) + to_chat(usr, "The protective glass is broken!") return - close() - return \ No newline at end of file + localopened = !localopened + update_icon() + +/obj/structure/closet/fireaxecabinet/verb/remove_fire_axe() + set name = "Remove Fire Axe" + set category = "Object" + + if(isrobot(usr)) + return + + if(localopened) + if(fireaxe) + usr.put_in_hands(fireaxe) + to_chat(usr, "You take \the [fireaxe] from the [src].") + fireaxe = null + else + to_chat(usr, "The [src] is empty.") + else + to_chat(usr, "The [src] is closed.") + update_icon() + +/obj/structure/closet/fireaxecabinet/attack_ai(mob/user as mob) + if(smashed) + to_chat(user, "The security of the cabinet is compromised.") + return + else + locked = !locked + if(locked) + to_chat(user, "Cabinet locked.") + else + to_chat(user, "Cabinet unlocked.") + +/obj/structure/closet/fireaxecabinet/proc/update_icon_opening() + var/hasaxe = fireaxe != null + icon_state = "fireaxe[hasaxe][localopened][hitstaken][smashed]opening" + spawn(10) + update_icon() + +/obj/structure/closet/fireaxecabinet/proc/update_icon_closing() + var/hasaxe = fireaxe != null + icon_state = "fireaxe[hasaxe][localopened][hitstaken][smashed]closing" + spawn(10) + update_icon() + +/obj/structure/closet/fireaxecabinet/update_icon() //Template: fireaxe[has fireaxe][is opened][hits taken][is smashed]. If you want the opening or closing animations, add "opening" or "closing" right after the numbers + var/hasaxe = fireaxe != null + icon_state = "fireaxe[hasaxe][localopened][hitstaken][smashed]" + +/obj/structure/closet/fireaxecabinet/open() + return + +/obj/structure/closet/fireaxecabinet/close() + return \ No newline at end of file diff --git a/code/modules/vehicle/ambulance.dm b/code/modules/vehicle/ambulance.dm index 6b15018de49..ac225003c52 100644 --- a/code/modules/vehicle/ambulance.dm +++ b/code/modules/vehicle/ambulance.dm @@ -102,6 +102,10 @@ anchored = FALSE throw_pressure_limit = INFINITY //Throwing an ambulance trolley can kill the process scheduler. +/obj/structure/bed/amb_trolley/examine(mob/user) + . = ..() + to_chat(user, "Drag [src]'s sprite over the ambulance to (de)attach it.") + /obj/structure/bed/amb_trolley/MouseDrop(obj/over_object as obj) ..() if(istype(over_object, /obj/vehicle/ambulance))