From a1d49cfeb441fd3ed39a3a330b5558f33b73353c Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Tue, 14 Oct 2014 21:44:56 -0300 Subject: [PATCH] Changes the path of electropacks from objitemdeviceradioelectropack to objitemdeviceelectropack. Fixes some runtimes related to electropacks. Securing electropacks will no longer be required to use a helmet on it, same with dissembling the shockkit with a wrench or placing it in a chair. Removes the atom var 'moved_recently' that was only used by electropacks (really). Now the electropack will have an inner cooldown instead. The cooldown of the shock will be 10 seconds, giving the shocked person some small time to move in-between shocks (the shock gives you 5 of weakened). --- _maps/map_files/tgstation.2.1.3.dmm | 8 +-- code/game/atoms_movable.dm | 3 +- code/game/machinery/autolathe.dm | 2 +- .../items/devices/radio/electropack.dm | 50 +++++++++---------- .../crates_lockers/closets/secure/medical.dm | 6 +-- .../structures/crates_lockers/crates.dm | 4 +- .../structures/stool_bed_chair_nest/chairs.dm | 3 -- code/modules/assembly/shock_kit.dm | 12 ++--- 8 files changed, 40 insertions(+), 48 deletions(-) diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm index 56c66067fb4..45f56905361 100644 --- a/_maps/map_files/tgstation.2.1.3.dmm +++ b/_maps/map_files/tgstation.2.1.3.dmm @@ -477,7 +477,7 @@ "aji" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/security/processing) "ajj" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/security/processing) "ajk" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/hydroponics/soil,/obj/item/device/analyzer/plant_analyzer,/obj/machinery/camera{c_tag = "Prison Common Room"; network = list("SS13","Prison")},/turf/simulated/floor{dir = 5; icon_state = "green"},/area/security/prison) -"ajl" = (/obj/structure/table,/obj/item/device/radio/electropack,/turf/simulated/floor,/area/security/transfer) +"ajl" = (/obj/structure/table,/obj/item/device/electropack,/turf/simulated/floor,/area/security/transfer) "ajm" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plating,/area/security/prison) "ajn" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) "ajo" = (/obj/machinery/door/window/brigdoor{id = "Cell 1"; name = "Cell 1"; req_access_txt = "2"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"},/area/security/brig) @@ -5029,7 +5029,7 @@ "bSK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "bSL" = (/obj/structure/closet/l3closet/scientist{pixel_x = -2},/turf/simulated/floor,/area/toxins/misc_lab) "bSM" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) -"bSN" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/item/device/radio/electropack,/obj/item/device/healthanalyzer,/obj/item/device/assembly/signaler,/turf/simulated/floor,/area/toxins/misc_lab) +"bSN" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/item/device/electropack,/obj/item/device/healthanalyzer,/obj/item/device/assembly/signaler,/turf/simulated/floor,/area/toxins/misc_lab) "bSO" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; initialize_directions = 11; level = 2},/turf/simulated/floor/engine,/area/toxins/misc_lab) "bSP" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/turf/simulated/floor/engine,/area/toxins/misc_lab) "bSQ" = (/obj/machinery/atmospherics/pipe/manifold{icon_state = "manifold"; level = 2},/turf/simulated/floor/engine,/area/toxins/misc_lab) @@ -7427,7 +7427,7 @@ "cMQ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/syringe/lethal/choral,/obj/item/weapon/reagent_containers/syringe/lethal{pixel_y = 4},/turf/simulated/floor/airless{icon_state = "dark"},/area/tcommsat/chamber) "cMR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/tcommsat/chamber) "cMS" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/floor/airless,/area/tcommsat/chamber) -"cMT" = (/obj/structure/table,/obj/item/device/radio/electropack,/turf/simulated/floor/plating/airless,/area/tcommsat/chamber) +"cMT" = (/obj/structure/table,/obj/item/device/electropack,/turf/simulated/floor/plating/airless,/area/tcommsat/chamber) "cMU" = (/obj/structure/table,/obj/item/weapon/hemostat,/turf/simulated/floor/airless{icon_state = "dark"},/area/tcommsat/chamber) "cMV" = (/obj/structure/table,/obj/item/weapon/circular_saw,/turf/simulated/floor/airless{icon_state = "dark"},/area/tcommsat/chamber) "cMW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/tcommsat/chamber) @@ -8171,7 +8171,7 @@ "dbg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dbh" = (/obj/machinery/atmospherics/pipe/tank/air,/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/ai_monitored/storage/secure) "dbi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/secure) -"dbj" = (/obj/structure/table,/obj/item/device/radio/electropack,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/security/prison) +"dbj" = (/obj/structure/table,/obj/item/device/electropack,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/security/prison) "dbk" = (/obj/item/weapon/shard,/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dbl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dbm" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 48bc30e5b41..0d5a26dba65 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -8,7 +8,6 @@ var/throwing = 0 var/throw_speed = 2 var/throw_range = 7 - var/moved_recently = 0 var/mob/pulledby = null var/languages = 0 //For say() and Hear() glide_size = 8 @@ -130,7 +129,7 @@ src.throwing = 0 if(isobj(src)) src.throw_impact(get_turf(src)) - + return 1 diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index cfa87d4ae4e..323a33c9fbd 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -54,7 +54,7 @@ var/global/list/autolathe_recipes = list( \ var/global/list/autolathe_recipes_hidden = list( \ new /obj/item/weapon/flamethrower/full(), \ new /obj/item/weapon/rcd(), \ - new /obj/item/device/radio/electropack(), \ + new /obj/item/device/electropack(), \ new /obj/item/weapon/weldingtool/largetank(), \ new /obj/item/weapon/restraints/handcuffs(), \ new /obj/item/ammo_box/a357(), \ diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index fe503966e2a..147eceec49a 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -1,24 +1,27 @@ -/obj/item/device/radio/electropack +/obj/item/device/electropack name = "electropack" desc = "Dance my monkeys! DANCE!!!" + icon = 'icons/obj/radio.dmi' icon_state = "electropack0" item_state = "electropack" - frequency = 1449 flags = CONDUCT slot_flags = SLOT_BACK w_class = 5.0 g_amt = 2500 m_amt = 10000 + var/on = 1 var/code = 2 + var/frequency = 1449 + var/shock_cooldown = 0 -/obj/item/device/radio/electropack/initialize() +/obj/item/device/electropack/initialize() radio_controller.add_object(src, frequency, RADIO_CHAT) -/obj/item/device/radio/electropack/New() +/obj/item/device/electropack/New() if(radio_controller) radio_controller.add_object(src, frequency, RADIO_CHAT) -/obj/item/device/radio/electropack/attack_hand(mob/user) +/obj/item/device/electropack/attack_hand(mob/user) if(iscarbon(user)) var/mob/living/carbon/C = user if(src == C.back) @@ -26,12 +29,9 @@ return ..() -/obj/item/device/radio/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob) +/obj/item/device/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() if(istype(W, /obj/item/clothing/head/helmet)) - if(!b_stat) - user << "[src] is not ready to be attached!" - return var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user ) A.icon = 'icons/obj/assemblies.dmi' @@ -52,15 +52,16 @@ if(src.flags & NODROP) A.flags |= NODROP -/obj/item/device/radio/electropack/Topic(href, href_list) +/obj/item/device/electropack/Topic(href, href_list) //..() if(usr.stat || usr.restrained()) return if(((istype(usr, /mob/living/carbon/human) && ((!( ticker ) || (ticker && ticker.mode != "monkey")) && usr.contents.Find(src))) || (usr.contents.Find(master) || (in_range(src, usr) && istype(loc, /turf))))) usr.set_machine(src) if(href_list["freq"]) - var/new_frequency = sanitize_frequency(frequency + text2num(href_list["freq"])) - set_frequency(new_frequency) + radio_controller.remove_object(src, frequency) + frequency = sanitize_frequency(frequency + text2num(href_list["freq"])) + radio_controller.add_object(src, frequency, RADIO_CHAT) else if(href_list["code"]) code += text2num(href_list["code"]) @@ -90,20 +91,19 @@ return return -/obj/item/device/radio/electropack/receive_signal(datum/signal/signal) +/obj/item/device/electropack/receive_signal(datum/signal/signal) if(!signal || signal.encryption != code) return if(ismob(loc) && on) + if(shock_cooldown != 0) + return + shock_cooldown = 1 + spawn(100) + shock_cooldown = 0 var/mob/M = loc - var/turf/T = M.loc - if(istype(T, /turf)) - if(!M.moved_recently && M.last_move) - M.moved_recently = 1 - step(M, M.last_move) - sleep(50) - if(M) - M.moved_recently = 0 + step(M, pick(cardinal)) + M << "You feel a sharp shock!" var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, M) @@ -111,17 +111,17 @@ M.Weaken(5) - if(master && !isWireCut(WIRE_SIGNAL)) + if(master) master.receive_signal() return -/obj/item/device/radio/electropack/attack_self(mob/user as mob, flag1) +/obj/item/device/electropack/attack_self(mob/user) if(!istype(user, /mob/living/carbon/human)) return user.set_machine(src) - var/dat = {" -Turn [on ? "Off" : "On"]
+ var/dat = {"Turned [on ? "On" : "Off"] - +Toggle
Frequency/Code for electropack:
Frequency: - diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index fa3032ad889..896b0408417 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -135,9 +135,9 @@ ..() sleep(2) new /obj/item/device/assembly/signaler(src) - new /obj/item/device/radio/electropack(src) - new /obj/item/device/radio/electropack(src) - new /obj/item/device/radio/electropack(src) + new /obj/item/device/electropack(src) + new /obj/item/device/electropack(src) + new /obj/item/device/electropack(src) return diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index bdf97295bab..7a91f06455c 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -273,7 +273,7 @@ if(opened) close() else - if(rigged && locate(/obj/item/device/radio/electropack) in src) + if(rigged && locate(/obj/item/device/electropack) in src) if(isliving(user)) var/mob/living/L = user if(L.electrocute_act(17, src)) @@ -346,7 +346,7 @@ else user << "You need 5 lengths of cable to rig [src]." return - else if(istype(W, /obj/item/device/radio/electropack)) + else if(istype(W, /obj/item/device/electropack)) if(rigged) user << "You attach [W] to [src]." user.drop_item() diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 9053517eb9a..8838ba46f78 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -15,9 +15,6 @@ ..() if(istype(W, /obj/item/assembly/shock_kit)) var/obj/item/assembly/shock_kit/SK = W - if(!SK.status) - user << "[SK] is not ready to be attached!" - return user.drop_item() var/obj/structure/stool/bed/chair/e_chair/E = new /obj/structure/stool/bed/chair/e_chair(src.loc) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index 84825acd7e3..b1c79da69d4 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -4,8 +4,7 @@ icon = 'icons/obj/assemblies.dmi' icon_state = "shock_kit" var/obj/item/clothing/head/helmet/part1 = null - var/obj/item/device/radio/electropack/part2 = null - var/status = 0 + var/obj/item/device/electropack/part2 = null w_class = 5.0 flags = CONDUCT @@ -16,7 +15,7 @@ return /obj/item/assembly/shock_kit/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/wrench) && !status) + if(istype(W, /obj/item/weapon/wrench)) var/turf/T = loc if(ismob(T)) T = T.loc @@ -28,15 +27,12 @@ part2 = null qdel(src) return - if(istype(W, /obj/item/weapon/screwdriver)) - status = !status - user << "[src] is now [status ? "secured" : "unsecured"]!" add_fingerprint(user) return /obj/item/assembly/shock_kit/attack_self(mob/user as mob) - part1.attack_self(user, status) - part2.attack_self(user, status) + part1.attack_self(user) + part2.attack_self(user) add_fingerprint(user) return