From c9bfabd42643987427e32a826b223eeb24bc83b6 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Wed, 29 Mar 2017 13:58:35 -0500 Subject: [PATCH 1/2] Device Cell QOL --- code/game/machinery/recharger.dm | 24 ++++++++------ code/game/objects/items/devices/flashlight.dm | 32 +++++++++++++++++++ code/game/objects/items/weapons/stunbaton.dm | 32 +++++++++++++++++++ code/game/objects/items/weapons/tools.dm | 32 +++++++++++++++++++ code/modules/projectiles/gun.dm | 32 +++++++++++++++++++ 5 files changed, 143 insertions(+), 9 deletions(-) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 43497523708..6dd278dc63b 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -8,7 +8,7 @@ obj/machinery/recharger idle_power_usage = 4 active_power_usage = 40000 //40 kW var/obj/item/charging = null - var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/device/laptop, /obj/item/weapon/cell, /obj/item/device/flashlight, /obj/item/device/electronic_assembly) + var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/device/laptop, /obj/item/weapon/cell, /obj/item/device/flashlight, /obj/item/device/electronic_assembly, /obj/item/weapon/weldingtool/electric) var/icon_state_charged = "recharger2" var/icon_state_charging = "recharger1" var/icon_state_idle = "recharger0" //also when unpowered @@ -33,19 +33,19 @@ obj/machinery/recharger if(allowed) if(charging) - user << "\A [charging] is already charging here." + to_chat(user, "\A [charging] is already charging here.") return // Checks to make sure he's not in space doing it, and that the area got proper power. if(!powered()) - user << "The [name] blinks red as you try to insert the item!" + to_chat(user, "The [name] blinks red as you try to insert the item!") return if(istype(G, /obj/item/weapon/gun/energy)) var/obj/item/weapon/gun/energy/E = G if(!E.power_supply) - user << "Your gun has no power cell." + to_chat(user, "Your gun has no power cell.") return if(E.self_recharge) - user << "Your gun has no recharge port." + to_chat(user, "Your gun has no recharge port.") return if(istype(G, /obj/item/weapon/gun/energy/staff)) return @@ -65,16 +65,22 @@ obj/machinery/recharger if(!assembly.battery) to_chat(user, "The assembly doesn't have a power cell.") return + if(istype(G, /obj/item/weapon/weldingtool/electric)) + var/obj/item/weapon/weldingtool/electric/welder = G + if(!welder.power_supply) + to_chat(user, "Your welder has no power cell.") + return + user.drop_item() G.loc = src charging = G update_icon() else if(portable && istype(G, /obj/item/weapon/wrench)) if(charging) - user << "Remove [charging] first!" + to_chat(user, "Remove [charging] first!") return anchored = !anchored - user << "You [anchored ? "attached" : "detached"] the recharger." + to_chat(user, "You [anchored ? "attached" : "detached"] the recharger.") playsound(loc, 'sound/items/Ratchet.ogg', 75, 1) else if(default_deconstruction_screwdriver(user, G)) return @@ -208,8 +214,8 @@ obj/machinery/recharger name = "wall recharger" icon = 'icons/obj/stationobjs.dmi' icon_state = "wrecharger0" - active_power_usage = 25000 //25 kW , It's more specialized than the standalone recharger (guns and batons only) so make it more powerful - allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/weapon/cell/device) + active_power_usage = 25000 //25 kW , It's more specialized than the standalone recharger (guns, batons, and flashlights only) so make it more powerful + allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/device/flashlight, /obj/item/weapon/cell/device) icon_state_charged = "wrecharger2" icon_state_charging = "wrecharger1" icon_state_idle = "wrecharger0" diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 27ee923a1b4..ecd023320b2 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -181,6 +181,38 @@ else return ..() +/obj/item/device/flashlight/MouseDrop(obj/over_object as obj) + if(!canremove) + return + + if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist + + if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why? + return + + if (!( istype(over_object, /obj/screen) )) + return ..() + + //makes sure that the thing is equipped, so that we can't drag it into our hand from miles away. + //there's got to be a better way of doing this. + if (!(src.loc == usr) || (src.loc && src.loc.loc == usr)) + return + + if (( usr.restrained() ) || ( usr.stat )) + return + + if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src)) + return + + switch(over_object.name) + if("r_hand") + usr.u_equip(src) + usr.put_in_r_hand(src) + if("l_hand") + usr.u_equip(src) + usr.put_in_l_hand(src) + src.add_fingerprint(usr) + /obj/item/device/flashlight/attackby(obj/item/weapon/W, mob/user as mob) if(power_use) if(istype(W, /obj/item/weapon/cell)) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index a5b03264d64..2f4b2f3a8ce 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -28,6 +28,38 @@ update_icon() return +/obj/item/weapon/melee/baton/MouseDrop(obj/over_object as obj) + if(!canremove) + return + + if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist + + if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why? + return + + if (!( istype(over_object, /obj/screen) )) + return ..() + + //makes sure that the thing is equipped, so that we can't drag it into our hand from miles away. + //there's got to be a better way of doing this. + if (!(src.loc == usr) || (src.loc && src.loc.loc == usr)) + return + + if (( usr.restrained() ) || ( usr.stat )) + return + + if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src)) + return + + switch(over_object.name) + if("r_hand") + usr.u_equip(src) + usr.put_in_r_hand(src) + if("l_hand") + usr.u_equip(src) + usr.put_in_l_hand(src) + src.add_fingerprint(usr) + /obj/item/weapon/melee/baton/loaded/New() //this one starts with a cell pre-installed. ..() bcell = new/obj/item/weapon/cell/device/weapon(src) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 8e039ee2dac..7c5ac1ee551 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -297,6 +297,38 @@ M.update_inv_l_hand() M.update_inv_r_hand() +/obj/item/weapon/weldingtool/MouseDrop(obj/over_object as obj) + if(!canremove) + return + + if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist + + if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why? + return + + if (!( istype(over_object, /obj/screen) )) + return ..() + + //makes sure that the thing is equipped, so that we can't drag it into our hand from miles away. + //there's got to be a better way of doing this. + if (!(src.loc == usr) || (src.loc && src.loc.loc == usr)) + return + + if (( usr.restrained() ) || ( usr.stat )) + return + + if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src)) + return + + switch(over_object.name) + if("r_hand") + usr.u_equip(src) + usr.put_in_r_hand(src) + if("l_hand") + usr.u_equip(src) + usr.put_in_l_hand(src) + src.add_fingerprint(usr) + //Sets the welding state of the welding tool. If you see W.welding = 1 anywhere, please change it to W.setWelding(1) //so that the welding tool updates accordingly /obj/item/weapon/weldingtool/proc/setWelding(var/set_welding, var/mob/M) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 98dd1f987c4..75d574ed632 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -223,6 +223,38 @@ attached_lock.stored_dna = list() return 1 +/obj/item/weapon/gun/MouseDrop(obj/over_object as obj) + if(!canremove) + return + + if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist + + if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why? + return + + if (!( istype(over_object, /obj/screen) )) + return ..() + + //makes sure that the thing is equipped, so that we can't drag it into our hand from miles away. + //there's got to be a better way of doing this. + if (!(src.loc == usr) || (src.loc && src.loc.loc == usr)) + return + + if (( usr.restrained() ) || ( usr.stat )) + return + + if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src)) + return + + switch(over_object.name) + if("r_hand") + usr.u_equip(src) + usr.put_in_r_hand(src) + if("l_hand") + usr.u_equip(src) + usr.put_in_l_hand(src) + src.add_fingerprint(usr) + /obj/item/weapon/gun/proc/Fire(atom/target, mob/living/user, clickparams, pointblank=0, reflex=0) if(!user || !target) return From c18223dcb4bc87966a26c65535f52342744f17a4 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Thu, 30 Mar 2017 19:54:45 -0500 Subject: [PATCH 2/2] Changelog --- .../Anewbe - Hands and Batteries.yml | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 html/changelogs/Anewbe - Hands and Batteries.yml diff --git a/html/changelogs/Anewbe - Hands and Batteries.yml b/html/changelogs/Anewbe - Hands and Batteries.yml new file mode 100644 index 00000000000..c0b63bde7f0 --- /dev/null +++ b/html/changelogs/Anewbe - Hands and Batteries.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Energy weapons, flashlights, stunbatons, and welders can now be moved from hand to hand by click+dragging." + - rscadd: "Flashlights can now be placed in wall rechargers."