mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 00:29:02 +01:00
MERGE CONFLICTS SUCK
Stupid Bolas
This commit is contained in:
@@ -4311,7 +4311,6 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fpmaint{
|
||||
name = "Medical Maintenance"
|
||||
@@ -5914,7 +5913,6 @@
|
||||
name = "Research Division"
|
||||
})
|
||||
"akv" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
icon_state = "warnplate";
|
||||
dir = 4
|
||||
@@ -6424,7 +6422,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fpmaint{
|
||||
name = "Medical Maintenance"
|
||||
@@ -6658,7 +6655,6 @@
|
||||
name = "\improper Toxins Lab"
|
||||
})
|
||||
"alH" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 1;
|
||||
icon_state = "warning"
|
||||
@@ -9105,7 +9101,6 @@
|
||||
"apw" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"apx" = (
|
||||
@@ -9410,7 +9405,6 @@
|
||||
icon_state = "1-2";
|
||||
pixel_y = 0
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "floorgrime"
|
||||
},
|
||||
@@ -10102,7 +10096,6 @@
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"arl" = (
|
||||
@@ -10130,7 +10123,6 @@
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "floorgrime"
|
||||
},
|
||||
@@ -10229,7 +10221,6 @@
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/toxins/misc_lab)
|
||||
"art" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "floorgrime"
|
||||
},
|
||||
@@ -11163,7 +11154,6 @@
|
||||
name = "\improper Toxins Lab"
|
||||
})
|
||||
"atf" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "floorgrime"
|
||||
},
|
||||
@@ -11791,7 +11781,6 @@
|
||||
/obj/effect/decal/cleanable/robot_debris{
|
||||
icon_state = "gib6"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
broken = 1;
|
||||
icon_state = "platingdmg1"
|
||||
@@ -12618,7 +12607,6 @@
|
||||
name = "Medbay Maintenance APC";
|
||||
pixel_y = -24
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fpmaint{
|
||||
name = "Medical Maintenance"
|
||||
@@ -13645,7 +13633,6 @@
|
||||
/area/maintenance/fore)
|
||||
"axu" = (
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"axv" = (
|
||||
@@ -13657,7 +13644,6 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/obj/effect/decal/remains/human,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
broken = 1;
|
||||
icon_state = "platingdmg3"
|
||||
@@ -15638,7 +15624,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/trash/candy,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"aAN" = (
|
||||
@@ -17072,7 +17057,6 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"aDs" = (
|
||||
@@ -17694,7 +17678,6 @@
|
||||
/obj/item/weapon/shard{
|
||||
icon_state = "medium"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
broken = 1;
|
||||
icon_state = "platingdmg1"
|
||||
@@ -18129,7 +18112,6 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
broken = 1;
|
||||
icon_state = "platingdmg1"
|
||||
@@ -18191,7 +18173,6 @@
|
||||
/obj/machinery/light_switch{
|
||||
pixel_x = 23
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "floorgrime"
|
||||
},
|
||||
@@ -18344,7 +18325,6 @@
|
||||
/area/storage/tech)
|
||||
"aFL" = (
|
||||
/obj/item/stack/rods,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"aFM" = (
|
||||
@@ -20473,7 +20453,6 @@
|
||||
name = "Station Intercom (General)";
|
||||
pixel_x = 27
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "floorgrime"
|
||||
},
|
||||
@@ -20507,7 +20486,6 @@
|
||||
/turf/simulated/floor/plating,
|
||||
/area/storage/tech)
|
||||
"aJu" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/storage/tech)
|
||||
"aJv" = (
|
||||
@@ -21807,7 +21785,6 @@
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"aLT" = (
|
||||
@@ -23053,7 +23030,6 @@
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
broken = 1;
|
||||
icon_state = "platingdmg1"
|
||||
@@ -25127,7 +25103,6 @@
|
||||
"aRY" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/stack/rods,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"aRZ" = (
|
||||
@@ -29127,7 +29102,6 @@
|
||||
d2 = 4;
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
burnt = 1;
|
||||
icon_state = "panelscorched"
|
||||
@@ -33482,7 +33456,6 @@
|
||||
loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes");
|
||||
name = "maint grille or trash spawner"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
broken = 1;
|
||||
icon_state = "platingdmg2"
|
||||
@@ -34493,7 +34466,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "floorgrime"
|
||||
},
|
||||
@@ -34525,7 +34497,6 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/stack/sheet/cardboard,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fpmaint{
|
||||
name = "Medical Maintenance"
|
||||
@@ -34622,7 +34593,6 @@
|
||||
loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes");
|
||||
name = "maint grille or trash spawner"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fsmaint2)
|
||||
"bkG" = (
|
||||
@@ -35034,7 +35004,6 @@
|
||||
"bls" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fpmaint{
|
||||
name = "Medical Maintenance"
|
||||
@@ -36742,7 +36711,6 @@
|
||||
/obj/machinery/light_construct/small{
|
||||
dir = 1
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
broken = 1;
|
||||
dir = 4;
|
||||
@@ -37321,7 +37289,6 @@
|
||||
/obj/machinery/light_construct/small{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
burnt = 1;
|
||||
dir = 4;
|
||||
@@ -37726,7 +37693,6 @@
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fsmaint2)
|
||||
"bqD" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fsmaint2)
|
||||
"bqE" = (
|
||||
@@ -38179,7 +38145,6 @@
|
||||
icon_state = "gib6"
|
||||
},
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/starboard)
|
||||
"brq" = (
|
||||
@@ -38857,7 +38822,6 @@
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/weapon/shard,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
broken = 1;
|
||||
dir = 4;
|
||||
@@ -40297,7 +40261,6 @@
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
broken = 1;
|
||||
icon_state = "platingdmg3"
|
||||
@@ -41698,7 +41661,6 @@
|
||||
},
|
||||
/area/crew_quarters/sleep)
|
||||
"byi" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/crew_quarters/sleep)
|
||||
"byj" = (
|
||||
@@ -42164,7 +42126,6 @@
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "hydrofloor"
|
||||
},
|
||||
@@ -43552,7 +43513,6 @@
|
||||
"bBx" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fsmaint2)
|
||||
"bBy" = (
|
||||
@@ -45231,7 +45191,6 @@
|
||||
/area/maintenance/starboard)
|
||||
"bEE" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/starboard)
|
||||
"bEF" = (
|
||||
@@ -46034,7 +45993,6 @@
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/starboard)
|
||||
"bGb" = (
|
||||
@@ -47106,7 +47064,6 @@
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/stack/rods,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/port{
|
||||
name = "Chapel Maintenance"
|
||||
@@ -48473,7 +48430,6 @@
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/weapon/crowbar,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/port{
|
||||
name = "Chapel Maintenance"
|
||||
@@ -49152,7 +49108,6 @@
|
||||
on = 1;
|
||||
pressure_checks = 1
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "floorgrime"
|
||||
},
|
||||
@@ -49777,7 +49732,6 @@
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/port{
|
||||
name = "Chapel Maintenance"
|
||||
@@ -50325,7 +50279,6 @@
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
broken = 1;
|
||||
icon_state = "platingdmg3"
|
||||
@@ -50463,7 +50416,6 @@
|
||||
/obj/item/weapon/newspaper,
|
||||
/obj/item/weapon/cigbutt,
|
||||
/obj/item/clothing/glasses/sunglasses,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
burnt = 1;
|
||||
icon_state = "panelscorched"
|
||||
@@ -51629,7 +51581,6 @@
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "bar"
|
||||
},
|
||||
@@ -53573,7 +53524,6 @@
|
||||
"bTK" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/generic,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "bar"
|
||||
},
|
||||
@@ -53684,7 +53634,6 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/port{
|
||||
name = "Chapel Maintenance"
|
||||
@@ -54689,7 +54638,6 @@
|
||||
/area/maintenance/starboard)
|
||||
"bVQ" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "cafeteria"
|
||||
},
|
||||
@@ -56478,7 +56426,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 10
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/starboard)
|
||||
"bZa" = (
|
||||
@@ -56663,7 +56610,6 @@
|
||||
pixel_y = -28;
|
||||
prison_radio = 1
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/security/prison)
|
||||
"bZs" = (
|
||||
@@ -57747,7 +57693,6 @@
|
||||
/turf/simulated/floor/plating,
|
||||
/area/security/prison)
|
||||
"cbB" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "floorgrime"
|
||||
},
|
||||
@@ -58669,7 +58614,6 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "floorgrime"
|
||||
},
|
||||
@@ -61275,7 +61219,6 @@
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
broken = 1;
|
||||
icon_state = "platingdmg3"
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
"abm" = (/obj/structure/table,/obj/item/weapon/folder,/obj/item/weapon/paper/hydroponics,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
|
||||
"abn" = (/obj/structure/table,/obj/machinery/computer/libraryconsole/bookmanagement,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
|
||||
"abo" = (/obj/machinery/computer/arcade,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
|
||||
"abp" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plasteel,/area/security/prison)
|
||||
"abp" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/security/prison)
|
||||
"abq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
|
||||
"abr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
|
||||
"abs" = (/obj/structure/holohoop{pixel_y = 29},/obj/item/toy/beach_ball{icon = 'icons/obj/basketball.dmi'; icon_state = "basketball"; item_state = "basketball"; name = "basket ball"},/turf/simulated/floor/plating{icon_state = "platingdmg1"},/area/security/prison)
|
||||
@@ -137,7 +137,7 @@
|
||||
"acG" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plating{icon_state = "platingdmg1"},/area/security/prison)
|
||||
"acH" = (/turf/simulated/floor/plating{icon_state = "panelscorched"},/area/security/prison)
|
||||
"acI" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/security/prison)
|
||||
"acJ" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1; initialize_directions = 11},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
|
||||
"acJ" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
|
||||
"acK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = -28; prison_radio = 1},/obj/machinery/camera{c_tag = "Prison Chamber"; dir = 1; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
|
||||
"acL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
|
||||
"acM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/security/prison)
|
||||
@@ -476,9 +476,9 @@
|
||||
"ajh" = (/turf/simulated/wall/r_wall,/area/engine/gravity_generator)
|
||||
"aji" = (/obj/machinery/conveyor{dir = 2; id = "garbage"; layer = 2.7},/obj/machinery/door/poddoor/preopen{id = "Disposal Exit"; layer = 3.1; name = "disposal exit vent"},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"ajj" = (/obj/machinery/button/door{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/button/massdriver{id = "trash"; pixel_x = -26; pixel_y = -6},/obj/structure/chair/stool,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"ajk" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/maintenance/fore)
|
||||
"ajk" = (/turf/simulated/floor/plating,/area/maintenance/fore)
|
||||
"ajl" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"ajm" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating{icon_state = "platingdmg2"},/area/maintenance/disposal)
|
||||
"ajm" = (/turf/simulated/floor/plating{icon_state = "platingdmg2"},/area/maintenance/disposal)
|
||||
"ajn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/engineering{name = "Fore Port Solar Access"; req_access_txt = "10"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport)
|
||||
"ajo" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/auxsolarport)
|
||||
"ajp" = (/obj/structure/table,/obj/item/stack/medical/ointment{pixel_x = 3; pixel_y = -2},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/epinephrine,/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 28},/obj/item/weapon/restraints/handcuffs/cable/pink,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
@@ -733,7 +733,7 @@
|
||||
"aoe" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"aof" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/recycler,/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"aog" = (/obj/machinery/door/window/eastright{dir = 4; name = "Danger: Conveyor Access"; req_access_txt = "12"},/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"aoh" = (/obj/effect/decal/cleanable/oil,/obj/machinery/light_switch{pixel_x = 25; pixel_y = 0},/obj/machinery/light/small{dir = 4},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"aoh" = (/obj/effect/decal/cleanable/oil,/obj/machinery/light_switch{pixel_x = 25; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"aoi" = (/turf/simulated/floor/plating{icon_state = "panelscorched"},/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"aoj" = (/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"aok" = (/obj/structure/chair{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
@@ -774,7 +774,7 @@
|
||||
"aoT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/fore)
|
||||
"aoU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore)
|
||||
"aoV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "platingdmg2"},/area/maintenance/fore)
|
||||
"aoW" = (/obj/machinery/power/apc{dir = 2; name = "Disposal APC"; pixel_x = 0; pixel_y = -24},/obj/structure/cable/yellow,/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/disposal)
|
||||
"aoW" = (/obj/machinery/power/apc{dir = 2; name = "Disposal APC"; pixel_x = 0; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/disposal)
|
||||
"aoX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore)
|
||||
"aoY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 2},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fore)
|
||||
"aoZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "platingdmg2"},/area/maintenance/fore)
|
||||
@@ -1067,7 +1067,7 @@
|
||||
"auA" = (/obj/structure/mopbucket,/obj/item/weapon/mop,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating{icon_state = "platingdmg2"},/area/maintenance/starboard)
|
||||
"auB" = (/obj/structure/closet/crate/hydroponics,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard)
|
||||
"auC" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/starboard)
|
||||
"auD" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/maintenance/fore)
|
||||
"auD" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fore)
|
||||
"auE" = (/obj/structure/closet,/obj/item/weapon/stock_parts/matter_bin,/turf/simulated/floor/plating,/area/maintenance/starboard)
|
||||
"auF" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard)
|
||||
"auG" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/gravity_generator)
|
||||
@@ -1728,7 +1728,7 @@
|
||||
"aHl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep)
|
||||
"aHm" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep)
|
||||
"aHn" = (/obj/machinery/door/airlock{id_tag = "Cabin7"; name = "Cabin 1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep)
|
||||
"aHo" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating{icon_state = "platingdmg3"},/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"aHo" = (/turf/simulated/floor/plating{icon_state = "platingdmg3"},/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"aHp" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/airalarm{pixel_y = 23},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep)
|
||||
"aHq" = (/obj/structure/closet/secure_closet/personal/cabinet,/obj/item/clothing/under/assistantformal,/turf/simulated/floor/wood,/area/crew_quarters/sleep)
|
||||
"aHr" = (/obj/structure/table,/obj/item/stack/rods{amount = 50},/obj/item/weapon/wrench,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering)
|
||||
@@ -1968,7 +1968,7 @@
|
||||
"aLR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"aLS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"aLT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"aLU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"aLU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"aLV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"aLW" = (/obj/structure/table,/obj/item/clothing/gloves/color/fyellow,/obj/item/device/gps{gpstag = "AUX0"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "brown"},/area/storage/primary)
|
||||
"aLX" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/storage/primary)
|
||||
@@ -2092,7 +2092,7 @@
|
||||
"aOl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/engine/engineering)
|
||||
"aOm" = (/obj/structure/table,/obj/item/weapon/book/manual/wiki/engineering_guide{pixel_x = 3; pixel_y = 4},/obj/item/weapon/book/manual/engineering_particle_accelerator{pixel_x = -2; pixel_y = 3},/obj/machinery/button/door{id = "Singularity"; name = "Shutters Control"; pixel_x = 25; pixel_y = 0; req_access_txt = "11"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering)
|
||||
"aOn" = (/obj/machinery/button/door{id = "Singularity"; name = "Shutters Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "11"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engine/engineering)
|
||||
"aOo" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/maintenance/starboard)
|
||||
"aOo" = (/turf/simulated/floor/plating,/area/maintenance/starboard)
|
||||
"aOp" = (/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/engine/engineering)
|
||||
"aOq" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engine/engineering)
|
||||
"aOr" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space)
|
||||
@@ -2787,7 +2787,7 @@
|
||||
"bbE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;48;50;1"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"bbF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "panelscorched"},/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"bbG" = (/obj/structure/closet/secure_closet/personal,/obj/item/clothing/under/assistantformal,/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/item/clothing/suit/hooded/wintercoat,/obj/item/clothing/shoes/winterboots,/turf/simulated/floor/plasteel{icon_state = "vault"},/area/crew_quarters/locker)
|
||||
"bbH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/maintenance/starboard)
|
||||
"bbH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/starboard)
|
||||
"bbI" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"bbJ" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Maintenance"; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/quartermaster/storage)
|
||||
"bbK" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/storage)
|
||||
@@ -3575,7 +3575,7 @@
|
||||
"bqM" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"bqN" = (/obj/machinery/reagentgrinder,/obj/structure/table/wood,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"bqO" = (/obj/structure/table/wood,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/gun/projectile/revolver/doublebarrel,/obj/machinery/camera{c_tag = "Bar - Backroom"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"bqP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/mob/living/simple_animal/cockroach,/turf/simulated/floor/wood,/area/crew_quarters/sleep)
|
||||
"bqP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep)
|
||||
"bqQ" = (/obj/machinery/door/window/southleft{base_state = "left"; dir = 2; icon_state = "left"; name = "Bar Delivery"; req_access_txt = "25"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/bar)
|
||||
"bqR" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; freq = 1400; location = "Bar"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/crew_quarters/bar)
|
||||
"bqS" = (/obj/item/weapon/storage/box/lights/mixed,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard)
|
||||
@@ -3897,7 +3897,7 @@
|
||||
"bwW" = (/obj/machinery/computer/arcade,/obj/machinery/airalarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"bwX" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/starboard)
|
||||
"bwY" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating{icon_state = "platingdmg2"},/area/maintenance/starboard)
|
||||
"bwZ" = (/obj/machinery/camera/emp_proof{c_tag = "Engineering - Particle Accelerator"; dir = 2; network = list("Singulo","SS13")},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engine/engineering)
|
||||
"bwZ" = (/obj/machinery/camera/emp_proof{c_tag = "Engineering - Particle Accelerator"; dir = 2; network = list("Singulo","SS13")},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engine/engineering)
|
||||
"bxa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard)
|
||||
"bxb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;25;46"},/turf/simulated/floor/plating,/area/maintenance/starboard)
|
||||
"bxc" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/hallway/primary/starboard)
|
||||
@@ -4914,7 +4914,7 @@
|
||||
"bQz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central)
|
||||
"bQA" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/machinery/airalarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
|
||||
"bQB" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
|
||||
"bQC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating{icon_state = "platingdmg1"},/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"bQC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "platingdmg1"},/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"bQD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
|
||||
"bQE" = (/obj/machinery/door/window/northleft{dir = 8; name = "Jetpack Storage"; pixel_x = -1; pixel_y = 0; req_access_txt = "19"},/obj/structure/window/reinforced,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/jetpack/carbondioxide{pixel_x = 4; pixel_y = -1},/obj/item/weapon/tank/jetpack/carbondioxide{pixel_x = 0; pixel_y = 0},/obj/item/weapon/tank/jetpack/carbondioxide{pixel_x = -4; pixel_y = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
|
||||
"bQF" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"})
|
||||
@@ -6345,7 +6345,7 @@
|
||||
"csa" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
|
||||
"csb" = (/obj/structure/lattice/catwalk,/obj/item/weapon/wrench,/turf/space,/area/space)
|
||||
"csc" = (/obj/structure/chair/stool,/turf/simulated/floor/wood{icon_state = "wood-broken7"},/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"csd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/engine/engineering)
|
||||
"csd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/engine/engineering)
|
||||
"cse" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"csf" = (/obj/machinery/door/airlock/maintenance{name = "Surgery Maintenance"; req_access_txt = "45"},/turf/simulated/floor/plating,/area/medical/surgery)
|
||||
"csg" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
@@ -6985,7 +6985,7 @@
|
||||
"cEq" = (/turf/simulated/wall,/area/medical/morgue)
|
||||
"cEr" = (/obj/structure/bodycontainer/morgue,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
|
||||
"cEs" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
|
||||
"cEt" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/construction)
|
||||
"cEt" = (/turf/simulated/floor/plating,/area/construction)
|
||||
"cEu" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
|
||||
"cEv" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
|
||||
"cEw" = (/obj/machinery/airalarm{pixel_y = 32},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
|
||||
@@ -8371,30 +8371,30 @@
|
||||
"deY" = (/obj/structure/cable{tag = "icon-0-4"; icon_state = "0-4"},/obj/machinery/power/tesla_coil,/turf/simulated/floor/plating/airless,/area/space)
|
||||
"deZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engine/engineering)
|
||||
"dfa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engine/engineering)
|
||||
"dfb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating{icon_state = "platingdmg2"},/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"dfb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "platingdmg2"},/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"dfc" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engine/engineering)
|
||||
"dfd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering)
|
||||
"dfe" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/engine/engineering)
|
||||
"dff" = (/obj/item/weapon/wirecutters,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering)
|
||||
"dfg" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"dfh" = (/obj/structure/sink/kitchen{pixel_y = 28},/mob/living/simple_animal/cockroach,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"dfh" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"dfi" = (/obj/machinery/camera/emp_proof{c_tag = "Aft Arm - Near"; dir = 4; network = list("Singulo")},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"dfj" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/tesla_coil,/turf/simulated/floor/plating/airless,/area/space)
|
||||
"dfk" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"dfl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{icon_state = "1-8"},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"dfm" = (/obj/structure/cable{icon_state = "1-8"},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"dfn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/maintenance/starboard)
|
||||
"dfo" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/wood,/area/security/vacantoffice)
|
||||
"dfp" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
||||
"dfq" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
|
||||
"dfr" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
|
||||
"dfs" = (/obj/structure/chair/stool,/mob/living/simple_animal/cockroach,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"dft" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"dfu" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/wood{icon_state = "wood-broken6"},/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"dfv" = (/obj/machinery/camera{c_tag = "Morgue"; dir = 2; network = list("SS13","Medbay")},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
|
||||
"dfw" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
|
||||
"dfx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"dfy" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"dfn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/starboard)
|
||||
"dfo" = (/turf/simulated/floor/wood,/area/security/vacantoffice)
|
||||
"dfp" = (/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
||||
"dfq" = (/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
|
||||
"dfr" = (/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
|
||||
"dfs" = (/obj/structure/chair/stool,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"dft" = (/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"dfu" = (/turf/simulated/floor/wood{icon_state = "wood-broken6"},/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"dfv" = (/obj/machinery/camera{c_tag = "Morgue"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
|
||||
"dfw" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
|
||||
"dfx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"dfy" = (/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"dfz" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/engine/vacuum{tag = "icon-bcircuit"; icon_state = "bcircuit"},/area/toxins/xenobiology)
|
||||
"dfA" = (/obj/machinery/camera{c_tag = "Xenobiology Lab - Kill Chamber"; dir = 1; network = list("SS13","RD","Xeno"); start_active = 1},/turf/simulated/floor/engine/vacuum{tag = "icon-bcircuit"; icon_state = "bcircuit"},/area/toxins/xenobiology)
|
||||
"dfB" = (/obj/structure/table/optable,/obj/item/weapon/surgical_drapes,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/syndicate)
|
||||
|
||||
@@ -6637,7 +6637,6 @@
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/auxsolarport)
|
||||
"amB" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/security/prison)
|
||||
"amC" = (
|
||||
@@ -11251,7 +11250,6 @@
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fsmaint2)
|
||||
"awN" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "floorgrime"
|
||||
},
|
||||
@@ -18167,7 +18165,6 @@
|
||||
/area/hydroponics)
|
||||
"aKY" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fpmaint2)
|
||||
"aKZ" = (
|
||||
@@ -29857,7 +29854,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 5
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fsmaint)
|
||||
"bkW" = (
|
||||
@@ -30387,12 +30383,10 @@
|
||||
},
|
||||
/area/maintenance/disposal)
|
||||
"blT" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fsmaint2)
|
||||
"blU" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/wood,
|
||||
/area/crew_quarters/sleep)
|
||||
"blV" = (
|
||||
@@ -58971,7 +58965,6 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fsmaint2)
|
||||
"cpB" = (
|
||||
@@ -59561,7 +59554,6 @@
|
||||
d2 = 4;
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/fsmaint2)
|
||||
"cqN" = (
|
||||
@@ -64264,7 +64256,6 @@
|
||||
/turf/simulated/floor/plating/airless,
|
||||
/area/space/nearstation)
|
||||
"cAy" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/electrical)
|
||||
"cAz" = (
|
||||
@@ -64275,25 +64266,21 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 8
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/chapel/office)
|
||||
"cAA" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/wood,
|
||||
/area/crew_quarters/bar)
|
||||
"cAB" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "showroomfloor"
|
||||
},
|
||||
/area/crew_quarters/kitchen)
|
||||
"cAC" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "cafeteria"
|
||||
},
|
||||
@@ -64302,7 +64289,6 @@
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
icon_state = "warnplate";
|
||||
dir = 1
|
||||
@@ -64314,13 +64300,11 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/medical/morgue)
|
||||
"cAF" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"cAG" = (
|
||||
@@ -64339,11 +64323,9 @@
|
||||
d2 = 8;
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/crew_quarters/heads)
|
||||
"cAH" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "dark"
|
||||
},
|
||||
@@ -64354,16 +64336,13 @@
|
||||
id = "garbage";
|
||||
name = "disposal coveyor"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"cAJ" = (
|
||||
/obj/structure/closet,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"cAK" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/asmaint2)
|
||||
"cAL" = (
|
||||
@@ -64375,7 +64354,6 @@
|
||||
/turf/simulated/floor/plasteel,
|
||||
/area/janitor)
|
||||
"cAM" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "floorgrime"
|
||||
},
|
||||
@@ -64391,11 +64369,9 @@
|
||||
d2 = 8;
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/engine/engineering)
|
||||
"cAP" = (
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating{
|
||||
icon_state = "warnplate";
|
||||
dir = 4
|
||||
@@ -64403,7 +64379,6 @@
|
||||
/area/engine/engineering)
|
||||
"cAQ" = (
|
||||
/obj/structure/chair,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/aft)
|
||||
"cAR" = (
|
||||
|
||||
@@ -117,47 +117,49 @@
|
||||
C << "<span class='notice'>You are no longer running on internals.</span>"
|
||||
icon_state = "internal0"
|
||||
else
|
||||
if(!istype(C.wear_mask, /obj/item/clothing/mask))
|
||||
C << "<span class='warning'>You are not wearing an internals mask!</span>"
|
||||
return 1
|
||||
else
|
||||
var/obj/item/clothing/mask/M = C.wear_mask
|
||||
if(M.mask_adjusted) // if mask on face but pushed down
|
||||
M.adjustmask(C) // adjust it back
|
||||
if( !(M.flags & MASKINTERNALS) )
|
||||
if(!C.getorganslot("breathing_tube"))
|
||||
if(!istype(C.wear_mask, /obj/item/clothing/mask))
|
||||
C << "<span class='warning'>You are not wearing an internals mask!</span>"
|
||||
return
|
||||
if(istype(C.l_hand, /obj/item/weapon/tank))
|
||||
C << "<span class='notice'>You are now running on internals from the [C.l_hand] on your left hand.</span>"
|
||||
C.internal = C.l_hand
|
||||
else if(istype(C.r_hand, /obj/item/weapon/tank))
|
||||
C << "<span class='notice'>You are now running on internals from the [C.r_hand] on your right hand.</span>"
|
||||
C.internal = C.r_hand
|
||||
else if(ishuman(C))
|
||||
var/mob/living/carbon/human/H = C
|
||||
if(istype(H.s_store, /obj/item/weapon/tank))
|
||||
H << "<span class='notice'>You are now running on internals from the [H.s_store] on your [H.wear_suit].</span>"
|
||||
H.internal = H.s_store
|
||||
else if(istype(H.belt, /obj/item/weapon/tank))
|
||||
H << "<span class='notice'>You are now running on internals from the [H.belt] on your belt.</span>"
|
||||
H.internal = H.belt
|
||||
else if(istype(H.l_store, /obj/item/weapon/tank))
|
||||
H << "<span class='notice'>You are now running on internals from the [H.l_store] in your left pocket.</span>"
|
||||
H.internal = H.l_store
|
||||
else if(istype(H.r_store, /obj/item/weapon/tank))
|
||||
H << "<span class='notice'>You are now running on internals from the [H.r_store] in your right pocket.</span>"
|
||||
H.internal = H.r_store
|
||||
|
||||
//Seperate so CO2 jetpacks are a little less cumbersome.
|
||||
if(!C.internal && istype(C.back, /obj/item/weapon/tank))
|
||||
C << "<span class='notice'>You are now running on internals from the [C.back] on your back.</span>"
|
||||
C.internal = C.back
|
||||
|
||||
if(C.internal)
|
||||
icon_state = "internal1"
|
||||
return 1
|
||||
else
|
||||
C << "<span class='warning'>You don't have an oxygen tank!</span>"
|
||||
return
|
||||
var/obj/item/clothing/mask/M = C.wear_mask
|
||||
if(M.mask_adjusted) // if mask on face but pushed down
|
||||
M.adjustmask(C) // adjust it back
|
||||
if( !(M.flags & MASKINTERNALS) )
|
||||
C << "<span class='warning'>You are not wearing an internals mask!</span>"
|
||||
return
|
||||
|
||||
if(istype(C.l_hand, /obj/item/weapon/tank))
|
||||
C << "<span class='notice'>You are now running on internals from the [C.l_hand] on your left hand.</span>"
|
||||
C.internal = C.l_hand
|
||||
else if(istype(C.r_hand, /obj/item/weapon/tank))
|
||||
C << "<span class='notice'>You are now running on internals from the [C.r_hand] on your right hand.</span>"
|
||||
C.internal = C.r_hand
|
||||
else if(ishuman(C))
|
||||
var/mob/living/carbon/human/H = C
|
||||
if(istype(H.s_store, /obj/item/weapon/tank))
|
||||
H << "<span class='notice'>You are now running on internals from the [H.s_store] on your [H.wear_suit].</span>"
|
||||
H.internal = H.s_store
|
||||
else if(istype(H.belt, /obj/item/weapon/tank))
|
||||
H << "<span class='notice'>You are now running on internals from the [H.belt] on your belt.</span>"
|
||||
H.internal = H.belt
|
||||
else if(istype(H.l_store, /obj/item/weapon/tank))
|
||||
H << "<span class='notice'>You are now running on internals from the [H.l_store] in your left pocket.</span>"
|
||||
H.internal = H.l_store
|
||||
else if(istype(H.r_store, /obj/item/weapon/tank))
|
||||
H << "<span class='notice'>You are now running on internals from the [H.r_store] in your right pocket.</span>"
|
||||
H.internal = H.r_store
|
||||
|
||||
//Seperate so CO2 jetpacks are a little less cumbersome.
|
||||
if(!C.internal && istype(C.back, /obj/item/weapon/tank))
|
||||
C << "<span class='notice'>You are now running on internals from the [C.back] on your back.</span>"
|
||||
C.internal = C.back
|
||||
|
||||
if(C.internal)
|
||||
icon_state = "internal1"
|
||||
else
|
||||
C << "<span class='warning'>You don't have an oxygen tank!</span>"
|
||||
return
|
||||
C.update_action_buttons_icon()
|
||||
|
||||
/obj/screen/mov_intent
|
||||
|
||||
@@ -100,9 +100,10 @@ var/datum/subsystem/garbage_collector/SSgarbage
|
||||
/datum/subsystem/garbage_collector/proc/QueueForQueuing(datum/A)
|
||||
if (istype(A) && isnull(A.gc_destroyed))
|
||||
tobequeued += A
|
||||
A.gc_destroyed = -1
|
||||
|
||||
/datum/subsystem/garbage_collector/proc/Queue(datum/A)
|
||||
if (!istype(A) || !isnull(A.gc_destroyed))
|
||||
if (!istype(A) || (!isnull(A.gc_destroyed) && A.gc_destroyed >= 0))
|
||||
return
|
||||
var/gctime = world.time
|
||||
var/refid = "\ref[A]"
|
||||
@@ -110,7 +111,7 @@ var/datum/subsystem/garbage_collector/SSgarbage
|
||||
A.gc_destroyed = gctime
|
||||
|
||||
if (queue[refid])
|
||||
queue -= "\ref[A]" // Removing any previous references that were GC'd so that the current object will be at the end of the list.
|
||||
queue -= refid // Removing any previous references that were GC'd so that the current object will be at the end of the list.
|
||||
|
||||
queue[refid] = gctime
|
||||
|
||||
@@ -166,8 +167,6 @@ var/datum/subsystem/garbage_collector/SSgarbage
|
||||
return FALSE
|
||||
if(D.gc_destroyed)
|
||||
return TRUE
|
||||
if(SSgarbage && SSgarbage.tobequeued && SSgarbage.tobequeued.len && D in SSgarbage.tobequeued)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
// Default implementation of clean-up code.
|
||||
|
||||
@@ -56,7 +56,7 @@ var/datum/subsystem/shuttle/SSshuttle
|
||||
var/datum/supply_pack/P = new pack()
|
||||
if(!P.contains)
|
||||
continue
|
||||
supply_packs["[P.type]"] = P
|
||||
supply_packs[P.type] = P
|
||||
|
||||
initial_move()
|
||||
..()
|
||||
|
||||
@@ -112,3 +112,6 @@
|
||||
..()
|
||||
if(M.mind)
|
||||
M.mind.remove_spell(/obj/effect/proc_holder/spell/bloodcrawl)
|
||||
|
||||
/obj/item/organ/internal/heart/demon/Stop()
|
||||
return 0 // Always beating.
|
||||
|
||||
@@ -63,3 +63,11 @@
|
||||
|
||||
track_delay = world.time + 10 // 1 second
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/item/device/multitool/cyborg
|
||||
name = "multitool"
|
||||
desc = "Optimised and stripped-down version of a regular multitool."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
toolspeed = 2
|
||||
@@ -129,7 +129,7 @@ MASS SPECTROMETER
|
||||
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.heart_attack)
|
||||
if(H.heart_attack && H.stat != DEAD)
|
||||
user << "<span class='danger'>Subject suffering from heart attack: Apply defibrillator immediately!</span>"
|
||||
user << "<span class='info'>Analyzing results for [M]:\n\tOverall status: [mob_status]</span>"
|
||||
|
||||
|
||||
@@ -548,7 +548,7 @@
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles/syndicate
|
||||
name = "syndicate defibrillator paddles"
|
||||
desc = "A pair of paddles used to revive deceased operatives. It possesses both the ability to penetrate armor and todeliver powerful shocks offensively."
|
||||
desc = "A pair of paddles used to revive deceased operatives. It possesses both the ability to penetrate armor and to deliver powerful shocks offensively."
|
||||
combat = 1
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "defibpaddles0"
|
||||
|
||||
@@ -145,6 +145,20 @@
|
||||
else
|
||||
user << "<span class='warning'>You need one rod to make a wired rod!</span>"
|
||||
return
|
||||
else if(istype(I, /obj/item/stack/sheet/metal))
|
||||
var/obj/item/stack/sheet/metal/M = I
|
||||
if(M.amount < 6)
|
||||
user << "<span class='warning'>You need at least six metal sheets to make good enough weights!</span>"
|
||||
return
|
||||
user << "<span class='notice'>You begin to apply [I] to [src]...</span>"
|
||||
if(do_after(user, 35, target = src))
|
||||
var/obj/item/weapon/restraints/legcuffs/bola/S = new /obj/item/weapon/restraints/legcuffs/bola
|
||||
M.use(6)
|
||||
user.put_in_hands(S)
|
||||
user << "<span class='notice'>You make some weights out of [I] and tie them to [src].</span>"
|
||||
if(!remove_item_from_storage(user))
|
||||
user.unEquip(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg/attack(mob/living/carbon/C, mob/user)
|
||||
if(isrobot(user))
|
||||
@@ -266,3 +280,21 @@
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/energy/attack_hand(mob/user)
|
||||
Crossed(user) //honk
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/bola
|
||||
name = "bola"
|
||||
desc = "A restraining device designed to be thrown at the target. Upon connecting with said target, it will wrap around their legs, making it difficult for them to move quickly."
|
||||
icon_state = "bola"
|
||||
breakouttime = 35//easy to apply, easy to break out of
|
||||
gender = NEUTER
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/bola/throw_impact(atom/hit_atom)
|
||||
if(..() || !iscarbon(hit_atom))//if it gets caught or the target can't be cuffed,
|
||||
return//abort
|
||||
var/mob/living/carbon/C = hit_atom
|
||||
if(!C.legcuffed)
|
||||
C.legcuffed = src
|
||||
src.loc = C
|
||||
C.update_inv_legcuffed()
|
||||
feedback_add_details("handcuffs","B")
|
||||
C << "<span class='userdanger'>\The [src] ensares you!</span>"
|
||||
@@ -98,6 +98,12 @@
|
||||
origin_tech = "materials=2;combat=4"
|
||||
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut")
|
||||
|
||||
/obj/item/weapon/kitchen/knife/combat/cyborg
|
||||
name = "cyborg knife"
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
icon_state = "knife"
|
||||
desc = "A cyborg-mounted plasteel knife. Extremely sharp and durable."
|
||||
|
||||
/obj/item/weapon/kitchen/knife/carrotshiv
|
||||
name = "carrot shiv"
|
||||
icon_state = "carrotshiv"
|
||||
@@ -118,4 +124,4 @@
|
||||
w_class = 3
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
|
||||
|
||||
/* Trays moved to /obj/item/weapon/storage/bag */
|
||||
/* Trays moved to /obj/item/weapon/storage/bag */
|
||||
|
||||
@@ -180,6 +180,7 @@
|
||||
name = "\improper Midori Tabako packet"
|
||||
desc = "You can't understand the runes, but the packet smells funny."
|
||||
icon_state = "midori"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/rollie
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims
|
||||
name ="\improper Shady Jim's Super Slims"
|
||||
|
||||
@@ -28,14 +28,15 @@
|
||||
H.internal = null
|
||||
H.update_internals_hud_icon(0)
|
||||
else
|
||||
if(!H.wear_mask)
|
||||
H << "<span class='warning'>You need a mask!</span>"
|
||||
return
|
||||
if(H.wear_mask.mask_adjusted)
|
||||
H.wear_mask.adjustmask(H)
|
||||
if(!(H.wear_mask.flags & MASKINTERNALS))
|
||||
H << "<span class='warning'>[H.wear_mask] can't use [src]!</span>"
|
||||
return
|
||||
if(!H.getorganslot("breathing_tube"))
|
||||
if(!H.wear_mask)
|
||||
H << "<span class='warning'>You need a mask!</span>"
|
||||
return
|
||||
if(H.wear_mask.mask_adjusted)
|
||||
H.wear_mask.adjustmask(H)
|
||||
if(!(H.wear_mask.flags & MASKINTERNALS))
|
||||
H << "<span class='warning'>[H.wear_mask] can't use [src]!</span>"
|
||||
return
|
||||
|
||||
if(H.internal)
|
||||
H << "<span class='notice'>You switch your internals to [src].</span>"
|
||||
|
||||
@@ -34,6 +34,12 @@
|
||||
playsound(loc, 'sound/weapons/genhit.ogg', 50, 1, -1)
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/wrench/cyborg
|
||||
name = "automatic wrench"
|
||||
desc = "An advanced robotic wrench. Can be found in construction cyborgs."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
toolspeed = 2
|
||||
|
||||
/*
|
||||
* Screwdriver
|
||||
*/
|
||||
@@ -99,6 +105,17 @@
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
|
||||
/obj/item/weapon/screwdriver/cyborg
|
||||
name = "powered screwdriver"
|
||||
desc = "An electrical screwdriver, designed to be both precise and quick."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
icon_state = "screwdriver"
|
||||
item_state = "screwdriver_brown"
|
||||
toolspeed = 2
|
||||
|
||||
/obj/item/weapon/screwdriver/cyborg/New(loc, var/param_color = null)
|
||||
return ..(loc, "cyborg")
|
||||
|
||||
/*
|
||||
* Wirecutters
|
||||
*/
|
||||
@@ -142,6 +159,16 @@
|
||||
playsound(loc, 'sound/items/Wirecutter.ogg', 50, 1, -1)
|
||||
return (BRUTELOSS)
|
||||
|
||||
|
||||
/obj/item/weapon/wirecutters/cyborg
|
||||
name = "wirecutters"
|
||||
desc = "This cuts wires."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
toolspeed = 2
|
||||
|
||||
/obj/item/weapon/wirecutters/cyborg/New(loc, var/param_color = null)
|
||||
return ..(loc, "cyborg")
|
||||
|
||||
/*
|
||||
* Welding Tool
|
||||
*/
|
||||
@@ -396,6 +423,11 @@
|
||||
origin_tech = "engineering=2"
|
||||
|
||||
/obj/item/weapon/weldingtool/largetank/cyborg
|
||||
name = "integrated welding tool"
|
||||
desc = "An advanced welder designed to be used in robotic systems."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
icon_state = "indwelder"
|
||||
toolspeed = 2
|
||||
|
||||
/obj/item/weapon/weldingtool/largetank/flamethrower_screwdriver()
|
||||
return
|
||||
@@ -494,3 +526,10 @@
|
||||
materials = list(MAT_METAL=70)
|
||||
icon_state = "crowbar_large"
|
||||
toolspeed = 2
|
||||
|
||||
/obj/item/weapon/crowbar/cyborg
|
||||
name = "hydraulic crowbar"
|
||||
desc = "A hydraulic prying tool, compact but powerful. Designed to replace crowbar in construction cyborgs."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
force = 10
|
||||
toolspeed = 2
|
||||
@@ -19,6 +19,8 @@
|
||||
playsound(get_turf(src), W.hitsound, 100, 0, 0)
|
||||
user.visible_message("<span class='notice'>[user] begins to cut down [src] with [W].</span>","<span class='notice'>You begin to cut down [src] with [W].</span>", "You hear the sound of cutting a tree.")
|
||||
if(do_after(user, 1000/W.force, target = user)) //5 seconds with 20 force, 8 seconds with a hatchet, 20 seconds with a shard.
|
||||
if(cut)
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] falls [src] with the [W].</span>","<span class='notice'>You fall [src] with the [W].</span>", "You hear the sound of a tree falling.")
|
||||
playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0)
|
||||
icon_state = "tree_stump"
|
||||
|
||||
@@ -200,7 +200,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
. += "[procname] returned an associative list:"
|
||||
for(var/key in returnedlist)
|
||||
. += "\n[key] = [returnedlist[key]]"
|
||||
|
||||
|
||||
else
|
||||
. += "[procname] returned a list:"
|
||||
for(var/elem in returnedlist)
|
||||
@@ -644,8 +644,15 @@ var/global/list/g_fancy_list_of_types = null
|
||||
E.active = 1
|
||||
|
||||
for(var/obj/machinery/field/generator/F in machines)
|
||||
if(F.anchored)
|
||||
F.Varedit_start = 1
|
||||
if(F.active == 0)
|
||||
F.active = 1
|
||||
F.state = 2
|
||||
F.power = 250
|
||||
F.anchored = 1
|
||||
F.warming_up = 3
|
||||
F.start_fields()
|
||||
F.update_icon()
|
||||
|
||||
spawn(30)
|
||||
for(var/obj/machinery/the_singularitygen/G in machines)
|
||||
if(G.anchored)
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
say("The supply shuttle has been loaned to Centcom.")
|
||||
. = TRUE
|
||||
if("add")
|
||||
var/id = params["id"]
|
||||
var/id = text2path(params["id"])
|
||||
if(!SSshuttle.supply_packs[id])
|
||||
return
|
||||
|
||||
|
||||
@@ -372,7 +372,8 @@
|
||||
|
||||
/datum/supply_pack/security/justiceinbound
|
||||
name = "Standard Justice Enforcer Crate"
|
||||
cost = 80 //justice comes at a price. An expensive, noisy price.
|
||||
cost = 60 //justice comes at a price. An expensive, noisy price.
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/clothing/head/helmet/justice,
|
||||
/obj/item/clothing/mask/gas/sechailer)
|
||||
crate_name = "justice enforcer crate"
|
||||
@@ -1226,10 +1227,12 @@
|
||||
name = "Contraband Crate"
|
||||
contraband = TRUE
|
||||
cost = 30
|
||||
num_contained = 5
|
||||
num_contained = 6
|
||||
contains = list(/obj/item/weapon/poster/contraband,
|
||||
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims)
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims,
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori,
|
||||
/obj/item/seeds/ambrosiadeusseed,
|
||||
/obj/item/clothing/tie/dope_necklace)
|
||||
crate_name = "crate"
|
||||
|
||||
/datum/supply_pack/misc/randomised/toys
|
||||
|
||||
@@ -77,6 +77,14 @@
|
||||
time = 40
|
||||
category = CAT_WEAPON
|
||||
|
||||
/datum/table_recipe/bola
|
||||
name = "Bola"
|
||||
result = /obj/item/weapon/restraints/legcuffs/bola
|
||||
reqs = list(/obj/item/weapon/restraints/handcuffs/cable = 1,
|
||||
/obj/item/stack/sheet/metal = 6)
|
||||
time = 20//15 faster than crafting them by hand!
|
||||
category= CAT_WEAPON
|
||||
|
||||
/datum/table_recipe/tailclub
|
||||
name = "Tail Club"
|
||||
result = /obj/item/weapon/tailclub
|
||||
|
||||
@@ -332,9 +332,10 @@
|
||||
if(internal)
|
||||
internal = null
|
||||
update_internals_hud_icon(0)
|
||||
else if(ITEM && istype(ITEM, /obj/item/weapon/tank) && wear_mask && (wear_mask.flags & MASKINTERNALS))
|
||||
internal = ITEM
|
||||
update_internals_hud_icon(1)
|
||||
else if(ITEM && istype(ITEM, /obj/item/weapon/tank))
|
||||
if((wear_mask && (wear_mask.flags & MASKINTERNALS)) || getorganslot("breathing_tube"))
|
||||
internal = ITEM
|
||||
update_internals_hud_icon(1)
|
||||
|
||||
visible_message("<span class='danger'>[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM].</span>", \
|
||||
"<span class='userdanger'>[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM].</span>")
|
||||
@@ -811,10 +812,6 @@ var/const/GALOSHES_DONT_HELP = 4
|
||||
|
||||
for(var/datum/disease/D in viruses)
|
||||
D.cure(0)
|
||||
if(dna)
|
||||
for(var/datum/mutation/human/HM in dna.mutations)
|
||||
if(HM.quality != POSITIVE)
|
||||
dna.remove_mutation(HM.name)
|
||||
..()
|
||||
|
||||
/mob/living/carbon/can_be_revived()
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
/mob/living/carbon
|
||||
gender = MALE
|
||||
hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD)
|
||||
var/list/stomach_contents = list()
|
||||
var/list/internal_organs = list() //List of /obj/item/organ/internal in the mob. They don't go in the contents for some reason I don't want to know.
|
||||
var/list/stomach_contents = list()
|
||||
var/list/internal_organs = list() //List of /obj/item/organ/internal in the mob. They don't go in the contents for some reason I don't want to know.
|
||||
var/list/internal_organs_slot = list() //Same as above, but stores "slot ID" - "organ" pairs for easy access.
|
||||
|
||||
var/silent = 0 //Can't talk. Value goes down every life proc. //NOTE TO FUTURE CODERS: DO NOT INITIALIZE NUMERICAL VARS AS NULL OR I WILL MURDER YOU.
|
||||
|
||||
|
||||
@@ -951,4 +951,7 @@
|
||||
L.Insert(src)
|
||||
restore_blood()
|
||||
remove_all_embedded_objects()
|
||||
for(var/datum/mutation/human/HM in dna.mutations)
|
||||
if(HM.quality != POSITIVE)
|
||||
dna.remove_mutation(HM.name)
|
||||
..()
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
/mob/living/carbon/human/wear_mask_update(obj/item/clothing/C, toggle_off = 1)
|
||||
if((C.flags_inv & (HIDEHAIR|HIDEFACIALHAIR)) || (initial(C.flags_inv) & (HIDEHAIR|HIDEFACIALHAIR)))
|
||||
update_hair()
|
||||
if(toggle_off && internal)
|
||||
if(toggle_off && internal && !getorganslot("breathing_tube"))
|
||||
update_internals_hud_icon(0)
|
||||
internal = null
|
||||
if(C.flags_inv & HIDEEYES)
|
||||
|
||||
@@ -203,6 +203,9 @@
|
||||
if(internal.loc != src)
|
||||
internal = null
|
||||
update_internals_hud_icon(0)
|
||||
else if ((!wear_mask || !(wear_mask.flags & MASKINTERNALS)) && !getorganslot("breathing_tube"))
|
||||
internal = null
|
||||
update_internals_hud_icon(0)
|
||||
else
|
||||
update_internals_hud_icon(1)
|
||||
return internal.remove_air_volume(volume_needed)
|
||||
|
||||
@@ -453,7 +453,7 @@
|
||||
if (WT.remove_fuel(0, user)) //The welder has 1u of fuel consumed by it's afterattack, so we don't need to worry about taking any away.
|
||||
if(src == user)
|
||||
user << "<span class='notice'>You start fixing youself...</span>"
|
||||
if(!do_after(user, 50/W.toolspeed, target = src))
|
||||
if(!do_after(user, 50, target = src))
|
||||
return
|
||||
|
||||
adjustBruteLoss(-30)
|
||||
|
||||
@@ -52,4 +52,5 @@
|
||||
desc = "One bug squashed. Four more will rise in its place."
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "xfloor1"
|
||||
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
|
||||
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
|
||||
layer = 2
|
||||
@@ -100,15 +100,18 @@
|
||||
if(!affecting.buckled)
|
||||
affecting.loc = assailant.loc
|
||||
|
||||
var/breathing_tube = affecting.getorganslot("breathing_tube")
|
||||
|
||||
if(state >= GRAB_NECK)
|
||||
affecting.Stun(5) //It will hamper your voice, being choked and all.
|
||||
if(isliving(affecting))
|
||||
if(isliving(affecting) && !breathing_tube)
|
||||
var/mob/living/L = affecting
|
||||
L.adjustOxyLoss(1)
|
||||
|
||||
if(state >= GRAB_KILL)
|
||||
affecting.Weaken(5) //Should keep you down unless you get help.
|
||||
affecting.losebreath = min(affecting.losebreath + 2, 3)
|
||||
if(!breathing_tube)
|
||||
affecting.losebreath = min(affecting.losebreath + 2, 3)
|
||||
|
||||
/obj/item/weapon/grab/attack_self(mob/user)
|
||||
s_click(hud)
|
||||
@@ -165,7 +168,8 @@
|
||||
add_logs(assailant, affecting, "strangled")
|
||||
|
||||
assailant.changeNext_move(CLICK_CD_TKSTRANGLE)
|
||||
affecting.losebreath += 1
|
||||
if(!affecting.getorganslot("breathing_tube"))
|
||||
affecting.losebreath += 1
|
||||
else
|
||||
if(assailant)
|
||||
assailant.visible_message("<span class='warning'>[assailant] is unable to tighten \his grip on [affecting]'s neck!</span>")
|
||||
|
||||
@@ -15,10 +15,8 @@
|
||||
var/obj/machinery/field/generator/FG2 = null
|
||||
|
||||
/obj/machinery/field/containment/Destroy()
|
||||
if(FG1 && !FG1.clean_up)
|
||||
FG1.cleanup()
|
||||
if(FG2 && !FG2.clean_up)
|
||||
FG2.cleanup()
|
||||
FG1.fields -= src
|
||||
FG2.fields -= src
|
||||
return ..()
|
||||
|
||||
/obj/machinery/field/containment/attack_hand(mob/user)
|
||||
|
||||
@@ -13,6 +13,15 @@ field_generator power level display
|
||||
*/
|
||||
|
||||
#define field_generator_max_power 250
|
||||
|
||||
#define FG_UNSECURED 0
|
||||
#define FG_SECURED 1
|
||||
#define FG_WELDED 2
|
||||
|
||||
#define FG_OFFLINE 0
|
||||
#define FG_CHARGING 1
|
||||
#define FG_ONLINE 2
|
||||
|
||||
/obj/machinery/field/generator
|
||||
name = "Field Generator"
|
||||
desc = "A large thermal battery that projects a high amount of energy when powered."
|
||||
@@ -22,76 +31,51 @@ field_generator power level display
|
||||
density = 1
|
||||
use_power = 0
|
||||
var/const/num_power_levels = 6 // Total number of power level icon has
|
||||
var/Varedit_start = 0
|
||||
var/Varpower = 0
|
||||
var/active = 0
|
||||
var/power_level = 0
|
||||
var/active = FG_OFFLINE
|
||||
var/power = 20 // Current amount of power
|
||||
var/state = 0
|
||||
var/state = FG_UNSECURED
|
||||
var/warming_up = 0
|
||||
var/list/obj/machinery/field/containment/fields
|
||||
var/list/obj/machinery/field/generator/connected_gens
|
||||
var/clean_up = 0
|
||||
|
||||
|
||||
/obj/machinery/field/generator/update_icon()
|
||||
overlays.Cut()
|
||||
if(warming_up)
|
||||
overlays += "+a[warming_up]"
|
||||
if(fields.len)
|
||||
overlays += "+on"
|
||||
// Power level indicator
|
||||
// Scale % power to % num_power_levels and truncate value
|
||||
var/level = round(num_power_levels * power / field_generator_max_power)
|
||||
// Clamp between 0 and num_power_levels for out of range power values
|
||||
level = Clamp(level, 0, num_power_levels)
|
||||
if(level)
|
||||
overlays += "+p[level]"
|
||||
|
||||
return
|
||||
if(power_level)
|
||||
overlays += "+p[power_level]"
|
||||
|
||||
|
||||
/obj/machinery/field/generator/New()
|
||||
..()
|
||||
fields = list()
|
||||
connected_gens = list()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/field/generator/process()
|
||||
if(Varedit_start == 1)
|
||||
if(active == 0)
|
||||
active = 1
|
||||
state = 2
|
||||
power = field_generator_max_power
|
||||
anchored = 1
|
||||
warming_up = 3
|
||||
start_fields()
|
||||
update_icon()
|
||||
Varedit_start = 0
|
||||
|
||||
if(src.active == 2)
|
||||
if(active == FG_ONLINE)
|
||||
calc_power()
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/field/generator/attack_hand(mob/user)
|
||||
if(state == 2)
|
||||
if(state == FG_WELDED)
|
||||
if(get_dist(src, user) <= 1)//Need to actually touch the thing to turn it on
|
||||
if(src.active >= 1)
|
||||
user << "<span class='warning'>You are unable to turn off the [src.name] once it is online!</span>"
|
||||
if(active >= FG_CHARGING)
|
||||
user << "<span class='warning'>You are unable to turn off the [name] once it is online!</span>"
|
||||
return 1
|
||||
else
|
||||
user.visible_message("[user.name] turns on the [src.name].", \
|
||||
"<span class='notice'>You turn on the [src.name].</span>", \
|
||||
user.visible_message("[user.name] turns on the [name].", \
|
||||
"<span class='notice'>You turn on the [name].</span>", \
|
||||
"<span class='italics'>You hear heavy droning.</span>")
|
||||
turn_on()
|
||||
investigate_log("<font color='green'>activated</font> by [user.key].","singulo")
|
||||
|
||||
src.add_fingerprint(user)
|
||||
add_fingerprint(user)
|
||||
else
|
||||
user << "<span class='warning'>The [src] needs to be firmly secured to the floor first!</span>"
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/field/generator/attackby(obj/item/W, mob/user, params)
|
||||
@@ -100,54 +84,52 @@ field_generator power level display
|
||||
return
|
||||
else if(istype(W, /obj/item/weapon/wrench))
|
||||
switch(state)
|
||||
if(0)
|
||||
if(FG_UNSECURED)
|
||||
if(isinspace()) return
|
||||
state = 1
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
|
||||
user.visible_message("[user.name] secures [src.name] to the floor.", \
|
||||
state = FG_SECURED
|
||||
playsound(loc, 'sound/items/Ratchet.ogg', 75, 1)
|
||||
user.visible_message("[user.name] secures [name] to the floor.", \
|
||||
"<span class='notice'>You secure the external reinforcing bolts to the floor.</span>", \
|
||||
"<span class='italics'>You hear ratchet.</span>")
|
||||
src.anchored = 1
|
||||
if(1)
|
||||
state = 0
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
|
||||
user.visible_message("[user.name] unsecures [src.name] reinforcing bolts from the floor.", \
|
||||
anchored = 1
|
||||
if(FG_SECURED)
|
||||
state = FG_UNSECURED
|
||||
playsound(loc, 'sound/items/Ratchet.ogg', 75, 1)
|
||||
user.visible_message("[user.name] unsecures [name] reinforcing bolts from the floor.", \
|
||||
"<span class='notice'>You undo the external reinforcing bolts.</span>", \
|
||||
"<span class='italics'>You hear ratchet.</span>")
|
||||
src.anchored = 0
|
||||
if(2)
|
||||
user << "<span class='warning'>The [src.name] needs to be unwelded from the floor!</span>"
|
||||
return
|
||||
anchored = 0
|
||||
if(FG_WELDED)
|
||||
user << "<span class='warning'>The [name] needs to be unwelded from the floor!</span>"
|
||||
|
||||
else if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
switch(state)
|
||||
if(0)
|
||||
user << "<span class='warning'>The [src.name] needs to be wrenched to the floor!</span>"
|
||||
return
|
||||
if(1)
|
||||
if(FG_UNSECURED)
|
||||
user << "<span class='warning'>The [name] needs to be wrenched to the floor!</span>"
|
||||
|
||||
if(FG_SECURED)
|
||||
if (WT.remove_fuel(0,user))
|
||||
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
user.visible_message("[user.name] starts to weld the [src.name] to the floor.", \
|
||||
playsound(loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
user.visible_message("[user.name] starts to weld the [name] to the floor.", \
|
||||
"<span class='notice'>You start to weld \the [src] to the floor...</span>", \
|
||||
"<span class='italics'>You hear welding.</span>")
|
||||
if (do_after(user,20/W.toolspeed, target = src))
|
||||
if(!src || !WT.isOn()) return
|
||||
state = 2
|
||||
state = FG_WELDED
|
||||
user << "<span class='notice'>You weld the field generator to the floor.</span>"
|
||||
else
|
||||
return
|
||||
if(2)
|
||||
|
||||
if(FG_WELDED)
|
||||
if (WT.remove_fuel(0,user))
|
||||
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
user.visible_message("[user.name] starts to cut the [src.name] free from the floor.", \
|
||||
playsound(loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
user.visible_message("[user.name] starts to cut the [name] free from the floor.", \
|
||||
"<span class='notice'>You start to cut \the [src] free from the floor...</span>", \
|
||||
"<span class='italics'>You hear welding.</span>")
|
||||
if (do_after(user,20/W.toolspeed, target = src))
|
||||
if(!src || !WT.isOn()) return
|
||||
state = 1
|
||||
state = FG_SECURED
|
||||
user << "<span class='notice'>You cut \the [src] free from the floor.</span>"
|
||||
else
|
||||
return
|
||||
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -164,28 +146,33 @@ field_generator power level display
|
||||
|
||||
/obj/machinery/field/generator/bullet_act(obj/item/projectile/Proj)
|
||||
if(Proj.flag != "bullet")
|
||||
power += Proj.damage
|
||||
update_icon()
|
||||
power = min(power + Proj.damage, field_generator_max_power)
|
||||
check_power_level()
|
||||
return 0
|
||||
|
||||
|
||||
/obj/machinery/field/generator/Destroy()
|
||||
src.cleanup()
|
||||
cleanup()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/field/generator/proc/check_power_level()
|
||||
var/new_level = round(num_power_levels * power / field_generator_max_power)
|
||||
if(new_level != power_level)
|
||||
power_level = new_level
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/field/generator/proc/turn_off()
|
||||
active = 0
|
||||
active = FG_OFFLINE
|
||||
spawn(1)
|
||||
src.cleanup()
|
||||
cleanup()
|
||||
while (warming_up>0 && !active)
|
||||
sleep(50)
|
||||
warming_up--
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/field/generator/proc/turn_on()
|
||||
active = 1
|
||||
active = FG_CHARGING
|
||||
spawn(1)
|
||||
while (warming_up<3 && active)
|
||||
sleep(50)
|
||||
@@ -196,44 +183,35 @@ field_generator power level display
|
||||
|
||||
|
||||
/obj/machinery/field/generator/proc/calc_power()
|
||||
if(Varpower)
|
||||
return 1
|
||||
var/power_draw = 2 + fields.len
|
||||
|
||||
update_icon()
|
||||
if(src.power > field_generator_max_power)
|
||||
src.power = field_generator_max_power
|
||||
|
||||
var/power_draw = 2
|
||||
for (var/obj/machinery/field/containment/F in fields)
|
||||
if (isnull(F))
|
||||
continue
|
||||
power_draw++
|
||||
if(draw_power(round(power_draw/2,1)))
|
||||
check_power_level()
|
||||
return 1
|
||||
else
|
||||
visible_message("<span class='danger'>The [src.name] shuts down!</span>", "<span class='italics'>You hear something shutting down.</span>")
|
||||
visible_message("<span class='danger'>The [name] shuts down!</span>", "<span class='italics'>You hear something shutting down.</span>")
|
||||
turn_off()
|
||||
investigate_log("ran out of power and <font color='red'>deactivated</font>","singulo")
|
||||
src.power = 0
|
||||
power = 0
|
||||
check_power_level()
|
||||
return 0
|
||||
|
||||
//This could likely be better, it tends to start loopin if you have a complex generator loop setup. Still works well enough to run the engine fields will likely recode the field gens and fields sometime -Mport
|
||||
/obj/machinery/field/generator/proc/draw_power(draw = 0, failsafe = 0, obj/machinery/field/generator/G = null, obj/machinery/field/generator/last = null)
|
||||
if(Varpower)
|
||||
return 1
|
||||
if((G && G == src) || (failsafe >= 8))//Loopin, set fail
|
||||
if((G && (G == src)) || (failsafe >= 8))//Loopin, set fail
|
||||
return 0
|
||||
else
|
||||
failsafe++
|
||||
if(src.power >= draw)//We have enough power
|
||||
src.power -= draw
|
||||
|
||||
if(power >= draw)//We have enough power
|
||||
power -= draw
|
||||
return 1
|
||||
|
||||
else//Need more power
|
||||
draw -= src.power
|
||||
src.power = 0
|
||||
for(var/obj/machinery/field/generator/FG in connected_gens)
|
||||
if(isnull(FG))
|
||||
continue
|
||||
draw -= power
|
||||
power = 0
|
||||
for(var/CG in connected_gens)
|
||||
var/obj/machinery/field/generator/FG = CG
|
||||
if(FG == last)//We just asked you
|
||||
continue
|
||||
if(G)//Another gen is askin for power and we dont have it
|
||||
@@ -249,7 +227,7 @@ field_generator power level display
|
||||
|
||||
|
||||
/obj/machinery/field/generator/proc/start_fields()
|
||||
if(!src.state == 2 || !anchored)
|
||||
if(state != FG_WELDED || !anchored)
|
||||
turn_off()
|
||||
return
|
||||
spawn(1)
|
||||
@@ -260,82 +238,72 @@ field_generator power level display
|
||||
setup_field(4)
|
||||
spawn(4)
|
||||
setup_field(8)
|
||||
src.active = 2
|
||||
active = FG_ONLINE
|
||||
|
||||
|
||||
/obj/machinery/field/generator/proc/setup_field(NSEW)
|
||||
var/turf/T = src.loc
|
||||
var/obj/machinery/field/generator/G
|
||||
var/turf/T = loc
|
||||
if(!istype(T))
|
||||
return 0
|
||||
|
||||
var/obj/machinery/field/generator/G = null
|
||||
var/steps = 0
|
||||
if(!NSEW)//Make sure its ran right
|
||||
return
|
||||
for(var/dist = 0, dist <= 9, dist += 1) // checks out to 8 tiles away for another generator
|
||||
return 0
|
||||
for(var/dist in 0 to 7) // checks out to 8 tiles away for another generator
|
||||
T = get_step(T, NSEW)
|
||||
if(T.density)//We cant shoot a field though this
|
||||
return 0
|
||||
for(var/atom/A in T.contents)
|
||||
if(ismob(A))
|
||||
continue
|
||||
if(!istype(A,/obj/machinery/field/generator))
|
||||
if((istype(A,/obj/machinery/door)||istype(A,/obj/machinery/the_singularitygen))&&(A.density))
|
||||
return 0
|
||||
steps += 1
|
||||
|
||||
G = locate(/obj/machinery/field/generator) in T
|
||||
if(!isnull(G))
|
||||
if(G)
|
||||
steps -= 1
|
||||
if(!G.active)
|
||||
return 0
|
||||
break
|
||||
if(isnull(G))
|
||||
return
|
||||
T = src.loc
|
||||
for(var/dist = 0, dist < steps, dist += 1) // creates each field tile
|
||||
|
||||
for(var/TC in T.contents)
|
||||
var/atom/A = TC
|
||||
if(ismob(A))
|
||||
continue
|
||||
if(A.density)
|
||||
return 0
|
||||
|
||||
steps++
|
||||
|
||||
if(!G)
|
||||
return 0
|
||||
|
||||
T = loc
|
||||
for(var/dist in 0 to steps) // creates each field tile
|
||||
var/field_dir = get_dir(T,get_step(G.loc, NSEW))
|
||||
T = get_step(T, NSEW)
|
||||
if(!locate(/obj/machinery/field/containment) in T)
|
||||
var/obj/machinery/field/containment/CF = new/obj/machinery/field/containment()
|
||||
CF.set_master(src,G)
|
||||
fields += CF
|
||||
G.fields += CF
|
||||
CF.loc = T
|
||||
CF.dir = field_dir
|
||||
for(var/mob/living/L in CF.loc)
|
||||
fields += CF
|
||||
G.fields += CF
|
||||
for(var/mob/living/L in T)
|
||||
CF.Crossed(L)
|
||||
var/listcheck = 0
|
||||
for(var/obj/machinery/field/generator/FG in connected_gens)
|
||||
if (isnull(FG))
|
||||
continue
|
||||
if(FG == G)
|
||||
listcheck = 1
|
||||
break
|
||||
if(!listcheck)
|
||||
connected_gens.Add(G)
|
||||
listcheck = 0
|
||||
for(var/obj/machinery/field/generator/FG2 in G.connected_gens)
|
||||
if (isnull(FG2))
|
||||
continue
|
||||
if(FG2 == src)
|
||||
listcheck = 1
|
||||
break
|
||||
if(!listcheck)
|
||||
G.connected_gens.Add(src)
|
||||
|
||||
connected_gens |= G
|
||||
G.connected_gens |= src
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/machinery/field/generator/proc/cleanup()
|
||||
clean_up = 1
|
||||
for (var/obj/machinery/field/containment/F in fields)
|
||||
if (isnull(F))
|
||||
continue
|
||||
for (var/F in fields)
|
||||
qdel(F)
|
||||
fields = list()
|
||||
for(var/obj/machinery/field/generator/FG in connected_gens)
|
||||
if (isnull(FG))
|
||||
continue
|
||||
FG.connected_gens.Remove(src)
|
||||
|
||||
for(var/CG in connected_gens)
|
||||
var/obj/machinery/field/generator/FG = CG
|
||||
FG.connected_gens -= src
|
||||
if(!FG.clean_up)//Makes the other gens clean up as well
|
||||
FG.cleanup()
|
||||
connected_gens.Remove(FG)
|
||||
connected_gens = list()
|
||||
connected_gens -= FG
|
||||
clean_up = 0
|
||||
update_icon()
|
||||
|
||||
@@ -359,3 +327,11 @@ field_generator power level display
|
||||
/obj/machinery/field/generator/bump_field(atom/movable/AM as mob|obj)
|
||||
if(fields.len)
|
||||
..()
|
||||
|
||||
#undef FG_UNSECURED
|
||||
#undef FG_SECURED
|
||||
#undef FG_WELDED
|
||||
|
||||
#undef FG_OFFLINE
|
||||
#undef FG_CHARGING
|
||||
#undef FG_ONLINE
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
/obj/item/weapon/gun/energy/gun/advtaser/mounted
|
||||
name = "mounted taser"
|
||||
desc = "An arm mounted dual-mode weapon that fires electrodes and disabler shots."
|
||||
icon_state = "armcannon"
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
icon_state = "taser"
|
||||
item_state = "armcannonstun4"
|
||||
force = 5
|
||||
selfcharge = 1
|
||||
flags = NODROP
|
||||
slot_flags = null
|
||||
w_class = 5
|
||||
can_flashlight = 0
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/advtaser/mounted/dropped()//if somebody manages to drop this somehow...
|
||||
@@ -15,16 +14,13 @@
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/mounted
|
||||
name = "mounted laser"
|
||||
desc = "An arm mounted cannon that fires lethal lasers. Doesn't come with a charge beam."
|
||||
icon_state = "armcannon"
|
||||
desc = "An arm mounted cannon that fires lethal lasers."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
icon_state = "laser"
|
||||
item_state = "armcannonlase"
|
||||
force = 5
|
||||
selfcharge = 1
|
||||
flags = NODROP
|
||||
slot_flags = null
|
||||
w_class = 5
|
||||
materials = null
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/mounted/dropped()
|
||||
..()
|
||||
src.loc = null
|
||||
src.loc = null
|
||||
@@ -121,6 +121,17 @@
|
||||
build_path = /obj/item/organ/internal/cyberimp/eyes/shield
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_breather
|
||||
name = "Breathing Tube implant"
|
||||
desc = "This simple implant adds an internals connector to your back, allowing you to use internals without a mask and protecting you from being choked."
|
||||
id = "ci-breather"
|
||||
req_tech = list("materials" = 3, "biotech" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 35
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 250)
|
||||
build_path = /obj/item/organ/internal/cyberimp/mouth/breathing_tube
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_medical_hud
|
||||
name = "Medical HUD implant"
|
||||
desc = "These cybernetic eyes will display a medical HUD over everything you see. Wiggle eyes to control."
|
||||
@@ -174,7 +185,7 @@
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 400, MAT_GOLD = 400)
|
||||
build_path = /obj/item/organ/internal/cyberimp/brain/anti_drop
|
||||
category = list("Medical Designs")
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_antistun
|
||||
name = "CNS Rebooter implant"
|
||||
@@ -185,7 +196,7 @@
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 500, MAT_GOLD = 1000)
|
||||
build_path = /obj/item/organ/internal/cyberimp/brain/anti_stun
|
||||
category = list("Medical Designs")
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_nutriment
|
||||
name = "Nutriment pump implant"
|
||||
@@ -196,7 +207,7 @@
|
||||
construction_time = 40
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 500, MAT_URANIUM = 500)
|
||||
build_path = /obj/item/organ/internal/cyberimp/chest/nutriment
|
||||
category = list("Medical Designs")
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_nutriment_plus
|
||||
name = "Nutriment pump implant PLUS"
|
||||
@@ -207,7 +218,7 @@
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 500, MAT_URANIUM = 750)
|
||||
build_path = /obj/item/organ/internal/cyberimp/chest/nutriment/plus
|
||||
category = list("Medical Designs")
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_reviver
|
||||
name = "Reviver implant"
|
||||
@@ -237,7 +248,7 @@
|
||||
|
||||
/datum/design/implantcase
|
||||
name = "Implant Case"
|
||||
desc = "A glass case containing an implant."
|
||||
desc = "A glass case for containing an implant."
|
||||
id = "implantcase"
|
||||
req_tech = list("materials" = 1, "biotech" = 2)
|
||||
build_type = PROTOLATHE
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
requires_organic_bodypart = 0
|
||||
|
||||
/datum/surgery/organ_manipulation/soft
|
||||
possible_locs = list("groin", "eyes", "mouth")
|
||||
possible_locs = list("groin", "eyes", "mouth", "l_arm", "r_arm")
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/clamp_bleeders,
|
||||
/datum/surgery_step/incise, /datum/surgery_step/manipulate_organs)
|
||||
|
||||
/datum/surgery/organ_manipulation/alien
|
||||
name = "alien organ manipulation"
|
||||
possible_locs = list("chest", "head", "groin", "eyes", "mouth")
|
||||
possible_locs = list("chest", "head", "groin", "eyes", "mouth", "l_arm", "r_arm")
|
||||
species = list(/mob/living/carbon/alien/humanoid)
|
||||
steps = list(/datum/surgery_step/saw, /datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/manipulate_organs)
|
||||
|
||||
|
||||
@@ -0,0 +1,182 @@
|
||||
/obj/item/organ/internal/cyberimp/arm
|
||||
name = "arm-mounted implant"
|
||||
desc = "You shouldn't see this! Adminhelp and report this as an issue on github!"
|
||||
zone = "r_arm"
|
||||
slot = "r_arm_device"
|
||||
icon_state = "implant-toolkit"
|
||||
w_class = 3
|
||||
actions_types = list(/datum/action/item_action/organ_action/toggle)
|
||||
|
||||
var/list/items_list = list()
|
||||
// Used to store a list of all items inside, for multi-item implants.
|
||||
// I would use contents, but they shuffle on every activation/deactivation leading to interface inconsistencies.
|
||||
|
||||
var/obj/item/holder = null
|
||||
// You can use this var for item path, it would be converted into an item on New()
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/New()
|
||||
..()
|
||||
if(ispath(holder))
|
||||
holder = new holder(src)
|
||||
|
||||
update_icon()
|
||||
slot = zone + "_device"
|
||||
items_list = contents.Copy()
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/update_icon()
|
||||
if(zone == "r_arm")
|
||||
transform = null
|
||||
else // Mirroring the icon
|
||||
transform = matrix(-1, 0, 0, 0, 1, 0)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/examine(mob/user)
|
||||
..()
|
||||
user << "<span class='info'>[src] is assembled in the [zone == "r_arm" ? "right" : "left"] arm configuration. You can use a screwdriver to reassemble it.</span>"
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/attackby(obj/item/weapon/W, mob/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(zone == "r_arm")
|
||||
zone = "l_arm"
|
||||
else
|
||||
zone = "r_arm"
|
||||
slot = zone + "_device"
|
||||
user << "<span class='notice'>You modify [src] to be installed on the [zone == "r_arm" ? "right" : "left"] arm.</span>"
|
||||
update_icon()
|
||||
else if(istype(W, /obj/item/weapon/card/emag))
|
||||
emag_act()
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/Remove(mob/living/carbon/M, special = 0)
|
||||
Retract()
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/emag_act()
|
||||
return 0
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/gun/emp_act(severity)
|
||||
if(prob(15/severity))
|
||||
owner << "<span class='warning'>[src] is hit by EMP!</span>"
|
||||
// give the owner an idea about why his implant is glitching
|
||||
Retract()
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/proc/Retract()
|
||||
if(!holder || (holder in src))
|
||||
return
|
||||
|
||||
owner.visible_message("<span class='notice'>[owner] retracts [holder] back into \his [zone == "r_arm" ? "right" : "left"] arm.</span>",
|
||||
"<span class='notice'>[holder] snaps back into your [zone == "r_arm" ? "right" : "left"] arm.</span>",
|
||||
"<span class='italics'>You hear a short mechanical noise.</span>")
|
||||
|
||||
owner.unEquip(holder, 1)
|
||||
holder.loc = src
|
||||
holder = null
|
||||
playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/proc/Extend(var/obj/item/item)
|
||||
if(!(item in src))
|
||||
return
|
||||
|
||||
holder = item
|
||||
|
||||
holder.flags |= NODROP
|
||||
holder.unacidable = 1
|
||||
holder.slot_flags = null
|
||||
holder.w_class = 5
|
||||
holder.materials = null
|
||||
|
||||
var/arm_slot = (zone == "r_arm" ? slot_r_hand : slot_l_hand)
|
||||
var/obj/item/arm_item = owner.get_item_by_slot(arm_slot)
|
||||
|
||||
if(arm_item)
|
||||
if(!owner.unEquip(arm_item))
|
||||
owner << "<span class='warning'>Your [arm_item] interferes with [src]!</span>"
|
||||
return
|
||||
else
|
||||
owner << "<span class='notice'>You drop [arm_item] to activate [src]!</span>"
|
||||
|
||||
if(zone == "r_arm" ? !owner.put_in_r_hand(holder) : !owner.put_in_l_hand(holder))
|
||||
owner << "<span class='warning'>Your [src] fails to activate!</span>"
|
||||
return
|
||||
|
||||
// Activate the hand that now holds our item.
|
||||
if(zone == "r_arm" ? owner.hand : !owner.hand)
|
||||
owner.swap_hand()
|
||||
|
||||
owner.visible_message("<span class='notice'>[owner] extends [holder] from \his [zone == "r_arm" ? "right" : "left"] arm.</span>",
|
||||
"<span class='notice'>You extend [holder] from your [zone == "r_arm" ? "right" : "left"] arm.</span>",
|
||||
"<span class='italics'>You hear a short mechanical noise.</span>")
|
||||
playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/ui_action_click()
|
||||
if(crit_fail || (!holder && !contents.len))
|
||||
owner << "<span class='warning'>The implant doesn't respond. It seems to be broken...</span>"
|
||||
return
|
||||
|
||||
// You can emag the arm-mounted implant by activating it while holding emag in it's hand.
|
||||
var/arm_slot = (zone == "r_arm" ? slot_r_hand : slot_l_hand)
|
||||
if(istype(owner.get_item_by_slot(arm_slot), /obj/item/weapon/card/emag) && emag_act())
|
||||
return
|
||||
|
||||
if(!holder || (holder in src))
|
||||
holder = null
|
||||
if(contents.len == 1)
|
||||
Extend(contents[1])
|
||||
else // TODO: make it similar to borg's storage-like module selection
|
||||
var/obj/item/choise = input("Activate which item?", "Arm Implant", null, null) as null|anything in items_list
|
||||
if(owner && owner == usr && owner.stat != DEAD && (src in owner.internal_organs) && !holder && istype(choise) && (choise in contents))
|
||||
// This monster sanity check is a nice example of how bad input() is.
|
||||
Extend(choise)
|
||||
else
|
||||
Retract()
|
||||
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/gun/emp_act(severity)
|
||||
if(prob(30/severity) && owner && !crit_fail)
|
||||
Retract()
|
||||
owner.visible_message("<span class='danger'>A loud bang comes from [owner]\'s [zone == "r_arm" ? "right" : "left"] arm!</span>")
|
||||
playsound(get_turf(owner), 'sound/weapons/flashbang.ogg', 100, 1)
|
||||
owner << "<span class='userdanger'>You feel an explosion erupt inside your [zone == "r_arm" ? "right" : "left"] arm as your implant breaks!</span>"
|
||||
owner.adjust_fire_stacks(20)
|
||||
owner.IgniteMob()
|
||||
owner.adjustFireLoss(25)
|
||||
crit_fail = 1
|
||||
else // The gun will still discharge anyway.
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/gun/laser
|
||||
name = "arm-mounted laser implant"
|
||||
desc = "A variant of the arm cannon implant that fires lethal laser beams. The cannon emerges from the subject's arm and remains inside when not in use."
|
||||
icon_state = "arm_laser"
|
||||
origin_tech = "materials=5;combat=5;biotech=4;powerstorage=4;syndicate=5"//this is kinda nutty and i might lower it
|
||||
holder = /obj/item/weapon/gun/energy/laser/mounted
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/gun/laser/l/zone = "l_arm"
|
||||
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/gun/taser
|
||||
name = "arm-mounted taser implant"
|
||||
desc = "A variant of the arm cannon implant that fires electrodes and disabler shots. The cannon emerges from the subject's arm and remains inside when not in use."
|
||||
icon_state = "arm_taser"
|
||||
origin_tech = "materials=5;combat=5;biotech=4;powerstorage=4"
|
||||
holder = /obj/item/weapon/gun/energy/gun/advtaser/mounted
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/gun/taser/l/zone = "l_arm"
|
||||
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/toolset
|
||||
name = "integrated toolset implant"
|
||||
desc = "A stripped-down version of engineering cyborg toolset, designed to be installed on subject's arm. Contains all neccessary tools."
|
||||
origin_tech = "materials=5;engineering=5;biotech=4;powerstorage=3"
|
||||
contents = newlist(/obj/item/weapon/screwdriver/cyborg, /obj/item/weapon/wrench/cyborg, /obj/item/weapon/weldingtool/largetank/cyborg,
|
||||
/obj/item/weapon/crowbar/cyborg, /obj/item/weapon/wirecutters/cyborg, /obj/item/device/multitool/cyborg)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/toolset/l/zone = "l_arm"
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/toolset/emag_act()
|
||||
if(!(locate(/obj/item/weapon/kitchen/knife/combat/cyborg) in items_list))
|
||||
owner << "<span class='notice'>You unlock [src]'s integrated knife!</span>"
|
||||
items_list += new /obj/item/weapon/kitchen/knife/combat/cyborg(src)
|
||||
return 1
|
||||
return 0
|
||||
@@ -0,0 +1,106 @@
|
||||
/obj/item/organ/internal/cyberimp/chest
|
||||
name = "cybernetic torso implant"
|
||||
desc = "implants for the organs in your torso"
|
||||
icon_state = "chest_implant"
|
||||
implant_overlay = "chest_implant_overlay"
|
||||
zone = "chest"
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/nutriment
|
||||
name = "Nutriment pump implant"
|
||||
desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving."
|
||||
icon_state = "chest_implant"
|
||||
implant_color = "#00AA00"
|
||||
var/hunger_threshold = NUTRITION_LEVEL_STARVING
|
||||
var/synthesizing = 0
|
||||
var/poison_amount = 5
|
||||
slot = "stomach"
|
||||
origin_tech = "materials=5;programming=3;biotech=4"
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/nutriment/on_life()
|
||||
if(synthesizing)
|
||||
return
|
||||
|
||||
if(owner.nutrition <= hunger_threshold)
|
||||
synthesizing = 1
|
||||
owner << "<span class='notice'>You feel less hungry...</span>"
|
||||
owner.nutrition += 50
|
||||
spawn(50)
|
||||
synthesizing = 0
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/nutriment/emp_act(severity)
|
||||
if(!owner)
|
||||
return
|
||||
owner.reagents.add_reagent("????",poison_amount / severity) //food poisoning
|
||||
owner << "<span class='warning'>You feel like your insides are burning.</span>"
|
||||
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/nutriment/plus
|
||||
name = "Nutriment pump implant PLUS"
|
||||
desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are hungry."
|
||||
icon_state = "chest_implant"
|
||||
implant_color = "#006607"
|
||||
hunger_threshold = NUTRITION_LEVEL_HUNGRY
|
||||
poison_amount = 10
|
||||
origin_tech = "materials=5;programming=3;biotech=5"
|
||||
|
||||
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/reviver
|
||||
name = "Reviver implant"
|
||||
desc = "This implant will attempt to revive you if you lose consciousness. For the faint of heart!"
|
||||
icon_state = "chest_implant"
|
||||
implant_color = "#AD0000"
|
||||
origin_tech = "materials=6;programming=3;biotech=6;syndicate=4"
|
||||
slot = "heartdrive"
|
||||
var/revive_cost = 0
|
||||
var/reviving = 0
|
||||
var/cooldown = 0
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/reviver/on_life()
|
||||
if(reviving)
|
||||
if(owner.stat == UNCONSCIOUS)
|
||||
spawn(30)
|
||||
if(prob(90) && owner.getOxyLoss())
|
||||
owner.adjustOxyLoss(-3)
|
||||
revive_cost += 5
|
||||
if(prob(75) && owner.getBruteLoss())
|
||||
owner.adjustBruteLoss(-1)
|
||||
revive_cost += 20
|
||||
if(prob(75) && owner.getFireLoss())
|
||||
owner.adjustFireLoss(-1)
|
||||
revive_cost += 20
|
||||
if(prob(40) && owner.getToxLoss())
|
||||
owner.adjustToxLoss(-1)
|
||||
revive_cost += 50
|
||||
else
|
||||
cooldown = revive_cost + world.time
|
||||
reviving = 0
|
||||
return
|
||||
|
||||
if(cooldown > world.time)
|
||||
return
|
||||
if(owner.stat != UNCONSCIOUS)
|
||||
return
|
||||
if(owner.suiciding)
|
||||
return
|
||||
|
||||
revive_cost = 0
|
||||
reviving = 1
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/reviver/emp_act(severity)
|
||||
if(!owner)
|
||||
return
|
||||
|
||||
if(reviving)
|
||||
revive_cost += 200
|
||||
else
|
||||
cooldown += 200
|
||||
|
||||
if(istype(owner, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(H.stat != DEAD && prob(50 / severity))
|
||||
H.heart_attack = 1
|
||||
spawn(600 / severity)
|
||||
H.heart_attack = 0
|
||||
if(H.stat == CONSCIOUS)
|
||||
H << "<span class='notice'>You feel your heart beating again!</span>"
|
||||
@@ -116,7 +116,7 @@
|
||||
implant_color = "#101010"
|
||||
flash_protect = 2
|
||||
aug_message = null
|
||||
eye_color = "fff"
|
||||
eye_color = null
|
||||
|
||||
/obj/item/organ/internal/cyberimp/eyes/shield/emp_act(severity)
|
||||
return
|
||||
@@ -26,6 +26,7 @@
|
||||
icon_state = "brain_implant"
|
||||
implant_overlay = "brain_implant_overlay"
|
||||
zone = "head"
|
||||
w_class = 1
|
||||
|
||||
/obj/item/organ/internal/cyberimp/brain/emp_act(severity)
|
||||
if(!owner)
|
||||
@@ -37,7 +38,7 @@
|
||||
|
||||
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_drop
|
||||
name = "Anti-drop implant"
|
||||
name = "anti-drop implant"
|
||||
desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle."
|
||||
var/active = 0
|
||||
var/l_hand_ignore = 0
|
||||
@@ -101,11 +102,11 @@
|
||||
if(L_item)
|
||||
A = pick(oview(range))
|
||||
L_item.throw_at(A, range, 2)
|
||||
owner << "<span class='notice'>Your left arm spasms and throws the [L_item.name]!</span>"
|
||||
owner << "<span class='warning'>Your left arm spasms and throws the [L_item.name]!</span>"
|
||||
if(R_item)
|
||||
A = pick(oview(range))
|
||||
R_item.throw_at(A, range, 2)
|
||||
owner << "<span class='notice'>Your right arm spasms and throws the [R_item.name]!</span>"
|
||||
owner << "<span class='warning'>Your right arm spasms and throws the [R_item.name]!</span>"
|
||||
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_drop/proc/release_items()
|
||||
if(!l_hand_ignore && l_hand_obj in owner.contents)
|
||||
@@ -144,185 +145,24 @@
|
||||
crit_fail = 0
|
||||
|
||||
|
||||
//[[[[CHEST]]]]
|
||||
//[[[[MOUTH]]]]
|
||||
/obj/item/organ/internal/cyberimp/mouth
|
||||
zone = "mouth"
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest
|
||||
name = "cybernetic torso implant"
|
||||
desc = "implants for the organs in your torso"
|
||||
icon_state = "chest_implant"
|
||||
implant_overlay = "chest_implant_overlay"
|
||||
zone = "chest"
|
||||
/obj/item/organ/internal/cyberimp/mouth/breathing_tube
|
||||
name = "breathing tube implant"
|
||||
desc = "This simple implant adds an internals connector to your back, allowing you to use internals without a mask and protecting you from being choked."
|
||||
icon_state = "breathing_tube"
|
||||
slot = "breathing_tube"
|
||||
w_class = 1
|
||||
origin_tech = "materials=2;biotech=3"
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/nutriment
|
||||
name = "Nutriment pump implant"
|
||||
desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving."
|
||||
icon_state = "chest_implant"
|
||||
implant_color = "#00AA00"
|
||||
var/hunger_threshold = NUTRITION_LEVEL_STARVING
|
||||
var/synthesizing = 0
|
||||
var/poison_amount = 5
|
||||
slot = "stomach"
|
||||
origin_tech = "materials=5;programming=3;biotech=4"
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/nutriment/on_life()
|
||||
if(synthesizing)
|
||||
return
|
||||
|
||||
if(owner.nutrition <= hunger_threshold)
|
||||
synthesizing = 1
|
||||
owner << "<span class='notice'>You feel less hungry...</span>"
|
||||
owner.nutrition += 50
|
||||
spawn(50)
|
||||
synthesizing = 0
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/nutriment/emp_act(severity)
|
||||
if(!owner)
|
||||
return
|
||||
owner.reagents.add_reagent("????",poison_amount / severity) //food poisoning
|
||||
owner << "<span class='warning'>You feel like your insides are burning.</span>"
|
||||
/obj/item/organ/internal/cyberimp/mouth/breathing_tube/emp_act(severity)
|
||||
if(prob(60/severity))
|
||||
owner << "<span class='warning'>Your breathing tube suddenly closes!</span>"
|
||||
owner.losebreath += 2
|
||||
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/nutriment/plus
|
||||
name = "Nutriment pump implant PLUS"
|
||||
desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are hungry."
|
||||
icon_state = "chest_implant"
|
||||
implant_color = "#006607"
|
||||
hunger_threshold = NUTRITION_LEVEL_HUNGRY
|
||||
poison_amount = 10
|
||||
origin_tech = "materials=5;programming=3;biotech=5"
|
||||
|
||||
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/reviver
|
||||
name = "Reviver implant"
|
||||
desc = "This implant will attempt to revive you if you lose consciousness. For the faint of heart!"
|
||||
icon_state = "chest_implant"
|
||||
implant_color = "#AD0000"
|
||||
origin_tech = "materials=6;programming=3;biotech=6;syndicate=4"
|
||||
slot = "heartdrive"
|
||||
var/revive_cost = 0
|
||||
var/reviving = 0
|
||||
var/cooldown = 0
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/reviver/on_life()
|
||||
if(reviving)
|
||||
if(owner.stat == UNCONSCIOUS)
|
||||
spawn(30)
|
||||
if(prob(90) && owner.getOxyLoss())
|
||||
owner.adjustOxyLoss(-3)
|
||||
revive_cost += 5
|
||||
if(prob(75) && owner.getBruteLoss())
|
||||
owner.adjustBruteLoss(-1)
|
||||
revive_cost += 20
|
||||
if(prob(75) && owner.getFireLoss())
|
||||
owner.adjustFireLoss(-1)
|
||||
revive_cost += 20
|
||||
if(prob(40) && owner.getToxLoss())
|
||||
owner.adjustToxLoss(-1)
|
||||
revive_cost += 50
|
||||
else
|
||||
cooldown = revive_cost + world.time
|
||||
reviving = 0
|
||||
return
|
||||
|
||||
if(cooldown > world.time)
|
||||
return
|
||||
if(owner.stat != UNCONSCIOUS)
|
||||
return
|
||||
if(owner.suiciding)
|
||||
return
|
||||
|
||||
revive_cost = 0
|
||||
reviving = 1
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/reviver/emp_act(severity)
|
||||
if(!owner)
|
||||
return
|
||||
|
||||
if(reviving)
|
||||
revive_cost += 200
|
||||
else
|
||||
cooldown += 200
|
||||
|
||||
if(istype(owner, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(H.stat != DEAD && prob(50 / severity))
|
||||
H.heart_attack = 1
|
||||
spawn(600 / severity)
|
||||
H.heart_attack = 0
|
||||
if(H.stat == CONSCIOUS)
|
||||
H << "<span class='notice'>You feel your heart beating again!</span>"
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod//dummy parent item for making arm-mod implants. works best with nodrop items that are sent to nullspace upon being dropped.
|
||||
name = "Arm-mounted item implant"
|
||||
desc = "You shouldn't see this! Adminhelp and report this as an issue on github!"
|
||||
icon_state = "chest_implant"
|
||||
implant_color = "#007ACC"
|
||||
slot = "shoulders"
|
||||
origin_tech = "materials=5;biotech=4;powerstorage=4"
|
||||
actions_types = list(/datum/action/item_action/organ_action/toggle)
|
||||
var/obj/holder//is defined as the retractable item itself. ensure this is defined somewhere!
|
||||
var/out = 0//determines if the item is in the owner's hand or not
|
||||
var/overloaded = 0//is set to 1 when owner gets EMPed. if set to 1, implant doesn't work.
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/ui_action_click()
|
||||
if(overloaded)//ensure the implant isn't broken
|
||||
owner << "<span class='warning'>The implant doesn't respond. It seems to be broken...</span>"
|
||||
return
|
||||
if(holder == null)
|
||||
owner << "<span class='warning'>You should not be attempting to use this implant, as it is a dummy item that should never appear. Please adminhelp and report this as an issue on github.</span>"
|
||||
return
|
||||
if(out)//check if the owner has the item out already
|
||||
owner.unEquip(holder, 1)//if he does, take it away. then,
|
||||
holder.loc = null//stash it in nullspace
|
||||
out = 0//and set this to clarify the item isn't out.
|
||||
owner << "<span class='notice'>You retract [holder].</span>"
|
||||
playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1)
|
||||
else//if he doesn't have the item out
|
||||
if(owner.put_in_hands(holder))//put it in his hands.
|
||||
out = 1
|
||||
owner << "<span class='notice'>You extend [holder]!</span>"
|
||||
playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1)
|
||||
else//if this fails to put the item in his hands,
|
||||
holder.loc = null//keep it in nullspace
|
||||
owner << "<span class='warning'>You can't extend [holder] if you can't use your hands!</span>"
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/emp_act(severity)//if the implant gets EMPed...
|
||||
if(!owner || overloaded)//ensure that it's in an owner and that it's not already EMPed, then...
|
||||
return
|
||||
if(out)//check if he has the item out...
|
||||
owner.unEquip(holder, 1)//if he does, take it away.
|
||||
holder.loc = null
|
||||
out = 0
|
||||
owner << "<span class='warning'>[holder] forcibly retracts into your arm.</span>"
|
||||
owner.visible_message("<span class='danger'>A loud bang comes from [owner]...</span>")
|
||||
playsound(get_turf(owner), 'sound/weapons/flashbang.ogg', 100, 1)
|
||||
owner << "<span class='warning'>You feel an explosion erupt inside you as your chest implant breaks. Is it hot in here?</span>"
|
||||
owner.adjust_fire_stacks(20)
|
||||
owner.IgniteMob()//ignite the owner, as well as
|
||||
owner.say("AUUUUUUUUUUUUUUUUUUGH!!")
|
||||
owner.adjustFireLoss(25)//severely injure him!
|
||||
overloaded = 1//then make sure this can't happen again by breaking the implant.
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/tase//mounted, self-charging taser!
|
||||
name = "Arm-cannon taser implant"
|
||||
desc = "A variant of the arm cannon implant that fires electrodes and disabler shots. The cannon emerges from the subject's arms and remains in the shoulders when not in use."
|
||||
icon_state = "armcannon_tase_implant"
|
||||
origin_tech = "materials=5;combat=5;biotech=4;powerstorage=4"
|
||||
actions_types = list(/datum/action/item_action/organ_action/toggle)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/tase/New()//when the implant is created...
|
||||
holder = new /obj/item/weapon/gun/energy/gun/advtaser/mounted(src)//assign a brand new item to it. (in this case, a gun)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/lase//mounted, self-charging laser!
|
||||
name = "Arm-cannon laser implant"
|
||||
desc = "A variant of the arm cannon implant that fires lethal laser beams. The cannon emerges from the subject's arms and remains in the shoulders when not in use."
|
||||
icon_state = "armcannon_lase_implant"
|
||||
origin_tech = "materials=5;combat=5;biotech=4;powerstorage=4;syndicate=5"//this is kinda nutty and i might lower it
|
||||
actions_types = list(/datum/action/item_action/organ_action/toggle)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/lase/New()
|
||||
holder = new /obj/item/weapon/gun/energy/laser/mounted(src)
|
||||
|
||||
//BOX O' IMPLANTS
|
||||
|
||||
|
||||
@@ -26,9 +26,7 @@ mob/living/carbon/getorganszone(zone, var/subzones = 0)
|
||||
return returnorg
|
||||
|
||||
mob/living/carbon/getorganslot(slot)
|
||||
for(var/obj/item/organ/internal/O in internal_organs)
|
||||
if(slot == O.slot)
|
||||
return O
|
||||
return internal_organs_slot[slot]
|
||||
|
||||
mob/proc/getlimb()
|
||||
return
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
throwforce = 0
|
||||
var/zone = "chest"
|
||||
var/slot
|
||||
// DO NOT add slots with matching names to different zones - it will break internal_organs_slot list!
|
||||
var/vital = 0
|
||||
|
||||
|
||||
@@ -18,6 +19,7 @@
|
||||
|
||||
owner = M
|
||||
M.internal_organs |= src
|
||||
M.internal_organs_slot[slot] = src
|
||||
loc = null
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
@@ -28,6 +30,8 @@
|
||||
owner = null
|
||||
if(M)
|
||||
M.internal_organs -= src
|
||||
if(M.internal_organs_slot[slot] == src)
|
||||
M.internal_organs_slot.Remove(slot)
|
||||
if(vital && !special)
|
||||
M.death()
|
||||
for(var/X in actions)
|
||||
@@ -41,6 +45,12 @@
|
||||
/obj/item/organ/internal/proc/on_life()
|
||||
return
|
||||
|
||||
/obj/item/organ/internal/examine(mob/user)
|
||||
..()
|
||||
if(status == ORGAN_ROBOTIC && crit_fail)
|
||||
user << "<span class='warning'>[src] seems to be broken!</span>"
|
||||
|
||||
|
||||
/obj/item/organ/internal/proc/prepare_eat()
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/organ/S = new
|
||||
S.name = name
|
||||
@@ -56,7 +66,6 @@
|
||||
name = "appendix"
|
||||
icon_state = "appendix"
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
|
||||
list_reagents = list("nutriment" = 5)
|
||||
|
||||
|
||||
@@ -92,7 +101,6 @@
|
||||
zone = "chest"
|
||||
slot = "heart"
|
||||
origin_tech = "biotech=3"
|
||||
vital = 1
|
||||
var/beating = 1
|
||||
var/icon_base = "heart"
|
||||
|
||||
@@ -102,16 +110,46 @@
|
||||
else
|
||||
icon_state = "[icon_base]-off"
|
||||
|
||||
/obj/item/organ/internal/heart/Insert(mob/living/carbon/M, special = 0)
|
||||
..()
|
||||
beating = 1
|
||||
update_icon()
|
||||
|
||||
/obj/item/organ/internal/heart/Remove(mob/living/carbon/M, special = 0)
|
||||
..()
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.stat == DEAD || H.heart_attack)
|
||||
Stop()
|
||||
return
|
||||
if(!special)
|
||||
H.heart_attack = 1
|
||||
|
||||
spawn(120)
|
||||
beating = 0
|
||||
update_icon()
|
||||
if(!owner)
|
||||
Stop()
|
||||
|
||||
/obj/item/organ/internal/heart/attack_self(mob/user)
|
||||
..()
|
||||
if(!beating)
|
||||
Restart()
|
||||
spawn(80)
|
||||
if(!owner)
|
||||
Stop()
|
||||
|
||||
|
||||
/obj/item/organ/internal/heart/Insert(mob/living/carbon/M, special = 0)
|
||||
..()
|
||||
if(ishuman(M) && beating)
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.heart_attack)
|
||||
H.heart_attack = 0
|
||||
return
|
||||
|
||||
/obj/item/organ/internal/heart/proc/Stop()
|
||||
beating = 0
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
/obj/item/organ/internal/heart/proc/Restart()
|
||||
beating = 1
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
/obj/item/organ/internal/heart/prepare_eat()
|
||||
var/obj/S = ..()
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
author: CoreOverload
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "A new \"breathing tube\" mouth implant. It allows you to use internals without a mask and protects you from being choked. It doesn't protect you from the grab itself."
|
||||
- tweak: "Arm cannon implants are now actually implanted into the arms, not into the chest."
|
||||
- bugfix: "Arm cannons have an action button again."
|
||||
- tweak: "Heart removal is no longer instakill. It puts you in condition similar to heart attack instead. You can fix it by installing a new heart and applying defibrillator if it wasn't beating."
|
||||
- rscadd: "You can now make a stopped heart beat again by squeezing it. It will stop beating very soon, so you better be quick if you want to install it without using defibrillator."
|
||||
@@ -0,0 +1,5 @@
|
||||
author: PKPenguin321
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Bolas are now in the game. They're a simple device fashioned from a cable and two weights on the end, designed to entangle enemies by wrapping around their legs upon being thrown at them. The victim can remove them rather quickly, however."
|
||||
- rscadd: "Bolas can be crafted by applying 6 metal sheets to cablecuffs. They can also be tablecrafted."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: bgobandit
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "CentComm has been informed that cargo is receiving new forms of contraband in crates. Remember, Nanotrasen has a zero-tolerance contraband policy!"
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 23 KiB |
@@ -1600,6 +1600,8 @@
|
||||
#include "code\modules\surgery\surgery_step.dm"
|
||||
#include "code\modules\surgery\tail_modification.dm"
|
||||
#include "code\modules\surgery\tools.dm"
|
||||
#include "code\modules\surgery\organs\augments_arms.dm"
|
||||
#include "code\modules\surgery\organs\augments_chest.dm"
|
||||
#include "code\modules\surgery\organs\augments_external.dm"
|
||||
#include "code\modules\surgery\organs\augments_eyes.dm"
|
||||
#include "code\modules\surgery\organs\augments_internal.dm"
|
||||
|
||||
Reference in New Issue
Block a user