Merge remote-tracking branch 'refs/remotes/ParadiseSS13/master'
@@ -336,7 +336,7 @@
|
||||
"agx" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/flasher{id = "PCell 1"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
|
||||
"agy" = (/obj/item/weapon/folder/red,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitered"},/area/security/prison)
|
||||
"agz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitered"},/area/security/prison)
|
||||
"agA" = (/obj/structure/stool/bed/roller,/obj/structure/stool/bed/roller,/obj/machinery/iv_drip{density = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/iv_drip{density = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitered"},/area/security/prison)
|
||||
"agA" = (/obj/structure/stool/bed/roller,/obj/structure/stool/bed/roller,/obj/machinery/iv_drip,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitered"},/area/security/prison)
|
||||
"agB" = (/turf/simulated/wall/r_wall,/area/security/warden)
|
||||
"agC" = (/turf/simulated/wall/r_wall,/area/security/hos)
|
||||
"agD" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"})
|
||||
@@ -929,7 +929,7 @@
|
||||
"arS" = (/obj/effect/landmark/start{name = "Brig Physician"},/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/brig)
|
||||
"arT" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"arU" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
|
||||
"arV" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/iv_drip{density = 0},/turf/simulated/floor/plasteel{icon_state = "whitered"},/area/security/brig)
|
||||
"arV" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "whitered"},/area/security/brig)
|
||||
"arW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fore)
|
||||
"arX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig)
|
||||
"arY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/security/brig)
|
||||
@@ -3730,7 +3730,7 @@
|
||||
"btL" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/machinery/door/poddoor/preopen{id_tag = "hop"; name = "privacy shutters"},/turf/simulated/floor/plating,/area/crew_quarters/heads)
|
||||
"btM" = (/obj/item/weapon/folder/blue,/obj/item/weapon/stamp/hop,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/heads)
|
||||
"btN" = (/obj/effect/landmark/start{name = "Head of Personnel"},/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood,/area/crew_quarters/heads)
|
||||
"btO" = (/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 0},/obj/item/weapon/storage/box/PDAs{pixel_x = 4; pixel_y = 4},/obj/structure/table/woodentable,/obj/item/weapon/storage/box/ids,/obj/item/weapon/storage/box/ids,/turf/simulated/floor/wood,/area/crew_quarters/heads)
|
||||
"btO" = (/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 0},/obj/machinery/computer/security/mining,/turf/simulated/floor/wood,/area/crew_quarters/heads)
|
||||
"btP" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"})
|
||||
"btQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge)
|
||||
"btR" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 29},/obj/machinery/computer/teleporter,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge)
|
||||
@@ -3845,9 +3845,9 @@
|
||||
"bvW" = (/obj/structure/window/reinforced,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge)
|
||||
"bvX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window{dir = 2; name = "HoP's Desk"; pixel_y = 0; req_access_txt = "57"},/turf/simulated/floor/wood,/area/crew_quarters/heads)
|
||||
"bvY" = (/obj/structure/filingcabinet/chestdrawer{pixel_y = 6},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/heads)
|
||||
"bvZ" = (/obj/machinery/vending/cart{req_access_txt = "57"},/turf/simulated/floor/wood,/area/crew_quarters/heads)
|
||||
"bwa" = (/obj/machinery/computer/security/mining,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/heads)
|
||||
"bwb" = (/obj/machinery/computer/ordercomp,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor/wood,/area/crew_quarters/heads)
|
||||
"bvZ" = (/obj/machinery/vending/cart{req_access_txt = "57"},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/wood,/area/crew_quarters/heads)
|
||||
"bwa" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/obj/structure/stool/bed/dogbed/ian,/turf/simulated/floor/wood,/area/crew_quarters/heads)
|
||||
"bwb" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/computer/ordercomp,/turf/simulated/floor/wood,/area/crew_quarters/heads)
|
||||
"bwc" = (/obj/structure/closet/secure_closet/hop,/obj/machinery/alarm{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/heads)
|
||||
"bwd" = (/turf/simulated/wall,/area/crew_quarters/heads)
|
||||
"bwe" = (/obj/structure/window/reinforced,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge)
|
||||
@@ -4050,7 +4050,7 @@
|
||||
"bzT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
|
||||
"bzU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
|
||||
"bzV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
|
||||
"bzW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/device/radio/intercom{dir = 2; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/obj/machinery/hologram/holopad,/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1; network = list("SS13")},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
|
||||
"bzW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/crew_quarters/heads)
|
||||
"bzX" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
|
||||
"bzY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
|
||||
"bzZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
|
||||
@@ -6314,7 +6314,7 @@
|
||||
"crv" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"crw" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"})
|
||||
"crx" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"})
|
||||
"cry" = (/obj/structure/stool/bed/roller,/obj/machinery/iv_drip{density = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"})
|
||||
"cry" = (/obj/structure/stool/bed/roller,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"})
|
||||
"crz" = (/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"})
|
||||
"crA" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteyellowcorner"},/area/medical/medbay{name = "Medbay Central"})
|
||||
"crB" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"})
|
||||
@@ -6487,7 +6487,7 @@
|
||||
"cuM" = (/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cuN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cuO" = (/obj/machinery/power/apc{dir = 4; name = "Surgery APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/plasteel{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/medical/surgery)
|
||||
"cuP" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/machinery/iv_drip{density = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cuP" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cuQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cuR" = (/obj/structure/stool/bed,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cuS" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id_tag = "rdprivacy"; name = "privacy shutter"},/turf/simulated/floor/plating,/area/crew_quarters/hor)
|
||||
@@ -6620,7 +6620,7 @@
|
||||
"cxp" = (/obj/machinery/computer/operating,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cxq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cxr" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cxs" = (/obj/structure/stool/bed/roller,/obj/machinery/iv_drip{density = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cxs" = (/obj/structure/stool/bed/roller,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cxt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cxu" = (/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cxv" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/cryo)
|
||||
@@ -6660,7 +6660,7 @@
|
||||
"cyd" = (/obj/structure/table,/obj/structure/bedsheetbin{pixel_x = 2},/obj/item/clothing/mask/muzzle,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"cye" = (/obj/structure/table,/obj/item/weapon/restraints/handcuffs/cable/white,/obj/item/weapon/gun/syringe,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"cyf" = (/obj/structure/rack,/obj/item/weapon/hatchet,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"cyg" = (/obj/machinery/iv_drip{density = 0},/obj/item/roller,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"cyg" = (/obj/machinery/iv_drip,/obj/item/roller,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"cyh" = (/obj/structure/rack,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"cyi" = (/obj/machinery/light_construct/small,/obj/item/toy/cards/deck,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"cyj" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
@@ -6671,7 +6671,7 @@
|
||||
"cyo" = (/obj/structure/table,/obj/item/weapon/scalpel{pixel_y = 12},/obj/item/weapon/circular_saw,/obj/structure/window/reinforced/polarized{tag = "icon-rwindow (NORTH)"; icon_state = "rwindow"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cyp" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/razor{pixel_y = 5},/obj/structure/window/reinforced/polarized{tag = "icon-rwindow (NORTH)"; icon_state = "rwindow"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cyq" = (/obj/structure/cable,/obj/machinery/power/turbine,/turf/simulated/floor/plating/airless,/area/maintenance/incinerator)
|
||||
"cyr" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/iv_drip{density = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cyr" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cys" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cyt" = (/turf/simulated/wall,/area/medical/cryo)
|
||||
"cyu" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Medbay Hallway Central"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"})
|
||||
@@ -6873,7 +6873,7 @@
|
||||
"cCi" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Medbay Surgery"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/body_scanconsole,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cCj" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/medical/surgery)
|
||||
"cCk" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty{pixel_x = -3; pixel_y = -3},/obj/item/weapon/reagent_containers/blood/AMinus,/obj/item/weapon/reagent_containers/blood/BMinus{pixel_x = -4; pixel_y = 4},/obj/item/weapon/reagent_containers/blood/BPlus{pixel_x = 1; pixel_y = 2},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OPlus{pixel_x = -2; pixel_y = -1},/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel,/area/medical/surgery)
|
||||
"cCl" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/iv_drip{density = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cCl" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cCm" = (/obj/machinery/bodyscanner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cCn" = (/obj/machinery/body_scanconsole,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
"cCo" = (/obj/structure/stool/bed,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/bedsheet/medical,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/camera{c_tag = "Medbay Recovery Room"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
|
||||
@@ -7378,7 +7378,7 @@
|
||||
"cLT" = (/obj/structure/sign/biohazard{pixel_y = 32},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology)
|
||||
"cLU" = (/obj/structure/sink{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/virology)
|
||||
"cLV" = (/obj/structure/sign/securearea{pixel_x = 0; pixel_y = 32},/obj/machinery/shower{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/medical/virology)
|
||||
"cLW" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/iv_drip{density = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"})
|
||||
"cLW" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"})
|
||||
"cLX" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"})
|
||||
"cLY" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21"; layer = 4.1; pixel_x = -3; pixel_y = 3; tag = "icon-plant-21"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"})
|
||||
"cLZ" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"})
|
||||
@@ -7521,7 +7521,7 @@
|
||||
"cOG" = (/obj/structure/closet/l3closet/virology,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology)
|
||||
"cOH" = (/obj/structure/sign/biohazard{pixel_x = -32},/turf/space,/area/space)
|
||||
"cOI" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"cOJ" = (/obj/structure/stool/bed/roller,/obj/structure/stool/bed/roller,/obj/machinery/iv_drip{density = 0},/obj/machinery/iv_drip{density = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"cOJ" = (/obj/structure/stool/bed/roller,/obj/structure/stool/bed/roller,/obj/machinery/iv_drip,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"cOK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"cOL" = (/obj/item/clothing/gloves/color/latex/nitrile,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/storage/labcoat,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/breath/medical,/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
"cOM" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
|
||||
@@ -8114,6 +8114,7 @@
|
||||
"dab" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
|
||||
"dac" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #2"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
|
||||
"dad" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #2"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id_tag = "xenobio8"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"})
|
||||
"dae" = (/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1; network = list("SS13")},/obj/structure/table/woodentable,/obj/item/weapon/storage/box/PDAs{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/ids,/obj/item/weapon/storage/box/ids,/turf/simulated/floor/wood,/area/crew_quarters/heads)
|
||||
"daf" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"})
|
||||
"dah" = (/turf/simulated/shuttle/wall{icon_state = "swallc2"; dir = 2},/area/shuttle/escape)
|
||||
"dai" = (/turf/simulated/shuttle/wall{icon_state = "swall0"; dir = 2},/area/shuttle/escape)
|
||||
@@ -8592,10 +8593,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablObpwbpxblRbkbblSblTblSblTblSblTblSbkbblUbnFaUNbpybpzbpAbpBbpCbpDbpDbpEbpFbpBbpGbpHbpIbfwbpJbpKbpLbpMbpNbpObpPbfwbpQbpRbpSbpTbpUbfwbsibpWbpXbpYbpZbfGbqabjnbqbbqcbqcbqcbqcbqcbhtbtPbqebhtbkWbtSbtRbtTboEboEboEboEbqiboEboEboEboEbtZbtYbubbkWbqmbqnbqobqpbqqbqrbqrbqsbhwbqtbqubqvbqwbqxbqybqxbqzbqxbqAbqxbqxbqBbqxbqxbqCbqDbqxbqEbqBbqFbqGbqCbqHbqxbqIbqJbqKbqLbqMblsbqObqPbqQbqRbpnbqSbqSbqTdgMdgLdgOdgNdgPanqanqanqanqanqanqanqanqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaabqbsPbsRbsQbsSbrdcKIaXNbsfbsTbsUaXLbsWbsVbsXbribsZbsYbtbbtabtcbrkbtebtdbtgbtfaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrobiobiobjZbrpbkbbrqbkbbrrbrsbkbbrtbkbbkibruaUNbgVbrvbrwbrxbrybrzbrAbrBbrCbrxbrDbrEbrFbfwbrGaXibrHblvbfwbfwbfwbfwbfwaXibrJblxbfwbfwbbdbrLbrMbbdbbdbzObehbfIbrObqcbrPbumbrRbqcbrSbrTbrUbrVbrWburbrYbrZbsabsabvWbwfbwebvWbvWbsabsabsgbshbwgbkWbhwboIboIboIbsjboIboIboIbhwbskbfIbslbZiblCbsoblCbsmbspbspbspbspbspbspaoGaoGbsqaoGaoGaoGbsrbmBaoGaoGaoGbstaoGbsubsvbswbbfbsybszbsAbsBbqSbsCbsCbsDbqUbsEbjNbntbsFbsGbsHbsIbsJbsJbsKbsLabqaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaabuLbudbuMabqbuObuNbuQbuPbuSbuRbuTbBebuVbuUbuWbribuYbuXbvabuZbvcbvbbvebvdbvgbvfaXLbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrobiobthbiobiqbiobiobiqbiobipbtibtjaWDbvjbtlbtmbfGbtnbtobtpbtobtqbfGbtrbtsbttbtubtvbtwbtxbtybtzbtwbtAbtBbtwbtvbtvbtCbtvbtDbtEbtFbtGbtHbtvbtIbtJbtKbkJbobbtMbtNbtObqcbjebjebjebjebkWbwmbtQboEboEboEbtUboEbtVbtWbtXboEboEbwnbuabAkbucbhwbwobuebufbugbuhboIbuibhwbujbfIbukboAdedbunbuobsmbupbuqbwpbusbutbuubuvbuwbuxaoGbuybuzbuAbuBbuCaoGaxcbuDaoGbuEbuFbuGbqNbuHbuHbuHbuIbuJbqSbqSbuKbvlbvkbvnbvmbvpbvobvrbvqbvsbvsbvvbvtbvwbvwbvwbxlbxmbvwbvwbvwbvwbvwbxlbvwbvwbvwbvwbvwbvwbxlbvwbxmbxobxnbxpbxpbxrbxqbxtbxsbxvbxubxxbxwbxzbxybxBbxAbxDbxCbzebxEbzgbzfbzjbzibzlbzkbznbzmbzpbzoaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaUNbdRaUNaUNaUNaUNaUNaUNbdRaUNaaaaWDbzqbzsbzrbfGbvAbvBbvCbvBbvDbfGbvEbvFbvGbvHbvHbvIbvJbvHbvHbvKbvLbvMbvNbvHbvHbvObvHbvHbvHbvPbvQbvRbvRbvSbvTbvUbvVbqcbyobvXbvYbqcbvZbwabwbbwcbwdboEbtQboEbypbywbwhbwibwjbwibwkbyJbyxbAbbyQbAkbwqbhwbwrbwsbwtbwubwvbhwbhwbhwbhybwwbwxbsmbwybwzbwAbsmbwBbwCbwDbwEbwFbwGbwHbwIbwJbwKbwLbwMbwNbwObwPbwQbwRbwSaoGbsubwTbwUbntbwVbwWbwXbwYbwZbxabxbbxcbxdbqUbxebxfbxgbxhbxiaWCaaaaaabxjbsNabqaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaabxkbztbsLabqbBbbzubBdbBcbBgbBfbBibBhbBnbBjbCWbBobCYbCXbDabCZbDibDcbFdbDjbFfbFeaXLbrcbFgbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaUNbdRaUNaUNaUNaUNaUNaUNbdRaUNaaaaWDbzqbzsbzrbfGbvAbvBbvCbvBbvDbfGbvEbvFbvGbvHbvHbvIbvJbvHbvHbvKbvLbvMbvNbvHbvHbvObvHbvHbvHbvPbvQbvRbvRbvSbvTbvUbvVbqcbyobvXbvYbqcbvZbwbbwabwcbwdboEbtQboEbypbywbwhbwibwjbwibwkbyJbyxbAbbyQbAkbwqbhwbwrbwsbwtbwubwvbhwbhwbhwbhybwwbwxbsmbwybwzbwAbsmbwBbwCbwDbwEbwFbwGbwHbwIbwJbwKbwLbwMbwNbwObwPbwQbwRbwSaoGbsubwTbwUbntbwVbwWbwXbwYbwZbxabxbbxcbxdbqUbxebxfbxgbxhbxiaWCaaaaaabxjbsNabqaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaabxkbztbsLabqbBbbzubBdbBcbBgbBfbBibBhbBnbBjbCWbBobCYbCXbDabCZbDibDcbFdbDjbFfbFeaXLbrcbFgbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNabqaaaabqaaaaUNbxGaUNbxHbxIbfebxJaUNbxGaUNaUNaWDbgVbxKbxLbfGbxMbvBbxNbvBbxObfGbxPbxQbxRbxSbxTbxUbxVbxWbxXbxYbxZbyabxTbxTbxTbybbxTbycbydbxVbyebxTbxTbyfbygbyhbvVbqcbyibyjbykbylbymbynbymbymbwdbAjbAebyqbyqbyqbyrbysbytbyubyvbyqbyqbyqbBWbCcbkWbhwbyybyzbyAbyBbyCbhwbyDbyEbyFbyGbwxblCbyHbyIbCdbsmbyKbyLbyMbyNbspbspaoGaoGbyOaoGaoGaoGbyPbCeaoGaoGbyRbySaoGbyTbwTbyUbntbjNbjNbjNbjNbyVbjNbjNbyWbyXbyYbntbntbyZbzabzbbzcaaabqYbzdaaaabqaaaaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaaaabxkbBabFkbGNbGMcKIbsebGSbGObrcaXLbsMbsMbsMbribribICbBkbribribrkbrkbrkaXLaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNaUNbdQaUNaWDaUNbdRaUNbzvbaBbzwbzxaUNbdRaUNbzybzzbzAbtlbtmbfGbzBbzCbtpbzCbzBbfGbzDbzEbzFbfGbzGbzHbzIbfGapfbzJapfbzKbzKbtkbzMbzNbtkbzKbzKbzKbzKbzKbzKdeDbzPbzQbzRbzSbzTbzUbzVbzWbzVbzXbzYbzZbAabCfbAcbAdbThbAdbAdbAfbAgbAhbyqbyqbAibyqbCkbAkbhwbAlbAmbAnbAobApbAqbhwbArbhtbAsbbrbAtbsmbsmbsmbsmbsmbAubAvbspbspbspbAwbAxbspbAybAzbAAaoGazpbABaoGbACbADbAEbAFbAGbAHbAIbAJbAKbALbAMbAKbANbAObjNbAPbAQbARbASbATbAUbAVbAWbAXbsJbAYbAZabqabqabqabqabqaaaabqaaaabqaaaabqaaaabqaaaaaaaaaaaaaaaaaaabqbpraaaaaaaaaabqaaaaaaabdaZhbIEbeWbeXbeXbIFaXLbBlbDbbKjbDdbDebDfbDgbDhbBlaXLbIFbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbBpbaBbaCbBqbBrbaBbaBbBsbBtbchbBubBvbBvbBvbBwbBxbBybBzbBAbBBbBCbBDbBEbBFbBGbBBbBHbBIbBJbBKbBKbBLbBKbBKarKbBMbBNbzKbBObBPbBQbBRbBSbzKbBTbBUbzKbBTbBUbzKbzPbfIbkJbqcbBVbClbBXbqcbBYbBZbCabCbbwdbAkbDrbyqboEbDVbCgboEboEbAkbChbDWbCjbyqbEfbEgbhwbCmbCnbCobCpbCqbCrbCsbCtbhtbhybbrbhzbspbCubCvbCwbCxbCybCzbCAbspbCBbCCbCDbCEbCFbCGbCHaoGaoGaoGaoGaoGaoGbCIaoGbCJbCKbCLbCMbCNbCNbCNbCNbCNbCMbCMbCNbCObCPbCQbCRbCSbCTbCUbCVbCMbCMbCMabqaaaaaaaaaabqaaaabqaaaabqaaaabeaaaabeaaaaaaaaaaaaaaaaaaaaaabqabqabqabqaaaaaaaaaabdaXHbsfbKkbvhbeXbeXaXLbBlbFhbFibFjbKnbFlbFmbFnbBlaXLbeXbeXbvhbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbBpbaBbaCbBqbBrbaBbaBbBsbBtbchbBubBvbBvbBvbBwbBxbBybBzbBAbBBbBCbBDbBEbBFbBGbBBbBHbBIbBJbBKbBKbBLbBKbBKarKbBMbBNbzKbBObBPbBQbBRbBSbzKbBTbBUbzKbBTbBUbzKbzPbfIbkJbqcbBVbClbBXdaebBYbBZbCabCbbwdbAkbDrbyqboEbDVbCgboEboEbAkbChbDWbCjbyqbEfbEgbhwbCmbCnbCobCpbCqbCrbCsbCtbhtbhybbrbhzbspbCubCvbCwbCxbCybCzbCAbspbCBbCCbCDbCEbCFbCGbCHaoGaoGaoGaoGaoGaoGbCIaoGbCJbCKbCLbCMbCNbCNbCNbCNbCNbCMbCMbCNbCObCPbCQbCRbCSbCTbCUbCVbCMbCMbCMabqaaaaaaaaaabqaaaabqaaaabqaaaabeaaaabeaaaaaaaaaaaaaaaaaaaaaabqabqabqabqaaaaaaaaaabdaXHbsfbKkbvhbeXbeXaXLbBlbFhbFibFjbKnbFlbFmbFnbBlaXLbeXbeXbvhbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbcdbcebcebDkbcebDlbDmbDnbDnbDobDnbDpbDqbEJbDsbDtbDubDvbDwbpBbDxbDybDzbDAbDBbDCbDDbDEbDFbDGbDHbDIbDJbBKbDKbDLanHbzKbDMbDNbBQbBRbBSbzKbDObDPbzKbDObDPbzKbDQbfIbkJbqcbqcbtLbqcbqcbqcbvxbulbDUbqcbFJbtQbDXboEbwibwibDYbDZbEabEbbEcbEdbEebshbFUbEhbEibEjbEkbElbEmbEnbhwbEobhtbEpbbrbhzbspbEqbErbCybEsbCybEtbCybEubEvbCHbvybvzbEybEzbEAbEBbECbEDbEEbEFbEGbEHaoGbEIbwTbHCbCMbEKbELbEMbENbEObCMbEPbEQbERbESbzLbEUbEVbEWbEXbEYbEZbFabCMabqabqabqabqabqabqabqaaaabeaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbKpbKobKqbfbbgNaXLbBlbGPbGQbGRbMpbGTbGUbGVbBlaXLbgNbgQbMtbMrbMrbNXaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNaWDaUNbdQaUNaWDaUNaUNaUNaWDaUNaWDaWDaWDbnWbnXapfbFoapfapfbFpbFqbFpbFrbFpbFpbFpbFpbBKbBKbFsbFtbBKbBKbBKbFuaoXbzKbFvbFwbBQbFxbzKbzKbFybzKbzKbFzbzKbzKbFAbfIbkJbFBbFCbFDbFEbFFbFGbFDbFDbFHbFIbAkbHDbAdbFKbFLbFMbFNbFObFPbFQbFRbFSbyqbFTbAkbhwbFVbFWbFXbFYbFZbGabhwbGbbhtbhybbrbhzbspbGcbGdbGebGdbGfbGgbGhbGibEvbCHbDRbDSbCHbEvbGlbGmbGnbGobGpbGqbEGbySaoGbGrbGsbGtbDTbGvbGwbGxbGybGzbCMbGAbGBbGCbGDbzLbGEbGFbGGbGHbGIbGJbGKbCMabqbGLbGLbGLbGLbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaabPHbNYbdMbeWbeXaXLbBlbIybIzbIAbPJbIBbRobIDbBlaXLbeXbeYbdMbRpbsdbPHaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaabGWbGXbGXbGYbGXbGXbGXbGZbGXbGXbHaabqaUNbHbdfOdfPapfbINbHJbHdbFpbHebHfbHgbHhbHibHjbFpbHkbHkbHlbHmbHnbHobBKbFubHpbzKbHqbHrbBQbBRbHsbHtbFwbHubHvbHwbHxbtkbzPbfIbkJbFBbEwbHzbExbExbExbExbExbHBbFIbKRbIObkWbkWbkWbETbGkbGjbHybGubkWbkWbkWbPcbKRbhwbhwbEhbhwbhwbhwbhxbhwbHKbhtbHLbHMbhzbHAbHObHObHObHPbHObHQbHObHRbEvbEvbHSbEvbEvbCHbHEbHUbHVbHWbHXbHYbEGbCIaoGbHZbGsbIabIbbIcbIdbIebIfbIgbHFbIibIjbIkbIlbzLbImbInbIobIpbIqbIrbIsbHGbIubIvbIwbIxbIxbGLabqaaabFcaaabFbaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdaXHbdMbeWbeXaXLbKlbKlbKlbHNbRqbHNbKlbKlbKlaXLbeXbeYbdMaXOabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
@@ -386,17 +386,17 @@
|
||||
"hv" = (/obj/machinery/power/smes/magical,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
|
||||
"hw" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
|
||||
"hx" = (/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
|
||||
"hy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
|
||||
"hz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
|
||||
"hy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
|
||||
"hz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
|
||||
"hA" = (/obj/machinery/door/airlock/gold,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
|
||||
"hB" = (/obj/machinery/atmospherics/unary/vent_pump,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/academy/classrooms)
|
||||
"hC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
|
||||
"hD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/academy/academyaft)
|
||||
"hE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/academy/classrooms)
|
||||
"hF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
|
||||
"hG" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
|
||||
"hG" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
|
||||
"hH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
|
||||
"hI" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
|
||||
"hI" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
|
||||
"hJ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
|
||||
"hK" = (/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
|
||||
"hL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
|
||||
@@ -548,17 +548,17 @@
|
||||
"kB" = (/mob/living/simple_animal/hostile/carp/megacarp{name = "Elmo"},/turf/simulated/mineral/random/high_chance,/area/awaymission/academy)
|
||||
"kC" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/rack,/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
|
||||
"kD" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/engine,/area/awaymission/academy/academyaft)
|
||||
"kE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
|
||||
"kF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/academy/classrooms)
|
||||
"kG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/awaymission/academy/classrooms)
|
||||
"kH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
|
||||
"kE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
|
||||
"kF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/academy/classrooms)
|
||||
"kG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/awaymission/academy/classrooms)
|
||||
"kH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
|
||||
"kI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
|
||||
"kJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
|
||||
"kJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
|
||||
"kK" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
|
||||
"kL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
|
||||
"kM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/wall,/area/awaymission/academy/classrooms)
|
||||
"kN" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
|
||||
"kO" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
|
||||
"kL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
|
||||
"kM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/awaymission/academy/classrooms)
|
||||
"kN" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
|
||||
"kO" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
|
||||
"kP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
|
||||
"kQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/awaymission/academy/classrooms)
|
||||
"kR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/awaymission/academy/classrooms)
|
||||
@@ -567,23 +567,23 @@
|
||||
"kU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/academy/academyaft)
|
||||
"kV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/academy/academyaft)
|
||||
"kW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
|
||||
"kX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel,/area/awaymission/academy/academyaft)
|
||||
"kX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/academy/academyaft)
|
||||
"kY" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
|
||||
"kZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
|
||||
"la" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
|
||||
"lb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
|
||||
"lc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/maintenance_hatch,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
|
||||
"ld" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/awaymission/academy/academyaft)
|
||||
"le" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel,/area/awaymission/academy/academyaft)
|
||||
"lf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel{tag = "icon-green (EAST)"; icon_state = "green"; dir = 4},/area/awaymission/academy/academyaft)
|
||||
"lg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
|
||||
"lh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
|
||||
"li" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
|
||||
"kZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
|
||||
"la" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
|
||||
"lb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
|
||||
"lc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/maintenance_hatch,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
|
||||
"ld" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/awaymission/academy/academyaft)
|
||||
"le" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/academy/academyaft)
|
||||
"lf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-green (EAST)"; icon_state = "green"; dir = 4},/area/awaymission/academy/academyaft)
|
||||
"lg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
|
||||
"lh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
|
||||
"li" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
|
||||
"lj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
|
||||
"lk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/item/weapon/caution,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel{tag = "icon-green (EAST)"; icon_state = "green"; dir = 4},/area/awaymission/academy/academyaft)
|
||||
"ll" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
|
||||
"lm" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
|
||||
"ln" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
|
||||
"lk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/item/weapon/caution,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-green (EAST)"; icon_state = "green"; dir = 4},/area/awaymission/academy/academyaft)
|
||||
"ll" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
|
||||
"lm" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
|
||||
"ln" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
|
||||
"lo" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
|
||||
"lp" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
|
||||
"lq" = (/obj/machinery/atmospherics/binary/valve,/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"cc" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/grille,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwgov)
|
||||
"cd" = (/obj/item/weapon/paper{info = " The miners in the town have become sick and almost all production has stopped. They, in a fit of delusion, tossed all of their mining equipment into the furnaces. They all claimed the same thing. A voice beckoning them to lay down their arms. Stupid miners."; name = "Planer Saul's Journal: Page 4"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines)
|
||||
"ce" = (/obj/structure/table/woodentable,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/obj/item/weapon/kitchen/knife/butcher,/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
"cf" = (/obj/structure/mineral_door/wood{tag = "icon-woodopening"; icon_state = "woodopening"},/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
"cf" = (/obj/structure/mineral_door/wood,/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
"cg" = (/obj/structure/stool,/turf/simulated/floor/carpet,/area/awaymission/wwmines)
|
||||
"ch" = (/obj/item/ammo_box/c10mm,/turf/simulated/floor/carpet,/area/awaymission/wwmines)
|
||||
"ci" = (/obj/structure/stool,/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
@@ -137,7 +137,7 @@
|
||||
"cG" = (/obj/item/toy/sword,/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cH" = (/obj/effect/landmark/corpse/miner/hardsuit,/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cI" = (/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cJ" = (/obj/structure/mineral_door/wood{tag = "icon-woodopening"; icon_state = "woodopening"},/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cJ" = (/obj/structure/mineral_door/wood,/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cK" = (/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/carpet,/area/awaymission/wwgov)
|
||||
"cL" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwgov)
|
||||
"cM" = (/obj/structure/stool/bed/chair/wood/wings{dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
@@ -157,8 +157,8 @@
|
||||
"da" = (/obj/effect/landmark/corpse/syndicatecommando{mobname = "Syndicate Commando"},/turf/simulated/floor/carpet,/area/awaymission/wwgov)
|
||||
"db" = (/obj/machinery/mineral/mint,/turf/simulated/floor/plating,/area/awaymission/wwrefine)
|
||||
"dc" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
"dd" = (/obj/structure/mineral_door/wood{tag = "icon-woodopening"; icon_state = "woodopening"},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwmines)
|
||||
"de" = (/obj/structure/mineral_door/wood{tag = "icon-woodopening"; icon_state = "woodopening"},/obj/effect/decal/cleanable/blood/tracks,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwmines)
|
||||
"dd" = (/obj/structure/mineral_door/wood,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwmines)
|
||||
"de" = (/obj/structure/mineral_door/wood,/obj/effect/decal/cleanable/blood/tracks,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwmines)
|
||||
"df" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space)
|
||||
"dg" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"dh" = (/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov)
|
||||
@@ -174,7 +174,7 @@
|
||||
"dr" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand14"; icon_state = "ironsand14"},/area/awaymission/wwgov)
|
||||
"ds" = (/obj/structure/toilet,/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/awaymission/wwgov)
|
||||
"dt" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand9"; icon_state = "ironsand9"},/area/awaymission/wwgov)
|
||||
"du" = (/obj/structure/mineral_door/wood{tag = "icon-woodopening"; icon_state = "woodopening"},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwgov)
|
||||
"du" = (/obj/structure/mineral_door/wood,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwgov)
|
||||
"dv" = (/obj/structure/largecrate,/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
"dw" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand7"; icon_state = "ironsand7"},/area/awaymission/wwgov)
|
||||
"dx" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines)
|
||||
|
||||
@@ -355,7 +355,7 @@
|
||||
if(do_after(user, 20 * W.toolspeed, target = src))
|
||||
playsound(loc, W.usesound, 100, 1)
|
||||
open = 1
|
||||
user.visible_message("[user] screwdrivers the vent shut.", "You screwdriver the vent shut.", "You hear a screwdriver.")
|
||||
user.visible_message("[user] screwdrivers the vent open.", "You screwdriver the vent open.", "You hear a screwdriver.")
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/paper))
|
||||
if(!welded)
|
||||
|
||||
@@ -593,7 +593,7 @@
|
||||
new_objective.explanation_text = "Absorb [target_number] compatible genomes."
|
||||
if("blood")
|
||||
new_objective = new /datum/objective/blood
|
||||
new_objective.explanation_text = "Accumulate atleast [target_number] units of blood in total."
|
||||
new_objective.explanation_text = "Accumulate at least [target_number] total units of blood."
|
||||
new_objective.owner = src
|
||||
new_objective.target_amount = target_number
|
||||
|
||||
@@ -713,7 +713,7 @@
|
||||
if(src in ticker.mode.head_revolutionaries)
|
||||
ticker.mode.head_revolutionaries -= src
|
||||
ticker.mode.update_rev_icons_removed(src)
|
||||
to_chat(current, "\red <FONT size = 3><B>Revolution has been disappointed of your leader traits! You are a regular revolutionary now!</B></FONT>")
|
||||
to_chat(current, "\red <FONT size = 3><B>Revolution has been disappointed of your leadership traits! You are a regular revolutionary now!</B></FONT>")
|
||||
else if(!(src in ticker.mode.revolutionaries))
|
||||
to_chat(current, "\red <FONT size = 3> You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!</FONT>")
|
||||
else
|
||||
@@ -728,7 +728,7 @@
|
||||
if(src in ticker.mode.revolutionaries)
|
||||
ticker.mode.revolutionaries -= src
|
||||
ticker.mode.update_rev_icons_removed(src)
|
||||
to_chat(current, "\red <FONT size = 3><B>You have proved your devotion to revoltion! Yea are a head revolutionary now!</B></FONT>")
|
||||
to_chat(current, "\red <FONT size = 3><B>You have proven your devotion to revolution! You are a head revolutionary now!</B></FONT>")
|
||||
else if(!(src in ticker.mode.head_revolutionaries))
|
||||
to_chat(current, "\blue You are a member of the revolutionaries' leadership now!")
|
||||
else
|
||||
@@ -857,7 +857,7 @@
|
||||
special_role = SPECIAL_ROLE_WIZARD
|
||||
//ticker.mode.learn_basic_spells(current)
|
||||
ticker.mode.update_wiz_icons_added(src)
|
||||
to_chat(current, "<span class='danger'>You are the Space Wizard!</span>")
|
||||
to_chat(current, "<span class='danger'>You are a Space Wizard!</span>")
|
||||
current.faction = list("wizard")
|
||||
log_admin("[key_name(usr)] has wizarded [key_name(current)]")
|
||||
message_admins("[key_name_admin(usr)] has wizarded [key_name_admin(current)]")
|
||||
@@ -875,7 +875,7 @@
|
||||
message_admins("[key_name_admin(usr)] has allowed wizard [key_name_admin(current)] to name themselves")
|
||||
if("autoobjectives")
|
||||
ticker.mode.forge_wizard_objectives(src)
|
||||
to_chat(usr, "\blue The objectives for wizard [key] have been generated. You can edit them and anounce manually.")
|
||||
to_chat(usr, "\blue The objectives for wizard [key] have been generated. You can edit them and announce manually.")
|
||||
log_admin("[key_name(usr)] has automatically forged wizard objectives for [key_name(current)]")
|
||||
message_admins("[key_name_admin(usr)] has automatically forged wizard objectives for [key_name_admin(current)]")
|
||||
|
||||
@@ -898,13 +898,13 @@
|
||||
ticker.mode.grant_changeling_powers(current)
|
||||
ticker.mode.update_change_icons_added(src)
|
||||
special_role = SPECIAL_ROLE_CHANGELING
|
||||
to_chat(current, "<B><font color='red'>Your powers are awoken. A flash of memory returns to us...we are a changeling!</font></B>")
|
||||
to_chat(current, "<B><font color='red'>Your powers have awoken. A flash of memory returns to us... we are a changeling!</font></B>")
|
||||
log_admin("[key_name(usr)] has changelinged [key_name(current)]")
|
||||
message_admins("[key_name_admin(usr)] has changelinged [key_name_admin(current)]")
|
||||
|
||||
if("autoobjectives")
|
||||
ticker.mode.forge_changeling_objectives(src)
|
||||
to_chat(usr, "\blue The objectives for changeling [key] have been generated. You can edit them and anounce manually.")
|
||||
to_chat(usr, "\blue The objectives for changeling [key] have been generated. You can edit them and announce manually.")
|
||||
log_admin("[key_name(usr)] has automatically forged objectives for [key_name(current)]")
|
||||
message_admins("[key_name_admin(usr)] has automatically forged objectives for [key_name_admin(current)]")
|
||||
|
||||
@@ -942,7 +942,7 @@
|
||||
slaved.masters += src
|
||||
som = slaved //we MIGT want to mindslave someone
|
||||
special_role = SPECIAL_ROLE_VAMPIRE
|
||||
to_chat(current, "<B><font color='red'>Your powers are awoken. Your lust for blood grows... You are a Vampire!</font></B>")
|
||||
to_chat(current, "<B><font color='red'>Your powers have awoken. Your lust for blood grows... You are a Vampire!</font></B>")
|
||||
log_admin("[key_name(usr)] has vampired [key_name(current)]")
|
||||
message_admins("[key_name_admin(usr)] has vampired [key_name_admin(current)]")
|
||||
|
||||
@@ -1061,7 +1061,7 @@
|
||||
|
||||
if("autoobjectives")
|
||||
ticker.mode.forge_traitor_objectives(src)
|
||||
to_chat(usr, "\blue The objectives for traitor [key] have been generated. You can edit them and anounce manually.")
|
||||
to_chat(usr, "\blue The objectives for traitor [key] have been generated. You can edit them and announce manually.")
|
||||
log_admin("[key_name(usr)] has automatically forged objectives for [key_name(current)]")
|
||||
message_admins("[key_name_admin(usr)] has automatically forged objectives for [key_name_admin(current)]")
|
||||
|
||||
@@ -1360,7 +1360,7 @@
|
||||
to_chat(H, "A tome, a message from your new master, appears in your [where].")
|
||||
|
||||
if(!ticker.mode.equip_cultist(current))
|
||||
to_chat(H, "Spawning an amulet from your Master failed.")
|
||||
to_chat(H, "Summoning an amulet from your Master failed.")
|
||||
|
||||
/datum/mind/proc/make_Rev()
|
||||
if(ticker.mode.head_revolutionaries.len>0)
|
||||
|
||||
@@ -11,10 +11,13 @@
|
||||
invocation_type = "shout"
|
||||
action_icon_state = "immrod"
|
||||
|
||||
sound = 'sound/effects/whoosh.ogg'
|
||||
var/rod_delay = 2
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/rod_form/cast(list/targets,mob/user = usr)
|
||||
for(var/mob/living/M in targets)
|
||||
var/turf/start = get_turf(M)
|
||||
var/obj/effect/immovablerod/wizard/W = new(start, get_ranged_target_turf(M, M.dir, (15 + spell_level * 3)))
|
||||
var/obj/effect/immovablerod/wizard/W = new(start, get_ranged_target_turf(M, M.dir, (15 + spell_level * 3)), rod_delay)
|
||||
W.wizard = M
|
||||
W.max_distance += spell_level * 3 //You travel farther when you upgrade the spell
|
||||
W.start_turf = start
|
||||
|
||||
@@ -259,12 +259,16 @@ var/round_start_time = 0
|
||||
else //nuke kills everyone on z-level 1 to prevent "hurr-durr I survived"
|
||||
for(var/mob/M in mob_list)
|
||||
M.buckled = temp_buckle
|
||||
if(M.client)
|
||||
M.client.screen += cinematic
|
||||
if(M.stat != DEAD)
|
||||
var/turf/T = get_turf(M)
|
||||
if(T && is_station_level(T.z))
|
||||
M.death(0) //no mercy
|
||||
if(T && is_station_level(T.z) && !istype(M.loc, /obj/structure/closet/secure_closet/freezer))
|
||||
var/mob/ghost = M.ghostize()
|
||||
M.dust() //no mercy
|
||||
if(ghost && ghost.client) //Play the victims an uninterrupted cinematic.
|
||||
ghost.client.screen += cinematic
|
||||
CHECK_TICK
|
||||
if(M && M.client) //Play the survivors a cinematic.
|
||||
M.client.screen += cinematic
|
||||
|
||||
//Now animate the cinematic
|
||||
switch(station_missed)
|
||||
@@ -472,7 +476,7 @@ var/round_start_time = 0
|
||||
|
||||
// Declare the completion of the station goals
|
||||
mode.declare_station_goal_completion()
|
||||
|
||||
|
||||
//Ask the event manager to print round end information
|
||||
event_manager.RoundEnd()
|
||||
|
||||
|
||||
@@ -815,7 +815,7 @@
|
||||
to_chat(src, "<span class='notice'>You are a cortical borer!</span>")
|
||||
to_chat(src, "You are a brain slug that worms its way into the head of its victim. Use stealth, persuasion and your powers of mind control to keep you, your host and your eventual spawn safe and warm.")
|
||||
to_chat(src, "Sugar nullifies your abilities, avoid it at all costs!")
|
||||
to_chat(src, "You can speak to your fellow borers by prefixing your messages with ':x'. Check out your Borer tab to see your abilities.")
|
||||
to_chat(src, "You can speak to your fellow borers by prefixing your messages with ':bo'. Check out your Borer tab to see your abilities.")
|
||||
|
||||
/proc/create_borer_mind(key)
|
||||
var/datum/mind/M = new /datum/mind(key)
|
||||
|
||||
@@ -177,8 +177,8 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) \
|
||||
|
||||
/datum/objective/hijack
|
||||
martyr_compatible = 0 //Technically you won't get both anyway.
|
||||
explanation_text = "Hijack the shuttle by escaping on it with no loyalist NanoTrasen crew on board and alive. \
|
||||
Syndicate agents, other enemies of NanoTrasen, cyborgs, and pets may be allowed to escape alive."
|
||||
explanation_text = "Hijack the shuttle by escaping on it with no loyalist Nanotrasen crew on board and alive. \
|
||||
Syndicate agents, other enemies of Nanotrasen, cyborgs, and pets may be allowed to escape alive."
|
||||
|
||||
/datum/objective/hijack/check_completion()
|
||||
if(!owner.current || owner.current.stat)
|
||||
@@ -195,7 +195,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) \
|
||||
return shuttle_master.emergency.is_hijacked()
|
||||
|
||||
/datum/objective/hijackclone
|
||||
explanation_text = "Hijack the emergency shuttle by ensuring only you (or your copies) escape."
|
||||
explanation_text = "Hijack the shuttle by ensuring only you (or your copies) escape."
|
||||
martyr_compatible = 0
|
||||
|
||||
/datum/objective/hijackclone/check_completion()
|
||||
@@ -489,7 +489,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) \
|
||||
/datum/objective/blood/proc/gen_amount_goal(low = 150, high = 400)
|
||||
target_amount = rand(low,high)
|
||||
target_amount = round(round(target_amount/5)*5)
|
||||
explanation_text = "Accumulate atleast [target_amount] units of blood in total."
|
||||
explanation_text = "Accumulate at least [target_amount] total units of blood."
|
||||
return target_amount
|
||||
|
||||
/datum/objective/blood/check_completion()
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
var/datum/material_container/materials
|
||||
|
||||
var/list/categories = list("Communication", "Construction", "Electronics", "Imported", "Medical", "Miscellaneous", "Security", "Tools")
|
||||
var/list/categories = list("Tools", "Electronics", "Construction", "Communication", "Security", "Machinery", "Medical", "Miscellaneous", "Dinnerware", "Imported")
|
||||
|
||||
/obj/machinery/autolathe/New()
|
||||
..()
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
icon = 'icons/obj/iv_drip.dmi'
|
||||
icon_state = "iv_drip"
|
||||
anchored = 0
|
||||
density = 1
|
||||
var/mob/living/carbon/human/attached = null
|
||||
var/mode = 1 // 1 is injecting, 0 is taking blood.
|
||||
var/obj/item/weapon/reagent_containers/beaker = null
|
||||
|
||||
@@ -10,30 +10,55 @@
|
||||
icon_state = "glowshroom" //replaced in New
|
||||
layer = 2.1
|
||||
var/endurance = 30
|
||||
var/potency = 30
|
||||
var/delay = 1200
|
||||
var/floor = 0
|
||||
var/yield = 3
|
||||
var/generation = 1
|
||||
var/spreadIntoAdjacentChance = 60
|
||||
light_color = "#006622"
|
||||
var/obj/item/seeds/myseed = /obj/item/seeds/glowshroom
|
||||
|
||||
obj/effect/glowshroom/glowcap
|
||||
/obj/effect/glowshroom/glowcap
|
||||
name = "glowcap"
|
||||
desc = "Mycena Ruthenia, a species of mushroom that, while it does glow in the dark, is not actually bioluminescent."
|
||||
icon_state = "glowcap"
|
||||
light_color = "#8E0300"
|
||||
myseed = /obj/item/seeds/glowshroom/glowcap
|
||||
|
||||
/obj/effect/glowshroom/single
|
||||
yield = 0
|
||||
/obj/effect/glowshroom/shadowshroom
|
||||
name = "shadowshroom"
|
||||
desc = "Mycena Umbra, a species of mushroom that emits shadow instead of light."
|
||||
icon_state = "shadowshroom"
|
||||
myseed = /obj/item/seeds/glowshroom/shadowshroom
|
||||
|
||||
/obj/effect/glowshroom/single/Spread()
|
||||
return
|
||||
|
||||
/obj/effect/glowshroom/examine(mob/user)
|
||||
. = ..()
|
||||
to_chat(user, "This is a [generation]\th generation [name]!")
|
||||
|
||||
/obj/effect/glowshroom/New()
|
||||
/obj/effect/glowshroom/Destroy()
|
||||
if(myseed)
|
||||
qdel(myseed)
|
||||
myseed = null
|
||||
return ..()
|
||||
|
||||
/obj/effect/glowshroom/New(loc, obj/item/seeds/newseed, mutate_stats)
|
||||
..()
|
||||
set_light(round(potency/10))
|
||||
dir = CalcDir()
|
||||
if(newseed)
|
||||
myseed = newseed.Copy()
|
||||
myseed.forceMove(src)
|
||||
else
|
||||
myseed = new myseed(src)
|
||||
if(mutate_stats) //baby mushrooms have different stats :3
|
||||
myseed.adjust_potency(rand(-3,6))
|
||||
myseed.adjust_yield(rand(-1,2))
|
||||
myseed.adjust_production(rand(-3,6))
|
||||
myseed.adjust_endurance(rand(-3,6))
|
||||
delay = delay - myseed.production * 100 //So the delay goes DOWN with better stats instead of up. :I
|
||||
endurance = myseed.endurance
|
||||
if(myseed.get_gene(/datum/plant_gene/trait/glow))
|
||||
var/datum/plant_gene/trait/glow/G = myseed.get_gene(/datum/plant_gene/trait/glow)
|
||||
set_light(G.glow_range(myseed), G.glow_power(myseed), G.glow_color)
|
||||
setDir(CalcDir())
|
||||
var/base_icon_state = initial(icon_state)
|
||||
if(!floor)
|
||||
switch(dir) //offset to make it be on the wall rather than on the floor
|
||||
@@ -49,10 +74,12 @@ obj/effect/glowshroom/glowcap
|
||||
else //if on the floor, glowshroom on-floor sprite
|
||||
icon_state = "[base_icon_state]f"
|
||||
|
||||
addtimer(src, "Spread", delay)
|
||||
addtimer(src, "Spread", delay, FALSE)
|
||||
|
||||
/obj/effect/glowshroom/proc/Spread()
|
||||
for(var/i = 1 to yield)
|
||||
var/turf/ownturf = get_turf(src)
|
||||
var/shrooms_planted = 0
|
||||
for(var/i in 1 to myseed.yield)
|
||||
if(prob(1/(generation * generation) * 100))//This formula gives you diminishing returns based on generation. 100% with 1st gen, decreasing to 25%, 11%, 6, 4, 2...
|
||||
var/list/possibleLocs = list()
|
||||
var/spreadsIntoAdjacent = FALSE
|
||||
@@ -61,6 +88,8 @@ obj/effect/glowshroom/glowcap
|
||||
spreadsIntoAdjacent = TRUE
|
||||
|
||||
for(var/turf/simulated/floor/earth in view(3,src))
|
||||
if(!ownturf.CanAtmosPass(earth))
|
||||
continue
|
||||
if(spreadsIntoAdjacent || !locate(/obj/effect/glowshroom) in view(1,earth))
|
||||
possibleLocs += earth
|
||||
CHECK_TICK
|
||||
@@ -81,14 +110,16 @@ obj/effect/glowshroom/glowcap
|
||||
if(shroomCount >= placeCount)
|
||||
continue
|
||||
|
||||
var/obj/effect/glowshroom/child = new type(newLoc)//The baby mushrooms have different stats :3
|
||||
child.potency = max(potency + rand(-3,6), 0)
|
||||
child.yield = max(yield + rand(-1,2), 0)
|
||||
child.delay = max(delay + rand(-30,60), 0)
|
||||
child.endurance = max(endurance + rand(-3,6), 1)
|
||||
var/obj/effect/glowshroom/child = new type(newLoc, myseed, TRUE)
|
||||
child.generation = generation + 1
|
||||
shrooms_planted++
|
||||
|
||||
CHECK_TICK
|
||||
else
|
||||
shrooms_planted++ //if we failed due to generation, don't try to plant one later
|
||||
if(shrooms_planted < myseed.yield) //if we didn't get all possible shrooms planted, try again later
|
||||
myseed.yield -= shrooms_planted
|
||||
addtimer(src, "Spread", delay, FALSE)
|
||||
|
||||
/obj/effect/glowshroom/proc/CalcDir(turf/location = loc)
|
||||
var/direction = 16
|
||||
@@ -146,4 +177,4 @@ obj/effect/glowshroom/glowcap
|
||||
|
||||
/obj/effect/glowshroom/proc/CheckEndurance()
|
||||
if(endurance <= 0)
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -49,7 +49,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list(
|
||||
new /datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = 1, on_floor = 1),
|
||||
null,
|
||||
new /datum/stack_recipe("floor tile", /obj/item/stack/tile/plasteel, 1, 4, 20),
|
||||
new /datum/stack_recipe/rods("metal rod", /obj/item/stack/rods, 1, 2, 60),
|
||||
new /datum/stack_recipe/rods("metal rod", /obj/item/stack/rods, 1, 2, 50),
|
||||
null,
|
||||
new /datum/stack_recipe("computer frame", /obj/structure/computerframe, 5, time = 25, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("modular console", /obj/machinery/modular_computer/console/buildable/, 10, time = 25, one_per_turf = 1, on_floor = 1),
|
||||
@@ -152,13 +152,15 @@ var/global/list/datum/stack_recipe/wood_recipes = list(
|
||||
new /datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("bookcase", /obj/structure/bookcase, 5, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("drying rack", /obj/machinery/smartfridge/drying_rack, 10, time = 15, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("dog bed", /obj/structure/stool/bed/dogbed, 10, time = 10, one_per_turf = 1, on_floor = 1), \
|
||||
new /datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 40),
|
||||
new /datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("easel", /obj/structure/easel, 3, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("wooden buckler", /obj/item/weapon/shield/riot/buckler, 20, time = 40),
|
||||
new /datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 50),
|
||||
new /datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 10)
|
||||
new /datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 10),
|
||||
new /datum/stack_recipe("baseball bat", /obj/item/weapon/melee/baseball_bat, 5, time = 15)
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/wood
|
||||
|
||||
@@ -17,6 +17,10 @@
|
||||
mineralType = "uranium"
|
||||
materials = list(MAT_URANIUM=500)
|
||||
|
||||
var/global/list/datum/stack_recipe/gold_tile_recipes = list ( \
|
||||
new/datum/stack_recipe("fancy gold tile", /obj/item/stack/tile/mineral/gold/fancy, max_res_amount = 20), \
|
||||
)
|
||||
|
||||
/obj/item/stack/tile/mineral/gold
|
||||
name = "gold tile"
|
||||
singular_name = "gold floor tile"
|
||||
@@ -26,6 +30,26 @@
|
||||
mineralType = "gold"
|
||||
materials = list(MAT_GOLD=500)
|
||||
|
||||
/obj/item/stack/tile/mineral/gold/New(loc, amount=null)
|
||||
..()
|
||||
recipes = gold_tile_recipes
|
||||
|
||||
var/global/list/datum/stack_recipe/goldfancy_tile_recipes = list ( \
|
||||
new/datum/stack_recipe("regular gold tile", /obj/item/stack/tile/mineral/gold, max_res_amount = 20), \
|
||||
)
|
||||
|
||||
/obj/item/stack/tile/mineral/gold/fancy
|
||||
icon_state = "tile_goldfancy"
|
||||
turf_type = /turf/simulated/floor/mineral/gold/fancy
|
||||
|
||||
/obj/item/stack/tile/mineral/gold/fancy/New(loc, amount=null)
|
||||
..()
|
||||
recipes = goldfancy_tile_recipes
|
||||
|
||||
var/global/list/datum/stack_recipe/silver_tile_recipes = list ( \
|
||||
new/datum/stack_recipe("fancy silver tile", /obj/item/stack/tile/mineral/silver/fancy, max_res_amount = 20), \
|
||||
)
|
||||
|
||||
/obj/item/stack/tile/mineral/silver
|
||||
name = "silver tile"
|
||||
singular_name = "silver floor tile"
|
||||
@@ -35,6 +59,22 @@
|
||||
mineralType = "silver"
|
||||
materials = list(MAT_SILVER=500)
|
||||
|
||||
/obj/item/stack/tile/mineral/silver/New(loc, amount=null)
|
||||
..()
|
||||
recipes = silver_tile_recipes
|
||||
|
||||
var/global/list/datum/stack_recipe/silverfancy_tile_recipes = list ( \
|
||||
new/datum/stack_recipe("regular silver tile", /obj/item/stack/tile/mineral/silver, max_res_amount = 20), \
|
||||
)
|
||||
|
||||
/obj/item/stack/tile/mineral/silver/fancy
|
||||
icon_state = "tile_silverfancy"
|
||||
turf_type = /turf/simulated/floor/mineral/silver/fancy
|
||||
|
||||
/obj/item/stack/tile/mineral/silver/fancy/New(loc, amount=null)
|
||||
..()
|
||||
recipes = silverfancy_tile_recipes
|
||||
|
||||
/obj/item/stack/tile/mineral/diamond
|
||||
name = "diamond tile"
|
||||
singular_name = "diamond floor tile"
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
var/mob/living/carbon/M = AM
|
||||
M.slip("soap", 4, 2)
|
||||
|
||||
/obj/item/weapon/soap/afterattack(atom/target, mob/user as mob, proximity)
|
||||
/obj/item/weapon/soap/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
//I couldn't feasibly fix the overlay bugs caused by cleaning items we are wearing.
|
||||
//So this is a workaround. This also makes more sense from an IC standpoint. ~Carn
|
||||
@@ -37,6 +37,9 @@
|
||||
var/obj/effect/decal/cleanable/C = locate() in target
|
||||
qdel(C)
|
||||
target.clean_blood()
|
||||
if(istype(target, /turf/simulated))
|
||||
var/turf/simulated/T = target
|
||||
T.dirt = 0
|
||||
return
|
||||
|
||||
/obj/item/weapon/soap/attack(mob/target as mob, mob/user as mob)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of Nar-Sie's followers."
|
||||
icon_state = "nullrod"
|
||||
item_state = "nullrod"
|
||||
force = 18
|
||||
force = 15
|
||||
throw_speed = 3
|
||||
throw_range = 4
|
||||
throwforce = 10
|
||||
@@ -197,7 +197,7 @@
|
||||
item_state = "hfrequency1"
|
||||
desc = "Bad references are the DNA of the soul."
|
||||
attack_verb = list("chopped", "sliced", "cut", "zandatsu'd")
|
||||
|
||||
|
||||
/obj/item/weapon/nullrod/scythe/spellblade
|
||||
icon_state = "spellblade"
|
||||
item_state = "spellblade"
|
||||
@@ -328,7 +328,7 @@
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "carpplushie"
|
||||
item_state = "carp_plushie"
|
||||
force = 15
|
||||
force = 13
|
||||
attack_verb = list("bitten", "eaten", "fin slapped")
|
||||
hitsound = 'sound/weapons/bite.ogg'
|
||||
var/used_blessing = FALSE
|
||||
@@ -346,7 +346,7 @@
|
||||
name = "monk's staff"
|
||||
desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts, now used to harass the clown."
|
||||
w_class = 4
|
||||
force = 15
|
||||
force = 13
|
||||
block_chance = 40
|
||||
slot_flags = SLOT_BACK
|
||||
sharp = 0
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
/obj/item/weapon/mop/proc/clean(turf/simulated/A)
|
||||
if(reagents.has_reagent("water", 1) || reagents.has_reagent("cleaner", 1) || reagents.has_reagent("holywater", 1))
|
||||
A.clean_blood()
|
||||
A.dirt = 0
|
||||
for(var/obj/effect/O in A)
|
||||
if(is_cleanable(O))
|
||||
qdel(O)
|
||||
|
||||
@@ -28,12 +28,12 @@
|
||||
origin_tech = "materials=1;engineering=1"
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
|
||||
toolspeed = 1
|
||||
|
||||
|
||||
/obj/item/weapon/wrench/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is beating themself to death with [src]! It looks like they're trying to commit suicide!</span>")
|
||||
user.visible_message("<span class='suicide'>[user] is beating themselves to death with [src]! It looks like they're trying to commit suicide!</span>")
|
||||
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."
|
||||
@@ -44,7 +44,7 @@
|
||||
desc = "A brass wrench. It's faintly warm to the touch."
|
||||
icon_state = "wrench_brass"
|
||||
toolspeed = 0.5
|
||||
|
||||
|
||||
/obj/item/weapon/wrench/abductor
|
||||
name = "alien wrench"
|
||||
desc = "A polarized wrench. It causes anything placed between the jaws to turn."
|
||||
@@ -55,7 +55,7 @@
|
||||
origin_tech = "materials=5;engineering=5;abductor=3"
|
||||
|
||||
/obj/item/weapon/wrench/power
|
||||
name = "Hand Drill"
|
||||
name = "hand drill"
|
||||
desc = "A simple powered drill with a bolt bit."
|
||||
icon_state = "drill_bolt"
|
||||
item_state = "drill"
|
||||
@@ -162,7 +162,7 @@
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
|
||||
|
||||
/obj/item/weapon/screwdriver/brass
|
||||
name = "brass screwdriver"
|
||||
desc = "A screwdriver made of brass. The handle feels freezing cold."
|
||||
@@ -178,7 +178,7 @@
|
||||
toolspeed = 0.1
|
||||
|
||||
/obj/item/weapon/screwdriver/power
|
||||
name = "Hand Drill"
|
||||
name = "hand drill"
|
||||
desc = "A simple hand drill with a screwdriver bit attached."
|
||||
icon_state = "drill_screw"
|
||||
item_state = "drill"
|
||||
@@ -249,7 +249,7 @@
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/wirecutters/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is cutting at their arteries with [src]! It looks like they're trying to commit suicide!</span>")
|
||||
playsound(loc, usesound, 50, 1, -1)
|
||||
@@ -275,12 +275,12 @@
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/weapon/wirecutters/power
|
||||
name = "Jaws of Life"
|
||||
name = "jaws of life"
|
||||
desc = "A set of jaws of life, the magic of science has managed to fit it down into a device small enough to fit in a tool belt. It's fitted with a cutting head."
|
||||
icon_state = "jaws_cutter"
|
||||
item_state = "jawsoflife"
|
||||
origin_tech = "materials=2;engineering=2"
|
||||
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
|
||||
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_GOLD=25)
|
||||
usesound = 'sound/items/jaws_cut.ogg'
|
||||
toolspeed = 0.25
|
||||
|
||||
@@ -388,7 +388,7 @@
|
||||
location = get_turf(M)
|
||||
if(isturf(location))
|
||||
location.hotspot_expose(700, 5)
|
||||
|
||||
|
||||
/obj/item/weapon/weldingtool/attackby(obj/item/I, mob/user, params)
|
||||
if(isscrewdriver(I))
|
||||
flamethrower_screwdriver(I, user)
|
||||
@@ -495,7 +495,7 @@
|
||||
//Switches the welder on
|
||||
/obj/item/weapon/weldingtool/proc/switched_on(mob/user)
|
||||
if(!status)
|
||||
to_chat(user, "span class='warning'>[src] can't be turned on while unsecured!</span>")
|
||||
to_chat(user, "<span class='warning'>[src] can't be turned on while unsecured!</span>")
|
||||
return
|
||||
welding = !welding
|
||||
if(welding)
|
||||
@@ -578,7 +578,7 @@
|
||||
|
||||
/obj/item/weapon/weldingtool/mini/flamethrower_screwdriver()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/weldingtool/abductor
|
||||
name = "alien welding tool"
|
||||
desc = "An alien welding tool. Whatever fuel it uses, it never runs out."
|
||||
@@ -589,7 +589,7 @@
|
||||
change_icons = 0
|
||||
origin_tech = "plasmatech=5;engineering=5;abductor=3"
|
||||
can_off_process = 1
|
||||
|
||||
|
||||
/obj/item/weapon/weldingtool/abductor/process()
|
||||
if(get_fuel() <= max_fuel)
|
||||
reagents.add_reagent("fuel", 1)
|
||||
@@ -617,7 +617,7 @@
|
||||
light_intensity = 1
|
||||
toolspeed = 0.5
|
||||
var/last_gen = 0
|
||||
|
||||
|
||||
/obj/item/weapon/weldingtool/experimental/brass
|
||||
name = "brass welding tool"
|
||||
desc = "A brass welder that seems to constantly refuel itself. It is faintly warm to the touch."
|
||||
@@ -651,12 +651,14 @@ obj/item/weapon/weldingtool/experimental/process()
|
||||
|
||||
/obj/item/weapon/crowbar/red
|
||||
icon_state = "crowbar_red"
|
||||
item_state = "crowbar_red"
|
||||
force = 8
|
||||
|
||||
|
||||
/obj/item/weapon/crowbar/brass
|
||||
name = "brass crowbar"
|
||||
desc = "A brass crowbar. It feels faintly warm to the touch."
|
||||
icon_state = "crowbar_brass"
|
||||
item_state = "crowbar_brass"
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/weapon/crowbar/abductor
|
||||
@@ -670,16 +672,16 @@ obj/item/weapon/weldingtool/experimental/process()
|
||||
|
||||
/obj/item/weapon/crowbar/large
|
||||
name = "crowbar"
|
||||
desc = "It's a big crowbar. It doesn't fit in your pockets, because it's big."
|
||||
desc = "It's a big crowbar. It doesn't fit in your pockets, because its too big."
|
||||
force = 12
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
throw_speed = 3
|
||||
throw_range = 3
|
||||
materials = list(MAT_METAL=70)
|
||||
icon_state = "crowbar_large"
|
||||
item_state = "crowbar"
|
||||
item_state = "crowbar_large"
|
||||
toolspeed = 0.5
|
||||
|
||||
|
||||
/obj/item/weapon/crowbar/cyborg
|
||||
name = "hydraulic crowbar"
|
||||
desc = "A hydraulic prying tool, compact but powerful. Designed to replace crowbar in construction cyborgs."
|
||||
@@ -688,11 +690,11 @@ obj/item/weapon/weldingtool/experimental/process()
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/weapon/crowbar/power
|
||||
name = "Jaws of Life"
|
||||
desc = "A set of jaws of life, the magic of science has managed to fit it down into a device small enough to fit in a tool belt. It's fitted with a prying head"
|
||||
name = "jaws of life"
|
||||
desc = "A set of jaws of life, the magic of science has managed to fit it down into a device small enough to fit in a tool belt. It's fitted with a prying head."
|
||||
icon_state = "jaws_pry"
|
||||
item_state = "jawsoflife"
|
||||
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
|
||||
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_DIAMOND=25)
|
||||
origin_tech = "materials=2;engineering=2"
|
||||
usesound = 'sound/items/jaws_pry.ogg'
|
||||
force = 15
|
||||
@@ -714,7 +716,7 @@ obj/item/weapon/weldingtool/experimental/process()
|
||||
// Conversion kit
|
||||
/obj/item/weapon/conversion_kit
|
||||
name = "\improper Revolver Conversion Kit"
|
||||
desc = "A professional conversion kit used to convert any knock off revolver into the real deal capable of shooting lethal .357 rounds without the possibility of catastrophic failure"
|
||||
desc = "A professional conversion kit used to convert any knock off revolver into the real deal capable of shooting lethal .357 rounds without the possibility of catastrophic failure."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "kit"
|
||||
flags = CONDUCT
|
||||
|
||||
@@ -138,4 +138,67 @@ obj/item/weapon/wirerod/attackby(obj/item/I, mob/user, params)
|
||||
icon_state = "kidanspear"
|
||||
item_state = "kidanspear"
|
||||
force = 10
|
||||
throwforce = 15
|
||||
throwforce = 15
|
||||
|
||||
/obj/item/weapon/melee/baseball_bat
|
||||
name = "baseball bat"
|
||||
desc = "There ain't a skull in the league that can withstand a swatter."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "baseball_bat"
|
||||
item_state = "baseball_bat"
|
||||
force = 10
|
||||
throwforce = 12
|
||||
attack_verb = list("beat", "smacked")
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
var/homerun_ready = 0
|
||||
var/homerun_able = 0
|
||||
|
||||
/obj/item/weapon/melee/baseball_bat/homerun
|
||||
name = "home run bat"
|
||||
desc = "This thing looks dangerous... Dangerously good at baseball, that is."
|
||||
homerun_able = 1
|
||||
|
||||
/obj/item/weapon/melee/baseball_bat/attack_self(mob/user)
|
||||
if(!homerun_able)
|
||||
..()
|
||||
return
|
||||
if(homerun_ready)
|
||||
to_chat(user, "<span class='notice'>You're already ready to do a home run!</span>")
|
||||
..()
|
||||
return
|
||||
to_chat(user, "<span class='warning'>You begin gathering strength...</span>")
|
||||
playsound(get_turf(src), 'sound/magic/lightning_chargeup.ogg', 65, 1)
|
||||
if(do_after(user, 90, target = src))
|
||||
to_chat(user, "<span class='userdanger'>You gather power! Time for a home run!</span>")
|
||||
homerun_ready = 1
|
||||
..()
|
||||
|
||||
/obj/item/weapon/melee/baseball_bat/attack(mob/living/target, mob/living/user)
|
||||
. = ..()
|
||||
var/atom/throw_target = get_edge_target_turf(target, user.dir)
|
||||
if(homerun_ready)
|
||||
user.visible_message("<span class='userdanger'>It's a home run!</span>")
|
||||
target.throw_at(throw_target, rand(8,10), 14, user)
|
||||
target.ex_act(2)
|
||||
playsound(get_turf(src), 'sound/weapons/HOMERUN.ogg', 100, 1)
|
||||
homerun_ready = 0
|
||||
return
|
||||
else
|
||||
target.throw_at(throw_target, rand(1,2), 7, user)
|
||||
|
||||
/obj/item/weapon/melee/baseball_bat/ablative
|
||||
name = "metal baseball bat"
|
||||
desc = "This bat is made of highly reflective, highly armored material."
|
||||
icon_state = "baseball_bat_metal"
|
||||
item_state = "baseball_bat_metal"
|
||||
force = 12
|
||||
throwforce = 15
|
||||
|
||||
/obj/item/weapon/melee/baseball_bat/ablative/IsReflect()//some day this will reflect thrown items instead of lasers
|
||||
var/picksound = rand(1,2)
|
||||
var/turf = get_turf(src)
|
||||
if(picksound == 1)
|
||||
playsound(turf, 'sound/weapons/effects/batreflect1.ogg', 50, 1)
|
||||
if(picksound == 2)
|
||||
playsound(turf, 'sound/weapons/effects/batreflect2.ogg', 50, 1)
|
||||
return 1
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/obj/structure/closet/secure_closet/freezer
|
||||
desc = "It's an immobile card-locked refrigerative storage unit. This one is lead-lined."
|
||||
|
||||
/obj/structure/closet/secure_closet/freezer/update_icon()
|
||||
if(broken)
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
base_name = "Maintenance Hatch"
|
||||
airlock_type = "/maintenance_hatch"
|
||||
glass = -1
|
||||
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_highsecurity // Borrowing this until WJohnston makes sprites for the assembly
|
||||
base_icon_state = "highsec"
|
||||
base_name = "High Security Airlock"
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_shuttle
|
||||
base_icon_state = "shuttle"
|
||||
base_name = "shuttle airlock"
|
||||
base_name = "Shuttle Airlock"
|
||||
airlock_type = "/shuttle"
|
||||
glass = -1
|
||||
|
||||
@@ -175,10 +175,10 @@
|
||||
new /obj/item/stack/sheet/rglass(src.loc)
|
||||
glass = 0
|
||||
else if(!anchored)
|
||||
user.visible_message("[user] dissassembles the airlock assembly.", "You start to dissassemble the airlock assembly.")
|
||||
user.visible_message("[user] disassembles the airlock assembly.", "You start to disassemble the airlock assembly.")
|
||||
if(do_after(user, 40 * WT.toolspeed, target = src))
|
||||
if(!src || !WT.isOn()) return
|
||||
to_chat(user, "\blue You dissasembled the airlock assembly!")
|
||||
to_chat(user, "\blue You disassembled the airlock assembly!")
|
||||
new /obj/item/stack/sheet/metal(src.loc, 4)
|
||||
qdel(src)
|
||||
else
|
||||
@@ -212,8 +212,9 @@
|
||||
|
||||
if(do_after(user, 40 * W.toolspeed, target = src))
|
||||
if(!src) return
|
||||
to_chat(user, "\blue You cut the airlock wires.!")
|
||||
new/obj/item/stack/cable_coil(src.loc, 1)
|
||||
to_chat(user, "\blue You cut the airlock's wires!")
|
||||
if(state == 1)
|
||||
new/obj/item/stack/cable_coil(src.loc, 1)
|
||||
src.state = 0
|
||||
|
||||
else if(istype(W, /obj/item/weapon/airlock_electronics) && state == 1 && W:icon_state != "door_electronics_smoked")
|
||||
|
||||
@@ -20,6 +20,12 @@
|
||||
/obj/structure/stool/bed/MouseDrop(atom/over_object)
|
||||
..(over_object, skip_fucking_stool_shit = 1)
|
||||
|
||||
/obj/structure/stool/bed/attackby(obj/item/weapon/W as obj, mob/user, params)
|
||||
if(iswrench(W))
|
||||
playsound(loc, W.usesound, 50, 1)
|
||||
new /obj/item/stack/sheet/metal(loc, 2)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/stool/psychbed
|
||||
name = "psych bed"
|
||||
desc = "For prime comfort during psychiatric evaluations."
|
||||
@@ -27,6 +33,23 @@
|
||||
can_buckle = 1
|
||||
buckle_lying = 1
|
||||
|
||||
/obj/structure/stool/bed/dogbed
|
||||
name = "dog bed"
|
||||
icon_state = "dogbed"
|
||||
desc = "A comfy-looking dog bed. You can even strap your pet in, in case the gravity turns off."
|
||||
anchored = 0
|
||||
|
||||
/obj/structure/stool/bed/dogbed/ian
|
||||
name = "Ian's bed"
|
||||
desc = "Ian's bed! Looks comfy."
|
||||
anchored = 1
|
||||
|
||||
/obj/structure/stool/bed/dogbed/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(iswrench(W))
|
||||
playsound(loc, W.usesound, 50, 1)
|
||||
new /obj/item/stack/sheet/wood(loc, 10)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/stool/bed/alien
|
||||
name = "resting contraption"
|
||||
desc = "This looks similar to contraptions from earth. Could aliens be stealing our technology?"
|
||||
@@ -37,7 +60,7 @@
|
||||
|
||||
/obj/structure/stool/bed/attack_animal(var/mob/living/simple_animal/M)//No more buckling hostile mobs to chairs to render them immobile forever
|
||||
if(M.environment_smash)
|
||||
new /obj/item/stack/sheet/metal(src.loc)
|
||||
new /obj/item/stack/sheet/metal(loc)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -56,7 +79,7 @@
|
||||
if(buckled_mob)
|
||||
user_unbuckle_mob(user)
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] collapses \the [src.name].</span>", "<span class='notice'>You collapse \the [src.name].</span>")
|
||||
user.visible_message("<span class='notice'>[user] collapses \the [name].</span>", "<span class='notice'>You collapse \the [name].</span>")
|
||||
new/obj/item/roller(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
@@ -90,8 +113,8 @@
|
||||
if(istype(W, /obj/item/roller_holder))
|
||||
var/obj/item/roller_holder/RH = W
|
||||
if(!RH.held)
|
||||
user.visible_message("<span class='notice'>[user] collects \the [src.name].</span>", "<span class='notice'>You collect \the [src.name].</span>")
|
||||
src.forceMove(RH)
|
||||
user.visible_message("<span class='notice'>[user] collects \the [name].</span>", "<span class='notice'>You collect \the [name].</span>")
|
||||
forceMove(RH)
|
||||
RH.held = src
|
||||
|
||||
/obj/structure/stool/bed/roller/MouseDrop(over_object, src_location, over_location)
|
||||
@@ -101,7 +124,7 @@
|
||||
return
|
||||
if(buckled_mob)
|
||||
return 0
|
||||
usr.visible_message("<span class='notice'>[usr] collapses \the [src.name].</span>", "<span class='notice'>You collapse \the [src.name].</span>")
|
||||
usr.visible_message("<span class='notice'>[usr] collapses \the [name].</span>", "<span class='notice'>You collapse \the [name].</span>")
|
||||
new/obj/item/roller(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -12,25 +12,25 @@
|
||||
return
|
||||
if(2.0)
|
||||
if(prob(70))
|
||||
new /obj/item/stack/sheet/metal(src.loc)
|
||||
new /obj/item/stack/sheet/metal(loc)
|
||||
qdel(src)
|
||||
return
|
||||
if(3.0)
|
||||
if(prob(50))
|
||||
new /obj/item/stack/sheet/metal(src.loc)
|
||||
new /obj/item/stack/sheet/metal(loc)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/structure/stool/blob_act()
|
||||
if(prob(75))
|
||||
new /obj/item/stack/sheet/metal(src.loc)
|
||||
new /obj/item/stack/sheet/metal(loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/stool/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
playsound(src.loc, W.usesound, 50, 1)
|
||||
new /obj/item/stack/sheet/metal(src.loc)
|
||||
playsound(loc, W.usesound, 50, 1)
|
||||
new /obj/item/stack/sheet/metal(loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/stool/MouseDrop(atom/over_object, src_location, over_location, src_control, over_control, params, skip_fucking_stool_shit = 0)
|
||||
@@ -41,7 +41,7 @@
|
||||
if(H==usr && !H.restrained() && !H.stat && in_range(src, over_object))
|
||||
var/obj/item/weapon/stool/S = new/obj/item/weapon/stool()
|
||||
S.origin = src
|
||||
src.loc = S
|
||||
loc = S
|
||||
H.put_in_hands(S)
|
||||
H.visible_message("<span class='warning'>[H] grabs [src] from the floor!</span>", "<span class='warning'>You grab [src] from the floor!</span>")
|
||||
|
||||
|
||||
@@ -58,6 +58,11 @@
|
||||
floor_tile = /obj/item/stack/tile/mineral/gold
|
||||
icons = list("gold","gold_dam")
|
||||
|
||||
/turf/simulated/floor/mineral/gold/fancy
|
||||
icon_state = "goldfancy"
|
||||
floor_tile = /obj/item/stack/tile/mineral/gold/fancy
|
||||
icons = list("goldfancy","goldfancy_dam")
|
||||
|
||||
//SILVER
|
||||
/turf/simulated/floor/mineral/silver
|
||||
name = "silver floor"
|
||||
@@ -65,6 +70,11 @@
|
||||
floor_tile = /obj/item/stack/tile/mineral/silver
|
||||
icons = list("silver","silver_dam")
|
||||
|
||||
/turf/simulated/floor/mineral/silver/fancy
|
||||
icon_state = "silverfancy"
|
||||
floor_tile = /obj/item/stack/tile/mineral/silver/fancy
|
||||
icons = list("silverfancy","silverfancy_dam")
|
||||
|
||||
//BANANIUM
|
||||
/turf/simulated/floor/mineral/bananium
|
||||
name = "bananium floor"
|
||||
|
||||
@@ -77,9 +77,9 @@
|
||||
for(var/client/C in admins)
|
||||
if(check_rights(R_ADMIN, 0, C.mob))
|
||||
|
||||
if(C.holder.fakekey && !check_rights(R_ADMIN, 0)) //Mentors/Mods can't see stealthmins
|
||||
if(C.holder.fakekey && !check_rights(R_ADMIN, 0)) //Mentors can't see stealthmins
|
||||
continue
|
||||
|
||||
|
||||
if(C.holder.big_brother && !check_rights(R_PERMISSIONS, 0)) // normal admins can't see BB
|
||||
continue
|
||||
|
||||
@@ -126,5 +126,5 @@
|
||||
modmsg += "\t[C] is a [C.holder.rank]\n"
|
||||
num_mods_online++
|
||||
|
||||
msg = "<b>Current Admins ([num_admins_online]):</b>\n" + msg + "\n<b>Current Mods/Mentors ([num_mods_online]):</b>\n" + modmsg
|
||||
msg = "<b>Current Admins ([num_admins_online]):</b>\n" + msg + "\n<b>Current Mentors ([num_mods_online]):</b>\n" + modmsg
|
||||
to_chat(src, msg)
|
||||
|
||||
@@ -554,7 +554,7 @@ var/list/admin_verbs_snpc = list(
|
||||
|
||||
var/turf/epicenter = mob.loc
|
||||
var/list/choices = list("Small Bomb", "Medium Bomb", "Big Bomb", "Custom Bomb")
|
||||
var/choice = input("What size explosion would you like to produce?") in choices
|
||||
var/choice = input("What size explosion would you like to produce?") as null|anything in choices
|
||||
switch(choice)
|
||||
if(null)
|
||||
return 0
|
||||
|
||||
@@ -109,13 +109,13 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
|
||||
switch(selected_type)
|
||||
if("Mentorhelp")
|
||||
msg = "<span class='mentorhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, 1, 1, selected_type)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[mob.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""] (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=holder;take_question=[mob.UID()];is_mhelp=1'>TAKE</A>) :</span> <span class='mentorhelp'>[msg]</span>"
|
||||
msg = "<span class='mentorhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, 1, 1, selected_type)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[mob.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""] (<A HREF='?_src_=holder;take_question=[mob.UID()];is_mhelp=1'>TAKE</A>) :</span> <span class='mentorhelp'>[msg]</span>"
|
||||
for(var/client/X in mentorholders + modholders + adminholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
to_chat(X, msg)
|
||||
if("Adminhelp")
|
||||
msg = "<span class='adminhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, 1, 1, selected_type)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[mob.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""] (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=holder;take_question=[mob.UID()]'>TAKE</A>) :</span> <span class='adminhelp'>[msg]</span>"
|
||||
msg = "<span class='adminhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, 1, 1, selected_type)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[mob.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""] (<A HREF='?_src_=holder;take_question=[mob.UID()]'>TAKE</A>) :</span> <span class='adminhelp'>[msg]</span>"
|
||||
for(var/client/X in modholders + adminholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
|
||||
@@ -201,7 +201,7 @@ BLIND // can't see anything
|
||||
/obj/item/clothing/gloves/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/wirecutters))
|
||||
if(!clipped)
|
||||
playsound(src.loc, W>usesound, 100, 1)
|
||||
playsound(src.loc, W.usesound, 100, 1)
|
||||
user.visible_message("<span class='warning'>[user] snips the fingertips off [src].</span>","<span class='warning'>You snip the fingertips off [src].</span>")
|
||||
clipped = 1
|
||||
name = "mangled [name]"
|
||||
|
||||
@@ -223,7 +223,7 @@ obj/item/clothing/head/blob
|
||||
desc = "Deus Vult."
|
||||
icon_state = "knight_templar"
|
||||
item_state = "knight_templar"
|
||||
|
||||
armor = list(melee = 20, bullet = 7, laser = 2, energy = 2, bomb = 2, bio = 2, rad = 0)
|
||||
|
||||
//Commander
|
||||
/obj/item/clothing/head/helmet/ert/command
|
||||
|
||||
@@ -6,6 +6,10 @@
|
||||
item_color = "cargo"
|
||||
var/flipped = 0
|
||||
actions_types = list(/datum/action/item_action/flip_cap)
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/head.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/soft/dropped()
|
||||
icon_state = "[item_color]soft"
|
||||
|
||||
@@ -163,15 +163,18 @@
|
||||
desc = "A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies."
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
species_restricted = list("exclude", "Diona", "Wryn")
|
||||
species_fit = list("Vox", "Vulpkanin", "Unathi")
|
||||
species_fit = list("Tajaran", "Unathi", "Vox", "Vulpkanin")
|
||||
sprite_sheets = list(
|
||||
"Tajaran" = 'icons/mob/species/tajaran/suit.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/suit.dmi',
|
||||
"Vulpkanin" = 'icons/mob/species/vulpkanin/suit.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/suit.dmi'
|
||||
)
|
||||
sprite_sheets_obj = list(
|
||||
"Tajaran" = 'icons/obj/clothing/species/tajaran/suits.dmi',
|
||||
"Unathi" = 'icons/obj/clothing/species/unathi/suits.dmi',
|
||||
"Vox" = 'icons/obj/clothing/species/vox/suits.dmi',
|
||||
"Unathi" = 'icons/obj/clothing/species/unathi/suits.dmi'
|
||||
"Vulpkanin" = 'icons/obj/clothing/species/vulpkanin/suits.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/eva
|
||||
@@ -183,14 +186,16 @@
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
flash_protect = 0
|
||||
species_restricted = list("exclude", "Diona", "Wryn")
|
||||
species_fit = list("Vox", "Vulpkanin", "Unathi")
|
||||
species_fit = list("Tajaran", "Unathi", "Vox", "Vulpkanin")
|
||||
sprite_sheets = list(
|
||||
"Tajaran" = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/helmet.dmi',
|
||||
"Vulpkanin" = 'icons/mob/species/vulpkanin/helmet.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi'
|
||||
"Vulpkanin" = 'icons/mob/species/vulpkanin/helmet.dmi'
|
||||
)
|
||||
sprite_sheets_obj = list(
|
||||
"Vox" = 'icons/obj/clothing/species/vox/hats.dmi'
|
||||
"Vox" = 'icons/obj/clothing/species/vox/hats.dmi',
|
||||
"Vulpkanin" = 'icons/obj/clothing/species/vulpkanin/hats.dmi'
|
||||
)
|
||||
|
||||
//Mime's Hardsuit
|
||||
|
||||
@@ -209,6 +209,7 @@
|
||||
icon_state = "knight_templar"
|
||||
item_state = "knight_templar"
|
||||
allowed = list(/obj/item/weapon/nullrod/claymore)
|
||||
armor = list(melee = 25, bullet = 5, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/armor/bulletproof
|
||||
name = "Bulletproof Vest"
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
var/busy
|
||||
var/viewing_category = 1 //typical powergamer starting on the Weapons tab
|
||||
var/list/categories = list(CAT_WEAPON,CAT_AMMO,CAT_ROBOT,CAT_FOOD,CAT_MISC,CAT_PRIMAL)
|
||||
var/display_craftable_only = FALSE
|
||||
var/display_compact = TRUE
|
||||
|
||||
|
||||
|
||||
@@ -34,8 +36,8 @@
|
||||
else
|
||||
continue
|
||||
return 0
|
||||
for(var/A in R.chem_catalists)
|
||||
if(contents[A] < R.chem_catalists[A])
|
||||
for(var/A in R.chem_catalysts)
|
||||
if(contents[A] < R.chem_catalysts[A])
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -225,68 +227,70 @@
|
||||
Deletion.Cut(Deletion.len)
|
||||
qdel(DL)
|
||||
|
||||
/datum/personal_crafting/proc/craft(mob/user)
|
||||
if(user.incapacitated() || user.lying || istype(user.loc, /obj/mecha))
|
||||
return
|
||||
/datum/personal_crafting/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, datum/topic_state/state = not_incapacitated_turf_state)
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "personal_crafting.tmpl", "Crafting Menu", 700, 800, state = state)
|
||||
ui.open()
|
||||
|
||||
/datum/personal_crafting/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
var/cur_category = categories[viewing_category]
|
||||
data["busy"] = busy
|
||||
data["prev_cat"] = categories[prev_cat()]
|
||||
data["category"] = cur_category
|
||||
data["next_cat"] = categories[next_cat()]
|
||||
data["display_craftable_only"] = display_craftable_only
|
||||
data["display_compact"] = display_compact
|
||||
|
||||
var/list/surroundings = get_surroundings(user)
|
||||
var/dat = "<h3>Crafting menu</h3>"
|
||||
if(busy)
|
||||
dat += "<div class='statusDisplay'>Crafting in progress...</div>"
|
||||
else
|
||||
dat += "<A href='?src=[UID()];backwardCat=1'><--</A>"
|
||||
dat += " [categories[prev_cat()]] |"
|
||||
dat += " <B>[categories[viewing_category]]</B> "
|
||||
dat += "| [categories[next_cat()]] "
|
||||
dat += "<A href='?src=[UID()];forwardCat=1'>--></A><BR><BR>"
|
||||
|
||||
dat += "<div class='statusDisplay'>"
|
||||
|
||||
//Filter the recipes we can craft to the top
|
||||
var/list/can_craft = list()
|
||||
var/list/cant_craft = list()
|
||||
for(var/datum/crafting_recipe/R in crafting_recipes)
|
||||
if(R.category != categories[viewing_category])
|
||||
continue
|
||||
if(check_contents(R, surroundings))
|
||||
can_craft += R
|
||||
else
|
||||
cant_craft += R
|
||||
|
||||
for(var/datum/crafting_recipe/R in can_craft)
|
||||
dat += build_recipe_text(R, surroundings)
|
||||
for(var/datum/crafting_recipe/R in cant_craft)
|
||||
dat += build_recipe_text(R, surroundings)
|
||||
|
||||
|
||||
dat += "</div>"
|
||||
|
||||
var/datum/browser/popup = new(user, "crafting", "Crafting", 500, 500)
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
return
|
||||
var/list/can_craft = list()
|
||||
var/list/cant_craft = list()
|
||||
for(var/rec in crafting_recipes)
|
||||
var/datum/crafting_recipe/R = rec
|
||||
if(R.category != cur_category)
|
||||
continue
|
||||
if(check_contents(R, surroundings))
|
||||
can_craft += list(build_recipe_data(R))
|
||||
else
|
||||
cant_craft += list(build_recipe_data(R))
|
||||
data["can_craft"] = can_craft
|
||||
data["cant_craft"] = cant_craft
|
||||
return data
|
||||
|
||||
/datum/personal_crafting/Topic(href, href_list)
|
||||
if(usr.stat || usr.lying)
|
||||
if(..())
|
||||
return
|
||||
|
||||
if(href_list["make"])
|
||||
var/datum/crafting_recipe/TR = locate(href_list["make"])
|
||||
busy = 1
|
||||
craft(usr)
|
||||
nanomanager.update_uis(src)
|
||||
var/fail_msg = construct_item(usr, TR)
|
||||
if(!fail_msg)
|
||||
usr << "<span class='notice'>[TR.name] constructed.</span>"
|
||||
to_chat(usr, "<span class='notice'>[TR.name] constructed.</span>")
|
||||
else
|
||||
usr << "<span class ='warning'>Construction failed[fail_msg]</span>"
|
||||
to_chat(usr, "<span class ='warning'>Construction failed[fail_msg]</span>")
|
||||
busy = 0
|
||||
craft(usr)
|
||||
nanomanager.update_uis(src)
|
||||
if(href_list["forwardCat"])
|
||||
viewing_category = next_cat()
|
||||
usr << "<span class='notice'>Category is now [categories[viewing_category]].</span>"
|
||||
craft(usr)
|
||||
to_chat(usr, "<span class='notice'>Category is now [categories[viewing_category]].</span>")
|
||||
. = TRUE
|
||||
if(href_list["backwardCat"])
|
||||
viewing_category = prev_cat()
|
||||
usr << "<span class='notice'>Category is now [categories[viewing_category]].</span>"
|
||||
craft(usr)
|
||||
to_chat(usr, "<span class='notice'>Category is now [categories[viewing_category]].</span>")
|
||||
. = TRUE
|
||||
if(href_list["toggle_recipes"])
|
||||
display_craftable_only = !display_craftable_only
|
||||
to_chat(usr, "<span class='notice'>You will now [display_craftable_only ? "only see recipes you can craft":"see all recipes"].</span>")
|
||||
. = TRUE
|
||||
if(href_list["toggle_compact"])
|
||||
display_compact = !display_compact
|
||||
to_chat(usr, "<span class='notice'>Crafting menu is now [display_compact? "compact" : "full size"].</span>")
|
||||
. = TRUE
|
||||
|
||||
nanomanager.update_uis(src)
|
||||
|
||||
//Next works nicely with modular arithmetic
|
||||
/datum/personal_crafting/proc/next_cat()
|
||||
@@ -301,39 +305,32 @@
|
||||
if(. <= 0)
|
||||
. = categories.len
|
||||
|
||||
/datum/personal_crafting/proc/build_recipe_text(datum/crafting_recipe/R, list/contents)
|
||||
. = ""
|
||||
var/name_text = ""
|
||||
/datum/personal_crafting/proc/build_recipe_data(datum/crafting_recipe/R)
|
||||
var/list/data = list()
|
||||
data["name"] = R.name
|
||||
data["ref"] = "\ref[R]"
|
||||
var/req_text = ""
|
||||
var/tool_text = ""
|
||||
var/catalist_text = ""
|
||||
if(check_contents(R, contents))
|
||||
name_text ="<A href='?src=[UID()];make=\ref[R]'>[R.name]</A>"
|
||||
var/catalyst_text = ""
|
||||
|
||||
else
|
||||
name_text = "<span class='linkOff'>[R.name]</span>"
|
||||
for(var/a in R.reqs)
|
||||
//We just need the name, so cheat-typecast to /atom for speed (even tho Reagents are /datum they DO have a "name" var)
|
||||
//Also these are typepaths so sadly we can't just do "[a]"
|
||||
var/atom/A = a
|
||||
req_text += " [R.reqs[A]] [initial(A.name)],"
|
||||
req_text = replacetext(req_text, ",", "", -1)
|
||||
data["req_text"] = req_text
|
||||
|
||||
if(name_text)
|
||||
for(var/A in R.reqs)
|
||||
if(ispath(A, /obj))
|
||||
var/obj/O = A
|
||||
req_text += " [R.reqs[A]] [initial(O.name)]"
|
||||
else if(ispath(A, /datum/reagent))
|
||||
var/datum/reagent/RE = A
|
||||
req_text += " [R.reqs[A]] [initial(RE.name)]"
|
||||
for(var/a in R.chem_catalysts)
|
||||
var/atom/A = a //cheat-typecast
|
||||
catalyst_text += " [R.chem_catalysts[A]] [initial(A.name)],"
|
||||
catalyst_text = replacetext(catalyst_text, ",", "", -1)
|
||||
data["catalyst_text"] = catalyst_text
|
||||
|
||||
if(R.chem_catalists.len)
|
||||
catalist_text += ", Catalysts:"
|
||||
for(var/C in R.chem_catalists)
|
||||
if(ispath(C, /datum/reagent))
|
||||
var/datum/reagent/RE = C
|
||||
catalist_text += " [R.chem_catalists[C]] [initial(RE.name)]"
|
||||
for(var/a in R.tools)
|
||||
var/atom/A = a //cheat-typecast
|
||||
tool_text += " [R.tools[A]] [initial(A.name)],"
|
||||
tool_text = replacetext(tool_text, ",", "", -1)
|
||||
data["tool_text"] = tool_text
|
||||
|
||||
if(R.tools.len)
|
||||
tool_text += ", Tools:"
|
||||
for(var/O in R.tools)
|
||||
if(ispath(O, /obj))
|
||||
var/obj/T = O
|
||||
tool_text += " [R.tools[O]] [initial(T.name)]"
|
||||
|
||||
. = "[name_text][req_text][tool_text][catalist_text]<BR>"
|
||||
return data
|
||||
@@ -5,7 +5,7 @@
|
||||
var/tools[] = list() //type paths of items needed but not consumed
|
||||
var/time = 30 //time in deciseconds
|
||||
var/parts[] = list() //type paths of items that will be placed in the result
|
||||
var/chem_catalists[] = list() //like tools but for reagents
|
||||
var/chem_catalysts[] = list() //like tools but for reagents
|
||||
var/category = CAT_MISC // Recipe category
|
||||
|
||||
/datum/crafting_recipe/proc/AdjustChems(var/obj/resultobj as obj)
|
||||
|
||||
@@ -697,3 +697,32 @@
|
||||
name = "Voxcaster"
|
||||
desc = "Battered, Sol-made military radio backpack that had its speakers fried from playing Vox opera. The words 'Swift-Talon' are crudely scratched onto its side."
|
||||
icon_state = "voxcaster_fluff"
|
||||
|
||||
/obj/item/clothing/head/wizard/fake/fluff/dreamy //phantasmicdream : Dreamy Rockwall
|
||||
name = "strange witch hat"
|
||||
desc = "A shapeshifting witch hat. A strange aura comes from it..."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "classic_witch"
|
||||
item_state = "classic_witch"
|
||||
|
||||
/obj/item/clothing/head/wizard/fake/fluff/dreamy/attack_self(mob/user)
|
||||
var/list/options = list()
|
||||
options["Classic"] = "classic_witch"
|
||||
options["Good"] = "good_witch"
|
||||
options["Dark"] = "dark_witch"
|
||||
options["Steampunk"] ="steampunk_witch"
|
||||
options["Healer"] = "healer_witch"
|
||||
options["Cute"] = "cutie_witch"
|
||||
options["Shy"] = "shy_witch"
|
||||
options["Sexy"] ="sexy_witch"
|
||||
options["Bunny"] = "bunny_witch"
|
||||
options["Potions"] = "potions_witch"
|
||||
options["Syndicate"] = "syndie_witch"
|
||||
options["Nanotrasen"] ="nt_witch"
|
||||
|
||||
var/choice = input(user, "To what form do you wish to Shapeshift this hat?", "Shapeshift Hat") as null|anything in options
|
||||
|
||||
if(choice && !user.stat && in_range(user, src))
|
||||
icon_state = options[choice]
|
||||
to_chat(user, "Your strange witch hat has now shapeshifted into it's [choice] form!")
|
||||
return 1
|
||||
|
||||
@@ -5,81 +5,65 @@
|
||||
icon = 'icons/obj/fish_items.dmi'
|
||||
icon_state = "eggs"
|
||||
w_class = 2
|
||||
var/fish_type = null //Holds the name of the fish that the egg is for
|
||||
|
||||
/obj/item/fish_eggs/New()
|
||||
..()
|
||||
|
||||
var/global/list/fish_eggs_list = list("dud" = /obj/item/fish_eggs,
|
||||
"goldfish" = /obj/item/fish_eggs/goldfish,
|
||||
"clownfish" = /obj/item/fish_eggs/clownfish,
|
||||
"shark" = /obj/item/fish_eggs/shark,
|
||||
"baby space carp" = /obj/item/fish_eggs/babycarp,
|
||||
"catfish" = /obj/item/fish_eggs/catfish,
|
||||
"feederfish" = /obj/item/fish_eggs/feederfish,
|
||||
"salmon" = /obj/item/fish_eggs/salmon,
|
||||
"shrimp" = /obj/item/fish_eggs/shrimp,
|
||||
"electric eel" = /obj/item/fish_eggs/electric_eel,
|
||||
"glofish" = /obj/item/fish_eggs/glofish,
|
||||
)
|
||||
var/datum/fish/fish_type = null //Holds the datum of the fish that the egg is for, null means dud eggs
|
||||
|
||||
/obj/item/fish_eggs/goldfish
|
||||
name = "goldfish eggs"
|
||||
desc = "Goldfish eggs, surprisingly, don't contain actual gold."
|
||||
icon_state = "gold_eggs"
|
||||
fish_type = "goldfish"
|
||||
fish_type = /datum/fish/goldfish
|
||||
|
||||
/obj/item/fish_eggs/clownfish
|
||||
name = "clownfish eggs"
|
||||
desc = "Even as eggs, they are funnier than the clown. HONK!"
|
||||
icon_state = "clown_eggs"
|
||||
fish_type = "clownfish"
|
||||
fish_type = /datum/fish/clownfish
|
||||
|
||||
/obj/item/fish_eggs/shark
|
||||
name = "shark eggs"
|
||||
desc = "We're gonna need a- Oh wait, they're still eggs."
|
||||
icon_state = "shark_eggs"
|
||||
fish_type = "shark"
|
||||
fish_type = /datum/fish/shark
|
||||
|
||||
/obj/item/fish_eggs/babycarp
|
||||
name = "baby space carp eggs"
|
||||
desc = "Eggs from the substantially smaller form of the intergalactic terror."
|
||||
icon_state = "babycarp_eggs"
|
||||
fish_type = "baby space carp"
|
||||
fish_type = /datum/fish/babycarp
|
||||
|
||||
/obj/item/fish_eggs/catfish
|
||||
name = "catfish eggs"
|
||||
desc = "A bottom-feeding species noted for their similarity to cats and Tajaran."
|
||||
icon_state = "catfish_eggs"
|
||||
fish_type = "catfish"
|
||||
fish_type = /datum/fish/catfish
|
||||
|
||||
/obj/item/fish_eggs/feederfish
|
||||
name = "feeder fish eggs"
|
||||
desc = "These generic fish are commonly found being eaten by larger fish."
|
||||
icon_state = "feederfish_eggs"
|
||||
fish_type = "feederfish"
|
||||
fish_type = /datum/fish/feederfish
|
||||
|
||||
/obj/item/fish_eggs/salmon
|
||||
name = "salmon eggs"
|
||||
desc = "A collection of salmon eggs."
|
||||
icon_state = "salmon_eggs"
|
||||
fish_type = "salmon"
|
||||
fish_type = /datum/fish/salmon
|
||||
|
||||
/obj/item/fish_eggs/shrimp
|
||||
name = "shrimp eggs"
|
||||
desc = "Eggs for shrimp. You figured they'd be smaller though..."
|
||||
icon_state = "shrimp_eggs"
|
||||
fish_type = "shrimp"
|
||||
fish_type = /datum/fish/shrimp
|
||||
|
||||
/obj/item/fish_eggs/electric_eel
|
||||
name = "electric eel eggs"
|
||||
desc = "A pile of eggs for a slimy, shocking, sea-serpent."
|
||||
icon_state = "electric_eel_eggs"
|
||||
fish_type = "electric eel"
|
||||
fish_type = /datum/fish/electric_eel
|
||||
|
||||
/obj/item/fish_eggs/glofish
|
||||
name = "glofish eggs"
|
||||
desc = "A cluster of bright neon eggs belonging to a bio-luminescent species of fish."
|
||||
icon_state = "glofish_eggs"
|
||||
fish_type = "glofish"
|
||||
fish_type = /datum/fish/glofish
|
||||
|
||||
|
||||
@@ -1,17 +1,4 @@
|
||||
|
||||
var/global/list/fish_items_list = list("goldfish" = /obj/item/weapon/fish/goldfish,
|
||||
"clownfish" = /obj/item/weapon/grown/bananapeel/clownfish,
|
||||
"shark" = /obj/item/weapon/fish/shark,
|
||||
"baby space carp" = /obj/item/weapon/fish/babycarp,
|
||||
"catfish" = /obj/item/weapon/fish/catfish,
|
||||
"feederfish" = /obj/item/weapon/reagent_containers/food/snacks/feederfish,
|
||||
"salmon" = /obj/item/weapon/fish/salmon,
|
||||
"shrimp" = /obj/item/weapon/reagent_containers/food/snacks/shrimp,
|
||||
"electric eel" = /obj/item/weapon/fish/electric_eel,
|
||||
"glofish" = /obj/item/weapon/fish/glofish
|
||||
,
|
||||
)
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Aquarium Supplies //
|
||||
//////////////////////////////////////////////
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
|
||||
/datum/fish
|
||||
var/fish_name = "generic fish"
|
||||
var/egg_item = /obj/item/fish_eggs
|
||||
var/fish_item = /obj/item/weapon/fish
|
||||
var/crossbreeder = 1 //determines if the fish will attempt to breed with other types, set to 0 if you want the fish to only lay eggs with its own species
|
||||
|
||||
/datum/fish/proc/special_interact(obj/machinery/fishtank/my_tank)
|
||||
return
|
||||
|
||||
/datum/fish/goldfish
|
||||
fish_name = "goldfish"
|
||||
egg_item = /obj/item/fish_eggs/goldfish
|
||||
fish_item = /obj/item/weapon/fish/goldfish
|
||||
|
||||
/datum/fish/glofish
|
||||
fish_name = "glofish"
|
||||
egg_item = /obj/item/fish_eggs/glofish
|
||||
fish_item = /obj/item/weapon/fish/glofish
|
||||
|
||||
/datum/fish/clownfish
|
||||
fish_name = "clownfish"
|
||||
egg_item = /obj/item/fish_eggs/clownfish
|
||||
fish_item = /obj/item/weapon/grown/bananapeel/clownfish
|
||||
|
||||
/datum/fish/shark
|
||||
fish_name = "shark"
|
||||
egg_item = /obj/item/fish_eggs/shark
|
||||
fish_item = /obj/item/weapon/fish/shark
|
||||
|
||||
/datum/fish/babycarp
|
||||
fish_name = "baby space carp"
|
||||
egg_item = /obj/item/fish_eggs/babycarp
|
||||
fish_item = /obj/item/weapon/fish/babycarp
|
||||
|
||||
/datum/fish/catfish
|
||||
fish_name = "catfish"
|
||||
egg_item = /obj/item/fish_eggs/catfish
|
||||
fish_item = /obj/item/weapon/fish/catfish
|
||||
|
||||
/datum/fish/catfish/special_interact(obj/machinery/fishtank/my_tank)
|
||||
if(!my_tank || !istype(my_tank))
|
||||
return
|
||||
if(my_tank.filth_level > 0 && prob(33))
|
||||
my_tank.adjust_filth_level(-0.1)
|
||||
|
||||
/datum/fish/salmon
|
||||
fish_name = "salmon"
|
||||
egg_item = /obj/item/fish_eggs/salmon
|
||||
fish_item = /obj/item/weapon/fish/salmon
|
||||
|
||||
/datum/fish/shrimp
|
||||
fish_name = "shrimp"
|
||||
egg_item = /obj/item/fish_eggs/shrimp
|
||||
fish_item = /obj/item/weapon/reagent_containers/food/snacks/shrimp
|
||||
crossbreeder = 0
|
||||
|
||||
/datum/fish/feederfish
|
||||
fish_name = "feeder fish"
|
||||
egg_item = /obj/item/fish_eggs/feederfish
|
||||
fish_item = /obj/item/weapon/reagent_containers/food/snacks/feederfish
|
||||
|
||||
/datum/fish/feederfish/special_interact(obj/machinery/fishtank/my_tank)
|
||||
if(!my_tank || !istype(my_tank))
|
||||
return
|
||||
if(my_tank.fish_count < 2)
|
||||
return
|
||||
if(my_tank.food_level <= 5 && prob(25))
|
||||
my_tank.adjust_food_level(1)
|
||||
my_tank.kill_fish(src)
|
||||
|
||||
/datum/fish/electric_eel
|
||||
fish_name = "electric eel"
|
||||
egg_item = /obj/item/fish_eggs/electric_eel
|
||||
fish_item = /obj/item/weapon/fish/electric_eel
|
||||
crossbreeder = 0
|
||||
@@ -112,7 +112,7 @@
|
||||
if(light_switch)
|
||||
set_light(2,2,"#a0a080")
|
||||
else
|
||||
set_light(0)
|
||||
adjust_tank_light()
|
||||
|
||||
//////////////////////////////
|
||||
// NEW() PROCS //
|
||||
@@ -176,6 +176,7 @@
|
||||
/obj/machinery/fishtank/process()
|
||||
//Start by counting fish in the tank
|
||||
fish_count = 0
|
||||
var/ate_food = 0
|
||||
for(var/fish in fish_list)
|
||||
if(fish)
|
||||
fish_count++
|
||||
@@ -184,43 +185,38 @@
|
||||
if((fish_count * 50) > water_level)
|
||||
if(prob(50)) //Not enough water for all the fish, chance to kill one
|
||||
kill_fish() //Chance passed, kill a random fish
|
||||
filth_level += 2 //Dead fish raise the filth level quite a bit, reflect this
|
||||
adjust_filth_level(2) //Dead fish raise the filth level quite a bit, reflect this
|
||||
|
||||
//Check filth_level
|
||||
check_filth_level()
|
||||
if(filth_level == 10 && fish_count > 0) //This tank is nasty and possibly unsuitable for fish if any are in it
|
||||
if(prob(30)) //Chance for a fish to die each cycle while the tank is this nasty
|
||||
kill_fish() //Kill a random fish, don't raise filth level since we're at cap already
|
||||
|
||||
//Check breeding conditions
|
||||
if(fish_count >=2 && egg_count < max_fish) //Need at least 2 fish to breed, but won't breed if there are as many eggs as max_fish
|
||||
if(food_level > 2 && filth_level <=5) //Breeding is going to use extra food, and the filth_level shouldn't be too high
|
||||
if(food_level >= 0.2 && filth_level <=5) //Breeding is going to use extra food, and the filth_level shouldn't be too high
|
||||
if(prob(((fish_count - 2) * 5)+10)) //Chances increase with each additional fish, 10% base + 5% per additional fish
|
||||
egg_count++ //A new set of eggs were laid, increase egg_count
|
||||
egg_list.Add(select_egg_type()) //Add the new egg to the egg_list for storage
|
||||
food_level -= 2 //Remove extra food for the breeding process
|
||||
breed_fish()
|
||||
adjust_food_level(-0.2) //Remove extra food for the breeding process
|
||||
ate_food = 1
|
||||
|
||||
//Handle standard food and filth adjustments
|
||||
check_food_level()
|
||||
var/ate_food = 0
|
||||
if(food_level > 0 && prob(50)) //Chance for the fish to eat some food
|
||||
if(food_level >= (fish_count * 0.1)) //If there is at least enough food to go around, feed all the fish
|
||||
food_level -= fish_count * 0.1
|
||||
adjust_food_level(fish_count * -0.1)
|
||||
else //Use up the last of the food
|
||||
food_level = 0
|
||||
adjust_food_level(-food_level)
|
||||
ate_food = 1
|
||||
check_food_level()
|
||||
|
||||
if(water_level > 0) //Don't dirty the tank if it has no water
|
||||
if(fish_count == 0) //If the tank has no fish, algae growth can occur
|
||||
if(filth_level < 7.5 && prob(15)) //Algae growth is a low chance and cannot exceed filth_level of 7.5
|
||||
filth_level += 0.05 //Algae growth is slower than fish filth build-up
|
||||
adjust_filth_level(0.05) //Algae growth is slower than fish filth build-up
|
||||
else if(filth_level < 10 && prob(10)) //Chance for the tank to get dirtier if the filth_level isn't 10
|
||||
if(ate_food && prob(25)) //If they ate this cycle, there is an additional chance they make a bigger mess
|
||||
filth_level += fish_count * 0.1
|
||||
adjust_filth_level(fish_count * 0.1)
|
||||
else //If they didn't make the big mess, make a little one
|
||||
filth_level += 0.1
|
||||
check_filth_level()
|
||||
adjust_filth_level(0.1)
|
||||
|
||||
//Handle special interactions
|
||||
handle_special_interactions()
|
||||
@@ -228,54 +224,42 @@
|
||||
//Handle water leakage from damage
|
||||
if(water_level > 0) //Can't leak water if there is no water in the tank
|
||||
if(leaking == 2) //At or below 25% health, the tank will lose 10 water_level per cycle (major leak)
|
||||
water_level -= 10
|
||||
adjust_water_level(-10)
|
||||
else if(leaking == 1) //At or below 50% health, the tank will lose 1 water_level per cycle (minor leak)
|
||||
water_level -= 1
|
||||
check_water_level()
|
||||
adjust_water_level(-1)
|
||||
update_icon()
|
||||
|
||||
//////////////////////////////
|
||||
// SUPPORT PROCS //
|
||||
//////////////////////////////
|
||||
|
||||
/obj/machinery/fishtank/proc/handle_special_interactions()
|
||||
var/glo_light = 0
|
||||
for(var/fish in fish_list)
|
||||
switch(fish)
|
||||
if("catfish") //Catfish have a small chance of cleaning some filth since they are a bottom-feeder
|
||||
if((filth_level > 0) && prob(30))
|
||||
filth_level -= 0.1
|
||||
if("feederfish") //Feeder fish have a small chance of sacrificing themselves to produce some food
|
||||
if(fish_count < 2) //Don't sacrifice the last fish, there's nothing to eat it
|
||||
continue
|
||||
if(food_level <= 5 && prob(25))
|
||||
kill_fish("feederfish") //Kill the fish to reflect it's sacrifice, but don't increase the filth_level
|
||||
food_level += 1 //The corpse became food for the other fish, ecology at it's finest
|
||||
if("glofish")
|
||||
glo_light++
|
||||
if(!light_switch && (glo_light > 0))
|
||||
set_light(2,glo_light,"#99FF66")
|
||||
check_food_level()
|
||||
check_filth_level()
|
||||
check_water_level()
|
||||
for(var/datum/fish/fish in fish_list)
|
||||
fish.special_interact(src)
|
||||
adjust_tank_light()
|
||||
|
||||
/obj/machinery/fishtank/proc/check_water_level()
|
||||
if(water_level < 0) //Water_level cannot be negative, set it to 0 if it is
|
||||
water_level = 0
|
||||
if(water_level > water_capacity) //Water_level cannot exceed capacity, set it to capacity if it does
|
||||
water_level = water_capacity
|
||||
/obj/machinery/fishtank/proc/adjust_tank_light()
|
||||
if(light_switch) //tank light overrides fish lights
|
||||
return
|
||||
else
|
||||
var/glo_light = 0
|
||||
for(var/datum/fish/fish in fish_list)
|
||||
if(istype(fish, /datum/fish/glofish))
|
||||
glo_light ++
|
||||
if(glo_light)
|
||||
set_light(2, glo_light, "#99FF66")
|
||||
else
|
||||
set_light(0, 0)
|
||||
|
||||
/obj/machinery/fishtank/proc/adjust_water_level(amount = 0)
|
||||
water_level = min(water_capacity, max(0, water_level + amount))
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/fishtank/proc/check_filth_level()
|
||||
if(filth_level < 0) //Filth_level cannot be negative, set it to 0 if it is
|
||||
filth_level = 0
|
||||
if(filth_level > 10) //Filth_level cannot exceed 10 (cap), set it to 10 if it does
|
||||
filth_level = 10
|
||||
/obj/machinery/fishtank/proc/adjust_filth_level(amount = 0)
|
||||
filth_level = min(10, max(0, filth_level + amount))
|
||||
|
||||
/obj/machinery/fishtank/proc/check_food_level()
|
||||
if(food_level < 0) //Food_level cannot be negative, set it to 0 if it is
|
||||
food_level = 0
|
||||
if(food_level > 10) //Food_level cannot exceed 10 (cap), set it to 10 if it does
|
||||
food_level = 10
|
||||
/obj/machinery/fishtank/proc/adjust_food_level(amount = 0)
|
||||
food_level = min(10, max(0, food_level + amount))
|
||||
|
||||
/obj/machinery/fishtank/proc/check_health()
|
||||
//Max value check
|
||||
@@ -292,37 +276,28 @@
|
||||
if(cur_health <= 0) //The tank is broken, destroy it
|
||||
destroy()
|
||||
|
||||
/obj/machinery/fishtank/proc/kill_fish(var/type = null)
|
||||
/obj/machinery/fishtank/proc/kill_fish(datum/fish/fish_type = null)
|
||||
//Check if we were passed a fish to kill, otherwise kill a random one
|
||||
if(type)
|
||||
fish_list.Remove(type) //Kill a fish of the specified type
|
||||
fish_count -- //Lower fish_count to reflect the death of a fish, so the everything else works fine
|
||||
else
|
||||
fish_list.Remove(pick(fish_list)) //Kill a random fish
|
||||
fish_count -- //Lower fish_count to reflect the death of a fish, so the everything else works fine
|
||||
if(!fish_type)
|
||||
fish_type = pick(fish_list)
|
||||
fish_list.Remove(fish_type) //Kill a fish of the specified type
|
||||
fish_count -- //Lower fish_count to reflect the death of a fish, so the everything else works fine
|
||||
if(istype(fish_type, /datum/fish/glofish))
|
||||
adjust_tank_light()
|
||||
qdel(fish_type)
|
||||
|
||||
/obj/machinery/fishtank/proc/add_fish(var/type = null)
|
||||
/obj/machinery/fishtank/proc/add_fish(datum/fish/fish_type = null)
|
||||
//Check if we were passed a fish type
|
||||
if(type)
|
||||
fish_list.Add("[type]") //Add a fish of the specified type
|
||||
if(fish_type)
|
||||
fish_type = new fish_type
|
||||
fish_list.Add(fish_type) //Add a fish of the specified type
|
||||
fish_count++ //Increase fish_count to reflect the introduction of a fish, so the everything else works fine
|
||||
//Announce the new fish
|
||||
src.visible_message("A new [type] has hatched in \the [src]!")
|
||||
visible_message("A new [fish_type.fish_name] has hatched in \the [src]!")
|
||||
//Null type fish are dud eggs, give a message to inform the player
|
||||
else
|
||||
to_chat(usr, "The eggs disolve in the water. They were duds!")
|
||||
|
||||
/obj/machinery/fishtank/proc/select_egg_type()
|
||||
var/fish = pick(fish_list) //Select a fish from the fish in the tank
|
||||
if(prob(25)) //25% chance to be a dud (blank) egg
|
||||
fish = "dud"
|
||||
var/obj/item/fish_eggs/egg_path = null //Create empty variable to receive the egg_path
|
||||
egg_path = fish_eggs_list[fish] //Locate the corresponding path from fish_eggs_list that matches the fish
|
||||
if(!egg_path) //The fish wasn't located in the fish_eggs_list, potentially due to a typo, so return a dud egg
|
||||
return /obj/item/fish_eggs
|
||||
else //The fish was located in the fish_eggs_list, so return the proper egg
|
||||
return egg_path
|
||||
|
||||
/obj/machinery/fishtank/proc/harvest_eggs(var/mob/user)
|
||||
if(!egg_count) //Can't harvest non-existant eggs
|
||||
return
|
||||
@@ -342,17 +317,17 @@
|
||||
if(!fish_count) //Can't catch non-existant fish!
|
||||
to_chat(usr, "There are no fish in \the [src] to catch!")
|
||||
return
|
||||
|
||||
var/caught_fish
|
||||
caught_fish = input("Select a fish to catch.", "Fishing", caught_fish) in fish_list //Select a fish from the tank
|
||||
var/list/fish_names_list = list()
|
||||
for(var/datum/fish/fish_type in fish_list)
|
||||
fish_names_list += list("[fish_type.fish_name]" = fish_type)
|
||||
var/caught_fish = input("Select a fish to catch.", "Fishing") as null|anything in fish_names_list //Select a fish from the tank
|
||||
if(caught_fish)
|
||||
var/dead_fish = null
|
||||
dead_fish = fish_items_list[caught_fish] //Locate the appropriate fish_item for the caught fish
|
||||
if(!dead_fish) //No fish_item found, possibly due to typo or not being listed. Do nothing.
|
||||
return
|
||||
kill_fish(caught_fish) //Kill the caught fish from the tank
|
||||
user.visible_message("[user.name] harvests \a [caught_fish] from \the [src].", "You scoop \a [caught_fish] out of \the [src].")
|
||||
new dead_fish(get_turf(user)) //Spawn the appropriate fish_item at the user's feet.
|
||||
var/datum/fish/fish_type = fish_names_list[caught_fish]
|
||||
var/fish_item = fish_type.fish_item
|
||||
if(fish_item)
|
||||
new fish_item(get_turf(user)) //Spawn the appropriate fish_item at the user's feet.
|
||||
kill_fish(fish_type) //Kill the caught fish from the tank
|
||||
|
||||
/obj/machinery/fishtank/proc/destroy(var/deconstruct = 0)
|
||||
var/turf/T = get_turf(src) //Store the tank's turf for atmos updating after deletion of tank
|
||||
@@ -392,6 +367,34 @@
|
||||
var/turf/simulated/S = T
|
||||
S.MakeSlippery()
|
||||
|
||||
/obj/machinery/fishtank/proc/breed_fish()
|
||||
var/list/breed_candidates = fish_list.Copy()
|
||||
var/datum/fish/parent1 = pick_n_take(breed_candidates)
|
||||
var/datum/fish/parent2 = null
|
||||
if(!parent1.crossbreeder) //fish with crossbreed = 0 will only breed with their own species, and only leave duds if they can't breed
|
||||
if(parent1 in breed_candidates)
|
||||
egg_list.Add(parent1.egg_item)
|
||||
else
|
||||
egg_list.Add(/obj/item/fish_eggs)
|
||||
else
|
||||
parent2 = pick(breed_candidates)
|
||||
if(!parent2.crossbreeder) //second fish refuses to crossbreed, spawn a dud
|
||||
egg_list.Add(/obj/item/fish_eggs)
|
||||
else if(parent1 == parent2) //both fish are the same type
|
||||
if(prob(90)) //90% chance to get that type of egg
|
||||
egg_list.Add(parent1.egg_item)
|
||||
else //10% chance to get a dud
|
||||
egg_list.Add(/obj/item/fish_eggs)
|
||||
else //different types of fish
|
||||
if(prob(30)) //30% chance to get dud
|
||||
egg_list.Add(/obj/item/fish_eggs)
|
||||
else
|
||||
if(prob(50)) //chance to get egg for either parent type (50/50 for either parent, 35% overall each)
|
||||
egg_list.Add(parent1.egg_item)
|
||||
else
|
||||
egg_list.Add(parent2.egg_item)
|
||||
egg_count++
|
||||
|
||||
////////////////////////////// Note from FalseIncarnate:
|
||||
// EXAMINE PROC // This proc is massive, messy, and probably could be handled better.
|
||||
////////////////////////////// Feel free to try cleaning it up if you think of a better way to do it.
|
||||
@@ -464,9 +467,11 @@
|
||||
var/fish_num = fish_count
|
||||
var/message = "You spot "
|
||||
while(fish_num > 0)
|
||||
var/datum/fish/fish_type = fish_list[fish_num]
|
||||
var/fish_name = fish_type.fish_name
|
||||
if(fish_count > 1 && fish_num == 1) //If there were at least 2 fish, and this is the last one, add "and" to the message
|
||||
message += "and "
|
||||
message += "a [fish_list[fish_num]]"
|
||||
message += "\an [fish_name]"
|
||||
fish_num --
|
||||
if(fish_num > 0) //There's more fish, add a comma to the message
|
||||
message +=", "
|
||||
@@ -645,13 +650,13 @@
|
||||
return
|
||||
else
|
||||
message = "The filtration process purifies the water, raising the water level."
|
||||
water_level += water_value
|
||||
if(water_level == water_capacity)
|
||||
|
||||
if((water_level + water_value) == water_capacity)
|
||||
message += " You filled \the [src] to the brim!"
|
||||
if(water_level > water_capacity)
|
||||
if((water_level + water_value) > water_capacity)
|
||||
message += " You overfilled \the [src] and some water runs down the side, wasted."
|
||||
C.reagents.clear_reagents()
|
||||
check_water_level()
|
||||
adjust_water_level(water_value)
|
||||
user.visible_message("[user.name] pours the contents of [C.name] into \the [src].", "[message]")
|
||||
return
|
||||
//Empty containers will scoop out water, filling the container as much as possible from the water_level
|
||||
@@ -661,13 +666,12 @@
|
||||
else
|
||||
if(water_level >= C.volume) //Enough to fill the container completely
|
||||
C.reagents.add_reagent("fishwater", C.volume)
|
||||
water_level -= C.volume
|
||||
adjust_water_level(-C.volume)
|
||||
user.visible_message("[user.name] scoops out some water from \the [src].", "You completely fill [C.name] from \the [src].")
|
||||
else //Fill the container as much as possible with the water_level
|
||||
C.reagents.add_reagent("fishwater", water_level)
|
||||
water_level = 0
|
||||
adjust_water_level(-water_level)
|
||||
user.visible_message("[user.name] scoops out some water from \the [src].", "You fill [C.name] with the last of the water in \the [src].")
|
||||
check_water_level()
|
||||
return
|
||||
//Wrenches can deconstruct empty tanks, but not tanks with any water. Kills any fish left inside and destroys any unharvested eggs in the process
|
||||
if(istype(O, /obj/item/weapon/wrench))
|
||||
@@ -702,12 +706,11 @@
|
||||
user.visible_message("[user.name] shakes some fish food into the empty [src]... How sad.", "You shake some fish food into the empty [src]... If only it had fish.")
|
||||
else
|
||||
user.visible_message("[user.name] feeds the fish in \the [src]. The fish look excited!", "You feed the fish in \the [src]. They look excited!")
|
||||
food_level += 10
|
||||
adjust_food_level(10)
|
||||
else
|
||||
to_chat(usr, "[src] already has plenty of food in it. You decide to not add more.")
|
||||
else
|
||||
to_chat(usr, "[src] doesn't have any water in it. You should fill it with water first.")
|
||||
check_food_level()
|
||||
return
|
||||
//Fish egg scoop
|
||||
else if(istype(O, /obj/item/weapon/egg_scoop))
|
||||
@@ -726,7 +729,7 @@
|
||||
if(filth_level == 0)
|
||||
to_chat(usr, "[src] is already spotless!")
|
||||
else
|
||||
filth_level = 0
|
||||
adjust_filth_level(-filth_level)
|
||||
user.visible_message("[user.name] scrubs the inside of \the [src], cleaning the filth.", "You scrub the inside of \the [src], cleaning the filth.")
|
||||
else if(O && O.force)
|
||||
user.visible_message("<span class='danger'>\The [src] has been attacked by [user.name] with \the [O]!</span>")
|
||||
|
||||
@@ -717,6 +717,14 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/baseballburger
|
||||
name = "home run baseball burger"
|
||||
desc = "It's still warm. The steam coming off of it looks like baseball."
|
||||
icon_state = "baseball"
|
||||
filling_color = "#CD853F"
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/omelette
|
||||
name = "Omelette Du Fromage"
|
||||
desc = "That's all you can say!"
|
||||
|
||||
@@ -126,6 +126,13 @@
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/mimeburger
|
||||
|
||||
/datum/recipe/microwave/baseballburger
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bun,
|
||||
/obj/item/weapon/melee/baseball_bat
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/baseballburger
|
||||
|
||||
/datum/recipe/microwave/hotdog
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bun,
|
||||
|
||||
@@ -54,6 +54,15 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/crafting_recipe/baseballburger
|
||||
name = "Home run baseball burger"
|
||||
reqs = list(
|
||||
/obj/item/weapon/melee/baseball_bat = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bun = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/baseballburger
|
||||
category = CAT_FOOD
|
||||
|
||||
/datum/crafting_recipe/notasandwich
|
||||
name = "not-a-sandwich"
|
||||
reqs = list(
|
||||
|
||||
@@ -220,7 +220,7 @@
|
||||
rarity = 20
|
||||
genes = list(/datum/plant_gene/trait/glow, /datum/plant_gene/trait/plant_type/fungal_metabolism)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
|
||||
mutatelist = list(/obj/item/seeds/glowshroom/glowcap)
|
||||
mutatelist = list(/obj/item/seeds/glowshroom/glowcap, /obj/item/seeds/glowshroom/shadowshroom)
|
||||
reagents_add = list("radium" = 0.1, "phosphorus" = 0.1, "nutriment" = 0.04)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom
|
||||
@@ -235,14 +235,25 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/attack_self(mob/user)
|
||||
if(istype(user.loc, /turf/space))
|
||||
return
|
||||
var/obj/effect/glowshroom/planted = new effect_path(user.loc)
|
||||
planted.delay = planted.delay - seed.production * 100 //So the delay goes DOWN with better stats instead of up. :I
|
||||
planted.endurance = seed.endurance
|
||||
planted.yield = seed.yield
|
||||
planted.potency = seed.potency
|
||||
return FALSE
|
||||
if(!isturf(user.loc))
|
||||
to_chat(user, "<span class='warning'>You need more space to plant [src].</span>")
|
||||
return FALSE
|
||||
var/count = 0
|
||||
var/maxcount = 1
|
||||
for(var/tempdir in cardinal)
|
||||
var/turf/simulated/wall = get_step(user.loc, tempdir)
|
||||
if(istype(wall))
|
||||
maxcount++
|
||||
for(var/obj/effect/glowshroom/G in user.loc)
|
||||
count++
|
||||
if(count >= maxcount)
|
||||
to_chat(user, "<span class='warning'>There are too many shrooms here to plant [src].</span>")
|
||||
return FALSE
|
||||
new effect_path(user.loc, seed)
|
||||
to_chat(user, "<span class='notice'>You plant [src].</span>")
|
||||
qdel(src)
|
||||
return TRUE
|
||||
|
||||
|
||||
// Glowcap
|
||||
@@ -255,7 +266,7 @@
|
||||
icon_dead = "glowshroom-dead"
|
||||
plantname = "Glowcaps"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap
|
||||
genes = list(/datum/plant_gene/trait/glow, /datum/plant_gene/trait/cell_charge, /datum/plant_gene/trait/plant_type/fungal_metabolism)
|
||||
genes = list(/datum/plant_gene/trait/glow/red, /datum/plant_gene/trait/cell_charge, /datum/plant_gene/trait/plant_type/fungal_metabolism)
|
||||
mutatelist = list()
|
||||
reagents_add = list("teslium" = 0.1, "nutriment" = 0.04)
|
||||
rarity = 30
|
||||
@@ -263,7 +274,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap
|
||||
seed = /obj/item/seeds/glowshroom/glowcap
|
||||
name = "glowcap cluster"
|
||||
desc = "<I>Mycena Ruthenia</I>: This species of mushroom glows in the dark, but aren't bioluminescent. They're warm to the touch..."
|
||||
desc = "<I>Mycena Ruthenia</I>: This species of mushroom glows in the dark, but isn't actually bioluminescent. They're warm to the touch..."
|
||||
icon_state = "glowcap"
|
||||
filling_color = "#00FA9A"
|
||||
effect_path = /obj/effect/glowshroom/glowcap
|
||||
@@ -292,3 +303,26 @@
|
||||
desc = "A fungus ideal for making antibacterials."
|
||||
icon_state = "angel"
|
||||
color = "#4f4331"
|
||||
|
||||
//Shadowshroom
|
||||
/obj/item/seeds/glowshroom/shadowshroom
|
||||
name = "pack of shadowshroom mycelium"
|
||||
desc = "This mycelium will grow into something shadowy."
|
||||
icon_state = "mycelium-shadowshroom"
|
||||
species = "shadowshroom"
|
||||
icon_grow = "shadowshroom-grow"
|
||||
icon_dead = "shadowshroom-dead"
|
||||
plantname = "Shadowshrooms"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom
|
||||
genes = list(/datum/plant_gene/trait/glow/shadow, /datum/plant_gene/trait/plant_type/fungal_metabolism)
|
||||
mutatelist = list()
|
||||
reagents_add = list("radium" = 0.2, "nutriment" = 0.04)
|
||||
rarity = 30
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom
|
||||
seed = /obj/item/seeds/glowshroom/shadowshroom
|
||||
name = "shadowshroom cluster"
|
||||
desc = "<I>Mycena Umbra</I>: This species of mushroom emits shadow instead of light."
|
||||
icon_state = "shadowshroom"
|
||||
effect_path = /obj/effect/glowshroom/shadowshroom
|
||||
origin_tech = "biotech=4;plasmatech=4;magnets=4"
|
||||
|
||||
@@ -300,7 +300,7 @@
|
||||
if(!self_sustaining)
|
||||
if(myseed && myseed.get_gene(/datum/plant_gene/trait/glow))
|
||||
var/datum/plant_gene/trait/glow/G = myseed.get_gene(/datum/plant_gene/trait/glow)
|
||||
set_light(G.get_lum(myseed))
|
||||
set_light(G.glow_range(myseed), G.glow_power(myseed), G.glow_color)
|
||||
else
|
||||
set_light(0)
|
||||
|
||||
|
||||
@@ -263,23 +263,40 @@
|
||||
|
||||
/datum/plant_gene/trait/glow
|
||||
// Makes plant glow. Makes plant in tray glow too.
|
||||
// Adds potency*rate luminosity to products.
|
||||
// Adds 1 + potency*rate light range and potency*(rate + 0.01) light_power to products.
|
||||
name = "Bioluminescence"
|
||||
rate = 0.1
|
||||
rate = 0.03
|
||||
examine_line = "<span class='info'>It emits a soft glow.</span>"
|
||||
trait_id = "glow"
|
||||
var/glow_color = "#AAD84B"
|
||||
|
||||
/datum/plant_gene/trait/glow/proc/get_lum(obj/item/seeds/S)
|
||||
return round(S.potency*rate)
|
||||
/datum/plant_gene/trait/glow/proc/glow_range(obj/item/seeds/S)
|
||||
return 1.4 + S.potency*rate
|
||||
|
||||
/datum/plant_gene/trait/glow/proc/glow_power(obj/item/seeds/S)
|
||||
return max(S.potency*(rate + 0.01), 0.1)
|
||||
|
||||
/datum/plant_gene/trait/glow/on_new(obj/item/weapon/reagent_containers/food/snacks/grown/G, newloc)
|
||||
..()
|
||||
G.set_light(get_lum(G.seed))
|
||||
G.set_light(glow_range(G.seed), glow_power(G.seed), glow_color)
|
||||
|
||||
/datum/plant_gene/trait/glow/shadow
|
||||
//makes plant emit slightly purple shadows
|
||||
//adds -potency*(rate*0.05) light power to products
|
||||
name = "Shadow Emission"
|
||||
rate = 0.04
|
||||
|
||||
/datum/plant_gene/trait/glow/shadow/glow_power(obj/item/seeds/S)
|
||||
return -max(S.potency*(rate*0.05), 0.075)
|
||||
|
||||
/datum/plant_gene/trait/glow/red
|
||||
name = "Red Electrical Glow"
|
||||
glow_color = LIGHT_COLOR_RED
|
||||
|
||||
/datum/plant_gene/trait/glow/berry
|
||||
name = "Strong Bioluminescence"
|
||||
rate = 0.2
|
||||
|
||||
rate = 0.05
|
||||
glow_color = null
|
||||
|
||||
/datum/plant_gene/trait/teleport
|
||||
// Makes plant teleport people when squashed or slipped on.
|
||||
|
||||
@@ -112,6 +112,8 @@
|
||||
return
|
||||
if(panel_open)
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
if(inserted_id)
|
||||
inserted_id.forceMove(loc) //Prevents deconstructing the ORM from deleting whatever ID was inside it.
|
||||
empty_content()
|
||||
default_deconstruction_crowbar(W)
|
||||
if(ismultitool(W))
|
||||
@@ -304,6 +306,9 @@
|
||||
/obj/machinery/mineral/ore_redemption/power_change()
|
||||
..()
|
||||
update_icon()
|
||||
if(inserted_id && !powered())
|
||||
visible_message("<span class='notice'>The ID slot indicator light flickers on \the [src] as it spits out a card before powering down.</span>")
|
||||
inserted_id.forceMove(loc)
|
||||
|
||||
/obj/machinery/mineral/ore_redemption/update_icon()
|
||||
if(powered())
|
||||
@@ -387,6 +392,9 @@
|
||||
/obj/machinery/mineral/equipment_vendor/power_change()
|
||||
..()
|
||||
update_icon()
|
||||
if(inserted_id && !powered())
|
||||
visible_message("<span class='notice'>The ID slot indicator light flickers on \the [src] as it spits out a card before powering down.</span>")
|
||||
inserted_id.forceMove(loc)
|
||||
|
||||
/obj/machinery/mineral/equipment_vendor/update_icon()
|
||||
if(powered())
|
||||
@@ -456,6 +464,8 @@
|
||||
return
|
||||
if(panel_open)
|
||||
if(istype(I, /obj/item/weapon/crowbar))
|
||||
if(inserted_id)
|
||||
inserted_id.forceMove(loc) //Prevents deconstructing the ORM from deleting whatever ID was inside it.
|
||||
default_deconstruction_crowbar(I)
|
||||
return 1
|
||||
if(istype(I, /obj/item/weapon/mining_voucher))
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
UpdateAppearance()
|
||||
|
||||
/mob/living/carbon/human/OpenCraftingMenu()
|
||||
handcrafting.craft(src)
|
||||
handcrafting.ui_interact(src)
|
||||
|
||||
/mob/living/carbon/human/prepare_data_huds()
|
||||
//Update med hud images...
|
||||
|
||||
@@ -13,12 +13,11 @@
|
||||
universal_speak = 1 // Tell the humans spooky things about the afterlife
|
||||
speak_emote = list("mumbles", "moans", "whispers", "laments", "screeches")
|
||||
|
||||
allow_spin = 0 // No spinning. Spinning breaks our floating animation and broken floating animations make ghosts SUPER ANGRY.
|
||||
allow_spin = 0 // No spinning. Spinning breaks our floating animation.
|
||||
no_spin_thrown = 1
|
||||
|
||||
var/obj/item/possessed_item
|
||||
|
||||
|
||||
/mob/living/simple_animal/possessed_object/examine(mob/user)
|
||||
possessed_item.examine(user)
|
||||
if(health > (maxHealth / 30))
|
||||
@@ -47,15 +46,17 @@
|
||||
|
||||
|
||||
/mob/living/simple_animal/possessed_object/death(gibbed)
|
||||
var/mob/dead/observer/ghost = ghostize(1)
|
||||
..()
|
||||
|
||||
if(gibbed) // Leave no trace.
|
||||
var/mob/dead/observer/ghost = ghostize(1)
|
||||
ghost.timeofdeath = world.time
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
possessed_item.forceMove(loc) // Put the normal item back once the EVIL SPIRIT has been vanquished from it.
|
||||
if(possessed_item.loc == src)
|
||||
possessed_item.forceMove(loc) // Put the normal item back once the EVIL SPIRIT has been vanquished from it. If it's not already in place
|
||||
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -65,15 +66,23 @@
|
||||
if(!possessed_item) // If we're a donut and someone's eaten us, for instance.
|
||||
death(1)
|
||||
|
||||
if(possessed_item.loc != src)
|
||||
forceMove(possessed_item.loc)
|
||||
possessed_item.forceMove(src)
|
||||
if( possessed_item.loc != src )
|
||||
if ( isturf(possessed_item.loc) ) // If we've, say, placed the possessed item on the table move onto the table ourselves instead and put it back inside of us.
|
||||
forceMove(possessed_item.loc)
|
||||
possessed_item.forceMove(src)
|
||||
else // If we're inside a toolbox or something, we are inside the item rather than the item inside us. This is so people can see the item in the toolbox.
|
||||
forceMove( possessed_item )
|
||||
|
||||
if(l_hand) // Incase object interactions put things directly into our hands. (Like cameras, or gun magizines)
|
||||
drop_l_hand()
|
||||
if(r_hand)
|
||||
drop_r_hand()
|
||||
|
||||
/mob/living/simple_animal/possessed_object/Login()
|
||||
..()
|
||||
to_chat(src, "<span class='shadowling'><b>Your spirit has entered [src] and possessed it.</b><br>You are able to do most things a humanoid would be able to do with a [src] in their hands.<br>If you want to end your ghostly possession, use the '<b>ghost</b>' verb, it won't penalize your ability to respawn.</span>")
|
||||
|
||||
|
||||
/mob/living/simple_animal/possessed_object/New(var/atom/loc as obj)
|
||||
..()
|
||||
|
||||
@@ -89,23 +98,14 @@
|
||||
qdel(src)
|
||||
|
||||
possessed_item = loc
|
||||
forceMove(possessed_loc)
|
||||
forceMove( possessed_loc )
|
||||
possessed_item.forceMove(src) // We'll keep the actual item inside of us until we die.
|
||||
|
||||
zone_sel = new /obj/screen/zone_sel(src) // Create a new zone selection item so the human attacks have something to reference.
|
||||
zone_sel = new /obj/screen/zone_sel(src) // Create a new zone selection item so the human attacks have something to reference. Horrifying and ugly hack, do not look directly at this.
|
||||
|
||||
name = possessed_item.name // Take on all the attributes of the item we've possessed.
|
||||
real_name = name
|
||||
desc = possessed_item.desc
|
||||
icon = possessed_item.icon
|
||||
icon_living = possessed_item.icon_state
|
||||
icon_state = possessed_item.icon_state
|
||||
dir = possessed_item.dir
|
||||
color = possessed_item.color
|
||||
overlays = possessed_item.overlays
|
||||
set_opacity(possessed_item.opacity)
|
||||
update_icon(1)
|
||||
|
||||
visible_message("<span class='warning'>[src] rises into the air and begins to float!</span>") // Inform those around us that shit's gettin' spooky.
|
||||
visible_message("<span class='shadowling'>[src] rises into the air and begins to float!</span>") // Inform those around us that shit's gettin' spooky.
|
||||
animate_ghostly_presence(src, -1, 20, 1)
|
||||
|
||||
|
||||
@@ -138,17 +138,26 @@
|
||||
else
|
||||
..()
|
||||
|
||||
if(possessed_item.loc != src) // If we've, say, placed the possessed item on the table move onto the table ourselves instead and put it back inside of us.
|
||||
forceMove(possessed_item.loc)
|
||||
possessed_item.forceMove(src)
|
||||
if( possessed_item.loc != src )
|
||||
if ( isturf(possessed_item.loc) ) // If we've, say, placed the possessed item on the table move onto the table ourselves instead and put it back inside of us.
|
||||
forceMove(possessed_item.loc)
|
||||
possessed_item.forceMove(src)
|
||||
else // If we're inside a toolbox or something, we are inside the item rather than the item inside us. This is so people can see the item in the toolbox.
|
||||
forceMove( possessed_item )
|
||||
|
||||
name = possessed_item.name // Update our status
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_animal/possessed_object/proc/update_icon(update_pixel_xy = 0)
|
||||
name = possessed_item.name // Take on all the attributes of the item we've possessed.
|
||||
real_name = name
|
||||
desc = possessed_item.desc
|
||||
icon = possessed_item.icon
|
||||
icon_living = possessed_item.icon_state
|
||||
icon_state = possessed_item.icon_state
|
||||
dir = possessed_item.dir
|
||||
if(update_pixel_xy)
|
||||
pixel_x = possessed_item.pixel_x
|
||||
pixel_y = possessed_item.pixel_y
|
||||
color = possessed_item.color
|
||||
overlays = possessed_item.overlays
|
||||
opacity = possessed_item.opacity
|
||||
set_opacity(possessed_item.opacity)
|
||||
@@ -1151,13 +1151,13 @@
|
||||
///////////////////////////
|
||||
/datum/sprite_accessory/underwear
|
||||
icon = 'icons/mob/underwear.dmi'
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skeleton", "Drask")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Slime People", "Skeleton", "Drask")
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/underwear/nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skeleton", "Drask", "Vox")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Slime People", "Skeleton", "Drask", "Vox")
|
||||
|
||||
/datum/sprite_accessory/underwear/male
|
||||
gender = MALE
|
||||
@@ -1277,13 +1277,13 @@
|
||||
////////////////////////////
|
||||
/datum/sprite_accessory/undershirt
|
||||
icon = 'icons/mob/underwear.dmi'
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skeleton", "Drask")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Slime People", "Skeleton", "Drask")
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skeleton", "Drask", "Vox")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Slime People", "Skeleton", "Drask", "Vox")
|
||||
|
||||
//plain color shirts
|
||||
/datum/sprite_accessory/undershirt/shirt_white
|
||||
@@ -1513,13 +1513,13 @@
|
||||
///////////////////////
|
||||
/datum/sprite_accessory/socks
|
||||
icon = 'icons/mob/underwear.dmi'
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skeleton", "Drask")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Slime People", "Skeleton", "Drask")
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/socks/nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skeleton", "Drask", "Vox")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Slime People", "Skeleton", "Drask", "Vox")
|
||||
|
||||
/datum/sprite_accessory/socks/white_norm
|
||||
name = "Normal White"
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
/**
|
||||
* This state only checks if the user isn't incapacitated
|
||||
**/
|
||||
|
||||
/var/global/datum/topic_state/not_incapacitated_state/not_incapacitated_state = new()
|
||||
|
||||
/**
|
||||
* This state checks if the user isn't incapacitated and that their loc is a turf
|
||||
**/
|
||||
|
||||
/var/global/datum/topic_state/not_incapacitated_state/not_incapacitated_turf_state = new(no_turfs = TRUE)
|
||||
|
||||
/datum/topic_state/not_incapacitated_state
|
||||
var/turf_check = FALSE
|
||||
|
||||
/datum/topic_state/not_incapacitated_state/New(loc, no_turfs = FALSE)
|
||||
..()
|
||||
turf_check = no_turfs
|
||||
|
||||
/datum/topic_state/not_incapacitated_state/can_use_topic(src_object, mob/user)
|
||||
if(user.stat)
|
||||
return STATUS_CLOSE
|
||||
if(user.incapacitated() || user.lying || (turf_check && !isturf(user.loc)))
|
||||
return STATUS_DISABLED
|
||||
return STATUS_INTERACTIVE
|
||||
@@ -203,7 +203,7 @@
|
||||
|
||||
|
||||
/obj/item/weapon/paper/proc/parsepencode(var/t, var/obj/item/weapon/pen/P, mob/user as mob)
|
||||
t = pencode_to_html(t, usr, P, deffont, signfont, crayonfont)
|
||||
t = pencode_to_html(t, usr, P, TRUE, TRUE, deffont, signfont, crayonfont)
|
||||
|
||||
//Count the fields
|
||||
var/laststart = 1
|
||||
@@ -667,4 +667,4 @@
|
||||
H.reagents.add_reagent(contact_poison, contact_poison_volume)
|
||||
contact_poison = null
|
||||
add_logs(user, src, "picked up [src], the paper poisoned by [contact_poison_poisoner]")
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
var/on_gs = 0
|
||||
var/static_power_used = 0
|
||||
var/brightness_range = 8 // luminosity when on, also used in power calculation
|
||||
var/brightness_power = 3
|
||||
var/brightness_power = 1
|
||||
var/brightness_color = null
|
||||
var/status = LIGHT_OK // LIGHT_OK, _EMPTY, _BURNED or _BROKEN
|
||||
var/flickering = 0
|
||||
@@ -157,7 +157,6 @@
|
||||
base_state = "bulb"
|
||||
fitting = "bulb"
|
||||
brightness_range = 4
|
||||
brightness_power = 2
|
||||
brightness_color = "#a0a080"
|
||||
desc = "A small lighting fixture."
|
||||
light_type = /obj/item/weapon/light/bulb
|
||||
@@ -190,12 +189,10 @@
|
||||
switch(fitting)
|
||||
if("tube")
|
||||
brightness_range = 8
|
||||
brightness_power = 3
|
||||
if(prob(2))
|
||||
broken(1)
|
||||
if("bulb")
|
||||
brightness_range = 4
|
||||
brightness_power = 2
|
||||
brightness_color = "#a0a080"
|
||||
if(prob(5))
|
||||
broken(1)
|
||||
@@ -608,13 +605,12 @@
|
||||
item_state = "c_tube"
|
||||
materials = list(MAT_GLASS=100)
|
||||
brightness_range = 8
|
||||
brightness_power = 3
|
||||
|
||||
/obj/item/weapon/light/tube/large
|
||||
w_class = 2
|
||||
name = "large light tube"
|
||||
brightness_range = 15
|
||||
brightness_power = 4
|
||||
brightness_power = 2
|
||||
|
||||
/obj/item/weapon/light/bulb
|
||||
name = "light bulb"
|
||||
@@ -624,7 +620,6 @@
|
||||
item_state = "contvapour"
|
||||
materials = list(MAT_GLASS=100)
|
||||
brightness_range = 5
|
||||
brightness_power = 2
|
||||
brightness_color = "#a0a080"
|
||||
|
||||
/obj/item/weapon/light/throw_impact(atom/hit_atom)
|
||||
@@ -639,7 +634,6 @@
|
||||
item_state = "egg4"
|
||||
materials = list(MAT_GLASS=100)
|
||||
brightness_range = 5
|
||||
brightness_power = 2
|
||||
|
||||
// update the icon state and description of the light
|
||||
|
||||
|
||||
@@ -68,11 +68,8 @@
|
||||
if(stat & NOPOWER)
|
||||
icon_state = "[reference]w"
|
||||
return
|
||||
else if(use_power)
|
||||
if(assembled)
|
||||
icon_state = "[reference]p"
|
||||
else
|
||||
icon_state = "u[reference]p"
|
||||
else if(use_power && assembled)
|
||||
icon_state = "[reference]p"
|
||||
else
|
||||
switch(construction_state)
|
||||
if(0)
|
||||
|
||||
@@ -617,6 +617,9 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/strange_reagent/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(volume < 1)
|
||||
// gotta pay to play
|
||||
return ..()
|
||||
if(isanimal(M))
|
||||
if(method == TOUCH)
|
||||
var/mob/living/simple_animal/SM = M
|
||||
@@ -628,10 +631,11 @@
|
||||
if(iscarbon(M))
|
||||
if(method == INGEST)
|
||||
if(M.stat == DEAD)
|
||||
if(M.getBruteLoss()+M.getFireLoss() >= 150)
|
||||
if(M.getBruteLoss()+M.getFireLoss()+M.getCloneLoss() >= 150)
|
||||
M.visible_message("<span class='warning'>[M]'s body starts convulsing!</span>")
|
||||
M.gib()
|
||||
return
|
||||
M.adjustCloneLoss(50)
|
||||
var/mob/dead/observer/ghost = M.get_ghost()
|
||||
if(ghost)
|
||||
to_chat(ghost, "<span class='ghostalert'>You are attempting to be revived with Strange Reagent. Return to your body if you want to be revived!</span> (Verbs -> Ghost -> Re-enter corpse)")
|
||||
@@ -639,11 +643,26 @@
|
||||
ghost << sound('sound/effects/genetics.ogg')
|
||||
M.visible_message("<span class='notice'>[M] doesn't appear to respond, perhaps try again later?</span>")
|
||||
if(!M.suiciding && !ghost && !(NOCLONE in M.mutations))
|
||||
var/time_dead = world.time - M.timeofdeath
|
||||
M.visible_message("<span class='warning'>[M] seems to rise from the dead!</span>")
|
||||
M.setOxyLoss(0)
|
||||
M.adjustBruteLoss(rand(0,15))
|
||||
M.adjustToxLoss(rand(0,15))
|
||||
M.adjustFireLoss(rand(0,15))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/necrosis_prob = 40 * min((20 MINUTES), max((time_dead - (1 MINUTES)), 0)) / ((20 MINUTES) - (1 MINUTES))
|
||||
for(var/obj/item/organ/O in (H.organs | H.internal_organs))
|
||||
// Per non-vital body part:
|
||||
// 0% chance of necrosis within 1 minute of death
|
||||
// 40% chance of necrosis after 20 minutes of death
|
||||
if(!O.vital && prob(necrosis_prob))
|
||||
// side effects may include: Organ failure
|
||||
O.necrotize(FALSE)
|
||||
if(O.status & ORGAN_DEAD)
|
||||
O.germ_level = INFECTION_LEVEL_THREE
|
||||
H.update_body()
|
||||
|
||||
M.update_revive()
|
||||
M.stat = UNCONSCIOUS
|
||||
add_logs(M, M, "revived", object="strange reagent") //Yes, the logs say you revived yourself.
|
||||
@@ -1003,4 +1022,4 @@
|
||||
|
||||
/datum/reagent/medicine/earthsblood/overdose_process(mob/living/M)
|
||||
M.SetHallucinate(min(max(0, M.hallucination + 10), 50))
|
||||
M.adjustToxLoss(5 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(5 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
|
||||
@@ -256,9 +256,9 @@
|
||||
/obj/machinery/conveyor_switch/attack_hand(mob/user)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
|
||||
toggle(user)
|
||||
|
||||
|
||||
/obj/machinery/conveyor_switch/attack_ghost(mob/user)
|
||||
if(user.can_advanced_admin_interact())
|
||||
toggle(user)
|
||||
@@ -292,7 +292,7 @@
|
||||
S.position = position
|
||||
S.update()
|
||||
CHECK_TICK
|
||||
|
||||
|
||||
/obj/machinery/conveyor_switch/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/crowbar))
|
||||
var/obj/item/conveyor_switch_construct/C = new/obj/item/conveyor_switch_construct(src.loc)
|
||||
@@ -309,7 +309,12 @@
|
||||
/obj/machinery/conveyor_switch/multitool_topic(var/mob/user,var/list/href_list,var/obj/O)
|
||||
..()
|
||||
if("toggle_logic" in href_list)
|
||||
convdir = !convdir //reverses?
|
||||
if(convdir)
|
||||
convdir = 0
|
||||
else if(last_pos)
|
||||
convdir = last_pos
|
||||
else
|
||||
convdir = position
|
||||
|
||||
|
||||
/obj/machinery/conveyor_switch/multitool_menu(var/mob/user, var/obj/item/device/multitool/P)
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
req_tech = list("biotech" = 2, "materials" = 2, "magnets" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500)
|
||||
build_path = /obj/item/weapon/scalpel/laser1
|
||||
build_path = /obj/item/weapon/scalpel/laser/laser1
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/item/scalpel_laser2
|
||||
@@ -175,7 +175,7 @@
|
||||
req_tech = list("biotech" = 3, "materials" = 4, "magnets" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_SILVER = 1000)
|
||||
build_path = /obj/item/weapon/scalpel/laser2
|
||||
build_path = /obj/item/weapon/scalpel/laser/laser2
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/item/scalpel_laser3
|
||||
@@ -185,7 +185,7 @@
|
||||
req_tech = list("biotech" = 4, "materials" = 6, "magnets" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_SILVER = 1000, MAT_GOLD = 1000)
|
||||
build_path = /obj/item/weapon/scalpel/laser3
|
||||
build_path = /obj/item/weapon/scalpel/laser/laser3
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/item/scalpel_manager
|
||||
@@ -195,7 +195,7 @@
|
||||
req_tech = list("biotech" = 4, "materials" = 7, "magnets" = 5, "programming" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list (MAT_METAL = 2000, MAT_GLASS = 1500, MAT_SILVER = 1000, MAT_GOLD = 1000, MAT_DIAMOND = 1000)
|
||||
build_path = /obj/item/weapon/scalpel/manager
|
||||
build_path = /obj/item/weapon/scalpel/laser/manager
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/alienscalpel
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
materials = list(MAT_METAL = 700, MAT_GLASS = 50)
|
||||
construction_time=100
|
||||
build_path = /obj/item/weapon/stock_parts/cell
|
||||
category = list("Misc","Power")
|
||||
category = list("Misc","Power","Machinery","initial")
|
||||
|
||||
/datum/design/high_cell
|
||||
name = "High-Capacity Power Cell"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
|
||||
build_path = /obj/item/weapon/stock_parts/capacitor
|
||||
category = list("Stock Parts")
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 5
|
||||
|
||||
/datum/design/basic_sensor
|
||||
@@ -21,7 +21,7 @@
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 20)
|
||||
build_path = /obj/item/weapon/stock_parts/scanning_module
|
||||
category = list("Stock Parts")
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 5
|
||||
|
||||
/datum/design/micro_mani
|
||||
@@ -32,7 +32,7 @@
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 30)
|
||||
build_path = /obj/item/weapon/stock_parts/manipulator
|
||||
category = list("Stock Parts")
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 5
|
||||
|
||||
/datum/design/basic_micro_laser
|
||||
@@ -43,7 +43,7 @@
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 10, MAT_GLASS = 20)
|
||||
build_path = /obj/item/weapon/stock_parts/micro_laser
|
||||
category = list("Stock Parts")
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 5
|
||||
|
||||
/datum/design/basic_matter_bin
|
||||
@@ -54,7 +54,7 @@
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 80)
|
||||
build_path = /obj/item/weapon/stock_parts/matter_bin
|
||||
category = list("Stock Parts")
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 5
|
||||
|
||||
/datum/design/adv_capacitor
|
||||
|
||||
@@ -662,6 +662,13 @@
|
||||
investigate_log("[key_name(usr)] has sent the supply shuttle away. Remaining points: [shuttle_master.points]. Shuttle contents: [shuttle_master.sold_atoms]", "cargo")
|
||||
else if(!shuttle_master.supply.request(shuttle_master.getDock("supply_home")))
|
||||
post_signal("supply")
|
||||
if(LAZYLEN(shuttle_master.shoppinglist) && prob(10))
|
||||
var/datum/supply_order/O = new /datum/supply_order()
|
||||
O.ordernum = shuttle_master.ordernum
|
||||
O.object = shuttle_master.supply_packs[pick(shuttle_master.supply_packs)]
|
||||
O.orderedby = random_name(pick(MALE,FEMALE), species = "Human")
|
||||
shuttle_master.shoppinglist += O
|
||||
investigate_log("Random [O.object] crate added to supply shuttle")
|
||||
|
||||
else if(href_list["doorder"])
|
||||
if(world.time < reqtime)
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
/datum/surgery_step/open_encased/retract
|
||||
name = "retract bone"
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/manager = 120, \
|
||||
/obj/item/weapon/scalpel/laser/manager = 100, \
|
||||
/obj/item/weapon/retractor = 100, \
|
||||
/obj/item/weapon/crowbar = 75
|
||||
)
|
||||
@@ -121,7 +121,7 @@
|
||||
/datum/surgery_step/open_encased/close
|
||||
name = "unretract bone" //i suck at names okay? give me a new one
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/manager = 120, \
|
||||
/obj/item/weapon/scalpel/laser/manager = 100, \
|
||||
/obj/item/weapon/retractor = 100, \
|
||||
/obj/item/weapon/crowbar = 75
|
||||
)
|
||||
|
||||
@@ -28,10 +28,6 @@
|
||||
/datum/surgery_step/generic/cut_face
|
||||
name = "make incision"
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/laser3 = 115, \
|
||||
/obj/item/weapon/scalpel/laser2 = 110, \
|
||||
/obj/item/weapon/scalpel/laser1 = 105, \
|
||||
/obj/item/weapon/scalpel/manager = 120, \
|
||||
/obj/item/weapon/scalpel = 100, \
|
||||
/obj/item/weapon/kitchen/knife = 75, \
|
||||
/obj/item/weapon/shard = 50, \
|
||||
@@ -62,7 +58,7 @@
|
||||
/datum/surgery_step/face/mend_vocal
|
||||
name = "mend vocal cords"
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/manager = 120, \
|
||||
/obj/item/weapon/scalpel/laser/manager = 100, \
|
||||
/obj/item/weapon/hemostat = 100, \
|
||||
/obj/item/stack/cable_coil = 75, \
|
||||
/obj/item/device/assembly/mousetrap = 10 //I don't know. Don't ask me. But I'm leaving it because hilarity.
|
||||
@@ -89,7 +85,7 @@
|
||||
/datum/surgery_step/face/fix_face
|
||||
name = "reshape face"
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/manager = 120, \
|
||||
/obj/item/weapon/scalpel/laser/manager = 100, \
|
||||
/obj/item/weapon/retractor = 100, \
|
||||
/obj/item/weapon/crowbar = 55, \
|
||||
/obj/item/weapon/kitchen/utensil/fork = 75)
|
||||
@@ -116,9 +112,7 @@
|
||||
/datum/surgery_step/face/cauterize
|
||||
name = "close incision"
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/laser3 = 115, \
|
||||
/obj/item/weapon/scalpel/laser2 = 110, \
|
||||
/obj/item/weapon/scalpel/laser1 = 105, \
|
||||
/obj/item/weapon/scalpel/laser = 100, \
|
||||
/obj/item/weapon/cautery = 100, \
|
||||
/obj/item/clothing/mask/cigarette = 75, \
|
||||
/obj/item/weapon/lighter = 50, \
|
||||
|
||||
@@ -23,10 +23,6 @@
|
||||
name = "make incision"
|
||||
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/laser3 = 115, \
|
||||
/obj/item/weapon/scalpel/laser2 = 110, \
|
||||
/obj/item/weapon/scalpel/laser1 = 105, \
|
||||
/obj/item/weapon/scalpel/manager = 120, \
|
||||
/obj/item/weapon/scalpel = 100, \
|
||||
/obj/item/weapon/kitchen/knife = 75, \
|
||||
/obj/item/weapon/shard = 50, \
|
||||
@@ -65,10 +61,7 @@
|
||||
name = "clamp bleeders"
|
||||
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/laser3 = 115, \
|
||||
/obj/item/weapon/scalpel/laser2 = 110, \
|
||||
/obj/item/weapon/scalpel/laser1 = 105, \
|
||||
/obj/item/weapon/scalpel/manager = 120, \
|
||||
/obj/item/weapon/scalpel/laser = 100, \
|
||||
/obj/item/weapon/hemostat = 100, \
|
||||
/obj/item/stack/cable_coil = 75, \
|
||||
/obj/item/device/assembly/mousetrap = 20
|
||||
@@ -103,7 +96,7 @@
|
||||
name = "retract skin"
|
||||
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/manager = 120, \
|
||||
/obj/item/weapon/scalpel/laser/manager = 100, \
|
||||
/obj/item/weapon/retractor = 100, \
|
||||
/obj/item/weapon/crowbar = 75, \
|
||||
/obj/item/weapon/kitchen/utensil/fork = 50
|
||||
@@ -158,9 +151,7 @@
|
||||
name = "cauterize incision"
|
||||
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/laser3 = 115, \
|
||||
/obj/item/weapon/scalpel/laser2 = 110, \
|
||||
/obj/item/weapon/scalpel/laser1 = 105, \
|
||||
/obj/item/weapon/scalpel/laser = 100, \
|
||||
/obj/item/weapon/cautery = 100, \
|
||||
/obj/item/clothing/mask/cigarette = 75, \
|
||||
/obj/item/weapon/lighter = 50, \
|
||||
|
||||
@@ -97,10 +97,7 @@
|
||||
/datum/surgery_step/cavity/close_space
|
||||
name = "close cavity space"
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/laser3 = 115, \
|
||||
/obj/item/weapon/scalpel/laser2 = 110, \
|
||||
/obj/item/weapon/scalpel/laser1 = 105, \
|
||||
/obj/item/weapon/scalpel/manager = 120, \
|
||||
/obj/item/weapon/scalpel/laser = 100, \
|
||||
/obj/item/weapon/cautery = 100, \
|
||||
/obj/item/clothing/mask/cigarette = 75, \
|
||||
/obj/item/weapon/lighter = 50, \
|
||||
@@ -354,7 +351,7 @@
|
||||
name = "remove embedded objects"
|
||||
time = 32
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/manager = 120, \
|
||||
/obj/item/weapon/scalpel/laser/manager = 100, \
|
||||
/obj/item/weapon/hemostat = 100, \
|
||||
/obj/item/stack/cable_coil = 75, \
|
||||
/obj/item/device/assembly/mousetrap = 20
|
||||
|
||||
@@ -66,7 +66,7 @@ var/list/organ_cache = list()
|
||||
blood_DNA = list()
|
||||
blood_DNA[dna.unique_enzymes] = dna.b_type
|
||||
|
||||
/obj/item/organ/proc/die()
|
||||
/obj/item/organ/proc/necrotize(update_sprite=TRUE)
|
||||
if(status & ORGAN_ROBOT)
|
||||
return
|
||||
damage = max_damage
|
||||
@@ -105,10 +105,10 @@ var/list/organ_cache = list()
|
||||
if(germ_level >= INFECTION_LEVEL_TWO)
|
||||
germ_level += rand(2,6)
|
||||
if(germ_level >= INFECTION_LEVEL_THREE)
|
||||
die()
|
||||
necrotize()
|
||||
|
||||
if(damage >= max_damage)
|
||||
die()
|
||||
necrotize()
|
||||
|
||||
else if(owner.bodytemperature >= 170) //cryo stops germs from moving and doing their bad stuffs
|
||||
//** Handle antibiotics and curing infections
|
||||
@@ -117,7 +117,7 @@ var/list/organ_cache = list()
|
||||
|
||||
//check if we've hit max_damage
|
||||
if(damage >= max_damage)
|
||||
die()
|
||||
necrotize()
|
||||
|
||||
/obj/item/organ/proc/is_preserved()
|
||||
if(istype(loc,/obj/item/device/mmi))
|
||||
|
||||
@@ -68,6 +68,19 @@
|
||||
var/can_stand
|
||||
var/wound_cleanup_timer
|
||||
|
||||
/obj/item/organ/external/necrotize(update_sprite=TRUE)
|
||||
if(status & (ORGAN_ROBOT|ORGAN_DEAD))
|
||||
return
|
||||
to_chat(owner, "<span class='notice'>You can't feel your [name] anymore...</span>")
|
||||
status |= ORGAN_DEAD
|
||||
if(dead_icon)
|
||||
icon_state = dead_icon
|
||||
if(owner)
|
||||
owner.update_body(update_sprite)
|
||||
owner.bad_external_organs |= src
|
||||
if(vital)
|
||||
owner.death()
|
||||
|
||||
/obj/item/organ/external/Destroy()
|
||||
if(parent && parent.children)
|
||||
parent.children -= src
|
||||
@@ -541,10 +554,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
parent.germ_level++
|
||||
|
||||
if(germ_level >= INFECTION_LEVEL_THREE && antibiotics < 30) //overdosing is necessary to stop severe infections
|
||||
if(!(status & ORGAN_DEAD))
|
||||
status |= ORGAN_DEAD
|
||||
to_chat(owner, "<span class='notice'>You can't feel your [name] anymore...</span>")
|
||||
owner.update_body(1)
|
||||
necrotize()
|
||||
|
||||
germ_level++
|
||||
owner.adjustToxLoss(1)
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
var/implements_extract = list(/obj/item/weapon/hemostat = 100, /obj/item/weapon/kitchen/utensil/fork = 55)
|
||||
var/implements_mend = list(/obj/item/stack/medical/bruise_pack = 20,/obj/item/stack/medical/bruise_pack/advanced = 100,/obj/item/stack/nanopaste = 100)
|
||||
//Finish is just so you can close up after you do other things.
|
||||
var/implements_finsh = list(/obj/item/weapon/scalpel/manager = 120,/obj/item/weapon/retractor = 100 ,/obj/item/weapon/crowbar = 75)
|
||||
var/implements_finsh = list(/obj/item/weapon/scalpel/laser/manager = 100,/obj/item/weapon/retractor = 100 ,/obj/item/weapon/crowbar = 75)
|
||||
var/current_type
|
||||
var/obj/item/organ/internal/I = null
|
||||
var/obj/item/organ/external/affected = null
|
||||
@@ -368,10 +368,6 @@
|
||||
/datum/surgery_step/cut_carapace
|
||||
name = "cut carapace"
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/laser3 = 115, \
|
||||
/obj/item/weapon/scalpel/laser2 = 110, \
|
||||
/obj/item/weapon/scalpel/laser1 = 105, \
|
||||
/obj/item/weapon/scalpel/manager = 120, \
|
||||
/obj/item/weapon/scalpel = 100, \
|
||||
/obj/item/weapon/kitchen/knife = 75, \
|
||||
/obj/item/weapon/shard = 50, \
|
||||
@@ -406,7 +402,7 @@
|
||||
name = "retract carapace"
|
||||
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/scalpel/manager = 120, \
|
||||
/obj/item/weapon/scalpel/laser/manager = 100, \
|
||||
/obj/item/weapon/retractor = 100, \
|
||||
/obj/item/weapon/crowbar = 75, \
|
||||
/obj/item/weapon/kitchen/utensil/fork = 50
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
desc = "Cut, cut, and once more cut."
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
icon_state = "scalpel"
|
||||
item_state = "scalpel"
|
||||
flags = CONDUCT
|
||||
force = 10.0
|
||||
sharp = 1
|
||||
@@ -82,40 +83,35 @@
|
||||
/*
|
||||
* Researchable Scalpels
|
||||
*/
|
||||
/obj/item/weapon/scalpel/laser1 //lasers also count as catuarys
|
||||
/obj/item/weapon/scalpel/laser //parent type
|
||||
name = "laser scalpel"
|
||||
desc = "A scalpel augmented with a directed laser."
|
||||
icon_state = "scalpel_laser1_on"
|
||||
damtype = "fire"
|
||||
hitsound = 'sound/weapons/sear.ogg'
|
||||
|
||||
/obj/item/weapon/scalpel/laser/laser1 //lasers also count as catuarys
|
||||
name = "laser scalpel"
|
||||
desc = "A scalpel augmented with a directed laser. This one looks basic and could be improved."
|
||||
icon_state = "scalpel_laser1_on"
|
||||
item_state = "scalpel"
|
||||
damtype = "fire"
|
||||
hitsound = 'sound/weapons/sear.ogg'
|
||||
toolspeed = 0.8
|
||||
|
||||
/obj/item/weapon/scalpel/laser2
|
||||
/obj/item/weapon/scalpel/laser/laser2
|
||||
name = "laser scalpel"
|
||||
desc = "A scalpel augmented with a directed laser. This one looks somewhat advanced."
|
||||
icon_state = "scalpel_laser2_on"
|
||||
item_state = "scalpel"
|
||||
damtype = "fire"
|
||||
hitsound = 'sound/weapons/sear.ogg'
|
||||
toolspeed = 0.6
|
||||
|
||||
/obj/item/weapon/scalpel/laser3
|
||||
/obj/item/weapon/scalpel/laser/laser3
|
||||
name = "laser scalpel"
|
||||
desc = "A scalpel augmented with a directed laser. This one looks to be the pinnacle of precision energy cutlery!"
|
||||
icon_state = "scalpel_laser3_on"
|
||||
item_state = "scalpel"
|
||||
damtype = "fire"
|
||||
hitsound = 'sound/weapons/sear.ogg'
|
||||
toolspeed = 0.4
|
||||
|
||||
/obj/item/weapon/scalpel/manager //super tool! Retractor/hemostat
|
||||
/obj/item/weapon/scalpel/laser/manager //super tool! Retractor/hemostat
|
||||
name = "incision management system"
|
||||
desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps."
|
||||
icon_state = "scalpel_manager_on"
|
||||
item_state = "scalpel"
|
||||
damtype = "fire"
|
||||
hitsound = 'sound/weapons/sear.ogg'
|
||||
toolspeed = 0.2
|
||||
|
||||
/obj/item/weapon/circular_saw
|
||||
|
||||
@@ -242,20 +242,20 @@ em {font-style: normal; font-weight: bold;}
|
||||
.yell { font-weight: bold;}
|
||||
.siliconsay {font-family: 'Courier New', Courier, monospace;}
|
||||
.deadsay {color: #5c00e6;}
|
||||
.radio {color: #008000;}
|
||||
.radio {color: #408010;}
|
||||
.deptradio {color: #993399;}
|
||||
.comradio {color: #193A7A;}
|
||||
.syndradio {color: #6d3f40;}
|
||||
.comradio {color: #204090;}
|
||||
.syndradio {color: #6D3F40;}
|
||||
.dsquadradio {color: #686868;}
|
||||
.resteamradio {color: #18BC46;}
|
||||
.airadio {color: #FF00FF;}
|
||||
.centradio {color: #5C5C8A;}
|
||||
.centradio {color: #5C5C7C;}
|
||||
.secradio {color: #A30000;}
|
||||
.engradio {color: #A66300;}
|
||||
.medradio {color: #008160;}
|
||||
.medradio {color: #009190;}
|
||||
.sciradio {color: #993399;}
|
||||
.supradio {color: #5F4519;}
|
||||
.srvradio {color: #6eaa2c;}
|
||||
.supradio {color: #7F6539;}
|
||||
.srvradio {color: #80A000;}
|
||||
.admin_channel {color: #9A04D1; font-weight: bold;}
|
||||
.mentor_channel {color: #775BFF; font-weight: bold;}
|
||||
.mentor_channel_admin {color: #A35CFF; font-weight: bold;}
|
||||
|
||||
@@ -55,6 +55,142 @@
|
||||
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">25 March 2017</h2>
|
||||
<h3 class="author">Crazylemon64 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">All pens are now certified crayon-wax free!</li>
|
||||
</ul>
|
||||
<h3 class="author">Kyep updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Pipes in the Wizard Academy have been banished back under the carpet, where they belong.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">24 March 2017</h2>
|
||||
<h3 class="author">KasparoVy updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Red wire-cutters and red crowbars now appear correctly in-hands again. imgadd: The medical wrench and all the brass tools (screwdriver, crowbar, wrench, wire-cutters, welder) now have in-hand sprites of their own.</li>
|
||||
<li class="tweak">Adds TG's inhand icons for screwdrivers, crowbars, wrenches, wire-cutters and welders.</li>
|
||||
<li class="bugfix">Slime People can wear underwear, undershirts and socks.</li>
|
||||
</ul>
|
||||
<h3 class="author">uraniummeltdown updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">IV Drips are no longer dense objects, you can walk over them.</li>
|
||||
<li class="rscadd">You can change gold and silver tiles into fancy versions by using them in hand.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">23 March 2017</h2>
|
||||
<h3 class="author">FalseIncarnate updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Fish breeding has been tweaked to support fish refusing to cross-breed and improved egg chances with same-species parents.</li>
|
||||
</ul>
|
||||
<h3 class="author">Fox McCloud updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Floors are now fully properly cleaned with mops and soap</li>
|
||||
<li class="rscadd">Adds in emergency welding tool, fork, trays, drinking glasses, shot glasses, shakers, butcher cleavers, and riot darts to the autolathe</li>
|
||||
<li class="rscadd">Adds all basic stock parts to the autolathe</li>
|
||||
<li class="tweak">re-arranges the autolathe menu to be more logical</li>
|
||||
<li class="tweak">light bulbs no longer require metal to produce</li>
|
||||
<li class="tweak">Incision management system can now cauterize</li>
|
||||
</ul>
|
||||
<h3 class="author">KasparoVy updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Unathi Security, Medical, Engineering and Syndicate side-facing hardsuit sprites have undergone weight reduction.</li>
|
||||
</ul>
|
||||
<h3 class="author">Kyep updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Chaplain's armor is no longer riot-grade. In addition, their nullrods do less damage.</li>
|
||||
</ul>
|
||||
<h3 class="author">MarsM0nd updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Conveyor switches can now set to left-only direction toggling.</li>
|
||||
</ul>
|
||||
<h3 class="author">Norgad updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Maintenance areas near arrivals, science, and the bar have been revamped.</li>
|
||||
</ul>
|
||||
<h3 class="author">uraniummeltdown updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Station lighting has less lighting power, this is not noticeable apart from maint and 1 bulb rooms being a bit darker.</li>
|
||||
<li class="tweak">Tweaked the potency scaling for glowshroom/glowberry light; high-potency plants no longer light up a huge area, but are slightly brighter.</li>
|
||||
<li class="rscadd">Added Shadowshrooms as a glowshroom mutation. They do exactly what you'd expect.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">22 March 2017</h2>
|
||||
<h3 class="author">Crazylemon64 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Rod form is now at half speed, and has a warning sound.</li>
|
||||
</ul>
|
||||
<h3 class="author">FlattestGuitar updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">When a person's limb is dying, it will no longer notify the whole server of the ordeal</li>
|
||||
<li class="bugfix">Welding tools no longer tell you about their span classes</li>
|
||||
</ul>
|
||||
<h3 class="author">KasparoVy updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Deconstructing beds now yields the same amount of metal as was used to make the bed.</li>
|
||||
<li class="bugfix">The PA console will no longer appear as though it is fully constructed at the start of the round.</li>
|
||||
<li class="bugfix">Ore Redemption Machines no longer eat IDs when deconstructed.</li>
|
||||
<li class="tweak">Ore Redemption Machines and Mining Equipment Vendors now spit out whatever IDs were in them when they lose power.</li>
|
||||
</ul>
|
||||
<h3 class="author">Krausus updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Personal crafting is now usable again for those with an Internet Explorer version below 11.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">21 March 2017</h2>
|
||||
<h3 class="author">Crazylemon64 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="experiment">Strange reagent now has a volume floor requirement to activate, induces clone damage, and may cause further trouble...</li>
|
||||
</ul>
|
||||
<h3 class="author">KasparoVy updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">No-one escapes nuclear hellfire.</li>
|
||||
<li class="rscadd">Secure fridges/freezers are now lead-lined and have thus become nuke resistant.</li>
|
||||
</ul>
|
||||
<h3 class="author">uraniummeltdown updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Baseball bats added to the game, are craftable from 5 wood planks.</li>
|
||||
<li class="rscadd">Baseball burgers can be made with a baseball bat and a bun, either microwaved or table-crafted.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">20 March 2017</h2>
|
||||
<h3 class="author">Jovaniph updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Tajaran EVA Suit Sprites</li>
|
||||
</ul>
|
||||
<h3 class="author">KasparoVy updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Gloves can be snipped again.</li>
|
||||
</ul>
|
||||
<h3 class="author">Purpose2 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Fixes assorted wording / capitalisation / grammatical problems.</li>
|
||||
<li class="bugfix">Fixes the exploit to produce infinite cable coil from airlocks.</li>
|
||||
</ul>
|
||||
<h3 class="author">Tayyyyyyy updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Added GPS devices to pod pilot and mechanic's offices</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">19 March 2017</h2>
|
||||
<h3 class="author">Jovaniph updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Voxes can now wear soft caps.</li>
|
||||
</ul>
|
||||
<h3 class="author">Krausus updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Pest spray bottles are no longer invisible.</li>
|
||||
</ul>
|
||||
<h3 class="author">Kyep updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Wood doors in wild west map no longer constantly open/close</li>
|
||||
</ul>
|
||||
<h3 class="author">uraniummeltdown updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Shipping errors can sometimes cause the supply shuttle to receive an extra crate when ordering supplies.</li>
|
||||
<li class="rscadd">Added dog beds! Can be made with 10 wood planks and deconstructed with a wrench. Ian's Bed added to Cyberiad and Metastation.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">18 March 2017</h2>
|
||||
<h3 class="author">Fox McCloud updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
|
||||
@@ -4168,3 +4168,101 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
- rscadd: Shades now have directional sprites.
|
||||
- rscadd: Attacking with glass shards now hurts your hand if not wearing gloves.
|
||||
Does not affect robotic hands though.
|
||||
2017-03-19:
|
||||
Jovaniph:
|
||||
- tweak: Voxes can now wear soft caps.
|
||||
Krausus:
|
||||
- bugfix: Pest spray bottles are no longer invisible.
|
||||
Kyep:
|
||||
- bugfix: Wood doors in wild west map no longer constantly open/close
|
||||
uraniummeltdown:
|
||||
- rscadd: Shipping errors can sometimes cause the supply shuttle to receive an extra
|
||||
crate when ordering supplies.
|
||||
- rscadd: Added dog beds! Can be made with 10 wood planks and deconstructed with
|
||||
a wrench. Ian's Bed added to Cyberiad and Metastation.
|
||||
2017-03-20:
|
||||
Jovaniph:
|
||||
- rscadd: Tajaran EVA Suit Sprites
|
||||
KasparoVy:
|
||||
- bugfix: Gloves can be snipped again.
|
||||
Purpose2:
|
||||
- bugfix: Fixes assorted wording / capitalisation / grammatical problems.
|
||||
- bugfix: Fixes the exploit to produce infinite cable coil from airlocks.
|
||||
Tayyyyyyy:
|
||||
- rscadd: Added GPS devices to pod pilot and mechanic's offices
|
||||
2017-03-21:
|
||||
Crazylemon64:
|
||||
- experiment: Strange reagent now has a volume floor requirement to activate, induces
|
||||
clone damage, and may cause further trouble...
|
||||
KasparoVy:
|
||||
- tweak: No-one escapes nuclear hellfire.
|
||||
- rscadd: Secure fridges/freezers are now lead-lined and have thus become nuke resistant.
|
||||
uraniummeltdown:
|
||||
- rscadd: Baseball bats added to the game, are craftable from 5 wood planks.
|
||||
- rscadd: Baseball burgers can be made with a baseball bat and a bun, either microwaved
|
||||
or table-crafted.
|
||||
2017-03-22:
|
||||
Crazylemon64:
|
||||
- tweak: Rod form is now at half speed, and has a warning sound.
|
||||
FlattestGuitar:
|
||||
- bugfix: When a person's limb is dying, it will no longer notify the whole server
|
||||
of the ordeal
|
||||
- bugfix: Welding tools no longer tell you about their span classes
|
||||
KasparoVy:
|
||||
- bugfix: Deconstructing beds now yields the same amount of metal as was used to
|
||||
make the bed.
|
||||
- bugfix: The PA console will no longer appear as though it is fully constructed
|
||||
at the start of the round.
|
||||
- bugfix: Ore Redemption Machines no longer eat IDs when deconstructed.
|
||||
- tweak: Ore Redemption Machines and Mining Equipment Vendors now spit out whatever
|
||||
IDs were in them when they lose power.
|
||||
Krausus:
|
||||
- bugfix: Personal crafting is now usable again for those with an Internet Explorer
|
||||
version below 11.
|
||||
2017-03-23:
|
||||
FalseIncarnate:
|
||||
- tweak: Fish breeding has been tweaked to support fish refusing to cross-breed
|
||||
and improved egg chances with same-species parents.
|
||||
Fox McCloud:
|
||||
- bugfix: Floors are now fully properly cleaned with mops and soap
|
||||
- rscadd: Adds in emergency welding tool, fork, trays, drinking glasses, shot glasses,
|
||||
shakers, butcher cleavers, and riot darts to the autolathe
|
||||
- rscadd: Adds all basic stock parts to the autolathe
|
||||
- tweak: re-arranges the autolathe menu to be more logical
|
||||
- tweak: light bulbs no longer require metal to produce
|
||||
- tweak: Incision management system can now cauterize
|
||||
KasparoVy:
|
||||
- tweak: Unathi Security, Medical, Engineering and Syndicate side-facing hardsuit
|
||||
sprites have undergone weight reduction.
|
||||
Kyep:
|
||||
- tweak: Chaplain's armor is no longer riot-grade. In addition, their nullrods do
|
||||
less damage.
|
||||
MarsM0nd:
|
||||
- bugfix: Conveyor switches can now set to left-only direction toggling.
|
||||
Norgad:
|
||||
- tweak: Maintenance areas near arrivals, science, and the bar have been revamped.
|
||||
uraniummeltdown:
|
||||
- tweak: Station lighting has less lighting power, this is not noticeable apart
|
||||
from maint and 1 bulb rooms being a bit darker.
|
||||
- tweak: Tweaked the potency scaling for glowshroom/glowberry light; high-potency
|
||||
plants no longer light up a huge area, but are slightly brighter.
|
||||
- rscadd: Added Shadowshrooms as a glowshroom mutation. They do exactly what you'd
|
||||
expect.
|
||||
2017-03-24:
|
||||
KasparoVy:
|
||||
- bugfix: 'Red wire-cutters and red crowbars now appear correctly in-hands again.
|
||||
imgadd: The medical wrench and all the brass tools (screwdriver, crowbar, wrench,
|
||||
wire-cutters, welder) now have in-hand sprites of their own.'
|
||||
- tweak: Adds TG's inhand icons for screwdrivers, crowbars, wrenches, wire-cutters
|
||||
and welders.
|
||||
- bugfix: Slime People can wear underwear, undershirts and socks.
|
||||
uraniummeltdown:
|
||||
- tweak: IV Drips are no longer dense objects, you can walk over them.
|
||||
- rscadd: You can change gold and silver tiles into fancy versions by using them
|
||||
in hand.
|
||||
2017-03-25:
|
||||
Crazylemon64:
|
||||
- bugfix: All pens are now certified crayon-wax free!
|
||||
Kyep:
|
||||
- bugfix: Pipes in the Wizard Academy have been banished back under the carpet,
|
||||
where they belong.
|
||||
|
||||
|
Before Width: | Height: | Size: 214 KiB After Width: | Height: | Size: 223 KiB |
|
Before Width: | Height: | Size: 184 KiB After Width: | Height: | Size: 184 KiB |
|
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 407 KiB After Width: | Height: | Size: 410 KiB |
@@ -0,0 +1,29 @@
|
||||
div.display {
|
||||
padding: 4px;
|
||||
margin: 6px 0;
|
||||
|
||||
background-color: rgba(0, 0, 0, 0.33);
|
||||
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
div.display header {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 98.5%;
|
||||
padding: 0 4px;
|
||||
margin-bottom: 6px;
|
||||
color: #FFFFFF;
|
||||
border-bottom: 2px solid #40628a;
|
||||
}
|
||||
|
||||
div.display header .buttonRight {
|
||||
position: absolute;
|
||||
bottom: 6px;
|
||||
right: 4px;
|
||||
}
|
||||
|
||||
div.display article {
|
||||
display: table;
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
*[data-tooltip] {
|
||||
position: relative;
|
||||
|
||||
&::after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
z-index: 2;
|
||||
width: 250px;
|
||||
padding: 10px;
|
||||
transform: translateX(-50%);
|
||||
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
|
||||
white-space: normal;
|
||||
text-align: left;
|
||||
content: attr(data-tooltip);
|
||||
|
||||
transition: all .5s;
|
||||
border: 1px solid #999999;
|
||||
background-color: #363636;
|
||||
}
|
||||
|
||||
&:hover::after {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
&.tooltipTop::after {
|
||||
bottom: 100%;
|
||||
left: 50%;
|
||||
transform: translateX(-50%) translateY(8px);
|
||||
}
|
||||
&.tooltipTop:hover::after {
|
||||
transform: translateX(-50%) translateY(-8px);
|
||||
}
|
||||
|
||||
&.tooltipBottom::after {
|
||||
top: 100%;
|
||||
left: 50%;
|
||||
transform: translateX(-50%) translateY(-8px);
|
||||
}
|
||||
&.tooltipBottom:hover::after {
|
||||
transform: translateX(-50%) translateY(8px);
|
||||
}
|
||||
|
||||
&.tooltipLeft::after {
|
||||
top: 50%;
|
||||
right: 100%;
|
||||
transform: translateX(8px) translateY(-50%);
|
||||
}
|
||||
&.tooltipLeft:hover::after {
|
||||
transform: translateX(-8px) translateY(-50%);
|
||||
}
|
||||
|
||||
&.tooltipRight::after {
|
||||
top: 50%;
|
||||
left: 100%;
|
||||
transform: translateX(-8px) translateY(-50%);
|
||||
}
|
||||
&.tooltipRight:hover::after {
|
||||
transform: translateX(8px) translateY(-50%);
|
||||
}
|
||||
}
|
||||
@@ -4,11 +4,13 @@
|
||||
@import "_link";
|
||||
@import "_color";
|
||||
@import "_config";
|
||||
@import "_display";
|
||||
@import "_formatting";
|
||||
@import "_icon";
|
||||
@import "_lists";
|
||||
@import "_misc";
|
||||
@import "_native";
|
||||
@import "_tooltip";
|
||||
|
||||
|
||||
body {
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
<script>
|
||||
{{var tooltiptext = function(req_text, catalyst_text, tool_text) { var text = ""; if(req_text){text += "REQUIREMENTS: " + req_text + " ";} if(catalyst_text){text += "CATALYSTS: " + catalyst_text + " ";} if(tool_text){text += "TOOLS: " + tool_text;}return text;};}}
|
||||
</script>
|
||||
|
||||
|
||||
<div class='display'>
|
||||
<header><h3>{{:data.category}}</h3></header>
|
||||
<article>
|
||||
<div class='item'>
|
||||
{{:helper.link(data.prev_cat, 'arrow-left', {'backwardCat': 1})}}
|
||||
{{:helper.link(data.next_cat, 'arrow-right', {'forwardCat': 1})}}
|
||||
{{if data.display_craftable_only}}
|
||||
{{:helper.link('Showing Craftable Recipes', 'lock', {'toggle_recipes': 1})}}
|
||||
{{else}}
|
||||
{{:helper.link('Showing All Recipes', 'unlock', {'toggle_recipes': 1})}}
|
||||
{{/if}}
|
||||
{{:helper.link('Compact', data.display_compact ? 'check-square-o' : 'square-o', {'toggle_compact': 1})}}
|
||||
</div>
|
||||
{{if data.display_compact}}
|
||||
<div class='display'>
|
||||
<article>
|
||||
<table style='width: 50%;'>
|
||||
{{for data.can_craft}}
|
||||
<tr>
|
||||
<td><div class='itemLabelWidest'>{{:value.name}}:</div></td>
|
||||
<td><div class='floatLeft tooltipRight' data-tooltip='{{:tooltiptext(value.req_text, value.catalyst_text, value.tool_text)}}'>
|
||||
{{:helper.link('Craft', 'gears', {'make': value.ref})}}
|
||||
</div></td>
|
||||
</tr>
|
||||
{{/for}}
|
||||
{{if !data.display_craftable_only}}
|
||||
{{for data.cant_craft}}
|
||||
<tr>
|
||||
<td><div class='itemLabelWidest'>{{:value.name}}:</div></td>
|
||||
<td><div class='floatLeft tooltipRight' data-tooltip='{{:tooltiptext(value.req_text, value.catalyst_text, value.tool_text)}}'>
|
||||
{{:helper.link('Craft', 'gears', {'make': value.ref}, 'disabled')}}
|
||||
</div></td>
|
||||
</tr>
|
||||
{{/for}}
|
||||
{{/if}}
|
||||
</table>
|
||||
</article>
|
||||
</div>
|
||||
{{else}}
|
||||
{{for data.can_craft}}
|
||||
<div class='display'>
|
||||
<header><h3>{{:value.name}}</h3></header>
|
||||
<article>
|
||||
{{if value.req_text}}
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>Requirements:</div>
|
||||
<div class='itemContent'>{{:value.req_text}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if value.catalyst_text}}
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>Catalysts:</div>
|
||||
<div class='itemContent'>{{:value.catalyst_text}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if value.tool_text}}
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>Tools:</div>
|
||||
<div class='itemContent'>{{:value.tool_text}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class='item'>
|
||||
{{:helper.link('Craft', 'gears', {'make': value.ref})}}
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
{{/for}}
|
||||
{{if !data.display_craftable_only}}
|
||||
{{for data.cant_craft}}
|
||||
<div class="display">
|
||||
<header><h3>{{:value.name}}</h3></header>
|
||||
<article>
|
||||
{{if value.req_text}}
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>Requirements:</div>
|
||||
<div class='itemContent'>{{:value.req_text}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if value.catalyst_text}}
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>Catalysts:</div>
|
||||
<div class='itemContent'>{{:value.catalyst_text}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if value.tool_text}}
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>Tools:</div>
|
||||
<div class='itemContent'>{{:value.tool_text}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</article>
|
||||
</div>
|
||||
{{/for}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</article>
|
||||
</div>
|
||||
|
||||
{{if data.busy}}
|
||||
<div class="mask">
|
||||
<div class="maskContent">
|
||||
<h1>Crafting...</h1>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -4,18 +4,18 @@ Used In File(s): /code/game/objects/item/devices/radio/radio.dm
|
||||
-->
|
||||
<head>
|
||||
<style type="text/css">
|
||||
.radio {color: #008000;}
|
||||
.radio {color: #408010;}
|
||||
.deptradio {color: #993399;}
|
||||
.comradio {color: #395A9A;}
|
||||
.comradio {color: #204090;}
|
||||
.syndradio {color: #6D3F40;}
|
||||
.centradio {color: #5C5C8A;}
|
||||
.centradio {color: #5C5C7C;}
|
||||
.airadio {color: #FF00FF;}
|
||||
.secradio {color: #A30000;}
|
||||
.engradio {color: #A66300;}
|
||||
.medradio {color: #008160;}
|
||||
.medradio {color: #009190;}
|
||||
.sciradio {color: #993399;}
|
||||
.supradio {color: #7F6539;}
|
||||
.srvradio {color: #6eaa2c;}
|
||||
.srvradio {color: #80A000;}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
|
||||