diff --git a/_maps/map_files/RandomZLevels/terrorspiders.dmm b/_maps/map_files/RandomZLevels/terrorspiders.dmm index c9f87baae70..1b378c09f9a 100644 --- a/_maps/map_files/RandomZLevels/terrorspiders.dmm +++ b/_maps/map_files/RandomZLevels/terrorspiders.dmm @@ -521,7 +521,7 @@ "ka" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall) "kb" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall) "kc" = (/obj/machinery/door/poddoor{id_tag = "UO71_Start"; name = "UO71 Sealed Facility"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) -"kd" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/command{icon_state = "door_closed"; lockdownbyai = 0; locked = 0; name = "Gateway Chamber"; req_access_txt = "271"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) +"kd" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/command{name = "Gateway"; req_access_txt = "271"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "ke" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'DANGER - LETHAL BIOHAZARDS WITHIN'"; name = "CONTAINMENT AREA"},/turf/simulated/wall,/area/awaymission/UO71/science) "kf" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{tag = "icon-whitepurple (NORTHWEST)"; icon_state = "whitepurple"; dir = 9},/area/awaymission/UO71/science) "kg" = (/turf/simulated/floor/plasteel{tag = "icon-whitepurple (NORTHEAST)"; icon_state = "whitepurple"; dir = 5},/area/awaymission/UO71/science) @@ -548,7 +548,7 @@ "kB" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/floor/plating{broken = 1; icon_state = "platingdmg1"; tag = "icon-platingdmg1"},/area/awaymission/UO71/centralhall) "kC" = (/obj/structure/closet/crate,/obj/effect/decal/cleanable/dirt,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/multitool,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall) "kD" = (/obj/structure/closet/l3closet/general,/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall) -"kE" = (/obj/structure/table,/obj/machinery/computer/id_upgrader,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warndark"; tag = "icon-warndark (EAST)"},/area/awaymission/UO71/gateway) +"kE" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "kF" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/gateway) "kG" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/suit_storage_unit/engine,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "kH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/UO71/gateway) @@ -596,11 +596,11 @@ "lx" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/multitool,/obj/structure/sign/nosmoking_2{pixel_x = -32},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warndark"; tag = "icon-warndark (EAST)"},/area/awaymission/UO71/gateway) "ly" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "lz" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) -"lA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/obj/machinery/camera{c_tag = "Gateway Ready Room"; dir = 2; network = list("UO71")},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) +"lA" = (/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/obj/machinery/camera{c_tag = "Gateway Ready Room"; dir = 2; network = list("UO71")},/obj/structure/table,/obj/machinery/computer/id_upgrader,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/gateway) "lB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "lC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "lD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/gateway) -"lE" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor{id_tag = "UO71_Start"; name = "UO71 Sealed Facility"},/obj/machinery/door/airlock/command{icon_state = "door_closed"; lockdownbyai = 0; locked = 0; name = "Gateway Ready Room"; req_access_txt = "271"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) +"lE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "lF" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/gateway) "lG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/gateway) "lH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/awaymission/UO71/science) @@ -660,10 +660,10 @@ "mJ" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaymission/UO71/eng) "mK" = (/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/machinery/door_control{desc = "A remote control-switch for secure storage."; id = "UO71_Secure Storage"; name = "Engineering Secure Storage"; pixel_x = 6; pixel_y = -24; req_access_txt = "271"},/turf/simulated/floor/plating,/area/awaymission/UO71/eng) "mL" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) -"mM" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) -"mN" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) +"mM" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/command{name = "Gateway"; req_access_txt = "271"},/obj/machinery/door/poddoor{id_tag = "UO71_Start"; name = "UO71 Sealed Facility"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) +"mN" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "mO" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) -"mP" = (/obj/structure/cable,/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 2; locked = 0; name = "UO71 Gateway APC"; pixel_x = 0; pixel_y = -25; req_access = null; start_charge = 100},/obj/machinery/light/small,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/gun/energy/laser/awaymission_aeg,/obj/item/weapon/gun/energy/laser/awaymission_aeg,/obj/item/weapon/gun/energy/laser/awaymission_aeg,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) +"mP" = (/obj/structure/cable,/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 2; locked = 0; name = "UO71 Gateway APC"; pixel_x = 0; pixel_y = -25; req_access = null; start_charge = 100},/obj/machinery/light/small,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/gun/energy/laser/awaymission_aeg,/obj/item/weapon/gun/energy/laser/awaymission_aeg,/obj/item/weapon/gun/energy/laser/awaymission_aeg,/obj/item/weapon/gun/energy/laser/awaymission_aeg,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "mQ" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "mR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/rust,/area/awaymission/UO71/science) "mS" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) @@ -743,7 +743,7 @@ "oo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science) "op" = (/obj/machinery/light/small{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/table/reinforced,/obj/item/device/taperecorder{pixel_x = -3},/obj/item/device/paicard{pixel_x = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/science) "oq" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/science) -"or" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/item/device/radio/off,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/awaymission/UO71/science) +"or" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/item/device/radio/off,/obj/machinery/light/small{dir = 8},/obj/item/weapon/screwdriver,/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/awaymission/UO71/science) "os" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "red"},/area/awaymission/UO71/science) "ot" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/awaymission/UO71/centralhall) "ou" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/awaymission/UO71/centralhall) @@ -1035,7 +1035,7 @@ "tU" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 6; icon_state = "yellow"},/area/awaymission/UO71/eng) "tV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/awaymission/UO71/eng) "tW" = (/obj/machinery/computer/security{network = list("UO71")},/obj/machinery/door_control{desc = "A remote control-switch for the security privacy shutters."; id = "UO71_EngineeringOffice"; name = "Privacy Shutters"; pixel_x = -24; pixel_y = 6; req_access_txt = "271"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/awaymission/UO71/eng) -"tX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 7; tag = "icon-manifold-r-f (WEST)"},/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/turf/simulated/floor/plasteel{dir = 4; icon_state = "red"},/area/awaymission/UO71/eng) +"tX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 7; tag = "icon-manifold-r-f (WEST)"},/obj/item/device/radio/off,/obj/item/weapon/screwdriver,/turf/simulated/floor/plasteel{dir = 4; icon_state = "red"},/area/awaymission/UO71/eng) "tY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng) "tZ" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/awaymission/UO71/eng) "ua" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/poddoor/preopen{id_tag = "UO71_Engineering"; name = "engineering security door"},/turf/simulated/floor/plating,/area/awaymission/UO71/eng) @@ -1220,7 +1220,7 @@ "xx" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/mining) "xy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaymission/UO71/mining) "xz" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng) -"xA" = (/mob/living/simple_animal/hostile/poison/terror_spider/white,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng) +"xA" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng) "xB" = (/obj/structure/stool/bed/chair/office,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng) "xC" = (/obj/machinery/door/airlock{name = "Private Restroom"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/UO71/eng) "xD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaymission/UO71/eng) @@ -1420,10 +1420,10 @@ aaaaaaaaaaaaaaabababababfMiuitiwiviziyiGiEixiHiJiAiBiCiDgagaiOiOgaiFgafNiPiQgAfO aaaaaaaaaaaaaaabababababfMjaiZjcjbjejdjfjfjjjhjkfMababababjgjnjnjgjifOfOjojpgzfOababababzcyXzczcyYjqjqyYzczczcabfejsjrfefeababababfejtjugEiohMjyjvjAfbfbjBjwjwjxjxjCjzabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababfLjEjDiwjFjHfLfLfMfMjIjJfMababababjGjKjKjGjifOfOjLjNjMfOabababababjlababjGjOjOjGababababfbjPfRjQfefbfbfbfefejRjShhjThjhjgEgEjUjWjVjYjXkajZkbfeabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababfMfLfMkdkcfLfLkkkifMklkqfLfOfOfOfOkekfkgkekhfNkrkjktksfOfOfOfOfOfOkmfOfOknkokpkefOfOfNfOfOkufRfRkvfRfFfRfRjrgEgEgEkwiogEkxkykykAkzfbkBkDkCfefbabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababfLkEiwkFfLkGkRkHixkSkUkTkIkJkKkLkMkJkNkOkPkQlckVleldkJkWkNkJkJkXkYkZlalblglflhfOljlilkfOlmlllllllnlllplojrgEiogElrlqlqlqlulslwlvfbfbfefefeababababababababababababababltltltltltabababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababfLlxlzlylAlylClBlElDlGlFlHlHlIlHlJlHlLlKlNlMlPlOlRlQlTlSlVlUlXlWlXlXlXlYgAlflhlZgAgAgAlZmbmafFmcfbfefbfbfefefbfbfbmdmehhmffbjsmgfeababababababababababababababababababltnBmzmjltabababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababfLkEiwkFlAkGkRkHixkSkUkTkIkJkKkLkMkJkNkOkPkQlckVleldkJkWkNkJkJkXkYkZlalblglflhfOljlilkfOlmlllllllnlllplojrgEiogElrlqlqlqlulslwlvfbfbfefefeababababababababababababababltltltltltabababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababfLlxlzlylElylClBmMlDlGlFlHlHlIlHlJlHlLlKlNlMlPlOlRlQlTlSlVlUlXlWlXlXlXlYgAlflhlZgAgAgAlZmbmafFmcfbfefbfbfefefbfbfbmdmehhmffbjsmgfeababababababababababababababababababltnBmzmjltabababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababfMmkmmmliwjHjHmnfLmompfMfNfOfOfOfNfOfOmqfOfOmsmrfOfOfOmtfOfOfOfNmumumumumvlflhfOokmwqDtDqKfEmBmAfbmCmDmCfemEmGmFfefefbfbfefbmImHfeababababababababababababababababababltmKmJmjltabababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababfLmLmNmMmPmOmSmQfMfLfLfLabfOgAgAmTfOmVmUmTfNmRmWfOmXmZmYnbnancfOnendnfmumvlbfOfOmRfOfOfNnhngfefefbninknjfbnlnnnmfenonsnqntfbnumHfbabababababababababababababababababnpltltnvnrnrnpababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababfLmLmlmNmPmOmSmQfMfLfLfLabfOgAgAmTfOmVmUmTfNmRmWfOmXmZmYnbnancfOnendnfmumvlbfOfOmRfOfOfNnhngfefefbninknjfbnlnnnmfenonsnqntfbnumHfbabababababababababababababababababnpltltnvnrnrnpababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababfLfLfMfMfLfLfMfMfLababababfOgAgAgAfOnwmUnxfOmRnyfOnzojnAnDnanafNnFnEnGmumvnCfNnHzDnInInKnMnLnOnNfbfXnPfbfefXnQfbfbnRfFnSnVnUnZnWfbabababababababababababababababababnToaobobobocnpababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababfOnXnYgAodgAoeoffOkmogfOohojoiooonopfNoroqosmumvlbfNogzHolomomouotowovoyoxoAozoCoBoAoDoFoEoHoGoJoIoNoMfbabababababababababababababababababnToOoQoPoQoOnpnpnpnpabababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababfOoKoLgAfOoSoRoTfOkmoUfOoVojoWoYoXoZfNpbpapdpcmvlbfOnymRfbfbfbpfpellpgpiphpkpjplphpnpmpppopkpqprfbptpsfeabababababababababababababababababnppwpypxpApznppupvnpabababababababababababababababaaaaaaaaaaaaaa diff --git a/code/modules/events/spider_terror.dm b/code/modules/events/spider_terror.dm index ebcf1346db9..c956d2fa551 100644 --- a/code/modules/events/spider_terror.dm +++ b/code/modules/events/spider_terror.dm @@ -22,7 +22,7 @@ switch(infestation_type) if(1) spider_type = /mob/living/simple_animal/hostile/poison/terror_spider/green - spawncount = 4 + spawncount = 5 if(2) spider_type = /mob/living/simple_animal/hostile/poison/terror_spider/white spawncount = 2 @@ -38,8 +38,7 @@ while(spawncount >= 1 && vents.len) var/obj/vent = pick(vents) var/obj/structure/spider/spiderling/terror_spiderling/S = new(vent.loc) - S.name = "evil-looking spiderling" S.grow_as = spider_type - S.amount_grown = 75 + S.amount_grown = 90 vents -= vent spawncount-- \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/__defines.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/__defines.dm index eefc506ff99..b4e2728eabb 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/__defines.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/__defines.dm @@ -17,6 +17,7 @@ #define TS_DESC_WHITE "White - Infect" #define TS_DESC_BLACK "Black - Poison" #define TS_DESC_PURPLE "Purple - Guard" +#define TS_DESC_BROWN "Brown - Breacher" #define TS_DESC_PRINCE "Prince - WAR" #define TS_DESC_MOTHER "Mother - HORROR" #define TS_DESC_QUEEN "Queen - LEADER" diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm index 90cef39a98f..f2bed558b8c 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm @@ -121,6 +121,7 @@ if(thick) W.opacity = 1 W.name = "thick terror web" + W.health = W.health * 2 if(web_infects) W.infectious = 1 W.name = "sharp terror web" @@ -251,17 +252,32 @@ stop_automated_movement = 0 /mob/living/simple_animal/hostile/poison/terror_spider/proc/DoVentSmash() + var/valid_target = FALSE + for(var/obj/machinery/atmospherics/unary/vent_pump/P in range(1, get_turf(src))) + if(P.welded) + valid_target = TRUE + for(var/obj/machinery/atmospherics/unary/vent_scrubber/C in range(1, get_turf(src))) + if(C.welded) + valid_target = TRUE + if(!valid_target) + to_chat(src, "No welded vent or scrubber nearby!") + return + playsound(get_turf(src), 'sound/machines/airlock_alien_prying.ogg', 50, 0) if(do_after(src, 40, target = loc)) - for(var/obj/machinery/atmospherics/unary/vent_pump/P in view(1, src)) + for(var/obj/machinery/atmospherics/unary/vent_pump/P in range(1, get_turf(src))) if(P.welded) P.welded = 0 P.update_icon() + P.update_pipe_image() + forceMove(P.loc) P.visible_message("[src] smashes the welded cover off [P]!") return - for(var/obj/machinery/atmospherics/unary/vent_scrubber/C in view(1, src)) + for(var/obj/machinery/atmospherics/unary/vent_scrubber/C in range(1, get_turf(src))) if(C.welded) C.welded = 0 C.update_icon() + C.update_pipe_image() + forceMove(C.loc) C.visible_message("[src] smashes the welded cover off [C]!") return to_chat(src, "There is no welded vent or scrubber close enough to do this.") \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/black.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/black.dm index c1a7bf45da7..982a0eaae90 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/black.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/black.dm @@ -39,9 +39,8 @@ visible_message("[src] bites [target], but cannot inject venom into their [inject_target]!") L.attack_animal(src) if(!ckey && (!(target in enemies) || L.reagents.has_reagent("terror_black_toxin", 60))) - step_away(src,L) - step_away(src,L) + step_away(src, L) + step_away(src, L) LoseTarget() - for(var/i in 0 to 3) - step_away(src, L) - visible_message("[src] warily eyes [L] from a distance.") \ No newline at end of file + step_away(src, L) + visible_message("[src] jumps away from [L]!") \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/brown.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/brown.dm new file mode 100644 index 00000000000..af5bd4495ee --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/brown.dm @@ -0,0 +1,34 @@ +// -------------------------------------------------------------------------------- +// ----------------- TERROR SPIDERS: T2 BROWN TERROR ------------------------------ +// -------------------------------------------------------------------------------- +// -------------: ROLE: breaking vents +// -------------: AI: ventcrawls a lot, breaks open vents +// -------------: SPECIAL: ventsmash +// -------------: TO FIGHT IT: blast it before it can get away! +// -------------: SPRITES FROM: IK3I + +/mob/living/simple_animal/hostile/poison/terror_spider/brown + name = "Brown Terror spider" + desc = "An ominous-looking spider, colored brown like the dirt it crawled out of. Its forearms have sharp digging claws." + spider_role_summary = "Vent-breaking spider that breaches into new areas." + ai_target_method = TS_DAMAGE_BRUTE + icon_state = "terror_brown" + icon_living = "terror_brown" + icon_dead = "terror_brown_dead" + maxHealth = 120 // Low + health = 120 + melee_damage_lower = 20 + melee_damage_upper = 30 + move_to_delay = 20 // Slow. + spider_opens_doors = 2 // Breach specialist. + environment_smash = ENVIRONMENT_SMASH_RWALLS // Breaks anything. + spider_tier = TS_TIER_2 + ai_ventbreaker = 1 + freq_ventcrawl_combat = 600 // Ventcrawls very frequently, breaking open vents as it goes. + freq_ventcrawl_idle = 1800 + var/datum/action/innate/terrorspider/ventsmash/ventsmash_action + +/mob/living/simple_animal/hostile/poison/terror_spider/brown/New() + ..() + ventsmash_action = new() + ventsmash_action.Grant(src) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm index fdaa36257d2..06b28c6400e 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm @@ -29,19 +29,16 @@ /mob/living/simple_animal/hostile/poison/terror_spider/gray/spider_specialattack(mob/living/carbon/human/L, poisonable) - if(!poisonable) - ..() - return - if(L.silent >= 10) - L.attack_animal(src) + var/obj/structure/spider/terrorweb/W = locate() in get_turf(L) + if(W) + melee_damage_lower = initial(melee_damage_lower) * 2 + melee_damage_upper = initial(melee_damage_upper) * 2 + visible_message("[src] savagely mauls [target] while they are stuck in the web!") else - var/inject_target = pick("chest","head") - if(L.stunned || L.can_inject(null,0,inject_target,0)) - L.Silence(20) // instead of having a venom that only lasts seconds, we just add the silence directly. - visible_message("[src] buries grey fangs deep into the [inject_target] of [target]!") - else - visible_message("[src] bites [target], but cannot inject venom into their [inject_target]!") - L.attack_animal(src) + melee_damage_lower = initial(melee_damage_lower) + melee_damage_upper = initial(melee_damage_upper) + visible_message("[src] bites [target]!") + L.attack_animal(src) /mob/living/simple_animal/hostile/poison/terror_spider/gray/adjustBruteLoss(damage) ..(damage) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm index afb2785bb10..21b1276425c 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm @@ -25,7 +25,6 @@ ventcrawler = 0 ai_ventcrawls = 0 environment_smash = ENVIRONMENT_SMASH_RWALLS - loot = list(/obj/item/clothing/accessory/medal) idle_ventcrawl_chance = 0 spider_tier = TS_TIER_3 spider_opens_doors = 2 diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm index 6a19cf1122c..c9309715443 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm @@ -20,7 +20,7 @@ health = 200 melee_damage_lower = 15 melee_damage_upper = 25 - move_to_delay = 6 + move_to_delay = 4 spider_tier = TS_TIER_2 spider_opens_doors = 2 ventcrawler = 0 @@ -30,7 +30,12 @@ var/dcheck_counter = 0 var/queen_visible = 1 var/cycles_noqueen = 0 + var/datum/action/innate/terrorspider/thickweb/thickweb_action +/mob/living/simple_animal/hostile/poison/terror_spider/purple/New() + ..() + thickweb_action = new() + thickweb_action.Grant(src) /mob/living/simple_animal/hostile/poison/terror_spider/purple/death(gibbed) if(spider_myqueen) @@ -43,14 +48,6 @@ visible_message("[src] chitters in the direction of [Q]!") . = ..() -/mob/living/simple_animal/hostile/poison/terror_spider/purple/spider_specialattack(mob/living/carbon/human/L, poisonable) - if(cycles_noqueen < 6 && prob(10)) - visible_message("[src] rams into [L], knocking them to the floor!") - L.Weaken(5) - L.Stun(5) - else - ..() - /mob/living/simple_animal/hostile/poison/terror_spider/purple/Life() . = ..() if(.) // if mob is NOT dead diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm index ef285b488a6..5edcbe919c2 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm @@ -6,7 +6,7 @@ // -------------: AI: builds a nest, lays many eggs, attempts to take over the station // -------------: SPECIAL: spins webs, breaks lights, breaks cameras, webs objects, lays eggs, commands other spiders... // -------------: TO FIGHT IT: bring an army, and take no prisoners. Mechs and/or decloner guns are a very good idea. -// -------------: SPRITES FROM: FoS, http://nanotrasen.se/phpBB3/memberlist.php?mode=viewprofile&u=386 +// -------------: SPRITES FROM: IK3I /mob/living/simple_animal/hostile/poison/terror_spider/queen name = "Queen of Terror spider" @@ -23,17 +23,6 @@ melee_damage_upper = 20 move_to_delay = 15 // yeah, this is very slow, but ventcrawler = 1 - var/spider_spawnfrequency = 1200 // 120 seconds - var/spider_spawnfrequency_stable = 1200 // 120 seconds. Spawnfrequency is set to this on ai spiders once nest setup is complete. - var/spider_lastspawn = 0 - var/nestfrequency = 150 // 15 seconds - var/lastnestsetup = 0 - var/neststep = 0 - var/hasnested = 0 - var/spider_max_per_nest = 25 // above this, AI queens become stable - var/canlay = 4 // main counter for egg-laying ability! # = num uses, incremented at intervals - var/eggslaid = 0 - var/spider_can_fakelings = 3 // spawns defective spiderlings that don't grow up, used to freak out crew, atmosphere idle_ventcrawl_chance = 0 force_threshold = 18 // outright immune to anything of force under 18, this means welders can't hurt it, only guns can ranged = 1 @@ -43,7 +32,18 @@ projectiletype = /obj/item/projectile/terrorqueenspit spider_tier = TS_TIER_4 spider_opens_doors = 2 - loot = list(/obj/item/clothing/accessory/medal) + var/spider_spawnfrequency = 1200 // 120 seconds + var/spider_spawnfrequency_stable = 1200 // 120 seconds. Spawnfrequency is set to this on ai spiders once nest setup is complete. + var/spider_lastspawn = 0 + var/nestfrequency = 300 // 30 seconds + var/lastnestsetup = 0 + var/neststep = 0 + var/hasnested = 0 + var/spider_max_per_nest = 25 // above this, AI queens become stable + var/canlay = 4 // main counter for egg-laying ability! # = num uses, incremented at intervals + var/eggslaid = 0 + var/spider_can_fakelings = 3 // spawns defective spiderlings that don't grow up, used to freak out crew, atmosphere + var/list/spider_types_standard = list(/mob/living/simple_animal/hostile/poison/terror_spider/red, /mob/living/simple_animal/hostile/poison/terror_spider/gray, /mob/living/simple_animal/hostile/poison/terror_spider/green, /mob/living/simple_animal/hostile/poison/terror_spider/black) var/datum/action/innate/terrorspider/queen/queennest/queennest_action var/datum/action/innate/terrorspider/queen/queensense/queensense_action var/datum/action/innate/terrorspider/queen/queeneggs/queeneggs_action @@ -98,12 +98,18 @@ for(var/mob/living/simple_animal/hostile/poison/terror_spider/T in ts_spiderlist) T.enemies |= enemies +/mob/living/simple_animal/hostile/poison/terror_spider/queen/proc/ai_nest_is_full() + var/numspiders = CountSpiders() + if(numspiders >= spider_max_per_nest) + return TRUE + return FALSE + /mob/living/simple_animal/hostile/poison/terror_spider/queen/handle_automated_action() ..() if(!stat && !ckey && AIStatus != AI_OFF && !target && !path_to_vent) switch(neststep) if(0) - // we have no nest :( + // No nest. If current location is eligible for nesting, advance to step 1. var/ok_to_nest = 1 var/area/new_area = get_area(loc) if(new_area) @@ -140,81 +146,60 @@ qdel(src) new /obj/effect/portal(get_turf(loc)) if(1) + // No nest, and we should create one. Start NestMode(), then advance to step 2. if(world.time > (lastnestsetup + nestfrequency)) lastnestsetup = world.time neststep = 2 NestMode() if(2) + // Create initial pair of purple nest guards. if(world.time > (lastnestsetup + nestfrequency)) lastnestsetup = world.time spider_lastspawn = world.time DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/purple, 2, 0) neststep = 3 if(3) + // Create spiders (random T1 types) until nest is full. if(world.time > (spider_lastspawn + spider_spawnfrequency)) if(prob(20)) - var/obj/structure/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src) - if(!N) - spider_lastspawn = world.time - DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/green, 2, 0) + if(ai_nest_is_full()) + if(spider_awaymission) + spider_spawnfrequency = spider_spawnfrequency_stable neststep = 4 + else + var/obj/structure/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src) + if(!N) + spider_lastspawn = world.time + DoLayTerrorEggs(pick(spider_types_standard), 2, 0) if(4) + // Nest should be full. If so, pulse attack command. Otherwise, start replenishing nest (stage 5). if(world.time > (spider_lastspawn + spider_spawnfrequency)) if(prob(20)) - var/obj/structure/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src) - if(!N) - spider_lastspawn = world.time - DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/red, 2, 1) + if(ai_nest_is_full()) + SetHiveCommand(0, 15) // AI=0 (attack everyone), ventcrawl=15%/tick + else neststep = 5 if(5) + // If already replenished, go idle (stage 4). Otherwise, replenish nest. if(world.time > (spider_lastspawn + spider_spawnfrequency)) if(prob(20)) - var/obj/structure/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src) - if(!N) - if(!spider_awaymission) - QueenFakeLings() - spider_lastspawn = world.time - if(prob(33)) - DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/gray, 2, 1) - else if(prob(50)) - DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/red, 2, 1) - else - DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/green, 2, 1) - var/spidercount = CountSpiders() - if(spidercount >= spider_max_per_nest) // station overwhelmed! - neststep = 6 - if(6) - if(world.time > (spider_lastspawn + spider_spawnfrequency)) - spider_lastspawn = world.time - // go hostile, EXTERMINATE MODE. - SetHiveCommand(0, 15) // AI=0 (attack everyone), ventcrawl=15%/tick - var/numspiders = CountSpiders() - if(numspiders < spider_max_per_nest) - if(prob(33)) - DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/black, 2, 1) - else if(prob(50)) - DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/red, 2, 0) + if(ai_nest_is_full()) + neststep = 4 else - DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/green, 2, 1) - else if(spider_awaymission) - neststep = 7 - spider_spawnfrequency = spider_spawnfrequency_stable - // if we're an away mission queen... don't keep spawning spiders at high rates. Away team should have a chance. - if(7) - if(world.time > (spider_lastspawn + spider_spawnfrequency)) - spider_lastspawn = world.time - var/numspiders = CountSpiders() - if(numspiders < spider_max_per_nest) - // someone is killing my children... - if(prob(25)) - DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/black, 2, 1) - else if(prob(33)) - DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/red, 2, 0) - else if(prob(50)) - DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/green, 2, 1) - else - DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/purple, 2, 0) - neststep = 6 + var/obj/structure/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src) + if(!N) + spider_lastspawn = world.time + var/num_purple = CountSpidersType(/mob/living/simple_animal/hostile/poison/terror_spider/purple) + var/num_white = CountSpidersType(/mob/living/simple_animal/hostile/poison/terror_spider/white) + var/num_brown = CountSpidersType(/mob/living/simple_animal/hostile/poison/terror_spider/brown) + if(num_purple < 4) + DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/purple, 2, 0) + else if(num_white < 2) + DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/white, 2, 0) + else if(num_brown < 2) + DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/brown, 2, 0) + else + DoLayTerrorEggs(pick(spider_types_standard), 2, 0) /mob/living/simple_animal/hostile/poison/terror_spider/queen/proc/NestPrompt() var/confirm = alert(src, "Are you sure you want to nest? You will be able to lay eggs, and smash walls, but not ventcrawl.","Nest?","Yes","No") @@ -264,13 +249,15 @@ to_chat(src, "Too soon to attempt that again. Wait just a few more seconds...") return var/list/eggtypes = list(TS_DESC_RED, TS_DESC_GRAY, TS_DESC_GREEN, TS_DESC_BLACK, TS_DESC_PURPLE) + if(canlay >= 4) + eggtypes |= TS_DESC_BROWN if(canlay >= 12) eggtypes |= TS_DESC_MOTHER eggtypes |= TS_DESC_PRINCE - var num_purples = CountSpidersType(/mob/living/simple_animal/hostile/poison/terror_spider/purple) + var/num_purples = CountSpidersType(/mob/living/simple_animal/hostile/poison/terror_spider/purple) if(num_purples >= 2) eggtypes -= TS_DESC_PURPLE - var num_blacks = CountSpidersType(/mob/living/simple_animal/hostile/poison/terror_spider/black) + var/num_blacks = CountSpidersType(/mob/living/simple_animal/hostile/poison/terror_spider/black) if(num_blacks >= 2) eggtypes -= TS_DESC_BLACK var/eggtype = input("What kind of eggs?") as null|anything in eggtypes @@ -288,6 +275,13 @@ canlay -= 12 DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/prince, 1, 0) return + else if(eggtype == TS_DESC_BROWN) + if(canlay < 4) + to_chat(src, "Insufficient strength. It takes as much effort to lay one of those as it does to lay 4 normal eggs.") + else + canlay -= 4 + DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/brown, 1, 0) + return var/numlings = 1 if(eggtype != TS_DESC_PURPLE) if(canlay >= 5) @@ -333,9 +327,7 @@ for(var/i in 1 to numlings) var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src)) S.grow_as = /mob/living/simple_animal/hostile/poison/terror_spider/red - S.stillborn = TRUE - S.name = "Evil-Looking Spiderling" - S.desc = "It moves very quickly, hisses loudly for its size... and has disproportionately large fangs. Hopefully it does not grow up..." + S.stillborn = 1 if(!spider_can_fakelings) queenfakelings_action.Remove(src) else diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm index b7225b373f2..62f69b20b39 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm @@ -148,7 +148,7 @@ last_ventcrawl_time = world.time var/vdistance = 99 for(var/obj/machinery/atmospherics/unary/vent_pump/v in view(10, src)) - if(!v.welded) + if(!v.welded || ai_ventbreaker) if(get_dist(src,v) < vdistance) entry_vent = v vdistance = get_dist(src,v) @@ -217,7 +217,8 @@ var/tgt_dir = get_dir(src,mygoal) for(var/obj/machinery/door/airlock/A in view(1, src)) if(A.density) - try_open_airlock(A) + spawn(0) + try_open_airlock(A) for(var/obj/machinery/door/firedoor/F in view(1, src)) if(tgt_dir == get_dir(src,F) && F.density && !F.welded) visible_message("[src] pries open the firedoor!") @@ -234,9 +235,13 @@ if(is_type_in_list(obstacle, valid_obstacles)) obstacle.attack_animal(src) -/mob/living/simple_animal/hostile/poison/terror_spider/proc/TSVentCrawlRandom(/var/entry_vent) +/mob/living/simple_animal/hostile/poison/terror_spider/proc/TSVentCrawlRandom() if(entry_vent) if(get_dist(src, entry_vent) <= 2) + if(ai_ventbreaker && entry_vent.welded) + entry_vent.welded = 0 + entry_vent.update_icon() + entry_vent.visible_message("[src] smashes the welded cover off [entry_vent]!") var/list/vents = list() for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in entry_vent.parent.other_atmosmch) vents.Add(temp_vent) @@ -250,17 +255,23 @@ forceMove(exit_vent) var/travel_time = round(get_dist(loc, exit_vent.loc) / 2) spawn(travel_time) - if(!exit_vent || exit_vent.welded) + if(!exit_vent || (exit_vent.welded && !ai_ventbreaker)) forceMove(original_location) entry_vent = null return if(prob(50)) audible_message("You hear something squeezing through the ventilation ducts.") spawn(travel_time) - if(!exit_vent || exit_vent.welded) + if(!exit_vent || (exit_vent.welded && !ai_ventbreaker)) forceMove(original_location) entry_vent = null return + if(ai_ventbreaker && exit_vent.welded) + exit_vent.welded = 0 + exit_vent.update_icon() + exit_vent.update_pipe_image() + exit_vent.visible_message("[src] smashes the welded cover off [exit_vent]!") + playsound(exit_vent.loc, 'sound/machines/airlock_alien_prying.ogg', 50, 0) forceMove(exit_vent.loc) entry_vent = null var/area/new_area = get_area(loc) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm index dd5fe980214..2a1e0f17ef4 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm @@ -49,6 +49,7 @@ var/global/list/ts_spiderling_list = list() var/freq_ventcrawl_combat = 1800 // 3 minutes var/freq_ventcrawl_idle = 9000 // 15 minutes var/last_ventcrawl_time = -9000 // Last time the spider crawled. Used to prevent excessive crawling. Setting to freq*-1 ensures they can crawl once on spawn. + var/ai_ventbreaker = 0 // AI movement tracking var/spider_steps_taken = 0 // leave at 0, its a counter for ai steps taken. @@ -271,6 +272,8 @@ var/global/list/ts_spiderling_list = list() // after 30 seconds, assuming nobody took control of it yet, offer it to ghosts. addtimer(src, "CheckFaction", 150) addtimer(src, "announcetoghosts", 300) + var/datum/atom_hud/U = huds[DATA_HUD_MEDICAL_ADVANCED] + U.add_hud_to(src) /mob/living/simple_animal/hostile/poison/terror_spider/proc/announcetoghosts() if(spider_awaymission) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/white.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/white.dm index 0eced254544..973195c90a7 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/white.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/white.dm @@ -21,7 +21,6 @@ melee_damage_upper = 15 move_to_delay = 4 spider_tier = TS_TIER_2 - loot = list(/obj/item/clothing/accessory/medal) web_infects = 1 diff --git a/icons/mob/terrorspider.dmi b/icons/mob/terrorspider.dmi index a5d678f3f38..f1ffcacdcc9 100644 Binary files a/icons/mob/terrorspider.dmi and b/icons/mob/terrorspider.dmi differ diff --git a/paradise.dme b/paradise.dme index bb2b68856ac..b14e4052878 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1796,6 +1796,7 @@ #include "code\modules\mob\living\simple_animal\hostile\terror_spiders\__defines.dm" #include "code\modules\mob\living\simple_animal\hostile\terror_spiders\actions.dm" #include "code\modules\mob\living\simple_animal\hostile\terror_spiders\black.dm" +#include "code\modules\mob\living\simple_animal\hostile\terror_spiders\brown.dm" #include "code\modules\mob\living\simple_animal\hostile\terror_spiders\chem.dm" #include "code\modules\mob\living\simple_animal\hostile\terror_spiders\empress.dm" #include "code\modules\mob\living\simple_animal\hostile\terror_spiders\ghost.dm" diff --git a/sound/effects/siren-spooky.ogg b/sound/effects/siren-spooky.ogg index 6e9eb341156..28fc7689616 100644 Binary files a/sound/effects/siren-spooky.ogg and b/sound/effects/siren-spooky.ogg differ