diff --git a/.travis.yml b/.travis.yml index 3e216a31697..aab4a773787 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,7 @@ env: - BYOND_MINOR="1289" matrix: - DM_MAPFILE="cyberiad" + - DM_MAPFILE="metastation" before_install: - sudo apt-get update -qq diff --git a/SQL/paradise_schema.sql b/SQL/paradise_schema.sql index c6045cd835e..22369d5470d 100644 --- a/SQL/paradise_schema.sql +++ b/SQL/paradise_schema.sql @@ -78,6 +78,7 @@ CREATE TABLE `characters` ( `rlimb_data` mediumtext NOT NULL, `nanotrasen_relation` varchar(45) NOT NULL, `speciesprefs` int(1) NOT NULL, + `socks` mediumtext NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=18747 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index f7d9f5adcf7..7cd48dce8c6 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -66,7 +66,7 @@ "abn" = (/obj/structure/table,/obj/item/weapon/folder,/obj/item/weapon/paper/hydroponics,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "abo" = (/obj/structure/table,/obj/machinery/librarypubliccomp,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "abp" = (/obj/machinery/computer/arcade,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"abq" = (/obj/machinery/camera{c_tag = "Prison Chamber"; network = list("SS13","Prison")},/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/simulated/floor,/area/security/prison) +"abq" = (/obj/machinery/camera{c_tag = "Prison Chamber"; network = list("SS13","Prison")},/obj/item/device/radio/intercom/locked/prison{dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor,/area/security/prison) "abr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "abs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "abt" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/security/prison) @@ -174,7 +174,7 @@ "adr" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/escape_pod3/station) "ads" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape_pod3/station) "adt" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/escape_pod3/station) -"adu" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 0},/obj/structure/table,/obj/item/device/radio/electropack,/obj/item/device/assembly/signaler{pixel_x = -3; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{dir = 2; icon_state = "darkred"; tag = "icon-darkblue"; temperature = 273.15},/area/prison/solitary{name = "Prisoner Education Chamber"}) +"adu" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 0},/obj/structure/table,/obj/item/device/radio/electropack,/obj/item/device/assembly/signaler{pixel_x = -3; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{dir = 2; icon_state = "darkred"; tag = "icon-darkblue"; temperature = 273.15},/area/prison/solitary{name = "Prisoner Education Chamber"}) "adv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{dir = 2; icon_state = "darkred"; tag = "icon-darkblue"; temperature = 273.15},/area/prison/solitary{name = "Prisoner Education Chamber"}) "adw" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "darkred"; tag = "icon-darkblue"; temperature = 273.15},/area/prison/solitary{name = "Prisoner Education Chamber"}) "adx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor{dir = 2; icon_state = "darkred"; tag = "icon-darkblue"; temperature = 273.15},/area/prison/solitary{name = "Prisoner Education Chamber"}) @@ -274,7 +274,7 @@ "afn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "afo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "afp" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/secure/safe{name = "armory safe B"; pixel_x = 6; pixel_y = 28},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) -"afq" = (/obj/structure/closet/secure_closet/hos,/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29; pixel_y = 23},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) +"afq" = (/obj/structure/closet/secure_closet/hos,/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29; pixel_y = 23},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "afr" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "afs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aft" = (/obj/structure/stool/bed/chair/comfy/black,/turf/simulated/floor{icon_state = "dark"},/area/security/hos) @@ -306,7 +306,7 @@ "afT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "afU" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "afV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) -"afW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) +"afW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "afX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "afY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) "afZ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/prison) @@ -321,7 +321,7 @@ "agi" = (/obj/machinery/syndicatebomb/training,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "agj" = (/obj/structure/rack,/obj/item/weapon/gun/energy/laser{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser{pixel_x = 3; pixel_y = -3},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/warden) "agk" = (/turf/simulated/floor{icon_state = "dark"},/area/security/warden) -"agl" = (/obj/structure/rack,/obj/item/weapon/shield/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot{pixel_x = 3; pixel_y = -3},/obj/item/weapon/storage/box/teargas,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) +"agl" = (/obj/structure/rack,/obj/item/weapon/shield/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot{pixel_x = 3; pixel_y = -3},/obj/item/weapon/storage/box/teargas,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "agm" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id_tag = "hosprivacy"; name = "privacy shutters"},/turf/simulated/floor/plating,/area/security/hos) "agn" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/secure/briefcase{pixel_x = -2},/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/cartridge/detective,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "ago" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) @@ -389,7 +389,7 @@ "ahy" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/maintenance/disposal) "ahz" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "ahA" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"ahB" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) +"ahB" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "ahC" = (/turf/simulated/wall/r_wall,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ahD" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ahE" = (/obj/structure/rack,/obj/item/clothing/suit/space/rig/security,/obj/item/clothing/mask/gas/sechailer,/obj/item/clothing/head/helmet/space/rig/security,/obj/item/clothing/shoes/magboots,/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/security/brig) @@ -549,7 +549,7 @@ "akC" = (/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "akD" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/book/manual/chef_recipes,/obj/item/weapon/book/manual/barman_recipes,/obj/item/weapon/firealarm_electronics,/obj/item/weapon/grenade/smokebomb,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "akE" = (/obj/structure/table,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/mask/surgical,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor{dir = 9; icon_state = "whitered"},/area/security/brig) -"akF" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/light/small{dir = 1},/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/obj/item/device/healthanalyzer,/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/security/brig) +"akF" = (/obj/structure/table,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/light/small{dir = 1},/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/obj/item/device/healthanalyzer,/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/security/brig) "akG" = (/obj/structure/table,/obj/machinery/alarm{pixel_y = 28},/obj/machinery/computer/med_data/laptop,/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/security/brig) "akH" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 5; icon_state = "whitered"},/area/security/brig) "akI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig) @@ -568,7 +568,7 @@ "akV" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/security/warden) "akW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/main) "akX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/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{icon_state = "red"; dir = 1},/area/security/main) -"akY" = (/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) +"akY" = (/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "akZ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "ala" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "alb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) @@ -595,7 +595,7 @@ "alw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "alx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/turf/simulated/floor,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aly" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/turf/simulated/floor,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"alz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Holodeck"; dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/obj/machinery/light/small,/turf/simulated/floor,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"alz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Holodeck"; dir = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/obj/machinery/light/small,/turf/simulated/floor,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "alA" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "alB" = (/turf/simulated/wall,/area/maintenance/starboard) "alC" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -852,7 +852,7 @@ "aqt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aqu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aqv" = (/obj/machinery/disposal,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -26},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/camera{c_tag = "Fitness Room - Aft"; dir = 1},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"aqw" = (/obj/machinery/vending/coffee,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"aqw" = (/obj/machinery/vending/coffee,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aqx" = (/obj/machinery/light,/obj/machinery/vending/cola,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aqy" = (/obj/machinery/vending/cigarette,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aqz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/wall,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -868,7 +868,7 @@ "aqJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/gravitygenerator) "aqK" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aqL" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) -"aqM" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) +"aqM" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aqN" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) "aqO" = (/obj/machinery/space_heater,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aqP" = (/obj/machinery/space_heater,/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -989,7 +989,7 @@ "ata" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/main) "atb" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "grimy"},/area/security/main) "atc" = (/obj/structure/stool/bed/chair,/obj/machinery/computer/security/telescreen{desc = "Used for watching proceedings in the interrogation room."; dir = 1; layer = 4; name = "interrogation monitor"; network = list("interrogation"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) -"atd" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/table/woodentable,/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1424; listening = 1; name = "Interrogation Intercom"; pixel_x = 0; pixel_y = -31},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) +"atd" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/table/woodentable,/obj/item/device/radio/intercom{broadcasting = 0; frequency = 1424; listening = 1; name = "Interrogation Intercom"; pixel_x = 0; pixel_y = -31},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) "ate" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) "atf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fore) "atg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fore) @@ -1106,7 +1106,7 @@ "avn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "avo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "avp" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Brig - Hallway - Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) -"avq" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) +"avq" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "avr" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "avs" = (/obj/machinery/firealarm{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "avt" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) @@ -1243,7 +1243,7 @@ "axU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/security/brig) "axV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "axW" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) -"axX" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; frequency = 1424; listening = 0; name = "Interrogation Intercom"; pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) +"axX" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1424; listening = 0; name = "Interrogation Intercom"; pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "axY" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "axZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "aya" = (/turf/simulated/wall,/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) @@ -1381,7 +1381,7 @@ "aAC" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aAD" = (/obj/structure/mirror{pixel_x = 28},/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aAE" = (/obj/machinery/washing_machine,/turf/simulated/floor{icon_state = "barber"},/area/crew_quarters/sleep) -"aAF" = (/obj/structure/table,/obj/item/clothing/under/suit_jacket/female{pixel_x = 3; pixel_y = 1},/obj/item/clothing/under/suit_jacket/really_black{pixel_x = -2; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/obj/item/clothing/accessory/waistcoat,/obj/item/clothing/under/suit_jacket/red,/obj/item/clothing/accessory/black,/turf/simulated/floor{icon_state = "barber"},/area/crew_quarters/sleep) +"aAF" = (/obj/structure/table,/obj/item/clothing/under/suit_jacket/female{pixel_x = 3; pixel_y = 1},/obj/item/clothing/under/suit_jacket/really_black{pixel_x = -2; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/obj/item/clothing/accessory/waistcoat,/obj/item/clothing/under/suit_jacket/red,/obj/item/clothing/accessory/black,/turf/simulated/floor{icon_state = "barber"},/area/crew_quarters/sleep) "aAG" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "aAH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor,/area/crew_quarters/sleep) "aAI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep) @@ -1393,7 +1393,7 @@ "aAO" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboard) "aAP" = (/obj/structure/closet/secure_closet/engineering_personal,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aAQ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/color/yellow,/obj/item/clothing/gloves/color/yellow,/obj/item/clothing/gloves/color/yellow,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"aAR" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Engineering - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"aAR" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Engineering - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aAS" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aAT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) "aAU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{sortType = 4},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engine/engineering) @@ -1568,11 +1568,11 @@ "aEh" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/engine/engineering) "aEi" = (/obj/machinery/computer/secure_data,/obj/machinery/flasher_button{id = "secentranceflasher"; name = "Brig Entrance Flash Control"; pixel_x = -24; pixel_y = 24; req_access_txt = "1"},/obj/machinery/door_control{id = "Secure Gate"; name = "Cell Window Control"; normaldoorcontrol = 0; pixel_x = 5; pixel_y = 27; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/door_control{id = "briglockdown"; name = "Brig Lockdown Control"; pixel_x = 5; pixel_y = 37; req_access_txt = "0"},/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "innerbrig"; name = "Brig Interior Doors Control"; normaldoorcontrol = 1; pixel_x = -5; pixel_y = 37; req_access_txt = "63"},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "outerbrig"; name = "Brig Exterior Doors Control"; normaldoorcontrol = 1; pixel_x = -5; pixel_y = 27; req_access_txt = "63"},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "aEj" = (/obj/structure/filingcabinet/chestdrawer{pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/security/brig) -"aEk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/flasher_button{id = "holdingflash"; name = "holding cell flasher button"; pixel_x = 23; pixel_y = 23; req_access_txt = "1"},/obj/machinery/camera{c_tag = "Brig - Desk"; dir = 8; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29; pixel_y = -2},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) +"aEk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/flasher_button{id = "holdingflash"; name = "holding cell flasher button"; pixel_x = 23; pixel_y = 23; req_access_txt = "1"},/obj/machinery/camera{c_tag = "Brig - Desk"; dir = 8; network = list("SS13")},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29; pixel_y = -2},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "aEl" = (/obj/machinery/requests_console{department = "Detective's office"; pixel_x = -30; pixel_y = 0},/obj/structure/table/woodentable,/obj/machinery/light/small{dir = 8},/obj/item/weapon/book/manual/security_space_law,/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detective's camera"; pictures_left = 30},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "aEm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "aEn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) -"aEo" = (/obj/machinery/light/small,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"aEo" = (/obj/machinery/light/small,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "aEp" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "aEq" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -3; pixel_y = 2},/obj/item/weapon/storage/secure/briefcase{pixel_x = 2; pixel_y = -2},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "aEr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/fore) @@ -1707,7 +1707,7 @@ "aGQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aGR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Fore Primary Hallway APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow,/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aGS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) -"aGT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) +"aGT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aGU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aGV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aGW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/fore) @@ -1759,7 +1759,7 @@ "aHQ" = (/turf/simulated/floor/plating,/area/construction) "aHR" = (/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/construction) "aHS" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor,/area/construction) -"aHT" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor,/area/construction) +"aHT" = (/obj/structure/table,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor,/area/construction) "aHU" = (/obj/structure/closet/toolcloset,/obj/machinery/light_construct{dir = 1},/turf/simulated/floor,/area/construction) "aHV" = (/obj/structure/closet/toolcloset,/turf/simulated/floor,/area/construction) "aHW" = (/turf/space,/area/supply/station) @@ -1835,7 +1835,7 @@ "aJo" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/apc{dir = 2; name = "Storage Wing APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "aJp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "aJq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) -"aJr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Storage Wing"; dir = 1; network = list("SS13")},/obj/machinery/light,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) +"aJr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Storage Wing"; dir = 1; network = list("SS13")},/obj/machinery/light,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "aJs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "aJt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=3-Central-Port"; location = "2-Storage"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "aJu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/construction/Storage{name = "Storage Wing"}) @@ -2016,7 +2016,7 @@ "aMN" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "aMO" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/pump,/obj/machinery/light/small{dir = 1},/obj/machinery/firealarm{pixel_y = 27},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "aMP" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) -"aMQ" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/scrubber,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) +"aMQ" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/scrubber,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "aMR" = (/obj/machinery/disposal{pixel_x = 0; pixel_y = 0},/obj/structure/disposalpipe/trunk,/obj/machinery/camera{c_tag = "Locker Room Starboard"; dir = 2; network = list("SS13")},/obj/structure/sign/pods{pixel_y = 30},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "aMS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aMT" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) @@ -2059,10 +2059,10 @@ "aNE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/turf/simulated/floor,/area/storage/primary) "aNF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/storage/primary) "aNG" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/vending/artvend,/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) -"aNH" = (/obj/structure/table,/obj/item/weapon/aiModule/core/full/asimov,/obj/item/weapon/aiModule/core/freeformcore,/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Core Modules"; req_access_txt = "20"},/obj/structure/window/reinforced,/obj/item/weapon/aiModule/core/full/corp,/obj/item/weapon/aiModule/core/full/paladin,/obj/item/weapon/aiModule/core/full/robocop,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"aNH" = (/obj/structure/table,/obj/item/weapon/aiModule/asimov,/obj/item/weapon/aiModule/freeformcore,/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Core Modules"; req_access_txt = "20"},/obj/structure/window/reinforced,/obj/item/weapon/aiModule/corp,/obj/item/weapon/aiModule/paladin,/obj/item/weapon/aiModule/robocop,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "aNI" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) -"aNJ" = (/obj/structure/table,/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "High-Risk Modules"; req_access_txt = "20"},/obj/structure/window/reinforced,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/obj/item/weapon/aiModule/core/full/antimov,/obj/item/weapon/aiModule/supplied/oxygen,/obj/item/weapon/aiModule/zeroth/oneHuman,/obj/item/weapon/aiModule/reset/purge,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"aNK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) +"aNJ" = (/obj/structure/table,/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "High-Risk Modules"; req_access_txt = "20"},/obj/structure/window/reinforced,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/obj/item/weapon/aiModule/antimov,/obj/item/weapon/aiModule/oxygen,/obj/item/weapon/aiModule/oneCrewMember,/obj/item/weapon/aiModule/purge,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"aNK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aNL" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/courtroom) "aNM" = (/obj/structure/stool/bed/chair{dir = 4; name = "Prosecution"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/crew_quarters/courtroom) "aNN" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/courtroom) @@ -2197,11 +2197,11 @@ "aQm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/storage/primary) "aQn" = (/obj/structure/table,/obj/item/weapon/wirecutters,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/machinery/requests_console{department = "Tool Storage"; departmentType = 0; pixel_x = 30; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera{c_tag = "Tool Storage"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) "aQo" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/turret_protected/ai_upload) -"aQp" = (/obj/structure/table,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/aiModule/zeroth/quarantine,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"aQp" = (/obj/structure/table,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/aiModule/quarantine,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "aQq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "aQr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "aQs" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 8},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"aQt" = (/obj/structure/table,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/aiModule/supplied/freeform,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"aQt" = (/obj/structure/table,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/aiModule/freeform,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "aQu" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "aQv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=0-SecurityDesk"; location = "16-Fore"},/turf/simulated/floor,/area/hallway/primary/fore) "aQw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Fore Primary Hallway Aft"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/fore) @@ -2221,7 +2221,7 @@ "aQK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/secondary/construction{name = "\improper Garden"}) "aQL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/portable_atmospherics/hydroponics/soil,/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aQM" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"}) -"aQN" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"}) +"aQN" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"}) "aQO" = (/obj/structure/rack,/obj/item/clothing/gloves/color/fyellow,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) "aQP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/starboard) "aQQ" = (/obj/machinery/computer/atmos_alert,/obj/structure/sign/double/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/engineering) @@ -2231,7 +2231,7 @@ "aQU" = (/obj/machinery/vending/engivend,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aQV" = (/obj/machinery/vending/tool,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aQW" = (/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"aQX" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/color/black,/obj/item/weapon/extinguisher{pixel_x = 8},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/item/clothing/glasses/meson,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"aQX" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/color/black,/obj/item/weapon/extinguisher{pixel_x = 8},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/item/clothing/glasses/meson,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aQY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "aQZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/crowbar,/obj/item/stack/cable_coil,/obj/item/weapon/screwdriver,/obj/item/weapon/weldingtool,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aRa" = (/obj/structure/window/reinforced,/turf/space,/area/space) @@ -2265,7 +2265,7 @@ "aRC" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Upload APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera/motion{c_tag = "AI Upload Chamber - Port"; dir = 1; network = list("SS13","RD","AIUpload")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "aRD" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "aRE" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_y = -25},/obj/machinery/camera/motion{c_tag = "AI Upload Chamber - Starboard"; dir = 1; network = list("SS13","RD","AIUpload")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) -"aRF" = (/obj/structure/table,/obj/machinery/light{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/obj/item/weapon/aiModule/supplied/protectStation,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"aRF" = (/obj/structure/table,/obj/machinery/light{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/obj/item/weapon/aiModule/protectStation,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "aRG" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aRH" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/crew_quarters/courtroom) "aRI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) @@ -2420,7 +2420,7 @@ "aUB" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/crew_quarters/courtroom) "aUC" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "aUD" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) -"aUE" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) +"aUE" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "aUF" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/light,/obj/machinery/camera{c_tag = "Courtroom - Gallery"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "aUG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "aUH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) @@ -2430,7 +2430,7 @@ "aUL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aUM" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock{name = "Locker Room"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) "aUN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/power/apc{dir = 2; name = "Locker Room APC"; pixel_x = -1; pixel_y = -26},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) -"aUO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Locker Room Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) +"aUO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Locker Room Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aUP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aUQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aUR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) @@ -2519,7 +2519,7 @@ "aWw" = (/obj/structure/flora/kirbyplants{icon_state = "plant-13"; layer = 4.1; tag = "icon-plant-13"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWx" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "escape_pod_1_berth"; pixel_x = -25; pixel_y = 30; tag_door = "escape_pod_1_berth_hatch"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWy" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aWz" = (/obj/structure/stool/bed/chair,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aWz" = (/obj/structure/stool/bed/chair,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWA" = (/obj/structure/stool/bed/chair,/obj/machinery/camera{c_tag = "Arrivals - Fore Arm - Far"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWB" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -2531,7 +2531,7 @@ "aWI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/double/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) "aWJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/double/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"aWL" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/hallway/secondary/entry{name = "Arrivals"}) +"aWL" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/hallway/secondary/entry{name = "Arrivals"}) "aWM" = (/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/quartermaster/storage) "aWN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/storage) "aWO" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) @@ -2560,7 +2560,7 @@ "aXl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/central) "aXm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/central) "aXn" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/central) -"aXo" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) +"aXo" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "aXp" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "aXq" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/flora/kirbyplants{icon_state = "plant-16"; layer = 4.1; tag = "icon-plant-16"},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/hallway/primary/central) "aXr" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Courtroom"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) @@ -2636,7 +2636,7 @@ "aYJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "aYK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "aYL" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - AI Upload"; dir = 2; network = list("SS13")},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH-POWER TURRETS AHEAD'."; name = "\improper HIGH-POWER TURRETS AHEAD"; pixel_y = 32},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) -"aYM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) +"aYM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) "aYN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) "aYO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) "aYP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) @@ -2666,14 +2666,14 @@ "aZn" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/powermonitor{pixel_x = -2; pixel_y = 2},/obj/item/weapon/circuitboard/stationalert_all{pixel_x = 1; pixel_y = -1},/obj/item/weapon/circuitboard/atmos_alert{pixel_x = 3; pixel_y = -3},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aZo" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/secure_data{pixel_x = -2; pixel_y = 2},/obj/item/weapon/circuitboard/camera{pixel_x = 1; pixel_y = -1},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 31},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aZp" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/cloning{pixel_x = 0},/obj/item/weapon/circuitboard/med_data{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/clonescanner,/obj/item/weapon/circuitboard/clonepod,/obj/item/weapon/circuitboard/scan_consolenew,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) -"aZq" = (/obj/structure/table,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/machinery/light/small{dir = 1},/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) +"aZq" = (/obj/structure/table,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/machinery/light/small{dir = 1},/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "aZr" = (/obj/structure/table,/obj/item/device/aicard,/obj/item/weapon/aiModule/reset,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) -"aZs" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) +"aZs" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "aZt" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "aZu" = (/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 30},/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "aZv" = (/obj/structure/disposalpipe/segment,/obj/machinery/power/apc{dir = 4; name = "CE Office APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light_switch{pixel_x = 26; pixel_y = 26},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "aZw" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/structure/closet/radiation,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"aZx" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"aZx" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aZy" = (/turf/simulated/wall,/area/security/checkpoint/engineering) "aZz" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engineering) "aZA" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plating/airless,/area/engine/engineering) @@ -2801,19 +2801,19 @@ "bbS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bbT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bbU" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bbV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -27; pixel_y = -29},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bbV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -27; pixel_y = -29},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bbW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central) "bbX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - Starboard Corner"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bbY" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/storage/tools) "bbZ" = (/obj/machinery/power/apc{dir = 1; name = "Auxiliary Tool Storage APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/storage/tools) "bca" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/storage/tools) -"bcb" = (/obj/structure/closet/toolcloset,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/storage/tools) +"bcb" = (/obj/structure/closet/toolcloset,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/storage/tools) "bcc" = (/obj/structure/closet/toolcloset,/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/storage/tools) "bcd" = (/obj/effect/decal/cleanable/cobweb,/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bce" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "bcf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/starboard) "bcg" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/borgupload{pixel_x = -1; pixel_y = 1},/obj/item/weapon/circuitboard/aiupload{pixel_x = 2; pixel_y = -2},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/storage/tech) -"bch" = (/obj/machinery/camera{c_tag = "Secure Tech Storage"; dir = 8},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) +"bch" = (/obj/machinery/camera{c_tag = "Secure Tech Storage"; dir = 8},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "bci" = (/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "bcj" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/message_monitor{pixel_y = -5},/obj/item/weapon/circuitboard/arcade/battle{pixel_x = -4; pixel_y = 2},/obj/item/weapon/circuitboard/arcade/orion_trail{pixel_x = 4},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "bck" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/autolathe{pixel_x = 3; pixel_y = -3},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) @@ -2866,7 +2866,7 @@ "bdf" = (/turf/simulated/floor,/area/hallway/primary/port) "bdg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor,/area/hallway/primary/port) "bdh" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/light{dir = 4},/obj/machinery/camera{c_tag = "Cargo - Foyer"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/hallway/primary/port) -"bdi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bdi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bdj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "bdk" = (/turf/simulated/wall,/area/janitor) "bdl" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Custodial Closet"; req_access_txt = "26"},/turf/simulated/floor,/area/janitor) @@ -2912,8 +2912,8 @@ "bdZ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/obj/machinery/camera{c_tag = "MiniSat Exterior Port-Fore"; dir = 8; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bea" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "beb" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/machinery/door/window{dir = 4; name = "Secondary AI Core Access"; pixel_x = 0; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"bec" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 19},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = 27; pixel_y = -3},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Secondary AI Base"},/area/turret_protected/ai) -"bed" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 20},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_x = -25; pixel_y = -4},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Tertiary AI Base"},/area/turret_protected/ai) +"bec" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 19},/obj/item/device/radio/intercom{broadcasting = 0; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Common Channel"; pixel_x = 27; pixel_y = -3},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Secondary AI Base"},/area/turret_protected/ai) +"bed" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 20},/obj/item/device/radio/intercom{broadcasting = 0; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Common Channel"; pixel_x = -25; pixel_y = -4},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Tertiary AI Base"},/area/turret_protected/ai) "bee" = (/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/ai_slipper{icon_state = "motion0"},/obj/machinery/door/window{dir = 8; icon_state = "left"; name = "Tertiary AI Core Access"; pixel_x = 0; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bef" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "beg" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "MiniSat Exterior Starboard-Fore"; dir = 4; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) @@ -2985,7 +2985,7 @@ "bfu" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/device/multitool,/obj/item/clothing/glasses/meson,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "bfv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) "bfw" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 0},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) -"bfx" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) +"bfx" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bfy" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -29},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/head/helmet/space/rig/elite,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/rig/elite,/obj/item/clothing/shoes/magboots/advance,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bfz" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/secure/briefcase,/obj/item/clothing/mask/cigarette/cigar,/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bfA" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/lighter/zippo,/obj/item/clothing/glasses/meson,/obj/machinery/door_control{id = "ceprivacy"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) @@ -3003,7 +3003,7 @@ "bfM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "bfN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "bfO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/flasher{id = "AI"; layer = 2.9; pixel_x = 24; pixel_y = -8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"bfP" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Primary AI Base"},/area/turret_protected/ai) +"bfP" = (/obj/item/device/radio/intercom{broadcasting = 0; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Primary AI Base"},/area/turret_protected/ai) "bfQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/camera{c_tag = "AI Chamber - Starboard"; dir = 8; network = list("SS13","MiniSat","RD")},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "bfR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "bfS" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area/space) @@ -3158,7 +3158,7 @@ "biL" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{dir = 1; icon_state = "darkred"; tag = "icon-darkblue"; temperature = 273.15},/area/bridge) "biM" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/computer/prisoner,/turf/simulated/floor{dir = 5; icon_state = "darkred"; tag = "icon-darkblue"; temperature = 273.15},/area/bridge) "biN" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/door/poddoor/preopen{id_tag = "bridge blast"; layer = 2.9; name = "bridge blast door"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/bridge) -"biO" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/photo_album{pixel_y = -4},/obj/item/device/camera{pixel_y = 4},/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Captain)"; pixel_x = -28},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"biO" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/photo_album{pixel_y = -4},/obj/item/device/camera{pixel_y = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (Captain)"; pixel_x = -28},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "biP" = (/obj/machinery/light_switch{pixel_y = -25},/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/item/weapon/reagent_containers/food/drinks/flask{pixel_x = 8},/obj/item/weapon/razor{pixel_x = -4; pixel_y = 2},/obj/item/clothing/mask/cigarette/cigar,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "biQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "biR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3190,7 +3190,7 @@ "bjr" = (/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "bjs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "bjt" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) -"bju" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) +"bju" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "bjv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "bjw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "bjx" = (/obj/machinery/disposal{pixel_x = 2; pixel_y = 2},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) @@ -3299,7 +3299,7 @@ "blw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "neutral"},/area/hallway/primary/port) "blx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/port) "bly" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/port) -"blz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/hallway/primary/port) +"blz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/hallway/primary/port) "blA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/hallway/primary/port) "blB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/sign/double/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/port) "blC" = (/obj/structure/extinguisher_cabinet{pixel_x = 30; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/sign/double/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/hallway/primary/port) @@ -3310,7 +3310,7 @@ "blH" = (/obj/structure/filingcabinet/filingcabinet,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/machinery/camera{c_tag = "Cargo - Mailroom"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Cargo Office"}) "blI" = (/obj/structure/table,/obj/item/stack/wrapping_paper,/obj/item/stack/wrapping_paper,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_y = -30},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/quartermaster/office{name = "\improper Cargo Office"}) "blJ" = (/obj/item/weapon/storage/box,/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/item/weapon/hand_labeler,/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/quartermaster/office{name = "\improper Cargo Office"}) -"blK" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/item/weapon/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/obj/machinery/power/apc{dir = 2; name = "Cargo Office APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"blK" = (/obj/structure/table,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/item/weapon/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/obj/machinery/power/apc{dir = 2; name = "Cargo Office APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "blL" = (/obj/machinery/photocopier,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "blM" = (/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "blN" = (/obj/structure/disposalpipe/segment,/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) @@ -3319,7 +3319,7 @@ "blQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/port) "blR" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "browncorner"},/area/hallway/primary/port) "blS" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/weapon/hand_labeler,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/hallway/primary/port) -"blT" = (/obj/structure/table,/obj/item/device/toner,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/hallway/primary/port) +"blT" = (/obj/structure/table,/obj/item/device/toner,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/hallway/primary/port) "blU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "blV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "blW" = (/turf/simulated/wall/r_wall,/area/crew_quarters/heads) @@ -3505,7 +3505,7 @@ "bpu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bpv" = (/obj/machinery/power/apc{dir = 1; name = "Port Hallway APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bpw" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) -"bpx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) +"bpx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bpy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/hallway/primary/port) "bpz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "browncorner"},/area/hallway/primary/port) "bpA" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/hallway/primary/port) @@ -3535,7 +3535,7 @@ "bpY" = (/obj/structure/sign/double/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bpZ" = (/obj/structure/sign/double/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bqa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bqb" = (/obj/machinery/computer/communications,/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Captain)"; pixel_x = 28},/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 24},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bqb" = (/obj/machinery/computer/communications,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (Captain)"; pixel_x = 28},/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 24},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bqc" = (/obj/structure/rack,/obj/item/weapon/cane,/turf/simulated/floor/plating,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bqd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/camera{c_tag = "Central Primary Hallway - Starboard - Art Storage"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bqe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -3643,7 +3643,7 @@ "bsc" = (/turf/simulated/floor/carpet,/area/bridge) "bsd" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/carpet,/area/bridge) "bse" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 8},/obj/structure/table/glass,/turf/simulated/floor{icon_state = "dark"},/area/bridge) -"bsf" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/obj/structure/rack,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/timer,/turf/simulated/floor{dir = 1; icon_state = "darkblue"; tag = "icon-darkbluecorners (WEST)"},/area/bridge) +"bsf" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/obj/structure/rack,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/timer,/turf/simulated/floor{dir = 1; icon_state = "darkblue"; tag = "icon-darkbluecorners (WEST)"},/area/bridge) "bsg" = (/obj/machinery/light,/obj/structure/rack,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency{pixel_x = -2; pixel_y = -3},/obj/item/weapon/wrench,/obj/item/device/multitool,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 1; icon_state = "darkblue"; tag = "icon-darkbluecorners (WEST)"},/area/bridge) "bsh" = (/obj/machinery/light_switch{pixel_x = 8; pixel_y = -26},/turf/simulated/floor{dir = 10; icon_state = "darkblue"},/area/bridge) "bsi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "darkblue"; tag = "icon-darkbluecorners (WEST)"},/area/bridge) @@ -3663,7 +3663,7 @@ "bsw" = (/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bsx" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bsy" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"bsz" = (/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"bsz" = (/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bsA" = (/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access_txt = "25"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/bar) "bsB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "bsC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -3886,7 +3886,7 @@ "bwL" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) "bwM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/engine/break_room) "bwN" = (/obj/structure/rack,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) -"bwO" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/machinery/light_switch{pixel_x = -8; pixel_y = -24},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 5; pixel_y = -26},/obj/structure/rack,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) +"bwO" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/machinery/light_switch{pixel_x = -8; pixel_y = -24},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 5; pixel_y = -26},/obj/structure/rack,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) "bwP" = (/obj/structure/rack,/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor{icon_state = "dark"},/area/engine/break_room) "bwQ" = (/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/rack,/obj/item/clothing/suit/storage/hazardvest,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/space) "bwR" = (/obj/structure/transit_tube{tag = "icon-E-NW"; icon_state = "E-NW"},/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area/space) @@ -3974,7 +3974,7 @@ "byv" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Bar APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/bar) "byw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "byx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"byy" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Club - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"byy" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Club - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/bar) "byz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar) "byA" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_Toxins = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar) "byB" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -4003,11 +4003,11 @@ "byY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "byZ" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 28},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "bza" = (/obj/structure/table/woodentable,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 31},/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) -"bzb" = (/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 30},/obj/structure/table/woodentable,/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) +"bzb" = (/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 30},/obj/structure/table/woodentable,/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "bzc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "bzd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bze" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bzf" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/camera{c_tag = "Arrivals - Middle Arm - Far"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bzf" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/camera{c_tag = "Arrivals - Middle Arm - Far"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bzg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bzh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bzi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -4018,7 +4018,7 @@ "bzn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) "bzo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bzp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bzq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/hallway/secondary/entry{name = "Arrivals"}) +"bzq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/hallway/secondary/entry{name = "Arrivals"}) "bzr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{dir = 10; icon_state = "neutral"},/area/hallway/primary/port) "bzs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 2; pixel_y = -24},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) "bzt" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/primary/port) @@ -4084,7 +4084,7 @@ "bAB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bAC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/device/radio/beacon,/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/hallway/primary/starboard) "bAD" = (/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/hallway/primary/starboard) -"bAE" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/mask/gas,/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/simulated/floor{dir = 9; icon_state = "caution"},/area/atmos) +"bAE" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/mask/gas,/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/simulated/floor{dir = 9; icon_state = "caution"},/area/atmos) "bAF" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/atmos) "bAG" = (/obj/machinery/computer/atmos_alert,/obj/structure/sign/double/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/camera{c_tag = "Atmospherics - Control Room"; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/atmos) "bAH" = (/obj/structure/sign/double/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/computer/atmoscontrol,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/atmos) @@ -4126,11 +4126,11 @@ "bBr" = (/obj/machinery/light{dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/carpet,/area/library) "bBs" = (/obj/machinery/door/morgue{name = "Study #1"; req_access_txt = "0"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "bBt" = (/obj/machinery/door/morgue{name = "Study #2"; req_access_txt = "0"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) -"bBu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Primary Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bBu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Primary Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bBv" = (/turf/simulated/wall,/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bBw" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bBx" = (/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) -"bBy" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"bBy" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bBz" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bBA" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bBB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/flasher{id = "hopflash"; pixel_x = 28},/turf/simulated/floor{icon_state = "delivery"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) @@ -4310,7 +4310,7 @@ "bET" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bEU" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bEV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) -"bEW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"bEW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bEX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bEY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bEZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/bridge/meeting_room{name = "\improper Command Hallway"}) @@ -4323,7 +4323,7 @@ "bFg" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bFh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bFi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) -"bFj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Command Hallway - Starboard"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) +"bFj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Command Hallway - Starboard"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bFk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bFl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/alarm{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bFm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) @@ -4339,7 +4339,7 @@ "bFw" = (/obj/structure/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bFx" = (/obj/structure/disposalpipe/segment,/obj/item/clothing/mask/cigarette/cigar,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bFy" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/crew_quarters/theatre) -"bFz" = (/obj/structure/table/woodentable,/obj/item/weapon/lipstick{pixel_y = 5},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera{c_tag = "Theatre - Stage"; dir = 8; network = list("SS13")},/obj/machinery/light/small{dir = 4},/obj/item/device/guitar,/turf/simulated/floor/wood,/area/crew_quarters/theatre) +"bFz" = (/obj/structure/table/woodentable,/obj/item/weapon/lipstick{pixel_y = 5},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera{c_tag = "Theatre - Stage"; dir = 8; network = list("SS13")},/obj/machinery/light/small{dir = 4},/obj/item/device/guitar,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bFA" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/primary/starboard) "bFB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/starboard) "bFC" = (/obj/structure/dispenser{pixel_x = -1},/turf/simulated/floor{dir = 1; icon_state = "blackcorner"},/area/atmos) @@ -4465,11 +4465,11 @@ "bHS" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 8; frequency = 1441; id = "waste_in"; pixel_y = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/atmos) "bHT" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/space,/area/space) "bHU" = (/obj/machinery/telecomms/processor/preset_one,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"bHV" = (/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 29},/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Fore-Port"; dir = 2; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) +"bHV" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 29},/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Fore-Port"; dir = 2; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bHW" = (/obj/machinery/telecomms/receiver/preset_left,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bHX" = (/turf/simulated/floor{icon_state = "dark"},/area/tcommsat/server) "bHY" = (/obj/machinery/telecomms/receiver/preset_right,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"bHZ" = (/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 29},/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Fore-Starboard"; dir = 2; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) +"bHZ" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 29},/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Fore-Starboard"; dir = 2; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bIa" = (/obj/machinery/telecomms/processor/preset_three,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bIb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bIc" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27;37"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -4596,7 +4596,7 @@ "bKt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/central) "bKu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "bKv" = (/obj/structure/table,/obj/item/clothing/head/cakehat,/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) -"bKw" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) +"bKw" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "bKx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "bKy" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Kitchen Hatch"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "bKz" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) @@ -4641,7 +4641,7 @@ "bLm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bLn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bLo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bLp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor/wood,/area/security/vacantoffice) +"bLp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor/wood,/area/security/vacantoffice) "bLq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/wood,/area/security/vacantoffice) "bLr" = (/obj/item/weapon/folder/blue,/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/security/vacantoffice) "bLs" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor/carpet,/area/security/vacantoffice) @@ -4793,7 +4793,7 @@ "bOi" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1; initialize_directions = 11},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/atmos) "bOj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor,/area/atmos) "bOk" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 9},/turf/simulated/floor,/area/atmos) -"bOl" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Atmospherics - Central"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/atmos) +"bOl" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Atmospherics - Central"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/atmos) "bOm" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/turf/simulated/floor,/area/atmos) "bOn" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor,/area/atmos) "bOo" = (/obj/machinery/atmospherics/pipe/manifold/visible,/obj/machinery/meter,/turf/simulated/floor,/area/atmos) @@ -4813,7 +4813,7 @@ "bOC" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "MiniSat Exterior Aft-Starboard"; dir = 4; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bOD" = (/obj/machinery/camera{c_tag = "Arrivals - Aft Arm - Far"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bOE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bOF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bOF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bOG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "bOH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "bluecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) "bOI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -5185,7 +5185,7 @@ "bVK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bVL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{pixel_y = 28},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bVM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door_control{id = "teleshutter"; name = "Teleporter Shutter Control"; pixel_x = 0; pixel_y = 26; req_access_txt = "19"},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) -"bVN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) +"bVN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) "bVO" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bVP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "bVQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) @@ -5196,7 +5196,7 @@ "bVV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Central Primary Hallway APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bVW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/structure/sign/double/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bVX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/sign/double/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bVY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"bVY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bVZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door_control{id = "gateshutter"; name = "Gateway Shutter Control"; pixel_x = 0; pixel_y = 26; req_access_txt = "19"},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) "bWa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) "bWb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -5227,7 +5227,7 @@ "bWA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "dark"},/area/atmos) "bWB" = (/obj/machinery/pipedispenser,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/atmos) "bWC" = (/obj/machinery/light{dir = 1},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/pipedispenser/disposal,/turf/simulated/floor{icon_state = "warning"},/area/atmos) -"bWD" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/atmos) +"bWD" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/atmos) "bWE" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Port to Filter"; on = 0},/turf/simulated/floor,/area/atmos) "bWF" = (/obj/machinery/atmospherics/pipe/manifold/visible,/obj/item/weapon/cigbutt,/turf/simulated/floor,/area/atmos) "bWG" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 8; tag = ""},/turf/simulated/floor,/area/atmos) @@ -5432,7 +5432,7 @@ "cax" = (/obj/structure/noticeboard{pixel_y = 32},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/large{pixel_y = 3},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/bottle/charcoal{pixel_x = -5; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/bottle/morphine,/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "cay" = (/obj/structure/closet/secure_closet/medical3,/obj/item/weapon/screwdriver{pixel_y = 6},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "caz" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 24},/obj/item/weapon/screwdriver{pixel_y = 6},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) -"caA" = (/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 30},/obj/structure/closet/wardrobe/medical_white,/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"caA" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 30},/obj/structure/closet/wardrobe/medical_white,/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "caB" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "caC" = (/obj/machinery/power/apc{dir = 8; name = "Medical Security Checkpoint APC"; pixel_x = -24; pixel_y = 0},/obj/machinery/alarm{pixel_y = 28},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/closet/secure_closet/security/med,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/medical) "caD" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Security Post - Medbay"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/medical) @@ -5538,7 +5538,7 @@ "ccz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/incinerator) "ccA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/maintenance/incinerator) "ccB" = (/obj/machinery/power/smes{capacity = 9e+006; charge = 10000},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/incinerator) -"ccC" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/atmos) +"ccC" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/atmos) "ccD" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor,/area/atmos) "ccE" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "N2 to Pure"},/turf/simulated/floor,/area/atmos) "ccF" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/atmos) @@ -5728,7 +5728,7 @@ "cgh" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/obj/item/weapon/reagent_containers/glass/bottle/epinephrine,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) "cgi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "cgj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cgk" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) +"cgk" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "cgl" = (/obj/machinery/light,/obj/structure/stool/bed/roller,/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/firealarm{dir = 1; pixel_y = -28},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "cgm" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "cgn" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"},/area/medical/medbay{name = "Medbay Central"}) @@ -5742,7 +5742,7 @@ "cgv" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell/potato,/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cgw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cgx" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"cgy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/obj/structure/flora/kirbyplants{layer = 4.1},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) +"cgy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/obj/structure/flora/kirbyplants{layer = 4.1},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cgz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cgA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cgB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/science{name = "Security Post - Research Division"}) @@ -5984,7 +5984,7 @@ "cld" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "cle" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "clf" = (/obj/structure/stool/bed/chair,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) -"clg" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/camera{c_tag = "Medbay Sleepers"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) +"clg" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/camera{c_tag = "Medbay Sleepers"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) "clh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor{dir = 8; icon_state = "whitebluecorner"},/area/medical/sleeper{name = "Sleepers"}) "cli" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper{name = "Sleepers"}) "clj" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"},/area/medical/sleeper{name = "Sleepers"}) @@ -6023,7 +6023,7 @@ "clQ" = (/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "clR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "clS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) -"clT" = (/obj/machinery/vending/coffee,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) +"clT" = (/obj/machinery/vending/coffee,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "clU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/toxins/explab) "clV" = (/obj/machinery/door_control{id = "telelab"; name = "Test Chamber Blast Doors"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor,/area/toxins/explab) "clW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/toxins/explab) @@ -6072,7 +6072,7 @@ "cmN" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) "cmO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/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{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cmP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/effect/landmark/start{name = "Psychiatrist"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cmQ" = (/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) +"cmQ" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cmR" = (/obj/machinery/vending/medical,/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) "cmS" = (/obj/structure/stool/bed/roller,/obj/machinery/iv_drip{density = 0},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "cmT" = (/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) @@ -6184,7 +6184,7 @@ "coV" = (/obj/structure/table,/obj/item/weapon/retractor,/turf/simulated/floor,/area/medical/surgery) "coW" = (/obj/machinery/computer/med_data,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) "coX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) -"coY" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/obj/structure/bedsheetbin{pixel_x = 2},/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) +"coY" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/obj/structure/bedsheetbin{pixel_x = 2},/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery) "coZ" = (/obj/machinery/power/apc{dir = 1; name = "Cryogenics APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -2; pixel_y = 9},/obj/machinery/light/small{dir = 8},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 5; pixel_y = 9},/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -3; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 6; pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) "cpa" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/structure/closet/secure_closet/medical1{pixel_x = -3},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) "cpb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/medical/cryo) @@ -6382,7 +6382,7 @@ "csL" = (/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "csM" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) "csN" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/machinery/camera{c_tag = "Medbay Cryo"; dir = 1; network = list("SS13","Medbay")},/obj/item/weapon/screwdriver{pixel_y = 6},/obj/item/clothing/accessory/stethoscope,/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) -"csO" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 1},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/obj/machinery/light,/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/cryo) +"csO" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 1},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/obj/machinery/light,/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/cryo) "csP" = (/obj/machinery/atmospherics/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/cryo) "csQ" = (/obj/machinery/atmospherics/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -24},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/cryo) "csR" = (/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) @@ -6394,7 +6394,7 @@ "csX" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/keycard_auth{pixel_x = 26; pixel_y = -7},/obj/machinery/computer/med_data/laptop,/obj/structure/table/glass,/obj/machinery/door_control{id = "cmoprivacy"; name = "Privacy Shutters Control"; pixel_x = 26; pixel_y = 4},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "csY" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "csZ" = (/obj/machinery/door/airlock/maintenance{name = "Chemistry Lab Maintenance"; req_access_txt = "5; 33"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/medical/chemistry) -"cta" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) +"cta" = (/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{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) "ctb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/aft) "ctc" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Aft Hallway APC"; pixel_x = 24; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 4; icon_state = "purplecorner"},/area/hallway/primary/aft) "ctd" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; freq = 1400; location = "Research and Development"},/turf/simulated/floor{icon_state = "delivery"},/area/toxins/lab) @@ -6531,7 +6531,7 @@ "cvE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) "cvF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cvG" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"cvH" = (/obj/item/weapon/storage/box/rxglasses{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/bodybags,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/structure/table/glass,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) +"cvH" = (/obj/item/weapon/storage/box/rxglasses{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/bodybags,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/structure/table/glass,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "cvI" = (/obj/item/clothing/gloves/color/latex,/obj/item/clothing/gloves/color/latex,/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/obj/structure/table/glass,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "cvJ" = (/obj/machinery/requests_console{department = "Genetics"; departmentType = 0; name = "Genetics Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/box/monkeycubes,/obj/item/device/radio/headset/headset_medsci,/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/structure/noticeboard{desc = "A board for pinning important notices upon."; name = "notice board"; pixel_x = -32; pixel_y = 32},/obj/structure/table/glass,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "cvK" = (/obj/machinery/power/apc{dir = 1; name = "Genetics Lab APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/structure/table/glass,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) @@ -6591,7 +6591,7 @@ "cwM" = (/turf/simulated/wall,/area/medical/genetics_cloning) "cwN" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/door/window/southleft{dir = 2; name = "Cloning Shower"},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) "cwO" = (/obj/machinery/door/window/southleft{base_state = "right"; dir = 2; icon_state = "right"; name = "Cloning Shower"},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "sink"; pixel_y = 28},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) -"cwP" = (/obj/machinery/clonepod{pixel_y = 2},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) +"cwP" = (/obj/machinery/clonepod{pixel_y = 2},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) "cwQ" = (/obj/machinery/computer/scan_consolenew,/obj/machinery/camera{c_tag = "Genetics Lab"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics) "cwR" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Geneticist"},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics) "cwS" = (/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/genetics) @@ -6618,7 +6618,7 @@ "cxn" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) "cxo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/storage) "cxp" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) -"cxq" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) +"cxq" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cxr" = (/obj/structure/closet/crate,/obj/item/device/multitool,/obj/item/clothing/gloves/color/fyellow,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxs" = (/obj/structure/rack,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6629,7 +6629,7 @@ "cxy" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/bodyscanner,/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/surgery) "cxz" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Medbay Surgery"; dir = 1; network = list("SS13","Medbay")},/obj/machinery/body_scanconsole,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cxA" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/surgery) -"cxB" = (/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; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor,/area/medical/surgery) +"cxB" = (/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,/area/medical/surgery) "cxC" = (/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{icon_state = "white"},/area/medical/surgery) "cxD" = (/obj/machinery/bodyscanner,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cxE" = (/obj/machinery/body_scanconsole,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -6649,7 +6649,7 @@ "cxS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "cxT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/genetics) "cxU" = (/obj/machinery/dna_scannernew,/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics) -"cxV" = (/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/machinery/camera{c_tag = "Genetics Desk"; dir = 4; network = list("SS13","Medbay")},/obj/structure/table/glass,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) +"cxV" = (/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/machinery/camera{c_tag = "Genetics Desk"; dir = 4; network = list("SS13","Medbay")},/obj/structure/table/glass,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) "cxW" = (/obj/machinery/door_control{dir = 2; id = "genetics"; name = "Shutter Control"; pixel_x = 26; pixel_y = 6; req_access_txt = "5;9"; req_one_access_txt = "0"},/obj/machinery/light{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/genetics) "cxX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/aft) "cxY" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_Toxins = 0},/obj/structure/sign/nosmoking_2{pixel_x = -28; pixel_y = 0},/turf/simulated/floor,/area/assembly/chargebay) @@ -6704,7 +6704,7 @@ "cyV" = (/obj/machinery/camera{c_tag = "Mech Bay"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"},/area/assembly/chargebay) "cyW" = (/turf/simulated/floor/plating,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cyX" = (/obj/machinery/camera{c_tag = "Research Testing Range"; dir = 8; network = list("SS13","RD"); pixel_y = -22},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) -"cyY" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"cyY" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cyZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/toxins/storage) "cza" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/aft{name = "Aft Maintenance"}) "czb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6784,7 +6784,7 @@ "cAx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/genetics) "cAy" = (/obj/machinery/light_switch{pixel_x = 23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/medical/genetics) "cAz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/medical/genetics) -"cAA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -26},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cAA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -26},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cAB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft) "cAC" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/machinery/door_control{dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; pixel_x = 26; pixel_y = 6; req_one_access_txt = "29"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cAD" = (/obj/machinery/door_control{dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; pixel_x = -26; pixel_y = 6},/obj/machinery/light_switch{pixel_x = -23; pixel_y = -2},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/assembly/chargebay) @@ -6879,7 +6879,7 @@ "cCo" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor/preopen{id_tag = "toxins_blastdoor"; name = "biohazard containment door"},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cCp" = (/obj/structure/window/reinforced,/obj/item/target,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/toxins/test_area) "cCq" = (/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/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/weapon/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cCr" = (/obj/structure/stool,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) +"cCr" = (/obj/structure/stool,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "cCs" = (/obj/structure/stool,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "cCt" = (/obj/item/weapon/cigbutt,/obj/machinery/hologram/holopad,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "cCu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) @@ -6887,7 +6887,7 @@ "cCw" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/toxins/test_area) "cCx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) "cCy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cCz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) +"cCz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "cCA" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cCB" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Genetics"; opacity = 1; req_access_txt = "9"},/turf/simulated/floor{icon_state = "dark"},/area/medical/genetics) "cCC" = (/obj/structure/sign/directions/evac{pixel_y = 0},/turf/simulated/wall,/area/hallway/primary/aft) @@ -6896,7 +6896,7 @@ "cCF" = (/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "delivery"},/area/assembly/chargebay) "cCG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay) "cCH" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/chargebay) -"cCI" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/item/clothing/glasses/science,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cCI" = (/obj/structure/table,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/item/clothing/glasses/science,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cCJ" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door_control{id = "researchrangeshutters"; name = "Blast Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "0"},/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cCK" = (/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/power/apc{dir = 2; name = "Research Firing Range APC"; pixel_x = 0; pixel_y = -28},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cCL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/window{useFull = 1; tag = "fullWin"},/turf/simulated/floor/plating,/area/medical/medbay3{name = "Medbay Aft"}) @@ -6950,7 +6950,7 @@ "cDH" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cDI" = (/obj/machinery/alarm{pixel_y = 32},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cDJ" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft) -"cDK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) +"cDK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft) "cDL" = (/turf/simulated/wall/r_wall,/area/assembly/chargebay) "cDM" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/door/poddoor/preopen{id_tag = "toxins_blastdoor"; name = "biohazard containment door"},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cDN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/assembly/chargebay) @@ -6988,7 +6988,7 @@ "cEt" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cEu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cEv" = (/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) -"cEw" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/pen,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) +"cEw" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/pen,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cEx" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft) "cEy" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/assembly/robotics) "cEz" = (/obj/structure/filingcabinet/chestdrawer{pixel_x = -2; pixel_y = 2},/obj/machinery/door_control{dir = 2; id = "robotics"; name = "Shutter Control"; pixel_x = -26; pixel_y = 26},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/robotics) @@ -7136,7 +7136,7 @@ "cHl" = (/obj/structure/sink{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/virology) "cHm" = (/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{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/medical/virology) "cHn" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/iv_drip{density = 0},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) -"cHo" = (/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{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) +"cHo" = (/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{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) "cHp" = (/obj/structure/flora/kirbyplants{icon_state = "plant-21"; layer = 4.1; pixel_x = -3; pixel_y = 3; tag = "icon-plant-21"},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"}) "cHq" = (/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "cHr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) @@ -7297,7 +7297,7 @@ "cKq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/plating,/area/assembly/robotics) "cKr" = (/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cKs" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"cKt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) +"cKt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) "cKu" = (/turf/simulated/wall,/area/toxins/server{name = "\improper Research Division Server Room"}) "cKv" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "cKw" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) @@ -7338,7 +7338,7 @@ "cLf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Departure Lounge"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cLg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Departure Lounge"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cLh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Departure Lounge"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cLi" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/assembly/robotics) +"cLi" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/assembly/robotics) "cLj" = (/obj/machinery/optable{name = "Robotics Operating Table"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/camera{c_tag = "Robotics - Aft"; dir = 1; network = list("SS13","RD")},/turf/simulated/floor{dir = 1; icon_state = "whitehall"},/area/assembly/robotics) "cLk" = (/obj/machinery/computer/operating{name = "Robotics Operating Computer"},/turf/simulated/floor{dir = 1; icon_state = "whitehall"},/area/assembly/robotics) "cLl" = (/obj/structure/table,/obj/item/device/mmi,/obj/item/device/mmi,/obj/item/device/mmi,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/assembly/robotics) @@ -7368,7 +7368,7 @@ "cLJ" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/machinery/light{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 29},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cLK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cLL" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/machinery/camera{c_tag = "Virology - Break Room"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) -"cLM" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/table/glass,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/virology) +"cLM" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/table/glass,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/virology) "cLN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cLO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/aft{name = "Aft Maintenance"}) "cLP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -7472,11 +7472,11 @@ "cNL" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Aft Maintenance APC"; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cNM" = (/obj/machinery/door/poddoor/preopen{id_tag = "xeno_blastdoor"; name = "biohazard containment door"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "cNN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor/preopen{id_tag = "xeno_blastdoor"; name = "biohazard containment door"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) -"cNO" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/door/poddoor/preopen{id_tag = "xeno_blastdoor"; name = "biohazard containment door"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) +"cNO" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/door/poddoor/preopen{id_tag = "xeno_blastdoor"; name = "biohazard containment door"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "cNP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cNQ" = (/obj/structure/stool,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/camera{c_tag = "Aft Starboard Solar Maintenance"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cNR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cNS" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) +"cNS" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cNT" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless,/area/space) "cNU" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless,/area/space) "cNV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating/airless,/area/space) @@ -7666,7 +7666,7 @@ "cRx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/beacon,/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{id_tag = "escape_dock_north_airlock"; master_tag = "escape_dock"; pixel_y = 30; req_one_access_txt = "13"; tag_airpump = "escape_dock_north_pump"; tag_chamber_sensor = "escape_dock_north_sensor"; tag_exterior_door = "escape_dock_north_outer"; tag_interior_door = "escape_dock_north_inner"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.5-Escape2"; location = "9-Escape"},/obj/machinery/bot/secbot{auto_patrol = 1; health = 35; maxhealth = 35; name = "Inspector Johnson"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cRA" = (/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Aft"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/flora/kirbyplants{icon_state = "plant-16"; layer = 4.1; tag = "icon-plant-16"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cRA" = (/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Aft"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/flora/kirbyplants{icon_state = "plant-16"; layer = 4.1; tag = "icon-plant-16"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRB" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cRC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cRD" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/toxins/xenobiology{name = "\improper Secure Lab"}) @@ -7677,7 +7677,7 @@ "cRI" = (/obj/structure/closet/coffin,/turf/simulated/floor/plating,/area/chapel/main) "cRJ" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cRK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) -"cRL" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"cRL" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cRM" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cRN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cRO" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/centcom{name = "Funeral Parlour"; opacity = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) @@ -7722,13 +7722,13 @@ "cSB" = (/obj/structure/sign/vacuum{pixel_x = 32},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cSC" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cSD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cSE" = (/obj/structure/closet/l3closet/scientist,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cSE" = (/obj/structure/closet/l3closet/scientist,/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cSF" = (/obj/structure/closet/coffin,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/chapel/main) "cSG" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Chapel - Funeral Parlour"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cSH" = (/obj/machinery/camera{c_tag = "Chapel - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "cSI" = (/obj/item/device/flashlight/lantern{pixel_y = 7},/obj/structure/table/woodentable,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "cSJ" = (/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) -"cSK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) +"cSK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "cSL" = (/obj/machinery/door/airlock/external{name = "Departure Lounge Airlock"},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cSM" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 7},/obj/item/weapon/storage/box/syringes{pixel_y = 5},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cSN" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/structure/table/glass,/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker/large{pixel_x = -3; pixel_y = 3},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm index 525a3380fb1..eccc7eb637e 100644 --- a/_maps/map_files/MetaStation/z2.dmm +++ b/_maps/map_files/MetaStation/z2.dmm @@ -633,7 +633,7 @@ "mi" = (/turf/unsimulated/wall{tag = "icon-uranium2"; icon_state = "uranium2"},/area/wizard_station) "mj" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 10},/obj/item/device/multitool,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "mk" = (/obj/machinery/light/spot,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"ml" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"ml" = (/obj/item/device/radio/intercom/syndicate{name = "Syndicate Intercom"; pixel_y = -32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "mm" = (/obj/structure/closet/syndicate/personal,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "mn" = (/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "mo" = (/obj/machinery/vending/syndisnack,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) @@ -844,7 +844,7 @@ "ql" = (/turf/unsimulated/wall{tag = "icon-uranium12"; icon_state = "uranium12"},/area/wizard_station) "qm" = (/turf/unsimulated/wall{tag = "icon-uranium14"; icon_state = "uranium14"},/area/wizard_station) "qn" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Dooruranium.dmi'; name = "Break Room"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"qo" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"qo" = (/obj/item/device/radio/intercom/syndicate{name = "Syndicate Intercom"; pixel_x = -32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "qp" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{dir = 1; icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; tag = "icon-gravsnow_corner (WEST)"},/area/syndicate_mothership) "qq" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/bush,/turf/unsimulated/floor{dir = 1; icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; tag = "icon-gravsnow_corner (WEST)"},/area/syndicate_mothership) "qr" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership) diff --git a/_maps/map_files/MetaStation/z4.dmm b/_maps/map_files/MetaStation/z4.dmm index ee0a6ef0c4e..6219e21839c 100644 --- a/_maps/map_files/MetaStation/z4.dmm +++ b/_maps/map_files/MetaStation/z4.dmm @@ -31,7 +31,7 @@ "aE" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) "aF" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/djstation) "aG" = (/obj/machinery/door/airlock/glass{name = "Kitchen"},/turf/simulated/floor{icon_state = "cafeteria"},/area/djstation) -"aH" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; freerange = 1; listening = 1; name = "Pirate Radio Listening Channel"; pixel_x = 0},/turf/simulated/floor{icon_state = "cafeteria"},/area/djstation) +"aH" = (/obj/structure/table,/obj/item/device/radio/intercom/pirate{broadcasting = 0; dir = 8; listening = 1; name = "Pirate Radio Listening Channel"; pixel_x = 0},/turf/simulated/floor{icon_state = "cafeteria"},/area/djstation) "aI" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{icon_state = "cafeteria"},/area/djstation) "aJ" = (/obj/machinery/door/airlock/glass{name = "Rest Room"},/turf/simulated/floor{icon_state = "cafeteria"},/area/djstation) "aK" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) @@ -39,7 +39,7 @@ "aM" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "bar"},/area/djstation) "aN" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/djstation) "aO" = (/obj/structure/table,/turf/simulated/floor{icon_state = "cafeteria"},/area/djstation) -"aP" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; freerange = 1; listening = 0; name = "Pirate Radio Broadcast Channel"; pixel_x = 0},/turf/simulated/floor{icon_state = "cafeteria"},/area/djstation) +"aP" = (/obj/structure/table,/obj/item/device/radio/intercom/pirate{broadcasting = 1; dir = 8; listening = 0; name = "Pirate Radio Broadcast Channel"; pixel_x = 0},/turf/simulated/floor{icon_state = "cafeteria"},/area/djstation) "aQ" = (/obj/structure/table,/obj/item/weapon/paper/djstation,/turf/simulated/floor{icon_state = "cafeteria"},/area/djstation) "aR" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) "aS" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) diff --git a/_maps/map_files/MetaStation/z5.dmm b/_maps/map_files/MetaStation/z5.dmm index 2e5416fdcf2..476708e10d4 100644 --- a/_maps/map_files/MetaStation/z5.dmm +++ b/_maps/map_files/MetaStation/z5.dmm @@ -976,7 +976,7 @@ "sP" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "sQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "sR" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"sS" = (/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"sS" = (/obj/item/device/radio/intercom/locked/prison{dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "sT" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "sU" = (/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) "sV" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 1bb4ea02cf3..3777874cb91 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -124,7 +124,7 @@ "act" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Prisoner Transfer Center"; req_access = null; req_access_txt = "1"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"}) "acu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/permabrig) "acv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/permabrig) -"acw" = (/obj/item/weapon/secbot_assembly,/turf/simulated/floor/plating,/area/security/permabrig) +"acw" = (/obj/item/clothing/mask/muzzle/gag,/turf/simulated/floor/plating,/area/security/permabrig) "acx" = (/turf/simulated/wall/r_wall,/area/security/securearmoury) "acy" = (/obj/structure/grille,/obj/structure/sign/securearea{name = "\improper ARMORY"; pixel_y = 32},/turf/space,/area/space) "acz" = (/obj/structure/grille,/turf/space,/area/space) @@ -2487,6 +2487,7 @@ "aVQ" = (/turf/simulated/floor{dir = 2; icon_state = "asteroid"; tag = "icon-asteroid (NORTH)"},/turf/simulated/floor{tag = "icon-siding2 (NORTH)"; icon_state = "siding2"; dir = 1},/turf/simulated/floor{tag = "icon-siding1 (NORTH)"; icon_state = "siding1"; dir = 1},/area/hydroponics) "aVR" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Hydroponics Pasture"; req_access_txt = "35"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) "aVS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) +"aVT" = (/obj/machinery/conveyor{dir = 10; id = "garbage"; verted = -1},/turf/simulated/floor/plating,/area/maintenance/disposal) "aVU" = (/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) "aVV" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -31},/obj/machinery/light,/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) "aVW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) @@ -3193,7 +3194,7 @@ "bjv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/port) "bjw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "bjx" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plating,/area/maintenance/port) -"bjy" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) +"bjy" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/maintenance/disposal) "bjz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/blood/oil,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/port) "bjA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/port) "bjB" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/maintenance/port) @@ -3619,7 +3620,7 @@ "brF" = (/obj/structure/closet/crate/medical,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "brG" = (/obj/structure/closet/crate/internals,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "brH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) -"brI" = (/obj/machinery/conveyor{dir = 10; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) +"brI" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "brJ" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/quartermaster/office) "brK" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office) "brL" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office) @@ -3850,11 +3851,11 @@ "bwc" = (/obj/structure/reagent_dispensers/watertank,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "bwd" = (/obj/effect/decal/warning_stripes/north,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) "bwe" = (/obj/effect/decal/warning_stripes/north,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bwf" = (/turf/simulated/floor/plating,/area/maintenance/disposal) -"bwg" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bwh" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) -"bwi" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) -"bwj" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/maintenance/port) +"bwf" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) +"bwg" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) +"bwh" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/port) +"bwi" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) +"bwj" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) "bwk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/maintenance/port) "bwl" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/port) "bwm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/port) @@ -3944,7 +3945,7 @@ "bxS" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) "bxT" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry) "bxU" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor,/area/hallway/secondary/entry) -"bxV" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) +"bxV" = (/obj/machinery/light_switch{pixel_x = 30},/obj/machinery/camera{c_tag = "Disposals"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/blood/oil,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/disposal) "bxW" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology) "bxX" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Disposal Exit"; layer = 3; name = "Disposal Exit Vent"; opacity = 0},/turf/simulated/floor/plating,/area/maintenance/disposal) "bxY" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/aft) @@ -4040,7 +4041,7 @@ "bzK" = (/obj/machinery/driver_button{id_tag = "trash"; pixel_x = -26; pixel_y = -6},/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/disposal) "bzL" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) "bzM" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology) -"bzN" = (/obj/machinery/light_switch{pixel_x = 30},/obj/machinery/camera{c_tag = "Disposals"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/maintenance/disposal) +"bzN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) "bzO" = (/turf/space,/area/supply/station) "bzP" = (/obj/structure/barricade/wooden,/obj/structure/grille,/turf/simulated/floor/plating,/area/assembly/assembly_line) "bzQ" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/status_display/supply_display{pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage) @@ -4136,7 +4137,7 @@ "bBC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bBD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bBE" = (/obj/machinery/mass_driver{id_tag = "trash"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bBF" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/structure/closet,/turf/simulated/floor/plating,/area/maintenance/disposal) +"bBF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) "bBG" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/atmos/distribution) "bBH" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/atmos/distribution) "bBI" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area/medical/virology) @@ -6740,7 +6741,7 @@ "czG" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "czH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "czI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) -"czJ" = (/obj/machinery/light/small,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plating,/area/maintenance/disposal) +"czJ" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/structure/closet,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/maintenance/disposal) "czK" = (/obj/machinery/door/poddoor{id_tag = "trash"; name = "disposal bay door"; protected = 0},/turf/simulated/floor/plating/airless,/area/maintenance/disposal) "czL" = (/obj/structure/table/glass,/obj/item/weapon/restraints/handcuffs/cable/zipties,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "czM" = (/obj/item/device/radio/beacon,/turf/simulated/floor/engine,/area/toxins/test_chamber) @@ -6970,6 +6971,7 @@ "cEc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/wall,/area/medical/virology) "cEd" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/wall,/area/medical/virology) "cEe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Patient Isolation"; req_access_txt = "5"},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/virology) +"cEf" = (/obj/machinery/light/small,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) "cEg" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) "cEh" = (/obj/structure/table,/obj/item/weapon/storage/box/monkeycubes,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cEi" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/stack/sheet/mineral/plasma{amount = 5; layer = 2.9},/obj/machinery/media/receiver/boombox,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) @@ -8142,11 +8144,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPaaaaabaAvaIiboRboSboTbnqbmibmibmibmibnwboUboXboYboZboWboVbjlbjlbjlbpbbmebjlaZKaZKaZKaZKbkMbpcbpdbpaaZKbpfbpebkRbwqbpibmmbnzbpjbkRbmobpkbnBbnCbnCbplbpmbkXbpnbnHbmuaHVbppbpqbprbxfbptbpubnNbpvbjPbpwbnQblgbpxbpybpxblgbnQbpzblkbpAbnVbnVbnWbpBbnYbnVbpCbllbpDbocbocbodboebofbohbohbohbohbohbohbohbpEbohbohbohbohbohbohbpFbpGbpGbpGbpGbpGbpGbpGbpGbpGbpGbpGbpGbpGbpGbpHbpIbpJboEboEbpKbkobkobkobkobkobkpbkobkobkobkobkobkobkobkobkobkobkobkobpLbkobpMbpNaXOaXOaXOaXOaXOaXOaXObpOaFTaHPaFTaFTaFTaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPboPaHRaAvaAvbpQbpRbpSbpgbpSbpSbpSbpSbpUbpTbpWaZOaZObpVbpXbjlbkFbpYbpZbntbjlbqabsubqaaZKaZKaZKaZKbqcaZKbqdbrpbkRbqebqfbnzbqgbqhbkRbmobkXbqibnCbnCbnCbqjbkXbqkbnHbmuaHVbqmbpqbprbqnbqobpubnNbqpbjPbqqbqrblgbqsbqtbyibmEbqvczCbqxbqybqzbqAbqBbqCbqDbnVbqEbllbqFbqGbocbodboebofbohbqHbohbohbohbohbqIbqJbqJbqJbqJbqKbohbohbohbohbyzbohbqHbqMbohbqNbqObqPbohbqQbqRbqRbqSbqTbqUbqVbkobkobkobkobkobkobkobqWbyUbkobkobkobkobkobkobkobkobkobkobkobqZbrabrabrbbrcbrdbrebrfbrfbrfbrfbrgbrhaFTaabaaaaaaaabaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtdcdaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPboPbrjbrkbrlbrmbrnbpSbrsbrrbrwbrtbrAbpUbrBbrubrvbrvbrCbrxbjlbjlbjlbmdbrybmcaZOaZOaZOaZObrzbbKbbKbrpbbKbqdbrpbkRbrFbrEbrHbrGbmmbkRbrJbkXbrKbnCbnCbnCbrLaIgbrNbnHbrOblbbrPbrQbnLbnLbnLbnLbnNbrRbjPbrSbrTbjPbjPbjPbjPbjPbjPbjPblkbllbzabrVbrWbrXbrYbrZbsabllbsbbscbscbsdbsdbsdbsdbsdbsdbsdbsebsebsfbsgbshbshbsgbsfbsebsebsibsibsibsibsibsibsjbsjbskbsjbsjbsjbsjbsjbslbsmbsnbsobkobkobspbspbsqbsqbsqbsqbsqbsrbrabrabqZbrabkobrabrabrabrabssbstbstbstbstbsFbsvbsvbsvbsvbsvbsvbsvbsvbsvaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPboPaAvaAvaAvbpQbswbpSbrobrqbrqbrqbrIbpUbbKbdabsAbsBbsSbsCbjlbkFbsDbmdbsEbmcbsHbsGbujbsIbsJbsKbsKbsLbsKbsMbsNbkRbzcbsPbsQbsRbuqbrDbsTbkXbsUbnCbnCbsVbsWbsXbrNbnHbsYblbbsZbtabtbbtcbtdbApbtfblbblbbtgbthbtibtjbtkbtjbtlbthaaabtmbllbtnbtobtpbtqbrYbnVbtrbllbtsbttbtubsdbtvbtwbtxbtybtzbtAbtBbtCbtDbtEbtFbtFbtEbtGbtHbtIbsibtJbASbtKbtMbsibtNbtObtPbtQbtRbtSbtSbtTbslbtUbtVbtWbtXbtWbtYbtYbsqbtZbuabubbsqaImbudaImbsqbuebrabssbstaInbugaInbstbuhbuibstbuwbukbulbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPboPaAvaAvaAvbpQbswbpSbrobrqbrqbrqaVTbpUbbKbdabsAbsBbsSbsCbjlbkFbsDbmdbsEbmcbsHbsGbujbsIbsJbsKbsKbsLbsKbsMbsNbkRbzcbsPbsQbsRbuqbrDbsTbkXbsUbnCbnCbsVbsWbsXbrNbnHbsYblbbsZbtabtbbtcbtdbApbtfblbblbbtgbthbtibtjbtkbtjbtlbthaaabtmbllbtnbtobtpbtqbrYbnVbtrbllbtsbttbtubsdbtvbtwbtxbtybtzbtAbtBbtCbtDbtEbtFbtFbtEbtGbtHbtIbsibtJbASbtKbtMbsibtNbtObtPbtQbtRbtSbtSbtTbslbtUbtVbtWbtXbtWbtYbtYbsqbtZbuabubbsqaImbudaImbsqbuebrabssbstaInbugaInbstbuhbuibstbuwbukbulbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPaaabunaAvbuoblUbupbpSburbpSbutbrqbuybuubpUbuvbwHbuxbwcbsCbjlbjlbjlbjlbjlbjlbuzbuAbuBbuCbuDbkRbkRbkRbkRbkRbkRbkRbuEbkRbkRbkRbuFbkRbuGbuHbuIbnCbnCbnCbuJaIgbuKbnHbuLblbbuMbtablcblcblcblbbuNblbbuObuPbuQbuRbuSbuTbuUbuVbuWbuXbuYbllbAWbnVbvbbvabrYbvcbnVbllbvdbvebvfbsdbvgbvhbvibvjbvkbvlbvmbtFbtFbtFbtFbtFbtFbtFbtFbvobvpbvqbvrbvsbvtbsibvubvvbvwbvxbxqbvzbvvbEbbslbvAbtVbxtbvCbvDbvEbvEbvFbvGbvHbvIbvJbvKbvLbvMbsqbvNbvObvPbstbvQbvRbvSbvTbvTbBcbstbvVbvWbvXbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIfazEaBmaBmaAvaAvaAvaAvaAvaAvaAvaGTbwabBnbpSbsxaIhbwebwdbwdbwgbwibwhbjybjybxVbwjbrvbrvbrvbrvbrvbrvbwkbwlbwlbwmbwnbkRbwobDsbBVbwrbwsbwtbwubwvbkRbwwbwxbwybsTaIgbuIbnCbnCbwzbkXbkXbwAbwBbwCbwDbwEbwFbwGbzDbwIbwJbwKbwLbwMbwNbuWbwObwPbwObwPbwQbuWbuXbwRbwSbwTbwUbwVbwWbwXbwYbwZbwSbxabttbttbsdbxbbxcbxdbxebCbbsdbvmbtFbtFbtFbtFbtFbtFbtFbvnbxhbxibxjbxkbvqbxlbsibxmbxnbxobvxbEbbvzbxpbTrbslbxrbxsbEybxubxubxvbxwbxxbxybxzbxzbxzbxAbxzbxBbxCbxDbxEbxFbxGbxHbxIbxJbxJbxJbxKbstbxLbvWbxMbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAvbxObxPbxQbxRbxSbxSbxTbxUaFzbpSbxXbpSbzKbwfbwfbzNbpSaZOaJkaJkbyabybbyabyabyabybbyaaZOaZObkRbkRbkRbycbkRbydbydbydbydbydbydbwubyeaJlbygbyhbCvbyjbykbylbymbynbyobypbyqbyrbysbytbyubyvbyvbywbyxbyybEabyAbyBbyCbyDbthbyEbuUbyFbuSbyGbthaaabyHbyIbyJbyKbyIbyIbyIbyIbyLbllbyMbttbyNbyObyPbyQbyRbySbyTbsdbFFbyVbyWbyXbyYbyZbFKbzbbtFbFXbsibzdbxkbzebzfbsibzgbzhbvwbvxbEbbvzbvvbEbbslbvAbtVbzibzjbzkbzlbzmaJmbzobzpbzqbzrbzsbztbzubsqbzvbzwbzxbstbzybzzbzAbvTbzBbzCbstbxLbvWbAhbumaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAvbzEbzFbzGaFyaFybzHbzIaFybzJbpSbBEaIhbusbwfczJbBFbpSaaaaabaabbzObzObzObzObzObzObzOaaaaaaaKcbzQbzRbzSbzTbydbydbydbydbydbydbzUbzVbzWbzXbzYbzZbAaaKdbkXbkXbAcbBWbkXbkXbAdbAebAfbAgbBubAibAibAjbAibAkbAlbAmbAnbyDbthbAobtjbtjbtjbHlbthaaabyHbyIbAqbArbAsbAtbAubAvbAwbAxbAybttbAzbsdbtvbAAbABbACbADbAEbAFbAGbAHbAIbAJbAKbALbAMbANbAObAPbAQbxkbARbISbsibATbAUbAVbKubAXbAYbAZbtTbslbBabBbbKNbBdbBdbBebBfaKjbBhbBibBjbBkbBlbBmbLIbsqbBobzwbBpbstbBqbBrbBsbvTbvTbBtbstbvVbvWbEGbumaaaaaaaaaaaaaabbBvbBwbBxbBwbBxbBwbByaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIfazEaBmaBmaAvaAvaAvaAvaAvaAvaAvaGTbwabBnbpSbsxaIhbwebwdbwdbjybwfbrIbwgbwgbwibwhbrvbrvbrvbrvbrvbrvbwkbwlbwlbwmbwnbkRbwobDsbBVbwrbwsbwtbwubwvbkRbwwbwxbwybsTaIgbuIbnCbnCbwzbkXbkXbwAbwBbwCbwDbwEbwFbwGbzDbwIbwJbwKbwLbwMbwNbuWbwObwPbwObwPbwQbuWbuXbwRbwSbwTbwUbwVbwWbwXbwYbwZbwSbxabttbttbsdbxbbxcbxdbxebCbbsdbvmbtFbtFbtFbtFbtFbtFbtFbvnbxhbxibxjbxkbvqbxlbsibxmbxnbxobvxbEbbvzbxpbTrbslbxrbxsbEybxubxubxvbxwbxxbxybxzbxzbxzbxAbxzbxBbxCbxDbxEbxFbxGbxHbxIbxJbxJbxJbxKbstbxLbvWbxMbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAvbxObxPbxQbxRbxSbxSbxTbxUaFzbpSbxXbpSbzKbwjbzNbxVbpSaZOaJkaJkbyabybbyabyabyabybbyaaZOaZObkRbkRbkRbycbkRbydbydbydbydbydbydbwubyeaJlbygbyhbCvbyjbykbylbymbynbyobypbyqbyrbysbytbyubyvbyvbywbyxbyybEabyAbyBbyCbyDbthbyEbuUbyFbuSbyGbthaaabyHbyIbyJbyKbyIbyIbyIbyIbyLbllbyMbttbyNbyObyPbyQbyRbySbyTbsdbFFbyVbyWbyXbyYbyZbFKbzbbtFbFXbsibzdbxkbzebzfbsibzgbzhbvwbvxbEbbvzbvvbEbbslbvAbtVbzibzjbzkbzlbzmaJmbzobzpbzqbzrbzsbztbzubsqbzvbzwbzxbstbzybzzbzAbvTbzBbzCbstbxLbvWbAhbumaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAvbzEbzFbzGaFyaFybzHbzIaFybzJbpSbBEaIhbusbBFcEfczJbpSaaaaabaabbzObzObzObzObzObzObzOaaaaaaaKcbzQbzRbzSbzTbydbydbydbydbydbydbzUbzVbzWbzXbzYbzZbAaaKdbkXbkXbAcbBWbkXbkXbAdbAebAfbAgbBubAibAibAjbAibAkbAlbAmbAnbyDbthbAobtjbtjbtjbHlbthaaabyHbyIbAqbArbAsbAtbAubAvbAwbAxbAybttbAzbsdbtvbAAbABbACbADbAEbAFbAGbAHbAIbAJbAKbALbAMbANbAObAPbAQbxkbARbISbsibATbAUbAVbKubAXbAYbAZbtTbslbBabBbbKNbBdbBdbBebBfaKjbBhbBibBjbBkbBlbBmbLIbsqbBobzwbBpbstbBqbBrbBsbvTbvTbBtbstbvVbvWbEGbumaaaaaaaaaaaaaabbBvbBwbBxbBwbBxbBwbByaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBzaAvbBAbBAaMWaAvaAvaIfazEbBDbBCbpSczKaIhaIhaIhbpSbpSbpSaaaaaaaaabzObzObzObzObzObzObzOaaaaaaaKcbBJbydbBKbBLbBLbBLbBLbBLbBMbBNbBLbBObBPbBQbBRbBSbBTbBUbkXbMbbnCbKebBXaIgbBZbCabNYbAgbAgbAmbCcbCdbCebCfbCgbAmbtgbyDbthaNIaPwbCjaRvaPAbthaaabCmbyIbCnbCobCpbCqbCrbCqbCsbCtbCubttbOJbsdaSVaSOaSObCzbCAbCBbCCbCDbCEbCFbCGbCGbCHbCIbCJbCKbsibAQbCLaSXbsibsibsjbCNbCObCPbsjbslbslbslbCQbCRbtVbCSbzjbzkbCTbBdaKjbCVbCWbCWbCXbvIbCYbCZbDabDbbvObDcbstbDdbDebvTbDfbDgbDhbstbxLbDibumbumaaaaaaaaaaaaaabbDjbDkbDlbDmbDnbDobDjaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDpbDpbDpbDpbDpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzObzObzObzObzObzObzOaSZaKcaKcbDubDvbDwbDxbDxbDxbDvbydbwubyebydbydaJlbDybDzbDAbDBbDCbDDbDEbnCbnCbDFaIgbBZbCabDHbDIbDJbDKbDLbDMbDNbDObDPbAmbDQbDRbuQbDSbDTbDUbDVbDWbuWbuXbDXbyIbDYbDZbOTbCqbTFbCqbEcbCtbEdbttbEebsdbEfbEgbEhbEibEjbEkbElbEmbEnbEnaTabEpbEnbEnbEqbErbEsbEtbEubEvbEwbExbEAbEzbEEbEBbECbEDbEFbHTbEYbEHbtVbEIbEJbEKbELbEMbvFbENbCWbCWbEObEPbCYbEQbsqbERbERbESbstbETbEUcHibEWbvTbEXbstbxLbHVbumaaaaaaaaaaaaaaaaabbEZbFabDlbDnbDlbFbbBxaabaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDpbDpbDpbDpbDpbDpbDpaaaaaaaaaaaaaaaaaaaaaaaaaaabDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzObzObzObzObzObzObzObFcbFdbFcbFebFfbFgbFfbFfbFfbFfbFhbwubyebFibkRbkRbFjbnCbyhbDBbFkaIgbFmbFnbFnbFobFpbFqbFrbFsaTbbFuaTcbFwbFxbFybFzbFAbAmbAnbyDbthbFBbFCbFDbFEbPgbthaaabCmbFGbFHbFGbFGbFGbFGbFGbFIbFGbFJbttbEebsdbPUbFLbFLbFMbFNbCBbFObFPaTebFRbFSbFTbFUaTebFVbFWbPVbFYbFZbGabGbbGbbGcbGdbGebGfbGgbGhbGjbGibGkbGlbGmbGnbGnbGobGpbGqbvFbGrbvIbvIbGsbGtbCYbGubGvbGwbGxbGybGzbGAaTnaTfbGDaTfbstbstbGFbDbbDbaToaToaToaToaTobDbbDjbDnbDlbDnbDnbGJbDjaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index fdee2b259c3..8ffe65bf82c 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -1539,7 +1539,7 @@ "DE" = (/obj/structure/rack,/obj/item/clothing/head/helmet/space/rig/wizard{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/helmet/space/rig/syndi,/obj/item/clothing/head/helmet/space/santahat{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "DF" = (/obj/structure/rack,/obj/item/clothing/head/welding/fluff/alice_mccrea_1{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/welding/fluff/norah_briggs_1,/obj/item/clothing/head/welding/fluff/yuki_matsuda_1{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "DG" = (/obj/structure/rack,/obj/item/clothing/head/soft/black{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/soft/blue,/obj/item/clothing/head/soft/red{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DH" = (/obj/structure/rack,/obj/item/weapon/storage/backpack/holding,/obj/item/weapon/storage/backpack/duffel/clown,/obj/item/weapon/storage/backpack/duffel/captain,/obj/item/weapon/storage/backpack/duffel/science,/obj/item/weapon/storage/backpack/duffel/syndiammo,/obj/item/weapon/storage/backpack/duffel/syndimed,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"DH" = (/obj/structure/rack,/obj/item/weapon/storage/backpack/holding,/obj/item/weapon/storage/backpack/duffel/clown,/obj/item/weapon/storage/backpack/duffel/captain,/obj/item/weapon/storage/backpack/duffel/science,/obj/item/weapon/storage/backpack/duffel/syndie/ammo,/obj/item/weapon/storage/backpack/duffel/syndie/med,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "DI" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (WEST)"},/area/admin) "DJ" = (/obj/structure/rack,/obj/item/clothing/under/shorts/black{pixel_x = -3; pixel_y = 3},/obj/item/clothing/under/shorts/blue,/obj/item/clothing/under/shorts/red{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "DK" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) @@ -2071,3 +2071,4 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN "} + diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index f797c520522..031c8a12f60 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -137,7 +137,7 @@ //transfer_ai() defines. Main proc in ai_core.dm #define AI_TRANS_TO_CARD 1 //Downloading AI to InteliCard. #define AI_TRANS_FROM_CARD 2 //Uploading AI from InteliCard -#define AI_MECH_HACK 3 //Malfunctioning AI hijacking mecha +#define AI_MECH_HACK 3 //Malfunctioning AI hijacking mecha //singularity defines #define STAGE_ONE 1 @@ -154,4 +154,17 @@ #define END_FOR_DVIEW dview_mob.loc = null #define MIN_SUPPLIED_LAW_NUMBER 15 -#define MAX_SUPPLIED_LAW_NUMBER 50 \ No newline at end of file +#define MAX_SUPPLIED_LAW_NUMBER 50 + +//Material defines +#define MAT_METAL "$metal" +#define MAT_GLASS "$glass" +#define MAT_SILVER "$silver" +#define MAT_GOLD "$gold" +#define MAT_DIAMOND "$diamond" +#define MAT_URANIUM "$uranium" +#define MAT_PLASMA "$plasma" +#define MAT_BANANIUM "$bananium" + +#define MAX_STACK_SIZE 50 +//The maximum size of a stack object. \ No newline at end of file diff --git a/code/__DEFINES/mob.dm b/code/__DEFINES/mob.dm index 0080658562b..8779d6e8860 100644 --- a/code/__DEFINES/mob.dm +++ b/code/__DEFINES/mob.dm @@ -91,3 +91,9 @@ #define APPEARANCE_EYE_COLOR 256 #define APPEARANCE_ALL_HAIR APPEARANCE_HAIR|APPEARANCE_HAIR_COLOR|APPEARANCE_FACIAL_HAIR|APPEARANCE_FACIAL_HAIR_COLOR #define APPEARANCE_ALL 511 + +// Intents +#define I_HELP "help" +#define I_DISARM "disarm" +#define I_GRAB "grab" +#define I_HARM "harm" \ No newline at end of file diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index c69742b94c8..a81a99c540b 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -12,6 +12,10 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear, underwear_list, underwear_m, underwear_f) //undershirt init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, undershirt_list, undershirt_m, undershirt_f) + //socks + init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, socks_list, socks_m, socks_f) + + var/list/paths //Surgery Steps - Initialize all /datum/surgery_step into a list diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 871c06a58fe..5f4be64c9db 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -583,4 +583,3 @@ proc/dd_sortedObjectList(list/incoming) /datum/alarm/dd_SortValue() return "[sanitize(last_name)]" - \ No newline at end of file diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 619716363f9..fe27e399c84 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -10,6 +10,12 @@ if(FEMALE) return pick(undershirt_f) else return pick(undershirt_list) +/proc/random_socks(gender) + switch(gender) + if(MALE) return pick(socks_m) + if(FEMALE) return pick(socks_f) + else return pick(socks_list) + proc/random_hair_style(var/gender, species = "Human") var/h_style = "Bald" diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 21556d80c81..d399cd3de67 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -373,9 +373,8 @@ Turf and target are seperate in case you want to teleport some distance from a t var/mob/living/silicon/robot/R = src if(oldname != real_name) R.notify_ai(3, oldname, newname) - if(R.camera) - R.camera.c_tag = real_name - + R.custom_name = newname + R.updatename() if(oldname) //update the datacore records! This is goig to be a bit costly. for(var/list/L in list(data_core.general,data_core.medical,data_core.security,data_core.locked)) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 882331d21de..516ae5630f9 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -15,6 +15,10 @@ var/global/list/underwear_f = list() //stores only underwear name var/global/list/undershirt_list = list() //stores /datum/sprite_accessory/undershirt indexed by name var/global/list/undershirt_m = list() //stores only undershirt name var/global/list/undershirt_f = list() //stores only undershirt name + //Socks +var/global/list/socks_list = list() //stores /datum/sprite_accessory/socks indexed by name +var/global/list/socks_m = list() //stores only socks name +var/global/list/socks_f = list() //stores only socks name //Backpacks var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt") diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 2a227db446f..5c05e27b3c6 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -167,10 +167,10 @@ animals lunging, etc. */ /mob/proc/RangedAttack(var/atom/A, var/params) - if(ishuman(src) && (istype(src:gloves, /obj/item/clothing/gloves/color/yellow/power)) && a_intent == "harm") + if(ishuman(src) && (istype(src:gloves, /obj/item/clothing/gloves/color/yellow/power)) && a_intent == I_HARM) PowerGlove(A) if(!mutations.len) return - if((LASER in mutations) && a_intent == "harm") + if((LASER in mutations) && a_intent == I_HARM) LaserEyes(A) // moved into a proc below return else diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 3de689430a6..ebeeb392aac 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -333,16 +333,16 @@ if("act_intent") usr.a_intent_change("right") if("help") - usr.a_intent = "help" + usr.a_intent = I_HELP usr.hud_used.action_intent.icon_state = "intent_help" if("harm") - usr.a_intent = "harm" + usr.a_intent = I_HARM usr.hud_used.action_intent.icon_state = "intent_harm" if("grab") - usr.a_intent = "grab" + usr.a_intent = I_GRAB usr.hud_used.action_intent.icon_state = "intent_grab" if("disarm") - usr.a_intent = "disarm" + usr.a_intent = I_DISARM usr.hud_used.action_intent.icon_state = "intent_disarm" if("pull") @@ -378,7 +378,7 @@ if(isrobot(usr)) var/mob/living/silicon/robot/R = usr R.sensor_mode() - + if("Toggle Headlamp") if(isrobot(usr)) var/mob/living/silicon/robot/R = usr diff --git a/code/_onclick/oldcode.dm b/code/_onclick/oldcode.dm index 954d2eac3fd..17fb1005fa6 100644 --- a/code/_onclick/oldcode.dm +++ b/code/_onclick/oldcode.dm @@ -347,7 +347,7 @@ src.hand_al(usr, usr.hand) else // ------- YOU ARE CLICKING ON AN OBJECT THAT'S INACCESSIBLE TO YOU AND IS NOT YOUR HUD ------- - if((LASER in usr:mutations) && usr:a_intent == "harm" && world.time >= usr.next_move) + if((LASER in usr:mutations) && usr:a_intent == I_HARM && world.time >= usr.next_move) // ------- YOU HAVE THE LASER MUTATION, YOUR INTENT SET TO HURT AND IT'S BEEN MORE THAN A DECISECOND SINCE YOU LAS TATTACKED ------- var/turf/T = get_turf(usr) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 921fb8e818e..974025dbc1b 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -30,7 +30,7 @@ /mob/living/carbon/human/RangedAttack(var/atom/A) if(!gloves && !mutations.len) return var/obj/item/clothing/gloves/G = gloves - if((LASER in mutations) && a_intent == "harm") + if((LASER in mutations) && a_intent == I_HARM) LaserEyes(A) // moved into a proc below else if(istype(G) && G.Touch(A,0)) // for magic gloves diff --git a/code/datums/material_container.dm b/code/datums/material_container.dm new file mode 100644 index 00000000000..56750520095 --- /dev/null +++ b/code/datums/material_container.dm @@ -0,0 +1,249 @@ +/* + This datum should be used for handling mineral contents of machines and whatever else is supposed to hold minerals and make use of them. + + Variables: + amount - raw amount of the mineral this container is holding, calculated by the defined value MINERAL_MATERIAL_AMOUNT=2000. + max_amount - max raw amount of mineral this container can hold. + sheet_type - type of the mineral sheet the container handles, used for output. + owner - object that this container is being used by, used for output. + MAX_STACK_SIZE - size of a stack of mineral sheets. Constant. +*/ + +/datum/material_container + var/total_amount = 0 + var/max_amount + var/sheet_type + var/obj/owner + var/list/materials = list() + //MAX_STACK_SIZE = 50 + //MINERAL_MATERIAL_AMOUNT = 2000 + +/datum/material_container/New(obj/O, list/mat_list, max_amt = 0) + owner = O + max_amount = max(0, max_amt) + + if(mat_list[MAT_METAL]) + materials[MAT_METAL] = new /datum/material/metal() + if(mat_list[MAT_GLASS]) + materials[MAT_GLASS] = new /datum/material/glass() + if(mat_list[MAT_SILVER]) + materials[MAT_SILVER] = new /datum/material/silver() + if(mat_list[MAT_GOLD]) + materials[MAT_GOLD] = new /datum/material/gold() + if(mat_list[MAT_DIAMOND]) + materials[MAT_DIAMOND] = new /datum/material/diamond() + if(mat_list[MAT_URANIUM]) + materials[MAT_URANIUM] = new /datum/material/uranium() + if(mat_list[MAT_PLASMA]) + materials[MAT_PLASMA] = new /datum/material/plasma() + if(mat_list[MAT_BANANIUM]) + materials[MAT_BANANIUM] = new /datum/material/bananium() + +/datum/material_container/Destroy() + owner = null + return ..() + +//For inserting an amount of material +/datum/material_container/proc/insert_amount(amt, material_type = null) + if(amt > 0 && has_space(amt)) + var/total_amount_saved = total_amount + if(material_type) + for(var/datum/material/M in materials) + if(M.material_type == material_type) + M.amount += amt + total_amount += amt + else + for(var/datum/material/M in materials) + M.amount += amt + total_amount += amt + return (total_amount - total_amount_saved) + return 0 + +/datum/material_container/proc/insert_stack(obj/item/stack/S, amt = 0) + if(!amt) + amt = S.amount + var/material_amt = get_item_material_amount(S) + amt = min(amt, round(((max_amount - total_amount) / material_amt))) + if(!amt) + return 0 + + insert_materials(S,amt) + S.use(amt) + return amt + +/datum/material_container/proc/insert_item(obj/item/I, multiplier = 1) + if(!I) + return 0 + if(istype(I,/obj/item/stack)) + return insert_stack(I) + + var/material_amount = get_item_material_amount(I) + if(!material_amount || !has_space(material_amount)) + return 0 + + insert_materials(I, multiplier) + return material_amount + +/datum/material_container/proc/insert_materials(obj/item/I, multiplier = 1) //for internal usage only + var/datum/material/M + for(var/MAT in materials) + M = materials[MAT] + M.amount += I.materials[MAT] * multiplier + total_amount += I.materials[MAT] * multiplier + +//For consuming material +//mats is a list of types of material to use and the corresponding amounts, example: list(MAT_METAL=100, MAT_GLASS=200) +/datum/material_container/proc/use_amount(list/mats) + if(!mats || !mats.len) + return 0 + + var/datum/material/M + for(var/MAT in materials) + M = materials[MAT] + if(M.amount < mats[MAT]) + return 0 + + var/total_amount_save = total_amount + for(var/MAT in materials) + M = materials[MAT] + M.amount -= mats[MAT] + total_amount -= mats[MAT] + + return total_amount_save - total_amount + + +/datum/material_container/proc/use_amount_type(amt, material_type) + var/datum/material/M + M = materials[material_type] + if(M) + if(M.amount >= amt) + M.amount -= amt + total_amount -= amt + return amt + return 0 + +//For spawning mineral sheets; internal use only +/datum/material_container/proc/retrieve(sheet_amt, datum/material/M) + if(sheet_amt > 0 && M.amount >= (sheet_amt * MINERAL_MATERIAL_AMOUNT)) + var/count = 0 + + while(sheet_amt > MAX_STACK_SIZE) + new M.sheet_type(get_turf(owner), MAX_STACK_SIZE) + count += MAX_STACK_SIZE + use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.material_type) + sheet_amt -= MAX_STACK_SIZE + + if(round(M.amount / MINERAL_MATERIAL_AMOUNT)) + new M.sheet_type(get_turf(owner), sheet_amt) + count += sheet_amt + use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.material_type) + return count + return 0 + +/datum/material_container/proc/retrieve_sheets(sheet_amt, material_type) + if(materials[material_type]) + return retrieve(sheet_amt, materials[material_type]) + return 0 + +/datum/material_container/proc/retrieve_amount(amt, material_type) + return retrieve_sheets(amount2sheet(amt),material_type) + +/datum/material_container/proc/retrieve_all() + var/result = 0 + var/datum/material/M + for(var/MAT in materials) + M = materials[MAT] + result += retrieve_sheets(amount2sheet(M.amount), MAT) + return result + +/datum/material_container/proc/has_space(amt = 0) + return (total_amount + amt) <= max_amount + +/datum/material_container/proc/amount2sheet(amt) + if(amt >= MINERAL_MATERIAL_AMOUNT) + return round(amt / MINERAL_MATERIAL_AMOUNT) + return 0 + +/datum/material_container/proc/sheet2amount(sheet_amt) + if(sheet_amt > 0) + return sheet_amt * MINERAL_MATERIAL_AMOUNT + return 0 + +/datum/material_container/proc/amount(material_type) + var/datum/material/M = materials[material_type] + return M ? M.amount : 0 + +/datum/material_container/proc/can_insert(obj/item/I) + return get_item_material_amount(I) + +//returns the amount of material relevant to this container; +//if this container does not support glass, any glass in 'I' will not be taken into account +/datum/material_container/proc/get_item_material_amount(obj/item/I) + if(!istype(I)) + return 0 + var/material_amount = 0 + for(var/MAT in materials) + material_amount += I.materials[MAT] + return material_amount + + +/datum/material + var/amount = 0 + var/material_type = null + var/sheet_type = null + +/datum/material/metal + +/datum/material/metal/New() + ..() + material_type = MAT_METAL + sheet_type = /obj/item/stack/sheet/metal + +/datum/material/glass + +/datum/material/glass/New() + ..() + material_type = MAT_GLASS + sheet_type = /obj/item/stack/sheet/glass + +/datum/material/silver + +/datum/material/silver/New() + ..() + material_type = MAT_SILVER + sheet_type = /obj/item/stack/sheet/mineral/silver + +/datum/material/gold + +/datum/material/gold/New() + ..() + material_type = MAT_GOLD + sheet_type = /obj/item/stack/sheet/mineral/gold + +/datum/material/diamond + +/datum/material/diamond/New() + ..() + material_type = MAT_DIAMOND + sheet_type = /obj/item/stack/sheet/mineral/diamond + +/datum/material/uranium + +/datum/material/uranium/New() + ..() + material_type = MAT_URANIUM + sheet_type = /obj/item/stack/sheet/mineral/uranium + +/datum/material/plasma + +/datum/material/plasma/New() + ..() + material_type = MAT_PLASMA + sheet_type = /obj/item/stack/sheet/mineral/plasma + +/datum/material/bananium + +/datum/material/bananium/New() + ..() + material_type = MAT_BANANIUM + sheet_type = /obj/item/stack/sheet/mineral/bananium \ No newline at end of file diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index ac914c9d3f6..f6101b6dcd2 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -165,7 +165,7 @@ var/list/uplink_items = list() desc = "A radiation laser concealed inside of a Health Analyser. After a moderate delay, causes temporary collapse and radiation. Has adjustable controls, but will not function as a regular health analyser, only appears like one. May not function correctly on radiation resistant humanoids!" reference = "RL" item = /obj/item/device/rad_laser - cost = 6 + cost = 5 job = list( "Chief Medical Officer", "Medical Doctor", @@ -327,6 +327,14 @@ var/list/uplink_items = list() gamemodes = list("nuclear emergency") surplus = 35 +/datum/uplink_item/ammo/bioterror + name = "Box of Bioterror Syringes" + desc = "A box full of preloaded syringes, containing various chemicals that seize up the victim's motor and broca system , making it impossible for them to move or speak while in their system." + reference = "BTS" + item = /obj/item/weapon/storage/box/syndie_kit/bioterror + cost = 6 + gamemodes = list("nuclear emergency") + /datum/uplink_item/dangerous/tabungrenades name = "Tabun Gas Grenades" desc = "A box of four (4) grenades filled with Tabun, a deadly neurotoxin. Use extreme caution when handling and be sure to vacate the premise after using; ensure communication is maintained with team to avoid accidental gassings." @@ -412,11 +420,27 @@ var/list/uplink_items = list() cost = 2 gamemodes = list("nuclear emergency") +/datum/uplink_item/ammo/ammobag + name = "Ammo Duffelbag - Shotgun Ammo Grab Bag" + desc = "A duffelbag filled with Bulldog ammo to kit out an entire team, at a discounted price." + reference = "SAGL" + item = /obj/item/weapon/storage/backpack/duffel/syndie/ammo/loaded + cost = 10 //bulk buyer's discount. Very useful if you're buying a mech and dont have TC left to buy people non-shotgun guns + gamemodes = list("nuclear emergency") + +/datum/uplink_item/ammo/bullslug + name = "Drum Magazine - 12g Slugs" + desc = "An additional 8-round slug magazine for use in the Bulldog shotgun. Now 8 times less likely to shoot your pals." + reference = "12BSG" + item = /obj/item/ammo_box/magazine/m12g + cost = 2 + gamemodes = list("nuclear emergency") + /datum/uplink_item/ammo/bullbuck name = "Drum Magazine - 12g buckshot" desc = "An additional 8-round buckshot magazine for use in the Bulldog shotgun. Front towards enemy." reference = "12BS" - item = /obj/item/ammo_box/magazine/m12g + item = /obj/item/ammo_box/magazine/m12g/buckshot cost = 2 gamemodes = list("nuclear emergency") @@ -433,7 +457,7 @@ var/list/uplink_items = list() desc = "An alternative 8-round dragon's breath magazine for use in the Bulldog shotgun. I'm a fire starter, twisted fire starter!" reference = "12DB" item = /obj/item/ammo_box/magazine/m12g/dragon - cost = 3 + cost = 2 gamemodes = list("nuclear emergency") /datum/uplink_item/ammo/car @@ -509,7 +533,7 @@ var/list/uplink_items = list() desc = "A pizza box with a bomb taped inside of it. The timer needs to be set by opening the box; afterwards, opening the box again will trigger the detonation." reference = "PB" item = /obj/item/device/pizza_bomb - cost = 4 + cost = 5 surplus = 8 /datum/uplink_item/stealthy_weapons/dehy_carp @@ -529,7 +553,7 @@ var/list/uplink_items = list() desc = "A jumpsuit used to imitate the uniforms of Nanotrasen crewmembers." reference = "CJ" item = /obj/item/clothing/under/chameleon - cost = 4 + cost = 2 /datum/uplink_item/stealthy_tools/chameleon_stamp name = "Chameleon Stamp" @@ -540,26 +564,34 @@ var/list/uplink_items = list() cost = 1 surplus = 35 -/datum/uplink_item/stealthy_tools/syndigolashes +/datum/uplink_item/stealthy_tools/syndigaloshes name = "No-Slip Syndicate Shoes" desc = "These allow you to run on wet floors. They do not work on lubricated surfaces." reference = "NSSS" item = /obj/item/clothing/shoes/syndigaloshes - cost = 4 + cost = 2 + excludefrom = list("nuclear emergency") + +/datum/uplink_item/stealthy_tools/syndigaloshes/nuke + name = "Tactical No-Slip Brown Shoes" + desc = "These allow you to run on wet floors. They do not work on lubricated surfaces, and the maker swears they're better than normal ones, somehow." + reference = "NNSSS" + cost = 4 //but they aren't + gamemodes = list("nuclear emergency") /datum/uplink_item/stealthy_tools/agent_card name = "Agent ID Card" desc = "Agent cards prevent artificial intelligences from tracking the wearer, and can copy access from other identification cards. The access is cumulative, so scanning one card does not erase the access gained from another." reference = "AIDC" item = /obj/item/weapon/card/id/syndicate - cost = 3 + cost = 2 /datum/uplink_item/stealthy_tools/voice_changer name = "Voice Changer" desc = "A conspicuous gas mask that mimics the voice named on your identification card. When no identification is worn, the mask will render your voice unrecognisable." reference = "VC" item = /obj/item/clothing/mask/gas/voice - cost = 5 + cost = 3 /datum/uplink_item/stealthy_tools/chameleon_proj name = "Chameleon-Projector" @@ -570,10 +602,10 @@ var/list/uplink_items = list() /datum/uplink_item/stealthy_tools/camera_bug name = "Camera Bug" - desc = "Enables you to bug cameras to view them remotely. Adding particular items to it alters its functions." + desc = "Enables you to view all cameras on the network and track a target. Bugging cameras allows you to disable them remotely." reference = "CB" item = /obj/item/device/camera_bug - cost = 2 + cost = 1 surplus = 90 /datum/uplink_item/stealthy_tools/dnascrambler @@ -611,6 +643,20 @@ var/list/uplink_items = list() item = /obj/item/weapon/storage/toolbox/syndicate cost = 1 +/datum/uplink_item/device_tools/surgerybag + name = "Syndicate Surgery Dufflebag" + desc = "The Syndicate surgery dufflebag is a toolkit containing all surgery tools, a straitjacket, and a muzzle." + reference = "SSDB" + item = /obj/item/weapon/storage/backpack/duffel/syndie/surgery + cost = 4 + +/datum/uplink_item/device_tools/military_belt + name = "Military Belt" + desc = "A robust seven-slot red belt made for carrying a broad variety of weapons, ammunition and explosives" + reference = "SBM" + item = /obj/item/weapon/storage/belt/military + cost = 3 + excludefrom = list("nuclear emergency") /datum/uplink_item/device_tools/medkit name = "Syndicate Combat Medic Kit" @@ -621,19 +667,12 @@ var/list/uplink_items = list() cost = 9 gamemodes = list("nuclear emergency") -/datum/uplink_item/badass/syndiecigs - name = "Syndicate Smokes" - desc = "Strong flavor, dense smoke, infused with omnizine." - reference = "SYSM" - item = /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate - cost = 4 - /datum/uplink_item/device_tools/space_suit name = "Space Suit" desc = "The red and black syndicate space suit is less encumbering than Nanotrasen variants, fits inside bags, and has a weapon slot. Nanotrasen crewmembers are trained to report red space suit sightings." reference = "SS" item = /obj/item/weapon/storage/box/syndie_kit/space - cost = 5 + cost = 4 /datum/uplink_item/device_tools/hardsuit name = "Blood-red Hardsuit" @@ -680,7 +719,7 @@ var/list/uplink_items = list() These reverse-engineered knockoffs of Nanotrasen's 'Advanced Magboots' slow you down in simulated-gravity environments much like the standard issue variety." reference = "BRMB" item = /obj/item/clothing/shoes/magboots/syndie - cost = 5 + cost = 3 gamemodes = list("nuclear emergency") /datum/uplink_item/device_tools/plastic_explosives @@ -807,6 +846,13 @@ var/list/uplink_items = list() category = "(Pointless) Badassery" surplus = 0 +/datum/uplink_item/badass/syndiecigs + name = "Syndicate Smokes" + desc = "Strong flavor, dense smoke, infused with omnizine." + reference = "SYSM" + item = /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate + cost = 2 + /datum/uplink_item/badass/bundle name = "Syndicate Bundle" desc = "Syndicate Bundles are specialised groups of items that arrive in a plain box. These items are collectively worth more than 20 telecrystals, but you do not know which specialisation you will receive." diff --git a/code/game/dna/dna_misc.dm b/code/game/dna/dna_misc.dm index bc2098d77a6..b4c8bda8b9f 100644 --- a/code/game/dna/dna_misc.dm +++ b/code/game/dna/dna_misc.dm @@ -467,7 +467,7 @@ O.adjustToxLoss(M.getToxLoss() + 20) O.adjustOxyLoss(M.getOxyLoss()) O.stat = M.stat - O.a_intent = "harm" + O.a_intent = I_HARM for (var/obj/item/weapon/implant/I in implants) I.loc = O I.implanted = O diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index 06a16390fa7..ecdbd6fa2f2 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -562,13 +562,13 @@ thoughts = "haunted by their own mortality" switch(M.a_intent) - if ("help") + if (I_HELP) usr << "\blue Mood: You sense benevolent thoughts from [M.name]." - if ("disarm") + if (I_DISARM) usr << "\blue Mood: You sense cautious thoughts from [M.name]." - if ("grab") + if (I_GRAB) usr << "\blue Mood: You sense hostile thoughts from [M.name]." - if ("harm") + if (I_HARM) usr << "\blue Mood: You sense cruel thoughts from [M.name]." for(var/mob/living/L in view(7,M)) if (L == M) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 3785d882b62..6e236db2154 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -349,6 +349,12 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", if(!iscultist(user)) return ..() if(iscultist(M)) + if(M.reagents && M.reagents.has_reagent("holywater")) //allows cultists to be rescued from the clutches of ordained religion + user << "You remove the taint from [M]." + var/holy2unholy = M.reagents.get_reagent_amount("holywater") + M.reagents.del_reagent("holywater") + M.reagents.add_reagent("unholywater",holy2unholy) + add_logs(M, user, "smacked", src, " removing the holy water from them") return M.take_organ_damage(0,rand(5,20)) //really lucky - 5 hits for a crit for(var/mob/O in viewers(M, null)) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index a4c41cb07ce..18883600ad4 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -558,14 +558,14 @@ var/list/sacrificed = list() else usr.whisper("[input]") - log_say("Cult Message: [key_name(usr)]: [input]") + log_say("Cult Message: [key_name(usr)]: [input]") for(var/datum/mind/H in ticker.mode.cult) if (H.current) H.current << "[cultName]: [input]" for(var/mob/spirit/spirit in spirits) spirit << "[displayName]: [input]" - + for(var/mob/dead/observer/G in player_list) G.show_message("[displayName] ([cultName]) ([ghost_follow_link(usr, ghost=G)]): [input]") @@ -699,7 +699,7 @@ var/list/sacrificed = list() if (istype(W,/obj/item/weapon/paper/talisman)) rad = 4 go = 1 - if (istype(W,/obj/item/weapon/nullrod)) + if (istype(W,/obj/item/weapon/storage/bible)) rad = 1 go = 1 if(go) @@ -708,7 +708,7 @@ var/list/sacrificed = list() R:visibility=15 S=1 if(S) - if(istype(W,/obj/item/weapon/nullrod)) + if(istype(W,/obj/item/weapon/storage/bible)) usr << "\red Arcane markings suddenly glow from underneath a thin layer of dust!" return if(istype(W,/obj/effect/rune)) diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index bc29494d6ea..9505a0c48a1 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -8,7 +8,7 @@ item_state = "electronic" throw_speed = 4 throw_range = 20 - m_amt = 500 + materials = list(MAT_METAL=500) var/obj/item/weapon/disk/nuclear/the_disk = null var/active = 0 diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 1420fc9c5ae..d39bc8e2ec3 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -327,7 +327,7 @@ datum/objective/protect//The opposite of killing a dude. datum/objective/hijack - explanation_text = "Hijack the emergency shuttle by escaping alone." + explanation_text = "Hijack the shuttle to ensure no loyalist Nanotrasen crew escape alive." check_completion() if(!owner.current || owner.current.stat) @@ -337,9 +337,9 @@ datum/objective/hijack if(issilicon(owner.current)) return 0 var/area/shuttle = locate(/area/shuttle/escape/centcom) - var/list/protected_mobs = list(/mob/living/silicon/ai, /mob/living/silicon/pai) for(var/mob/living/player in player_list) - if(player.type in protected_mobs) continue + if(istype(player, /mob/living/silicon) || istype(player, /mob/living/simple_animal) || player.mind.special_role && !player.mind.special_role == "Response Team") + continue if (player.mind && (player.mind != owner)) if(player.stat != DEAD) //they're not dead! if(get_turf(player) in shuttle) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 603d293dd55..960b57edacd 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -105,7 +105,7 @@ var/area/alarm_area var/danger_level = 0 var/alarmActivated = 0 // Manually activated (independent from danger level) - + var/buildstage = 2 //2 is built, 1 is building, 0 is frame. var/target_temperature = T0C+20 @@ -114,21 +114,21 @@ var/datum/radio_frequency/radio_connection var/list/TLV = list() - + var/report_danger_level = 1 - + /obj/machinery/alarm/monitor report_danger_level = 0 - + /obj/machinery/alarm/server preset = AALARM_PRESET_SERVER - + /obj/machinery/alarm/vox preset = AALARM_PRESET_VOX - + /obj/machinery/alarm/kitchen_cold_room preset = AALARM_PRESET_COLDROOM - + /obj/machinery/alarm/proc/apply_preset(var/no_cycle_after=0) // Propogate settings. for (var/obj/machinery/alarm/AA in alarm_area) @@ -143,10 +143,10 @@ "plasma" = new/datum/tlv(-1.0, -1.0, 0.2, 0.5), // Partial pressure, kpa "other" = new/datum/tlv(-1.0, -1.0, 0.5, 1.0), // Partial pressure, kpa "pressure" = new/datum/tlv(ONE_ATMOSPHERE*0.80,ONE_ATMOSPHERE*0.90,ONE_ATMOSPHERE*1.10,ONE_ATMOSPHERE*1.20), /* kpa */ - "temperature" = new/datum/tlv(T0C, T0C+10, T0C+40, T0C+66), // K + "temperature" = new/datum/tlv(T0C, T0C+10, T0C+40, T0C+66), // K ) switch(preset) - if(AALARM_PRESET_VOX) + if(AALARM_PRESET_VOX) TLV = list( "oxygen" = new/datum/tlv(-1.0, -1.0, 1, 2), // Partial pressure, kpa "nitrogen" = new/datum/tlv(16, 19, 135, 140), // Partial pressure, kpa @@ -154,9 +154,9 @@ "plasma" = new/datum/tlv(-1.0, -1.0, 0.2, 0.5), // Partial pressure, kpa "other" = new/datum/tlv(-1.0, -1.0, 0.5, 1.0), // Partial pressure, kpa "pressure" = new/datum/tlv(ONE_ATMOSPHERE*0.80,ONE_ATMOSPHERE*0.90,ONE_ATMOSPHERE*1.10,ONE_ATMOSPHERE*1.20), /* kpa */ - "temperature" = new/datum/tlv(T0C, T0C+10, T0C+40, T0C+66), // K + "temperature" = new/datum/tlv(T0C, T0C+10, T0C+40, T0C+66), // K ) - if(AALARM_PRESET_SERVER) + if(AALARM_PRESET_SERVER) TLV = list( "oxygen" = new/datum/tlv(-1.0, -1.0,-1.0,-1.0), // Partial pressure, kpa "nitrogen" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa @@ -166,7 +166,7 @@ "pressure" = new/datum/tlv(-1.0, -1.0,-1.0,-1.0), /* kpa */ "temperature" = new/datum/tlv(-1.0, -1.0,-1.0,-1.0), // K ) - if(AALARM_PRESET_COLDROOM) + if(AALARM_PRESET_COLDROOM) TLV = list( "oxygen" = new/datum/tlv(16, 19, 135, 140), // Partial pressure, kpa "nitrogen" = new/datum/tlv(-1.0, -1.0, -1.0, -1.0), // Partial pressure, kpa @@ -176,7 +176,7 @@ "pressure" = new/datum/tlv(ONE_ATMOSPHERE*0.80,ONE_ATMOSPHERE*0.90,ONE_ATMOSPHERE*1.50,ONE_ATMOSPHERE*1.60), /* kpa */ "temperature" = new/datum/tlv(200, 210, 273.15, 283.15), // K ) - + if(!no_cycle_after) mode = AALARM_MODE_REPLACEMENT apply_mode() @@ -185,7 +185,7 @@ ..() air_alarms += src air_alarms = sortAtom(air_alarms) - + wires = new(src) if(building) @@ -223,7 +223,7 @@ set_frequency(frequency) if (!master_is_operating()) elect_master() - + /obj/machinery/alarm/proc/master_is_operating() if (! alarm_area) alarm_area = areaMaster @@ -243,12 +243,12 @@ return var/turf/simulated/location = loc - if(!istype(location)) + if(!istype(location)) return 0 var/datum/gas_mixture/environment = location.return_air() var/datum/tlv/cur_tlv - + handle_heating_cooling(environment, cur_tlv, location) var/GET_PP = R_IDEAL_GAS_EQUATION*environment.temperature/environment.volume @@ -256,13 +256,13 @@ cur_tlv = TLV["pressure"] var/environment_pressure = environment.return_pressure() var/pressure_dangerlevel = cur_tlv.get_danger_level(environment_pressure) - + cur_tlv = TLV["oxygen"] var/oxygen_dangerlevel = cur_tlv.get_danger_level(environment.oxygen*GET_PP) cur_tlv = TLV["nitrogen"] - var/nitrogen_dangerlevel = cur_tlv.get_danger_level(environment.nitrogen*GET_PP) - + var/nitrogen_dangerlevel = cur_tlv.get_danger_level(environment.nitrogen*GET_PP) + cur_tlv = TLV["carbon dioxide"] var/co2_dangerlevel = cur_tlv.get_danger_level(environment.carbon_dioxide*GET_PP) @@ -291,11 +291,11 @@ if (old_danger_level!=danger_level) apply_danger_level() - + if (mode == AALARM_MODE_REPLACEMENT && environment_pressure < ONE_ATMOSPHERE * 0.05) mode = AALARM_MODE_SCRUBBING apply_mode() - + /obj/machinery/alarm/proc/handle_heating_cooling(var/datum/gas_mixture/environment, var/datum/tlv/cur_tlv, var/turf/simulated/location) cur_tlv = TLV["temperature"] //Handle temperature adjustment here. @@ -603,7 +603,7 @@ /obj/machinery/alarm/attack_robot(mob/user) return attack_ai(user) - + /obj/machinery/alarm/attack_ghost(user as mob) if(stat & (BROKEN|MAINT)) return @@ -614,22 +614,22 @@ if (.) return return interact(user) - + /obj/machinery/alarm/interact(mob/user) if(buildstage != 2) return if(wiresexposed && !istype(user, /mob/living/silicon/ai)) wires.Interact(user) - + if(!shorted) ui_interact(user) /obj/machinery/alarm/proc/ui_air_status() var/turf/location = get_turf(src) - if(!istype(location)) + if(!istype(location)) return - + var/datum/gas_mixture/environment = location.return_air() var/total = environment.oxygen + environment.nitrogen + environment.carbon_dioxide + environment.toxins if(total==0) @@ -754,7 +754,7 @@ scrubbers+=list(scrubber_data) data["scrubbers"]=scrubbers return data - + /obj/machinery/alarm/proc/get_nano_data_console(mob/user) var/data[0] data["name"] = sanitize(name) @@ -766,7 +766,7 @@ data["y"] = pos.y data["z"] = pos.z return data - + /obj/machinery/alarm/proc/generate_thresholds_menu() var/datum/tlv/selected var/list/thresholds = list() @@ -800,9 +800,9 @@ thresholds[thresholds.len]["settings"] += list(list("env" = "temperature", "val" = "max2", "selected" = selected.max2)) return thresholds - + /obj/machinery/alarm/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state) - var/list/href = state.href_list(user) + var/list/href = state.href_list(user) var/remote_connection = 0 var/remote_access = 0 if(href) @@ -812,8 +812,8 @@ var/list/data = get_nano_data(user, href) data["remote_connection"] = remote_connection - data["remote_access"] = remote_access - + data["remote_access"] = remote_access + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if(!ui) ui = new(user, src, ui_key, "air_alarm.tmpl", name, 570, 410, state = state) @@ -828,7 +828,7 @@ return 1 else return !locked - + /obj/machinery/alarm/proc/is_locked(mob/user as mob, href_list) if(isobserver(user) && check_rights(R_ADMIN, 0, user)) return 0 @@ -838,13 +838,13 @@ return 0 else return locked - + /obj/machinery/alarm/proc/is_auth_rcon(href_list) if(href_list && href_list["remote_connection"] && href_list["remote_access"]) return 1 else return 0 - + /obj/machinery/alarm/CanUseTopic(var/mob/user, var/datum/topic_state/state, var/href_list = list()) if(buildstage != 2) return STATUS_CLOSE @@ -862,12 +862,12 @@ . = STATUS_UPDATE return min(..(), .) -/obj/machinery/alarm/Topic(href, href_list, var/nowindow = 0, var/datum/topic_state/state) +/obj/machinery/alarm/Topic(href, href_list, var/nowindow = 0, var/datum/topic_state/state) if(..(href, href_list, nowindow, state)) return 1 - + var/state_href = state.href_list(usr) - + if(href_list["rcon"]) var/attempted_rcon_setting = text2num(href_list["rcon"]) switch(attempted_rcon_setting) @@ -1101,5 +1101,4 @@ Just an object used in constructing air alarms icon_state = "door_electronics" desc = "Looks like a circuit. Probably is." w_class = 2.0 - m_amt = 50 - g_amt = 50 + materials = list(MAT_METAL=50, MAT_GLASS=50) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 6228fe05ddd..69d6df5bb50 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -8,12 +8,6 @@ icon_state = "autolathe" density = 1 - var/m_amount = 0.0 - var/max_m_amount = 150000.0 - - var/g_amount = 0.0 - var/max_g_amount = 75000.0 - var/operating = 0.0 var/list/queue = list() var/queue_max_len = 12 @@ -40,6 +34,8 @@ var/selected_category var/screen = 1 + var/datum/material_container/materials + var/list/categories = list( "Communication", "Construction", @@ -59,6 +55,7 @@ component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) component_parts += new /obj/item/weapon/stock_parts/manipulator(null) component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + materials = new /datum/material_container(src, list(MAT_METAL=1, MAT_GLASS=1)) RefreshParts() wires = new(src) @@ -115,12 +112,7 @@ if (panel_open) if(istype(O, /obj/item/weapon/crowbar)) - if(m_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc) - G.amount = round(m_amount / MINERAL_MATERIAL_AMOUNT) - if(g_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc) - G.amount = round(g_amount / MINERAL_MATERIAL_AMOUNT) + materials.retrieve_all() default_deconstruction_crowbar(O) return 1 else @@ -129,48 +121,37 @@ if (stat) return 1 - if (src.m_amount + O.m_amt > max_m_amount) - user << "The autolathe is full. Please remove metal from the autolathe in order to insert more." + var/material_amount = materials.can_insert(O) + if(!material_amount) + user << "This object does not contain sufficient amounts of metal or glass to be accepted by the autolathe." return 1 - if (src.g_amount + O.g_amt > max_g_amount) - user << "The autolathe is full. Please remove glass from the autolathe in order to insert more." + if(!materials.has_space(material_amount)) + user << "The autolathe is full. Please remove metal or glass from the autolathe in order to insert more." return 1 - if (O.m_amt == 0 && O.g_amt == 0) - user << "This object does not contain significant amounts of metal or glass, or cannot be accepted by the autolathe due to size or hazardous materials." + if(!user.unEquip(O)) + user << "\The [O] is stuck to you and cannot be placed into the autolathe." return 1 - var/amount = 1 - var/obj/item/stack/stack - var/m_amt = O.m_amt - var/g_amt = O.g_amt - if (istype(O, /obj/item/stack)) - stack = O - amount = stack.amount - if (m_amt) - amount = min(amount, round((max_m_amount-src.m_amount)/m_amt)) - flick("autolathe_o",src)//plays metal insertion animation - if (g_amt) - amount = min(amount, round((max_g_amount-src.g_amount)/g_amt)) - flick("autolathe_r",src)//plays glass insertion animation - stack.use(amount) - else - if(!user.unEquip(O)) - user << "/the [O] is stuck to your hand, you can't put it in \the [src]!" - O.loc = src - icon_state = "autolathe" busy = 1 - use_power(max(1000, (m_amt+g_amt)*amount/10)) - src.m_amount += m_amt * amount - src.g_amount += g_amt * amount - user << "You insert [amount] sheet[amount>1 ? "s" : ""] to the autolathe." - if (O && O.loc == src) - qdel(O) + var/inserted = materials.insert_item(O) + if(inserted) + if(istype(O,/obj/item/stack)) + if (O.materials[MAT_METAL]) + flick("autolathe_o",src)//plays metal insertion animation + if (O.materials[MAT_GLASS]) + flick("autolathe_r",src)//plays glass insertion animation + user << "You insert [inserted] sheet[inserted>1 ? "s" : ""] to the autolathe." + use_power(inserted*100) + else + user << "You insert a material total of [inserted] to the autolathe." + use_power(max(500,inserted/10)) + qdel(O) busy = 0 src.updateUsrDialog() -/obj/machinery/autolathe/attack_ghost(mob/user) +/obj/machinery/autolathe/attack_ghost(mob/user) interact(user) - + /obj/machinery/autolathe/attack_hand(mob/user) if(..(user, 0)) return @@ -179,7 +160,7 @@ /obj/machinery/autolathe/Topic(href, href_list) if(..()) return 1 - + if(href_list["menu"]) screen = text2num(href_list["menu"]) @@ -200,7 +181,7 @@ //multiplier checks : only stacks can have one and its value is 1, 10 ,25 or max_multiplier var/multiplier = text2num(href_list["multiplier"]) - var/max_multiplier = min(50, design_last_ordered.materials["$metal"] ?round(m_amount/design_last_ordered.materials["$metal"]):INFINITY,design_last_ordered.materials["$glass"]?round(g_amount/design_last_ordered.materials["$glass"]):INFINITY) + var/max_multiplier = min(50, design_last_ordered.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/design_last_ordered.materials[MAT_METAL]):INFINITY,design_last_ordered.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/design_last_ordered.materials[MAT_GLASS]):INFINITY) var/is_stack = ispath(design_last_ordered.build_path, /obj/item/stack) if(!is_stack && (multiplier > 1)) @@ -248,8 +229,7 @@ for(var/obj/item/weapon/stock_parts/matter_bin/MB in component_parts) tot_rating += MB.rating tot_rating *= 25000 - max_m_amount = tot_rating * 2 - max_g_amount = tot_rating + materials.max_amount = tot_rating * 3 for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) prod_coeff += M.rating - 1 @@ -261,8 +241,8 @@ desc = initial(desc)+"\nIt's building \a [initial(D.name)]." var/is_stack = ispath(D.build_path, /obj/item/stack) var/coeff = get_coeff(D) - var/metal_cost = D.materials["$metal"] - var/glass_cost = D.materials["$glass"] + var/metal_cost = D.materials[MAT_METAL] + var/glass_cost = D.materials[MAT_GLASS] var/power = max(2000, (metal_cost+glass_cost)*multiplier/5) if (can_build(D,multiplier)) being_built = list(D,multiplier) @@ -270,11 +250,11 @@ icon_state = "autolathe" flick("autolathe_n",src) if(is_stack) - m_amount -= metal_cost*multiplier - g_amount -= glass_cost*multiplier + var/list/materials_used = list(MAT_METAL=metal_cost*multiplier, MAT_GLASS=glass_cost*multiplier) + materials.use_amount(materials_used) else - m_amount -= metal_cost/coeff - g_amount -= glass_cost/coeff + var/list/materials_used = list(MAT_METAL=metal_cost/coeff, MAT_GLASS=glass_cost/coeff) + materials.use_amount(materials_used) updateUsrDialog() sleep(32/coeff) if(is_stack) @@ -282,38 +262,34 @@ S.amount = multiplier else var/obj/item/new_item = new D.build_path(BuildTurf) - new_item.m_amt /= coeff - new_item.g_amt /= coeff - if(m_amount < 0) - m_amount = 0 - if(g_amount < 0) - g_amount = 0 + new_item.materials[MAT_METAL] /= coeff + new_item.materials[MAT_GLASS] /= coeff updateUsrDialog() desc = initial(desc) /obj/machinery/autolathe/proc/can_build(var/datum/design/D,var/multiplier=1,var/custom_metal,var/custom_glass) var/coeff = get_coeff(D) - var/metal_amount = m_amount + var/metal_amount = materials.amount(MAT_METAL) if(custom_metal) metal_amount = custom_metal - var/glass_amount = g_amount + var/glass_amount = materials.amount(MAT_GLASS) if(custom_glass) glass_amount = custom_glass - if(D.materials["$metal"] && (metal_amount < (multiplier*D.materials["$metal"] / coeff))) + if(D.materials[MAT_METAL] && (metal_amount < (multiplier*D.materials[MAT_METAL] / coeff))) return 0 - if(D.materials["$glass"] && (glass_amount < (multiplier*D.materials["$glass"] / coeff))) + if(D.materials[MAT_GLASS] && (glass_amount < (multiplier*D.materials[MAT_GLASS] / coeff))) return 0 return 1 /obj/machinery/autolathe/proc/get_design_cost_as_list(var/datum/design/D,var/multiplier=1) var/list/OutputList = list(0,0) var/coeff = get_coeff(D) - if(D.materials["$metal"]) - OutputList[1] = (D.materials["$metal"] / coeff)*multiplier - if(D.materials["$glass"]) - OutputList[2] = (D.materials["$glass"] / coeff)*multiplier + if(D.materials[MAT_METAL]) + OutputList[1] = (D.materials[MAT_METAL] / coeff)*multiplier + if(D.materials[MAT_GLASS]) + OutputList[2] = (D.materials[MAT_GLASS] / coeff)*multiplier return OutputList /obj/machinery/autolathe/proc/get_processing_line() @@ -324,8 +300,8 @@ return output /obj/machinery/autolathe/proc/get_queue() - var/temp_metal = m_amount - var/temp_glass = g_amount + var/temp_metal = materials.amount(MAT_METAL) + var/temp_glass = materials.amount(MAT_GLASS) var/output = "" output += "
" output += "Queue contains:" @@ -402,8 +378,9 @@ var/dat = "" dat += "" if(BUGMODE_MONITOR) @@ -157,6 +126,9 @@ var/s = (time_diff - 4*m) * 15 if(!s) s = "00" html += "Last seen near [outstring] ([m]:[s] minute\s ago)
" + if( C && (C.bug == src)) //Checks to see if the camera has a bug + html += "\[Disable\]" + else html += "Not yet seen." else @@ -309,62 +281,6 @@ break src.updateSelfDialog() -/obj/item/device/camera_bug/attackby(var/obj/item/W as obj,var/mob/living/user as mob, params) - if(istype(W,/obj/item/weapon/screwdriver) && expansion) - expansion.loc = get_turf(loc) - user << "You unscrew [expansion]." - user.put_in_inactive_hand(expansion) - expansion = null - bugtype = VANILLA_BUG - skip_bugcheck = 0 - track_mode = BUGMODE_LIST - tracking = null - return - - if(expansion || !W) - return ..(W,user) - - // I am not sure that this list is or should be final - // really I do not know what to do here. - var/static/list/expandables = list( - /obj/item/weapon/research = ADMIN_BUG, // could have been anything spawn-only - - // these are all so hackish I am sorry - - /obj/item/device/analyzer = UNIVERSAL_BUG, - /obj/item/weapon/stock_parts/subspace/analyzer = UNIVERSAL_BUG, - - /obj/item/device/assembly/igniter = SABOTAGE_BUG, - /obj/item/device/assembly/infra = SABOTAGE_BUG, // ir blaster to disable camera - /obj/item/weapon/stock_parts/subspace/amplifier = SABOTAGE_BUG, - - /obj/item/device/radio = NETWORK_BUG, - /obj/item/device/assembly/signaler = NETWORK_BUG, - /obj/item/weapon/stock_parts/subspace/transmitter = NETWORK_BUG, - - /obj/item/device/detective_scanner = ADVANCED_BUG, - /obj/item/device/paicard = ADVANCED_BUG, - /obj/item/weapon/stock_parts/scanning_module = ADVANCED_BUG - ) - - for(var/entry in expandables) - if(istype(W,entry)) - bugtype = expandables[entry] - user.drop_item() - W.loc = src - expansion = W - user << "You add [W] to [src]." - get_cameras() // the tracking code will want to know the new camera list - if(bugtype in list(UNIVERSAL_BUG,NETWORK_BUG,ADMIN_BUG)) - skip_bugcheck = 1 - return - -#undef VANILLA_BUG -#undef UNIVERSAL_BUG -#undef NETWORK_BUG -#undef SABOTAGE_BUG -#undef ADVANCED_BUG -#undef ADMIN_BUG #undef BUGMODE_LIST #undef BUGMODE_MONITOR diff --git a/code/game/objects/items/devices/debugger.dm b/code/game/objects/items/devices/debugger.dm index 1b9d5e13344..2b8eb60500f 100644 --- a/code/game/objects/items/devices/debugger.dm +++ b/code/game/objects/items/devices/debugger.dm @@ -16,8 +16,7 @@ throw_range = 15 throw_speed = 3 desc = "You can use this on airlocks or APCs to try to hack them without cutting wires." - m_amt = 50 - g_amt = 20 + materials = list(MAT_METAL=50, MAT_GLASS=20) origin_tech = "magnets=1;engineering=1" var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 9f0e2a91523..f78f420d8d8 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -9,6 +9,7 @@ throw_speed = 3 throw_range = 7 flags = CONDUCT + materials = list(MAT_METAL = 300, MAT_GLASS = 300) origin_tech = "magnets=2;combat=1" var/times_used = 0 //Number of times it's been used. diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 22ea7441935..b3dbe66619e 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -7,8 +7,7 @@ w_class = 2 flags = CONDUCT slot_flags = SLOT_BELT - m_amt = 50 - g_amt = 20 + materials = list(MAT_METAL=50, MAT_GLASS=20) action_button_name = "Flashlight" var/on = 0 var/brightness_on = 4 //luminosity when on @@ -119,8 +118,7 @@ brightness_on = 5 w_class = 4 flags = CONDUCT - m_amt = 0 - g_amt = 0 + materials = list() on = 1 @@ -214,6 +212,7 @@ obj/item/device/flashlight/lamp/bananalamp w_class = 1 brightness_on = 6 light_color = "#FFBF00" + materials = list() on = 1 //Bio-luminesence has one setting, on. /obj/item/device/flashlight/slime/New() diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index d78c7b087fb..ec5f18283a8 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -7,8 +7,7 @@ var/pointer_icon_state flags = CONDUCT slot_flags = SLOT_BELT - m_amt = 500 - g_amt = 500 + materials = list(MAT_METAL=500, MAT_GLASS=500) w_class = 2 //Increased to 2, because diodes are w_class 2. Conservation of matter. origin_tech = "combat=1" origin_tech = "magnets=2" diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 32d5984f8b9..4b08503b317 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -15,8 +15,7 @@ throw_range = 15 throw_speed = 3 desc = "You can use this on airlocks or APCs to try to hack them without cutting wires." - m_amt = 50 - g_amt = 20 + materials = list(MAT_METAL=50, MAT_GLASS=20) origin_tech = "magnets=1;engineering=1" var/obj/machinery/buffer // simple machine buffer for device linkage diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index ab61e766c91..c08c79da86f 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -10,8 +10,7 @@ throwforce = 5 throw_speed = 1 throw_range = 2 - m_amt = 750 - w_amt = 750 + materials = list(MAT_METAL=750) origin_tech = "powerstorage=3;syndicate=5" var/drain_rate = 1500000 // amount of power to drain per tick var/apc_drain_rate = 5000 // Max. amount drained from single APC. In Watts. diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 98130412312..56d6fbbdafd 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -7,8 +7,7 @@ flags = CONDUCT slot_flags = SLOT_BACK w_class = 5.0 - g_amt = 2500 - m_amt = 10000 + materials = list(MAT_METAL=10000, MAT_GLASS=2500) var/code = 2 /obj/item/device/radio/electropack/attack_hand(mob/user as mob) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index d5b0dc1928a..e74a41d370c 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -4,7 +4,7 @@ var/radio_desc = "" icon_state = "headset" item_state = "headset" - m_amt = 75 + materials = list(MAT_METAL=75) subspace_transmission = 1 canhear_range = 0 // can't hear headsets from very far away diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 9f40c419122..987d2475245 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -10,7 +10,7 @@ var/circuitry_installed = 1 var/last_tick //used to delay the powercheck var/buildstage = 0 - + /obj/item/device/radio/intercom/custom name = "station intercom (Custom)" broadcasting = 0 @@ -23,7 +23,7 @@ /obj/item/device/radio/intercom/private name = "station intercom (Private)" frequency = AI_FREQ - + /obj/item/device/radio/intercom/command name = "station intercom (Command)" frequency = COMM_FREQ @@ -44,7 +44,7 @@ /obj/item/device/radio/intercom/department/security name = "station intercom (Security)" frequency = SEC_I_FREQ - + /obj/item/device/radio/intercom/New(turf/loc, var/ndir = 0, var/building = 3) ..() buildstage = building @@ -79,7 +79,7 @@ /obj/item/device/radio/intercom/syndicate/New() ..() internal_channels[num2text(SYND_FREQ)] = list(access_syndicate) - + /obj/item/device/radio/intercom/pirate name = "pirate radio intercom" desc = "You wouldn't steal a space shuttle. Piracy. It's a crime!" @@ -101,7 +101,7 @@ num2text(SUP_FREQ) = list(), num2text(SRV_FREQ) = list() ) - + /obj/item/device/radio/intercom/Destroy() processing_objects.Remove(src) return ..() @@ -209,7 +209,7 @@ /obj/item/device/radio/intercom/process() if(((world.timeofday - last_tick) > 30) || ((world.timeofday - last_tick) < 0)) last_tick = world.timeofday - + if(!src.loc) on = 0 @@ -227,9 +227,8 @@ icon_state = "door_electronics" desc = "Looks like a circuit. Probably is." w_class = 2.0 - m_amt = 50 - g_amt = 50 - + materials = list(MAT_METAL=50, MAT_GLASS=50) + /obj/item/device/radio/intercom/locked var/locked_frequency @@ -247,7 +246,7 @@ /obj/item/device/radio/intercom/locked/confessional name = "confessional intercom" frequency = 1480 - + /obj/item/device/radio/intercom/locked/prison name = "\improper prison intercom" desc = "Talk through this. It looks like it has been modified to not broadcast." @@ -255,4 +254,3 @@ /obj/item/device/radio/intercom/locked/prison/New() ..() wires.CutWireIndex(WIRE_TRANSMIT) - \ No newline at end of file diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 2cfe90385cc..68ba62a7539 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -44,8 +44,8 @@ var/global/list/default_medbay_channels = list( throw_range = 9 w_class = 2 - m_amt = 75 - g_amt = 25 + materials = list(MAT_METAL=75) + var/const/FREQ_LISTENING = 1 var/atom/follow_target // Custom follow target for autosay-using bots diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 82402e273c9..c66d9c88cae 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -16,7 +16,7 @@ REAGENT SCANNER slot_flags = SLOT_BELT w_class = 2 item_state = "electronic" - m_amt = 150 + materials = list(MAT_METAL=150) origin_tech = "magnets=1;engineering=1" var/scan_range = 1 var/pulse_duration = 10 @@ -121,7 +121,7 @@ REAGENT SCANNER w_class = 1.0 throw_speed = 5 throw_range = 10 - m_amt = 200 + materials = list(MAT_METAL=200) origin_tech = "magnets=1;biotech=1" var/upgraded = 0 var/mode = 1; @@ -296,8 +296,7 @@ REAGENT SCANNER throwforce = 0 throw_speed = 3 throw_range = 7 - m_amt = 30 - g_amt = 20 + materials = list(MAT_METAL=30, MAT_GLASS=20) origin_tech = "magnets=1;engineering=1" /obj/item/device/analyzer/attack_self(mob/user as mob) @@ -363,8 +362,7 @@ REAGENT SCANNER throwforce = 5 throw_speed = 4 throw_range = 20 - m_amt = 30 - g_amt = 20 + materials = list(MAT_METAL=30, MAT_GLASS=20) origin_tech = "magnets=2;biotech=2" var/details = 0 var/recent_fail = 0 @@ -436,8 +434,7 @@ REAGENT SCANNER throwforce = 5 throw_speed = 4 throw_range = 20 - m_amt = 30 - g_amt = 20 + materials = list(MAT_METAL=30, MAT_GLASS=20) origin_tech = "magnets=2;biotech=2" var/details = 0 var/recent_fail = 0 @@ -493,8 +490,7 @@ REAGENT SCANNER throwforce = 0 throw_speed = 3 throw_range = 7 - m_amt = 30 - g_amt = 20 + materials = list(MAT_METAL=30, MAT_GLASS=20) /obj/item/device/slime_scanner/attack(mob/living/M as mob, mob/living/user as mob) if (!isslime(M)) diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index a480944e9c3..d0a58b571cf 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -5,8 +5,7 @@ item_state = "analyzer" w_class = 2 slot_flags = SLOT_BELT - m_amt = 60 - g_amt = 30 + materials = list(MAT_METAL=60, MAT_GLASS=30) force = 2 throwforce = 0 var/recording = 0 @@ -262,8 +261,7 @@ icon_state = "tape_white" item_state = "analyzer" w_class = 1 - m_amt = 20 - g_amt = 5 + materials = list(MAT_METAL=20, MAT_GLASS=5) force = 1 throwforce = 0 var/max_capacity = 600 diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 55349e88479..b90f987adf5 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -80,21 +80,20 @@ effective or pretty fucking useless. desc = "A hand-held body scanner able to distinguish vital signs of the subject. A strange microlaser is hooked on to the scanning end." flags = CONDUCT slot_flags = SLOT_BELT - discrete = 1 // Makes the item not give an attack log message for viewers. throwforce = 3 w_class = 1.0 - throw_speed = 5 - throw_range = 10 - m_amt = 200 + throw_speed = 3 + throw_range = 7 + materials = list(MAT_METAL=400) origin_tech = "magnets=3;biotech=5;syndicate=3" var/intensity = 5 // how much damage the radiation does var/wavelength = 10 // time it takes for the radiation to kick in, in seconds var/used = 0 // is it cooling down? -/obj/item/device/rad_laser/attack(mob/living/M as mob, mob/living/user as mob) +/obj/item/device/rad_laser/attack(mob/living/M, mob/living/user) if(!used) - ..() - user.visible_message(" [user] has analyzed [M]'s vitals."," You have analyzed [M]'s vitals.") + add_logs(M, user, "irradiated", src) + user.visible_message("[user] has analyzed [M]'s vitals.") var/cooldown = round(max(100,(((intensity*8)-(wavelength/2))+(intensity*2))*10)) used = 1 icon_state = "health1" @@ -105,18 +104,18 @@ effective or pretty fucking useless. M.apply_effect(round(intensity/1.5), PARALYZE) M.apply_effect(intensity*10, IRRADIATE) else - user << "The radioactive microlaser is still recharging." + user << "The radioactive microlaser is still recharging." -/obj/item/device/rad_laser/proc/handle_cooldown(var/cooldown) +/obj/item/device/rad_laser/proc/handle_cooldown(cooldown) spawn(cooldown) used = 0 icon_state = "health2" -/obj/item/device/rad_laser/attack_self(mob/user as mob) +/obj/item/device/rad_laser/attack_self(mob/user) ..() interact(user) -/obj/item/device/rad_laser/interact(mob/user as mob) +/obj/item/device/rad_laser/interact(mob/user) user.set_machine(src) var/cooldown = round(max(10,((intensity*8)-(wavelength/2))+(intensity*2))) @@ -131,7 +130,7 @@ effective or pretty fucking useless. popup.open() /obj/item/device/rad_laser/Topic(href, href_list) - if(!in_range(src, usr) || issilicon(usr) || !usr.canmove || usr.restrained()) + if(..()) return 1 usr.set_machine(src) @@ -146,7 +145,6 @@ effective or pretty fucking useless. amount += wavelength wavelength = max(1,(min(120,amount))) - //updateUsrDialog() - interact(usr) + attack_self(usr) add_fingerprint(usr) return \ No newline at end of file diff --git a/code/game/objects/items/mountable_frames/air_alarm.dm b/code/game/objects/items/mountable_frames/air_alarm.dm index 28fe58e567e..4b16db0b0f6 100644 --- a/code/game/objects/items/mountable_frames/air_alarm.dm +++ b/code/game/objects/items/mountable_frames/air_alarm.dm @@ -8,7 +8,7 @@ Code shamelessly copied from apc_frame desc = "Used for building Air Alarms" icon = 'icons/obj/monitors.dmi' icon_state = "alarm_bitem" - m_amt = 2000 + materials = list(MAT_METAL=2000) mount_reqs = list("simfloor", "nospace") /obj/item/mounted/frame/alarm_frame/do_build(turf/on_wall, mob/user) diff --git a/code/game/objects/items/mountable_frames/newscaster_frame.dm b/code/game/objects/items/mountable_frames/newscaster_frame.dm index f853bbadf66..dade4dcb61b 100644 --- a/code/game/objects/items/mountable_frames/newscaster_frame.dm +++ b/code/game/objects/items/mountable_frames/newscaster_frame.dm @@ -3,8 +3,7 @@ desc = "Used to build newscasters, just secure to the wall." icon_state = "newscaster" item_state = "syringe_kit" - m_amt = 14000 - g_amt = 8000 + materials = list(MAT_METAL=14000, MAT_GLASS=8000) mount_reqs = list("simfloor", "nospace") /obj/item/mounted/frame/newscaster_frame/try_build(turf/on_wall, mob/user) diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm index 3420dd3acbd..488f958e17f 100644 --- a/code/game/objects/items/policetape.dm +++ b/code/game/objects/items/policetape.dm @@ -164,7 +164,7 @@ var/list/tape_roll_applications = list() breaktape(W, user) /obj/item/tape/attack_hand(mob/user as mob) - if (user.a_intent == "help" && src.allowed(user)) + if (user.a_intent == I_HELP && src.allowed(user)) user.show_viewers("\blue [user] lifts [src], allowing passage.") src.density = 0 spawn(200) @@ -176,7 +176,7 @@ var/list/tape_roll_applications = list() breaktape(/obj/item/weapon/wirecutters,user) /obj/item/tape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob) - if(user.a_intent == "help" && ((!can_puncture(W) && src.allowed(user)))) + if(user.a_intent == I_HELP && ((!can_puncture(W) && src.allowed(user)))) user << "You can't break the [src] with that!" return user.show_viewers("\blue [user] breaks the [src]!") diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 79cbe026503..01a087f959c 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -5,8 +5,6 @@ icon_state = "blank" flags = CONDUCT slot_flags = SLOT_BELT - var/construction_time = 100 - var/list/construction_cost = list("metal"=20000,"glass"=5000) var/list/part = null var/sabotaged = 0 //Emagging limbs can have repercussions when installed as prosthetics. var/model_info @@ -30,8 +28,6 @@ name = "left arm" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "l_arm" - construction_time = 200 - construction_cost = list("metal"=10000) part = list("l_arm","l_hand") model_info = 1 @@ -39,8 +35,6 @@ name = "right arm" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "r_arm" - construction_time = 200 - construction_cost = list("metal"=10000) part = list("r_arm","r_hand") model_info = 1 @@ -48,8 +42,6 @@ name = "left leg" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "l_leg" - construction_time = 200 - construction_cost = list("metal"=10000) part = list("l_leg","l_foot") model_info = 1 @@ -57,8 +49,6 @@ name = "right leg" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "r_leg" - construction_time = 200 - construction_cost = list("metal"=10000) part = list("r_leg","r_foot") model_info = 1 @@ -67,8 +57,6 @@ desc = "A heavily reinforced case containing cyborg logic boards, with space for a standard power cell." icon_state = "chest" part = list("groin","chest") - construction_time = 350 - construction_cost = list("metal"=40000) var/wires = 0.0 var/obj/item/weapon/stock_parts/cell/cell = null @@ -77,8 +65,6 @@ desc = "A standard reinforced braincase, with spine-plugged neural socket and sensor gimbals." icon_state = "head" part = list("head") - construction_time = 350 - construction_cost = list("metal"=5000) var/obj/item/device/flash/flash1 = null var/obj/item/device/flash/flash2 = null @@ -86,8 +72,6 @@ name = "endoskeleton" desc = "A complex metal backbone with standard limb sockets and pseudomuscle anchors." icon_state = "robo_suit" - construction_time = 500 - construction_cost = list("metal"=15000) var/obj/item/robot_parts/l_arm/l_arm = null var/obj/item/robot_parts/r_arm/r_arm = null var/obj/item/robot_parts/l_leg/l_leg = null diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 048d85e5495..a97ee46ea63 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -6,8 +6,6 @@ desc = "Protected by FRM." icon = 'icons/obj/module.dmi' icon_state = "cyborg_upgrade" - var/construction_time = 120 - var/construction_cost = list("metal"=10000) var/locked = 0 var/require_module = 0 var/installed = 0 @@ -50,7 +48,6 @@ name = "robot reclassification board" desc = "Used to rename a cyborg." icon_state = "cyborg_upgrade1" - construction_cost = list("metal"=35000) var/heldname = "default name" /obj/item/borg/upgrade/rename/attack_self(mob/user as mob) @@ -68,7 +65,6 @@ /obj/item/borg/upgrade/restart name = "robot emergency restart module" desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online." - construction_cost = list("metal"=60000 , "glass"=5000) icon_state = "cyborg_upgrade1" @@ -92,7 +88,6 @@ /obj/item/borg/upgrade/vtec name = "robotic VTEC Module" desc = "Used to kick in a robot's VTEC systems, increasing their speed." - construction_cost = list("metal"=80000 , "glass"=6000 , "gold"= 5000) icon_state = "cyborg_upgrade2" require_module = 1 @@ -109,7 +104,6 @@ /obj/item/borg/upgrade/disablercooler name = "robotic Rapid Disabler Cooling Module" desc = "Used to cool a mounted disabler, increasing the potential current in it and thus its recharge rate." - construction_cost = list("metal"=80000 , "glass"=6000 , "gold"= 2000, "diamond" = 500) icon_state = "cyborg_upgrade3" require_module = 1 @@ -144,7 +138,6 @@ /obj/item/borg/upgrade/jetpack name = "mining robot jetpack" desc = "A carbon dioxide jetpack suitable for low-gravity mining operations." - construction_cost = list("metal"=10000,"plasma"=15000,"uranium" = 20000) icon_state = "cyborg_upgrade3" require_module = 1 @@ -211,7 +204,6 @@ /obj/item/borg/upgrade/syndicate/ name = "Illegal Equipment Module" desc = "Unlocks the hidden, deadlier functions of a robot" - construction_cost = list("metal"=10000,"glass"=15000,"diamond" = 10000) icon_state = "cyborg_upgrade3" require_module = 1 diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index 139745b0cae..4412bff1265 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -10,7 +10,7 @@ throwforce = 10.0 throw_speed = 3 throw_range = 7 - m_amt = 1000 + materials = list(MAT_METAL=1000) max_amount = 60 attack_verb = list("hit", "bludgeoned", "whacked") hitsound = 'sound/weapons/grenadelaunch.ogg' diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index b0cc8eb0ba0..17e35850d8c 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -18,7 +18,7 @@ desc = "HOLY SHEET! That is a lot of glass." singular_name = "glass sheet" icon_state = "sheet-glass" - g_amt = MINERAL_MATERIAL_AMOUNT + materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT) origin_tech = "materials=1" var/created_window = /obj/structure/window/basic var/full_window = /obj/structure/window/full/basic @@ -28,7 +28,7 @@ desc = "HOLY SHEET! That is a lot of glass." singular_name = "glass sheet" icon_state = "sheet-glass" - g_amt = 0 + materials = list() created_window = /obj/structure/window/basic /obj/item/stack/sheet/glass/attack_self(mob/user as mob) @@ -153,8 +153,7 @@ desc = "Glass which seems to have rods or something stuck in them." singular_name = "reinforced glass sheet" icon_state = "sheet-rglass" - g_amt = MINERAL_MATERIAL_AMOUNT - m_amt = MINERAL_MATERIAL_AMOUNT / 2 + materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT/2, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) origin_tech = "materials=2" var/created_window = /obj/structure/window/reinforced var/full_window = /obj/structure/window/full/reinforced @@ -164,8 +163,7 @@ desc = "Glass which seems to have rods or something stuck in them." singular_name = "reinforced glass sheet" icon_state = "sheet-rglass" - g_amt = 0 - m_amt = 0 + materials = list() /obj/item/stack/sheet/rglass/attack_self(mob/user as mob) construct_window(user) @@ -272,7 +270,7 @@ desc = "A very strong and very resistant sheet of a plasma-glass alloy." singular_name = "glass sheet" icon_state = "sheet-plasmaglass" - g_amt = MINERAL_MATERIAL_AMOUNT * 2 + materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT*2) origin_tech = "materials=3;plasma=2" var/created_window = /obj/structure/window/plasmabasic var/full_window = /obj/structure/window/full/plasmabasic @@ -361,8 +359,7 @@ desc = "Plasma glass which seems to have rods or something stuck in them." singular_name = "reinforced plasma glass sheet" icon_state = "sheet-plasmarglass" - g_amt = MINERAL_MATERIAL_AMOUNT * 2 - m_amt = MINERAL_MATERIAL_AMOUNT / 2 + materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT/2, MAT_GLASS=MINERAL_MATERIAL_AMOUNT*2) origin_tech = "materials=3;plasma=2" var/created_window = /obj/structure/window/plasmareinforced var/full_window = /obj/structure/window/full/plasmareinforced diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 97daff457ed..8de783ebc3a 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -92,8 +92,8 @@ var/global/list/datum/stack_recipe/bananium_recipes = list ( \ name = "diamond" icon_state = "sheet-diamond" origin_tech = "materials=6" - perunit = 2000 sheettype = "diamond" + materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT) /obj/item/stack/sheet/mineral/diamond/New() @@ -104,8 +104,8 @@ var/global/list/datum/stack_recipe/bananium_recipes = list ( \ name = "uranium" icon_state = "sheet-uranium" origin_tech = "materials=5" - perunit = 2000 sheettype = "uranium" + materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT) /obj/item/stack/sheet/mineral/uranium/New() ..() @@ -115,8 +115,8 @@ var/global/list/datum/stack_recipe/bananium_recipes = list ( \ name = "solid plasma" icon_state = "sheet-plasma" origin_tech = "plasmatech=2;materials=2" - perunit = 2000 sheettype = "plasma" + materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT) /obj/item/stack/sheet/mineral/plasma/New() ..() @@ -126,7 +126,6 @@ var/global/list/datum/stack_recipe/bananium_recipes = list ( \ name = "Plastic" icon_state = "sheet-plastic" origin_tech = "materials=3" - perunit = 2000 /obj/item/stack/sheet/mineral/plastic/New() ..() @@ -135,14 +134,13 @@ var/global/list/datum/stack_recipe/bananium_recipes = list ( \ /obj/item/stack/sheet/mineral/plastic/cyborg name = "plastic sheets" icon_state = "sheet-plastic" - perunit = 2000 /obj/item/stack/sheet/mineral/gold name = "gold" icon_state = "sheet-gold" origin_tech = "materials=4" - perunit = 2000 sheettype = "gold" + materials = list(MAT_GOLD=MINERAL_MATERIAL_AMOUNT) /obj/item/stack/sheet/mineral/gold/New() ..() @@ -152,8 +150,8 @@ var/global/list/datum/stack_recipe/bananium_recipes = list ( \ name = "silver" icon_state = "sheet-silver" origin_tech = "materials=3" - perunit = 2000 sheettype = "silver" + materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT) /obj/item/stack/sheet/mineral/silver/New() ..() @@ -163,8 +161,8 @@ var/global/list/datum/stack_recipe/bananium_recipes = list ( \ name = "bananium" icon_state = "sheet-clown" origin_tech = "materials=4" - perunit = 2000 sheettype = "clown" + materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT) /obj/item/stack/sheet/mineral/bananium/New(var/loc, var/amount=null) ..() @@ -174,4 +172,3 @@ var/global/list/datum/stack_recipe/bananium_recipes = list ( \ name = "enriched uranium" icon_state = "sheet-enruranium" origin_tech = "materials=5" - perunit = 1000 diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 5c50910f303..46c3e1ff3d2 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -86,7 +86,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ desc = "Sheets made out off metal. It has been dubbed Metal Sheets." singular_name = "metal sheet" icon_state = "sheet-metal" - m_amt = 3750 + materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT) throwforce = 10.0 flags = CONDUCT origin_tech = "materials=1" @@ -96,7 +96,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ desc = "Sheets made out off metal. It has been dubbed Metal Sheets." singular_name = "metal sheet" icon_state = "sheet-metal" - m_amt = 0 + materials = list() throwforce = 10.0 flags = CONDUCT @@ -124,7 +124,7 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list ( \ desc = "This sheet is an alloy of iron and plasma." icon_state = "sheet-plasteel" item_state = "sheet-metal" - m_amt = 7500 + materials = list(MAT_METAL=6000, MAT_PLASMA=6000) throwforce = 10.0 flags = CONDUCT origin_tech = "materials=2" diff --git a/code/game/objects/items/stacks/tiles/plasteel.dm b/code/game/objects/items/stacks/tiles/plasteel.dm index 33e55268d6f..5565067505b 100644 --- a/code/game/objects/items/stacks/tiles/plasteel.dm +++ b/code/game/objects/items/stacks/tiles/plasteel.dm @@ -6,7 +6,7 @@ icon_state = "tile" w_class = 3.0 force = 6.0 - m_amt = 937.5 + materials = list(MAT_METAL=937.5) throwforce = 10.0 throw_speed = 3 throw_range = 7 diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 4e4c953ae94..5a05aa0b9cc 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -134,8 +134,7 @@ flags = CONDUCT slot_flags = SLOT_BELT w_class = 3.0 - g_amt = 10 - m_amt = 10 + materials = list(MAT_METAL=10, MAT_GLASS=10) attack_verb = list("struck", "pistol whipped", "hit", "bashed") var/bullets = 7.0 @@ -190,8 +189,7 @@ icon_state = "357-7" flags = CONDUCT w_class = 1.0 - g_amt = 10 - m_amt = 10 + materials = list(MAT_METAL=10, MAT_GLASS=10) var/amount_left = 7.0 update_icon() diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index 5e840ee77e5..0fc641d8039 100755 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -19,6 +19,7 @@ AI MODULES throw_speed = 3 throw_range = 15 origin_tech = "programming=3" + materials = list(MAT_GOLD=50) var/datum/ai_laws/laws = null /obj/item/weapon/aiModule/proc/install(var/obj/machinery/computer/C) @@ -88,7 +89,7 @@ AI MODULES /obj/item/weapon/aiModule/proc/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender) - + /******************** Safeguard ********************/ /obj/item/weapon/aiModule/safeguard name = "\improper 'Safeguard' AI module" @@ -175,7 +176,7 @@ AI MODULES var/law = "The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, anyone from leaving. It is impossible to harm anyone while preventing them from leaving." target << law target.add_supplied_law(8, law) - + /******************** OxygenIsToxicToHumans ********************/ /obj/item/weapon/aiModule/oxygen name = "\improper 'OxygenIsToxicToHumans' AI module" @@ -263,7 +264,7 @@ AI MODULES desc = "An 'Asimov' Core AI Module: 'Reconfigures the AI's core laws.'" origin_tech = "programming=3;materials=4" laws = new/datum/ai_laws/asimov - + /******************** Crewsimov ********************/ /obj/item/weapon/aiModule/crewsimov // -- TLE name = "\improper 'Crewsimov' core AI module" @@ -291,7 +292,7 @@ AI MODULES desc = "A 'Drone' Core AI Module: 'Reconfigures the AI's core laws.'" origin_tech = "programming=3;materials=4" laws = new/datum/ai_laws/drone - + /******************** Robocop ********************/ /obj/item/weapon/aiModule/robocop // -- TLE name = "\improper 'Robocop' core AI module" @@ -305,7 +306,7 @@ AI MODULES desc = "A P.A.L.A.D.I.N. Core AI Module: 'Reconfigures the AI's core laws.'" origin_tech = "programming=3;materials=6" laws = new/datum/ai_laws/paladin - + /****************** T.Y.R.A.N.T. *****************/ /obj/item/weapon/aiModule/tyrant // -- Darem name = "\improper 'T.Y.R.A.N.T.' core AI module" @@ -344,7 +345,7 @@ AI MODULES if(!newFreeFormLaw) usr << "No law detected on module, please create one." return 0 - ..() + ..() /******************** Hacked AI Module ******************/ /obj/item/weapon/aiModule/syndicate // Slightly more dynamic freeform module -- TLE @@ -374,7 +375,7 @@ AI MODULES if(!newFreeFormLaw) usr << "No law detected on module, please create one." return 0 - ..() + ..() /******************* Ion Module *******************/ /obj/item/weapon/aiModule/toyAI // -- Incoming //No actual reason to inherit from ion boards here, either. *sigh* ~Miauw diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 9ecfdf3a33e..f4bff0bb7a6 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -18,7 +18,7 @@ RCD throw_speed = 3 throw_range = 5 w_class = 3.0 - m_amt = 100000 + materials = list(MAT_METAL=100000) origin_tech = "engineering=4;materials=2" var/datum/effect/effect/system/spark_spread/spark_system var/max_matter = 100 @@ -206,8 +206,7 @@ RCD density = 0 anchored = 0.0 origin_tech = "materials=2" - m_amt = 16000 - g_amt = 8000 + materials = list(MAT_METAL=16000, MAT_GLASS=8000) var/ammoamt = 20 /obj/item/weapon/rcd_ammo/large diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index 22226dcdcea..51fe775d82c 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -320,7 +320,7 @@ user << "The instructions on [defib] don't mention how to revive that..." return else - if(user.a_intent == "harm" && !defib.safety) + if(user.a_intent == I_HARM && !defib.safety) busy = 1 H.visible_message("[user] has touched [H.name] with [src]!", \ "[user] has touched [H.name] with [src]!") @@ -435,7 +435,7 @@ user << "This unit is only designed to work on humanoid lifeforms." return else - if(user.a_intent == "harm" && !safety) + if(user.a_intent == I_HARM && !safety) busy = 1 H.visible_message("[user] has touched [H.name] with [src]!", \ "[user] has touched [H.name] with [src]!") diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index 902ce1e052a..d36cf7c367c 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -11,7 +11,7 @@ throw_speed = 2 throw_range = 7 force = 10 - m_amt = 90 + materials = list(MAT_METAL=90) attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed") var/max_water = 50 var/last_use = 1.0 @@ -31,7 +31,7 @@ throwforce = 2 w_class = 2.0 force = 3.0 - m_amt = 0 + materials = list() max_water = 30 sprite_name = "miniFE" diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index 57aec40f09e..e148d6bc7ff 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -10,7 +10,7 @@ throw_speed = 1 throw_range = 5 w_class = 3.0 - m_amt = 500 + materials = list(MAT_METAL=500) origin_tech = "combat=1;plasmatech=1" var/status = 0 var/throw_amount = 100 diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 49149671f56..fc6636b6561 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -10,7 +10,7 @@ w_class = 2.0 throw_speed = 2 throw_range = 5 - m_amt = 500 + materials = list(MAT_METAL=500) origin_tech = "materials=1" var/breakouttime = 600 //Deciseconds = 60s = 1 minutes var/cuffsound = 'sound/weapons/handcuffs.ogg' @@ -63,7 +63,7 @@ var/last_chew = 0 var/mob/living/carbon/human/H = A if (!H.handcuffed) return - if (H.a_intent != "harm") + if (H.a_intent != I_HARM) return if (H.zone_sel.selecting != "mouth") return diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index c964dd1e0b4..820a3311cff 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -4,6 +4,7 @@ name = "implant" icon = 'icons/obj/device.dmi' icon_state = "implant" + origin_tech = "materials=2;biotech=3;programming=2" var/implanted = null var/mob/living/imp_in = null var/obj/item/organ/external/part = null @@ -52,6 +53,7 @@ /obj/item/weapon/implant/tracking name = "tracking" desc = "Track with this." + origin_tech = "materials=2;magnets=2;programming=2;biotech=2" var/id = 1.0 @@ -92,6 +94,7 @@ Implant Specifics:
"} /obj/item/weapon/implant/dexplosive name = "explosive" desc = "And boom goes the weasel." + origin_tech = "materials=2;combat=3;biotech=4;syndicate=4" icon_state = "implant_evil" get_data() @@ -127,6 +130,7 @@ Implant Specifics:
"} /obj/item/weapon/implant/explosive name = "explosive implant" desc = "A military grade micro bio-explosive. Highly dangerous." + origin_tech = "materials=2;combat=3;biotech=4;syndicate=4" var/elevel = "Localized Limb" var/phrase = "supercalifragilisticexpialidocious" icon_state = "implant_evil" @@ -252,6 +256,7 @@ Implant Specifics:
"} /obj/item/weapon/implant/chem name = "chem" desc = "Injects things." + origin_tech = "materials=3;biotech=4" allow_reagents = 1 get_data() @@ -316,6 +321,7 @@ the implant may become unstable and either pre-maturely inject the subject or si /obj/item/weapon/implant/loyalty name = "loyalty" desc = "Makes you loyal or such." + origin_tech = "materials=2;biotech=4;programming=4" get_data() var/dat = {" @@ -406,6 +412,7 @@ the implant may become unstable and either pre-maturely inject the subject or si /obj/item/weapon/implant/adrenalin name = "adrenalin" desc = "Removes all stuns and knockdowns." + origin_tech = "materials=2;biotech=4;combat=3;syndicate=4" var/uses = 3 get_data() @@ -436,7 +443,7 @@ the implant may become unstable and either pre-maturely inject the subject or si source.reagents.add_reagent("synaptizine", 10) source.reagents.add_reagent("omnizine", 10) - source.reagents.add_reagent("methamphetamine", 10) + source.reagents.add_reagent("stimulative_agent", 10) return @@ -523,6 +530,7 @@ the implant may become unstable and either pre-maturely inject the subject or si name = "compressed matter implant" desc = "Based on compressed matter technology, can store a single item." icon_state = "implant_evil" + origin_tech = "materials=2;magnets=4;bluespace=4;syndicate=4" var/activation_emote = "sigh" var/obj/item/scanned = null @@ -574,7 +582,7 @@ the implant may become unstable and either pre-maturely inject the subject or si /obj/item/weapon/implant/emp name = "emp implant" desc = "Triggers an EMP." - + origin_tech = "materials=2;biotech=3;magnets=4;syndicate=4" var/activation_emote = "chuckle" var/uses = 2 diff --git a/code/game/objects/items/weapons/implants/implantcase.dm b/code/game/objects/items/weapons/implants/implantcase.dm index f4f9f3d2400..f32764ae410 100644 --- a/code/game/objects/items/weapons/implants/implantcase.dm +++ b/code/game/objects/items/weapons/implants/implantcase.dm @@ -8,7 +8,14 @@ throw_speed = 1 throw_range = 5 w_class = 1.0 + origin_tech = "materials=1;biotech=2" + materials = list(MAT_GLASS=500) var/obj/item/weapon/implant/imp = null + + New() + ..() + update() + proc update() @@ -16,8 +23,10 @@ update() if (src.imp) src.icon_state = text("implantcase-[]", src.imp._color) + src.origin_tech = src.imp.origin_tech else src.icon_state = "implantcase-0" + src.origin_tech = initial(src.origin_tech) return @@ -148,4 +157,15 @@ New() src.imp = new /obj/item/weapon/implant/freedom( src ) ..() + return + +/obj/item/weapon/implantcase/adrenaline + name = "Glass Case- 'Adrenaline'" + desc = "A glass case containing an adrenaline implant." + icon = 'icons/obj/items.dmi' + icon_state = "implantcase-b" + + New() + src.imp = new /obj/item/weapon/implant/adrenalin( src ) + ..() return \ No newline at end of file diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index 423ab379253..f0cad339826 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -6,16 +6,23 @@ throw_speed = 1 throw_range = 5 w_class = 2.0 + origin_tech = "materials=1;biotech=3;programming=2" var/obj/item/weapon/implant/imp = null +/obj/item/weapon/implanter/New() + ..() + update() + /obj/item/weapon/implanter/proc/update() /obj/item/weapon/implanter/update() if (src.imp) src.icon_state = "implanter1" + src.origin_tech = src.imp.origin_tech else src.icon_state = "implanter0" + src.origin_tech = initial(src.origin_tech) return diff --git a/code/game/objects/items/weapons/implants/implantfreedom.dm b/code/game/objects/items/weapons/implants/implantfreedom.dm index 9b225ac70fc..68497e500b7 100644 --- a/code/game/objects/items/weapons/implants/implantfreedom.dm +++ b/code/game/objects/items/weapons/implants/implantfreedom.dm @@ -5,12 +5,12 @@ desc = "Use this to escape from those evil Red Shirts." _color = "r" var/activation_emote = "chuckle" - var/uses = 1.0 + origin_tech = "materials=2;magnets=3;biotech=3;syndicate=4" + var/uses = 4 New() src.activation_emote = pick("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink") - src.uses = rand(1, 5) ..() return diff --git a/code/game/objects/items/weapons/implants/implantuplink.dm b/code/game/objects/items/weapons/implants/implantuplink.dm index 05b50b49b03..6e7fac76a6c 100644 --- a/code/game/objects/items/weapons/implants/implantuplink.dm +++ b/code/game/objects/items/weapons/implants/implantuplink.dm @@ -1,6 +1,7 @@ /obj/item/weapon/implant/uplink name = "uplink" desc = "Summon things." + origin_tech = "materials=2;magnets=4;programming=4;biotech=4;syndicate=8;bluespace=5" var/activation_emote = "chuckle" /obj/item/weapon/implant/uplink/New() diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 8f1832b170b..f1980d417c2 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -40,7 +40,7 @@ if(!istype(M)) return ..() - if(user.a_intent != "help") + if(user.a_intent != I_HELP) if(user.zone_sel.selecting == "head" || user.zone_sel.selecting == "eyes") if((CLUMSY in user.mutations) && prob(50)) M = user @@ -141,7 +141,7 @@ throwforce = 6.0 throw_speed = 3 throw_range = 6 - m_amt = 12000 + materials = list(MAT_METAL=12000) origin_tech = "materials=1" attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") @@ -183,7 +183,7 @@ throwforce = 8.0 throw_speed = 3 throw_range = 6 - m_amt = 12000 + materials = list(MAT_METAL=12000) origin_tech = "materials=1" attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") sharp = 1 diff --git a/code/game/objects/items/weapons/misc.dm b/code/game/objects/items/weapons/misc.dm index 01bac424342..90191efbf70 100644 --- a/code/game/objects/items/weapons/misc.dm +++ b/code/game/objects/items/weapons/misc.dm @@ -31,7 +31,7 @@ force = 5.0 throwforce = 7.0 w_class = 2.0 - m_amt = 50 + materials = list(MAT_METAL=50) attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed") /obj/item/weapon/c_tube diff --git a/code/game/objects/items/weapons/paint.dm b/code/game/objects/items/weapons/paint.dm index d35714f2111..866efe8763c 100644 --- a/code/game/objects/items/weapons/paint.dm +++ b/code/game/objects/items/weapons/paint.dm @@ -8,8 +8,7 @@ var/global/list/cached_icons = list() icon = 'icons/obj/items.dmi' icon_state = "paint_neutral" item_state = "paintcan" - m_amt = 200 - g_amt = 0 + materials = list(MAT_METAL=200) w_class = 3.0 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(10,20,30,50,70) diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index 1bde9648905..e60b78df8d0 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -13,12 +13,9 @@ var/charge = 0 // note %age conveted to actual charge in New var/maxcharge = 10000 rating = 1 - m_amt = 700 - g_amt = 50 + materials = list(MAT_METAL=700, MAT_GLASS=50) var/rigged = 0 // true if rigged to explode var/minor_fault = 0 //If not 100% reliable, it will build up faults. - var/construction_cost = list("metal"=750,"glass"=75) - var/construction_time=100 suicide_act(mob/user) viewers(user) << "[user] is licking the electrodes of the [src.name]! It looks like \he's trying to commit suicide." @@ -30,7 +27,7 @@ origin_tech = "powerstorage=0" maxcharge = 5000 rating = 2 - g_amt = 40 + materials = list(MAT_GLASS=40) /obj/item/weapon/stock_parts/cell/crap/empty/New() ..() @@ -41,7 +38,7 @@ origin_tech = "powerstorage=0" maxcharge = 6000 //6000 max charge / 1000 charge per shot = six shots rating = 2.5 - g_amt = 40 + materials = list(MAT_GLASS=40) /obj/item/weapon/stock_parts/cell/secborg/empty/New() ..() @@ -53,7 +50,7 @@ icon_state = "hcell" maxcharge = 15000 rating = 3 - g_amt = 60 + materials = list(MAT_GLASS=60) /obj/item/weapon/stock_parts/cell/high/empty/New() ..() @@ -64,9 +61,8 @@ origin_tech = "powerstorage=5" icon_state = "scell" maxcharge = 20000 - g_amt = 70 + materials = list(MAT_GLASS=70) rating = 4 - construction_cost = list("metal"=750,"glass"=100) /obj/item/weapon/stock_parts/cell/super/empty/New() ..() @@ -78,8 +74,7 @@ icon_state = "hpcell" maxcharge = 30000 rating = 5 - g_amt = 80 - construction_cost = list("metal"=500,"glass"=150,"gold"=200,"silver"=200) + materials = list(MAT_GLASS=80) /obj/item/weapon/stock_parts/cell/hyper/empty/New() ..() @@ -90,9 +85,8 @@ origin_tech = "powerstorage=7" icon_state = "bscell" maxcharge = 40000 - g_amt = 80 + materials = list(MAT_GLASS=80) rating = 6 - construction_cost = list("metal"=800,"gold"=300,"silver"=300,"glass"=160,"diamond"=160) /obj/item/weapon/stock_parts/cell/bluespace/empty/New() ..() @@ -104,7 +98,7 @@ origin_tech = null maxcharge = 30000 rating = 6 - g_amt = 80 + materials = list(MAT_GLASS=80) use() return 1 @@ -117,8 +111,7 @@ charge = 100 maxcharge = 3000 rating = 1 - m_amt = 0 - g_amt = 0 + materials = list() minor_fault = 1 @@ -130,8 +123,7 @@ icon_state = "yellow slime extract" //"potato_battery" maxcharge = 10000 rating = 3 - m_amt = 0 - g_amt = 0 + materials = list() /obj/item/weapon/stock_parts/cell/pulse/carbine name = "pulse carbine power cell" @@ -146,7 +138,7 @@ desc = "A standard ninja-suit power cell." maxcharge = 10000 rating = 3 - g_amt = 60 + materials = list(MAT_GLASS=60) /obj/item/weapon/stock_parts/cell/emproof name = "\improper EMP-proof cell" diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm index dab7a54de78..546d0df61b4 100644 --- a/code/game/objects/items/weapons/shards.dm +++ b/code/game/objects/items/weapons/shards.dm @@ -11,7 +11,7 @@ force = 5.0 throwforce = 10.0 item_state = "shard-glass" - g_amt = MINERAL_MATERIAL_AMOUNT + materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT) attack_verb = list("stabbed", "slashed", "sliced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 760e0633f56..16ea25939d8 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -12,8 +12,7 @@ throw_speed = 2 throw_range = 3 w_class = 4 - g_amt = 7500 - m_amt = 1000 + materials = list(MAT_GLASS=7500, MAT_METAL=1000) origin_tech = "materials=2" attack_verb = list("shoved", "bashed") var/cooldown = 0 //shield bash cooldown. based on world.time diff --git a/code/game/objects/items/weapons/stock_parts.dm b/code/game/objects/items/weapons/stock_parts.dm index 94c3fcc75f7..205f2c2e234 100644 --- a/code/game/objects/items/weapons/stock_parts.dm +++ b/code/game/objects/items/weapons/stock_parts.dm @@ -74,45 +74,42 @@ desc = "Used in the construction of computers and other devices with a interactive console." icon_state = "screen" origin_tech = "materials=1" - g_amt = 200 + materials = list(MAT_GLASS=200) /obj/item/weapon/stock_parts/capacitor name = "capacitor" desc = "A basic capacitor used in the construction of a variety of devices." icon_state = "capacitor" origin_tech = "powerstorage=1" - m_amt = 50 - g_amt = 50 + materials = list(MAT_METAL=50, MAT_GLASS=50) /obj/item/weapon/stock_parts/scanning_module name = "scanning module" desc = "A compact, high resolution scanning module used in the construction of certain devices." icon_state = "scan_module" origin_tech = "magnets=1" - m_amt = 50 - g_amt = 20 + materials = list(MAT_METAL=50, MAT_GLASS=20) /obj/item/weapon/stock_parts/manipulator name = "micro-manipulator" desc = "A tiny little manipulator used in the construction of certain devices." icon_state = "micro_mani" origin_tech = "materials=1;programming=1" - m_amt = 30 + materials = list(MAT_METAL=30) /obj/item/weapon/stock_parts/micro_laser name = "micro-laser" desc = "A tiny laser used in certain devices." icon_state = "micro_laser" origin_tech = "magnets=1" - m_amt = 10 - g_amt = 20 + materials = list(MAT_METAL=10, MAT_GLASS=20) /obj/item/weapon/stock_parts/matter_bin name = "matter bin" desc = "A container for hold compressed matter awaiting re-construction." icon_state = "matter_bin" origin_tech = "materials=1" - m_amt = 80 + materials = list(MAT_METAL=80) //Rank 2 @@ -122,8 +119,7 @@ icon_state = "adv_capacitor" origin_tech = "powerstorage=3" rating = 2 - m_amt = 50 - g_amt = 50 + materials = list(MAT_METAL=50, MAT_GLASS=50) /obj/item/weapon/stock_parts/scanning_module/adv name = "advanced scanning module" @@ -131,8 +127,7 @@ icon_state = "adv_scan_module" origin_tech = "magnets=3" rating = 2 - m_amt = 50 - g_amt = 20 + materials = list(MAT_METAL=50, MAT_GLASS=20) /obj/item/weapon/stock_parts/manipulator/nano name = "nano-manipulator" @@ -140,7 +135,7 @@ icon_state = "nano_mani" origin_tech = "materials=3,programming=2" rating = 2 - m_amt = 30 + materials = list(MAT_METAL=30) /obj/item/weapon/stock_parts/micro_laser/high name = "high-power micro-laser" @@ -148,8 +143,7 @@ icon_state = "high_micro_laser" origin_tech = "magnets=3" rating = 2 - m_amt = 10 - g_amt = 20 + materials = list(MAT_METAL=10, MAT_GLASS=20) /obj/item/weapon/stock_parts/matter_bin/adv name = "advanced matter bin" @@ -157,7 +151,7 @@ icon_state = "advanced_matter_bin" origin_tech = "materials=3" rating = 2 - m_amt = 80 + materials = list(MAT_METAL=80) //Rating 3 @@ -167,8 +161,7 @@ icon_state = "super_capacitor" origin_tech = "powerstorage=5;materials=4" rating = 3 - m_amt = 50 - g_amt = 50 + materials = list(MAT_METAL=50, MAT_GLASS=50) /obj/item/weapon/stock_parts/scanning_module/phasic name = "phasic scanning module" @@ -176,8 +169,7 @@ icon_state = "super_scan_module" origin_tech = "magnets=5" rating = 3 - m_amt = 50 - g_amt = 20 + materials = list(MAT_METAL=50, MAT_GLASS=20) /obj/item/weapon/stock_parts/manipulator/pico name = "pico-manipulator" @@ -185,7 +177,7 @@ icon_state = "pico_mani" origin_tech = "materials=5,programming=2" rating = 3 - m_amt = 30 + materials = list(MAT_METAL=30) /obj/item/weapon/stock_parts/micro_laser/ultra name = "ultra-high-power micro-laser" @@ -193,8 +185,7 @@ desc = "A tiny laser used in certain devices." origin_tech = "magnets=5" rating = 3 - m_amt = 10 - g_amt = 20 + materials = list(MAT_METAL=10, MAT_GLASS=20) /obj/item/weapon/stock_parts/matter_bin/super name = "super matter bin" @@ -202,7 +193,7 @@ icon_state = "super_matter_bin" origin_tech = "materials=5" rating = 3 - m_amt = 80 + materials = list(MAT_METAL=80) //Rating 4 @@ -212,8 +203,7 @@ icon_state = "quadratic_capacitor" origin_tech = "powerstorage=6;materials=5" rating = 4 - m_amt = 50 - g_amt = 50 + materials = list(MAT_METAL=50, MAT_GLASS=50) /obj/item/weapon/stock_parts/scanning_module/triphasic name = "triphasic scanning module" @@ -221,8 +211,7 @@ icon_state = "triphasic_scan_module" origin_tech = "magnets=6" rating = 4 - m_amt = 50 - g_amt = 20 + materials = list(MAT_METAL=50, MAT_GLASS=20) /obj/item/weapon/stock_parts/manipulator/femto name = "femto-manipulator" @@ -230,7 +219,7 @@ icon_state = "femto_mani" origin_tech = "materials=6;programming=3" rating = 4 - m_amt = 30 + materials = list(MAT_METAL=30) /obj/item/weapon/stock_parts/micro_laser/quadultra name = "quad-ultra micro-laser" @@ -238,8 +227,7 @@ desc = "A tiny laser used in certain devices." origin_tech = "magnets=6" rating = 4 - m_amt = 10 - g_amt = 20 + materials = list(MAT_METAL=10, MAT_GLASS=20) /obj/item/weapon/stock_parts/matter_bin/bluespace name = "bluespace matter bin" @@ -247,7 +235,7 @@ icon_state = "bluespace_matter_bin" origin_tech = "materials=6" rating = 4 - m_amt = 80 + materials = list(MAT_METAL=80) // Subspace stock parts @@ -256,54 +244,49 @@ icon_state = "subspace_ansible" desc = "A compact module capable of sensing extradimensional activity." origin_tech = "programming=2;magnets=3;materials=2;bluespace=1" - m_amt = 30 - g_amt = 10 + materials = list(MAT_METAL=30, MAT_GLASS=10) /obj/item/weapon/stock_parts/subspace/filter name = "hyperwave filter" icon_state = "hyperwave_filter" desc = "A tiny device capable of filtering and converting super-intense radiowaves." origin_tech = "programming=2;magnets=1" - m_amt = 30 - g_amt = 10 + materials = list(MAT_METAL=30, MAT_GLASS=10) /obj/item/weapon/stock_parts/subspace/amplifier name = "subspace amplifier" icon_state = "subspace_amplifier" desc = "A compact micro-machine capable of amplifying weak subspace transmissions." origin_tech = "programming=2;magnets=2;materials=1;bluespace=1" - m_amt = 30 - g_amt = 10 + materials = list(MAT_METAL=30, MAT_GLASS=10) /obj/item/weapon/stock_parts/subspace/treatment name = "subspace treatment disk" icon_state = "treatment_disk" desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves." origin_tech = "programming=2;magnets=1;materials=3;bluespace=1" - m_amt = 30 - g_amt = 10 + materials = list(MAT_METAL=30, MAT_GLASS=10) /obj/item/weapon/stock_parts/subspace/analyzer name = "subspace wavelength analyzer" icon_state = "wavelength_analyzer" desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." origin_tech = "programming=2;magnets=2;materials=2;bluespace=1" - m_amt = 30 - g_amt = 10 + materials = list(MAT_METAL=30, MAT_GLASS=10) /obj/item/weapon/stock_parts/subspace/crystal name = "ansible crystal" icon_state = "ansible_crystal" desc = "A crystal made from pure glass used to transmit laser databursts to subspace." origin_tech = "magnets=2;materials=2;bluespace=1" - g_amt = 50 + materials = list(MAT_GLASS=50) /obj/item/weapon/stock_parts/subspace/transmitter name = "subspace transmitter" icon_state = "subspace_transmitter" desc = "A large piece of equipment used to open a window into the subspace dimension." origin_tech = "magnets=3;materials=3;bluespace=2" - m_amt = 50 + materials = list(MAT_METAL=50) /obj/item/weapon/research//Makes testing much less of a pain -Sieve name = "research" diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 4a57227afa0..2e59a30fb9c 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -231,19 +231,63 @@ max_combined_w_class = 27 slowdown = 1 -/obj/item/weapon/storage/backpack/duffel/syndimed +/obj/item/weapon/storage/backpack/duffel/syndie + name = "suspicious looking dufflebag" + desc = "A large dufflebag for holding extra tactical supplies." + icon_state = "duffel-syndi" + item_state = "duffel-syndimed" + origin_tech = "syndicate=1" + silent = 1 + slowdown = 0 + +/obj/item/weapon/storage/backpack/duffel/syndie/med name = "suspicious duffelbag" desc = "A black and red duffelbag with a red and white cross sewn onto it." icon_state = "duffel-syndimed" item_state = "duffel-syndimed" - slowdown = 0 -/obj/item/weapon/storage/backpack/duffel/syndiammo +/obj/item/weapon/storage/backpack/duffel/syndie/ammo name = "suspicious duffelbag" desc = "A black and red duffelbag with a patch depicting shotgun shells sewn onto it." icon_state = "duffel-syndiammo" item_state = "duffel-syndiammo" - slowdown = 0 + +/obj/item/weapon/storage/backpack/duffel/syndie/ammo/loaded + desc = "A large dufflebag, packed to the brim with Bulldog shotgun ammo." + +/obj/item/weapon/storage/backpack/duffel/syndie/ammo/loaded/New() + ..() + new /obj/item/ammo_box/magazine/m12g(src) + new /obj/item/ammo_box/magazine/m12g(src) + new /obj/item/ammo_box/magazine/m12g(src) + new /obj/item/ammo_box/magazine/m12g(src) + new /obj/item/ammo_box/magazine/m12g(src) + new /obj/item/ammo_box/magazine/m12g(src) + new /obj/item/ammo_box/magazine/m12g/buckshot(src) + new /obj/item/ammo_box/magazine/m12g/stun(src) + new /obj/item/ammo_box/magazine/m12g/dragon(src) + +/obj/item/weapon/storage/backpack/duffel/syndie/surgery + name = "surgery dufflebag" + desc = "A suspicious looking dufflebag for holding surgery tools." + icon_state = "duffel-syndimed" + item_state = "duffle-syndimed" + storage_slots = 12 + +/obj/item/weapon/storage/backpack/duffel/syndie/surgery/New() + ..() + new /obj/item/weapon/scalpel(src) + new /obj/item/weapon/hemostat(src) + new /obj/item/weapon/retractor(src) + new /obj/item/weapon/circular_saw(src) + new /obj/item/weapon/surgicaldrill(src) + new /obj/item/weapon/cautery(src) + new /obj/item/weapon/bonegel(src) + new /obj/item/weapon/bonesetter(src) + new /obj/item/weapon/FixOVein(src) + new /obj/item/clothing/suit/straight_jacket(src) + new /obj/item/clothing/mask/muzzle(src) +// new /obj/item/device/mmi/syndie(src) /obj/item/weapon/storage/backpack/duffel/captain name = "captain's duffelbag" diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index bc69a54bc3d..e88e37afd6c 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -365,7 +365,7 @@ throw_range = 5 w_class = 4.0 flags = CONDUCT - m_amt = 3000 + materials = list(MAT_METAL=3000) /obj/item/weapon/storage/bag/tray/attack(mob/living/M as mob, mob/living/user as mob) ..() diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 456a518f75e..5d92705d1ed 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -98,6 +98,7 @@ "/obj/item/clothing/mask/surgical", "/obj/item/clothing/gloves/color/latex", "/obj/item/weapon/reagent_containers/hypospray/autoinjector", + "/obj/item/device/rad_laser", "/obj/item/device/sensor_device" ) @@ -201,6 +202,7 @@ desc = "Proves to the world that you are the strongest!" icon_state = "championbelt" item_state = "champion" + materials = list(MAT_GOLD=400) storage_slots = 1 can_hold = list( "/obj/item/clothing/mask/luchador" diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index 6237792040f..b0106cd1f93 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -94,24 +94,24 @@ return /obj/item/weapon/storage/bible/afterattack(atom/A, mob/user as mob, proximity) - if(!proximity) return -/* if (istype(A, /turf/simulated/floor)) - user << "\blue You hit the floor with the bible." + if(!proximity) + return + if (istype(A, /turf/simulated/floor)) + user << "You hit the floor with the bible." if(user.mind && (user.mind.assigned_role == "Chaplain")) - call(/obj/effect/rune/proc/revealrunes)(src)*/ + call(/obj/effect/rune/proc/revealrunes)(src) if(user.mind && (user.mind.assigned_role == "Chaplain")) if(A.reagents && A.reagents.has_reagent("water")) //blesses all the water in the holder - user << "\blue You bless [A]." + user << "You bless [A]." var/water2holy = A.reagents.get_reagent_amount("water") A.reagents.del_reagent("water") A.reagents.add_reagent("holywater",water2holy) + if(A.reagents && A.reagents.has_reagent("unholywater")) //yeah yeah, copy pasted code - sue me + user << "You purify [A]." + var/unholy2clean = A.reagents.get_reagent_amount("unholywater") + A.reagents.del_reagent("unholywater") + A.reagents.add_reagent("holywater",unholy2clean) /obj/item/weapon/storage/bible/attackby(obj/item/weapon/W as obj, mob/user as mob, params) playsound(src.loc, "rustle", 50, 1, -5) - ..() - - if(W.reagents && W.reagents.has_reagent("water")) - user << "You feel [deity_name] blessing \the [W] as you insert it into \the [src]." - var/water2holy = W.reagents.get_reagent_amount("water") - W.reagents.del_reagent("water") - W.reagents.add_reagent("holywater",water2holy) + ..() \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index aae00e3c793..d360ecf9bb7 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -133,7 +133,7 @@ /obj/item/weapon/storage/box/gauge name = "box of 12 gauge slugs" desc = "It has a picture of a gun and several warning symbols on the front." - m_amt = 50000 + materials = list(MAT_METAL=28000) New() ..() diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index a8551e96fd6..65bf38cd961 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -9,6 +9,7 @@ name = "storage" icon = 'icons/obj/storage.dmi' w_class = 3.0 + var/silent = 0 // No message on putting items in var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else) var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set) var/max_w_class = 2 //Max size of objects that this object can store (in effect only if can_hold isn't set) @@ -292,6 +293,8 @@ if(!usr.unEquip(W)) return 0 usr.update_icons() //update our overlays + if(silent) + prevent_warning = 1 W.loc = src W.on_enter_storage(src) if(usr) diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index fb10938e6f4..51adfcd5a4c 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -10,6 +10,7 @@ throw_speed = 2 throw_range = 7 w_class = 4.0 + materials = list(MAT_METAL = 500) origin_tech = "combat=1" attack_verb = list("robusted") hitsound = "sound/weapons/smash.ogg" @@ -76,6 +77,7 @@ icon_state = "syndicate" item_state = "toolbox_syndi" origin_tech = "combat=1;syndicate=1" + silent = 1 force = 15.0 throwforce = 18.0 @@ -87,4 +89,4 @@ new /obj/item/weapon/crowbar(src) new /obj/item/weapon/wirecutters(src) new /obj/item/device/multitool(src) - new /obj/item/clothing/gloves/color/red/insulated(src) \ No newline at end of file + new /obj/item/clothing/gloves/combat(src) \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 09fa9b17db8..d676b3ba967 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -207,4 +207,18 @@ new /obj/item/weapon/grenade/chem_grenade/tabungas(src) new /obj/item/weapon/grenade/chem_grenade/tabungas(src) new /obj/item/weapon/grenade/chem_grenade/tabungas(src) - new /obj/item/weapon/grenade/chem_grenade/tabungas(src) \ No newline at end of file + new /obj/item/weapon/grenade/chem_grenade/tabungas(src) + +/obj/item/weapon/storage/box/syndie_kit/bioterror + name = "bioterror syringe box" + + New() + ..() + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + return \ No newline at end of file diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 7273b9e107c..1416602d4fd 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -117,7 +117,7 @@ var/mob/living/L = M - if(user.a_intent != "harm") + if(user.a_intent != I_HARM) if(status) user.do_attack_animation(L) baton_stun(L, user) diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index d0619606d57..66683b26abe 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -126,7 +126,7 @@ return if(!isliving(target)) return - if (user.a_intent == "harm") + if (user.a_intent == I_HARM) if(!..()) return if(!isrobot(target)) return else diff --git a/code/game/objects/items/weapons/syndie_uplink.dm b/code/game/objects/items/weapons/syndie_uplink.dm index 825a55865be..173c9ff2960 100644 --- a/code/game/objects/items/weapons/syndie_uplink.dm +++ b/code/game/objects/items/weapons/syndie_uplink.dm @@ -14,7 +14,7 @@ item_state = "radio" throw_speed = 4 throw_range = 20 - m_amt = 100 + materials = list(MAT_METAL=100) origin_tech = "magnets=2;syndicate=3"*/ /obj/item/weapon/SWF_uplink @@ -34,5 +34,5 @@ w_class = 2.0 throw_speed = 4 throw_range = 20 - m_amt = 100 + materials = list(MAT_METAL=100) origin_tech = "magnets=1" \ No newline at end of file diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm index 22a31ae1dc8..eed1f37ef55 100644 --- a/code/game/objects/items/weapons/table_rack_parts.dm +++ b/code/game/objects/items/weapons/table_rack_parts.dm @@ -12,7 +12,7 @@ gender = PLURAL icon = 'icons/obj/items.dmi' icon_state = "table_parts" - m_amt = 3750 + materials = list(MAT_METAL=3750) flags = CONDUCT attack_verb = list("slammed", "bashed", "battered", "bludgeoned", "thrashed", "whacked") @@ -21,7 +21,7 @@ desc = "Hard table parts. Well...harder..." icon = 'icons/obj/items.dmi' icon_state = "reinf_tableparts" - m_amt = 7500 + materials = list(MAT_METAL=7500) flags = CONDUCT /obj/item/weapon/table_parts/wood @@ -42,7 +42,7 @@ icon = 'icons/obj/items.dmi' icon_state = "rack_parts" flags = CONDUCT - m_amt = 3750 + materials = list(MAT_METAL=3750) /* * Table Parts diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index 3f1ff7cc85e..5b99f645368 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -21,7 +21,7 @@ item_state = "electronic" throw_speed = 4 throw_range = 20 - m_amt = 400 + materials = list(MAT_METAL=400) origin_tech = "magnets=1" /obj/item/weapon/locator/attack_self(mob/user as mob) @@ -132,7 +132,7 @@ Frequency: w_class = 2.0 throw_speed = 3 throw_range = 5 - m_amt = 10000 + materials = list(MAT_METAL=10000) origin_tech = "magnets=1;bluespace=3" var/active_portals = 0 diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 031ae5ccd9b..af98d810510 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -25,7 +25,7 @@ force = 5.0 throwforce = 7.0 w_class = 2.0 - m_amt = 150 + materials = list(MAT_METAL=150) origin_tech = "materials=1;engineering=1" attack_verb = list("bashed", "battered", "bludgeoned", "whacked") @@ -35,7 +35,7 @@ */ /obj/item/weapon/screwdriver name = "screwdriver" - desc = "You can be totally screwwy with this." + desc = "You can be totally screwy with this." icon = 'icons/obj/items.dmi' icon_state = "screwdriver" flags = CONDUCT @@ -45,8 +45,7 @@ throwforce = 5.0 throw_speed = 3 throw_range = 5 - g_amt = 0 - m_amt = 75 + materials = list(MAT_METAL=75) attack_verb = list("stabbed") hitsound = 'sound/weapons/bladeslice.ogg' @@ -84,7 +83,7 @@ return /obj/item/weapon/screwdriver/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - if(!istype(M) || user.a_intent == "help") + if(!istype(M) || user.a_intent == I_HELP) return ..() if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head") return ..() @@ -106,7 +105,7 @@ throw_speed = 3 throw_range = 7 w_class = 2.0 - m_amt = 80 + materials = list(MAT_METAL=80) origin_tech = "materials=1;engineering=1" attack_verb = list("pinched", "nipped") hitsound = "sound/items/Wirecutter.ogg" @@ -148,8 +147,7 @@ w_class = 2.0 //Cost to make in the autolathe - m_amt = 70 - g_amt = 20 + materials = list(MAT_METAL=70, MAT_GLASS=30) //R&D tech level origin_tech = "engineering=1" @@ -409,24 +407,21 @@ /obj/item/weapon/weldingtool/largetank name = "Industrial Welding Tool" max_fuel = 40 - m_amt = 70 - g_amt = 60 + materials = list(MAT_METAL=70, MAT_GLASS=60) origin_tech = "engineering=2" /obj/item/weapon/weldingtool/hugetank name = "Upgraded Welding Tool" max_fuel = 80 w_class = 3.0 - m_amt = 70 - g_amt = 120 + materials = list(MAT_METAL=70, MAT_GLASS=120) origin_tech = "engineering=3" /obj/item/weapon/weldingtool/experimental name = "Experimental Welding Tool" max_fuel = 40 w_class = 3.0 - m_amt = 70 - g_amt = 120 + materials = list(MAT_METAL=70, MAT_GLASS=120) origin_tech = "engineering=4;plasma=3" icon_state = "ewelder" var/last_gen = 0 @@ -454,7 +449,7 @@ throwforce = 7.0 item_state = "crowbar" w_class = 2.0 - m_amt = 50 + materials = list(MAT_METAL=50) origin_tech = "engineering=1" attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked") @@ -470,7 +465,7 @@ w_class = 3 throw_speed = 3 throw_range = 3 - m_amt = 66 + materials = list(MAT_METAL=70) icon_state = "crowbar_large" /obj/item/weapon/weldingtool/attack(mob/M as mob, mob/user as mob) @@ -478,9 +473,9 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/external/S = H.organs_by_name[user.zone_sel.selecting] - if (!S) + if (!S) return - if(!(S.status & ORGAN_ROBOT) || user.a_intent != "help" || S.open == 2) + if(!(S.status & ORGAN_ROBOT) || user.a_intent != I_HELP || S.open == 2) return ..() if(S.brute_dam) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index ee6fb876f05..2440e4d05fb 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -57,12 +57,6 @@ M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) ..() - -/obj/item/weapon/nullrod/afterattack(atom/A, mob/user as mob) - if (istype(A, /turf/simulated/floor)) - user << "\blue You hit the floor with the [src]." - call(/obj/effect/rune/proc/revealrunes)(src) - /obj/item/weapon/sord name = "\improper SORD" desc = "This thing is so unspeakably shitty you are having a hard time even holding it." @@ -158,7 +152,7 @@ obj/item/weapon/wirerod force = 9 throwforce = 10 w_class = 3 - m_amt = 1875 + materials = list(MAT_METAL=1875) attack_verb = list("hit", "bludgeoned", "whacked", "bonked") obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob, params) diff --git a/code/game/objects/items/weapons/wires.dm b/code/game/objects/items/weapons/wires.dm index 6ab0138391e..e1b943f7897 100644 --- a/code/game/objects/items/weapons/wires.dm +++ b/code/game/objects/items/weapons/wires.dm @@ -8,7 +8,7 @@ var/amount = 1.0 var/laying = 0.0 var/old_lay = null - m_amt = 40 + materials = list(MAT_METAL=40) attack_verb = list("whipped", "lashed", "disciplined", "tickled") suicide_act(mob/user) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 467bceac1b8..dc560095e3d 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -1,7 +1,5 @@ /obj //var/datum/module/mod //not used - var/m_amt = 0 // metal - var/g_amt = 0 // glass var/w_amt = 0 // waster amounts var/origin_tech = null //Used by R&D to determine what research bonuses it grants. var/reliability = 100 //Used by SOME devices to determine how reliable they are. diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index 78e90703b9e..c410617775c 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -37,6 +37,7 @@ new /obj/item/device/radio/headset/headset_cargo(src) new /obj/item/clothing/gloves/fingerless(src) // new /obj/item/weapon/cartridge/quartermaster(src) + new /obj/item/weapon/mining_voucher(src) new /obj/item/clothing/suit/fire/firefighter(src) new /obj/item/weapon/tank/emergency_oxygen(src) new /obj/item/clothing/mask/gas(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 058cc02bd2d..cec85a0c694 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -107,6 +107,7 @@ new /obj/item/device/radio/headset/heads/hos/alt(src) new /obj/item/clothing/under/rank/head_of_security(src) new /obj/item/clothing/under/rank/head_of_security/formal(src) + new /obj/item/clothing/under/rank/head_of_security/corp(src) new /obj/item/clothing/suit/armor/hos(src) new /obj/item/clothing/suit/armor/hos/alt(src) new /obj/item/clothing/head/HoS(src) @@ -149,6 +150,7 @@ new /obj/item/clothing/head/beret/sec/warden(src) new /obj/item/clothing/under/rank/warden(src) new /obj/item/clothing/under/rank/warden/formal(src) + new /obj/item/clothing/under/rank/warden/corp(src) new /obj/item/clothing/glasses/sunglasses/sechud(src) new /obj/item/clothing/mask/gas/sechailer(src) new /obj/item/taperoll/police(src) diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index f62f03b175a..5f21f2d0c84 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -43,8 +43,7 @@ new /obj/item/ammo_box/magazine/m10mm(src) new /obj/item/weapon/storage/box/teargas(src) new /obj/item/weapon/storage/box/flashbangs(src) - new /obj/item/weapon/storage/backpack/duffel/syndimed(src) - new /obj/item/weapon/storage/backpack/duffel/syndiammo(src) + new /obj/item/weapon/storage/backpack/duffel/syndie/med(src) new /obj/item/weapon/gun/projectile/automatic/bulldog(src) new /obj/item/weapon/gun/projectile/automatic/bulldog(src) new /obj/item/weapon/gun/projectile/automatic/bulldog(src) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 0e34ed14e68..5b5109a8b9c 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -195,7 +195,7 @@ circuit=null new /obj/machinery/constructable_frame/machine_frame(T) qdel(src) - if(user.a_intent == "harm") + if(user.a_intent == I_HARM) src.health -= W.force src.healthcheck() ..() @@ -219,7 +219,7 @@ src.add_fingerprint(user) update_icon() else - if(user.a_intent == "harm") + if(user.a_intent == I_HARM) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) user.visible_message("\red [user.name] kicks \the [src]!", \ diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm index 10898e80a47..f1eca747755 100644 --- a/code/game/objects/structures/dresser.dm +++ b/code/game/objects/structures/dresser.dm @@ -12,7 +12,7 @@ if(ishuman(user)) var/mob/living/carbon/human/H = user - var/choice = input(user, "Underwear or Undershirt?", "Changing") as null|anything in list("Underwear","Undershirt") + var/choice = input(user, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in list("Underwear","Undershirt","Socks") if(!Adjacent(user)) return @@ -27,5 +27,11 @@ if(new_undershirt) H.undershirt = new_undershirt + if("Socks") + var/new_socks = input(user, "Select your socks", "Changing") as null|anything in socks_list + if(new_socks) + H.socks= new_socks + + add_fingerprint(H) H.update_body() \ No newline at end of file diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index 956bc6d7d07..4af9b504ed3 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -133,7 +133,7 @@ ..() if(!buckled_mob) return - if(propelled || (pulling && (pulling.a_intent == "harm"))) + if(propelled || (pulling && (pulling.a_intent == I_HARM))) var/mob/living/occupant = buckled_mob unbuckle() diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index ae88b3b38f8..7c973eed7ec 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -299,8 +299,8 @@ user.do_attack_animation(src) visible_message("[user] slices [src] apart!") destroy() - -/obj/structure/table/mech_melee_attack(obj/mecha/M) + +/obj/structure/table/mech_melee_attack(obj/mecha/M) visible_message("[M] smashes [src] apart!") destroy() @@ -402,7 +402,7 @@ if (istype(G.affecting, /mob/living)) var/mob/living/M = G.affecting if (G.state < 2) - if(user.a_intent == "harm") + if(user.a_intent == I_HARM) if (prob(15)) M.Weaken(5) M.apply_damage(8,def_zone = "head") visible_message("\red [G.assailant] slams [G.affecting]'s face against \the [src]!") @@ -914,8 +914,8 @@ visible_message("[user] smashes [src] apart!") user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) destroy() - -/obj/structure/rack/mech_melee_attack(obj/mecha/M) + +/obj/structure/rack/mech_melee_attack(obj/mecha/M) visible_message("[M] smashes [src] apart!") destroy() diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index f04ce3ab802..02aed69966e 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -119,7 +119,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) user.visible_message("[user] smashes through [src]!") destroy() - else if (usr.a_intent == "harm") + else if (usr.a_intent == I_HARM) user.changeNext_move(CLICK_CD_MELEE) playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1) usr.visible_message("\red [usr.name] bangs against the [src.name]!", \ diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 1574e440a23..dc67751f667 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -149,6 +149,11 @@ var/list/mechtoys = list( var/points_per_slip = 2 var/points_per_crate = 5 var/points_per_plasma = 5 + var/points_per_intel = 250 //points gained per intel returned + var/points_per_design = 25 //points gained per max reliability research design returned (only for initilally unreliable designs) + + var/list/techLevels = list() + var/list/researchDesigns = list() //control var/ordernum var/list/shoppinglist = list() @@ -201,6 +206,7 @@ var/list/mechtoys = list( if(!area_shuttle) return var/plasma_count = 0 + var/intel_count = 0 for(var/atom/movable/MA in area_shuttle) if(MA.anchored) continue @@ -222,10 +228,37 @@ var/list/mechtoys = list( find_slip = 0 // Sell plasma - else if(istype(A, /obj/item/stack/sheet/mineral/plasma)) + if(istype(A, /obj/item/stack/sheet/mineral/plasma)) var/obj/item/stack/sheet/mineral/plasma/P = A plasma_count += P.amount + // Sell syndicate intel + if(istype(A, /obj/item/documents/syndicate)) + ++intel_count + + // Sell tech levels + if(istype(A, /obj/item/weapon/disk/tech_disk)) + var/obj/item/weapon/disk/tech_disk/disk = A + if(!disk.stored) continue + var/datum/tech/tech = disk.stored + + var/cost = tech.getCost(techLevels[tech.id]) + if(cost) + techLevels[tech.id] = tech.level + points += cost + + // Sell max reliablity designs + if(istype(A, /obj/item/weapon/disk/design_disk)) + var/obj/item/weapon/disk/design_disk/disk = A + if(!disk.blueprint) continue + var/datum/design/design = disk.blueprint + if(design.id in researchDesigns) continue + + if(initial(design.reliability) < 100 && design.reliability >= 100) + // Maxed out reliability designs only. + points += points_per_design + researchDesigns += design.id + // If you send something in a crate, centcom's keeping it! - fixes secure crates being sent to centom to open them qdel(A) qdel(MA) @@ -233,6 +266,9 @@ var/list/mechtoys = list( if(plasma_count) points += plasma_count * points_per_plasma + if(intel_count) + points += intel_count * points_per_intel + //Buyin /datum/controller/supply/proc/buy() if(!shoppinglist.len) return @@ -326,12 +362,12 @@ var/list/mechtoys = list( // data to send to ui var/data[0] data["last_viewed_group"] = last_viewed_group - + var/category_list[0] for(var/category in all_supply_groups) category_list.Add(list(list("name" = get_supply_group_name(category), "category" = category))) data["categories"] = category_list - + var/cat = text2num(last_viewed_group) var/packs_list[0] for(var/set_name in supply_controller.supply_packs) @@ -339,7 +375,7 @@ var/list/mechtoys = list( if(!pack.contraband && !pack.hidden && pack.group == cat) // 0/1 after the pack name (set_name) is a boolean for ordering multiple crates packs_list.Add(list(list("name" = pack.name, "amount" = pack.amount, "cost" = pack.cost, "command1" = list("doorder" = "[set_name]0"), "command2" = list("doorder" = "[set_name]1"), "command3" = list("contents" = set_name)))) - + data["supply_packs"] = packs_list if(content_pack) var/pack_name = sanitize(content_pack.name) @@ -358,19 +394,19 @@ var/list/mechtoys = list( owned = 1 requests_list.Add(list(list("ordernum" = SO.ordernum, "supply_type" = SO.object.name, "orderedby" = SO.orderedby, "owned" = owned, "command1" = list("rreq" = SO.ordernum)))) data["requests"] = requests_list - + var/orders_list[0] for(var/set_name in supply_controller.shoppinglist) var/datum/supply_order/SO = set_name if(SO) orders_list.Add(list(list("ordernum" = SO.ordernum, "supply_type" = SO.object.name, "orderedby" = SO.orderedby))) data["orders"] = orders_list - + data["points"] = supply_controller.points data["send"] = list("send" = 1) - + var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle - data["moving"] = shuttle.has_arrive_time() + data["moving"] = shuttle.has_arrive_time() data["at_station"] = shuttle.at_station() data["timeleft"] = shuttle.eta_minutes() if(shuttle.docking_controller) @@ -391,7 +427,7 @@ var/list/mechtoys = list( visible_message("[src]'s monitor flashes, \"[world.time - reqtime] seconds remaining until another requisition form may be printed.\"") nanomanager.update_uis(src) return - + var/index = copytext(href_list["doorder"], 1, lentext(href_list["doorder"])) //text2num(copytext(href_list["doorder"], 1)) var/multi = text2num(copytext(href_list["doorder"], -1)) if(!isnum(multi)) @@ -402,15 +438,15 @@ var/list/mechtoys = list( var/crates = 1 if(multi) var/num_input = input(usr, "Amount:", "How many crates?", "") as num - crates = Clamp(round(text2num(num_input)), 1, 20) + crates = Clamp(round(text2num(num_input)), 1, 20) if(..()) return var/timeout = world.time + 600 var/reason = sanitize(copytext(input(usr,"Reason:","Why do you require this item?","") as null|text,1,MAX_MESSAGE_LEN)) - if(world.time > timeout || !reason || ..()) + if(world.time > timeout || !reason || ..()) return - + var/idname = "*None Provided*" var/idrank = "*None Provided*" if(ishuman(usr)) @@ -461,7 +497,7 @@ var/list/mechtoys = list( else if (href_list["last_viewed_group"]) content_pack = null last_viewed_group = text2num(href_list["last_viewed_group"]) - + else if (href_list["contents"]) var/topic = href_list["contents"] if(topic == 1) @@ -475,8 +511,8 @@ var/list/mechtoys = list( return /obj/machinery/computer/supplycomp/attack_ai(var/mob/user as mob) - return attack_hand(user) - + return attack_hand(user) + /obj/machinery/computer/supplycomp/attack_hand(var/mob/user as mob) if(!allowed(user) && !isobserver(user)) user << "Access denied." @@ -491,17 +527,17 @@ var/list/mechtoys = list( user << "Special supplies unlocked." hacked = 1 return - + /obj/machinery/computer/supplycomp/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) // data to send to ui var/data[0] data["last_viewed_group"] = last_viewed_group - + var/category_list[0] for(var/category in all_supply_groups) category_list.Add(list(list("name" = get_supply_group_name(category), "category" = category))) - data["categories"] = category_list - + data["categories"] = category_list + var/cat = text2num(last_viewed_group) var/packs_list[0] for(var/set_name in supply_controller.supply_packs) @@ -510,14 +546,14 @@ var/list/mechtoys = list( if(pack.group == cat) // 0/1 after the pack name (set_name) is a boolean for ordering multiple crates packs_list.Add(list(list("name" = pack.name, "amount" = pack.amount, "cost" = pack.cost, "command1" = list("doorder" = "[set_name]0"), "command2" = list("doorder" = "[set_name]1"), "command3" = list("contents" = set_name)))) - + data["supply_packs"] = packs_list if(content_pack) var/pack_name = sanitize(content_pack.name) data["contents_name"] = pack_name data["contents"] = content_pack.manifest data["contents_access"] = get_access_desc(content_pack.access) - + var/requests_list[0] for(var/set_name in supply_controller.requestlist) var/datum/supply_order/SO = set_name @@ -526,19 +562,19 @@ var/list/mechtoys = list( SO.comment = "No comment." requests_list.Add(list(list("ordernum" = SO.ordernum, "supply_type" = SO.object.name, "orderedby" = SO.orderedby, "comment" = SO.comment, "command1" = list("confirmorder" = SO.ordernum), "command2" = list("rreq" = SO.ordernum)))) data["requests"] = requests_list - + var/orders_list[0] for(var/set_name in supply_controller.shoppinglist) var/datum/supply_order/SO = set_name if(SO) orders_list.Add(list(list("ordernum" = SO.ordernum, "supply_type" = SO.object.name, "orderedby" = SO.orderedby, "comment" = SO.comment))) data["orders"] = orders_list - + data["points"] = supply_controller.points data["send"] = list("send" = 1) - + var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle - data["moving"] = shuttle.has_arrive_time() + data["moving"] = shuttle.has_arrive_time() data["at_station"] = shuttle.at_station() data["timeleft"] = shuttle.eta_minutes() data["can_launch"] = shuttle.can_launch() @@ -552,32 +588,32 @@ var/list/mechtoys = list( ui = new(user, src, ui_key, "supply_console.tmpl", name, COMP_SCREEN_WIDTH, COMP_SCREEN_HEIGHT) ui.set_initial_data(data) ui.open() - + /obj/machinery/computer/supplycomp/proc/is_authorized(user) if(allowed(user)) return 1 - + if(isobserver(user) && check_rights(R_ADMIN, 0)) return 1 - + return 0 /obj/machinery/computer/supplycomp/Topic(href, href_list) if(..()) return 1 - + if(!is_authorized(usr)) return 1 - + if(!supply_controller) log_to_dd("## ERROR: The supply_controller controller datum is missing somehow.") return 1 - + var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle if(!shuttle) log_to_dd("## ERROR: The supply or shuttle datum is missing somehow.") return 1 - + if(href_list["send"]) if(shuttle.at_station()) if (shuttle.forbidden_atoms_check()) @@ -610,18 +646,18 @@ var/list/mechtoys = list( var/crates = 1 if(multi) var/num_input = input(usr, "Amount:", "How many crates?", "") as num - crates = Clamp(round(text2num(num_input)), 1, 20) + crates = Clamp(round(text2num(num_input)), 1, 20) if(..()) - return - + return + var/timeout = world.time + 600 var/reason = sanitize(copytext(input(usr,"Reason:","Why do you require this item?","") as null|text,1,MAX_MESSAGE_LEN)) - if(world.time > timeout || !reason || ..()) + if(world.time > timeout || !reason || ..()) return - + var/idname = "*None Provided*" var/idrank = "*None Provided*" - + if(ishuman(usr)) var/mob/living/carbon/human/H = usr idname = H.get_authentification_name() @@ -657,7 +693,7 @@ var/list/mechtoys = list( O.orderedby = idname O.comment = reason supply_controller.requestlist += O - + else if(href_list["confirmorder"]) //Find the correct supply_order datum var/ordernum = text2num(href_list["confirmorder"]) @@ -675,7 +711,7 @@ var/list/mechtoys = list( else usr << "There are insufficient supply points for this request." break - + else if (href_list["rreq"]) var/ordernum = text2num(href_list["rreq"]) for(var/i=1, i<=supply_controller.requestlist.len, i++) @@ -686,8 +722,8 @@ var/list/mechtoys = list( else if (href_list["last_viewed_group"]) content_pack = null - last_viewed_group = text2num(href_list["last_viewed_group"]) - + last_viewed_group = text2num(href_list["last_viewed_group"]) + else if (href_list["contents"]) var/topic = href_list["contents"] if(topic == 1) diff --git a/code/game/vehicles/spacepods/parts.dm b/code/game/vehicles/spacepods/parts.dm index 19210fc2b9a..1ab02b84654 100644 --- a/code/game/vehicles/spacepods/parts.dm +++ b/code/game/vehicles/spacepods/parts.dm @@ -5,7 +5,6 @@ /obj/item/pod_parts/core name="Space Pod Core" icon_state = "core" - construction_cost = list("iron"=5000,"uranium"=1000,"plasma"=5000) flags = CONDUCT origin_tech = "programming=2;materials=3;bluespace=2;engineering=3" diff --git a/code/game/vehicles/spacepods/pod_fabricator.dm b/code/game/vehicles/spacepods/pod_fabricator.dm index 9a17b501636..fcc65870b1e 100644 --- a/code/game/vehicles/spacepods/pod_fabricator.dm +++ b/code/game/vehicles/spacepods/pod_fabricator.dm @@ -14,14 +14,14 @@ var/time_coeff_tech = 1 var/resource_coeff_tech = 1 var/list/resources = list( - "$metal"=0, - "$glass"=0, - "$bananium"=0, - "$diamond"=0, - "$gold"=0, - "$plasma"=0, - "$silver"=0, - "$uranium"=0 + MAT_METAL=0, + MAT_GLASS=0, + MAT_BANANIUM=0, + MAT_DIAMOND=0, + MAT_GOLD=0, + MAT_PLASMA=0, + MAT_SILVER=0, + MAT_URANIUM=0 ) var/res_max_amount = 200000 var/datum/research/files @@ -55,7 +55,7 @@ component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) component_parts += new /obj/item/weapon/stock_parts/console_screen(null) RefreshParts() - + files = new /datum/research(src) //Setup the research data holder. for(var/direction in cardinal) exit = get_step(src,direction) @@ -195,8 +195,8 @@ L.name += " ([I.name])" else I.loc = exit - I.m_amt = get_resource_cost_w_coeff(D,"$metal") - I.g_amt = get_resource_cost_w_coeff(D,"$glass") + I.materials[MAT_METAL] = get_resource_cost_w_coeff(D,MAT_METAL) + I.materials[MAT_GLASS] = get_resource_cost_w_coeff(D,MAT_GLASS) visible_message("\icon[src] \The [src] beeps, \"\The [I] is complete.\"") being_built = null @@ -475,21 +475,21 @@ return -1 var/type switch(mat_string) - if("$metal") + if(MAT_METAL) type = /obj/item/stack/sheet/metal - if("$glass") + if(MAT_GLASS) type = /obj/item/stack/sheet/glass - if("$gold") + if(MAT_GOLD) type = /obj/item/stack/sheet/mineral/gold - if("$silver") + if(MAT_SILVER) type = /obj/item/stack/sheet/mineral/silver - if("$diamond") + if(MAT_DIAMOND) type = /obj/item/stack/sheet/mineral/diamond - if("$plasma") + if(MAT_PLASMA) type = /obj/item/stack/sheet/mineral/plasma - if("$uranium") + if(MAT_URANIUM) type = /obj/item/stack/sheet/mineral/uranium - if("$bananium") + if(MAT_BANANIUM) type = /obj/item/stack/sheet/mineral/bananium else return 0 @@ -531,21 +531,21 @@ var/material switch(W.type) if(/obj/item/stack/sheet/mineral/gold) - material = "$gold" + material = MAT_GOLD if(/obj/item/stack/sheet/mineral/silver) - material = "$silver" + material = MAT_SILVER if(/obj/item/stack/sheet/mineral/diamond) - material = "$diamond" + material = MAT_DIAMOND if(/obj/item/stack/sheet/mineral/plasma) - material = "$plasma" + material = MAT_PLASMA if(/obj/item/stack/sheet/metal) - material = "$metal" + material = MAT_METAL if(/obj/item/stack/sheet/glass) - material = "$glass" + material = MAT_GLASS if(/obj/item/stack/sheet/mineral/bananium) - material = "$bananium" + material = MAT_BANANIUM if(/obj/item/stack/sheet/mineral/uranium) - material = "$uranium" + material = MAT_URANIUM else return ..() diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index cacb36a1ff8..c0b1aba0a61 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -42,7 +42,6 @@ var/list/admin_verbs_admin = list( /client/proc/admin_cancel_shuttle, /*allows us to cancel the emergency shuttle, sending it back to centcomm*/ /client/proc/check_words, /*displays cult-words*/ /client/proc/check_ai_laws, /*shows AI and borg laws*/ - /client/proc/rename_silicon, /*properly renames silicons*/ /client/proc/manage_silicon_laws, /* Allows viewing and editing silicon laws. */ /client/proc/admin_memo, /*admin memo system. show/delete/write. +SERVER needed to delete admin memos of others*/ /client/proc/dsay, /*talk in deadchat using our ckey/fakekey*/ @@ -154,6 +153,7 @@ var/list/admin_verbs_debug = list( /client/proc/check_bomb_impacts, /client/proc/test_movable_UI, /client/proc/test_snap_UI, + /client/proc/cinematic, /proc/machine_upgrade ) var/list/admin_verbs_possess = list( @@ -602,7 +602,7 @@ var/list/admin_verbs_mentor = list( error("Error while re-adminning [src], admin rank ([rank]) does not exist.") src << "Error while re-adminning, admin rank ([rank]) does not exist." return - + D = new(rank, admin_ranks[rank], ckey) else var/sql_ckey = sanitizeSQL(ckey) @@ -617,14 +617,14 @@ var/list/admin_verbs_mentor = list( return if(admin_rank == "Removed") //This person was de-adminned. They are only in the admin list for archive purposes. src << "Error while re-adminning, ckey [admin_ckey] is not an admin." - return + return - if(istext(flags)) + if(istext(flags)) flags = text2num(flags) D = new(admin_rank, flags, ckey) var/client/C = directory[ckey] - D.associate(C) + D.associate(C) message_admins("[key_name_admin(usr)] re-adminned themselves.") log_admin("[key_name(usr)] re-adminned themselves.") deadmins -= ckey @@ -651,27 +651,12 @@ var/list/admin_verbs_mentor = list( /client/proc/check_ai_laws() set name = "Check AI Laws" set category = "Admin" - + if(!check_rights(R_ADMIN)) return - + if(holder) src.holder.output_ai_laws() -/client/proc/rename_silicon() - set name = "Rename Silicon" - set category = "Admin" - - if(!check_rights(R_ADMIN)) return - - var/mob/living/silicon/S = input("Select silicon.", "Rename Silicon.") as null|anything in silicon_mob_list - if(!S) return - - var/new_name = sanitizeSafe(input(src, "Enter new name. Leave blank or as is to cancel.", "[S.real_name] - Enter new silicon name", S.real_name)) - if(new_name && new_name != S.real_name) - log_and_message_admins("has renamed the silicon '[S.real_name]' to '[new_name]'") - S.SetName(new_name) - feedback_add_details("admin_verb","RAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - /client/proc/manage_silicon_laws() set name = "Manage Silicon Laws" set category = "Admin" @@ -870,10 +855,10 @@ var/list/admin_verbs_mentor = list( set category = "Admin" set name = "Man Up Global" set desc = "Tells everyone to man up and deal with it." - + var/confirm = alert("Are you sure you want to send the global message?", "Confirm Man Up Global", "Yes", "No") - if(confirm == "Yes") + if(confirm == "Yes") for (var/mob/T as mob in mob_list) T << "
Man up.
Deal with it.

Move on.

" T << 'sound/voice/ManUp1.ogg' diff --git a/code/modules/admin/verbs/cinematic.dm b/code/modules/admin/verbs/cinematic.dm index e78dfcf1bd5..570d73e19a8 100644 --- a/code/modules/admin/verbs/cinematic.dm +++ b/code/modules/admin/verbs/cinematic.dm @@ -1,8 +1,7 @@ /client/proc/cinematic(var/cinematic as anything in list("explosion",null)) - set name = "cinematic" - set category = "Event" - set desc = "Shows a cinematic." // Intended for testing but I thought it might be nice for events on the rare occasion Feel free to comment it out if it's not wanted. - set hidden = 1 + set name = "Play cinematic" + set category = "Debug" + set desc = "Shows a cinematic, will work like a normal nuke" // Intended for testing but I thought it might be nice for events on the rare occasion Feel free to comment it out if it's not wanted. if(alert("Are you sure you want to run [cinematic]?","Confirmation","Yes","No")=="No") return if(!ticker) return switch(cinematic) diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 71cdc55269e..9ada771bed2 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -5,8 +5,7 @@ icon_state = "" flags = CONDUCT w_class = 2.0 - m_amt = 100 - g_amt = 0 + materials = list(MAT_METAL=100) throwforce = 2 throw_speed = 3 throw_range = 10 diff --git a/code/modules/assembly/health.dm b/code/modules/assembly/health.dm new file mode 100644 index 00000000000..f1a3f402336 --- /dev/null +++ b/code/modules/assembly/health.dm @@ -0,0 +1,104 @@ +/obj/item/device/assembly/health + name = "health sensor" + desc = "Used for scanning and monitoring health." + icon_state = "health" + materials = list(MAT_METAL=800, MAT_GLASS=200) + origin_tech = "magnets=1;biotech=1" + secured = 0 + + var/scanning = 0 + var/health_scan + var/alarm_health = 0 + + + +/obj/item/device/assembly/health/activate() + if(!..()) return 0//Cooldown check + toggle_scan() + return 0 + +/obj/item/device/assembly/health/toggle_secure() + secured = !secured + if(secured && scanning) + processing_objects.Add(src) + else + scanning = 0 + processing_objects.Remove(src) + update_icon() + return secured + +/obj/item/device/assembly/health/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/device/multitool)) + if(alarm_health == 0) + alarm_health = -90 + user.show_message("You toggle [src] to \"detect death\" mode.") + else + alarm_health = 0 + user.show_message("You toggle [src] to \"detect critical state\" mode.") + return + else + return ..() + +/obj/item/device/assembly/health/process() + if(!scanning || !secured) + return + + var/atom/A = src + if(connected && connected.holder) + A = connected.holder + + for(A, A && !ismob(A), A=A.loc); + // like get_turf(), but for mobs. + var/mob/living/M = A + + if(M) + health_scan = M.health + if(health_scan <= alarm_health) + pulse() + audible_message("\icon[src] *beep* *beep*", "*beep* *beep*") + toggle_scan() + return + return + +/obj/item/device/assembly/health/proc/toggle_scan() + if(!secured) return 0 + scanning = !scanning + if(scanning) + processing_objects.Add(src) + else + processing_objects.Remove(src) + return + +/obj/item/device/assembly/health/interact(mob/user as mob)//TODO: Change this to the wires thingy + if(!secured) + user.show_message("The [name] is unsecured!") + return 0 + var/dat = text("Health Sensor [scanning?"On":"Off"]") + if(scanning && health_scan) + dat += "
Health: [health_scan]" + user << browse(dat, "window=hscan") + onclose(user, "hscan") + return + + +/obj/item/device/assembly/health/Topic(href, href_list) + ..() + if(!ismob(usr)) + return + + var/mob/user = usr + + if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) + usr << browse(null, "window=hscan") + onclose(usr, "hscan") + return + + if(href_list["scanning"]) + toggle_scan() + + if(href_list["close"]) + usr << browse(null, "window=hscan") + return + + attack_self(user) + return \ No newline at end of file diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm index d91eac4a391..ceb621e2e18 100644 --- a/code/modules/assembly/igniter.dm +++ b/code/modules/assembly/igniter.dm @@ -2,8 +2,7 @@ name = "igniter" desc = "A small electronic device able to ignite combustable substances." icon_state = "igniter" - m_amt = 500 - g_amt = 50 + materials = list(MAT_METAL=500, MAT_GLASS=50) w_amt = 10 origin_tech = "magnets=1" diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 05f56f223f6..370f0270f58 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -2,8 +2,7 @@ name = "infrared emitter" desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted." icon_state = "infrared" - m_amt = 1000 - g_amt = 500 + materials = list(MAT_METAL=1000, MAT_GLASS=500) origin_tech = "magnets=2" bomb_name = "tripwire mine" diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index d207130aeee..476b118187e 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -2,7 +2,7 @@ name = "mousetrap" desc = "A handy little spring-loaded trap for catching pesty rodents." icon_state = "mousetrap" - m_amt = 100 + materials = list(MAT_METAL=100) origin_tech = "combat=1" var/armed = 0 diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index ae1d3e22a99..880dc2d2218 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -2,8 +2,7 @@ name = "proximity sensor" desc = "Used for scanning and alerting when someone enters a certain proximity." icon_state = "prox" - m_amt = 800 - g_amt = 200 + materials = list(MAT_METAL=800, MAT_GLASS=200) origin_tech = "magnets=1" secured = 0 diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 50ebe847fa1..86b4037b1b9 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -3,8 +3,7 @@ desc = "Used to remotely activate devices." icon_state = "signaller" item_state = "signaler" - m_amt = 400 - g_amt = 120 + materials = list(MAT_METAL=400, MAT_GLASS=120) origin_tech = "magnets=1" wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE @@ -18,7 +17,7 @@ var/delay = 0 var/datum/radio_frequency/radio_connection var/airlock_wire = null - + New() ..() if(!radio_controller) diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index 2b0e72aaade..844e66cd68c 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -2,8 +2,7 @@ name = "timer" desc = "Used to time things. Works well with contraptions which has to count down. Tick tock." icon_state = "timer" - m_amt = 500 - g_amt = 50 + materials = list(MAT_METAL=500, MAT_GLASS=50) origin_tech = "magnets=1" secured = 0 diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index 169c2e6170e..1510c8791de 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -2,8 +2,7 @@ name = "voice analyzer" desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated." icon_state = "voice" - m_amt = 500 - g_amt = 50 + materials = list(MAT_METAL=500, MAT_GLASS=50) origin_tech = "magnets=1" var/listening = 0 var/recorded = null //the activation message diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 1376f088aea..cc97f6193f7 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -183,8 +183,8 @@ if(!prefs.unlock_content) src << "Become a BYOND member to access member-perks and features, as well as support the engine that makes this game possible. Click here to find out more." return 0 - return 1 - + return 1 + /client/proc/handle_spam_prevention(var/message, var/mute_type) if(config.automute_on && !holder && src.last_message == message) src.last_message_count++ @@ -330,8 +330,8 @@ related_accounts_cid = list() while(query_cid.NextRow()) if(ckey != query_cid.item[1]) - related_accounts_cid.Add("[query_cid.item[1]]") - + related_accounts_cid.Add("[query_cid.item[1]]") + //Log all the alts if(related_accounts_cid.len) log_access("Alts: [key_name(src)]:[list2text(related_accounts_cid, " - ")]") @@ -339,8 +339,8 @@ var/watchreason = check_watchlist(sql_ckey) if(watchreason) message_admins("Notice: [key_name_admin(src)] is on the watchlist and has just connected - Reason: [watchreason]") - send2irc_adminless_only("Watchlist", "[key_name(src)] is on the watchlist and has just connected - Reason: [watchreason]") - + send2irc_adminless_only("Watchlist", "[key_name(src)] is on the watchlist and has just connected - Reason: [watchreason]") + //Just the standard check to see if it's actually a number if(sql_id) if(istext(sql_id)) @@ -389,6 +389,15 @@ 'html/search.js', // Used in various non-NanoUI HTML windows for search functionality 'html/panels.css' // Used for styling certain panels, such as in the new player panel ) - + // Send NanoUI resources to this client spawn nanomanager.send_resources(src) + +//For debugging purposes +/client/proc/list_all_languages() + for(var/L in all_languages) + var/datum/language/lang = all_languages[L] + var/message = "[lang.name] : [lang.type]" + if(lang.flags & RESTRICTED) + message += " (RESTRICTED)" + world << "[message]" diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 338d57dd616..b1d264c925c 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -108,6 +108,7 @@ datum/preferences var/b_type = "A+" //blood type (not-chooseable) var/underwear = "Nude" //underwear type var/undershirt = "Nude" //undershirt type + var/socks = "Nude" //socks type var/backbag = 2 //backpack type var/h_style = "Bald" //Hair type var/r_hair = 0 //Hair color @@ -185,17 +186,17 @@ datum/preferences // jukebox volume var/volume = 100 - + // BYOND membership var/unlock_content = 0 - + /datum/preferences/New(client/C) b_type = pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+") if(istype(C)) if(!IsGuestKey(C.key)) unlock_content = C.IsByondMember() if(unlock_content) - max_save_slots = MAX_SAVE_SLOTS_MEMBER + max_save_slots = MAX_SAVE_SLOTS_MEMBER var/loaded_preferences_successfully = load_preferences(C) if(loaded_preferences_successfully) if(load_character(C)) @@ -331,6 +332,7 @@ datum/preferences dat += "

" dat += "Underwear:
[underwear]
" dat += "Undershirt:
[undershirt]
" + dat += "Socks:
[socks]
" dat += "Backpack Type:
[backbaglist[backbag]]
" dat += "Nanotrasen Relation:
[nanotrasen_relation]
" dat += "
" dat += "

Autolathe Menu:


" - dat += "Metal amount: [src.m_amount] / [max_m_amount] cm3
" - dat += "Glass amount: [src.g_amount] / [max_g_amount] cm3" + dat += "Total amount: [materials.total_amount] / [materials.max_amount] cm3
" + dat += "Metal amount: [materials.amount(MAT_METAL)] cm3
" + dat += "Glass amount: [materials.amount(MAT_GLASS)] cm3
" dat += "
\ \ @@ -435,8 +412,9 @@ dat += "
" dat += "Return to main menu" dat += "

Browsing [selected_category]:


" - dat += "Metal amount: [src.m_amount] / [max_m_amount] cm3
" - dat += "Glass amount: [src.g_amount] / [max_g_amount] cm3
" + dat += "Total amount: [materials.total_amount] / [materials.max_amount] cm3
" + dat += "Metal amount: [materials.amount(MAT_METAL)] cm3
" + dat += "Glass amount: [materials.amount(MAT_GLASS)] cm3
" for(var/datum/design/D in files.known_designs) if(!(selected_category in D.category)) @@ -448,7 +426,7 @@ dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) - var/max_multiplier = min(50, D.materials["$metal"] ?round(m_amount/D.materials["$metal"]):INFINITY,D.materials["$glass"]?round(g_amount/D.materials["$glass"]):INFINITY) + var/max_multiplier = min(50, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) if (max_multiplier>10 && !disabled) dat += " x10" if (max_multiplier>25 && !disabled) @@ -469,8 +447,9 @@ dat += "
" dat += "Return to main menu" dat += "

Search results:


" - dat += "Metal amount: [src.m_amount] / [max_m_amount] cm3
" - dat += "Glass amount: [src.g_amount] / [max_g_amount] cm3
" + dat += "Total amount: [materials.total_amount] / [materials.max_amount] cm3
" + dat += "Metal amount: [materials.amount(MAT_METAL)] cm3
" + dat += "Glass amount: [materials.amount(MAT_GLASS)] cm3
" for(var/datum/design/D in matching_designs) if(disabled || !can_build(D)) @@ -479,7 +458,7 @@ dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) - var/max_multiplier = min(50, D.materials["$metal"] ?round(m_amount/D.materials["$metal"]):INFINITY,D.materials["$glass"]?round(g_amount/D.materials["$glass"]):INFINITY) + var/max_multiplier = min(50, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) if (max_multiplier>10 && !disabled) dat += " x10" if (max_multiplier>25 && !disabled) @@ -498,10 +477,10 @@ /obj/machinery/autolathe/proc/get_design_cost(var/datum/design/D) var/coeff = get_coeff(D) var/dat - if(D.materials["$metal"]) - dat += "[D.materials["$metal"] / coeff] metal " - if(D.materials["$glass"]) - dat += "[D.materials["$glass"] / coeff] glass" + if(D.materials[MAT_METAL]) + dat += "[D.materials[MAT_METAL] / coeff] metal " + if(D.materials[MAT_GLASS]) + dat += "[D.materials[MAT_GLASS] / coeff] glass" return dat /obj/machinery/autolathe/proc/adjust_hacked(var/hack) diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index 9b15852dfaa..f45ffa43de8 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -246,7 +246,7 @@ else user << "Maintenance panel is locked." else - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) if(health >= maxhealth) user << "[src] does not need a repair." return diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index 33a3d45d849..36a2fdae614 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -186,7 +186,7 @@ Auto Patrol[]"}, user << "Access denied." else ..() - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") // Any intent but harm will heal, so we shouldn't get angry. + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) // Any intent but harm will heal, so we shouldn't get angry. return if (!istype(W, /obj/item/weapon/screwdriver) && (!target)) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass. if(W.force)//If force is non-zero and damage type isn't stamina. diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 90784f970c1..471f401d46f 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -192,7 +192,7 @@ Auto Patrol: []"}, user << " Access denied." else ..() - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") // Any intent but harm will heal, so we shouldn't get angry. + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) // Any intent but harm will heal, so we shouldn't get angry. return if(!istype(W, /obj/item/weapon/screwdriver) && (W.force) && (!target)) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass. threatlevel = user.assess_threat(src) diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index 5c45212406d..73ee5cdb2aa 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -5,8 +5,7 @@ icon_state = "cameracase" w_class = 2 anchored = 0 - m_amt = 400 - g_amt = 250 + materials = list(MAT_METAL=400, MAT_GLASS=250) // Motion, EMP-Proof, X-Ray var/list/obj/item/possible_upgrades = list(/obj/item/device/assembly/prox_sensor, /obj/item/stack/sheet/mineral/plasma, /obj/item/device/analyzer) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index c4c73f7c5bb..9adcde3aa00 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -19,6 +19,7 @@ icon_state = "id_mod" item_state = "electronic" origin_tech = "programming=2" + materials = list(MAT_GLASS=200) var/id = null var/frequency = null var/build_path = null @@ -82,7 +83,7 @@ build_path = /obj/machinery/computer/station_alert /obj/item/weapon/circuitboard/stationalert_security name = "Circuit Board (Station Alert Console (Security))" - build_path = /obj/machinery/computer/station_alert + build_path = /obj/machinery/computer/station_alert /obj/item/weapon/circuitboard/stationalert_all name = "Circuit Board (Station Alert Console (All))" build_path = /obj/machinery/computer/station_alert/all diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index a3802a72af6..c6b2b9a8908 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -179,7 +179,7 @@ //Machine Frame Circuit Boards /*Common Parts: Parts List: Ignitor, Timer, Infra-red laser, Infra-red sensor, t_scanner, Capacitor, Valve, sensor unit, micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells. -Note: Once everything is added to the public areas, will add m_amt and g_amt to circuit boards since autolathe won't be able +Note: Once everything is added to the public areas, will add MAT_METAL and MAT_GLASS to circuit boards since autolathe won't be able to destroy them and players will be able to make replacements. */ /obj/item/weapon/circuitboard/vendor diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index ee3653d8623..e48f3a5aadf 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -596,7 +596,7 @@ About the new airlock wires panel: if (src.isElectrified()) if (istype(mover, /obj/item)) var/obj/item/i = mover - if (i.m_amt) + if (i.materials[MAT_METAL]) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() @@ -1049,4 +1049,4 @@ About the new airlock wires panel: src.unlock() src.open() src.lock() - return \ No newline at end of file + return \ No newline at end of file diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index f83be36a9e9..6113d1cf377 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -5,8 +5,7 @@ icon = 'icons/obj/doors/door_assembly.dmi' icon_state = "door_electronics" w_class = 2.0 //It should be tiny! -Agouri - m_amt = 50 - g_amt = 50 + materials = list(MAT_METAL=50, MAT_GLASS=50) req_access = list(access_engine) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 75acd99fb58..f560e3c81ce 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -53,8 +53,8 @@ FIRE ALARM if(src.detecting) if(temperature > T0C+200) src.alarm() // added check of detector status here - return - + return + /obj/machinery/firealarm/attack_ai(mob/user as mob) src.add_hiddenprint(user) return src.attack_hand(user) @@ -213,7 +213,7 @@ FIRE ALARM /obj/machinery/firealarm/Topic(href, href_list) if(..()) return 1 - + if (buildstage != 2) return 1 @@ -285,8 +285,7 @@ Just a object used in constructing fire alarms icon_state = "door_electronics" desc = "A circuit. It has a label on it, it says \"Can handle heat levels up to 40 degrees celsius!\"" w_class = 2.0 - m_amt = 50 - g_amt = 50 + materials = list(MAT_METAL=50, MAT_GLASS=50) /obj/machinery/partyalarm name = "\improper PARTY BUTTON" diff --git a/code/game/machinery/programmable_unloader.dm b/code/game/machinery/programmable_unloader.dm index 608279392b9..be221157b01 100644 --- a/code/game/machinery/programmable_unloader.dm +++ b/code/game/machinery/programmable_unloader.dm @@ -501,7 +501,7 @@ H << "The boxing machine refuses to acknowledge you unless you face it head on!" return var/damage = 0 - if(H.a_intent != "harm") + if(H.a_intent != I_HARM) damage += rand(0,5) else damage += rand(0,10) diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index eaa87fbea28..72f4d0bc0d7 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -1,7 +1,7 @@ var/const/SAFETY_COOLDOWN = 100 /obj/machinery/recycler - name = "crusher" + name = "recycler" desc = "A large crushing machine which is used to recycle small items ineffeciently; there are lights on the side of it." icon = 'icons/obj/recycling.dmi' icon_state = "grinder-o0" @@ -13,6 +13,8 @@ var/const/SAFETY_COOLDOWN = 100 var/icon_name = "grinder-o" var/blood = 0 var/eat_dir = WEST + var/amount_produced = 1 + var/datum/material_container/materials /obj/machinery/recycler/New() // On us @@ -21,11 +23,20 @@ var/const/SAFETY_COOLDOWN = 100 component_parts += new /obj/item/weapon/circuitboard/recycler(null) component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + materials = new /datum/material_container(src, list(MAT_METAL=1, MAT_GLASS=1, MAT_SILVER=1, MAT_GOLD=1, MAT_DIAMOND=1, MAT_URANIUM=1, MAT_BANANIUM=1)) RefreshParts() update_icon() -/obj/machinery/recycler/RefreshParts() //If you want to make the machine upgradable, this is where you would change any vars basd on its stock parts. - return +/obj/machinery/recycler/RefreshParts() + var/amt_made = 0 + var/mat_mod = 0 + for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts) + mat_mod = 2 * B.rating + mat_mod *= 50000 + for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) + amt_made = 25 * M.rating //% of materials salvaged + materials.max_amount = mat_mod + amount_produced = min(100, amt_made) /obj/machinery/recycler/examine() set src in view() @@ -39,7 +50,7 @@ var/const/SAFETY_COOLDOWN = 100 update_icon() -/obj/machinery/recycler/attackby(var/obj/item/I, var/mob/user, params) +/obj/machinery/recycler/attackby(obj/item/I, mob/user, params) if(default_deconstruction_screwdriver(user, "grinder-oOpen", "grinder-o0", I)) if(!panel_open) update_icon() @@ -56,13 +67,14 @@ var/const/SAFETY_COOLDOWN = 100 add_fingerprint(user) return -/obj/machinery/recycler/emag_act(user as mob) +/obj/machinery/recycler/emag_act(mob/user) if(!emagged) emagged = 1 if(safety_mode) safety_mode = 0 update_icon() playsound(src.loc, "sparks", 75, 1, -1) + user << "You use the cryptographic sequencer on the [src.name]." /obj/machinery/recycler/update_icon() ..() @@ -107,20 +119,20 @@ var/const/SAFETY_COOLDOWN = 100 playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0) AM.loc = src.loc -/obj/machinery/recycler/proc/recycle(var/obj/item/I, var/sound = 1) +/obj/machinery/recycler/proc/recycle(obj/item/I, sound = 1) I.loc = src.loc - if(!istype(I,/obj/item/flag/nation)) + if(!istype(I)) + return + + if(sound) + playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) + var/material_amount = materials.can_insert(I) + if(!material_amount) qdel(I) - if(prob(15)) - new /obj/item/stack/sheet/metal(loc) - if(prob(10)) - new /obj/item/stack/sheet/glass(loc) - if(prob(2)) - new /obj/item/stack/sheet/plasteel(loc) - if(prob(1)) - new /obj/item/stack/sheet/rglass(loc) - if(sound) - playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) + return + materials.insert_item(I, multiplier = (amount_produced / 100)) + qdel(I) + materials.retrieve_all() /obj/machinery/recycler/proc/stop(var/mob/living/L) diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 86e6dd5e700..be28fae21da 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -21,7 +21,7 @@ if(!O:amount) return while(metal_amount < 150000 && O:amount) - src.metal_amount += O:m_amt /*O:height * O:width * O:length * 100000.0*/ + src.metal_amount += O:materials[MAT_METAL] /*O:height * O:width * O:length * 100000.0*/ O:amount-- count++ diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 4cfdc0a6c29..1b3f89af28a 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -729,7 +729,7 @@ /obj/machinery/vending/assist products = list( /obj/item/device/assembly/prox_sensor = 5,/obj/item/device/assembly/igniter = 3,/obj/item/device/assembly/signaler = 4, /obj/item/weapon/wirecutters = 1, /obj/item/weapon/cartridge/signal = 4) - contraband = list(/obj/item/device/flashlight = 5,/obj/item/device/assembly/timer = 2) + contraband = list(/obj/item/device/flashlight = 5,/obj/item/device/assembly/timer = 2, /obj/item/device/assembly/voice = 2, /obj/item/device/assembly/health = 2) product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!" /obj/machinery/vending/boozeomat/New() @@ -887,6 +887,7 @@ products = list(/obj/item/clothing/under/rank/scientist = 6,/obj/item/clothing/suit/bio_suit = 6,/obj/item/clothing/head/bio_hood = 6, /obj/item/device/transfer_valve = 6,/obj/item/device/assembly/timer = 6,/obj/item/device/assembly/signaler = 6, /obj/item/device/assembly/prox_sensor = 6,/obj/item/device/assembly/igniter = 6) + contraband = list(/obj/item/device/assembly/health = 3) /obj/machinery/vending/wallmed1 name = "NanoMed" diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 33bbb110766..4f53bd5a796 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -8,8 +8,6 @@ icon_state = "mecha_equip" force = 5 origin_tech = "materials=2" - construction_time = 100 - construction_cost = list("metal"=10000) var/equip_cooldown = 0 var/equip_ready = 1 var/energy_drain = 0 diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index bc7100347c5..a32e32c1075 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -6,7 +6,6 @@ origin_tech = "programming=2;biotech=3" energy_drain = 20 range = MELEE - construction_cost = list("metal"=5000,"glass"=10000) reliability = 1000 equip_cooldown = 20 var/mob/living/carbon/occupant = null @@ -396,8 +395,6 @@ range = MELEE|RANGED equip_cooldown = 10 origin_tech = "materials=3;biotech=4;magnets=4;programming=3" - construction_time = 200 - construction_cost = list("metal"=3000,"glass"=2000) New() ..() diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index d9a7b7a2044..05ae2c9b125 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -53,7 +53,7 @@ else if(istype(target,/mob/living)) var/mob/living/M = target if(M.stat>1) return - if(chassis.occupant.a_intent == "harm") + if(chassis.occupant.a_intent == I_HARM) M.take_overall_damage(dam_force) M.adjustOxyLoss(round(dam_force/2)) M.updatehealth() @@ -138,7 +138,6 @@ desc = "This is an upgraded version of the drill that'll pierce the heavens! (Can be attached to: Combat and Engineering Exosuits)" icon_state = "mecha_diamond_drill" origin_tech = "materials=4;engineering=3" - construction_cost = list("metal"=10000,"diamond"=6500) equip_cooldown = 20 force = 15 @@ -279,11 +278,9 @@ equip_cooldown = 10 energy_drain = 250 range = MELEE|RANGED - construction_time = 1200 - construction_cost = list("metal"=30000,"plasma"=25000,"silver"=20000,"gold"=20000) var/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock. var/canRwall = 0 - + New() rcd_list += src ..() @@ -524,7 +521,6 @@ equip_cooldown = 10 energy_drain = 50 range = 0 - construction_cost = list("metal"=20000,"silver"=5000) var/deflect_coeff = 1.15 var/damage_coeff = 0.8 @@ -575,7 +571,6 @@ equip_cooldown = 10 energy_drain = 50 range = 0 - construction_cost = list("metal"=20000,"gold"=5000) var/deflect_coeff = 1.15 var/damage_coeff = 0.8 @@ -647,7 +642,6 @@ equip_cooldown = 20 energy_drain = 100 range = 0 - construction_cost = list("metal"=10000,"gold"=1000,"silver"=2000,"glass"=5000) var/health_boost = 2 var/datum/global_iterator/pr_repair_droid var/icon/droid_overlay @@ -736,7 +730,6 @@ equip_cooldown = 10 energy_drain = 0 range = 0 - construction_cost = list("metal"=10000,"gold"=2000,"silver"=3000,"glass"=2000) var/datum/global_iterator/pr_energy_relay var/coeff = 100 var/list/use_channels = list(EQUIP,ENVIRON,LIGHT) @@ -848,7 +841,6 @@ equip_cooldown = 10 energy_drain = 0 range = MELEE - construction_cost = list("metal"=10000,"silver"=500,"glass"=1000) var/datum/global_iterator/pr_mech_generator var/coeff = 100 var/obj/item/stack/sheet/fuel @@ -985,7 +977,6 @@ desc = "Generates power using uranium. Pollutes the environment." icon_state = "tesla" origin_tech = "powerstorage=3;engineering=3" - construction_cost = list("metal"=10000,"silver"=500,"glass"=1000) max_fuel = 50000 fuel_per_cycle_idle = 10 fuel_per_cycle_active = 30 @@ -1067,10 +1058,10 @@ else if(istype(target,/mob/living)) var/mob/living/M = target if(M.stat>1) return - if(chassis.occupant.a_intent == "harm") + if(chassis.occupant.a_intent == I_HARM) chassis.occupant_message("\red You obliterate [target] with [src.name], leaving blood and guts everywhere.") chassis.visible_message("\red [chassis] destroys [target] in an unholy fury.") - if(chassis.occupant.a_intent == "disarm") + if(chassis.occupant.a_intent == I_DISARM) chassis.occupant_message("\red You tear [target]'s limbs off with [src.name].") chassis.visible_message("\red [chassis] rips [target]'s arms off.") else @@ -1108,4 +1099,4 @@ scanning = 1 mineral_scan_pulse(occupant,get_turf(loc)) spawn(equip_cooldown) - scanning = 0 + scanning = 0 diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 18d5a433990..2e3b0d4fba8 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -66,7 +66,6 @@ energy_drain = 120 projectile = /obj/item/projectile/ion fire_sound = 'sound/weapons/Laser.ogg' - construction_cost = list("silver" = 6000, "metal" = 20000, "uranium" = 2000) /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse equip_cooldown = 30 @@ -119,8 +118,6 @@ energy_drain = 200 equip_cooldown = 150 range = MELEE|RANGED - construction_time = 500 - construction_cost = list("metal"=20000,"bananium"=10000) can_attach(obj/mecha/combat/honker/M as obj) if(..()) @@ -346,7 +343,6 @@ equip_cooldown = 60 var/missile_speed = 2 var/missile_range = 30 - construction_cost = list("silver" = 8000, "metal" = 22000, "gold" = 6000) action(target) if(!action_checks(target)) return @@ -409,7 +405,6 @@ projectile = /obj/item/weapon/grenade/flashbang/clusterbang projectile_energy_cost = 1600 //getting off cheap seeing as this is 3 times the flashbangs held in the grenade launcher. equip_cooldown = 90 - construction_cost = list("metal"=20000,"gold"=10000,"uranium"=10000) //now as expensive as a Honkblast. size=1 /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited/get_equip_info()//Limited version of the clusterbang launcher that can't reload @@ -427,8 +422,6 @@ missile_speed = 1.5 projectile_energy_cost = 100 equip_cooldown = 20 - construction_time = 300 - construction_cost = list("metal"=20000,"bananium"=5000) can_attach(obj/mecha/combat/honker/M as obj) if(..()) @@ -457,8 +450,6 @@ missile_speed = 1.5 projectile_energy_cost = 100 equip_cooldown = 10 - construction_time = 300 - construction_cost = list("metal"=20000,"bananium"=5000) can_attach(obj/mecha/combat/honker/M as obj) if(..()) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 1d581405393..4637a47ced0 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -14,14 +14,14 @@ var/time_coeff_tech = 1 var/resource_coeff_tech = 1 var/list/resources = list( - "$metal"=0, - "$glass"=0, - "$bananium"=0, - "$diamond"=0, - "$gold"=0, - "$plasma"=0, - "$silver"=0, - "$uranium"=0 + MAT_METAL=0, + MAT_GLASS=0, + MAT_BANANIUM=0, + MAT_DIAMOND=0, + MAT_GOLD=0, + MAT_PLASMA=0, + MAT_SILVER=0, + MAT_URANIUM=0 ) var/res_max_amount = 200000 var/datum/research/files @@ -183,8 +183,8 @@ var/obj/item/I = new D.build_path I.loc = get_step(src,SOUTH) - I.m_amt = get_resource_cost_w_coeff(D,"$metal") - I.g_amt = get_resource_cost_w_coeff(D,"$glass") + I.materials[MAT_METAL] = get_resource_cost_w_coeff(D,MAT_METAL) + I.materials[MAT_GLASS] = get_resource_cost_w_coeff(D,MAT_GLASS) visible_message("\icon[src] \The [src] beeps, \"\The [I] is complete.\"") being_built = null @@ -309,9 +309,9 @@ /obj/machinery/mecha_part_fabricator/proc/get_construction_time_w_coeff(datum/design/D, roundto = 1) //aran return round(initial(D.construction_time)*time_coeff*time_coeff_tech, roundto) -/obj/machinery/mecha_part_fabricator/attack_ghost(mob/user) +/obj/machinery/mecha_part_fabricator/attack_ghost(mob/user) interact(user) - + /obj/machinery/mecha_part_fabricator/attack_hand(mob/user) if(!(..())) return interact(user) @@ -467,21 +467,21 @@ return -1 var/type switch(mat_string) - if("$metal") + if(MAT_METAL) type = /obj/item/stack/sheet/metal - if("$glass") + if(MAT_GLASS) type = /obj/item/stack/sheet/glass - if("$gold") + if(MAT_GOLD) type = /obj/item/stack/sheet/mineral/gold - if("$silver") + if(MAT_SILVER) type = /obj/item/stack/sheet/mineral/silver - if("$diamond") + if(MAT_DIAMOND) type = /obj/item/stack/sheet/mineral/diamond - if("$plasma") + if(MAT_PLASMA) type = /obj/item/stack/sheet/mineral/plasma - if("$uranium") + if(MAT_URANIUM) type = /obj/item/stack/sheet/mineral/uranium - if("$bananium") + if(MAT_BANANIUM) type = /obj/item/stack/sheet/mineral/bananium else return 0 @@ -523,21 +523,21 @@ var/material switch(W.type) if(/obj/item/stack/sheet/mineral/gold) - material = "$gold" + material = MAT_GOLD if(/obj/item/stack/sheet/mineral/silver) - material = "$silver" + material = MAT_SILVER if(/obj/item/stack/sheet/mineral/diamond) - material = "$diamond" + material = MAT_DIAMOND if(/obj/item/stack/sheet/mineral/plasma) - material = "$plasma" + material = MAT_PLASMA if(/obj/item/stack/sheet/metal) - material = "$metal" + material = MAT_METAL if(/obj/item/stack/sheet/glass) - material = "$glass" + material = MAT_GLASS if(/obj/item/stack/sheet/mineral/bananium) - material = "$bananium" + material = MAT_BANANIUM if(/obj/item/stack/sheet/mineral/uranium) - material = "$uranium" + material = MAT_URANIUM else return ..() diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 98a7b32f682..f78c1e61b17 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -844,7 +844,7 @@ user << "There's already a powercell installed." return - else if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") + else if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) var/obj/item/weapon/weldingtool/WT = W if (WT.remove_fuel(0,user)) if (hasInternalDamage(MECHA_INT_TANK_BREACH)) diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index ce44f2e59b1..f85a1586d26 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -15,7 +15,7 @@ /obj/machinery/computer/mecha/attack_hand(var/mob/user as mob) ui_interact(user) - + /obj/machinery/computer/mecha/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) var/data[0] data["screen"] = screen @@ -40,7 +40,7 @@ /obj/machinery/computer/mecha/Topic(href, href_list) if(..()) return 1 - + var/datum/topic_input/filter = new /datum/topic_input(href,href_list) if(href_list["send_message"]) var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("send_message") @@ -50,19 +50,19 @@ var/obj/mecha/M = MT.in_mecha() if(M) M.occupant_message(message) - + if(href_list["shock"]) var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("shock") MT.shock() - + if(href_list["get_log"]) var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("get_log") stored_data = MT.get_mecha_log() screen = 1 - + if(href_list["return"]) screen = 0 - + nanomanager.update_uis(src) return @@ -72,8 +72,6 @@ icon = 'icons/obj/device.dmi' icon_state = "motion2" origin_tech = "programming=2;magnets=2" - construction_time = 50 - construction_cost = list("metal"=500) /obj/item/mecha_parts/mecha_tracking/proc/get_mecha_info() if(!in_mecha()) @@ -91,7 +89,7 @@ answer["cell"] = 0 answer["integrity"] = M.health/initial(M.health)*100 answer["airtank"] = M.return_pressure() - answer["pilot"] = "[M.occupant||"None"]" + answer["pilot"] = "[M.occupant||"None"]" var/area/area = get_area(M) answer["location"] = "[sanitize(area.name)||"Unknown"]" answer["equipment"] = "[M.selected||"None"]" @@ -99,7 +97,7 @@ var/obj/mecha/working/ripley/RM = M answer["hascargo"] = 1 answer["cargo"] = RM.cargo.len/RM.cargo_capacity*100 - + return answer /obj/item/mecha_parts/mecha_tracking/emp_act() diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 6237bcfd523..17876058ab9 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -9,15 +9,12 @@ w_class = 6 flags = CONDUCT origin_tech = "programming=2;materials=2" - var/construction_time = 100 - var/list/construction_cost = list("metal"=20000,"glass"=5000) /obj/item/mecha_parts/chassis name="Mecha Chassis" icon_state = "backbone" var/datum/construction/construct - construction_cost = list("metal"=20000) flags = CONDUCT attackby(obj/item/W as obj, mob/user as mob, params) @@ -42,46 +39,35 @@ desc="A torso part of Ripley APLU. Contains power unit, processing core and life support systems." icon_state = "ripley_harness" origin_tech = "programming=2;materials=2;biotech=2;engineering=2" - construction_time = 200 - construction_cost = list("metal"=20000,"glass"=7500) /obj/item/mecha_parts/part/ripley_left_arm name="Ripley Left Arm" desc="A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools." icon_state = "ripley_l_arm" origin_tech = "programming=2;materials=2;engineering=2" - construction_time = 150 - construction_cost = list("metal"=15000) /obj/item/mecha_parts/part/ripley_right_arm name="Ripley Right Arm" desc="A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools." icon_state = "ripley_r_arm" origin_tech = "programming=2;materials=2;engineering=2" - construction_time = 150 - construction_cost = list("metal"=15000) /obj/item/mecha_parts/part/ripley_left_leg name="Ripley Left Leg" desc="A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems." icon_state = "ripley_l_leg" origin_tech = "programming=2;materials=2;engineering=2" - construction_time = 150 - construction_cost = list("metal"=15000) /obj/item/mecha_parts/part/ripley_right_leg name="Ripley Right Leg" desc="A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems." icon_state = "ripley_r_leg" origin_tech = "programming=2;materials=2;engineering=2" - construction_time = 150 - construction_cost = list("metal"=15000) ///////// Gygax /obj/item/mecha_parts/chassis/gygax name = "Gygax Chassis" - construction_cost = list("metal"=20000) New() ..() @@ -92,60 +78,45 @@ desc="A torso part of Gygax. Contains power unit, processing core and life support systems. Has an additional equipment slot." icon_state = "gygax_harness" origin_tech = "programming=2;materials=2;biotech=3;engineering=3" - construction_time = 300 - construction_cost = list("metal"=20000,"glass"=10000,"diamond"=2000) /obj/item/mecha_parts/part/gygax_head name="Gygax Head" desc="A Gygax head. Houses advanced surveilance and targeting sensors." icon_state = "gygax_head" origin_tech = "programming=2;materials=2;magnets=3;engineering=3" - construction_time = 200 - construction_cost = list("metal"=10000,"glass"=5000, "diamond"=2000) /obj/item/mecha_parts/part/gygax_left_arm name="Gygax Left Arm" desc="A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons." icon_state = "gygax_l_arm" origin_tech = "programming=2;materials=2;engineering=3" - construction_time = 200 - construction_cost = list("metal"=15000, "diamond"=1000) /obj/item/mecha_parts/part/gygax_right_arm name="Gygax Right Arm" desc="A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons." icon_state = "gygax_r_arm" origin_tech = "programming=2;materials=2;engineering=3" - construction_time = 200 - construction_cost = list("metal"=15000, "diamond"=1000) /obj/item/mecha_parts/part/gygax_left_leg name="Gygax Left Leg" icon_state = "gygax_l_leg" origin_tech = "programming=2;materials=2;engineering=3" - construction_time = 200 - construction_cost = list("metal"=15000, "diamond"=2000) /obj/item/mecha_parts/part/gygax_right_leg name="Gygax Right Leg" icon_state = "gygax_r_leg" origin_tech = "programming=2;materials=2;engineering=3" - construction_time = 200 - construction_cost = list("metal"=15000, "diamond"=2000) /obj/item/mecha_parts/part/gygax_armour name="Gygax Armour Plates" icon_state = "gygax_armour" origin_tech = "materials=6;combat=4;engineering=5" - construction_time = 600 - construction_cost = list("metal"=25000,"diamond"=10000) //////////// Durand /obj/item/mecha_parts/chassis/durand name = "Durand Chassis" - construction_cost = list("metal"=25000) New() ..() @@ -155,50 +126,36 @@ name="Durand Torso" icon_state = "durand_harness" origin_tech = "programming=2;materials=3;biotech=3;engineering=3" - construction_time = 300 - construction_cost = list("metal"=25000,"glass"=10000,"silver"=10000) /obj/item/mecha_parts/part/durand_head name="Durand Head" icon_state = "durand_head" origin_tech = "programming=2;materials=3;magnets=3;engineering=3" - construction_time = 200 - construction_cost = list("metal"=10000,"glass"=15000,"silver"=2000) /obj/item/mecha_parts/part/durand_left_arm name="Durand Left Arm" icon_state = "durand_l_arm" origin_tech = "programming=2;materials=3;engineering=3" - construction_time = 200 - construction_cost = list("metal"=10000,"silver"=4000) /obj/item/mecha_parts/part/durand_right_arm name="Durand Right Arm" icon_state = "durand_r_arm" origin_tech = "programming=2;materials=3;engineering=3" - construction_time = 200 - construction_cost = list("metal"=10000,"silver"=4000) /obj/item/mecha_parts/part/durand_left_leg name="Durand Left Leg" icon_state = "durand_l_leg" origin_tech = "programming=2;materials=3;engineering=3" - construction_time = 200 - construction_cost = list("metal"=15000,"silver"=4000) /obj/item/mecha_parts/part/durand_right_leg name="Durand Right Leg" icon_state = "durand_r_leg" origin_tech = "programming=2;materials=3;engineering=3" - construction_time = 200 - construction_cost = list("metal"=15000,"silver"=4000) /obj/item/mecha_parts/part/durand_armor name="Durand Armour Plates" icon_state = "durand_armor" origin_tech = "materials=5;combat=4;engineering=5" - construction_time = 600 - construction_cost = list("metal"=50000,"uranium"=30000) @@ -244,38 +201,26 @@ /obj/item/mecha_parts/part/honker_torso name="H.O.N.K Torso" icon_state = "honker_harness" - construction_time = 300 - construction_cost = list("metal"=20000,"glass"=10000,"bananium"=10000) /obj/item/mecha_parts/part/honker_head name="H.O.N.K Head" icon_state = "honker_head" - construction_time = 200 - construction_cost = list("metal"=10000,"glass"=5000,"bananium"=5000) /obj/item/mecha_parts/part/honker_left_arm name="H.O.N.K Left Arm" icon_state = "honker_l_arm" - construction_time = 200 - construction_cost = list("metal"=15000,"bananium"=5000) /obj/item/mecha_parts/part/honker_right_arm name="H.O.N.K Right Arm" icon_state = "honker_r_arm" - construction_time = 200 - construction_cost = list("metal"=15000,"bananium"=5000) /obj/item/mecha_parts/part/honker_left_leg name="H.O.N.K Left Leg" icon_state = "honker_l_leg" - construction_time = 200 - construction_cost = list("metal"=20000,"bananium"=5000) /obj/item/mecha_parts/part/honker_right_leg name="H.O.N.K Right Leg" icon_state = "honker_r_leg" - construction_time = 200 - construction_cost = list("metal"=20000,"bananium"=5000) ////////// Phazon @@ -291,51 +236,37 @@ /obj/item/mecha_parts/part/phazon_torso name="Phazon Torso" icon_state = "phazon_harness" - construction_time = 300 - construction_cost = list("metal"=35000,"glass"=10000,"plasma"=20000) origin_tech = "programming=5;materials=6;bluespace=5;powerstorage=5" /obj/item/mecha_parts/part/phazon_head name="Phazon Head" icon_state = "phazon_head" - construction_time = 200 - construction_cost = list("metal"=15000,"glass"=5000,"plasma"=10000) origin_tech = "programming=4;materials=5;magnets=5" /obj/item/mecha_parts/part/phazon_left_arm name="Phazon Left Arm" icon_state = "phazon_l_arm" - construction_time = 200 - construction_cost = list("metal"=20000,"plasma"=10000) origin_tech = "materials=5;bluespace=2;magnets=2" /obj/item/mecha_parts/part/phazon_right_arm name="Phazon Right Arm" icon_state = "phazon_r_arm" - construction_time = 200 - construction_cost = list("metal"=20000,"plasma"=10000) origin_tech = "materials=5;bluespace=2;magnets=2" /obj/item/mecha_parts/part/phazon_left_leg name="Phazon Left Leg" icon_state = "phazon_l_leg" - construction_time = 200 - construction_cost = list("metal"=20000,"plasma"=10000) origin_tech = "materials=5;bluespace=3;magnets=3" /obj/item/mecha_parts/part/phazon_right_leg name="Phazon Right Leg" icon_state = "phazon_r_leg" - construction_time = 200 - construction_cost = list("metal"=20000,"plasma"=10000) origin_tech = "materials=5;bluespace=3;magnets=3" /obj/item/mecha_parts/part/phazon_armor name="Phazon armor" desc="Phazon armor plates. They are layered with plasma to protect the pilot from the stress of phasing and have unusual properties." icon_state = "phazon_armor" - construction_time = 300 - construction_cost = list("metal"=45000,"plasma"=30000) origin_tech = "materials=6;bluespace=5;magnets=5" ///////// Odysseus @@ -349,8 +280,6 @@ /obj/item/mecha_parts/part/odysseus_head name="Odysseus Head" icon_state = "odysseus_head" - construction_time = 100 - construction_cost = list("metal"=6000,"glass"=10000) origin_tech = "programming=3;materials=2" /obj/item/mecha_parts/part/odysseus_torso @@ -358,47 +287,35 @@ desc="A torso part of Odysseus. Contains power unit, processing core and life support systems." icon_state = "odysseus_torso" origin_tech = "programming=2;materials=2;biotech=2;engineering=2" - construction_time = 180 - construction_cost = list("metal"=12000) /obj/item/mecha_parts/part/odysseus_left_arm name="Odysseus Left Arm" desc="An Odysseus left arm. Data and power sockets are compatible with most exosuit tools." icon_state = "odysseus_l_arm" origin_tech = "programming=2;materials=2;engineering=2" - construction_time = 120 - construction_cost = list("metal"=6000) /obj/item/mecha_parts/part/odysseus_right_arm name="Odysseus Right Arm" desc="An Odysseus right arm. Data and power sockets are compatible with most exosuit tools." icon_state = "odysseus_r_arm" origin_tech = "programming=2;materials=2;engineering=2" - construction_time = 120 - construction_cost = list("metal"=6000) /obj/item/mecha_parts/part/odysseus_left_leg name="Odysseus Left Leg" desc="An Odysseus left leg. Contains somewhat complex servodrives and balance maintaining systems." icon_state = "odysseus_l_leg" origin_tech = "programming=2;materials=2;engineering=2" - construction_time = 130 - construction_cost = list("metal"=7000) /obj/item/mecha_parts/part/odysseus_right_leg name="Odysseus Right Leg" desc="A Odysseus right leg. Contains somewhat complex servodrives and balance maintaining systems." icon_state = "odysseus_r_leg" origin_tech = "programming=2;materials=2;engineering=2" - construction_time = 130 - construction_cost = list("metal"=7000) /*/obj/item/mecha_parts/part/odysseus_armour name="Odysseus Carapace" icon_state = "odysseus_armour" - origin_tech = "materials=3;engineering=3" - construction_time = 200 - construction_cost = list("metal"=15000)*/ + origin_tech = "materials=3;engineering=3")*/ ///////// Circuitboards diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index e895e2f3ad2..69753a3252c 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -191,21 +191,14 @@ qdel(src) return - direction_loop: - for(var/dirn in cardinal) - var/turf/T = get_step(src, dirn) + if(!linked_node || get_dist(linked_node, src) > linked_node.node_range) + return - if (!istype(T) || T.density || locate(/obj/structure/alien/weeds) in T || istype(T, /turf/space)) - continue + for(var/turf/T in U.GetAtmosAdjacentTurfs()) + if(locate(/obj/structure/alien/weeds) in T || istype(T, /turf/space)) + continue - if(!linked_node || get_dist(linked_node, src) > linked_node.node_range) - return - - for(var/obj/O in T) - if(O.density) - continue direction_loop - - new /obj/structure/alien/weeds(T, linked_node) + new /obj/structure/alien/weeds(T, linked_node) /obj/structure/alien/weeds/ex_act(severity) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index f26026b0754..00def7263cf 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -26,6 +26,7 @@ var/action_button_is_hands_free = 0 //If 1, bypass the restrained, lying, and stunned checks action buttons normally test for var/datum/action/item_action/action = null + var/list/materials = list() //Since any item can now be a piece of clothing, this has to be put here so all items share it. var/flags_inv //This flag is used to determine when items in someone's inventory cover others. IE helmets making it so you can't see glasses, etc. var/_color = null diff --git a/code/game/objects/items/ashtray.dm b/code/game/objects/items/ashtray.dm index d064bee3e4f..766b5d55163 100644 --- a/code/game/objects/items/ashtray.dm +++ b/code/game/objects/items/ashtray.dm @@ -81,8 +81,7 @@ icon_broken = "ashtray_bork_bl" max_butts = 14 health = 24.0 - g_amt = 30 - m_amt = 30 + materials = list(MAT_METAL=30, MAT_GLASS=30) empty_desc = "Cheap plastic ashtray." throwforce = 3.0 die() @@ -102,7 +101,7 @@ icon_broken = "ashtray_bork_br" max_butts = 10 health = 72.0 - m_amt = 80 + materials = list(MAT_METAL=80) empty_desc = "Massive bronze ashtray." throwforce = 10.0 @@ -123,7 +122,7 @@ icon_broken = "ashtray_bork_gl" max_butts = 12 health = 12.0 - g_amt = 60 + materials = list(MAT_GLASS=60) empty_desc = "Glass ashtray. Looks fragile." throwforce = 6.0 diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 69adcfb3ae9..48a976cac1f 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -1,10 +1,3 @@ -#define VANILLA_BUG 0 -#define UNIVERSAL_BUG 1 -#define NETWORK_BUG 2 -#define SABOTAGE_BUG 3 -#define ADVANCED_BUG 4 -#define ADMIN_BUG 5 - #define BUGMODE_LIST 0 #define BUGMODE_MONITOR 1 #define BUGMODE_TRACK 2 @@ -23,13 +16,9 @@ throw_range = 20 var/obj/machinery/camera/current = null - var/obj/item/expansion = null - var/bugtype = VANILLA_BUG var/last_net_update = 0 - var/last_bugtype = VANILLA_BUG var/list/bugged_cameras = list() - var/skip_bugcheck = 0 var/track_mode = BUGMODE_LIST var/last_tracked = 0 @@ -46,11 +35,6 @@ processing_objects += src /obj/item/device/camera_bug/Destroy() - if(expansion) - qdel(expansion) - expansion = null - return ..() -/* Easier to just call del() than this nonsense get_cameras() for(var/cam_tag in bugged_cameras) var/obj/machinery/camera/camera = bugged_cameras[cam_tag] @@ -59,8 +43,7 @@ bugged_cameras = list() if(tracking) tracking = null - ..() -*/ + return ..() /obj/item/device/camera_bug/interact(var/mob/user = usr) var/datum/browser/popup = new(user, "camerabug","Camera Bug",nref=src) @@ -78,7 +61,7 @@ return null var/turf/T = get_turf(user.loc) - if(T.z != current.z || (!skip_bugcheck && current.bug != src) || !current.can_use()) + if(T.z != current.z || !current.can_use()) user << "[src] has lost the signal." current = null user.reset_view(null) @@ -88,26 +71,18 @@ return 1 /obj/item/device/camera_bug/proc/get_cameras() - if(bugtype != last_bugtype || ( (bugtype in list(UNIVERSAL_BUG,NETWORK_BUG,ADMIN_BUG)) && world.time > (last_net_update + 100))) + if(world.time > (last_net_update + 100)) bugged_cameras = list() - last_bugtype = bugtype for(var/obj/machinery/camera/camera in cameranet.cameras) if(camera.stat || !camera.can_use()) continue - switch(bugtype) - if(VANILLA_BUG,SABOTAGE_BUG,ADVANCED_BUG) - if(camera.bug == src) - bugged_cameras[camera.c_tag] = camera - if(UNIVERSAL_BUG) - if(camera.bug) - bugged_cameras[camera.c_tag] = camera - if(NETWORK_BUG,ADMIN_BUG) - if(length(list("SS13","MINE")&camera.network)) - bugged_cameras[camera.c_tag] = camera + if(length(list("SS13","MINE")&camera.network)) + bugged_cameras[camera.c_tag] = camera sortList(bugged_cameras) return bugged_cameras + /obj/item/device/camera_bug/proc/menu(var/list/cameras) if(!cameras || !cameras.len) return "No bugged cameras found." @@ -119,16 +94,10 @@ for(var/entry in cameras) var/obj/machinery/camera/C = cameras[entry] var/functions = "" - switch(bugtype) - if(SABOTAGE_BUG) - functions = " - \[Disable\]" - if(ADVANCED_BUG) - functions = " - \[Monitor\]" - if(ADMIN_BUG) - if(C.bug == src) - functions = " - \[Monitor\] \[Disable\]" - else - functions = " - \[Monitor\]" + if(C.bug == src) + functions = " - \[Monitor\] \[Disable\]" + else + functions = " - \[Monitor\]" html += "
[entry][functions]
Preview
" @@ -385,7 +387,7 @@ datum/preferences dat += "Ghost radio: [(toggles & CHAT_GHOSTRADIO) ? "Nearest Speakers" : "All Chatter"]
" if(config.allow_Metadata) dat += "OOC notes: Edit
" - + if(user.client) if(user.client.holder) dat += "Adminhelp sound: " @@ -393,7 +395,7 @@ datum/preferences if(check_rights(R_ADMIN,0)) dat += "OOC:     Change
" - + if(unlock_content) dat += "BYOND Membership Publicity: [(toggles & MEMBER_PUBLIC) ? "Public" : "Hidden"]
" @@ -1010,6 +1012,9 @@ datum/preferences if("undershirt") undershirt = random_undershirt(gender) ShowChoices(user) + if("socks") + socks = random_socks(gender) + ShowChoices(user) if("eyes") r_eyes = rand(0,255) g_eyes = rand(0,255) @@ -1210,6 +1215,22 @@ datum/preferences undershirt = new_undershirt ShowChoices(user) + if("socks") + var/list/valid_sockstyles = list() + for(var/sockstyle in socks_list) + var/datum/sprite_accessory/S = socks_list[sockstyle] + if(gender == MALE && S.gender == FEMALE) + continue + if(gender == FEMALE && S.gender == MALE) + continue + if( !(species in S.species_allowed)) + continue + valid_sockstyles[sockstyle] = socks_list[sockstyle] + var/new_socks = input(user, "Choose your character's socks:", "Character Preference") as null|anything in valid_sockstyles + ShowChoices(user) + if(new_socks) + socks = new_socks + if("eyes") var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference") as color|null if(new_eyes) @@ -1360,7 +1381,7 @@ datum/preferences if("publicity") if(unlock_content) toggles ^= MEMBER_PUBLIC - + if("gender") if(gender == MALE) gender = FEMALE @@ -1548,6 +1569,7 @@ datum/preferences character.underwear = underwear character.undershirt = undershirt + character.socks = socks if(backbag > 4 || backbag < 1) backbag = 1 //Same as above diff --git a/code/modules/client/preferences_mysql.dm b/code/modules/client/preferences_mysql.dm index 96e51448c6d..8470ece80a9 100644 --- a/code/modules/client/preferences_mysql.dm +++ b/code/modules/client/preferences_mysql.dm @@ -149,6 +149,9 @@ nanotrasen_relation = query.item[52] speciesprefs = text2num(query.item[53]) + //socks + socks = query.item[54] + //Sanitize metadata = sanitize_text(metadata, initial(metadata)) real_name = reject_bad_name(real_name) @@ -196,6 +199,9 @@ disabilities = sanitize_integer(disabilities, 0, 65535, initial(disabilities)) be_special = sanitize_integer(be_special, 0, 65535, initial(be_special)) + socks = sanitize_text(socks, initial(socks)) + + // if(isnull(disabilities)) disabilities = 0 if(!player_alt_titles) player_alt_titles = new() if(!organ_data) src.organ_data = list() @@ -267,7 +273,8 @@ organ_data='[organlist]', rlimb_data='[rlimblist]', nanotrasen_relation='[nanotrasen_relation]', - speciesprefs='[speciesprefs]' + speciesprefs='[speciesprefs]', + socks='[socks]' WHERE ckey='[C.ckey]' AND slot='[default_slot]'"} ) @@ -295,7 +302,7 @@ job_karma_high, job_karma_med, job_karma_low, flavor_text, med_record, sec_record, gen_record, player_alt_titles, be_special, - disabilities, organ_data, rlimb_data, nanotrasen_relation, speciesprefs) + disabilities, organ_data, rlimb_data, nanotrasen_relation, speciesprefs, socks) VALUES ('[C.ckey]', '[default_slot]', '[sql_sanitize_text(metadata)]', '[sql_sanitize_text(real_name)]', '[be_random_name]','[gender]', '[age]', '[sql_sanitize_text(species)]', '[sql_sanitize_text(language)]', @@ -312,7 +319,7 @@ '[job_karma_high]', '[job_karma_med]', '[job_karma_low]', '[sql_sanitize_text(flavor_text)]', '[sql_sanitize_text(med_record)]', '[sql_sanitize_text(sec_record)]', '[sql_sanitize_text(gen_record)]', '[playertitlelist]', '[be_special]', - '[disabilities]', '[organlist]', '[rlimblist]', '[nanotrasen_relation]', '[speciesprefs]') + '[disabilities]', '[organlist]', '[rlimblist]', '[nanotrasen_relation]', '[speciesprefs]','[socks]') "} ) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 8e1c0e12964..f1dd7b307f3 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -141,6 +141,7 @@ S["eyes_blue"] >> b_eyes S["underwear"] >> underwear S["undershirt"] >> undershirt + S["socks"] >> socks S["backbag"] >> backbag S["b_type"] >> b_type S["accent"] >> accent @@ -203,6 +204,7 @@ b_eyes = sanitize_integer(b_eyes, 0, 255, initial(b_eyes)) underwear = sanitize_integer(underwear, 1, underwear_m.len, initial(underwear)) undershirt = sanitize_integer(undershirt, 1, undershirt_t.len, initial(undershirt)) + socks = sanitize_integer(socks,1 socks_t.len, initial(socks)) backbag = sanitize_integer(backbag, 1, backbaglist.len, initial(backbag)) b_type = sanitize_text(b_type, initial(b_type)) accent = sanitize_text(accent, initial(accent)) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 6b66b5fb244..c24d307a01b 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -130,6 +130,7 @@ w_class = 2.0 flags = GLASSESCOVERSEYES slot_flags = SLOT_EYES + materials = list(MAT_GLASS = 250) var/vision_flags = 0 var/darkness_view = 0//Base human is 2 var/invisa_view = 0 @@ -370,6 +371,10 @@ BLIND // can't see anything permeability_coefficient = 0.90 slot_flags = SLOT_ICLOTHING armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + species_fit = list("Vox") + sprite_sheets = list( + "Vox" = 'icons/mob/species/vox/uniform.dmi' + ) var/has_sensor = 1//For the crew computer 2 = unable to change mode var/sensor_mode = 0 /* diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 6224f0d5f9e..f744b9fa26b 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -17,8 +17,7 @@ icon_state = "welding" flags = HEADCOVERSEYES | HEADCOVERSMOUTH item_state = "welding" - m_amt = 1750 - g_amt = 400 + materials = list(MAT_METAL=1750, MAT_GLASS=400) var/up = 0 flash_protect = 2 tint = 2 diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 769f1644e8d..1ed9ffce30c 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -21,8 +21,7 @@ desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd." icon_state = "weldingmask" item_state = "weldingmask" - m_amt = 3000 - g_amt = 1000 + materials = list(MAT_METAL=4000, MAT_GLASS=2000) var/up = 0 flash_protect = 2 tint = 2 diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm index 49181471fe8..b3c5d19b6d7 100644 --- a/code/modules/clothing/spacesuits/rig.dm +++ b/code/modules/clothing/spacesuits/rig.dm @@ -353,7 +353,7 @@ user << "You switch your helmet to combat mode. You will take damage in zero pressure environments, but you are more suited for a fight." name = "blood-red hardsuit helmet (combat)" desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." - flags = BLOCKHAIR + flags = BLOCKHAIR | THICKMATERIAL flags_inv = HIDEEARS cold_protection = null set_light(0) @@ -393,7 +393,7 @@ name = "blood-red hardsuit helmet (combat)" desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." slowdown = 0 - flags = BLOCKHAIR + flags = THICKMATERIAL flags_inv = null cold_protection = null @@ -450,7 +450,7 @@ desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort." item_state = "medical_hardsuit" slowdown = 1 - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical,/obj/item/device/rad_laser) armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50) //Security diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 4b754f9483c..097955805c2 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -8,7 +8,7 @@ icon_state = "paramedic-vest" item_state = "paramedic-vest" allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \ - /obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen) + /obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen,/obj/item/device/rad_laser) armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 10) species_fit = list("Vox") sprite_sheets = list( @@ -23,7 +23,7 @@ item_state = "brigphysician-vest" allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \ /obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, \ - /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen) + /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen,/obj/item/device/rad_laser) armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0) //Botonist @@ -278,7 +278,7 @@ item_state = "fr_jacket" blood_overlay_type = "armor" allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \ - /obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen) + /obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen,/obj/item/device/rad_laser) verb/toggle() set name = "Toggle Jacket Buttons" diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 14aa7594855..bad3378da22 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -5,7 +5,7 @@ item_state = "labcoat" blood_overlay_type = "coat" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS - allowed = list(/obj/item/device/analyzer,/obj/item/device/antibody_scanner,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper) + allowed = list(/obj/item/device/analyzer,/obj/item/device/antibody_scanner,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/device/rad_laser) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) species_fit = list("Vox") sprite_sheets = list( diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index e43b72a499c..2f6fb17f314 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -80,7 +80,7 @@ /obj/item/clothing/accessory/stethoscope/attack(mob/living/carbon/human/M, mob/living/user) if(ishuman(M) && isliving(user)) - if(user.a_intent == "help") + if(user.a_intent == I_HELP) var/body_part = parse_zone(user.zone_sel.selecting) if(body_part) var/their = "their" @@ -118,10 +118,11 @@ desc = "A bronze medal." icon_state = "bronze" _color = "bronze" + materials = list(MAT_METAL=1000) /obj/item/clothing/accessory/medal/conduct name = "distinguished conduct medal" - desc = "A bronze medal awarded for distinguished conduct. Whilst a great honor, this is most basic award given by Nanotrasen. It is often awarded by a captain to a member of his crew." + desc = "A bronze medal awarded for distinguished conduct. Whilst a great honor, this is the most basic award given by Nanotrasen. It is often awarded by a captain to a member of his crew." /obj/item/clothing/accessory/medal/bronze_heart name = "bronze heart medal" @@ -137,6 +138,7 @@ desc = "A silver medal." icon_state = "silver" _color = "silver" + materials = list(MAT_SILVER=1000) /obj/item/clothing/accessory/medal/silver/valor name = "medal of valor" @@ -151,6 +153,7 @@ desc = "A prestigious golden medal." icon_state = "gold" _color = "gold" + materials = list(MAT_GOLD=1000) /obj/item/clothing/accessory/medal/gold/captain name = "medal of captaincy" diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm index 0417a8ce0c5..06e13d50ed0 100644 --- a/code/modules/clothing/under/accessories/holster.dm +++ b/code/modules/clothing/under/accessories/holster.dm @@ -52,7 +52,7 @@ if(istype(user.get_active_hand(),/obj) && istype(user.get_inactive_hand(),/obj)) user << "You need an empty hand to draw the [holstered]!" else - if(user.a_intent == "hurt") + if(user.a_intent == I_HARM) usr.visible_message("\red [user] draws the [holstered], ready to shoot!", \ "You draw the [holstered], ready to shoot!") else diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 45b4b4b618e..eca864123c5 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -1,9 +1,5 @@ /obj/item/clothing/under/color desc = "A standard issue colored jumpsuit. Variety is the spice of life!" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/color/random/New() diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index ece479485c3..9d7b74e9e82 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -7,10 +7,6 @@ item_state = "ba_suit" _color = "ba_suit" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/captain //Alright, technically not a 'civilian' but its better then giving a .dm file for a single define. desc = "It's a blue jumpsuit with some gold markings denoting the rank of \"Captain\"." @@ -19,11 +15,6 @@ item_state = "caparmor" _color = "captain" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) - /obj/item/clothing/under/rank/cargo name = "quartermaster's jumpsuit" @@ -32,10 +23,6 @@ item_state = "lb_suit" _color = "qm" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/cargotech @@ -45,10 +32,6 @@ item_state = "lb_suit" _color = "cargo" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/chaplain @@ -58,11 +41,6 @@ item_state = "bl_suit" _color = "chapblack" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) - /obj/item/clothing/under/rank/chef desc = "It's an apron which is given only to the most hardcore chefs in space." @@ -70,11 +48,6 @@ icon_state = "chef" _color = "chef" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) - /obj/item/clothing/under/rank/clown name = "clown suit" @@ -92,10 +65,6 @@ item_state = "b_suit" _color = "hop" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/head_of_personnel_whimsy desc = "A blue jacket and red tie, with matching red cuffs! Snazzy. Wearing this makes you feel more important than your job title does." @@ -113,11 +82,6 @@ _color = "hydroponics" permeability_coefficient = 0.50 flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) - /obj/item/clothing/under/rank/internalaffairs desc = "The plain, professional attire of an Internal Affairs Agent. The collar is immaculately starched." @@ -126,10 +90,6 @@ item_state = "internalaffairs" _color = "internalaffairs" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/ntrep desc = "A well-ironed dress shirt and matching set of black pants." @@ -138,11 +98,6 @@ item_state = "internalaffairs" _color = "internalaffairs" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) - /obj/item/clothing/under/rank/janitor desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards." @@ -151,10 +106,6 @@ _color = "janitor" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/lawyer @@ -166,37 +117,21 @@ icon_state = "lawyer_black" item_state = "lawyer_black" _color = "lawyer_black" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/lawyer/female icon_state = "black_suit_fem" item_state = "black_suit_fem" _color = "black_suit_fem" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/lawyer/red icon_state = "lawyer_red" item_state = "lawyer_red" _color = "lawyer_red" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/lawyer/blue icon_state = "lawyer_blue" item_state = "lawyer_blue" _color = "lawyer_blue" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/lawyer/bluesuit name = "Blue Suit" @@ -204,20 +139,12 @@ icon_state = "bluesuit" item_state = "bluesuit" _color = "bluesuit" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/lawyer/purpsuit name = "Purple Suit" icon_state = "lawyer_purp" item_state = "lawyer_purp" _color = "lawyer_purp" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/lawyer/oldman name = "Old Man's Suit" @@ -225,10 +152,6 @@ icon_state = "oldman" item_state = "oldman" _color = "oldman" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/librarian @@ -238,11 +161,6 @@ item_state = "red_suit" _color = "red_suit" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) - /obj/item/clothing/under/mime name = "mime's outfit" @@ -260,14 +178,10 @@ item_state = "miner" _color = "miner" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/barber desc = "It's a barber's uniform." name = "barber's uniform" icon_state = "barber" item_state = "barber" - _color = "barber" \ No newline at end of file + _color = "barber" diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index 75e8f01d7e9..c190e31c95b 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -7,10 +7,6 @@ _color = "chief" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/atmospheric_technician desc = "It's a jumpsuit worn by atmospheric technicians." @@ -19,10 +15,6 @@ item_state = "atmos_suit" _color = "atmos" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/engineer desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding." @@ -32,10 +24,6 @@ _color = "engine" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/roboticist desc = "It's a slimming black with reinforced seams; great for industrial work." @@ -44,14 +32,10 @@ item_state = "robotics" _color = "robotics" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/mechanic desc = "It's a pair of overalls worn by mechanics." name = "mechanic's overalls" icon_state = "mechanic" item_state = "mechanic" - _color = "mechanic" \ No newline at end of file + _color = "mechanic" diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index 93baad2f1a4..b5895bc9d26 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -9,10 +9,6 @@ _color = "director" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 10, rad = 0) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/scientist desc = "It's made of a special fiber that provides minor protection against biohazards. It has markings that denote the wearer as a scientist." @@ -23,10 +19,6 @@ permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/chemist desc = "It's made of a special fiber that gives special protection against biohazards. It has a chemist rank stripe on it." @@ -37,10 +29,6 @@ permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /* * Medical @@ -54,10 +42,6 @@ permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/geneticist desc = "It's made of a special fiber that gives special protection against biohazards. It has a genetics rank stripe on it." @@ -68,10 +52,6 @@ permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/virologist desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it." @@ -82,10 +62,6 @@ permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/nursesuit desc = "It's a jumpsuit commonly worn by nursing staff in the medical department." @@ -96,10 +72,6 @@ permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/nurse desc = "A dress commonly worn by the nursing staff in the medical department." @@ -110,10 +82,6 @@ permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/orderly desc = "A white suit to be worn by orderly people who love orderly things." @@ -124,10 +92,6 @@ permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/medical desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel." @@ -138,10 +102,6 @@ permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/medical/blue name = "medical scrubs" @@ -149,10 +109,6 @@ icon_state = "scrubsblue" _color = "scrubsblue" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/medical/green name = "medical scrubs" @@ -160,10 +116,6 @@ icon_state = "scrubsgreen" _color = "scrubsgreen" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/medical/purple name = "medical scrubs" @@ -171,10 +123,6 @@ icon_state = "scrubspurple" _color = "scrubspurple" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/medical/mortician name = "coroner's scrubs" @@ -182,10 +130,6 @@ icon_state = "scrubsblack" _color = "scrubsblack" flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) //paramedic /obj/item/clothing/under/rank/medical/paramedic @@ -197,10 +141,6 @@ permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10) flags = ONESIZEFITSALL - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' - ) /obj/item/clothing/under/rank/psych desc = "A basic white jumpsuit. It has turqouise markings that denote the wearer as a psychiatrist." diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index 759a3636dff..0c73309342d 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -5,6 +5,7 @@ * Head of Security */ + /* * Security */ @@ -70,6 +71,10 @@ armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags = ONESIZEFITSALL siemens_coefficient = 0.9 + species_fit = list("Vox") + sprite_sheets = list( + "Vox" = 'icons/mob/species/vox/uniform.dmi' + ) /* * Head of Security diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 39d551da13a..ffd38f192a8 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -209,7 +209,7 @@ desc = "A formal black suit and red tie, intended for the station's finest." icon_state = "really_black_suit" item_state = "bl_suit" - _color = "black_suit" + _color = "really_black_suit" /obj/item/clothing/under/suit_jacket/female name = "executive suit" @@ -224,7 +224,6 @@ icon_state = "red_suit" item_state = "r_suit" _color = "red_suit" - species_fit = list("Vox") flags = ONESIZEFITSALL /obj/item/clothing/under/suit_jacket/navy @@ -563,17 +562,17 @@ _color = "vengine" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) -/obj/item/clothing/under/vox_toxins +/obj/item/clothing/under/vox_sec name = "Vox Security Jumpsuit" - desc = "A Security Uniform ripped to better fit a vox." + desc = "A Security officer's jumpsuit ripped to better fit a vox." icon_state = "vred" item_state = "vred" _color = "vred" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) -/obj/item/clothing/under/vox_toxins +/obj/item/clothing/under/vox_chem name = "Vox Chemist Jumpsuit" - desc = "A Security Uniform ripped to better fit a vox." + desc = "A Chemist's jumpsuit ripped to better fit a vox." icon_state = "vchem" item_state = "vchem" _color = "vchem" diff --git a/code/modules/fish/fish_items.dm b/code/modules/fish/fish_items.dm index dcbff456b37..fd8f3d79c6b 100644 --- a/code/modules/fish/fish_items.dm +++ b/code/modules/fish/fish_items.dm @@ -153,7 +153,7 @@ var/global/list/fish_items_list = list("goldfish" = /obj/item/weapon/fish/goldfi icon_state = "teeth" force = 2.0 throwforce = 5.0 - g_amt = 0 + materials = list() /obj/item/weapon/shard/shark_teeth/New() src.pixel_x = rand(-5,5) diff --git a/code/modules/fish/fishtank.dm b/code/modules/fish/fishtank.dm index f27a5c320a7..55a89f36789 100644 --- a/code/modules/fish/fishtank.dm +++ b/code/modules/fish/fishtank.dm @@ -491,7 +491,7 @@ /obj/machinery/fishtank/attack_animal(mob/living/simple_animal/M as mob) if(istype(M, /mob/living/simple_animal/pet/cat)) - if(M.a_intent == "help") //Cats can try to fish in open tanks on help intent + if(M.a_intent == I_HELP) //Cats can try to fish in open tanks on help intent if(lid_switch) //Can't fish in a closed tank. Fishbowls are ALWAYS open. M.visible_message("[M.name] stares at into \the [src] while sitting perfectly still.", "The lid is closed, so you stare into \the [src] intently.") else @@ -513,7 +513,7 @@ else attack_generic(M, M.harm_intent_damage) else if(istype(M, /mob/living/simple_animal/hostile/bear)) - if(M.a_intent == "help") //Bears can try to fish in open tanks on help intent + if(M.a_intent == I_HELP) //Bears can try to fish in open tanks on help intent if(lid_switch) //Can't fish in a closed tank. Fishbowls are ALWAYS open. M.visible_message("[M.name] scrapes it's claws along \the [src]'s lid.", "The lid is closed, so you scrape your claws against \the [src]'s lid.") else @@ -533,7 +533,7 @@ else if(M.melee_damage_upper > 0) //If the simple_animal has a melee_damage_upper defined, use that for the damage attack_generic(M, M.melee_damage_upper) - else if(M.a_intent == "harm") //Let any simple_animal try to break tanks when on harm intent + else if(M.a_intent == I_HARM) //Let any simple_animal try to break tanks when on harm intent if(M.harm_intent_damage <= 0) return //If it doesn't do damage, don't bother with the attack attack_generic(M, M.harm_intent_damage) check_health() @@ -553,7 +553,7 @@ user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) user.visible_message("[user] smashes through [src]!") destroy() - else if (usr.a_intent == "harm") + else if (usr.a_intent == I_HARM) user.changeNext_move(CLICK_CD_MELEE) playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1) usr.visible_message("[usr.name] bangs against the [src.name]!", \ @@ -589,7 +589,7 @@ //Welders repair damaged tanks on help intent, damage on all others if(istype(O, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/W = O - if(user.a_intent == "help") + if(user.a_intent == I_HELP) if(W.isOn()) if(cur_health < max_health) usr << "You repair some of the cracks on \the [src]." diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 580f626bf47..0aabf6fb3ef 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -632,7 +632,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/mint /datum/recipe/microwave/boiled_shrimp - reagents = list("water" = 1) + reagents = list("water" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/shrimp ) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index f494d7336db..9f0f22f8bcc 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -294,7 +294,7 @@ if(user == M) return ..() - if(user.a_intent == "harm") + if(user.a_intent == I_HARM) // This is being copypasted here because reagent_containers (WHY DOES FOOD DESCEND FROM THAT) overrides it completely. // TODO: refactor all food paths to be less horrible and difficult to work with in this respect. ~Z @@ -359,7 +359,7 @@ if(istype(user.loc,/turf/space)) return - if(user.a_intent == "harm") + if(user.a_intent == I_HARM) user.visible_message("\The [user] squashes \the [src]!") seed.thrown_at(src,user) sleep(-1) diff --git a/code/modules/hydroponics/trays/tray_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm index d3db34ec060..137d724f9cd 100644 --- a/code/modules/hydroponics/trays/tray_tools.dm +++ b/code/modules/hydroponics/trays/tray_tools.dm @@ -264,7 +264,7 @@ force = 5.0 throwforce = 7.0 w_class = 2.0 - m_amt = 50 + materials = list(MAT_METAL=50) attack_verb = list("slashed", "sliced", "cut", "clawed") //Hatchets and things to kill kudzu @@ -281,7 +281,7 @@ throwforce = 15.0 throw_speed = 4 throw_range = 4 - m_amt = 15000 + materials = list(MAT_METAL=15000) origin_tech = "materials=2;combat=1" attack_verb = list("chopped", "torn", "cut") hitsound = 'sound/weapons/bladeslice.ogg' diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm index 9516af4268f..16643f8842a 100644 --- a/code/modules/mining/coins.dm +++ b/code/modules/mining/coins.dm @@ -25,36 +25,43 @@ /obj/item/weapon/coin/gold cmineral = "gold" icon_state = "coin_gold_heads" + materials = list(MAT_GOLD = 200) credits = 160 /obj/item/weapon/coin/silver cmineral = "silver" icon_state = "coin_silver_heads" + materials = list(MAT_SILVER = 200) credits = 40 /obj/item/weapon/coin/diamond cmineral = "diamond" icon_state = "coin_diamond_heads" + materials = list(MAT_DIAMOND = 200) credits = 120 /obj/item/weapon/coin/iron cmineral = "iron" icon_state = "coin_iron_heads" + materials = list(MAT_METAL = 200) credits = 20 /obj/item/weapon/coin/plasma cmineral = "plasma" icon_state = "coin_plasma_heads" + materials = list(MAT_PLASMA = 200) credits = 80 /obj/item/weapon/coin/uranium cmineral = "uranium" icon_state = "coin_uranium_heads" + materials = list(MAT_URANIUM = 200) credits = 160 /obj/item/weapon/coin/clown cmineral = "bananium" icon_state = "coin_bananium_heads" + materials = list(MAT_BANANIUM = 200) credits = 600 //makes the clown cri /obj/item/weapon/coin/adamantine diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 1bfe96094db..67eb53c2e0d 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -31,7 +31,7 @@ component_parts += new /obj/item/device/assembly/igniter(null) component_parts += new /obj/item/weapon/stock_parts/console_screen(null) RefreshParts() - + /obj/machinery/mineral/ore_redemption/upgraded/New() ..() component_parts = list() @@ -604,7 +604,7 @@ stop_automated_movement_when_pulled = 1 mouse_opacity = 1 faction = list("neutral") - a_intent = "harm" + a_intent = I_HARM min_oxy = 0 max_oxy = 0 min_tox = 0 @@ -668,7 +668,7 @@ SetCollectBehavior() /mob/living/simple_animal/hostile/mining_drone/attack_hand(mob/living/carbon/human/M) - if(M.a_intent == "help") + if(M.a_intent == I_HELP) switch(search_objects) if(0) SetCollectBehavior() diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index eaf2dfe384f..1c6aa5a4500 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -58,7 +58,7 @@ throwforce = 10.0 item_state = "pickaxe" w_class = 4.0 - m_amt = 3750 //one sheet, but where can you make them? + materials = list(MAT_METAL=3750) //one sheet, but where can you make them? var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO origin_tech = "materials=1;engineering=1" attack_verb = list("hit", "pierced", "sliced", "attacked") @@ -151,7 +151,7 @@ throwforce = 4.0 item_state = "shovel" w_class = 3.0 - m_amt = 50 + materials = list(MAT_METAL=50) origin_tech = "materials=1;engineering=1" attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked") diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index a6dff1764df..a2a7cbc706a 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -393,6 +393,13 @@ var/global/list/rockTurfEdgeCache gets_drilled() ..() +/turf/simulated/mineral/attack_alien(var/mob/living/carbon/alien/M) + M << "You start digging into the rock..." + playsound(src, 'sound/effects/break_stone.ogg', 50, 1) + if(do_after(M, 40, target = src)) + M << "You tunnel into the rock." + gets_drilled() + /turf/simulated/mineral/Bumped(AM as mob|obj) . = ..() if(istype(AM,/mob/living/carbon/human)) diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 835e13f7104..937ee9d86d8 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -19,6 +19,7 @@ var/list/syllables // Used when scrambling text for a non-speaker. var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string. var/follow = 0 // Applies to HIVEMIND languages - should a follow link be included for dead mobs? + var/list/scramble_cache = list() /datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4) if(!syllables || !syllables.len) @@ -38,9 +39,6 @@ return "[trim(full_name)]" -/datum/language - var/list/scramble_cache = list() - /datum/language/proc/scramble(var/input) if(!syllables || !syllables.len) @@ -247,7 +245,7 @@ flags = RESTRICTED | WHITELISTED syllables = list("02011","01222","10100","10210","21012","02011","21200","1002","2001","0002","0012","0012","000","120","121","201","220","10","11","0") -/datum/language/machine/get_random_name() +/datum/language/trinary/get_random_name() var/new_name if(prob(70)) new_name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]" diff --git a/code/modules/mob/living/carbon/alien/alien_defenses.dm b/code/modules/mob/living/carbon/alien/alien_defenses.dm index 6c670bc7fe5..8d0c36bc05d 100644 --- a/code/modules/mob/living/carbon/alien/alien_defenses.dm +++ b/code/modules/mob/living/carbon/alien/alien_defenses.dm @@ -16,7 +16,7 @@ In all, this is a lot like the monkey code. /N switch(M.a_intent) - if ("help") + if (I_HELP) sleeping = max(0,sleeping-5) resting = 0 AdjustParalysis(-3) @@ -24,7 +24,7 @@ In all, this is a lot like the monkey code. /N AdjustWeakened(-3) visible_message("[M.name] nuzzles [src] trying to wake it up!") - if ("grab") + if (I_GRAB) src.grabbedby(M) return 1 @@ -53,11 +53,11 @@ In all, this is a lot like the monkey code. /N return 0 //this is horrible but 100% necessary switch(M.a_intent) - if("help") + if(I_HELP) help_shake_act(M) - if("grab") + if(I_GRAB) src.grabbedby(M) - if ("harm", "disarm") + if (I_HARM, I_DISARM) return 1 return 0 diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index b88004e4a2d..5e3302042f6 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -198,13 +198,13 @@ switch(M.a_intent) - if ("help") + if (I_HELP) help_shake_act(M) - if ("grab") + if (I_GRAB) grabbedby(M) - if ("harm") + if (I_HARM) M.do_attack_animation(src) var/damage = rand(1, 9) if (prob(90)) @@ -229,7 +229,7 @@ playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) visible_message("[M] has attempted to punch [src]!") - if ("disarm") + if (I_DISARM) if (!lying) if (prob(5))//Very small chance to push an alien down. Paralyse(2) @@ -265,7 +265,7 @@ In all, this is a lot like the monkey code. /N switch(M.a_intent) - if ("help") + if (I_HELP) sleeping = max(0,sleeping-5) resting = 0 AdjustParalysis(-3) @@ -291,7 +291,7 @@ In all, this is a lot like the monkey code. /N /mob/living/carbon/alien/humanoid/attack_larva(mob/living/carbon/alien/larva/L as mob) switch(L.a_intent) - if("help") + if(I_HELP) visible_message("[L] rubs its head against [src].") diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 8f098b64cdf..f9a2b945410 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -159,22 +159,11 @@ switch(M.a_intent) - if ("help") + if (I_HELP) help_shake_act(M) - if ("grab") - if (M == src || anchored) - return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src ) - - M.put_in_active_hand(G) - - G.synch() - - LAssailant = M - - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message("[M] has grabbed [src] passively!") + if (I_GRAB) + grabbedby(M) else M.do_attack_animation(src) @@ -216,7 +205,7 @@ switch(M.a_intent) - if ("help") + if (I_HELP) sleeping = max(0,sleeping-5) resting = 0 AdjustParalysis(-3) diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 5e6a471834d..d354671f565 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -8,10 +8,6 @@ w_class = 3 origin_tech = "biotech=3" - var/list/construction_cost = list("metal"=1000,"glass"=500) - var/construction_time = 75 - //these vars are so the mecha fabricator doesn't shit itself anymore. --NEO - req_access = list(access_robotics) //Revised. Brainmob is now contained directly within object of transfer. MMI in this case. diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 15e71c98abc..8cee6355712 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -4,10 +4,8 @@ icon = 'icons/obj/assemblies.dmi' icon_state = "posibrain" w_class = 3 - origin_tech = "engineering=4;materials=4;bluespace=2;programming=4" + origin_tech = "biotech=3;programming=2" - construction_cost = list("metal"=500,"glass"=500,"silver"=200,"gold"=200,"plasma"=100,"diamond"=10) - construction_time = 75 var/searching = 0 var/askDelay = 10 * 60 * 1 //var/mob/living/carbon/brain/brainmob = null diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index a63f487aec7..7d464ff0f22 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -181,7 +181,7 @@ return //BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller - if((tmob.a_intent == "help" || tmob.restrained()) && (a_intent == "help" || src.restrained()) && tmob.canmove && !tmob.buckled && canmove) // mutual brohugs all around! + if((tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || src.restrained()) && tmob.canmove && !tmob.buckled && canmove) // mutual brohugs all around! var/turf/oldloc = loc loc = tmob.loc tmob.loc = oldloc @@ -244,6 +244,8 @@ stat(null, eta_status) if (client.statpanel == "Status") + if(locate(/obj/item/device/assembly/health) in src) + stat(null, "Health: [health]") if (internal) if (!internal.air_contents) qdel(internal) @@ -414,7 +416,7 @@ /mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L as mob) switch(L.a_intent) - if("help") + if(I_HELP) visible_message("[L] rubs its head against [src].") @@ -431,7 +433,7 @@ var/armor_block = run_armor_check(affecting, "melee") apply_damage(damage, BRUTE, affecting, armor_block) -/mob/living/carbon/human/proc/is_loyalty_implanted() +/mob/living/carbon/human/proc/is_loyalty_implanted() for(var/L in contents) if(istype(L, /obj/item/weapon/implant/loyalty)) for(var/obj/item/organ/external/O in organs) @@ -694,7 +696,7 @@ // if looting pockets with gloves, do it quietly if(href_list["pockets"]) - if(isanimal(usr)) + if(isanimal(usr)) return //animals cannot strip people if(frozen) @@ -726,19 +728,19 @@ // Update strip window if(usr.machine == src && in_range(src, usr)) show_inv(usr) - + else if(!pickpocket) // Display a warning if the user mocks up src << "You feel your [pocket_side] pocket being fumbled with!" // if looting id with gloves, do it quietly - this allows pickpocket gloves to take/place id stealthily - Bone White if(href_list["item"]) - if(isanimal(usr)) + if(isanimal(usr)) return //animals cannot strip people - + if(frozen) usr << "\red Do not attempt to strip frozen people." - return + return var/itemTarget = href_list["item"] if(itemTarget == "id") if(pickpocket) @@ -1158,7 +1160,7 @@ if(!fail_msg) fail_msg = "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"] to inject into." user << "[fail_msg]" - + /mob/living/carbon/human/proc/check_has_mouth() // Todo, check stomach organ when implemented. var/obj/item/organ/external/head/H = get_organ("head") @@ -1170,7 +1172,7 @@ if(stat==DEAD)return if(!check_has_mouth()) - return + return if(!lastpuke) lastpuke = 1 @@ -1517,16 +1519,16 @@ W.add_fingerprint(src) -// Allows IPC's to change their monitor display +// Allows IPC's to change their monitor display /mob/living/carbon/human/proc/change_monitor() - set category = "IC" + set category = "IC" set name = "Change Monitor Display" set desc = "Change the display on your monitor." - + if(stat || paralysis || stunned || weakened) src << "You cannot change your monitor display in your current state." - return - + return + var/list/hair = list() for(var/i in hair_styles_list) var/datum/sprite_accessory/hair/tmp_hair = hair_styles_list[i] @@ -1540,7 +1542,7 @@ h_style = new_style update_hair() - + //Putting a couple of procs here that I don't know where else to dump. //Mostly going to be used for Vox and Vox Armalis, but other human mobs might like them (for adminbuse). /mob/living/carbon/human/proc/leap() diff --git a/code/modules/mob/living/carbon/human/human_attackalien.dm b/code/modules/mob/living/carbon/human/human_attackalien.dm index c09901e8dcb..e40030c9e0f 100644 --- a/code/modules/mob/living/carbon/human/human_attackalien.dm +++ b/code/modules/mob/living/carbon/human/human_attackalien.dm @@ -4,12 +4,12 @@ return 0 switch(M.a_intent) - if ("help") + if (I_HELP) visible_message(text("\blue [M] caresses [src] with its scythe like arm.")) - if ("grab") + if (I_GRAB) grabbedby(M) - if("harm") + if(I_HARM) M.do_attack_animation(src) if (w_uniform) w_uniform.add_fingerprint(M) @@ -30,7 +30,7 @@ apply_effect(4, WEAKEN, armor_block) updatehealth() - if("disarm") + if(I_DISARM) M.do_attack_animation(src) var/randn = rand(1, 100) if (randn <= 80) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index fe466cb1c74..c863249b79a 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -58,7 +58,7 @@ species.handle_attack_hand(src,M) switch(M.a_intent) - if("help") + if(I_HELP) if(health >= config.health_threshold_crit) help_shake_act(M) add_logs(src, M, "shaked") @@ -88,14 +88,14 @@ add_logs(src, M, "CPRed") return 1 - if("grab") + if(I_GRAB) if(attacker_style && attacker_style.grab_act(H, src)) return 1 else src.grabbedby(M) return 1 - if("harm") + if(I_HARM) if(attacker_style && attacker_style.harm_act(H, src)) return 1 else @@ -163,7 +163,7 @@ forcesay(hit_appends) - if("disarm") + if(I_DISARM) if(attacker_style && attacker_style.disarm_act(H, src)) return 1 else diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 036dcc78803..3036d0252a8 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -35,10 +35,10 @@ emp_act if(check_shields(P.damage, "the [P.name]", P)) P.on_hit(src, 100, def_zone) return 2 - + var/obj/item/organ/external/organ = get_organ(check_zone(def_zone)) if(isnull(organ)) - return + return //Shrapnel if (P.damage_type == BRUTE) @@ -221,7 +221,7 @@ emp_act /mob/living/carbon/human/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone) if(!I || !user) return 0 - if((istype(I, /obj/item/weapon/butch/meatcleaver) || istype(I, /obj/item/weapon/twohanded/chainsaw)) && src.stat == DEAD && user.a_intent == "harm") + if((istype(I, /obj/item/weapon/butch/meatcleaver) || istype(I, /obj/item/weapon/twohanded/chainsaw)) && src.stat == DEAD && user.a_intent == I_HARM) var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat = new /obj/item/weapon/reagent_containers/food/snacks/meat/human(get_turf(src.loc)) newmeat.name = src.real_name + newmeat.name newmeat.subjectname = src.real_name @@ -465,7 +465,7 @@ emp_act if(penetrated_dam) SS.create_breaches(damtype, penetrated_dam) /mob/living/carbon/human/mech_melee_attack(obj/mecha/M) - if(M.occupant.a_intent == "harm") + if(M.occupant.a_intent == I_HARM) if(M.damtype == "brute") step_away(src,M,15) var/obj/item/organ/external/affecting = get_organ(pick("chest", "chest", "chest", "head")) @@ -493,7 +493,7 @@ emp_act attack_log += text("\[[time_stamp()]\] Has been attacked by \the [M] controlled by [key_name(M.occupant)] (INTENT: [uppertext(M.occupant.a_intent)])") M.occupant.attack_log += text("\[[time_stamp()]\] Attacked [src] with \the [M] (INTENT: [uppertext(M.occupant.a_intent)])") msg_admin_attack("[key_name_admin(M.occupant)] attacked [key_name_admin(src)] with \the [M] (INTENT: [uppertext(M.occupant.a_intent)])") - + else ..() diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index bc10d54b1c8..7d7d400c9c3 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -30,7 +30,8 @@ var/b_type = "A+" //Player's bloodtype var/underwear = "Nude" //Which underwear the player wants - var/undershirt = "Nude" //Which undershirt the player wants. + var/undershirt = "Nude" //Which undershirt the player wants + var/socks = "Nude" //Which socks the player wants var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack. //Equipment slots diff --git a/code/modules/mob/living/carbon/human/species/apollo.dm b/code/modules/mob/living/carbon/human/species/apollo.dm index 8289d8bc267..f5445b80543 100644 --- a/code/modules/mob/living/carbon/human/species/apollo.dm +++ b/code/modules/mob/living/carbon/human/species/apollo.dm @@ -51,7 +51,7 @@ C << "It feels like part of you has died." /datum/species/wryn/handle_attack_hand(var/mob/living/carbon/human/H, var/mob/living/carbon/human/M) - if(M.a_intent == "harm") + if(M.a_intent == I_HARM) if(H.handcuffed) if(!(locate(H.internal_organs_by_name["antennae"]) in H.internal_organs)) return var/turf/p_loc = M.loc diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 2e7a5e2be23..f7493c272d8 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -327,6 +327,13 @@ var/global/list/damage_icon_parts = list() if(U2) stand_icon.Blend(new /icon(U2.icon, "us_[U2.icon_state]_s"), ICON_OVERLAY) + + if(socks) + var/datum/sprite_accessory/socks/U3 = socks_list[socks] + if(U3) + stand_icon.Blend(new /icon(U3.icon, "sk_[U3.icon_state]_s"), ICON_OVERLAY) + + if(update_icons) update_icons() diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 93a478f5829..078305a654d 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -270,7 +270,7 @@ switch(L.a_intent) - if("help") + if(I_HELP) visible_message("[L] rubs its head against [src].") @@ -366,22 +366,11 @@ switch(M.a_intent) - if ("help") + if (I_HELP) help_shake_act(M) - if ("grab") - if (M == src || anchored) - return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src) - - M.put_in_active_hand(G) - - G.synch() - - LAssailant = M - - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message("[M] has grabbed [src] passively!") + if (I_GRAB) + grabbedby(M) else M.do_attack_animation(src) @@ -427,10 +416,10 @@ return switch(M.a_intent) - if ("help") + if (I_HELP) visible_message("[M] caresses [src] with its scythe like arm.") - if ("harm") + if (I_HARM) M.do_attack_animation(src) if (prob(95)) attacked += 10 @@ -450,21 +439,10 @@ visible_message("[M] has attempted to lunge at [name]!", \ "[M] has attempted to lunge at [name]!") - if ("grab") - if (M == src || anchored) - return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src ) + if (I_GRAB) + grabbedby(M) - M.put_in_active_hand(G) - - G.synch() - - LAssailant = M - - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message(" [M] has grabbed [name] passively!") - - if ("disarm") + if (I_DISARM) M.do_attack_animation(src) playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) var/damage = 5 diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index d1017431eb8..5737aad1c6c 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -146,7 +146,7 @@ src.pinned += O /mob/living/mech_melee_attack(obj/mecha/M) - if(M.occupant.a_intent == "harm") + if(M.occupant.a_intent == I_HARM) if(M.damtype == "brute") step_away(src,M,15) switch(M.damtype) @@ -168,9 +168,9 @@ attack_log += text("\[[time_stamp()]\] Has been attacked by \the [M] controlled by [key_name(M.occupant)] (INTENT: [uppertext(M.occupant.a_intent)])") M.occupant.attack_log += text("\[[time_stamp()]\] Attacked [src] with \the [M] (INTENT: [uppertext(M.occupant.a_intent)])") msg_admin_attack("[key_name_admin(M.occupant)] attacked [key_name_admin(src)] with \the [M] (INTENT: [uppertext(M.occupant.a_intent)])") - + else - + step_away(src,M) add_logs(M.occupant, src, "pushed", object=M, admin=0) M.occupant_message("You push [src] out of the way.") diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 19fb4b6f513..6992e7d91e6 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -91,7 +91,7 @@ var/list/ai_verbs_default = list( /mob/living/silicon/ai/proc/add_ai_verbs() src.verbs |= ai_verbs_default src.verbs |= silicon_subsystems - + /mob/living/silicon/ai/proc/remove_ai_verbs() src.verbs -= ai_verbs_default src.verbs -= silicon_subsystems @@ -551,7 +551,7 @@ var/list/ai_verbs_default = list( switch(M.a_intent) - if ("help") + if (I_HELP) visible_message("[M] caresses [src]'s plating with its scythe like arm.") else //harm @@ -960,7 +960,7 @@ var/list/ai_verbs_default = list( /mob/living/silicon/ai/proc/is_in_chassis() return istype(loc, /turf) - + /mob/living/silicon/ai/transfer_ai(var/interaction, var/mob/user, var/mob/living/silicon/ai/AI, var/obj/item/device/aicard/card) if(!..()) return diff --git a/code/modules/mob/living/silicon/mommi/mommi.dm b/code/modules/mob/living/silicon/mommi/mommi.dm index fa3f2c45d82..9fe7884ff29 100644 --- a/code/modules/mob/living/silicon/mommi/mommi.dm +++ b/code/modules/mob/living/silicon/mommi/mommi.dm @@ -338,7 +338,7 @@ They can only use one tool at a time, they can't choose modules, and they have 1 if(ishuman(user)) - if(user.a_intent == "help") + if(user.a_intent == I_HELP) user.visible_message("\blue [user.name] pats [src.name] on the head.") return @@ -346,7 +346,7 @@ They can only use one tool at a time, they can't choose modules, and they have 1 if(!istype(user, /mob/living/silicon)) switch(user.a_intent) - if("disarm") + if(I_DISARM) user.attack_log += text("\[[time_stamp()]\] Disarmed [src.name] ([src.ckey])") src.attack_log += text("\[[time_stamp()]\] Has been disarmed by [user.name] ([user.ckey])") log_admin("ATTACK: [user.name] ([user.ckey]) disarmed [src.name] ([src.ckey])") diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 4dc1758066f..79ead634085 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -231,7 +231,7 @@ switch(M.a_intent) - if ("help") + if (I_HELP) for(var/mob/O in viewers(src, null)) if ((O.client && !( O.blinded ))) O.show_message(text("\blue [M] caresses [src]'s casing with its scythe like arm."), 1) @@ -281,7 +281,7 @@ medicalActive2 = null medical_cannotfind = 0 nanomanager.update_uis(src) - usr << "You reset your record-viewing software." + usr << "You reset your record-viewing software." /mob/living/silicon/pai/cancel_camera() set category = "pAI Commands" @@ -554,12 +554,12 @@ /mob/living/silicon/pai/MouseDrop(atom/over_object) var/mob/living/carbon/H = over_object if(!istype(H) || !Adjacent(H)) return ..() - if(H.a_intent == "help") + if(H.a_intent == I_HELP) get_scooped(H) //return else return ..() - + /mob/living/silicon/pai/on_forcemove(atom/newloc) if(card) card.loc = newloc diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm index ae09c2287a8..d0469bc42dc 100644 --- a/code/modules/mob/living/silicon/robot/component.dm +++ b/code/modules/mob/living/silicon/robot/component.dm @@ -135,8 +135,6 @@ /obj/item/robot_parts/robot_component icon = 'icons/obj/robot_component.dmi' icon_state = "working" - construction_time = 200 - construction_cost = list("metal"=5000) var/brute = 0 var/burn = 0 @@ -190,7 +188,7 @@ user << "Key: Suffocation/Toxin/Burns/Brute" user << "Body Temperature: ???" return - + var/scan_type if(istype(M, /mob/living/silicon/robot)) scan_type = "robot" @@ -253,5 +251,5 @@ user << "[capitalize(O.name)]: [O.damage]" if(!organ_found) user << "No prosthetics located." - + src.add_fingerprint(user) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm index 93a5b2c46f2..50b846c0192 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm @@ -45,7 +45,7 @@ //Actual picking-up event. /mob/living/silicon/robot/drone/attack_hand(mob/living/carbon/human/M as mob) - if(M.a_intent == "help") + if(M.a_intent == I_HELP) get_scooped(M) ..() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index df492ba3c1f..29691e3d53f 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -73,11 +73,11 @@ var/list/robot_verbs_default = list( var/braintype = "Cyborg" var/base_icon = "" var/crisis = 0 - + var/lamp_max = 10 //Maximum brightness of a borg lamp. Set as a var for easy adjusting. var/lamp_intensity = 0 //Luminosity of the headlamp. 0 is off. Higher settings than the minimum require power. var/lamp_recharging = 0 //Flag for if the lamp is on cooldown after being forcibly disabled. - + var/jetpackoverlay = 0 var/magpulse = 0 @@ -163,8 +163,8 @@ var/list/robot_verbs_default = list( /mob/living/silicon/robot/SetName(pickedName as text) custom_name = pickedName - updatename() - + updatename() + /mob/living/silicon/robot/proc/sync() if(lawupdate && connected_ai) lawsync() @@ -578,8 +578,8 @@ var/list/robot_verbs_default = list( return - if (istype(W, /obj/item/weapon/weldingtool) && user.a_intent == "help") - if(W == module_active) + if (istype(W, /obj/item/weapon/weldingtool) && user.a_intent == I_HELP) + if(W == module_active) return if (!getBruteLoss()) user << "Nothing to fix!" @@ -597,7 +597,7 @@ var/list/robot_verbs_default = list( return - else if(istype(W, /obj/item/stack/cable_coil) && user.a_intent == "help" && (wiresexposed || istype(src,/mob/living/silicon/robot/drone))) + else if(istype(W, /obj/item/stack/cable_coil) && user.a_intent == I_HELP && (wiresexposed || istype(src,/mob/living/silicon/robot/drone))) if (!getFireLoss()) user << "Nothing to fix!" return @@ -825,23 +825,15 @@ var/list/robot_verbs_default = list( switch(M.a_intent) - if ("help") + if (I_HELP) for(var/mob/O in viewers(src, null)) if ((O.client && !( O.blinded ))) O.show_message(text("[M] caresses [src]'s plating with its scythe like arm."), 1) - if ("grab") - if (M == src || anchored) - return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src ) + if (I_GRAB) + grabbedby(M) - M.put_in_active_hand(G) - - G.synch() - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message("[M] has grabbed [src] passively!") - - if ("harm") + if (I_HARM) M.do_attack_animation(src) var/damage = rand(10, 20) if (prob(90)) @@ -857,7 +849,7 @@ var/list/robot_verbs_default = list( visible_message("[M] took a swipe at [src]!", \ "[M] took a swipe at [src]!") - if ("disarm") + if (I_DISARM) if(!(lying)) M.do_attack_animation(src) if (prob(85)) @@ -923,7 +915,7 @@ var/list/robot_verbs_default = list( update_icons() if(!opened && (!istype(user, /mob/living/silicon))) - if (user.a_intent == "help") + if (user.a_intent == I_HELP) user.visible_message("[user] pets [src]!", \ "You pet [src]!") @@ -986,7 +978,7 @@ var/list/robot_verbs_default = list( icon_state = "[base_icon]-roll" else icon_state = base_icon - + if(jetpackoverlay) overlays += "minerjetpack-[icon_state]" update_fire() @@ -1124,7 +1116,7 @@ var/list/robot_verbs_default = list( if(lamp_button) lamp_button.icon_state = "lamp[lamp_intensity]" - update_icons() + update_icons() /mob/living/silicon/robot/Move(a, b, flag) @@ -1188,7 +1180,7 @@ var/list/robot_verbs_default = list( // Instead of being listed as "deactivated". The downside is that I'm going // to have to check if every camera is null or not before doing anything, to prevent runtime errors. // I could change the network to null but I don't know what would happen, and it seems too hacky for me. - + /mob/living/silicon/robot/proc/ResetSecurityCodes() set category = "Robot Commands" set name = "Reset Identity Codes" @@ -1368,7 +1360,7 @@ var/list/robot_verbs_default = list( connected_ai << "

NOTICE - Cyborg module change detected: [name] has loaded the [designation] module.
" if(3) //New Name connected_ai << "

NOTICE - Cyborg reclassification detected: [oldname] is now designated as [newname].
" - + /mob/living/silicon/robot/proc/disconnect_from_ai() if(connected_ai) sync() // One last sync attempt @@ -1381,4 +1373,4 @@ var/list/robot_verbs_default = list( connected_ai = AI connected_ai.connected_robots |= src notify_ai(1) - sync() + sync() diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index 68216b57736..3e0c3605eda 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -42,7 +42,7 @@ icon_living = "brainslug" icon_dead = "brainslug_dead" speed = 5 - a_intent = "harm" + a_intent = I_HARM stop_automated_movement = 1 status_flags = CANPUSH attacktext = "nips" diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index be304fc4cd8..cc5c5d930e9 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -10,7 +10,7 @@ response_harm = "punches" icon_dead = "shade_dead" speed = 0 - a_intent = "harm" + a_intent = I_HARM stop_automated_movement = 1 status_flags = CANPUSH attack_sound = 'sound/weapons/punch1.ogg' diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 85599a57af8..ac707426430 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -595,8 +595,8 @@ /mob/living/simple_animal/pet/corgi/attack_hand(mob/living/carbon/human/M) . = ..() switch(M.a_intent) - if("help") wuv(1,M) - if("harm") wuv(-1,M) + if(I_HELP) wuv(1,M) + if(I_HARM) wuv(-1,M) /mob/living/simple_animal/pet/corgi/proc/wuv(change, mob/M) if(change) diff --git a/code/modules/mob/living/simple_animal/friendly/diona.dm b/code/modules/mob/living/simple_animal/friendly/diona.dm index 4f9ce5fef68..45cc9a73f66 100644 --- a/code/modules/mob/living/simple_animal/friendly/diona.dm +++ b/code/modules/mob/living/simple_animal/friendly/diona.dm @@ -50,7 +50,7 @@ /mob/living/simple_animal/diona/attack_hand(mob/living/carbon/human/M as mob) //Let people pick the little buggers up. - if(M.a_intent == "help") + if(M.a_intent == I_HELP) if(M.species && M.species.name == "Diona") M << "You feel your being twine with that of [src] as it merges with your biomass." src << "You feel your being twine with that of [M] as you merge with its biomass." diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 238ef2c5852..c380fba0ea2 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -137,7 +137,7 @@ milk_content = min(50, milk_content+rand(5, 10)) /mob/living/simple_animal/cow/attack_hand(mob/living/carbon/M as mob) - if(!stat && M.a_intent == "disarm" && icon_state != icon_dead) + if(!stat && M.a_intent == I_DISARM && icon_state != icon_dead) M.visible_message("[M] tips over [src].","You tip over [src].") Weaken(30) icon_state = icon_dead diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 3ec2633e2e9..4659c1b4dd1 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -19,7 +19,7 @@ melee_damage_upper = 25 attacktext = "slashes" speak_emote = list("hisses") - a_intent = "harm" + a_intent = I_HARM attack_sound = 'sound/weapons/bladeslice.ogg' min_oxy = 0 max_oxy = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 3522cce7bc0..d83770ffc8b 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -17,7 +17,7 @@ response_disarm = "shoves" response_harm = "strikes" status_flags = 0 - a_intent = "harm" + a_intent = I_HARM var/throw_message = "bounces off of" var/icon_aggro = null // for swapping to when we get aggressive see_in_dark = 8 @@ -73,7 +73,7 @@ melee_damage_lower = 12 melee_damage_upper = 12 attacktext = "bites into" - a_intent = "harm" + a_intent = I_HARM speak_emote = list("chitters") attack_sound = 'sound/weapons/bladeslice.ogg' ranged_cooldown_cap = 4 @@ -140,7 +140,7 @@ melee_damage_upper = 0 attacktext = "barrels into" attack_sound = 'sound/weapons/punch1.ogg' - a_intent = "help" + a_intent = I_HELP speak_emote = list("screeches") throw_message = "sinks in slowly, before being pushed out of " status_flags = CANPUSH diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index 0d1d16ac19a..c3fa9d01800 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -138,7 +138,7 @@ /mob/living/simple_animal/hostile/mushroom/attack_hand(mob/living/carbon/human/M as mob) ..() - if(M.a_intent == "harm") + if(M.a_intent == I_HARM) Bruise() /mob/living/simple_animal/hostile/mushroom/hitby(atom/movable/AM) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm index 2635c97f9a1..f4f0db898bb 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm @@ -13,7 +13,7 @@ speak = list("HONK", "Honk!", "Welcome to clown planet!") emote_see = list("honks") speak_chance = 1 - a_intent = "harm" + a_intent = I_HARM maxHealth = 75 health = 75 speed = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm index e4b9fe7ac0f..eb3d989cb3e 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -15,7 +15,7 @@ response_harm = "hits the" speak = list("ALERT.","Hostile-ile-ile entities dee-twhoooo-wected.","Threat parameterszzzz- szzet.","Bring sub-sub-sub-systems uuuup to combat alert alpha-a-a.") emote_see = list("beeps menacingly","whirrs threateningly","scans its immediate vicinity") - a_intent = "harm" + a_intent = I_HARM stop_automated_movement_when_pulled = 0 health = 300 maxHealth = 300 diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index 729ef2ad658..69ad3e579d7 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -18,7 +18,7 @@ melee_damage_upper = 15 attacktext = "punches" attack_sound = 'sound/weapons/punch1.ogg' - a_intent = "harm" + a_intent = I_HARM var/corpse = /obj/effect/landmark/mobcorpse/russian var/weapon1 = /obj/item/weapon/kitchenknife min_oxy = 5 diff --git a/code/modules/mob/living/simple_animal/hostile/spaceworms.dm b/code/modules/mob/living/simple_animal/hostile/spaceworms.dm index 4736c407839..65cd340bf3f 100644 --- a/code/modules/mob/living/simple_animal/hostile/spaceworms.dm +++ b/code/modules/mob/living/simple_animal/hostile/spaceworms.dm @@ -30,7 +30,7 @@ max_co2 = 0 max_tox = 0 - a_intent = "harm" //so they don't get pushed around + a_intent = I_HARM //so they don't get pushed around environment_smash = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index 1cf812d1dec..c2e84b06370 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -8,7 +8,7 @@ icon_living = "angelseen" icon_dead = "angelseen" gender = NEUTER - a_intent = "harm" + a_intent = I_HARM response_help = "touches" response_disarm = "pushes" diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 6eb56766229..bd6d0723a0e 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -18,7 +18,7 @@ melee_damage_upper = 10 attacktext = "punches" attack_sound = 'sound/weapons/punch1.ogg' - a_intent = "harm" + a_intent = I_HARM var/corpse = /obj/effect/landmark/mobcorpse/syndicatesoldier var/weapon1 var/weapon2 diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index dbd87107f1e..b1d584777ad 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -87,9 +87,9 @@ return /mob/living/simple_animal/Life() - if(paralysis || stunned || weakened || buckled || resting) + if(paralysis || stunned || weakened || buckled || resting) canmove = 0 - else + else canmove = 1 //Health @@ -107,7 +107,7 @@ if(health > maxHealth) health = maxHealth - + if(resting && icon_resting && stat != DEAD) icon_state = icon_resting else if(icon_resting && stat != DEAD) @@ -292,12 +292,12 @@ switch(M.a_intent) - if("help") + if(I_HELP) if (health > 0) visible_message(" [M] [response_help] [src].") playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - if("grab") + if(I_GRAB) if (M == src || anchored) return if (!(status_flags & CANPUSH)) @@ -314,7 +314,7 @@ visible_message("[M] has grabbed [src] passively!") playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - if("harm", "disarm") + if(I_HARM, I_DISARM) M.do_attack_animation(src) visible_message("[M] [response_harm] [src]!") playsound(loc, "punch", 25, 1, -1) @@ -326,26 +326,13 @@ switch(M.a_intent) - if ("help") + if (I_HELP) visible_message("[M] caresses [src] with its scythe like arm.") - if ("grab") - if(M == src || anchored) - return - if(!(status_flags & CANPUSH)) - return + if (I_GRAB) + grabbedby(M) - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src ) - - M.put_in_active_hand(G) - - G.synch() - LAssailant = M - - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message("[M] has grabbed [src] passively!") - - if("harm", "disarm") + if(I_HARM, I_DISARM) M.do_attack_animation(src) var/damage = rand(15, 30) visible_message("[M] has slashed at [src]!", \ @@ -358,7 +345,7 @@ /mob/living/simple_animal/attack_larva(mob/living/carbon/alien/larva/L as mob) switch(L.a_intent) - if("help") + if(I_HELP) visible_message("[L] rubs its head against [src].") diff --git a/code/modules/mob/living/simple_animal/slaughter/slaughter.dm b/code/modules/mob/living/simple_animal/slaughter/slaughter.dm index 764947115d3..a54b0e0e1e2 100644 --- a/code/modules/mob/living/simple_animal/slaughter/slaughter.dm +++ b/code/modules/mob/living/simple_animal/slaughter/slaughter.dm @@ -4,6 +4,7 @@ name = "Slaughter Demon" real_name = "Slaughter Demon" desc = "You should run." + speak = list("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri", "orkan", "allaq") speak_emote = list("gurgles") emote_hear = list("wails","screeches") response_help = "thinks better of touching" @@ -13,7 +14,7 @@ icon_state = "daemon" icon_living = "daemon" speed = 1 - a_intent = "harm" + a_intent = I_HARM stop_automated_movement = 1 status_flags = CANPUSH attack_sound = 'sound/misc/demon_attack1.ogg' @@ -76,7 +77,7 @@ /mob/living/simple_animal/slaughter/Life() ..() if(boost[key_name(M)]: [msg]") usr << "You whisper to [M]: [msg]" - M << "Suddenly a strange, demonic voice resonates in your head... [msg]" + M << "Suddenly a strange, demonic voice resonates in your head... [msg]" for(var/mob/dead/observer/G in player_list) G.show_message("Demonic message from [usr] ([ghost_follow_link(usr, ghost=G)]) to [M] ([ghost_follow_link(M, ghost=G)]): [msg]") diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 9e406738a1b..cee943541d3 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -114,7 +114,7 @@ var/losebreath = 0.0//Carbon var/intent = null//Living var/shakecamera = 0 - var/a_intent = "help"//Living + var/a_intent = I_HELP//Living var/m_int = null//Living var/m_intent = "run"//Living var/lastKnownIP = null diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 0b8c6949029..2f50994b4b9 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -316,7 +316,7 @@ var/mob/living/carbon/human/affected = affecting var/mob/living/carbon/human/attacker = assailant switch(assailant.a_intent) - if("help") + if(I_HELP) /*if(force_down) assailant << "You no longer pin [affecting] to the ground." force_down = 0 @@ -324,10 +324,10 @@ //This specific example would allow you to stop pinning people to the floor without moving away from them. return - if("grab") + if(I_GRAB) return - if("harm") //This checks that the user is on harm intent. + if(I_HARM) //This checks that the user is on harm intent. if(last_hit_zone == "head") //This checks the hitzone the user has selected. In this specific case, they have the head selected. if(affecting.lying) return @@ -367,7 +367,7 @@ M << "\red You go blind!"*///This is a demonstration of adding a new damaging type based on intent as well as hitzone. //This specific example would allow you to squish people's eyes with a GRAB_NECK. - if("disarm") //This checks that the user is on disarm intent. + if(I_DISARM) //This checks that the user is on disarm intent. /* if(state < GRAB_AGGRESSIVE) assailant << "You require a better grab to do this." return diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index b3101543291..52fc729c121 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -96,7 +96,7 @@ proc/isembryo(A) if(istype(A, /mob/living/silicon/ai)) return 1 return 0 - + /mob/proc/isSynthetic() return 0 @@ -174,17 +174,17 @@ proc/isAntag(A) if(C.mind && C.mind.special_role) return 1 return 0 - + proc/isNonCrewAntag(A) if(!isAntag(A)) return 0 - + var/mob/living/carbon/C = A var/special_role = C.mind.special_role var/list/crew_roles = list("traitor", "Changeling", "Vampire", "Cultist", "Head Revolutionary", "Revolutionary", "malfunctioning AI", "Shadowling", "loyalist", "mutineer", "Response Team") if((special_role in crew_roles)) return 0 - + return 1 proc/isnewplayer(A) @@ -394,20 +394,20 @@ proc/Gibberish(t, p)//t is the inputted message, and any value higher than 70 fo return 0 //converts intent-strings into numbers and back -var/list/intents = list("help","disarm","grab","harm") +var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HARM) /proc/intent_numeric(argument) if(istext(argument)) switch(argument) - if("help") return 0 - if("disarm") return 1 - if("grab") return 2 + if(I_HELP) return 0 + if(I_DISARM) return 1 + if(I_GRAB) return 2 else return 3 else switch(argument) - if(0) return "help" - if(1) return "disarm" - if(2) return "grab" - else return "harm" + if(0) return I_HELP + if(1) return I_DISARM + if(2) return I_GRAB + else return I_HARM //change a mob's act-intent. Input the intent as a string such as "help" or use "right"/"left /mob/verb/a_intent_change(input as text) @@ -416,7 +416,7 @@ var/list/intents = list("help","disarm","grab","harm") if(ishuman(src) || isalienadult(src) || isbrain(src)) switch(input) - if("help","disarm","grab","harm") + if(I_HELP,I_DISARM,I_GRAB,I_HARM) a_intent = input if("right") a_intent = intent_numeric((intent_numeric(a_intent)+1) % 4) @@ -427,14 +427,14 @@ var/list/intents = list("help","disarm","grab","harm") else if(isrobot(src) || islarva(src)) switch(input) - if("help") - a_intent = "help" - if("harm") - a_intent = "harm" + if(I_HELP) + a_intent = I_HELP + if(I_HARM) + a_intent = I_HARM if("right","left") a_intent = intent_numeric(intent_numeric(a_intent) - 3) if(hud_used && hud_used.action_intent) - if(a_intent == "harm") + if(a_intent == I_HARM) hud_used.action_intent.icon_state = "harm" else hud_used.action_intent.icon_state = "help" @@ -527,7 +527,7 @@ var/list/intents = list("help","disarm","grab","harm") O << "[message]" if(ghost_sound) O << sound(ghost_sound) - + /mob/proc/switch_to_camera(var/obj/machinery/camera/C) if (!C.can_use() || stat || (get_dist(C, src) > 1 || machine != src || blinded || !canmove)) return 0 @@ -541,4 +541,3 @@ var/list/intents = list("help","disarm","grab","harm") eyeobj.setLoc(get_turf(C)) client.eye = eyeobj return 1 - \ No newline at end of file diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index b60ebe12c5d..77f48b976d5 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -7,6 +7,7 @@ datum/preferences gender = pick(MALE, FEMALE) underwear = random_underwear(gender) undershirt = random_undershirt(gender) + socks = random_socks(gender) if(species == "Human") s_tone = random_skin_tone() h_style = random_hair_style(gender, species) @@ -264,6 +265,12 @@ datum/preferences if(U2) undershirt_s = new/icon(U2.icon, "[U2.icon_state]_s", ICON_OVERLAY) + var/icon/socks_s = null + if(socks) + var/datum/sprite_accessory/socks/U3 = socks_list[socks] + if(U3) + socks_s = new/icon(U3.icon, "[U3.icon_state]_s", ICON_OVERLAY) + var/icon/clothes_s = null var/uniform_dmi='icons/mob/uniform.dmi' if(disabilities&DISABILITY_FLAG_FAT) @@ -792,6 +799,8 @@ datum/preferences preview_icon.Blend(underwear_s, ICON_OVERLAY) if(undershirt_s) preview_icon.Blend(undershirt_s, ICON_OVERLAY) + if(socks_s) + preview_icon.Blend(socks_s, ICON_OVERLAY) if(clothes_s) preview_icon.Blend(clothes_s, ICON_OVERLAY) preview_icon_front = new(preview_icon, dir = SOUTH) @@ -800,4 +809,5 @@ datum/preferences del(eyes_s) del(underwear_s) del(undershirt_s) + del(socks_s) del(clothes_s) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 45fe53c3d82..5cc722bb7fd 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -1260,4 +1260,193 @@ name = "Fire Tank-Top" icon_state = "tank_fire" gender = NEUTER -//end tanktops \ No newline at end of file +//end tanktops + +/////////////////////// +// Socks Definitions // +/////////////////////// +/datum/sprite_accessory/socks + icon = 'icons/mob/underwear.dmi' + +/datum/sprite_accessory/socks/nude + name = "Nude" + icon_state = null + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/white_norm + name = "Normal White" + icon_state = "white_norm" + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/black_norm + name = "Normal Black" + icon_state = "black_norm" + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/white_short + name = "Short White" + icon_state = "white_short" + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/black_short + name = "Short Black" + icon_state = "black_short" + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/white_knee + name = "Knee-high White" + icon_state = "white_knee" + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/black_knee + name = "Knee-high Black" + icon_state = "black_knee" + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/thin_knee + name = "Knee-high Thin" + icon_state = "thin_knee" + gender = FEMALE + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/striped_knee + name = "Knee-high Striped" + icon_state = "striped_knee" + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/rainbow_knee + name = "Knee-high Rainbow" + icon_state = "rainbow_knee" + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/white_thigh + name = "Thigh-high White" + icon_state = "white_thigh" + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + +/datum/sprite_accessory/socks/black_thigh + name = "Thigh-high Black" + icon_state = "black_thigh" + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/thin_thigh + name = "Thigh-high Thin" + icon_state = "thin_thigh" + gender = FEMALE + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/striped_thigh + name = "Thigh-high Striped" + icon_state = "striped_thigh" + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/rainbow_thigh + name = "Thigh-high Rainbow" + icon_state = "rainbow_thigh" + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/pantyhose + name = "Pantyhose" + icon_state = "pantyhose" + gender = FEMALE + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + + +/datum/sprite_accessory/socks/black_fishnet + name = "Black Fishnet" + icon_state = "black_fishnet" + gender = NEUTER + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + +/datum/sprite_accessory/socks/vox_white + name = "Vox White" + icon_state = "vox_white" + gender = NEUTER + species_allowed = list("Vox") + +/datum/sprite_accessory/socks/vox_black + name = "Vox Black" + icon_state = "vox_black" + gender = NEUTER + species_allowed = list("Vox") + +/datum/sprite_accessory/socks/vox_thin + name = "Vox Black Thin" + icon_state = "vox_blackthin" + gender = NEUTER + species_allowed = list("Vox") + +/datum/sprite_accessory/socks/vox_rainbow + name = "Vox Rainbow" + icon_state = "vox_rainbow" + gender = NEUTER + species_allowed = list("Vox") + +/datum/sprite_accessory/socks/vox_stripped + name = "Vox Stripped" + icon_state = "vox_white" + gender = NEUTER + species_allowed = list("Vox") + +/datum/sprite_accessory/socks/vox_white_thigh + name = "Vox Thigh-high White" + icon_state = "vox_whiteTH" + gender = NEUTER + species_allowed = list("Vox") + +/datum/sprite_accessory/socks/vox_black_thigh + name = "Vox Thigh-high Black" + icon_state = "vox_blackTH" + gender = NEUTER + species_allowed = list("Vox") + +/datum/sprite_accessory/socks/vox_thin_thigh + name = "Vox Thigh-high Thin" + icon_state = "vox_blackthinTH" + gender = NEUTER + species_allowed = list("Vox") + +/datum/sprite_accessory/socks/vox_rainbow_thigh + name = "Vox Thigh-high Rainbow" + icon_state = "vox_rainbowTH" + gender = NEUTER + species_allowed = list("Vox") + +/datum/sprite_accessory/socks/vox_stripped_thigh + name = "Vox Thigh-high Stripped" + icon_state = "vox_strippedTH" + gender = NEUTER + species_allowed = list("Vox") + +/datum/sprite_accessory/socks/vox_fishnet + name = "Vox Fishnets" + icon_state = "vox_fishnet" + gender = NEUTER + species_allowed = list("Vox") \ No newline at end of file diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 5616b617125..73870334d37 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -40,7 +40,7 @@ O.dna.SetSEValueRange(MONKEYBLOCK,0xDAC, 0xFFF) O.loc = loc O.viruses = viruses - O.a_intent = "harm" + O.a_intent = I_HARM if (client) @@ -259,7 +259,7 @@ if("Drone") new_xeno = new /mob/living/carbon/alien/humanoid/drone(loc) - new_xeno.a_intent = "harm" + new_xeno.a_intent = I_HARM new_xeno.key = key new_xeno << "You are now an alien." @@ -318,7 +318,7 @@ qdel(t) var/mob/living/simple_animal/pet/corgi/new_corgi = new /mob/living/simple_animal/pet/corgi (loc) - new_corgi.a_intent = "harm" + new_corgi.a_intent = I_HARM new_corgi.key = key new_corgi << "You are now a Corgi. Yap Yap!" @@ -353,7 +353,7 @@ var/mob/new_mob = new mobpath(src.loc) new_mob.key = key - new_mob.a_intent = "harm" + new_mob.a_intent = I_HARM new_mob << "You suddenly feel more... animalistic." @@ -374,7 +374,7 @@ var/mob/new_mob = new mobpath(src.loc) new_mob.key = key - new_mob.a_intent = "harm" + new_mob.a_intent = I_HARM new_mob << "You feel more... animalistic" new_mob.update_pipe_vision() @@ -470,12 +470,8 @@ return 1 //Antag Creatures! -/* if(ispath(MP, /mob/living/simple_animal/hostile/carp) && !jobban_isbanned(src, "Syndicate")) - return 1 */ if(ispath(MP, /mob/living/simple_animal/borer) && !jobban_isbanned(src, "alien") && !jobban_isbanned(src, "Syndicate")) return 1 - if(ispath(MP, /mob/living/carbon/alien) && !jobban_isbanned(src, "alien") && !jobban_isbanned(src, "Syndicate")) - return 1 if(ispath(MP, /mob/living/simple_animal/hostile/statue) && !jobban_isbanned(src, "Syndicate")) return 1 diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 7dff264aa53..a9a410df238 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -25,7 +25,7 @@ var/list/organ_cache = list() /obj/item/organ/attack_self(mob/user as mob) // Convert it to an edible form, yum yum. - if(!robotic && user.a_intent == "harm") + if(!robotic && user.a_intent == I_HARM) bitten(user) return @@ -71,8 +71,8 @@ var/list/organ_cache = list() //dead already, no need for more processing if(status & ORGAN_DEAD) - return - + return + // Don't process if we're in a freezer, an MMI or a stasis bag. //TODO: ambient temperature? if(istype(loc,/obj/item/device/mmi) || istype(loc,/obj/item/bodybag/cryobag) || istype(loc,/obj/structure/closet/crate/freezer)) return @@ -81,7 +81,7 @@ var/list/organ_cache = list() if ((status & ORGAN_ROBOT) || (owner && owner.species && (owner.species.flags & IS_PLANT))) germ_level = 0 return - + if(!owner) if(reagents) var/datum/reagent/blood/B = locate(/datum/reagent/blood) in reagents.reagent_list @@ -97,16 +97,16 @@ var/list/organ_cache = list() if(damage >= max_damage) die() - + else if(owner.bodytemperature >= 170) //cryo stops germs from moving and doing their bad stuffs //** Handle antibiotics and curing infections handle_antibiotics() handle_germ_effects() - + //check if we've hit max_damage if(damage >= max_damage) die() - + /obj/item/organ/examine(mob/user) ..(user) if(status & ORGAN_DEAD) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 3ab57ea1437..fe721a77d6d 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -21,7 +21,7 @@ w_class = 1.0 throw_speed = 3 throw_range = 7 - m_amt = 10 + materials = list(MAT_METAL=10) var/colour = "black" //what colour the ink is! pressure_resistance = 2 diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 2876c7ad89a..d11d6558cce 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -444,7 +444,7 @@ item_state = "videocam" w_class = 2.0 slot_flags = SLOT_BELT - m_amt = 2000 + materials = list(MAT_METAL=2000) var/on = 0 var/obj/machinery/camera/camera var/icon_on = "videocam_on" diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index f67021517a4..5a3df2ff47f 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -8,7 +8,7 @@ w_class = 1.0 throw_speed = 3 throw_range = 7 - m_amt = 60 + materials = list(MAT_METAL=60) _color = "cargo" pressure_resistance = 2 attack_verb = list("stamped") @@ -76,7 +76,7 @@ name = "Nanotrasen Representative's rubber stamp" icon_state = "stamp-cent" _color = "centcom" - + /obj/item/weapon/stamp/syndicate name = "suspicious rubber stamp" icon_state = "stamp-syndicate" diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index dd0fbd2fc7e..88478fec1e9 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -54,7 +54,7 @@ var/areastring = null var/obj/item/weapon/stock_parts/cell/cell var/start_charge = 90 // initial cell charge % - var/cell_type = 2500 + var/cell_type = 2500 var/opened = 0 //0=closed, 1=opened, 2=cover removed var/shorted = 0 var/lighting = 3 @@ -99,9 +99,9 @@ var/global/list/status_overlays_lighting var/global/list/status_overlays_environ var/indestructible = 0 // If set, prevents aliens from destroying it - + var/report_power_alarm = 1 - + /obj/machinery/power/apc/noalarm report_power_alarm = 0 @@ -143,7 +143,7 @@ src.update_icon() spawn(5) src.update() - + /obj/machinery/power/apc/Destroy() apcs -= src if(malfai && operating) @@ -378,7 +378,7 @@ results += 2 return results -// Used in process so it doesn't update the icon too much +// Used in process so it doesn't update the icon too much /obj/machinery/power/apc/proc/queue_icon_update() if(!updating_icon) @@ -644,7 +644,7 @@ //Synthetic human mob goes here. if(istype(user,/mob/living/carbon/human)) var/mob/living/carbon/human/H = user - if(!isnull(H.internal_organs_by_name["cell"]) && H.a_intent == "grab") + if(!isnull(H.internal_organs_by_name["cell"]) && H.a_intent == I_GRAB) if(emagged || stat & BROKEN) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) @@ -661,9 +661,9 @@ src.cell.charge = 0 user << "You slot your fingers into the APC interface and siphon off some of the stored charge for your own use." - if(src.cell.charge < 0) + if(src.cell.charge < 0) src.cell.charge = 0 - if(H.nutrition > 500) + if(H.nutrition > 500) H.nutrition = 500 src.charging = 1 else @@ -879,7 +879,7 @@ return 1 else return !locked - + /obj/machinery/power/apc/proc/is_locked(mob/user as mob) if(isobserver(user) && check_rights(R_ADMIN, 0, user)) return 0 @@ -1095,8 +1095,8 @@ //Returns 1 if the APC should attempt to charge /obj/machinery/power/apc/proc/attempt_charging() - return (chargemode && charging == 1 && operating) - + return (chargemode && charging == 1 && operating) + /obj/machinery/power/apc/draw_power(var/amount) if(terminal && terminal.powernet) return terminal.powernet.draw_power(amount) @@ -1258,7 +1258,7 @@ update() else if (last_ch != charging) queue_icon_update() - + /obj/machinery/power/apc/proc/autoset(var/val, var/on) if(on==0) if(val==2) // if on, return off @@ -1275,7 +1275,7 @@ return 1 return val - + // damage and destruction acts /obj/machinery/power/apc/emp_act(severity) @@ -1317,7 +1317,7 @@ set_broken() if (cell && prob(5)) cell.blob_act() - + /obj/machinery/power/apc/disconnect_terminal() if(terminal) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index ea9a92f3230..27974f6a922 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -470,8 +470,7 @@ obj/structure/cable/proc/cableColor(var/colorC) w_class = 2.0 throw_speed = 2 throw_range = 5 - m_amt = 50 - g_amt = 20 + materials = list(MAT_METAL=50, MAT_GLASS=20) flags = CONDUCT slot_flags = SLOT_BELT item_state = "coil" @@ -507,7 +506,7 @@ obj/structure/cable/proc/cableColor(var/colorC) if(!S) return - if(!(S.status & ORGAN_ROBOT) || user.a_intent != "help" || S.open == 2) + if(!(S.status & ORGAN_ROBOT) || user.a_intent != I_HELP || S.open == 2) return ..() if(S.burn_dam) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 46242540f8f..a209a127da9 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -605,7 +605,7 @@ var/status = 0 // LIGHT_OK, LIGHT_BURNED or LIGHT_BROKEN var/base_state var/switchcount = 0 // number of times switched - m_amt = 60 + materials = list(MAT_METAL=60) var/rigged = 0 // true if rigged to explode var/brightness_range = 2 //how much light it gives off var/brightness_power = 1 @@ -617,7 +617,7 @@ icon_state = "ltube" base_state = "ltube" item_state = "c_tube" - g_amt = 100 + materials = list(MAT_GLASS=100) brightness_range = 8 brightness_power = 3 @@ -633,7 +633,7 @@ icon_state = "lbulb" base_state = "lbulb" item_state = "contvapour" - g_amt = 100 + materials = list(MAT_GLASS=100) brightness_range = 5 brightness_power = 2 brightness_color = "#a0a080" @@ -648,7 +648,7 @@ icon_state = "fbulb" base_state = "fbulb" item_state = "egg4" - g_amt = 100 + materials = list(MAT_GLASS=100) brightness_range = 5 brightness_power = 2 @@ -706,7 +706,7 @@ if(!proximity) return if(istype(target, /obj/machinery/light)) return - if(user.a_intent != "harm") + if(user.a_intent != I_HARM) return shatter() diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 6b23a7dae2f..57ed66625ec 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -67,7 +67,7 @@ flags = CONDUCT slot_flags = SLOT_BELT item_state = "syringe_kit" - m_amt = 30000 + materials = list(MAT_METAL=30000) throwforce = 2 w_class = 1.0 throw_speed = 4 diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 5ceb6aa386b..18cd36a7fc9 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -38,7 +38,7 @@ icon_state = "blshell" caliber = "shotgun" projectile_type = "/obj/item/projectile/bullet" - m_amt = 4000 + materials = list(MAT_METAL=4000) /obj/item/ammo_casing/shotgun/buckshot @@ -55,7 +55,7 @@ desc = "A weak beanbag slug for riot control." icon_state = "bshell" projectile_type = "/obj/item/projectile/bullet/weakbullet/rubber" - m_amt = 250 + materials = list(MAT_METAL=250) /obj/item/ammo_casing/shotgun/improvised @@ -63,7 +63,7 @@ desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards." icon_state = "gshell" projectile_type = "/obj/item/projectile/bullet/pellet/weak" - m_amt = 250 + materials = list(MAT_METAL=250) pellets = 5 deviation = 30 @@ -73,7 +73,7 @@ propellant. It's like playing russian roulette, with a shotgun." icon_state = "improvshell" projectile_type = /obj/item/projectile/bullet/pellet/random - m_amt = 250 + materials = list(MAT_METAL=250) pellets = 5 deviation = 30 @@ -86,7 +86,7 @@ desc = "A stunning taser slug." icon_state = "stunshell" projectile_type = "/obj/item/projectile/bullet/stunshot" - m_amt = 200 + materials = list(MAT_METAL=250) /obj/item/ammo_casing/shotgun/meteorshot @@ -164,7 +164,7 @@ desc = "A tranquilizer round used to subdue individuals utilizing stimulants." icon_state = "cshell" projectile_type = "/obj/item/projectile/bullet/dart/syringe/tranquilizer" - m_amt = 250 + materials = list(MAT_METAL=250) /obj/item/ammo_casing/syringegun name = "syringe gun spring" diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index 36bb1207542..36ebbce963b 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -54,7 +54,7 @@ origin_tech = "combat=2" ammo_type = /obj/item/ammo_casing/shotgun max_ammo = 8 - m_amt = 100000 + materials = list(MAT_METAL=32000) /obj/item/ammo_box/shotgun/buck name = "Ammunition Box (buckshot)" @@ -63,15 +63,15 @@ /obj/item/ammo_box/shotgun/stun name = "Ammunition Box (stun shells)" ammo_type = /obj/item/ammo_casing/shotgun/stunslug - m_amt = 20000 + materials = list(MAT_METAL=2000) /obj/item/ammo_box/shotgun/beanbag name = "Ammunition Box (beanbag shells)" ammo_type = /obj/item/ammo_casing/shotgun/beanbag - m_amt = 4000 + materials = list(MAT_METAL=2000) /obj/item/ammo_box/shotgun/tranquilizer name = "Ammunition Box (tranquilizer darts)" icon_state = "45box" ammo_type = /obj/item/ammo_casing/shotgun/tranquilizer - m_amt = 2000 \ No newline at end of file + materials = list(MAT_METAL=2000) \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index be084ebca0e..7fa2224cbcd 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -188,9 +188,9 @@ icon_state = "[initial(icon_state)]-[round(ammo_count(),10)]" /obj/item/ammo_box/magazine/m12g - name = "shotgun magazine (12g buckshot)" + name = "shotgun magazine (12g slugs)" icon_state = "m12gb" - ammo_type = "/obj/item/ammo_casing/shotgun/buckshot" + ammo_type = "/obj/item/ammo_casing/shotgun" origin_tech = "combat=3;syndicate=1" caliber = "shotgun" max_ammo = 8 @@ -199,6 +199,10 @@ ..() icon_state = "[initial(icon_state)]-[Ceiling(ammo_count(0)/8)*8]" +/obj/item/ammo_box/magazine/m12g/buckshot + name = "shotgun magazine (12g buckshot slugs)" + icon_state = "m12gb" + ammo_type = "/obj/item/ammo_casing/shotgun/buckshot" /obj/item/ammo_box/magazine/m12g/stun name = "shotgun magazine (12g taser slugs)" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 44d510b42f5..61fb6ba0020 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -10,7 +10,7 @@ item_state = "gun" flags = CONDUCT slot_flags = SLOT_BELT - m_amt = 2000 + materials = list(MAT_METAL=2000) w_class = 3.0 throwforce = 5 throw_speed = 4 @@ -295,7 +295,7 @@ if (src.process_chambered()) //Point blank shooting if on harm intent or target we were targeting. - if(user.a_intent == "harm") + if(user.a_intent == I_HARM) user.visible_message("\red \The [user] fires \the [src] point blank at [M]!") if(istype(in_chamber)) in_chamber.damage *= 1.3 Fire(M,user,0,0,1) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 25a83332d9a..16141ac7da4 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -6,7 +6,7 @@ fire_sound = 'sound/weapons/Laser.ogg' charge_cost = 830 w_class = 3.0 - m_amt = 2000 + materials = list(MAT_METAL=2000) origin_tech = "combat=3;magnets=2" projectile_type = "/obj/item/projectile/beam" diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 0eee855c3da..d3e132d6210 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -272,7 +272,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. icon_state = "crossbow" item_state = "crossbow" w_class = 2 - m_amt = 2000 + materials = list(MAT_METAL=2000) origin_tech = "combat=2;magnets=2;syndicate=5" silenced = 1 projectile_type = "/obj/item/projectile/energy/bolt" @@ -285,7 +285,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. desc = "A reverse engineered weapon using syndicate technology." icon_state = "crossbowlarge" w_class = 3 - m_amt = 4000 + materials = list(MAT_METAL=4000) origin_tech = "combat=2;magnets=2;syndicate=3" //can be further researched for more syndie tech silenced = 0 projectile_type = "/obj/item/projectile/energy/bolt/large" @@ -294,7 +294,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. desc = "One and done!" icon_state = "crossbowlarge" origin_tech = null - m_amt = 0 + materials = list() /obj/item/weapon/gun/energy/plasmacutter name = "plasma cutter" diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 22704b55079..d1f0e244d6a 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -63,7 +63,7 @@ icon_state = "crossbow" w_class = 2.0 item_state = "crossbow" - m_amt = 2000 + materials = list(MAT_METAL=2000) origin_tech = "combat=2;magnets=2;syndicate=5" silenced = 1 fire_sound = 'sound/weapons/Genhit.ogg' @@ -98,7 +98,7 @@ silenced = 0 w_class = 3.0 force = 10 - m_amt = 4000 + materials = list(MAT_METAL=4000) projectile_type = "/obj/item/projectile/energy/bolt/large" diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 81e47aaceed..4853c5e474f 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -8,7 +8,7 @@ icon_state = "pistol" origin_tech = "combat=2;materials=2" w_class = 3.0 - m_amt = 1000 + materials = list(MAT_METAL=1000) // recoil = 1 var/mag_type = "/obj/item/ammo_box/magazine/m10mm" //Removes the need for max_ammo and caliber info var/obj/item/ammo_box/magazine/magazine diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 9772d42dd99..63a3f2a3a79 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -232,7 +232,7 @@ proc/wabbajack(mob/living/M) M.attack_log += text("\[[time_stamp()]\] [M.real_name] ([M.ckey]) became [new_mob.real_name].") new_mob.attack_log = M.attack_log - new_mob.a_intent = "harm" + new_mob.a_intent = I_HARM if(M.mind) M.mind.transfer_to(new_mob) else diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index f8661d168e8..29a67ffe492 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -5,621 +5,618 @@ var/const/INGEST = 2 /////////////////////////////////////////////////////////////////////////////////// -datum - reagents - var/list/datum/reagent/reagent_list = new/list() - var/total_volume = 0 - var/maximum_volume = 100 - var/atom/my_atom = null +/datum/reagents + var/list/datum/reagent/reagent_list = new/list() + var/total_volume = 0 + var/maximum_volume = 100 + var/atom/my_atom = null - New(maximum=100) - maximum_volume = maximum +/datum/reagents/New(maximum=100) + maximum_volume = maximum - //I dislike having these here but map-objects are initialised before world/New() is called. >_> - if(!chemical_reagents_list) - //Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id - var/paths = subtypesof(/datum/reagent) - chemical_reagents_list = list() - for(var/path in paths) - var/datum/reagent/D = new path() - chemical_reagents_list[D.id] = D - if(!chemical_reactions_list) - //Chemical Reactions - Initialises all /datum/chemical_reaction into a list - // It is filtered into multiple lists within a list. - // For example: - // chemical_reaction_list["plasma"] is a list of all reactions relating to plasma + //I dislike having these here but map-objects are initialised before world/New() is called. >_> + if(!chemical_reagents_list) + //Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id + var/paths = subtypesof(/datum/reagent) + chemical_reagents_list = list() + for(var/path in paths) + var/datum/reagent/D = new path() + chemical_reagents_list[D.id] = D + if(!chemical_reactions_list) + //Chemical Reactions - Initialises all /datum/chemical_reaction into a list + // It is filtered into multiple lists within a list. + // For example: + // chemical_reaction_list["plasma"] is a list of all reactions relating to plasma - var/paths = subtypesof(/datum/chemical_reaction) - chemical_reactions_list = list() + var/paths = subtypesof(/datum/chemical_reaction) + chemical_reactions_list = list() - for(var/path in paths) + for(var/path in paths) - var/datum/chemical_reaction/D = new path() - var/list/reaction_ids = list() + var/datum/chemical_reaction/D = new path() + var/list/reaction_ids = list() - if(D && D.required_reagents && D.required_reagents.len) - for(var/reaction in D.required_reagents) - reaction_ids += reaction + if(D && D.required_reagents && D.required_reagents.len) + for(var/reaction in D.required_reagents) + reaction_ids += reaction - // Create filters based on each reagent id in the required reagents list - for(var/id in reaction_ids) - if(!chemical_reactions_list[id]) - chemical_reactions_list[id] = list() - chemical_reactions_list[id] += D - break // Don't bother adding ourselves to other reagent ids, it is redundant. + // Create filters based on each reagent id in the required reagents list + for(var/id in reaction_ids) + if(!chemical_reactions_list[id]) + chemical_reactions_list[id] = list() + chemical_reactions_list[id] += D + break // Don't bother adding ourselves to other reagent ids, it is redundant. - proc +/datum/reagents/proc/remove_any(var/amount=1) + var/total_transfered = 0 + var/current_list_element = 1 - remove_any(var/amount=1) - var/total_transfered = 0 - var/current_list_element = 1 + current_list_element = rand(1,reagent_list.len) - current_list_element = rand(1,reagent_list.len) + while(total_transfered != amount) + if(total_transfered >= amount) break + if(total_volume <= 0 || !reagent_list.len) break - while(total_transfered != amount) - if(total_transfered >= amount) break - if(total_volume <= 0 || !reagent_list.len) break + if(current_list_element > reagent_list.len) current_list_element = 1 + var/datum/reagent/current_reagent = reagent_list[current_list_element] - if(current_list_element > reagent_list.len) current_list_element = 1 - var/datum/reagent/current_reagent = reagent_list[current_list_element] + src.remove_reagent(current_reagent.id, min(1, amount - total_transfered)) - src.remove_reagent(current_reagent.id, min(1, amount - total_transfered)) + current_list_element++ + total_transfered++ + src.update_total() - current_list_element++ - total_transfered++ - src.update_total() + handle_reactions() + return total_transfered - handle_reactions() - return total_transfered +/datum/reagents/proc/get_master_reagent_name() + var/the_name = null + var/the_volume = 0 + for(var/datum/reagent/A in reagent_list) + if(A.volume > the_volume) + the_volume = A.volume + the_name = A.name - get_master_reagent_name() - var/the_name = null - var/the_volume = 0 - for(var/datum/reagent/A in reagent_list) - if(A.volume > the_volume) - the_volume = A.volume - the_name = A.name + return the_name - return the_name +/datum/reagents/proc/get_master_reagent_id() + var/the_id = null + var/the_volume = 0 + for(var/datum/reagent/A in reagent_list) + if(A.volume > the_volume) + the_volume = A.volume + the_id = A.id - get_master_reagent_id() - var/the_id = null - var/the_volume = 0 - for(var/datum/reagent/A in reagent_list) - if(A.volume > the_volume) - the_volume = A.volume - the_id = A.id + return the_id - return the_id +/datum/reagents/proc/trans_to(var/obj/target, var/amount=1, var/multiplier=1, var/preserve_data=1)//if preserve_data=0, the reagents data will be lost. Usefull if you use data for some strange stuff and don't want it to be transferred. + if (!target ) + return + if (!target.reagents || src.total_volume<=0) + return + var/datum/reagents/R = target.reagents + amount = min(min(amount, src.total_volume), R.maximum_volume-R.total_volume) + var/part = amount / src.total_volume + var/trans_data = null + for (var/datum/reagent/current_reagent in src.reagent_list) + if (!current_reagent) + continue + if (current_reagent.id == "blood" && ishuman(target)) + var/mob/living/carbon/human/H = target + H.inject_blood(my_atom, amount) + continue + var/current_reagent_transfer = current_reagent.volume * part + if(preserve_data) + trans_data = copy_data(current_reagent) - trans_to(var/obj/target, var/amount=1, var/multiplier=1, var/preserve_data=1)//if preserve_data=0, the reagents data will be lost. Usefull if you use data for some strange stuff and don't want it to be transferred. - if (!target ) - return - if (!target.reagents || src.total_volume<=0) - return - var/datum/reagents/R = target.reagents - amount = min(min(amount, src.total_volume), R.maximum_volume-R.total_volume) - var/part = amount / src.total_volume - var/trans_data = null - for (var/datum/reagent/current_reagent in src.reagent_list) - if (!current_reagent) - continue - if (current_reagent.id == "blood" && ishuman(target)) - var/mob/living/carbon/human/H = target - H.inject_blood(my_atom, amount) - continue - var/current_reagent_transfer = current_reagent.volume * part - if(preserve_data) - trans_data = copy_data(current_reagent) + R.add_reagent(current_reagent.id, (current_reagent_transfer * multiplier), trans_data, src.chem_temp) + src.remove_reagent(current_reagent.id, current_reagent_transfer) - R.add_reagent(current_reagent.id, (current_reagent_transfer * multiplier), trans_data, src.chem_temp) - src.remove_reagent(current_reagent.id, current_reagent_transfer) + src.update_total() + R.update_total() + R.handle_reactions() + src.handle_reactions() + return amount - src.update_total() - R.update_total() - R.handle_reactions() - src.handle_reactions() - return amount +/datum/reagents/proc/trans_to_ingest(var/obj/target, var/amount=1, var/multiplier=1, var/preserve_data=1)//For items ingested. A delay is added between ingestion and addition of the reagents + if (!target ) + return + if (!target.reagents || src.total_volume<=0) + return - trans_to_ingest(var/obj/target, var/amount=1, var/multiplier=1, var/preserve_data=1)//For items ingested. A delay is added between ingestion and addition of the reagents - if (!target ) - return - if (!target.reagents || src.total_volume<=0) - return + var/obj/item/weapon/reagent_containers/glass/beaker/noreact/B = new /obj/item/weapon/reagent_containers/glass/beaker/noreact //temporary holder + B.volume = 1000 - var/obj/item/weapon/reagent_containers/glass/beaker/noreact/B = new /obj/item/weapon/reagent_containers/glass/beaker/noreact //temporary holder - B.volume = 1000 + var/datum/reagents/BR = B.reagents + var/datum/reagents/R = target.reagents - var/datum/reagents/BR = B.reagents - var/datum/reagents/R = target.reagents + amount = min(min(amount, src.total_volume), R.maximum_volume-R.total_volume) - amount = min(min(amount, src.total_volume), R.maximum_volume-R.total_volume) + src.trans_to(B, amount) - src.trans_to(B, amount) + spawn(-1) + src = null // Survive through deletion of the reagent holder + sleep(100) + if(!target) + return + BR.trans_to(target, BR.total_volume) + qdel(B) - spawn(-1) - src = null // Survive through deletion of the reagent holder - sleep(100) - if(!target) - return - BR.trans_to(target, BR.total_volume) - qdel(B) + return amount - return amount +/datum/reagents/proc/copy_to(var/obj/target, var/amount=1, var/multiplier=1, var/preserve_data=1, var/safety = 0) + if(!target) + return + if(!target.reagents || src.total_volume<=0) + return + var/datum/reagents/R = target.reagents + amount = min(min(amount, src.total_volume), R.maximum_volume-R.total_volume) + var/part = amount / src.total_volume + var/trans_data = null + for (var/datum/reagent/current_reagent in src.reagent_list) + var/current_reagent_transfer = current_reagent.volume * part + if(preserve_data) + trans_data = copy_data(current_reagent) + R.add_reagent(current_reagent.id, (current_reagent_transfer * multiplier), trans_data) - copy_to(var/obj/target, var/amount=1, var/multiplier=1, var/preserve_data=1, var/safety = 0) - if(!target) - return - if(!target.reagents || src.total_volume<=0) - return - var/datum/reagents/R = target.reagents - amount = min(min(amount, src.total_volume), R.maximum_volume-R.total_volume) - var/part = amount / src.total_volume - var/trans_data = null - for (var/datum/reagent/current_reagent in src.reagent_list) - var/current_reagent_transfer = current_reagent.volume * part - if(preserve_data) - trans_data = copy_data(current_reagent) - R.add_reagent(current_reagent.id, (current_reagent_transfer * multiplier), trans_data) + src.update_total() + R.update_total() + R.handle_reactions() + src.handle_reactions() + return amount - src.update_total() - R.update_total() - R.handle_reactions() - src.handle_reactions() - return amount +/datum/reagents/proc/trans_id_to(var/obj/target, var/reagent, var/amount=1, var/preserve_data=1)//Not sure why this proc didn't exist before. It does now! /N + if (!target) + return + if (!target.reagents || src.total_volume<=0 || !src.get_reagent_amount(reagent)) + return - trans_id_to(var/obj/target, var/reagent, var/amount=1, var/preserve_data=1)//Not sure why this proc didn't exist before. It does now! /N - if (!target) - return - if (!target.reagents || src.total_volume<=0 || !src.get_reagent_amount(reagent)) - return + var/datum/reagents/R = target.reagents + if(src.get_reagent_amount(reagent) R.maximum_volume) return 0 + if (!target) return + var/total_transfered = 0 + var/current_list_element = 1 + var/datum/reagents/R = target.reagents + var/trans_data = null + //if(R.total_volume + amount > R.maximum_volume) return 0 - current_list_element = rand(1,reagent_list.len) //Eh, bandaid fix. + current_list_element = rand(1,reagent_list.len) //Eh, bandaid fix. - while(total_transfered != amount) - if(total_transfered >= amount) break //Better safe than sorry. - if(total_volume <= 0 || !reagent_list.len) break - if(R.total_volume >= R.maximum_volume) break + while(total_transfered != amount) + if(total_transfered >= amount) break //Better safe than sorry. + if(total_volume <= 0 || !reagent_list.len) break + if(R.total_volume >= R.maximum_volume) break - if(current_list_element > reagent_list.len) current_list_element = 1 - var/datum/reagent/current_reagent = reagent_list[current_list_element] - if(preserve_data) - trans_data = current_reagent.data - R.add_reagent(current_reagent.id, (1 * multiplier), trans_data) - src.remove_reagent(current_reagent.id, 1) + if(current_list_element > reagent_list.len) current_list_element = 1 + var/datum/reagent/current_reagent = reagent_list[current_list_element] + if(preserve_data) + trans_data = current_reagent.data + R.add_reagent(current_reagent.id, (1 * multiplier), trans_data) + src.remove_reagent(current_reagent.id, 1) - current_list_element++ - total_transfered++ - src.update_total() - R.update_total() - R.handle_reactions() - handle_reactions() + current_list_element++ + total_transfered++ + src.update_total() + R.update_total() + R.handle_reactions() + handle_reactions() - return total_transfered + return total_transfered */ - conditional_update_move(var/atom/A, var/Running = 0) - for(var/datum/reagent/R in reagent_list) - R.on_move (A, Running) - update_total() +/datum/reagents/proc/conditional_update_move(var/atom/A, var/Running = 0) + for(var/datum/reagent/R in reagent_list) + R.on_move (A, Running) + update_total() - conditional_update(var/atom/A, ) - for(var/datum/reagent/R in reagent_list) - R.on_update (A) - update_total() +/datum/reagents/proc/conditional_update(var/atom/A, ) + for(var/datum/reagent/R in reagent_list) + R.on_update (A) + update_total() + +/datum/reagents/proc/handle_reactions() + if(my_atom.flags & NOREACT) return //Yup, no reactions here. No siree. + + var/reaction_occured = 0 + do + reaction_occured = 0 + for(var/datum/reagent/R in reagent_list) // Usually a small list + for(var/reaction in chemical_reactions_list[R.id]) // Was a big list but now it should be smaller since we filtered it with our reagent id + + if(!reaction) + continue + + var/datum/chemical_reaction/C = reaction + + var/total_required_reagents = C.required_reagents.len + var/total_matching_reagents = 0 + var/total_required_catalysts = C.required_catalysts.len + var/total_matching_catalysts= 0 + var/matching_container = 0 + var/matching_other = 0 + var/list/multipliers = new/list() + var/min_temp = C.min_temp //Minimum temperature required for the reaction to occur (heat to/above this) + var/max_temp = C.max_temp //Maximum temperature allowed for the reaction to occur (cool to/below this) + for(var/B in C.required_reagents) + if(!has_reagent(B, C.required_reagents[B])) break + total_matching_reagents++ + multipliers += round(get_reagent_amount(B) / C.required_reagents[B]) + for(var/B in C.required_catalysts) + if(!has_reagent(B, C.required_catalysts[B])) break + total_matching_catalysts++ + + if(!C.required_container) + matching_container = 1 + + else + if(my_atom.type == C.required_container) + matching_container = 1 + + if(!C.required_other) + matching_other = 1 + + else + /*if(istype(my_atom, /obj/item/slime_core)) + var/obj/item/slime_core/M = my_atom + + if(M.POWERFLAG == C.required_other && M.Uses > 0) // added a limit to slime cores -- Muskets requested this + matching_other = 1*/ + if(istype(my_atom, /obj/item/slime_extract)) + var/obj/item/slime_extract/M = my_atom + + if(M.Uses > 0) // added a limit to slime cores -- Muskets requested this + matching_other = 1 + + if(min_temp == 0) + min_temp = chem_temp + + if(total_matching_reagents == total_required_reagents && total_matching_catalysts == total_required_catalysts && matching_container && matching_other && chem_temp <= max_temp && chem_temp >= min_temp) + var/multiplier = min(multipliers) + var/preserved_data = null + for(var/B in C.required_reagents) + if(!preserved_data) + preserved_data = get_data(B) + remove_reagent(B, (multiplier * C.required_reagents[B]), safety = 1) + + var/created_volume = C.result_amount*multiplier + if(C.result) + feedback_add_details("chemical_reaction","[C.result]|[C.result_amount*multiplier]") + multiplier = max(multiplier, 1) //this shouldnt happen ... + add_reagent(C.result, C.result_amount*multiplier) + set_data(C.result, preserved_data) + + //add secondary products + for(var/S in C.secondary_results) + add_reagent(S, C.result_amount * C.secondary_results[S] * multiplier) + + var/list/seen = viewers(4, get_turf(my_atom)) + for(var/mob/M in seen) + if(!C.no_message) + M << "\blue \icon[my_atom] [C.mix_message]" + + /* if(istype(my_atom, /obj/item/slime_core)) + var/obj/item/slime_core/ME = my_atom + ME.Uses-- + if(ME.Uses <= 0) // give the notification that the slime core is dead + for(var/mob/M in viewers(4, get_turf(my_atom)) ) + M << "\blue \icon[my_atom] The innards begin to boil!" + */ + if(istype(my_atom, /obj/item/slime_extract)) + var/obj/item/slime_extract/ME2 = my_atom + ME2.Uses-- + if(ME2.Uses <= 0) // give the notification that the slime core is dead + for(var/mob/M in seen) + M << "\blue \icon[my_atom] The [my_atom]'s power is consumed in the reaction." + ME2.name = "used slime extract" + ME2.desc = "This extract has been used up." + + playsound(get_turf(my_atom), C.mix_sound, 80, 1) + + C.on_reaction(src, created_volume) + reaction_occured = 1 + break + + while(reaction_occured) + update_total() + return 0 + +/datum/reagents/proc/isolate_reagent(var/reagent) + for(var/A in reagent_list) + var/datum/reagent/R = A + if (R.id != reagent) + del_reagent(R.id) + update_total() + +/datum/reagents/proc/del_reagent(var/reagent) + for(var/A in reagent_list) + var/datum/reagent/R = A + if (R.id == reagent) + if(istype(my_atom, /mob/living)) + var/mob/living/M = my_atom + R.reagent_deleted(M) + reagent_list -= A + qdel(A) + update_total() + my_atom.on_reagent_change() + check_ignoreslow(my_atom) + check_gofast(my_atom) + check_goreallyfast(my_atom) + return 0 + + + return 1 + +/datum/reagents/proc/update_total() + total_volume = 0 + for(var/datum/reagent/R in reagent_list) + if(R.volume < 0.1) + del_reagent(R.id) + else + total_volume += R.volume + + return 0 + +/datum/reagents/proc/clear_reagents() + for(var/datum/reagent/R in reagent_list) + del_reagent(R.id) + return 0 + +/datum/reagents/proc/reaction_check(var/mob/M, var/datum/reagent/R) + var/can_process = 0 + if(!istype(M, /mob/living)) //Non-living mobs can't metabolize reagents, so don't bother trying (runtime safety check) + return can_process + if(ishuman(M)) + var/mob/living/carbon/human/H = M + //Check if this mob's species is set and can process this type of reagent + if(H.species && H.species.reagent_tag) + if((R.process_flags & SYNTHETIC) && (H.species.reagent_tag & PROCESS_SYN)) //SYNTHETIC-oriented reagents require PROCESS_SYN + can_process = 1 + if((R.process_flags & ORGANIC) && (H.species.reagent_tag & PROCESS_ORG)) //ORGANIC-oriented reagents require PROCESS_ORG + can_process = 1 + //Species with PROCESS_DUO are only affected by reagents that affect both organics and synthetics, like acid and hellwater + if((R.process_flags & ORGANIC) && (R.process_flags & SYNTHETIC) && (H.species.reagent_tag & PROCESS_DUO)) + can_process = 1 + //We'll assume that non-human mobs lack the ability to process synthetic-oriented reagents (adjust this if we need to change that assumption) + else + if(R.process_flags != SYNTHETIC) + can_process = 1 + return can_process + +/datum/reagents/proc/reaction(var/atom/A, var/method=TOUCH, var/volume_modifier=0) + + switch(method) + if(TOUCH) + for(var/datum/reagent/R in reagent_list) + if(ismob(A)) + spawn(0) + if(!R) return + var/check = reaction_check(A, R) + if(!check) + continue + else + R.reaction_mob(A, TOUCH, R.volume+volume_modifier) + if(isturf(A)) + spawn(0) + if(!R) return + else R.reaction_turf(A, R.volume+volume_modifier) + if(isobj(A)) + spawn(0) + if(!R) return + else R.reaction_obj(A, R.volume+volume_modifier) + if(INGEST) + for(var/datum/reagent/R in reagent_list) + if(ismob(A) && R) + spawn(0) + if(!R) return + var/check = reaction_check(A, R) + if(!check) + continue + else + R.reaction_mob(A, INGEST, R.volume+volume_modifier) + if(isturf(A) && R) + spawn(0) + if(!R) return + else R.reaction_turf(A, R.volume+volume_modifier) + if(isobj(A) && R) + spawn(0) + if(!R) return + else R.reaction_obj(A, R.volume+volume_modifier) + return + +/datum/reagents/proc/add_reagent(var/reagent, var/amount, var/list/data=null, var/reagtemp = 300) + if(!isnum(amount)) return 1 + update_total() + if(total_volume + amount > maximum_volume) amount = (maximum_volume - total_volume) //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen. + if(amount <= 0) return 0 + chem_temp = round(((amount * reagtemp) + (total_volume * chem_temp)) / (total_volume + amount)) //equalize with new chems + + for(var/A in reagent_list) + + var/datum/reagent/R = A + if (R.id == reagent) + R.volume += amount + update_total() + my_atom.on_reagent_change() +/* + // mix dem viruses + if(R.id == "blood" && reagent == "blood") + if(R.data && data) + + if(R.data["viruses"] || data["viruses"]) + + var/list/mix1 = R.data["viruses"] + var/list/mix2 = data["viruses"] + + // Stop issues with the list changing during mixing. + var/list/to_mix = list() + + for(var/datum/disease/advance/AD in mix1) + to_mix += AD + for(var/datum/disease/advance/AD in mix2) + to_mix += AD + + var/datum/disease/advance/AD = Advance_Mix(to_mix) + if(AD) + var/list/preserve = list(AD) + for(var/D in R.data["viruses"]) + if(!istype(D, /datum/disease/advance)) + preserve += D + R.data["viruses"] = preserve +*/ handle_reactions() - if(my_atom.flags & NOREACT) return //Yup, no reactions here. No siree. + return 0 - var/reaction_occured = 0 - do - reaction_occured = 0 - for(var/datum/reagent/R in reagent_list) // Usually a small list - for(var/reaction in chemical_reactions_list[R.id]) // Was a big list but now it should be smaller since we filtered it with our reagent id + var/datum/reagent/D = chemical_reagents_list[reagent] + if(D) - if(!reaction) - continue - - var/datum/chemical_reaction/C = reaction - - var/total_required_reagents = C.required_reagents.len - var/total_matching_reagents = 0 - var/total_required_catalysts = C.required_catalysts.len - var/total_matching_catalysts= 0 - var/matching_container = 0 - var/matching_other = 0 - var/list/multipliers = new/list() - var/min_temp = C.min_temp //Minimum temperature required for the reaction to occur (heat to/above this) - var/max_temp = C.max_temp //Maximum temperature allowed for the reaction to occur (cool to/below this) - for(var/B in C.required_reagents) - if(!has_reagent(B, C.required_reagents[B])) break - total_matching_reagents++ - multipliers += round(get_reagent_amount(B) / C.required_reagents[B]) - for(var/B in C.required_catalysts) - if(!has_reagent(B, C.required_catalysts[B])) break - total_matching_catalysts++ - - if(!C.required_container) - matching_container = 1 - - else - if(my_atom.type == C.required_container) - matching_container = 1 - - if(!C.required_other) - matching_other = 1 - - else - /*if(istype(my_atom, /obj/item/slime_core)) - var/obj/item/slime_core/M = my_atom - - if(M.POWERFLAG == C.required_other && M.Uses > 0) // added a limit to slime cores -- Muskets requested this - matching_other = 1*/ - if(istype(my_atom, /obj/item/slime_extract)) - var/obj/item/slime_extract/M = my_atom - - if(M.Uses > 0) // added a limit to slime cores -- Muskets requested this - matching_other = 1 - - if(min_temp == 0) - min_temp = chem_temp - - if(total_matching_reagents == total_required_reagents && total_matching_catalysts == total_required_catalysts && matching_container && matching_other && chem_temp <= max_temp && chem_temp >= min_temp) - var/multiplier = min(multipliers) - var/preserved_data = null - for(var/B in C.required_reagents) - if(!preserved_data) - preserved_data = get_data(B) - remove_reagent(B, (multiplier * C.required_reagents[B]), safety = 1) - - var/created_volume = C.result_amount*multiplier - if(C.result) - feedback_add_details("chemical_reaction","[C.result]|[C.result_amount*multiplier]") - multiplier = max(multiplier, 1) //this shouldnt happen ... - add_reagent(C.result, C.result_amount*multiplier) - set_data(C.result, preserved_data) - - //add secondary products - for(var/S in C.secondary_results) - add_reagent(S, C.result_amount * C.secondary_results[S] * multiplier) - - var/list/seen = viewers(4, get_turf(my_atom)) - for(var/mob/M in seen) - if(!C.no_message) - M << "\blue \icon[my_atom] [C.mix_message]" - - /* if(istype(my_atom, /obj/item/slime_core)) - var/obj/item/slime_core/ME = my_atom - ME.Uses-- - if(ME.Uses <= 0) // give the notification that the slime core is dead - for(var/mob/M in viewers(4, get_turf(my_atom)) ) - M << "\blue \icon[my_atom] The innards begin to boil!" - */ - if(istype(my_atom, /obj/item/slime_extract)) - var/obj/item/slime_extract/ME2 = my_atom - ME2.Uses-- - if(ME2.Uses <= 0) // give the notification that the slime core is dead - for(var/mob/M in seen) - M << "\blue \icon[my_atom] The [my_atom]'s power is consumed in the reaction." - ME2.name = "used slime extract" - ME2.desc = "This extract has been used up." - - playsound(get_turf(my_atom), C.mix_sound, 80, 1) - - C.on_reaction(src, created_volume) - reaction_occured = 1 - break - - while(reaction_occured) - update_total() - return 0 - - isolate_reagent(var/reagent) - for(var/A in reagent_list) - var/datum/reagent/R = A - if (R.id != reagent) - del_reagent(R.id) - update_total() - - del_reagent(var/reagent) - for(var/A in reagent_list) - var/datum/reagent/R = A - if (R.id == reagent) - if(istype(my_atom, /mob/living)) - var/mob/living/M = my_atom - R.reagent_deleted(M) - reagent_list -= A - qdel(A) - update_total() - my_atom.on_reagent_change() - check_ignoreslow(my_atom) - check_gofast(my_atom) - check_goreallyfast(my_atom) - return 0 - - - return 1 - - update_total() - total_volume = 0 - for(var/datum/reagent/R in reagent_list) - if(R.volume < 0.1) - del_reagent(R.id) - else - total_volume += R.volume - - return 0 - - clear_reagents() - for(var/datum/reagent/R in reagent_list) - del_reagent(R.id) - return 0 - - reaction_check(var/mob/M, var/datum/reagent/R) - var/can_process = 0 - if(!istype(M, /mob/living)) //Non-living mobs can't metabolize reagents, so don't bother trying (runtime safety check) - return can_process - if(ishuman(M)) - var/mob/living/carbon/human/H = M - //Check if this mob's species is set and can process this type of reagent - if(H.species && H.species.reagent_tag) - if((R.process_flags & SYNTHETIC) && (H.species.reagent_tag & PROCESS_SYN)) //SYNTHETIC-oriented reagents require PROCESS_SYN - can_process = 1 - if((R.process_flags & ORGANIC) && (H.species.reagent_tag & PROCESS_ORG)) //ORGANIC-oriented reagents require PROCESS_ORG - can_process = 1 - //Species with PROCESS_DUO are only affected by reagents that affect both organics and synthetics, like acid and hellwater - if((R.process_flags & ORGANIC) && (R.process_flags & SYNTHETIC) && (H.species.reagent_tag & PROCESS_DUO)) - can_process = 1 - //We'll assume that non-human mobs lack the ability to process synthetic-oriented reagents (adjust this if we need to change that assumption) - else - if(R.process_flags != SYNTHETIC) - can_process = 1 - return can_process - - reaction(var/atom/A, var/method=TOUCH, var/volume_modifier=0) - - switch(method) - if(TOUCH) - for(var/datum/reagent/R in reagent_list) - if(ismob(A)) - spawn(0) - if(!R) return - var/check = reaction_check(A, R) - if(!check) - continue - else - R.reaction_mob(A, TOUCH, R.volume+volume_modifier) - if(isturf(A)) - spawn(0) - if(!R) return - else R.reaction_turf(A, R.volume+volume_modifier) - if(isobj(A)) - spawn(0) - if(!R) return - else R.reaction_obj(A, R.volume+volume_modifier) - if(INGEST) - for(var/datum/reagent/R in reagent_list) - if(ismob(A) && R) - spawn(0) - if(!R) return - var/check = reaction_check(A, R) - if(!check) - continue - else - R.reaction_mob(A, INGEST, R.volume+volume_modifier) - if(isturf(A) && R) - spawn(0) - if(!R) return - else R.reaction_turf(A, R.volume+volume_modifier) - if(isobj(A) && R) - spawn(0) - if(!R) return - else R.reaction_obj(A, R.volume+volume_modifier) - return - - add_reagent(var/reagent, var/amount, var/list/data=null, var/reagtemp = 300) - if(!isnum(amount)) return 1 - update_total() - if(total_volume + amount > maximum_volume) amount = (maximum_volume - total_volume) //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen. - if(amount <= 0) return 0 - chem_temp = round(((amount * reagtemp) + (total_volume * chem_temp)) / (total_volume + amount)) //equalize with new chems - - for(var/A in reagent_list) - - var/datum/reagent/R = A - if (R.id == reagent) - R.volume += amount - update_total() - my_atom.on_reagent_change() -/* - // mix dem viruses - if(R.id == "blood" && reagent == "blood") - if(R.data && data) - - if(R.data["viruses"] || data["viruses"]) - - var/list/mix1 = R.data["viruses"] - var/list/mix2 = data["viruses"] - - // Stop issues with the list changing during mixing. - var/list/to_mix = list() - - for(var/datum/disease/advance/AD in mix1) - to_mix += AD - for(var/datum/disease/advance/AD in mix2) - to_mix += AD - - var/datum/disease/advance/AD = Advance_Mix(to_mix) - if(AD) - var/list/preserve = list(AD) - for(var/D in R.data["viruses"]) - if(!istype(D, /datum/disease/advance)) - preserve += D - R.data["viruses"] = preserve -*/ - - handle_reactions() - return 0 - - var/datum/reagent/D = chemical_reagents_list[reagent] - if(D) - - var/datum/reagent/R = new D.type() - reagent_list += R - R.holder = src - R.volume = amount + var/datum/reagent/R = new D.type() + reagent_list += R + R.holder = src + R.volume = amount // SetViruses(R, data) // Includes setting data - if(data) R.data = data - //debug - //world << "Adding data" - //for(var/D in R.data) - // world << "Container data: [D] = [R.data[D]]" - //debug - update_total() - my_atom.on_reagent_change() - handle_reactions() - return 0 - else - warning("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])") + if(data) R.data = data + //debug + //world << "Adding data" + //for(var/D in R.data) + // world << "Container data: [D] = [R.data[D]]" + //debug + update_total() + my_atom.on_reagent_change() + handle_reactions() + return 0 + else + warning("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])") + handle_reactions() + + return 1 + +/datum/reagents/proc/remove_reagent(var/reagent, var/amount, var/safety)//Added a safety check for the trans_id_to + + if(!isnum(amount)) return 1 + + for(var/A in reagent_list) + var/datum/reagent/R = A + if (R.id == reagent) + R.volume -= amount + update_total() + if(!safety)//So it does not handle reactions when it need not to handle_reactions() + my_atom.on_reagent_change() + return 0 - return 1 + return 1 - remove_reagent(var/reagent, var/amount, var/safety)//Added a safety check for the trans_id_to +/datum/reagents/proc/has_reagent(var/reagent, var/amount = -1) - if(!isnum(amount)) return 1 + for(var/A in reagent_list) + var/datum/reagent/R = A + if (R.id == reagent) + if(!amount) return R + else + if(R.volume >= amount) return R + else return 0 - for(var/A in reagent_list) - var/datum/reagent/R = A - if (R.id == reagent) - R.volume -= amount - update_total() - if(!safety)//So it does not handle reactions when it need not to - handle_reactions() - my_atom.on_reagent_change() - return 0 + return 0 - return 1 +/datum/reagents/proc/get_reagent_amount(var/reagent) + for(var/A in reagent_list) + var/datum/reagent/R = A + if (R.id == reagent) + return R.volume - has_reagent(var/reagent, var/amount = -1) + return 0 - for(var/A in reagent_list) - var/datum/reagent/R = A - if (R.id == reagent) - if(!amount) return R - else - if(R.volume >= amount) return R - else return 0 +/datum/reagents/proc/get_reagents() + var/res = "" + for(var/datum/reagent/A in reagent_list) + if (res != "") res += "," + res += A.name - return 0 + return res - get_reagent_amount(var/reagent) - for(var/A in reagent_list) - var/datum/reagent/R = A - if (R.id == reagent) - return R.volume +/datum/reagents/proc/remove_all_type(var/reagent_type, var/amount, var/strict = 0, var/safety = 1) // Removes all reagent of X type. @strict set to 1 determines whether the childs of the type are included. + if(!isnum(amount)) return 1 - return 0 + var/has_removed_reagent = 0 - get_reagents() - var/res = "" - for(var/datum/reagent/A in reagent_list) - if (res != "") res += "," - res += A.name + for(var/datum/reagent/R in reagent_list) + var/matches = 0 + // Switch between how we check the reagent type + if(strict) + if(R.type == reagent_type) + matches = 1 + else + if(istype(R, reagent_type)) + matches = 1 + // We found a match, proceed to remove the reagent. Keep looping, we might find other reagents of the same type. + if(matches) + // Have our other proc handle removement + has_removed_reagent = remove_reagent(R.id, amount, safety) - return res + return has_removed_reagent - remove_all_type(var/reagent_type, var/amount, var/strict = 0, var/safety = 1) // Removes all reagent of X type. @strict set to 1 determines whether the childs of the type are included. - if(!isnum(amount)) return 1 +// Admin logging. +/datum/reagents/proc/get_reagent_ids(var/and_amount=0) + var/list/stuff = list() + for(var/datum/reagent/A in reagent_list) + if(and_amount) + stuff += "[get_reagent_amount(A.id)]U of [A.id]" + else + stuff += A.id + return english_list(stuff) - var/has_removed_reagent = 0 +//two helper functions to preserve data across reactions (needed for xenoarch) +/datum/reagents/proc/get_data(var/reagent_id) + for(var/datum/reagent/D in reagent_list) + if(D.id == reagent_id) + //world << "proffering a data-carrying reagent ([reagent_id])" + return D.data - for(var/datum/reagent/R in reagent_list) - var/matches = 0 - // Switch between how we check the reagent type - if(strict) - if(R.type == reagent_type) - matches = 1 - else - if(istype(R, reagent_type)) - matches = 1 - // We found a match, proceed to remove the reagent. Keep looping, we might find other reagents of the same type. - if(matches) - // Have our other proc handle removement - has_removed_reagent = remove_reagent(R.id, amount, safety) +/datum/reagents/proc/set_data(var/reagent_id, var/new_data) + for(var/datum/reagent/D in reagent_list) + if(D.id == reagent_id) + //world << "reagent data set ([reagent_id])" + D.data = new_data - return has_removed_reagent +/datum/reagents/proc/copy_data(var/datum/reagent/current_reagent) + if (!current_reagent || !current_reagent.data) return null + if (!istype(current_reagent.data, /list)) return current_reagent.data - // Admin logging. - get_reagent_ids(var/and_amount=0) - var/list/stuff = list() - for(var/datum/reagent/A in reagent_list) - if(and_amount) - stuff += "[get_reagent_amount(A.id)]U of [A.id]" - else - stuff += A.id - return english_list(stuff) + var/list/trans_data = current_reagent.data.Copy() - //two helper functions to preserve data across reactions (needed for xenoarch) - get_data(var/reagent_id) - for(var/datum/reagent/D in reagent_list) - if(D.id == reagent_id) - //world << "proffering a data-carrying reagent ([reagent_id])" - return D.data + // We do this so that introducing a virus to a blood sample + // doesn't automagically infect all other blood samples from + // the same donor. + // + // Technically we should probably copy all data lists, but + // that could possibly eat up a lot of memory needlessly + // if most data lists are read-only. + if (trans_data["virus2"]) + var/list/v = trans_data["virus2"] + trans_data["virus2"] = v.Copy() - set_data(var/reagent_id, var/new_data) - for(var/datum/reagent/D in reagent_list) - if(D.id == reagent_id) - //world << "reagent data set ([reagent_id])" - D.data = new_data - - copy_data(var/datum/reagent/current_reagent) - if (!current_reagent || !current_reagent.data) return null - if (!istype(current_reagent.data, /list)) return current_reagent.data - - var/list/trans_data = current_reagent.data.Copy() - - // We do this so that introducing a virus to a blood sample - // doesn't automagically infect all other blood samples from - // the same donor. - // - // Technically we should probably copy all data lists, but - // that could possibly eat up a lot of memory needlessly - // if most data lists are read-only. - if (trans_data["virus2"]) - var/list/v = trans_data["virus2"] - trans_data["virus2"] = v.Copy() - - return trans_data + return trans_data /////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm deleted file mode 100644 index 615eefbcf5a..00000000000 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ /dev/null @@ -1,3260 +0,0 @@ -#define SOLID 1 -#define LIQUID 2 -#define GAS 3 -#define FOOD_METABOLISM 0.4 -#define REM REAGENTS_EFFECT_MULTIPLIER - -//The reaction procs must ALWAYS set src = null, this detaches the proc from the object (the reagent) -//so that it can continue working when the reagent is deleted while the proc is still active. - -datum - reagent - var/name = "Reagent" - var/id = "reagent" - var/description = "" - var/datum/reagents/holder = null - var/reagent_state = SOLID - var/list/data = null - var/volume = 0 - var/nutriment_factor = 0 - var/metabolization_rate = REAGENTS_METABOLISM - //var/list/viruses = list() - var/color = "#000000" // rgb: 0, 0, 0 (does not support alpha channels - yet!) - var/shock_reduction = 0 - var/penetrates_skin = 0 //Whether or not a reagent penetrates the skin - //Processing flags, defines the type of mobs the reagent will affect - //By default, all reagents will ONLY affect organics, not synthetics. Re-define in the reagent's definition if the reagent is meant to affect synths - var/process_flags = ORGANIC - proc - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) //Some reagents transfer on touch, others don't; dependent on if they penetrate the skin or not. - if(!istype(M, /mob/living)) return 0 - var/datum/reagent/self = src - src = null - - if(self.holder) //for catching rare runtimes - if(method == TOUCH && self.penetrates_skin) - var/block = 0 - for(var/obj/item/clothing/C in M.get_equipped_items()) - if(istype(C, /obj/item/clothing/suit/bio_suit)) - block += 1 - if(istype(C, /obj/item/clothing/head/bio_hood)) - block += 1 - if(block < 2) - if(M.reagents) - M.reagents.add_reagent(self.id,self.volume) - -/* - if(method == INGEST && istype(M, /mob/living/carbon)) - if(prob(1 * self.addictiveness)) - if(prob(5 * volume)) - var/datum/disease/addiction/A = new /datum/disease/addiction - A.addicted_to = self - A.name = "[self.name] Addiction" - A.addiction ="[self.name]" - A.cure = self.id - M.viruses += A - A.affected_mob = M - A.holder = M -*/ - return 1 - - reaction_obj(var/obj/O, var/volume) //By default we transfer a small part of the reagent to the object - src = null //if it can hold reagents. nope! - //if(O.reagents) - // O.reagents.add_reagent(id,volume/3) - return - - reaction_turf(var/turf/T, var/volume) - src = null - return - - on_mob_life(var/mob/living/M as mob, var/alien) - if(!istype(M, /mob/living)) // YOU'RE A FUCKING RETARD NEO WHY CAN'T YOU JUST FIX THE PROBLEM ON THE REAGENT - Iamgoofball - return //Noticed runtime errors from facid trying to damage ghosts, this should fix. --NEO - // Certain elements in too large amounts cause side-effects - holder.remove_reagent(src.id, metabolization_rate) //By default it slowly disappears. - current_cycle++ - return - - // Called when two reagents of the same are mixing. - on_merge(var/data) - return - - on_move(var/mob/M) - return - - on_update(var/atom/A) - return - - slimejelly - name = "Slime Jelly" - id = "slimejelly" - description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." - reagent_state = LIQUID - color = "#801E28" // rgb: 128, 30, 40 - on_mob_life(var/mob/living/M as mob) - if(prob(10)) - M << "\red Your insides are burning!" - M.adjustToxLoss(rand(20,60)*REM) - else if(prob(40)) - M.heal_organ_damage(5*REM,0) - ..() - return - - - blood - data = new/list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"blood_colour"= "#A10808","resistances"=null,"trace_chem"=null, "antibodies" = null) - name = "Blood" - id = "blood" - reagent_state = LIQUID - color = "#C80000" // rgb: 200, 0, 0 - - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - var/datum/reagent/blood/self = src - src = null - if(self.data && self.data["virus2"] && istype(M, /mob/living/carbon))//infecting... - var/list/vlist = self.data["virus2"] - if (vlist.len) - for (var/ID in vlist) - var/datum/disease2/disease/V = vlist[ID] - - if(method == TOUCH) - infect_virus2(M,V.getcopy()) - else - infect_virus2(M,V.getcopy(),1) //injected, force infection! - if(self.data && self.data["antibodies"] && istype(M, /mob/living/carbon))//... and curing - var/mob/living/carbon/C = M - C.antibodies |= self.data["antibodies"] - - on_merge(var/data) - if(data["blood_colour"]) - color = data["blood_colour"] - return ..() - - on_update(var/atom/A) - if(data["blood_colour"]) - color = data["blood_colour"] - return ..() - - - - reaction_turf(var/turf/simulated/T, var/volume)//splash the blood all over the place - if(!istype(T)) return - var/datum/reagent/blood/self = src - src = null - if(!(volume >= 3)) return - //var/datum/disease/D = self.data["virus"] - if(!self.data["donor"] || istype(self.data["donor"], /mob/living/carbon/human)) - var/obj/effect/decal/cleanable/blood/blood_prop = locate() in T //find some blood here - if(!blood_prop) //first blood! - blood_prop = new(T) - blood_prop.blood_DNA[self.data["blood_DNA"]] = self.data["blood_type"] - - if(self.data["virus2"]) - blood_prop.virus2 = virus_copylist(self.data["virus2"]) - - else if(istype(self.data["donor"], /mob/living/carbon/alien)) - var/obj/effect/decal/cleanable/blood/xeno/blood_prop = locate() in T - if(!blood_prop) - blood_prop = new(T) - blood_prop.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*" - return - -/* Must check the transfering of reagents and their data first. They all can point to one disease datum. - - Destroy() - if(src.data["virus"]) - var/datum/disease/D = src.data["virus"] - D.cure(0) - return ..() -*/ - -/* - vaccine - //data must contain virus type - name = "Vaccine" - id = "vaccine" - reagent_state = LIQUID - color = "#C81040" // rgb: 200, 16, 64 - - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - var/datum/reagent/vaccine/self = src - src = null - if(self.data&&method == INGEST) - for(var/datum/disease/D in M.viruses) - if(istype(D, /datum/disease/advance)) - var/datum/disease/advance/A = D - if(A.GetDiseaseID() == self.data) - D.cure() - else - if(D.type == self.data) - D.cure() - - M.resistances += self.data - return -*/ - - // Ported from Bay as part of the Botany Update - // Allows you to make planks from any plant that has this reagent in it. - // Also vines with this reagent are considered dense. - woodpulp - name = "Wood Pulp" - id = "woodpulp" - description = "A mass of wood fibers." - reagent_state = LIQUID - color = "#B97A57" - - fishwater - name = "Fish Water" - id = "fishwater" - description = "Smelly water from a fish tank. Gross!" - reagent_state = LIQUID - color = "#757547" - - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - if(!istype(M, /mob/living)) - return - if(method == INGEST) - M << "Oh god, why did you drink that?" - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(prob(30)) // Nasty, you drank this stuff? 30% chance of the fakevomit (non-stunning version) - if(prob(50)) // 50/50 chance of green vomit vs normal vomit - M.fakevomit(1) - else - M.fakevomit(0) - ..() - return - - water - name = "Water" - id = "water" - description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen." - reagent_state = LIQUID - color = "#0064C8" // rgb: 0, 100, 200 - var/cooling_temperature = 2 - process_flags = ORGANIC | SYNTHETIC - - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) - if(!istype(M, /mob/living)) - return - - // Put out fire - if(method == TOUCH) - M.adjust_fire_stacks(-(volume / 10)) - if(M.fire_stacks <= 0) - M.ExtinguishMob() - return - - reaction_turf(var/turf/simulated/T, var/volume) - if (!istype(T)) return - src = null - if(volume >= 3) - if(T.wet >= 1) return - T.wet = 1 - if(T.wet_overlay) - T.overlays -= T.wet_overlay - T.wet_overlay = null - T.wet_overlay = image('icons/effects/water.dmi',T,"wet_floor") - T.overlays += T.wet_overlay - - spawn(800) - if (!istype(T)) return - if(T.wet >= 2) return - T.wet = 0 - if(T.wet_overlay) - T.overlays -= T.wet_overlay - T.wet_overlay = null - - for(var/mob/living/carbon/slime/M in T) - M.apply_water() - - var/hotspot = (locate(/obj/effect/hotspot) in T) - if(hotspot && !istype(T, /turf/space)) - var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) - lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) - lowertemp.react() - T.assume_air(lowertemp) - qdel(hotspot) - return - - reaction_obj(var/obj/O, var/volume) - src = null - var/turf/T = get_turf(O) - var/hotspot = (locate(/obj/effect/hotspot) in T) - if(hotspot && !istype(T, /turf/space)) - var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) - lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) - lowertemp.react() - T.assume_air(lowertemp) - qdel(hotspot) - if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube)) - var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O - if(!cube.wrapped) - cube.Expand() - // Dehydrated carp - if(istype(O,/obj/item/toy/carpplushie/dehy_carp)) - var/obj/item/toy/carpplushie/dehy_carp/dehy = O - dehy.Swell() // Makes a carp - return - - hellwater - name = "Hell Water" - id = "hell_water" - description = "YOUR FLESH! IT BURNS!" - process_flags = ORGANIC | SYNTHETIC //Admin-bus has no brakes! KILL THEM ALL. - - on_mob_life(var/mob/living/M as mob) - M.fire_stacks = min(5,M.fire_stacks + 3) - M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire - M.adjustToxLoss(1) - M.adjustFireLoss(1) //Hence the other damages... ain't I a bastard? - M.adjustBrainLoss(5) - holder.remove_reagent(src.id, 1) - - lube - name = "Space Lube" - id = "lube" - description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity." - reagent_state = LIQUID - color = "#1BB1AB" - - reaction_turf(var/turf/simulated/T, var/volume) - if (!istype(T)) return - src = null - if(volume >= 1) - if(T.wet >= 2) return - T.wet = 2 - spawn(800) - if (!istype(T)) return - T.wet = 0 - if(T.wet_overlay) - T.overlays -= T.wet_overlay - T.wet_overlay = null - return - - toxin - name = "Toxin" - id = "toxin" - description = "A Toxic chemical." - reagent_state = LIQUID - color = "#CF3600" // rgb: 207, 54, 0 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(2) - ..() - return - - spider_venom - name = "Spider venom" - id = "spidertoxin" - description = "A toxic venom injected by spacefaring arachnids." - reagent_state = LIQUID - color = "#CF3600" // rgb: 207, 54, 0 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(1.5) - ..() - return - - plasticide - name = "Plasticide" - id = "plasticide" - description = "Liquid plastic, do not eat." - reagent_state = LIQUID - color = "#CF3600" // rgb: 207, 54, 0 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(1.5) - ..() - return - - minttoxin - name = "Mint Toxin" - id = "minttoxin" - description = "Useful for dealing with undesirable customers." - reagent_state = LIQUID - color = "#CF3600" // rgb: 207, 54, 0 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if (FAT in M.mutations) - M.gib() - ..() - return - - slimetoxin - name = "Mutation Toxin" - id = "mutationtoxin" - description = "A corruptive toxin produced by slimes." - reagent_state = LIQUID - color = "#13BC5E" // rgb: 19, 188, 94 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(ishuman(M)) - var/mob/living/carbon/human/human = M - if(human.species.name != "Shadow") - M << "\red Your flesh rapidly mutates!" - M << "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids." - M << "\red Your body reacts violently to light. \green However, it naturally heals in darkness." - M << "Aside from your new traits, you are mentally unchanged and retain your prior obligations." - human.set_species("Shadow") - ..() - return - - - - aslimetoxin - name = "Advanced Mutation Toxin" - id = "amutationtoxin" - description = "An advanced corruptive toxin produced by slimes." - reagent_state = LIQUID - color = "#13BC5E" // rgb: 19, 188, 94 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(istype(M, /mob/living/carbon) && M.stat != DEAD) - M << "\red Your flesh rapidly mutates!" - if(M.notransform) return - M.notransform = 1 - M.canmove = 0 - M.icon = null - M.overlays.Cut() - M.invisibility = 101 - for(var/obj/item/W in M) - if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something - qdel(W) - continue - W.layer = initial(W.layer) - W.loc = M.loc - W.dropped(M) - var/mob/living/carbon/slime/new_mob = new /mob/living/carbon/slime(M.loc) - new_mob.a_intent = "harm" - new_mob.universal_speak = 1 - if(M.mind) - M.mind.transfer_to(new_mob) - else - new_mob.key = M.key - qdel(M) - ..() - return - - space_drugs - name = "Space drugs" - id = "space_drugs" - description = "An illegal chemical compound used as drug." - reagent_state = LIQUID - color = "#9087A2" - metabolization_rate = 0.2 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.druggy = max(M.druggy, 15) - if(isturf(M.loc) && !istype(M.loc, /turf/space)) - if(M.canmove && !M.restrained()) - if(prob(10)) step(M, pick(cardinal)) - if(prob(7)) M.emote(pick("twitch","drool","moan","giggle")) - ..() - return - - holywater - name = "Water" - id = "holywater" - description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen." - reagent_state = LIQUID - color = "#0064C8" // rgb: 0, 100, 200 - process_flags = ORGANIC | SYNTHETIC - - on_mob_life(var/mob/living/M as mob) - if(ishuman(M)) - if((M.mind in ticker.mode.cult) && prob(10)) - M << "\blue A cooling sensation from inside you brings you an untold calmness." - ticker.mode.remove_cultist(M.mind) - ticker.mode.remove_all_cult_icons_from_client(M.client) // fixes the deconverted's own client not removing their mob's cult icon - for(var/mob/O in viewers(M, null)) - O.show_message(text("\blue []'s eyes blink and become clearer.", M), 1) // So observers know it worked. - // Vampires who ingest holy water combust if it's in their system for long enough. - if(((M.mind in ticker.mode.vampires) || M.mind.vampire) && (!(VAMP_FULL in M.mind.vampire.powers)) && prob(80)) - data++ - switch(data) - if(1 to 3) - M << "Something sizzles in your veins!" - M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) - if(4 to 10) - M << "You feel an intense burning inside of you!" - M.adjustFireLoss(1) - M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) - if(11 to INFINITY) - M << "You suddenly ignite in a holy fire!" - for(var/mob/O in viewers(M, null)) - O.show_message(text("[] suddenly bursts into flames!", M), 1) - M.fire_stacks = min(5,M.fire_stacks + 3) - M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire - M.adjustFireLoss(3) //Hence the other damages... ain't I a bastard? - M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) - holder.remove_reagent(src.id, 10 * REAGENTS_METABOLISM) //high metabolism to prevent extended uncult rolls. - - - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) - // Vampires have their powers weakened by holy water applied to the skin. - if(ishuman(M)) - if((M.mind in ticker.mode.vampires) && !(VAMP_FULL in M.mind.vampire.powers)) - var/mob/living/carbon/human/H=M - if(method == TOUCH) - if(H.wear_mask) - H << "\red Your mask protects you from the holy water!" - return - else if(H.head) - H << "\red Your helmet protects you from the holy water!" - return - else - M << "Something holy interferes with your powers!" - M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) - return - - - reaction_turf(var/turf/simulated/T, var/volume) - ..() - if(!istype(T)) return - if(volume>=10) - for(var/obj/effect/rune/R in T) - qdel(R) - T.Bless() - - serotrotium - name = "Serotrotium" - id = "serotrotium" - description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans." - reagent_state = LIQUID - color = "#202040" // rgb: 20, 20, 40 - - on_mob_life(var/mob/living/M as mob) - if(ishuman(M)) - if(prob(7)) M.emote(pick("twitch","drool","moan","gasp")) - holder.remove_reagent(src.id, 0.25 * REAGENTS_METABOLISM) - return - -/* silicate - name = "Silicate" - id = "silicate" - description = "A compound that can be used to reinforce glass." - reagent_state = LIQUID - color = "#C7FFFF" // rgb: 199, 255, 255 - - reaction_obj(var/obj/O, var/volume) - src = null - if(istype(O,/obj/structure/window)) - if(O:silicate <= 200) - - O:silicate += volume - O:health += volume * 3 - - if(!O:silicateIcon) - var/icon/I = icon(O.icon,O.icon_state,O.dir) - - var/r = (volume / 100) + 1 - var/g = (volume / 70) + 1 - var/b = (volume / 50) + 1 - I.SetIntensity(r,g,b) - O.icon = I - O:silicateIcon = I - else - var/icon/I = O:silicateIcon - - var/r = (volume / 100) + 1 - var/g = (volume / 70) + 1 - var/b = (volume / 50) + 1 - I.SetIntensity(r,g,b) - O.icon = I - O:silicateIcon = I - - return*/ - - oxygen - name = "Oxygen" - id = "oxygen" - description = "A colorless, odorless gas." - reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 - - on_mob_life(var/mob/living/M as mob, var/alien) - if(M.stat == 2) return - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.species && (H.species.name == "Vox" || H.species.name =="Vox Armalis")) - M.adjustToxLoss(REAGENTS_METABOLISM) - holder.remove_reagent(src.id, REAGENTS_METABOLISM) //By default it slowly disappears. - return - ..() - - copper - name = "Copper" - id = "copper" - description = "A highly ductile metal." - color = "#6E3B08" // rgb: 110, 59, 8 - - - nitrogen - name = "Nitrogen" - id = "nitrogen" - description = "A colorless, odorless, tasteless gas." - reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 - - - on_mob_life(var/mob/living/M as mob, var/alien) - if(M.stat == 2) return - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.species && (H.species.name == "Vox" || H.species.name =="Vox Armalis")) - M.adjustOxyLoss(-2*REM) - holder.remove_reagent(src.id, REAGENTS_METABOLISM) //By default it slowly disappears. - return - ..() - - hydrogen - name = "Hydrogen" - id = "hydrogen" - description = "A colorless, odorless, nonmetallic, tasteless, highly combustible diatomic gas." - reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 - - - potassium - name = "Potassium" - id = "potassium" - description = "A soft, low-melting solid that can easily be cut with a knife. Reacts violently with water." - reagent_state = SOLID - color = "#A0A0A0" // rgb: 160, 160, 160 - - - mercury - name = "Mercury" - id = "mercury" - description = "A chemical element." - reagent_state = LIQUID - color = "#484848" // rgb: 72, 72, 72 - metabolization_rate = 0.2 - penetrates_skin = 1 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(prob(70)) - M.adjustBrainLoss(1) - ..() - return - - sulfur - name = "Sulfur" - id = "sulfur" - description = "A chemical element." - reagent_state = SOLID - color = "#BF8C00" // rgb: 191, 140, 0 - - carbon - name = "Carbon" - id = "carbon" - description = "A chemical element." - reagent_state = SOLID - color = "#1C1300" // rgb: 30, 20, 0 - - - reaction_turf(var/turf/T, var/volume) - src = null - // Only add one dirt per turf. Was causing people to crash. - if(!istype(T, /turf/space) && !(locate(/obj/effect/decal/cleanable/dirt) in T)) - new /obj/effect/decal/cleanable/dirt(T) - - chlorine - name = "Chlorine" - id = "chlorine" - description = "A chemical element." - reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 - penetrates_skin = 1 - process_flags = ORGANIC | SYNTHETIC - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustFireLoss(1) - ..() - return - - fluorine - name = "Fluorine" - id = "fluorine" - description = "A highly-reactive chemical element." - reagent_state = GAS - color = "#6A6054" - penetrates_skin = 1 - process_flags = ORGANIC | SYNTHETIC - - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustFireLoss(1) - M.adjustToxLoss(1*REM) - ..() - return - - sodium - name = "Sodium" - id = "sodium" - description = "A chemical element." - reagent_state = SOLID - color = "#808080" // rgb: 128, 128, 128 - - - phosphorus - name = "Phosphorus" - id = "phosphorus" - description = "A chemical element." - reagent_state = SOLID - color = "#832828" // rgb: 131, 40, 40 - - - lithium - name = "Lithium" - id = "lithium" - description = "A chemical element." - reagent_state = SOLID - color = "#808080" // rgb: 128, 128, 128 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(M.canmove && !M.restrained() && istype(M.loc, /turf/space)) - step(M, pick(cardinal)) - if(prob(5)) M.emote(pick("twitch","drool","moan")) - ..() - return - - sugar - name = "Sugar" - id = "sugar" - description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste." - reagent_state = SOLID - color = "#FFFFFF" // rgb: 255, 255, 255 - overdose_threshold = 200 // Hyperglycaemic shock - - on_mob_life(var/mob/living/M as mob) - if(prob(4)) - M.reagents.add_reagent("epinephrine", 1.2) - if(prob(50)) - M.AdjustParalysis(-1) - M.AdjustStunned(-1) - M.AdjustWeakened(-1) - if(current_cycle >= 90) - M.jitteriness += 10 - ..() - return - - overdose_process(var/mob/living/M as mob) - if(volume > 200) - M << "You pass out from hyperglycemic shock!" - M.Paralyse(1) - if(prob(8)) - M.adjustToxLoss(rand(1,2)) - ..() - return - - sacid - name = "Sulphuric acid" - id = "sacid" - description = "A strong mineral acid with the molecular formula H2SO4." - reagent_state = LIQUID - color = "#00D72B" - process_flags = ORGANIC | SYNTHETIC - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustFireLoss(1) - ..() - return - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) - if(!istype(M, /mob/living)) - return - if(method == TOUCH) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - - if(volume > 25) - - if(H.wear_mask) - H << "\red Your mask protects you from the acid!" - return - - if(H.head) - H << "\red Your helmet protects you from the acid!" - return - - if(!M.unacidable) - if(prob(75)) - var/obj/item/organ/external/affecting = H.get_organ("head") - if(affecting) - affecting.take_damage(20, 0) - H.UpdateDamageIcon() - H.emote("scream") - else - M.take_organ_damage(15,0) - else - M.take_organ_damage(15,0) - - if(method == INGEST) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - - if(volume < 10) - M << "The greenish acidic substance stings you, but isn't concentrated enough to harm you!" - - if(volume >=10 && volume <=25) - if(!H.unacidable) - M.take_organ_damage(min(max(volume-10,2)*2,20),0) - M.emote("scream") - - - if(volume > 25) - if(!M.unacidable) - if(prob(75)) - var/obj/item/organ/external/affecting = H.get_organ("head") - if(affecting) - affecting.take_damage(20, 0) - H.UpdateDamageIcon() - H.emote("scream") - else - M.take_organ_damage(15,0) - - reaction_obj(var/obj/O, var/volume) - if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)) && prob(40)) - if(!O.unacidable) - var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc) - I.desc = "Looks like this was \an [O] some time ago." - for(var/mob/M in viewers(5, O)) - M << "\red \the [O] melts." - qdel(O) - - glycerol - name = "Glycerol" - id = "glycerol" - description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity." - reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128 - - - nitroglycerin - name = "Nitroglycerin" - id = "nitroglycerin" - description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol." - reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128 - - radium - name = "Radium" - id = "radium" - description = "Radium is an alkaline earth metal. It is extremely radioactive." - reagent_state = SOLID - color = "#C7C7C7" // rgb: 199,199,199 - metabolization_rate = 0.4 - penetrates_skin = 1 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.apply_effect(4*REM,IRRADIATE,0) - // radium may increase your chances to cure a disease - if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs - var/mob/living/carbon/C = M - if(C.virus2.len) - for (var/ID in C.virus2) - var/datum/disease2/disease/V = C.virus2[ID] - if(prob(5)) - if(prob(50)) - M.apply_effect(50,IRRADIATE,0) // curing it that way may kill you instead - M.adjustToxLoss(100) - C.antibodies |= V.antigen - ..() - return - - reaction_turf(var/turf/T, var/volume) - src = null - if(volume >= 3) - if(!istype(T, /turf/space)) - new /obj/effect/decal/cleanable/greenglow(T) - return - - thermite - name = "Thermite" - id = "thermite" - description = "Thermite produces an aluminothermic reaction known as a thermite reaction. Can be used to melt walls." - reagent_state = SOLID - color = "#673910" // rgb: 103, 57, 16 - process_flags = ORGANIC | SYNTHETIC - - reaction_turf(var/turf/T, var/volume) - src = null - if(volume >= 5) - if(istype(T, /turf/simulated/wall)) - T:thermite = 1 - T.overlays.Cut() - T.overlays = image('icons/effects/effects.dmi',icon_state = "thermite") - return - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustFireLoss(1) - ..() - return - - mutagen - name = "Unstable mutagen" - id = "mutagen" - description = "Might cause unpredictable mutations. Keep away from children." - reagent_state = LIQUID - color = "#04DF27" - metabolization_rate = 0.3 - - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - if(!..()) return - if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. - src = null - if((method==TOUCH && prob(33)) || method==INGEST) - if(prob(98)) - randmutb(M) - else - randmutg(M) - domutcheck(M, null) - M.UpdateAppearance() - return - on_mob_life(var/mob/living/M as mob) - if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. - if(!M) M = holder.my_atom - M.apply_effect(2*REM,IRRADIATE,0) - if(prob(4)) - randmutb(M) - ..() - return - - hydrocodone - name = "Hydrocodone" - id = "hydrocodone" - description = "An extremely effective painkiller; may have long term abuse consequences." - reagent_state = LIQUID - color = "#C805DC" - metabolization_rate = 0.3 // Lasts 1.5 minutes for 15 units - shock_reduction = 200 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - ..() - return - - virus_food - name = "Virus Food" - id = "virusfood" - description = "A mixture of water, milk, and oxygen. Virus cells can use this mixture to reproduce." - reagent_state = LIQUID - nutriment_factor = 2 * REAGENTS_METABOLISM - color = "#899613" // rgb: 137, 150, 19 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.nutrition += nutriment_factor*REM - ..() - return - - sterilizine - name = "Sterilizine" - id = "sterilizine" - description = "Sterilizes wounds in preparation for surgery." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - - //makes you squeaky clean - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) - if (method == TOUCH) - M.germ_level -= min(volume*20, M.germ_level) - - reaction_obj(var/obj/O, var/volume) - O.germ_level -= min(volume*20, O.germ_level) - - reaction_turf(var/turf/T, var/volume) - T.germ_level -= min(volume*20, T.germ_level) - - iron - name = "Iron" - id = "iron" - description = "Pure iron is a metal." - reagent_state = SOLID - color = "#C8A5DC" // rgb: 200, 165, 220 -/* - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if((M.virus) && (prob(8) && (M.virus.name=="Magnitis"))) - if(M.virus.spread == "Airborne") - M.virus.spread = "Remissive" - M.virus.stage-- - if(M.virus.stage <= 0) - M.resistances += M.virus.type - M.virus = null - holder.remove_reagent(src.id, 0.2) - return -*/ - - gold - name = "Gold" - id = "gold" - description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known." - reagent_state = SOLID - color = "#F7C430" // rgb: 247, 196, 48 - - silver - name = "Silver" - id = "silver" - description = "A lustrous metallic element regarded as one of the precious metals." - reagent_state = SOLID - color = "#D0D0D0" // rgb: 208, 208, 208 - - uranium - name ="Uranium" - id = "uranium" - description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive." - reagent_state = SOLID - color = "#B8B8C0" // rgb: 184, 184, 192 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.apply_effect(2,IRRADIATE,0) - ..() - return - - - reaction_turf(var/turf/T, var/volume) - src = null - if(volume >= 3) - if(!istype(T, /turf/space)) - new /obj/effect/decal/cleanable/greenglow(T) - - aluminum - name = "Aluminum" - id = "aluminum" - description = "A silvery white and ductile member of the boron group of chemical elements." - reagent_state = SOLID - color = "#A8A8A8" // rgb: 168, 168, 168 - - silicon - name = "Silicon" - id = "silicon" - description = "A tetravalent metalloid, silicon is less reactive than its chemical analog carbon." - reagent_state = SOLID - color = "#A8A8A8" // rgb: 168, 168, 168 - - fuel - name = "Welding fuel" - id = "fuel" - description = "A highly flammable blend of basic hydrocarbons, mostly Acetylene. Useful for both welding and organic chemistry, and can be fortified into a heavier oil." - reagent_state = LIQUID - color = "#060606" - - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite! - if(!istype(M, /mob/living)) - return - if(method == TOUCH) - M.adjust_fire_stacks(volume / 10) - return - /* - reaction_obj(var/obj/O, var/volume) - var/turf/the_turf = get_turf(O) - if(!the_turf) - return //No sense trying to start a fire if you don't have a turf to set on fire. --NEO - new /obj/effect/decal/cleanable/liquid_fuel(the_turf, volume) - reaction_turf(var/turf/T, var/volume) - new /obj/effect/decal/cleanable/liquid_fuel(T, volume) - return - */ - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(1) - ..() - return - - - incendiary_fuel //copy-pasta of welding fuel; allow incendiary grenades to function better without the headache of people spraying fuel everywhere with regular welding fuel. - name = "Incendiary fuel" - id = "incendiaryfuel" - description = "A highly flammable compound used in incendiary grenades." - reagent_state = LIQUID - color = "#660000" // rgb: 102, 0, 0 - - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite! - if(!istype(M, /mob/living)) - return - if(method == TOUCH) - M.adjust_fire_stacks(volume / 10) - return - - reaction_obj(var/obj/O, var/volume) - var/turf/the_turf = get_turf(O) - if(!the_turf) - return //No sense trying to start a fire if you don't have a turf to set on fire. --NEO - new /obj/effect/decal/cleanable/liquid_fuel(the_turf, volume) - reaction_turf(var/turf/T, var/volume) - new /obj/effect/decal/cleanable/liquid_fuel(T, volume) - return - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(1) - ..() - return - - space_cleaner - name = "Space cleaner" - id = "cleaner" - description = "A compound used to clean things. Now with 50% more sodium hypochlorite!" - reagent_state = LIQUID - color = "#61C2C2" - - reaction_obj(var/obj/O, var/volume) - if(istype(O,/obj/effect/decal/cleanable)) - qdel(O) - else - if(O) - O.clean_blood() - reaction_turf(var/turf/T, var/volume) - if(volume >= 1) - T.overlays.Cut() - T.clean_blood() - for(var/obj/effect/decal/cleanable/C in src) - qdel(C) - - for(var/mob/living/carbon/slime/M in T) - M.adjustToxLoss(rand(5,10)) - reaction_turf(var/turf/simulated/S, var/volume) - if(volume >= 1) - S.dirt = 0 - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(H.lip_style) - H.lip_style = null - H.update_body() - if(C.r_hand) - C.r_hand.clean_blood() - if(C.l_hand) - C.l_hand.clean_blood() - if(C.wear_mask) - if(C.wear_mask.clean_blood()) - C.update_inv_wear_mask(0) - if(ishuman(M)) - var/mob/living/carbon/human/H = C - if(H.head) - if(H.head.clean_blood()) - H.update_inv_head(0,0) - if(H.wear_suit) - if(H.wear_suit.clean_blood()) - H.update_inv_wear_suit(0,0) - else if(H.w_uniform) - if(H.w_uniform.clean_blood()) - H.update_inv_w_uniform(0,0) - if(H.shoes) - if(H.shoes.clean_blood()) - H.update_inv_shoes(0,0) - M.clean_blood() - ..() - return - - plasma - name = "Plasma" - id = "plasma" - description = "The liquid phase of an unusual extraterrestrial compound." - reagent_state = LIQUID - color = "#7A2B94" - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(1*REM) - if(holder.has_reagent("epinephrine")) - holder.remove_reagent("epinephrine", 2) - ..() - return - - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with plasma is stronger than fuel! - if(!istype(M, /mob/living)) - return - if(method == TOUCH) - M.adjust_fire_stacks(volume / 5) - ..() - return - lexorin - name = "Lexorin" - id = "lexorin" - description = "Lexorin temporarily stops respiration. Causes tissue damage." - reagent_state = LIQUID - color = "#52685D" - metabolization_rate = 0.2 - - on_mob_life(var/mob/living/M as mob) - if(M.stat == 2.0) - return - if(!M) M = holder.my_atom - M.adjustToxLoss(1) - ..() - return - - adminordrazine //An OP chemical for admins - name = "Adminordrazine" - id = "adminordrazine" - description = "It's magic. We don't have to explain it." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - process_flags = ORGANIC | SYNTHETIC //Adminbuse knows no bounds! - - on_mob_life(var/mob/living/carbon/M as mob) - if(!M) M = holder.my_atom ///This can even heal dead people. - for(var/datum/reagent/R in M.reagents.reagent_list) - if(R != src) - M.reagents.remove_reagent(R.id,5) - M.setCloneLoss(0) - M.setOxyLoss(0) - M.radiation = 0 - M.heal_organ_damage(5,5) - M.adjustToxLoss(-5) - M.hallucination = 0 - M.setBrainLoss(0) - M.disabilities = 0 - M.sdisabilities = 0 - M.eye_blurry = 0 - M.eye_blind = 0 - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/obj/item/organ/eyes/E = H.internal_organs_by_name["eyes"] - if(istype(E)) - E.damage = max(E.damage-5 , 0) - M.SetWeakened(0) - M.SetStunned(0) - M.SetParalysis(0) - M.silent = 0 - M.dizziness = 0 - M.drowsyness = 0 - M.stuttering = 0 - M.slurring = 0 - M.confused = 0 - M.sleeping = 0 - M.jitteriness = 0 - if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs - var/mob/living/carbon/C = M - if(C.virus2.len) - for (var/ID in C.virus2) - var/datum/disease2/disease/V = C.virus2[ID] - C.antibodies |= V.antigen - ..() - return - - nanites - name = "Nanites" - id = "nanites" - description = "Nanomachines that aid in rapid cellular regeneration." - - - synaptizine - name = "Synaptizine" - id = "synaptizine" - description = "Synaptizine is used to treat neuroleptic shock. Can be used to help remove disabling symptoms such as paralysis." - reagent_state = LIQUID - color = "#FA46FA" - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.AdjustParalysis(-1) - M.AdjustStunned(-1) - M.AdjustWeakened(-1) - if(prob(50)) - M.adjustBrainLoss(-1.0) - ..() - return - - audioline - name = "Audioline" - id = "audioline" - description = "Heals ear damage." - reagent_state = LIQUID - color = "#6600FF" // rgb: 100, 165, 255 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.ear_damage = 0 - M.ear_deaf = 0 - ..() - return - - mitocholide - name = "Mitocholide" - id = "mitocholide" - description = "A specialized drug that stimulates the mitochondria of cells to encourage healing of internal organs." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(ishuman(M)) - var/mob/living/carbon/human/H = M - - //Mitocholide is hard enough to get, it's probably fair to make this all internal organs - for(var/name in H.internal_organs_by_name) - var/obj/item/organ/I = H.internal_organs_by_name[name] - if(I.damage > 0) - I.damage -= 0.20 - ..() - return - - cryoxadone - name = "Cryoxadone" - id = "cryoxadone" - description = "A plasma mixture with almost magical healing powers. Its main limitation is that the targets body temperature must be under 265K for it to metabolise correctly." - reagent_state = LIQUID - color = "#0000C8" // rgb: 200, 165, 220 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(M.bodytemperature < 265) - M.adjustCloneLoss(-4) - M.adjustOxyLoss(-10) - M.heal_organ_damage(12,12) - M.adjustToxLoss(-3) - M.status_flags &= ~DISFIGURED - ..() - return - - rezadone - name = "Rezadone" - id = "rezadone" - description = "A powder derived from fish toxin, this substance can effectively treat genetic damage in humanoids, though excessive consumption has side effects." - reagent_state = SOLID - color = "#669900" // rgb: 102, 153, 0 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - data++ - switch(data) - if(1 to 15) - M.adjustCloneLoss(-1) - M.heal_organ_damage(1,1) - if(15 to 35) - M.adjustCloneLoss(-2) - M.heal_organ_damage(2,1) - M.status_flags &= ~DISFIGURED - if(35 to INFINITY) - M.adjustToxLoss(1) - M.Dizzy(5) - M.Jitter(5) - - ..() - return - - spaceacillin - name = "Spaceacillin" - id = "spaceacillin" - description = "An all-purpose antibiotic agent extracted from space fungus." - reagent_state = LIQUID - color = "#0AB478" - - on_mob_life(var/mob/living/M as mob) - ..() - return - - carpotoxin - name = "Carpotoxin" - id = "carpotoxin" - description = "A deadly neurotoxin produced by the dreaded spess carp." - reagent_state = LIQUID - color = "#003333" // rgb: 0, 51, 51 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(2*REM) - ..() - return - - staminatoxin - name = "Tirizene" - id = "tirizene" - description = "A toxin that affects the stamina of a person when injected into the bloodstream." - reagent_state = LIQUID - color = "#6E2828" - data = 13 - - on_mob_life(var/mob/living/M) - M.adjustStaminaLoss(REM * data) - data = max(data - 1, 3) - ..() - - lsd - name = "Lysergic acid diethylamide" - id = "lsd" - description = "A highly potent hallucinogenic substance. Far out, maaaan." - reagent_state = LIQUID - color = "#0000D8" - - on_mob_life(var/mob/living/M) - if(!M) M = holder.my_atom - M.hallucination += 10 - ..() - return - - - spores - name = "Spore Toxin" - id = "spores" - description = "A toxic spore cloud which blocks vision when ingested." - color = "#9ACD32" - - on_mob_life(var/mob/living/M as mob) - M.adjustToxLoss(0.5) - M.damageoverlaytemp = 60 - M.eye_blurry = max(M.eye_blurry, 3) - ..() - return - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/* - nanomachines - name = "Nanomachines" - id = "nanomachines" - description = "Microscopic construction robots." - reagent_state = LIQUID - color = "#535E66" // rgb: 83, 94, 102 - - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - src = null - if( (prob(10) && method==TOUCH) || method==INGEST) - M.contract_disease(new /datum/disease/robotic_transformation(0),1) - - xenomicrobes - name = "Xenomicrobes" - id = "xenomicrobes" - description = "Microbes with an entirely alien cellular structure." - reagent_state = LIQUID - color = "#535E66" // rgb: 83, 94, 102 - - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - src = null - if( (prob(10) && method==TOUCH) || method==INGEST) - M.contract_disease(new /datum/disease/xeno_transformation(0),1) -*/ - - spore - name = "Blob Spores" - id = "spore" - description = "Spores of some blob creature thingy." - reagent_state = LIQUID - color = "#CE760A" // rgb: 206, 118, 10 - var/client/blob_client = null - var/blob_point_rate = 3 - - on_mob_life(var/mob/living/M) - if(!M) M = holder.my_atom - if (holder.has_reagent("atrazine",45)) - holder.del_reagent("spore") - if (prob(1)) - M << "\red Your mouth tastes funny." - if (prob(1) && prob(25)) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(directory[ckey(C.key)]) - blob_client = directory[ckey(C.key)] - C.gib() - if(blob_client) - var/obj/effect/blob/core/core = new(get_turf(C), 200, blob_client, blob_point_rate) - if(core.overmind && core.overmind.mind) - core.overmind.mind.name = C.name - - return - -//foam - - fluorosurfactant - name = "Fluorosurfactant" - id = "fluorosurfactant" - description = "A perfluoronated sulfonic acid that forms a foam when mixed with water." - reagent_state = LIQUID - color = "#9E6B38" // rgb: 158, 107, 56 - -// metal foaming agent -// this is lithium hydride. Add other recipies (e.g. LiH + H2O -> LiOH + H2) eventually - - ammonia - name = "Ammonia" - id = "ammonia" - description = "A caustic substance commonly used in fertilizer or household cleaners." - reagent_state = GAS - color = "#404030" // rgb: 64, 64, 48 - - - diethylamine - name = "Diethylamine" - id = "diethylamine" - description = "A secondary amine, useful as a plant nutrient and as building block for other compounds." - reagent_state = LIQUID - color = "#322D00" - - beer2 //disguised as normal beer for use by emagged brobots - name = "Beer" - id = "beer2" - description = "An alcoholic beverage made from malted grains, hops, yeast, and water." - color = "#664300" // rgb: 102, 67, 0 - - on_mob_life(var/mob/living/M as mob) - if(!data) - data = 1 - switch(data) - if(1 to 50) - M.sleeping += 1 - if(51 to INFINITY) - M.sleeping += 1 - M.adjustToxLoss((data - 50)*REM) - data++ - holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM) - ..() - return - -/////////////////////////Food Reagents//////////////////////////// -// Part of the food code. Nutriment is used instead of the old "heal_amt" code. Also is where all the food -// condiments, additives, and such go. - nutriment // Pure nutriment, universally digestable and thus slightly less effective - name = "Nutriment" - id = "nutriment" - description = "A questionable mixture of various pure nutrients commonly found in processed foods." - reagent_state = SOLID - nutriment_factor = 12 * REAGENTS_METABOLISM - color = "#664330" // rgb: 102, 67, 48 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!(M.mind in ticker.mode.vampires)) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.species && H.species.dietflags) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients - H.nutrition += nutriment_factor // For hunger and fatness - if(prob(50)) M.heal_organ_damage(1,0) - if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals - if(prob(50)) M.heal_organ_damage(1,0) - ..() - return - - protein // Meat-based protein, digestable by carnivores and omnivores, worthless to herbivores - name = "Protein" - id = "protein" - description = "Various essential proteins and fats commonly found in animal flesh and blood." - reagent_state = SOLID - nutriment_factor = 15 * REAGENTS_METABOLISM - color = "#664330" // rgb: 102, 67, 48 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!(M.mind in ticker.mode.vampires)) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.species && H.species.dietflags && !(H.species.dietflags & DIET_HERB)) //Make sure the species has it's dietflag set, and that it is not a herbivore - H.nutrition += nutriment_factor // For hunger and fatness - if(prob(50)) M.heal_organ_damage(1,0) - if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals - if(prob(50)) M.heal_organ_damage(1,0) - ..() - return - - plantmatter // Plant-based biomatter, digestable by herbivores and omnivores, worthless to carnivores - name = "Plant-matter" - id = "plantmatter" - description = "Vitamin-rich fibers and natural sugars commonly found in fresh produce." - reagent_state = SOLID - nutriment_factor = 15 * REAGENTS_METABOLISM - color = "#664330" // rgb: 102, 67, 48 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!(M.mind in ticker.mode.vampires)) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.species && H.species.dietflags && !(H.species.dietflags & DIET_CARN)) //Make sure the species has it's dietflag set, and that it is not a carnivore - H.nutrition += nutriment_factor // For hunger and fatness - if(prob(50)) M.heal_organ_damage(1,0) - if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals - if(prob(50)) M.heal_organ_damage(1,0) - ..() - return - - soysauce - name = "Soysauce" - id = "soysauce" - description = "A salty sauce made from the soy plant." - reagent_state = LIQUID - nutriment_factor = 2 * REAGENTS_METABOLISM - color = "#792300" // rgb: 121, 35, 0 - - ketchup - name = "Ketchup" - id = "ketchup" - description = "Ketchup, catsup, whatever. It's tomato paste." - reagent_state = LIQUID - nutriment_factor = 5 * REAGENTS_METABOLISM - color = "#731008" // rgb: 115, 16, 8 - - - capsaicin - name = "Capsaicin Oil" - id = "capsaicin" - description = "This is what makes chilis hot." - reagent_state = LIQUID - color = "#B31008" // rgb: 179, 16, 8 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - switch(data) - if(1 to 15) - M.bodytemperature += 5 * TEMPERATURE_DAMAGE_COEFFICIENT - if(holder.has_reagent("frostoil")) - holder.remove_reagent("frostoil", 5) - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature += rand(5,20) - if(15 to 25) - M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature += rand(10,20) - if(25 to INFINITY) - M.bodytemperature += 15 * TEMPERATURE_DAMAGE_COEFFICIENT - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature += rand(15,20) - holder.remove_reagent(src.id, FOOD_METABOLISM) - data++ - ..() - return - - condensedcapsaicin - name = "Condensed Capsaicin" - id = "condensedcapsaicin" - description = "This shit goes in pepperspray." - reagent_state = LIQUID - color = "#B31008" // rgb: 179, 16, 8 - - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) - if(!istype(M, /mob/living)) - return - if(method == TOUCH) - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/victim = M - var/mouth_covered = 0 - var/eyes_covered = 0 - var/obj/item/safe_thing = null - if( victim.wear_mask ) - if ( victim.wear_mask.flags & MASKCOVERSEYES ) - eyes_covered = 1 - safe_thing = victim.wear_mask - if ( victim.wear_mask.flags & MASKCOVERSMOUTH ) - mouth_covered = 1 - safe_thing = victim.wear_mask - if( victim.head ) - if ( victim.head.flags & MASKCOVERSEYES ) - eyes_covered = 1 - safe_thing = victim.head - if ( victim.head.flags & MASKCOVERSMOUTH ) - mouth_covered = 1 - safe_thing = victim.head - if(victim.glasses) - eyes_covered = 1 - if ( !safe_thing ) - safe_thing = victim.glasses - if ( eyes_covered && mouth_covered ) - victim << "\red Your [safe_thing] protects you from the pepperspray!" - return - else if ( mouth_covered ) // Reduced effects if partially protected - victim << "\red Your [safe_thing] protect you from most of the pepperspray!" - if(prob(5)) - victim.emote("scream") - victim.eye_blurry = max(M.eye_blurry, 3) - victim.eye_blind = max(M.eye_blind, 1) - victim.confused = max(M.confused, 3) - victim.damageoverlaytemp = 60 - victim.Weaken(3) - victim.drop_item() - return - else if ( eyes_covered ) // Eye cover is better than mouth cover - victim << "\red Your [safe_thing] protects your eyes from the pepperspray!" - victim.eye_blurry = max(M.eye_blurry, 3) - victim.damageoverlaytemp = 30 - return - else // Oh dear :D - if(prob(5)) - victim.emote("scream") - victim << "\red You're sprayed directly in the eyes with pepperspray!" - victim.eye_blurry = max(M.eye_blurry, 5) - victim.eye_blind = max(M.eye_blind, 2) - victim.confused = max(M.confused, 6) - victim.damageoverlaytemp = 75 - victim.Weaken(5) - victim.drop_item() - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(prob(5)) - M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]") - ..() - return - - frostoil - name = "Frost Oil" - id = "frostoil" - description = "A special oil that noticably chills the body. Extraced from Icepeppers." - reagent_state = LIQUID - color = "#B31008" // rgb: 139, 166, 233 - process_flags = ORGANIC | SYNTHETIC - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - switch(data) - if(1 to 15) - M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT - if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 5) - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(5,20) - if(15 to 25) - M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(10,20) - if(25 to INFINITY) - M.bodytemperature -= 20 * TEMPERATURE_DAMAGE_COEFFICIENT - if(prob(1)) - M.emote("shiver") - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(15,20) - data++ - holder.remove_reagent(src.id, FOOD_METABOLISM) - ..() - return - - reaction_turf(var/turf/simulated/T, var/volume) - for(var/mob/living/carbon/slime/M in T) - M.adjustToxLoss(rand(15,30)) - - sodiumchloride - name = "Salt" - id = "sodiumchloride" - description = "Sodium chloride, common table salt." - reagent_state = SOLID - color = "#B1B0B0" - - overdose_process(var/mob/living/M as mob) - if(volume > 100) - if(prob(70)) - M.adjustBrainLoss(1) - if(prob(8)) - M.adjustToxLoss(rand(1,2)) - ..() - return - - blackpepper - name = "Black Pepper" - id = "blackpepper" - description = "A powder ground from peppercorns. *AAAACHOOO*" - reagent_state = SOLID - // no color (ie, black) - - coco - name = "Coco Powder" - id = "coco" - description = "A fatty, bitter paste made from coco beans." - reagent_state = SOLID - nutriment_factor = 5 * REAGENTS_METABOLISM - color = "#302000" // rgb: 48, 32, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - ..() - return - - hot_coco - name = "Hot Chocolate" - id = "hot_coco" - description = "Made with love! And coco beans." - reagent_state = LIQUID - nutriment_factor = 2 * REAGENTS_METABOLISM - color = "#403010" // rgb: 64, 48, 16 - - on_mob_life(var/mob/living/M as mob) - if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 - M.bodytemperature = min(310, M.bodytemperature + (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.nutrition += nutriment_factor - ..() - return - - psilocybin - name = "Psilocybin" - id = "psilocybin" - description = "A strong psycotropic derived from certain species of mushroom." - color = "#E700E7" // rgb: 231, 0, 231 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.druggy = max(M.druggy, 30) - if(!data) data = 1 - switch(data) - if(1 to 5) - if (!M.stuttering) M.stuttering = 1 - M.Dizzy(5) - if(prob(10)) M.emote(pick("twitch","giggle")) - if(5 to 10) - if (!M.stuttering) M.stuttering = 1 - M.Jitter(10) - M.Dizzy(10) - M.druggy = max(M.druggy, 35) - if(prob(20)) M.emote(pick("twitch","giggle")) - if (10 to INFINITY) - if (!M.stuttering) M.stuttering = 1 - M.Jitter(20) - M.Dizzy(20) - M.druggy = max(M.druggy, 40) - if(prob(30)) M.emote(pick("twitch","giggle")) - data++ - ..() - return - - sprinkles - name = "Sprinkles" - id = "sprinkles" - description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#FF00FF" // rgb: 255, 0, 255 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - if(istype(M, /mob/living/carbon/human) && M.job in list("Security Officer", "Head of Security", "Detective", "Warden")) - if(!M) M = holder.my_atom - M.heal_organ_damage(1,1) - M.nutrition += nutriment_factor - ..() - return - ..() - - cornoil - name = "Corn Oil" - id = "cornoil" - description = "An oil derived from various types of corn." - reagent_state = LIQUID - nutriment_factor = 20 * REAGENTS_METABOLISM - color = "#302000" // rgb: 48, 32, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - ..() - return - reaction_turf(var/turf/simulated/T, var/volume) - if (!istype(T)) return - src = null - if(volume >= 3) - if(T.wet >= 1) return - T.wet = 1 - if(T.wet_overlay) - T.overlays -= T.wet_overlay - T.wet_overlay = null - T.wet_overlay = image('icons/effects/water.dmi',T,"wet_floor") - T.overlays += T.wet_overlay - - spawn(800) - if (!istype(T)) return - if(T.wet >= 2) return - T.wet = 0 - if(T.wet_overlay) - T.overlays -= T.wet_overlay - T.wet_overlay = null - var/hotspot = (locate(/obj/effect/hotspot) in T) - if(hotspot) - var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) - lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) - lowertemp.react() - T.assume_air(lowertemp) - qdel(hotspot) - - enzyme - name = "Denatured Enzyme" - id = "enzyme" - description = "Heated beyond usefulness, this enzyme is now worthless." - reagent_state = LIQUID - color = "#282314" // rgb: 54, 94, 48 - - dry_ramen - name = "Dry Ramen" - id = "dry_ramen" - description = "Space age food, since August 25, 1958. Contains dried noodles, vegetables, and chemicals that boil in contact with water." - reagent_state = SOLID - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#302000" // rgb: 48, 32, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - ..() - return - - hot_ramen - name = "Hot Ramen" - id = "hot_ramen" - description = "The noodles are boiled, the flavors are artificial, just like being back in school." - reagent_state = LIQUID - nutriment_factor = 5 * REAGENTS_METABOLISM - color = "#302000" // rgb: 48, 32, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 - M.bodytemperature = min(310, M.bodytemperature + (10 * TEMPERATURE_DAMAGE_COEFFICIENT)) - ..() - return - - hell_ramen - name = "Hell Ramen" - id = "hell_ramen" - description = "The noodles are boiled, the flavors are artificial, just like being back in school." - reagent_state = LIQUID - nutriment_factor = 5 * REAGENTS_METABOLISM - color = "#302000" // rgb: 48, 32, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT - ..() - return - - - flour - name = "flour" - id = "flour" - description = "This is what you rub all over yourself to pretend to be a ghost." - reagent_state = SOLID - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#FFFFFF" // rgb: 0, 0, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - ..() - return - - reaction_turf(var/turf/T, var/volume) - src = null - if(!istype(T, /turf/space)) - new /obj/effect/decal/cleanable/flour(T) - - rice - name = "Rice" - id = "rice" - description = "Enjoy the great taste of nothing." - reagent_state = SOLID - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#FFFFFF" // rgb: 0, 0, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - ..() - return - - cherryjelly - name = "Cherry Jelly" - id = "cherryjelly" - description = "Totally the best. Only to be spread on foods with excellent lateral symmetry." - reagent_state = LIQUID - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#801E28" // rgb: 128, 30, 40 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - ..() - return - - toxin/coffeepowder - name = "Coffee Grounds" - id = "coffeepowder" - description = "Finely ground Coffee beans, used to make coffee." - reagent_state = SOLID - color = "#5B2E0D" // rgb: 91, 46, 13 - - toxin/teapowder - name = "Ground Tea Leaves" - id = "teapowder" - description = "Finely shredded Tea leaves, used for making tea." - reagent_state = SOLID - color = "#7F8400" // rgb: 127, 132, 0 - - //Reagents used for plant fertilizers. - toxin/fertilizer - name = "fertilizer" - id = "fertilizer" - description = "A chemical mix good for growing plants with." - reagent_state = LIQUID -// toxpwr = 0.2 //It's not THAT poisonous. - color = "#664330" // rgb: 102, 67, 48 - - - toxin/fertilizer/eznutrient - name = "EZ Nutrient" - id = "eznutrient" - - toxin/fertilizer/left4zed - name = "Left-4-Zed" - id = "left4zed" - - toxin/fertilizer/robustharvest - name = "Robust Harvest" - id = "robustharvest" - - -///////////////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////// DRINKS BELOW, Beer is up there though, along with cola. Cap'n Pete's Cuban Spiced Rum//////////////////////////////// -///////////////////////////////////////////////////////////////////////////////////////////////////////// - - drink - name = "Drink" - id = "drink" - description = "Uh, some kind of drink." - reagent_state = LIQUID - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#E78108" // rgb: 231, 129, 8 - var/adj_dizzy = 0 - var/adj_drowsy = 0 - var/adj_sleepy = 0 - var/adj_temp = 0 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.nutrition += nutriment_factor - holder.remove_reagent(src.id, FOOD_METABOLISM) - if (adj_dizzy) M.dizziness = max(0,M.dizziness + adj_dizzy) - if (adj_drowsy) M.drowsyness = max(0,M.drowsyness + adj_drowsy) - if (adj_sleepy) M.sleeping = max(0,M.sleeping + adj_sleepy) - if (adj_temp) - if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 - M.bodytemperature = min(310, M.bodytemperature + (25 * TEMPERATURE_DAMAGE_COEFFICIENT)) - // Drinks should be used up faster than other reagents. - holder.remove_reagent(src.id, FOOD_METABOLISM) - ..() - return - - orangejuice - name = "Orange juice" - id = "orangejuice" - description = "Both delicious AND rich in Vitamin C, what more do you need?" - color = "#E78108" // rgb: 231, 129, 8 - - on_mob_life(var/mob/living/M as mob) - ..() - if(M.getOxyLoss() && prob(30)) M.adjustOxyLoss(-1*REM) - return - - tomatojuice - name = "Tomato Juice" - id = "tomatojuice" - description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?" - color = "#731008" // rgb: 115, 16, 8 - - on_mob_life(var/mob/living/M as mob) - ..() - if(M.getFireLoss() && prob(20)) M.heal_organ_damage(0,1) - return - - limejuice - name = "Lime Juice" - id = "limejuice" - description = "The sweet-sour juice of limes." - color = "#365E30" // rgb: 54, 94, 48 - on_mob_life(var/mob/living/M as mob) - ..() - if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1) - return - - - carrotjuice - name = "Carrot juice" - id = "carrotjuice" - description = "It is just like a carrot but without crunching." - color = "#973800" // rgb: 151, 56, 0 - - on_mob_life(var/mob/living/M as mob) - ..() - M.eye_blurry = max(M.eye_blurry-1 , 0) - M.eye_blind = max(M.eye_blind-1 , 0) - if(!data) data = 1 - switch(data) - if(1 to 20) - //nothing - if(21 to INFINITY) - if (prob(data-10)) - M.disabilities &= ~NEARSIGHTED - data++ - return - - doctor_delight - name = "The Doctor's Delight" - id = "doctorsdelight" - description = "A gulp a day keeps the MediBot away. That's probably for the best." - reagent_state = LIQUID - color = "#FF8CFF" // rgb: 255, 140, 255 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1) - ..() - return - - berryjuice - name = "Berry Juice" - id = "berryjuice" - description = "A delicious blend of several different kinds of berries." - color = "#863333" // rgb: 134, 51, 51 - - poisonberryjuice - name = "Poison Berry Juice" - id = "poisonberryjuice" - description = "A tasty juice blended from various kinds of very deadly and toxic berries." - color = "#863353" // rgb: 134, 51, 83 - - on_mob_life(var/mob/living/M as mob) - ..() - M.adjustToxLoss(1) - return - - watermelonjuice - name = "Watermelon Juice" - id = "watermelonjuice" - description = "Delicious juice made from watermelon." - color = "#863333" // rgb: 134, 51, 51 - - lemonjuice - name = "Lemon Juice" - id = "lemonjuice" - description = "This juice is VERY sour." - color = "#863333" // rgb: 175, 175, 0 - - grapejuice - name = "Grape Juice" - id = "grapejuice" - description = "This juice is known to stain shirts." - color = "#993399" // rgb: 153, 51, 153 - - banana - name = "Banana Juice" - id = "banana" - description = "The raw essence of a banana." - color = "#863333" // rgb: 175, 175, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - if(istype(M, /mob/living/carbon/human) && M.job in list("Clown")) - if(!M) M = holder.my_atom - M.heal_organ_damage(1,1) - M.nutrition += nutriment_factor - ..() - return - ..() - - nothing - name = "Nothing" - id = "nothing" - description = "Absolutely nothing." - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - if(istype(M, /mob/living/carbon/human) && M.job in list("Mime")) - if(!M) M = holder.my_atom - M.heal_organ_damage(1,1) - M.nutrition += nutriment_factor - ..() - return - ..() - - potato_juice - name = "Potato Juice" - id = "potato" - description = "Juice of the potato. Bleh." - nutriment_factor = 2 * FOOD_METABOLISM - color = "#302000" // rgb: 48, 32, 0 - - milk - name = "Milk" - id = "milk" - description = "An opaque white liquid produced by the mammary glands of mammals." - color = "#DFDFDF" // rgb: 223, 223, 223 - - on_mob_life(var/mob/living/M as mob) - if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) - if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 10*REAGENTS_METABOLISM) - ..() - return - - soymilk - name = "Soy Milk" - id = "soymilk" - description = "An opaque white liquid made from soybeans." - color = "#DFDFC7" // rgb: 223, 223, 199 - - cream - name = "Cream" - id = "cream" - description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?" - color = "#DFD7AF" // rgb: 223, 215, 175 - - chocolate_milk - name = "Chocolate milk" - id ="chocolate_milk" - description = "Chocolate-flavored milk, tastes like being a kid again." - color = "#85432C" - - hot_coco - name = "Hot Chocolate" - id = "hot_coco" - description = "Made with love! And coco beans." - nutriment_factor = 2 * FOOD_METABOLISM - color = "#403010" // rgb: 64, 48, 16 - adj_temp = 5 - - coffee - name = "Coffee" - id = "coffee" - description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant." - color = "#482000" // rgb: 72, 32, 0 - adj_dizzy = -5 - adj_drowsy = -3 - adj_sleepy = -2 - adj_temp = 25 - overdose_threshold = 45 - - on_mob_life(var/mob/living/M as mob) - if(adj_temp > 0 && holder.has_reagent("frostoil")) - holder.remove_reagent("frostoil", 10*REAGENTS_METABOLISM) - if(prob(50)) - M.AdjustParalysis(-1) - M.AdjustStunned(-1) - M.AdjustWeakened(-1) - ..() - return - - overdose_process(var/mob/living/M as mob) - if(volume > 45) - M.Jitter(5) - - ..() - return - - icecoffee - name = "Iced Coffee" - id = "icecoffee" - description = "Coffee and ice, refreshing and cool." - color = "#102838" // rgb: 16, 40, 56 - adj_temp = -5 - - soy_latte - name = "Soy Latte" - id = "soy_latte" - description = "A nice and tasty beverage while you are reading your hippie books." - color = "#664300" // rgb: 102, 67, 0 - adj_sleepy = 0 - adj_temp = 5 - - on_mob_life(var/mob/living/M as mob) - ..() - M.sleeping = 0 - if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) - return - - cafe_latte - name = "Cafe Latte" - id = "cafe_latte" - description = "A nice, strong and tasty beverage while you are reading." - color = "#664300" // rgb: 102, 67, 0 - adj_sleepy = 0 - adj_temp = 5 - - on_mob_life(var/mob/living/M as mob) - ..() - M.sleeping = 0 - if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) - return - - tea - name = "Tea" - id = "tea" - description = "Tasty black tea: It has antioxidants. It's good for you!" - color = "#101000" // rgb: 16, 16, 0 - adj_dizzy = -2 - adj_drowsy = -1 - adj_sleepy = -3 - adj_temp = 20 - - on_mob_life(var/mob/living/M as mob) - ..() - if(M.getToxLoss() && prob(20)) - M.adjustToxLoss(-1) - return - - icetea - name = "Iced Tea" - id = "icetea" - description = "No relation to a certain rap artist/ actor." - color = "#104038" // rgb: 16, 64, 56 - adj_temp = -5 - - kahlua - name = "Kahlua" - id = "kahlua" - description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!" - color = "#664300" // rgb: 102, 67, 0 - adj_dizzy = -5 - adj_drowsy = -3 - adj_sleepy = -2 - - on_mob_life(var/mob/living/M as mob) - ..() - M.Jitter(5) - return - - cold - name = "Cold drink" - adj_temp = -5 - - tonic - name = "Tonic Water" - id = "tonic" - description = "It tastes strange but at least the quinine keeps the Space Malaria at bay." - color = "#664300" // rgb: 102, 67, 0 - adj_dizzy = -5 - adj_drowsy = -3 - adj_sleepy = -2 - - sodawater - name = "Soda Water" - id = "sodawater" - description = "A can of club soda. Why not make a scotch and soda?" - color = "#619494" // rgb: 97, 148, 148 - adj_dizzy = -5 - adj_drowsy = -3 - - ice - name = "Ice" - id = "ice" - description = "Frozen water, your dentist wouldn't like you chewing this." - reagent_state = SOLID - color = "#619494" // rgb: 97, 148, 148 - - space_cola - name = "Cola" - id = "cola" - description = "A refreshing beverage." - reagent_state = LIQUID - color = "#100800" // rgb: 16, 8, 0 - adj_drowsy = -3 - - nuka_cola - name = "Nuka Cola" - id = "nuka_cola" - description = "Cola, cola never changes." - color = "#100800" // rgb: 16, 8, 0 - adj_sleepy = -2 - - on_mob_life(var/mob/living/M as mob) - M.Jitter(20) - M.druggy = max(M.druggy, 30) - M.dizziness +=5 - M.drowsyness = 0 - M.status_flags |= GOTTAGOFAST - ..() - return - - spacemountainwind - name = "Space Mountain Wind" - id = "spacemountainwind" - description = "Blows right through you like a space wind." - color = "#102000" // rgb: 16, 32, 0 - adj_drowsy = -7 - adj_sleepy = -1 - - dr_gibb - name = "Dr. Gibb" - id = "dr_gibb" - description = "A delicious blend of 42 different flavours" - color = "#102000" // rgb: 16, 32, 0 - adj_drowsy = -6 - - space_up - name = "Space-Up" - id = "space_up" - description = "Tastes like a hull breach in your mouth." - color = "#202800" // rgb: 32, 40, 0 - adj_temp = -8 - - lemon_lime - name = "Lemon Lime" - description = "A tangy substance made of 0.5% natural citrus!" - id = "lemon_lime" - color = "#878F00" // rgb: 135, 40, 0 - adj_temp = -8 - - lemonade - name = "Lemonade" - description = "Oh the nostalgia..." - id = "lemonade" - color = "#FFFF00" // rgb: 255, 255, 0 - - kiraspecial - name = "Kira Special" - description = "Long live the guy who everyone had mistaken for a girl. Baka!" - id = "kiraspecial" - color = "#CCCC99" // rgb: 204, 204, 153 - - brownstar - name = "Brown Star" - description = "Its not what it sounds like..." - id = "brownstar" - color = "#9F3400" // rgb: 159, 052, 000 - adj_temp = - 2 - - milkshake - name = "Milkshake" - description = "Glorious brainfreezing mixture." - id = "milkshake" - color = "#AEE5E4" // rgb" 174, 229, 228 - adj_temp = -9 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - switch(data) - if(1 to 15) - M.bodytemperature -= 5 * TEMPERATURE_DAMAGE_COEFFICIENT - if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 5) - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(5,20) - if(15 to 25) - M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(10,20) - if(25 to INFINITY) - M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT - if(prob(1)) M.emote("shiver") - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(15,20) - data++ - holder.remove_reagent(src.id, FOOD_METABOLISM) - ..() - return - - rewriter - name = "Rewriter" - description = "The secert of the sanctuary of the Libarian..." - id = "rewriter" - color = "#485000" // rgb:72, 080, 0 - - on_mob_life(var/mob/living/M as mob) - ..() - M.Jitter(5) - return - - hippies_delight - name = "Hippie's Delight" - id = "hippiesdelight" - description = "You just don't get it maaaan." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.druggy = max(M.druggy, 50) - if(!data) data = 1 - switch(data) - if(1 to 5) - if (!M.stuttering) M.stuttering = 1 - M.Dizzy(10) - if(prob(10)) M.emote(pick("twitch","giggle")) - if(5 to 10) - if (!M.stuttering) M.stuttering = 1 - M.Jitter(20) - M.Dizzy(20) - M.druggy = max(M.druggy, 45) - if(prob(20)) M.emote(pick("twitch","giggle")) - if (10 to INFINITY) - if (!M.stuttering) M.stuttering = 1 - M.Jitter(40) - M.Dizzy(40) - M.druggy = max(M.druggy, 60) - if(prob(30)) M.emote(pick("twitch","giggle")) - holder.remove_reagent(src.id, 0.2) - data++ - ..() - return - -//ALCOHOL WOO - ethanol - name = "Ethanol" //Parent class for all alcoholic reagents. - id = "ethanol" - description = "A well-known alcohol with a variety of applications." - reagent_state = LIQUID - nutriment_factor = 0 //So alcohol can fill you up! If they want to. - color = "#404030" // rgb: 64, 64, 48 - var/datum/martial_art/drunk_brawling/F = new - var/dizzy_adj = 3 - var/slurr_adj = 3 - var/confused_adj = 2 - var/slur_start = 65 //amount absorbed after which mob starts slurring - var/brawl_start = 75 //amount absorbed after which mob switches to drunken brawling as a fighting style - var/confused_start = 130 //amount absorbed after which mob starts confusing directions - var/vomit_start = 180 //amount absorbed after which mob starts vomitting - var/blur_start = 260 //amount absorbed after which mob starts getting blurred vision - var/pass_out = 325 //amount absorbed after which mob starts passing out - - on_mob_life(var/mob/living/M as mob, var/alien) - // Sobering multiplier. - // Sober block makes it more difficult to get drunk - var/sober_str=!(SOBER in M.mutations)?1:2 - M:nutrition += nutriment_factor - holder.remove_reagent(src.id, FOOD_METABOLISM) - if(!src.data) data = 1 - src.data++ - - var/d = data - - // make all the beverages work together - for(var/datum/reagent/ethanol/A in holder.reagent_list) - if(isnum(A.data)) d += A.data - - d/=sober_str - - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.species && (H.species.name == "Skrell" || H.species.name =="Neara")) //Skrell and Neara get very drunk very quickly. - d*=5 - - M.dizziness += dizzy_adj. - if(d >= slur_start && d < pass_out) - if (!M:slurring) M:slurring = 1 - M:slurring += slurr_adj/sober_str - if(d >= brawl_start && ishuman(M)) - var/mob/living/carbon/human/H = M - F.teach(H,1) - if(src.volume < 3) - if(H.martial_art == F) - F.remove(H) - if(d >= confused_start && prob(33)) - if (!M:confused) M:confused = 1 - M.confused = max(M:confused+(confused_adj/sober_str),0) - if(d >= blur_start) - M.eye_blurry = max(M.eye_blurry, 10/sober_str) - M:drowsyness = max(M:drowsyness, 0) - if(d >= vomit_start) - if(prob(8)) - M.fakevomit() - if(d >= pass_out) - M:paralysis = max(M:paralysis, 20/sober_str) - M:drowsyness = max(M:drowsyness, 30/sober_str) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/obj/item/organ/liver/L = H.internal_organs_by_name["liver"] - if (istype(L)) - L.take_damage(0.1, 1) - H.adjustToxLoss(0.1) - holder.remove_reagent(src.id, 0.4) - ..() - return - - reaction_obj(var/obj/O, var/volume) - if(istype(O,/obj/item/weapon/paper)) - var/obj/item/weapon/paper/paperaffected = O - paperaffected.clearpaper() - usr << "The solution melts away the ink on the paper." - if(istype(O,/obj/item/weapon/book)) - if(volume >= 5) - var/obj/item/weapon/book/affectedbook = O - affectedbook.dat = null - usr << "The solution melts away the ink on the book." - else - usr << "It wasn't enough..." - return - - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with ethanol isn't quite as good as fuel. - if(!istype(M, /mob/living)) - return - if(method == TOUCH) - M.adjust_fire_stacks(volume / 15) - return - - beer //It's really much more stronger than other drinks. - name = "Beer" - id = "beer" - description = "An alcoholic beverage made from malted grains, hops, yeast, and water." - nutriment_factor = 2 * FOOD_METABOLISM - color = "#664300" // rgb: 102, 67, 0 - on_mob_life(var/mob/living/M as mob) - ..() - M:jitteriness = max(M:jitteriness-3,0) - return - - cider - name = "Cider" - id = "cider" - description = "An alcoholic beverage derived from apples." - color = "#174116" - - whiskey - name = "Whiskey" - id = "whiskey" - description = "A superb and well-aged single-malt whiskey. Damn." - color = "#664300" // rgb: 102, 67, 0 - dizzy_adj = 4 - - specialwhiskey - name = "Special Blend Whiskey" - id = "specialwhiskey" - description = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything." - color = "#664300" // rgb: 102, 67, 0 - slur_start = 30 //amount absorbed after which mob starts slurring - brawl_start = 40 - - gin - name = "Gin" - id = "gin" - description = "It's gin. In space. I say, good sir." - color = "#664300" // rgb: 102, 67, 0 - dizzy_adj = 3 - - absinthe - name = "Absinthe" - id = "absinthe" - description = "Watch out that the Green Fairy doesn't come for you!" - color = "#33EE00" // rgb: lots, ??, ?? - overdose_threshold = 30 - dizzy_adj = 5 - slur_start = 25 - brawl_start = 40 - confused_start = 100 - - //copy paste from LSD... shoot me - on_mob_life(var/mob/M) - if(!M) M = holder.my_atom - if(!data) data = 1 - data++ - M:hallucination += 5 - if(volume > overdose_threshold) - M:adjustToxLoss(1) - ..() - return - - rum - name = "Rum" - id = "rum" - description = "Popular with the sailors. Not very popular with everyone else." - color = "#664300" // rgb: 102, 67, 0 - overdose_threshold = 30 - - on_mob_life(var/mob/living/M as mob) - ..() - M.dizziness +=5 - if(volume > overdose_threshold) - M:adjustToxLoss(1) - return - - mojito - name = "Mojito" - id = "mojito" - description = "If it's good enough for Spesscuba, it's good enough for you." - color = "#664300" // rgb: 102, 67, 0 - - vodka - name = "Vodka" - id = "vodka" - description = "Number one drink AND fueling choice for Russians worldwide." - color = "#664300" // rgb: 102, 67, 0 - - sake - name = "Sake" - id = "sake" - description = "Anime's favorite drink." - color = "#664300" // rgb: 102, 67, 0 - - tequilla - name = "Tequila" - id = "tequilla" - description = "A strong and mildly flavoured, mexican produced spirit. Feeling thirsty hombre?" - color = "#A8B0B7" // rgb: 168, 176, 183 - - vermouth - name = "Vermouth" - id = "vermouth" - description = "You suddenly feel a craving for a martini..." - color = "#664300" // rgb: 102, 67, 0 - - wine - name = "Wine" - id = "wine" - description = "An premium alchoholic beverage made from distilled grape juice." - color = "#7E4043" // rgb: 126, 64, 67 - dizzy_adj = 2 - slur_start = 65 //amount absorbed after which mob starts slurring - confused_start = 145 //amount absorbed after which mob starts confusing directions - - cognac - name = "Cognac" - id = "cognac" - description = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. Classy as fornication." - color = "#664300" // rgb: 102, 67, 0 - dizzy_adj = 4 - confused_start = 115 //amount absorbed after which mob starts confusing directions - - suicider //otherwise known as "I want to get so smashed my liver gives out and I die from alcohol poisoning". - name = "Suicider" - id = "suicider" - description = "An unbelievably strong and potent variety of Cider." - color = "#CF3811" - dizzy_adj = 20 - slurr_adj = 20 - confused_adj = 3 - slur_start = 15 - brawl_start = 25 - confused_start = 40 - blur_start = 60 - pass_out = 80 - - ale - name = "Ale" - id = "ale" - description = "A dark alchoholic beverage made by malted barley and yeast." - color = "#664300" // rgb: 102, 67, 0 - - thirteenloko - name = "Thirteen Loko" - id = "thirteenloko" - description = "A potent mixture of caffeine and alcohol." - reagent_state = LIQUID - color = "#102000" // rgb: 16, 32, 0 - - on_mob_life(var/mob/living/M as mob) - ..() - M:nutrition += nutriment_factor - holder.remove_reagent(src.id, FOOD_METABOLISM) - M:drowsyness = max(0,M:drowsyness-7) - //if(!M:sleeping_willingly) - // M:sleeping = max(0,M.sleeping-2) - if (M.bodytemperature > 310) - M.bodytemperature = max(310, M.bodytemperature-5) - M.Jitter(1) - return - - -/////////////////////////////////////////////////////////////////cocktail entities////////////////////////////////////////////// - - bilk - name = "Bilk" - id = "bilk" - description = "This appears to be beer mixed with milk. Disgusting." - reagent_state = LIQUID - color = "#895C4C" // rgb: 137, 92, 76 - - atomicbomb - name = "Atomic Bomb" - id = "atomicbomb" - description = "Nuclear proliferation never tasted so good." - reagent_state = LIQUID - color = "#666300" // rgb: 102, 99, 0 - - threemileisland - name = "THree Mile Island Iced Tea" - id = "threemileisland" - description = "Made for a woman, strong enough for a man." - reagent_state = LIQUID - color = "#666340" // rgb: 102, 99, 64 - - goldschlager - name = "Goldschlager" - id = "goldschlager" - description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - patron - name = "Patron" - id = "patron" - description = "Tequila with silver in it, a favorite of alcoholic women in the club scene." - reagent_state = LIQUID - color = "#585840" // rgb: 88, 88, 64 - - gintonic - name = "Gin and Tonic" - id = "gintonic" - description = "An all time classic, mild cocktail." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - cuba_libre - name = "Cuba Libre" - id = "cubalibre" - description = "Rum, mixed with cola. Viva la revolution." - reagent_state = LIQUID - color = "#3E1B00" // rgb: 62, 27, 0 - - whiskey_cola - name = "Whiskey Cola" - id = "whiskeycola" - description = "Whiskey, mixed with cola. Surprisingly refreshing." - reagent_state = LIQUID - color = "#3E1B00" // rgb: 62, 27, 0 - - martini - name = "Classic Martini" - id = "martini" - description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - vodkamartini - name = "Vodka Martini" - id = "vodkamartini" - description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - white_russian - name = "White Russian" - id = "whiterussian" - description = "That's just, like, your opinion, man..." - reagent_state = LIQUID - color = "#A68340" // rgb: 166, 131, 64 - - screwdrivercocktail - name = "Screwdriver" - id = "screwdrivercocktail" - description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious." - reagent_state = LIQUID - color = "#A68310" // rgb: 166, 131, 16 - - booger - name = "Booger" - id = "booger" - description = "Ewww..." - reagent_state = LIQUID - color = "#A68310" // rgb: 166, 131, 16 - - bloody_mary - name = "Bloody Mary" - id = "bloodymary" - description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - gargle_blaster - name = "Pan-Galactic Gargle Blaster" - id = "gargleblaster" - description = "Whoah, this stuff looks volatile!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - brave_bull - name = "Brave Bull" - id = "bravebull" - description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - tequilla_sunrise - name = "Tequila Sunrise" - id = "tequillasunrise" - description = "Tequila and orange juice. Much like a Screwdriver, only Mexican~" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - toxins_special - name = "Toxins Special" - id = "toxinsspecial" - description = "This thing is FLAMING!. CALL THE DAMN SHUTTLE!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - beepsky_smash - name = "Beepsky Smash" - id = "beepskysmash" - description = "Deny drinking this and prepare for THE LAW." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - changelingsting - name = "Changeling Sting" - id = "changelingsting" - description = "You take a tiny sip and feel a burning sensation..." - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - - irish_cream - name = "Irish Cream" - id = "irishcream" - description = "Whiskey-imbued cream, what else would you expect from the Irish." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - manly_dorf - name = "The Manly Dorf" - id = "manlydorf" - description = "Beer and Ale, brought together in a delicious mix. Intended for true men only." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - longislandicedtea - name = "Long Island Iced Tea" - id = "longislandicedtea" - description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - moonshine - name = "Moonshine" - id = "moonshine" - description = "You've really hit rock bottom now... your liver packed its bags and left last night." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - b52 - name = "B-52" - id = "b52" - description = "Coffee, Irish Cream, and congac. You will get bombed." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - irishcoffee - name = "Irish Coffee" - id = "irishcoffee" - description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - margarita - name = "Margarita" - id = "margarita" - description = "On the rocks with salt on the rim. Arriba~!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - black_russian - name = "Black Russian" - id = "blackrussian" - description = "For the lactose-intolerant. Still as classy as a White Russian." - reagent_state = LIQUID - color = "#360000" // rgb: 54, 0, 0 - - manhattan - name = "Manhattan" - id = "manhattan" - description = "The Detective's undercover drink of choice. He never could stomach gin..." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - manhattan_proj - name = "Manhattan Project" - id = "manhattan_proj" - description = "A scienitst's drink of choice, for pondering ways to blow up the station." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - whiskeysoda - name = "Whiskey Soda" - id = "whiskeysoda" - description = "Ultimate refreshment." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - antifreeze - name = "Anti-freeze" - id = "antifreeze" - description = "Ultimate refreshment." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - barefoot - name = "Barefoot" - id = "barefoot" - description = "Barefoot and pregnant" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - snowwhite - name = "Snow White" - id = "snowwhite" - description = "A cold refreshment" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - demonsblood - name = "Demons Blood" - id = "demonsblood" - description = "AHHHH!!!!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - dizzy_adj = 10 - slurr_adj = 10 - - vodkatonic - name = "Vodka and Tonic" - id = "vodkatonic" - description = "For when a gin and tonic isn't russian enough." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - dizzy_adj = 4 - slurr_adj = 3 - - ginfizz - name = "Gin Fizz" - id = "ginfizz" - description = "Refreshingly lemony, deliciously dry." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - dizzy_adj = 4 - slurr_adj = 3 - - bahama_mama - name = "Bahama mama" - id = "bahama_mama" - description = "Tropic cocktail." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - singulo - name = "Singulo" - id = "singulo" - description = "A blue-space beverage!" - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - dizzy_adj = 15 - slurr_adj = 15 - - sbiten - name = "Sbiten" - id = "sbiten" - description = "A spicy Vodka! Might be a little hot for the little guys!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - on_mob_life(var/mob/living/M as mob) - ..() - if (M.bodytemperature < 360) - M.bodytemperature = min(360, M.bodytemperature+50) //310 is the normal bodytemp. 310.055 - return - - devilskiss - name = "Devils Kiss" - id = "devilskiss" - description = "Creepy time!" - reagent_state = LIQUID - color = "#A68310" // rgb: 166, 131, 16 - - red_mead - name = "Red Mead" - id = "red_mead" - description = "The true Viking drink! Even though it has a strange red color." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - mead - name = "Mead" - id = "mead" - description = "A Vikings drink, though a cheap one." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - iced_beer - name = "Iced Beer" - id = "iced_beer" - description = "A beer which is so cold the air around it freezes." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - on_mob_life(var/mob/living/M as mob) - ..() - if (M.bodytemperature < 270) - M.bodytemperature = min(270, M.bodytemperature-40) //310 is the normal bodytemp. 310.055 - return - - grog - name = "Grog" - id = "grog" - description = "Watered down rum, Nanotrasen approves!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - aloe - name = "Aloe" - id = "aloe" - description = "So very, very, very good." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - andalusia - name = "Andalusia" - id = "andalusia" - description = "A nice, strange named drink." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - alliescocktail - name = "Allies Cocktail" - id = "alliescocktail" - description = "A drink made from your allies." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - acid_spit - name = "Acid Spit" - id = "acidspit" - description = "A drink by Nanotrasen. Made from live aliens." - reagent_state = LIQUID - color = "#365000" // rgb: 54, 80, 0 - - amasec - name = "Amasec" - id = "amasec" - description = "Official drink of the Imperium." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - - neurotoxin - name = "Neurotoxin" - id = "neurotoxin" - description = "A strong neurotoxin that puts the subject into a death-like state." - reagent_state = LIQUID - color = "#2E2E61" // rgb: 46, 46, 97 - - on_mob_life(var/mob/living/M as mob) - M.weakened = max(M.weakened, 3) - if(!data) - data = 1 - data++ - M.dizziness +=6 - if(data >= 15 && data <45) - if (!M.slurring) - M.slurring = 1 - M.slurring += 3 - else if(data >= 45 && prob(50) && data <55) - M.confused = max(M.confused+3,0) - else if(data >=55) - M.druggy = max(M.druggy, 55) - else if(data >=200) - M.adjustToxLoss(2) - ..() - return - - bananahonk - name = "Banana Mama" - id = "bananahonk" - description = "A drink from Clown Heaven." - nutriment_factor = 1 * FOOD_METABOLISM - color = "#664300" // rgb: 102, 67, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - if(istype(M, /mob/living/carbon/human) && M.job in list("Clown")) - if(!M) M = holder.my_atom - M.heal_organ_damage(1,1) - M.nutrition += nutriment_factor - ..() - return - ..() - - silencer - name = "Silencer" - id = "silencer" - description = "A drink from Mime Heaven." - nutriment_factor = 1 * FOOD_METABOLISM - color = "#664300" // rgb: 102, 67, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - if(istype(M, /mob/living/carbon/human) && M.job in list("Mime")) - if(!M) M = holder.my_atom - M.heal_organ_damage(1,1) - M.nutrition += nutriment_factor - ..() - return - ..() - - changelingsting - name = "Changeling Sting" - id = "changelingsting" - description = "A stingy drink." - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - - on_mob_life(var/mob/living/M as mob) - ..() - M.dizziness +=5 - return - - erikasurprise - name = "Erika Surprise" - id = "erikasurprise" - description = "The surprise is, it's green!" - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - - irishcarbomb - name = "Irish Car Bomb" - id = "irishcarbomb" - description = "Mmm, tastes like chocolate cake..." - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - - on_mob_life(var/mob/living/M as mob) - ..() - M.dizziness +=5 - return - - syndicatebomb - name = "Syndicate Bomb" - id = "syndicatebomb" - description = "A Syndicate bomb" - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - - erikasurprise - name = "Erika Surprise" - id = "erikasurprise" - description = "The surprise is, it's green!" - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - - driestmartini - name = "Driest Martini" - id = "driestmartini" - description = "Only for the experienced. You think you see sand floating in the glass." - nutriment_factor = 1 * FOOD_METABOLISM - color = "#2E6671" // rgb: 46, 102, 113 - - on_mob_life(var/mob/living/M as mob) - if(!data) data = 1 - data++ - M.dizziness +=10 - if(data >= 55 && data <115) - if (!M.stuttering) M.stuttering = 1 - M.stuttering += 10 - else if(data >= 115 && prob(33)) - M.confused = max(M.confused+15,15) - ..() - - return - -// Undefine the alias for REAGENTS_EFFECT_MULTIPLER -#undef REM - - -/datum/reagent/Destroy() - holder = null - return ..() diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm deleted file mode 100644 index 8fcd9e8117b..00000000000 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ /dev/null @@ -1,1576 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////// -datum - chemical_reaction - var/name = null - var/id = null - var/result = null - var/list/required_reagents = list() - var/list/required_catalysts = list() - - // Both of these variables are mostly going to be used with slime cores - but if you want to, you can use them for other things - var/atom/required_container = null // the container required for the reaction to happen - var/required_other = 0 // an integer required for the reaction to happen - - var/result_amount = 0 - var/secondary = 0 // set to nonzero if secondary reaction - var/list/secondary_results = list() //additional reagents produced by the reaction - var/min_temp = 0 //Minimum temperature required for the reaction to occur (heat to/above this). min_temp = 0 means no requirement - var/max_temp = 9999 //Maximum temperature allowed for the reaction to occur (cool to/below this). - var/mix_message = "The solution begins to bubble." - var/mix_sound = 'sound/effects/bubbles.ogg' - var/no_message = 0 - - - proc - on_reaction(var/datum/reagents/holder, var/created_volume) - return - - //I recommend you set the result amount to the total volume of all components. - - explosion_potassium - name = "Explosion" - id = "explosion_potassium" - result = null - required_reagents = list("water" = 1, "potassium" = 1) - result_amount = 2 - mix_message = "The mixture explodes!" - - on_reaction(var/datum/reagents/holder, var/created_volume) - var/datum/effect/effect/system/reagents_explosion/e = new() - e.set_up(round (created_volume/10, 1), holder.my_atom, 0, 0) - e.start() - holder.clear_reagents() - return - - emp_pulse - name = "EMP Pulse" - id = "emp_pulse" - result = null - required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense - result_amount = 2 - - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - // 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes. - // 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades. - empulse(location, round(created_volume / 24), round(created_volume / 14), 1) - holder.clear_reagents() - return -/* - silicate - name = "Silicate" - id = "silicate" - result = "silicate" - required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1) - result_amount = 3 -*/ - - ice - name = "Ice" - id = "ice" - result = "ice" - required_reagents = list("water" = 1) - result_amount = 1 - max_temp = 273 - mix_message = "Ice forms as the water freezes." - mix_sound = null - - sterilizine - name = "Sterilizine" - id = "sterilizine" - result = "sterilizine" - required_reagents = list("ethanol" = 1, "charcoal" = 1, "chlorine" = 1) - result_amount = 3 - - mutagen - name = "Unstable mutagen" - id = "mutagen" - result = "mutagen" - required_reagents = list("radium" = 1, "plasma" = 1, "chlorine" = 1) - result_amount = 3 - mix_message = "The substance turns neon green and bubbles unnervingly." - - hydrocodone - name = "Hydrocodone" - id = "hydrocodone" - result = "hydrocodone" - required_reagents = list("morphine" = 1, "sacid" = 1, "water" = 1, "oil" = 1) - result_amount = 2 - - thermite - name = "Thermite" - id = "thermite" - result = "thermite" - required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1) - result_amount = 3 - - space_drugs - name = "Space Drugs" - id = "space_drugs" - result = "space_drugs" - required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1) - result_amount = 3 - mix_message = "Slightly dizzying fumes drift from the solution." - - lube - name = "Space Lube" - id = "lube" - result = "lube" - required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1) - result_amount = 3 - mix_message = "The substance turns a striking cyan and becomes oily." - - mitocholide - name = "mitocholide" - id = "mitocholide" - result = "mitocholide" - required_reagents = list("synthflesh" = 1, "cryoxadone" = 1, "plasma" = 1) - result_amount = 3 - - holy_water - name = "Holy Water" - id = "holywater" - result = "holywater" - required_reagents = list("water" = 1, "mercury" = 1, "wine" = 1) - result_amount = 3 - mix_message = "The water somehow seems purified. Or maybe defiled." - - cryoxadone - name = "Cryoxadone" - id = "cryoxadone" - result = "cryoxadone" - required_reagents = list("cryostylane" = 1, "plasma" = 1, "acetone" = 1, "mutagen" = 1) - result_amount = 4 - mix_message = "The solution bubbles softly." - - spaceacillin - name = "Spaceacillin" - id = "spaceacillin" - result = "spaceacillin" - required_reagents = list("fungus" = 1, "ethanol" = 1) - result_amount = 2 - mix_message = "The solvent extracts an antibiotic compound from the fungus." - - Audioline - name = "Audioline" - id = "audioline" - result = "audioline" - required_reagents = list("spaceacillin" = 1, "salglu_solution" = 1, "epinephrine" = 1) - result_amount = 3 - - glycerol - name = "Glycerol" - id = "glycerol" - result = "glycerol" - required_reagents = list("cornoil" = 3, "sacid" = 1) - result_amount = 1 - - nitroglycerin - name = "Nitroglycerin" - id = "nitroglycerin" - result = "nitroglycerin" - required_reagents = list("glycerol" = 1, "facid" = 1, "sacid" = 1) - result_amount = 2 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/datum/effect/effect/system/reagents_explosion/e = new() - e.set_up(round (created_volume/2, 1), holder.my_atom, 0, 0) - e.start() - - holder.clear_reagents() - return - - sodiumchloride - name = "Sodium Chloride" - id = "sodiumchloride" - result = "sodiumchloride" - required_reagents = list("sodium" = 1, "chlorine" = 1, "water" = 1) - result_amount = 3 - mix_message = "The solution crystallizes with a brief flare of light." - - rezadone - name = "Rezadone" - id = "rezadone" - result = "rezadone" - required_reagents = list("carpotoxin" = 1, "spaceacillin" = 1, "copper" = 1) - result_amount = 3 - - lsd - name = "Lysergic acid diethylamide" - id = "lsd" - result = "lsd" - required_reagents = list("diethylamine" = 1, "fungus" = 1) - result_amount = 3 - mix_message = "The mixture turns a rather unassuming color and settles." - - plastication - name = "Plastic" - id = "solidplastic" - result = null - required_reagents = list("facid" = 10, "plasticide" = 20) - result_amount = 1 - on_reaction(var/datum/reagents/holder) - var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/mineral/plastic - M.amount = 10 - M.loc = get_turf(holder.my_atom) - return - - virus_food - name = "Virus Food" - id = "virusfood" - result = "virusfood" - required_reagents = list("water" = 1, "milk" = 1, "oxygen" = 1) - result_amount = 3 -/* - mix_virus - name = "Mix Virus" - id = "mixvirus" - result = "blood" - required_reagents = list("virusfood" = 5) - required_catalysts = list("blood") - var/level = 2 - - on_reaction(var/datum/reagents/holder, var/created_volume) - - var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list - if(B && B.data) - var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] - if(D) - D.Evolve(level - rand(0, 1)) - - - mix_virus_2 - - name = "Mix Virus 2" - id = "mixvirus2" - required_reagents = list("mutagen" = 5) - level = 4 - - rem_virus - - name = "Devolve Virus" - id = "remvirus" - required_reagents = list("synaptizine" = 5) - - on_reaction(var/datum/reagents/holder, var/created_volume) - - var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list - if(B && B.data) - var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] - if(D) - D.Devolve() -*/ - condensedcapsaicin - name = "Condensed Capsaicin" - id = "condensedcapsaicin" - result = "condensedcapsaicin" - required_reagents = list("capsaicin" = 2) - required_catalysts = list("plasma" = 5) - result_amount = 1 -/////////////////////////////////////////////////////////////////////////////////// - -// foam and foam precursor - - surfactant - name = "Foam surfactant" - id = "foam surfactant" - result = "fluorosurfactant" - required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1) - result_amount = 5 - mix_message = "A head of foam results from the mixture's constant fizzing." - - - foam - name = "Foam" - id = "foam" - result = null - required_reagents = list("fluorosurfactant" = 1, "water" = 1) - result_amount = 2 - - on_reaction(var/datum/reagents/holder, var/created_volume) - - - var/location = get_turf(holder.my_atom) - for(var/mob/M in viewers(5, location)) - M << "\red The solution violently bubbles!" - - location = get_turf(holder.my_atom) - - for(var/mob/M in viewers(5, location)) - M << "\red The solution spews out foam!" - - //world << "Holder volume is [holder.total_volume]" - //for(var/datum/reagent/R in holder.reagent_list) - // world << "[R.name] = [R.volume]" - - var/datum/effect/effect/system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 0) - s.start() - holder.clear_reagents() - return - - metalfoam - name = "Metal Foam" - id = "metalfoam" - result = null - required_reagents = list("aluminum" = 3, "fluorosurfactant" = 1, "sacid" = 1) - result_amount = 5 - - on_reaction(var/datum/reagents/holder, var/created_volume) - - - var/location = get_turf(holder.my_atom) - - for(var/mob/M in viewers(5, location)) - M << "\red The solution spews out a metalic foam!" - - var/datum/effect/effect/system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 1) - s.start() - return - - ironfoam - name = "Iron Foam" - id = "ironlfoam" - result = null - required_reagents = list("iron" = 3, "fluorosurfactant" = 1, "sacid" = 1) - result_amount = 5 - - on_reaction(var/datum/reagents/holder, var/created_volume) - - - var/location = get_turf(holder.my_atom) - - for(var/mob/M in viewers(5, location)) - M << "\red The solution spews out a metalic foam!" - - var/datum/effect/effect/system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 2) - s.start() - return - - // Synthesizing these three chemicals is pretty complex in real life, but fuck it, it's just a game! - ammonia - name = "Ammonia" - id = "ammonia" - result = "ammonia" - required_reagents = list("hydrogen" = 3, "nitrogen" = 1) - result_amount = 3 - mix_message = "The mixture bubbles, emitting an acrid reek." - - diethylamine - name = "Diethylamine" - id = "diethylamine" - result = "diethylamine" - required_reagents = list ("ammonia" = 1, "ethanol" = 1) - result_amount = 2 - min_temp = 374 - mix_message = "A horrible smell pours forth from the mixture." - - space_cleaner - name = "Space cleaner" - id = "cleaner" - result = "cleaner" - required_reagents = list("ammonia" = 1, "water" = 1, "ethanol" = 1) - result_amount = 3 - mix_message = "Ick, this stuff really stinks. Sure does make the container sparkle though!" - - sulfuric_acid - name = "Sulfuric Acid" - id = "sacid" - result = "sacid" - required_reagents = list("sulfur" = 1, "oxygen" = 1, "hydrogen" = 1) - result_amount = 2 - mix_message = "The mixture gives off a sharp acidic tang." - -///////Changeling Blood Test///////////// -/* - changeling_test - name = "Changeling blood test" - id = "changelingblood" - result = "blood" - required_reagents = list("blood" = 5) - required_catalysts = list("fuel") - result_amount = 1 //Needs this in order to check the donor, as the data var in the reacted blood gets transferred. - on_reaction(var/datum/reagents/holder, var/created_volume) - if(!holder.reagent_list) //reagent_list is not null - return - var/datum/reagent/blood/B = locate() in holder.reagent_list - if(!B) //B is not null - return - var/mob/living/carbon/human/H = B.data["donor"] - if(!H) //H is not null. - return - if(H.mind && H.mind.changeling) //Checks if H, the blood donor is a ling. - for(var/mob/M in viewers(get_turf(holder.my_atom), null)) - M.show_message( "The blood writhes and wriggles and sizzles away from the container!", 1, "You hear bubbling and sizzling.", 2) - else - for(var/mob/M in viewers(get_turf(holder.my_atom), null)) - M.show_message( "The blood seems to break apart in the fuel.", 1) - holder.del_reagent("blood") - return -*/ - -/////////////////////////////////////////////NEW SLIME CORE REACTIONS///////////////////////////////////////////// - -//Grey - slimespawn - name = "Slime Spawn" - id = "m_spawn" - result = null - required_reagents = list("plasma" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/grey - required_other = 1 - on_reaction(var/datum/reagents/holder) - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("\red Infused with plasma, the core begins to quiver and grow, and soon a new baby slime emerges from it!"), 1) - var/mob/living/carbon/slime/S = new /mob/living/carbon/slime - S.loc = get_turf(holder.my_atom) - - - slimeinaprov - name = "Slime Epinephrine" - id = "m_epinephrine" - result = "epinephrine" - required_reagents = list("water" = 5) - result_amount = 3 - required_other = 1 - required_container = /obj/item/slime_extract/grey - on_reaction(var/datum/reagents/holder) - feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") - - - slimemonkey - name = "Slime Monkey" - id = "m_monkey" - result = null - required_reagents = list("blood" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/grey - required_other = 1 - on_reaction(var/datum/reagents/holder) - for(var/i = 1, i <= 3, i++) - var /obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = new /obj/item/weapon/reagent_containers/food/snacks/monkeycube - M.loc = get_turf(holder.my_atom) - -//Green - slimemutate - name = "Mutation Toxin" - id = "mutationtoxin" - result = "mutationtoxin" - required_reagents = list("plasma" = 5) - result_amount = 1 - required_other = 1 - required_container = /obj/item/slime_extract/green - -//Metal - slimemetal - name = "Slime Metal" - id = "m_metal" - result = null - required_reagents = list("plasma" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/metal - required_other = 1 - on_reaction(var/datum/reagents/holder) - var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal - M.amount = 15 - M.loc = get_turf(holder.my_atom) - var/obj/item/stack/sheet/plasteel/P = new /obj/item/stack/sheet/plasteel - P.amount = 5 - P.loc = get_turf(holder.my_atom) - -//Gold - slimecrit - name = "Slime Crit" - id = "m_tele" - result = null - required_reagents = list("plasma" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/gold - required_other = 1 - on_reaction(var/datum/reagents/holder) - - var/blocked = blocked_mobs //global variable of blocked mobs - - var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs - - playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) - - for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) - if(M:eyecheck() <= 0) - flick("e_flash", M.flash) - - for(var/i = 1, i <= 5, i++) - var/chosen = pick(critters) - var/mob/living/simple_animal/hostile/C = new chosen - C.faction |= "slimesummon" - C.loc = get_turf(holder.my_atom) - if(prob(50)) - for(var/j = 1, j <= rand(1, 3), j++) - step(C, pick(NORTH,SOUTH,EAST,WEST)) -// for(var/mob/O in viewers(get_turf(holder.my_atom), null)) -// O.show_message(text("\red The slime core fizzles disappointingly,"), 1) - - - slimecritlesser - name = "Slime Crit Lesser" - id = "m_tele3" - result = null - required_reagents = list("blood" = 1) - result_amount = 1 - required_container = /obj/item/slime_extract/gold - required_other = 1 - on_reaction(var/datum/reagents/holder) - feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("The slime extract begins to vibrate violently!"), 1) - spawn(50) - - if(holder && holder.my_atom) - - var/blocked = blocked_mobs - - var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs - - playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) - - for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) - if(M:eyecheck() <= 0) - flick("e_flash", M.flash) - - var/chosen = pick(critters) - var/mob/living/simple_animal/hostile/C = new chosen - C.faction |= "neutral" - C.loc = get_turf(holder.my_atom) - -//Silver - slimebork - name = "Slime Bork" - id = "m_tele2" - result = null - required_reagents = list("plasma" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/silver - required_other = 1 - on_reaction(var/datum/reagents/holder) - - var/list/borks = subtypesof(/obj/item/weapon/reagent_containers/food/snacks) - // BORK BORK BORK - - playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) - - for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) - if(M:eyecheck() <= 0) - flick("e_flash", M.flash) - - for(var/i = 1, i <= 4 + rand(1,2), i++) - var/chosen = pick(borks) - var/obj/B = new chosen - if(B) - B.loc = get_turf(holder.my_atom) - if(prob(50)) - for(var/j = 1, j <= rand(1, 3), j++) - step(B, pick(NORTH,SOUTH,EAST,WEST)) - slimedrinks - name = "Slime Drinks" - id = "m_tele3" - result = null - required_reagents = list("water" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/silver - required_other = 1 - on_reaction(var/datum/reagents/holder) - - var/list/borks = subtypesof(/obj/item/weapon/reagent_containers/food/drinks) - // BORK BORK BORK - - playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) - - for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) - if(M:eyecheck() <= 0) - flick("e_flash", M.flash) - - for(var/i = 1, i <= 4 + rand(1,2), i++) - var/chosen = pick(borks) - var/obj/B = new chosen - if(B) - B.loc = get_turf(holder.my_atom) - if(prob(50)) - for(var/j = 1, j <= rand(1, 3), j++) - step(B, pick(NORTH,SOUTH,EAST,WEST)) - - -//Blue - slimefrost - name = "Slime Frost Oil" - id = "m_frostoil" - result = "frostoil" - required_reagents = list("plasma" = 5) - result_amount = 10 - required_container = /obj/item/slime_extract/blue - required_other = 1 -//Dark Blue - slimefreeze - name = "Slime Freeze" - id = "m_freeze" - result = null - required_reagents = list("plasma" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/darkblue - required_other = 1 - on_reaction(var/datum/reagents/holder) - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) - sleep(50) - playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) - for(var/mob/living/M in range (get_turf(holder.my_atom), 7)) - M.bodytemperature -= 140 - M << "\blue You feel a chill!" - -//Orange - slimecasp - name = "Slime Capsaicin Oil" - id = "m_capsaicinoil" - result = "capsaicin" - required_reagents = list("blood" = 5) - result_amount = 10 - required_container = /obj/item/slime_extract/orange - required_other = 1 - - slimefire - name = "Slime fire" - id = "m_fire" - result = null - required_reagents = list("plasma" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/orange - required_other = 1 - on_reaction(var/datum/reagents/holder) - feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) - sleep(50) - var/turf/simulated/T = get_turf(holder.my_atom) - if(istype(T)) - T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 50) - -//Yellow - slimeoverload - name = "Slime EMP" - id = "m_emp" - result = null - required_reagents = list("blood" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/yellow - required_other = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - empulse(get_turf(holder.my_atom), 3, 7) - - - slimecell - name = "Slime Powercell" - id = "m_cell" - result = null - required_reagents = list("plasma" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/yellow - required_other = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/obj/item/weapon/stock_parts/cell/slime/P = new /obj/item/weapon/stock_parts/cell/slime - P.loc = get_turf(holder.my_atom) - - slimeglow - name = "Slime Glow" - id = "m_glow" - result = null - required_reagents = list("water" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/yellow - required_other = 1 - on_reaction(var/datum/reagents/holder) - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("\red The contents of the slime core harden and begin to emit a warm, bright light."), 1) - var/obj/item/device/flashlight/slime/F = new /obj/item/device/flashlight/slime - F.loc = get_turf(holder.my_atom) - -//Purple - - slimepsteroid - name = "Slime Steroid" - id = "m_steroid" - result = null - required_reagents = list("plasma" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/purple - required_other = 1 - on_reaction(var/datum/reagents/holder) - var/obj/item/weapon/slimesteroid/P = new /obj/item/weapon/slimesteroid - P.loc = get_turf(holder.my_atom) - - - - slimejam - name = "Slime Jam" - id = "m_jam" - result = "slimejelly" - required_reagents = list("sugar" = 5) - result_amount = 10 - required_container = /obj/item/slime_extract/purple - required_other = 1 - - -//Dark Purple - slimeplasma - name = "Slime Plasma" - id = "m_plasma" - result = null - required_reagents = list("plasma" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/darkpurple - required_other = 1 - on_reaction(var/datum/reagents/holder) - var/obj/item/stack/sheet/mineral/plasma/P = new /obj/item/stack/sheet/mineral/plasma - P.amount = 10 - P.loc = get_turf(holder.my_atom) - -//Red - slimeglycerol - name = "Slime Glycerol" - id = "m_glycerol" - result = "glycerol" - required_reagents = list("plasma" = 5) - result_amount = 8 - required_container = /obj/item/slime_extract/red - required_other = 1 - - - slimebloodlust - name = "Bloodlust" - id = "m_bloodlust" - result = null - required_reagents = list("blood" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/red - required_other = 1 - on_reaction(var/datum/reagents/holder) - for(var/mob/living/carbon/slime/slime in viewers(get_turf(holder.my_atom), null)) - slime.rabid = 1 - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("\red The [slime] is driven into a frenzy!."), 1) - -//Pink - slimeppotion - name = "Slime Potion" - id = "m_potion" - result = null - required_reagents = list("plasma" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/pink - required_other = 1 - on_reaction(var/datum/reagents/holder) - var/obj/item/weapon/slimepotion/P = new /obj/item/weapon/slimepotion - P.loc = get_turf(holder.my_atom) - - -//Black - slimemutate2 - name = "Advanced Mutation Toxin" - id = "mutationtoxin2" - result = "amutationtoxin" - required_reagents = list("plasma" = 5) - result_amount = 1 - required_other = 1 - required_container = /obj/item/slime_extract/black - -//Oil - slimeexplosion - name = "Slime Explosion" - id = "m_explosion" - result = null - required_reagents = list("plasma" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/oil - required_other = 1 - on_reaction(var/datum/reagents/holder) - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) - sleep(50) - explosion(get_turf(holder.my_atom), 1 ,3, 6) -//Light Pink - slimepotion2 - name = "Slime Potion 2" - id = "m_potion2" - result = null - result_amount = 1 - required_container = /obj/item/slime_extract/lightpink - required_reagents = list("plasma" = 5) - required_other = 1 - on_reaction(var/datum/reagents/holder) - var/obj/item/weapon/slimepotion2/P = new /obj/item/weapon/slimepotion2 - P.loc = get_turf(holder.my_atom) -//Adamantine - slimegolem - name = "Slime Golem" - id = "m_golem" - result = null - required_reagents = list("plasma" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/adamantine - required_other = 1 - on_reaction(var/datum/reagents/holder) - feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") - var/obj/effect/goleRUNe/Z = new /obj/effect/goleRUNe - Z.loc = get_turf(holder.my_atom) - Z.announce_to_ghosts() -//Bluespace - slimecrystal - name = "Slime Crystal" - id = "m_crystal" - result = null - required_reagents = list("blood" = 1) - result_amount = 1 - required_container = /obj/item/slime_extract/bluespace - required_other = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") - if(holder.my_atom) - var/obj/item/bluespace_crystal/BC = new(get_turf(holder.my_atom)) - BC.visible_message("The [BC.name] appears out of thin air!") -//Cerulean - slimepsteroid2 - name = "Slime Steroid 2" - id = "m_steroid2" - result = null - required_reagents = list("plasma" = 1) - result_amount = 1 - required_container = /obj/item/slime_extract/cerulean - required_other = 1 - on_reaction(var/datum/reagents/holder) - feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") - var/obj/item/weapon/slimesteroid2/P = new /obj/item/weapon/slimesteroid2 - P.loc = get_turf(holder.my_atom) -//Sepia - slimecamera - name = "Slime Camera" - id = "m_camera" - result = null - required_reagents = list("plasma" = 1) - result_amount = 1 - required_container = /obj/item/slime_extract/sepia - required_other = 1 - on_reaction(var/datum/reagents/holder) - feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") - var/obj/item/device/camera/P = new /obj/item/device/camera - P.loc = get_turf(holder.my_atom) - - - slimefilm - name = "Slime Film" - id = "m_film" - result = null - required_reagents = list("blood" = 1) - result_amount = 1 - required_container = /obj/item/slime_extract/sepia - required_other = 1 - on_reaction(var/datum/reagents/holder) - feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") - var/obj/item/device/camera_film/P = new /obj/item/device/camera_film - P.loc = get_turf(holder.my_atom) -//Pyrite - slimepaint - name = "Slime Paint" - id = "s_paint" - result = null - required_reagents = list("plasma" = 1) - result_amount = 1 - required_container = /obj/item/slime_extract/pyrite - required_other = 1 - on_reaction(var/datum/reagents/holder) - feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") - var/list/paints = subtypesof(/obj/item/weapon/reagent_containers/glass/paint) - var/chosen = pick(paints) - var/obj/P = new chosen - if(P) - P.loc = get_turf(holder.my_atom) - - -//////////////////////////////////////////FOOD MIXTURES//////////////////////////////////// - - tofu - name = "Tofu" - id = "tofu" - result = null - required_reagents = list("soymilk" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/tofu(location) - return - - chocolate_bar - name = "Chocolate Bar" - id = "chocolate_bar" - result = null - required_reagents = list("soymilk" = 2, "coco" = 2, "sugar" = 2) - result_amount = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) - return - - chocolate_bar2 - name = "Chocolate Bar" - id = "chocolate_bar" - result = null - required_reagents = list("milk" = 2, "coco" = 2, "sugar" = 2) - result_amount = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) - return - - hot_coco - name = "Hot Coco" - id = "hot_coco" - result = "hot_coco" - required_reagents = list("water" = 5, "coco" = 1) - result_amount = 5 - - chocolate_milk - name = "Chocolate Milk" - id = "chocolate_milk" - result = "chocolate_milk" - required_reagents = list("chocolate" = 1, "milk" = 1) - result_amount = 2 - mix_message = "The mixture turns a nice brown color." - - coffee - name = "Coffee" - id = "coffee" - result = "coffee" - required_reagents = list("coffeepowder" = 1, "water" = 5) - result_amount = 5 - - tea - name = "Tea" - id = "tea" - result = "tea" - required_reagents = list("teapowder" = 1, "water" = 5) - result_amount = 5 - - soysauce - name = "Soy Sauce" - id = "soysauce" - result = "soysauce" - required_reagents = list("soymilk" = 2, "flour" = 1, "sodiumchloride" = 1, "water" = 3) - result_amount = 7 - - cheesewheel - name = "Cheesewheel" - id = "cheesewheel" - result = null - required_reagents = list("milk" = 40) - required_catalysts = list("enzyme" = 5) - result_amount = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location) - return - - syntiflesh - name = "Syntiflesh" - id = "syntiflesh" - result = null - required_reagents = list("blood" = 5, "cryoxadone" = 1) - result_amount = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location) - return - - hot_ramen - name = "Hot Ramen" - id = "hot_ramen" - result = "hot_ramen" - required_reagents = list("water" = 1, "dry_ramen" = 3) - result_amount = 3 - - hell_ramen - name = "Hell Ramen" - id = "hell_ramen" - result = "hell_ramen" - required_reagents = list("capsaicin" = 1, "hot_ramen" = 6) - result_amount = 6 - - doughball - name = "Ball of dough" - id = "dough_ball" - result = "dough_ball" - required_reagents = list("flour" = 15, "water" = 5) - required_catalysts = list("enzyme" = 5) - - -////////////////////////////////////////// COCKTAILS ////////////////////////////////////// - - - goldschlager - name = "Goldschlager" - id = "goldschlager" - result = "goldschlager" - required_reagents = list("vodka" = 10, "gold" = 1) - result_amount = 10 - - patron - name = "Patron" - id = "patron" - result = "patron" - required_reagents = list("tequilla" = 10, "silver" = 1) - result_amount = 10 - - bilk - name = "Bilk" - id = "bilk" - result = "bilk" - required_reagents = list("milk" = 1, "beer" = 1) - result_amount = 2 - - icetea - name = "Iced Tea" - id = "icetea" - result = "icetea" - required_reagents = list("ice" = 1, "tea" = 3) - result_amount = 4 - - icecoffee - name = "Iced Coffee" - id = "icecoffee" - result = "icecoffee" - required_reagents = list("ice" = 1, "coffee" = 3) - result_amount = 4 - - nuka_cola - name = "Nuka Cola" - id = "nuka_cola" - result = "nuka_cola" - required_reagents = list("uranium" = 1, "cola" = 6) - result_amount = 6 - - moonshine - name = "Moonshine" - id = "moonshine" - result = "moonshine" - required_reagents = list("nutriment" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 10 - - wine - name = "Wine" - id = "wine" - result = "wine" - required_reagents = list("berryjuice" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 10 - - spacebeer - name = "Space Beer" - id = "spacebeer" - result = "beer" - required_reagents = list("cornoil" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 10 - - vodka - name = "Vodka" - id = "vodka" - result = "vodka" - required_reagents = list("potato" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 10 - sake - name = "Sake" - id = "sake" - result = "sake" - required_reagents = list("rice" = 10,"water" = 5) - required_catalysts = list("enzyme" = 5) - result_amount = 15 - - kahlua - name = "Kahlua" - id = "kahlua" - result = "kahlua" - required_reagents = list("coffee" = 5, "sugar" = 5, "rum" = 5) - required_catalysts = list("enzyme" = 5) - result_amount = 5 - - kahluaVodka - name = "KahluaVodka" - id = "kahlauVodka" - result = "kahlua" - required_reagents = list("coffee" = 5, "sugar" = 5, "vodka" = 5) - required_catalysts = list("enzyme" = 5) - result_amount = 5 - gin_tonic - name = "Gin and Tonic" - id = "gintonic" - result = "gintonic" - required_reagents = list("gin" = 2, "tonic" = 1) - result_amount = 3 - mix_message = "The tonic water and gin mix together perfectly." - - cuba_libre - name = "Cuba Libre" - id = "cubalibre" - result = "cubalibre" - required_reagents = list("rum" = 2, "cola" = 1) - result_amount = 3 - - mojito - name = "Mojito" - id = "mojito" - result = "mojito" - required_reagents = list("rum" = 1, "sugar" = 1, "limejuice" = 1, "sodawater" = 1) - result_amount = 4 - - martini - name = "Classic Martini" - id = "martini" - result = "martini" - required_reagents = list("gin" = 2, "vermouth" = 1) - result_amount = 3 - - vodkamartini - name = "Vodka Martini" - id = "vodkamartini" - result = "vodkamartini" - required_reagents = list("vodka" = 2, "vermouth" = 1) - result_amount = 3 - - white_russian - name = "White Russian" - id = "whiterussian" - result = "whiterussian" - required_reagents = list("blackrussian" = 3, "cream" = 2) - result_amount = 5 - - whiskey_cola - name = "Whiskey Cola" - id = "whiskeycola" - result = "whiskeycola" - required_reagents = list("whiskey" = 2, "cola" = 1) - result_amount = 3 - - screwdriver - name = "Screwdriver" - id = "screwdrivercocktail" - result = "screwdrivercocktail" - required_reagents = list("vodka" = 2, "orangejuice" = 1) - result_amount = 3 - - bloody_mary - name = "Bloody Mary" - id = "bloodymary" - result = "bloodymary" - required_reagents = list("vodka" = 1, "tomatojuice" = 2, "limejuice" = 1) - result_amount = 4 - - gargle_blaster - name = "Pan-Galactic Gargle Blaster" - id = "gargleblaster" - result = "gargleblaster" - required_reagents = list("vodka" = 1, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1) - result_amount = 5 - - brave_bull - name = "Brave Bull" - id = "bravebull" - result = "bravebull" - required_reagents = list("tequilla" = 2, "kahlua" = 1) - result_amount = 3 - - tequilla_sunrise - name = "Tequilla Sunrise" - id = "tequillasunrise" - result = "tequillasunrise" - required_reagents = list("tequilla" = 2, "orangejuice" = 1) - result_amount = 3 - - toxins_special - name = "Toxins Special" - id = "toxinsspecial" - result = "toxinsspecial" - required_reagents = list("rum" = 2, "vermouth" = 1, "plasma" = 2) - result_amount = 5 - - beepsky_smash - name = "Beepksy Smash" - id = "beepksysmash" - result = "beepskysmash" - required_reagents = list("limejuice" = 2, "whiskey" = 2, "iron" = 1) - result_amount = 4 - - doctor_delight - name = "The Doctor's Delight" - id = "doctordelight" - result = "doctorsdelight" - required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 1) - result_amount = 5 - - irish_cream - name = "Irish Cream" - id = "irishcream" - result = "irishcream" - required_reagents = list("whiskey" = 2, "cream" = 1) - result_amount = 3 - - manly_dorf - name = "The Manly Dorf" - id = "manlydorf" - result = "manlydorf" - required_reagents = list ("beer" = 1, "ale" = 2) - result_amount = 3 - - suicider - name = "Suicider" - id = "suicider" - result = "suicider" - required_reagents = list ("vodka" = 1, "cider" = 1, "fuel" = 1, "epinephrine" = 1) - result_amount = 4 - mix_message = "The drinks and chemicals mix together, emitting a potent smell." - - irish_coffee - name = "Irish Coffee" - id = "irishcoffee" - result = "irishcoffee" - required_reagents = list("irishcream" = 1, "coffee" = 1) - result_amount = 2 - - b52 - name = "B-52" - id = "b52" - result = "b52" - required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1) - result_amount = 3 - - atomicbomb - name = "Atomic Bomb" - id = "atomicbomb" - result = "atomicbomb" - required_reagents = list("b52" = 10, "uranium" = 1) - result_amount = 10 - - margarita - name = "Margarita" - id = "margarita" - result = "margarita" - required_reagents = list("tequilla" = 2, "limejuice" = 1) - result_amount = 3 - - longislandicedtea - name = "Long Island Iced Tea" - id = "longislandicedtea" - result = "longislandicedtea" - required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 1) - result_amount = 4 - - threemileisland - name = "Three Mile Island Iced Tea" - id = "threemileisland" - result = "threemileisland" - required_reagents = list("longislandicedtea" = 10, "uranium" = 1) - result_amount = 10 - - whiskeysoda - name = "Whiskey Soda" - id = "whiskeysoda" - result = "whiskeysoda" - required_reagents = list("whiskey" = 2, "sodawater" = 1) - result_amount = 3 - - black_russian - name = "Black Russian" - id = "blackrussian" - result = "blackrussian" - required_reagents = list("vodka" = 3, "kahlua" = 2) - result_amount = 5 - - manhattan - name = "Manhattan" - id = "manhattan" - result = "manhattan" - required_reagents = list("whiskey" = 2, "vermouth" = 1) - result_amount = 3 - - manhattan_proj - name = "Manhattan Project" - id = "manhattan_proj" - result = "manhattan_proj" - required_reagents = list("manhattan" = 10, "uranium" = 1) - result_amount = 10 - - vodka_tonic - name = "Vodka and Tonic" - id = "vodkatonic" - result = "vodkatonic" - required_reagents = list("vodka" = 2, "tonic" = 1) - result_amount = 3 - - gin_fizz - name = "Gin Fizz" - id = "ginfizz" - result = "ginfizz" - required_reagents = list("gin" = 2, "sodawater" = 1, "limejuice" = 1) - result_amount = 4 - - bahama_mama - name = "Bahama mama" - id = "bahama_mama" - result = "bahama_mama" - required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1) - result_amount = 6 - - singulo - name = "Singulo" - id = "singulo" - result = "singulo" - required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5) - result_amount = 10 - - alliescocktail - name = "Allies Cocktail" - id = "alliescocktail" - result = "alliescocktail" - required_reagents = list("martini" = 1, "vodka" = 1) - result_amount = 2 - - demonsblood - name = "Demons Blood" - id = "demonsblood" - result = "demonsblood" - required_reagents = list("rum" = 1, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1) - result_amount = 4 - - booger - name = "Booger" - id = "booger" - result = "booger" - required_reagents = list("cream" = 1, "banana" = 1, "rum" = 1, "watermelonjuice" = 1) - result_amount = 4 - - antifreeze - name = "Anti-freeze" - id = "antifreeze" - result = "antifreeze" - required_reagents = list("vodka" = 2, "cream" = 1, "ice" = 1) - result_amount = 4 - - barefoot - name = "Barefoot" - id = "barefoot" - result = "barefoot" - required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1) - result_amount = 3 - - -////DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri///// - - sbiten - name = "Sbiten" - id = "sbiten" - result = "sbiten" - required_reagents = list("vodka" = 10, "capsaicin" = 1) - result_amount = 10 - - red_mead - name = "Red Mead" - id = "red_mead" - result = "red_mead" - required_reagents = list("blood" = 1, "mead" = 1) - result_amount = 2 - - mead - name = "Mead" - id = "mead" - result = "mead" - required_reagents = list("sugar" = 1, "water" = 1) - required_catalysts = list("enzyme" = 5) - result_amount = 2 - - iced_beer - name = "Iced Beer" - id = "iced_beer" - result = "iced_beer" - required_reagents = list("beer" = 10, "frostoil" = 1) - result_amount = 10 - - iced_beer2 - name = "Iced Beer" - id = "iced_beer" - result = "iced_beer" - required_reagents = list("beer" = 5, "ice" = 1) - result_amount = 6 - - grog - name = "Grog" - id = "grog" - result = "grog" - required_reagents = list("rum" = 1, "water" = 1) - result_amount = 2 - - soy_latte - name = "Soy Latte" - id = "soy_latte" - result = "soy_latte" - required_reagents = list("coffee" = 1, "soymilk" = 1) - result_amount = 2 - - cafe_latte - name = "Cafe Latte" - id = "cafe_latte" - result = "cafe_latte" - required_reagents = list("coffee" = 1, "milk" = 1) - result_amount = 2 - - acidspit - name = "Acid Spit" - id = "acidspit" - result = "acidspit" - required_reagents = list("sacid" = 1, "wine" = 5) - result_amount = 6 - - amasec - name = "Amasec" - id = "amasec" - result = "amasec" - required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5) - result_amount = 10 - - changelingsting - name = "Changeling Sting" - id = "changelingsting" - result = "changelingsting" - required_reagents = list("screwdrivercocktail" = 1, "limejuice" = 1, "lemonjuice" = 1) - result_amount = 5 - - aloe - name = "Aloe" - id = "aloe" - result = "aloe" - required_reagents = list("cream" = 1, "whiskey" = 1, "watermelonjuice" = 1) - result_amount = 2 - - andalusia - name = "Andalusia" - id = "andalusia" - result = "andalusia" - required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1) - result_amount = 3 - - neurotoxin - name = "Neurotoxin" - id = "neurotoxin" - result = "neurotoxin" - required_reagents = list("gargleblaster" = 1, "ether" = 1) - result_amount = 2 - - snowwhite - name = "Snow White" - id = "snowwhite" - result = "snowwhite" - required_reagents = list("beer" = 1, "lemon_lime" = 1) - result_amount = 2 - - irishcarbomb - name = "Irish Car Bomb" - id = "irishcarbomb" - result = "irishcarbomb" - required_reagents = list("ale" = 1, "irishcream" = 1) - result_amount = 2 - - syndicatebomb - name = "Syndicate Bomb" - id = "syndicatebomb" - result = "syndicatebomb" - required_reagents = list("beer" = 1, "whiskeycola" = 1) - result_amount = 2 - - erikasurprise - name = "Erika Surprise" - id = "erikasurprise" - result = "erikasurprise" - required_reagents = list("ale" = 1, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1) - result_amount = 5 - - devilskiss - name = "Devils Kiss" - id = "devilskiss" - result = "devilskiss" - required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1) - result_amount = 3 - - hippiesdelight - name = "Hippies Delight" - id = "hippiesdelight" - result = "hippiesdelight" - required_reagents = list("psilocybin" = 1, "gargleblaster" = 1) - result_amount = 2 - - bananahonk - name = "Banana Honk" - id = "bananahonk" - result = "bananahonk" - required_reagents = list("banana" = 1, "cream" = 1, "sugar" = 1) - result_amount = 3 - - silencer - name = "Silencer" - id = "silencer" - result = "silencer" - required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1) - result_amount = 3 - - driestmartini - name = "Driest Martini" - id = "driestmartini" - result = "driestmartini" - required_reagents = list("nothing" = 1, "gin" = 1) - result_amount = 2 - - lemonade - name = "Lemonade" - id = "lemonade" - result = "lemonade" - required_reagents = list("lemonjuice" = 1, "sugar" = 1, "water" = 1) - result_amount = 3 - - kiraspecial - name = "Kira Special" - id = "kiraspecial" - result = "kiraspecial" - required_reagents = list("orangejuice" = 1, "limejuice" = 1, "sodawater" = 1) - result_amount = 2 - - brownstar - name = "Brown Star" - id = "brownstar" - result = "brownstar" - required_reagents = list("orangejuice" = 2, "cola" = 1) - result_amount = 2 - - milkshake - name = "Milkshake" - id = "milkshake" - result = "milkshake" - required_reagents = list("cream" = 1, "ice" = 2, "milk" = 2) - result_amount = 5 - - rewriter - name = "Rewriter" - id = "rewriter" - result = "rewriter" - required_reagents = list("spacemountainwind" = 1, "coffee" = 1) - result_amount = 2 diff --git a/code/modules/reagents/grenade_launcher.dm b/code/modules/reagents/grenade_launcher.dm index e7e1e0e2a7e..48c467fed02 100644 --- a/code/modules/reagents/grenade_launcher.dm +++ b/code/modules/reagents/grenade_launcher.dm @@ -15,59 +15,59 @@ var/ammo_type = /obj/item/weapon/grenade var/unloaded - m_amt = 2000 + materials = list(MAT_METAL=2000) - examine() - set src in view() - ..() - if (!(usr in view(2)) && usr!=src.loc) return - usr << "\icon [name]:" - usr << "\blue [grenades.len] / [max_grenades] [ammo_name]s." +/obj/item/weapon/gun/grenadelauncher/examine() + set src in view() + ..() + if (!(usr in view(2)) && usr!=src.loc) return + usr << "\icon [name]:" + usr << "\blue [grenades.len] / [max_grenades] [ammo_name]s." - attackby(obj/item/I as obj, mob/user as mob, params) +/obj/item/weapon/gun/grenadelauncher/attackby(obj/item/I as obj, mob/user as mob, params) - if((istype(I, ammo_type))) - if(grenades.len < max_grenades) - user.drop_item() - I.loc = src - grenades += I - user << "\blue You put the [ammo_name] in the [name]." - user << "\blue [grenades.len] / [max_grenades] [ammo_name]s." - else - usr << "\red The grenade launcher cannot hold more [ammo_name]s." - - afterattack(obj/target, mob/user , flag) - - if (istype(target, /obj/item/weapon/storage/backpack )) - return - - else if (locate (/obj/structure/table, src.loc)) - return - - else if(target == user) - return - - if(grenades.len) - spawn(0) fire_grenade(target,user) + if((istype(I, ammo_type))) + if(grenades.len < max_grenades) + user.drop_item() + I.loc = src + grenades += I + user << "\blue You put the [ammo_name] in the [name]." + user << "\blue [grenades.len] / [max_grenades] [ammo_name]s." else - usr << "\red The [name] is empty." + usr << "\red The grenade launcher cannot hold more [ammo_name]s." + +/obj/item/weapon/gun/grenadelauncher/afterattack(obj/target, mob/user , flag) + + if (istype(target, /obj/item/weapon/storage/backpack )) + return + + else if (locate (/obj/structure/table, src.loc)) + return + + else if(target == user) + return + + if(grenades.len) + spawn(0) fire_grenade(target,user) + else + usr << "\red The [name] is empty." + +/obj/item/weapon/gun/grenadelauncher/proc/fire_grenade(atom/target, mob/user) + for(var/mob/O in viewers(world.view, user)) + O.show_message(text("\red [] fired a [ammo_name]!", user), 1) + user << "\red You fire the [name]!" + var/obj/item/weapon/grenade/chem_grenade/F = grenades[1] //Now with less copypasta! + grenades -= F + F.loc = user.loc + F.throw_at(target, 30, 2, user) + message_admins("[key_name_admin(user)] fired a [ammo_name] ([F.name]) from a launcher ([name]).") + log_game("[key_name_admin(user)] used a [ammo_name] ([name]).") + F.active = 1 + F.icon_state = initial(icon_state) + "_active" + playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) + spawn(15) + F.prime() - proc - fire_grenade(atom/target, mob/user) - for(var/mob/O in viewers(world.view, user)) - O.show_message(text("\red [] fired a [ammo_name]!", user), 1) - user << "\red You fire the [name]!" - var/obj/item/weapon/grenade/chem_grenade/F = grenades[1] //Now with less copypasta! - grenades -= F - F.loc = user.loc - F.throw_at(target, 30, 2, user) - message_admins("[key_name_admin(user)] fired a [ammo_name] ([F.name]) from a launcher ([name]).") - log_game("[key_name_admin(user)] used a [ammo_name] ([name]).") - F.active = 1 - F.icon_state = initial(icon_state) + "_active" - playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - spawn(15) - F.prime() /obj/item/weapon/gun/grenadelauncher/piecannon name = "pie cannon" diff --git a/code/modules/reagents/newchem/medicine.dm b/code/modules/reagents/newchem/medicine.dm index ea2675034e7..a54072e9bbb 100644 --- a/code/modules/reagents/newchem/medicine.dm +++ b/code/modules/reagents/newchem/medicine.dm @@ -825,6 +825,35 @@ datum/reagent/stimulants/reagent_deleted(var/mob/living/M as mob) ..() return +/datum/reagent/medicine/stimulative_agent + name = "Stimulative Agent" + id = "stimulative_agent" + description = "An illegal compound that dramatically enhances the body's performance and healing capabilities." + color = "#C8A5DC" + metabolization_rate = 0.5 * REAGENTS_METABOLISM + overdose_threshold = 60 + +/datum/reagent/medicine/stimulative_agent/on_mob_life(mob/living/M) + M.status_flags |= GOTTAGOFAST + if(M.health < 50 && M.health > 0) + M.adjustOxyLoss(-1*REM) + M.adjustToxLoss(-1*REM) + M.adjustBruteLoss(-1*REM) + M.adjustFireLoss(-1*REM) + M.AdjustParalysis(-3) + M.AdjustStunned(-3) + M.AdjustWeakened(-3) + M.adjustStaminaLoss(-5*REM) + ..() + +/datum/reagent/medicine/stimulative_agent/overdose_process(mob/living/M) + if(prob(33)) + M.adjustStaminaLoss(2.5*REM) + M.adjustToxLoss(1*REM) + M.losebreath++ + ..() + return + datum/reagent/insulin name = "Insulin" id = "insulin" diff --git a/code/modules/reagents/newchem/newchem_procs.dm b/code/modules/reagents/newchem/newchem_procs.dm index 5c87c0f0044..b2d6edc0995 100644 --- a/code/modules/reagents/newchem/newchem_procs.dm +++ b/code/modules/reagents/newchem/newchem_procs.dm @@ -96,7 +96,7 @@ datum/reagents/proc/check_ignoreslow(var/mob/M) datum/reagents/proc/check_gofast(var/mob/M) if(istype(M, /mob)) - if(M.reagents.has_reagent("unholywater")||M.reagents.has_reagent("nuka_cola")) + if(M.reagents.has_reagent("unholywater")||M.reagents.has_reagent("nuka_cola")||M.reagents.has_reagent("stimulative_agent")) return 1 else M.status_flags &= ~GOTTAGOFAST diff --git a/code/modules/reagents/oldchem/chemical_reaction/_chemical_reaction_base.dm b/code/modules/reagents/oldchem/chemical_reaction/_chemical_reaction_base.dm new file mode 100644 index 00000000000..6b5656c8dc5 --- /dev/null +++ b/code/modules/reagents/oldchem/chemical_reaction/_chemical_reaction_base.dm @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////////// +/datum/chemical_reaction + var/name = null + var/id = null + var/result = null + var/list/required_reagents = list() + var/list/required_catalysts = list() + + // Both of these variables are mostly going to be used with slime cores - but if you want to, you can use them for other things + var/atom/required_container = null // the container required for the reaction to happen + var/required_other = 0 // an integer required for the reaction to happen + + var/result_amount = 0 + var/secondary = 0 // set to nonzero if secondary reaction + var/list/secondary_results = list() //additional reagents produced by the reaction + var/min_temp = 0 //Minimum temperature required for the reaction to occur (heat to/above this). min_temp = 0 means no requirement + var/max_temp = 9999 //Maximum temperature allowed for the reaction to occur (cool to/below this). + var/mix_message = "The solution begins to bubble." + var/mix_sound = 'sound/effects/bubbles.ogg' + var/no_message = 0 + +/datum/chemical_reaction/proc/on_reaction(var/datum/reagents/holder, var/created_volume) + return \ No newline at end of file diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_drink.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_drink.dm new file mode 100644 index 00000000000..d56cdcf5644 --- /dev/null +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_drink.dm @@ -0,0 +1,590 @@ +/datum/chemical_reaction/ + + hot_coco + name = "Hot Coco" + id = "hot_coco" + result = "hot_coco" + required_reagents = list("water" = 5, "coco" = 1) + result_amount = 5 + + chocolate_milk + name = "Chocolate Milk" + id = "chocolate_milk" + result = "chocolate_milk" + required_reagents = list("chocolate" = 1, "milk" = 1) + result_amount = 2 + mix_message = "The mixture turns a nice brown color." + + coffee + name = "Coffee" + id = "coffee" + result = "coffee" + required_reagents = list("coffeepowder" = 1, "water" = 5) + result_amount = 5 + + tea + name = "Tea" + id = "tea" + result = "tea" + required_reagents = list("teapowder" = 1, "water" = 5) + result_amount = 5 + + + + + goldschlager + name = "Goldschlager" + id = "goldschlager" + result = "goldschlager" + required_reagents = list("vodka" = 10, "gold" = 1) + result_amount = 10 + + patron + name = "Patron" + id = "patron" + result = "patron" + required_reagents = list("tequilla" = 10, "silver" = 1) + result_amount = 10 + + bilk + name = "Bilk" + id = "bilk" + result = "bilk" + required_reagents = list("milk" = 1, "beer" = 1) + result_amount = 2 + + icetea + name = "Iced Tea" + id = "icetea" + result = "icetea" + required_reagents = list("ice" = 1, "tea" = 3) + result_amount = 4 + + icecoffee + name = "Iced Coffee" + id = "icecoffee" + result = "icecoffee" + required_reagents = list("ice" = 1, "coffee" = 3) + result_amount = 4 + + nuka_cola + name = "Nuka Cola" + id = "nuka_cola" + result = "nuka_cola" + required_reagents = list("uranium" = 1, "cola" = 6) + result_amount = 6 + + moonshine + name = "Moonshine" + id = "moonshine" + result = "moonshine" + required_reagents = list("nutriment" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 + + wine + name = "Wine" + id = "wine" + result = "wine" + required_reagents = list("berryjuice" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 + + spacebeer + name = "Space Beer" + id = "spacebeer" + result = "beer" + required_reagents = list("cornoil" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 + + vodka + name = "Vodka" + id = "vodka" + result = "vodka" + required_reagents = list("potato" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 + sake + name = "Sake" + id = "sake" + result = "sake" + required_reagents = list("rice" = 10,"water" = 5) + required_catalysts = list("enzyme" = 5) + result_amount = 15 + + kahlua + name = "Kahlua" + id = "kahlua" + result = "kahlua" + required_reagents = list("coffee" = 5, "sugar" = 5, "rum" = 5) + required_catalysts = list("enzyme" = 5) + result_amount = 5 + + kahluaVodka + name = "KahluaVodka" + id = "kahlauVodka" + result = "kahlua" + required_reagents = list("coffee" = 5, "sugar" = 5, "vodka" = 5) + required_catalysts = list("enzyme" = 5) + result_amount = 5 + gin_tonic + name = "Gin and Tonic" + id = "gintonic" + result = "gintonic" + required_reagents = list("gin" = 2, "tonic" = 1) + result_amount = 3 + mix_message = "The tonic water and gin mix together perfectly." + + cuba_libre + name = "Cuba Libre" + id = "cubalibre" + result = "cubalibre" + required_reagents = list("rum" = 2, "cola" = 1) + result_amount = 3 + + mojito + name = "Mojito" + id = "mojito" + result = "mojito" + required_reagents = list("rum" = 1, "sugar" = 1, "limejuice" = 1, "sodawater" = 1) + result_amount = 4 + + martini + name = "Classic Martini" + id = "martini" + result = "martini" + required_reagents = list("gin" = 2, "vermouth" = 1) + result_amount = 3 + + vodkamartini + name = "Vodka Martini" + id = "vodkamartini" + result = "vodkamartini" + required_reagents = list("vodka" = 2, "vermouth" = 1) + result_amount = 3 + + white_russian + name = "White Russian" + id = "whiterussian" + result = "whiterussian" + required_reagents = list("blackrussian" = 3, "cream" = 2) + result_amount = 5 + + whiskey_cola + name = "Whiskey Cola" + id = "whiskeycola" + result = "whiskeycola" + required_reagents = list("whiskey" = 2, "cola" = 1) + result_amount = 3 + + screwdriver + name = "Screwdriver" + id = "screwdrivercocktail" + result = "screwdrivercocktail" + required_reagents = list("vodka" = 2, "orangejuice" = 1) + result_amount = 3 + + bloody_mary + name = "Bloody Mary" + id = "bloodymary" + result = "bloodymary" + required_reagents = list("vodka" = 1, "tomatojuice" = 2, "limejuice" = 1) + result_amount = 4 + + gargle_blaster + name = "Pan-Galactic Gargle Blaster" + id = "gargleblaster" + result = "gargleblaster" + required_reagents = list("vodka" = 1, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1) + result_amount = 5 + + brave_bull + name = "Brave Bull" + id = "bravebull" + result = "bravebull" + required_reagents = list("tequilla" = 2, "kahlua" = 1) + result_amount = 3 + + tequilla_sunrise + name = "Tequilla Sunrise" + id = "tequillasunrise" + result = "tequillasunrise" + required_reagents = list("tequilla" = 2, "orangejuice" = 1) + result_amount = 3 + + toxins_special + name = "Toxins Special" + id = "toxinsspecial" + result = "toxinsspecial" + required_reagents = list("rum" = 2, "vermouth" = 1, "plasma" = 2) + result_amount = 5 + + beepsky_smash + name = "Beepksy Smash" + id = "beepksysmash" + result = "beepskysmash" + required_reagents = list("limejuice" = 2, "whiskey" = 2, "iron" = 1) + result_amount = 4 + + doctor_delight + name = "The Doctor's Delight" + id = "doctordelight" + result = "doctorsdelight" + required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 1) + result_amount = 5 + + irish_cream + name = "Irish Cream" + id = "irishcream" + result = "irishcream" + required_reagents = list("whiskey" = 2, "cream" = 1) + result_amount = 3 + + manly_dorf + name = "The Manly Dorf" + id = "manlydorf" + result = "manlydorf" + required_reagents = list ("beer" = 1, "ale" = 2) + result_amount = 3 + + suicider + name = "Suicider" + id = "suicider" + result = "suicider" + required_reagents = list ("vodka" = 1, "cider" = 1, "fuel" = 1, "epinephrine" = 1) + result_amount = 4 + mix_message = "The drinks and chemicals mix together, emitting a potent smell." + + irish_coffee + name = "Irish Coffee" + id = "irishcoffee" + result = "irishcoffee" + required_reagents = list("irishcream" = 1, "coffee" = 1) + result_amount = 2 + + b52 + name = "B-52" + id = "b52" + result = "b52" + required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1) + result_amount = 3 + + atomicbomb + name = "Atomic Bomb" + id = "atomicbomb" + result = "atomicbomb" + required_reagents = list("b52" = 10, "uranium" = 1) + result_amount = 10 + + margarita + name = "Margarita" + id = "margarita" + result = "margarita" + required_reagents = list("tequilla" = 2, "limejuice" = 1) + result_amount = 3 + + longislandicedtea + name = "Long Island Iced Tea" + id = "longislandicedtea" + result = "longislandicedtea" + required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 1) + result_amount = 4 + + threemileisland + name = "Three Mile Island Iced Tea" + id = "threemileisland" + result = "threemileisland" + required_reagents = list("longislandicedtea" = 10, "uranium" = 1) + result_amount = 10 + + whiskeysoda + name = "Whiskey Soda" + id = "whiskeysoda" + result = "whiskeysoda" + required_reagents = list("whiskey" = 2, "sodawater" = 1) + result_amount = 3 + + black_russian + name = "Black Russian" + id = "blackrussian" + result = "blackrussian" + required_reagents = list("vodka" = 3, "kahlua" = 2) + result_amount = 5 + + manhattan + name = "Manhattan" + id = "manhattan" + result = "manhattan" + required_reagents = list("whiskey" = 2, "vermouth" = 1) + result_amount = 3 + + manhattan_proj + name = "Manhattan Project" + id = "manhattan_proj" + result = "manhattan_proj" + required_reagents = list("manhattan" = 10, "uranium" = 1) + result_amount = 10 + + vodka_tonic + name = "Vodka and Tonic" + id = "vodkatonic" + result = "vodkatonic" + required_reagents = list("vodka" = 2, "tonic" = 1) + result_amount = 3 + + gin_fizz + name = "Gin Fizz" + id = "ginfizz" + result = "ginfizz" + required_reagents = list("gin" = 2, "sodawater" = 1, "limejuice" = 1) + result_amount = 4 + + bahama_mama + name = "Bahama mama" + id = "bahama_mama" + result = "bahama_mama" + required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1) + result_amount = 6 + + singulo + name = "Singulo" + id = "singulo" + result = "singulo" + required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5) + result_amount = 10 + + alliescocktail + name = "Allies Cocktail" + id = "alliescocktail" + result = "alliescocktail" + required_reagents = list("martini" = 1, "vodka" = 1) + result_amount = 2 + + demonsblood + name = "Demons Blood" + id = "demonsblood" + result = "demonsblood" + required_reagents = list("rum" = 1, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1) + result_amount = 4 + + booger + name = "Booger" + id = "booger" + result = "booger" + required_reagents = list("cream" = 1, "banana" = 1, "rum" = 1, "watermelonjuice" = 1) + result_amount = 4 + + antifreeze + name = "Anti-freeze" + id = "antifreeze" + result = "antifreeze" + required_reagents = list("vodka" = 2, "cream" = 1, "ice" = 1) + result_amount = 4 + + barefoot + name = "Barefoot" + id = "barefoot" + result = "barefoot" + required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1) + result_amount = 3 + + +////DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri///// + + sbiten + name = "Sbiten" + id = "sbiten" + result = "sbiten" + required_reagents = list("vodka" = 10, "capsaicin" = 1) + result_amount = 10 + + red_mead + name = "Red Mead" + id = "red_mead" + result = "red_mead" + required_reagents = list("blood" = 1, "mead" = 1) + result_amount = 2 + + mead + name = "Mead" + id = "mead" + result = "mead" + required_reagents = list("sugar" = 1, "water" = 1) + required_catalysts = list("enzyme" = 5) + result_amount = 2 + + iced_beer + name = "Iced Beer" + id = "iced_beer" + result = "iced_beer" + required_reagents = list("beer" = 10, "frostoil" = 1) + result_amount = 10 + + iced_beer2 + name = "Iced Beer" + id = "iced_beer" + result = "iced_beer" + required_reagents = list("beer" = 5, "ice" = 1) + result_amount = 6 + + grog + name = "Grog" + id = "grog" + result = "grog" + required_reagents = list("rum" = 1, "water" = 1) + result_amount = 2 + + soy_latte + name = "Soy Latte" + id = "soy_latte" + result = "soy_latte" + required_reagents = list("coffee" = 1, "soymilk" = 1) + result_amount = 2 + + cafe_latte + name = "Cafe Latte" + id = "cafe_latte" + result = "cafe_latte" + required_reagents = list("coffee" = 1, "milk" = 1) + result_amount = 2 + + acidspit + name = "Acid Spit" + id = "acidspit" + result = "acidspit" + required_reagents = list("sacid" = 1, "wine" = 5) + result_amount = 6 + + amasec + name = "Amasec" + id = "amasec" + result = "amasec" + required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5) + result_amount = 10 + + changelingsting + name = "Changeling Sting" + id = "changelingsting" + result = "changelingsting" + required_reagents = list("screwdrivercocktail" = 1, "limejuice" = 1, "lemonjuice" = 1) + result_amount = 5 + + aloe + name = "Aloe" + id = "aloe" + result = "aloe" + required_reagents = list("cream" = 1, "whiskey" = 1, "watermelonjuice" = 1) + result_amount = 2 + + andalusia + name = "Andalusia" + id = "andalusia" + result = "andalusia" + required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1) + result_amount = 3 + + neurotoxin + name = "Neurotoxin" + id = "neurotoxin" + result = "neurotoxin" + required_reagents = list("gargleblaster" = 1, "ether" = 1) + result_amount = 2 + + snowwhite + name = "Snow White" + id = "snowwhite" + result = "snowwhite" + required_reagents = list("beer" = 1, "lemon_lime" = 1) + result_amount = 2 + + irishcarbomb + name = "Irish Car Bomb" + id = "irishcarbomb" + result = "irishcarbomb" + required_reagents = list("ale" = 1, "irishcream" = 1) + result_amount = 2 + + syndicatebomb + name = "Syndicate Bomb" + id = "syndicatebomb" + result = "syndicatebomb" + required_reagents = list("beer" = 1, "whiskeycola" = 1) + result_amount = 2 + + erikasurprise + name = "Erika Surprise" + id = "erikasurprise" + result = "erikasurprise" + required_reagents = list("ale" = 1, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1) + result_amount = 5 + + devilskiss + name = "Devils Kiss" + id = "devilskiss" + result = "devilskiss" + required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1) + result_amount = 3 + + hippiesdelight + name = "Hippies Delight" + id = "hippiesdelight" + result = "hippiesdelight" + required_reagents = list("psilocybin" = 1, "gargleblaster" = 1) + result_amount = 2 + + bananahonk + name = "Banana Honk" + id = "bananahonk" + result = "bananahonk" + required_reagents = list("banana" = 1, "cream" = 1, "sugar" = 1) + result_amount = 3 + + silencer + name = "Silencer" + id = "silencer" + result = "silencer" + required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1) + result_amount = 3 + + driestmartini + name = "Driest Martini" + id = "driestmartini" + result = "driestmartini" + required_reagents = list("nothing" = 1, "gin" = 1) + result_amount = 2 + + lemonade + name = "Lemonade" + id = "lemonade" + result = "lemonade" + required_reagents = list("lemonjuice" = 1, "sugar" = 1, "water" = 1) + result_amount = 3 + + kiraspecial + name = "Kira Special" + id = "kiraspecial" + result = "kiraspecial" + required_reagents = list("orangejuice" = 1, "limejuice" = 1, "sodawater" = 1) + result_amount = 2 + + brownstar + name = "Brown Star" + id = "brownstar" + result = "brownstar" + required_reagents = list("orangejuice" = 2, "cola" = 1) + result_amount = 2 + + milkshake + name = "Milkshake" + id = "milkshake" + result = "milkshake" + required_reagents = list("cream" = 1, "ice" = 2, "milk" = 2) + result_amount = 5 + + rewriter + name = "Rewriter" + id = "rewriter" + result = "rewriter" + required_reagents = list("spacemountainwind" = 1, "coffee" = 1) + result_amount = 2 \ No newline at end of file diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm new file mode 100644 index 00000000000..146dc1da95c --- /dev/null +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm @@ -0,0 +1,108 @@ +/datum/chemical_reaction/ + + tofu + name = "Tofu" + id = "tofu" + result = null + required_reagents = list("soymilk" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 1 + on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/tofu(location) + return + + chocolate_bar + name = "Chocolate Bar" + id = "chocolate_bar" + result = null + required_reagents = list("soymilk" = 2, "coco" = 2, "sugar" = 2) + result_amount = 1 + on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) + return + + chocolate_bar2 + name = "Chocolate Bar" + id = "chocolate_bar" + result = null + required_reagents = list("milk" = 2, "coco" = 2, "sugar" = 2) + result_amount = 1 + on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) + return + + + soysauce + name = "Soy Sauce" + id = "soysauce" + result = "soysauce" + required_reagents = list("soymilk" = 2, "flour" = 1, "sodiumchloride" = 1, "water" = 3) + result_amount = 7 + + cheesewheel + name = "Cheesewheel" + id = "cheesewheel" + result = null + required_reagents = list("milk" = 40) + required_catalysts = list("enzyme" = 5) + result_amount = 1 + on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location) + return + + syntiflesh + name = "Syntiflesh" + id = "syntiflesh" + result = null + required_reagents = list("blood" = 5, "cryoxadone" = 1) + result_amount = 1 + on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location) + return + + hot_ramen + name = "Hot Ramen" + id = "hot_ramen" + result = "hot_ramen" + required_reagents = list("water" = 1, "dry_ramen" = 3) + result_amount = 3 + + hell_ramen + name = "Hell Ramen" + id = "hell_ramen" + result = "hell_ramen" + required_reagents = list("capsaicin" = 1, "hot_ramen" = 6) + result_amount = 6 + + doughball + name = "Ball of dough" + id = "dough_ball" + result = "dough_ball" + required_reagents = list("flour" = 15, "water" = 5) + required_catalysts = list("enzyme" = 5) + + sodiumchloride + name = "Sodium Chloride" + id = "sodiumchloride" + result = "sodiumchloride" + required_reagents = list("sodium" = 1, "chlorine" = 1, "water" = 1) + result_amount = 3 + mix_message = "The solution crystallizes with a brief flare of light." + + ice + name = "Ice" + id = "ice" + result = "ice" + required_reagents = list("water" = 1) + result_amount = 1 + max_temp = 273 + mix_message = "Ice forms as the water freezes." + mix_sound = null \ No newline at end of file diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_harm.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_harm.dm new file mode 100644 index 00000000000..4ec4c1bb9e4 --- /dev/null +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_harm.dm @@ -0,0 +1,76 @@ +//Anything for harm or hostile intents go here (explosions, EMPs, thermite, mutagen) +/datum/chemical_reaction + + explosion_potassium + name = "Explosion" + id = "explosion_potassium" + result = null + required_reagents = list("water" = 1, "potassium" = 1) + result_amount = 2 + mix_message = "The mixture explodes!" + + on_reaction(var/datum/reagents/holder, var/created_volume) + var/datum/effect/effect/system/reagents_explosion/e = new() + e.set_up(round (created_volume/10, 1), holder.my_atom, 0, 0) + e.start() + holder.clear_reagents() + return + + emp_pulse + name = "EMP Pulse" + id = "emp_pulse" + result = null + required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense + result_amount = 2 + + on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + // 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes. + // 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades. + empulse(location, round(created_volume / 24), round(created_volume / 14), 1) + holder.clear_reagents() + return + + mutagen + name = "Unstable mutagen" + id = "mutagen" + result = "mutagen" + required_reagents = list("radium" = 1, "plasma" = 1, "chlorine" = 1) + result_amount = 3 + mix_message = "The substance turns neon green and bubbles unnervingly." + + thermite + name = "Thermite" + id = "thermite" + result = "thermite" + required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1) + result_amount = 3 + + glycerol + name = "Glycerol" + id = "glycerol" + result = "glycerol" + required_reagents = list("cornoil" = 3, "sacid" = 1) + result_amount = 1 + + nitroglycerin + name = "Nitroglycerin" + id = "nitroglycerin" + result = "nitroglycerin" + required_reagents = list("glycerol" = 1, "facid" = 1, "sacid" = 1) + result_amount = 2 + on_reaction(var/datum/reagents/holder, var/created_volume) + var/datum/effect/effect/system/reagents_explosion/e = new() + e.set_up(round (created_volume/2, 1), holder.my_atom, 0, 0) + e.start() + + holder.clear_reagents() + return + + condensedcapsaicin + name = "Condensed Capsaicin" + id = "condensedcapsaicin" + result = "condensedcapsaicin" + required_reagents = list("capsaicin" = 2) + required_catalysts = list("plasma" = 5) + result_amount = 1 \ No newline at end of file diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_med.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_med.dm new file mode 100644 index 00000000000..02e1f4a65cd --- /dev/null +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_med.dm @@ -0,0 +1,98 @@ +/datum/chemical_reaction/ + + hydrocodone + name = "Hydrocodone" + id = "hydrocodone" + result = "hydrocodone" + required_reagents = list("morphine" = 1, "sacid" = 1, "water" = 1, "oil" = 1) + result_amount = 2 + + mitocholide + name = "mitocholide" + id = "mitocholide" + result = "mitocholide" + required_reagents = list("synthflesh" = 1, "cryoxadone" = 1, "plasma" = 1) + result_amount = 3 + + cryoxadone + name = "Cryoxadone" + id = "cryoxadone" + result = "cryoxadone" + required_reagents = list("cryostylane" = 1, "plasma" = 1, "acetone" = 1, "mutagen" = 1) + result_amount = 4 + mix_message = "The solution bubbles softly." + + spaceacillin + name = "Spaceacillin" + id = "spaceacillin" + result = "spaceacillin" + required_reagents = list("fungus" = 1, "ethanol" = 1) + result_amount = 2 + mix_message = "The solvent extracts an antibiotic compound from the fungus." + + audioline + name = "Audioline" + id = "audioline" + result = "audioline" + required_reagents = list("spaceacillin" = 1, "salglu_solution" = 1, "epinephrine" = 1) + result_amount = 3 + + rezadone + name = "Rezadone" + id = "rezadone" + result = "rezadone" + required_reagents = list("carpotoxin" = 1, "spaceacillin" = 1, "copper" = 1) + result_amount = 3 + + virus_food + name = "Virus Food" + id = "virusfood" + result = "virusfood" + required_reagents = list("water" = 1, "milk" = 1, "oxygen" = 1) + result_amount = 3 +/* + mix_virus + name = "Mix Virus" + id = "mixvirus" + result = "blood" + required_reagents = list("virusfood" = 5) + required_catalysts = list("blood") + var/level = 2 + + on_reaction(var/datum/reagents/holder, var/created_volume) + + var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list + if(B && B.data) + var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] + if(D) + D.Evolve(level - rand(0, 1)) + + + mix_virus_2 + + name = "Mix Virus 2" + id = "mixvirus2" + required_reagents = list("mutagen" = 5) + level = 4 + + rem_virus + + name = "Devolve Virus" + id = "remvirus" + required_reagents = list("synaptizine" = 5) + + on_reaction(var/datum/reagents/holder, var/created_volume) + + var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list + if(B && B.data) + var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] + if(D) + D.Devolve() +*/ + + sterilizine + name = "Sterilizine" + id = "sterilizine" + result = "sterilizine" + required_reagents = list("ethanol" = 1, "charcoal" = 1, "chlorine" = 1) + result_amount = 3 \ No newline at end of file diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_misc.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_misc.dm new file mode 100644 index 00000000000..f884ef6cb63 --- /dev/null +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_misc.dm @@ -0,0 +1,199 @@ +/datum/chemical_reaction/ +// foam and foam precursor + + surfactant + name = "Foam surfactant" + id = "foam surfactant" + result = "fluorosurfactant" + required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1) + result_amount = 5 + mix_message = "A head of foam results from the mixture's constant fizzing." + + + foam + name = "Foam" + id = "foam" + result = null + required_reagents = list("fluorosurfactant" = 1, "water" = 1) + result_amount = 2 + + on_reaction(var/datum/reagents/holder, var/created_volume) + + + var/location = get_turf(holder.my_atom) + for(var/mob/M in viewers(5, location)) + M << "\red The solution violently bubbles!" + + location = get_turf(holder.my_atom) + + for(var/mob/M in viewers(5, location)) + M << "\red The solution spews out foam!" + + //world << "Holder volume is [holder.total_volume]" + //for(var/datum/reagent/R in holder.reagent_list) + // world << "[R.name] = [R.volume]" + + var/datum/effect/effect/system/foam_spread/s = new() + s.set_up(created_volume, location, holder, 0) + s.start() + holder.clear_reagents() + return + + metalfoam + name = "Metal Foam" + id = "metalfoam" + result = null + required_reagents = list("aluminum" = 3, "fluorosurfactant" = 1, "sacid" = 1) + result_amount = 5 + + on_reaction(var/datum/reagents/holder, var/created_volume) + + + var/location = get_turf(holder.my_atom) + + for(var/mob/M in viewers(5, location)) + M << "\red The solution spews out a metalic foam!" + + var/datum/effect/effect/system/foam_spread/s = new() + s.set_up(created_volume, location, holder, 1) + s.start() + return + + ironfoam + name = "Iron Foam" + id = "ironlfoam" + result = null + required_reagents = list("iron" = 3, "fluorosurfactant" = 1, "sacid" = 1) + result_amount = 5 + + on_reaction(var/datum/reagents/holder, var/created_volume) + + + var/location = get_turf(holder.my_atom) + + for(var/mob/M in viewers(5, location)) + M << "\red The solution spews out a metalic foam!" + + var/datum/effect/effect/system/foam_spread/s = new() + s.set_up(created_volume, location, holder, 2) + s.start() + return + + // Synthesizing these three chemicals is pretty complex in real life, but fuck it, it's just a game! + ammonia + name = "Ammonia" + id = "ammonia" + result = "ammonia" + required_reagents = list("hydrogen" = 3, "nitrogen" = 1) + result_amount = 3 + mix_message = "The mixture bubbles, emitting an acrid reek." + + diethylamine + name = "Diethylamine" + id = "diethylamine" + result = "diethylamine" + required_reagents = list ("ammonia" = 1, "ethanol" = 1) + result_amount = 2 + min_temp = 374 + mix_message = "A horrible smell pours forth from the mixture." + + space_cleaner + name = "Space cleaner" + id = "cleaner" + result = "cleaner" + required_reagents = list("ammonia" = 1, "water" = 1, "ethanol" = 1) + result_amount = 3 + mix_message = "Ick, this stuff really stinks. Sure does make the container sparkle though!" + + sulfuric_acid + name = "Sulfuric Acid" + id = "sacid" + result = "sacid" + required_reagents = list("sulfur" = 1, "oxygen" = 1, "hydrogen" = 1) + result_amount = 2 + mix_message = "The mixture gives off a sharp acidic tang." + +///////Changeling Blood Test///////////// +/* + changeling_test + name = "Changeling blood test" + id = "changelingblood" + result = "blood" + required_reagents = list("blood" = 5) + required_catalysts = list("fuel") + result_amount = 1 //Needs this in order to check the donor, as the data var in the reacted blood gets transferred. + on_reaction(var/datum/reagents/holder, var/created_volume) + if(!holder.reagent_list) //reagent_list is not null + return + var/datum/reagent/blood/B = locate() in holder.reagent_list + if(!B) //B is not null + return + var/mob/living/carbon/human/H = B.data["donor"] + if(!H) //H is not null. + return + if(H.mind && H.mind.changeling) //Checks if H, the blood donor is a ling. + for(var/mob/M in viewers(get_turf(holder.my_atom), null)) + M.show_message( "The blood writhes and wriggles and sizzles away from the container!", 1, "You hear bubbling and sizzling.", 2) + else + for(var/mob/M in viewers(get_turf(holder.my_atom), null)) + M.show_message( "The blood seems to break apart in the fuel.", 1) + holder.del_reagent("blood") + return +*/ + + plastication + name = "Plastic" + id = "solidplastic" + result = null + required_reagents = list("facid" = 10, "plasticide" = 20) + result_amount = 1 + on_reaction(var/datum/reagents/holder) + var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/mineral/plastic + M.amount = 10 + M.loc = get_turf(holder.my_atom) + return + + + +//Not really misc chems, but not enough to deserve their own file +/* + silicate + name = "Silicate" + id = "silicate" + result = "silicate" + required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1) + result_amount = 3 +*/ + + space_drugs + name = "Space Drugs" + id = "space_drugs" + result = "space_drugs" + required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1) + result_amount = 3 + mix_message = "Slightly dizzying fumes drift from the solution." + + lube + name = "Space Lube" + id = "lube" + result = "lube" + required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1) + result_amount = 3 + mix_message = "The substance turns a striking cyan and becomes oily." + + holy_water + name = "Holy Water" + id = "holywater" + result = "holywater" + required_reagents = list("water" = 1, "mercury" = 1, "wine" = 1) + result_amount = 3 + mix_message = "The water somehow seems purified. Or maybe defiled." + + + lsd + name = "Lysergic acid diethylamide" + id = "lsd" + result = "lsd" + required_reagents = list("diethylamine" = 1, "fungus" = 1) + result_amount = 3 + mix_message = "The mixture turns a rather unassuming color and settles." \ No newline at end of file diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm new file mode 100644 index 00000000000..a1d8b033672 --- /dev/null +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm @@ -0,0 +1,487 @@ +/////////////////////////////////////////////NEW SLIME CORE REACTIONS///////////////////////////////////////////// + +//Grey +/datum/chemical_reaction/ + + slimespawn + name = "Slime Spawn" + id = "m_spawn" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/grey + required_other = 1 + + on_reaction(var/datum/reagents/holder) + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("\red Infused with plasma, the core begins to quiver and grow, and soon a new baby slime emerges from it!"), 1) + var/mob/living/carbon/slime/S = new /mob/living/carbon/slime + S.loc = get_turf(holder.my_atom) + + + slimeinaprov + name = "Slime Epinephrine" + id = "m_epinephrine" + result = "epinephrine" + required_reagents = list("water" = 5) + result_amount = 3 + required_other = 1 + required_container = /obj/item/slime_extract/grey + + on_reaction(var/datum/reagents/holder) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + + + slimemonkey + name = "Slime Monkey" + id = "m_monkey" + result = null + required_reagents = list("blood" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/grey + required_other = 1 + on_reaction(var/datum/reagents/holder) + for(var/i = 1, i <= 3, i++) + var /obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = new /obj/item/weapon/reagent_containers/food/snacks/monkeycube + M.loc = get_turf(holder.my_atom) + +//Green + slimemutate + name = "Mutation Toxin" + id = "mutationtoxin" + result = "mutationtoxin" + required_reagents = list("plasma" = 5) + result_amount = 1 + required_other = 1 + required_container = /obj/item/slime_extract/green + +//Metal + slimemetal + name = "Slime Metal" + id = "m_metal" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/metal + required_other = 1 + on_reaction(var/datum/reagents/holder) + var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal + M.amount = 15 + M.loc = get_turf(holder.my_atom) + var/obj/item/stack/sheet/plasteel/P = new /obj/item/stack/sheet/plasteel + P.amount = 5 + P.loc = get_turf(holder.my_atom) + +//Gold + slimecrit + name = "Slime Crit" + id = "m_tele" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/gold + required_other = 1 + on_reaction(var/datum/reagents/holder) + + var/blocked = blocked_mobs //global variable of blocked mobs + + var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs + + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) + + for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) + if(M:eyecheck() <= 0) + flick("e_flash", M.flash) + + for(var/i = 1, i <= 5, i++) + var/chosen = pick(critters) + var/mob/living/simple_animal/hostile/C = new chosen + C.faction |= "slimesummon" + C.loc = get_turf(holder.my_atom) + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(C, pick(NORTH,SOUTH,EAST,WEST)) +// for(var/mob/O in viewers(get_turf(holder.my_atom), null)) +// O.show_message(text("\red The slime core fizzles disappointingly,"), 1) + + + slimecritlesser + name = "Slime Crit Lesser" + id = "m_tele3" + result = null + required_reagents = list("blood" = 1) + result_amount = 1 + required_container = /obj/item/slime_extract/gold + required_other = 1 + on_reaction(var/datum/reagents/holder) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("The slime extract begins to vibrate violently!"), 1) + spawn(50) + + if(holder && holder.my_atom) + + var/blocked = blocked_mobs + + var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs + + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) + + for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) + if(M:eyecheck() <= 0) + flick("e_flash", M.flash) + + var/chosen = pick(critters) + var/mob/living/simple_animal/hostile/C = new chosen + C.faction |= "neutral" + C.loc = get_turf(holder.my_atom) + +//Silver + slimebork + name = "Slime Bork" + id = "m_tele2" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/silver + required_other = 1 + on_reaction(var/datum/reagents/holder) + + var/list/borks = subtypesof(/obj/item/weapon/reagent_containers/food/snacks) + // BORK BORK BORK + + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) + + for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) + if(M:eyecheck() <= 0) + flick("e_flash", M.flash) + + for(var/i = 1, i <= 4 + rand(1,2), i++) + var/chosen = pick(borks) + var/obj/B = new chosen + if(B) + B.loc = get_turf(holder.my_atom) + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(B, pick(NORTH,SOUTH,EAST,WEST)) + slimedrinks + name = "Slime Drinks" + id = "m_tele3" + result = null + required_reagents = list("water" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/silver + required_other = 1 + on_reaction(var/datum/reagents/holder) + + var/list/borks = subtypesof(/obj/item/weapon/reagent_containers/food/drinks) + // BORK BORK BORK + + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) + + for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) + if(M:eyecheck() <= 0) + flick("e_flash", M.flash) + + for(var/i = 1, i <= 4 + rand(1,2), i++) + var/chosen = pick(borks) + var/obj/B = new chosen + if(B) + B.loc = get_turf(holder.my_atom) + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(B, pick(NORTH,SOUTH,EAST,WEST)) + + +//Blue + slimefrost + name = "Slime Frost Oil" + id = "m_frostoil" + result = "frostoil" + required_reagents = list("plasma" = 5) + result_amount = 10 + required_container = /obj/item/slime_extract/blue + required_other = 1 +//Dark Blue + slimefreeze + name = "Slime Freeze" + id = "m_freeze" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/darkblue + required_other = 1 + on_reaction(var/datum/reagents/holder) + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) + sleep(50) + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) + for(var/mob/living/M in range (get_turf(holder.my_atom), 7)) + M.bodytemperature -= 140 + M << "\blue You feel a chill!" + +//Orange + slimecasp + name = "Slime Capsaicin Oil" + id = "m_capsaicinoil" + result = "capsaicin" + required_reagents = list("blood" = 5) + result_amount = 10 + required_container = /obj/item/slime_extract/orange + required_other = 1 + + slimefire + name = "Slime fire" + id = "m_fire" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/orange + required_other = 1 + on_reaction(var/datum/reagents/holder) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) + sleep(50) + var/turf/simulated/T = get_turf(holder.my_atom) + if(istype(T)) + T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 50) + +//Yellow + slimeoverload + name = "Slime EMP" + id = "m_emp" + result = null + required_reagents = list("blood" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/yellow + required_other = 1 + on_reaction(var/datum/reagents/holder, var/created_volume) + empulse(get_turf(holder.my_atom), 3, 7) + + + slimecell + name = "Slime Powercell" + id = "m_cell" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/yellow + required_other = 1 + on_reaction(var/datum/reagents/holder, var/created_volume) + var/obj/item/weapon/stock_parts/cell/slime/P = new /obj/item/weapon/stock_parts/cell/slime + P.loc = get_turf(holder.my_atom) + + slimeglow + name = "Slime Glow" + id = "m_glow" + result = null + required_reagents = list("water" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/yellow + required_other = 1 + on_reaction(var/datum/reagents/holder) + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("\red The contents of the slime core harden and begin to emit a warm, bright light."), 1) + var/obj/item/device/flashlight/slime/F = new /obj/item/device/flashlight/slime + F.loc = get_turf(holder.my_atom) + +//Purple + + slimepsteroid + name = "Slime Steroid" + id = "m_steroid" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/purple + required_other = 1 + on_reaction(var/datum/reagents/holder) + var/obj/item/weapon/slimesteroid/P = new /obj/item/weapon/slimesteroid + P.loc = get_turf(holder.my_atom) + + + + slimejam + name = "Slime Jam" + id = "m_jam" + result = "slimejelly" + required_reagents = list("sugar" = 5) + result_amount = 10 + required_container = /obj/item/slime_extract/purple + required_other = 1 + + +//Dark Purple + slimeplasma + name = "Slime Plasma" + id = "m_plasma" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/darkpurple + required_other = 1 + on_reaction(var/datum/reagents/holder) + var/obj/item/stack/sheet/mineral/plasma/P = new /obj/item/stack/sheet/mineral/plasma + P.amount = 10 + P.loc = get_turf(holder.my_atom) + +//Red + slimeglycerol + name = "Slime Glycerol" + id = "m_glycerol" + result = "glycerol" + required_reagents = list("plasma" = 5) + result_amount = 8 + required_container = /obj/item/slime_extract/red + required_other = 1 + + + slimebloodlust + name = "Bloodlust" + id = "m_bloodlust" + result = null + required_reagents = list("blood" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/red + required_other = 1 + on_reaction(var/datum/reagents/holder) + for(var/mob/living/carbon/slime/slime in viewers(get_turf(holder.my_atom), null)) + slime.rabid = 1 + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("\red The [slime] is driven into a frenzy!."), 1) + +//Pink + slimeppotion + name = "Slime Potion" + id = "m_potion" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/pink + required_other = 1 + on_reaction(var/datum/reagents/holder) + var/obj/item/weapon/slimepotion/P = new /obj/item/weapon/slimepotion + P.loc = get_turf(holder.my_atom) + + +//Black + slimemutate2 + name = "Advanced Mutation Toxin" + id = "mutationtoxin2" + result = "amutationtoxin" + required_reagents = list("plasma" = 5) + result_amount = 1 + required_other = 1 + required_container = /obj/item/slime_extract/black + +//Oil + slimeexplosion + name = "Slime Explosion" + id = "m_explosion" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/oil + required_other = 1 + on_reaction(var/datum/reagents/holder) + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) + sleep(50) + explosion(get_turf(holder.my_atom), 1 ,3, 6) +//Light Pink + slimepotion2 + name = "Slime Potion 2" + id = "m_potion2" + result = null + result_amount = 1 + required_container = /obj/item/slime_extract/lightpink + required_reagents = list("plasma" = 5) + required_other = 1 + on_reaction(var/datum/reagents/holder) + var/obj/item/weapon/slimepotion2/P = new /obj/item/weapon/slimepotion2 + P.loc = get_turf(holder.my_atom) +//Adamantine + slimegolem + name = "Slime Golem" + id = "m_golem" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/adamantine + required_other = 1 + on_reaction(var/datum/reagents/holder) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + var/obj/effect/goleRUNe/Z = new /obj/effect/goleRUNe + Z.loc = get_turf(holder.my_atom) + Z.announce_to_ghosts() +//Bluespace + slimecrystal + name = "Slime Crystal" + id = "m_crystal" + result = null + required_reagents = list("blood" = 1) + result_amount = 1 + required_container = /obj/item/slime_extract/bluespace + required_other = 1 + on_reaction(var/datum/reagents/holder, var/created_volume) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + if(holder.my_atom) + var/obj/item/bluespace_crystal/BC = new(get_turf(holder.my_atom)) + BC.visible_message("The [BC.name] appears out of thin air!") +//Cerulean + slimepsteroid2 + name = "Slime Steroid 2" + id = "m_steroid2" + result = null + required_reagents = list("plasma" = 1) + result_amount = 1 + required_container = /obj/item/slime_extract/cerulean + required_other = 1 + on_reaction(var/datum/reagents/holder) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + var/obj/item/weapon/slimesteroid2/P = new /obj/item/weapon/slimesteroid2 + P.loc = get_turf(holder.my_atom) +//Sepia + slimecamera + name = "Slime Camera" + id = "m_camera" + result = null + required_reagents = list("plasma" = 1) + result_amount = 1 + required_container = /obj/item/slime_extract/sepia + required_other = 1 + on_reaction(var/datum/reagents/holder) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + var/obj/item/device/camera/P = new /obj/item/device/camera + P.loc = get_turf(holder.my_atom) + + + slimefilm + name = "Slime Film" + id = "m_film" + result = null + required_reagents = list("blood" = 1) + result_amount = 1 + required_container = /obj/item/slime_extract/sepia + required_other = 1 + on_reaction(var/datum/reagents/holder) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + var/obj/item/device/camera_film/P = new /obj/item/device/camera_film + P.loc = get_turf(holder.my_atom) +//Pyrite + slimepaint + name = "Slime Paint" + id = "s_paint" + result = null + required_reagents = list("plasma" = 1) + result_amount = 1 + required_container = /obj/item/slime_extract/pyrite + required_other = 1 + on_reaction(var/datum/reagents/holder) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + var/list/paints = subtypesof(/obj/item/weapon/reagent_containers/glass/paint) + var/chosen = pick(paints) + var/obj/P = new chosen + if(P) + P.loc = get_turf(holder.my_atom) \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/__oldchem_defines.dm b/code/modules/reagents/oldchem/reagents/__oldchem_defines.dm new file mode 100644 index 00000000000..815c1208dd9 --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/__oldchem_defines.dm @@ -0,0 +1,5 @@ +#define SOLID 1 +#define LIQUID 2 +#define GAS 3 +#define FOOD_METABOLISM 0.4 +#define REM REAGENTS_EFFECT_MULTIPLIER \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/_reagent_base.dm b/code/modules/reagents/oldchem/reagents/_reagent_base.dm new file mode 100644 index 00000000000..2b2a94ee149 --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/_reagent_base.dm @@ -0,0 +1,82 @@ +/datum/reagent + var/name = "Reagent" + var/id = "reagent" + var/description = "" + var/datum/reagents/holder = null + var/reagent_state = SOLID + var/list/data = null + var/volume = 0 + var/nutriment_factor = 0 + var/metabolization_rate = REAGENTS_METABOLISM + //var/list/viruses = list() + var/color = "#000000" // rgb: 0, 0, 0 (does not support alpha channels - yet!) + var/shock_reduction = 0 + var/penetrates_skin = 0 //Whether or not a reagent penetrates the skin + //Processing flags, defines the type of mobs the reagent will affect + //By default, all reagents will ONLY affect organics, not synthetics. Re-define in the reagent's definition if the reagent is meant to affect synths + var/process_flags = ORGANIC + + +/datum/reagent/proc/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) //Some reagents transfer on touch, others don't; dependent on if they penetrate the skin or not. + if(!istype(M, /mob/living)) return 0 + var/datum/reagent/self = src + src = null + + if(self.holder) //for catching rare runtimes + if(method == TOUCH && self.penetrates_skin) + var/block = 0 + for(var/obj/item/clothing/C in M.get_equipped_items()) + if(istype(C, /obj/item/clothing/suit/bio_suit)) + block += 1 + if(istype(C, /obj/item/clothing/head/bio_hood)) + block += 1 + if(block < 2) + if(M.reagents) + M.reagents.add_reagent(self.id,self.volume) + +/* + if(method == INGEST && istype(M, /mob/living/carbon)) + if(prob(1 * self.addictiveness)) + if(prob(5 * volume)) + var/datum/disease/addiction/A = new /datum/disease/addiction + A.addicted_to = self + A.name = "[self.name] Addiction" + A.addiction ="[self.name]" + A.cure = self.id + M.viruses += A + A.affected_mob = M + A.holder = M +*/ + return 1 + +/datum/reagent/proc/reaction_obj(var/obj/O, var/volume) //By default we transfer a small part of the reagent to the object + src = null //if it can hold reagents. nope! + //if(O.reagents) + // O.reagents.add_reagent(id,volume/3) + return + +/datum/reagent/proc/reaction_turf(var/turf/T, var/volume) + src = null + return + +/datum/reagent/proc/on_mob_life(var/mob/living/M as mob, var/alien) + if(!istype(M, /mob/living)) // YOU'RE A FUCKING RETARD NEO WHY CAN'T YOU JUST FIX THE PROBLEM ON THE REAGENT - Iamgoofball + return //Noticed runtime errors from facid trying to damage ghosts, this should fix. --NEO + // Certain elements in too large amounts cause side-effects + holder.remove_reagent(src.id, metabolization_rate) //By default it slowly disappears. + current_cycle++ + return + +// Called when two reagents of the same are mixing. +/datum/reagent/proc/on_merge(var/data) + return + +/datum/reagent/proc/on_move(var/mob/M) + return + +/datum/reagent/proc/on_update(var/atom/A) + return + +/datum/reagent/Destroy() + holder = null + return ..() \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm new file mode 100644 index 00000000000..b07cd8355e3 --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm @@ -0,0 +1,748 @@ +//ALCOHOL WOO +/datum/reagent/ethanol + name = "Ethanol" //Parent class for all alcoholic reagents. + id = "ethanol" + description = "A well-known alcohol with a variety of applications." + reagent_state = LIQUID + nutriment_factor = 0 //So alcohol can fill you up! If they want to. + color = "#404030" // rgb: 64, 64, 48 + var/datum/martial_art/drunk_brawling/F = new + var/dizzy_adj = 3 + var/slurr_adj = 3 + var/confused_adj = 2 + var/slur_start = 65 //amount absorbed after which mob starts slurring + var/brawl_start = 75 //amount absorbed after which mob switches to drunken brawling as a fighting style + var/confused_start = 130 //amount absorbed after which mob starts confusing directions + var/vomit_start = 180 //amount absorbed after which mob starts vomitting + var/blur_start = 260 //amount absorbed after which mob starts getting blurred vision + var/pass_out = 325 //amount absorbed after which mob starts passing out + +/datum/reagent/ethanol/on_mob_life(var/mob/living/M as mob, var/alien) + // Sobering multiplier. + // Sober block makes it more difficult to get drunk + var/sober_str=!(SOBER in M.mutations)?1:2 + M:nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) + if(!src.data) data = 1 + src.data++ + + var/d = data + + // make all the beverages work together + for(var/datum/reagent/ethanol/A in holder.reagent_list) + if(isnum(A.data)) d += A.data + + d/=sober_str + + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species && (H.species.name == "Skrell" || H.species.name =="Neara")) //Skrell and Neara get very drunk very quickly. + d*=5 + + M.dizziness += dizzy_adj. + if(d >= slur_start && d < pass_out) + if (!M:slurring) M:slurring = 1 + M:slurring += slurr_adj/sober_str + if(d >= brawl_start && ishuman(M)) + var/mob/living/carbon/human/H = M + F.teach(H,1) + if(src.volume < 3) + if(H.martial_art == F) + F.remove(H) + if(d >= confused_start && prob(33)) + if (!M:confused) M:confused = 1 + M.confused = max(M:confused+(confused_adj/sober_str),0) + if(d >= blur_start) + M.eye_blurry = max(M.eye_blurry, 10/sober_str) + M:drowsyness = max(M:drowsyness, 0) + if(d >= vomit_start) + if(prob(8)) + M.fakevomit() + if(d >= pass_out) + M:paralysis = max(M:paralysis, 20/sober_str) + M:drowsyness = max(M:drowsyness, 30/sober_str) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/liver/L = H.internal_organs_by_name["liver"] + if (istype(L)) + L.take_damage(0.1, 1) + H.adjustToxLoss(0.1) + holder.remove_reagent(src.id, 0.4) + ..() + return + +/datum/reagent/ethanol/reaction_obj(var/obj/O, var/volume) + if(istype(O,/obj/item/weapon/paper)) + var/obj/item/weapon/paper/paperaffected = O + paperaffected.clearpaper() + usr << "The solution melts away the ink on the paper." + if(istype(O,/obj/item/weapon/book)) + if(volume >= 5) + var/obj/item/weapon/book/affectedbook = O + affectedbook.dat = null + usr << "The solution melts away the ink on the book." + else + usr << "It wasn't enough..." + return + +/datum/reagent/ethanol/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with ethanol isn't quite as good as fuel. + if(!istype(M, /mob/living)) + return + if(method == TOUCH) + M.adjust_fire_stacks(volume / 15) + return + + +/datum/reagent/ethanol/beer //It's really much more stronger than other drinks. + name = "Beer" + id = "beer" + description = "An alcoholic beverage made from malted grains, hops, yeast, and water." + nutriment_factor = 2 * FOOD_METABOLISM + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/beer/on_mob_life(var/mob/living/M as mob) + ..() + M:jitteriness = max(M:jitteriness-3,0) + return + +/datum/reagent/ethanol/cider + name = "Cider" + id = "cider" + description = "An alcoholic beverage derived from apples." + color = "#174116" + +/datum/reagent/ethanol/whiskey + name = "Whiskey" + id = "whiskey" + description = "A superb and well-aged single-malt whiskey. Damn." + color = "#664300" // rgb: 102, 67, 0 + dizzy_adj = 4 + +/datum/reagent/ethanol/specialwhiskey + name = "Special Blend Whiskey" + id = "specialwhiskey" + description = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything." + color = "#664300" // rgb: 102, 67, 0 + slur_start = 30 //amount absorbed after which mob starts slurring + brawl_start = 40 + +/datum/reagent/ethanol/gin + name = "Gin" + id = "gin" + description = "It's gin. In space. I say, good sir." + color = "#664300" // rgb: 102, 67, 0 + dizzy_adj = 3 + +/datum/reagent/ethanol/absinthe + name = "Absinthe" + id = "absinthe" + description = "Watch out that the Green Fairy doesn't come for you!" + color = "#33EE00" // rgb: lots, ??, ?? + overdose_threshold = 30 + dizzy_adj = 5 + slur_start = 25 + brawl_start = 40 + confused_start = 100 + +//copy paste from LSD... shoot me +/datum/reagent/ethanol/absinthe/on_mob_life(var/mob/M) + if(!M) M = holder.my_atom + if(!data) data = 1 + data++ + M:hallucination += 5 + if(volume > overdose_threshold) + M:adjustToxLoss(1) + ..() + return + +/datum/reagent/ethanol/rum + name = "Rum" + id = "rum" + description = "Popular with the sailors. Not very popular with everyone else." + color = "#664300" // rgb: 102, 67, 0 + overdose_threshold = 30 + +/datum/reagent/ethanol/rum/on_mob_life(var/mob/living/M as mob) + ..() + M.dizziness +=5 + if(volume > overdose_threshold) + M:adjustToxLoss(1) + return + +/datum/reagent/ethanol/mojito + name = "Mojito" + id = "mojito" + description = "If it's good enough for Spesscuba, it's good enough for you." + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/vodka + name = "Vodka" + id = "vodka" + description = "Number one drink AND fueling choice for Russians worldwide." + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/sake + name = "Sake" + id = "sake" + description = "Anime's favorite drink." + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/tequilla + name = "Tequila" + id = "tequilla" + description = "A strong and mildly flavoured, mexican produced spirit. Feeling thirsty hombre?" + color = "#A8B0B7" // rgb: 168, 176, 183 + +/datum/reagent/ethanol/vermouth + name = "Vermouth" + id = "vermouth" + description = "You suddenly feel a craving for a martini..." + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/wine + name = "Wine" + id = "wine" + description = "An premium alchoholic beverage made from distilled grape juice." + color = "#7E4043" // rgb: 126, 64, 67 + dizzy_adj = 2 + slur_start = 65 //amount absorbed after which mob starts slurring + confused_start = 145 //amount absorbed after which mob starts confusing directions + +/datum/reagent/ethanol/cognac + name = "Cognac" + id = "cognac" + description = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. Classy as fornication." + color = "#664300" // rgb: 102, 67, 0 + dizzy_adj = 4 + confused_start = 115 //amount absorbed after which mob starts confusing directions + +/datum/reagent/ethanol/suicider //otherwise known as "I want to get so smashed my liver gives out and I die from alcohol poisoning". + name = "Suicider" + id = "suicider" + description = "An unbelievably strong and potent variety of Cider." + color = "#CF3811" + dizzy_adj = 20 + slurr_adj = 20 + confused_adj = 3 + slur_start = 15 + brawl_start = 25 + confused_start = 40 + blur_start = 60 + pass_out = 80 + +/datum/reagent/ethanol/ale + name = "Ale" + id = "ale" + description = "A dark alchoholic beverage made by malted barley and yeast." + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/thirteenloko + name = "Thirteen Loko" + id = "thirteenloko" + description = "A potent mixture of caffeine and alcohol." + reagent_state = LIQUID + color = "#102000" // rgb: 16, 32, 0 + +/datum/reagent/ethanol/thirteenloko/on_mob_life(var/mob/living/M as mob) + ..() + M:nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) + M:drowsyness = max(0,M:drowsyness-7) + //if(!M:sleeping_willingly) + // M:sleeping = max(0,M.sleeping-2) + if (M.bodytemperature > 310) + M.bodytemperature = max(310, M.bodytemperature-5) + M.Jitter(1) + return + + +/////////////////////////////////////////////////////////////////cocktail entities////////////////////////////////////////////// + +/datum/reagent/ethanol/bilk + name = "Bilk" + id = "bilk" + description = "This appears to be beer mixed with milk. Disgusting." + reagent_state = LIQUID + color = "#895C4C" // rgb: 137, 92, 76 + +/datum/reagent/ethanol/atomicbomb + name = "Atomic Bomb" + id = "atomicbomb" + description = "Nuclear proliferation never tasted so good." + reagent_state = LIQUID + color = "#666300" // rgb: 102, 99, 0 + +/datum/reagent/ethanol/threemileisland + name = "THree Mile Island Iced Tea" + id = "threemileisland" + description = "Made for a woman, strong enough for a man." + reagent_state = LIQUID + color = "#666340" // rgb: 102, 99, 64 + +/datum/reagent/ethanol/goldschlager + name = "Goldschlager" + id = "goldschlager" + description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/patron + name = "Patron" + id = "patron" + description = "Tequila with silver in it, a favorite of alcoholic women in the club scene." + reagent_state = LIQUID + color = "#585840" // rgb: 88, 88, 64 + +/datum/reagent/ethanol/gintonic + name = "Gin and Tonic" + id = "gintonic" + description = "An all time classic, mild cocktail." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/cuba_libre + name = "Cuba Libre" + id = "cubalibre" + description = "Rum, mixed with cola. Viva la revolution." + reagent_state = LIQUID + color = "#3E1B00" // rgb: 62, 27, 0 + +/datum/reagent/ethanol/whiskey_cola + name = "Whiskey Cola" + id = "whiskeycola" + description = "Whiskey, mixed with cola. Surprisingly refreshing." + reagent_state = LIQUID + color = "#3E1B00" // rgb: 62, 27, 0 + +/datum/reagent/ethanol/martini + name = "Classic Martini" + id = "martini" + description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/vodkamartini + name = "Vodka Martini" + id = "vodkamartini" + description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/white_russian + name = "White Russian" + id = "whiterussian" + description = "That's just, like, your opinion, man..." + reagent_state = LIQUID + color = "#A68340" // rgb: 166, 131, 64 + +/datum/reagent/ethanol/screwdrivercocktail + name = "Screwdriver" + id = "screwdrivercocktail" + description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious." + reagent_state = LIQUID + color = "#A68310" // rgb: 166, 131, 16 + +/datum/reagent/ethanol/booger + name = "Booger" + id = "booger" + description = "Ewww..." + reagent_state = LIQUID + color = "#A68310" // rgb: 166, 131, 16 + +/datum/reagent/ethanol/bloody_mary + name = "Bloody Mary" + id = "bloodymary" + description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/gargle_blaster + name = "Pan-Galactic Gargle Blaster" + id = "gargleblaster" + description = "Whoah, this stuff looks volatile!" + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/brave_bull + name = "Brave Bull" + id = "bravebull" + description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/tequilla_sunrise + name = "Tequila Sunrise" + id = "tequillasunrise" + description = "Tequila and orange juice. Much like a Screwdriver, only Mexican~" + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/toxins_special + name = "Toxins Special" + id = "toxinsspecial" + description = "This thing is FLAMING!. CALL THE DAMN SHUTTLE!" + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/beepsky_smash + name = "Beepsky Smash" + id = "beepskysmash" + description = "Deny drinking this and prepare for THE LAW." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/changelingsting + name = "Changeling Sting" + id = "changelingsting" + description = "You take a tiny sip and feel a burning sensation..." + reagent_state = LIQUID + color = "#2E6671" // rgb: 46, 102, 113 + +/datum/reagent/ethanol/irish_cream + name = "Irish Cream" + id = "irishcream" + description = "Whiskey-imbued cream, what else would you expect from the Irish." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/manly_dorf + name = "The Manly Dorf" + id = "manlydorf" + description = "Beer and Ale, brought together in a delicious mix. Intended for true men only." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/longislandicedtea + name = "Long Island Iced Tea" + id = "longislandicedtea" + description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/moonshine + name = "Moonshine" + id = "moonshine" + description = "You've really hit rock bottom now... your liver packed its bags and left last night." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/b52 + name = "B-52" + id = "b52" + description = "Coffee, Irish Cream, and congac. You will get bombed." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/irishcoffee + name = "Irish Coffee" + id = "irishcoffee" + description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/margarita + name = "Margarita" + id = "margarita" + description = "On the rocks with salt on the rim. Arriba~!" + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/black_russian + name = "Black Russian" + id = "blackrussian" + description = "For the lactose-intolerant. Still as classy as a White Russian." + reagent_state = LIQUID + color = "#360000" // rgb: 54, 0, 0 + +/datum/reagent/ethanol/manhattan + name = "Manhattan" + id = "manhattan" + description = "The Detective's undercover drink of choice. He never could stomach gin..." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/manhattan_proj + name = "Manhattan Project" + id = "manhattan_proj" + description = "A scienitst's drink of choice, for pondering ways to blow up the station." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/whiskeysoda + name = "Whiskey Soda" + id = "whiskeysoda" + description = "Ultimate refreshment." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/antifreeze + name = "Anti-freeze" + id = "antifreeze" + description = "Ultimate refreshment." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/barefoot + name = "Barefoot" + id = "barefoot" + description = "Barefoot and pregnant" + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/snowwhite + name = "Snow White" + id = "snowwhite" + description = "A cold refreshment" + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/demonsblood + name = "Demons Blood" + id = "demonsblood" + description = "AHHHH!!!!" + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + dizzy_adj = 10 + slurr_adj = 10 + +/datum/reagent/ethanol/vodkatonic + name = "Vodka and Tonic" + id = "vodkatonic" + description = "For when a gin and tonic isn't russian enough." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + dizzy_adj = 4 + slurr_adj = 3 + +/datum/reagent/ethanol/ginfizz + name = "Gin Fizz" + id = "ginfizz" + description = "Refreshingly lemony, deliciously dry." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + dizzy_adj = 4 + slurr_adj = 3 + +/datum/reagent/ethanol/bahama_mama + name = "Bahama mama" + id = "bahama_mama" + description = "Tropic cocktail." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/singulo + name = "Singulo" + id = "singulo" + description = "A blue-space beverage!" + reagent_state = LIQUID + color = "#2E6671" // rgb: 46, 102, 113 + dizzy_adj = 15 + slurr_adj = 15 + +/datum/reagent/ethanol/sbiten + name = "Sbiten" + id = "sbiten" + description = "A spicy Vodka! Might be a little hot for the little guys!" + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/sbiten/on_mob_life(var/mob/living/M as mob) + ..() + if (M.bodytemperature < 360) + M.bodytemperature = min(360, M.bodytemperature+50) //310 is the normal bodytemp. 310.055 + return + +/datum/reagent/ethanol/devilskiss + name = "Devils Kiss" + id = "devilskiss" + description = "Creepy time!" + reagent_state = LIQUID + color = "#A68310" // rgb: 166, 131, 16 + +/datum/reagent/ethanol/red_mead + name = "Red Mead" + id = "red_mead" + description = "The true Viking drink! Even though it has a strange red color." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/mead + name = "Mead" + id = "mead" + description = "A Vikings drink, though a cheap one." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/iced_beer + name = "Iced Beer" + id = "iced_beer" + description = "A beer which is so cold the air around it freezes." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/iced_beer/on_mob_life(var/mob/living/M as mob) + ..() + if (M.bodytemperature < 270) + M.bodytemperature = min(270, M.bodytemperature-40) //310 is the normal bodytemp. 310.055 + return + +/datum/reagent/ethanol/grog + name = "Grog" + id = "grog" + description = "Watered down rum, Nanotrasen approves!" + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/aloe + name = "Aloe" + id = "aloe" + description = "So very, very, very good." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/andalusia + name = "Andalusia" + id = "andalusia" + description = "A nice, strange named drink." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/alliescocktail + name = "Allies Cocktail" + id = "alliescocktail" + description = "A drink made from your allies." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/acid_spit + name = "Acid Spit" + id = "acidspit" + description = "A drink by Nanotrasen. Made from live aliens." + reagent_state = LIQUID + color = "#365000" // rgb: 54, 80, 0 + +/datum/reagent/ethanol/amasec + name = "Amasec" + id = "amasec" + description = "Official drink of the Imperium." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + + +/datum/reagent/ethanol/neurotoxin + name = "Neurotoxin" + id = "neurotoxin" + description = "A strong neurotoxin that puts the subject into a death-like state." + reagent_state = LIQUID + color = "#2E2E61" // rgb: 46, 46, 97 + +/datum/reagent/ethanol/neurotoxin/on_mob_life(var/mob/living/M as mob) + M.weakened = max(M.weakened, 3) + if(!data) + data = 1 + data++ + M.dizziness +=6 + if(data >= 15 && data <45) + if (!M.slurring) + M.slurring = 1 + M.slurring += 3 + else if(data >= 45 && prob(50) && data <55) + M.confused = max(M.confused+3,0) + else if(data >=55) + M.druggy = max(M.druggy, 55) + else if(data >=200) + M.adjustToxLoss(2) + ..() + return + +/datum/reagent/ethanol/bananahonk + name = "Banana Mama" + id = "bananahonk" + description = "A drink from Clown Heaven." + nutriment_factor = 1 * FOOD_METABOLISM + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/bananahonk/on_mob_life(var/mob/living/M as mob) + M.nutrition += nutriment_factor + if(istype(M, /mob/living/carbon/human) && M.job in list("Clown")) + if(!M) M = holder.my_atom + M.heal_organ_damage(1,1) + M.nutrition += nutriment_factor + ..() + return + ..() + +/datum/reagent/ethanol/silencer + name = "Silencer" + id = "silencer" + description = "A drink from Mime Heaven." + nutriment_factor = 1 * FOOD_METABOLISM + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/ethanol/silencer/on_mob_life(var/mob/living/M as mob) + M.nutrition += nutriment_factor + if(istype(M, /mob/living/carbon/human) && M.job in list("Mime")) + if(!M) M = holder.my_atom + M.heal_organ_damage(1,1) + M.nutrition += nutriment_factor + ..() + return + ..() + +/datum/reagent/ethanol/changelingsting + name = "Changeling Sting" + id = "changelingsting" + description = "A stingy drink." + reagent_state = LIQUID + color = "#2E6671" // rgb: 46, 102, 113 + +/datum/reagent/ethanol/changelingsting/on_mob_life(var/mob/living/M as mob) + ..() + M.dizziness +=5 + return + +/datum/reagent/ethanol/irishcarbomb + name = "Irish Car Bomb" + id = "irishcarbomb" + description = "Mmm, tastes like chocolate cake..." + reagent_state = LIQUID + color = "#2E6671" // rgb: 46, 102, 113 + +/datum/reagent/ethanol/irishcarbomb/on_mob_life(var/mob/living/M as mob) + ..() + M.dizziness +=5 + return + +/datum/reagent/ethanol/syndicatebomb + name = "Syndicate Bomb" + id = "syndicatebomb" + description = "A Syndicate bomb" + reagent_state = LIQUID + color = "#2E6671" // rgb: 46, 102, 113 + +/datum/reagent/ethanol/erikasurprise + name = "Erika Surprise" + id = "erikasurprise" + description = "The surprise is, it's green!" + reagent_state = LIQUID + color = "#2E6671" // rgb: 46, 102, 113 + +/datum/reagent/ethanol/driestmartini + name = "Driest Martini" + id = "driestmartini" + description = "Only for the experienced. You think you see sand floating in the glass." + nutriment_factor = 1 * FOOD_METABOLISM + color = "#2E6671" // rgb: 46, 102, 113 + +/datum/reagent/ethanol/driestmartini/on_mob_life(var/mob/living/M as mob) + if(!data) data = 1 + data++ + M.dizziness +=10 + if(data >= 55 && data <115) + if (!M.stuttering) M.stuttering = 1 + M.stuttering += 10 + else if(data >= 115 && prob(33)) + M.confused = max(M.confused+15,15) + ..() + + return \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_drink.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_drink.dm new file mode 100644 index 00000000000..e66e48fbdfe --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/drink/reagents_drink.dm @@ -0,0 +1,279 @@ +/datum/reagent/drink/orangejuice + name = "Orange juice" + id = "orangejuice" + description = "Both delicious AND rich in Vitamin C, what more do you need?" + color = "#E78108" // rgb: 231, 129, 8 + +/datum/reagent/drink/orangejuicde/on_mob_life(var/mob/living/M as mob) + ..() + if(M.getOxyLoss() && prob(30)) M.adjustOxyLoss(-1*REM) + return + +/datum/reagent/drink/tomatojuice + name = "Tomato Juice" + id = "tomatojuice" + description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?" + color = "#731008" // rgb: 115, 16, 8 + +/datum/reagent/drink/tomatojuice/on_mob_life(var/mob/living/M as mob) + ..() + if(M.getFireLoss() && prob(20)) M.heal_organ_damage(0,1) + return + +/datum/reagent/drink/limejuice + name = "Lime Juice" + id = "limejuice" + description = "The sweet-sour juice of limes." + color = "#365E30" // rgb: 54, 94, 48 + +/datum/reagent/drink/limejuice/on_mob_life(var/mob/living/M as mob) + ..() + if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1) + return + + +/datum/reagent/drink/carrotjuice + name = "Carrot juice" + id = "carrotjuice" + description = "It is just like a carrot but without crunching." + color = "#973800" // rgb: 151, 56, 0 + +/datum/reagent/drink/carrotjuicde/on_mob_life(var/mob/living/M as mob) + ..() + M.eye_blurry = max(M.eye_blurry-1 , 0) + M.eye_blind = max(M.eye_blind-1 , 0) + if(!data) data = 1 + switch(data) + if(1 to 20) + //nothing + if(21 to INFINITY) + if (prob(data-10)) + M.disabilities &= ~NEARSIGHTED + data++ + return + +/datum/reagent/drink/doctor_delight + name = "The Doctor's Delight" + id = "doctorsdelight" + description = "A gulp a day keeps the MediBot away. That's probably for the best." + reagent_state = LIQUID + color = "#FF8CFF" // rgb: 255, 140, 255 + +/datum/reagent/drink/doctors_delight/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1) + ..() + return + +/datum/reagent/drink/berryjuice + name = "Berry Juice" + id = "berryjuice" + description = "A delicious blend of several different kinds of berries." + color = "#863333" // rgb: 134, 51, 51 + +/datum/reagent/drink/poisonberryjuice + name = "Poison Berry Juice" + id = "poisonberryjuice" + description = "A tasty juice blended from various kinds of very deadly and toxic berries." + color = "#863353" // rgb: 134, 51, 83 + +/datum/reagent/drink/poisonberryjuice/on_mob_life(var/mob/living/M as mob) + ..() + M.adjustToxLoss(1) + return + +/datum/reagent/drink/watermelonjuice + name = "Watermelon Juice" + id = "watermelonjuice" + description = "Delicious juice made from watermelon." + color = "#863333" // rgb: 134, 51, 51 + +/datum/reagent/drink/lemonjuice + name = "Lemon Juice" + id = "lemonjuice" + description = "This juice is VERY sour." + color = "#863333" // rgb: 175, 175, 0 + +/datum/reagent/drink/grapejuice + name = "Grape Juice" + id = "grapejuice" + description = "This juice is known to stain shirts." + color = "#993399" // rgb: 153, 51, 153 + +/datum/reagent/drink/banana + name = "Banana Juice" + id = "banana" + description = "The raw essence of a banana." + color = "#863333" // rgb: 175, 175, 0 + +/datum/reagent/drink/banana/on_mob_life(var/mob/living/M as mob) + M.nutrition += nutriment_factor + if(istype(M, /mob/living/carbon/human) && M.job in list("Clown")) + if(!M) M = holder.my_atom + M.heal_organ_damage(1,1) + M.nutrition += nutriment_factor + ..() + return + ..() + +/datum/reagent/drink/nothing + name = "Nothing" + id = "nothing" + description = "Absolutely nothing." + +/datum/reagent/drink/nothing/on_mob_life(var/mob/living/M as mob) + M.nutrition += nutriment_factor + if(istype(M, /mob/living/carbon/human) && M.job in list("Mime")) + if(!M) M = holder.my_atom + M.heal_organ_damage(1,1) + M.nutrition += nutriment_factor + ..() + return + ..() + +/datum/reagent/drink/potato_juice + name = "Potato Juice" + id = "potato" + description = "Juice of the potato. Bleh." + nutriment_factor = 2 * FOOD_METABOLISM + color = "#302000" // rgb: 48, 32, 0 + +/datum/reagent/drink/milk + name = "Milk" + id = "milk" + description = "An opaque white liquid produced by the mammary glands of mammals." + color = "#DFDFDF" // rgb: 223, 223, 223 + +/datum/reagent/drink/milk/on_mob_life(var/mob/living/M as mob) + if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) + if(holder.has_reagent("capsaicin")) + holder.remove_reagent("capsaicin", 10*REAGENTS_METABOLISM) + ..() + return + +/datum/reagent/drink/milk/soymilk + name = "Soy Milk" + id = "soymilk" + description = "An opaque white liquid made from soybeans." + color = "#DFDFC7" // rgb: 223, 223, 199 + +/datum/reagent/drink/milk/cream + name = "Cream" + id = "cream" + description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?" + color = "#DFD7AF" // rgb: 223, 215, 175 + +/datum/reagent/drink/milk/chocolate_milk + name = "Chocolate milk" + id ="chocolate_milk" + description = "Chocolate-flavored milk, tastes like being a kid again." + color = "#85432C" + +/datum/reagent/drink/hot_coco + name = "Hot Chocolate" + id = "hot_coco" + description = "Made with love! And coco beans." + nutriment_factor = 2 * FOOD_METABOLISM + color = "#403010" // rgb: 64, 48, 16 + adj_temp = 5 + +/datum/reagent/drink/coffee + name = "Coffee" + id = "coffee" + description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant." + color = "#482000" // rgb: 72, 32, 0 + adj_dizzy = -5 + adj_drowsy = -3 + adj_sleepy = -2 + adj_temp = 25 + overdose_threshold = 45 + +/datum/reagent/drink/coffee/on_mob_life(var/mob/living/M as mob) + if(adj_temp > 0 && holder.has_reagent("frostoil")) + holder.remove_reagent("frostoil", 10*REAGENTS_METABOLISM) + if(prob(50)) + M.AdjustParalysis(-1) + M.AdjustStunned(-1) + M.AdjustWeakened(-1) + ..() + return + +/datum/reagent/drink/coffee/overdose_process(var/mob/living/M as mob) + if(volume > 45) + M.Jitter(5) + + ..() + return + +/datum/reagent/drink/coffee/icecoffee + name = "Iced Coffee" + id = "icecoffee" + description = "Coffee and ice, refreshing and cool." + color = "#102838" // rgb: 16, 40, 56 + adj_temp = -5 + +/datum/reagent/drink/coffee/soy_latte + name = "Soy Latte" + id = "soy_latte" + description = "A nice and tasty beverage while you are reading your hippie books." + color = "#664300" // rgb: 102, 67, 0 + adj_sleepy = 0 + adj_temp = 5 + +/datum/reagent/drink/coffee/soy_latte/on_mob_life(var/mob/living/M as mob) + ..() + M.sleeping = 0 + if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) + return + +/datum/reagent/drink/coffee/cafe_latte + name = "Cafe Latte" + id = "cafe_latte" + description = "A nice, strong and tasty beverage while you are reading." + color = "#664300" // rgb: 102, 67, 0 + adj_sleepy = 0 + adj_temp = 5 + +/datum/reagent/drink/coffee/cafe_latte/on_mob_life(var/mob/living/M as mob) + ..() + M.sleeping = 0 + if(M.getBruteLoss() && prob(20)) + M.heal_organ_damage(1,0) + return + +/datum/reagent/drink/tea + name = "Tea" + id = "tea" + description = "Tasty black tea: It has antioxidants. It's good for you!" + color = "#101000" // rgb: 16, 16, 0 + adj_dizzy = -2 + adj_drowsy = -1 + adj_sleepy = -3 + adj_temp = 20 + +/datum/reagent/drink/tea/on_mob_life(var/mob/living/M as mob) + ..() + if(M.getToxLoss() && prob(20)) + M.adjustToxLoss(-1) + return + +/datum/reagent/drink/tea/icetea + name = "Iced Tea" + id = "icetea" + description = "No relation to a certain rap artist/ actor." + color = "#104038" // rgb: 16, 64, 56 + adj_temp = -5 + +/datum/reagent/drink/kahlua + name = "Kahlua" + id = "kahlua" + description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!" + color = "#664300" // rgb: 102, 67, 0 + adj_dizzy = -5 + adj_drowsy = -3 + adj_sleepy = -2 + +/datum/reagent/drink/kahlua/on_mob_life(var/mob/living/M as mob) + ..() + M.Jitter(5) + return \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_drink_base.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_drink_base.dm new file mode 100644 index 00000000000..3bc3b364929 --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/drink/reagents_drink_base.dm @@ -0,0 +1,26 @@ +/datum/reagent/drink + name = "Drink" + id = "drink" + description = "Uh, some kind of drink." + reagent_state = LIQUID + nutriment_factor = 1 * REAGENTS_METABOLISM + color = "#E78108" // rgb: 231, 129, 8 + var/adj_dizzy = 0 + var/adj_drowsy = 0 + var/adj_sleepy = 0 + var/adj_temp = 0 + +/datum/reagent/drink/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) + if (adj_dizzy) M.dizziness = max(0,M.dizziness + adj_dizzy) + if (adj_drowsy) M.drowsyness = max(0,M.drowsyness + adj_drowsy) + if (adj_sleepy) M.sleeping = max(0,M.sleeping + adj_sleepy) + if (adj_temp) + if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 + M.bodytemperature = min(310, M.bodytemperature + (25 * TEMPERATURE_DAMAGE_COEFFICIENT)) + // Drinks should be used up faster than other reagents. + holder.remove_reagent(src.id, FOOD_METABOLISM) + ..() + return diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_drink_cold.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_drink_cold.dm new file mode 100644 index 00000000000..e9acef2da7d --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/drink/reagents_drink_cold.dm @@ -0,0 +1,141 @@ +/datum/reagent/drink/cold + name = "Cold drink" + adj_temp = -5 + +/datum/reagent/drink/cold/tonic + name = "Tonic Water" + id = "tonic" + description = "It tastes strange but at least the quinine keeps the Space Malaria at bay." + color = "#664300" // rgb: 102, 67, 0 + adj_dizzy = -5 + adj_drowsy = -3 + adj_sleepy = -2 + +/datum/reagent/drink/cold/sodawater + name = "Soda Water" + id = "sodawater" + description = "A can of club soda. Why not make a scotch and soda?" + color = "#619494" // rgb: 97, 148, 148 + adj_dizzy = -5 + adj_drowsy = -3 + +/datum/reagent/drink/cold/ice + name = "Ice" + id = "ice" + description = "Frozen water, your dentist wouldn't like you chewing this." + reagent_state = SOLID + color = "#619494" // rgb: 97, 148, 148 + +/datum/reagent/drink/cold/space_cola + name = "Cola" + id = "cola" + description = "A refreshing beverage." + reagent_state = LIQUID + color = "#100800" // rgb: 16, 8, 0 + adj_drowsy = -3 + +/datum/reagent/drink/cold/nuka_cola + name = "Nuka Cola" + id = "nuka_cola" + description = "Cola, cola never changes." + color = "#100800" // rgb: 16, 8, 0 + adj_sleepy = -2 + +/datum/reagent/drink/cold/nuka_cola/on_mob_life(var/mob/living/M as mob) + M.Jitter(20) + M.druggy = max(M.druggy, 30) + M.dizziness +=5 + M.drowsyness = 0 + M.status_flags |= GOTTAGOFAST + ..() + return + +/datum/reagent/drink/cold/spacemountainwind + name = "Space Mountain Wind" + id = "spacemountainwind" + description = "Blows right through you like a space wind." + color = "#102000" // rgb: 16, 32, 0 + adj_drowsy = -7 + adj_sleepy = -1 + +/datum/reagent/drink/cold/dr_gibb + name = "Dr. Gibb" + id = "dr_gibb" + description = "A delicious blend of 42 different flavours" + color = "#102000" // rgb: 16, 32, 0 + adj_drowsy = -6 + +/datum/reagent/drink/cold/space_up + name = "Space-Up" + id = "space_up" + description = "Tastes like a hull breach in your mouth." + color = "#202800" // rgb: 32, 40, 0 + adj_temp = -8 + +/datum/reagent/drink/cold/lemon_lime + name = "Lemon Lime" + description = "A tangy substance made of 0.5% natural citrus!" + id = "lemon_lime" + color = "#878F00" // rgb: 135, 40, 0 + adj_temp = -8 + +/datum/reagent/drink/cold/lemonade + name = "Lemonade" + description = "Oh the nostalgia..." + id = "lemonade" + color = "#FFFF00" // rgb: 255, 255, 0 + +/datum/reagent/drink/cold/kiraspecial + name = "Kira Special" + description = "Long live the guy who everyone had mistaken for a girl. Baka!" + id = "kiraspecial" + color = "#CCCC99" // rgb: 204, 204, 153 + +/datum/reagent/drink/cold/brownstar + name = "Brown Star" + description = "Its not what it sounds like..." + id = "brownstar" + color = "#9F3400" // rgb: 159, 052, 000 + adj_temp = - 2 + +/datum/reagent/drink/cold/milkshake + name = "Milkshake" + description = "Glorious brainfreezing mixture." + id = "milkshake" + color = "#AEE5E4" // rgb" 174, 229, 228 + adj_temp = -9 + +/datum/reagent/drink/cold/milkshake/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(!data) data = 1 + switch(data) + if(1 to 15) + M.bodytemperature -= 5 * TEMPERATURE_DAMAGE_COEFFICIENT + if(holder.has_reagent("capsaicin")) + holder.remove_reagent("capsaicin", 5) + if(istype(M, /mob/living/carbon/slime)) + M.bodytemperature -= rand(5,20) + if(15 to 25) + M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT + if(istype(M, /mob/living/carbon/slime)) + M.bodytemperature -= rand(10,20) + if(25 to INFINITY) + M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT + if(prob(1)) M.emote("shiver") + if(istype(M, /mob/living/carbon/slime)) + M.bodytemperature -= rand(15,20) + data++ + holder.remove_reagent(src.id, FOOD_METABOLISM) + ..() + return + +/datum/reagent/drink/cold/rewriter + name = "Rewriter" + description = "The secert of the sanctuary of the Libarian..." + id = "rewriter" + color = "#485000" // rgb:72, 080, 0 + +/datum/reagent/drink/cold/rewriter/on_mob_life(var/mob/living/M as mob) + ..() + M.Jitter(5) + return \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/reagents_admin.dm b/code/modules/reagents/oldchem/reagents/reagents_admin.dm new file mode 100644 index 00000000000..dd9e73a96b1 --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/reagents_admin.dm @@ -0,0 +1,54 @@ +/datum/reagent/adminordrazine //An OP chemical for admins + name = "Adminordrazine" + id = "adminordrazine" + description = "It's magic. We don't have to explain it." + reagent_state = LIQUID + color = "#C8A5DC" // rgb: 200, 165, 220 + process_flags = ORGANIC | SYNTHETIC //Adminbuse knows no bounds! + +/datum/reagent/adminordrazine/on_mob_life(var/mob/living/carbon/M as mob) + if(!M) M = holder.my_atom ///This can even heal dead people. + for(var/datum/reagent/R in M.reagents.reagent_list) + if(R != src) + M.reagents.remove_reagent(R.id,5) + M.setCloneLoss(0) + M.setOxyLoss(0) + M.radiation = 0 + M.heal_organ_damage(5,5) + M.adjustToxLoss(-5) + M.hallucination = 0 + M.setBrainLoss(0) + M.disabilities = 0 + M.sdisabilities = 0 + M.eye_blurry = 0 + M.eye_blind = 0 + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/eyes/E = H.internal_organs_by_name["eyes"] + if(istype(E)) + E.damage = max(E.damage-5 , 0) + M.SetWeakened(0) + M.SetStunned(0) + M.SetParalysis(0) + M.silent = 0 + M.dizziness = 0 + M.drowsyness = 0 + M.stuttering = 0 + M.slurring = 0 + M.confused = 0 + M.sleeping = 0 + M.jitteriness = 0 + if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs + var/mob/living/carbon/C = M + if(C.virus2.len) + for (var/ID in C.virus2) + var/datum/disease2/disease/V = C.virus2[ID] + C.antibodies |= V.antigen + ..() + return + + +/datum/reagent/adminordrazine/nanites + name = "Nanites" + id = "nanites" + description = "Nanomachines that aid in rapid cellular regeneration." \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/reagents_drugs.dm b/code/modules/reagents/oldchem/reagents/reagents_drugs.dm new file mode 100644 index 00000000000..a00da8f283a --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/reagents_drugs.dm @@ -0,0 +1,95 @@ +/datum/reagent/serotrotium + name = "Serotrotium" + id = "serotrotium" + description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans." + reagent_state = LIQUID + color = "#202040" // rgb: 20, 20, 40 + +/datum/reagent/serotrotium/on_mob_life(var/mob/living/M as mob) + if(ishuman(M)) + if(prob(7)) M.emote(pick("twitch","drool","moan","gasp")) + holder.remove_reagent(src.id, 0.25 * REAGENTS_METABOLISM) + return + + +/datum/reagent/lithium + name = "Lithium" + id = "lithium" + description = "A chemical element." + reagent_state = SOLID + color = "#808080" // rgb: 128, 128, 128 + +/datum/reagent/lithium/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(M.canmove && !M.restrained() && istype(M.loc, /turf/space)) + step(M, pick(cardinal)) + if(prob(5)) M.emote(pick("twitch","drool","moan")) + ..() + return + + +/datum/reagent/hippies_delight + name = "Hippie's Delight" + id = "hippiesdelight" + description = "You just don't get it maaaan." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/hippies_delight/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.druggy = max(M.druggy, 50) + if(!data) data = 1 + switch(data) + if(1 to 5) + if (!M.stuttering) M.stuttering = 1 + M.Dizzy(10) + if(prob(10)) M.emote(pick("twitch","giggle")) + if(5 to 10) + if (!M.stuttering) M.stuttering = 1 + M.Jitter(20) + M.Dizzy(20) + M.druggy = max(M.druggy, 45) + if(prob(20)) M.emote(pick("twitch","giggle")) + if (10 to INFINITY) + if (!M.stuttering) M.stuttering = 1 + M.Jitter(40) + M.Dizzy(40) + M.druggy = max(M.druggy, 60) + if(prob(30)) M.emote(pick("twitch","giggle")) + holder.remove_reagent(src.id, 0.2) + data++ + ..() + return + + +/datum/reagent/lsd + name = "Lysergic acid diethylamide" + id = "lsd" + description = "A highly potent hallucinogenic substance. Far out, maaaan." + reagent_state = LIQUID + color = "#0000D8" + +/datum/reagent/lsd/on_mob_life(var/mob/living/M) + if(!M) M = holder.my_atom + M.hallucination += 10 + ..() + return + + +/datum/reagent/space_drugs + name = "Space drugs" + id = "space_drugs" + description = "An illegal chemical compound used as drug." + reagent_state = LIQUID + color = "#9087A2" + metabolization_rate = 0.2 + +/datum/reagent/space_drugs/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.druggy = max(M.druggy, 15) + if(isturf(M.loc) && !istype(M.loc, /turf/space)) + if(M.canmove && !M.restrained()) + if(prob(10)) step(M, pick(cardinal)) + if(prob(7)) M.emote(pick("twitch","drool","moan","giggle")) + ..() + return \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/reagents_flammable.dm b/code/modules/reagents/oldchem/reagents/reagents_flammable.dm new file mode 100644 index 00000000000..4603aa6c238 --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/reagents_flammable.dm @@ -0,0 +1,136 @@ +/datum/reagent/fuel + name = "Welding fuel" + id = "fuel" + description = "A highly flammable blend of basic hydrocarbons, mostly Acetylene. Useful for both welding and organic chemistry, and can be fortified into a heavier oil." + reagent_state = LIQUID + color = "#060606" + +/datum/reagent/fuel/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite! + if(!istype(M, /mob/living)) + return + if(method == TOUCH) + M.adjust_fire_stacks(volume / 10) + return + ..() + +/datum/reagent/fuel/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustToxLoss(1) + ..() + return + +/datum/reagent/fuel/unholywater //if you somehow managed to extract this from someone, dont splash it on yourself and have a smoke + name = "Unholy Water" + id = "unholywater" + description = "Something that shouldn't exist on this plane of existance." + process_flags = ORGANIC | SYNTHETIC //ethereal means everything processes it. + +/datum/reagent/fuel/unholywater/on_mob_life(mob/living/M) + M.adjustBrainLoss(3) + if(iscultist(M)) + M.status_flags |= GOTTAGOFAST + M.drowsyness = max(M.drowsyness-5, 0) + M.AdjustParalysis(-2) + M.AdjustStunned(-2) + M.AdjustWeakened(-2) + else + M.adjustToxLoss(2) + M.adjustFireLoss(2) + M.adjustOxyLoss(2) + M.adjustBruteLoss(2) + holder.remove_reagent(src.id, 1) + + +/datum/reagent/incendiary_fuel //copy-pasta of welding fuel; allow incendiary grenades to function better without the headache of people spraying fuel everywhere with regular welding fuel. + name = "Incendiary fuel" + id = "incendiaryfuel" + description = "A highly flammable compound used in incendiary grenades." + reagent_state = LIQUID + color = "#660000" // rgb: 102, 0, 0 + +/datum/reagent/incendiary_fuel/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite! + if(!istype(M, /mob/living)) + return + if(method == TOUCH) + M.adjust_fire_stacks(volume / 10) + return + +/datum/reagent/incendiary_fuel/reaction_obj(var/obj/O, var/volume) + var/turf/the_turf = get_turf(O) + if(!the_turf) + return //No sense trying to start a fire if you don't have a turf to set on fire. --NEO + new /obj/effect/decal/cleanable/liquid_fuel(the_turf, volume) + +/datum/reagent/incendiary_fuel/reaction_turf(var/turf/T, var/volume) + new /obj/effect/decal/cleanable/liquid_fuel(T, volume) + return + +/datum/reagent/incendiary_fuel/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustToxLoss(1) + ..() + return + + +/datum/reagent/plasma + name = "Plasma" + id = "plasma" + description = "The liquid phase of an unusual extraterrestrial compound." + reagent_state = LIQUID + color = "#7A2B94" + +/datum/reagent/plasma/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustToxLoss(1*REM) + if(holder.has_reagent("epinephrine")) + holder.remove_reagent("epinephrine", 2) + ..() + return + +/datum/reagent/plasma/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with plasma is stronger than fuel! + if(!istype(M, /mob/living)) + return + if(method == TOUCH) + M.adjust_fire_stacks(volume / 5) + ..() + return + + +/datum/reagent/thermite + name = "Thermite" + id = "thermite" + description = "Thermite produces an aluminothermic reaction known as a thermite reaction. Can be used to melt walls." + reagent_state = SOLID + color = "#673910" // rgb: 103, 57, 16 + process_flags = ORGANIC | SYNTHETIC + +/datum/reagent/thermite/reaction_turf(var/turf/T, var/volume) + src = null + if(volume >= 5) + if(istype(T, /turf/simulated/wall)) + T:thermite = 1 + T.overlays.Cut() + T.overlays = image('icons/effects/effects.dmi',icon_state = "thermite") + return + +/datum/reagent/thermite/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustFireLoss(1) + ..() + return + + +/datum/reagent/glycerol + name = "Glycerol" + id = "glycerol" + description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity." + reagent_state = LIQUID + color = "#808080" // rgb: 128, 128, 128 + + +/datum/reagent/nitroglycerin + name = "Nitroglycerin" + id = "nitroglycerin" + description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol." + reagent_state = LIQUID + color = "#808080" // rgb: 128, 128, 128 \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/reagents_food.dm b/code/modules/reagents/oldchem/reagents/reagents_food.dm new file mode 100644 index 00000000000..485a42e7ca7 --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/reagents_food.dm @@ -0,0 +1,425 @@ +/////////////////////////Food Reagents//////////////////////////// +// Part of the food code. Nutriment is used instead of the old "heal_amt" code. Also is where all the food +// condiments, additives, and such go. +/datum/reagent/nutriment // Pure nutriment, universally digestable and thus slightly less effective + name = "Nutriment" + id = "nutriment" + description = "A questionable mixture of various pure nutrients commonly found in processed foods." + reagent_state = SOLID + nutriment_factor = 12 * REAGENTS_METABOLISM + color = "#664330" // rgb: 102, 67, 48 + +/datum/reagent/nutriment/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(!(M.mind in ticker.mode.vampires)) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species && H.species.dietflags) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients + H.nutrition += nutriment_factor // For hunger and fatness + if(prob(50)) M.heal_organ_damage(1,0) + if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals + if(prob(50)) M.heal_organ_damage(1,0) + ..() + return + + +/datum/reagent/protein // Meat-based protein, digestable by carnivores and omnivores, worthless to herbivores + name = "Protein" + id = "protein" + description = "Various essential proteins and fats commonly found in animal flesh and blood." + reagent_state = SOLID + nutriment_factor = 15 * REAGENTS_METABOLISM + color = "#664330" // rgb: 102, 67, 48 + +/datum/reagent/protein/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(!(M.mind in ticker.mode.vampires)) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species && H.species.dietflags && !(H.species.dietflags & DIET_HERB)) //Make sure the species has it's dietflag set, and that it is not a herbivore + H.nutrition += nutriment_factor // For hunger and fatness + if(prob(50)) M.heal_organ_damage(1,0) + if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals + if(prob(50)) M.heal_organ_damage(1,0) + ..() + return + + +/datum/reagent/plantmatter // Plant-based biomatter, digestable by herbivores and omnivores, worthless to carnivores + name = "Plant-matter" + id = "plantmatter" + description = "Vitamin-rich fibers and natural sugars commonly found in fresh produce." + reagent_state = SOLID + nutriment_factor = 15 * REAGENTS_METABOLISM + color = "#664330" // rgb: 102, 67, 48 + +/datum/reagent/plantmatter/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(!(M.mind in ticker.mode.vampires)) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species && H.species.dietflags && !(H.species.dietflags & DIET_CARN)) //Make sure the species has it's dietflag set, and that it is not a carnivore + H.nutrition += nutriment_factor // For hunger and fatness + if(prob(50)) M.heal_organ_damage(1,0) + if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals + if(prob(50)) M.heal_organ_damage(1,0) + ..() + return + + +/datum/reagent/soysauce + name = "Soysauce" + id = "soysauce" + description = "A salty sauce made from the soy plant." + reagent_state = LIQUID + nutriment_factor = 2 * REAGENTS_METABOLISM + color = "#792300" // rgb: 121, 35, 0 + +/datum/reagent/ketchup + name = "Ketchup" + id = "ketchup" + description = "Ketchup, catsup, whatever. It's tomato paste." + reagent_state = LIQUID + nutriment_factor = 5 * REAGENTS_METABOLISM + color = "#731008" // rgb: 115, 16, 8 + + +/datum/reagent/capsaicin + name = "Capsaicin Oil" + id = "capsaicin" + description = "This is what makes chilis hot." + reagent_state = LIQUID + color = "#B31008" // rgb: 179, 16, 8 + +/datum/reagent/capsaicin/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(!data) data = 1 + switch(data) + if(1 to 15) + M.bodytemperature += 5 * TEMPERATURE_DAMAGE_COEFFICIENT + if(holder.has_reagent("frostoil")) + holder.remove_reagent("frostoil", 5) + if(istype(M, /mob/living/carbon/slime)) + M.bodytemperature += rand(5,20) + if(15 to 25) + M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT + if(istype(M, /mob/living/carbon/slime)) + M.bodytemperature += rand(10,20) + if(25 to INFINITY) + M.bodytemperature += 15 * TEMPERATURE_DAMAGE_COEFFICIENT + if(istype(M, /mob/living/carbon/slime)) + M.bodytemperature += rand(15,20) + holder.remove_reagent(src.id, FOOD_METABOLISM) + data++ + ..() + return + + +/datum/reagent/sodiumchloride + name = "Salt" + id = "sodiumchloride" + description = "Sodium chloride, common table salt." + reagent_state = SOLID + color = "#B1B0B0" + +/datum/reagent/sodiumchloride/overdose_process(var/mob/living/M as mob) + if(volume > 100) + if(prob(70)) + M.adjustBrainLoss(1) + if(prob(8)) + M.adjustToxLoss(rand(1,2)) + ..() + return + + +/datum/reagent/blackpepper + name = "Black Pepper" + id = "blackpepper" + description = "A powder ground from peppercorns. *AAAACHOOO*" + reagent_state = SOLID + // no color (ie, black) + +/datum/reagent/coco + name = "Coco Powder" + id = "coco" + description = "A fatty, bitter paste made from coco beans." + reagent_state = SOLID + nutriment_factor = 5 * REAGENTS_METABOLISM + color = "#302000" // rgb: 48, 32, 0 + +/datum/reagent/coco/on_mob_life(var/mob/living/M as mob) + M.nutrition += nutriment_factor + ..() + return + +/datum/reagent/hot_coco + name = "Hot Chocolate" + id = "hot_coco" + description = "Made with love! And coco beans." + reagent_state = LIQUID + nutriment_factor = 2 * REAGENTS_METABOLISM + color = "#403010" // rgb: 64, 48, 16 + +/datum/reagent/hot_coco/on_mob_life(var/mob/living/M as mob) + if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 + M.bodytemperature = min(310, M.bodytemperature + (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) + M.nutrition += nutriment_factor + ..() + return + + +/datum/reagent/psilocybin + name = "Psilocybin" + id = "psilocybin" + description = "A strong psycotropic derived from certain species of mushroom." + color = "#E700E7" // rgb: 231, 0, 231 + +/datum/reagent/psilocybin/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.druggy = max(M.druggy, 30) + if(!data) data = 1 + switch(data) + if(1 to 5) + if (!M.stuttering) M.stuttering = 1 + M.Dizzy(5) + if(prob(10)) M.emote(pick("twitch","giggle")) + if(5 to 10) + if (!M.stuttering) M.stuttering = 1 + M.Jitter(10) + M.Dizzy(10) + M.druggy = max(M.druggy, 35) + if(prob(20)) M.emote(pick("twitch","giggle")) + if (10 to INFINITY) + if (!M.stuttering) M.stuttering = 1 + M.Jitter(20) + M.Dizzy(20) + M.druggy = max(M.druggy, 40) + if(prob(30)) M.emote(pick("twitch","giggle")) + data++ + ..() + return + + +/datum/reagent/sprinkles + name = "Sprinkles" + id = "sprinkles" + description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." + nutriment_factor = 1 * REAGENTS_METABOLISM + color = "#FF00FF" // rgb: 255, 0, 255 + +/datum/reagent/sprinkles/on_mob_life(var/mob/living/M as mob) + M.nutrition += nutriment_factor + if(istype(M, /mob/living/carbon/human) && M.job in list("Security Officer", "Head of Security", "Detective", "Warden")) + if(!M) M = holder.my_atom + M.heal_organ_damage(1,1) + M.nutrition += nutriment_factor + ..() + return + ..() + + +/datum/reagent/cornoil + name = "Corn Oil" + id = "cornoil" + description = "An oil derived from various types of corn." + reagent_state = LIQUID + nutriment_factor = 20 * REAGENTS_METABOLISM + color = "#302000" // rgb: 48, 32, 0 + +/datum/reagent/cornoil/on_mob_life(var/mob/living/M as mob) + M.nutrition += nutriment_factor + ..() + return + +/datum/reagent/cornoil/reaction_turf(var/turf/simulated/T, var/volume) + if (!istype(T)) return + src = null + if(volume >= 3) + if(T.wet >= 1) return + T.wet = 1 + if(T.wet_overlay) + T.overlays -= T.wet_overlay + T.wet_overlay = null + T.wet_overlay = image('icons/effects/water.dmi',T,"wet_floor") + T.overlays += T.wet_overlay + + spawn(800) + if (!istype(T)) return + if(T.wet >= 2) return + T.wet = 0 + if(T.wet_overlay) + T.overlays -= T.wet_overlay + T.wet_overlay = null + var/hotspot = (locate(/obj/effect/hotspot) in T) + if(hotspot) + var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) + lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) + lowertemp.react() + T.assume_air(lowertemp) + qdel(hotspot) + + +/datum/reagent/enzyme + name = "Denatured Enzyme" + id = "enzyme" + description = "Heated beyond usefulness, this enzyme is now worthless." + reagent_state = LIQUID + color = "#282314" // rgb: 54, 94, 48 + + +/datum/reagent/dry_ramen + name = "Dry Ramen" + id = "dry_ramen" + description = "Space age food, since August 25, 1958. Contains dried noodles, vegetables, and chemicals that boil in contact with water." + reagent_state = SOLID + nutriment_factor = 1 * REAGENTS_METABOLISM + color = "#302000" // rgb: 48, 32, 0 + +/datum/reagent/dry_ramen/on_mob_life(var/mob/living/M as mob) + M.nutrition += nutriment_factor + ..() + return + + +/datum/reagent/hot_ramen + name = "Hot Ramen" + id = "hot_ramen" + description = "The noodles are boiled, the flavors are artificial, just like being back in school." + reagent_state = LIQUID + nutriment_factor = 5 * REAGENTS_METABOLISM + color = "#302000" // rgb: 48, 32, 0 + +/datum/reagent/hot_ramen/on_mob_life(var/mob/living/M as mob) + M.nutrition += nutriment_factor + if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 + M.bodytemperature = min(310, M.bodytemperature + (10 * TEMPERATURE_DAMAGE_COEFFICIENT)) + ..() + return + + +/datum/reagent/hell_ramen + name = "Hell Ramen" + id = "hell_ramen" + description = "The noodles are boiled, the flavors are artificial, just like being back in school." + reagent_state = LIQUID + nutriment_factor = 5 * REAGENTS_METABOLISM + color = "#302000" // rgb: 48, 32, 0 + +/datum/reagent/hell_ramen/on_mob_life(var/mob/living/M as mob) + M.nutrition += nutriment_factor + M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT + ..() + return + + +/datum/reagent/flour + name = "flour" + id = "flour" + description = "This is what you rub all over yourself to pretend to be a ghost." + reagent_state = SOLID + nutriment_factor = 1 * REAGENTS_METABOLISM + color = "#FFFFFF" // rgb: 0, 0, 0 + +/datum/reagent/flour/on_mob_life(var/mob/living/M as mob) + M.nutrition += nutriment_factor + ..() + return + +/datum/reagent/flour/reaction_turf(var/turf/T, var/volume) + src = null + if(!istype(T, /turf/space)) + new /obj/effect/decal/cleanable/flour(T) + + +/datum/reagent/rice + name = "Rice" + id = "rice" + description = "Enjoy the great taste of nothing." + reagent_state = SOLID + nutriment_factor = 1 * REAGENTS_METABOLISM + color = "#FFFFFF" // rgb: 0, 0, 0 + +/datum/reagent/rice/on_mob_life(var/mob/living/M as mob) + M.nutrition += nutriment_factor + ..() + return + + +/datum/reagent/cherryjelly + name = "Cherry Jelly" + id = "cherryjelly" + description = "Totally the best. Only to be spread on foods with excellent lateral symmetry." + reagent_state = LIQUID + nutriment_factor = 1 * REAGENTS_METABOLISM + color = "#801E28" // rgb: 128, 30, 40 + +/datum/reagent/cherryjelly/on_mob_life(var/mob/living/M as mob) + M.nutrition += nutriment_factor + ..() + return + + +/datum/reagent/toxin/coffeepowder + name = "Coffee Grounds" + id = "coffeepowder" + description = "Finely ground Coffee beans, used to make coffee." + reagent_state = SOLID + color = "#5B2E0D" // rgb: 91, 46, 13 + +/datum/reagent/toxin/teapowder + name = "Ground Tea Leaves" + id = "teapowder" + description = "Finely shredded Tea leaves, used for making tea." + reagent_state = SOLID + color = "#7F8400" // rgb: 127, 132, 0 + +//Reagents used for plant fertilizers. +/datum/reagent/toxin/fertilizer + name = "fertilizer" + id = "fertilizer" + description = "A chemical mix good for growing plants with." + reagent_state = LIQUID +// toxpwr = 0.2 //It's not THAT poisonous. + color = "#664330" // rgb: 102, 67, 48 + +/datum/reagent/toxin/fertilizer/eznutrient + name = "EZ Nutrient" + id = "eznutrient" + +/datum/reagent/toxin/fertilizer/left4zed + name = "Left-4-Zed" + id = "left4zed" + +/datum/reagent/toxin/fertilizer/robustharvest + name = "Robust Harvest" + id = "robustharvest" + + +/datum/reagent/sugar + name = "Sugar" + id = "sugar" + description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste." + reagent_state = SOLID + color = "#FFFFFF" // rgb: 255, 255, 255 + overdose_threshold = 200 // Hyperglycaemic shock + +/datum/reagent/sugar/on_mob_life(var/mob/living/M as mob) + if(prob(4)) + M.reagents.add_reagent("epinephrine", 1.2) + if(prob(50)) + M.AdjustParalysis(-1) + M.AdjustStunned(-1) + M.AdjustWeakened(-1) + if(current_cycle >= 90) + M.jitteriness += 10 + ..() + return + +/datum/reagent/sugar/overdose_process(var/mob/living/M as mob) + if(volume > 200) + M << "You pass out from hyperglycemic shock!" + M.Paralyse(1) + if(prob(8)) + M.adjustToxLoss(rand(1,2)) + ..() + return diff --git a/code/modules/reagents/oldchem/reagents/reagents_med.dm b/code/modules/reagents/oldchem/reagents/reagents_med.dm new file mode 100644 index 00000000000..696fa6354a5 --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/reagents_med.dm @@ -0,0 +1,152 @@ +/datum/reagent/hydrocodone + name = "Hydrocodone" + id = "hydrocodone" + description = "An extremely effective painkiller; may have long term abuse consequences." + reagent_state = LIQUID + color = "#C805DC" + metabolization_rate = 0.3 // Lasts 1.5 minutes for 15 units + shock_reduction = 200 + +/datum/reagent/hydrocodone/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + ..() + return + +/datum/reagent/virus_food + name = "Virus Food" + id = "virusfood" + description = "A mixture of water, milk, and oxygen. Virus cells can use this mixture to reproduce." + reagent_state = LIQUID + nutriment_factor = 2 * REAGENTS_METABOLISM + color = "#899613" // rgb: 137, 150, 19 + +/datum/reagent/virus_food/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.nutrition += nutriment_factor*REM + ..() + return + +/datum/reagent/sterilizine + name = "Sterilizine" + id = "sterilizine" + description = "Sterilizes wounds in preparation for surgery." + reagent_state = LIQUID + color = "#C8A5DC" // rgb: 200, 165, 220 + + //makes you squeaky clean +/datum/reagent/sterilizine/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) + if (method == TOUCH) + M.germ_level -= min(volume*20, M.germ_level) + +/datum/reagent/sterilizine/reaction_obj(var/obj/O, var/volume) + O.germ_level -= min(volume*20, O.germ_level) + +/datum/reagent/sterilizine/reaction_turf(var/turf/T, var/volume) + T.germ_level -= min(volume*20, T.germ_level) + +/datum/reagent/synaptizine + name = "Synaptizine" + id = "synaptizine" + description = "Synaptizine is used to treat neuroleptic shock. Can be used to help remove disabling symptoms such as paralysis." + reagent_state = LIQUID + color = "#FA46FA" + +/datum/reagent/synaptizine/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.AdjustParalysis(-1) + M.AdjustStunned(-1) + M.AdjustWeakened(-1) + if(prob(50)) + M.adjustBrainLoss(-1.0) + ..() + return + +/datum/reagent/audioline + name = "Audioline" + id = "audioline" + description = "Heals ear damage." + reagent_state = LIQUID + color = "#6600FF" // rgb: 100, 165, 255 + +/datum/reagent/audioline/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.ear_damage = 0 + M.ear_deaf = 0 + ..() + return + +/datum/reagent/mitocholide + name = "Mitocholide" + id = "mitocholide" + description = "A specialized drug that stimulates the mitochondria of cells to encourage healing of internal organs." + reagent_state = LIQUID + color = "#C8A5DC" // rgb: 200, 165, 220 + +/datum/reagent/mitocholide/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(ishuman(M)) + var/mob/living/carbon/human/H = M + + //Mitocholide is hard enough to get, it's probably fair to make this all internal organs + for(var/name in H.internal_organs_by_name) + var/obj/item/organ/I = H.internal_organs_by_name[name] + if(I.damage > 0) + I.damage -= 0.20 + ..() + return + +/datum/reagent/cryoxadone + name = "Cryoxadone" + id = "cryoxadone" + description = "A plasma mixture with almost magical healing powers. Its main limitation is that the targets body temperature must be under 265K for it to metabolise correctly." + reagent_state = LIQUID + color = "#0000C8" // rgb: 200, 165, 220 + +/datum/reagent/cryoxadone/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(M.bodytemperature < 265) + M.adjustCloneLoss(-4) + M.adjustOxyLoss(-10) + M.heal_organ_damage(12,12) + M.adjustToxLoss(-3) + M.status_flags &= ~DISFIGURED + ..() + return + +/datum/reagent/rezadone + name = "Rezadone" + id = "rezadone" + description = "A powder derived from fish toxin, this substance can effectively treat genetic damage in humanoids, though excessive consumption has side effects." + reagent_state = SOLID + color = "#669900" // rgb: 102, 153, 0 + +/datum/reagent/rezadone/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(!data) data = 1 + data++ + switch(data) + if(1 to 15) + M.adjustCloneLoss(-1) + M.heal_organ_damage(1,1) + if(15 to 35) + M.adjustCloneLoss(-2) + M.heal_organ_damage(2,1) + M.status_flags &= ~DISFIGURED + if(35 to INFINITY) + M.adjustToxLoss(1) + M.Dizzy(5) + M.Jitter(5) + + ..() + return + +/datum/reagent/spaceacillin + name = "Spaceacillin" + id = "spaceacillin" + description = "An all-purpose antibiotic agent extracted from space fungus." + reagent_state = LIQUID + color = "#0AB478" + +/datum/reagent/spaceacillin/on_mob_life(var/mob/living/M as mob) + ..() + return \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/reagents_misc.dm b/code/modules/reagents/oldchem/reagents/reagents_misc.dm new file mode 100644 index 00000000000..8c3352243eb --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/reagents_misc.dm @@ -0,0 +1,222 @@ +/*/datum/reagent/silicate + name = "Silicate" + id = "silicate" + description = "A compound that can be used to reinforce glass." + reagent_state = LIQUID + color = "#C7FFFF" // rgb: 199, 255, 255 + +/datum/reagent/silicate/reaction_obj(var/obj/O, var/volume) + src = null + if(istype(O,/obj/structure/window)) + if(O:silicate <= 200) + + O:silicate += volume + O:health += volume * 3 + + if(!O:silicateIcon) + var/icon/I = icon(O.icon,O.icon_state,O.dir) + + var/r = (volume / 100) + 1 + var/g = (volume / 70) + 1 + var/b = (volume / 50) + 1 + I.SetIntensity(r,g,b) + O.icon = I + O:silicateIcon = I + else + var/icon/I = O:silicateIcon + + var/r = (volume / 100) + 1 + var/g = (volume / 70) + 1 + var/b = (volume / 50) + 1 + I.SetIntensity(r,g,b) + O.icon = I + O:silicateIcon = I + + return*/ + + +/datum/reagent/oxygen + name = "Oxygen" + id = "oxygen" + description = "A colorless, odorless gas." + reagent_state = GAS + color = "#808080" // rgb: 128, 128, 128 + +/datum/reagent/oxygen/on_mob_life(var/mob/living/M as mob, var/alien) + if(M.stat == 2) return + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species && (H.species.name == "Vox" || H.species.name =="Vox Armalis")) + M.adjustToxLoss(REAGENTS_METABOLISM) + holder.remove_reagent(src.id, REAGENTS_METABOLISM) //By default it slowly disappears. + return + ..() + + +/datum/reagent/nitrogen + name = "Nitrogen" + id = "nitrogen" + description = "A colorless, odorless, tasteless gas." + reagent_state = GAS + color = "#808080" // rgb: 128, 128, 128 + +/datum/reagent/nitrogen/on_mob_life(var/mob/living/M as mob, var/alien) + if(M.stat == 2) return + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species && (H.species.name == "Vox" || H.species.name =="Vox Armalis")) + M.adjustOxyLoss(-2*REM) + holder.remove_reagent(src.id, REAGENTS_METABOLISM) //By default it slowly disappears. + return + ..() + + +/datum/reagent/hydrogen + name = "Hydrogen" + id = "hydrogen" + description = "A colorless, odorless, nonmetallic, tasteless, highly combustible diatomic gas." + reagent_state = GAS + color = "#808080" // rgb: 128, 128, 128 + + +/datum/reagent/potassium + name = "Potassium" + id = "potassium" + description = "A soft, low-melting solid that can easily be cut with a knife. Reacts violently with water." + reagent_state = SOLID + color = "#A0A0A0" // rgb: 160, 160, 160 + + +/datum/reagent/sulfur + name = "Sulfur" + id = "sulfur" + description = "A chemical element." + reagent_state = SOLID + color = "#BF8C00" // rgb: 191, 140, 0 + + +/datum/reagent/sodium + name = "Sodium" + id = "sodium" + description = "A chemical element." + reagent_state = SOLID + color = "#808080" // rgb: 128, 128, 128 + + +/datum/reagent/phosphorus + name = "Phosphorus" + id = "phosphorus" + description = "A chemical element." + reagent_state = SOLID + color = "#832828" // rgb: 131, 40, 40 + + +/datum/reagent/carbon + name = "Carbon" + id = "carbon" + description = "A chemical element." + reagent_state = SOLID + color = "#1C1300" // rgb: 30, 20, 0 + +/datum/reagent/carbon/reaction_turf(var/turf/T, var/volume) + src = null + // Only add one dirt per turf. Was causing people to crash. + if(!istype(T, /turf/space) && !(locate(/obj/effect/decal/cleanable/dirt) in T)) + new /obj/effect/decal/cleanable/dirt(T) + + +/datum/reagent/gold + name = "Gold" + id = "gold" + description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known." + reagent_state = SOLID + color = "#F7C430" // rgb: 247, 196, 48 + + +/datum/reagent/silver + name = "Silver" + id = "silver" + description = "A lustrous metallic element regarded as one of the precious metals." + reagent_state = SOLID + color = "#D0D0D0" // rgb: 208, 208, 208 + + +/datum/reagent/aluminum + name = "Aluminum" + id = "aluminum" + description = "A silvery white and ductile member of the boron group of chemical elements." + reagent_state = SOLID + color = "#A8A8A8" // rgb: 168, 168, 168 + + +/datum/reagent/silicon + name = "Silicon" + id = "silicon" + description = "A tetravalent metalloid, silicon is less reactive than its chemical analog carbon." + reagent_state = SOLID + color = "#A8A8A8" // rgb: 168, 168, 168 + + +/datum/reagent/copper + name = "Copper" + id = "copper" + description = "A highly ductile metal." + color = "#6E3B08" // rgb: 110, 59, 8 + + +/datum/reagent/iron + name = "Iron" + id = "iron" + description = "Pure iron is a metal." + reagent_state = SOLID + color = "#C8A5DC" // rgb: 200, 165, 220 +/* +/datum/reagent/iron/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if((M.virus) && (prob(8) && (M.virus.name=="Magnitis"))) + if(M.virus.spread == "Airborne") + M.virus.spread = "Remissive" + M.virus.stage-- + if(M.virus.stage <= 0) + M.resistances += M.virus.type + M.virus = null + holder.remove_reagent(src.id, 0.2) + return +*/ + + + +//foam +/datum/reagent/fluorosurfactant + name = "Fluorosurfactant" + id = "fluorosurfactant" + description = "A perfluoronated sulfonic acid that forms a foam when mixed with water." + reagent_state = LIQUID + color = "#9E6B38" // rgb: 158, 107, 56 + +// metal foaming agent +// this is lithium hydride. Add other recipies (e.g. LiH + H2O -> LiOH + H2) eventually +/datum/reagent/ammonia + name = "Ammonia" + id = "ammonia" + description = "A caustic substance commonly used in fertilizer or household cleaners." + reagent_state = GAS + color = "#404030" // rgb: 64, 64, 48 + +/datum/reagent/diethylamine + name = "Diethylamine" + id = "diethylamine" + description = "A secondary amine, useful as a plant nutrient and as building block for other compounds." + reagent_state = LIQUID + color = "#322D00" + + +// Ported from Bay as part of the Botany Update +// Allows you to make planks from any plant that has this reagent in it. +// Also vines with this reagent are considered dense. +/datum/reagent/woodpulp + name = "Wood Pulp" + id = "woodpulp" + description = "A mass of wood fibers." + reagent_state = LIQUID + color = "#B97A57" \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/reagents_toxin.dm b/code/modules/reagents/oldchem/reagents/reagents_toxin.dm new file mode 100644 index 00000000000..e338766553f --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/reagents_toxin.dm @@ -0,0 +1,597 @@ +/datum/reagent/toxin + name = "Toxin" + id = "toxin" + description = "A Toxic chemical." + reagent_state = LIQUID + color = "#CF3600" // rgb: 207, 54, 0 + +/datum/reagent/toxin/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustToxLoss(2) + ..() + return + + +/datum/reagent/spider_venom + name = "Spider venom" + id = "spidertoxin" + description = "A toxic venom injected by spacefaring arachnids." + reagent_state = LIQUID + color = "#CF3600" // rgb: 207, 54, 0 + +/datum/reagent/spider_venom/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustToxLoss(1.5) + ..() + return + + +/datum/reagent/plasticide + name = "Plasticide" + id = "plasticide" + description = "Liquid plastic, do not eat." + reagent_state = LIQUID + color = "#CF3600" // rgb: 207, 54, 0 + +/datum/reagent/plasticide/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustToxLoss(1.5) + ..() + return + + +/datum/reagent/minttoxin + name = "Mint Toxin" + id = "minttoxin" + description = "Useful for dealing with undesirable customers." + reagent_state = LIQUID + color = "#CF3600" // rgb: 207, 54, 0 + +/datum/reagent/minttoxin/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if (FAT in M.mutations) + M.gib() + ..() + return + + +/datum/reagent/slimejelly + name = "Slime Jelly" + id = "slimejelly" + description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." + reagent_state = LIQUID + color = "#801E28" // rgb: 128, 30, 40 + +/datum/reagent/slimejelly/on_mob_life(var/mob/living/M as mob) + if(prob(10)) + M << "\red Your insides are burning!" + M.adjustToxLoss(rand(20,60)*REM) + else if(prob(40)) + M.heal_organ_damage(5*REM,0) + ..() + return + +/datum/reagent/slimetoxin + name = "Mutation Toxin" + id = "mutationtoxin" + description = "A corruptive toxin produced by slimes." + reagent_state = LIQUID + color = "#13BC5E" // rgb: 19, 188, 94 + +/datum/reagent/slimetoxin/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(ishuman(M)) + var/mob/living/carbon/human/human = M + if(human.species.name != "Shadow") + M << "\red Your flesh rapidly mutates!" + M << "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids." + M << "\red Your body reacts violently to light. \green However, it naturally heals in darkness." + M << "Aside from your new traits, you are mentally unchanged and retain your prior obligations." + human.set_species("Shadow") + ..() + return + +/datum/reagent/aslimetoxin + name = "Advanced Mutation Toxin" + id = "amutationtoxin" + description = "An advanced corruptive toxin produced by slimes." + reagent_state = LIQUID + color = "#13BC5E" // rgb: 19, 188, 94 + +/datum/reagent/aslimetoxin/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(istype(M, /mob/living/carbon) && M.stat != DEAD) + M << "\red Your flesh rapidly mutates!" + if(M.notransform) return + M.notransform = 1 + M.canmove = 0 + M.icon = null + M.overlays.Cut() + M.invisibility = 101 + for(var/obj/item/W in M) + if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something + qdel(W) + continue + W.layer = initial(W.layer) + W.loc = M.loc + W.dropped(M) + var/mob/living/carbon/slime/new_mob = new /mob/living/carbon/slime(M.loc) + new_mob.a_intent = I_HARM + new_mob.universal_speak = 1 + if(M.mind) + M.mind.transfer_to(new_mob) + else + new_mob.key = M.key + qdel(M) + ..() + return + + +/datum/reagent/mercury + name = "Mercury" + id = "mercury" + description = "A chemical element." + reagent_state = LIQUID + color = "#484848" // rgb: 72, 72, 72 + metabolization_rate = 0.2 + penetrates_skin = 1 + +/datum/reagent/mercury/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(prob(70)) + M.adjustBrainLoss(1) + ..() + return + + +/datum/reagent/chlorine + name = "Chlorine" + id = "chlorine" + description = "A chemical element." + reagent_state = GAS + color = "#808080" // rgb: 128, 128, 128 + penetrates_skin = 1 + process_flags = ORGANIC | SYNTHETIC + +/datum/reagent/chlorine/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustFireLoss(1) + ..() + return + +/datum/reagent/fluorine + name = "Fluorine" + id = "fluorine" + description = "A highly-reactive chemical element." + reagent_state = GAS + color = "#6A6054" + penetrates_skin = 1 + process_flags = ORGANIC | SYNTHETIC + +/datum/reagent/fluorine/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustFireLoss(1) + M.adjustToxLoss(1*REM) + ..() + return + + +/datum/reagent/radium + name = "Radium" + id = "radium" + description = "Radium is an alkaline earth metal. It is extremely radioactive." + reagent_state = SOLID + color = "#C7C7C7" // rgb: 199,199,199 + metabolization_rate = 0.4 + penetrates_skin = 1 + +/datum/reagent/radium/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.apply_effect(4*REM,IRRADIATE,0) + // radium may increase your chances to cure a disease + if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs + var/mob/living/carbon/C = M + if(C.virus2.len) + for (var/ID in C.virus2) + var/datum/disease2/disease/V = C.virus2[ID] + if(prob(5)) + if(prob(50)) + M.apply_effect(50,IRRADIATE,0) // curing it that way may kill you instead + M.adjustToxLoss(100) + C.antibodies |= V.antigen + ..() + return + +/datum/reagent/radium/reaction_turf(var/turf/T, var/volume) + src = null + if(volume >= 3) + if(!istype(T, /turf/space)) + new /obj/effect/decal/cleanable/greenglow(T) + return + + +/datum/reagent/mutagen + name = "Unstable mutagen" + id = "mutagen" + description = "Might cause unpredictable mutations. Keep away from children." + reagent_state = LIQUID + color = "#04DF27" + metabolization_rate = 0.3 + +/datum/reagent/mutagen/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) + if(!..()) return + if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. + src = null + if((method==TOUCH && prob(33)) || method==INGEST) + if(prob(98)) + randmutb(M) + else + randmutg(M) + domutcheck(M, null) + M.UpdateAppearance() + return + +/datum/reagent/mutagen/on_mob_life(var/mob/living/M as mob) + if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. + if(!M) M = holder.my_atom + M.apply_effect(2*REM,IRRADIATE,0) + if(prob(4)) + randmutb(M) + ..() + return + + +/datum/reagent/uranium + name ="Uranium" + id = "uranium" + description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive." + reagent_state = SOLID + color = "#B8B8C0" // rgb: 184, 184, 192 + +/datum/reagent/uranium/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.apply_effect(2,IRRADIATE,0) + ..() + return + +/datum/reagent/uranium/reaction_turf(var/turf/T, var/volume) + src = null + if(volume >= 3) + if(!istype(T, /turf/space)) + new /obj/effect/decal/cleanable/greenglow(T) + + +/datum/reagent/lexorin + name = "Lexorin" + id = "lexorin" + description = "Lexorin temporarily stops respiration. Causes tissue damage." + reagent_state = LIQUID + color = "#52685D" + metabolization_rate = 0.2 + +/datum/reagent/lexorin/on_mob_life(var/mob/living/M as mob) + if(M.stat == 2.0) + return + if(!M) M = holder.my_atom + M.adjustToxLoss(1) + ..() + return + + +/datum/reagent/sacid + name = "Sulphuric acid" + id = "sacid" + description = "A strong mineral acid with the molecular formula H2SO4." + reagent_state = LIQUID + color = "#00D72B" + process_flags = ORGANIC | SYNTHETIC + +/datum/reagent/sacid/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustFireLoss(1) + ..() + return + +/datum/reagent/sacid/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) + if(!istype(M, /mob/living)) + return + if(method == TOUCH) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + + if(volume > 25) + + if(H.wear_mask) + H << "\red Your mask protects you from the acid!" + return + + if(H.head) + H << "\red Your helmet protects you from the acid!" + return + + if(!M.unacidable) + if(prob(75)) + var/obj/item/organ/external/affecting = H.get_organ("head") + if(affecting) + affecting.take_damage(20, 0) + H.UpdateDamageIcon() + H.emote("scream") + else + M.take_organ_damage(15,0) + else + M.take_organ_damage(15,0) + + if(method == INGEST) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + + if(volume < 10) + M << "The greenish acidic substance stings you, but isn't concentrated enough to harm you!" + + if(volume >=10 && volume <=25) + if(!H.unacidable) + M.take_organ_damage(min(max(volume-10,2)*2,20),0) + M.emote("scream") + + + if(volume > 25) + if(!M.unacidable) + if(prob(75)) + var/obj/item/organ/external/affecting = H.get_organ("head") + if(affecting) + affecting.take_damage(20, 0) + H.UpdateDamageIcon() + H.emote("scream") + else + M.take_organ_damage(15,0) + +/datum/reagent/sacid/reaction_obj(var/obj/O, var/volume) + if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)) && prob(40)) + if(!O.unacidable) + var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc) + I.desc = "Looks like this was \an [O] some time ago." + for(var/mob/M in viewers(5, O)) + M << "\red \the [O] melts." + qdel(O) + + +/datum/reagent/hellwater + name = "Hell Water" + id = "hell_water" + description = "YOUR FLESH! IT BURNS!" + process_flags = ORGANIC | SYNTHETIC //Admin-bus has no brakes! KILL THEM ALL. + +/datum/reagent/hellwater/on_mob_life(var/mob/living/M as mob) + M.fire_stacks = min(5,M.fire_stacks + 3) + M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire + M.adjustToxLoss(1) + M.adjustFireLoss(1) //Hence the other damages... ain't I a bastard? + M.adjustBrainLoss(5) + holder.remove_reagent(src.id, 1) + + +/datum/reagent/carpotoxin + name = "Carpotoxin" + id = "carpotoxin" + description = "A deadly neurotoxin produced by the dreaded spess carp." + reagent_state = LIQUID + color = "#003333" // rgb: 0, 51, 51 + +/datum/reagent/carpotoxin/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustToxLoss(2*REM) + ..() + return + + +/datum/reagent/staminatoxin + name = "Tirizene" + id = "tirizene" + description = "A toxin that affects the stamina of a person when injected into the bloodstream." + reagent_state = LIQUID + color = "#6E2828" + data = 13 + +/datum/reagent/staminatoxin/on_mob_life(var/mob/living/M) + M.adjustStaminaLoss(REM * data) + data = max(data - 1, 3) + ..() + + +/datum/reagent/spores + name = "Spore Toxin" + id = "spores" + description = "A toxic spore cloud which blocks vision when ingested." + color = "#9ACD32" + +/datum/reagent/spores/on_mob_life(var/mob/living/M as mob) + M.adjustToxLoss(0.5) + M.damageoverlaytemp = 60 + M.eye_blurry = max(M.eye_blurry, 3) + ..() + return + + +/datum/reagent/beer2 //disguised as normal beer for use by emagged brobots + name = "Beer" + id = "beer2" + description = "An alcoholic beverage made from malted grains, hops, yeast, and water." + color = "#664300" // rgb: 102, 67, 0 + +/datum/reagent/beer2/on_mob_life(var/mob/living/M as mob) + if(!data) + data = 1 + switch(data) + if(1 to 50) + M.sleeping += 1 + if(51 to INFINITY) + M.sleeping += 1 + M.adjustToxLoss((data - 50)*REM) + data++ + holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM) + ..() + return + + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/* +/datum/reagent/nanomachines + name = "Nanomachines" + id = "nanomachines" + description = "Microscopic construction robots." + reagent_state = LIQUID + color = "#535E66" // rgb: 83, 94, 102 + +/datum/reagent/nanomachines/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) + src = null + if( (prob(10) && method==TOUCH) || method==INGEST) + M.contract_disease(new /datum/disease/robotic_transformation(0),1) + +/datum/reagent/xenomicrobes + name = "Xenomicrobes" + id = "xenomicrobes" + description = "Microbes with an entirely alien cellular structure." + reagent_state = LIQUID + color = "#535E66" // rgb: 83, 94, 102 + +/datum/reagent/xenomicrobes/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) + src = null + if( (prob(10) && method==TOUCH) || method==INGEST) + M.contract_disease(new /datum/disease/xeno_transformation(0),1) +*/ + +/datum/reagent/spore + name = "Blob Spores" + id = "spore" + description = "Spores of some blob creature thingy." + reagent_state = LIQUID + color = "#CE760A" // rgb: 206, 118, 10 + var/client/blob_client = null + var/blob_point_rate = 3 + +/datum/reagent/spore/on_mob_life(var/mob/living/M) + if(!M) M = holder.my_atom + if (holder.has_reagent("atrazine",45)) + holder.del_reagent("spore") + if (prob(1)) + M << "\red Your mouth tastes funny." + if (prob(1) && prob(25)) + if(iscarbon(M)) + var/mob/living/carbon/C = M + if(directory[ckey(C.key)]) + blob_client = directory[ckey(C.key)] + C.gib() + if(blob_client) + var/obj/effect/blob/core/core = new(get_turf(C), 200, blob_client, blob_point_rate) + if(core.overmind && core.overmind.mind) + core.overmind.mind.name = C.name + + return + +/datum/reagent/condensedcapsaicin + name = "Condensed Capsaicin" + id = "condensedcapsaicin" + description = "This shit goes in pepperspray." + reagent_state = LIQUID + color = "#B31008" // rgb: 179, 16, 8 + +/datum/reagent/condensedcapsaicin/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) + if(!istype(M, /mob/living)) + return + if(method == TOUCH) + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/victim = M + var/mouth_covered = 0 + var/eyes_covered = 0 + var/obj/item/safe_thing = null + if( victim.wear_mask ) + if ( victim.wear_mask.flags & MASKCOVERSEYES ) + eyes_covered = 1 + safe_thing = victim.wear_mask + if ( victim.wear_mask.flags & MASKCOVERSMOUTH ) + mouth_covered = 1 + safe_thing = victim.wear_mask + if( victim.head ) + if ( victim.head.flags & MASKCOVERSEYES ) + eyes_covered = 1 + safe_thing = victim.head + if ( victim.head.flags & MASKCOVERSMOUTH ) + mouth_covered = 1 + safe_thing = victim.head + if(victim.glasses) + eyes_covered = 1 + if ( !safe_thing ) + safe_thing = victim.glasses + if ( eyes_covered && mouth_covered ) + victim << "\red Your [safe_thing] protects you from the pepperspray!" + return + else if ( mouth_covered ) // Reduced effects if partially protected + victim << "\red Your [safe_thing] protect you from most of the pepperspray!" + if(prob(5)) + victim.emote("scream") + victim.eye_blurry = max(M.eye_blurry, 3) + victim.eye_blind = max(M.eye_blind, 1) + victim.confused = max(M.confused, 3) + victim.damageoverlaytemp = 60 + victim.Weaken(3) + victim.drop_item() + return + else if ( eyes_covered ) // Eye cover is better than mouth cover + victim << "\red Your [safe_thing] protects your eyes from the pepperspray!" + victim.eye_blurry = max(M.eye_blurry, 3) + victim.damageoverlaytemp = 30 + return + else // Oh dear :D + if(prob(5)) + victim.emote("scream") + victim << "\red You're sprayed directly in the eyes with pepperspray!" + victim.eye_blurry = max(M.eye_blurry, 5) + victim.eye_blind = max(M.eye_blind, 2) + victim.confused = max(M.confused, 6) + victim.damageoverlaytemp = 75 + victim.Weaken(5) + victim.drop_item() + +/datum/reagent/condensedcapsaicin/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(prob(5)) + M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]") + ..() + return + +/datum/reagent/frostoil + name = "Frost Oil" + id = "frostoil" + description = "A special oil that noticably chills the body. Extraced from Icepeppers." + reagent_state = LIQUID + color = "#B31008" // rgb: 139, 166, 233 + process_flags = ORGANIC | SYNTHETIC + +/datum/reagent/frostoil/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(!data) data = 1 + switch(data) + if(1 to 15) + M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT + if(holder.has_reagent("capsaicin")) + holder.remove_reagent("capsaicin", 5) + if(istype(M, /mob/living/carbon/slime)) + M.bodytemperature -= rand(5,20) + if(15 to 25) + M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT + if(istype(M, /mob/living/carbon/slime)) + M.bodytemperature -= rand(10,20) + if(25 to INFINITY) + M.bodytemperature -= 20 * TEMPERATURE_DAMAGE_COEFFICIENT + if(prob(1)) + M.emote("shiver") + if(istype(M, /mob/living/carbon/slime)) + M.bodytemperature -= rand(15,20) + data++ + holder.remove_reagent(src.id, FOOD_METABOLISM) + ..() + return + +/datum/reagent/frostoil/reaction_turf(var/turf/simulated/T, var/volume) + for(var/mob/living/carbon/slime/M in T) + M.adjustToxLoss(rand(15,30)) diff --git a/code/modules/reagents/oldchem/reagents/reagents_water.dm b/code/modules/reagents/oldchem/reagents/reagents_water.dm new file mode 100644 index 00000000000..e7e57129177 --- /dev/null +++ b/code/modules/reagents/oldchem/reagents/reagents_water.dm @@ -0,0 +1,351 @@ +/* +// Frankly, this is just for chemicals that are sortof 'watery', which really didn't seem to fit under any other file +// Current chems: Water, Space Lube, Space Cleaner, Blood, Fish Water, Holy water +// +// +*/ + + + +/datum/reagent/water + name = "Water" + id = "water" + description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen." + reagent_state = LIQUID + color = "#0064C8" // rgb: 0, 100, 200 + var/cooling_temperature = 2 + process_flags = ORGANIC | SYNTHETIC + +/datum/reagent/water/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) + if(!istype(M, /mob/living)) + return + +// Put out fire + if(method == TOUCH) + M.adjust_fire_stacks(-(volume / 10)) + if(M.fire_stacks <= 0) + M.ExtinguishMob() + return + +/datum/reagent/water/reaction_turf(var/turf/simulated/T, var/volume) + if (!istype(T)) return + src = null + if(volume >= 3) + if(T.wet >= 1) return + T.wet = 1 + if(T.wet_overlay) + T.overlays -= T.wet_overlay + T.wet_overlay = null + T.wet_overlay = image('icons/effects/water.dmi',T,"wet_floor") + T.overlays += T.wet_overlay + + spawn(800) + if (!istype(T)) return + if(T.wet >= 2) return + T.wet = 0 + if(T.wet_overlay) + T.overlays -= T.wet_overlay + T.wet_overlay = null + + for(var/mob/living/carbon/slime/M in T) + M.apply_water() + + var/hotspot = (locate(/obj/effect/hotspot) in T) + if(hotspot && !istype(T, /turf/space)) + var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) + lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) + lowertemp.react() + T.assume_air(lowertemp) + qdel(hotspot) + return + +/datum/reagent/water/reaction_obj(var/obj/O, var/volume) + src = null + var/turf/T = get_turf(O) + var/hotspot = (locate(/obj/effect/hotspot) in T) + if(hotspot && !istype(T, /turf/space)) + var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) + lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) + lowertemp.react() + T.assume_air(lowertemp) + qdel(hotspot) + if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube)) + var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O + if(!cube.wrapped) + cube.Expand() + // Dehydrated carp + if(istype(O,/obj/item/toy/carpplushie/dehy_carp)) + var/obj/item/toy/carpplushie/dehy_carp/dehy = O + dehy.Swell() // Makes a carp + return + + +/datum/reagent/lube + name = "Space Lube" + id = "lube" + description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity." + reagent_state = LIQUID + color = "#1BB1AB" + +/datum/reagent/lube/reaction_turf(var/turf/simulated/T, var/volume) + if (!istype(T)) return + src = null + if(volume >= 1) + if(T.wet >= 2) return + T.wet = 2 + spawn(800) + if (!istype(T)) return + T.wet = 0 + if(T.wet_overlay) + T.overlays -= T.wet_overlay + T.wet_overlay = null + return + + +/datum/reagent/space_cleaner + name = "Space cleaner" + id = "cleaner" + description = "A compound used to clean things. Now with 50% more sodium hypochlorite!" + reagent_state = LIQUID + color = "#61C2C2" + +/datum/reagent/space_cleaner/reaction_obj(var/obj/O, var/volume) + if(O && !istype(O, /atom/movable/lighting_overlay)) + O.color = initial(O.color) + if(istype(O,/obj/effect/decal/cleanable)) + qdel(O) + else + if(O) + O.clean_blood() + +/datum/reagent/space_cleaner/reaction_turf(var/turf/T, var/volume) + if(volume >= 1) + if(T) + T.color = initial(T.color) + T.overlays.Cut() + T.clean_blood() + for(var/obj/effect/decal/cleanable/C in src) + qdel(C) + + for(var/mob/living/carbon/slime/M in T) + M.adjustToxLoss(rand(5,10)) + if(istype(T,/turf/simulated)) + var/turf/simulated/S = T + S.dirt = 0 + +/datum/reagent/space_cleaner/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) + if(iscarbon(M)) + var/mob/living/carbon/C = M + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(H.lip_style) + H.lip_style = null + H.update_body() + if(C.r_hand) + C.r_hand.clean_blood() + if(C.l_hand) + C.l_hand.clean_blood() + if(C.wear_mask) + if(C.wear_mask.clean_blood()) + C.update_inv_wear_mask(0) + if(ishuman(M)) + var/mob/living/carbon/human/H = C + if(H.head) + if(H.head.clean_blood()) + H.update_inv_head(0,0) + if(H.wear_suit) + if(H.wear_suit.clean_blood()) + H.update_inv_wear_suit(0,0) + else if(H.w_uniform) + if(H.w_uniform.clean_blood()) + H.update_inv_w_uniform(0,0) + if(H.shoes) + if(H.shoes.clean_blood()) + H.update_inv_shoes(0,0) + M.clean_blood() + ..() + return + + +/datum/reagent/blood + data = new/list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"blood_colour"= "#A10808","resistances"=null,"trace_chem"=null, "antibodies" = null) + name = "Blood" + id = "blood" + reagent_state = LIQUID + color = "#C80000" // rgb: 200, 0, 0 + +/datum/reagent/blood/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) + var/datum/reagent/blood/self = src + src = null + if(self.data && self.data["virus2"] && istype(M, /mob/living/carbon))//infecting... + var/list/vlist = self.data["virus2"] + if (vlist.len) + for (var/ID in vlist) + var/datum/disease2/disease/V = vlist[ID] + + if(method == TOUCH) + infect_virus2(M,V.getcopy()) + else + infect_virus2(M,V.getcopy(),1) //injected, force infection! + if(self.data && self.data["antibodies"] && istype(M, /mob/living/carbon))//... and curing + var/mob/living/carbon/C = M + C.antibodies |= self.data["antibodies"] + +/datum/reagent/blood/on_merge(var/data) + if(data["blood_colour"]) + color = data["blood_colour"] + return ..() + +/datum/reagent/blood/on_update(var/atom/A) + if(data["blood_colour"]) + color = data["blood_colour"] + return ..() + + + +/datum/reagent/blood/reaction_turf(var/turf/simulated/T, var/volume)//splash the blood all over the place + if(!istype(T)) return + var/datum/reagent/blood/self = src + src = null + if(!(volume >= 3)) return + //var/datum/disease/D = self.data["virus"] + if(!self.data["donor"] || istype(self.data["donor"], /mob/living/carbon/human)) + var/obj/effect/decal/cleanable/blood/blood_prop = locate() in T //find some blood here + if(!blood_prop) //first blood! + blood_prop = new(T) + blood_prop.blood_DNA[self.data["blood_DNA"]] = self.data["blood_type"] + + if(self.data["virus2"]) + blood_prop.virus2 = virus_copylist(self.data["virus2"]) + + else if(istype(self.data["donor"], /mob/living/carbon/alien)) + var/obj/effect/decal/cleanable/blood/xeno/blood_prop = locate() in T + if(!blood_prop) + blood_prop = new(T) + blood_prop.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*" + return + + +/datum/reagent/fishwater + name = "Fish Water" + id = "fishwater" + description = "Smelly water from a fish tank. Gross!" + reagent_state = LIQUID + color = "#757547" + +/datum/reagent/fishwater/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) + if(!istype(M, /mob/living)) + return + if(method == INGEST) + M << "Oh god, why did you drink that?" + +/datum/reagent/fishwater/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(prob(30)) // Nasty, you drank this stuff? 30% chance of the fakevomit (non-stunning version) + if(prob(50)) // 50/50 chance of green vomit vs normal vomit + M.fakevomit(1) + else + M.fakevomit(0) + ..() + return + + +/datum/reagent/holywater + name = "Water" + id = "holywater" + description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen." + reagent_state = LIQUID + color = "#0064C8" // rgb: 0, 100, 200 + process_flags = ORGANIC | SYNTHETIC + +/datum/reagent/holywater/on_mob_life(var/mob/living/M as mob) + if(!data) data = 1 + data++ + M.jitteriness = max(M.jitteriness-5,0) + if(data >= 30) // 12 units, 60 seconds @ metabolism 0.4 units & tick rate 2.0 sec + if (!M.stuttering) M.stuttering = 1 + M.stuttering += 4 + M.Dizzy(5) + if(iscultist(M) && prob(5)) + M.say(pick("Av'te Nar'sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","Egkau'haom'nai en Chaous","Ho Diak'nos tou Ap'iron","R'ge Na'sie","Diabo us Vo'iscum","Si gn'um Co'nu")) + if(data >= 75 && prob(33)) // 30 units, 150 seconds + if (!M.confused) M.confused = 1 + M.confused += 3 + if(iscultist(M)) + ticker.mode.remove_cultist(M.mind) + holder.remove_reagent(src.id, src.volume) // maybe this is a little too perfect and a max() cap on the statuses would be better?? + M.jitteriness = 0 + M.stuttering = 0 + M.confused = 0 + if(ishuman(M)) . + if(((M.mind in ticker.mode.vampires) || M.mind.vampire) && (!(VAMP_FULL in M.mind.vampire.powers)) && prob(80)) + switch(data) + if(1 to 4) + M << "Something sizzles in your veins!" + M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) + if(5 to 12) + M << "You feel an intense burning inside of you!" + M.adjustFireLoss(1) + M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) + if(13 to INFINITY) + M << "You suddenly ignite in a holy fire!" + for(var/mob/O in viewers(M, null)) + O.show_message(text("[] suddenly bursts into flames!", M), 1) + M.fire_stacks = min(5,M.fire_stacks + 3) + M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire + M.adjustFireLoss(3) //Hence the other damages... ain't I a bastard? + M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) + ..() + return + + +/datum/reagent/holywater/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) + // Vampires have their powers weakened by holy water applied to the skin. + if(ishuman(M)) + if((M.mind in ticker.mode.vampires) && !(VAMP_FULL in M.mind.vampire.powers)) + var/mob/living/carbon/human/H=M + if(method == TOUCH) + if(H.wear_mask) + H << "\red Your mask protects you from the holy water!" + return + else if(H.head) + H << "\red Your helmet protects you from the holy water!" + return + else + M << "Something holy interferes with your powers!" + M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) + return + + +/datum/reagent/holywater/reaction_turf(var/turf/simulated/T, var/volume) + ..() + if(!istype(T)) return + if(volume>=10) + for(var/obj/effect/rune/R in T) + qdel(R) + T.Bless() + +/* +/datum/reagent/vaccine + //data must contain virus type + name = "Vaccine" + id = "vaccine" + reagent_state = LIQUID + color = "#C81040" // rgb: 200, 16, 64 + +/datum/reagent/vaccine/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) + var/datum/reagent/vaccine/self = src + src = null + if(self.data&&method == INGEST) + for(var/datum/disease/D in M.viruses) + if(istype(D, /datum/disease/advance)) + var/datum/disease/advance/A = D + if(A.GetDiseaseID() == self.data) + D.cure() + else + if(D.type == self.data) + D.cure() + + M.resistances += self.data + return +*/ \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 374f9cf603a..97c2693e439 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -175,6 +175,7 @@ force = 14 throwforce = 10 amount_per_transfer_from_this = 20 + materials = list(MAT_GOLD=800) possible_transfer_amounts = null volume = 150 flags = CONDUCT | OPENCONTAINER @@ -357,12 +358,14 @@ name = "Captain's Flask" desc = "A metal flask belonging to the captain" icon_state = "flask" + materials = list(MAT_SILVER=300) volume = 60 /obj/item/weapon/reagent_containers/food/drinks/flask/detflask name = "Detective's Flask" desc = "A metal flask with a leather band and golden badge belonging to the detective." icon_state = "detflask" + materials = list(MAT_METAL=200) volume = 60 /obj/item/weapon/reagent_containers/food/drinks/flask/barflask diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index 205837633de..b02289784a6 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -37,7 +37,7 @@ if(!target) return - if(user.a_intent != "harm" || !isGlass) + if(user.a_intent != I_HARM || !isGlass) return ..() diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm index ce50606d7c5..74d939bb49a 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm @@ -6,7 +6,7 @@ icon_state = "glass_empty" amount_per_transfer_from_this = 10 volume = 50 - g_amt = 500 + materials = list(MAT_GLASS=500) proc/smash(mob/living/target as mob, mob/living/user as mob) @@ -27,7 +27,7 @@ if(!target) return - if(user.a_intent != "harm") + if(user.a_intent != I_HARM) return ..() force = 5 diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm index 608fbc405be..617255f133f 100644 --- a/code/modules/reagents/reagent_containers/glass_containers.dm +++ b/code/modules/reagents/reagent_containers/glass_containers.dm @@ -181,8 +181,7 @@ icon = 'icons/obj/chemical.dmi' icon_state = "beaker" item_state = "beaker" - m_amt = 0 - g_amt = 500 + materials = list(MAT_GLASS=500) var/obj/item/device/assembly_holder/assembly = null on_reagent_change() @@ -276,7 +275,7 @@ name = "large beaker" desc = "A large beaker. Can hold up to 100 units." icon_state = "beakerlarge" - g_amt = 2500 + materials = list(MAT_GLASS=2500) volume = 100 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25,30,50,100) @@ -286,7 +285,7 @@ name = "vial" desc = "A small glass vial. Can hold up to 25 units." icon_state = "vial" - g_amt = 250 + materials = list(MAT_GLASS=250) volume = 25 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25) @@ -296,7 +295,7 @@ name = "cryostasis beaker" desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units." icon_state = "beakernoreact" - g_amt = 500 + materials = list(MAT_GLASS=500) volume = 50 amount_per_transfer_from_this = 10 flags = OPENCONTAINER | NOREACT @@ -305,7 +304,7 @@ name = "bluespace beaker" desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units." icon_state = "beakerbluespace" - g_amt = 5000 + materials = list(MAT_GLASS=5000) volume = 300 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25,30,50,100,300) @@ -335,8 +334,7 @@ icon = 'icons/obj/janitor.dmi' icon_state = "bucket" item_state = "bucket" - m_amt = 200 - g_amt = 0 + materials = list(MAT_METAL=200) w_class = 3.0 amount_per_transfer_from_this = 20 possible_transfer_amounts = list(5,10,15,25,30,50,80,100,120) @@ -357,7 +355,7 @@ name = "vial" desc = "Small glass vial. Looks fragile." icon_state = "vial" - g_amt = 500 + materials = list(MAT_GLASS=500) volume = 15 amount_per_transfer_from_this = 5 possible_transfer_amounts = list(1,5,15) @@ -386,8 +384,7 @@ icon = 'icons/obj/tank.dmi' icon_state = "canister" item_state = "canister" - m_amt = 300 - g_amt = 0 + materials = list(MAT_METAL=300) w_class = 4.0 amount_per_transfer_from_this = 20 diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 408076341ee..2a0d82d3a03 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -62,7 +62,7 @@ user << "\red This syringe is broken!" return -/* if (user.a_intent == "harm" && ismob(target)) +/* if (user.a_intent == I_HARM && ismob(target)) if((CLUMSY in user.mutations) && prob(50)) target = user syringestab(target, user) @@ -168,7 +168,7 @@ if(target.reagents.total_volume >= target.reagents.maximum_volume) user << "\red [target] is full." return - + var/mob/living/carbon/human/H = target if(istype(H)) var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) @@ -528,3 +528,14 @@ reagents.add_reagent("insulin", 15) mode = SYRINGE_INJECT update_icon() + +/obj/item/weapon/reagent_containers/syringe/bioterror + name = "bioterror syringe" + desc = "Contains several paralyzing reagents." + New() + ..() + reagents.add_reagent("neurotoxin", 5) + reagents.add_reagent("capulettium_plus", 5) + reagents.add_reagent("sodium_thiopental", 5) + mode = SYRINGE_INJECT + update_icon() \ No newline at end of file diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index cd306a78e49..6c3b0db41e0 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -12,60 +12,60 @@ var/amount_per_transfer_from_this = 10 var/possible_transfer_amounts = list(10,25,50,100) - attackby(obj/item/weapon/W as obj, mob/user as mob, params) +/obj/structure/reagent_dispensers/attackby(obj/item/weapon/W as obj, mob/user as mob, params) + return + +/obj/structure/reagent_dispensers/New() + var/datum/reagents/R = new/datum/reagents(1000) + reagents = R + R.my_atom = src + if (!possible_transfer_amounts) + src.verbs -= /obj/structure/reagent_dispensers/verb/set_APTFT + ..() + +/obj/structure/reagent_dispensers/examine() + set src in view() + ..() + if (!(usr in view(2)) && usr!=src.loc) return + usr << "\blue It contains:" + if(reagents && reagents.reagent_list.len) + for(var/datum/reagent/R in reagents.reagent_list) + usr << "\blue [R.volume] units of [R.name]" + else + usr << "\blue Nothing." + +/obj/structure/reagent_dispensers/verb/set_APTFT() //set amount_per_transfer_from_this + set name = "Set transfer amount" + set category = "Object" + set src in view(1) + if(usr.stat || !usr.canmove || usr.restrained()) return + var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts + if (N) + amount_per_transfer_from_this = N - New() - var/datum/reagents/R = new/datum/reagents(1000) - reagents = R - R.my_atom = src - if (!possible_transfer_amounts) - src.verbs -= /obj/structure/reagent_dispensers/verb/set_APTFT - ..() - - examine() - set src in view() - ..() - if (!(usr in view(2)) && usr!=src.loc) return - usr << "\blue It contains:" - if(reagents && reagents.reagent_list.len) - for(var/datum/reagent/R in reagents.reagent_list) - usr << "\blue [R.volume] units of [R.name]" - else - usr << "\blue Nothing." - - verb/set_APTFT() //set amount_per_transfer_from_this - set name = "Set transfer amount" - set category = "Object" - set src in view(1) - if(usr.stat || !usr.canmove || usr.restrained()) +/obj/structure/reagent_dispensers/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) return - var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts - if (N) - amount_per_transfer_from_this = N - - ex_act(severity) - switch(severity) - if(1.0) + if(2.0) + if (prob(50)) + new /obj/effect/effect/water(src.loc) qdel(src) return - if(2.0) - if (prob(50)) - new /obj/effect/effect/water(src.loc) - qdel(src) - return - if(3.0) - if (prob(5)) - new /obj/effect/effect/water(src.loc) - qdel(src) - return - else - return + if(3.0) + if (prob(5)) + new /obj/effect/effect/water(src.loc) + qdel(src) + return + else + return - blob_act() - if(prob(50)) - new /obj/effect/effect/water(src.loc) - qdel(src) +/obj/structure/reagent_dispensers/blob_act() + if(prob(50)) + new /obj/effect/effect/water(src.loc) + qdel(src) @@ -80,9 +80,11 @@ icon = 'icons/obj/objects.dmi' icon_state = "watertank" amount_per_transfer_from_this = 10 - New() - ..() - reagents.add_reagent("water",1000) + +/obj/structure/reagent_dispensers/watertank/New() + ..() + reagents.add_reagent("water",1000) + /obj/structure/reagent_dispensers/fueltank name = "fueltank" @@ -91,22 +93,23 @@ icon_state = "weldtank" amount_per_transfer_from_this = 10 var/obj/item/device/assembly_holder/rig = null - New() - ..() - reagents.add_reagent("fuel",1000) - bullet_act(var/obj/item/projectile/Proj) - if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet)) - if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) - message_admins("[key_name_admin(Proj.firer)] triggered a fueltank explosion.") - log_game("[key_name(Proj.firer)] triggered a fueltank explosion.") - explode() +/obj/structure/reagent_dispensers/fueltank/New() + ..() + reagents.add_reagent("fuel",1000) - blob_act() - explosion(src.loc,0,1,5,7,10, flame_range = 5) +/obj/structure/reagent_dispensers/fueltank/bullet_act(var/obj/item/projectile/Proj) + if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet)) + if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) + message_admins("[key_name_admin(Proj.firer)] triggered a fueltank explosion.") + log_game("[key_name(Proj.firer)] triggered a fueltank explosion.") + explode() - ex_act() - explode() +/obj/structure/reagent_dispensers/fueltank/blob_act() + explosion(src.loc,0,1,5,7,10, flame_range = 5) + +/obj/structure/reagent_dispensers/fueltank/ex_act() + explode() /obj/structure/reagent_dispensers/fueltank/examine() set src in view() @@ -180,6 +183,7 @@ if(rig) rig.process_movement() + /obj/structure/reagent_dispensers/peppertank name = "Pepper Spray Refiller" desc = "Refill pepper spray canisters." @@ -188,9 +192,10 @@ anchored = 1 density = 0 amount_per_transfer_from_this = 45 - New() - ..() - reagents.add_reagent("condensedcapsaicin",1000) + +/obj/structure/reagent_dispensers/peppertank/New() + ..() + reagents.add_reagent("condensedcapsaicin",1000) /obj/structure/reagent_dispensers/water_cooler @@ -201,9 +206,10 @@ icon_state = "water_cooler" possible_transfer_amounts = null anchored = 1 - New() - ..() - reagents.add_reagent("water",500) + +/obj/structure/reagent_dispensers/water_cooler/New() + ..() + reagents.add_reagent("water",500) /obj/structure/reagent_dispensers/beerkeg @@ -212,9 +218,10 @@ icon = 'icons/obj/objects.dmi' icon_state = "beertankTEMP" amount_per_transfer_from_this = 10 - New() - ..() - reagents.add_reagent("beer",1000) + +/obj/structure/reagent_dispensers/beerkeg/New() + ..() + reagents.add_reagent("beer",1000) /obj/structure/reagent_dispensers/beerkeg/blob_act() explosion(src.loc,0,3,5,7,10) @@ -229,9 +236,9 @@ anchored = 1 density = 0 - New() - ..() - reagents.add_reagent("virusfood", 1000) +/obj/structure/reagent_dispensers/virusfood/New() + ..() + reagents.add_reagent("virusfood", 1000) /obj/structure/reagent_dispensers/spacecleanertank name = "space cleaner refiller" @@ -241,6 +248,7 @@ anchored = 1 density = 0 amount_per_transfer_from_this = 250 - New() - ..() - reagents.add_reagent("cleaner",5000) + +/obj/structure/reagent_dispensers/spacecleanertank/New() + ..() + reagents.add_reagent("cleaner",5000) diff --git a/code/modules/reagents/syringe_gun.dm b/code/modules/reagents/syringe_gun.dm index ac70be0f387..18630fdbfff 100644 --- a/code/modules/reagents/syringe_gun.dm +++ b/code/modules/reagents/syringe_gun.dm @@ -7,7 +7,7 @@ throw_speed = 2 throw_range = 10 force = 4 - m_amt = 2000 + materials = list(MAT_METAL=2000) clumsy_check = 0 fire_sound = 'sound/items/syringeproj.ogg' var/list/syringes = list() diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index a0997497d34..9e4b3661c0d 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -10,7 +10,6 @@ anchored = 0 density = 0 pressure_resistance = 5*ONE_ATMOSPHERE - m_amt = 1850 level = 2 var/ptype = 0 // 0=straight, 1=bent, 2=junction-j1, 3=junction-j2, 4=junction-y, 5=trunk, 6=disposal bin, 7=outlet, 8=inlet diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index dd0bfb9d0e8..249b4956953 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -72,11 +72,11 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). /obj/machinery/r_n_d/circuit_imprinter/proc/check_mat(datum/design/being_built, var/M) switch(M) - if("$glass") + if(MAT_GLASS) return (g_amount - (being_built.materials[M]/efficiency_coeff) >= 0) - if("$gold") + if(MAT_GOLD) return (gold_amount - (being_built.materials[M]/efficiency_coeff) >= 0) - if("$diamond") + if(MAT_DIAMOND) return (diamond_amount - (being_built.materials[M]/efficiency_coeff) >= 0) else return (reagents.has_reagent(M, (being_built.materials[M]/efficiency_coeff)) != 0) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 87e413565a7..3ce13d94677 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -9,21 +9,20 @@ For the materials datum, it assumes you need reagents unless specified otherwise you use one of the material IDs below. These are NOT ids in the usual sense (they aren't defined in the object or part of a datum), they are simply references used as part of a "has materials?" type proc. They all start with a $ to denote that they aren't reagents. The currently supporting non-reagent materials: -- $metal (/obj/item/stack/metal). One sheet = 3750 units. -- $glass (/obj/item/stack/glass). One sheet = 3750 units. -- $plasma (/obj/item/stack/plasma). One sheet = 3750 units. -- $plasteel (/obj/item/stack/sheet/plasteel). One sheet = 3750 units. -- $silver (/obj/item/stack/silver). One sheet = 3750 units. -- $gold (/obj/item/stack/gold). One sheet = 3750 units. -- $uranium (/obj/item/stack/uranium). One sheet = 3750 units. -- $diamond (/obj/item/stack/diamond). One sheet = 3750 units. -- $clown (/obj/item/stack/clown). One sheet = 3750 units. ("Bananium") +- MAT_METAL (/obj/item/stack/metal). +- MAT_GLASS (/obj/item/stack/glass). +- MAT_PLASMA (/obj/item/stack/plasma). +- MAT_SILVER (/obj/item/stack/silver). +- MAT_GOLD (/obj/item/stack/gold). +- MAT_URANIUM (/obj/item/stack/uranium). +- MAT_DIAMOND (/obj/item/stack/diamond). +- MAT_BANANIUM (/obj/item/stack/bananium). (Insert new ones here) Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from metal). Only add raw materials. Design Guidlines -- The reliability formula for all R&D built items is reliability_base (a fixed number) + total tech levels required to make it + +- The reliability formula for all R&D built items is reliability (a fixed number) + total tech levels required to make it + reliability_mod (starts at 0, gets improved through experimentation). Example: PACMAN generator. 79 base reliablity + 6 tech (3 plasmatech, 3 powerstorage) + 0 (since it's completely new) = 85% reliability. Reliability is the chance it works CORRECTLY. - When adding new designs, check rdreadme.dm to see what kind of things have already been made and where new stuff is needed. @@ -39,8 +38,6 @@ other types of metals and chemistry for reagents). var/desc = "Desc" //Description of the created object. var/id = "id" //ID of the created object for easy refernece. Alphanumeric, lower-case, no symbols var/list/req_tech = list() //IDs of that techs the object originated from and the minimum level requirements. - var/reliability_mod = 0 //Reliability modifier of the device at it's starting point. - var/reliability_base = 100 //Base reliability of a device before modifiers. var/reliability = 100 //Reliability of the device. var/build_type = null //Flag as to what kind machine the design is built in. See defines. var/list/materials = list() //List of materials. Format: "id" = amount. diff --git a/code/modules/research/designs/AI_module_designs.dm b/code/modules/research/designs/AI_module_designs.dm index f58f8075893..01de6f63848 100644 --- a/code/modules/research/designs/AI_module_designs.dm +++ b/code/modules/research/designs/AI_module_designs.dm @@ -8,27 +8,27 @@ id = "freeform_module" req_tech = list("programming" = 4, "materials" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100) build_path = /obj/item/weapon/aiModule/freeform category = list("AI Modules") - + /datum/design/onecrewmember_module name = "AI Module (oneCrewMember)" desc = "Allows for the construction of a oneCrewMember AI Module." id = "onecrewmember_module" req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/oneCrewMember category = list("AI Modules") - + /datum/design/oxygen_module name = "AI Module (OxygenIsToxicToHumans)" desc = "Allows for the construction of a Safeguard AI Module." id = "oxygen_module" req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100) build_path = /obj/item/weapon/aiModule/oxygen category = list("AI Modules") @@ -38,9 +38,9 @@ id = "protectstation_module" req_tech = list("programming" = 3, "materials" = 6) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100) build_path = /obj/item/weapon/aiModule/protectStation - category = list("AI Modules") + category = list("AI Modules") /datum/design/purge_module name = "AI Module (Purge)" @@ -48,7 +48,7 @@ id = "purge_module" req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) + materials = list(MAT_GLASS = 2000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/purge category = list("AI Modules") @@ -58,27 +58,27 @@ id = "quarantine_module" req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100) build_path = /obj/item/weapon/aiModule/quarantine category = list("AI Modules") - + /datum/design/reset_module name = "AI Module (Reset)" desc = "Allows for the construction of a Reset AI Module." id = "reset_module" req_tech = list("programming" = 3, "materials" = 6) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100) build_path = /obj/item/weapon/aiModule/reset category = list("AI Modules") - + /datum/design/safeguard_module name = "AI Module (Safeguard)" desc = "Allows for the construction of a Safeguard AI Module." id = "safeguard_module" req_tech = list("programming" = 3, "materials" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100) build_path = /obj/item/weapon/aiModule/safeguard category = list("AI Modules") @@ -88,47 +88,47 @@ id = "antimov_module" req_tech = list("programming" = 4, "materials" = 6, "syndicate" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/antimov - category = list("AI Modules") - + category = list("AI Modules") + /datum/design/asimov name = "Core AI Module (Asimov)" desc = "Allows for the construction of a Asimov AI Core Module." id = "asimov_module" req_tech = list("programming" = 3, "materials" = 6) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/asimov - category = list("AI Modules") - + category = list("AI Modules") + /datum/design/corporate_module name = "Core AI Module (Corporate)" desc = "Allows for the construction of a Corporate AI Core Module." id = "corporate_module" req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/corp category = list("AI Modules") - + /datum/design/crewsimov name = "Core AI Module (Crewsimov)" desc = "Allows for the construction of a Crewsimov AI Core Module." id = "crewsimov_module" req_tech = list("programming" = 3, "materials" = 6) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/crewsimov - category = list("AI Modules") - + category = list("AI Modules") + /datum/design/freeformcore_module name = "Core AI Module (Freeform)" desc = "Allows for the construction of a Freeform AI Core Module." id = "freeformcore_module" req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/freeformcore category = list("AI Modules") @@ -138,7 +138,7 @@ id = "paladin_module" req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/paladin category = list("AI Modules") @@ -148,6 +148,6 @@ id = "tyrant_module" req_tech = list("programming" = 4, "syndicate" = 2, "materials" = 6) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100) + materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/tyrant category = list("AI Modules") diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index d58d23f09cf..90cebcf4648 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -6,7 +6,7 @@ name = "Analyzer" id = "analyzer" build_type = AUTOLATHE - materials = list("$metal" = 30, "$glass" = 20) + materials = list(MAT_METAL = 30, MAT_GLASS = 20) build_path = /obj/item/device/analyzer category = list("initial","Tools") @@ -14,7 +14,7 @@ name = "Bucket" id = "bucket" build_type = AUTOLATHE - materials = list("$metal" = 200) + materials = list(MAT_METAL = 200) build_path = /obj/item/weapon/reagent_containers/glass/bucket category = list("initial","Tools") @@ -22,7 +22,7 @@ name = "Pocket Crowbar" id = "crowbar" build_type = AUTOLATHE - materials = list("$metal" = 50) + materials = list(MAT_METAL = 50) build_path = /obj/item/weapon/crowbar category = list("initial","Tools") @@ -30,7 +30,7 @@ name = "Fire Extinguisher" id = "extinguisher" build_type = AUTOLATHE - materials = list("$metal" = 90) + materials = list(MAT_METAL = 90) build_path = /obj/item/weapon/extinguisher category = list("initial","Tools") @@ -38,7 +38,7 @@ name = "Flashlight" id = "flashlight" build_type = AUTOLATHE - materials = list("$metal" = 50, "$glass" = 20) + materials = list(MAT_METAL = 50, MAT_GLASS = 20) build_path = /obj/item/device/flashlight category = list("initial","Tools") @@ -46,7 +46,7 @@ name = "Multitool" id = "multitool" build_type = AUTOLATHE - materials = list("$metal" = 50, "$glass" = 20) + materials = list(MAT_METAL = 50, MAT_GLASS = 20) build_path = /obj/item/device/multitool category = list("initial","Tools") @@ -54,7 +54,7 @@ name = "Screwdriver" id = "screwdriver" build_type = AUTOLATHE - materials = list("$metal" = 75) + materials = list(MAT_METAL = 75) build_path = /obj/item/weapon/screwdriver category = list("initial","Tools") @@ -62,7 +62,7 @@ name = "T-ray Scanner" id = "tscanner" build_type = AUTOLATHE - materials = list("$metal" = 150) + materials = list(MAT_METAL = 150) build_path = /obj/item/device/t_scanner category = list("initial","Tools") @@ -70,7 +70,7 @@ name = "Welding Helmet" id = "welding_helmet" build_type = AUTOLATHE - materials = list("$metal" = 1750, "$glass" = 400) + materials = list(MAT_METAL = 1750, MAT_GLASS = 400) build_path = /obj/item/clothing/head/welding category = list("initial","Tools") @@ -78,7 +78,7 @@ name = "Welding Tool" id = "welding_tool" build_type = AUTOLATHE - materials = list("$metal" = 70, "$glass" = 20) + materials = list(MAT_METAL = 70, MAT_GLASS = 20) build_path = /obj/item/weapon/weldingtool category = list("initial","Tools") @@ -86,7 +86,7 @@ name = "Wirecutters" id = "wirecutters" build_type = AUTOLATHE - materials = list("$metal" = 80) + materials = list(MAT_METAL = 80) build_path = /obj/item/weapon/wirecutters category = list("initial","Tools") @@ -94,7 +94,7 @@ name = "Wrench" id = "wrench" build_type = AUTOLATHE - materials = list("$metal" = 150) + materials = list(MAT_METAL = 150) build_path = /obj/item/weapon/wrench category = list("initial","Tools") @@ -102,7 +102,7 @@ name = "Spraycan" id = "spraycan" build_type = AUTOLATHE - materials = list("$metal" = 100, "$glass" = 100) + materials = list(MAT_METAL = 100, MAT_GLASS = 100) build_path = /obj/item/toy/crayon/spraycan category = list("initial", "Tools") @@ -110,7 +110,7 @@ name = "Air Alarm Electronics" id = "airalarm_electronics" build_type = AUTOLATHE - materials = list("$metal" = 50, "$glass" = 50) + materials = list(MAT_METAL = 50, MAT_GLASS = 50) build_path = /obj/item/weapon/airalarm_electronics category = list("initial", "Electronics") @@ -118,7 +118,7 @@ name = "Airlock Electronics" id = "airlock_board" build_type = AUTOLATHE - materials = list("$metal" = 50, "$glass" = 50) + materials = list(MAT_METAL = 50, MAT_GLASS = 50) build_path = /obj/item/weapon/airlock_electronics category = list("initial", "Electronics") @@ -126,7 +126,7 @@ name = "Intercom Electronics" id = "intercom_electronics" build_type = AUTOLATHE - materials = list("$metal" = 50, "$glass" = 50) + materials = list(MAT_METAL = 50, MAT_GLASS = 50) build_path = /obj/item/weapon/intercom_electronics category = list("initial", "Electronics") @@ -134,7 +134,7 @@ name = "Console Screen" id = "console_screen" build_type = AUTOLATHE - materials = list("$glass" = 200) + materials = list(MAT_GLASS = 200) build_path = /obj/item/weapon/stock_parts/console_screen category = list("initial", "Electronics") @@ -142,7 +142,7 @@ name = "Fire Alarm Electronics" id = "firealarm_electronics" build_type = AUTOLATHE - materials = list("$metal" = 50, "$glass" = 50) + materials = list(MAT_METAL = 50, MAT_GLASS = 50) build_path = /obj/item/weapon/firealarm_electronics category = list("initial", "Electronics") @@ -150,7 +150,7 @@ name = "Igniter" id = "igniter" build_type = AUTOLATHE - materials = list("$metal" = 500, "$glass" = 50) + materials = list(MAT_METAL = 500, MAT_GLASS = 50) build_path = /obj/item/device/assembly/igniter category = list("initial", "Miscellaneous") @@ -158,15 +158,23 @@ name = "Infrared Emitter" id = "infrared_emitter" build_type = AUTOLATHE - materials = list("$metal" = 1000, "$glass" = 500) + materials = list(MAT_METAL = 1000, MAT_GLASS = 500) build_path = /obj/item/device/assembly/infra category = list("initial", "Miscellaneous") +/datum/design/health_sensor + name = "Health sensor" + id = "health_sensor" + build_type = AUTOLATHE + materials = list(MAT_METAL = 800, MAT_GLASS = 200) + build_path = /obj/item/device/assembly/health + category = list("initial", "Medical") + /datum/design/kitchen_knife name = "Kitchen knife" id = "kitchen_knife" build_type = AUTOLATHE - materials = list("$metal" = 12000) + materials = list(MAT_METAL = 12000) build_path = /obj/item/weapon/kitchenknife category = list("initial","Miscellaneous") @@ -174,7 +182,7 @@ name = "Pipe Painter" id = "pipe_painter" build_type = AUTOLATHE - materials = list("$metal" = 5000, "$glass" = 2000) + materials = list(MAT_METAL = 5000, MAT_GLASS = 2000) build_path = /obj/item/device/pipe_painter category = list("initial", "Miscellaneous") @@ -182,7 +190,7 @@ name = "Proximity Sensor" id = "prox_sensor" build_type = AUTOLATHE - materials = list("$metal" = 800, "$glass" = 200) + materials = list(MAT_METAL = 800, MAT_GLASS = 200) build_path = /obj/item/device/assembly/prox_sensor category = list("initial", "Miscellaneous") @@ -190,7 +198,7 @@ name = "Mousetrap" id = "mousetrap" build_type = AUTOLATHE - materials = list("$metal" = 800, "$glass" = 200) + materials = list(MAT_METAL = 800, MAT_GLASS = 200) build_path = /obj/item/device/assembly/mousetrap category = list("initial", "Miscellaneous") @@ -198,7 +206,7 @@ name = "Timer" id = "timer" build_type = AUTOLATHE - materials = list("$metal" = 500, "$glass" = 50) + materials = list(MAT_METAL = 500, MAT_GLASS = 50) build_path = /obj/item/device/assembly/timer category = list("initial", "Miscellaneous") @@ -206,7 +214,7 @@ name = "Universal Recorder" id = "recorder" build_type = AUTOLATHE - materials = list("$metal" = 60, "$glass" = 30) + materials = list(MAT_METAL = 60, MAT_GLASS = 30) build_path = /obj/item/device/taperecorder/empty category = list("initial", "Miscellaneous") @@ -214,7 +222,7 @@ name = "Tape" id = "tape" build_type = AUTOLATHE - materials = list("$metal" = 20, "$glass" = 5) + materials = list(MAT_METAL = 20, MAT_GLASS = 5) build_path = /obj/item/device/tape/random category = list("initial", "Miscellaneous") @@ -222,7 +230,7 @@ name = "Voice Analyser" id = "voice_analyser" build_type = AUTOLATHE - materials = list("$metal" = 500, "$glass" = 50) + materials = list(MAT_METAL = 500, MAT_GLASS = 50) build_path = /obj/item/device/assembly/voice category = list("initial", "Miscellaneous") @@ -230,7 +238,7 @@ name = "11px by 11px Canvas" id = "canvas" build_type = AUTOLATHE - materials = list("$metal" = 50) + materials = list(MAT_METAL = 50) build_path = /obj/item/weapon/canvas category = list("initial", "Miscellaneous") @@ -238,7 +246,7 @@ name = "19px by 19px Canvas" id = "canvas19x19" build_type = AUTOLATHE - materials = list("$metal" = 50) + materials = list(MAT_METAL = 50) build_path = /obj/item/weapon/canvas/nineteenXnineteen category = list("initial", "Miscellaneous") @@ -246,7 +254,7 @@ name = "23px by 19px Canvas" id = "canvas23x19" build_type = AUTOLATHE - materials = list("$metal" = 70) + materials = list(MAT_METAL = 70) build_path = /obj/item/weapon/canvas/twentythreeXnineteen category = list("initial", "Miscellaneous") @@ -254,7 +262,7 @@ name = "23px by 23px Canvas" id = "canvas23x23" build_type = AUTOLATHE - materials = list("$metal" = 100) + materials = list(MAT_METAL = 100) build_path = /obj/item/weapon/canvas/twentythreeXtwentythree category = list("initial", "Miscellaneous") @@ -262,7 +270,7 @@ name = "Camera Assembly" id = "camera_assembly" build_type = AUTOLATHE - materials = list("$metal" = 400, "$glass" = 250) + materials = list(MAT_METAL = 400, MAT_GLASS = 250) build_path = /obj/item/weapon/camera_assembly category = list("initial", "Construction") @@ -270,7 +278,7 @@ name = "Glass" id = "glass" build_type = AUTOLATHE - materials = list("$glass" = MINERAL_MATERIAL_AMOUNT) + materials = list(MAT_GLASS = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/glass category = list("initial","Construction") @@ -278,7 +286,7 @@ name = "Light Bulb" id = "light_bulb" build_type = AUTOLATHE - materials = list("$metal" = 60, "$glass" = 100) + materials = list(MAT_METAL = 60, MAT_GLASS = 100) build_path = /obj/item/weapon/light/bulb category = list("initial", "Construction") @@ -286,7 +294,7 @@ name = "Light Tube" id = "light_tube" build_type = AUTOLATHE - materials = list("$metal" = 60, "$glass" = 100) + materials = list(MAT_METAL = 60, MAT_GLASS = 100) build_path = /obj/item/weapon/light/tube category = list("initial", "Construction") @@ -294,7 +302,7 @@ name = "Metal" id = "metal" build_type = AUTOLATHE - materials = list("$metal" = 3750) + materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/metal category = list("initial","Construction") @@ -302,7 +310,7 @@ name = "Newscaster Frame" id = "newscaster_frame" build_type = AUTOLATHE - materials = list("$metal" = 14000, "$glass" = 8000) + materials = list(MAT_METAL = 14000, MAT_GLASS = 8000) build_path = /obj/item/mounted/frame/newscaster_frame category = list("initial", "Construction") @@ -310,7 +318,7 @@ name = "Compressed Matter Cardridge" id = "rcd_ammo" build_type = AUTOLATHE - materials = list("$metal" = 16000, "$glass"=8000) + materials = list(MAT_METAL = 16000, MAT_GLASS=8000) build_path = /obj/item/weapon/rcd_ammo category = list("initial","Construction") @@ -318,7 +326,7 @@ name = "Reinforced Glass" id = "rglass" build_type = AUTOLATHE - materials = list("$metal" = 1875, "$glass" = MINERAL_MATERIAL_AMOUNT) + materials = list(MAT_METAL = 1000, MAT_GLASS = MINERAL_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/rglass category = list("initial","Construction") @@ -326,7 +334,7 @@ name = "Metal Rod" id = "rods" build_type = AUTOLATHE - materials = list("$metal" = 1875) + materials = list(MAT_METAL = 1000) build_path = /obj/item/stack/rods category = list("initial","Construction") @@ -334,7 +342,7 @@ name = "Beaker" id = "beaker" build_type = AUTOLATHE - materials = list("$glass" = 500) + materials = list(MAT_GLASS = 500) build_path = /obj/item/weapon/reagent_containers/glass/beaker category = list("initial", "Medical") @@ -342,7 +350,7 @@ name = "Cautery" id = "cautery" build_type = AUTOLATHE - materials = list("$metal" = 2500, "$glass" = 750) + materials = list(MAT_METAL = 2500, MAT_GLASS = 750) build_path = /obj/item/weapon/cautery category = list("initial", "Medical") @@ -350,7 +358,7 @@ name = "Circular Saw" id = "circular_saw" build_type = AUTOLATHE - materials = list("$metal" = 10000, "$glass" = 6000) + materials = list(MAT_METAL = 10000, MAT_GLASS = 6000) build_path = /obj/item/weapon/circular_saw category = list("initial", "Medical") @@ -358,7 +366,7 @@ name = "Hemostat" id = "hemostat" build_type = AUTOLATHE - materials = list("$metal" = 5000, "$glass" = 2500) + materials = list(MAT_METAL = 5000, MAT_GLASS = 2500) build_path = /obj/item/weapon/hemostat category = list("initial", "Medical") @@ -366,7 +374,7 @@ name = "Large Beaker" id = "large_beaker" build_type = AUTOLATHE - materials = list("$glass" = 2500) + materials = list(MAT_GLASS = 2500) build_path = /obj/item/weapon/reagent_containers/glass/beaker/large category = list("initial", "Medical") @@ -374,7 +382,7 @@ name = "Retractor" id = "retractor" build_type = AUTOLATHE - materials = list("$metal" = 6000, "$glass" = 3000) + materials = list(MAT_METAL = 6000, MAT_GLASS = 3000) build_path = /obj/item/weapon/retractor category = list("initial", "Medical") @@ -382,7 +390,7 @@ name = "Scalpel" id = "scalpel" build_type = AUTOLATHE - materials = list("$metal" = 4000, "$glass" = 1000) + materials = list(MAT_METAL = 4000, MAT_GLASS = 1000) build_path = /obj/item/weapon/scalpel category = list("initial", "Medical") @@ -390,7 +398,7 @@ name = "Surgical Drill" id = "surgicaldrill" build_type = AUTOLATHE - materials = list("$metal" = 10000, "$glass" = 6000) + materials = list(MAT_METAL = 10000, MAT_GLASS = 6000) build_path = /obj/item/weapon/surgicaldrill category = list("initial", "Medical") @@ -398,7 +406,7 @@ name = "Syringe" id = "syringe" build_type = AUTOLATHE - materials = list("$metal" = 10, "$glass" = 20) + materials = list(MAT_METAL = 10, MAT_GLASS = 20) build_path = /obj/item/weapon/reagent_containers/syringe category = list("initial", "Medical") @@ -406,7 +414,7 @@ name = "Beanbag Slug" id = "beanbag_slug" build_type = AUTOLATHE - materials = list("$metal" = 250) + materials = list(MAT_METAL = 250) build_path = /obj/item/ammo_casing/shotgun/beanbag category = list("initial", "Security") @@ -414,7 +422,7 @@ name = "Speed Loader (.38)" id = "c38" build_type = AUTOLATHE - materials = list("$metal" = 30000) + materials = list(MAT_METAL = 30000) build_path = /obj/item/ammo_box/c38 category = list("initial", "Security") @@ -422,7 +430,7 @@ name = "Radio Headset" id = "radio_headset" build_type = AUTOLATHE - materials = list("$metal" = 75) + materials = list(MAT_METAL = 75) build_path = /obj/item/device/radio/headset category = list("initial", "Communication") @@ -430,7 +438,7 @@ name = "Remote Signaling Device" id = "signaler" build_type = AUTOLATHE - materials = list("$metal" = 400, "$glass" = 120) + materials = list(MAT_METAL = 400, MAT_GLASS = 120) build_path = /obj/item/device/assembly/signaler category = list("initial", "Communication") @@ -438,7 +446,7 @@ name = "Station Bounced Radio" id = "bounced_radio" build_type = AUTOLATHE - materials = list("$metal" = 75, "$glass" = 25) + materials = list(MAT_METAL = 75, MAT_GLASS = 25) build_path = /obj/item/device/radio/off category = list("initial", "Communication") @@ -447,7 +455,7 @@ name = "Ammo Box (.45)" id = "c45" build_type = AUTOLATHE - materials = list("$metal" = 30000) + materials = list(MAT_METAL = 30000) build_path = /obj/item/ammo_box/c45 category = list("hacked", "Security") @@ -455,7 +463,7 @@ name = "Ammo Box (.357)" id = "a357" build_type = AUTOLATHE - materials = list("$metal" = 30000) + materials = list(MAT_METAL = 30000) build_path = /obj/item/ammo_box/a357 category = list("hacked", "Security") @@ -463,7 +471,7 @@ name = "Ammo Box (9mm)" id = "c9mm" build_type = AUTOLATHE - materials = list("$metal" = 30000) + materials = list(MAT_METAL = 30000) build_path = /obj/item/ammo_box/c9mm category = list("hacked", "Security") @@ -471,7 +479,7 @@ name = "Ammo Box (10mm)" id = "c10mm" build_type = AUTOLATHE - materials = list("$metal" = 30000) + materials = list(MAT_METAL = 30000) build_path = /obj/item/ammo_box/c10mm category = list("hacked", "Security") @@ -479,7 +487,7 @@ name = "Buckshot Shell" id = "buckshot_shell" build_type = AUTOLATHE - materials = list("$metal" = 4000) + materials = list(MAT_METAL = 4000) build_path = /obj/item/ammo_casing/shotgun/buckshot category = list("hacked", "Security") @@ -487,7 +495,7 @@ name = "Electropack" id = "electropack" build_type = AUTOLATHE - materials = list("$metal" = 10000, "$glass" = 2500) + materials = list(MAT_METAL = 10000, MAT_GLASS = 2500) build_path = /obj/item/device/radio/electropack category = list("hacked", "Tools") @@ -495,7 +503,7 @@ name = "Flamethrower" id = "flamethrower" build_type = AUTOLATHE - materials = list("$metal" = 500) + materials = list(MAT_METAL = 500) build_path = /obj/item/weapon/flamethrower/full category = list("hacked", "Security") @@ -503,7 +511,7 @@ name = "Handcuffs" id = "handcuffs" build_type = AUTOLATHE - materials = list("$metal" = 500) + materials = list(MAT_METAL = 500) build_path = /obj/item/weapon/restraints/handcuffs category = list("hacked", "Security") @@ -511,7 +519,7 @@ name = "Incendiary Slug" id = "incendiary_slug" build_type = AUTOLATHE - materials = list("$metal" = 4000) + materials = list(MAT_METAL = 4000) build_path = /obj/item/ammo_casing/shotgun/incendiary category = list("hacked", "Security") @@ -519,7 +527,7 @@ name = "Industrial Welding Tool" id = "large_welding_tool" build_type = AUTOLATHE - materials = list("$metal" = 70, "$glass" = 60) + materials = list(MAT_METAL = 70, MAT_GLASS = 60) build_path = /obj/item/weapon/weldingtool/largetank category = list("hacked", "Tools") @@ -527,7 +535,7 @@ name = "Rapid Construction Device (RCD)" id = "rcd" build_type = AUTOLATHE - materials = list("$metal" = 30000) + materials = list(MAT_METAL = 30000) build_path = /obj/item/weapon/rcd category = list("hacked", "Construction") @@ -535,7 +543,7 @@ name = "Shotgun Dart" id = "shotgun_dart" build_type = AUTOLATHE - materials = list("$metal" = 4000) + materials = list(MAT_METAL = 4000) build_path = /obj/item/ammo_casing/shotgun/dart category = list("hacked", "Security") @@ -543,6 +551,22 @@ name = "Shotgun Slug" id = "shotgun_slug" build_type = AUTOLATHE - materials = list("$metal" = 4000) + materials = list(MAT_METAL = 4000) build_path = /obj/item/ammo_casing/shotgun category = list("hacked", "Security") + +/datum/design/desttagger + name = "Destination tagger" + id = "desttagger" + build_type = AUTOLATHE + materials = list(MAT_METAL = 250, MAT_GLASS = 125) + build_path = /obj/item/device/destTagger + category = list("initial", "Electronics") + +/datum/design/handlabeler + name = "Hand labeler" + id = "handlabel" + build_type = AUTOLATHE + materials = list(MAT_METAL = 150, MAT_GLASS = 125) + build_path = /obj/item/weapon/hand_labeler + category = list("initial", "Electronics") \ No newline at end of file diff --git a/code/modules/research/designs/bluespace_designs.dm b/code/modules/research/designs/bluespace_designs.dm index 13b3dcadf7c..06e6d3cd257 100644 --- a/code/modules/research/designs/bluespace_designs.dm +++ b/code/modules/research/designs/bluespace_designs.dm @@ -7,41 +7,41 @@ id = "bluespace_crystal" req_tech = list("bluespace" = 4, "materials" = 6) build_type = PROTOLATHE - materials = list("$diamond" = 1500, "$plasma" = 1500) - reliability_base = 100 + materials = list(MAT_DIAMOND = 1500, MAT_PLASMA = 1500) + reliability = 100 build_path = /obj/item/bluespace_crystal/artificial - category = list("Bluespace") - + category = list("Bluespace") + /datum/design/bag_holding name = "Bag of Holding" desc = "A backpack that opens into a localized pocket of Blue Space." id = "bag_holding" req_tech = list("bluespace" = 4, "materials" = 6) build_type = PROTOLATHE - materials = list("$gold" = 3000, "$diamond" = 1500, "$uranium" = 250) - reliability_base = 80 + materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250) + reliability = 80 build_path = /obj/item/weapon/storage/backpack/holding category = list("Bluespace") - + /datum/design/bluespace_belt name = "Belt of Holding" desc = "An astonishingly complex belt popularized by a rich blue-space technology magnate." id = "bluespace_belt" req_tech = list("bluespace" = 4, "materials" = 6) build_type = PROTOLATHE - materials = list("$gold" = 1500, "$diamond" = 3000, "$uranium" = 1000) - reliability_base = 80 + materials = list(MAT_GOLD = 1500, MAT_DIAMOND = 3000, MAT_URANIUM = 1000) + reliability = 80 build_path = /obj/item/weapon/storage/belt/bluespace category = list("Bluespace") - + /datum/design/bluespacebeaker name = "Bluespace Beaker" desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units." id = "bluespacebeaker" req_tech = list("bluespace" = 2, "materials" = 6) build_type = PROTOLATHE - materials = list("$metal" = 3000, "$plasma" = 3000, "$diamond" = 500) - reliability_base = 76 + materials = list(MAT_METAL = 3000, MAT_PLASMA = 3000, MAT_DIAMOND = 500) + reliability = 76 build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace category = list("Medical") @@ -51,17 +51,17 @@ id = "telesci_Gps" req_tech = list("materials" = 2, "magnets" = 3, "bluespace" = 3) build_type = PROTOLATHE - materials = list("$metal" = 500, "$glass" = 1000) + materials = list(MAT_METAL = 500, MAT_GLASS = 1000) build_path = /obj/item/device/gps category = list("Bluespace") - + /datum/design/miningsatchel_holding name = "Mining Satchel of Holding" desc = "A mining satchel that can hold an infinite amount of ores." id = "minerbag_holding" req_tech = list("bluespace" = 3, "materials" = 4) build_type = PROTOLATHE - materials = list("$gold" = 250, "$uranium" = 500) //quite cheap, for more convenience + materials = list(MAT_GOLD = 250, MAT_URANIUM = 500) //quite cheap, for more convenience reliability = 100 build_path = /obj/item/weapon/storage/bag/ore/holding category = list("Bluespace") @@ -72,7 +72,7 @@ id = "telepad_beacon" req_tech = list("bluespace" = 3, "materials" = 4) build_type = PROTOLATHE - materials = list ("$metal" = 2000, "$glass" = 1750, "$silver" = 500) + materials = list (MAT_METAL = 2000, MAT_GLASS = 1750, MAT_SILVER = 500) build_path = /obj/item/device/telepad_beacon category = list("Bluespace") @@ -82,6 +82,6 @@ id = "beacon" req_tech = list("bluespace" = 1) build_type = PROTOLATHE - materials = list ("$metal" = 20, "$glass" = 10) + materials = list (MAT_METAL = 20, MAT_GLASS = 10) build_path = /obj/item/device/radio/beacon category = list("Bluespace") \ No newline at end of file diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index 7318429f7e7..416f901c455 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -8,7 +8,7 @@ id = "aicore" req_tech = list("programming" = 4, "biotech" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/aicore category = list("Computer Boards") @@ -18,7 +18,7 @@ id = "aifixer" req_tech = list("programming" = 3, "biotech" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/aifixer category = list("Computer Boards") @@ -28,7 +28,7 @@ id = "aiupload" req_tech = list("programming" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/aiupload category = list("Computer Boards") @@ -38,7 +38,7 @@ id = "atmosalerts" req_tech = list("programming" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/atmos_alert category = list("Computer Boards") @@ -48,7 +48,7 @@ id = "air_management" req_tech = list("programming" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/air_management category = list("Computer Boards") @@ -58,7 +58,7 @@ id = "seccamera" req_tech = list("programming" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/camera category = list("Computer Boards") @@ -68,7 +68,7 @@ id = "clonecontrol" req_tech = list("programming" = 3, "biotech" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/cloning category = list("Computer Boards") @@ -78,7 +78,7 @@ id = "comconsole" req_tech = list("programming" = 2, "magnets" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/communications category = list("Computer Boards") @@ -88,7 +88,7 @@ id = "crewconsole" req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/crew category = list("Computer Boards") @@ -98,7 +98,7 @@ id = "borgupload" req_tech = list("programming" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/borgupload category = list("Computer Boards") @@ -108,7 +108,7 @@ id = "scan_console" req_tech = list("programming" = 2, "biotech" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/scan_consolenew category = list("Computer Boards") @@ -118,7 +118,7 @@ id = "dronecontrol" req_tech = list("programming" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/drone_control category = list("Computer Boards") @@ -128,7 +128,7 @@ id = "mechacontrol" req_tech = list("programming" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha_control category = list("Computer Boards") @@ -138,7 +138,7 @@ id = "idcardconsole" req_tech = list("programming" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/card category = list("Computer Boards") @@ -148,7 +148,7 @@ id = "mechapower" req_tech = list("programming" = 2, "powerstorage" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mech_bay_power_console category = list("Computer Boards") @@ -158,7 +158,7 @@ id = "med_data" req_tech = list("programming" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/med_data category = list("Computer Boards") @@ -168,7 +168,7 @@ id = "message_monitor" req_tech = list("programming" = 5) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/message_monitor category = list("Computer Boards") @@ -178,7 +178,7 @@ id = "operating" req_tech = list("programming" = 2, "biotech" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/operating category = list("Computer Boards") @@ -188,7 +188,7 @@ id = "powermonitor" req_tech = list("programming" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/powermonitor category = list("Computer Boards") @@ -198,7 +198,7 @@ id = "prisonmanage" req_tech = list("programming" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/prisoner category = list("Computer Boards") @@ -208,7 +208,7 @@ id = "rdconsole" req_tech = list("programming" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/rdconsole category = list("Computer Boards") @@ -218,7 +218,7 @@ id = "rdservercontrol" req_tech = list("programming" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/rdservercontrol category = list("Computer Boards") @@ -228,7 +228,7 @@ id = "robocontrol" req_tech = list("programming" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/robotics category = list("Computer Boards") @@ -238,7 +238,7 @@ id = "secdata" req_tech = list("programming" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/secure_data category = list("Computer Boards") @@ -248,7 +248,7 @@ id = "solarcontrol" req_tech = list("programming" = 2, "powerstorage" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/solar_control category = list("Computer Boards") @@ -258,7 +258,7 @@ id = "spacepodc" req_tech = list("programming" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/pod_locater category = list("Computer Boards") @@ -268,7 +268,7 @@ id = "ordercomp" req_tech = list("programming" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/ordercomp category = list("Computer Boards") @@ -278,7 +278,7 @@ id = "supplycomp" req_tech = list("programming" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/supplycomp category = list("Computer Boards") @@ -288,7 +288,7 @@ id = "comm_monitor" req_tech = list("programming" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/comm_monitor category = list("Computer Boards") @@ -298,7 +298,7 @@ id = "comm_server" req_tech = list("programming" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/comm_server category = list("Computer Boards") @@ -308,7 +308,7 @@ id = "comm_traffic" req_tech = list("programming" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/comm_traffic category = list("Computer Boards") @@ -318,7 +318,7 @@ id = "telesci_console" req_tech = list("programming" = 3, "bluespace" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telesci_console category = list("Computer Boards") @@ -328,7 +328,7 @@ id = "teleconsole" req_tech = list("programming" = 3, "bluespace" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/teleporter category = list("Computer Boards") @@ -338,7 +338,7 @@ datum/design/GAC id = "GAC" req_tech = list("programming" = 3, "magnets" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/air_management datum/design/tank_control @@ -347,7 +347,7 @@ datum/design/tank_control id = "tankcontrol" req_tech = list("programming" = 3, "magnets" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/large_tank_control datum/design/AAC @@ -356,5 +356,5 @@ datum/design/AAC id = "AAC" req_tech = list("programming" = 4, "magnets" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/atmos_automation diff --git a/code/modules/research/designs/equipment_designs.dm b/code/modules/research/designs/equipment_designs.dm index ab78834a877..9cdefac2cb6 100644 --- a/code/modules/research/designs/equipment_designs.dm +++ b/code/modules/research/designs/equipment_designs.dm @@ -7,7 +7,7 @@ id = "health_hud" req_tech = list("biotech" = 2, "magnets" = 3) build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) + materials = list(MAT_METAL = 50, MAT_GLASS = 50) build_path = /obj/item/clothing/glasses/hud/health category = list("Equipment") @@ -17,7 +17,7 @@ id = "magboots" req_tech = list("materials" = 4, "magnets" = 4, "engineering" = 5) build_type = PROTOLATHE - materials = list("$metal" = 4500, "$silver" = 1500, "$gold" = 2500) + materials = list(MAT_METAL = 4500, MAT_SILVER = 1500, MAT_GOLD = 2500) build_path = /obj/item/clothing/shoes/magboots category = list("Equipment") @@ -27,7 +27,7 @@ id = "night_vision_goggles" req_tech = list("magnets" = 4) build_type = PROTOLATHE - materials = list("$metal" = 100, "$glass" = 100, "$uranium" = 1000) + materials = list(MAT_METAL = 100, MAT_GLASS = 100, MAT_URANIUM = 1000) build_path = /obj/item/clothing/glasses/night category = list("Equipment") @@ -37,7 +37,7 @@ id = "health_hud_night" req_tech = list("biotech" = 4, "magnets" = 5) build_type = PROTOLATHE - materials = list("$metal" = 200, "$glass" = 200, "$uranium" = 1000, "$silver" = 250) + materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_URANIUM = 1000, MAT_SILVER = 250) build_path = /obj/item/clothing/glasses/hud/health/night category = list("Equipment") @@ -47,7 +47,7 @@ id = "security_hud_night" req_tech = list("magnets" = 5, "combat" = 4) build_type = PROTOLATHE - materials = list("$metal" = 200, "$glass" = 200, "$uranium" = 1000, "$gold" = 350) + materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_URANIUM = 1000, MAT_GOLD = 350) build_path = /obj/item/clothing/glasses/hud/security/night category = list("Equipment") @@ -57,7 +57,7 @@ id = "nvgmesons" req_tech = list("materials" = 5, "magnets" = 5, "engineering" = 4) build_type = PROTOLATHE - materials = list("$metal" = 300, "$glass" = 400, "$plasma" = 250, "$uranium" = 1000) + materials = list(MAT_METAL = 300, MAT_GLASS = 400, MAT_PLASMA = 250, MAT_URANIUM = 1000) build_path = /obj/item/clothing/glasses/meson/night category = list("Equipment") @@ -67,7 +67,7 @@ id = "mesons" req_tech = list("materials" = 3, "magnets" = 3, "engineering" = 3) build_type = PROTOLATHE - materials = list("$metal" = 200, "$glass" = 300, "$plasma" = 100) + materials = list(MAT_METAL = 200, MAT_GLASS = 300, MAT_PLASMA = 100) build_path = /obj/item/clothing/glasses/meson category = list("Equipment") @@ -77,7 +77,7 @@ id = "security_hud" req_tech = list("magnets" = 3, "combat" = 2) build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) + materials = list(MAT_METAL = 50, MAT_GLASS = 50) build_path = /obj/item/clothing/glasses/hud/security category = list("Equipment") @@ -87,7 +87,7 @@ id = "air_horn" req_tech = list("materials" = 2, "engineering" = 2) build_type = PROTOLATHE - materials = list("$metal" = 4000, "$bananium" = 1000) + materials = list(MAT_METAL = 4000, MAT_BANANIUM = 1000) build_path = /obj/item/weapon/bikehorn/airhorn category = list("Equipment") @@ -97,7 +97,7 @@ id = "weldingmask" req_tech = list("materials" = 2, "engineering" = 2) build_type = PROTOLATHE - materials = list("$metal" = 4000, "$glass" = 1000) + materials = list(MAT_METAL = 4000, MAT_GLASS = 1000) build_path = /obj/item/clothing/mask/gas/welding category = list("Equipment") @@ -107,7 +107,7 @@ id = "detectivescanner" req_tech = list("biotech" = 2, "magnets" = 4) build_type = PROTOLATHE - materials = list("$metal" = 6000, "$glass" = 2000) + materials = list(MAT_METAL = 6000, MAT_GLASS = 2000) build_path = /obj/item/device/detective_scanner locked = 1 //no validhunting scientists. category = list("Equipment") \ No newline at end of file diff --git a/code/modules/research/designs/janitorial_designs.dm b/code/modules/research/designs/janitorial_designs.dm index 3d81f8614ef..76a469d04e6 100644 --- a/code/modules/research/designs/janitorial_designs.dm +++ b/code/modules/research/designs/janitorial_designs.dm @@ -7,7 +7,7 @@ id = "advmop" req_tech = list("materials" = 4, "engineering" = 3) build_type = PROTOLATHE - materials = list("$metal" = 2500, "$glass" = 200) + materials = list(MAT_METAL = 2500, MAT_GLASS = 200) build_path = /obj/item/weapon/mop/advanced category = list("Janitorial") @@ -17,16 +17,16 @@ id = "holosign" req_tech = list("magnets" = 3, "powerstorage" = 2) build_type = PROTOLATHE - materials = list("$metal" = 2000, "$glass" = 1000) + materials = list(MAT_METAL = 2000, MAT_GLASS = 1000) build_path = /obj/item/weapon/holosign_creator category = list("Janitorial") - + /datum/design/light_replacer name = "Light Replacer" desc = "A device to automatically replace lights. Refill with working lightbulbs." id = "light_replacer" req_tech = list("magnets" = 3, "materials" = 4) build_type = PROTOLATHE - materials = list("$metal" = 1500, "$silver" = 150, "$glass" = 3000) + materials = list(MAT_METAL = 1500, MAT_SILVER = 150, MAT_GLASS = 3000) build_path = /obj/item/device/lightreplacer category = list("Janitorial") \ No newline at end of file diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index f7c2252dbd9..7a2e7046de1 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -8,7 +8,7 @@ id = "thermomachine" req_tech = list("programming" = 3, "plasmatech" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/thermomachine category = list ("Engineering Machinery") @@ -18,7 +18,7 @@ id = "smes" req_tech = list("programming" = 4, "power" = 5, "engineering" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/smes category = list ("Engineering Machinery") @@ -28,7 +28,7 @@ id = "emitter" req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 5) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/emitter category = list ("Engineering Machinery") @@ -38,7 +38,7 @@ id = "telepad" req_tech = list("programming" = 4, "bluespace" = 4, "materials" = 3, "engineering" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telesci_pad category = list ("Teleportation Machinery") @@ -48,7 +48,7 @@ id = "tele_hub" req_tech = list("programming" = 3, "bluespace" = 5, "materials" = 4, "engineering" = 5) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/teleporter_hub category = list ("Teleportation Machinery") @@ -58,7 +58,7 @@ id = "tele_station" req_tech = list("programming" = 4, "bluespace" = 4, "engineering" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/teleporter_station category = list ("Teleportation Machinery") @@ -68,7 +68,7 @@ id = "bodyscanner" req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/bodyscanner category = list("Medical Machinery") @@ -78,7 +78,7 @@ id = "bodyscanner_console" req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/bodyscanner_console category = list("Medical Machinery") @@ -88,7 +88,7 @@ id = "clonepod" req_tech = list("programming" = 3, "biotech" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/clonepod category = list("Medical Machinery") @@ -98,7 +98,7 @@ id = "clonescanner" req_tech = list("programming" = 3, "biotech" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/clonescanner category = list("Medical Machinery") @@ -108,7 +108,7 @@ id = "cryotube" req_tech = list("programming" = 4, "biotech" = 3, "engineering" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/cryo_tube category = list("Medical Machinery") @@ -118,7 +118,7 @@ id = "chem_dispenser" req_tech = list("programming" = 4, "biotech" = 3, "engineering" = 4, "materials" = 4, "plasmatech" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/chem_dispenser category = list("Medical Machinery") @@ -128,7 +128,7 @@ id = "chem_heater" req_tech = list("engineering" = 2, "materials" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/chem_heater category = list ("Medical Machinery") @@ -138,7 +138,7 @@ id = "sleeper" req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/sleeper category = list("Medical Machinery") @@ -148,7 +148,7 @@ id = "sleeper_console" req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/sleep_console category = list("Medical Machinery") @@ -158,7 +158,7 @@ id = "biogenerator" req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/biogenerator category = list ("Hydroponics Machinery") @@ -168,7 +168,7 @@ id = "hydro_tray" req_tech = list("programming" = 1, "biotech" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/hydroponics category = list ("Hydroponics Machinery") @@ -178,7 +178,7 @@ id = "autolathe" req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/autolathe category = list("Research Machinery") @@ -188,7 +188,7 @@ id = "circuit_imprinter" req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/circuit_imprinter category = list("Research Machinery") @@ -198,7 +198,7 @@ id = "cyborgrecharger" req_tech = list("powerstorage" = 3, "engineering" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/cyborgrecharger category = list("Research Machinery") @@ -208,7 +208,7 @@ id = "destructive_analyzer" req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/destructive_analyzer category = list("Research Machinery") @@ -218,7 +218,7 @@ id = "mechfab" req_tech = list("programming" = 3, "engineering" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mechfab category = list("Research Machinery") @@ -228,7 +228,7 @@ id = "mech_recharger" req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mech_recharger category = list("Research Machinery") @@ -238,7 +238,7 @@ id = "protolathe" req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/protolathe category = list("Research Machinery") @@ -248,7 +248,7 @@ id = "rdserver" req_tech = list("programming" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/rdserver category = list("Research Machinery") @@ -258,7 +258,7 @@ id = "gibber" req_tech = list("programming" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/gibber category = list ("Misc. Machinery") @@ -268,7 +268,7 @@ id = "smartfridge" req_tech = list("programming" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/smartfridge category = list ("Misc. Machinery") @@ -278,7 +278,7 @@ id = "monkey_recycler" req_tech = list("programming" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/monkey_recycler category = list ("Misc. Machinery") @@ -288,7 +288,7 @@ id = "seed_extractor" req_tech = list("programming" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/seed_extractor category = list ("Misc. Machinery") @@ -298,7 +298,7 @@ id = "processor" req_tech = list("programming" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/processor category = list ("Misc. Machinery") @@ -308,7 +308,7 @@ id = "recycler" req_tech = list("programming" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/recycler category = list ("Misc. Machinery") @@ -318,7 +318,7 @@ id = "holopad" req_tech = list("programming" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/holopad category = list ("Misc. Machinery") @@ -328,7 +328,7 @@ id = "arcademachinebattle" req_tech = list("programming" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/arcade/battle category = list("Misc. Machinery") @@ -338,7 +338,7 @@ id = "microwave" req_tech = list("programming" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/microwave category = list("Misc. Machinery") @@ -348,7 +348,7 @@ id = "oven" req_tech = list("programming" = 1, "plasmatech" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/oven category = list("Misc. Machinery") @@ -358,7 +358,7 @@ id = "grill" req_tech = list("programming" = 1, "plasmatech" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/grill category = list("Misc. Machinery") @@ -368,7 +368,7 @@ id = "candymaker" req_tech = list("programming" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/candy_maker category = list("Misc. Machinery") @@ -378,7 +378,7 @@ id = "arcademachineonion" req_tech = list("programming" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/arcade/orion_trail category = list("Misc. Machinery") @@ -388,7 +388,7 @@ id = "selunload" req_tech = list("programming" = 5) build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) + materials = list(MAT_GLASS = 2000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/programmable category = list("Misc. Machinery") @@ -398,7 +398,7 @@ id = "vendor" req_tech = list("programming" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/vendor category = list("Misc. Machinery") @@ -408,7 +408,7 @@ id = "pod" req_tech = list("programming" = 2,"engineering" = 4) build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) + materials = list(MAT_GLASS = 2000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/pod category = list("Misc. Machinery") @@ -418,7 +418,7 @@ id = "ore_redemption" req_tech = list("programming" = 1, "engineering" = 2) build_type = IMPRINTER - materials = list("$glass"=1000, "sacid"=20) + materials = list(MAT_GLASS=1000, "sacid"=20) build_path = /obj/item/weapon/circuitboard/ore_redemption category = list ("Misc. Machinery") @@ -428,6 +428,6 @@ id = "mining_equipment_vendor" req_tech = list("programming" = 1, "engineering" = 2) build_type = IMPRINTER - materials = list("$glass"=1000, "sacid"=20) + materials = list(MAT_GLASS=1000, "sacid"=20) build_path = /obj/item/weapon/circuitboard/mining_equipment_vendor category = list ("Misc. Machinery") \ No newline at end of file diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index f1f58a0ca0e..842fde52857 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -8,7 +8,7 @@ id = "ripley_main" req_tech = list("programming" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/ripley/main category = list("Exosuit Modules") @@ -18,7 +18,7 @@ id = "ripley_peri" req_tech = list("programming" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/ripley/peripherals category = list("Exosuit Modules") @@ -29,7 +29,7 @@ id = "odysseus_main" req_tech = list("programming" = 3,"biotech" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/odysseus/main category = list("Exosuit Modules") @@ -39,7 +39,7 @@ id = "odysseus_peri" req_tech = list("programming" = 3,"biotech" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/odysseus/peripherals category = list("Exosuit Modules") @@ -50,7 +50,7 @@ id = "gygax_main" req_tech = list("programming" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/gygax/main category = list("Exosuit Modules") @@ -60,7 +60,7 @@ id = "gygax_peri" req_tech = list("programming" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/gygax/peripherals category = list("Exosuit Modules") @@ -70,7 +70,7 @@ id = "gygax_targ" req_tech = list("programming" = 4, "combat" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/gygax/targeting category = list("Exosuit Modules") @@ -81,7 +81,7 @@ id = "durand_main" req_tech = list("programming" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/durand/main category = list("Exosuit Modules") @@ -91,7 +91,7 @@ id = "durand_peri" req_tech = list("programming" = 4) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/durand/peripherals category = list("Exosuit Modules") @@ -101,7 +101,7 @@ id = "durand_targ" req_tech = list("programming" = 4, "combat" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/durand/targeting category = list("Exosuit Modules") @@ -112,7 +112,7 @@ id = "phazon_main" req_tech = list("programming" = 5, "materials" = 7, "powerstorage" = 6) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/phazon/main category = list("Exosuit Modules") @@ -122,7 +122,7 @@ id = "phazon_peri" req_tech = list("programming" = 5, "bluespace" = 6) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/phazon/peripherals category = list("Exosuit Modules") @@ -132,7 +132,7 @@ id = "phazon_targ" req_tech = list("programming" = 5, "magnets" = 6) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/phazon/targeting category = list("Exosuit Modules") @@ -143,7 +143,7 @@ id = "honker_main" req_tech = list("programming" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/honker/main category = list("Exosuit Modules") @@ -153,7 +153,7 @@ id = "honker_peri" req_tech = list("programming" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/honker/peripherals category = list("Exosuit Modules") @@ -163,6 +163,6 @@ id = "honker_targ" req_tech = list("programming" = 3) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/honker/targeting category = list("Exosuit Modules") diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 2ae7d1216d3..62acc4f884b 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -7,7 +7,7 @@ id = "borg_suit" build_type = MECHFAB build_path = /obj/item/robot_parts/robot_suit - materials = list("$metal"=15000) + materials = list(MAT_METAL=15000) construction_time = 500 category = list("Cyborg") @@ -16,7 +16,7 @@ id = "borg_chest" build_type = MECHFAB build_path = /obj/item/robot_parts/chest - materials = list("$metal"=40000) + materials = list(MAT_METAL=40000) construction_time = 350 category = list("Cyborg") @@ -25,7 +25,7 @@ id = "borg_head" build_type = MECHFAB build_path = /obj/item/robot_parts/head - materials = list("$metal"=5000) + materials = list(MAT_METAL=5000) construction_time = 350 category = list("Cyborg") @@ -34,7 +34,7 @@ id = "borg_l_arm" build_type = MECHFAB build_path = /obj/item/robot_parts/l_arm - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 200 category = list("Cyborg") @@ -43,7 +43,7 @@ id = "borg_r_arm" build_type = MECHFAB build_path = /obj/item/robot_parts/r_arm - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 200 category = list("Cyborg") @@ -52,7 +52,7 @@ id = "borg_l_leg" build_type = MECHFAB build_path = /obj/item/robot_parts/l_leg - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 200 category = list("Cyborg") @@ -61,7 +61,7 @@ id = "borg_r_leg" build_type = MECHFAB build_path = /obj/item/robot_parts/r_leg - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 200 category = list("Cyborg") @@ -71,7 +71,7 @@ id = "borg_binary_communication" build_type = MECHFAB build_path = /obj/item/robot_parts/robot_component/binary_communication_device - materials = list("$metal"=2500, "$glass"=1000) + materials = list(MAT_METAL=2500, MAT_GLASS=1000) construction_time = 200 category = list("Cyborg Repair") @@ -80,7 +80,7 @@ id = "borg_radio" build_type = MECHFAB build_path = /obj/item/robot_parts/robot_component/radio - materials = list("$metal"=2500, "$glass"=1000) + materials = list(MAT_METAL=2500, MAT_GLASS=1000) construction_time = 200 category = list("Cyborg Repair") @@ -89,7 +89,7 @@ id = "borg_actuator" build_type = MECHFAB build_path = /obj/item/robot_parts/robot_component/actuator - materials = list("$metal"=3500) + materials = list(MAT_METAL=3500) construction_time = 200 category = list("Cyborg Repair") @@ -98,7 +98,7 @@ id = "borg_diagnosis_unit" build_type = MECHFAB build_path = /obj/item/robot_parts/robot_component/diagnosis_unit - materials = list("$metal"=3500) + materials = list(MAT_METAL=3500) construction_time = 200 category = list("Cyborg Repair") @@ -107,7 +107,7 @@ id = "borg_camera" build_type = MECHFAB build_path = /obj/item/robot_parts/robot_component/camera - materials = list("$metal"=2500, "$glass"=1000) + materials = list(MAT_METAL=2500, MAT_GLASS=1000) construction_time = 200 category = list("Cyborg Repair") @@ -116,7 +116,7 @@ id = "borg_armor" build_type = MECHFAB build_path = /obj/item/robot_parts/robot_component/armour - materials = list("$metal"=5000) + materials = list(MAT_METAL=5000) construction_time = 200 category = list("Cyborg Repair") @@ -126,7 +126,7 @@ id = "ripley_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/ripley - materials = list("$metal"=20000) + materials = list(MAT_METAL=20000) construction_time = 100 category = list("Ripley") @@ -136,7 +136,7 @@ id = "firefighter_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/firefighter - materials = list("$metal"=20000) + materials = list(MAT_METAL=20000) construction_time = 100 category = list("Firefighter") @@ -145,7 +145,7 @@ id = "ripley_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/ripley_torso - materials = list("$metal"=20000, "$glass"=7500) + materials = list(MAT_METAL=20000, MAT_GLASS=7500) construction_time = 200 category = list("Ripley","Firefighter") @@ -154,7 +154,7 @@ id = "ripley_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/ripley_left_arm - materials = list("$metal"=15000) + materials = list(MAT_METAL=15000) construction_time = 150 category = list("Ripley","Firefighter") @@ -163,7 +163,7 @@ id = "ripley_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/ripley_right_arm - materials = list("$metal"=15000) + materials = list(MAT_METAL=15000) construction_time = 150 category = list("Ripley","Firefighter") @@ -172,7 +172,7 @@ id = "ripley_left_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/ripley_left_leg - materials = list("$metal"=15000) + materials = list(MAT_METAL=15000) construction_time = 150 category = list("Ripley","Firefighter") @@ -181,7 +181,7 @@ id = "ripley_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/ripley_right_leg - materials = list("$metal"=15000) + materials = list(MAT_METAL=15000) construction_time = 150 category = list("Ripley","Firefighter") @@ -191,7 +191,7 @@ id = "odysseus_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/odysseus - materials = list("$metal"=20000) + materials = list(MAT_METAL=20000) construction_time = 100 category = list("Odysseus") @@ -200,7 +200,7 @@ id = "odysseus_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_torso - materials = list("$metal"=12000) + materials = list(MAT_METAL=12000) construction_time = 180 category = list("Odysseus") @@ -209,7 +209,7 @@ id = "odysseus_head" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_head - materials = list("$metal"=6000,"$glass"=10000) + materials = list(MAT_METAL=6000,MAT_GLASS=10000) construction_time = 100 category = list("Odysseus") @@ -218,7 +218,7 @@ id = "odysseus_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_left_arm - materials = list("$metal"=6000) + materials = list(MAT_METAL=6000) construction_time = 120 category = list("Odysseus") @@ -227,7 +227,7 @@ id = "odysseus_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_right_arm - materials = list("$metal"=6000) + materials = list(MAT_METAL=6000) construction_time = 120 category = list("Odysseus") @@ -236,7 +236,7 @@ id = "odysseus_left_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_left_leg - materials = list("$metal"=7000) + materials = list(MAT_METAL=7000) construction_time = 130 category = list("Odysseus") @@ -245,7 +245,7 @@ id = "odysseus_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/odysseus_right_leg - materials = list("$metal"=7000) + materials = list(MAT_METAL=7000) construction_time = 130 category = list("Odysseus") @@ -255,7 +255,7 @@ id = "gygax_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/gygax - materials = list("$metal"=20000) + materials = list(MAT_METAL=20000) construction_time = 100 category = list("Gygax") @@ -264,7 +264,7 @@ id = "gygax_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_torso - materials = list("$metal"=20000,"$glass"=10000,"$diamond"=2000) + materials = list(MAT_METAL=20000,MAT_GLASS=10000,MAT_DIAMOND=2000) construction_time = 300 category = list("Gygax") @@ -273,7 +273,7 @@ id = "gygax_head" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_head - materials = list("$metal"=10000,"$glass"=5000, "$diamond"=2000) + materials = list(MAT_METAL=10000,MAT_GLASS=5000, MAT_DIAMOND=2000) construction_time = 200 category = list("Gygax") @@ -282,7 +282,7 @@ id = "gygax_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_left_arm - materials = list("$metal"=15000, "$diamond"=1000) + materials = list(MAT_METAL=15000, MAT_DIAMOND=1000) construction_time = 200 category = list("Gygax") @@ -291,7 +291,7 @@ id = "gygax_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_right_arm - materials = list("$metal"=15000, "$diamond"=1000) + materials = list(MAT_METAL=15000, MAT_DIAMOND=1000) construction_time = 200 category = list("Gygax") @@ -300,7 +300,7 @@ id = "gygax_left_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_left_leg - materials = list("$metal"=15000, "$diamond"=2000) + materials = list(MAT_METAL=15000, MAT_DIAMOND=2000) construction_time = 200 category = list("Gygax") @@ -309,7 +309,7 @@ id = "gygax_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_right_leg - materials = list("$metal"=15000, "$diamond"=2000) + materials = list(MAT_METAL=15000, MAT_DIAMOND=2000) construction_time = 200 category = list("Gygax") @@ -318,7 +318,7 @@ id = "gygax_armor" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/gygax_armour - materials = list("$metal"=25000,"$diamond"=10000) + materials = list(MAT_METAL=25000,MAT_DIAMOND=10000) construction_time = 600 category = list("Gygax") @@ -328,7 +328,7 @@ id = "durand_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/durand - materials = list("$metal"=25000) + materials = list(MAT_METAL=25000) construction_time = 100 category = list("Durand") @@ -337,7 +337,7 @@ id = "durand_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_torso - materials = list("$metal"=25000,"$glass"=10000,"$silver"=10000) + materials = list(MAT_METAL=25000,MAT_GLASS=10000,MAT_SILVER=10000) construction_time = 300 category = list("Durand") @@ -346,7 +346,7 @@ id = "durand_head" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_head - materials = list("$metal"=10000,"$glass"=15000,"$silver"=2000) + materials = list(MAT_METAL=10000,MAT_GLASS=15000,MAT_SILVER=2000) construction_time = 200 category = list("Durand") @@ -355,7 +355,7 @@ id = "durand_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_left_arm - materials = list("$metal"=10000,"$silver"=4000) + materials = list(MAT_METAL=10000,MAT_SILVER=4000) construction_time = 200 category = list("Durand") @@ -364,7 +364,7 @@ id = "durand_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_right_arm - materials = list("$metal"=10000,"$silver"=4000) + materials = list(MAT_METAL=10000,MAT_SILVER=4000) construction_time = 200 category = list("Durand") @@ -373,7 +373,7 @@ id = "durand_left_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_left_leg - materials = list("$metal"=15000,"$silver"=4000) + materials = list(MAT_METAL=15000,MAT_SILVER=4000) construction_time = 200 category = list("Durand") @@ -382,7 +382,7 @@ id = "durand_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_right_leg - materials = list("$metal"=15000,"$silver"=4000) + materials = list(MAT_METAL=15000,MAT_SILVER=4000) construction_time = 200 category = list("Durand") @@ -391,7 +391,7 @@ id = "durand_armor" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/durand_armor - materials = list("$metal"=50000,"$uranium"=30000) + materials = list(MAT_METAL=50000,MAT_URANIUM=30000) construction_time = 600 category = list("Durand") @@ -401,7 +401,7 @@ id = "honk_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/honker - materials = list("$metal"=20000) + materials = list(MAT_METAL=20000) construction_time = 100 category = list("H.O.N.K") @@ -410,7 +410,7 @@ id = "honk_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_torso - materials = list("$metal"=20000,"$glass"=10000,"$bananium"=10000) + materials = list(MAT_METAL=20000,MAT_GLASS=10000,MAT_BANANIUM=10000) construction_time = 300 category = list("H.O.N.K") @@ -419,7 +419,7 @@ id = "honk_head" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_head - materials = list("$metal"=10000,"$glass"=5000,"$bananium"=5000) + materials = list(MAT_METAL=10000,MAT_GLASS=5000,MAT_BANANIUM=5000) construction_time = 200 category = list("H.O.N.K") @@ -428,7 +428,7 @@ id = "honk_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_left_arm - materials = list("$metal"=15000,"$bananium"=5000) + materials = list(MAT_METAL=15000,MAT_BANANIUM=5000) construction_time = 200 category = list("H.O.N.K") @@ -437,7 +437,7 @@ id = "honk_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_right_arm - materials = list("$metal"=15000,"$bananium"=5000) + materials = list(MAT_METAL=15000,MAT_BANANIUM=5000) construction_time = 200 category = list("H.O.N.K") @@ -446,7 +446,7 @@ id = "honk_left_leg" build_type = MECHFAB build_path =/obj/item/mecha_parts/part/honker_left_leg - materials = list("$metal"=20000,"$bananium"=5000) + materials = list(MAT_METAL=20000,MAT_BANANIUM=5000) construction_time = 200 category = list("H.O.N.K") @@ -455,7 +455,7 @@ id = "honk_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/honker_right_leg - materials = list("$metal"=20000,"$bananium"=5000) + materials = list(MAT_METAL=20000,MAT_BANANIUM=5000) construction_time = 200 category = list("H.O.N.K") @@ -465,7 +465,7 @@ id = "phazon_chassis" build_type = MECHFAB build_path = /obj/item/mecha_parts/chassis/phazon - materials = list("$metal"=20000) + materials = list(MAT_METAL=20000) construction_time = 100 category = list("Phazon") @@ -474,7 +474,7 @@ id = "phazon_torso" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_torso - materials = list("$metal"=35000,"$glass"=10000,"$plasma"=20000) + materials = list(MAT_METAL=35000,MAT_GLASS=10000,MAT_PLASMA=20000) construction_time = 300 category = list("Phazon") @@ -483,7 +483,7 @@ id = "phazon_head" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_head - materials = list("$metal"=15000,"$glass"=5000,"$plasma"=10000) + materials = list(MAT_METAL=15000,MAT_GLASS=5000,MAT_PLASMA=10000) construction_time = 200 category = list("Phazon") @@ -492,7 +492,7 @@ id = "phazon_left_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_left_arm - materials = list("$metal"=20000,"$plasma"=10000) + materials = list(MAT_METAL=20000,MAT_PLASMA=10000) construction_time = 200 category = list("Phazon") @@ -501,7 +501,7 @@ id = "phazon_right_arm" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_right_arm - materials = list("$metal"=20000,"$plasma"=10000) + materials = list(MAT_METAL=20000,MAT_PLASMA=10000) construction_time = 200 category = list("Phazon") @@ -510,7 +510,7 @@ id = "phazon_left_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_left_leg - materials = list("$metal"=20000,"$plasma"=10000) + materials = list(MAT_METAL=20000,MAT_PLASMA=10000) construction_time = 200 category = list("Phazon") @@ -519,7 +519,7 @@ id = "phazon_right_leg" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_right_leg - materials = list("$metal"=20000,"$plasma"=10000) + materials = list(MAT_METAL=20000,MAT_PLASMA=10000) construction_time = 200 category = list("Phazon") @@ -528,7 +528,7 @@ id = "phazon_armor" build_type = MECHFAB build_path = /obj/item/mecha_parts/part/phazon_armor - materials = list("$metal"=45000,"$plasma"=30000) + materials = list(MAT_METAL=45000,MAT_PLASMA=30000) construction_time = 300 category = list("Phazon") @@ -538,7 +538,7 @@ id = "mech_cable_layer" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/tool/cable_layer - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -547,7 +547,7 @@ id = "mech_drill" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -556,7 +556,7 @@ id = "mech_extinguisher" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/tool/extinguisher - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -565,7 +565,7 @@ id = "mech_hydraulic_clamp" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -574,7 +574,7 @@ id = "mech_sleeper" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/tool/sleeper - materials = list("$metal"=5000,"$glass"=10000) + materials = list(MAT_METAL=5000,MAT_GLASS=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -583,7 +583,7 @@ id = "mech_syringe_gun" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun - materials = list("$metal"=3000,"$glass"=2000) + materials = list(MAT_METAL=3000,MAT_GLASS=2000) construction_time = 200 category = list("Exosuit Equipment") @@ -592,7 +592,7 @@ id = "mech_generator" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/generator - materials = list("$metal"=10000,"$glass"=1000,"$silver"=500) + materials = list(MAT_METAL=10000,MAT_GLASS=1000,MAT_SILVER=500) construction_time = 100 category = list("Exosuit Equipment") @@ -601,7 +601,7 @@ id = "mech_taser" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -610,7 +610,7 @@ id = "mech_lmg" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -619,7 +619,7 @@ id = "mech_banana_mortar" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar - materials = list("$metal"=20000,"$bananium"=5000) + materials = list(MAT_METAL=20000,MAT_BANANIUM=5000) construction_time = 300 category = list("Exosuit Equipment") @@ -628,7 +628,7 @@ id = "mech_honker" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/honker - materials = list("$metal"=20000,"$bananium"=10000) + materials = list(MAT_METAL=20000,MAT_BANANIUM=10000) construction_time = 500 category = list("Exosuit Equipment") @@ -637,7 +637,7 @@ id = "mech_mousetrap_mortar" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/mousetrap_mortar - materials = list("$metal"=20000,"$bananium"=5000) + materials = list(MAT_METAL=20000,MAT_BANANIUM=5000) construction_time = 300 category = list("Exosuit Equipment") @@ -649,7 +649,7 @@ build_type = MECHFAB req_tech = list("materials" = 4, "engineering" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill - materials = list("$metal"=10000,"$diamond"=6500) + materials = list(MAT_METAL=10000,MAT_DIAMOND=6500) construction_time = 100 category = list("Exosuit Equipment") @@ -658,7 +658,7 @@ id = "mech_mscanner" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/tool/mining_scanner - materials = list("$metal"=5000,"$glass"=2500) + materials = list(MAT_METAL=5000,MAT_GLASS=2500) construction_time = 50 category = list("Exosuit Equipment") @@ -669,7 +669,7 @@ build_type = MECHFAB req_tech = list("powerstorage"= 3, "engineering" = 3, "materials" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear - materials = list("$metal"=10000,"$glass"=1000,"$silver"=500) + materials = list(MAT_METAL=10000,MAT_GLASS=1000,MAT_SILVER=500) construction_time = 100 category = list("Exosuit Equipment") @@ -680,7 +680,7 @@ build_type = MECHFAB req_tech = list("bluespace" = 2, "magnets" = 3, "engineering" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -691,7 +691,7 @@ build_type = MECHFAB req_tech = list("bluespace" = 3, "magnets" = 2) build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -702,7 +702,7 @@ build_type = MECHFAB req_tech = list("materials" = 4, "bluespace" = 3, "magnets" = 4, "powerstorage"=4, "engineering" = 4) build_path = /obj/item/mecha_parts/mecha_equipment/tool/rcd - materials = list("$metal"=30000,"$gold"=20000,"$plasma"=25000,"$silver"=20000) + materials = list(MAT_METAL=30000,MAT_GOLD=20000,MAT_PLASMA=25000,MAT_SILVER=20000) construction_time = 1200 category = list("Exosuit Equipment") @@ -713,7 +713,7 @@ build_type = MECHFAB req_tech = list("materials" = 5, "combat" = 4) build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster - materials = list("$metal"=20000,"$silver"=5000) + materials = list(MAT_METAL=20000,MAT_SILVER=5000) construction_time = 100 category = list("Exosuit Equipment") @@ -724,7 +724,7 @@ build_type = MECHFAB req_tech = list("materials" = 5, "combat" = 5, "engineering"=3) build_path = /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster - materials = list("$metal"=20000,"$gold"=5000) + materials = list(MAT_METAL=20000,MAT_GOLD=5000) construction_time = 100 category = list("Exosuit Equipment") @@ -735,7 +735,7 @@ build_type = MECHFAB req_tech = list("magnets" = 3, "programming" = 3, "engineering" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid - materials = list("$metal"=10000,"$glass"=5000,"$gold"=1000,"$silver"=2000) + materials = list(MAT_METAL=10000,MAT_GLASS=5000,MAT_GOLD=1000,MAT_SILVER=2000) construction_time = 100 category = list("Exosuit Equipment") @@ -746,7 +746,7 @@ build_type = MECHFAB req_tech = list("combat"= 5, "materials" = 5, "syndicate" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang - materials = list("$metal"=20000,"$gold"=10000,"$uranium"=10000) + materials = list(MAT_METAL=20000,MAT_GOLD=10000,MAT_URANIUM=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -757,7 +757,7 @@ build_type = MECHFAB req_tech = list("combat" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/bolas - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -768,7 +768,7 @@ build_type = MECHFAB req_tech = list("bluespace" = 10, "magnets" = 5) build_path = /obj/item/mecha_parts/mecha_equipment/teleporter - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -779,7 +779,7 @@ build_type = MECHFAB req_tech = list("magnets" = 4, "powerstorage" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay - materials = list("$metal"=10000,"$glass"=2000,"$gold"=2000,"$silver"=3000) + materials = list(MAT_METAL=10000,MAT_GLASS=2000,MAT_GOLD=2000,MAT_SILVER=3000) construction_time = 100 category = list("Exosuit Equipment") @@ -791,7 +791,7 @@ build_type = MECHFAB req_tech = list("combat" = 4, "magnets" = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -802,7 +802,7 @@ build_type = MECHFAB req_tech = list("combat" = 3, "magnets" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -813,7 +813,7 @@ build_type = MECHFAB req_tech = list("combat" = 5, "materials" = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -824,7 +824,7 @@ build_type = MECHFAB req_tech = list("combat" = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -835,7 +835,7 @@ build_type = MECHFAB req_tech = list("combat" = 6, "magnets" = 5, "materials" = 5) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion - materials = list("$metal"=20000,"$silver"=6000,"$uranium"=2000) + materials = list(MAT_METAL=20000,MAT_SILVER=6000,MAT_URANIUM=2000) construction_time = 100 category = list("Exosuit Equipment") @@ -846,7 +846,7 @@ build_type = MECHFAB req_tech = list("combat" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang - materials = list("$metal"=22000,"$gold"=6000,"$silver"=8000) + materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000) construction_time = 100 category = list("Exosuit Equipment") @@ -857,7 +857,7 @@ build_type = MECHFAB req_tech = list("combat" = 6, "materials" = 6) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack - materials = list("$metal"=22000,"$gold"=6000,"$silver"=8000) + materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000) construction_time = 100 category = list("Exosuit Equipment") @@ -868,7 +868,7 @@ build_type = MECHFAB req_tech = list("powerstorage"= 3, "engineering" = 3, "materials" = 3, "combat" = 1, "plasma" = 2) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma - materials = list("$metal"=1500, "$glass"=500, "$plasma"=200) + materials = list(MAT_METAL=1500, MAT_GLASS=500, MAT_PLASMA=200) construction_time = 100 category = list("Exosuit Equipment") @@ -880,7 +880,7 @@ build_type = MECHFAB req_tech = list("combat" = 4, "syndicate" = 3) build_path = /obj/item/borg/upgrade/syndicate - materials = list("$metal"=10000,"$glass"=15000,"$diamond" = 10000) + materials = list(MAT_METAL=10000,MAT_GLASS=15000,MAT_DIAMOND = 10000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -890,7 +890,7 @@ build_type = MECHFAB build_path = /obj/item/borg/upgrade/jetpack req_tech = list("engineering" = 4, "power" = 4) - materials = list("$metal"=10000, "$plasma"=5000, "$uranium" = 6000) + materials = list(MAT_METAL=10000, MAT_PLASMA=5000, MAT_URANIUM = 6000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -900,7 +900,7 @@ build_type = MECHFAB build_path = /obj/item/borg/upgrade/disablercooler req_tech = list("combat" = 5, "power" = 4) - materials = list("$metal"=80000 , "$glass"=6000 , "$gold"= 2000, "$diamond" = 500) + materials = list(MAT_METAL=80000 , MAT_GLASS=6000 , MAT_GOLD= 2000, MAT_DIAMOND = 500) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -909,7 +909,7 @@ id = "borg_upgrade_rename" build_type = MECHFAB build_path = /obj/item/borg/upgrade/rename - materials = list("$metal"=35000) + materials = list(MAT_METAL=35000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -918,7 +918,7 @@ id = "borg_upgrade_reset" build_type = MECHFAB build_path = /obj/item/borg/upgrade/reset - materials = list("$metal"=10000) + materials = list(MAT_METAL=10000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -927,7 +927,7 @@ id = "borg_upgrade_restart" build_type = MECHFAB build_path = /obj/item/borg/upgrade/restart - materials = list("$metal"=60000 , "$glass"=5000) + materials = list(MAT_METAL=60000 , MAT_GLASS=5000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -937,7 +937,7 @@ build_type = MECHFAB build_path = /obj/item/borg/upgrade/vtec req_tech = list("engineering" = 4, "materials" = 5) - materials = list("$metal"=80000 , "$glass"=6000 , "$uranium"= 5000) + materials = list(MAT_METAL=80000 , MAT_GLASS=6000 , MAT_URANIUM= 5000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -947,7 +947,7 @@ build_type = MECHFAB build_path = /obj/item/borg/upgrade/ddrill req_tech = list("engineering" = 5, "materials" = 5) - materials = list("$metal"=10000, "$diamond"=3750) + materials = list(MAT_METAL=10000, MAT_DIAMOND=3750) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -957,7 +957,7 @@ build_type = MECHFAB build_path = /obj/item/borg/upgrade/soh req_tech = list("engineering" = 5, "materials" = 5, "bluespace" = 3) - materials = list("$metal" = 10000, "$gold" = 250, "$uranium" = 500) + materials = list(MAT_METAL = 10000, MAT_GOLD = 250, MAT_URANIUM = 500) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -967,33 +967,33 @@ id = "mecha_tracking" build_type = MECHFAB build_path =/obj/item/mecha_parts/mecha_tracking - materials = list("$metal"=500) + materials = list(MAT_METAL=500) construction_time = 50 category = list("Misc") - + /datum/design/ipc_head name = "IPC Head" id = "ipc_head" build_type = MECHFAB build_path = /obj/item/organ/external/head/ipc - materials = list("$metal"=15000, "$glass"=5000) + materials = list(MAT_METAL=15000, MAT_GLASS=5000) construction_time = 350 category = list("Misc") - + /datum/design/ipc_cell name = "IPC Microbattery" id = "ipc_cell" build_type = MECHFAB build_path = /obj/item/organ/cell - materials = list("$metal"=2000, "$glass"=750) + materials = list(MAT_METAL=2000, MAT_GLASS=750) construction_time = 200 category = list("Misc") - + /datum/design/ipc_optics name = "IPC Optical Sensor" id = "ipc_optics" build_type = MECHFAB build_path = /obj/item/organ/optical_sensor - materials = list("$metal"=1000, "$glass"=2500) + materials = list(MAT_METAL=1000, MAT_GLASS=2500) construction_time = 200 category = list("Misc") \ No newline at end of file diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index f38479d0c93..2f46ef2532f 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -7,8 +7,8 @@ id = "adv_mass_spectrometer" req_tech = list("biotech" = 2, "magnets" = 4) build_type = PROTOLATHE - materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 74 + materials = list(MAT_METAL = 30, MAT_GLASS = 20) + reliability = 74 build_path = "/obj/item/device/mass_spectrometer/adv" category = list("Medical") @@ -18,8 +18,8 @@ id = "adv_reagent_scanner" req_tech = list("biotech" = 2, "magnets" = 4) build_type = PROTOLATHE - materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 74 + materials = list(MAT_METAL = 30, MAT_GLASS = 20) + reliability = 74 build_path = /obj/item/device/reagent_scanner/adv category = list("Medical") @@ -29,8 +29,8 @@ id = "splitbeaker" req_tech = list("materials" = 2) build_type = PROTOLATHE - materials = list("$metal" = 3000) - reliability_base = 76 + materials = list(MAT_METAL = 3000) + reliability = 76 build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact category = list("Medical") @@ -40,8 +40,8 @@ id = "cyborg_analyzer" req_tech = list("programming" = 2, "biotech" = 2, "magnets" = 2) build_type = PROTOLATHE - materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 76 + materials = list(MAT_METAL = 30, MAT_GLASS = 20) + reliability = 76 build_path = /obj/item/device/robotanalyzer category = list("Medical") @@ -51,7 +51,7 @@ id = "healthanalyzer" req_tech = list("biotech" = 2, "magnets" = 2) build_type = PROTOLATHE - materials = list("$metal" = 20, "$glass" = 20) + materials = list(MAT_METAL = 20, MAT_GLASS = 20) build_path = /obj/item/device/healthanalyzer category = list("Medical") @@ -61,7 +61,7 @@ id = "healthanalyzer_upgrade" req_tech = list("biotech" = 2, "magnets" = 3) build_type = PROTOLATHE - materials = list("$metal" = 20, "$glass" = 20) + materials = list(MAT_METAL = 20, MAT_GLASS = 20) build_path = /obj/item/device/healthupgrade category = list("Medical") @@ -71,7 +71,7 @@ id = "defib" req_tech = list("materials" = 7, "biotech" = 5, "powerstorage" = 5) build_type = PROTOLATHE - materials = list("$metal" = 5000, "$glass" = 2000, "$silver" = 1000) + materials = list(MAT_METAL = 5000, MAT_GLASS = 2000, MAT_SILVER = 1000) reliability = 76 build_path = /obj/item/weapon/defibrillator category = list("Medical") @@ -83,8 +83,8 @@ id = "sensor_device" req_tech = list("biotech" = 4, "magnets" = 3, "materials" = 3) build_type = PROTOLATHE - materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 76 + materials = list(MAT_METAL = 30, MAT_GLASS = 20) + reliability = 76 build_path = /obj/item/device/sensor_device category = list("Medical") @@ -94,9 +94,9 @@ id = "mmi" req_tech = list("programming" = 2, "biotech" = 3) build_type = PROTOLATHE | MECHFAB - materials = list("$metal" = 1000, "$glass" = 500) + materials = list(MAT_METAL = 1000, MAT_GLASS = 500) construction_time = 75 - reliability_base = 76 + reliability = 76 build_path = /obj/item/device/mmi category = list("Misc","Medical") @@ -106,18 +106,20 @@ id = "mass_spectrometer" req_tech = list("biotech" = 2, "magnets" = 2) build_type = PROTOLATHE - materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 76 + materials = list(MAT_METAL = 30, MAT_GLASS = 20) + reliability = 76 build_path = /obj/item/device/mass_spectrometer category = list("Medical") /datum/design/posibrain name = "Positronic Brain" - desc = "Allows for the construction of a positronic brain" - id = "posibrain" - req_tech = list("engineering" = 4, "materials" = 6, "bluespace" = 2, "programming" = 4) - build_type = PROTOLATHE - materials = list("$metal" = 2000, "$glass" = 1000, "$silver" = 1000, "$gold" = 500, "$plasma" = 500, "$diamond" = 100) + desc = "The latest in Artificial Intelligences." + id = "mmi_posi" + req_tech = list("programming" = 5, "biotech" = 4) + build_type = PROTOLATHE | MECHFAB + materials = list(MAT_METAL = 1700, MAT_GLASS = 1350, MAT_GOLD = 500) //Gold, because SWAG. + reliability = 74 + construction_time = 75 build_path = /obj/item/device/mmi/posibrain category = list("Misc","Medical") @@ -127,9 +129,9 @@ id = "mmi_radio" req_tech = list("programming" = 2, "biotech" = 4) build_type = PROTOLATHE | MECHFAB - materials = list("$metal" = 1200, "$glass" = 500) + materials = list(MAT_METAL = 1200, MAT_GLASS = 500) construction_time = 75 - reliability_base = 74 + reliability = 74 build_path = /obj/item/device/mmi/radio_enabled category = list("Misc","Medical") @@ -139,7 +141,7 @@ id = "nanopaste" req_tech = list("materials" = 4, "engineering" = 3) build_type = PROTOLATHE - materials = list("$metal" = 7000, "$glass" = 7000) + materials = list(MAT_METAL = 7000, MAT_GLASS = 7000) build_path = /obj/item/stack/nanopaste category = list("Medical") @@ -149,8 +151,8 @@ id = "reagent_scanner" req_tech = list("biotech" = 2, "magnets" = 2) build_type = PROTOLATHE - materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 76 + materials = list(MAT_METAL = 30, MAT_GLASS = 20) + reliability = 76 build_path = /obj/item/device/reagent_scanner category = list("Medical") @@ -160,9 +162,9 @@ id = "sflash" req_tech = list("magnets" = 3, "combat" = 2) build_type = MECHFAB - materials = list("$metal" = 750, "$glass" = 750) + materials = list(MAT_METAL = 750, MAT_GLASS = 750) construction_time = 100 - reliability_base = 76 + reliability = 76 build_path = /obj/item/device/flash/synthetic category = list("Misc") @@ -172,7 +174,7 @@ id = "scalpel_laser1" req_tech = list("biotech" = 2, "materials" = 2, "magnets" = 2) build_type = PROTOLATHE - materials = list("$metal" = 12500, "$glass" = 7500) + materials = list(MAT_METAL = 12500, MAT_GLASS = 7500) build_path = /obj/item/weapon/scalpel/laser1 category = list("Medical") @@ -182,7 +184,7 @@ id = "scalpel_laser2" req_tech = list("biotech" = 3, "materials" = 4, "magnets" = 4) build_type = PROTOLATHE - materials = list("$metal" = 12500, "$glass" = 7500, "$silver" = 2500) + materials = list(MAT_METAL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2500) build_path = /obj/item/weapon/scalpel/laser2 category = list("Medical") @@ -192,7 +194,7 @@ id = "scalpel_laser3" req_tech = list("biotech" = 4, "materials" = 6, "magnets" = 5) build_type = PROTOLATHE - materials = list("$metal" = 12500, "$glass" = 7500, "$silver" = 2000, "$gold" = 1500) + materials = list(MAT_METAL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2000, MAT_GOLD = 1500) build_path = /obj/item/weapon/scalpel/laser3 category = list("Medical") @@ -202,6 +204,50 @@ id = "scalpel_manager" req_tech = list("biotech" = 4, "materials" = 7, "magnets" = 5, "programming" = 4) build_type = PROTOLATHE - materials = list ("$metal" = 12500, "$glass" = 7500, "$silver" = 1500, "$gold" = 1500, "$diamond" = 750) + materials = list (MAT_METAL = 12500, MAT_GLASS = 7500, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_DIAMOND = 750) build_path = /obj/item/weapon/scalpel/manager + category = list("Medical") + +///////////////////////////////////////// +////////////Regular Implants///////////// +///////////////////////////////////////// + +/datum/design/implanter + name = "Implanter" + desc = "A sterile automatic implant injector." + id = "implanter" + req_tech = list("materials" = 1, "programming" = 2, "biotech" = 3) + build_type = PROTOLATHE + materials = list(MAT_METAL = 600, MAT_GLASS = 200) + build_path = /obj/item/weapon/implanter + category = list("Medical") + +/datum/design/implantcase + name = "Implant Case" + desc = "A glass case containing an implant." + id = "implantcase" + req_tech = list("materials" = 1, "biotech" = 2) + build_type = PROTOLATHE + materials = list(MAT_GLASS = 500) + build_path = /obj/item/weapon/implantcase + category = list("Medical") + +/datum/design/implant_freedom + name = "Freedom Implant Case" + desc = "A glass case containing an implant." + id = "implant_freedom" + req_tech = list("materials" = 2, "biotech" = 3, "magnets" = 3, "syndicate" = 5) + build_type = PROTOLATHE + materials = list(MAT_METAL = 50, MAT_GLASS = 500, MAT_GOLD = 250) + build_path = /obj/item/weapon/implantcase/freedom + category = list("Medical") + +/datum/design/implant_adrenalin + name = "Adrenalin Implant Case" + desc = "A glass case containing an implant." + id = "implant_adrenalin" + req_tech = list("materials" = 2, "biotech" = 5, "combat" = 3, "syndicate" = 6) + build_type = PROTOLATHE + materials = list(MAT_METAL = 50, MAT_GLASS = 500, MAT_GOLD = 500, MAT_URANIUM = 100, MAT_DIAMOND = 200) + build_path = /obj/item/weapon/implantcase/adrenaline category = list("Medical") \ No newline at end of file diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm index c78e79ca50f..1fc7a9075b6 100644 --- a/code/modules/research/designs/mining_designs.dm +++ b/code/modules/research/designs/mining_designs.dm @@ -7,8 +7,8 @@ id = "drill_diamond" req_tech = list("materials" = 6, "powerstorage" = 4, "engineering" = 4) build_type = PROTOLATHE - materials = list("$metal" = 3000, "$glass" = 1000, "$diamond" = 3750) //Yes, a whole diamond is needed. - reliability_base = 79 + materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_DIAMOND = 3750) //Yes, a whole diamond is needed. + reliability = 79 build_path = /obj/item/weapon/pickaxe/drill/diamonddrill category = list("Mining") @@ -18,7 +18,7 @@ id = "pick_diamond" req_tech = list("materials" = 6) build_type = PROTOLATHE - materials = list("$diamond" = 3000) + materials = list(MAT_DIAMOND = 3000) build_path = /obj/item/weapon/pickaxe/diamond category = list("Mining") @@ -28,7 +28,7 @@ id = "drill" req_tech = list("materials" = 2, "powerstorage" = 3, "engineering" = 2) build_type = PROTOLATHE - materials = list("$metal" = 6000, "$glass" = 1000) + materials = list(MAT_METAL = 6000, MAT_GLASS = 1000) build_path = /obj/item/weapon/pickaxe/drill category = list("Mining") @@ -38,8 +38,8 @@ id = "plasmacutter" req_tech = list("materials" = 2, "plasmatech" = 2, "engineering" = 2, "combat" = 1, "magnets" = 2) build_type = PROTOLATHE - materials = list("$metal" = 1500, "$glass" = 500, "$gold" = 500, "$plasma" = 500) - reliability_base = 79 + materials = list(MAT_METAL = 1500, MAT_GLASS = 500, MAT_GOLD = 500, MAT_PLASMA = 500) + reliability = 79 build_path = /obj/item/weapon/gun/energy/plasmacutter category = list("Mining") @@ -49,8 +49,8 @@ id = "plasmacutter_adv" req_tech = list("materials" = 4, "plasmatech" = 3, "engineering" = 3, "combat" = 3, "magnets" = 3) build_type = PROTOLATHE - materials = list("$metal" = 3000, "$glass" = 1000, "$plasma" = 2000, "$gold" = 500) - reliability_base = 79 + materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_PLASMA = 2000, MAT_GOLD = 500) + reliability = 79 build_path = /obj/item/weapon/gun/energy/plasmacutter/adv category = list("Mining") @@ -60,6 +60,6 @@ id = "jackhammer" req_tech = list("materials" = 6, "powerstorage" = 6, "engineering" = 5, "magnets" = 6) build_type = PROTOLATHE - materials = list("$metal" = 8000, "$glass" = 1500, "$silver" = 2000, "$diamond" = 6000) + materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_DIAMOND = 6000) build_path = /obj/item/weapon/pickaxe/drill/jackhammer category = list("Mining") diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 403e5745ca8..44aff0048d5 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -7,27 +7,27 @@ id = "design_disk" req_tech = list("programming" = 1) build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 30, "$glass" = 10) + materials = list(MAT_METAL = 30, MAT_GLASS = 10) build_path = /obj/item/weapon/disk/design_disk category = list("Miscellaneous") - + /datum/design/intellicard name = "Intellicard" desc = "Allows for the construction of an intellicard." id = "intellicard" req_tech = list("programming" = 4, "materials" = 4) build_type = PROTOLATHE - materials = list("$glass" = 1000, "$gold" = 200) + materials = list(MAT_GLASS = 1000, MAT_GOLD = 200) build_path = /obj/item/device/aicard category = list("Miscellaneous") - + /datum/design/paicard name = "Personal Artificial Intelligence Card" desc = "Allows for the construction of a pAI Card" id = "paicard" req_tech = list("programming" = 2) build_type = PROTOLATHE - materials = list("$glass" = 500, "$metal" = 500) + materials = list(MAT_GLASS = 500, MAT_METAL = 500) build_path = /obj/item/device/paicard category = list("Miscellaneous") @@ -37,7 +37,7 @@ id = "tech_disk" req_tech = list("programming" = 1) build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 30, "$glass" = 10) + materials = list(MAT_METAL = 30, MAT_GLASS = 10) build_path = /obj/item/weapon/disk/tech_disk category = list("Miscellaneous") @@ -47,6 +47,6 @@ id = "digitalcamera" req_tech = list("programming" = 2, "materials" = 2) build_type = PROTOLATHE - materials = list("$metal" = 500, "$glass" = 300) + materials = list(MAT_METAL = 500, MAT_GLASS = 300) build_path = /obj/item/device/camera/digital category = list("Miscellaneous") \ No newline at end of file diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm index 70be59438fa..0bcbda4eac2 100644 --- a/code/modules/research/designs/power_designs.dm +++ b/code/modules/research/designs/power_designs.dm @@ -8,7 +8,7 @@ id = "basic_cell" req_tech = list("powerstorage" = 1) build_type = PROTOLATHE | AUTOLATHE | MECHFAB | PODFAB - materials = list("$metal" = 700, "$glass" = 50) + materials = list(MAT_METAL = 700, MAT_GLASS = 50) construction_time=100 build_path = /obj/item/weapon/stock_parts/cell category = list("Misc","Power") @@ -19,7 +19,7 @@ id = "high_cell" req_tech = list("powerstorage" = 2) build_type = PROTOLATHE | AUTOLATHE | MECHFAB | PODFAB - materials = list("$metal" = 700, "$glass" = 60) + materials = list(MAT_METAL = 700, MAT_GLASS = 60) construction_time=100 build_path = /obj/item/weapon/stock_parts/cell/high category = list("Misc","Power") @@ -29,9 +29,9 @@ desc = "A power cell that holds 30000 units of energy" id = "hyper_cell" req_tech = list("powerstorage" = 5, "materials" = 4) - reliability_base = 70 + reliability = 70 build_type = PROTOLATHE | MECHFAB | PODFAB - materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 70) + materials = list(MAT_METAL = 400, MAT_GOLD = 150, MAT_SILVER = 150, MAT_GLASS = 70) construction_time=100 build_path = /obj/item/weapon/stock_parts/cell/hyper category = list("Misc","Power") @@ -41,9 +41,9 @@ desc = "A power cell that holds 20000 units of energy" id = "super_cell" req_tech = list("powerstorage" = 3, "materials" = 2) - reliability_base = 75 + reliability = 75 build_type = PROTOLATHE | MECHFAB | PODFAB - materials = list("$metal" = 700, "$glass" = 70) + materials = list(MAT_METAL = 700, MAT_GLASS = 70) construction_time=100 build_path = /obj/item/weapon/stock_parts/cell/super category = list("Misc","Power") @@ -53,9 +53,9 @@ desc = "A power cell that holds 40000 units of energy." id = "bluespace_cell" req_tech = list("powerstorage" = 6, "materials" = 5) - reliability_base = 70 + reliability = 70 build_type = PROTOLATHE | MECHFAB - materials = list("$metal" = 800, "$gold" = 300, "$silver" = 300, "$glass" = 160, "$diamond" = 160) + materials = list(MAT_METAL = 800, MAT_GOLD = 300, MAT_SILVER = 300, MAT_GLASS = 160, MAT_DIAMOND = 160) construction_time=100 build_path = /obj/item/weapon/stock_parts/cell/bluespace category = list("Misc","Power") @@ -66,8 +66,8 @@ id = "pacman" req_tech = list("programming" = 3, "plasmatech" = 3, "powerstorage" = 3, "engineering" = 3) build_type = IMPRINTER - reliability_base = 79 - materials = list("$glass" = 1000, "sacid" = 20) + reliability = 79 + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/pacman category = list("Engineering Machinery") @@ -77,8 +77,8 @@ id = "mrspacman" req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 5) build_type = IMPRINTER - reliability_base = 74 - materials = list("$glass" = 2000, "sacid" = 20) + reliability = 74 + materials = list(MAT_GLASS = 2000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/pacman/mrs category = list("Engineering Machinery") @@ -88,7 +88,7 @@ id = "superpacman" req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4) build_type = IMPRINTER - reliability_base = 76 - materials = list("$glass" = 1000, "sacid" = 20) + reliability = 76 + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/pacman/super category = list("Engineering Machinery") diff --git a/code/modules/research/designs/spacepod_designs.dm b/code/modules/research/designs/spacepod_designs.dm index 3f7b5182d09..57f8490be5e 100644 --- a/code/modules/research/designs/spacepod_designs.dm +++ b/code/modules/research/designs/spacepod_designs.dm @@ -5,7 +5,7 @@ id = "spacepod_main" req_tech = list("materials" = 1) //All parts required to build a basic pod have materials 1, so the mechanic can do his damn job. build_type = PODFAB - materials = list("$metal"=5000) + materials = list(MAT_METAL=5000) build_path = /obj/item/weapon/circuitboard/mecha/pod category = list("Pod_Parts") @@ -21,7 +21,7 @@ req_tech = list("materials" = 1) build_path = /obj/item/pod_parts/pod_frame/fore_port category = list("Pod_Frame") - materials = list("$metal"=15000,"$glass"=5000) + materials = list(MAT_METAL=15000,MAT_GLASS=5000) /datum/design/podframe_ap construction_time = 200 @@ -32,7 +32,7 @@ req_tech = list("materials" = 1) build_path = /obj/item/pod_parts/pod_frame/aft_port category = list("Pod_Frame") - materials = list("$metal"=15000,"$glass"=5000) + materials = list(MAT_METAL=15000,MAT_GLASS=5000) /datum/design/podframe_fs construction_time = 200 @@ -43,7 +43,7 @@ req_tech = list("materials" = 1) build_path = /obj/item/pod_parts/pod_frame/fore_starboard category = list("Pod_Frame") - materials = list("$metal"=15000,"$glass"=5000) + materials = list(MAT_METAL=15000,MAT_GLASS=5000) /datum/design/podframe_as construction_time = 200 @@ -54,7 +54,7 @@ req_tech = list("materials" = 1) build_path = /obj/item/pod_parts/pod_frame/aft_starboard category = list("Pod_Frame") - materials = list("$metal"=15000,"$glass"=5000) + materials = list(MAT_METAL=15000,MAT_GLASS=5000) ////////////////////////// ////////POD CORE//////// @@ -69,7 +69,7 @@ req_tech = list("materials" = 1) build_path = /obj/item/pod_parts/core category = list("Pod_Parts") - materials = list("$metal"=5000,"$uranium"=1000,"$plasma"=5000) + materials = list(MAT_METAL=5000,MAT_URANIUM=1000,MAT_PLASMA=5000) ////////////////////////////////////////// ////////SPACEPOD ARMOR//////////////////// @@ -84,7 +84,7 @@ req_tech = list("materials" = 1) build_path = /obj/item/pod_parts/armor category = list("Pod_Armor") - materials = list("$metal"=15000,"$glass"=5000,"$plasma"=10000) + materials = list(MAT_METAL=15000,MAT_GLASS=5000,MAT_PLASMA=10000) ////////////////////////////////////////// //////SPACEPOD GUNS/////////////////////// @@ -98,7 +98,7 @@ req_tech = list("materials" = 2, "combat" = 2) build_path = /obj/item/device/spacepod_equipment/weaponry/taser category = list("Pod_Weaponry") - materials = list("$metal" = 15000) + materials = list(MAT_METAL = 15000) locked = 1 /datum/design/pod_gun_btaser @@ -110,7 +110,7 @@ req_tech = list("materials" = 3, "combat" = 3) build_path = /obj/item/device/spacepod_equipment/weaponry/burst_taser category = list("Pod_Weaponry") - materials = list("$metal" = 15000,"$plasma"=2000) + materials = list(MAT_METAL = 15000,MAT_PLASMA=2000) locked = 1 /datum/design/pod_gun_laser @@ -122,7 +122,7 @@ req_tech = list("materials" = 3, "combat" = 3, "plasma" = 2) build_path = /obj/item/device/spacepod_equipment/weaponry/laser category = list("Pod_Weaponry") - materials = list("$metal"=10000,"$glass"=5000,"$gold"=1000,"$silver"=2000) + materials = list(MAT_METAL=10000,MAT_GLASS=5000,MAT_GOLD=1000,MAT_SILVER=2000) locked = 1 ////////////////////////////////////////// //////SPACEPOD MISC. ITEMS//////////////// @@ -135,6 +135,6 @@ id = "podmisc_tracker" req_tech = list("materials" = 2) //Materials 2: easy to get, no trackers with 0 science progress build_type = PODFAB - materials = list("$metal"=5000) + materials = list(MAT_METAL=5000) build_path = /obj/item/device/spacepod_equipment/misc/tracker category = list("Pod_Parts") \ No newline at end of file diff --git a/code/modules/research/designs/stock_parts_designs.dm b/code/modules/research/designs/stock_parts_designs.dm index 6f8ff421069..c3e8ea38c96 100644 --- a/code/modules/research/designs/stock_parts_designs.dm +++ b/code/modules/research/designs/stock_parts_designs.dm @@ -8,7 +8,7 @@ id = "basic_capacitor" req_tech = list("powerstorage" = 1) build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 50, "$glass" = 50) + materials = list(MAT_METAL = 50, MAT_GLASS = 50) build_path = /obj/item/weapon/stock_parts/capacitor category = list("Stock Parts") @@ -18,7 +18,7 @@ id = "basic_sensor" req_tech = list("magnets" = 1) build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 50, "$glass" = 20) + materials = list(MAT_METAL = 50, MAT_GLASS = 20) build_path = /obj/item/weapon/stock_parts/scanning_module category = list("Stock Parts") @@ -28,7 +28,7 @@ id = "micro_mani" req_tech = list("materials" = 1, "programming" = 1) build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 30) + materials = list(MAT_METAL = 30) build_path = /obj/item/weapon/stock_parts/manipulator category = list("Stock Parts") @@ -38,7 +38,7 @@ id = "basic_micro_laser" req_tech = list("magnets" = 1) build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 10, "$glass" = 20) + materials = list(MAT_METAL = 10, MAT_GLASS = 20) build_path = /obj/item/weapon/stock_parts/micro_laser category = list("Stock Parts") @@ -48,7 +48,7 @@ id = "basic_matter_bin" req_tech = list("materials" = 1) build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 80) + materials = list(MAT_METAL = 80) build_path = /obj/item/weapon/stock_parts/matter_bin category = list("Stock Parts") @@ -58,7 +58,7 @@ id = "adv_capacitor" req_tech = list("powerstorage" = 3) build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) + materials = list(MAT_METAL = 50, MAT_GLASS = 50) build_path = /obj/item/weapon/stock_parts/capacitor/adv category = list("Stock Parts") @@ -68,7 +68,7 @@ id = "adv_sensor" req_tech = list("magnets" = 3) build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 20) + materials = list(MAT_METAL = 50, MAT_GLASS = 20) build_path = /obj/item/weapon/stock_parts/scanning_module/adv category = list("Stock Parts") @@ -78,7 +78,7 @@ id = "nano_mani" req_tech = list("materials" = 3, "programming" = 2) build_type = PROTOLATHE - materials = list("$metal" = 30) + materials = list(MAT_METAL = 30) build_path = /obj/item/weapon/stock_parts/manipulator/nano category = list("Stock Parts") @@ -88,7 +88,7 @@ id = "high_micro_laser" req_tech = list("magnets" = 3) build_type = PROTOLATHE - materials = list("$metal" = 10, "$glass" = 20) + materials = list(MAT_METAL = 10, MAT_GLASS = 20) build_path = /obj/item/weapon/stock_parts/micro_laser/high category = list("Stock Parts") @@ -98,7 +98,7 @@ id = "adv_matter_bin" req_tech = list("materials" = 3) build_type = PROTOLATHE - materials = list("$metal" = 80) + materials = list(MAT_METAL = 80) build_path = /obj/item/weapon/stock_parts/matter_bin/adv category = list("Stock Parts") @@ -108,8 +108,8 @@ id = "super_capacitor" req_tech = list("powerstorage" = 5, "materials" = 4) build_type = PROTOLATHE - reliability_base = 71 - materials = list("$metal" = 50, "$glass" = 50, "$gold" = 20) + reliability = 71 + materials = list(MAT_METAL = 50, MAT_GLASS = 50, MAT_GOLD = 20) build_path = /obj/item/weapon/stock_parts/capacitor/super category = list("Stock Parts") @@ -119,8 +119,8 @@ id = "phasic_sensor" req_tech = list("magnets" = 5, "materials" = 3) build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 20, "$silver" = 10) - reliability_base = 72 + materials = list(MAT_METAL = 50, MAT_GLASS = 20, MAT_SILVER = 10) + reliability = 72 build_path = /obj/item/weapon/stock_parts/scanning_module/phasic category = list("Stock Parts") @@ -130,8 +130,8 @@ id = "pico_mani" req_tech = list("materials" = 5, "programming" = 2) build_type = PROTOLATHE - materials = list("$metal" = 30) - reliability_base = 73 + materials = list(MAT_METAL = 30) + reliability = 73 build_path = /obj/item/weapon/stock_parts/manipulator/pico category = list("Stock Parts") @@ -141,8 +141,8 @@ id = "ultra_micro_laser" req_tech = list("magnets" = 5, "materials" = 5) build_type = PROTOLATHE - materials = list("$metal" = 10, "$glass" = 20, "$uranium" = 10) - reliability_base = 70 + materials = list(MAT_METAL = 10, MAT_GLASS = 20, MAT_URANIUM = 10) + reliability = 70 build_path = /obj/item/weapon/stock_parts/micro_laser/ultra category = list("Stock Parts") @@ -152,8 +152,8 @@ id = "super_matter_bin" req_tech = list("materials" = 5) build_type = PROTOLATHE - materials = list("$metal" = 80) - reliability_base = 75 + materials = list(MAT_METAL = 80) + reliability = 75 build_path = /obj/item/weapon/stock_parts/matter_bin/super category = list("Stock Parts") @@ -163,8 +163,8 @@ id = "quadratic_capacitor" req_tech = list("powerstorage" = 6, "materials" = 5) build_type = PROTOLATHE - reliability_base = 71 - materials = list("$metal" = 100, "$glass" = 100, "$diamond" = 40) + reliability = 71 + materials = list(MAT_METAL = 100, MAT_GLASS = 100, MAT_DIAMOND = 40) build_path = /obj/item/weapon/stock_parts/capacitor/quadratic category = list("Stock Parts") @@ -174,8 +174,8 @@ id = "triphasic_scanning" req_tech = list("magnets" = 6, "materials" = 4) build_type = PROTOLATHE - materials = list("$metal" = 100, "$glass" = 40, "$diamond" = 20) - reliability_base = 72 + materials = list(MAT_METAL = 100, MAT_GLASS = 40, MAT_DIAMOND = 20) + reliability = 72 build_path = /obj/item/weapon/stock_parts/scanning_module/triphasic category = list("Stock Parts") @@ -185,8 +185,8 @@ id = "femto_mani" req_tech = list("materials" = 6, "programming" = 3) build_type = PROTOLATHE - materials = list("$metal" = 60, "$diamond" = 30) - reliability_base = 73 + materials = list(MAT_METAL = 60, MAT_DIAMOND = 30) + reliability = 73 build_path = /obj/item/weapon/stock_parts/manipulator/femto category = list("Stock Parts") @@ -196,8 +196,8 @@ id = "quadultra_micro_laser" req_tech = list("magnets" = 6, "materials" = 6) build_type = PROTOLATHE - materials = list("$metal" = 20, "$glass" = 40, "$uranium" = 20, "$diamond" = 20) - reliability_base = 70 + materials = list(MAT_METAL = 20, MAT_GLASS = 40, MAT_URANIUM = 20, MAT_DIAMOND = 20) + reliability = 70 build_path = /obj/item/weapon/stock_parts/micro_laser/quadultra category = list("Stock Parts") @@ -207,8 +207,8 @@ id = "bluespace_matter_bin" req_tech = list("materials" = 6) build_type = PROTOLATHE - materials = list("$metal" = 160, "$diamond" = 200) - reliability_base = 75 + materials = list(MAT_METAL = 160, MAT_DIAMOND = 200) + reliability = 75 build_path = /obj/item/weapon/stock_parts/matter_bin/bluespace category = list("Stock Parts") @@ -218,7 +218,7 @@ id = "rped" req_tech = list("engineering" = 3, "materials" = 3) build_type = PROTOLATHE - materials = list("$metal" = 10000, "$glass" = 5000) //hardcore + materials = list(MAT_METAL = 10000, MAT_GLASS = 5000) //hardcore build_path = /obj/item/weapon/storage/part_replacer category = list("Stock Parts") @@ -228,6 +228,6 @@ id = "bs_rped" req_tech = list("engineering" = 3, "materials" = 5, "programming" = 3, "bluespace" = 3) build_type = PROTOLATHE - materials = list("$metal" = 15000, "$glass" = 5000, "$silver" = 2500) //hardcore + materials = list(MAT_METAL = 15000, MAT_GLASS = 5000, MAT_SILVER = 2500) //hardcore build_path = /obj/item/weapon/storage/part_replacer/bluespace category = list("Stock Parts") \ No newline at end of file diff --git a/code/modules/research/designs/telecomms_designs.dm b/code/modules/research/designs/telecomms_designs.dm index 2f60fc78311..4c6d72c0120 100644 --- a/code/modules/research/designs/telecomms_designs.dm +++ b/code/modules/research/designs/telecomms_designs.dm @@ -7,17 +7,17 @@ id = "s-bus" req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telecomms/bus category = list("Subspace Telecomms") - + /datum/design/telecomms_hub name = "Machine Board (Hub Mainframe)" desc = "Allows for the construction of Telecommunications Hub Mainframes." id = "s-hub" req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telecomms/hub category = list("Subspace Telecomms") @@ -28,17 +28,17 @@ id = "s-processor" req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telecomms/processor category = list("Subspace Telecomms") - + /datum/design/telecomms_relay name = "Machine Board (Relay Mainframe)" desc = "Allows for the construction of Telecommunications Relay Mainframes." id = "s-relay" req_tech = list("programming" = 1, "engineering" = 2, "bluespace" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telecomms/relay category = list("Subspace Telecomms") @@ -48,7 +48,7 @@ id = "s-server" req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telecomms/server category = list("Subspace Telecomms") @@ -58,27 +58,27 @@ id = "s-broadcaster" req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster category = list("Subspace Telecomms") - + /datum/design/subspace_receiver name = "Machine Board (Subspace Receiver)" desc = "Allows for the construction of Subspace Receiver equipment." id = "s-receiver" req_tech = list("programming" = 2, "engineering" = 1, "bluespace" = 1) build_type = IMPRINTER - materials = list("$glass" = 1000, "sacid" = 20) + materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telecomms/receiver category = list("Subspace Telecomms") - + /datum/design/subspace_crystal name = "Ansible Crystal" desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." id = "s-crystal" req_tech = list("magnets" = 2, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE - materials = list("$glass" = 1000, "$silver" = 20, "$gold" = 20) + materials = list(MAT_GLASS = 1000, MAT_SILVER = 20, MAT_GOLD = 20) build_path = /obj/item/weapon/stock_parts/subspace/crystal category = list("Stock Parts") @@ -88,9 +88,9 @@ id = "s-filter" req_tech = list("programming" = 2, "magnets" = 2) build_type = PROTOLATHE - materials = list("$metal" = 40, "$silver" = 10) + materials = list(MAT_METAL = 40, MAT_SILVER = 10) build_path = /obj/item/weapon/stock_parts/subspace/filter - category = list("Stock Parts") + category = list("Stock Parts") /datum/design/subspace_amplifier name = "Subspace Amplifier" @@ -98,7 +98,7 @@ id = "s-amplifier" req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE - materials = list("$metal" = 10, "$gold" = 30, "$uranium" = 15) + materials = list(MAT_METAL = 10, MAT_GOLD = 30, MAT_URANIUM = 15) build_path = /obj/item/weapon/stock_parts/subspace/amplifier category = list("Stock Parts") @@ -108,17 +108,17 @@ id = "s-analyzer" req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE - materials = list("$metal" = 10, "$gold" = 15) + materials = list(MAT_METAL = 10, MAT_GOLD = 15) build_path = /obj/item/weapon/stock_parts/subspace/analyzer - category = list("Stock Parts") - + category = list("Stock Parts") + /datum/design/subspace_ansible name = "Subspace Ansible" desc = "A compact module capable of sensing extradimensional activity." id = "s-ansible" req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE - materials = list("$metal" = 80, "$silver" = 20) + materials = list(MAT_METAL = 80, MAT_SILVER = 20) build_path = /obj/item/weapon/stock_parts/subspace/ansible category = list("Stock Parts") @@ -128,16 +128,16 @@ id = "s-transmitter" req_tech = list("magnets" = 3, "materials" = 3, "bluespace" = 2) build_type = PROTOLATHE - materials = list("$glass" = 100, "$silver" = 10, "$uranium" = 15) + materials = list(MAT_GLASS = 100, MAT_SILVER = 10, MAT_URANIUM = 15) build_path = /obj/item/weapon/stock_parts/subspace/transmitter - category = list("Stock Parts") - + category = list("Stock Parts") + /datum/design/subspace_treatment name = "Subspace Treatment Disk" desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves." id = "s-treatment" req_tech = list("programming" = 2, "magnets" = 1, "materials" = 2, "bluespace" = 1) build_type = PROTOLATHE - materials = list("$metal" = 10, "$silver" = 20) + materials = list(MAT_METAL = 10, MAT_SILVER = 20) build_path = /obj/item/weapon/stock_parts/subspace/treatment category = list("Stock Parts") diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index f27eb81f01e..3482547f113 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -8,8 +8,8 @@ id = "nuclear_gun" req_tech = list("combat" = 4, "materials" = 5, "powerstorage" = 3) build_type = PROTOLATHE - materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 2000) - reliability_base = 76 + materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_URANIUM = 2000) + reliability = 76 build_path = /obj/item/weapon/gun/energy/gun/nuclear locked = 1 category = list("Weapons") @@ -20,7 +20,7 @@ id = "decloner" req_tech = list("combat" = 6, "materials" = 7, "biotech" = 5, "powerstorage" = 6) build_type = PROTOLATHE - materials = list("$gold" = 5000,"$uranium" = 10000, "mutagen" = 40) + materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000, "mutagen" = 40) build_path = /obj/item/weapon/gun/energy/decloner locked = 1 category = list("Weapons") @@ -31,10 +31,11 @@ id = "largecrossbow" req_tech = list("combat" = 5, "materials" = 5, "engineering" = 3, "biotech" = 4, "syndicate" = 3) build_type = PROTOLATHE - materials = list("$metal" = 5000, "$glass" = 1500, "$uranium" = 1500, "$silver" = 1500) + materials = list(MAT_METAL = 5000, MAT_GLASS = 1500, MAT_URANIUM = 1500, MAT_SILVER = 1500) build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large locked = 1 category = list("Weapons") + reliability = 76 /datum/design/flora_gun name = "Floral Somatoray" @@ -42,7 +43,7 @@ id = "flora_gun" req_tech = list("materials" = 2, "biotech" = 3, "powerstorage" = 3) build_type = PROTOLATHE - materials = list("$metal" = 2000, "$glass" = 500, "radium" = 20) + materials = list(MAT_METAL = 2000, MAT_GLASS = 500, "radium" = 20) build_path = /obj/item/weapon/gun/energy/floragun category = list("Weapons") @@ -52,7 +53,7 @@ id = "ioncarbine" req_tech = list("combat" = 5, "materials" = 4, "magnets" = 4) build_type = PROTOLATHE - materials = list("$silver" = 4000, "$metal" = 6000, "$uranium" = 1000) + materials = list(MAT_SILVER = 4000, MAT_METAL = 6000, MAT_URANIUM = 1000) build_path = /obj/item/weapon/gun/energy/ionrifle/carbine locked = 1 category = list("Weapons") @@ -63,8 +64,8 @@ id = "large_Grenade" req_tech = list("combat" = 3, "materials" = 2) build_type = PROTOLATHE - materials = list("$metal" = 3000) - reliability_base = 79 + materials = list(MAT_METAL = 3000) + reliability = 79 build_path = /obj/item/weapon/grenade/chem_grenade/large category = list("Weapons") @@ -74,7 +75,7 @@ id = "tele_shield" req_tech = list("combat" = 4, "materials" = 3, "engineering" = 3) build_type = PROTOLATHE - materials = list("$metal" = 4000, "$glass" = 5000, "$silver" = 300) + materials = list(MAT_METAL = 4000, MAT_GLASS = 5000, MAT_SILVER = 300) build_path = /obj/item/weapon/shield/riot/tele category = list("Weapons") @@ -84,7 +85,7 @@ id = "lasercannon" req_tech = list("combat" = 4, "materials" = 3, "powerstorage" = 3) build_type = PROTOLATHE - materials = list("$metal" = 10000, "$glass" = 2000, "$diamond" = 2000) + materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_DIAMOND = 2000) build_path = /obj/item/weapon/gun/energy/lasercannon locked = 1 category = list("Weapons") @@ -95,7 +96,7 @@ id = "receiver" req_tech = list("combat" = 5, "materials" = 4) build_type = PROTOLATHE - materials = list("$metal" = 6500, "$silver" = 500) + materials = list(MAT_METAL = 6500, MAT_SILVER = 500) build_path = /obj/item/weaponcrafting/receiver category = list("Weapons") @@ -105,7 +106,7 @@ id = "ppistol" req_tech = list("combat" = 5, "plasmatech" = 4) build_type = PROTOLATHE - materials = list("$metal" = 5000, "$glass" = 1000, "$plasma" = 3000) + materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_PLASMA = 3000) build_path = /obj/item/weapon/gun/energy/toxgun locked = 1 category = list("Weapons") @@ -116,7 +117,7 @@ id = "smg" req_tech = list("combat" = 4, "materials" = 3) build_type = PROTOLATHE - materials = list("$metal" = 8000, "$silver" = 2000, "$diamond" = 1000) + materials = list(MAT_METAL = 8000, MAT_SILVER = 2000, MAT_DIAMOND = 1000) build_path = /obj/item/weapon/gun/projectile/automatic locked = 1 category = list("Weapons") @@ -127,7 +128,7 @@ id = "mag_smg" req_tech = list("combat" = 4, "materials" = 3) build_type = PROTOLATHE - materials = list("$metal" = 2000) + materials = list(MAT_METAL = 2000) build_path = /obj/item/ammo_box/magazine/smgm9mm category = list("Weapons") @@ -137,7 +138,7 @@ id = "rapidsyringe" req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2) build_type = PROTOLATHE - materials = list("$metal" = 5000, "$glass" = 1000) + materials = list(MAT_METAL = 5000, MAT_GLASS = 1000) build_path = /obj/item/weapon/gun/syringe/rapidsyringe category = list("Weapons") @@ -147,7 +148,7 @@ id = "stunshell" req_tech = list("combat" = 3, "materials" = 3) build_type = PROTOLATHE - materials = list("$metal" = 200) + materials = list(MAT_METAL = 200) build_path = /obj/item/ammo_casing/shotgun/stunslug category = list("Weapons") @@ -157,7 +158,7 @@ id = "stunrevolver" req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 2) build_type = PROTOLATHE - materials = list("$metal" = 4000, "$glass" = 1000) + materials = list(MAT_METAL = 4000, MAT_GLASS = 1000) build_path = /obj/item/weapon/gun/energy/stunrevolver locked = 1 category = list("Weapons") @@ -168,7 +169,7 @@ id = "temp_gun" req_tech = list("combat" = 3, "materials" = 4, "powerstorage" = 3, "magnets" = 2) build_type = PROTOLATHE - materials = list("$metal" = 5000, "$glass" = 500, "$silver" = 3000) + materials = list(MAT_METAL = 5000, MAT_GLASS = 500, MAT_SILVER = 3000) build_path = /obj/item/weapon/gun/energy/temperature locked = 1 category = list("Weapons") @@ -179,7 +180,7 @@ id = "suppressor" req_tech = list("combat" = 6, "engineering" = 5, "syndicate" = 3) build_type = PROTOLATHE - materials = list("$metal" = 2000, "$silver" = 500) + materials = list(MAT_METAL = 2000, MAT_SILVER = 500) build_path = /obj/item/weapon/suppressor category = list("Weapons") @@ -189,7 +190,7 @@ id = "techshotshell" req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 4, "magnets" = 3) build_type = PROTOLATHE - materials = list("$metal" = 1000, "$glass" = 200, "$silver" = 300) + materials = list(MAT_METAL = 1000, MAT_GLASS = 200, MAT_SILVER = 300) build_path = /obj/item/ammo_casing/shotgun/techshell category = list("Weapons") @@ -199,7 +200,7 @@ id = "xray" req_tech = list("combat" = 6, "materials" = 5, "biotech" = 5, "powerstorage" = 4) build_type = PROTOLATHE - materials = list("$gold" = 5000,"$uranium" = 10000, "$metal" = 4000) + materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000, MAT_METAL = 4000) build_path = /obj/item/weapon/gun/energy/xray locked = 1 category = list("Weapons") \ No newline at end of file diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 37fc63ce552..4d07d25704d 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -52,7 +52,7 @@ Note: Must be placed west/left of and R&D console to function. RefreshParts() reagents.my_atom = src - + /obj/machinery/r_n_d/protolathe/upgraded/New() ..() component_parts = list() @@ -85,21 +85,21 @@ Note: Must be placed west/left of and R&D console to function. /obj/machinery/r_n_d/protolathe/proc/check_mat(datum/design/being_built, var/M) // now returns how many times the item can be built with the material var/A = 0 switch(M) - if("$metal") + if(MAT_METAL) A = m_amount - if("$glass") + if(MAT_GLASS) A = g_amount - if("$gold") + if(MAT_GOLD) A = gold_amount - if("$silver") + if(MAT_SILVER) A = silver_amount - if("$plasma") + if(MAT_PLASMA) A = plasma_amount - if("$uranium") + if(MAT_URANIUM) A = uranium_amount - if("$diamond") + if(MAT_DIAMOND) A = diamond_amount - if("$bananium") + if(MAT_BANANIUM) A = clown_amount else A = reagents.get_reagent_amount(M) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index dca34a6b9b6..ff498b9f511 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -49,7 +49,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/id = 0 //ID of the computer (for server restrictions). var/sync = 1 //If sync = 0, it doesn't show up on Server Control Console - req_access = list(access_research) //Data and setting manipulation requires scientist access. + req_access = list(access_tox) //Data and setting manipulation requires scientist access. var/selected_category var/list/datum/design/matching_designs = list() //for the search function @@ -162,11 +162,12 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(istype(D, /obj/item/weapon/disk/tech_disk)) t_disk = D else if (istype(D, /obj/item/weapon/disk/design_disk)) d_disk = D else - user << " Machine cannot accept disks in that format." + user << "Machine cannot accept disks in that format." + return + if(!user.drop_item()) return - user.drop_item() D.loc = src - user << " You add the disk to the machine!" + user << "You add the disk to the machine!" else ..() src.updateUsrDialog() @@ -270,7 +271,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, else if(href_list["deconstruct"]) //Deconstruct the item in the destructive analyzer and update the research holder. if(linked_destroy) if(linked_destroy.busy) - usr << " The destructive analyzer is busy at the moment." + usr << "The destructive analyzer is busy at the moment." else var/choice = input("Proceeding will destroy loaded item.") in list("Proceed", "Cancel") if(choice == "Cancel" || !linked_destroy) return @@ -283,7 +284,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, linked_destroy.busy = 0 if(!linked_destroy.hacked) if(!linked_destroy.loaded_item) - usr <<" The destructive analyzer appears to be empty." + usr <<"The destructive analyzer appears to be empty." screen = 1.0 return if((linked_destroy.loaded_item.reliability >= 99 - (linked_destroy.decon_mod * 3)) || linked_destroy.loaded_item.crit_fail) @@ -296,8 +297,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, else //Same design always gain quality screen = 2.3 //Crit fail gives the same design a lot of reliability, like really a lot if(linked_lathe) //Also sends salvaged materials to a linked protolathe, if any. - linked_lathe.m_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.m_amt*(linked_destroy.decon_mod/10))) - linked_lathe.g_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.g_amt*(linked_destroy.decon_mod/10))) + linked_lathe.m_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.materials[MAT_METAL]*(linked_destroy.decon_mod/10))) + linked_lathe.g_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.materials[MAT_GLASS]*(linked_destroy.decon_mod/10))) linked_destroy.loaded_item = null else screen = 1.0 @@ -328,7 +329,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, else if(href_list["sync"]) //Sync the research holder with all the R&D consoles in the game that aren't sync protected. screen = 0.0 if(!sync) - usr << " You must connect to the network first!" + usr << "You must connect to the network first!" else griefProtection() //Putting this here because I dont trust the sync process spawn(30) @@ -405,27 +406,26 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(enough_materials) for(var/M in being_built.materials) switch(M) - if("$metal") + if(MAT_METAL) linked_lathe.m_amount = max(0, (linked_lathe.m_amount-(being_built.materials[M]/coeff * amount))) - if("$glass") + if(MAT_GLASS) linked_lathe.g_amount = max(0, (linked_lathe.g_amount-(being_built.materials[M]/coeff * amount))) - if("$gold") + if(MAT_GOLD) linked_lathe.gold_amount = max(0, (linked_lathe.gold_amount-(being_built.materials[M]/coeff * amount))) - if("$silver") + if(MAT_SILVER) linked_lathe.silver_amount = max(0, (linked_lathe.silver_amount-(being_built.materials[M]/coeff * amount))) - if("$plasma") + if(MAT_PLASMA) linked_lathe.plasma_amount = max(0, (linked_lathe.plasma_amount-(being_built.materials[M]/coeff * amount))) - if("$uranium") + if(MAT_URANIUM) linked_lathe.uranium_amount = max(0, (linked_lathe.uranium_amount-(being_built.materials[M]/coeff * amount))) - if("$diamond") + if(MAT_DIAMOND) linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-(being_built.materials[M]/coeff * amount))) - if("$bananium") + if(MAT_BANANIUM) linked_lathe.clown_amount = max(0, (linked_lathe.clown_amount-(being_built.materials[M]/coeff * amount))) else linked_lathe.reagents.remove_reagent(M, being_built.materials[M]/coeff * amount) var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes. - var/R = being_built.reliability var/O = being_built.locked spawn(32*amount/coeff) if(g2g) //And if we only fail the material requirements, we still spend time and power @@ -433,11 +433,9 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/obj/item/new_item = new P(src) if( new_item.type == /obj/item/weapon/storage/backpack/holding ) new_item.investigate_log("built by [key]","singulo") - new_item.reliability = R - new_item.m_amt /= coeff - new_item.g_amt /= coeff - if(linked_lathe.hacked) - R = max((new_item.reliability/2), 0) + new_item.reliability = 100 + new_item.materials[MAT_METAL] /= coeff + new_item.materials[MAT_GLASS] /= coeff if(O) var/obj/item/weapon/storage/lockbox/L = new/obj/item/weapon/storage/lockbox(linked_lathe.loc) new_item.loc = L @@ -482,21 +480,20 @@ won't update every console in existence) but it's more of a hassle to do. Also, g2g = 0 break switch(M) - if("$glass") + if(MAT_GLASS) linked_imprinter.g_amount = max(0, (linked_imprinter.g_amount-being_built.materials[M]/coeff)) - if("$gold") + if(MAT_GOLD) linked_imprinter.gold_amount = max(0, (linked_imprinter.gold_amount-being_built.materials[M]/coeff)) - if("$diamond") + if(MAT_DIAMOND) linked_imprinter.diamond_amount = max(0, (linked_imprinter.diamond_amount-being_built.materials[M]/coeff)) else linked_imprinter.reagents.remove_reagent(M, being_built.materials[M]/coeff) var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes. - var/R = being_built.reliability spawn(16) if(g2g) var/obj/item/new_item = new P(src) - new_item.reliability = R + new_item.reliability = 100 new_item.loc = linked_imprinter.loc linked_imprinter.busy = 0 screen = old_screen @@ -736,11 +733,14 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Load Design to Disk" else dat += "Name: [d_disk.blueprint.name]
" - dat += "Level: [Clamp((d_disk.blueprint.reliability + rand(-15,15)), 0, 100)]
" - switch(d_disk.blueprint.build_type) - if(IMPRINTER) dat += "Lathe Type: Circuit Imprinter
" - if(PROTOLATHE) dat += "Lathe Type: Proto-lathe
" - if(AUTOLATHE) dat += "Lathe Type: Auto-lathe
" + dat += "Level: [d_disk.blueprint.reliability]
" + var/b_type = d_disk.blueprint.build_type + if(b_type) + dat += "Lathe Types:
" + if(b_type & IMPRINTER) dat += "Circuit Imprinter
" + if(b_type & PROTOLATHE) dat += "Proto-lathe
" + if(b_type & AUTOLATHE) dat += "Auto-lathe
" + if(b_type & MECHFAB) dat += "Mech Fabricator
" dat += "Required Materials:
" for(var/M in d_disk.blueprint.materials) if(copytext(M, 1, 2) == "$") dat += "* [copytext(M, 2)] x [d_disk.blueprint.materials[M]]
" @@ -813,7 +813,12 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Origin Tech:
" var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) for(var/T in temp_tech) - dat += "* [CallTechName(T)] [temp_tech[T]]
" + dat += "* [CallTechName(T)] [temp_tech[T]]" + for(var/datum/tech/F in files.known_tech) + if(F.name == CallTechName(T)) + dat += " (Current: [F.level])" + break + dat += "
" dat += "
Options: " dat += "Deconstruct Item" dat += "Eject Item" diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index 5d33c5982f2..c34124af594 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -101,8 +101,8 @@ research holder datum. /datum/research/proc/AddDesign2Known(var/datum/design/D) for(var/datum/design/known in known_designs) if(D.id == known.id) - if(D.reliability_mod > known.reliability_mod) - known.reliability_mod = D.reliability_mod + if(D.reliability > known.reliability) + known.reliability = D.reliability return known_designs += D return @@ -117,7 +117,7 @@ research holder datum. if(DesignHasReqs(PD)) AddDesign2Known(PD) for(var/datum/tech/T in known_tech) - T = between(1,T.level,20) + T = Clamp(T.level, 1, 20) for(var/datum/design/D in known_designs) D.CalcReliability(known_tech) return @@ -127,7 +127,8 @@ research holder datum. /datum/research/proc/UpdateTech(var/ID, var/level) for(var/datum/tech/KT in known_tech) if(KT.id == ID) - if(KT.level <= level) KT.level = max((KT.level + 1), (level - 1)) + if(KT.level <= level) + KT.level = max((KT.level + 1), (level - 1)) return /datum/research/proc/UpdateDesigns(var/obj/item/I, var/list/temp_tech) @@ -172,6 +173,7 @@ datum/tech //Datum of individual technologies. var/id = "id" //An easily referenced ID. Must be alphanumeric, lower-case, and no symbols. var/level = 1 //A simple number scale of the research level. Level 0 = Secret tech. var/max_level = 1 // Maximum level this can be at (for job objectives) + var/rare = 1 //How much CentCom wants to get that tech. Used in supply shuttle tech cost calculation. var/list/req_tech = list() //List of ids associated values of techs required to research this tech. "id" = # @@ -194,6 +196,7 @@ datum/tech/plasmatech desc = "Research into the mysterious substance colloqually known as 'plasma'." id = "plasmatech" max_level = 4 + rare = 3 datum/tech/powerstorage name = "Power Manipulation Technology" @@ -206,6 +209,7 @@ datum/tech/bluespace desc = "Research into the sub-reality known as 'blue-space'" id = "bluespace" max_level = 6 + rare = 2 datum/tech/biotech name = "Biological Technology" @@ -236,6 +240,7 @@ datum/tech/syndicate desc = "The study of technologies that violate standard Nanotrasen regulations." id = "syndicate" max_level = 0 // Don't count towards maxed research, since it's illegal. + rare = 4 /* datum/tech/arcane @@ -264,6 +269,23 @@ datum/tech/robotics req_tech = list("materials" = 3, "programming" = 3) */ +/datum/tech/proc/getCost(var/current_level = null) + // Calculates tech disk's supply points sell cost + if(!current_level) + current_level = initial(level) + + if(current_level >= level) + return 0 + + var/cost = 0 + var/i + for(i=current_level+1, i<=level, i++) + if(i == initial(level)) + continue + cost += i*5*rare + + return cost + /obj/item/weapon/disk/tech_disk name = "Technology Disk" desc = "A disk for storing technology data for further research." @@ -271,8 +293,7 @@ datum/tech/robotics icon_state = "datadisk2" item_state = "card-id" w_class = 1.0 - m_amt = 30 - g_amt = 10 + materials = list(MAT_METAL=30, MAT_GLASS=10) var/datum/tech/stored /obj/item/weapon/disk/tech_disk/New() @@ -286,8 +307,7 @@ datum/tech/robotics icon_state = "datadisk2" item_state = "card-id" w_class = 1.0 - m_amt = 30 - g_amt = 10 + materials = list(MAT_METAL=30, MAT_GLASS=10) var/datum/design/blueprint /obj/item/weapon/disk/design_disk/New() diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 44b9e1f1f82..67cf7cd9217 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -23,7 +23,7 @@ component_parts += new /obj/item/stack/cable_coil(null,1) RefreshParts() initialize(); //Agouri - + /obj/machinery/r_n_d/server/upgraded/New() ..() component_parts = list() @@ -63,16 +63,20 @@ if(0 to T0C) health = min(100, health + 1) if(T0C to (T20C + 20)) - health = between(0, health, 100) + health = Clamp(health, 0, 100) if((T20C + 20) to (T0C + 70)) health = max(0, health - 1) if(health <= 0) - griefProtection() //I dont like putting this in process() but it's the best I can do without re-writing a chunk of rd servers. + /*griefProtection() This seems to get called twice before running any code that deletes/damages the server or it's files anwyay. + refreshParts and the hasReq procs that get called by this are laggy and do not need to be called by every server on the map every tick */ + var/updateRD = 0 files.known_designs = list() for(var/datum/tech/T in files.known_tech) if(prob(1)) + updateRD++ T.level-- - files.RefreshResearch() + if(updateRD) + files.RefreshResearch() if(delay) delay-- else @@ -244,7 +248,7 @@ temp_server.id_with_download += num else if(href_list["reset_tech"]) - var/choice = alert("Technology Data Rest", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", "Continue", "Cancel") + var/choice = alert("Technology Data Reset", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", "Continue", "Cancel") if(choice == "Continue") for(var/datum/tech/T in temp_server.files.known_tech) if(T.id == href_list["reset_tech"]) @@ -257,7 +261,6 @@ if(choice == "Continue") for(var/datum/design/D in temp_server.files.known_designs) if(D.id == href_list["reset_design"]) - D.reliability_mod = 0 temp_server.files.known_designs -= D break temp_server.files.RefreshResearch() @@ -279,7 +282,7 @@ if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin) continue dat += "[S.name] || " - dat += " Access Rights | " + dat += "Access Rights | " dat += "Data Management" if(badmin) dat += " | Server-to-Server Transfer" dat += "
" diff --git a/code/modules/research/xenoarchaeology/chemistry.dm b/code/modules/research/xenoarchaeology/chemistry.dm index b9ab6fc0b60..a91ed35ca55 100644 --- a/code/modules/research/xenoarchaeology/chemistry.dm +++ b/code/modules/research/xenoarchaeology/chemistry.dm @@ -81,8 +81,7 @@ datum desc = "A small, open-topped glass container for delicate research samples. It sports a re-useable strip for labelling with a pen." icon = 'icons/obj/device.dmi' icon_state = "solution_tray" - m_amt = 0 - g_amt = 5 + materials = list(MAT_GLASS=5) w_class = 1.0 amount_per_transfer_from_this = 1 possible_transfer_amounts = list(1, 2) diff --git a/code/modules/shieldgen/circuits_and_designs.dm b/code/modules/shieldgen/circuits_and_designs.dm index 1ff3f01dea7..b13a5751822 100644 --- a/code/modules/shieldgen/circuits_and_designs.dm +++ b/code/modules/shieldgen/circuits_and_designs.dm @@ -22,7 +22,7 @@ datum/design/shield_gen_ex id = "shield_gen" req_tech = list("bluespace" = 4, "plasmatech" = 3) build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$plasma" = 10000, "$diamond" = 5000, "$gold" = 10000) + materials = list(MAT_GLASS = 2000, "sacid" = 20, MAT_PLASMA = 10000, MAT_DIAMOND = 5000, MAT_GOLD = 10000) build_path = "/obj/machinery/shield_gen/external" //////////////////////////////////////// @@ -48,7 +48,7 @@ datum/design/shield_gen id = "shield_gen" req_tech = list("bluespace" = 4, "plasmatech" = 3) build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$plasma" = 10000, "$diamond" = 5000, "$gold" = 10000) + materials = list(MAT_GLASS = 2000, "sacid" = 20, MAT_PLASMA = 10000, MAT_DIAMOND = 5000, MAT_GOLD = 10000) build_path = "/obj/machinery/shield_gen/external" //////////////////////////////////////// @@ -74,5 +74,5 @@ datum/design/shield_cap id = "shield_cap" req_tech = list("magnets" = 3, "powerstorage" = 4) build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$plasma" = 10000, "$diamond" = 5000, "$silver" = 10000) + materials = list(MAT_GLASS = 2000, "sacid" = 20, MAT_PLASMA = 10000, MAT_DIAMOND = 5000, MAT_SILVER = 10000) build_path = "/obj/machinery/shield_gen/external" diff --git a/code/modules/shuttles/shuttle_supply.dm b/code/modules/shuttles/shuttle_supply.dm index 517b91c03ec..13d1446ccb8 100644 --- a/code/modules/shuttles/shuttle_supply.dm +++ b/code/modules/shuttles/shuttle_supply.dm @@ -1,12 +1,12 @@ /datum/shuttle/ferry/supply var/away_location = 1 //the location to hide at while pretending to be in-transit - var/late_chance = 80 + var/late_chance = 0 var/max_late_time = 300 /datum/shuttle/ferry/supply/short_jump(var/area/origin,var/area/destination) - if(moving_status != SHUTTLE_IDLE) + if(moving_status != SHUTTLE_IDLE) return - + if(isnull(location)) return @@ -17,18 +17,18 @@ if (!at_station()) //at centcom supply_controller.buy() - + //it would be cool to play a sound here moving_status = SHUTTLE_WARMUP spawn(warmup_time*10) - if (moving_status == SHUTTLE_IDLE) + if (moving_status == SHUTTLE_IDLE) return //someone cancelled the launch - + if (at_station() && forbidden_atoms_check()) //cancel the launch because of forbidden atoms. announce over supply channel? moving_status = SHUTTLE_IDLE return - + //We pretend it's a long_jump by making the shuttle stay at centcom for the "in-transit" period. var/area/away_area = get_location_area(away_location) if (origin == away_area) @@ -45,11 +45,11 @@ //late if (prob(late_chance)) sleep(rand(0,max_late_time)) - + move(away_area, destination) - + moving_status = SHUTTLE_IDLE - + if (!at_station()) //at centcom supply_controller.sell() @@ -57,7 +57,7 @@ /datum/shuttle/ferry/supply/proc/forbidden_atoms_check() if (!at_station()) return 0 //if badmins want to send mobs or a nuke on the supply shuttle from centcom we don't care - + return supply_controller.forbidden_atoms_check(get_location_area()) /datum/shuttle/ferry/supply/proc/at_station() diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index e24c5c629af..19425d3a3c5 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -80,7 +80,7 @@ proc/spread_germs_to_organ(obj/item/organ/external/E, mob/living/carbon/human/us proc/do_surgery(mob/living/carbon/M, mob/living/user, obj/item/tool) if(!istype(M)) return 0 - if (user.a_intent == "harm") //check for Hippocratic Oath + if (user.a_intent == I_HARM) //check for Hippocratic Oath return 0 var/zone = user.zone_sel.selecting if(zone in M.op_stage.in_progress) //Can't operate on someone repeatedly. @@ -105,7 +105,7 @@ proc/do_surgery(mob/living/carbon/M, mob/living/user, obj/item/tool) M.op_stage.in_progress -= zone // Clear the in-progress flag. return 1 //don't want to do weapony things after surgery - if (user.a_intent == "help") + if (user.a_intent == I_HELP) user << "\red You can't see any useful way to use [tool] on [M]." return 1 return 0 diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 0b91cbd4e9e..da41f1298b4 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -3,8 +3,7 @@ desc = "Retracts stuff." icon = 'icons/obj/surgery.dmi' icon_state = "retractor" - m_amt = 6000 - g_amt = 3000 + materials = list(MAT_METAL=6000, MAT_GLASS=3000) flags = CONDUCT w_class = 2.0 origin_tech = "materials=1;biotech=1" @@ -15,8 +14,7 @@ desc = "You think you have seen this before." icon = 'icons/obj/surgery.dmi' icon_state = "hemostat" - m_amt = 5000 - g_amt = 2500 + materials = list(MAT_METAL=5000, MAT_GLASS=2500) flags = CONDUCT w_class = 1.0 origin_tech = "materials=1;biotech=1" @@ -28,8 +26,7 @@ desc = "This stops bleeding." icon = 'icons/obj/surgery.dmi' icon_state = "cautery" - m_amt = 2500 - g_amt = 750 + materials = list(MAT_METAL=2500, MAT_GLASS=750) flags = CONDUCT w_class = 1.0 origin_tech = "materials=1;biotech=1" @@ -42,8 +39,7 @@ icon = 'icons/obj/surgery.dmi' icon_state = "drill" hitsound = 'sound/weapons/drill.ogg' - m_amt = 10000 - g_amt = 6000 + materials = list(MAT_METAL=10000, MAT_GLASS=6000) flags = CONDUCT force = 15.0 sharp = 1 @@ -71,8 +67,7 @@ throwforce = 5.0 throw_speed = 3 throw_range = 5 - m_amt = 4000 - g_amt = 1000 + materials = list(MAT_METAL=4000, MAT_GLASS=1000) origin_tech = "materials=1;biotech=1" attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' @@ -136,8 +131,7 @@ throwforce = 9.0 throw_speed = 3 throw_range = 5 - m_amt = 10000 - g_amt = 6000 + materials = list(MAT_METAL=10000, MAT_GLASS=6000) origin_tech = "materials=1;biotech=1" attack_verb = list("attacked", "slashed", "sawed", "cut") diff --git a/icons/mob/species/vox/uniform.dmi b/icons/mob/species/vox/uniform.dmi index 9fbb2649a2a..7efb1671607 100644 Binary files a/icons/mob/species/vox/uniform.dmi and b/icons/mob/species/vox/uniform.dmi differ diff --git a/icons/mob/underwear.dmi b/icons/mob/underwear.dmi index 5c303cbf642..6c36fd0651b 100644 Binary files a/icons/mob/underwear.dmi and b/icons/mob/underwear.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 1883f0a2cb7..7d3c63af612 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/assemblies/new_assemblies.dmi b/icons/obj/assemblies/new_assemblies.dmi index 0f9dc460825..b50ef0e13e3 100644 Binary files a/icons/obj/assemblies/new_assemblies.dmi and b/icons/obj/assemblies/new_assemblies.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 64e1b4941be..c7575075901 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 4a3c4172c7f..f85a3167582 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/wizard.dmi b/icons/obj/wizard.dmi index 60168f993eb..22b7e869860 100644 Binary files a/icons/obj/wizard.dmi and b/icons/obj/wizard.dmi differ diff --git a/paradise.dme b/paradise.dme index b17128a95b3..12deff3c44e 100644 --- a/paradise.dme +++ b/paradise.dme @@ -179,6 +179,7 @@ #include "code\datums\datumvars.dm" #include "code\datums\gas_mixture.dm" #include "code\datums\martial.dm" +#include "code\datums\material_container.dm" #include "code\datums\mind.dm" #include "code\datums\mixed.dm" #include "code\datums\modules.dm" @@ -958,6 +959,7 @@ #include "code\modules\alarm\power_alarm.dm" #include "code\modules\assembly\assembly.dm" #include "code\modules\assembly\bomb.dm" +#include "code\modules\assembly\health.dm" #include "code\modules\assembly\helpers.dm" #include "code\modules\assembly\holder.dm" #include "code\modules\assembly\igniter.dm" @@ -1623,8 +1625,6 @@ #include "code\modules\reagents\Chemistry-Holder.dm" #include "code\modules\reagents\Chemistry-Machinery.dm" #include "code\modules\reagents\Chemistry-Readme.dm" -#include "code\modules\reagents\Chemistry-Reagents.dm" -#include "code\modules\reagents\Chemistry-Recipes.dm" #include "code\modules\reagents\dartgun.dm" #include "code\modules\reagents\grenade_launcher.dm" #include "code\modules\reagents\reagent_containers.dm" @@ -1641,6 +1641,27 @@ #include "code\modules\reagents\newchem\patch.dm" #include "code\modules\reagents\newchem\pyro.dm" #include "code\modules\reagents\newchem\toxins.dm" +#include "code\modules\reagents\oldchem\chemical_reaction\_chemical_reaction_base.dm" +#include "code\modules\reagents\oldchem\chemical_reaction\chemical_reaction_drink.dm" +#include "code\modules\reagents\oldchem\chemical_reaction\chemical_reaction_food.dm" +#include "code\modules\reagents\oldchem\chemical_reaction\chemical_reaction_harm.dm" +#include "code\modules\reagents\oldchem\chemical_reaction\chemical_reaction_med.dm" +#include "code\modules\reagents\oldchem\chemical_reaction\chemical_reaction_misc.dm" +#include "code\modules\reagents\oldchem\chemical_reaction\chemical_reaction_slime.dm" +#include "code\modules\reagents\oldchem\reagents\__oldchem_defines.dm" +#include "code\modules\reagents\oldchem\reagents\_reagent_base.dm" +#include "code\modules\reagents\oldchem\reagents\reagents_admin.dm" +#include "code\modules\reagents\oldchem\reagents\reagents_drugs.dm" +#include "code\modules\reagents\oldchem\reagents\reagents_flammable.dm" +#include "code\modules\reagents\oldchem\reagents\reagents_food.dm" +#include "code\modules\reagents\oldchem\reagents\reagents_med.dm" +#include "code\modules\reagents\oldchem\reagents\reagents_misc.dm" +#include "code\modules\reagents\oldchem\reagents\reagents_toxin.dm" +#include "code\modules\reagents\oldchem\reagents\reagents_water.dm" +#include "code\modules\reagents\oldchem\reagents\drink\reagents_alcohol.dm" +#include "code\modules\reagents\oldchem\reagents\drink\reagents_drink.dm" +#include "code\modules\reagents\oldchem\reagents\drink\reagents_drink_base.dm" +#include "code\modules\reagents\oldchem\reagents\drink\reagents_drink_cold.dm" #include "code\modules\reagents\reagent_containers\blood_pack.dm" #include "code\modules\reagents\reagent_containers\borghydro.dm" #include "code\modules\reagents\reagent_containers\dropper.dm"