MERGE CONFLICTS SUCK

Stupid Bolas
This commit is contained in:
GunHog
2016-02-29 11:28:49 -06:00
46 changed files with 748 additions and 546 deletions
@@ -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" = (
+41 -39
View File
@@ -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
+3 -4
View File
@@ -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.
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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>"
+1 -1
View File
@@ -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>"
+7 -1
View File
@@ -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>"
+39
View File
@@ -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
+2
View File
@@ -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"
+10 -3
View File
@@ -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)
+1 -1
View File
@@ -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
+7 -4
View File
@@ -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
+8
View File
@@ -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
+4 -7
View File
@@ -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)
+3
View File
@@ -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
+7 -3
View File
@@ -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)
+119 -143
View File
@@ -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
+7 -11
View File
@@ -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
+2 -2
View File
@@ -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>"
+1 -1
View File
@@ -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
+18 -178
View File
@@ -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
+1 -3
View File
@@ -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
+47 -9
View File
@@ -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

+2
View File
@@ -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"