diff --git a/Scopes Files/signal_modifier.dm b/Scopes Files/signal_modifier.dm index fe799ae3..907a38e5 100644 --- a/Scopes Files/signal_modifier.dm +++ b/Scopes Files/signal_modifier.dm @@ -3,10 +3,11 @@ // This is only the item, I have some plans on how this could work with minimal file // editing but we will have to see first. Need to decide what it will change on everything too. // +// Doors, Buttons, Shutters, Airpumps Injectors /obj/item/device/signaltool name = "Signal Modifier" - desc = "Used for Stuff." //and here + desc = "Used for modifying." //and here icon_state = "multitool" flags = FPRINT | TABLEPASS| CONDUCT //check out force = 5.0 @@ -14,23 +15,69 @@ throwforce = 5.0 throw_range = 15 throw_speed = 3 - desc = "Sound should really make a description for this." //here to + desc = "If you have this, it is a mistake." //here to m_amt = 50 g_amt = 20 origin_tech = "magnets=1;engineering=1" - var/setting = null + var/id_setting = null + var/signal_setting = null + var/mode = 0 attack_self(mob/M as mob) - var/prevname = "[setting]" - var/str = trim(stripped_input(usr,"New ID tag:","Signal Altering", prevname, MAX_NAME_LEN)) - if(!str || !length(str) || str==prevname) //cancel - usr << "\blue You remove the tag from the [name]" - setting = null - return + if (alert(usr, "What would you like to do", "[name] Settings", "Copy", "New") == "New") + change_tool_settings("id") + change_tool_settings("freq") + mode = 1 + else + mode = 0 + return + + proc/change_ID(var/cur_setting) + if(mode) + if(!id_setting) + usr << "\blue ID removed." + return null + else + usr << "\blue ID changed." + return id_setting + else + usr << "\blue ID copied." + id_setting = cur_setting + return id_setting + + proc/change_freq(var/cur_setting) + if(mode) + if(!signal_setting) + usr << "\blue signal removed." + return null + else + usr << "\blue signal changed." + return signal_setting + else + usr << "\blue signal copied." + signal_setting = cur_setting + return signal_setting + + proc/change_tool_settings(var/setting) + switch(setting) + if("id") + id_setting = get_setting(id_setting) + if("freq") + signal_setting = get_setting(signal_setting) + + proc/get_setting(var/prevname) + var/str = trim(stripped_input(usr,"New setting:","Signal Altering", prevname, MAX_NAME_LEN)) + if(str==prevname) + return prevname + if(!str || !length(str)) //cancel + usr << "\blue You blank the setting from the [name]" + return null if(length(str) > 50) usr << "\red Text too long." return - setting = str - usr << "\blue You change the tag setting to [setting]" \ No newline at end of file + usr << "\blue You change the setting to [str]." + return str + +//frequency \ No newline at end of file diff --git a/aurora.dme b/aurora.dme index 1b297160..b9456d4f 100644 --- a/aurora.dme +++ b/aurora.dme @@ -1469,4 +1469,5 @@ #include "interface\skin.dmf" #include "maps\tgstation2.dmm" #include "Scopes Files\gravitygenerator.dm" +#include "Scopes Files\signal_modifier.dm" // END_INCLUDE diff --git a/code/ATMOSPHERICS/components/unary/outlet_injector.dm b/code/ATMOSPHERICS/components/unary/outlet_injector.dm index e268a375..1052191c 100644 --- a/code/ATMOSPHERICS/components/unary/outlet_injector.dm +++ b/code/ATMOSPHERICS/components/unary/outlet_injector.dm @@ -144,4 +144,12 @@ else icon_state = "[i == 1 && istype(loc, /turf/simulated) ? "h" : "" ]exposed" on = 0 - return \ No newline at end of file + return + + attackby(obj/item/weapon/C as obj, mob/user as mob) + add_fingerprint(user) + if(istype(C, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = C + id = ST.change_ID(id) + set_frequency(ST.change_freq(frequency)) + return \ No newline at end of file diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm index 48887cf0..0e2fb21d 100644 --- a/code/game/machinery/airlock_control.dm +++ b/code/game/machinery/airlock_control.dm @@ -133,6 +133,13 @@ obj/machinery/airlock_sensor var/alert = 0 var/previousPressure + attackby(C as obj, mob/user as mob) + if(istype(C, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = C + id_tag = ST.change_ID(id_tag) + set_frequency(ST.change_freq(frequency)) + return + obj/machinery/airlock_sensor/update_icon() if(on) if(alert) @@ -207,6 +214,12 @@ obj/machinery/access_button var/on = 1 + attackby(C as obj, mob/user as mob) + if(istype(C, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = C + master_tag = ST.change_ID(master_tag) + set_frequency(ST.change_freq(frequency)) + return obj/machinery/access_button/update_icon() if(on) diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index 81074ca2..e0415c72 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -74,6 +74,14 @@ obj/machinery/air_sensor if(radio_controller) set_frequency(frequency) + attackby(var/obj/item/I, mob/user) + if(istype(I, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = I + id_tag = ST.change_ID(id_tag) + set_frequency(ST.change_freq(frequency)) + return + + obj/machinery/computer/general_air_control icon = 'icons/obj/computer.dmi' icon_state = "tank" diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index ee28d4a5..ed2d6d13 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -10,6 +10,12 @@ idle_power_usage = 2 active_power_usage = 4 + attackby(obj/item/weapon/C as obj, mob/user as mob) + if(istype(C, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = C + id = ST.change_ID(id) + return + /obj/machinery/ignition_switch name = "ignition switch" icon = 'icons/obj/objects.dmi' @@ -22,6 +28,12 @@ idle_power_usage = 2 active_power_usage = 4 + attackby(obj/item/weapon/C as obj, mob/user as mob) + if(istype(C, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = C + id = ST.change_ID(id) + return + /obj/machinery/flasher_button name = "flasher button" desc = "A remote control switch for a mounted flasher." @@ -34,6 +46,12 @@ idle_power_usage = 2 active_power_usage = 4 + attackby(obj/item/weapon/C as obj, mob/user as mob) + if(istype(C, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = C + id = ST.change_ID(id) + return + /obj/machinery/crema_switch desc = "Burn baby burn!" name = "crematorium igniter" @@ -44,4 +62,10 @@ var/on = 0 var/area/area = null var/otherarea = null - var/id = 1 \ No newline at end of file + var/id = 1 + + attackby(obj/item/weapon/C as obj, mob/user as mob) + if(istype(C, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = C + id = ST.change_ID(id) + return \ No newline at end of file diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 5c888873..066a65f7 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -55,6 +55,10 @@ return } */ + if(istype(W, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = W + id = ST.change_ID(id) + return if(istype(W, /obj/item/device/detective_scanner)) return if(istype(W, /obj/item/weapon/card/emag)) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index f07bba37..a2ef4bb7 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1153,6 +1153,12 @@ About the new airlock wires panel: if(istype(C, /obj/item/device/detective_scanner) || istype(C, /obj/item/taperoll)) return + if(istype(C, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = C + id_tag = ST.change_ID(id_tag) + set_frequency(ST.change_freq(frequency)) + return + src.add_fingerprint(user) if((istype(C, /obj/item/weapon/weldingtool) && !( src.operating > 0 ) && src.density)) var/obj/item/weapon/weldingtool/W = C diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index cfe9e8b6..a63edd84 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -320,6 +320,11 @@ I.overlays += ID return I +/obj/machinery/door_timer/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = W + id = ST.change_ID(id) + return /obj/machinery/door_timer/cell_1 name = "Cell 1" diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 583e2ac9..c9c61f39 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -22,6 +22,11 @@ return 0 /obj/machinery/door/poddoor/attackby(obj/item/weapon/C as obj, mob/user as mob) + if(istype(C, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = C + id = ST.change_ID(id) + return + src.add_fingerprint(user) if (!( istype(C, /obj/item/weapon/crowbar) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1) )) return diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm index 29115ffa..ef355f3b 100644 --- a/code/game/machinery/doors/shutters.dm +++ b/code/game/machinery/doors/shutters.dm @@ -10,6 +10,11 @@ /obj/machinery/door/poddoor/shutters/attackby(obj/item/weapon/C as obj, mob/user as mob) add_fingerprint(user) + if(istype(C, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = C + id = ST.change_ID(id) + return + if(!(istype(C, /obj/item/weapon/crowbar) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1) )) return if(density && (stat & NOPOWER) && !operating) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 712d6bec..baf2f1c1 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -39,6 +39,10 @@ //Don't want to render prison breaks impossible /obj/machinery/flasher/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = W + id = ST.change_ID(id) + return if (istype(W, /obj/item/weapon/wirecutters)) add_fingerprint(user) src.disable = !src.disable @@ -108,6 +112,11 @@ src.flash() /obj/machinery/flasher/portable/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = W + id = ST.change_ID(id) + return + if (istype(W, /obj/item/weapon/wrench)) add_fingerprint(user) src.anchored = !src.anchored diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index b7cc3bdf..d98fc361 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -70,6 +70,10 @@ // src.sd_SetLuminosity(0) /obj/machinery/sparker/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = W + id = ST.change_ID(id) + return if(istype(W, /obj/item/device/detective_scanner)) return if (istype(W, /obj/item/weapon/screwdriver)) diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index b9b3d14e..b84c0308 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -39,4 +39,10 @@ if(stat & (BROKEN|NOPOWER)) return drive() - ..(severity) \ No newline at end of file + ..(severity) + + attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = W + id = ST.change_ID(id) + return \ No newline at end of file diff --git a/code/modules/aurora/bluespacetech.dm b/code/modules/aurora/bluespacetech.dm index e2261651..34f631be 100644 --- a/code/modules/aurora/bluespacetech.dm +++ b/code/modules/aurora/bluespacetech.dm @@ -59,6 +59,7 @@ else bst.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(bst.back), slot_in_backpack) bst.equip_to_slot_or_del(new /obj/item/device/t_scanner(bst.back), slot_in_backpack) + bst.equip_to_slot_or_del(new /obj/item/device/signaltool(bst.back), slot_in_backpack) //Implant because access var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(bst) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index c1f260d1..f005c06e 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -206,12 +206,14 @@ if(!mob.lastarea) mob.lastarea = get_area(mob.loc) + if(mob.floating && mob.mob_has_gravity(mob.loc)) + mob.float(0) + else if(!mob.floating && !mob.mob_has_gravity(mob.loc)) + mob.float(1) + if((istype(mob.loc, /turf/space)) || (mob.lastarea.has_gravity == 0)) if(!mob.Process_Spacemove(0)) return 0 - if(mob.floating & mob.mob_has_gravity(mob.loc)) - mob.float(0) - if(isobj(mob.loc) || ismob(mob.loc))//Inside an object, tell it we moved var/atom/O = mob.loc return O.relaymove(mob, direct) @@ -445,8 +447,6 @@ return 0 //If not then we can reset inertia and move inertia_dir = 0 - if(!floating) - src.float(1) return 1 diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 16981e32..cbd47957 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -93,6 +93,10 @@ // attack with item, place item on conveyor /obj/machinery/conveyor/attackby(var/obj/item/I, mob/user) + if(istype(I, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = I + id = ST.change_ID(id) + return if(isrobot(user)) return //Carn: fix for borgs dropping their modules on conveyor belts user.drop_item() if(I && I.loc) I.loc = src.loc @@ -235,6 +239,12 @@ S.position = position S.update() +/obj/machinery/conveyor_switch/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/device/signaltool)) + var/obj/item/device/signaltool/ST = W + id = ST.change_ID(id) + return + /obj/machinery/conveyor_switch/oneway var/convdir = 1 //Set to 1 or -1 depending on which way you want the convayor to go. (In other words keep at 1 and set the proper dir on the belts.) desc = "A conveyor control switch. It appears to only go in one direction."