diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 651cf9d3ca0..2aa379fd695 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -650,7 +650,9 @@ var/atom/movable/overlay/overl = null var/on = 0.0 var/obj/item/assembly/shock_kit/part1 = null - var/last_time = 1.0 + var/isshocking + var/datum/effect/effect/system/spark_spread/spark = new /datum/effect/effect/system/spark_spread + var/list/mob/living/affected = list() /obj/structure/table name = "table" diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index de0097a046d..38861503bba 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -147,7 +147,6 @@ for(var/req in src.req_one_access) if(req in I.access) //has an access from the single access list return 1 - return 0 for(var/req in src.req_access) if(!(req in I.access)) //doesn't have this access return 0 @@ -164,7 +163,6 @@ for(var/req in src.req_one_access) if(req in L) //has an access from the single access list return 1 - return 0 for(var/req in src.req_access) if(!(req in L)) //doesn't have this access return 0 diff --git a/code/game/objects/items/weapons/uplinks.dm b/code/game/objects/items/weapons/uplinks.dm index 2edba45f0c7..7d6d03fa972 100644 --- a/code/game/objects/items/weapons/uplinks.dm +++ b/code/game/objects/items/weapons/uplinks.dm @@ -38,7 +38,6 @@ SYNDICATE UPLINK dat += "
" dat += "Revolver (6)
" dat += "Ammo-357 for use with Revolver (2)
" - dat += "Ammo-418 for use with Revolver (3)
" dat += "Energy Crossbow (5)
" dat += "Energy Sword (4)
" dat += "
" @@ -99,10 +98,6 @@ SYNDICATE UPLINK if (src.uses >= 2) src.uses -= 2 new /obj/item/ammo_magazine/a357(get_turf(src)) - if("suffocation_revolver_ammo") - if (src.uses >= 3) - src.uses -= 3 - new /obj/item/ammo_magazine/a418(get_turf(src)) if("xbow") if (src.uses >= 5) src.uses -= 5 diff --git a/code/game/objects/stool.dm b/code/game/objects/stool.dm index 40f9a296be1..2d978c02a97 100644 --- a/code/game/objects/stool.dm +++ b/code/game/objects/stool.dm @@ -135,6 +135,7 @@ src.overl.layer = 5 src.overl.name = "electrified chair" src.overl.master = src + spark.set_up(12, 1, src) return /obj/structure/stool/chair/e_chair/Del() @@ -156,6 +157,14 @@ //SN src = null del(src) return + if(istype(W, /obj/item/device/assembly/signaler)) + var/obj/item/assembly/shock_kit/kit = src.part1 + var/obj/item/device/radio/electropack/target = kit.part2 + var/obj/item/device/assembly/signaler/S = W + target.set_frequency(S.frequency) + target.code = S.code + for(var/mob/M in viewers(src, null)) + M.show_message("\red [user] has set the electric chair using the [W].") return /obj/structure/stool/chair/e_chair/verb/toggle_power() @@ -165,6 +174,8 @@ if ((usr.stat || usr.restrained() || !( usr.canmove ) || usr.lying)) return + if(isshocking && on) + shock() src.on = !( src.on ) src.icon_state = text("e_chair[]", src.on) src.overl.icon_state = text("e_chairo[]", src.on) @@ -173,37 +184,39 @@ /obj/structure/stool/chair/e_chair/proc/shock() if (!( src.on )) return - if ( (src.last_time + 50) > world.time) + if(isshocking) + processing_objects.Remove(src) + src.icon_state = text("e_chair[]", src.on) + src.overl.icon_state = text("e_chairo[]", src.on) + for(var/mob/living/M in affected) + M.jitteriness = 0 + M.is_jittery = 0 + M.anchored = 0 + affected.Remove(M) + isshocking = 0 + return + else + src.icon_state = "e_chairs" + src.overl.icon_state = "e_chairos" + spark.start() + for(var/mob/M in hearers(src, null)) + M.show_message("\red The electric chair went off!.", 3, "\red You hear a deep sharp shock.", 2) + processing_objects.Add(src) + isshocking = 1 return - src.last_time = world.time +/obj/structure/stool/chair/e_chair/process() // special power handling var/area/A = get_area(src) - if(!isarea(A)) - return - if(!A.powered(EQUIP)) - return - A.use_power(EQUIP, 5000) - var/light = A.power_light - A.updateicon() - - flick("e_chairs", src) - flick("e_chairos", src.overl) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(12, 1, src) - s.start() + if(isarea(A) && A.powered(EQUIP)) + A.use_power(EQUIP, 5000) for(var/mob/living/M in src.loc) - M.burn_skin(85) - M << "\red You feel a deep shock course through your body!" - sleep(1) - M.burn_skin(85) + affected.Add(M) + M.make_jittery(1000) + M.anchored = 1 M.Stun(600) - for(var/mob/M in hearers(src, null)) - M.show_message("\red The electric chair went off!.", 3, "\red You hear a deep sharp shock.", 2) - - A.power_light = light - A.updateicon() - return + M.burn_skin(10) + spark.start() /obj/structure/stool/chair/ex_act(severity) unbuckle_all() diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 71e9ba890d5..f901319266d 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -115,8 +115,25 @@ if(1) usr << "\red [src.name] appears to have bitten [t_his] tongue off!" + var/distance = get_dist(usr,src) + if(istype(usr, /mob/dead/observer) || usr.stat == 2) // ghosts can see anything + distance = 1 + + if (src.stat == 1 || stat == 2) + usr << "\red [name] doesn't seem to be responding to anything around [t_him], [t_his] eyes closed as though asleep." + if((health < 0 || stat == 1) && distance <= 3) + usr << "\red [name] does not appear to be breathing." + if(istype(usr, /mob/living/carbon/human) && usr.stat == 0 && src.stat == 1 && distance <= 1) + for(var/mob/O in viewers(usr.loc, null)) + O.show_message("[usr] checks [src]'s pulse.", 1) + usr << "\blue [name] has a pulse!" + if (src.stat == 2 || (changeling && changeling.changeling_fakedeath == 1)) - usr << "\red [src] is limp and unresponsive, a dull lifeless look in [t_his] eyes." + if(distance <= 1) + if(istype(usr, /mob/living/carbon/human) && usr.stat == 0) + for(var/mob/O in viewers(usr.loc, null)) + O.show_message("[usr] checks [src]'s pulse.", 1) + usr << "\red [name] has no pulse!" else if (src.getBruteLoss()) if (src.getBruteLoss() < 30) @@ -144,8 +161,6 @@ else usr << "\blue [src.name] looks quite chubby." - if (src.stat == 1) - usr << "\red [src.name] doesn't seem to be responding to anything around [t_him], [t_his] eyes closed as though asleep." else if (src.brainloss >= 60) usr << "\red [src.name] has a stupid expression on [t_his] face." if (!src.client) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index d94535ec178..92ba2cb0c05 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -65,6 +65,8 @@ if(!special_check(user)) return if(!load_into_chamber()) user << "\red *click*"; + for(var/mob/M in orange(4,src.loc)) + M.show_message("*click, click*") return if(!in_chamber) return diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 8afb398fd41..92e5d91196f 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/maps/tgstation.2.0.8.dmm b/maps/tgstation.2.0.8.dmm index 9af1586a0ad..36dfb2bc9a4 100644 --- a/maps/tgstation.2.0.8.dmm +++ b/maps/tgstation.2.0.8.dmm @@ -2691,8 +2691,8 @@ "aZM" = (/obj/structure/table/reinforced,/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/door/window/northleft{name = "Reception Window"; req_access = null; req_access_txt = "0"},/obj/machinery/door/window/southleft{name = "Research and Development"; req_access_txt = "7"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "aZN" = (/obj/structure/table/reinforced,/obj/machinery/door/window/northright{name = "Reception Window"; req_access_txt = "0"},/obj/machinery/door/window/southright{name = "Research and Development"; req_access_txt = "7"},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "aZO" = (/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) -"aZP" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Research Division Access"; req_access_txt = "7"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) -"aZQ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Research Division Access"; req_access_txt = "7"; req_one_access_txt = "0"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) +"aZP" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/door/airlock/medical{name = "Research Division Access"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) +"aZQ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Research Division Access"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) "aZR" = (/turf/simulated/floor/plating,/area/maintenance/asmaint2) "aZS" = (/obj/machinery/camera{c_tag = "Arrivals Auxiliary Docking"; dir = 8; network = "SS13"},/turf/simulated/floor,/area/hallway/secondary/entry) "aZT" = (/obj/machinery/door_control{name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 2; id = "Disposal Exit"},/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -3000,8 +3000,8 @@ "bfJ" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bfK" = (/obj/item/weapon/stock_parts/console_screen,/obj/structure/table,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/matter_bin,/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bfL" = (/obj/effect/sign/biohazard,/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) -"bfM" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/medical{name = "Research Division Access"; req_access_txt = "7"; req_one_access_txt = "0"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) -"bfN" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/medical{name = "Research Division Access"; req_access_txt = "7"; req_one_access_txt = "0"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) +"bfM" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/medical{name = "Research Division Access"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) +"bfN" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/medical{name = "Research Division Access"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor,/area/medical/research{name = "Research Division"}) "bfO" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bfP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bfQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/effect/sign/securearea{name = "EXTERNAL AIRLOCK"; desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; pixel_x = -1},/turf/simulated/floor/plating,/area/hallway/secondary/entry) @@ -6073,7 +6073,7 @@ "cmO" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/shuttle/escape/centcom) "cmP" = (/obj/machinery/door/poddoor{id = "CentComPort"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) "cmQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) -"cmR" = (/obj/structure/table/reinforced{icon_state = "reinf_tabledir"},/obj/machinery/door/window/southleft{name = "Security"; req_access_txt = ""},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"cmR" = (/obj/structure/table/reinforced{icon_state = "reinf_tabledir"},/obj/machinery/door/window/southleft{name = "Security"; req_access_txt = ""},/obj/machinery/door/window/southleft{dir = 1; name = "Security"; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "cmS" = (/obj/machinery/door/poddoor{id = "CentComPort"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control) "cmT" = (/obj{anchored = 1; icon = 'shuttle.dmi'; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/escape/centcom) "cmU" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)