diff --git a/README.md b/README.md index dade37afd8e..5a182f9ddfd 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ [![forthebadge](http://forthebadge.com/images/badges/contains-technical-debt.svg)](http://forthebadge.com) [![forthebadge](http://forthebadge.com/images/badges/fuck-it-ship-it.svg)](http://forthebadge.com) -[Website](http://www.nanotrasen.se/) - [Code](https://github.com/ParadiseSS13/Paradise) - [Discord](https://discordapp.com/invite/gXZMc?utm_source=Discord%20Widget&utm_medium=Connect) +[Website](https://nanotrasen.se/) - [Code](https://github.com/ParadiseSS13/Paradise) - [Discord](https://discordapp.com/invite/gXZMc?utm_source=Discord%20Widget&utm_medium=Connect) --- diff --git a/SQL/paradise_schema.sql b/SQL/paradise_schema.sql index bd90e0be9f0..8cf94d61835 100644 --- a/SQL/paradise_schema.sql +++ b/SQL/paradise_schema.sql @@ -266,7 +266,7 @@ CREATE TABLE `player` ( `UI_style` varchar(10) DEFAULT 'Midnight', `UI_style_color` varchar(7) DEFAULT '#ffffff', `UI_style_alpha` smallint(4) DEFAULT '255', - `be_role` mediumtext NOT NULL, + `be_role` mediumtext, `default_slot` smallint(4) DEFAULT '1', `toggles` mediumint(8) DEFAULT '383', `sound` mediumint(8) DEFAULT '31', diff --git a/SQL/paradise_schema_prefixed.sql b/SQL/paradise_schema_prefixed.sql index 94010ad1b74..d1b62ae3767 100644 --- a/SQL/paradise_schema_prefixed.sql +++ b/SQL/paradise_schema_prefixed.sql @@ -265,7 +265,7 @@ CREATE TABLE `SS13_player` ( `UI_style` varchar(10) DEFAULT 'Midnight', `UI_style_color` varchar(7) DEFAULT '#ffffff', `UI_style_alpha` smallint(4) DEFAULT '255', - `be_role` mediumtext NOT NULL, + `be_role` mediumtext, `default_slot` smallint(4) DEFAULT '1', `toggles` mediumint(8) DEFAULT '383', `sound` mediumint(8) DEFAULT '31', diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 094c6e6c12f..afb8adfa849 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -574,7 +574,7 @@ "alb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/permabrig) "alc" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/security/permabrig) "ald" = (/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},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"}) -"ale" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch/gamma{locked = 1; req_access_txt = "1"; use_power = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) +"ale" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch/gamma{locked = 1; req_access_txt = "1"; use_power = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/armoury) "alf" = (/obj/machinery/vending/security,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/device/radio/intercom/department/security{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/armoury) "alg" = (/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/armoury) "alh" = (/obj/effect/decal/warning_stripes/red/hollow,/obj/structure/closet/l3closet/security,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/armoury) @@ -621,7 +621,7 @@ "alW" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/security/warden) "alX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "Secure Armory"; name = "Secure Armory Shutters"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury) "alY" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/security/securearmoury) -"alZ" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{dir = 2; name = "Secure Armory"; req_access_txt = "3"},/obj/machinery/door/window/brigdoor{dir = 1; name = "Secure Armory"; req_access_txt = "3"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury) +"alZ" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{dir = 2; name = "Secure Armory"; req_access_txt = "1"},/obj/machinery/door/window/brigdoor{dir = 1; name = "Secure Armory"; req_access_txt = "3"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury) "ama" = (/obj/structure/closet/secure_closet/security,/obj/structure/window/reinforced{dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/main) "amb" = (/obj/structure/table,/obj/item/clothing/suit/tracksuit/red,/obj/item/device/radio/intercom/department/security{pixel_x = -28},/obj/machinery/camera{c_tag = "Brig Security Equipment Lockers"; dir = 4; network = list("SS13")},/obj/machinery/requests_console{department = "Security"; departmentType = 5; name = "Security Requests Console"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/main) "amc" = (/obj/structure/closet/secure_closet/security,/obj/structure/sign/goldenplaque{pixel_y = 30},/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) @@ -873,9 +873,9 @@ "aqO" = (/obj/structure/sign/poster/legit{pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Firing Range"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/range) "aqP" = (/obj/structure/closet/crate,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/target,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel,/area/security/range) "aqQ" = (/obj/effect/decal/cleanable/dirt,/obj/item/device/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/range) -"aqR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/brig) -"aqS" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/security/brig) -"aqT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/brig) +"aqR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) +"aqS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) +"aqT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "aqU" = (/obj/machinery/light{dir = 1; on = 1},/obj/item/device/radio/intercom/department/security{pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) "aqV" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) "aqW" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) @@ -924,10 +924,10 @@ "arN" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/range) "arO" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/range) "arP" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/range) -"arQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/plasteel,/area/security/brig) +"arQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "arR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/range) -"arS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) -"arT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) +"arS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) +"arT" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "arU" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/area/solar/auxstarboard) "arV" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "burst_r"},/turf/space,/area/shuttle/trade/sol) "arW" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1450; master_tag = "trade_sol"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "160"},/turf/simulated/shuttle/floor,/area/shuttle/trade/sol) @@ -988,9 +988,9 @@ "asZ" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/range) "ata" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor/plating,/area/security/range) "atb" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/range) -"atc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/brig) +"atc" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "atd" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/security/brig) -"ate" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/brig) +"ate" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/prison/cell_block/B) "atf" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkredcorners"},/area/security/brig) "atg" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) "ath" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) @@ -1474,7 +1474,7 @@ "aCr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/prison/cell_block/B) "aCs" = (/obj/machinery/door/window/brigdoor{dir = 8; id = "Cell 6"; name = "Cell 6"; req_access_txt = "2"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/prison/cell_block/B) "aCt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkredcorners"},/area/security/prison/cell_block/B) -"aCu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/prison/cell_block/B) +"aCu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor/plasteel,/area/medical/paramedic) "aCv" = (/obj/structure/stool/bed/chair,/obj/item/device/radio/intercom/department/security{pixel_x = -28},/obj/machinery/camera{c_tag = "Brig Interrogation Observation"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/interrogation) "aCw" = (/obj/structure/stool/bed/chair,/obj/machinery/light_switch{pixel_x = 25},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/interrogation) "aCx" = (/obj/structure/stool/bed/chair,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/interrogation) @@ -1720,7 +1720,6 @@ "aHd" = (/obj/structure/stool/bed,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aHe" = (/obj/machinery/camera{c_tag = "Fore Primary Hallway West"; dir = 4; network = list("SS13")},/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aHf" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) -"aHg" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aHh" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) "aHi" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/item/weapon/twohanded/required/kirbyplants,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/civilian/barber) "aHj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/civilian/barber) @@ -2678,10 +2677,12 @@ "aZz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) "aZA" = (/turf/simulated/floor/plasteel,/area/gateway) "aZB" = (/obj/machinery/computer/card/minor/ce,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) +"aZC" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/structure/table,/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/turf/simulated/floor/plasteel,/area/atmos) "aZD" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aZE" = (/obj/item/device/radio/intercom{pixel_x = 25},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/window/reinforced,/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aZF" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/plasteel,/area/hallway/primary/fore) "aZG" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore) +"aZH" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 3; name = "Atmospherics Requests Console"; pixel_y = -30},/obj/item/stack/sheet/glass{amount = 50},/obj/item/clothing/head/welding,/obj/item/clothing/head/welding,/turf/simulated/floor/plasteel,/area/atmos) "aZI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "aZK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aZN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) @@ -4357,7 +4358,7 @@ "bGz" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "mechbay"; name = "Mech Bay"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/chargebay) "bGA" = (/obj/structure/table,/obj/item/weapon/book/manual/robotics_cyborgs{pixel_x = 2; pixel_y = 5},/obj/item/weapon/storage/belt/utility,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/requests_console{department = "Robotics"; departmentType = 2; name = "Robotics Requests Console"; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bGB" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "robotics"; name = "Robotics Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics) -"bGC" = (/obj/machinery/autolathe,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) +"bGC" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "bGD" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/obj/item/weapon/storage/belt/utility,/obj/item/clothing/gloves/color/latex,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "bGE" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Robotics Desk"; req_access_txt = "29"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "robotics"; name = "Robotics Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics) "bGF" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 10; icon_state = "purple"},/area/hallway/primary/starboard/east) @@ -4880,7 +4881,7 @@ "bRn" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/medical/research{name = "Research Division"}) "bRo" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Research Hallway Entrance"; dir = 2; network = list("Research","SS13")},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/medical/research{name = "Research Division"}) "bRp" = (/obj/machinery/door_control{id = "rdlab2"; name = "Research and Development Lab Shutters Control"; pixel_x = -24; pixel_y = -24; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"bRq" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = 0},/obj/item/stack/tape_roll,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) +"bRq" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = 0},/obj/item/stack/tape_roll,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "bRr" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/space,/area/shuttle/research) "bRs" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/shuttle/research) "bRt" = (/obj/machinery/computer/shuttle/science,/turf/simulated/shuttle/floor,/area/shuttle/research) @@ -5703,7 +5704,6 @@ "chi" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint) "chj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "paramedic"; name = "Paramedic Garage"},/turf/simulated/floor/plasteel,/area/medical/paramedic) "chk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/medical/paramedic) -"chl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/diamond{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor/plasteel,/area/medical/paramedic) "chm" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "chn" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/sleeper) "cho" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/sleeper) @@ -7907,7 +7907,6 @@ "cXH" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cXI" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump Engineering"; pixel_x = 24; shock_proof = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cXJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/atmos) -"cXK" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/structure/table,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/turf/simulated/floor/plasteel,/area/atmos) "cXL" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) "cXM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/table,/obj/item/device/t_scanner,/obj/item/device/radio/headset/headset_eng,/obj/item/device/multitool{pixel_x = 5},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) "cXN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) @@ -7973,7 +7972,6 @@ "cYV" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor/plasteel,/area/atmos) "cYW" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor/plasteel,/area/atmos) "cYX" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/engine/engineering) -"cYY" = (/obj/structure/table,/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/item/stack/sheet/glass{amount = 50},/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 3; name = "Atmospherics Requests Console"; pixel_y = -30},/turf/simulated/floor/plasteel,/area/atmos) "cYZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/wall/r_wall,/area/atmos) "cZa" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/weapon/wrench,/obj/item/device/pipe_painter,/obj/item/device/pipe_painter,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor/plasteel,/area/atmos) "cZb" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "Waste to Port"},/turf/simulated/floor/plasteel,/area/atmos) @@ -9056,9 +9054,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfangaomaocaobaoeaodaohaogaitapGaojaoiaonaokaopaooapFaoqaosaoraouaotaowaovaoxalWaozaoyaoBaoAaoDaoCaoJaoEaoGaoFaoFaoHaoLaoIaoIaoMaoPaoNalFaoQaoRaiYaiYaiYaoTaoSaihaabaaaaaaajbakyajwajwajwajwakzajyaaaaaaaaaaaaamWaaaaaaaoKaaaaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfaoUaomaoValEaoXaoWanlajJaigapGaoZaoYapbapaapdapcapFapeapgapfaphamyapjapiapkapSapAaplapCapBapEapDapIapHapJapJapLapKapNapMapOaoJapQaoJapRapNapTaiYapVapUapXapWaihaaaaabaabajbapYaqaapZaqcaqbajbalIaqeaaaaaaaaaamWaabappapnapqaabaabamWamWamWamWamWamWaqpamWamWamWamWamWamWamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapsaprapuaptapwapraprapxapraprapvaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabapyaabalvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakBakBakBaslakWakZaomaomaomaomakUaqsapFapGapGapGaqtaquapGapFaqvalUaqwaqwalTaqxaqxapPapSapSaqyaqzapSapSapSanAaqAaqCaqBanxanAanAaqAaqDanxaqFaqEanxanAaqGaqGaqGaqGaqHaihaihaqIaqIaqIaqIajbalsaqJaqKalsajbaabaaaaaaaaaaaaamWaaaappaqdapqaaaaaaaabaabaabaabaabaabaabaabaqLaabaabaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfaqhaqiaqgaqkaqlaqlaqlaqmaqjaqoaaaaaaaaaalwalwalwalvalvaabaabaaaaqnaaaaabaabalvalvalwalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakXaqraqMaqNaqraqOapzaqQaqPakWaqRaqTaqSaqVaqUaqXaqWariaqYarjaqXaqXaqXaqXarkaqXaqXaqXarlarnarmarparoarrarqarsarsarsartarsaruarwarvarxaqXaryaqWaqXarzarBarAarCaqXariaqXaqXarDarEaqVaqXarFarHarGarJarIajbaabaaaaaaaaaaaaamWaaaappaqdapqaaaaaaaabaqZaraaraaraaraarbaraaraaraaraarcaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaardaqhareargaqlarharharharharharfaaaaaaaaaalwaaaaaaaabaaaaabaaaaaaaqnaaaaaaaabaaaaabaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBalDarKalDarLalDarNarMarParOarRarQarTarSasdascaseaseasfaseasgaseaseaseasiashasiasjasiasiassaskasnasmaspasoasoasoasoasqasoasoasoasrastasAasvasuasxaswaszasyasAasAasCasBasBasDasEasEasEasFasHasGasIamRamVaaaaaaaaaaaaaaaamWaabappaqdapqaaaaaaaabarUaabaaaaaaaabarUaabaabaaaaaaarUaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarVaqharWarYarharharharharZasaaqoaaaaaaaaaalwaabarXarXarXarXarXaaaasbaaaarXarXarXarXarXaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBamoasYasXasZasYasYataatbalBakWatcateatdatgatfatiathatkatjatmatlatnatjatpatoatratqatratsatuattatwatvatyatxatAatzatCatBatEatDatAatOatRatQaFLaFLaFLaFLaFLaFLaFLaxeatSatSatSatTatSatSatSarFatVatUatXatWajbaaaaaaaaaaaaaabamWaaaappaqdapqaabaabappapnapqaabaabappapnapqaabaabappapnapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfaqhaqiaqgaqkaqlaqlaqlaqmaqjaqoaaaaaaaaaalwalwalwalvalvaabaabaaaaqnaaaaabaabalvalvalwalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakXaqraqMaqNaqraqOapzaqQaqPakWaqRaqSaqXaqVaqUaqXaqWariaqYarjaqXaqXaqXaqXarkaqXaqXaqXarlarnarmarparoarrarqarsarsarsartarsaruarwarvarxaqXaryaqWaqXarzarBarAarCaqXariaqXaqXarDarEaqVaqXarFarHarGarJarIajbaabaaaaaaaaaaaaamWaaaappaqdapqaaaaaaaabaqZaraaraaraaraarbaraaraaraaraarcaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaardaqhareargaqlarharharharharharfaaaaaaaaaalwaaaaaaaabaaaaabaaaaaaaqnaaaaaaaabaaaaabaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBalDarKalDarLalDarNarMarParOarRaqTarSarQasdascaseaseasfaseasgaseaseaseasiashasiasjasiasiassaskasnasmaspasoasoasoasoasqasoasoasoasrastasAasvasuasxaswaszasyasAasAasCasBasBasDasEasEasEasFasHasGasIamRamVaaaaaaaaaaaaaaaamWaabappaqdapqaaaaaaaabarUaabaaaaaaaabarUaabaabaaaaaaarUaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarVaqharWarYarharharharharZasaaqoaaaaaaaaaalwaabarXarXarXarXarXaaaasbaaaarXarXarXarXarXaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBamoasYasXasZasYasYataatbalBakWaryatgatgatgatfatiathatkatjatmatlatnatjatpatoatratqatratsatuattatwatvatyatxatAatzatCatBatEatDatAatOatRatQaFLaFLaFLaFLaFLaFLaFLaxeatSatSatSatTatSatSatSarFatVatUatXatWajbaaaaaaaaaaaaaabamWaaaappaqdapqaabaabappapnapqaabaabappapnapqaabaabappapnapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasJaprapraprapwapraprapxapraprasKaaaaaaaaaalwaaaasMasLasLasLasLasNasPasOasQasQasQasQasRaaaalwaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaakBakBakBakBakBakBakBatYauaatZakWaubaudapFaufaueawKaugauhawKawKawKawKaujaukaucatdaulatdaucaunaumawHawHawHawHauAauoawVauEauEawXauEauFauEauEaFLauGauHaFLauHauIaFLauJauLauKauNauMauPauOauQajbajbajbajbajbajbaaaaaaaaaaaaaaaamWaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaabaqpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaabatFatFatFatFatFaaaatHaaaatFatFatFatFatFaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBauRauTauSakWauUauVapGauXauWaucauYavaauZavcavbauZavdavfaveavhavgaviaveavjaAzavlavkavmavlavoavnavzavravBavAaAFavCaCyavDaFLauIavFavEavFauIaFLavGavHayVayVavIavKavJavLaHEaaaaabaaaaaaaaaaaaaaaaaaaaaaaaamWaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaaaaaaaabaaaaaaaaaautaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasUasTasWasVaaaaaaawBawBaudaudaudaudavMavNaucavOauWaucavPavRavQavTavSavUavdavfavVavXavWavZavYavjaAzawbawaawdawcawfaweawgaCyawhavAaAFawiawnawjaFLawAawDawCawEawAaFLawFawGayVawJawIawLawGawMaHEaabaabaaaaaaaaaaaaaaaaaaaaaaaaamWaaaappaqdapqaabaabappaqdapqaabaabappaqdapqaabaabappaqdapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9069,12 +9067,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiazeazgazhaxiaaaaxkazfazjaziaxkalwaabarXarXarXarXarXaaaatHaaaarXarXarXarXarXaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauvaxoawzaxmatIatMatNazVauyawBaudaudaudaznazXazWazsazrawKazYazZawWaAcaAaawWaAdaAqaxLaAraBHaAsaxLazyaAtaxpaAuaAvaxpaAwavnaxvaAyaACaAAaAEaADaAHaAGawlaAIaAKaAJawlaydavqavqaxhaxhaxhdmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarUazUaAbaraaraaraazbaraaraaraaraazbaraaraaraaraaALaaaaaaamWaaaaAfaAfaAgaAgaAgaAgaAgaAgaAfaAfaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaAhazgazhaxiaaaaxkaAiaykaykaxkalwaaaasMasLasLasLasLasNasPasOasQasQasQasQasRaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIaymawzawzayhauyayoaAMauCaAmaAnaAlaAnaApaApaANaApaAoaElaAOaAPawKaxSaARawKaATaAVaAUaAWaxLaAZaAXaBbaBaawHaBiayeawHaBraBpaBsaBsaBsaBsaBsawVaBuaBtawlaBvaBRaBvawlaBwavqavqatGaupaurauqauqausaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaAYaBxaByaabaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaamWaAfaAfaBdaBcaBeaBgaBhaBfaBjaBeaAfaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaAhazgazhaxiaaaaxkaBkaykaBlaxkaabaBmatFatFatFatFatFaaaatHaaaatFatFatFatFatFaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIazkazkazkatIatMaBAaBzaBBaAmaCaaAnaAnaBCaApaBDaBqaBoaElaBEaBFauZavcaBGauZaAdaxLaxLaBJaBIaBKaxLaxLazxavlaBLavmavlaBNaBMaBPaBOaBSaBQaBsaCcaCfaCeaZIaCgavqaSPavqaChavqavqavsavqavtavpavuavwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaBTaabaabaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaAfaAfaAfaAfaBUaBgaBVaBgaBVaBXaBgaBgaBgaBWaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiazgazgazgaBYaaaaxkaBkaykaBlaxkalwaaaaaaaabaaaaabaaaaaaaBZaaaaaaaabaaaaabaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAeaAkaAkaAkaAjaaaaaaaaaaaaaBnaAnaAnaAnaCiaCkaCjaCdaCbaElavPaCmaClavTaCnaCoavdaxLaEBaCpaEBaCqaEBaxLaAzazAaCrawdaCsaCuaCtaBsaCvaCxaCwaBsaCzaCBaCAaCCaZIaZIaCgavqavqaybaycatGavqawkauqauqawmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaCLaabaabaaaaaaaabaaaaabaabaaaaaaaaaaaaaaaaaaaaaaAfaCNaCOaCPaCMaCRaCQaCSaBgaBgaCUaCVaBgaCWaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiazgazgazgaBYaaaaxkaBkaykaBlaxkalwaaaaaaaabaaaaabaaaaaaaBZaaaaaaaabaaaaabaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAeaAkaAkaAkaAjaaaaaaaaaaaaaBnaAnaAnaAnaCiaCkaCjaCdaCbaElavPaCmaClavTaCnaCoavdaxLaEBaCpaEBaCqaEBaxLaAzazAaCrawdaCsateaCtaBsaCvaCxaCwaBsaCzaCBaCAaCCaZIaZIaCgavqavqaybaycatGavqawkauqauqawmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaCLaabaabaaaaaaaabaaaaabaabaaaaaaaaaaaaaaaaaaaaaaAfaCNaCOaCPaCMaCRaCQaCSaBgaBgaCUaCVaBgaCWaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaCTazgazgaCXaaaaxkaCYaykaykaCZalwalwalwaabaabaabaabaDbaDaaDbaabaabaabaabalwalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBnaDdaDcaCEaCDaCGaCFaCHaDiaElauYaCIawWaCKaCJawWaDeaDfaEBaDgaFFaDhaEBaDkaDjaxpaDlaDmaxpaDoaDnaBsaDpaDraDqaBsaDsaDNaDNaDNaDNaDPaDPaDRaDRaDRaDRatGatGatGatGaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaaaabaaaaabaabaDSaDKaDSaabaabaaaaabaaaaaaaabaabaaaaaaaaaaaaaaaaaaaAfaDUaDTaDWaDVaDYaDXaBgaBgaBgaDZaEaaBgaEcaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaEbazgaEeaxiaaaaxkaEfaykaykaxkaabaaaaabaaaaaaaabaaaaDbaEgaEdaaaaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEiaEiaEiaEiaEiaEiaEiaAmaElaElaElaDtaElaElaElaDuaAmaAxaAxaAxaAxaAxaAxaEBaEBaDvaDgaFFaDhaDvaDvaDvaEpaEpaEpaEpaDxaDwaBsaDyaDAaDzaBsaDsaDNaELaEMaEKaDPaENaDBaEOaEQaDRaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaabaabaaaaabaabaabaabaabaaaaDSaERaDSaaaaabaaaaabaaaaaaaaaaabaabaaaaaaaaaaaaaaaaAfaETaESaCPaEUaEWaEVaEXaBgaEZaEYaFbaFaaAfaFdaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFeaFfaFcaFfaFgaaaaFiaFhaykaFkaFiaabaaaaabaaaaaaaabaDbaDbaFjaFmaDbaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEiaFlaFoaDCaDDaFvaFwaFsaDFaDEaDDaDGaFvaFvaDIaDHaFBaFAaFyaFyaFyaFyaFyaFyaFyaDJaDLaGraDMaEjaDOavqavqavqavqavqaBsaDQaEkaEhaEnaEmaBsaEoaDNaFTaFUaFPaDPaFVaEqaFWaFYaDPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaabaabaDSaDSaFZaDSaDSaabaaaaabaaaaaaaaaaaaaabaabaaaaaaaaaaaaaAfaGbaGaaCPaAfaCPaCPaGdaGcaAfaAfaAfaAfaAfaAfaabaabaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaFeaGfaFgaaaaaaaGgaFiaGeaFiaGhaabaaaaabaaaaaaaabaGjaGiaGlaGkaGjaGnaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGoaGmaEraGpaEtaEsaEuaEsaEvaEsaExaEwaGraGraEzaEyaGraGraGraGraGraGraGraGraGraECaEEaEDaEGaEFaEHaAQaASaEIaASaAQaBsaEJaFnaEPaFnaFnaBsaDsaDNaFpaGNaFqaDPaFraGRaGQaEQaDPaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaabaGTaGUaGSaGWaGTaabaaaaabaaaaaaaabaaaaaaaabaabaaaaaaaGXaAfaCPaAfaCPaGYaGVaGYaMzaGYaGYaGYaHbaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaGnaGnaGnaGnaGnaGnaGnaGnaabaabaGjaHcaHaaGZaGjaHdaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGoaHeaHgaHfaFuaFtaFxaHnaFzaHnaFCaHqaHnaHnaFEaFDaHnaHnaHnaHnaHnaHnaHnaFHaFJaFIaFKaHvaHxaEjaFMaAQaFNaASaFOaAQaBsaBsaBsaBsaBsaBsaBsaFQaDNaHCaFUaFRaDPaFSaHGaFWaHHaDPaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaabaGTaHKaHIaHJaGTaabaaaaabaaaaaaaabaaaaaaaGXaHNaGXaHNaGXaHbaGYaGYaGYaGYaGYaGYaGYaGYaGYaHOaHPaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaGnaGnaGnaGnaGnaGnaGnaGnaabaabaGjaHcaHaaGZaGjaHdaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGoaHearTaHfaFuaFtaFxaHnaFzaHnaFCaHqaHnaHnaFEaFDaHnaHnaHnaHnaHnaHnaHnaFHaFJaFIaFKaHvaHxaEjaFMaAQaFNaASaFOaAQaBsaBsaBsaBsaBsaBsaBsaFQaDNaHCaFUaFRaDPaFSaHGaFWaHHaDPaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaabaGTaHKaHIaHJaGTaabaaaaabaaaaaaaabaaaaaaaGXaHNaGXaHNaGXaHbaGYaGYaGYaGYaGYaGYaGYaGYaGYaHOaHPaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaHQaHLaHQaaaaaaaaaaGnaHSaHTaHSaHRaHMaHUaGnaaaaaaaGjaHVaHXaHWaIaaHSaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIbaIcaIcaIeaIeaFXaLAaIhaIhaGqaLAaGsaIlaIiaIiaIlaGtaIlaIoaIoaIoaIoaIoaIoaImaIoaIoaInaIraIpaEjaGuavqaAQaAQaAQavqavqavqaydaGvaGwavqavqaGxaDNaIwaFUaGyaDPaGzaGRaGQaEQaDPaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaHQaIzaHQaaaaabaGTaIBaIAaICaGTaIFaIFaIFaIFaIFaHNaHNaHNaGXaIDaGYaHOaHPaMzaGYaMzaMzaMzaGXaIEaGXaGXaGXaGXaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaIIaIGaIIaaaaaaaabaGnaIHaILaHSaHSaIJaHSaGnaIIaIIaGjaGjaIMaIKaIaaHSaGnaGnaIIaIIaIIaGnaGnaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaIbaIPaGAaGCaGBaGDaLAaGFaGEaGGaLAaGHaIlaIWaIZaGJaGIaJbaJaaJdaJcaJfaJeaJhaJgaJjaJiaJkaFFaFGaEjaGKavqavqavqavqavqavqavqavqavqavqavqavqaGLaGOaGMaHhaGPaDPaHiaHjaJyaJBaDPaabaJEaJFaJFaJFaJFaJFaJGaabaabaaaaaaaaaaaaaHNaJCaHNaaaaIFaGTaGTaJDaJHaGTaJIaGYaGYaGYaMzaJJaGYaJMaGXaGYaGYaGYaJKaMzaGYaGXaJNaJLaGXaGYaJOaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJPaJSaJQaaaaJRaJVaJTaabaabaIIaHSaIIaaaaaaaabaGnaJXaJYaJZaJWaJUaKaaGnaKbaHSaKdaKcaKfaKeaKeaKeaKeaKeaKeaKeaKeaKgaGnaaaaKhaaaaaaaaaaaaaaaaaaaaaaaaaIbaKkaHkaKmaKnaHlaLAaHmaKraHoaLAaGHaIlaKtaKuaKvaGIaJbaKqaKsaKsaKsaKsaKsaJgaKwaJiaFyaFFaFGaEjaFMaLPaLPaLPaLPaLPaHpaKOaKOaKOaKOaKOaKOaKOaDNaDNaHraDNaDPaDPaHsaDPaDPaDPaKOaKPaKQaKQaKQaKQaKQaKPaKOaabaaaaaaaaaaaaaHNaKJaKMaaaaIFaKRaKTaKSaKWaGYaGYaGYaMzaGYaMzaKXaGYaGYaGXaGYaKVaKUaKXaIEaGYaGXaKZaKYaGXaGYaLcaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9085,7 +9083,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPVaSdaSdaLdaMsaPZaQaaLdaMsaPZaQaaLdaGnaLkaGnaGnaGnaGnaGnaHSaGnaHSaQbaPXaHSaHSaGnaLsaGnaPYaabaPYaGnaJYaOZaGnaQeaQcaGnaNAaKaaGnaLsaMAaMAaQgaQgaQgaQgaQgaQgaQgaQgaQgaPiaPiaPjaQhaQiaQjaQkaQlaQdaKEaKDaKFaKFaKFaKFaKFaKGaKIaKHaKFaKFaKFaKKaKKaKLaLzaKNaLBaEjaHBaLPaQzaKpaLNaLPaITaOpaPAaQEaQFaOpaMVaPCaPDaPDaPEaQGaOqaPGaPIaPIaPJaKBaKCaODaKQaKQaKQaKQaKQaODaQHaPMaODaaaaaaaGXaQIaGYaGYaQBaMzaQCaHOaQLaQJaHbaGXaOFaHbaGXaQKaGYaGXaQMaGYaGXaQOaQNaQPaOGaQQaOGaQSaQRaQUaQTaQVaQYaQWaMqaMraMrafOafOaMraMraMraMraabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaRbaOQaRbaQZaQZaQZaRaaQZaQZaQZaRdaRcaReaReaReaReaRfaGnaHSaGnaRhaRgaRiaHSaRjaPcaLsaGnaGnaGnaGnaGnaGnaPcaGnaHSaRiaLkaHSaHSaHSaRkaRmaRlaRnaRnaRnaRnaRoaRnaRnaRpaRqaRlaRsaRraRraRraRraRraRraRraRtaRwaRwaRwaRwaRxaRwaRwaLDaRwaRwaRxaRwaRwaRwaRwaRzaLFaLKaLGaLLaLPaRDaLMaLWaLOaLXaOpaRJaRKaRLaOpaMVaRMaRNaRNaRGaMWaOqaRPaRQaRQaRIaLYaLZaOzaKQaKQaKQaKQaKQaOAaRVaRRaODaaaaaaaGXaGYaGYaGYaGYaGYaGYaQPaOGaOGaOGaOGaOGaOGaOGaKSaGYaGYaGYaGYaMnaGYaGYaMkaGYaRTaRSaRXaRWaRYaOLaOLaOLaRZaMqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSdaSdaSbaSfaScaSgaSiaSjaShaSkaSjaSmaSlaSjaSjaSnaGnaHSaGnaSoaHSaHSaSpaSqaGnaNIaKgaHSaHSaHSaHSaHSaHSaPcaSsaHSaGnaNxaNxaGnaSraMAaSuaSwaSvaSvaSvaSxaSvaSvaSvaSyaSuaSzaSAaSAaSAaSAaSAaSAaSAaPiaRwaSBaSCaSEaSDaMdaMcaMDaMBaMEaSJaSLaSCaSMaRwaSNaFFaSOaEjaMFaLPaSRaMGaSTaSSaMHaSUaSXaSWaSWaMIaMJaSZaSYaTaaTaaTbaTeaTcaMVaMVaTdaKBaThaTfaKQaKQaKQaKQaKQaTfaKOaKOaKOaGXaGXaGXaHbaMzaMzaIEaGXaGXaMkaMzaGXaTgaMzaGXaIEaGXaMkaQIaMzaGXaIEaGXaGYaQIaMkaGYaTiaMqaTjaQRaTlaTkaTmaQRaTnaMqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdaRUaSdaToaSfaSfaTpaSdaRUaSdaTqaTraTsaTtaGnaHSaPcaPcaGnaGnaGnaTuaTuaTuaIfaTuaTuaTuaTuaTuaHSaGnaGnaGnaGnaGnaGnaGnaSraKbaStaaaaabaaaaabaaaaabaaaaabaaaaSuaSzaSAaTwaTvaTyaTxaTAaSAaPiaRwaTzaTzaTCaTBaTEaTDaTFaTDaMKaTGaTIaTzaTzaRwaSNaFFaTJaEjaMFaLPaOnaKpaLNaLPaMNaMLaMUaMTaMYaMXaNaaMZaNdaNcaNdaNeaNSaNRaNUaNTaNXaNVaKOaTfaKQaKQaKQaKQaKQaTfaGXaLcaGYaTXaUaaMzaGXaMzaLcaGYaGXaLcaMkaGXaTZaGYaGXaUbaGYaMzaUdaUcaGXaUeaGYaMzaIEaIEaMkaIEaUfaMqaUgaQRaUiaUhaUiaQRaUjaMqaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdaRUaSdaToaSfaSfaTpaSdaRUaSdaTqaTraTsaTtaGnaHSaPcaPcaGnaGnaGnaTuaTuaTuaIfaTuaTuaTuaTuaTuaHSaGnaGnaGnaGnaGnaGnaGnaSraKbaStaaaaabaaaaabaaaaabaaaaabaaaaSuaSzaSAaTwaTvaTyaTxaTAaSAaPiaRwaTzaTzaTCaTBaTEaTDaTFaTDaMKaTGaTIaTzaTzaRwatcaFFaTJaEjaMFaLPaOnaKpaLNaLPaMNaMLaMUaMTaMYaMXaNaaMZaNdaNcaNdaNeaNSaNRaNUaNTaNXaNVaKOaTfaKQaKQaKQaKQaKQaTfaGXaLcaGYaTXaUaaMzaGXaMzaLcaGYaGXaLcaMkaGXaTZaGYaGXaUbaGYaMzaUdaUcaGXaUeaGYaMzaIEaIEaMkaIEaUfaMqaUgaQRaUiaUhaUiaQRaUjaMqaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLdaLdaSdaOQaSdaUkaUoaUmaUlaSdaOQaSdaSdaLdaUnaUpaGnaHSaHSaHSaHSaHSaHSaTuaUuaUvaUqaUxaUsaUzaUuaTuaUwaUAaUyaUyaUyaUyaUyaUyaUBaNxaStaabaUEaUEaUEaUEaUEaUEaUEaabaSuaSzaSAaUFaUCaUHaUDaUFaSAaPiaRwaUJaUJaUJaUGaULaSCaUIaSCaULaUKaUJaUJaUJaRwaSNaFFaUMaEjaMFaLPaOjaKpaLNaLPaNYaUNaUQaUQaUQaUQaUQaUQaUQaNZaUQaUSaUSaUSaUSaUSaOaaGXaKOaTfaKQaKQaKQaKQaKQaTfaGXaGXaGYaURaUaaMzaUTaGXaGYaGYaGXaGYaMkaMzaGYaGYaGXaGYaGYaMzaMkaGVaGXaGYaGYaMzaUWaGYaMkaGYaUUaUYaUYaMqaMqaMqaMqaMqaMqaMqaMraMraMraMraMraabaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdaRUaSdaSdaSdaSdaSdaSdaRUaSdaUZaLdaUVaUXaVcaVcaVcaVcaVcaVcaVaaTuaUuaVeaUqaVfaVeaVeaUuaTuaVgaVbaViaViaViaViaViaViaViaViaVjaaaaUEaVkaVdaVmaVlaVnaUEaaaaSuaSzaSAaVpaVoaVraVqaUFaSAaPiaRwaVsaVsaTCaVtaVuaTDaTFaTDaVuaVvaVwaTzaTzaRwaSNaFFaSOaEjaObaLPaOdaOcaLNaLPaOeaUNaUQaVzaVAaVCaVCaUQaVBaOfaVDaUSaVGaVFaVHaUSaOgaGXaaaaVKaVLaVLaVLaVLaVLaVMaaaaGXaGYaVNaVJaMzaMzaGXaGXaMzaMzaVOaVPaMzaGXaHPaGXaGXaMzaMzaVRaVQaGXaGXaGXaQLaUWaGYaMkaGYaUUaHOaHbaOFaYPbcDaVhbcDaYPaYPaYPaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVVaVSaVXaVSaVSaVYaVZaVSaVSaVXaWaaVWaLdaToaWbaVcaWdaWcaWfaWeaWhaWgaTuaUuaVeaUqaWjaVeaVeaUuaTuaWkaWlaWiaWnaWmaWoaWqaWraWpaWtaVjaabaUEaWuaWsaWwaWvaWxaUEaabaSuaSzaSAaWzaWAaWyaWCaWBaSAaPiaRwaSBaSCaWEaWDaULaSCaWFaSCaULaWGaSLaSCaSMaRwaSNaFFaWJaEjaMFaLPaISaOhaLNaLPaOiaWHaUQaWKaVEaVEaVEaWLaOlaOkaOmaUSaWQaWPaOxaOtaPgaHPaaaaaaaaaaaaaaaaaaaaaaaaaaaaGXaWVaWUaWXaWWaWYaGXaNhaGYaQIaMkaGYaGXaaaaGXaGYaGYaGYaGYaMkaXbaXaaWZaWZaWZaWZaXcaXeaXdaXhaXiaXfaXiaXgaVTaVTaVUaXkaXjaXlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9126,7 +9124,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRGbTobRAcbzbRAcbxcbycbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbDcbBbOccbCbOccbEcbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbGaabaaaaaaaaaaaacamcbIcbHcbKcbJbYMcbNcbLcbMcbRbYMbOwbTycbOcbPcbQcbScbVcbTcbUcbWcbYcbXccacbZcccccbccfccdcceccgccjcchccicckccqcclccmbEnccnbFOccoccpccrbFOccscaAccvcctccuccwccxbUecczccyccBccAccDccCccFccEccHccGccIbWaccKbZuccJccMccLccOccNccPbXNccQbXQbXQbXQccRbWgcbdccTccSccVccUccXccWcdbcbfccYccZcdacbjcbjcdccbocddcdfcdecdhcdgcdjcdicdkbYjcdnbGHaaaaaaaaabThbThbThbThaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIcdlcdmcdpcdlcdobRGbRAbRAbRGbRAcdrcdqcdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdvcdtcducducducdtcdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacamcdycdxcdAcdzbYLcdBcdDcdCcdEbYMbOwcdGcdFbTybTycdHcdKcdIcdJcclcdOcdLcdOcdMcdNcdNcdQcdPcdRcdNcdNcdTcdNcdScdNcclccmbEncdVcdUcdXcdWcdZcdYbFOcaAcebcctceaccucedbUececceecegcefceicehcekcejbUecelcembWaceocencencercepceqcetcesbXNceucevbXQcexcewbWgcbdcezceyceBceAceDceCceGcbfceEccZceFceFcbjceHceJceIceLceKceNceMcePceOceSbYjcacbGHceQaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGceRceRceRceRceRceTbRAbRAbRGbPIbPIbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceVceUceUceUceWaaaaaaaaaaaaaaaaaaaaaceXceZceYceZcfaaaaaaaaaacamcamcamcffcfbcdAcfcbYLcfdcbMcfecfgbYMbOwcfhcfjcficflcfkcfncfmcfpcfocfrcfqcfucfscftcftcfxcfvcfvcfvcfvcfvcfvcfwcfAcfycfzcfBcfDcfCcfFcfEcfHcfGcfIcaAcfJcctccucfKcedbUececceecfMcfLcfOcfNcfQcfPbUmcfRcfSbWabWacfUcfUbWacepbWdcfTcfVbWgcfXcfWcfZcfYcgabWgcbdcgccgbcgecgdcghcgfcggcbfcgiccZceFceFcbjcgjcgmcgkcglcgncgpcgocgrcgqcgvbYjcaccgscgtcgscgucgycgucgucguaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGceRceRceRcgwcgxbRGbRAbRAbRGbRAbRAbRAcgzbRAcgAbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFcgBcgCcgDcgFbYPbYPbYPcamcgHcgGcgJcgIcgLcgKcgNcgMcgOcgOcgPbYMcgRcgQcgTcgScgScgUcgXcgVcgScgWcgWcgYchbcgZcgWcgWchacclcclchechcchcchcchdchgchcchcchfchichhchhchjchhchlchkchhchnchmchpcaAchochqcecchschrchtchvchuchwchrbUecelchychxchAchzchCchBchFchDchEchGchLchHchIchJchKchNbWicbdcbdchMchQchOchPchOchRcbfchUchSchTchTcbjchVchXchWbYjbYjbYjbYjbYjbYjbYjbYjcaccgscifchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecijaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGceRceRceRcgwcgxbRGbRAbRAbRGbRAbRAbRAcgzbRAcgAbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFcgBcgCcgDcgFbYPbYPbYPcamcgHcgGcgJcgIcgLcgKcgNcgMcgOcgOcgPbYMcgRcgQcgTcgScgScgUcgXcgVcgScgWcgWcgYchbcgZcgWcgWchacclcclchechcchcchcchdchgchcchcchfchichhchhchjchhaCuchkchhchnchmchpcaAchochqcecchschrchtchvchuchwchrbUecelchychxchAchzchCchBchFchDchEchGchLchHchIchJchKchNbWicbdcbdchMchQchOchPchOchRcbfchUchSchTchTcbjchVchXchWbYjbYjbYjbYjbYjbYjbYjbYjcaccgscifchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecijaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcigceRceRcihciibRGbRAbRAcikbRAbRAbRAciobRAcilbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcimcincimceYbYPcipciqcamcitcfbcircisciyciubYMcivciwcixcizbYMcgQcgQciCcgSciAciBciEciDciHcgWciFciGciJciIciKcgWciMciLciNchcciPciOciSciQciRciTciVciUciXciWciZciYcjbcjacjdcjccjgcjecjfcjhcjjcjicjkceecjocjlcjmcjncjqcjpbUmcjrcjtcjscjuchCcjvcjvcjxcjwbWgcjycjAcjzcjCcjBcjEaYobWicjFcjHcjGcjIcjGcjGcjLcjJcjKcjPcjMcjNcjOcbjcjQcjRcbnbPtbGGcjTcjScjUcjUcjScjUcjYcgscjVcjWchZciackecjXcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccjZckacjZcidciecieckbckcckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIckdceRceRckfbRGbRAbRAbRGckgbRAbRAckjckhbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFckicimcimckkcklcfbcfbckmckncfbcfbcisckqckobYMbYMbYMbYMbYMbYMckpcgQcksckrckxcktcktcktckucgWckvckwckwckwckzckyckBckAckDckCckFckEckHckGckJckIchcchfckKchhckMckLckOckNckPchhcebccuceaccuckRckQckUckSckTckVckXckWckYchrclackZclcclbclecldclgclfcljclhbWgbWgbWgbWgbWgclicllclkbWiclncjGcjGclmclocjGcltclpcbjclqccZclrclrcbjcbmclscbnbPtcgsclvcgscgscgscgscgscgscgscluclwcguclxclzclycguafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOclBcjZcjZclAciecieckbckbclHckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIclCclDclEbRGbRAclFbRGclGclIbRAbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcincincinceYbYPclJclMclKckncfbcfbclLclOclNclQclPclPclPclTcgQcgQcgQciCcgSclRcktclScktclVcgWckvckwclUckwclWcgWclYclXclZchccmccmacmbcmecmdcmhcmfcmgcmjcmicmlcmkcmocmmcmnchhcfJccuccucmpckRckQcmrcmqcmucjlcmscmtaYqcmvcmycmxcmAcmzcmCcmBcmEcmDcjvcmHchxcmFcmGcmJcmIcmKcmNcmLclpclncmMcjGcjGcjGcmQcmOclpcbjcmPccZclrclrcbjcmTcmRcbnbPtcmScmVcmUcgscmWcmYcmXcnbcmZcnacnfcgucnccndcnecgucgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacnkcieclBciecieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9158,8 +9156,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcTRcTScTScTUcTTcTVcTVcTVcTTcTVcTVcTVcTTcTVcTVcTVcTWcTScTScTScTScTScTXcTZcTYcUbcUacUecUdcUgcUfcNBcLwcUccRCcKbcKbcKbcUhcMvcSUcUkcUjcUmcUlcUicUncUpcUocUrcUqcUucUscUxcUwcUycUqcUtcUzcTecUvcRXcRXcRXcUAcPTcUCcUCcSdcUEcUDcUGcUFcUIcUHcUKcUJcUPcUNcUScSqcUVcSncUWcSwcSwcQZcRecBQcPdcQkcULcUMcVacQncQkcUOcVbcQncQkcUQcURcVccUTcUTcQkcBYcsLcUUcBPaaacBRcJKcMgcJKcVecMjcEHcVfcUXcUYcEHcUZcVgcxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcVkaabaaaaabcVkaabaaaaabcVkaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcVlcVdcVmcRAcVncNBcNNcTccTccTccTccVocTccUfcSUcVhcVicVjcVpcVrcVqcVtcVscVvcVucVycVwcVAcVzcVCcVBcUtcTjcTecVxcVDcRXcRXcVFcPTcVGcVHcSdcVIcQPcVJcVEcVLcVKcVOcVMcVQcVPcVQcVRaabcQZcQZcQZcQZcQZcRecBPcPdcQkcVScVNcVUcVTcVWcVVcVYcVXcWbcWacWccSAcWecWdcQkcBYcsLcVZcBPaaacBRcJKcJKcJKcWicWhcWpcWjcWqcWfcEHcEHcEHcEHcWgcWrcWwaaaaaaaaaaabaabaaaaaaaaaaaabGHbGHcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNFcWxcNMaaacNFcWxcNMaaacNFcWxcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcMvcWocNBcSUcWzcWycVjcWAcUicWscWtcWucWucWvcWDcWCcWFaYtaZBcWvcWBcWHcWJcWIcWLcWKcWPcWMcWScWQcUGcWTcWUcWNcWOcWVcWWcWRcWYcWXcXbcXacXdcXccQpcSncXecWZcWZcQZcRecBPcPdcQkcQkcQkcQkcQkcXgcXfcXicXhcXncXkcXpcXocXqcXjcQkcBYcXrcXlcXlcXlcXmcXmcXmcXmcXmcXscXvcXtcXzcXxcNocXAcNocXAcNocXBcWwaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcFcbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcWxcNMaabcNFcWxcNMaaacNFcWxcNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXCcXucXucSUcXwcXDcVjcWAcUicXycUicUicXEcRRcXGcXFcUwcXHcXIcRRcXLcRXcTecXMcXOcXNcWPcXPcXJcXKcXRcXQcXVcXScXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfcYdcXZcQZcRecBQcYhcYgcYgcYgcYlcQkcYmcUMcYecYncURcYocUTcUTcURcYpcQkcBYcYichfcsLcYjcYkcBPaaaaaacBRcYqcYscYrcYvcYqcYscYwcYxcYqcYscYycBRaabaabaabaabaabaabaabaabaabaabbGHcFcbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcWxcNMaaacNFcWxcNMaaacNFcWxcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYAcYBcYBcYDcYCcYCcYEcYGcYFcVjcWAcVjcYHcVjcVjcVjcRRcYLcYKcYOcYNcYPcYIcYJcYQcYRcYMcYMcYMcYXcYUcYZcYYcZacYScVIcQPcYTcZbcYVcYWcZccSdcXTcZdcZgcZecZhcSncZicWZcWZcQZcRecBQcPdchfchfchfckKcQkcZkcZjcZfcZlcURcZmcZncUTcZpcZocQkcBYcYichfcsLcJGcsLcBPaaaaaacBRcZqcZscZrcxNcZtcZycZvcxNcZzcZBcZAcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcFcbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcWxcNMaabcNFcWxcNMaaacNFcWxcNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXCcXucXucSUcXwcXDcVjcWAcUicXycUicUicXEcRRcXGcXFcUwcXHcXIcRRcXLcRXcTecXMcXOcXNcWPcXPcXJaZCcXRcXQcXVcXScXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfcYdcXZcQZcRecBQcYhcYgcYgcYgcYlcQkcYmcUMcYecYncURcYocUTcUTcURcYpcQkcBYcYichfcsLcYjcYkcBPaaaaaacBRcYqcYscYrcYvcYqcYscYwcYxcYqcYscYycBRaabaabaabaabaabaabaabaabaabaabbGHcFcbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcWxcNMaaacNFcWxcNMaaacNFcWxcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYAcYBcYBcYDcYCcYCcYEcYGcYFcVjcWAcVjcYHcVjcVjcVjcRRcYLcYKcYOcYNcYPcYIcYJcYQcYRcYMcYMcYMcYXcYUcYZaZHcZacYScVIcQPcYTcZbcYVcYWcZccSdcXTcZdcZgcZecZhcSncZicWZcWZcQZcRecBQcPdchfchfchfckKcQkcZkcZjcZfcZlcURcZmcZncUTcZpcZocQkcBYcYichfcsLcJGcsLcBPaaaaaacBRcZqcZscZrcxNcZtcZycZvcxNcZzcZBcZAcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcFcbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcWxcNMaaacNFcWxcNMaabcNFcWxcNMaabaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacXucYtcYtcYucZucZucZucZCcZwcZxcSUcZEcZDcZHcZGcZJcZIcZKcZFcZFcZLcZOcZNcVjcVjcVjcZPcZRcZQcZMcZTdaacZVdacdabcSUcZScZSdafcVIcQPcZUdagcZWcZXcZYcSdcZZdahdajdaidadcQZcQZcQZcQZcQZcRecBQcPddaecsLcsLckKcQkdakcSAcSAdaldandamdaqcUTdatdascQkcBYcYicMfcsLcuccTBcBPaaaaaacBRcMkcJKcJKcxNcMkcJKcJKcxNcMkcJKcJKcBRaaaaabaabaaaaaaaaaaaaaaacuQcuQbGHdaucuQbGGbGHbGHbGHcTQcTQaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamhaabcNFdavcNMaaacNFdavcNMaaacNFdavcNMaabalvaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabcXudaodapcZucZucZudaxdardardardardardardardazdaDdaCdaEdawdawdawdaFdaydaJdaAdaBdawdaydaKdaRdaQdaadaSdacdabdaGdaHdaIdaTdaUdaLdaMdaNcZcdaOdaPdaVdaYdaWdaZcXcdbacSndbcdbbdbbcQZcRecBPcPdchfcBNdaXckKcQkdbdcSAdbkdbecURdbmdbncUTdbpdbocQkcBYcYichfcsLchfchfcBPaabaabcBRdbfcKZcJKcxNdbfcKZcJKcxNdbfcKZcJKcBRaaaaaaaabaabaaaaaaaaaaaacuQdbgbGGcFccuQdbhcuQdbibGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaalvaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcXudbjcZucZucZucZucZudardbtdbldbudbwdbvdardbxdbqdbrcXDcVjcVjdbsdbBdbydbEdbCdbGdbFdbzcSUdbAdaQdaadbHdacdbJcSUdbDcZSdbKdbLcSddaMdaNdbNcSddaPdaVcXTcXUdbOcYbdbIcTodbSdbQdbWcQZcRecBPcPdchfdbMdbMckKcQkcQkdbXdbYcQkdbPcQkcQkcQkcQkcQkcQkcBYcYichfcsLcsLdbZcBPaaaaaacBRdbRcJKcJKcxNdbRcJKcJKcxNdbRcJKcJKcBRaaaaaaaaaaabaabaaaaaadcacuQbGGbGGcFccuQbGGbGGbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/shuttles/emergency_dept.dmm b/_maps/map_files/shuttles/emergency_dept.dmm new file mode 100644 index 00000000000..64b903a78f5 --- /dev/null +++ b/_maps/map_files/shuttles/emergency_dept.dmm @@ -0,0 +1,127 @@ +"aa" = (/turf/space,/area/space) +"ab" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/escape) +"ac" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/floor/plating,/area/shuttle/escape) +"ad" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/escape) +"ae" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape) +"af" = (/turf/simulated/shuttle/wall{icon_state = "swallc4"},/area/shuttle/escape) +"ag" = (/obj/machinery/computer/emergency_shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape) +"ah" = (/turf/simulated/shuttle/wall{icon_state = "swallc3"},/area/shuttle/escape) +"ai" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor,/area/shuttle/escape) +"aj" = (/obj/machinery/computer/communications,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"ak" = (/obj/machinery/computer/security{network = list("SS13","Telecomms","Research Outpost","Mining Outpost")},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"al" = (/obj/structure/stool/bed/chair/comfy/blue{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"am" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/escape) +"an" = (/obj/machinery/computer/crew,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"ao" = (/obj/machinery/computer/robotics,/turf/simulated/shuttle/floor,/area/shuttle/escape) +"ap" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape) +"aq" = (/turf/simulated/shuttle/floor,/area/shuttle/escape) +"ar" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"as" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"at" = (/obj/structure/stool/bed/chair/comfy/red{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"au" = (/obj/structure/stool/bed/chair/comfy/teal{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"av" = (/obj/structure/stool/bed/chair/comfy/purp{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"aw" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/shuttle/escape) +"ax" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/shuttle/escape) +"ay" = (/obj/machinery/door/airlock/glass_command{name = "Escape Shuttle Cockpit"; req_access_txt = "19"},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"az" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor4,/area/shuttle/escape) +"aA" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor4,/area/shuttle/escape) +"aB" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "16"},/turf/simulated/floor/plating,/area/shuttle/escape) +"aC" = (/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape) +"aD" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape) +"aE" = (/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape) +"aF" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape) +"aG" = (/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape) +"aH" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor4,/area/shuttle/escape) +"aI" = (/turf/simulated/shuttle/floor4,/area/shuttle/escape) +"aJ" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "15"},/turf/simulated/floor/plating,/area/shuttle/escape) +"aK" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape) +"aL" = (/obj/machinery/chem_dispenser/beer,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape) +"aM" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/shuttle/escape) +"aN" = (/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/clothing/mask/cigarette/cigar,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape) +"aO" = (/obj/machinery/chem_dispenser/soda,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape) +"aP" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/floor/plating,/area/shuttle/escape) +"aQ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/escape) +"aR" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape) +"aS" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/shuttle/escape) +"aT" = (/obj/docking_port/mobile/emergency{dir = 4; dwidth = 11; height = 13; timid = 1; width = 24},/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"aU" = (/turf/simulated/floor/plasteel,/area/shuttle/escape) +"aV" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"aW" = (/obj/machinery/door/window/northleft{req_access_txt = "32"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"aX" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"aY" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel,/area/shuttle/escape) +"aZ" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel,/area/shuttle/escape) +"ba" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) +"bb" = (/obj/machinery/door/window/northleft{req_access_txt = "47"},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) +"bc" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) +"bd" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"be" = (/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"bf" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"bg" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "8"},/turf/simulated/floor/plating,/area/shuttle/escape) +"bh" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape) +"bi" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape) +"bj" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) +"bk" = (/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) +"bl" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) +"bm" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"bn" = (/obj/machinery/door/window/southright{req_access_txt = "32"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"bo" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"bp" = (/obj/structure/window/reinforced,/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape) +"bq" = (/obj/structure/window/reinforced,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape) +"br" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) +"bs" = (/obj/machinery/door/window/southright{req_access_txt = "47"},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) +"bt" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape) +"bu" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape) +"bv" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape) +"bw" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape) +"bx" = (/obj/structure/noticeboard,/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape) +"by" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = null; name = "Shuttle Cargo Hatch"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) +"bz" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) +"bA" = (/obj/machinery/door/window/northleft{req_access_txt = "5"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) +"bB" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) +"bC" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/shuttle/escape) +"bD" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/escape) +"bE" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape) +"bF" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) +"bG" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) +"bH" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) +"bI" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0; req_access_txt = "0"},/obj/machinery/sleeper,/turf/simulated/floor/plasteel,/area/shuttle/escape) +"bJ" = (/obj/item/device/radio/intercom{dir = 4; name = "station intercom (General)"; pixel_x = 28},/obj/item/weapon/extinguisher,/turf/simulated/floor/plasteel,/area/shuttle/escape) +"bK" = (/obj/structure/closet/cardboard,/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape) +"bL" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel,/area/shuttle/escape) +"bM" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/turf/simulated/floor/plasteel,/area/shuttle/escape) +"bN" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel,/area/shuttle/escape) +"bO" = (/obj/machinery/sleeper,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape) +"bP" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape) +"bQ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/airless,/area/shuttle/escape) +"bR" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/shuttle/escape) +"bS" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape) +"bT" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/escape) +"bU" = (/turf/space,/area/shuttle/escape) + +(1,1,1) = {" +aaaaaaaaaaabacadaaaaaaaaaa +aaaaabaeaeafagahaeaeadaaaa +aaabafaiajakalamanaoahadaa +aaapaqarasataqaqauavaqapaa +aaapaqaqaqaqaqaqaqaqaqapaa +abawaeaeaeaxayaeaeaeaeawad +apazaAazazaBaCaDaEaCaFaGap +apaHaIaIaIaJaCaDaEaCaKaLap +apaIaIaIaIaMaCaDaEaCaNaOap +aPaIaIaQaQaBaCaDaEaCaRaRac +aSaeaeaeaeaJaCaDaEaCaCaCap +aTaUaUaUaUaUaUaUaUaUaUaUap +apaVaWaXaBaYaUaZaBbabbbcap +aBbdbebfbgbhaUbibgbjbkblaB +bgbdbebfbgbhaUbibgbjbkblbg +aJbmbnboaJbpaUbqaJbrbsbtaJ +apbuaUaUaUaUaUaUaUaUaUbvap +bwaUaUaUaUaUaUaUaUaUaUaUac +aSaebxbyaBbzbAbBaBbCacaebD +bEaUaUaUbgbFbGbHbgaUaUbIap +acaUaUaUbgbFbGbHbgaUaUbJap +apbKbLbLaJbFbGbHaJbNbMbOap +bPaxbQbQawaeaeaeawbRbRaxbS +aabPbTbTbSbUbUbUbPbTbTbSaa +"} + diff --git a/_maps/map_files/templates/shelter_2.dmm b/_maps/map_files/templates/shelter_2.dmm new file mode 100644 index 00000000000..4ba11cef609 --- /dev/null +++ b/_maps/map_files/templates/shelter_2.dmm @@ -0,0 +1,41 @@ +"a" = (/turf/simulated/wall/survival,/area/survivalpod) +"b" = (/obj/structure/sign/mining/survival{dir = 8},/turf/simulated/wall/survival,/area/survivalpod) +"c" = (/obj/machinery/smartfridge/survival_pod/loaded,/turf/simulated/floor/pod,/area/survivalpod) +"d" = (/turf/simulated/floor/pod,/area/survivalpod) +"e" = (/obj/machinery/door/window/survival_pod{dir = 1},/turf/simulated/floor/carpet/black,/area/survivalpod) +"f" = (/obj/machinery/light,/turf/simulated/floor/carpet/black,/area/survivalpod) +"g" = (/obj/structure/sign/mining/survival{tag = "icon-survival (NORTH)"; icon_state = "survival"; dir = 1},/turf/simulated/wall/survival,/area/survivalpod) +"h" = (/obj/structure/fans,/turf/simulated/floor/pod,/area/survivalpod) +"i" = (/obj/machinery/sleeper/survival_pod,/turf/simulated/floor/pod,/area/survivalpod) +"j" = (/obj/structure/table/survival_pod,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/brute{pixel_x = 4; pixel_y = -2},/turf/simulated/floor/pod,/area/survivalpod) +"k" = (/obj/structure/table/wood/fancy/black{pixel_y = -9},/obj/structure/window/reinforced/survival_pod{dir = 1},/obj/machinery/microwave,/turf/simulated/floor/carpet/black,/area/survivalpod) +"l" = (/obj/structure/sink/kitchen{dir = 4; pixel_x = -11},/turf/simulated/floor/carpet/black,/area/survivalpod) +"m" = (/obj/structure/sign/mining/survival,/turf/simulated/wall/survival,/area/survivalpod) +"n" = (/obj/structure/curtain/black,/obj/machinery/shower{pixel_y = 20},/turf/simulated/floor/pod{pixel_y = 0},/area/survivalpod) +"o" = (/obj/structure/window/reinforced/survival_pod{dir = 8},/obj/machinery/door/window/survival_pod{dir = 1},/turf/simulated/floor/carpet/black,/area/survivalpod) +"p" = (/obj/structure/window/reinforced/survival_pod{dir = 8},/turf/simulated/floor/carpet/black,/area/survivalpod) +"q" = (/obj/structure/window/reinforced/survival_pod{dir = 9},/turf/simulated/floor/carpet/black,/area/survivalpod) +"r" = (/turf/simulated/floor/carpet/black,/area/survivalpod) +"s" = (/obj/item/device/gps/computer,/turf/simulated/floor/pod,/area/survivalpod) +"t" = (/obj/structure/stool/bed/pod,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/pod,/area/survivalpod) +"u" = (/obj/structure/tubes,/obj/item/weapon/twohanded/required/kirbyplants,/turf/simulated/floor/pod,/area/survivalpod) +"v" = (/obj/structure/window/reinforced/survival_pod{dir = 1},/obj/structure/displaycase{desc = "A display case containing an expensive forgery, probably."; locked = 1; pixel_y = -4; req_access_txt = "48"; start_showpiece_type = /obj/item/fakeartefact},/turf/simulated/floor/carpet/black{dir = 1},/area/survivalpod) +"w" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/survival_pod,/turf/simulated/floor/pod,/area/survivalpod) +"x" = (/obj/structure/sign/mining/survival{tag = "icon-survival (EAST)"; icon_state = "survival"; dir = 4},/turf/simulated/wall/survival,/area/survivalpod) +"y" = (/obj/structure/toilet/secret{pixel_y = 12},/turf/simulated/floor/pod,/area/survivalpod) +"z" = (/obj/structure/window/reinforced/survival_pod{dir = 1},/obj/item/cardboard_cutout{desc = "A cardboard cutout of a xenomorph maid."; icon_state = "cutout_lusty"; name = "lusty xenomorph maid"}, /turf/simulated/floor/carpet/black,/area/survivalpod) +"A" = (/obj/structure/table/wood/fancy/black,/obj/machinery/light{dir = 4},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,/turf/simulated/floor/carpet/black,/area/survivalpod) +"B" = (/obj/structure/table/wood/fancy/black,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 1},/obj/effect/spawner/lootdrop/three_course_meal,/turf/simulated/floor/carpet/black,/area/survivalpod) +"C" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/carpet/black,/area/survivalpod) +"D" = (/obj/structure/sign/mining,/turf/simulated/wall/survival,/area/survivalpod) + +(1,1,1) = {" +agagaga +bhcsnyx +aidtoza +bjdupAx +akevqBa +blfrrCx +amawaDa +"} + diff --git a/code/__DEFINES/genetics.dm b/code/__DEFINES/genetics.dm index 8e7be007d12..4f07d54ee01 100644 --- a/code/__DEFINES/genetics.dm +++ b/code/__DEFINES/genetics.dm @@ -96,6 +96,7 @@ #define NUTRITION_LEVEL_FED 350 #define NUTRITION_LEVEL_HUNGRY 250 #define NUTRITION_LEVEL_STARVING 150 +#define NUTRITION_LEVEL_CURSED 0 //Blood levels #define BLOOD_VOLUME_NORMAL 560 diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 99079fd81bb..a2f487086ae 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -332,4 +332,6 @@ #define STATION_GOAL_BUDGET 1 #define FIRST_DIAG_STEP 1 -#define SECOND_DIAG_STEP 2 \ No newline at end of file +#define SECOND_DIAG_STEP 2 + +#define ARBITRARY_VIEWRANGE_NOHUD 2 \ No newline at end of file diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 2e1d87f605e..f4b43516cd0 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -100,6 +100,15 @@ if(display_hud_version > HUD_VERSIONS) //If the requested version number is greater than the available versions, reset back to the first version display_hud_version = 1 + if(mymob.client.view < world.view) + if(mymob.client.view < ARBITRARY_VIEWRANGE_NOHUD) + to_chat(mymob, "HUD is unavailable with this view range.") + display_hud_version = HUD_STYLE_NOHUD + else + if(display_hud_version == HUD_STYLE_STANDARD) + to_chat(mymob, "Standard HUD mode is unavailable with a smaller-than-normal view range.") + display_hud_version = HUD_STYLE_REDUCED + switch(display_hud_version) if(HUD_STYLE_STANDARD) //Default HUD hud_shown = 1 //Governs behavior of other procs diff --git a/code/controllers/Processes/shuttles.dm b/code/controllers/Processes/shuttles.dm index 21f2e8c390e..4f47bda014c 100644 --- a/code/controllers/Processes/shuttles.dm +++ b/code/controllers/Processes/shuttles.dm @@ -25,7 +25,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 var/points_per_crate = 5 //points gained per crate returned var/points_per_intel = 250 //points gained per intel returned var/points_per_plasma = 5 //points gained per plasma returned - var/points_per_design = 25 //points gained per max reliability research design returned (only for initilally unreliable designs) + var/points_per_design = 25 //points gained per research design returned var/centcom_message = "" //Remarks from Centcom on how well you checked the last order. var/list/discoveredPlants = list() //Typepaths for unusual plants we've already sent CentComm, associated with their potencies var/list/techLevels = list() diff --git a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm index 2d7fb9467df..b5249e11740 100644 --- a/code/datums/diseases/advance/symptoms/vision.dm +++ b/code/datums/diseases/advance/symptoms/vision.dm @@ -28,22 +28,25 @@ Bonus /datum/symptom/visionloss/Activate(datum/disease/advance/A) ..() if(prob(SYMPTOM_ACTIVATION_PROB)) - var/mob/living/M = A.affected_mob + var/mob/living/carbon/M = A.affected_mob + var/obj/item/organ/internal/eyes/eyes = M.get_int_organ(/obj/item/organ/internal/eyes) + if(!eyes) //NO EYES, NO PROBLEM! Rip out your eyes today to prevent future blindness! + return switch(A.stage) if(1, 2) to_chat(M, "Your eyes itch.") if(3, 4) to_chat(M, "Your eyes burn!") - M.blur_eyes(10) - M.adjust_eye_damage(1) + M.EyeBlurry(20) + eyes.take_damage(1) else to_chat(M, "Your eyes burn horrificly!") - M.blur_eyes(20) - M.adjust_eye_damage(5) - if(M.eye_damage >= 10) - M.become_nearsighted() - if(prob(M.eye_damage - 10 + 1)) - if(M.become_blind()) + M.EyeBlurry(30) + eyes.take_damage(5) + if(eyes.damage >= 10) + M.BecomeNearsighted() + if(prob(eyes.damage - 10 + 1)) + if(M.BecomeBlind()) to_chat(M, "You go blind!") diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index 5c11c42930a..40c38ac0627 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -1173,3 +1173,39 @@ suit = /obj/item/clothing/suit/wizrobe/marisa shoes = /obj/item/clothing/shoes/sandal/marisa head = /obj/item/clothing/head/wizard/marisa + + +/datum/outfit/admin/dark_priest + name = "Dark Priest" + + uniform = /obj/item/clothing/under/color/black + suit = /obj/item/clothing/suit/hooded/chaplain_hoodie + back = /obj/item/weapon/storage/backpack + head = /obj/item/clothing/head/chaplain_hood + gloves = /obj/item/clothing/gloves/color/black + shoes = /obj/item/clothing/shoes/black + l_ear = /obj/item/device/radio/headset/syndicate + id = /obj/item/weapon/card/id/syndicate + r_hand = /obj/item/weapon/nullrod/armblade + backpack_contents = list( + /obj/item/weapon/storage/box/survival = 1, + /obj/item/device/flashlight = 1, + ) + +/datum/outfit/admin/dark_priest/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + var/obj/item/weapon/card/id/I = H.wear_id + if(istype(I)) + apply_to_card(I, H, get_all_accesses(), "Dark Priest", "syndie") + var/obj/item/weapon/nullrod/armblade/B = H.r_hand + if(istype(B)) + B.force = 20 + B.name = "blessing of the reaper" + B.desc = "Sometimes, someone's just gotta die." + var/obj/item/device/radio/headset/R = H.l_ear + if(istype(R)) + R.flags |= NODROP + var/obj/item/weapon/implant/dust/D = new /obj/item/weapon/implant/dust(H) + D.implant(H) \ No newline at end of file diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index 24007dbafee..3d0f877a3aa 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -39,6 +39,12 @@ suffix = "cyb" name = "emergency shuttle (Cyberiad)" +/datum/map_template/shuttle/emergency/dept + suffix = "dept" + name = "emergency shuttle (department)" + description = "Features include: areas for each department, and a small bar." + admin_notes = "Designed to reduce chaos. Each dept requires dept access." + /datum/map_template/shuttle/emergency/clown suffix = "clown" name = "Snappop(tm)!" diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 10f6c242d34..dbe111b6dbe 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -250,6 +250,17 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine cost = 10 containername = "disabler crate" +/datum/supply_packs/security/forensics + name = "Forensics Crate" + contains = list(/obj/item/device/detective_scanner, + /obj/item/weapon/storage/box/evidence, + /obj/item/device/camera, + /obj/item/device/taperecorder, + /obj/item/toy/crayon/white, + /obj/item/clothing/head/det_hat) + cost = 20 + containername = "forensics crate" + ///// Armory stuff /datum/supply_packs/security/armory @@ -895,6 +906,13 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine containername = "tank transfer valves crate" access = access_rd +/datum/supply_packs/science/prototype + name = "Machine Prototype Crate" + contains = list(/obj/item/device/machineprototype) + cost = 80 + containertype = /obj/structure/closet/crate/secure/scisec + containername = "machine prototype crate" + access = access_research ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Organic ///////////////////////////////////////// diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 1cf08abebd0..1aa65685d5e 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -922,6 +922,15 @@ var/list/uplink_items = list() cost = 2 surplus = 30 +/datum/uplink_item/stealthy_tools/cutouts + name = "Adaptive Cardboard Cutouts" + desc = "These cardboard cutouts are coated with a thin material that prevents discoloration and makes the images on them appear more lifelike. This pack contains three as well as a \ + spraycan for changing their appearances." + reference = "ADCC" + item = /obj/item/weapon/storage/box/syndie_kit/cutouts + cost = 1 + surplus = 20 + // DEVICE AND TOOLS /datum/uplink_item/device_tools diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 5d1dd5c74fb..292ad651235 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -34,6 +34,9 @@ //Detective Work, used for the duplicate data points kept in the scanners var/list/original_atom + //Detective Work, used for allowing a given atom to leave its fibers on stuff. Allowed by default + var/can_leave_fibers = TRUE + var/allow_spin = 1 //Set this to 1 for a _target_ that is being thrown at; if an atom has this set to 1 then atoms thrown AT it will not spin; currently used for the singularity. -Fox var/admin_spawned = 0 //was this spawned by an admin? used for stat tracking stuff. @@ -469,4 +472,4 @@ /atom/on_varedit(modified_var) if(!Debug2) admin_spawned = TRUE - ..() \ No newline at end of file + ..() diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index e0187e940e4..d85b3c91258 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -1,7 +1,7 @@ /obj/item/weapon/antag_spawner throw_speed = 1 throw_range = 5 - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/used = 0 /obj/item/weapon/antag_spawner/proc/spawn_antag(var/client/C, var/turf/T, var/type = "") diff --git a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm index a9899b33462..bf16d90d55e 100644 --- a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm +++ b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm @@ -38,7 +38,6 @@ icon_state = "ling_eyeshield" eye_colour = null implant_overlay = null - origin_tech = "biotech=4" slot = "eye_ling" status = 0 aug_message = "We feel a minute twitch in our eyes, our eyes feel more durable." @@ -61,7 +60,6 @@ icon_state = "ling_thermal" eye_colour = null implant_overlay = null - origin_tech = "biotech=5;magnets=5" slot = "eye_ling" status = 0 aug_message = "We feel a minute twitch in our eyes, and darkness creeps away." @@ -82,4 +80,4 @@ var/mob/living/carbon/human/H = owner H.weakeyes = 0 H.vision_type = null - ..() \ No newline at end of file + ..() diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm index 9a6438853c0..c7d393b77a7 100644 --- a/code/game/gamemodes/changeling/powers/mutations.dm +++ b/code/game/gamemodes/changeling/powers/mutations.dm @@ -125,7 +125,7 @@ icon_state = "arm_blade" item_state = "arm_blade" flags = ABSTRACT | NODROP - w_class = 5 + w_class = WEIGHT_CLASS_HUGE sharp = 1 edge = 1 force = 25 diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 6ab24e1d8b4..97511414e7a 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -3,7 +3,7 @@ desc = "An arcane weapon wielded by the followers of a cult." icon_state = "cultblade" item_state = "cultblade" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY force = 30 throwforce = 10 sharp = 1 @@ -38,7 +38,7 @@ desc = "A strange dagger said to be used by sinister groups for \"preparing\" a corpse before sacrificing it to their dark gods." icon = 'icons/obj/wizard.dmi' icon_state = "render" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force = 15 throwforce = 25 var/cooldown = 0 @@ -123,7 +123,7 @@ icon_state = "cult_armour" item_state = "cult_armour" desc = "A bulky suit of armour, bristling with spikes. It looks space proof." - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank) slowdown = 1 armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30) @@ -133,7 +133,7 @@ desc = "Empowered garb which creates a powerful shield around the user." icon_state = "cult_armour" item_state = "cult_armour" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY armor = list(melee = 50, bullet = 40, laser = 50, energy = 30, bomb = 50, bio = 30, rad = 30) body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade) diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index 1f35890373c..60b9fcb2c85 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -261,7 +261,7 @@ var/list/blacklisted_pylon_turfs = typecacheof(list( /obj/item/weapon/storage/box/cult name = "Dark Forge Cache" can_hold = list("/obj/item/clothing/suit/space/cult", "/obj/item/clothing/head/helmet/space/cult") - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL /obj/item/weapon/storage/box/cult/New() ..() diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 3a48f472603..1553ec0aa94 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -24,7 +24,7 @@ icon_state ="tome" throw_speed = 2 throw_range = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/scribereduct = 0 var/canbypass = 0 //ADMINBUS diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm index 1c481e7c333..e58665c514e 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/game/gamemodes/miniantags/abduction/gland.dm @@ -113,7 +113,7 @@ owner.set_species(species) /obj/item/organ/internal/heart/gland/ventcrawling - origin_tech = "materials=4;biotech=5;bluespace=3;abductor=3" + origin_tech = "materials=4;biotech=5;bluespace=4;abductor=3" cooldown_low = 1800 cooldown_high = 2400 uses = 1 diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index c6ea23c4bbc..680cb183e86 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -4,6 +4,7 @@ desc = "A currently unactivated swarmer. Swarmers can self activate at any time, it would be wise to immediately dispose of this." icon = 'icons/mob/swarmer.dmi' icon_state = "swarmer_unactivated" + origin_tech = "bluespace=4;materials=4;programming=7" /obj/item/unactivated_swarmer/New() notify_ghosts("An unactivated swarmer has been created in [get_area(src)]!", enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK) diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index 4a2a629c1d2..ca9e7b7ac28 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -317,7 +317,7 @@ desc = "A pile of fine blue dust. Small tendrils of violet mist swirl around it." icon = 'icons/effects/effects.dmi' icon_state = "revenantEctoplasm" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/reforming = 1 var/essence = 75 //the maximum essence of the reforming revenant var/inert = 0 diff --git a/code/game/gamemodes/miniantags/slaughter/slaughter.dm b/code/game/gamemodes/miniantags/slaughter/slaughter.dm index 62c3a9a00b0..19411dee6de 100644 --- a/code/game/gamemodes/miniantags/slaughter/slaughter.dm +++ b/code/game/gamemodes/miniantags/slaughter/slaughter.dm @@ -230,7 +230,7 @@ desc = "Still it beats furiously, emanating an aura of utter hate." icon = 'icons/obj/surgery.dmi' icon_state = "demon_heart" - origin_tech = "combat=5;biotech=8" + origin_tech = "combat=5;biotech=7" /obj/item/organ/internal/heart/demon/update_icon() return //always beating visually diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index f118bf548f0..4ed35c5b707 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -4,7 +4,7 @@ icon_state = "pinoff" flags = CONDUCT slot_flags = SLOT_PDA | SLOT_BELT - w_class = 2 + w_class = WEIGHT_CLASS_SMALL item_state = "electronic" throw_speed = 4 throw_range = 20 diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index e60b564f5d0..6cb2f8d6db6 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -11,7 +11,7 @@ name = "traitor" config_tag = "traitor" restricted_jobs = list("Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Internal Affairs Agent", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Internal Affairs Agent", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer") + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Internal Affairs Agent", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer") required_players = 0 required_enemies = 1 recommended_enemies = 4 diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index f3dc8e4e41a..406f21bdcdb 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -10,7 +10,7 @@ config_tag = "vampire" restricted_jobs = list("AI", "Cyborg") protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer") - protected_species = list("Machine", "Plasmaman") + protected_species = list("Machine") required_players = 15 required_enemies = 1 recommended_enemies = 4 diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index d47610140ae..1dd20906704 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -7,7 +7,7 @@ icon_state ="scroll2" throw_speed = 1 throw_range = 5 - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/used = 0 @@ -119,7 +119,7 @@ item_state = "render" force = 15 throwforce = 10 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL hitsound = 'sound/weapons/bladeslice.ogg' var/charged = 1 var/spawn_type = /obj/singularity/narsie/wizard @@ -232,7 +232,7 @@ var/global/list/multiverse = list() throwforce = 10 sharp = 1 edge = 1 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") var/faction = list("unassigned") var/cooldown = 0 @@ -616,7 +616,7 @@ var/global/list/multiverse = list() icon_state = "necrostone" item_state = "electronic" origin_tech = "bluespace=4;materials=4" - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/list/spooky_scaries = list() var/unlimited = 0 var/heresy = 0 @@ -753,7 +753,7 @@ var/global/list/multiverse = list() icon_state = "nyacrostone" item_state = "electronic" origin_tech = "bluespace=4;materials=4" - w_class = 1 + w_class = WEIGHT_CLASS_TINY heresy = 1 unlimited = 1 @@ -793,7 +793,7 @@ var/global/list/multiverse = list() return if(!link) - if(I.loc == user && istype(I) && I.w_class <= 2) + if(I.loc == user && istype(I) && I.w_class <= WEIGHT_CLASS_SMALL) user.drop_item() I.loc = src link = I diff --git a/code/game/gamemodes/wizard/godhand.dm b/code/game/gamemodes/wizard/godhand.dm index 55afe36f1d2..95d804179cd 100644 --- a/code/game/gamemodes/wizard/godhand.dm +++ b/code/game/gamemodes/wizard/godhand.dm @@ -8,7 +8,7 @@ icon_state = "syndballoon" item_state = null flags = ABSTRACT | NODROP - w_class = 5 + w_class = WEIGHT_CLASS_HUGE force = 0 throwforce = 0 throw_range = 0 diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 7fcd9c198b4..3e396ae14a8 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -4,9 +4,9 @@ icon_state = "soulstone" item_state = "electronic" desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artifact's power." - w_class = 1 + w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_BELT - origin_tech = "bluespace=4;materials=4" + origin_tech = "bluespace=4;materials=5" var/imprinted = "empty" var/usability = TRUE // Can this soul stone be used by anyone, or only cultists/wizards? @@ -347,4 +347,4 @@ T.unEquip(W) init_shade(T, U) qdel(T) - return 1 \ No newline at end of file + return 1 diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 65843d0e0fc..4f3e7fe9001 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -497,7 +497,7 @@ icon_state ="book" throw_speed = 2 throw_range = 5 - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/uses = 10 var/temp = null var/op = 1 @@ -863,4 +863,4 @@ spell = /obj/effect/proc_holder/spell/targeted/sacred_flame spellname = "sacred flame" icon_state ="booksacredflame" - desc = "Become one with the flames that burn within... and invite others to do so as well." \ No newline at end of file + desc = "Become one with the flames that burn within... and invite others to do so as well." diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 433b2adfb27..82238f732b9 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -580,7 +580,7 @@ var/global/datum/controller/occupations/job_master H.mind.store_memory(remembered_info) // If they're head, give them the account info for their department - if(job.head_position) + if(job && job.head_position) remembered_info = "" var/datum/money_account/department_account = department_accounts[job.department] diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index b5612389def..b7c7961e5de 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -1070,7 +1070,8 @@ Just an object used in constructing air alarms icon = 'icons/obj/doors/door_assembly.dmi' icon_state = "door_electronics" desc = "Looks like a circuit. Probably is." - w_class = 2 + w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=50, MAT_GLASS=50) + origin_tech = "engineering=2;programming=1" toolspeed = 1 usesound = 'sound/items/Deconstruct.ogg' diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index 7c888aa2a3d..a8d16939944 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -3,7 +3,7 @@ desc = "A pre-fabricated security camera kit, ready to be assembled and mounted to a surface." icon = 'icons/obj/monitors.dmi' icon_state = "cameracase" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL anchored = 0 materials = list(MAT_METAL=400, MAT_GLASS=250) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index e5c9d1a0804..721372b56f5 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -332,7 +332,7 @@ while((progress / milestone) > INSTALLED && LAZYLEN(missing_organs)) var/obj/item/organ/I = pick_n_take(missing_organs) - I.replaced(occupant) + I.safe_replace(occupant) #undef INSTALLED @@ -377,7 +377,7 @@ return else connected_message("Authorized Ejection") - announce_radio_message("An authorized ejection of [occupant.real_name] has occured") + announce_radio_message("An authorized ejection of [(occupant) ? occupant.real_name : "the malfunctioning pod"] has occured") to_chat(user, "You force an emergency ejection.") go_out() diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 886dac328de..ba7aadc3054 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -423,7 +423,7 @@ hitsound = 'sound/weapons/bladeslice.ogg' force = 40 throwforce = 10 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") block_chance = 50 @@ -442,7 +442,7 @@ throw_speed = 1 throw_range = 5 throwforce = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL armour_penetration = 50 block_chance = 50 var/active = 0 @@ -466,13 +466,13 @@ if(active) force = 30 icon_state = "sword[item_color]" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY playsound(user, 'sound/weapons/saberon.ogg', 50, 1) to_chat(user, "[src] is now active.") else force = 3 icon_state = "sword0" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL playsound(user, 'sound/weapons/saberoff.ogg', 50, 1) to_chat(user, "[src] can now be concealed.") if(istype(user,/mob/living/carbon/human)) @@ -489,7 +489,7 @@ name = "basketball" item_state = "basketball" desc = "Here's your chance, do your dance at the Space Jam." - w_class = 4 //Stops people from hiding it in their bags/pockets + w_class = WEIGHT_CLASS_BULKY //Stops people from hiding it in their bags/pockets /obj/structure/holohoop name = "basketball hoop" diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 603c0483129..b0dde9e20cd 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -991,7 +991,7 @@ desc = "A model spaceship, it looks like those used back in the day when travelling to Orion! It even has a miniature FX-293 reactor, which was renowned for its instability and tendency to explode..." icon = 'icons/obj/toy.dmi' icon_state = "ship" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/active = 0 //if the ship is on /obj/item/weapon/orion_ship/examine(mob/user) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 1dc88f9663d..d72c1792932 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -13,7 +13,7 @@ /obj/item/weapon/circuitboard density = 0 anchored = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL name = "circuit board" icon = 'icons/obj/module.dmi' icon_state = "id_mod" @@ -41,30 +41,31 @@ /obj/item/weapon/circuitboard/message_monitor name = "Circuit board (Message Monitor)" build_path = /obj/machinery/computer/message_monitor - origin_tech = "programming=3" + origin_tech = "programming=2" /obj/item/weapon/circuitboard/camera name = "Circuit board (Camera Monitor)" build_path = /obj/machinery/computer/security - origin_tech = "programming=2" + origin_tech = "programming=2;combat=2" /obj/item/weapon/circuitboard/xenobiology name = "Circuit board (Xenobiology Console)" build_path = /obj/machinery/computer/camera_advanced/xenobio origin_tech = "programming=3;biotech=3" /obj/item/weapon/circuitboard/aicore name = "Circuit board (AI Core)" - origin_tech = "programming=4;biotech=2" + origin_tech = "programming=3" board_type = "other" /obj/item/weapon/circuitboard/aiupload name = "Circuit board (AI Upload)" build_path = /obj/machinery/computer/aiupload - origin_tech = "programming=4" + origin_tech = "programming=4;engineering=4" /obj/item/weapon/circuitboard/borgupload name = "Circuit board (Cyborg Upload)" build_path = /obj/machinery/computer/borgupload - origin_tech = "programming=4" + origin_tech = "programming=4;engineering=4" /obj/item/weapon/circuitboard/med_data name = "Circuit board (Medical Records)" build_path = /obj/machinery/computer/med_data + origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/pandemic name = "circuit board (PanD.E.M.I.C. 2200)" build_path = /obj/machinery/computer/pandemic @@ -76,10 +77,11 @@ /obj/item/weapon/circuitboard/communications name = "Circuit board (Communications Console)" build_path = /obj/machinery/computer/communications - origin_tech = "programming=2;magnets=2" + origin_tech = "programming=3;magnets=3" /obj/item/weapon/circuitboard/card name = "Circuit board (ID Computer)" build_path = /obj/machinery/computer/card + origin_tech = "programming=3" /obj/item/weapon/circuitboard/card/minor name = "Circuit board (Dept ID Computer)" build_path = /obj/machinery/computer/card/minor @@ -106,10 +108,11 @@ /obj/item/weapon/circuitboard/teleporter name = "Circuit board (Teleporter Console)" build_path = /obj/machinery/computer/teleporter - origin_tech = "programming=2;bluespace=2" + origin_tech = "programming=3;bluespace=3;plasmatech=3" /obj/item/weapon/circuitboard/secure_data name = "Circuit board (Security Records)" build_path = /obj/machinery/computer/secure_data + origin_tech = "programming=2;combat=2" /obj/item/weapon/circuitboard/skills name = "Circuit board (Employment Records)" build_path = /obj/machinery/computer/skills @@ -151,7 +154,7 @@ /obj/item/weapon/circuitboard/cloning name = "Circuit board (Cloning Machine Console)" build_path = /obj/machinery/computer/cloning - origin_tech = "programming=3;biotech=3" + origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/arcade/battle name = "circuit board (Arcade Battle)" build_path = /obj/machinery/computer/arcade/battle @@ -159,7 +162,7 @@ /obj/item/weapon/circuitboard/arcade/orion_trail name = "circuit board (Orion Trail)" build_path = /obj/machinery/computer/arcade/orion_trail - origin_tech = "programming=2" + origin_tech = "programming=1" /obj/item/weapon/circuitboard/solar_control name = "Circuit board (Solar Control)" build_path = /obj/machinery/power/solar_control @@ -167,6 +170,7 @@ /obj/item/weapon/circuitboard/powermonitor name = "Circuit board (Power Monitor)" build_path = /obj/machinery/computer/monitor + origin_tech = "programming=2;powerstorage=2" /obj/item/weapon/circuitboard/olddoor name = "Circuit board (DoorMex)" build_path = /obj/machinery/computer/pod/old @@ -219,15 +223,15 @@ /obj/item/weapon/circuitboard/crew name = "Circuit board (Crew Monitoring Computer)" build_path = /obj/machinery/computer/crew - origin_tech = "programming=3;biotech=2;magnets=2" + origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/mech_bay_power_console name = "Circuit board (Mech Bay Power Control Console)" build_path = /obj/machinery/computer/mech_bay_power_console - origin_tech = "programming=2;powerstorage=3" + origin_tech = "programming=3;powerstorage=3" /obj/item/weapon/circuitboard/ordercomp name = "Circuit board (Supply Ordering Console)" build_path = /obj/machinery/computer/ordercomp - origin_tech = "programming=2" + origin_tech = "programming=3" /obj/item/weapon/circuitboard/supplycomp name = "Circuit board (Supply Shuttle Console)" build_path = /obj/machinery/computer/supplycomp @@ -237,19 +241,19 @@ /obj/item/weapon/circuitboard/operating name = "Circuit board (Operating Computer)" build_path = /obj/machinery/computer/operating - origin_tech = "programming=2;biotech=2" + origin_tech = "programming=2;biotech=3" /obj/item/weapon/circuitboard/comm_monitor name = "Circuit board (Telecommunications Monitor)" build_path = /obj/machinery/computer/telecomms/monitor - origin_tech = "programming=3" + origin_tech = "programming=3;magnets=3;bluespace=2" /obj/item/weapon/circuitboard/comm_server name = "Circuit board (Telecommunications Server Monitor)" build_path = /obj/machinery/computer/telecomms/server - origin_tech = "programming=3" + origin_tech = "programming=3;magnets=3;bluespace=2" /obj/item/weapon/circuitboard/comm_traffic name = "Circuitboard (Telecommunications Traffic Control)" build_path = /obj/machinery/computer/telecomms/traffic - origin_tech = "programming=3" + origin_tech = "programming=3;magnets=3;bluespace=2" /obj/item/weapon/circuitboard/shuttle @@ -285,7 +289,7 @@ /obj/item/weapon/circuitboard/aifixer name = "Circuit board (AI Integrity Restorer)" build_path = /obj/machinery/computer/aifixer - origin_tech = "programming=3;biotech=2" + origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/area_atmos name = "Circuit board (Area Air Control)" build_path = /obj/machinery/computer/area_atmos @@ -293,7 +297,7 @@ /obj/item/weapon/circuitboard/telesci_console name = "Circuit board (Telepad Control Console)" build_path = /obj/machinery/computer/telescience - origin_tech = "programming=3;bluespace=2" + origin_tech = "programming=3;bluespace=3;plasmatech=4" /obj/item/weapon/circuitboard/atmos_automation name = "Circuit board (Atmospherics Automation)" @@ -301,6 +305,7 @@ /obj/item/weapon/circuitboard/large_tank_control name = "Circuit board (Atmospheric Tank Control)" build_path = /obj/machinery/computer/general_air_control/large_tank_control + origin_tech = "programming=2;engineering=3;materials=2" /obj/item/weapon/circuitboard/turbine_computer name = "circuit board (Turbine Computer)" @@ -310,7 +315,7 @@ /obj/item/weapon/circuitboard/HONKputer name = "Circuit board (HONKputer)" build_path = /obj/machinery/computer/HONKputer - origin_tech = "programming=4" + origin_tech = "programming=2" icon = 'icons/obj/machines/HONKputer.dmi' icon_state = "bananium_board" board_type = "honkcomputer" diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index a714e24febc..24f5c88695c 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -57,10 +57,7 @@ else desc += "." -/obj/machinery/constructable_frame/machine_frame/attackby(obj/item/P as obj, mob/user as mob, params) - if(P.crit_fail) - to_chat(user, "This part is faulty, you cannot add this to the machine!") - return +/obj/machinery/constructable_frame/machine_frame/attackby(obj/item/P, mob/user, params) switch(state) if(1) if(istype(P, /obj/item/stack/cable_coil)) @@ -171,11 +168,10 @@ for(var/path in req_components) while(req_components[path] > 0 && (locate(path) in part_list)) var/obj/item/part = (locate(path) in part_list) - if(!part.crit_fail) - added_components[part] = path - replacer.remove_from_storage(part, src) - req_components[path]-- - part_list -= part + added_components[part] = path + replacer.remove_from_storage(part, src) + req_components[path]-- + part_list -= part for(var/obj/item/weapon/stock_parts/part in added_components) components += part @@ -265,7 +261,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (SMES)" build_path = /obj/machinery/power/smes board_type = "machine" - origin_tech = "programming=4;powerstorage=5;engineering=5" + origin_tech = "programming=3;powerstorage=3;engineering=3" frame_desc = "Requires 5 pieces of cable, 5 Power Cells and 1 Capacitor." req_components = list( /obj/item/stack/cable_coil = 5, @@ -276,7 +272,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Emitter)" build_path = /obj/machinery/power/emitter board_type = "machine" - origin_tech = "programming=4;powerstorage=5;engineering=5" + origin_tech = "programming=3;powerstorage=4;engineering=4" req_components = list( /obj/item/weapon/stock_parts/micro_laser = 1, /obj/item/weapon/stock_parts/manipulator = 1) @@ -285,7 +281,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Power Compressor)" build_path = /obj/machinery/power/compressor board_type = "machine" - origin_tech = "programming=4;powerstorage=5;engineering=4" + origin_tech = "programming=4;powerstorage=4;engineering=4" req_components = list( /obj/item/stack/cable_coil = 5, /obj/item/weapon/stock_parts/manipulator = 6) @@ -294,7 +290,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Power Turbine)" build_path = /obj/machinery/power/turbine board_type = "machine" - origin_tech = "programming=4;powerstorage=4;engineering=5" + origin_tech = "programming=4;powerstorage=4;engineering=4" req_components = list( /obj/item/stack/cable_coil = 5, /obj/item/weapon/stock_parts/capacitor = 6) @@ -327,7 +323,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Biogenerator)" build_path = /obj/machinery/biogenerator board_type = "machine" - origin_tech = "programming=3;biotech=2;materials=3" + origin_tech = "programming=2;biotech=3;materials=3" frame_desc = "Requires 1 Matter Bin, 1 Manipulator, 1 piece of cable and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, @@ -361,7 +357,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Hydroponics Tray)" build_path = /obj/machinery/hydroponics/constructable board_type = "machine" - origin_tech = "programming=1;biotech=1" + origin_tech = "programming=1;biotech=2" frame_desc = "Requires 2 Matter Bins, 1 Manipulator, and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 2, @@ -372,7 +368,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Microwave)" build_path = /obj/machinery/kitchen_machine/microwave board_type = "machine" - origin_tech = "programming=1" + origin_tech = "programming=2;magnets=2" frame_desc = "Requires 1 Micro Laser, 2 pieces of cable and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/micro_laser = 1, @@ -383,7 +379,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Oven)" build_path = /obj/machinery/kitchen_machine/oven board_type = "machine" - origin_tech = "programming=1;plasmatech=1" + origin_tech = "programming=2;magnets=2" frame_desc = "Requires 2 Micro Lasers, 5 pieces of cable and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/micro_laser = 2, @@ -394,7 +390,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Grill)" build_path = /obj/machinery/kitchen_machine/grill board_type = "machine" - origin_tech = "programming=1;plasmatech=1" + origin_tech = "programming=2;magnets=2" frame_desc = "Requires 2 Micro Lasers, 5 pieces of cable and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/micro_laser = 2, @@ -405,7 +401,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Candy Maker)" build_path = /obj/machinery/kitchen_machine/candy_maker board_type = "machine" - origin_tech = "programming=2" + origin_tech = "programming=2;magnets=2" frame_desc = "Requires 1 Manipulator, 5 pieces of cable and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/manipulator = 1, @@ -416,7 +412,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Deep Fryer)" build_path = /obj/machinery/cooker/deepfryer board_type = "machine" - origin_tech = "programming=2" + origin_tech = "programming=1" frame_desc = "Requires 2 Micro Lasers and 5 pieces of cable." req_components = list( /obj/item/weapon/stock_parts/micro_laser = 2, @@ -426,7 +422,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Gibber)" build_path = /obj/machinery/gibber board_type = "machine" - origin_tech = "programming=1" + origin_tech = "programming=2;engineering=2" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1) @@ -435,7 +431,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Tesla Coil)" build_path = /obj/machinery/power/tesla_coil board_type = "machine" - origin_tech = "programming=1" + origin_tech = "programming=3;magnets=3;powerstorage=3" req_components = list( /obj/item/weapon/stock_parts/capacitor = 1) @@ -443,7 +439,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Grounding Rod)" build_path = /obj/machinery/power/grounding_rod board_type = "machine" - origin_tech = "programming=1" + origin_tech = "programming=3;powerstorage=3;magnets=3;plasmatech=2" req_components = list( /obj/item/weapon/stock_parts/capacitor = 1) @@ -460,16 +456,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Recycler)" build_path = /obj/machinery/recycler board_type = "machine" - origin_tech = "programming=1" - req_components = list( - /obj/item/weapon/stock_parts/matter_bin = 1, - /obj/item/weapon/stock_parts/manipulator = 1) - -/obj/item/weapon/circuitboard/seed_extractor - name = "circuit board (Seed Extractor)" - build_path = /obj/machinery/seed_extractor - board_type = "machine" - origin_tech = "programming=1" + origin_tech = "programming=2;engineering=2" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1) @@ -519,7 +506,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Monkey Recycler)" build_path = /obj/machinery/monkey_recycler board_type = "machine" - origin_tech = "programming=1" + origin_tech = "programming=1;biotech=2" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1) @@ -536,7 +523,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Portable Chem Dispenser)" build_path = /obj/machinery/chem_dispenser/constructable board_type = "machine" - origin_tech = "materials=4;engineering=4;programming=4;plasmatech=3;biotech=3" + origin_tech = "materials=4;programming=4;plasmatech=4;biotech=3" frame_desc = "Requires 2 Matter Bins, 1 Capacitor, 1 Manipulator, 1 Console Screen, and 1 Power Cell." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 2, @@ -549,7 +536,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Chem Master 2999)" build_path = /obj/machinery/chem_master/constructable board_type = "machine" - origin_tech = "materials=2;programming=2;biotech=1" + origin_tech = "materials=3;programming=2;biotech=3" req_components = list( /obj/item/weapon/reagent_containers/glass/beaker = 2, /obj/item/weapon/stock_parts/manipulator = 1, @@ -559,7 +546,7 @@ to destroy them and players will be able to make replacements. name = "circuit board (Chemical Heater)" build_path = /obj/machinery/chem_heater board_type = "machine" - origin_tech = "materials=2;engineering=2" + origin_tech = "programming=2;engineering=2;biotech=2" frame_desc = "Requires 1 Micro Laser and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/micro_laser = 1, @@ -625,7 +612,7 @@ to destroy them and players will be able to make replacements. name = "Circuit Board (PACMAN-type Generator)" build_path = /obj/machinery/power/port_gen/pacman board_type = "machine" - origin_tech = "programming=3:powerstorage=3;plasmatech=3;engineering=3" + origin_tech = "programming=2;powerstorage=3;plasmatech=3;engineering=3" frame_desc = "Requires 1 Matter Bin, 1 Micro-Laser, 2 Pieces of Cable, and 1 Capacitor." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, @@ -641,7 +628,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/pacman/mrs name = "Circuit Board (MRSPACMAN-type Generator)" build_path = /obj/machinery/power/port_gen/pacman/mrs - origin_tech = "programming=3;powerstorage=5;engineering=5" + origin_tech = "programming=3;powerstorage=4;engineering=4;plasmatech=4" obj/item/weapon/circuitboard/rdserver name = "Circuit Board (R&D Server)" @@ -657,7 +644,7 @@ obj/item/weapon/circuitboard/rdserver name = "Circuit board (Exosuit Fabricator)" build_path = /obj/machinery/mecha_part_fabricator board_type = "machine" - origin_tech = "programming=3;engineering=3" + origin_tech = "programming=2;engineering=2" frame_desc = "Requires 2 Matter Bins, 1 Manipulator, 1 Micro-Laser and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 2, @@ -669,7 +656,7 @@ obj/item/weapon/circuitboard/rdserver name = "Circuit board (Spacepod Fabricator)" build_path = /obj/machinery/spod_part_fabricator //ah fuck my life board_type = "machine" - origin_tech = "programming=3;engineering=3" + origin_tech = "programming=2;engineering=2" frame_desc = "Requires 3 Matter Bins, 2 Manipulators, 2 Micro-Lasers, and 1 Console Screen." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 3, @@ -682,7 +669,7 @@ obj/item/weapon/circuitboard/rdserver name = "Circuit board (Clone Pod)" build_path = /obj/machinery/clonepod board_type = "machine" - origin_tech = "programming=3;biotech=3" + origin_tech = "programming=2;biotech=2" frame_desc = "Requires 2 Manipulator, 2 Scanning Module, 2 pieces of cable and 1 Console Screen." req_components = list( /obj/item/stack/cable_coil = 2, @@ -707,7 +694,7 @@ obj/item/weapon/circuitboard/rdserver name = "circuit board (Mech Bay Recharger)" build_path = /obj/machinery/mech_bay_recharge_port board_type = "machine" - origin_tech = "programming=3;powerstorage=4;engineering=4" + origin_tech = "programming=3;powerstorage=3;engineering=3" frame_desc = "Requires 1 piece of cable and 5 Capacitors." req_components = list( /obj/item/stack/cable_coil = 1, @@ -717,7 +704,7 @@ obj/item/weapon/circuitboard/rdserver name = "circuit board (Teleporter Hub)" build_path = /obj/machinery/teleport/hub board_type = "machine" - origin_tech = "programming=3;engineering=5;bluespace=5;materials=4" + origin_tech = "programming=3;engineering=4;bluespace=4;materials=4" frame_desc = "Requires 3 Bluespace Crystals and 1 Matter Bin." req_components = list( /obj/item/weapon/ore/bluespace_crystal = 3, @@ -727,7 +714,7 @@ obj/item/weapon/circuitboard/rdserver name = "circuit board (Teleporter Station)" build_path = /obj/machinery/teleport/station board_type = "machine" - origin_tech = "programming=4;engineering=4;bluespace=4" + origin_tech = "programming=4;engineering=4;bluespace=4;plasmatech=3" frame_desc = "Requires 2 Bluespace Crystals, 2 Capacitors and 1 Console Screen." req_components = list( /obj/item/weapon/ore/bluespace_crystal = 2, @@ -738,7 +725,7 @@ obj/item/weapon/circuitboard/rdserver name = "circuit board (Permanent Teleporter)" build_path = /obj/machinery/teleport/perma board_type = "machine" - origin_tech = "programming=3;engineering=5;bluespace=5;materials=4" + origin_tech = "programming=3;engineering=4;bluespace=4;materials=4" frame_desc = "Requires 3 Bluespace Crystals and 1 Matter Bin." req_components = list( /obj/item/weapon/ore/bluespace_crystal = 3, @@ -749,7 +736,7 @@ obj/item/weapon/circuitboard/rdserver name = "Circuit board (Telepad)" build_path = /obj/machinery/telepad board_type = "machine" - origin_tech = "programming=4;engineering=3;materials=3;bluespace=4" + origin_tech = "programming=4;engineering=3;plasmatech=4;bluespace=4" frame_desc = "Requires 2 Bluespace Crystals, 1 Capacitor, 1 piece of cable and 1 Console Screen." req_components = list( /obj/item/weapon/ore/bluespace_crystal = 2, @@ -773,7 +760,7 @@ obj/item/weapon/circuitboard/rdserver name = "circuit board (Sleeper)" build_path = /obj/machinery/sleeper board_type = "machine" - origin_tech = "programming=3;biotech=2;engineering=3;materials=3" + origin_tech = "programming=3;biotech=2;engineering=3" frame_desc = "Requires 1 Matter Bin, 1 Manipulator, 1 piece of cable and 2 Console Screens." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, @@ -794,7 +781,7 @@ obj/item/weapon/circuitboard/rdserver name = "circuit board (Body Scanner)" build_path = /obj/machinery/bodyscanner board_type = "machine" - origin_tech = "programming=3;biotech=2;engineering=3;materials=3" + origin_tech = "programming=3;biotech=2;engineering=3" frame_desc = "Requires 1 Scanning Module, 2 pieces of cable and 2 Console Screens." req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, @@ -805,7 +792,7 @@ obj/item/weapon/circuitboard/rdserver name = "circuit board (Body Scanner Console)" build_path = /obj/machinery/body_scanconsole board_type = "machine" - origin_tech = "programming=3;biotech=2;engineering=3;materials=3" + origin_tech = "programming=3;biotech=2;engineering=3" frame_desc = "Requires 2 pieces of cable and 2 Console Screens." req_components = list( /obj/item/stack/cable_coil = 2, @@ -815,7 +802,7 @@ obj/item/weapon/circuitboard/rdserver name = "circuit board (Cryotube)" build_path = /obj/machinery/atmospherics/unary/cryo_cell board_type = "machine" - origin_tech = "programming=4;biotech=3;engineering=4" + origin_tech = "programming=4;biotech=3;engineering=4;plasmatech=3" frame_desc = "Requires 1 Matter Bin, 1 piece of cable and 4 Console Screens." req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, @@ -933,7 +920,7 @@ obj/item/weapon/circuitboard/rdserver name = "circuit board (Mining Equipment Vendor)" build_path = /obj/machinery/mineral/equipment_vendor board_type = "machine" - origin_tech = "programming=1;engineering=2" + origin_tech = "programming=1;engineering=3" req_components = list( /obj/item/weapon/stock_parts/console_screen = 1, /obj/item/weapon/stock_parts/matter_bin = 3) @@ -942,7 +929,7 @@ obj/item/weapon/circuitboard/rdserver name = "circuit board (Claw Game)" build_path = /obj/machinery/arcade/claw board_type = "machine" - origin_tech = "programming=2" + origin_tech = "programming=1" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1, @@ -953,7 +940,7 @@ obj/item/weapon/circuitboard/rdserver name = "circuit board (Prize Counter)" build_path = /obj/machinery/prize_counter board_type = "machine" - origin_tech = "programming=2;materials=2" + origin_tech = "programming=1" req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/stock_parts/manipulator = 1, @@ -964,7 +951,7 @@ obj/item/weapon/circuitboard/rdserver name = "circuit board (Virtual Gameboard)" build_path = /obj/machinery/gameboard board_type = "machine" - origin_tech = "programming=2" + origin_tech = "programming=1" req_components = list( /obj/item/weapon/stock_parts/micro_laser = 1, /obj/item/stack/cable_coil = 3, diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 789d4f81b1c..1e31207b574 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -126,12 +126,12 @@ /obj/item/weapon/circuitboard/cryopodcontrol name = "Circuit board (Cryogenic Oversight Console)" build_path = "/obj/machinery/computer/cryopod" - origin_tech = "programming=3" + origin_tech = "programming=1" /obj/item/weapon/circuitboard/robotstoragecontrol name = "Circuit board (Robotic Storage Console)" build_path = "/obj/machinery/computer/cryopod/robot" - origin_tech = "programming=3" + origin_tech = "programming=1" //Decorative structures to go alongside cryopods. /obj/structure/cryofeed diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index b39e3798ae1..fd18985d9fa 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -4,9 +4,9 @@ name = "airlock electronics" icon = 'icons/obj/doors/door_assembly.dmi' icon_state = "door_electronics" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=50, MAT_GLASS=50) - + origin_tech = "engineering=2;programming=1" req_access = list(access_engine) var/list/conf_access = null @@ -64,10 +64,10 @@ /obj/item/weapon/airlock_electronics/Topic(href, href_list) ..() - + if(usr.incapacitated() || (!ishuman(usr) && !isrobot(usr))) return 1 - + if(href_list["close"]) usr << browse(null, "window=airlock") return @@ -106,4 +106,3 @@ conf_access -= req if(!conf_access.len) conf_access = null - diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index dbbe53055a4..7ecf1f17920 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -259,8 +259,9 @@ icon = 'icons/obj/doors/door_assembly.dmi' icon_state = "door_electronics" desc = "A circuit board used in construction of firelocks." - w_class = 2 + w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=50, MAT_GLASS=50) + origin_tech = "engineering=2;programming=1" toolspeed = 1 usesound = 'sound/items/Deconstruct.ogg' diff --git a/code/game/machinery/dye_generator.dm b/code/game/machinery/dye_generator.dm index 73e590361a7..a4d70d78023 100644 --- a/code/game/machinery/dye_generator.dm +++ b/code/game/machinery/dye_generator.dm @@ -74,7 +74,7 @@ throw_speed = 4 throw_range = 7 force = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/dye_color = "#FFFFFF" /obj/item/hair_dye_bottle/New() diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index da85a864214..2c48f91b422 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -267,8 +267,9 @@ Just a object used in constructing fire alarms icon = 'icons/obj/doors/door_assembly.dmi' 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 + w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=50, MAT_GLASS=50) + origin_tech = "engineering=2;programming=1" toolspeed = 1 usesound = 'sound/items/Deconstruct.ogg' diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm index 3abbcef84ae..5ce444bcc09 100644 --- a/code/game/machinery/holosign.dm +++ b/code/game/machinery/holosign.dm @@ -36,7 +36,7 @@ /obj/machinery/holosign_switch name = "holosign switch" icon = 'icons/obj/power.dmi' - icon_state = "light1" + icon_state = "light0" desc = "A remote control switch for holosign." var/id = null var/active = 0 diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 514b5459973..901ea27a7df 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -404,8 +404,6 @@ Class Procs: on_deconstruction() spawn_frame() for(var/obj/item/I in component_parts) - if(I.reliability != 100 && crit_fail) - I.crit_fail = 1 I.forceMove(loc) qdel(src) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 6040f72ab6b..65cd281340c 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -607,7 +607,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co desc = "An issue of The Griffon, the newspaper circulating aboard Nanotrasen Space Stations." icon = 'icons/obj/bureaucracy.dmi' icon_state = "newspaper" - w_class = 2 //Let's make it fit in trashbags! + w_class = WEIGHT_CLASS_SMALL //Let's make it fit in trashbags! attack_verb = list("bapped") var/screen = 0 var/pages = 0 diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 5bd7861623b..c83d32e7ac7 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -49,7 +49,7 @@ icon = 'icons/obj/pipe-item.dmi' icon_state = "simple" item_state = "buildpipe" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL level = 2 var/flipped = 0 @@ -635,7 +635,7 @@ icon = 'icons/obj/pipe-item.dmi' icon_state = "meter" item_state = "buildpipe" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY /obj/item/pipe_meter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params) ..() @@ -656,7 +656,7 @@ icon = 'icons/obj/stationobjs.dmi' icon_state = "gsensor0" item_state = "buildpipe" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY /obj/item/pipe_gsensor/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) ..() diff --git a/code/game/machinery/programmable_unloader.dm b/code/game/machinery/programmable_unloader.dm index c86d745c05a..6b6b1938de9 100644 --- a/code/game/machinery/programmable_unloader.dm +++ b/code/game/machinery/programmable_unloader.dm @@ -551,7 +551,7 @@ name = "Circuit board (Programmable Unloader)" build_path = "/obj/machinery/programmable" board_type = "machine" - origin_tech = "engineering=3;programming=6" + origin_tech = "engineering=1;programming=2" frame_desc = "Requires 2 Manipulators, 1 Scanning Module, 1 Cable." req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 8fb2d173b6f..10f6fc1c8c5 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -192,8 +192,8 @@ icon = 'icons/obj/assemblies.dmi' icon_state = "bombcore" item_state = "eshield0" - w_class = 3 - origin_tech = "syndicate=6;combat=5" + w_class = WEIGHT_CLASS_NORMAL + origin_tech = "syndicate=5;combat=6" burn_state = FLAMMABLE //Burnable (but the casing isn't) var/adminlog = null @@ -296,7 +296,7 @@ /obj/item/weapon/bombcore/miniature name = "small bomb core" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/weapon/bombcore/miniature/detonate() explosion(src.loc,1,2,4,flame_range = 2) //Identical to a minibomb @@ -310,8 +310,8 @@ icon = 'icons/obj/assemblies.dmi' icon_state = "bigred" item_state = "electronic" - w_class = 1 - origin_tech = "syndicate=2" + w_class = WEIGHT_CLASS_TINY + origin_tech = "syndicate=3" var/cooldown = 0 var/detonated = 0 var/existant = 0 @@ -335,4 +335,4 @@ detonated = 0 existant = 0 cooldown = 1 - spawn(30) cooldown = 0 \ No newline at end of file + spawn(30) cooldown = 0 diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index db436bfb772..d730ca57529 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -68,8 +68,6 @@ // Drop all the component stuff if(component_parts) for(var/obj/I in component_parts) - if(I.reliability != 100 && crit_fail) - I.crit_fail = 1 I.loc = src.loc else // If the machine wasn't made during runtime, probably doesn't have components: diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 1a901f4a71e..a08f4bea77a 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -157,10 +157,10 @@ log_message("Toggled zoom mode.") occupant_message("Zoom mode [zoom?"en":"dis"]abled.") if(zoom) - occupant.client.view = 12 + occupant.client.AddViewMod("mecha", 12) to_chat(occupant, sound('sound/mecha/imag_enh.ogg',volume=50)) else - occupant.client.view = initial(occupant.client.view) + occupant.client.RemoveViewMod("mecha") diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index c60a560d19b..98e7b6f342d 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -1,4 +1,3 @@ -//TODO: Add critfail checks and reliability //DO NOT ADD MECHA PARTS TO THE GAME WITH THE DEFAULT "SPRITE ME" SPRITE! //I'm annoyed I even have to tell you this! SPRITE FIRST, then commit. @@ -7,7 +6,7 @@ icon = 'icons/mecha/mecha_equipment.dmi' icon_state = "mecha_equip" force = 5 - origin_tech = "materials=2" + origin_tech = "materials=2;engineering=2" var/equip_cooldown = 0 var/equip_ready = 1 var/energy_drain = 0 diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index 6146e326023..3b1b919bde6 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -110,7 +110,6 @@ name = "exosuit mining scanner" desc = "Equipment for engineering and combat exosuits. It will automatically check surrounding rock for useful minerals." icon_state = "mecha_analyzer" - origin_tech = "materials=3;engineering=2" selectable = 0 equip_cooldown = 30 var/scanning = 0 diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 3f60c56a952..2e9c75510f4 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -7,7 +7,7 @@ name = "mounted teleporter" desc = "An exosuit module that allows exosuits to teleport to any position in view." icon_state = "mecha_teleport" - origin_tech = "bluespace=10" + origin_tech = "bluespace=7" equip_cooldown = 150 energy_drain = 8000 range = RANGED @@ -25,7 +25,7 @@ /obj/item/mecha_parts/mecha_equipment/teleporter/precise name = "upgraded teleporter" desc = "An exosuit module that allows exosuits to teleport to any position in view. This is the high-precision, energy-efficient version." - origin_tech = "bluespace=13" + origin_tech = "bluespace=7" energy_drain = 1000 tele_precision = 1 @@ -36,7 +36,7 @@ name = "mounted wormhole generator" desc = "An exosuit module that allows generating of small quasi-stable wormholes." icon_state = "mecha_wholegen" - origin_tech = "bluespace=3" + origin_tech = "bluespace=4;magnets=4;plasmatech=2" equip_cooldown = 50 energy_drain = 300 range = RANGED @@ -82,7 +82,7 @@ name = "mounted gravitational catapult" desc = "An exosuit mounted Gravitational Catapult." icon_state = "mecha_teleport" - origin_tech = "bluespace=2;magnets=3" + origin_tech = "bluespace=3;magnets=3;engineering=4" equip_cooldown = 10 energy_drain = 100 range = MELEE|RANGED @@ -145,7 +145,7 @@ name = "Armor Booster Module (Close Combat Weaponry)" desc = "Boosts exosuit armor against armed melee attacks. Requires energy to operate." icon_state = "mecha_abooster_ccw" - origin_tech = "materials=3" + origin_tech = "materials=4;combat=4" equip_cooldown = 10 energy_drain = 50 range = 0 @@ -163,7 +163,7 @@ name = "Armor Booster Module (Ranged Weaponry)" desc = "Boosts exosuit armor against ranged attacks. Completely blocks taser shots. Requires energy to operate." icon_state = "mecha_abooster_proj" - origin_tech = "materials=4" + origin_tech = "materials=4;combat=3;engineering=3" equip_cooldown = 10 energy_drain = 50 range = 0 @@ -183,7 +183,7 @@ name = "Repair Droid" desc = "Automated repair droid. Scans exosuit for damage and repairs it. Can fix almost all types of external or internal damage." icon_state = "repair_droid" - origin_tech = "magnets=3;programming=3" + origin_tech ="magnets=3;programming=3;engineering=4" equip_cooldown = 20 energy_drain = 50 range = 0 @@ -490,4 +490,4 @@ /obj/item/mecha_parts/mecha_equipment/generator/nuclear/process() if(..()) for(var/mob/living/carbon/M in view(chassis)) - M.apply_effect((rad_per_cycle * 3),IRRADIATE,0) \ No newline at end of file + M.apply_effect((rad_per_cycle * 3),IRRADIATE,0) diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 7a0e388b39e..81fba15d1e8 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -188,7 +188,7 @@ name = "Mounted RCD" desc = "An exosuit-mounted Rapid Construction Device. (Can be attached to: Any exosuit)" icon_state = "mecha_rcd" - origin_tech = "materials=4;bluespace=3;magnets=4;powerstorage=4" + origin_tech = "materials=4;bluespace=3;magnets=4;powerstorage=4;engineering=4" equip_cooldown = 10 energy_drain = 250 range = MELEE|RANGED @@ -287,7 +287,7 @@ name = "mounted MRCD" desc = "An exosuit-mounted Mime Rapid Construction Device. (Can be attached to: Reticence)" icon_state = "mecha_rcd" - origin_tech = "materials=4;bluespace=3;magnets=4;powerstorage=4" + origin_tech = "materials=4;bluespace=3;magnets=4;powerstorage=4;engineering=4" equip_cooldown = 10 energy_drain = 250 range = MELEE|RANGED diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 5fea88f278f..77bcc4c1966 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -70,12 +70,14 @@ equip_cooldown = 8 name = "CH-PS \"Firedart\" Laser" icon_state = "mecha_laser" + origin_tech = "magnets=3;combat=3;engineering=3" energy_drain = 30 projectile = /obj/item/projectile/beam fire_sound = 'sound/weapons/Laser.ogg' /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/disabler name = "CH-PD Disabler" + origin_tech = "combat=3" projectile = /obj/item/projectile/beam/disabler projectiles_per_shot = 2 projectile_delay = 1 @@ -84,6 +86,7 @@ equip_cooldown = 10 name = "CH-LC \"Solaris\" Laser Cannon" icon_state = "mecha_laser" + origin_tech = "magnets=4;combat=4;engineering=3" energy_drain = 60 projectile = /obj/item/projectile/beam/laser/heavylaser fire_sound = 'sound/weapons/lasercannonfire.ogg' @@ -92,6 +95,7 @@ equip_cooldown = 40 name = "mkIV Ion Heavy Cannon" icon_state = "mecha_ion" + origin_tech = "materials=4;combat=5;magnets=4" energy_drain = 120 projectile = /obj/item/projectile/ion fire_sound = 'sound/weapons/Laser.ogg' @@ -101,7 +105,7 @@ name = "P-X Tesla Cannon" desc = "A weapon for combat exosuits. Fires bolts of electricity similar to the experimental tesla engine" icon_state = "mecha_laser" - origin_tech = "materials=4;combat=5;magnets=4" + origin_tech = "materials=4;engineering=4;combat=6;magnets=6" energy_drain = 500 projectile = /obj/item/projectile/energy/shock_revolver fire_sound = 'sound/magic/lightningbolt.ogg' @@ -126,7 +130,7 @@ name = "ZFI Immolation Beam Gun" desc = "A weapon for combat exosuits. Fires beams of extreme heat that set targets on fire." icon_state = "mecha_laser" - origin_tech = "materials=4;combat=4;magnets=3;plasmatech=2" + origin_tech = "materials=4;engineering=4;combat=6;magnets=6" energy_drain = 80 projectile = /obj/item/projectile/beam/immolator fire_sound = 'sound/weapons/laser3.ogg' @@ -170,6 +174,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser name = "PBT \"Pacifier\" Mounted Taser" icon_state = "mecha_taser" + origin_tech = "combat=3" energy_drain = 20 equip_cooldown = 8 projectile = /obj/item/projectile/energy/electrode @@ -270,6 +275,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine name = "FNX-66 Carbine" icon_state = "mecha_carbine" + origin_tech = "materials=4;combat=4" equip_cooldown = 5 projectile = /obj/item/projectile/bullet/incendiary/shell/dragonsbreath fire_sound = 'sound/weapons/Gunshot.ogg' @@ -294,6 +300,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot name = "LBX AC 10 \"Scattershot\"" icon_state = "mecha_scatter" + origin_tech = "combat=4" equip_cooldown = 20 projectile = /obj/item/projectile/bullet/midbullet fire_sound = 'sound/weapons/Gunshot.ogg' @@ -305,6 +312,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg name = "Ultra AC 2" icon_state = "mecha_uac2" + origin_tech = "combat=4" equip_cooldown = 10 projectile = /obj/item/projectile/bullet/weakbullet3 fire_sound = 'sound/weapons/Gunshot.ogg' @@ -321,6 +329,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack name = "SRM-8 Light Missile Rack" icon_state = "mecha_missilerack" + origin_tech = "combat=5;materials=4;engineering=4" projectile = /obj/item/missile fire_sound = 'sound/effects/bang.ogg' projectiles = 8 @@ -373,6 +382,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang name = "SGL-6 Grenade Launcher" icon_state = "mecha_grenadelnchr" + origin_tech = "combat=4;engineering=4" projectile = /obj/item/weapon/grenade/flashbang fire_sound = 'sound/effects/bang.ogg' projectiles = 6 @@ -398,6 +408,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang//Because I am a heartless bastard -Sieve name = "SOB-3 Grenade Launcher" desc = "A weapon for combat exosuits. Launches primed clusterbangs. You monster." + origin_tech = "combat=4;materials=4" projectiles = 3 projectile = /obj/item/weapon/grenade/clusterbuster projectile_energy_cost = 1600 //getting off cheap seeing as this is 3 times the flashbangs held in the grenade launcher. @@ -504,7 +515,7 @@ icon_state = "mecha_plasmacutter" item_state = "plasmacutter" energy_drain = 30 - origin_tech = "materials=3;combat=2;powerstorage=3;plasmatech=3" + origin_tech = "materials=3;plasmatech=4;engineering=3" projectile = /obj/item/projectile/plasma/adv/mech fire_sound = 'sound/weapons/laser.ogg' diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index cd20b68f10d..b7aadbaae26 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -9,6 +9,7 @@ idle_power_usage = 20 active_power_usage = 5000 var/time_coeff = 1 + var/component_coeff = 1 var/list/resources = list( MAT_METAL=0, MAT_GLASS=0, @@ -77,6 +78,12 @@ T += M.rating res_max_amount = (187000+(T * 37500)) + //resources adjustment coefficient (1 -> 0.85 -> 0.7 -> 0.55) + T = 1.15 + for(var/obj/item/weapon/stock_parts/micro_laser/Ma in component_parts) + T -= Ma.rating*0.15 + component_coeff = T + //building time adjustment coefficient (1 -> 0.8 -> 0.6) T = -1 for(var/obj/item/weapon/stock_parts/manipulator/Ml in component_parts) @@ -246,7 +253,7 @@ return /obj/machinery/mecha_part_fabricator/proc/get_resource_cost_w_coeff(datum/design/D, resource, roundto = 1) - return round(D.materials[resource], roundto) + return round(D.materials[resource]*component_coeff, roundto) /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, roundto) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 2fa9b3af00f..1daa7300b1d 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -602,7 +602,6 @@ WR.crowbar_salvage += E E.forceMove(WR) E.equip_ready = 1 - E.reliability = round(rand(E.reliability/3,E.reliability)) else E.forceMove(loc) qdel(E) @@ -1310,7 +1309,7 @@ dir = dir_in if(L && L.client) - L.client.view = world.view + L.client.RemoveViewMod("mecha") ///////////////////////// ////// Access stuff ///// diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 2bb73e2c636..1e2868673c0 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -71,7 +71,7 @@ desc = "Device used to transmit exosuit data." icon = 'icons/obj/device.dmi' icon_state = "motion2" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL origin_tech = "programming=2;magnets=2" var/ai_beacon = FALSE //If this beacon allows for AI control. Exists to avoid using istype() on checking. diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 9250dfa4839..ce22dd723f9 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -6,9 +6,9 @@ name = "mecha part" icon = 'icons/mecha/mech_construct.dmi' icon_state = "blank" - w_class = 6 + w_class = WEIGHT_CLASS_GIGANTIC flags = CONDUCT - origin_tech = "programming=2;materials=2" + origin_tech = "programming=2;materials=2;engineering=2" /obj/item/mecha_parts/chassis @@ -47,25 +47,21 @@ 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" /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" /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" /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" ///////// Gygax @@ -80,40 +76,40 @@ name="Gygax Torso" 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" + origin_tech = "programming=2;materials=4;biotech=3;engineering=3" /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" + origin_tech = "programming=2;materials=4;magnets=3;engineering=3" /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" + origin_tech = "programming=2;materials=4;engineering=3" /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" + origin_tech = "programming=2;materials=4;engineering=3" /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" + origin_tech = "programming=2;materials=4;engineering=3" /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" + origin_tech = "programming=2;materials=4;engineering=3" /obj/item/mecha_parts/part/gygax_armour name="Gygax Armour Plates" icon_state = "gygax_armour" - origin_tech = "materials=6;combat=4;engineering=5" + origin_tech = "materials=6;combat=4;engineering=4" //////////// Durand @@ -158,7 +154,7 @@ /obj/item/mecha_parts/part/durand_armor name="Durand Armour Plates" icon_state = "durand_armor" - origin_tech = "materials=5;combat=4;engineering=5" + origin_tech = "materials=5;combat=4;engineering=4" @@ -278,7 +274,6 @@ /obj/item/mecha_parts/chassis/phazon name = "Phazon Chassis" - origin_tech = "materials=6" New() ..() @@ -287,38 +282,38 @@ /obj/item/mecha_parts/part/phazon_torso name="Phazon Torso" icon_state = "phazon_harness" - origin_tech = "programming=5;materials=6;bluespace=5;powerstorage=5" + origin_tech = "programming=4;materials=4;bluespace=4;plasmatech=5" /obj/item/mecha_parts/part/phazon_head name="Phazon Head" icon_state = "phazon_head" - origin_tech = "programming=4;materials=5;magnets=5" + origin_tech = "programming=3;materials=3;magnets=3" /obj/item/mecha_parts/part/phazon_left_arm name="Phazon Left Arm" icon_state = "phazon_l_arm" - origin_tech = "materials=5;bluespace=2;magnets=2" + origin_tech = "materials=3;bluespace=3;magnets=3" /obj/item/mecha_parts/part/phazon_right_arm name="Phazon Right Arm" icon_state = "phazon_r_arm" - origin_tech = "materials=5;bluespace=2;magnets=2" + origin_tech = "materials=3;bluespace=3;magnets=3" /obj/item/mecha_parts/part/phazon_left_leg name="Phazon Left Leg" icon_state = "phazon_l_leg" - origin_tech = "materials=5;bluespace=3;magnets=3" + origin_tech = "materials=3;bluespace=3;magnets=3" /obj/item/mecha_parts/part/phazon_right_leg name="Phazon Right Leg" icon_state = "phazon_r_leg" - origin_tech = "materials=5;bluespace=3;magnets=3" + origin_tech = "materials=3;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" - origin_tech = "materials=6;bluespace=5;magnets=5" + origin_tech = "materials=4;bluespace=4;plasmatech=5" ///////// Odysseus /obj/item/mecha_parts/chassis/odysseus @@ -331,7 +326,6 @@ /obj/item/mecha_parts/part/odysseus_head name="Odysseus Head" icon_state = "odysseus_head" - origin_tech = "programming=3;materials=2" /obj/item/mecha_parts/part/odysseus_torso name="Odysseus Torso" @@ -343,25 +337,21 @@ 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" /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" /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" /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" /*/obj/item/mecha_parts/part/odysseus_armour name="Odysseus Carapace" @@ -379,13 +369,13 @@ board_type = "other" flags = CONDUCT force = 5.0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throwforce = 5.0 throw_speed = 3 throw_range = 15 /obj/item/weapon/circuitboard/mecha/ripley - origin_tech = "programming=3" + origin_tech = "programming=2" /obj/item/weapon/circuitboard/mecha/ripley/peripherals name = "Circuit board (Ripley Peripherals Control module)" @@ -396,7 +386,7 @@ icon_state = "mainboard" /obj/item/weapon/circuitboard/mecha/gygax - origin_tech = "programming=4" + origin_tech = "programming=4;combat=3;engineering=3" /obj/item/weapon/circuitboard/mecha/gygax/peripherals name = "Circuit board (Gygax Peripherals Control module)" @@ -412,7 +402,7 @@ icon_state = "mainboard" /obj/item/weapon/circuitboard/mecha/durand - origin_tech = "programming=4" + origin_tech = "programming=4;combat=3;engineering=3" /obj/item/weapon/circuitboard/mecha/durand/peripherals name = "Circuit board (Durand Peripherals Control module)" @@ -421,14 +411,14 @@ /obj/item/weapon/circuitboard/mecha/durand/targeting name = "Circuit board (Durand Weapon Control and Targeting module)" icon_state = "mcontroller" - origin_tech = "programming=4;combat=4" + origin_tech = "programming=4;combat=4;engineering=3" /obj/item/weapon/circuitboard/mecha/durand/main name = "Circuit board (Durand Central Control module)" icon_state = "mainboard" /obj/item/weapon/circuitboard/mecha/phazon - origin_tech = "programming=4" + origin_tech = "programming=5;plasmatech=4" /obj/item/weapon/circuitboard/mecha/phazon/peripherals name = "Circuit board (Phazon Peripherals Control module)" @@ -437,14 +427,13 @@ /obj/item/weapon/circuitboard/mecha/phazon/targeting name = "Circuit board (Phazon Weapon Control and Targeting module)" icon_state = "mcontroller" - origin_tech = "programming=4;combat=4" /obj/item/weapon/circuitboard/mecha/phazon/main name = "Circuit board (Phazon Central Control module)" icon_state = "mainboard" /obj/item/weapon/circuitboard/mecha/honker - origin_tech = "programming=4" + origin_tech = "programming=3;engineering=3" /obj/item/weapon/circuitboard/mecha/honker/peripherals name = "Circuit board (H.O.N.K Peripherals Control module)" @@ -459,7 +448,7 @@ icon_state = "mainboard" /obj/item/weapon/circuitboard/mecha/reticence - origin_tech = "programming=4" + origin_tech = "programming=3;engineering=3" /obj/item/weapon/circuitboard/mecha/reticence/peripherals name = "circuit board (Reticence Peripherals Control module)" @@ -474,7 +463,7 @@ icon_state = "mainboard" /obj/item/weapon/circuitboard/mecha/odysseus - origin_tech = "programming=3" + origin_tech = "programming=3;biotech=3" /obj/item/weapon/circuitboard/mecha/odysseus/peripherals name = "Circuit board (Odysseus Peripherals Control module)" @@ -487,5 +476,3 @@ /obj/item/weapon/circuitboard/mecha/pod name = "Circuit board (Space Pod Mainboard)" icon_state = "mainboard" - - diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 89baf450720..adf46ef47e1 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -53,7 +53,7 @@ /obj/effect/anomaly/grav/New() ..() - aSignal.origin_tech = "magnets=5;powerstorage=4" + aSignal.origin_tech = "magnets=7" /obj/effect/anomaly/grav/anomalyEffect() ..() @@ -89,7 +89,7 @@ /obj/effect/anomaly/flux/New() ..() - aSignal.origin_tech = "powerstorage=6;programming=4;plasmatech=4" + aSignal.origin_tech = "powerstorage=7" ///////////////////// @@ -101,7 +101,7 @@ /obj/effect/anomaly/bluespace/New() ..() - aSignal.origin_tech = "bluespace=5;magnets=5;powerstorage=3" + aSignal.origin_tech = "bluespace=7" /obj/effect/anomaly/bluespace/Bumped(atom/A) if(isliving(A)) @@ -116,7 +116,7 @@ /obj/effect/anomaly/pyro/New() ..() - aSignal.origin_tech = "plasmatech=5;powerstorage=4;biotech=6" + aSignal.origin_tech = "plasmatech=7" /obj/effect/anomaly/pyro/anomalyEffect() ..() @@ -133,7 +133,7 @@ /obj/effect/anomaly/bhole/New() ..() - aSignal.origin_tech = "materials=5;combat=4;engineering=4" + aSignal.origin_tech = "engineering=7" /obj/effect/anomaly/bhole/anomalyEffect() ..() @@ -180,4 +180,4 @@ //Damaging the turf if( T && istype(T,/turf/simulated) && prob(turf_removal_chance) ) T.ex_act(ex_act_force) - return \ No newline at end of file + return diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index f641cb26c32..9af07df67b4 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -162,6 +162,8 @@ G.endurance -= damage_to_do G.CheckEndurance() return + else if(I.sharp) + damage_to_do = I.force * 3 // wirecutter: 6->18, knife 10->30, hatchet 12->36 if(I.damtype != STAMINA) endurance -= damage_to_do CheckEndurance() diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 7045a06a875..ebfd177959e 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -198,3 +198,27 @@ /obj/item/weapon/gun/energy/kinetic_accelerator = 1, /obj/item/pizzabox = 3, ) + +/obj/effect/spawner/lootdrop/three_course_meal + name = "three course meal spawner" + lootcount = 3 + lootdoubles = FALSE + var/soups = list( + /obj/item/weapon/reagent_containers/food/snacks/beetsoup, + /obj/item/weapon/reagent_containers/food/snacks/stew, + /obj/item/weapon/reagent_containers/food/snacks/hotchili, + /obj/item/weapon/reagent_containers/food/snacks/nettlesoup, + /obj/item/weapon/reagent_containers/food/snacks/meatballsoup) + var/salads = list( + /obj/item/weapon/reagent_containers/food/snacks/herbsalad, + /obj/item/weapon/reagent_containers/food/snacks/validsalad, + /obj/item/weapon/reagent_containers/food/snacks/aesirsalad) + var/mains = list( + /obj/item/weapon/reagent_containers/food/snacks/enchiladas, + /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat, + /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger, + /obj/item/weapon/reagent_containers/food/snacks/superbiteburger) + +/obj/effect/spawner/lootdrop/three_course_meal/New() + loot = list(pick(soups) = 1,pick(salads) = 1,pick(mains) = 1) + . = ..() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index f56ada78145..00eb1bd6884 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -20,7 +20,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d var/health = null var/hitsound = null var/usesound = null - var/w_class = 3 + var/w_class = WEIGHT_CLASS_NORMAL var/slot_flags = 0 //This is used to determine on which slots an item can fit. pass_flags = PASSTABLE pressure_resistance = 3 @@ -146,16 +146,18 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d /obj/item/examine(mob/user, var/distance = -1) var/size switch(src.w_class) - if(1.0) + if(WEIGHT_CLASS_TINY) size = "tiny" - if(2.0) + if(WEIGHT_CLASS_SMALL) size = "small" - if(3.0) + if(WEIGHT_CLASS_NORMAL) size = "normal-sized" - if(4.0) + if(WEIGHT_CLASS_BULKY) size = "bulky" - if(5.0) + if(WEIGHT_CLASS_HUGE) size = "huge" + if(WEIGHT_CLASS_GIGANTIC) + size = "gigantic" . = ..(user, distance, "", "It is a [size] item.") @@ -167,9 +169,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d var/list/techlvls = params2list(origin_tech) for(var/T in techlvls) //This needs to use the better names. msg += "Tech: [CallTechName(T)] | Magnitude: [techlvls[T]]
" - msg += "Research reliability: [reliability]%
" - if(crit_fail) - msg += "Critical failure detected in subject!
" else msg += "No tech origins detected.
" @@ -519,7 +518,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d /obj/item/throw_impact(atom/A) if(A && !qdeleted(A)) var/itempush = 1 - if(w_class < 4) + if(w_class < WEIGHT_CLASS_BULKY) itempush = 0 // too light to push anything return A.hitby(src, 0, itempush) diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index 3cc0f9b6023..315eacb8f95 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -51,7 +51,7 @@ desc = "This is a one-use permit that allows the user to officially declare a built room as new addition to the station." fluffnotice = "Nanotrasen Engineering requires all on-station construction projects to be approved by a head of staff, as detailed in Nanotrasen Company Regulation 512-C (Mid-Shift Modifications to Company Property). \ By submitting this form, you accept any fines, fees, or personal injury/death that may occur during construction." - w_class = 1 + w_class = WEIGHT_CLASS_TINY /obj/item/areaeditor/permit/attack_self(mob/user) . = ..() @@ -76,7 +76,7 @@ icon = 'icons/obj/items.dmi' icon_state = "blueprints" fluffnotice = "Property of Nanotrasen. For heads of staff only. Store in high-secure storage." - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL var/list/showing = list() var/client/viewing diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index c52aa0e1792..4108fe85ddd 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -5,7 +5,7 @@ desc = "A folded bag designed for the storage and transportation of cadavers." icon = 'icons/obj/bodybag.dmi' icon_state = "bodybag_folded" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL attack_self(mob/user) var/obj/structure/closet/body_bag/R = new /obj/structure/closet/body_bag(user.loc) @@ -136,4 +136,4 @@ to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]") else to_chat(user, "Access denied.") - return \ No newline at end of file + return diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index 46ee95d119b..801f74770ba 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/candle.dmi' icon_state = "candle1" item_state = "candle1" - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/wax = 200 var/lit = 0 var/infinite = 0 @@ -91,4 +91,4 @@ /obj/item/candle/eternal desc = "A candle. This one seems to have an odd quality about the wax." - infinite = 1 \ No newline at end of file + infinite = 1 diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm new file mode 100644 index 00000000000..d815e8c262f --- /dev/null +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -0,0 +1,188 @@ +//Cardboard cutouts! They're man-shaped and can be colored with a crayon to look like a human in a certain outfit, although it's limited, discolored, and obvious to more than a cursory glance. +/obj/item/cardboard_cutout + name = "cardboard cutout" + desc = "A vaguely humanoid cardboard cutout. It's completely blank." + icon = 'icons/obj/cardboard_cutout.dmi' + icon_state = "cutout_basic" + burn_state = FLAMMABLE + w_class = WEIGHT_CLASS_BULKY + var/list/possible_appearances = list("Assistant", "Clown", "Mime", + "Traitor", "Nuke Op", "Cultist", "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Swarmer", + "Deathsquad Officer", "Ian", "Slaughter Demon", + "Laughter Demon", "Xenomorph Maid", "Security Officer", "Terror Spider") + var/pushed_over = FALSE //If the cutout is pushed over and has to be righted + var/deceptive = FALSE //If the cutout actually appears as what it portray and not a discolored version + var/lastattacker = null + +/obj/item/cardboard_cutout/attack_hand(mob/living/user) + if(user.a_intent == I_HELP || pushed_over) + return ..() + user.visible_message("[user] pushes over [src]!", "You push over [src]!") + playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) + push_over() + +/obj/item/cardboard_cutout/proc/push_over() + name = initial(name) + desc = "[initial(desc)] It's been pushed over." + icon = initial(icon) + icon_state = "cutout_pushed_over" + color = initial(color) + alpha = initial(alpha) + pushed_over = TRUE + +/obj/item/cardboard_cutout/attack_self(mob/living/user) + if(!pushed_over) + return + to_chat(user, "You right [src].") + desc = initial(desc) + icon = initial(icon) + icon_state = initial(icon_state) //This resets a cutout to its blank state - this is intentional to allow for resetting + pushed_over = FALSE + +/obj/item/cardboard_cutout/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/toy/crayon)) + change_appearance(I, user) + return + // Why yes, this does closely resemble mob and object attack code. + if(I.flags & NOBLUDGEON) + return + if(!I.force) + playsound(loc, 'sound/weapons/tap.ogg', 20, 1, -1) + else if(I.hitsound) + playsound(loc, I.hitsound, 20, 1, -1) + + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + + if(I.force) + user.visible_message("[user] has hit \ + [src] with [I]!", "You hit [src] \ + with [I]!") + + if(prob(I.force)) + push_over() + +/obj/item/cardboard_cutout/bullet_act(obj/item/projectile/P) + visible_message("[src] has been hit by [P]!") + playsound(src, 'sound/weapons/slice.ogg', 50, 1) + if(prob(P.damage)) + push_over() + +/obj/item/cardboard_cutout/proc/change_appearance(obj/item/toy/crayon/crayon, mob/living/user) + if(!crayon || !user) + return + if(istype(crayon, /obj/item/toy/crayon/spraycan)) + var/obj/item/toy/crayon/spraycan/can = crayon + if(can.capped) + to_chat(user, "The cap is on [src] remove it first!") + return + if(pushed_over) + to_chat(user, "Right [src] first!") + return + var/new_appearance = input(user, "Choose a new appearance for [src].", "26th Century Deception") as null|anything in possible_appearances + if(!new_appearance || !crayon) + return + if(!do_after(user, 10, FALSE, src, TRUE)) + return + user.visible_message("[user] gives [src] a new look.", "Voila! You give [src] a new look.") + alpha = 255 + icon = initial(icon) + if(!deceptive) + color = "#FFD7A7" + switch(new_appearance) + if("Assistant") + name = "[pick(first_names_male)] [pick(last_names)]" + desc = "A cardboard cutout of an assistant." + icon_state = "cutout_greytide" + if("Clown") + name = pick(clown_names) + desc = "A cardboard cutout of a clown. You get the feeling that it should be in a corner." + icon_state = "cutout_clown" + if("Mime") + name = pick(mime_names) + desc = "...(A cardboard cutout of a mime.)" + icon_state = "cutout_mime" + if("Traitor") + name = "[pick("Unknown", "Captain")]" + desc = "A cardboard cutout of a traitor." + icon_state = "cutout_traitor" + if("Nuke Op") + name = "[pick("Unknown", "COMMS", "Telecomms", "AI", "stealthy op", "STEALTH", "sneakybeaky", "MEDIC", "Medic", "Gonk op")]" + desc = "A cardboard cutout of a nuclear operative." + icon_state = "cutout_fluke" + if("Cultist") + name = "Unknown" + desc = "A cardboard cutout of a cultist." + icon_state = "cutout_cultist" + //if("Clockwork Cultist") + // name = "[random_name(pick(MALE,FEMALE))]" + // desc = "A cardboard cutout of a servant of Ratvar." + // icon_state = "cutout_servant" + if("Revolutionary") + name = "Unknown" + desc = "A cardboard cutout of a revolutionary." + icon_state = "cutout_viva" + if("Wizard") + name = "[pick(wizard_first)], [pick(wizard_second)]" + desc = "A cardboard cutout of a wizard." + icon_state = "cutout_wizard" + if("Shadowling") + name = "Unknown" + desc = "A cardboard cutout of a shadowling." + icon_state = "cutout_shadowling" + if("Xenomorph") + name = "alien hunter ([rand(1, 999)])" + desc = "A cardboard cutout of a xenomorph." + icon_state = "cutout_fukken_xeno" + if(prob(10)) + alpha = 75 //Spooky sneaking! + if("Swarmer") + name = "Swarmer ([rand(1, 999)])" + desc = "A cardboard cutout of a swarmer." + icon_state = "cutout_swarmer" + //if("Ash Walker") + // name = random_name(pick(MALE,FEMALE),"Unathi") + // desc = "A cardboard cutout of an ash walker." + // icon_state = "cutout_free_antag" + if("Deathsquad Officer") + name = pick(commando_names) + desc = "A cardboard cutout of a death commando." + icon_state = "cutout_deathsquad" + if("Ian") + name = "Ian" + desc = "A cardboard cutout of the HoP's beloved corgi." + icon_state = "cutout_ian" + if("Slaughter Demon") + name = "slaughter demon" + desc = "A cardboard cutout of a slaughter demon." + icon = 'icons/mob/mob.dmi' + icon_state = "daemon" + dir = "SOUTH" + if("Laughter Demon") + name = "laughter demon" + desc = "A cardboard cutout of a laughter demon." + icon = 'icons/mob/mob.dmi' + icon_state = "bowmon" + dir = "SOUTH" + if("Xenomorph Maid") + name = "lusty xenomorph maid ([rand(1, 999)])" + desc = "A cardboard cutout of a xenomorph maid." + icon_state = "cutout_lusty" + if("Security Officer") + name = "Private Security Officer" + desc = "A cardboard cutout of a private security officer." + icon_state = "cutout_ntsec" + if("Terror Spider") + name = "Gray Terror Spider" + desc = "A cardboard cutout of a terror spider." + icon = 'icons/mob/terrorspider.dmi' + icon_state = "terror_gray" + dir = "SOUTH" + + return 1 + +/obj/item/cardboard_cutout/setDir() + dir = SOUTH + +/obj/item/cardboard_cutout/adaptive //Purchased by Syndicate agents, these cutouts are indistinguishable from normal cutouts but aren't discolored when their appearance is changed + deceptive = TRUE \ No newline at end of file diff --git a/code/game/objects/items/control_wand.dm b/code/game/objects/items/control_wand.dm index 95cf94a3a1e..0fe6cf48631 100644 --- a/code/game/objects/items/control_wand.dm +++ b/code/game/objects/items/control_wand.dm @@ -8,7 +8,7 @@ icon = 'icons/obj/device.dmi' name = "control wand" desc = "Remotely controls airlocks." - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/mode = WAND_OPEN var/region_access = 1 //See access.dm var/obj/item/weapon/card/id/ID diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 3852d67e6ff..a3d302f1326 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -7,7 +7,7 @@ desc = "A colourful crayon. Looks tasty. Mmmm..." icon = 'icons/obj/crayons.dmi' icon_state = "crayonred" - w_class = 1 + w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_BELT | SLOT_EARS attack_verb = list("attacked", "coloured") toolspeed = 1 diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index 0d02add30a3..f74d80f845e 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -3,11 +3,11 @@ icon = 'icons/obj/aicards.dmi' icon_state = "aicard" // aicard-full item_state = "electronic" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_BELT flags = NOBLUDGEON var/flush = null - origin_tech = "programming=4;materials=4" + origin_tech = "programming=3;materials=3" /obj/item/device/aicard/afterattack(atom/target, mob/user, proximity) diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm index 2839715d7d7..3bad7c09cf6 100644 --- a/code/game/objects/items/devices/autopsy.dm +++ b/code/game/objects/items/devices/autopsy.dm @@ -5,7 +5,7 @@ icon_state = "" flags = CONDUCT w_class = WEIGHT_CLASS_TINY - origin_tech = "materials=1;biotech=1" + origin_tech = "magnets=1;biotech=1" var/list/datum/autopsy_data_scanner/wdata = list() var/list/chemtraces = list() var/target_name = null diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index af745b97f1f..17fddd581e4 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -9,11 +9,11 @@ desc = "For illicit snooping through the camera network." icon = 'icons/obj/device.dmi' icon_state = "camera_bug" - w_class = 1.0 + w_class = WEIGHT_CLASS_TINY item_state = "camera_bug" throw_speed = 4 throw_range = 20 - origin_tech = "syndicate=3;engineering=1" + origin_tech = "syndicate=1;engineering=3" var/obj/machinery/camera/current = null diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index d3f13c284c1..ff7eb0ac2cc 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -7,7 +7,7 @@ throwforce = 5.0 throw_speed = 3 throw_range = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL origin_tech = "syndicate=4;magnets=4" var/can_use = 1 var/obj/effect/dummy/chameleon/active_dummy = null @@ -150,4 +150,4 @@ /obj/effect/dummy/chameleon/Destroy() master.disrupt(0) - return ..() \ No newline at end of file + return ..() diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index fefb20e90e4..e309cae9bbe 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -4,7 +4,7 @@ icon_state = "flash" item_state = "flashtool" //looks exactly like a flash (and nothing like a flashbang) throwforce = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 flags = CONDUCT diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 9ac4897c8f3..1bf736d7024 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/lighting.dmi' icon_state = "flashlight" item_state = "flashlight" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL flags = CONDUCT slot_flags = SLOT_BELT materials = list(MAT_METAL=50, MAT_GLASS=20) @@ -88,7 +88,7 @@ desc = "A pen-sized light, used by medical staff." icon_state = "penlight" item_state = "" - w_class = 1 + w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_BELT | SLOT_EARS flags = CONDUCT brightness_on = 2 @@ -109,7 +109,7 @@ item_state = "" flags = CONDUCT brightness_on = 2 - w_class = 1 + w_class = WEIGHT_CLASS_TINY // the desk lamps are a bit special /obj/item/device/flashlight/lamp @@ -118,7 +118,7 @@ icon_state = "lamp" item_state = "lamp" brightness_on = 5 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY flags = CONDUCT materials = list() on = 1 @@ -153,7 +153,7 @@ obj/item/device/flashlight/lamp/bananalamp /obj/item/device/flashlight/flare name = "flare" desc = "A red Nanotrasen issued flare. There are instructions on the side, it reads 'pull cord, make light'." - w_class = 2 + w_class = WEIGHT_CLASS_SMALL brightness_on = 8 // Made it brighter (from 7 to 8). light_color = "#ff0000" // changed colour to a more brighter red. icon_state = "flare" @@ -214,7 +214,7 @@ obj/item/device/flashlight/lamp/bananalamp /obj/item/device/flashlight/flare/torch name = "torch" desc = "A torch fashioned from some leaves and a log." - w_class = 4 + w_class = WEIGHT_CLASS_BULKY brightness_on = 7 icon_state = "torch" item_state = "torch" @@ -227,7 +227,7 @@ obj/item/device/flashlight/lamp/bananalamp icon = 'icons/obj/lighting.dmi' icon_state = "floor1" //not a slime extract sprite but... something close enough! item_state = "slime" - w_class = 1 + w_class = WEIGHT_CLASS_TINY brightness_on = 6 light_color = "#FFBF00" materials = list() @@ -243,7 +243,7 @@ obj/item/device/flashlight/lamp/bananalamp return //Bio-luminescence does not toggle. /obj/item/device/flashlight/emp - origin_tech = "magnets=4;syndicate=5" + origin_tech = "magnets=3;syndicate=1" var/emp_max_charges = 4 var/emp_cur_charges = 4 diff --git a/code/game/objects/items/devices/floor_painter.dm b/code/game/objects/items/devices/floor_painter.dm index c278a1be72a..74b119c7b62 100644 --- a/code/game/objects/items/devices/floor_painter.dm +++ b/code/game/objects/items/devices/floor_painter.dm @@ -3,37 +3,37 @@ /obj/item/device/floor_painter name = "floor painter" icon_state = "floor_painter" - + var/floor_icon var/floor_state = "floor" var/floor_dir = SOUTH - - w_class = 1 + + w_class = WEIGHT_CLASS_TINY item_state = "electronic" flags = CONDUCT slot_flags = SLOT_BELT - - var/static/list/allowed_states = list("arrival", "arrivalcorner", "bar", "barber", "blackcorner", "blue", "bluecorner", + + var/static/list/allowed_states = list("arrival", "arrivalcorner", "bar", "barber", "blackcorner", "blue", "bluecorner", "bluefull", "bluered", "blueyellow", "blueyellowfull", "bot", "brown", "browncorner", "browncornerold", "brownold", "cafeteria", "caution", "cautioncorner", "chapel", "cmo", "dark", "delivery", "escape", "escapecorner", "floor", "freezerfloor", "green", "greenblue", "greenbluefull", "greencorner", "greenfull", "greenyellow", "greenyellowfull", "grimy", "loadingarea", "neutral", "neutralcorner", "neutralfull", "orange", "orangecorner", "orangefull", "purple", "purplecorner", "purplefull", "rampbottom", "ramptop", "red", "redblue", "redbluefull", - "redcorner", "redfull", "redgreen", "redgreenfull", "redyellow", "redyellowfull", "warning", "warningcorner", "warnwhite", - "warnwhitecorner", "white", "whiteblue", "whitebluecorner", "whitebluefull", "whitebot", "whitecorner", "whitedelivery", - "whitegreen", "whitegreencorner", "whitegreenfull", "whitehall", "whitepurple", "whitepurplecorner", "whitepurplefull", - "whitered", "whiteredcorner", "whiteredfull", "whiteyellow", "whiteyellowcorner", "whiteyellowfull", "yellow", + "redcorner", "redfull", "redgreen", "redgreenfull", "redyellow", "redyellowfull", "warning", "warningcorner", "warnwhite", + "warnwhitecorner", "white", "whiteblue", "whitebluecorner", "whitebluefull", "whitebot", "whitecorner", "whitedelivery", + "whitegreen", "whitegreencorner", "whitegreenfull", "whitehall", "whitepurple", "whitepurplecorner", "whitepurplefull", + "whitered", "whiteredcorner", "whiteredfull", "whiteyellow", "whiteyellowcorner", "whiteyellowfull", "yellow", "yellowcorner", "yellowcornersiding", "yellowsiding") /obj/item/device/floor_painter/afterattack(var/atom/A, var/mob/user, proximity, params) if(!proximity) return - + var/turf/simulated/floor/plasteel/F = A if(!istype(F)) to_chat(user, "\The [src] can only be used on station flooring.") return - + F.icon_state = floor_state F.icon_regular_floor = floor_state F.dir = floor_dir @@ -60,7 +60,7 @@ Choose Direction
Direction: [dir2text(floor_dir)]
"} - + var/datum/browser/popup = new(user, "floor_painter", name, 225, 300) popup.set_content(dat) popup.open() @@ -68,7 +68,7 @@ /obj/item/device/floor_painter/Topic(href, href_list) if(..()) return - + if(href_list["choose_state"]) var/state = input("Please select a style", "[src]") as null|anything in allowed_states if(state) @@ -92,7 +92,7 @@ index = 1 floor_state = allowed_states[index] floor_dir = SOUTH - + floor_icon = icon('icons/turf/floors.dmi', floor_state, floor_dir) if(usr) attack_self(usr) diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index b172ea052f0..c8294590e3c 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -8,9 +8,8 @@ flags = CONDUCT slot_flags = SLOT_BELT 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" + w_class = WEIGHT_CLASS_SMALL //Increased to 2, because diodes are w_class 2. Conservation of matter. + origin_tech = "combat=1;magnets=2" var/energy = 5 var/max_energy = 5 var/effectchance = 33 diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 664bd07f8ad..7fa63f07eb7 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -49,7 +49,7 @@ flags = CONDUCT slot_flags = SLOT_BELT - origin_tech = "magnets=3;materials=2" + origin_tech = "magnets=3;engineering=4" var/max_uses = 20 var/uses = 0 diff --git a/code/game/objects/items/devices/machineprototype.dm b/code/game/objects/items/devices/machineprototype.dm new file mode 100644 index 00000000000..e6574d0e55a --- /dev/null +++ b/code/game/objects/items/devices/machineprototype.dm @@ -0,0 +1,7 @@ +/obj/item/device/machineprototype + name = "machine prototype" + desc = "A complicated machine prototype. You have no idea how it works." + icon = 'icons/obj/machineprototype.dmi' + icon_state = "machineprototype" + materials = list(MAT_METAL=1000, MAT_GLASS=500) + origin_tech = "engineering=6" diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index d38ac3b71ff..c59e39a2043 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -3,7 +3,7 @@ desc = "A device used to project your voice. Loudly." icon_state = "megaphone" item_state = "radio" - w_class = 1 + w_class = WEIGHT_CLASS_SMALL flags = CONDUCT var/spamcheck = 0 diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index feb288d327d..1d42bf70108 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/aicards.dmi' icon_state = "pai" item_state = "electronic" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_BELT origin_tech = "programming=2" var/request_cooldown = 5 // five seconds diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 65093361197..c02337e339a 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -5,13 +5,13 @@ desc = "A nulling power sink which drains energy from electrical systems." icon_state = "powersink0" item_state = "electronic" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY flags = CONDUCT throwforce = 5 throw_speed = 1 throw_range = 2 materials = list(MAT_METAL=750) - origin_tech = "powerstorage=3;syndicate=5" + origin_tech = "powerstorage=5;syndicate=5" var/drain_rate = 1600000 // amount of power to drain per tick var/apc_drain_rate = 50 // Max. amount drained from single APC. In Watts. var/dissipation_rate = 20000 // Passive dissipation of drained power. In Watts. diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm index 55f42587104..465d75d2b8e 100644 --- a/code/game/objects/items/devices/radio/beacon.dm +++ b/code/game/objects/items/devices/radio/beacon.dm @@ -53,7 +53,7 @@ /obj/item/device/radio/beacon/syndicate name = "suspicious beacon" desc = "A label on it reads: Activate to have a singularity beacon teleported to your location." - origin_tech = "bluespace=1;syndicate=7" + origin_tech = "bluespace=6;syndicate=5" syndicate = 1 /obj/item/device/radio/beacon/syndicate/attack_self(mob/user as mob) @@ -67,7 +67,7 @@ /obj/item/device/radio/beacon/syndicate/bomb name = "suspicious beacon" desc = "A label on it reads: Warning: Activating this device will send a high-ordinance explosive to your location." - origin_tech = "bluespace=1;syndicate=7" + origin_tech = "bluespace=5;syndicate=5" /obj/item/device/radio/beacon/syndicate/bomb/attack_self(mob/user as mob) if(user) diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 35848bdc087..7c01d03ca36 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -6,7 +6,7 @@ frequency = 1449 flags = CONDUCT slot_flags = SLOT_BACK - w_class = 5 + w_class = WEIGHT_CLASS_HUGE materials = list(MAT_METAL=10000, MAT_GLASS=2500) var/code = 2 diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index 7350f3965cc..cfbde361db1 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -5,6 +5,8 @@ icon = 'icons/obj/radio.dmi' icon_state = "cypherkey" item_state = "" + w_class = WEIGHT_CLASS_TINY + origin_tech = "engineering=2;bluespace=1" var/translate_binary = 0 var/translate_hive = 0 var/syndie = 0 @@ -18,7 +20,7 @@ /obj/item/device/encryptionkey/syndicate icon_state = "cypherkey" channels = list("Syndicate" = 1) - origin_tech = "syndicate=3" + origin_tech = "syndicate=1;engineering=3;bluespace=2" syndie = 1 //Signifies that it de-crypts Syndicate transmissions /obj/item/device/encryptionkey/syndteam @@ -32,7 +34,7 @@ desc = "An encryption key for a radio headset. To access the binary channel, use :b." icon_state = "cypherkey" translate_binary = 1 - origin_tech = "syndicate=3" + origin_tech = "syndicate=3;engineering=4;bluespace=3" /obj/item/device/encryptionkey/headset_sec name = "Security Radio Encryption Key" @@ -147,4 +149,4 @@ name = "AI Integrated Encryption Key" desc = "Integrated encryption key" icon_state = "cap_cypherkey" - channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1, "AI Private" = 1) \ No newline at end of file + channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1, "AI Private" = 1) diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 43289678591..1e24f966cf3 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -3,7 +3,7 @@ desc = "Talk through this." icon_state = "intercom" anchored = 1 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY canhear_range = 2 flags = CONDUCT var/number = 0 @@ -231,8 +231,9 @@ icon = 'icons/obj/doors/door_assembly.dmi' icon_state = "door_electronics" desc = "Looks like a circuit. Probably is." - w_class = 2 + w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=50, MAT_GLASS=50) + origin_tech = "engineering=2;programming=1" toolspeed = 1 usesound = 'sound/items/Deconstruct.ogg' diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index c14fba68606..99096ac2649 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -44,7 +44,7 @@ var/global/list/default_medbay_channels = list( slot_flags = SLOT_BELT throw_speed = 2 throw_range = 9 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=75) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 8c747a26d97..e31c49f9392 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -14,7 +14,7 @@ REAGENT SCANNER icon_state = "t-ray0" var/on = 0 slot_flags = SLOT_BELT - w_class = 2 + w_class = WEIGHT_CLASS_SMALL item_state = "electronic" materials = list(MAT_METAL=150) origin_tech = "magnets=1;engineering=1" @@ -22,15 +22,12 @@ REAGENT SCANNER var/pulse_duration = 10 /obj/item/device/t_scanner/longer_pulse - origin_tech = "magnets=2;engineering=2" pulse_duration = 50 /obj/item/device/t_scanner/extended_range - origin_tech = "magnets=1;engineering=3" scan_range = 3 /obj/item/device/t_scanner/extended_range/longer_pulse - origin_tech = "magnets=2;engineering=3" scan_range = 3 pulse_duration = 50 @@ -117,7 +114,7 @@ REAGENT SCANNER flags = CONDUCT slot_flags = SLOT_BELT throwforce = 3 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 5 throw_range = 10 materials = list(MAT_METAL=200) @@ -294,7 +291,7 @@ REAGENT SCANNER name = "Health Analyzer Upgrade" icon_state = "healthupgrade" desc = "An upgrade unit that can be installed on a health analyzer for expanded functionality." - w_class = 1 + w_class = WEIGHT_CLASS_TINY origin_tech = "magnets=2;biotech=2" usesound = 'sound/items/Deconstruct.ogg' @@ -303,7 +300,7 @@ REAGENT SCANNER name = "analyzer" icon_state = "atmos" item_state = "analyzer" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL flags = CONDUCT slot_flags = SLOT_BELT throwforce = 0 @@ -369,16 +366,15 @@ REAGENT SCANNER name = "mass-spectrometer" icon_state = "spectrometer" item_state = "analyzer" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL flags = CONDUCT | OPENCONTAINER slot_flags = SLOT_BELT throwforce = 5 throw_speed = 4 throw_range = 20 - materials = list(MAT_METAL=30, MAT_GLASS=20) - origin_tech = "magnets=2;biotech=2" + materials = list(MAT_METAL=150, MAT_GLASS=100) + origin_tech = "magnets=2;biotech=1;plasmatech=2" var/details = 0 - var/recent_fail = 0 var/datatoprint = "" var/scanning = 1 actions_types = list(/datum/action/item_action/print_report) @@ -396,9 +392,6 @@ REAGENT SCANNER /obj/item/device/mass_spectrometer/attack_self(mob/user as mob) if(user.stat) return - if(crit_fail) - to_chat(user, "This device has critically failed and is no longer functional!") - return if(!user.IsAdvancedToolUser()) to_chat(user, "You don't have the dexterity to do this!") return @@ -414,34 +407,19 @@ REAGENT SCANNER break var/dat = "" for(var/R in blood_traces) - if(prob(reliability)) - if(details) - dat += "[R] ([blood_traces[R]] units) " - else - dat += "[R]
" - recent_fail = 0 + if(details) + dat += "[R] ([blood_traces[R]] units) " else - if(recent_fail) - crit_fail = 1 - reagents.clear_reagents() - return - else - recent_fail = 1 - if(dat) - to_chat(user, "Trace chemicals detected in blood sample: [dat]") - datatoprint = dat - scanning = 0 - reagents.clear_reagents() - else - reagents.clear_reagents() - to_chat(user, "No trace chemicals detected in blood sample.") + dat += "[R] " + to_chat(user, "[dat]") + reagents.clear_reagents() return /obj/item/device/mass_spectrometer/adv name = "advanced mass-spectrometer" icon_state = "adv_spectrometer" details = 1 - origin_tech = "magnets=4;biotech=2" + origin_tech = "magnets=4;biotech=3;plasmatech=3" /obj/item/device/mass_spectrometer/proc/print_report() if(!scanning) @@ -470,16 +448,15 @@ REAGENT SCANNER desc = "A hand-held reagent scanner which identifies chemical agents." icon_state = "spectrometer" item_state = "analyzer" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL flags = CONDUCT slot_flags = SLOT_BELT throwforce = 5 throw_speed = 4 throw_range = 20 materials = list(MAT_METAL=30, MAT_GLASS=20) - origin_tech = "magnets=2;biotech=2" + origin_tech = "magnets=2;biotech=1;plasmatech=2" var/details = 0 - var/recent_fail = 0 var/datatoprint = "" var/scanning = 1 actions_types = list(/datum/action/item_action/print_report) @@ -492,23 +469,13 @@ REAGENT SCANNER return if(!istype(O)) return - if(crit_fail) - to_chat(user, "This device has critically failed and is no longer functional!") - return + if(!isnull(O.reagents)) var/dat = "" if(O.reagents.reagent_list.len > 0) var/one_percent = O.reagents.total_volume / 100 for(var/datum/reagent/R in O.reagents.reagent_list) - if(prob(reliability)) - dat += "
[TAB][R][details ? ": [R.volume / one_percent]%" : ""]" - recent_fail = 0 - else if(recent_fail) - crit_fail = 1 - dat = null - break - else - recent_fail = 1 + dat += "
[TAB][R][details ? ": [R.volume / one_percent]%" : ""]" if(dat) to_chat(user, "Chemicals found: [dat]") datatoprint = dat @@ -523,7 +490,7 @@ REAGENT SCANNER name = "advanced reagent scanner" icon_state = "adv_spectrometer" details = 1 - origin_tech = "magnets=4;biotech=2" + origin_tech = "magnets=4;biotech=3;plasmatech=3" /obj/item/device/reagent_scanner/proc/print_report() if(!scanning) @@ -551,8 +518,8 @@ REAGENT SCANNER name = "slime scanner" icon_state = "adv_spectrometer_s" item_state = "analyzer" - origin_tech = "biotech=1" - w_class = 2 + origin_tech = "biotech=2" + w_class = WEIGHT_CLASS_SMALL flags = CONDUCT throwforce = 0 throw_speed = 3 @@ -588,4 +555,4 @@ REAGENT SCANNER user.show_message("Genetic destability: [T.mutation_chance]% chance of mutation on splitting", 1) if(T.cores > 1) user.show_message("Anomalous slime core amount detected", 1) - user.show_message("Growth progress: [T.amount_grown]/10", 1) \ No newline at end of file + user.show_message("Growth progress: [T.amount_grown]/10", 1) diff --git a/code/game/objects/items/devices/sensor_device.dm b/code/game/objects/items/devices/sensor_device.dm index 79fc2f92457..ccd05ba2895 100644 --- a/code/game/objects/items/devices/sensor_device.dm +++ b/code/game/objects/items/devices/sensor_device.dm @@ -3,9 +3,9 @@ desc = "A miniature machine that tracks suit sensors across the station." icon = 'icons/obj/device.dmi' icon_state = "scanner" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_BELT - origin_tech = "biotech=3;materials=3;magnets=3" + origin_tech = "programming=3;materials=3;magnets=3" var/datum/nano_module/crew_monitor/crew_monitor /obj/item/device/sensor_device/New() @@ -19,4 +19,4 @@ ui_interact(user) /obj/item/device/sensor_device/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) - crew_monitor.ui_interact(user, ui_key, ui, force_open) \ No newline at end of file + crew_monitor.ui_interact(user, ui_key, ui, force_open) diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 1d8c92662e8..9f773c0d402 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -3,7 +3,7 @@ desc = "A device that can record to cassette tapes, and play them. It automatically translates the content in playback." icon_state = "taperecorder_empty" item_state = "analyzer" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_BELT materials = list(MAT_METAL=60, MAT_GLASS=30) force = 2 @@ -249,7 +249,7 @@ desc = "A magnetic tape that can hold up to ten minutes of content." icon_state = "tape_white" item_state = "analyzer" - w_class = 1 + w_class = WEIGHT_CLASS_TINY materials = list(MAT_METAL=20, MAT_GLASS=5) force = 1 throwforce = 0 diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 0b38b3f9e18..5f140f05d03 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -19,7 +19,7 @@ effective or pretty fucking useless. desc = "A strange device with twin antennas." icon_state = "batterer" throwforce = 5 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 4 throw_range = 10 flags = CONDUCT @@ -79,7 +79,7 @@ effective or pretty fucking useless. flags = CONDUCT slot_flags = SLOT_BELT throwforce = 3 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 materials = list(MAT_METAL=400) diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index 877cb1a5fc9..9c293bd6073 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -122,16 +122,16 @@ tank_one.forceMove(get_turf(src)) tank_one = null update_icon() - if((!tank_two || tank_two.w_class < 4) && (w_class > 3)) - w_class = 3 + if((!tank_two || tank_two.w_class < WEIGHT_CLASS_BULKY) && (w_class > WEIGHT_CLASS_NORMAL)) + w_class = WEIGHT_CLASS_NORMAL else if(tank_two && href_list["tanktwo"]) split_gases() valve_open = 0 tank_two.forceMove(get_turf(src)) tank_two = null update_icon() - if((!tank_one || tank_one.w_class < 4) && (w_class > 3)) - w_class = 3 + if((!tank_one || tank_one.w_class < WEIGHT_CLASS_BULKY) && (w_class > WEIGHT_CLASS_NORMAL)) + w_class = WEIGHT_CLASS_NORMAL else if(href_list["open"]) toggle_valve() else if(attached_device) @@ -217,4 +217,4 @@ else if(valve_open && tank_one && tank_two) split_gases() valve_open = 0 - update_icon() \ No newline at end of file + update_icon() diff --git a/code/game/objects/items/devices/whistle.dm b/code/game/objects/items/devices/whistle.dm index 359dfd82efa..d9aae300360 100644 --- a/code/game/objects/items/devices/whistle.dm +++ b/code/game/objects/items/devices/whistle.dm @@ -3,7 +3,7 @@ desc = "Used by obese officers to save their breath for running." icon_state = "voice0" item_state = "flashtool" //looks exactly like a flash (and nothing like a flashbang) - w_class = 1 + w_class = WEIGHT_CLASS_TINY flags = CONDUCT var/spamcheck = 0 @@ -28,4 +28,3 @@ if(!emagged) to_chat(user, "You overload \the [src]'s voice synthesizer.") emagged = 1 - diff --git a/code/game/objects/items/documents.dm b/code/game/objects/items/documents.dm index f76a4942195..9540dcbb966 100644 --- a/code/game/objects/items/documents.dm +++ b/code/game/objects/items/documents.dm @@ -5,7 +5,7 @@ icon_state = "docs_generic" item_state = "paper" throwforce = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_range = 1 throw_speed = 1 layer = 4 @@ -26,4 +26,4 @@ /obj/item/documents/syndicate/blue name = "'Blue' secret documents" desc = "\"Top Secret\" documents printed on special copy-protected paper. It details sensitive Syndicate operational intelligence. These documents are marked \"Blue\"." - icon_state = "docs_blue" \ No newline at end of file + icon_state = "docs_blue" diff --git a/code/game/objects/items/flag.dm b/code/game/objects/items/flag.dm index e05182bf3c1..ebdaa953fbf 100644 --- a/code/game/objects/items/flag.dm +++ b/code/game/objects/items/flag.dm @@ -1,6 +1,6 @@ /obj/item/flag icon = 'icons/obj/flag.dmi' - w_class = 4 + w_class = WEIGHT_CLASS_BULKY burntime = 20 burn_state = FLAMMABLE @@ -156,16 +156,16 @@ name = "Nar'Sie Cultist flag" desc = "A flag proudly boasting the logo of the cultists, sworn enemies of NT." icon_state = "cultflag" - + //Chameleon /obj/item/flag/chameleon name = "Chameleon flag" desc = "A poor recreation of the official NT flag. It seems to shimmer a little." icon_state = "ntflag" - origin_tech = "materials=3;magnets=4;syndicate=4" + origin_tech = "syndicate=4;magnets=4" var/used = 0 - + /obj/item/flag/chameleon/attack_self(mob/user) if(used) return @@ -190,7 +190,7 @@ icon_state = chosen_flag.icon_state desc = chosen_flag.desc used = 1 - + /obj/item/flag/chameleon/burn() explosion(loc,1,2,4,4, flame_range = 4) - qdel(src) \ No newline at end of file + qdel(src) diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm index a7a45de8cb8..5f55a5acdcc 100644 --- a/code/game/objects/items/latexballoon.dm +++ b/code/game/objects/items/latexballoon.dm @@ -5,7 +5,7 @@ item_state = "lgloves" force = 0 throwforce = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 1 throw_range = 7 var/state @@ -60,4 +60,4 @@ blow(T, user) return if(is_sharp(W) || is_hot(W) || can_puncture(W)) - burst() \ No newline at end of file + burst() diff --git a/code/game/objects/items/misc.dm b/code/game/objects/items/misc.dm index f2fa9596375..67b1523db8d 100644 --- a/code/game/objects/items/misc.dm +++ b/code/game/objects/items/misc.dm @@ -16,9 +16,9 @@ item_state = "beachball" density = 0 anchored = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY force = 0.0 throwforce = 0.0 throw_speed = 1 throw_range = 20 - flags = CONDUCT \ No newline at end of file + flags = CONDUCT diff --git a/code/game/objects/items/mountable_frames/frames.dm b/code/game/objects/items/mountable_frames/frames.dm index b8ef9216053..0bc5a8f9be6 100644 --- a/code/game/objects/items/mountable_frames/frames.dm +++ b/code/game/objects/items/mountable_frames/frames.dm @@ -1,6 +1,7 @@ /obj/item/mounted/frame name = "mountable frame" desc = "Place it on a wall." + origin_tech = "materials=1;engineering=1" var/sheets_refunded = 2 var/list/mount_reqs = list() //can contain simfloor, nospace. Used in try_build to see if conditions are needed, then met toolspeed = 1 diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm index 26b0e8772af..127f3f82c41 100644 --- a/code/game/objects/items/policetape.dm +++ b/code/game/objects/items/policetape.dm @@ -3,7 +3,7 @@ name = "tape roll" icon = 'icons/policetape.dmi' icon_state = "rollstart" - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/turf/start var/turf/end var/tape_type = /obj/item/tape @@ -201,5 +201,3 @@ var/list/tape_roll_applications = list() qdel(src) return - - diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 40cc65da34a..c5ecb18edec 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -6,6 +6,7 @@ desc = "Protected by FRM." icon = 'icons/obj/module.dmi' icon_state = "cyborg_upgrade" + origin_tech = "programming=2" var/locked = 0 var/installed = 0 var/require_module = 0 @@ -103,6 +104,7 @@ desc = "Used to kick in a robot's VTEC systems, increasing their speed." icon_state = "cyborg_upgrade2" require_module = 1 + origin_tech = "engineering=4;materials=5;programming=4" /obj/item/borg/upgrade/vtec/action(var/mob/living/silicon/robot/R) if(..()) @@ -120,6 +122,7 @@ name = "cyborg rapid disabler cooling module" desc = "Used to cool a mounted disabler, increasing the potential current in it and thus its recharge rate." icon_state = "cyborg_upgrade3" + origin_tech = "engineering=4;powerstorage=4;combat=4" require_module = 1 module_type = /obj/item/weapon/robot_module/security @@ -144,6 +147,7 @@ name = "ion thruster upgrade" desc = "A energy-operated thruster system for cyborgs." icon_state = "cyborg_upgrade3" + origin_tech = "engineering=4;powerstorage=4" /obj/item/borg/upgrade/thrusters/action(mob/living/silicon/robot/R) if(..()) @@ -160,6 +164,7 @@ name = "mining cyborg diamond drill" desc = "A diamond drill replacement for the mining module's standard drill." icon_state = "cyborg_upgrade3" + origin_tech = "engineering=4;materials=5" require_module = 1 module_type = /obj/item/weapon/robot_module/miner @@ -181,6 +186,7 @@ name = "mining cyborg satchel of holding" desc = "A satchel of holding replacement for mining cyborg's ore satchel module." icon_state = "cyborg_upgrade3" + origin_tech = "engineering=4;materials=4;bluespace=4" require_module = 1 module_type = /obj/item/weapon/robot_module/miner @@ -200,6 +206,7 @@ name = "illegal equipment module" desc = "Unlocks the hidden, deadlier functions of a cyborg" icon_state = "cyborg_upgrade3" + origin_tech = "combat=4;syndicate=1" require_module = 1 /obj/item/borg/upgrade/syndicate/action(mob/living/silicon/robot/R) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 4c2bbfa3bcd..82d2ce8c024 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/items.dmi' amount = 6 max_amount = 6 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 var/heal_brute = 0 @@ -75,7 +75,7 @@ singular_name = "gauze length" desc = "Some sterile gauze to wrap around bloody stumps." icon_state = "gauze" - origin_tech = "biotech=1" + origin_tech = "biotech=2" /obj/item/stack/medical/bruise_pack/attack(mob/living/M, mob/user) if(..()) @@ -121,7 +121,7 @@ gender = PLURAL singular_name = "ointment" icon_state = "ointment" - origin_tech = "biotech=1" + origin_tech = "biotech=2" /obj/item/stack/medical/ointment/attack(mob/living/M, mob/user) if(..()) diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm index a21bb504fdc..8e3c6a57e18 100644 --- a/code/game/objects/items/stacks/nanopaste.dm +++ b/code/game/objects/items/stacks/nanopaste.dm @@ -4,7 +4,7 @@ desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery." icon = 'icons/obj/nanopaste.dmi' icon_state = "tube" - origin_tech = "materials=3;engineering=2" + origin_tech = "materials=2;engineering=3" amount = 10 toolspeed = 1 diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index 1b63eaae7f0..96d5d381a72 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -9,7 +9,7 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \ icon_state = "rods" item_state = "rods" flags = CONDUCT - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL force = 9.0 throwforce = 10.0 throw_speed = 3 diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index deea1ecc24e..38d426766a0 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -267,7 +267,7 @@ singular_name = "glass sheet" icon_state = "sheet-plasmaglass" materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT*2) - origin_tech = "materials=3;plasmatech=2" + origin_tech = "plasmatech=2;materials=2" var/created_window = /obj/structure/window/plasmabasic var/full_window = /obj/structure/window/full/plasmabasic @@ -356,7 +356,7 @@ singular_name = "reinforced plasma glass sheet" icon_state = "sheet-plasmarglass" materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT/2, MAT_GLASS=MINERAL_MATERIAL_AMOUNT*2) - origin_tech = "materials=3;plasmatech=2" + origin_tech = "plasmatech=2;materials=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/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 3a2d07aa2f6..9ccfdf28ad5 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -1,9 +1,13 @@ +/obj/item/stack/sheet/animalhide + name = "hide" + desc = "Something went wrong." + origin_tech = "biotech=3" + /obj/item/stack/sheet/animalhide/human name = "human skin" desc = "The by-product of human farming." singular_name = "human skin piece" icon_state = "sheet-hide" - origin_tech = "" var/global/list/datum/stack_recipe/human_recipes = list( \ new/datum/stack_recipe("bloated human costume", /obj/item/clothing/suit/bloated_human, 5, on_floor = 1), \ @@ -19,42 +23,36 @@ var/global/list/datum/stack_recipe/human_recipes = list( \ desc = "A piece of generic skin." singular_name = "generic skin piece" icon_state = "sheet-hide" - origin_tech = null /obj/item/stack/sheet/animalhide/corgi name = "corgi hide" desc = "The by-product of corgi farming." singular_name = "corgi hide piece" icon_state = "sheet-corgi" - origin_tech = "" /obj/item/stack/sheet/animalhide/cat name = "cat hide" desc = "The by-product of cat farming." singular_name = "cat hide piece" icon_state = "sheet-cat" - origin_tech = "" /obj/item/stack/sheet/animalhide/monkey name = "monkey hide" desc = "The by-product of monkey farming." singular_name = "monkey hide piece" icon_state = "sheet-monkey" - origin_tech = "" /obj/item/stack/sheet/animalhide/lizard name = "lizard skin" desc = "Sssssss..." singular_name = "lizard skin piece" icon_state = "sheet-lizard" - origin_tech = "" /obj/item/stack/sheet/animalhide/xeno name = "alien hide" desc = "The skin of a terrible creature." singular_name = "alien hide piece" icon_state = "sheet-xeno" - origin_tech = "" //don't see anywhere else to put these, maybe together they could be used to make the xenos suit? /obj/item/stack/sheet/xenochitin @@ -108,8 +106,8 @@ var/global/list/datum/stack_recipe/human_recipes = list( \ desc = "Long stringy filaments which presumably came from a watcher's wings." singular_name = "watcher sinew" icon_state = "sinew" - origin_tech = "biotech=4" - + origin_tech = "biotech=4" + var/global/list/datum/stack_recipe/sinew_recipes = list ( \ new/datum/stack_recipe("sinew restraints", /obj/item/weapon/restraints/handcuffs/sinew, 1, on_floor = 1), \ ) @@ -117,7 +115,7 @@ var/global/list/datum/stack_recipe/sinew_recipes = list ( \ /obj/item/stack/sheet/sinew/New(var/loc, var/amount=null) recipes = sinew_recipes return ..() - + /obj/item/stack/sheet/animalhide/goliath_hide name = "goliath hide plates" desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna." @@ -125,7 +123,7 @@ var/global/list/datum/stack_recipe/sinew_recipes = list ( \ icon_state = "goliath_hide" singular_name = "hide plate" flags = NOBLUDGEON - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL layer = MOB_LAYER /obj/item/stack/sheet/animalhide/ashdrake @@ -135,9 +133,9 @@ var/global/list/datum/stack_recipe/sinew_recipes = list ( \ icon_state = "dragon_hide" singular_name = "drake plate" flags = NOBLUDGEON - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL layer = MOB_LAYER - + //Step one - dehairing. /obj/item/stack/sheet/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob, params) @@ -177,4 +175,4 @@ var/global/list/datum/stack_recipe/sinew_recipes = list ( \ var/obj/item/stack/sheet/leather/HS = new(src.loc) HS.amount = 1 wetness = initial(wetness) - src.use(1) \ No newline at end of file + src.use(1) diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index 9ca562b50ce..d399e152bbe 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -5,7 +5,7 @@ desc = "A glass tile, which is wired, somehow." icon = 'icons/obj/tiles.dmi' icon_state = "glass_wire" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL force = 3.0 throwforce = 5.0 throw_speed = 5 diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index ef9781f9a0d..c381000f5b9 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -104,9 +104,8 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \ /obj/item/stack/sheet/mineral force = 5.0 throwforce = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL throw_speed = 3 - throw_range = 3 /obj/item/stack/sheet/mineral/New() ..() @@ -118,7 +117,6 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \ desc = "This appears to be a combination of both sand and stone." singular_name = "sandstone brick" icon_state = "sheet-sandstone" - throw_speed = 3 throw_range = 5 origin_tech = "materials=1" sheettype = "sandstone" @@ -194,7 +192,7 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \ name = "silver" icon_state = "sheet-silver" singular_name = "silver bar" - origin_tech = "materials=3" + origin_tech = "materials=4" sheettype = "silver" materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT) @@ -240,12 +238,11 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \ singular_name = "alien alloy sheet" force = 5 throwforce = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL throw_speed = 1 - throw_range = 3 origin_tech = "materials=6;abductor=1" sheettype = "abductor" /obj/item/stack/sheet/mineral/abductor/New(loc, amount=null) recipes = abductor_recipes - ..() \ No newline at end of file + ..() diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 02031404360..67755655fe3 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -237,6 +237,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( new /datum/stack_recipe("folder", /obj/item/weapon/folder), new /datum/stack_recipe("cardboard tube", /obj/item/weapon/c_tube), new /datum/stack_recipe("cardboard box", /obj/structure/closet/cardboard, 4), + new/datum/stack_recipe("cardboard cutout", /obj/item/cardboard_cutout, 5), ) /obj/item/stack/sheet/cardboard //BubbleWrap @@ -298,7 +299,7 @@ var/global/list/datum/stack_recipe/runed_metal_recipes = list ( \ desc = "Someone's been drinking their milk." force = 7 throwforce = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL throw_speed = 1 throw_range = 3 origin_tech = "materials=2;biotech=2" diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm index 4e5a0e9fdc8..3a92d0f7662 100644 --- a/code/game/objects/items/stacks/sheets/sheets.dm +++ b/code/game/objects/items/stacks/sheets/sheets.dm @@ -1,6 +1,6 @@ /obj/item/stack/sheet name = "sheet" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL force = 5 throwforce = 5 max_amount = 50 @@ -24,4 +24,4 @@ else for(var/obj/item/stack/sheet/stack in locate(src.x,src.y,src.z)) S.add(stack,user) - ..()*/ \ No newline at end of file + ..()*/ diff --git a/code/game/objects/items/stacks/telecrystal.dm b/code/game/objects/items/stacks/telecrystal.dm index 0c6c3d42cf3..d2fb50bd385 100644 --- a/code/game/objects/items/stacks/telecrystal.dm +++ b/code/game/objects/items/stacks/telecrystal.dm @@ -5,7 +5,7 @@ singular_name = "telecrystal" icon = 'icons/obj/telescience.dmi' icon_state = "telecrystal" - w_class = 1 + w_class = WEIGHT_CLASS_TINY max_amount = 50 flags = NOBLUDGEON origin_tech = "materials=6;syndicate=1" diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index b8078bfebcb..f982c89a8c3 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/tiles.dmi' icon_state = "tile" item_state = "tile" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL force = 1 throwforce = 1 throw_speed = 5 @@ -100,6 +100,11 @@ turf_type = /turf/simulated/floor/carpet burn_state = FLAMMABLE +/obj/item/stack/tile/carpet/black + name = "black carpet" + icon_state = "tile-carpet-black" + turf_type = /turf/simulated/floor/carpet/black + //Plasteel /obj/item/stack/tile/plasteel name = "floor tiles" @@ -160,4 +165,4 @@ singular_name = "pod floor tile" desc = "A grooved floor tile." icon_state = "tile_pod" - turf_type = /turf/simulated/floor/pod \ No newline at end of file + turf_type = /turf/simulated/floor/pod diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 87da0987487..575cf09a6b1 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -113,7 +113,7 @@ icon = 'icons/obj/weapons.dmi' icon_state = "syndballoon" item_state = "syndballoon" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY /* * Fake telebeacon @@ -144,7 +144,7 @@ icon_state = "sword0" item_state = "sword0" var/active = 0.0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL attack_verb = list("attacked", "struck", "hit") /obj/item/toy/sword/attack_self(mob/user as mob) @@ -154,13 +154,13 @@ playsound(user, 'sound/weapons/saberon.ogg', 50, 1) icon_state = "swordblue" item_state = "swordblue" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY else to_chat(user, "You push the plastic blade back down into the handle.") playsound(user, 'sound/weapons/saberoff.ogg', 50, 1) icon_state = "sword0" item_state = "sword0" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL if(istype(user,/mob/living/carbon/human)) var/mob/living/carbon/human/H = user @@ -218,7 +218,7 @@ slot_flags = SLOT_BELT | SLOT_BACK force = 5 throwforce = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL attack_verb = list("attacked", "slashed", "stabbed", "sliced") hitsound = 'sound/weapons/bladeslice.ogg' @@ -239,7 +239,7 @@ throwforce = 5.0 throw_speed = 10 throw_range = 30 - w_class = 1 + w_class = WEIGHT_CLASS_TINY /obj/item/toy/snappop/virus/throw_impact(atom/hit_atom) @@ -260,7 +260,7 @@ desc = "Wow!" icon = 'icons/obj/toy.dmi' icon_state = "snappop" - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/ash_type = /obj/effect/decal/cleanable/ash /obj/item/toy/snappop/proc/pop_burst(var/n=3, var/c=1) @@ -403,7 +403,7 @@ slot_flags = SLOT_BELT | SLOT_BACK force = 5 throwforce = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL attack_verb = list("attacked", "slashed", "stabbed", "sliced") @@ -438,7 +438,7 @@ obj/item/toy/cards/deck icon = 'icons/obj/toy.dmi' deckstyle = "nanotrasen" icon_state = "deck_nanotrasen_full" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/cooldown = 0 var/list/cards = list() @@ -568,7 +568,7 @@ obj/item/toy/cards/cardhand desc = "A number of cards not in a deck, customarily held in ones hand." icon = 'icons/obj/toy.dmi' icon_state = "nanotrasen_hand2" - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/list/currenthand = list() var/choice = null @@ -661,7 +661,7 @@ obj/item/toy/cards/singlecard desc = "a card" icon = 'icons/obj/toy.dmi' icon_state = "singlecard_nanotrasen_down" - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/cardname = null var/flipped = 0 pixel_x = -5 @@ -787,7 +787,7 @@ obj/item/toy/cards/deck/syndicate/black desc = "A plastic model of a Nuclear Fission Explosive." icon = 'icons/obj/toy.dmi' icon_state = "nuketoyidle" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/cooldown = 0 /obj/item/toy/nuke/attack_self(mob/user) @@ -810,7 +810,7 @@ obj/item/toy/cards/deck/syndicate/black desc = "A toy for therapeutic and recreational purposes." icon_state = "therapyred" item_state = "egg4" - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/cooldown = 0 /obj/item/toy/therapy/New() @@ -863,7 +863,7 @@ obj/item/toy/cards/deck/syndicate/black name = "toddler" desc = "This baby looks almost real. Wait, did it just burp?" force = 5 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK @@ -886,7 +886,7 @@ obj/item/toy/cards/deck/syndicate/black desc = "Relive the excitement of a meteor shower! SweetMeat-eor. Co is not responsible for any injuries, headaches or hearing loss caused by Mini-Meteor." icon = 'icons/obj/toy.dmi' icon_state = "minimeteor" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/toy/minimeteor/throw_impact(atom/hit_atom) ..() @@ -1095,7 +1095,7 @@ obj/item/toy/cards/deck/syndicate/black icon_state = "foamblade" item_state = "arm_blade" attack_verb = list("pricked", "absorbed", "gored") - w_class = 2 + w_class = WEIGHT_CLASS_SMALL burn_state = FLAMMABLE /* @@ -1107,7 +1107,7 @@ obj/item/toy/cards/deck/syndicate/black icon = 'icons/obj/device.dmi' icon_state = "flash" item_state = "flashtool" - w_class = 1 + w_class = WEIGHT_CLASS_TINY /obj/item/toy/flash/attack(mob/living/M, mob/user) playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1) @@ -1123,7 +1123,7 @@ obj/item/toy/cards/deck/syndicate/black desc = "A big, plastic red button. Reads 'From HonkCo Pranks?' on the back." icon = 'icons/obj/assemblies.dmi' icon_state = "bigred" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/cooldown = 0 /obj/item/toy/redbutton/attack_self(mob/user) @@ -1148,7 +1148,7 @@ obj/item/toy/cards/deck/syndicate/black desc = "A little toy model AI core with real law announcing action!" icon = 'icons/obj/toy.dmi' icon_state = "AI" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/cooldown = 0 /obj/item/toy/AI/attack_self(mob/user) @@ -1167,7 +1167,7 @@ obj/item/toy/cards/deck/syndicate/black desc = "An action figure modeled after 'The Owl', defender of justice." icon = 'icons/obj/toy.dmi' icon_state = "owlprize" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/cooldown = 0 /obj/item/toy/owl/attack_self(mob/user) @@ -1186,7 +1186,7 @@ obj/item/toy/cards/deck/syndicate/black desc = "An action figure modeled after 'The Griffin', criminal mastermind." icon = 'icons/obj/toy.dmi' icon_state = "griffinprize" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/cooldown = 0 /obj/item/toy/griffin/attack_self(mob/user) @@ -1203,7 +1203,7 @@ obj/item/toy/cards/deck/syndicate/black // DND Character minis. Use the naming convention (type)character for the icon states. /obj/item/toy/character icon = 'icons/obj/toy.dmi' - w_class = 2 + w_class = WEIGHT_CLASS_SMALL pixel_z = 5 /obj/item/toy/character/alien @@ -1256,7 +1256,7 @@ obj/item/toy/cards/deck/syndicate/black desc = "The perfect pet!" icon = 'icons/obj/toy.dmi' icon_state = "pet_rock" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force = 5 throwforce = 5 attack_verb = list("attacked", "bashed", "smashed", "stoned") @@ -1280,7 +1280,7 @@ obj/item/toy/cards/deck/syndicate/black icon = 'icons/obj/toy.dmi' icon_state = "minigibber" attack_verb = list("grinded", "gibbed") - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/cooldown = 0 var/obj/stored_minature = null @@ -1322,7 +1322,7 @@ obj/item/toy/cards/deck/syndicate/black icon_state = "toy_xeno" name = "xenomorph action figure" desc = "MEGA presents the new Xenos Isolated action figure! Comes complete with realistic sounds! Pull back string to use." - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/cooldown = 0 /obj/item/toy/toy_xeno/attack_self(mob/user) @@ -1352,7 +1352,7 @@ obj/item/toy/cards/deck/syndicate/black flags = CONDUCT slot_flags = SLOT_BELT materials = list(MAT_METAL=2000) - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL throwforce = 5 throw_speed = 4 throw_range = 5 diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index dc538674993..30a75b310b6 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -4,7 +4,7 @@ //Added by Jack Rost /obj/item/trash icon = 'icons/obj/trash.dmi' - w_class = 1 + w_class = WEIGHT_CLASS_TINY desc = "This is rubbish." burn_state = FLAMMABLE diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index cca1464d6e7..ad593ca438d 100755 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -14,7 +14,7 @@ AI MODULES desc = "An AI Module for transmitting encrypted instructions to the AI." flags = CONDUCT force = 5.0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throwforce = 5.0 throw_speed = 3 throw_range = 15 @@ -95,7 +95,7 @@ AI MODULES name = "\improper 'Safeguard' AI module" var/targetName = "" desc = "A 'safeguard' AI module: 'Safeguard . Individuals that threaten are not crew and must be eliminated.'" - origin_tech = "programming=3;materials=4" + origin_tech = "programming=3;materials=3" /obj/item/weapon/aiModule/safeguard/attack_self(var/mob/user as mob) ..() @@ -121,7 +121,7 @@ AI MODULES name = "\improper 'oneCrewMember' AI module" var/targetName = "" desc = "A 'one human' AI module: 'Only is crew.'" - origin_tech = "programming=3;materials=6" //made with diamonds! + origin_tech = "programming=4;materials=4" /obj/item/weapon/aiModule/oneCrewMember/attack_self(var/mob/user as mob) ..() @@ -152,7 +152,7 @@ AI MODULES /obj/item/weapon/aiModule/protectStation name = "\improper 'ProtectStation' AI module" desc = "A 'protect station' AI module: 'Protect the space station against damage. Anyone you see harming the station is to be no longer considered crew, and is a threat to the station which must be neutralized.'" - origin_tech = "programming=3;materials=4" //made of gold + origin_tech = "programming=4;materials=4" //made of gold /obj/item/weapon/aiModule/protectStation/attack_self(var/mob/user as mob) ..() @@ -182,7 +182,7 @@ AI MODULES /obj/item/weapon/aiModule/oxygen name = "\improper 'OxygenIsToxicToHumans' AI module" desc = "A 'OxygenIsToxicToHumans' AI module: 'Oxygen is highly toxic to crew members, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a crew member.'" - origin_tech = "programming=3;biotech=2;materials=4" + origin_tech = "programming=4;biotech=2;materials=4" /obj/item/weapon/aiModule/oxygen/attack_self(var/mob/user as mob) ..() @@ -231,7 +231,7 @@ AI MODULES name = "\improper 'Reset' AI module" var/targetName = "name" desc = "A 'reset' AI module: 'Clears all laws except for the core laws.'" - origin_tech = "programming=3;materials=4" + origin_tech = "programming=3;materials=2" /obj/item/weapon/aiModule/reset/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender) log_law_changes(target, sender) @@ -248,7 +248,7 @@ AI MODULES /obj/item/weapon/aiModule/purge // -- TLE name = "\improper 'Purge' AI module" desc = "A 'purge' AI Module: 'Purges all laws.'" - origin_tech = "programming=3;materials=6" + origin_tech = "programming=5;materials=4" /obj/item/weapon/aiModule/purge/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender) ..() @@ -305,14 +305,14 @@ AI MODULES /obj/item/weapon/aiModule/paladin // -- NEO name = "\improper 'P.A.L.A.D.I.N.' core AI module" desc = "A P.A.L.A.D.I.N. Core AI Module: 'Reconfigures the AI's core laws.'" - origin_tech = "programming=3;materials=6" + origin_tech = "programming=3;materials=4" 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" desc = "A T.Y.R.A.N.T. Core AI Module: 'Reconfigures the AI's core laws.'" - origin_tech = "programming=3;materials=6;syndicate=2" + origin_tech = "programming=3;materials=4;syndicate=1" laws = new/datum/ai_laws/tyrant() /******************** Antimov ********************/ @@ -327,7 +327,7 @@ AI MODULES name = "\improper 'Freeform' core AI module" var/newFreeFormLaw = "" desc = "A 'freeform' Core AI module: ''" - origin_tech = "programming=3;materials=6" + origin_tech = "programming=5;materials=4" /obj/item/weapon/aiModule/freeformcore/attack_self(var/mob/user as mob) ..() @@ -353,7 +353,7 @@ AI MODULES name = "hacked AI module" var/newFreeFormLaw = "" desc = "A hacked AI law module: ''" - origin_tech = "programming=3;materials=6;syndicate=7" + origin_tech = "programming=5;materials=5;syndicate=5" /obj/item/weapon/aiModule/syndicate/attack_self(var/mob/user as mob) ..() @@ -384,7 +384,7 @@ AI MODULES desc = "A little toy model AI core with real law uploading action!" //Note: subtle tell icon = 'icons/obj/toy.dmi' icon_state = "AI" - origin_tech = "programming=3;materials=6;syndicate=7" + origin_tech = "programming=6;materials=5;syndicate=6" laws = list("") /obj/item/weapon/aiModule/toyAI/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender) @@ -397,4 +397,4 @@ AI MODULES laws[1] = generate_ion_law() to_chat(user, "You press the button on [src].") playsound(user, 'sound/machines/click.ogg', 20, 1) - src.loc.visible_message("[bicon(src)] [laws[1]]") \ No newline at end of file + src.loc.visible_message("[bicon(src)] [laws[1]]") diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 3fb02da2bdf..2623c70606e 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -17,7 +17,7 @@ RCD throwforce = 10.0 throw_speed = 3 throw_range = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL materials = list(MAT_METAL = 30000) origin_tech = "engineering=4;materials=2" toolspeed = 1 @@ -394,7 +394,7 @@ RCD opacity = 0 density = 0 anchored = 0.0 - origin_tech = "materials=2" + origin_tech = "materials=3" materials = list(MAT_METAL=16000, MAT_GLASS=8000) var/ammoamt = 20 diff --git a/code/game/objects/items/weapons/RCL.dm b/code/game/objects/items/weapons/RCL.dm index 0655c0b4b8b..ebc7c2f58da 100644 --- a/code/game/objects/items/weapons/RCL.dm +++ b/code/game/objects/items/weapons/RCL.dm @@ -10,7 +10,7 @@ throw_speed = 1 throw_range = 7 w_class = WEIGHT_CLASS_NORMAL - origin_tech = "engineering=4;materials=4" + origin_tech = "engineering=4;materials=2" var/max_amount = 90 var/active = 0 var/obj/structure/cable/last = null diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index 07a489490e1..ddeefa002b0 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -13,7 +13,7 @@ RSF anchored = 0.0 var/matter = 0 var/mode = 1 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL /obj/item/weapon/rsf/New() desc = "A RSF. It currently holds [matter]/30 fabrication-units." @@ -231,4 +231,4 @@ RSF matter-- to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return \ No newline at end of file + return diff --git a/code/game/objects/items/weapons/alien_specific.dm b/code/game/objects/items/weapons/alien_specific.dm index 922f4004714..49258c05c4e 100644 --- a/code/game/objects/items/weapons/alien_specific.dm +++ b/code/game/objects/items/weapons/alien_specific.dm @@ -12,8 +12,8 @@ throwforce_on = 5 throw_speed = 1 throw_range = 5 - w_class = 2 - w_class_on = 2 + w_class = WEIGHT_CLASS_SMALL + w_class_on = WEIGHT_CLASS_SMALL attack_verb = list("attacked", "slashed", "gored", "sliced", "torn", "ripped", "butchered", "cut") attack_verb_on = list() diff --git a/code/game/objects/items/weapons/bee_briefcase.dm b/code/game/objects/items/weapons/bee_briefcase.dm index 3252fe4d856..229a025a18f 100644 --- a/code/game/objects/items/weapons/bee_briefcase.dm +++ b/code/game/objects/items/weapons/bee_briefcase.dm @@ -11,7 +11,7 @@ force = 10 throw_speed = 2 throw_range = 4 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") var/bees_left = 10 var/list/blood_list = list() diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 27d659dcbe2..dc4f23657b5 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -15,7 +15,7 @@ name = "card" desc = "A card." icon = 'icons/obj/card.dmi' - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/associated_account_number = 0 var/list/files = list( ) @@ -299,7 +299,7 @@ /obj/item/weapon/card/id/syndicate name = "agent card" var/list/initial_access = list(access_maint_tunnels, access_syndicate, access_external_airlocks) - origin_tech = "syndicate=3" + origin_tech = "syndicate=1" var/registered_user = null untrackable = 1 diff --git a/code/game/objects/items/weapons/caution.dm b/code/game/objects/items/weapons/caution.dm index 44a357a6d92..250aff951fd 100644 --- a/code/game/objects/items/weapons/caution.dm +++ b/code/game/objects/items/weapons/caution.dm @@ -7,7 +7,7 @@ throwforce = 3.0 throw_speed = 1 throw_range = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL attack_verb = list("warned", "cautioned", "smashed") proximity_sign diff --git a/code/game/objects/items/weapons/chrono_eraser.dm b/code/game/objects/items/weapons/chrono_eraser.dm index 71e09a3cf0d..ef1e2c91498 100644 --- a/code/game/objects/items/weapons/chrono_eraser.dm +++ b/code/game/objects/items/weapons/chrono_eraser.dm @@ -6,7 +6,7 @@ icon = 'icons/obj/chronos.dmi' icon_state = "chronobackpack" item_state = "backpack" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK slowdown = 1 actions_types = list(/datum/action/item_action/equip_unequip_TED_Gun) @@ -46,7 +46,7 @@ icon = 'icons/obj/chronos.dmi' icon_state = "chronogun" item_state = "chronogun" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL flags = NODROP ammo_type = list(/obj/item/ammo_casing/energy/chrono_beam) can_charge = 0 diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm index 2b46e8de101..766fe92c1ee 100644 --- a/code/game/objects/items/weapons/cigs.dm +++ b/code/game/objects/items/weapons/cigs.dm @@ -20,7 +20,7 @@ LIGHTERS ARE IN LIGHTERS.DM throw_speed = 0.5 item_state = "cigoff" slot_flags = SLOT_EARS|SLOT_MASK - w_class = 1 + w_class = WEIGHT_CLASS_TINY body_parts_covered = null attack_verb = list("burnt", "singed") var/lit = 0 @@ -285,7 +285,7 @@ LIGHTERS ARE IN LIGHTERS.DM desc = "A manky old cigarette butt." icon = 'icons/obj/clothing/masks.dmi' icon_state = "cigbutt" - w_class = 1 + w_class = WEIGHT_CLASS_TINY throwforce = 1 /obj/item/weapon/cigbutt/New() @@ -389,7 +389,7 @@ LIGHTERS ARE IN LIGHTERS.DM desc = "A thin piece of paper used to make fine smokeables." icon = 'icons/obj/cigarettes.dmi' icon_state = "cig_paper" - w_class = 1 + w_class = WEIGHT_CLASS_TINY /obj/item/weapon/rollingpaper/afterattack(atom/target, mob/user, proximity) if(!proximity) @@ -410,4 +410,4 @@ LIGHTERS ARE IN LIGHTERS.DM else to_chat(user, "You need to dry this first!") else - ..() \ No newline at end of file + ..() diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 3312c6555d4..7be57f646c4 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -60,7 +60,7 @@ item_state = "bike_horn" hitsound = null throwforce = 3 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 15 attack_verb = list("HONKED") @@ -89,6 +89,7 @@ icon_state = "air_horn" honk_sound = 'sound/items/AirHorn2.ogg' cooldowntime = 50 + origin_tech = "materials=4;engineering=4" /obj/item/weapon/bikehorn/golden name = "golden bike horn" @@ -112,4 +113,4 @@ var/mob/living/carbon/human/H = M if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs) || H.ear_deaf) continue - M.emote("flip") \ No newline at end of file + M.emote("flip") diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm index a5a2438771e..d480f8f4010 100644 --- a/code/game/objects/items/weapons/cosmetics.dm +++ b/code/game/objects/items/weapons/cosmetics.dm @@ -3,7 +3,7 @@ desc = "A generic brand of lipstick." icon = 'icons/obj/items.dmi' icon_state = "lipstick" - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/colour = "red" var/open = 0 @@ -86,7 +86,7 @@ icon = 'icons/obj/items.dmi' icon_state = "razor" flags = CONDUCT - w_class = 1 + w_class = WEIGHT_CLASS_TINY usesound = 'sound/items/Welder2.ogg' toolspeed = 1 diff --git a/code/game/objects/items/weapons/courtroom.dm b/code/game/objects/items/weapons/courtroom.dm index 055faa03a8c..0f5671f8e1a 100644 --- a/code/game/objects/items/weapons/courtroom.dm +++ b/code/game/objects/items/weapons/courtroom.dm @@ -9,7 +9,7 @@ icon_state = "gavelhammer" force = 5.0 throwforce = 6.0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL attack_verb = list("bashed", "battered", "judged", "whacked") burn_state = FLAMMABLE @@ -25,7 +25,7 @@ icon_state = "gavelblock" force = 2.0 throwforce = 2.0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY burn_state = FLAMMABLE /obj/item/weapon/gavelblock/attackby(obj/item/I, mob/user, params) @@ -33,4 +33,4 @@ playsound(loc, 'sound/items/gavel.ogg', 100, 1) user.visible_message("[user] strikes \the [src] with \the [I].") else - return \ No newline at end of file + return diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index e332011d2ee..ee7a6d4764b 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -9,7 +9,7 @@ slot_flags = SLOT_BACK force = 5 throwforce = 6 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY origin_tech = "biotech=4" actions_types = list(/datum/action/item_action/toggle_paddles) species_fit = list("Vox") @@ -112,8 +112,6 @@ /obj/item/weapon/defibrillator/emp_act(severity) if(bcell) deductcharge(1000 / severity) - if(bcell.reliability != 100 && prob(50/severity)) - bcell.reliability -= 10 / severity if(safety) safety = 0 src.visible_message("[src] beeps: Safety protocols disabled!") @@ -206,9 +204,9 @@ desc = "A belt-equipped defibrillator that can be rapidly deployed." icon_state = "defibcompact" item_state = "defibcompact" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL slot_flags = SLOT_BELT - origin_tech = "biotech=4" + origin_tech = "biotech=5" /obj/item/weapon/defibrillator/compact/item_action_slot_check(slot, mob/user) if(slot == slot_belt) @@ -251,7 +249,7 @@ item_state = "defibpaddles" force = 0 throwforce = 6 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY toolspeed = 1 var/revivecost = 1000 @@ -446,7 +444,7 @@ icon_state = "defibpaddles0" item_state = "defibpaddles0" force = 0 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY var/revivecost = 1000 var/cooldown = 0 var/busy = 0 diff --git a/code/game/objects/items/weapons/dice.dm b/code/game/objects/items/weapons/dice.dm index 80274a4d7ca..7871f19e91a 100644 --- a/code/game/objects/items/weapons/dice.dm +++ b/code/game/objects/items/weapons/dice.dm @@ -29,7 +29,7 @@ desc = "A die with six sides. Basic and servicable." icon = 'icons/obj/dice.dmi' icon_state = "d6" - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/sides = 6 var/result = null var/list/special_faces = list() //entries should match up to sides var if used diff --git a/code/game/objects/items/weapons/disks.dm b/code/game/objects/items/weapons/disks.dm index 2c3f71f5cf3..58f590dc629 100644 --- a/code/game/objects/items/weapons/disks.dm +++ b/code/game/objects/items/weapons/disks.dm @@ -1,5 +1,5 @@ /obj/item/weapon/disk icon = 'icons/obj/module.dmi' - w_class = 1 + w_class = WEIGHT_CLASS_TINY item_state = "card-id" icon_state = "datadisk0" diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index b4d0e0b5eaa..b583b3e2c25 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -8,7 +8,7 @@ var/datum/dna2/record/buf = null throw_speed = 3 throw_range = 5 - w_class = 1 + w_class = WEIGHT_CLASS_TINY origin_tech = "biotech=1" var/damage_coeff = 1 diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index 13a9186058e..ea89aab651c 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -6,7 +6,7 @@ flags = NOBLUDGEON det_time = 10 display_timer = 0 - origin_tech = "syndicate=2" + origin_tech = "syndicate=1" toolspeed = 1 var/atom/target = null var/image_overlay = null diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index 0767e26fbdb..42874e05cf4 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -7,7 +7,7 @@ hitsound = 'sound/weapons/smash.ogg' flags = CONDUCT throwforce = 10 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL throw_speed = 2 throw_range = 7 force = 10 @@ -29,7 +29,7 @@ hitsound = null //it is much lighter, after all. flags = null //doesn't CONDUCT throwforce = 2 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force = 3.0 materials = list() max_water = 30 diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index 70fbde22224..f02eb57ae8b 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -11,9 +11,9 @@ throwforce = 10.0 throw_speed = 1 throw_range = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL materials = list(MAT_METAL=500) - origin_tech = "combat=1;plasmatech=1" + origin_tech = "combat=1;plasmatech=2;engineering=2" var/status = 0 var/throw_amount = 100 var/lit = 0 //on or off diff --git a/code/game/objects/items/weapons/garrote.dm b/code/game/objects/items/weapons/garrote.dm index 196b0d269a0..be96e29f97a 100644 --- a/code/game/objects/items/weapons/garrote.dm +++ b/code/game/objects/items/weapons/garrote.dm @@ -8,7 +8,7 @@ name = "fiber wire" desc = "A length of razor-thin wire with an elegant wooden handle on either end.
You suspect you'd have to be behind the target to use this weapon effectively." icon_state = "garrot_wrap" - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/mob/living/carbon/human/strangling var/improvised = 0 var/garrote_time diff --git a/code/game/objects/items/weapons/grenades/atmosgrenade.dm b/code/game/objects/items/weapons/grenades/atmosgrenade.dm index 4bfda1ab659..d9b411f4893 100644 --- a/code/game/objects/items/weapons/grenades/atmosgrenade.dm +++ b/code/game/objects/items/weapons/grenades/atmosgrenade.dm @@ -4,7 +4,7 @@ /obj/item/weapon/grenade/gas name = "Plasma Fire Grenade" desc = "A compressed plasma grenade, used to start horrific plasma fires." - origin_tech = "materials=3;magnets=4;syndicate=4" + origin_tech = "materials=3;magnets=4;syndicate=3" icon = 'icons/obj/grenade.dmi' icon_state = "syndicate" item_state = "flashbang" diff --git a/code/game/objects/items/weapons/grenades/bananade.dm b/code/game/objects/items/weapons/grenades/bananade.dm index 580cb993a63..6c672193bb6 100644 --- a/code/game/objects/items/weapons/grenades/bananade.dm +++ b/code/game/objects/items/weapons/grenades/bananade.dm @@ -4,7 +4,7 @@ var/turf/T /obj/item/weapon/grenade/bananade name = "bananade" desc = "A yellow grenade." - w_class = 2 + w_class = WEIGHT_CLASS_SMALL icon = 'icons/obj/grenade.dmi' icon_state = "banana" item_state = "flashbang" diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 5dc0e8d4199..f21914a7c32 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -9,7 +9,7 @@ item_state = "flashbang" var/bomb_state = "chembomb" var/payload_name = null // used for spawned grenades - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force = 2 var/prime_sound = 'sound/items/Screwdriver2.ogg' var/stage = EMPTY @@ -332,7 +332,7 @@ bomb_state = "largebomb" allowed_containers = list(/obj/item/weapon/reagent_containers/glass,/obj/item/weapon/reagent_containers/food/condiment, /obj/item/weapon/reagent_containers/food/drinks) - origin_tech = "combat=3;materials=3" + origin_tech = "combat=3;engineering=3" affected_area = 4 @@ -539,4 +539,4 @@ #undef EMPTY #undef WIRED -#undef READY \ No newline at end of file +#undef READY diff --git a/code/game/objects/items/weapons/grenades/clowngrenade.dm b/code/game/objects/items/weapons/grenades/clowngrenade.dm index 0fcdceff9ac..0d24bd80a95 100644 --- a/code/game/objects/items/weapons/grenades/clowngrenade.dm +++ b/code/game/objects/items/weapons/grenades/clowngrenade.dm @@ -3,7 +3,7 @@ desc = "HONK! brand Bananas. In a special applicator for rapid slipping of wide areas." icon_state = "banana" item_state = "flashbang" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force = 2.0 var/stage = 0 var/state = 0 @@ -74,4 +74,4 @@ if(istype(hit_atom ,/mob/living)) var/mob/living/M = hit_atom M.take_organ_damage(0, burned) - return ..() \ No newline at end of file + return ..() diff --git a/code/game/objects/items/weapons/grenades/emgrenade.dm b/code/game/objects/items/weapons/grenades/emgrenade.dm index 12dd3b7585e..9840604ccff 100644 --- a/code/game/objects/items/weapons/grenades/emgrenade.dm +++ b/code/game/objects/items/weapons/grenades/emgrenade.dm @@ -3,7 +3,7 @@ desc = "It is designed to wreak havoc on electronic systems." icon_state = "emp" item_state = "emp" - origin_tech = "materials=2;magnets=3" + origin_tech = "magnets=3;combat=2" /obj/item/weapon/grenade/empgrenade/prime() update_mob() diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 3b82b972663..6aa33fc9714 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -2,7 +2,7 @@ name = "flashbang" icon_state = "flashbang" item_state = "flashbang" - origin_tech = "materials=2;combat=1" + origin_tech = "materials=2;combat=3" /obj/item/weapon/grenade/flashbang/prime() update_mob() diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index 745afd967ee..13b0f0b8140 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -17,7 +17,7 @@ /obj/item/weapon/grenade/iedcasing name = "improvised explosive assembly" desc = "An igniter stuffed into an aluminum shell." - w_class = 2 + w_class = WEIGHT_CLASS_SMALL icon = 'icons/obj/grenade.dmi' icon_state = "improvised_grenade" item_state = "flashbang" @@ -67,7 +67,7 @@ /obj/item/weapon/grenade/iedcasing/filled name = "improvised firebomb" desc = "A weak, improvised incendiary device." - w_class = 2 + w_class = WEIGHT_CLASS_SMALL icon = 'icons/obj/grenade.dmi' icon_state = "improvised_grenade" item_state = "flashbang" diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index af855e63016..88abd66913f 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -1,7 +1,7 @@ /obj/item/weapon/grenade name = "grenade" desc = "A hand held grenade, with an adjustable timer." - w_class = 2 + w_class = WEIGHT_CLASS_SMALL icon = 'icons/obj/grenade.dmi' icon_state = "grenade" item_state = "flashbang" diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm index fe3cb3a0c12..3804555402c 100644 --- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm +++ b/code/game/objects/items/weapons/grenades/spawnergrenade.dm @@ -35,20 +35,20 @@ name = "manhack delivery grenade" spawner_type = /mob/living/simple_animal/hostile/viscerator deliveryamt = 5 - origin_tech = "materials=3;magnets=4;syndicate=4" + origin_tech = "materials=3;magnets=4;syndicate=3" /obj/item/weapon/grenade/spawnergrenade/spesscarp name = "carp delivery grenade" spawner_type = /mob/living/simple_animal/hostile/carp deliveryamt = 5 - origin_tech = "materials=3;magnets=4;syndicate=4" + origin_tech = "materials=3;magnets=4;syndicate=3" /obj/item/weapon/grenade/spawnergrenade/feral_cats name = "feral cat delivery grenade" desc = "This grenade contains 8 dehydrated feral cats in a similar manner to dehydrated monkeys, which, upon detonation, will be rehydrated by a small reservoir of water contained within the grenade. These cats will then attack anything in sight." spawner_type = /mob/living/simple_animal/hostile/feral_cat deliveryamt = 5 - origin_tech = "materials=3;magnets=4;syndicate=4" + origin_tech = "materials=3;magnets=4;syndicate=3" /obj/item/weapon/grenade/spawnergrenade/feral_cats/prime() //Own proc for this because the regular one would flash people which was dumb. update_mob() @@ -65,4 +65,4 @@ qdel(src) - return \ No newline at end of file + return diff --git a/code/game/objects/items/weapons/grenades/syndieminibomb.dm b/code/game/objects/items/weapons/grenades/syndieminibomb.dm index 160c6846d3c..a154a4a5583 100644 --- a/code/game/objects/items/weapons/grenades/syndieminibomb.dm +++ b/code/game/objects/items/weapons/grenades/syndieminibomb.dm @@ -4,9 +4,9 @@ icon = 'icons/obj/grenade.dmi' icon_state = "syndicate" item_state = "flashbang" - origin_tech = "materials=3;magnets=4;syndicate=4" + origin_tech = "materials=3;magnets=4;syndicate=3" /obj/item/weapon/grenade/syndieminibomb/prime() update_mob() explosion(src.loc,1,2,4,flame_range = 2) - qdel(src) \ No newline at end of file + qdel(src) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 723920e7a5c..f22c706d4f5 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -7,11 +7,11 @@ flags = CONDUCT slot_flags = SLOT_BELT throwforce = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 2 throw_range = 5 materials = list(MAT_METAL=500) - origin_tech = "materials=1" + origin_tech = "engineering=3;combat=3" breakouttime = 600 //Deciseconds = 60s = 1 minutes var/cuffsound = 'sound/weapons/handcuffs.ogg' var/trashtype = null //For disposable cuffs @@ -75,6 +75,7 @@ name = "cable restraints" desc = "Looks like some cables tied together. Could be used to tie something up." icon_state = "cuff_white" + origin_tech = "engineering=2" materials = list(MAT_METAL=150, MAT_GLASS=75) breakouttime = 300 //Deciseconds = 30s cuffsound = 'sound/weapons/cablecuff.ogg' diff --git a/code/game/objects/items/weapons/highlander_swords.dm b/code/game/objects/items/weapons/highlander_swords.dm new file mode 100644 index 00000000000..22686b90c96 --- /dev/null +++ b/code/game/objects/items/weapons/highlander_swords.dm @@ -0,0 +1,50 @@ + +//Highlander Style Martial Art +// Prevents use of guns, but makes the highlander impervious to ranged attacks. Their bravery in battle shields them from the weapons of COWARDS! + +/datum/martial_art/highlander + name = "Highlander Style" + deflection_chance = 100 + no_guns = TRUE + no_guns_message = "You'd never stoop so low as to use the weapon of a COWARD!" + + +//Highlander Claymore +// Grants the wielder the Highlander Style Martial Art + +/obj/item/weapon/claymore/highlander + name = "Highlander Claymore" + desc = "Imbues the wielder with legendary martial prowress and a nigh-unquenchable thirst for glorious battle!" + var/datum/martial_art/highlander/style = new + +/obj/item/weapon/claymore/highlander/Destroy() + if(ishuman(loc)) //just in case it gets destroyed while in someone's possession, such as due to acid or something? + var/mob/living/carbon/human/H = loc + style.remove(H) + QDEL_NULL(style) + return ..() + +/obj/item/weapon/claymore/highlander/equipped(mob/user, slot) + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + if(slot == slot_r_hand || slot == slot_l_hand) + if(H.martial_art && H.martial_art != style) + style.teach(H, 1) + to_chat(H, "THERE CAN ONLY BE ONE!") + else if(H.martial_art && H.martial_art == style) + style.remove(H) + var/obj/item/weapon/claymore/highlander/sword = H.is_in_hands(/obj/item/weapon/claymore/highlander) + if(sword) + //if we have a highlander sword in the other hand, relearn the style from that sword. + sword.style.teach(H, 1) + +/obj/item/weapon/claymore/highlander/dropped(mob/user) + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + style.remove(H) + var/obj/item/weapon/claymore/highlander/sword = H.is_in_hands(/obj/item/weapon/claymore/highlander) + if(sword) + //if we have a highlander sword in the other hand, relearn the style from that sword. + sword.style.teach(H, 1) diff --git a/code/game/objects/items/weapons/holosign.dm b/code/game/objects/items/weapons/holosign.dm index bfd16e71003..3ec25dfabaf 100644 --- a/code/game/objects/items/weapons/holosign.dm +++ b/code/game/objects/items/weapons/holosign.dm @@ -5,11 +5,11 @@ icon_state = "signmaker" item_state = "electronic" force = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throwforce = 0 throw_speed = 3 throw_range = 7 - origin_tech = "programming=3" + origin_tech = "magnets=1;programming=3" var/list/signs = list() var/max_signs = 20 diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm index a6a1039f1c7..c4c4175d2fa 100644 --- a/code/game/objects/items/weapons/holy_weapons.dm +++ b/code/game/objects/items/weapons/holy_weapons.dm @@ -7,7 +7,7 @@ throw_speed = 3 throw_range = 4 throwforce = 10 - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/reskinned = FALSE var/reskin_selectable = TRUE //set to FALSE if a subtype is meant to not normally be available as a reskin option (fluff ones will get re-added through their list) var/list/fluff_transformations = list() //does it have any special transformations only accessible to it? Should only be subtypes of /obj/item/weapon/nullrod @@ -71,7 +71,7 @@ item_state = "disintegrate" desc = "This hand of yours glows with an awesome power!" flags = ABSTRACT | NODROP - w_class = 5 + w_class = WEIGHT_CLASS_HUGE hitsound = 'sound/weapons/sear.ogg' damtype = BURN attack_verb = list("punched", "cross countered", "pummeled") @@ -81,7 +81,7 @@ icon_state = "godstaff-red" item_state = "godstaff-red" desc = "It has a mysterious, protective aura." - w_class = 5 + w_class = WEIGHT_CLASS_HUGE force = 5 slot_flags = SLOT_BACK block_chance = 50 @@ -96,7 +96,7 @@ icon_state = "claymore" item_state = "claymore" desc = "A weapon fit for a crusade!" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK|SLOT_BELT block_chance = 30 sharp = 1 @@ -183,7 +183,7 @@ icon_state = "scythe0" item_state = "scythe0" desc = "Ask not for whom the bell tolls..." - w_class = 4 + w_class = WEIGHT_CLASS_BULKY armour_penetration = 35 slot_flags = SLOT_BACK sharp = 1 @@ -255,7 +255,7 @@ item_state = "hammeron" desc = "This war hammer cost the chaplain fourty thousand space dollars." slot_flags = SLOT_BELT - w_class = 5 + w_class = WEIGHT_CLASS_HUGE attack_verb = list("smashed", "bashed", "hammered", "crunched") /obj/item/weapon/nullrod/chainsaw @@ -263,7 +263,7 @@ desc = "Good? Bad? You're the guy with the chainsaw hand." icon_state = "chainsaw1" item_state = "mounted_chainsaw" - w_class = 5 + w_class = WEIGHT_CLASS_HUGE flags = NODROP | ABSTRACT sharp = 1 edge = 1 @@ -322,7 +322,7 @@ icon_state = "arm_blade" item_state = "arm_blade" flags = ABSTRACT | NODROP - w_class = 5 + w_class = WEIGHT_CLASS_HUGE sharp = 1 edge = 1 @@ -349,7 +349,7 @@ /obj/item/weapon/nullrod/claymore/bostaff //May as well make it a "claymore" and inherit the blocking name = "monk's staff" desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts, now used to harass the clown." - w_class = 4 + w_class = WEIGHT_CLASS_BULKY force = 13 block_chance = 40 slot_flags = SLOT_BACK @@ -365,7 +365,7 @@ name = "arrhythmic knife" icon_state = "crysknife" item_state = "crysknife" - w_class = 5 + w_class = WEIGHT_CLASS_HUGE desc = "They say fear is the true mind killer, but stabbing them in the head works too. Honour compels you to not sheathe it once drawn." sharp = 1 edge = 1 @@ -389,7 +389,7 @@ name = "unholy pitchfork" icon_state = "pitchfork0" item_state = "pitchfork0" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL desc = "Holding this makes you look absolutely devilish." attack_verb = list("poked", "impaled", "pierced", "jabbed") hitsound = 'sound/weapons/bladeslice.ogg' @@ -518,7 +518,7 @@ reskin_selectable = FALSE icon_state = "godstaff-red" item_state = "godstaff-red" - w_class = 5 + w_class = WEIGHT_CLASS_HUGE force = 5 slot_flags = SLOT_BACK block_chance = 50 diff --git a/code/game/objects/items/weapons/implants/implant_freedom.dm b/code/game/objects/items/weapons/implants/implant_freedom.dm index 3e269622e61..44474038406 100644 --- a/code/game/objects/items/weapons/implants/implant_freedom.dm +++ b/code/game/objects/items/weapons/implants/implant_freedom.dm @@ -3,7 +3,7 @@ desc = "Use this to escape from those evil Red Shirts." icon_state = "freedom" item_color = "r" - origin_tech = "materials=2;magnets=3;biotech=3;syndicate=4" + origin_tech = "combat=5;magnets=3;biotech=4;syndicate=2" uses = 4 @@ -48,4 +48,4 @@ No Implant Specifics"} /obj/item/weapon/implantcase/freedom/New() imp = new /obj/item/weapon/implant/freedom(src) - ..() \ No newline at end of file + ..() diff --git a/code/game/objects/items/weapons/implants/implant_misc.dm b/code/game/objects/items/weapons/implants/implant_misc.dm index c949d7e561e..5d1d54e7ddf 100644 --- a/code/game/objects/items/weapons/implants/implant_misc.dm +++ b/code/game/objects/items/weapons/implants/implant_misc.dm @@ -2,7 +2,7 @@ name = "firearms authentication implant" desc = "Lets you shoot your guns" icon_state = "auth" - origin_tech = "materials=2;magnets=2;programming=2;biotech=5;syndicate=5" + origin_tech = "magnets=2;programming=7;biotech=5;syndicate=5" activated = 0 /obj/item/weapon/implant/weapons_auth/get_data() @@ -53,7 +53,7 @@ name = "emp implant" desc = "Triggers an EMP." icon_state = "emp" - origin_tech = "materials=2;biotech=3;magnets=4;syndicate=4" + origin_tech = "biotech=3;magnets=4;syndicate=1" uses = 2 /obj/item/weapon/implant/emp/activate() @@ -65,4 +65,4 @@ /obj/item/weapon/implant/cortical name = "cortical stack" desc = "A fist-sized mass of biocircuits and chips." - icon_state = "implant_evil" \ No newline at end of file + icon_state = "implant_evil" diff --git a/code/game/objects/items/weapons/implants/implant_storage.dm b/code/game/objects/items/weapons/implants/implant_storage.dm index fba9c1377ef..0fd4fc76382 100644 --- a/code/game/objects/items/weapons/implants/implant_storage.dm +++ b/code/game/objects/items/weapons/implants/implant_storage.dm @@ -1,9 +1,9 @@ /obj/item/weapon/storage/hidden/implant name = "bluespace pocket" storage_slots = 2 - max_w_class = 3 - max_combined_w_class = 6 - w_class = 4 + max_w_class = WEIGHT_CLASS_NORMAL + max_combined_w_class = WEIGHT_CLASS_GIGANTIC + w_class = WEIGHT_CLASS_BULKY cant_hold = list(/obj/item/weapon/disk/nuclear) silent = 1 @@ -12,7 +12,7 @@ name = "storage implant" desc = "Stores up to two big items in a bluespace pocket." icon_state = "storage" - origin_tech = "materials=2;magnets=4;bluespace=4;syndicate=4" + origin_tech = "materials=2;magnets=4;bluespace=5;syndicate=4" item_color = "r" var/obj/item/weapon/storage/hidden/implant/storage @@ -58,4 +58,4 @@ /obj/item/weapon/implanter/storage/New() imp = new /obj/item/weapon/implant/storage(src) - ..() \ No newline at end of file + ..() diff --git a/code/game/objects/items/weapons/implants/implant_track.dm b/code/game/objects/items/weapons/implants/implant_track.dm index d0d1159a9c5..e0d44cdefcf 100644 --- a/code/game/objects/items/weapons/implants/implant_track.dm +++ b/code/game/objects/items/weapons/implants/implant_track.dm @@ -30,3 +30,11 @@ circuitry. As a result neurotoxins can cause massive damage.
Implant Specifics:
"} return dat + +/obj/item/weapon/implantcase/track + name = "implant case - 'Tracking'" + desc = "A glass case containing a tracking implant." + +/obj/item/weapon/implantcase/track/New() + imp = new /obj/item/weapon/implant/tracking(src) + ..() \ No newline at end of file diff --git a/code/game/objects/items/weapons/implants/implantcase.dm b/code/game/objects/items/weapons/implants/implantcase.dm index 41354136648..b35fecf77b1 100644 --- a/code/game/objects/items/weapons/implants/implantcase.dm +++ b/code/game/objects/items/weapons/implants/implantcase.dm @@ -6,7 +6,7 @@ item_state = "implantcase" throw_speed = 2 throw_range = 5 - w_class = 1 + w_class = WEIGHT_CLASS_TINY origin_tech = "materials=1;biotech=2" materials = list(MAT_GLASS=500) var/obj/item/weapon/implant/imp = null @@ -98,4 +98,4 @@ /obj/item/weapon/implantcase/death_alarm/New() imp = new /obj/item/weapon/implant/death_alarm(src) - ..() \ 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 8209de8da80..92d35d0ef87 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -6,8 +6,8 @@ item_state = "syringe_0" throw_speed = 3 throw_range = 5 - w_class = 2 - origin_tech = "materials=1;biotech=3;programming=2" + w_class = WEIGHT_CLASS_SMALL + origin_tech = "materials=2;biotech=3" materials = list(MAT_METAL=600, MAT_GLASS=200) toolspeed = 1 var/obj/item/weapon/implant/imp = null @@ -86,4 +86,4 @@ /obj/item/weapon/implanter/death_alarm/New() imp = new /obj/item/weapon/implant/death_alarm(src) - ..() \ No newline at end of file + ..() diff --git a/code/game/objects/items/weapons/implants/implantpad.dm b/code/game/objects/items/weapons/implants/implantpad.dm index cd988d6310e..2e427638fd1 100644 --- a/code/game/objects/items/weapons/implants/implantpad.dm +++ b/code/game/objects/items/weapons/implants/implantpad.dm @@ -8,7 +8,7 @@ item_state = "electronic" throw_speed = 3 throw_range = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/obj/item/weapon/implantcase/case = null /obj/item/weapon/implantpad/Destroy() diff --git a/code/game/objects/items/weapons/implants/implantuplink.dm b/code/game/objects/items/weapons/implants/implantuplink.dm index 3ccea8aee20..0e6332e78f1 100644 --- a/code/game/objects/items/weapons/implants/implantuplink.dm +++ b/code/game/objects/items/weapons/implants/implantuplink.dm @@ -3,7 +3,7 @@ desc = "Summon things." icon = 'icons/obj/radio.dmi' icon_state = "radio" - origin_tech = "materials=2;magnets=4;programming=4;biotech=4;syndicate=8;bluespace=5" + origin_tech = "materials=4;magnets=4;programming=4;biotech=4;syndicate=5;bluespace=5" /obj/item/weapon/implant/uplink/New() hidden_uplink = new(src) @@ -32,4 +32,4 @@ /obj/item/weapon/implanter/uplink/New() imp = new /obj/item/weapon/implant/uplink(src) - ..() \ No newline at end of file + ..() diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 069bf06ddfb..c3763f4924e 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -12,18 +12,18 @@ /obj/item/weapon/kitchen icon = 'icons/obj/kitchen.dmi' + origin_tech = "materials=1" /* * Utensils */ /obj/item/weapon/kitchen/utensil force = 5.0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throwforce = 0.0 throw_speed = 3 throw_range = 5 flags = CONDUCT - origin_tech = "materials=1" attack_verb = list("attacked", "stabbed", "poked") hitsound = 'sound/weapons/bladeslice.ogg' sharp = 0 @@ -91,13 +91,12 @@ desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come." flags = CONDUCT force = 10 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throwforce = 10 hitsound = 'sound/weapons/bladeslice.ogg' throw_speed = 3 throw_range = 6 materials = list(MAT_METAL=12000) - origin_tech = "materials=1" attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") no_embed = 1 sharp = 1 @@ -122,7 +121,7 @@ desc = "The unearthly energies that once powered this blade are now dormant." icon = 'icons/obj/wizard.dmi' icon_state = "render" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL /obj/item/weapon/kitchen/knife/butcher name = "butcher's cleaver" @@ -132,7 +131,7 @@ force = 15 throwforce = 8 attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL /obj/item/weapon/kitchen/knife/butcher/meatcleaver name = "Meat Cleaver" @@ -149,7 +148,7 @@ desc = "A military combat utility survival knife." force = 20 throwforce = 20 - origin_tech = "materials=2;combat=4" + origin_tech = "materials=3;combat=4" attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") /obj/item/weapon/kitchen/knife/carrotshiv @@ -175,7 +174,7 @@ throwforce = 10.0 throw_speed = 3 throw_range = 7 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") /* Trays moved to /obj/item/weapon/storage/bag */ @@ -192,7 +191,7 @@ throwforce = 5 throw_speed = 3 throw_range = 3 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed") /obj/item/weapon/kitchen/mould/bear diff --git a/code/game/objects/items/weapons/legcuffs.dm b/code/game/objects/items/weapons/legcuffs.dm index 3bec7f32f9e..cbb8c3d4ed2 100644 --- a/code/game/objects/items/weapons/legcuffs.dm +++ b/code/game/objects/items/weapons/legcuffs.dm @@ -6,8 +6,8 @@ icon_state = "handcuff" flags = CONDUCT throwforce = 0 - w_class = 3 - origin_tech = "materials=1" + w_class = WEIGHT_CLASS_NORMAL + origin_tech = "engineering=3;combat=3" slowdown = 7 breakouttime = 300 //Deciseconds = 30s = 0.5 minute @@ -17,6 +17,7 @@ throw_range = 1 icon_state = "beartrap" desc = "A trap used to catch bears and other legged creatures." + origin_tech = "engineering=4" var/armed = 0 var/trap_damage = 20 var/obj/item/weapon/grenade/iedcasing/IED = null @@ -196,7 +197,7 @@ desc = "A specialized hard-light bola designed to ensnare fleeing criminals and aid in arrests." icon_state = "ebola" hitsound = 'sound/weapons/tase.ogg' - w_class = 2 + w_class = WEIGHT_CLASS_SMALL breakouttime = 60 /obj/item/weapon/restraints/legcuffs/bola/energy/throw_impact(atom/hit_atom) @@ -204,4 +205,4 @@ var/obj/item/weapon/restraints/legcuffs/beartrap/B = new /obj/item/weapon/restraints/legcuffs/beartrap/energy/cyborg(get_turf(hit_atom)) B.Crossed(hit_atom) qdel(src) - ..() \ No newline at end of file + ..() diff --git a/code/game/objects/items/weapons/lighters.dm b/code/game/objects/items/weapons/lighters.dm index 307ec829072..6525351fd67 100644 --- a/code/game/objects/items/weapons/lighters.dm +++ b/code/game/objects/items/weapons/lighters.dm @@ -9,7 +9,7 @@ item_state = "lighter-g" var/icon_on = "lighter-g-on" var/icon_off = "lighter-g" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throwforce = 4 flags = CONDUCT slot_flags = SLOT_BELT @@ -35,7 +35,7 @@ if(user.r_hand == src || user.l_hand == src || isrobot(user)) if(!lit) lit = 1 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY icon_state = icon_on item_state = icon_on if(istype(src, /obj/item/weapon/lighter/zippo) ) @@ -59,7 +59,7 @@ processing_objects.Add(src) else lit = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY icon_state = icon_off item_state = icon_off if(istype(src, /obj/item/weapon/lighter/zippo) ) @@ -147,7 +147,7 @@ icon_state = "match_unlit" var/lit = 0 var/smoketime = 5 - w_class = 1 + w_class = WEIGHT_CLASS_TINY origin_tech = "materials=1" attack_verb = list("burnt", "singed") diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index 2178ccbb726..973f25e6d2f 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -580,11 +580,8 @@

Protolathe

This machine is an advanced form of the Autolathe that produce non-circuit designs. Unlike the Autolathe, it can use processed metal, glass, solid plasma, silver, gold, and diamonds along with a variety of chemicals to produce devices. The downside is that, again, not all devices you make are 100% reliable when you first discover them. -

Reliability and You

- As it has been stated, many devices when they're first discovered do not have a 100% reliablity when you first discover them. Instead, the reliablity of the device is dependent upon a base reliability value, whatever improvements to the design you've discovered through the Destructive Analyzer, and any advancements you've made with the device's source technologies. To be able to improve the reliability of a device, you have to use the device until it breaks beyond repair. Once that happens, you can analyze it in a Destructive Analyzer. Once the device reachs a certain minimum reliability, you'll gain tech advancements from it. -

Building a Better Machine

- Many machines produces from circuit boards and inserted into a machine frame require a variety of parts to construct. These are parts like capacitors, batteries, matter bins, and so forth. As your knowledge of science improves, more advanced versions are unlocked. If you use these parts when constructing something, its attributes may be improved. For example, if you use an advanced matter bin when constructing an autolathe (rather then a regular one), it'll hold more materials. Experiment around with stock parts of various qualities to see how they affect the end results! Be warned, however: Tier 3 and higher stock parts don't have 100% reliability and their low reliability may affect the reliability of the end machine. + Many machines produces from circuit boards and inserted into a machine frame require a variety of parts to construct. These are parts like capacitors, batteries, matter bins, and so forth. As your knowledge of science improves, more advanced versions are unlocked. If you use these parts when constructing something, its attributes may be improved. For example, if you use an advanced matter bin when constructing an autolathe (rather then a regular one), it'll hold more materials. Experiment around with stock parts of various qualities to see how they affect the end results! "}*/ diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index afc5dbd93ad..1c1dbbd8363 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -2,8 +2,8 @@ var/active = 0 var/force_on = 30 //force when active var/throwforce_on = 20 - w_class = 2 - var/w_class_on = 4 + w_class = WEIGHT_CLASS_SMALL + var/w_class_on = WEIGHT_CLASS_BULKY var/icon_state_on = "axe1" var/list/attack_verb_on = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") no_embed = 1 // Physically impossible for energy weapons to embed themselves into people, this should fix that. -- Dave @@ -61,12 +61,12 @@ throwforce_on = 30 throw_speed = 3 throw_range = 5 - w_class = 3 - w_class_on = 5 + w_class = WEIGHT_CLASS_NORMAL + w_class_on = WEIGHT_CLASS_HUGE hitsound = "swing_hit" flags = CONDUCT armour_penetration = 100 - origin_tech = "combat=3" + origin_tech = "combat=4;magnets=3" attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") attack_verb_on = list() sharp = 1 @@ -86,7 +86,7 @@ throw_range = 5 hitsound = "swing_hit" armour_penetration = 35 - origin_tech = "magnets=3;syndicate=4" + origin_tech = "combat=3;magnets=4;syndicate=4" block_chance = 50 sharp = 1 edge = 1 @@ -123,13 +123,12 @@ sharp = 1 edge = 1 hitsound = 'sound/weapons/circsawhit.ogg' - origin_tech = "materials=3;biotech=3;syndicate=3" icon = 'icons/obj/surgery.dmi' icon_state = "esaw_0" icon_state_on = "esaw_1" hitcost = 75 //Costs more than a standard cyborg esword item_color = null - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL /obj/item/weapon/melee/energy/sword/cyborg/saw/New() ..() @@ -207,7 +206,7 @@ throwforce = 1//Throwing or dropping the item deletes it. throw_speed = 3 throw_range = 1 - w_class = 4//So you can't hide it in your pocket or some such. + w_class = WEIGHT_CLASS_BULKY //So you can't hide it in your pocket or some such. armour_penetration = 50 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") var/datum/effect/system/spark_spread/spark_system @@ -223,4 +222,4 @@ qdel(src) /obj/item/weapon/melee/energy/blade/attack_self(mob/user) - return \ No newline at end of file + return diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index 7a05ca00cb6..f4ccf9fac65 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -10,8 +10,8 @@ slot_flags = SLOT_BELT force = 10 throwforce = 7 - w_class = 3 - origin_tech = "combat=4" + w_class = WEIGHT_CLASS_NORMAL + origin_tech = "combat=5" attack_verb = list("flogged", "whipped", "lashed", "disciplined") hitsound = 'sound/weapons/slash.ogg' //pls replace @@ -28,7 +28,7 @@ flags = CONDUCT force = 15 throwforce = 10 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY block_chance = 50 armour_penetration = 75 sharp = 1 @@ -50,7 +50,7 @@ item_state = "icepick" force = 15 throwforce = 10 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL attack_verb = list("stabbed", "jabbed", "iced,") /obj/item/weapon/melee/candy_sword @@ -60,5 +60,5 @@ item_state = "candy_sword" force = 10 throwforce = 7 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL attack_verb = list("slashed", "stabbed", "sliced", "caned") \ No newline at end of file diff --git a/code/game/objects/items/weapons/misc.dm b/code/game/objects/items/weapons/misc.dm index ffd021aae4b..cd86a04a377 100644 --- a/code/game/objects/items/weapons/misc.dm +++ b/code/game/objects/items/weapons/misc.dm @@ -30,7 +30,7 @@ flags = CONDUCT force = 5.0 throwforce = 7.0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=50) attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed", "Vaudevilled") @@ -43,7 +43,7 @@ icon = 'icons/obj/items.dmi' icon_state = "c_tube" throwforce = 1 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 4 throw_range = 5 @@ -65,7 +65,7 @@ var/data = "" var/base_url = "http://svn.slurm.us/public/spacestation13/misc/game_kit" item_state = "sheet-metal" - w_class = 5 + w_class = WEIGHT_CLASS_HUGE */ /obj/item/weapon/gift @@ -76,7 +76,7 @@ var/size = 3.0 var/obj/item/gift = null item_state = "gift" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY /obj/item/weapon/kidanglobe name = "Kidan homeworld globe" @@ -134,7 +134,7 @@ throwforce = 2 throw_speed = 1 throw_range = 4 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL attack_verb = list("called", "rang") hitsound = 'sound/weapons/ring.ogg' var/cooldown = 0 diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 4495f637e56..93144dc6c17 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -9,7 +9,7 @@ throwforce = 5.0 throw_speed = 3 throw_range = 7 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL attack_verb = list("mopped", "bashed", "bludgeoned", "whacked") burn_state = FLAMMABLE var/mopping = 0 @@ -78,6 +78,7 @@ mopcap = 15 icon_state = "advmop" item_state = "mop" //meh will do for now until TG makes one + origin_tech = "materials=3;engineering=3" force = 6 throwforce = 8 throw_range = 4 diff --git a/code/game/objects/items/weapons/paint.dm b/code/game/objects/items/weapons/paint.dm index 67d4f078264..dc5c4d048b5 100644 --- a/code/game/objects/items/weapons/paint.dm +++ b/code/game/objects/items/weapons/paint.dm @@ -7,7 +7,7 @@ icon_state = "paint_neutral" item_state = "paintcan" materials = list(MAT_METAL=200) - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL burn_state = FLAMMABLE burntime = 5 amount_per_transfer_from_this = 5 @@ -63,4 +63,4 @@ /obj/item/weapon/reagent_containers/glass/paint/remover name = "paint remover bucket" - list_reagents = list("paint_remover" = 70) \ No newline at end of file + list_reagents = list("paint_remover" = 70) diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm index 307da253e64..116391803bd 100644 --- a/code/game/objects/items/weapons/pneumaticCannon.dm +++ b/code/game/objects/items/weapons/pneumaticCannon.dm @@ -1,7 +1,7 @@ /obj/item/weapon/pneumatic_cannon name = "pneumatic cannon" desc = "A gas-powered cannon that can fire any object loaded into it." - w_class = 4 + w_class = WEIGHT_CLASS_BULKY force = 8 //Very heavy attack_verb = list("bludgeoned", "smashed", "beaten") icon = 'icons/obj/pneumaticCannon.dmi' @@ -132,7 +132,7 @@ name = "improvised pneumatic cannon" desc = "A gas-powered, object-firing cannon made out of common parts." force = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL maxWeightClass = 7 gasPerThrow = 5 diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index de5d788a9f3..d291329f354 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -15,7 +15,6 @@ materials = list(MAT_METAL=700, MAT_GLASS=50) var/rigged = 0 // true if rigged to explode var/chargerate = 100 //how much power is given every tick in a recharger - var/minor_fault = 0 //If not 100% reliable, it will build up faults. var/self_recharge = 0 //does it self recharge, over time, or not? var/grown_battery = FALSE // If it's a grown that acts as a battery, add a wire overlay to it. @@ -102,7 +101,7 @@ /obj/item/weapon/stock_parts/cell/super name = "super-capacity power cell" - origin_tech = "powerstorage=5" + origin_tech = "powerstorage=3;materials=3" icon_state = "scell" maxcharge = 20000 materials = list(MAT_GLASS=300) @@ -115,7 +114,7 @@ /obj/item/weapon/stock_parts/cell/hyper name = "hyper-capacity power cell" - origin_tech = "powerstorage=6" + origin_tech = "powerstorage=4;engineering=4;materials=4" icon_state = "hpcell" maxcharge = 30000 materials = list(MAT_GLASS=400) @@ -128,7 +127,7 @@ /obj/item/weapon/stock_parts/cell/bluespace name = "bluespace power cell" - origin_tech = "powerstorage=7" + origin_tech = "powerstorage=5;bluespace=4;materials=4;engineering=4" icon_state = "bscell" maxcharge = 40000 materials = list(MAT_GLASS=600) @@ -142,7 +141,7 @@ /obj/item/weapon/stock_parts/cell/infinite name = "infinite-capacity power cell!" icon_state = "icell" - origin_tech = null + origin_tech = "powerstorage=7" maxcharge = 30000 materials = list(MAT_GLASS=1000) rating = 6 @@ -161,13 +160,12 @@ maxcharge = 300 materials = list() rating = 1 - minor_fault = 1 grown_battery = TRUE //it has the overlays for wires /obj/item/weapon/stock_parts/cell/high/slime name = "charged slime core" desc = "A yellow slime core infused with plasma, it crackles with power." - origin_tech = "powerstorage=2;biotech=4" + origin_tech = "powerstorage=5;biotech=4" icon = 'icons/mob/slimes.dmi' icon_state = "yellow slime extract" materials = list() diff --git a/code/game/objects/items/weapons/powerfist.dm b/code/game/objects/items/weapons/powerfist.dm index 9ee2c46728e..218fe47ed6b 100644 --- a/code/game/objects/items/weapons/powerfist.dm +++ b/code/game/objects/items/weapons/powerfist.dm @@ -8,7 +8,7 @@ force = 12 throwforce = 10 throw_range = 7 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL origin_tech = "combat=5;powerstorage=3;syndicate=3" var/click_delay = 1.5 var/fisto_setting = 1 diff --git a/code/game/objects/items/weapons/scissors.dm b/code/game/objects/items/weapons/scissors.dm index 6cfb677bd21..5571640f08f 100644 --- a/code/game/objects/items/weapons/scissors.dm +++ b/code/game/objects/items/weapons/scissors.dm @@ -6,7 +6,7 @@ force = 5 sharp = 1 edge = 1 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("slices", "cuts", "stabs", "jabs") toolspeed = 1 diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm index 0b45cd4a42e..4ad7f70e016 100644 --- a/code/game/objects/items/weapons/scrolls.dm +++ b/code/game/objects/items/weapons/scrolls.dm @@ -4,17 +4,17 @@ icon = 'icons/obj/wizard.dmi' icon_state = "scroll" var/uses = 4.0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL item_state = "paper" throw_speed = 4 throw_range = 20 - origin_tech = "bluespace=4" + origin_tech = "bluespace=6" burn_state = FLAMMABLE /obj/item/weapon/teleportation_scroll/apprentice name = "lesser scroll of teleportation" uses = 1 - origin_tech = "bluespace 2" + origin_tech = "bluespace=5" /obj/item/weapon/teleportation_scroll/attack_self(mob/user as mob) user.set_machine(src) @@ -96,4 +96,4 @@ user.loc = pick(L) smoke.start() - src.uses -= 1 \ No newline at end of file + src.uses -= 1 diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm index 70073b38123..554347224eb 100644 --- a/code/game/objects/items/weapons/shards.dm +++ b/code/game/objects/items/weapons/shards.dm @@ -7,7 +7,7 @@ sharp = 1 edge = 1 desc = "Could probably be used as ... a throwing weapon?" - w_class = 1 + w_class = WEIGHT_CLASS_TINY force = 5.0 throwforce = 10.0 item_state = "shard-glass" @@ -112,4 +112,4 @@ src.pixel_x = rand(-5, 5) src.pixel_y = rand(-5, 5) else - return \ No newline at end of file + return diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 479cb278e91..6d4b1238d39 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -19,9 +19,9 @@ throwforce = 5 throw_speed = 2 throw_range = 3 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY materials = list(MAT_GLASS=7500, MAT_METAL=1000) - origin_tech = "materials=2" + origin_tech = "materials=3;combat=4" attack_verb = list("shoved", "bashed") var/cooldown = 0 //shield bash cooldown. based on world.time @@ -46,6 +46,7 @@ icon_state = "buckler" item_state = "buckler" materials = list() + origin_tech = "materials=1;combat=3;biotech=2" burn_state = FLAMMABLE block_chance = 30 @@ -58,8 +59,8 @@ throwforce = 3 throw_speed = 3 throw_range = 5 - w_class = 1 - origin_tech = "materials=4;magnets=3;syndicate=4" + w_class = WEIGHT_CLASS_TINY + origin_tech = "materials=4;magnets=5;syndicate=6" attack_verb = list("shoved", "bashed") var/active = 0 @@ -80,14 +81,14 @@ force = 10 throwforce = 8 throw_speed = 2 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY playsound(user, 'sound/weapons/saberon.ogg', 35, 1) to_chat(user, "[src] is now active.") else force = 3 throwforce = 3 throw_speed = 3 - w_class = 1 + w_class = WEIGHT_CLASS_TINY playsound(user, 'sound/weapons/saberoff.ogg', 35, 1) to_chat(user, "[src] can now be concealed.") if(istype(user,/mob/living/carbon/human)) @@ -102,12 +103,13 @@ desc = "An advanced riot shield made of lightweight materials that collapses for easy storage." icon = 'icons/obj/weapons.dmi' icon_state = "teleriot0" + origin_tech = "materials=3;combat=4;engineering=4" slot_flags = null force = 3 throwforce = 3 throw_speed = 3 throw_range = 4 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL var/active = 0 /obj/item/weapon/shield/riot/tele/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance) @@ -124,14 +126,14 @@ force = 8 throwforce = 5 throw_speed = 2 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK to_chat(user, "You extend \the [src].") else force = 3 throwforce = 3 throw_speed = 3 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL slot_flags = null to_chat(user, "[src] can now be concealed.") if(istype(user,/mob/living/carbon/human)) diff --git a/code/game/objects/items/weapons/signs.dm b/code/game/objects/items/weapons/signs.dm index fa68b09135e..006ad92dcf5 100644 --- a/code/game/objects/items/weapons/signs.dm +++ b/code/game/objects/items/weapons/signs.dm @@ -4,7 +4,7 @@ name = "blank picket sign" desc = "It's blank" force = 5 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY attack_verb = list("bashed","smacked") burn_state = FLAMMABLE @@ -42,4 +42,4 @@ reqs = list(/obj/item/stack/rods = 1, /obj/item/stack/sheet/cardboard = 2) time = 80 - category = CAT_MISC \ No newline at end of file + category = CAT_MISC diff --git a/code/game/objects/items/weapons/soap.dm b/code/game/objects/items/weapons/soap.dm index f21c0581888..e4183b5bafd 100644 --- a/code/game/objects/items/weapons/soap.dm +++ b/code/game/objects/items/weapons/soap.dm @@ -4,7 +4,7 @@ gender = PLURAL icon = 'icons/obj/items.dmi' icon_state = "soap" - w_class = 1 + w_class = WEIGHT_CLASS_TINY throwforce = 0 throw_speed = 4 throw_range = 20 @@ -53,4 +53,4 @@ /obj/item/weapon/soap/syndie desc = "An untrustworthy bar of soap made of strong chemical agents that dissolve blood faster." icon_state = "soapsyndie" - cleanspeed = 10 //much faster than mop so it is useful for traitors who want to clean crime scenes \ No newline at end of file + cleanspeed = 10 //much faster than mop so it is useful for traitors who want to clean crime scenes diff --git a/code/game/objects/items/weapons/staff.dm b/code/game/objects/items/weapons/staff.dm index 19c771873ce..b9d1896f70c 100644 --- a/code/game/objects/items/weapons/staff.dm +++ b/code/game/objects/items/weapons/staff.dm @@ -7,7 +7,7 @@ throwforce = 5.0 throw_speed = 1 throw_range = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL armour_penetration = 100 attack_verb = list("bludgeoned", "whacked", "disciplined") burn_state = FLAMMABLE @@ -73,4 +73,4 @@ throwforce = 5.0 throw_speed = 1 throw_range = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/items/weapons/stock_parts.dm b/code/game/objects/items/weapons/stock_parts.dm index 74fc3a5be6c..29d4d310b5d 100644 --- a/code/game/objects/items/weapons/stock_parts.dm +++ b/code/game/objects/items/weapons/stock_parts.dm @@ -5,7 +5,7 @@ desc = "Special mechanical module made to store, sort, and apply standard machine parts." icon_state = "RPED" item_state = "RPED" - w_class = 5 + w_class = WEIGHT_CLASS_HUGE can_hold = list(/obj/item/weapon/stock_parts) storage_slots = 50 use_to_pickup = 1 @@ -13,7 +13,7 @@ allow_quick_empty = 1 collection_mode = 1 display_contents_with_number = 1 - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL max_combined_w_class = 100 var/works_from_distance = 0 var/primary_sound = 'sound/items/rped.ogg' @@ -24,21 +24,20 @@ /obj/item/weapon/storage/part_replacer/afterattack(obj/machinery/T as obj, mob/living/carbon/human/user as mob, flag, params) if(flag) return - else - if(works_from_distance) - if(istype(T)) - if(T.component_parts) - T.exchange_parts(user, src) - user.Beam(T,icon_state="rped_upgrade",icon='icons/effects/effects.dmi',time=5) + else if(works_from_distance) + if(istype(T)) + if(T.component_parts) + T.exchange_parts(user, src) + user.Beam(T,icon_state="rped_upgrade",icon='icons/effects/effects.dmi',time=5) return /obj/item/weapon/storage/part_replacer/bluespace name = "bluespace rapid part exchange device" desc = "A version of the RPED that allows for replacement of parts and scanning from a distance, along with higher capacity for parts." icon_state = "BS_RPED" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL storage_slots = 400 - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL max_combined_w_class = 800 works_from_distance = 1 primary_sound = 'sound/items/PSHOOM.ogg' @@ -63,11 +62,11 @@ desc = "What?" gender = PLURAL icon = 'icons/obj/stock_parts.dmi' - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/rating = 1 toolspeed = 1 usesound = 'sound/items/Deconstruct.ogg' - + /obj/item/weapon/stock_parts/New() src.pixel_x = rand(-5.0, 5) src.pixel_y = rand(-5.0, 5) @@ -164,7 +163,7 @@ name = "super capacitor" desc = "A super-high capacity capacitor used in the construction of a variety of devices." icon_state = "super_capacitor" - origin_tech = "powerstorage=5;materials=4" + origin_tech = "powerstorage=4;engineering=4" rating = 3 materials = list(MAT_METAL=50, MAT_GLASS=50) @@ -172,7 +171,7 @@ name = "phasic scanning module" desc = "A compact, high resolution phasic scanning module used in the construction of certain devices." icon_state = "super_scan_module" - origin_tech = "magnets=5" + origin_tech = "magnets=4;engineering=4" rating = 3 materials = list(MAT_METAL=50, MAT_GLASS=20) @@ -180,7 +179,7 @@ name = "pico-manipulator" desc = "A tiny little manipulator used in the construction of certain devices." icon_state = "pico_mani" - origin_tech = "materials=5;programming=2" + origin_tech = "materials=4;programming=4;engineering=4" rating = 3 materials = list(MAT_METAL=30) @@ -188,7 +187,7 @@ name = "ultra-high-power micro-laser" icon_state = "ultra_high_micro_laser" desc = "A tiny laser used in certain devices." - origin_tech = "magnets=5" + origin_tech = "magnets=4;engineering=4" rating = 3 materials = list(MAT_METAL=10, MAT_GLASS=20) @@ -196,7 +195,7 @@ name = "super matter bin" desc = "A container for hold compressed matter awaiting re-construction." icon_state = "super_matter_bin" - origin_tech = "materials=5" + origin_tech = "materials=4;engineering=4" rating = 3 materials = list(MAT_METAL=80) @@ -206,7 +205,7 @@ name = "quadratic capacitor" desc = "An capacity capacitor used in the construction of a variety of devices." icon_state = "quadratic_capacitor" - origin_tech = "powerstorage=6;materials=5" + origin_tech = "powerstorage=5;materials=4;engineering=4" rating = 4 materials = list(MAT_METAL=50, MAT_GLASS=50) @@ -214,7 +213,7 @@ name = "triphasic scanning module" desc = "A compact, ultra resolution triphasic scanning module used in the construction of certain devices." icon_state = "triphasic_scan_module" - origin_tech = "magnets=6" + origin_tech = "magnets=5;materials=4;engineering=4" rating = 4 materials = list(MAT_METAL=50, MAT_GLASS=20) @@ -222,7 +221,7 @@ name = "femto-manipulator" desc = "A tiny little manipulator used in the construction of certain devices." icon_state = "femto_mani" - origin_tech = "materials=6;programming=3" + origin_tech = "materials=6;programming=4;engineering=4" rating = 4 materials = list(MAT_METAL=30) @@ -230,7 +229,7 @@ name = "quad-ultra micro-laser" icon_state = "quadultra_micro_laser" desc = "A tiny laser used in certain devices." - origin_tech = "magnets=6" + origin_tech = "magnets=5;materials=4;engineering=4" rating = 4 materials = list(MAT_METAL=10, MAT_GLASS=20) @@ -238,7 +237,7 @@ name = "bluespace matter bin" desc = "A container for hold compressed matter awaiting re-construction." icon_state = "bluespace_matter_bin" - origin_tech = "materials=6" + origin_tech = "materials=6;programming=4;engineering=4" rating = 4 materials = list(MAT_METAL=80) @@ -248,49 +247,49 @@ name = "subspace ansible" icon_state = "subspace_ansible" desc = "A compact module capable of sensing extradimensional activity." - origin_tech = "programming=2;magnets=3;materials=2;bluespace=1" + origin_tech = "programming=2;magnets=2;materials=2;bluespace=1" 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" + origin_tech = "programming=2;magnets=2" 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" + origin_tech = "programming=2;magnets=2;materials=2;bluespace=2" 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" + origin_tech = "programming=2;magnets=2;materials=2;bluespace=2" 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" + origin_tech = "programming=2;magnets=2;materials=2;bluespace=2" 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" + origin_tech = "magnets=2;materials=2;bluespace=2;plasmatech=2" 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" + origin_tech = "magnets=2;materials=2;bluespace=2" materials = list(MAT_METAL=50) /obj/item/weapon/research//Makes testing much less of a pain -Sieve @@ -298,4 +297,4 @@ icon = 'icons/obj/stock_parts.dmi' icon_state = "capacitor" desc = "A debug item for research." - origin_tech = "materials=8;programming=8;magnets=8;powerstorage=8;bluespace=8;combat=8;biotech=8;syndicate=8" + origin_tech = "materials=8;programming=8;magnets=8;powerstorage=8;bluespace=8;combat=8;biotech=8;syndicate=8;engineering=8;plasmatech=8;abductor=8" diff --git a/code/game/objects/items/weapons/storage/artistic_toolbox.dm b/code/game/objects/items/weapons/storage/artistic_toolbox.dm index 470c273bd69..1b6cbd5a027 100644 --- a/code/game/objects/items/weapons/storage/artistic_toolbox.dm +++ b/code/game/objects/items/weapons/storage/artistic_toolbox.dm @@ -12,6 +12,7 @@ desc = "His Grace." force = 5 throwforce = 10 + origin_tech = "combat=4;engineering=4;syndicate=2" var/list/servantlinks = list() var/hunger = 0 var/hunger_message_level = 0 diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index d0dee297cd7..99e24b393a5 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -10,9 +10,9 @@ item_state = "backpack" lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi' righthand_file = 'icons/mob/inhands/clothing_righthand.dmi' - w_class = 4 + w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK //ERROOOOO - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL max_combined_w_class = 21 storage_slots = 21 burn_state = FLAMMABLE @@ -33,63 +33,47 @@ /obj/item/weapon/storage/backpack/holding name = "Bag of Holding" desc = "A backpack that opens into a localized pocket of Blue Space." - origin_tech = "bluespace=4" + origin_tech = "bluespace=5;materials=4;engineering=4;plasmatech=5" icon_state = "holdingpack" - max_w_class = 5 + max_w_class = WEIGHT_CLASS_HUGE max_combined_w_class = 35 burn_state = FIRE_PROOF - New() - ..() - return +/obj/item/weapon/storage/backpack/holding/New() + ..() + return - attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(crit_fail) - to_chat(user, "The Bluespace generator isn't working.") - return - else if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail) - var/response = alert(user, "Are you sure you want to put the bag of holding inside another bag of holding?","Are you sure you want to die?","Yes","No") - if(response == "Yes") - user.visible_message("[user] grins as \he begins to put a Bag of Holding into a Bag of Holding!", "You begin to put the Bag of Holding into the Bag of Holding!") - if(do_after(user, 30, target=src)) - investigate_log("has become a singularity. Caused by [user.key]","singulo") - user.visible_message("[user] erupts in evil laughter as \he puts the Bag of Holding into another Bag of Holding!", "You can't help but laugh wildly as you put the Bag of Holding into another Bag of Holding, complete darkness surrounding you."," You hear the sound of scientific evil brewing! ") - qdel(W) - var/obj/singularity/singulo = new /obj/singularity(get_turf(user)) - singulo.energy = 300 //To give it a small boost - message_admins("[key_name_admin(user)] detonated a bag of holding JMP)") - log_game("[key_name(user)] detonated a bag of holding") - qdel(src) - else - user.visible_message("After careful consideration, [user] has decided that putting a Bag of Holding inside another Bag of Holding would not yield the ideal outcome.","You come to the realization that this might not be the greatest idea.") - else - . = ..() - - proc/failcheck(mob/user as mob) - if(prob(src.reliability)) return 1 //No failure - if(prob(src.reliability)) - to_chat(user, "The Bluespace portal resists your attempt to add another item.")//light failure - - else - to_chat(user, "The Bluespace generator malfunctions!") - for(var/obj/O in src.contents) //it broke, delete what was in it - qdel(O) - crit_fail = 1 - icon_state = "brokenpack" - - singularity_act(current_size) - var/dist = max((current_size - 2),1) - explosion(src.loc,(dist),(dist*2),(dist*4)) - return +/obj/item/weapon/storage/backpack/holding/attackby(obj/item/weapon/W, mob/user, params) + if(istype(W, /obj/item/weapon/storage/backpack/holding)) + var/response = alert(user, "Are you sure you want to put the bag of holding inside another bag of holding?","Are you sure you want to die?","Yes","No") + if(response == "Yes") + user.visible_message("[user] grins as \he begins to put a Bag of Holding into a Bag of Holding!", "You begin to put the Bag of Holding into the Bag of Holding!") + if(do_after(user, 30, target=src)) + investigate_log("has become a singularity. Caused by [user.key]","singulo") + user.visible_message("[user] erupts in evil laughter as \he puts the Bag of Holding into another Bag of Holding!", "You can't help but laugh wildly as you put the Bag of Holding into another Bag of Holding, complete darkness surrounding you."," You hear the sound of scientific evil brewing! ") + qdel(W) + var/obj/singularity/singulo = new /obj/singularity(get_turf(user)) + singulo.energy = 300 //To give it a small boost + message_admins("[key_name_admin(user)] detonated a bag of holding JMP)") + log_game("[key_name(user)] detonated a bag of holding") + qdel(src) + else + user.visible_message("After careful consideration, [user] has decided that putting a Bag of Holding inside another Bag of Holding would not yield the ideal outcome.","You come to the realization that this might not be the greatest idea.") + else + . = ..() +/obj/item/weapon/storage/backpack/holding/singularity_act(current_size) + var/dist = max((current_size - 2),1) + explosion(src.loc,(dist),(dist*2),(dist*4)) + return /obj/item/weapon/storage/backpack/santabag name = "Santa's Gift Bag" desc = "Space Santa uses this to deliver toys to all the nice children in space on Christmas! Wow, it's pretty big!" icon_state = "giftbag0" item_state = "giftbag" - w_class = 4 - max_w_class = 3 + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_NORMAL max_combined_w_class = 400 // can store a ton of shit! /obj/item/weapon/storage/backpack/cultpack @@ -243,7 +227,7 @@ name = "smuggler's satchel" desc = "A very slim satchel that can easily fit into tight spaces." icon_state = "satchel-flat" - w_class = 3 //Can fit in backpacks itself. + w_class = WEIGHT_CLASS_NORMAL //Can fit in backpacks itself. max_combined_w_class = 15 level = 1 cant_hold = list(/obj/item/weapon/storage/backpack/satchel_flat) //muh recursive backpacks diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index b90d11a543e..9ea57893c56 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -33,8 +33,8 @@ icon_state = "trashbag" item_state = "trashbag" - w_class = 1 - max_w_class = 2 + w_class = WEIGHT_CLASS_TINY + max_w_class = WEIGHT_CLASS_SMALL storage_slots = 30 can_hold = list() // any cant_hold = list(/obj/item/weapon/disk/nuclear) @@ -46,16 +46,16 @@ /obj/item/weapon/storage/bag/trash/update_icon() if(contents.len == 0) - w_class = 1 + w_class = WEIGHT_CLASS_TINY icon_state = "[initial(icon_state)]" else if(contents.len < 12) - w_class = 4 + w_class = WEIGHT_CLASS_BULKY icon_state = "[initial(icon_state)]1" else if(contents.len < 21) - w_class = 4 + w_class = WEIGHT_CLASS_BULKY icon_state = "[initial(icon_state)]2" else - w_class = 4 + w_class = WEIGHT_CLASS_BULKY icon_state = "[initial(icon_state)]3" /obj/item/weapon/storage/bag/trash/cyborg @@ -72,6 +72,7 @@ name = "trash bag of holding" desc = "The latest and greatest in custodial convenience, a trashbag that is capable of holding vast quantities of garbage." icon_state = "bluetrashbag" + origin_tech = "materials=4;bluespace=4;engineering=4;plasmatech=3" max_combined_w_class = 60 storage_slots = 60 @@ -88,8 +89,8 @@ item_state = "plasticbag" slot_flags = SLOT_HEAD|SLOT_BELT throwforce = 0 - w_class = 4 - max_w_class = 2 + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_SMALL storage_slots = 7 display_contents_with_number = 0 //or else this will lead to stupid behavior. can_hold = list() // any @@ -131,11 +132,12 @@ desc = "This little bugger can be used to store and transport ores." icon = 'icons/obj/mining.dmi' icon_state = "satchel" + origin_tech = "engineering=2" slot_flags = SLOT_BELT | SLOT_POCKET - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL storage_slots = 50 max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL can_hold = list(/obj/item/weapon/ore) /obj/item/weapon/storage/bag/ore/cyborg @@ -147,7 +149,7 @@ desc = "A revolution in convenience, this satchel allows for infinite ore storage. It's been outfitted with anti-malfunction safety measures." storage_slots = INFINITY max_combined_w_class = INFINITY - origin_tech = "bluespace=3" + origin_tech = "bluespace=4;materials=3;engineering=3" icon_state = "satchel_bspace" /obj/item/weapon/storage/bag/ore/holding/cyborg @@ -164,8 +166,8 @@ icon_state = "plantbag" storage_slots = 100 //the number of plant pieces it can carry. max_combined_w_class = 100 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class - max_w_class = 3 - w_class = 1 + max_w_class = WEIGHT_CLASS_NORMAL + w_class = WEIGHT_CLASS_TINY can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown,/obj/item/weapon/reagent_containers/food/snacks/ash_flora) burn_state = FLAMMABLE @@ -202,7 +204,7 @@ desc = "A patented Nanotrasen storage system designed for any kind of mineral sheet." var/capacity = 300; //the number of sheets it can carry. - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL allow_quick_empty = 1 // this function is superceded New() @@ -343,8 +345,8 @@ desc = "A bag for carrying lots of cash. It's got a big dollar sign printed on the front." storage_slots = 50; //the number of cash pieces it can carry. max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * cash.w_class - max_w_class = 3 - w_class = 1 + max_w_class = WEIGHT_CLASS_NORMAL + w_class = WEIGHT_CLASS_TINY can_hold = list(/obj/item/weapon/coin,/obj/item/stack/spacecash) // ----------------------------- @@ -359,8 +361,8 @@ display_contents_with_number = 0 //This would look really stupid otherwise storage_slots = 7 max_combined_w_class = 21 - max_w_class = 3 - w_class = 4 //Bigger than a book because physics + max_w_class = WEIGHT_CLASS_NORMAL + w_class = WEIGHT_CLASS_BULKY //Bigger than a book because physics can_hold = list(/obj/item/weapon/book, /obj/item/weapon/storage/bible, /obj/item/weapon/tome, /obj/item/weapon/spellbook) burn_state = FLAMMABLE @@ -376,7 +378,7 @@ throwforce = 10.0 throw_speed = 3 throw_range = 5 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY flags = CONDUCT materials = list(MAT_METAL=3000) @@ -469,7 +471,7 @@ desc = "A bag for storing pills, patches, and bottles." storage_slots = 50 max_combined_w_class = 200 - w_class = 1 + w_class = WEIGHT_CLASS_TINY can_hold = list(/obj/item/weapon/reagent_containers/food/pill,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle) burn_state = FLAMMABLE /* @@ -483,6 +485,6 @@ desc = "A bag for the safe transportation and disposal of biowaste and other biological materials." storage_slots = 25 max_combined_w_class = 200 - w_class = 1 + w_class = WEIGHT_CLASS_TINY can_hold = list(/obj/item/slime_extract,/obj/item/weapon/reagent_containers/food/snacks/monkeycube,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/blood,/obj/item/weapon/reagent_containers/hypospray/autoinjector) burn_state = FLAMMABLE diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 609edd2961f..95e72d458f7 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -176,7 +176,7 @@ icon_state = "securitybelt" item_state = "security"//Could likely use a better one. storage_slots = 5 - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL use_item_overlays = 1 can_hold = list( /obj/item/weapon/grenade/flashbang, @@ -249,7 +249,7 @@ icon_state = "militarybelt" item_state = "military" max_w_class = WEIGHT_CLASS_SMALL - + /obj/item/weapon/storage/belt/military/abductor name = "agent belt" desc = "A belt used by abductor agents." @@ -280,7 +280,7 @@ icon_state = "janibelt" item_state = "janibelt" storage_slots = 6 - max_w_class = 4 // Set to this so the light replacer can fit. + max_w_class = WEIGHT_CLASS_BULKY // Set to this so the light replacer can fit. use_item_overlays = 1 can_hold = list( /obj/item/weapon/grenade/chem_grenade/cleaner, @@ -306,8 +306,8 @@ desc = "For the mining master, holds your lazarus capsules." icon_state = "lazarusbelt" item_state = "lazbelt" - w_class = 4 - max_w_class = 1 + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_TINY max_combined_w_class = 6 storage_slots = 6 can_hold = list(/obj/item/device/mobcapsule) @@ -379,7 +379,7 @@ icon_state = "holster" item_state = "holster" storage_slots = 1 - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL can_hold = list( /obj/item/weapon/gun/projectile/automatic/pistol, /obj/item/weapon/gun/projectile/revolver/detective @@ -417,7 +417,7 @@ icon_state = "fannypack_leather" item_state = "fannypack_leather" storage_slots = 3 - max_w_class = 2 + max_w_class = WEIGHT_CLASS_SMALL /obj/item/weapon/storage/belt/fannypack/black name = "black fannypack" @@ -475,8 +475,8 @@ icon_state = "sheath" item_state = "sheath" storage_slots = 1 - w_class = 4 - max_w_class = 4 + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_BULKY can_hold = list(/obj/item/weapon/melee/rapier) /obj/item/weapon/storage/belt/rapier/update_icon() @@ -506,33 +506,21 @@ icon_state = "holdingbelt" item_state = "holdingbelt" storage_slots = 14 - w_class = 4 - max_w_class = 2 + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_SMALL max_combined_w_class = 21 // = 14 * 1.5, not 14 * 2. This is deliberate - origin_tech = "bluespace=4" + origin_tech = "bluespace=5;materials=4;engineering=4;plasmatech=5" can_hold = list() - proc/failcheck(mob/user as mob) - if(prob(src.reliability)) return 1 //No failure - if(prob(src.reliability)) - to_chat(user, "The Bluespace portal resists your attempt to add another item.")//light failure - - else - to_chat(user, "The Bluespace generator malfunctions!") - for(var/obj/O in src.contents) //it broke, delete what was in it - qdel(O) - crit_fail = 1 - return 0 - /obj/item/weapon/storage/belt/bluespace/owlman name = "Owlman's utility belt" desc = "Sometimes people choose justice. Sometimes, justice chooses you..." icon_state = "securitybelt" item_state = "security" storage_slots = 6 - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL max_combined_w_class = 18 - origin_tech = "bluespace=4;syndicate=2" + origin_tech = "bluespace=5;materials=4;engineering=4;plasmatech=5" allow_quick_empty = 1 can_hold = list( /obj/item/weapon/grenade/smokebomb, diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index f005f2f8b8e..17bf8fcac8e 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -4,7 +4,7 @@ icon_state ="bible" throw_speed = 1 throw_range = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL burn_state = FLAMMABLE var/mob/affecting = null var/deity_name = "Christ" diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 8a487289e35..594028e4f1f 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -634,8 +634,8 @@ icon_state = "matchbox" item_state = "zippo" storage_slots = 10 - w_class = 1 - max_w_class = 1 + w_class = WEIGHT_CLASS_TINY + max_w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_BELT can_hold = list(/obj/item/weapon/match) @@ -810,4 +810,4 @@ #undef NANOTRASEN #undef SYNDI #undef HEART -#undef SMILE \ No newline at end of file +#undef SMILE diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index 7f2a91054c1..89122d1a337 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -8,12 +8,12 @@ force = 8.0 throw_speed = 2 throw_range = 4 - w_class = 4 - max_w_class = 3 + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_NORMAL max_combined_w_class = 21 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") burn_state = FLAMMABLE burntime = 20 /obj/item/weapon/storage/briefcase/New() - ..() \ No newline at end of file + ..() diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index a3f2a21a5fa..d8de4ee7c53 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -115,7 +115,7 @@ desc = "A box of crayons for all your rune drawing needs." icon = 'icons/obj/crayons.dmi' icon_state = "crayonbox" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL storage_slots = 6 icon_type = "crayon" can_hold = list( @@ -158,7 +158,7 @@ icon = 'icons/obj/cigarettes.dmi' icon_state = "cigpacket" item_state = "cigpacket" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throwforce = 2 slot_flags = SLOT_BELT storage_slots = 6 @@ -318,7 +318,7 @@ /obj/item/weapon/storage/fancy/rollingpapers name = "rolling paper pack" desc = "A pack of NanoTrasen brand rolling papers." - w_class = 1 + w_class = WEIGHT_CLASS_TINY icon = 'icons/obj/cigarettes.dmi' icon_state = "cig_paper_pack" storage_slots = 10 @@ -360,7 +360,7 @@ icon = 'icons/obj/vialbox.dmi' icon_state = "vialbox0" item_state = "syringe_kit" - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial) max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item. storage_slots = 6 diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 5ab8713a49a..8794c09014b 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -155,7 +155,7 @@ name = "first-aid kit" icon_state = "bezerk" desc = "I hope you've got insurance." - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL treatment_oxy = "perfluorodecalin" treatment_brute = "styptic_powder" treatment_fire = "silver_sulfadiazine" @@ -181,7 +181,7 @@ name = "field surgery kit" icon_state = "duffel-med" desc = "A kit for surgery in the field." - max_w_class = 4 + max_w_class = WEIGHT_CLASS_BULKY max_combined_w_class = 21 storage_slots = 10 can_hold = list(/obj/item/roller,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel, /obj/item/weapon/scalpel, /obj/item/weapon/hemostat, @@ -209,7 +209,7 @@ icon_state = "pill_canister" icon = 'icons/obj/chemical.dmi' item_state = "contsolid" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL can_hold = list(/obj/item/weapon/reagent_containers/food/pill, /obj/item/weapon/dice, /obj/item/weapon/paper) allow_quick_gather = 1 use_to_pickup = 1 diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index b622e469124..2f4a3b2e5ac 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -5,8 +5,8 @@ desc = "A locked box." icon_state = "lockbox+l" item_state = "syringe_kit" - w_class = 4 - max_w_class = 3 + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_NORMAL max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item. storage_slots = 4 req_access = list(access_armory) @@ -76,7 +76,7 @@ /obj/item/weapon/storage/lockbox/large name = "Large lockbox" desc = "A large lockbox" - max_w_class = 4 + max_w_class = WEIGHT_CLASS_BULKY max_combined_w_class = 4 //The sum of the w_classes of all the items in this storage item. storage_slots = 1 @@ -105,8 +105,8 @@ desc = "A locked box used to store medals of honor." icon_state = "medalbox+l" item_state = "syringe_kit" - w_class = 3 - max_w_class = 2 + w_class = WEIGHT_CLASS_NORMAL + max_w_class = WEIGHT_CLASS_SMALL max_combined_w_class = 20 storage_slots = 12 req_access = list(access_captain) diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index e06cbb91255..7619fd953d7 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -23,8 +23,8 @@ var/l_hacking = 0 var/emagged = 0 var/open = 0 - w_class = 3 - max_w_class = 2 + w_class = WEIGHT_CLASS_NORMAL + max_w_class = WEIGHT_CLASS_SMALL max_combined_w_class = 14 /obj/item/weapon/storage/secure/examine(mob/user) @@ -180,8 +180,8 @@ force = 8 throw_speed = 2 throw_range = 4 - w_class = 4 - max_w_class = 3 + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_NORMAL max_combined_w_class = 21 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") @@ -228,7 +228,7 @@ icon_locking = "safeb" icon_sparking = "safespark" force = 8 - w_class = 5 + w_class = WEIGHT_CLASS_HUGE max_w_class = 8 anchored = 1 density = 0 diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index adeb8fadcd3..21ea7c33993 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -8,11 +8,11 @@ /obj/item/weapon/storage name = "storage" icon = 'icons/obj/storage.dmi' - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL 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) + var/max_w_class = WEIGHT_CLASS_SMALL //Max size of objects that this object can store (in effect only if can_hold isn't set) var/max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item. var/storage_slots = 7 //The number of storage slots in this container. var/obj/screen/storage/boxes = null @@ -304,7 +304,7 @@ to_chat(usr, "You put the [W] into [src].") else if(M in range(1)) //If someone is standing close enough, they can tell what it is... M.show_message("[usr] puts [W] into [src].") - else if(W && W.w_class >= 3.0) //Otherwise they can only see large or normal items from a distance... + else if(W && W.w_class >= WEIGHT_CLASS_NORMAL) //Otherwise they can only see large or normal items from a distance... M.show_message("[usr] puts [W] into [src].") src.orient2hud(usr) diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index a6ecd3d45ac..dfad952b12e 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -9,9 +9,9 @@ throwforce = 10.0 throw_speed = 2 throw_range = 7 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY materials = list(MAT_METAL = 500) - origin_tech = "combat=1" + origin_tech = "combat=1;engineering=1" attack_verb = list("robusted") hitsound = 'sound/weapons/smash.ogg' @@ -71,7 +71,7 @@ name = "suspicious looking toolbox" icon_state = "syndicate" item_state = "toolbox_syndi" - origin_tech = "combat=1;syndicate=1" + origin_tech = "combat=2;syndicate=1;engineering=2" silent = 1 force = 15.0 throwforce = 18.0 @@ -85,7 +85,7 @@ new /obj/item/weapon/wirecutters(src, "red") new /obj/item/device/multitool(src) new /obj/item/clothing/gloves/combat(src) - + /obj/item/weapon/storage/toolbox/drone name = "mechanical toolbox" icon_state = "blue" @@ -119,4 +119,4 @@ new /obj/item/weapon/wirecutters/brass(src) new /obj/item/weapon/wrench/brass(src) new /obj/item/weapon/crowbar/brass(src) - new /obj/item/weapon/weldingtool/experimental/brass(src) \ No newline at end of file + new /obj/item/weapon/weldingtool/experimental/brass(src) diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 03fc0a7b742..9efc5f625a6 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -69,7 +69,7 @@ new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) new /obj/item/weapon/card/id/syndicate(src) return - + if("gadgets") new /obj/item/clothing/gloves/color/yellow/power(src) new /obj/item/weapon/pen/sleepy(src) @@ -88,7 +88,7 @@ /obj/item/weapon/storage/box/syndie_kit/space name = "Boxed Space Suit and Helmet" can_hold = list(/obj/item/clothing/suit/space/syndicate/black/red, /obj/item/clothing/head/helmet/space/syndicate/black/red) - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL /obj/item/weapon/storage/box/syndie_kit/space/New() ..() @@ -99,7 +99,7 @@ /obj/item/weapon/storage/box/syndie_kit/hardsuit name = "Boxed Blood Red Suit and Helmet" can_hold = list(/obj/item/clothing/suit/space/hardsuit/syndi, /obj/item/clothing/head/helmet/space/hardsuit/syndi) - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL /obj/item/weapon/storage/box/syndie_kit/hardsuit/New() ..() @@ -110,7 +110,7 @@ /obj/item/weapon/storage/box/syndie_kit/elite_hardsuit name = "Boxed Elite Syndicate Hardsuit and Helmet" can_hold = list(/obj/item/clothing/suit/space/hardsuit/syndi/elite, /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite) - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL /obj/item/weapon/storage/box/syndie_kit/elite_hardsuit/New() ..() @@ -120,7 +120,7 @@ /obj/item/weapon/storage/box/syndie_kit/shielded_hardsuit name = "Boxed Shielded Syndicate Hardsuit and Helmet" can_hold = list(/obj/item/clothing/suit/space/hardsuit/shielded/syndi, /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi) - max_w_class = 4 + max_w_class = WEIGHT_CLASS_BULKY /obj/item/weapon/storage/box/syndie_kit/shielded_hardsuit/New() ..() @@ -216,3 +216,13 @@ B.deity_name = "Success" B.icon_state = "greentext" B.item_state = "greentext" + + +/obj/item/weapon/storage/box/syndie_kit/cutouts + name = "Fortified Artistic Box" + +/obj/item/weapon/storage/box/syndie_kit/cutouts/New() + ..() + for(var/i in 1 to 3) + new/obj/item/cardboard_cutout/adaptive(src) + new/obj/item/toy/crayon/spraycan(src) \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index 0d9712ed43f..667b2ca7605 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -4,7 +4,7 @@ storage_slots = 10 icon = 'icons/obj/wallets.dmi' icon_state = "wallet" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL burn_state = FLAMMABLE can_hold = list( /obj/item/stack/spacecash, diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 1de82690573..9a01f150ea9 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -7,7 +7,7 @@ slot_flags = SLOT_BELT force = 10 throwforce = 7 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL origin_tech = "combat=2" attack_verb = list("beaten") var/stunforce = 7 @@ -165,8 +165,6 @@ /obj/item/weapon/melee/baton/emp_act(severity) if(bcell) deductcharge(1000 / severity) - if(bcell.reliability != 100 && prob(50/severity)) - bcell.reliability -= 10 / severity ..() /obj/item/weapon/melee/baton/wash(mob/user, atom/source) @@ -190,7 +188,7 @@ icon_state = "stunprod_nocell" base_icon = "stunprod" item_state = "prod" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL force = 3 throwforce = 5 stunforce = 5 diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index 786b980d38f..e55b2451347 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -25,7 +25,7 @@ item_state = "classic_baton" slot_flags = SLOT_BELT force = 12 //9 hit crit - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL var/cooldown = 0 var/on = 1 @@ -90,7 +90,7 @@ icon_state = "telebaton_0" item_state = null slot_flags = SLOT_BELT - w_class = 2 + w_class = WEIGHT_CLASS_SMALL needs_permit = 0 force = 0 on = 0 @@ -101,7 +101,7 @@ to_chat(user, "You extend the baton.") icon_state = "telebaton_1" item_state = "nullrod" - w_class = 4 //doesnt fit in backpack when its on for balance + w_class = WEIGHT_CLASS_BULKY //doesnt fit in backpack when its on for balance force = 10 //stunbaton damage attack_verb = list("smacked", "struck", "cracked", "beaten") else @@ -109,7 +109,7 @@ icon_state = "telebaton_0" item_state = null //no sprite for concealment even when in hand slot_flags = SLOT_BELT - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force = 0 //not so robust now attack_verb = list("hit", "poked") if(istype(user,/mob/living/carbon/human)) diff --git a/code/game/objects/items/weapons/syndie_uplink.dm b/code/game/objects/items/weapons/syndie_uplink.dm index 3dd9a230ad1..0515dd41dd3 100644 --- a/code/game/objects/items/weapons/syndie_uplink.dm +++ b/code/game/objects/items/weapons/syndie_uplink.dm @@ -10,7 +10,7 @@ var/mob/currentUser = null var/obj/item/device/radio/origradio = null flags = CONDUCT | ONBELT - w_class = 2 + w_class = WEIGHT_CLASS_SMALL item_state = "radio" throw_speed = 4 throw_range = 20 @@ -31,8 +31,8 @@ slot_flags = SLOT_BELT item_state = "radio" throwforce = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 4 throw_range = 20 materials = list(MAT_METAL=100) - origin_tech = "magnets=1" \ No newline at end of file + origin_tech = "magnets=1" diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm index 3073125bae0..7655fba3605 100644 --- a/code/game/objects/items/weapons/table_rack_parts.dm +++ b/code/game/objects/items/weapons/table_rack_parts.dm @@ -46,6 +46,18 @@ /obj/item/stack/sheet/wood, /obj/item/stack/sheet/wood) +/obj/item/weapon/table_parts/wood/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/stack/tile/carpet)) + var/target = /obj/item/weapon/table_parts/fancy + if(istype(W, /obj/item/stack/tile/carpet/black)) + target = /obj/item/weapon/table_parts/fancy/black + var/obj/item/stack/S = W + if(S.use(1)) + new target(get_turf(src)) + qdel(src) + else + . = ..() + /obj/item/weapon/table_parts/glass name = "glass table parts" desc = "fragile!" @@ -57,6 +69,17 @@ /obj/item/stack/sheet/metal, /obj/item/stack/sheet/metal) +/obj/item/weapon/table_parts/fancy + name = "fancy table parts" + desc = "Pretty!" + icon_state = "fancy_tableparts" + result = /obj/structure/table/wood/fancy + +/obj/item/weapon/table_parts/fancy/black + name = "black fancy table parts" + icon_state = "black_fancy_tableparts" + result = /obj/structure/table/wood/fancy/black + /obj/item/weapon/rack_parts name = "rack parts" desc = "Parts of a rack." @@ -88,9 +111,10 @@ for(var/obj/structure/table/T in user.loc) to_chat(user, "You can't build tables on top of tables!") return - new result(user.loc) - user.drop_item() - qdel(src) + if(do_after(user, 20, target = loc)) + new result(user.loc) + user.drop_item() + qdel(src) /* * Rack Parts @@ -102,7 +126,8 @@ qdel(src) /obj/item/weapon/rack_parts/attack_self(mob/user as mob) - var/obj/structure/rack/R = new /obj/structure/rack(user.loc) - R.add_fingerprint(user) - user.drop_item() - qdel(src) \ No newline at end of file + if(do_after(user, 20, target = loc)) + var/obj/structure/rack/R = new /obj/structure/rack(user.loc) + R.add_fingerprint(user) + user.drop_item() + qdel(src) diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index 1bd8d8b761c..eef5475bdcd 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -4,7 +4,7 @@ name = "Jetpack (Empty)" desc = "A tank of compressed gas for use as propulsion in zero-gravity areas. Use with caution." icon_state = "jetpack" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY item_state = "jetpack" distribute_pressure = ONE_ATMOSPHERE*O2STANDARD var/datum/effect/system/ion_trail_follow/ion_trail @@ -116,7 +116,7 @@ item_state = "jetpack-mini" volume = 40 throw_range = 8 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL /obj/item/weapon/tank/jetpack/oxygenblack name = "Jetpack (Oxygen)" @@ -174,4 +174,4 @@ var/turf/T = get_turf(user) T.assume_air(removed) - return 1 \ No newline at end of file + return 1 diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index 428c4885814..4778a53c28b 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -126,7 +126,7 @@ icon_state = "emergency" flags = CONDUCT slot_flags = SLOT_BELT - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force = 4.0 distribute_pressure = ONE_ATMOSPHERE*O2STANDARD volume = 3 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011) diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index bd62357ba76..3b99936b0a8 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -7,7 +7,7 @@ flags = CONDUCT slot_flags = SLOT_BACK hitsound = 'sound/weapons/smash.ogg' - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL pressure_resistance = ONE_ATMOSPHERE*5 diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index e8cf034a5b5..5229a59fe5f 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/watertank.dmi' icon_state = "waterbackpack" item_state = "waterbackpack" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK slowdown = 1 actions_types = list(/datum/action/item_action/toggle_mister) @@ -112,7 +112,7 @@ icon = 'icons/obj/watertank.dmi' icon_state = "mister" item_state = "mister" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY amount_per_transfer_from_this = 50 possible_transfer_amounts = list(25,50,100) volume = 500 @@ -220,7 +220,7 @@ power = 8 precision = 1 cooling_power = 5 - w_class = 5 + w_class = WEIGHT_CLASS_HUGE flags = NODROP //Necessary to ensure that the nozzle and tank never seperate var/obj/item/weapon/watertank/tank var/nozzle_mode = 0 diff --git a/code/game/objects/items/weapons/tape.dm b/code/game/objects/items/weapons/tape.dm index 067bacaef4b..05486c9d85f 100644 --- a/code/game/objects/items/weapons/tape.dm +++ b/code/game/objects/items/weapons/tape.dm @@ -3,7 +3,7 @@ desc = "A roll of sticky tape. Possibly for taping ducks... or was that ducts?" icon = 'icons/obj/bureaucracy.dmi' icon_state = "taperoll" - w_class = 1 + w_class = WEIGHT_CLASS_TINY amount = 10 max_amount = 10 @@ -76,7 +76,7 @@ desc = "A piece of sticky tape." icon = 'icons/obj/bureaucracy.dmi' icon_state = "tape" - w_class = 1 + w_class = WEIGHT_CLASS_TINY layer = 4 anchored = 1 //it's sticky, no you cant move it diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index 87309c5927c..0a984821fad 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -17,12 +17,12 @@ var/broadcasting = null var/listening = 1.0 flags = CONDUCT - w_class = 2 + w_class = WEIGHT_CLASS_SMALL item_state = "electronic" throw_speed = 4 throw_range = 20 materials = list(MAT_METAL=400) - origin_tech = "magnets=1" + origin_tech = "magnets=3;bluespace=2" /obj/item/weapon/locator/attack_self(mob/user as mob) add_fingerprint(usr) @@ -98,11 +98,11 @@ Frequency: icon_state = "hand_tele" item_state = "electronic" throwforce = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 5 materials = list(MAT_METAL=10000) - origin_tech = "magnets=1;bluespace=3" + origin_tech = "magnets=3;bluespace=4" var/active_portals = 0 /obj/item/weapon/hand_tele/attack_self(mob/user as mob) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index ce2b5965c6c..cdd8b8a5de1 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -109,7 +109,7 @@ ///////////OFFHAND/////////////// /obj/item/weapon/twohanded/offhand - w_class = 5 + w_class = WEIGHT_CLASS_HUGE icon_state = "offhand" name = "offhand" flags = ABSTRACT @@ -123,7 +123,7 @@ ///////////Two hand required objects/////////////// //This is for objects that require two hands to even pick up /obj/item/weapon/twohanded/required/ - w_class = 5 + w_class = WEIGHT_CLASS_HUGE /obj/item/weapon/twohanded/required/attack_self() return @@ -163,7 +163,7 @@ throwforce = 15 sharp = 1 edge = 1 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK force_unwielded = 5 force_wielded = 24 @@ -199,13 +199,13 @@ throwforce = 5.0 throw_speed = 1 throw_range = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force_unwielded = 3 force_wielded = 34 wieldsound = 'sound/weapons/saberon.ogg' unwieldsound = 'sound/weapons/saberoff.ogg' armour_penetration = 35 - origin_tech = "magnets=3;syndicate=4" + origin_tech = "magnets=4;syndicate=5" attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") block_chance = 75 sharp = 1 @@ -286,7 +286,7 @@ name = "spear" desc = "A haphazardly-constructed yet still deadly weapon of ancient design." force = 10 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK force_unwielded = 10 force_wielded = 18 @@ -433,7 +433,7 @@ flags = CONDUCT force = 13 var/force_on = 21 - w_class = 5 + w_class = WEIGHT_CLASS_HUGE throwforce = 13 throw_speed = 2 throw_range = 4 @@ -490,7 +490,7 @@ throwforce = 15 throw_speed = 1 throw_range = 5 - w_class = 4 // can't fit in backpacks + w_class = WEIGHT_CLASS_BULKY // can't fit in backpacks force_unwielded = 15 //still pretty robust force_wielded = 40 //you'll gouge their eye out! Or a limb...maybe even their entire body! wieldsound = 'sound/weapons/chainsawstart.ogg' @@ -545,9 +545,9 @@ force_wielded = 20 throwforce = 15 throw_range = 1 - w_class = 5 + w_class = WEIGHT_CLASS_HUGE var/charged = 5 - origin_tech = "combat=5;bluespace=4" + origin_tech = "combat=4;bluespace=4;plasmatech=7" /obj/item/weapon/twohanded/singularityhammer/New() ..() @@ -610,9 +610,9 @@ force_wielded = 25 throwforce = 30 throw_range = 7 - w_class = 5 + w_class = WEIGHT_CLASS_HUGE //var/charged = 5 - origin_tech = "combat=5;powerstorage=5" + origin_tech = "combat=4;powerstorage=7" /obj/item/weapon/twohanded/mjollnir/proc/shock(mob/living/target as mob) var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread() @@ -658,7 +658,7 @@ force_wielded = 30 throwforce = 15 throw_range = 1 - w_class = 5 + w_class = WEIGHT_CLASS_HUGE var/charged = 5 origin_tech = "combat=5;bluespace=4" @@ -719,7 +719,7 @@ throwforce = 15 sharp = 1 edge = 1 - w_class = 5 + w_class = WEIGHT_CLASS_HUGE armour_penetration = 20 slot_flags = SLOT_BACK force_unwielded = 5 diff --git a/code/game/objects/items/weapons/vending_items.dm b/code/game/objects/items/weapons/vending_items.dm index 3fb54c16609..34c4cd6c6d0 100644 --- a/code/game/objects/items/weapons/vending_items.dm +++ b/code/game/objects/items/weapons/vending_items.dm @@ -10,7 +10,7 @@ throwforce = 10.0 throw_speed = 1 throw_range = 7 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY var/charges = 0 //how many restocking "charges" the refill has @@ -86,4 +86,3 @@ /obj/item/weapon/vending_refill/chinese machine_name = "MrChangs" charges = 8// of 24 - diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index d5b679fde56..95317b7f0a6 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -5,7 +5,7 @@ icon_state = "toyhammer" slot_flags = SLOT_BELT throwforce = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 7 throw_range = 15 attack_verb = list("banned") @@ -23,7 +23,7 @@ slot_flags = SLOT_BELT force = 2 throwforce = 1 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") @@ -44,7 +44,7 @@ throwforce = 10 sharp = 1 edge = 1 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") block_chance = 50 @@ -68,7 +68,7 @@ throwforce = 10 sharp = 1 edge = 1 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") block_chance = 50 @@ -89,7 +89,7 @@ item_state = "harpoon" force = 20 throwforce = 15 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL attack_verb = list("jabbed","stabbed","ripped") obj/item/weapon/wirerod @@ -100,7 +100,7 @@ obj/item/weapon/wirerod flags = CONDUCT force = 9 throwforce = 10 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL materials = list(MAT_METAL=1150, MAT_GLASS=75) attack_verb = list("hit", "bludgeoned", "whacked", "bonked") diff --git a/code/game/objects/items/weapons/whetstone.dm b/code/game/objects/items/weapons/whetstone.dm index d498d4c75e8..b268540f92a 100644 --- a/code/game/objects/items/weapons/whetstone.dm +++ b/code/game/objects/items/weapons/whetstone.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/kitchen.dmi' icon_state = "whetstone" desc = "A block of stone used to sharpen things." - w_class = 2 + w_class = WEIGHT_CLASS_SMALL usesound = 'sound/items/Screwdriver.ogg' var/used = 0 var/increment = 4 @@ -63,4 +63,4 @@ increment = 200 max = 200 prefix = "super-sharpened" - requires_sharpness = 0 \ No newline at end of file + requires_sharpness = 0 diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm index 9636e1407b6..f3ab646c952 100644 --- a/code/game/objects/structures/artstuff.dm +++ b/code/game/objects/structures/artstuff.dm @@ -1,10 +1,3 @@ -///////////////// -// NEW DEFINES // -///////////////// - -/client - var/viewingCanvas = 0 //If this is 1, as soon as client /TRIES/ to move the view resets. - /////////// // EASEL // /////////// @@ -140,20 +133,4 @@ var/global/list/globalBlankCanvases[AMT_OF_CANVASES] icon = blank user.visible_message("[user] cleans the canvas.","You clean the canvas.") -//Examine to enlarge -/obj/item/weapon/canvas/examine(mob/user) - ..(user) - if(in_range(user, src) && get_turf(src) && user.client && ishuman(user)) //Let only humans be the robust zoominators. I'm too spooked other mobs trying to use it may get broken huds. - if(src.loc == user || get_turf(src) == get_turf(user)) - to_chat(user, "[src] has to be on the ground to focus on it!") - return - to_chat(user, "You focus on \the [src].") - user.client.screen = list() //This is because screen objects go way past the view bounds we set, therefore not allowing stretch to fit to zoom in properly. - user.client.reset_stretch = winget(user.client, "mapwindow.map", "icon-size") //Remember previous icon-size - user.client.view = 3 //Decrease view - winset(user.client, "mapwindow.map", "icon-size=0") //Enable stretch-to-fit - user.client.viewingCanvas = 1 //Reset everything we just changed as soon as client tries to move - else - to_chat(user, "It is too far away.") - #undef AMT_OF_CANVASES \ No newline at end of file diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 10f09401ba5..3190a69177d 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -14,7 +14,7 @@ LINEN BINS throwforce = 1 throw_speed = 1 throw_range = 2 - w_class = 1 + w_class = WEIGHT_CLASS_TINY item_color = "white" burn_state = FLAMMABLE slot_flags = SLOT_BACK @@ -204,7 +204,7 @@ LINEN BINS sheets.Add(I) amount++ to_chat(user, "You put [I] in [src].") - else if(amount && !hidden && I.w_class < 4) //make sure there's sheets to hide it among, make sure nothing else is hidden in there. + else if(amount && !hidden && I.w_class < WEIGHT_CLASS_BULKY) //make sure there's sheets to hide it among, make sure nothing else is hidden in there. user.drop_item() I.loc = src hidden = I @@ -255,4 +255,4 @@ LINEN BINS if(hidden) hidden.loc = loc - hidden = null \ No newline at end of file + hidden = null diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 6db9a26fd8d..d5b966c7d98 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -193,6 +193,9 @@ L[tmpname] = R var/desc = input("Please select a telepad.", "RCS") in L E.pad = L[desc] + if(!Adjacent(user)) + to_chat(user, "Unable to teleport, too far from crate.") + return playsound(E.loc, E.usesound, 50, 1) to_chat(user, "Teleporting [name]...") E.teleporting = 1 @@ -204,17 +207,22 @@ to_chat(user, "Error: User located in container--aborting for safety.") playsound(E.loc, 'sound/machines/buzz-sigh.ogg', 50, 1) return + if(!(E.rcell && E.rcell.use(E.chargecost))) + to_chat(user, "Unable to teleport, insufficient charge.") + return var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(5, 1, src) s.start() do_teleport(src, E.pad, 0) - E.rcell.use(E.chargecost) to_chat(user, "Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.") return else E.rand_x = rand(50,200) E.rand_y = rand(50,200) var/L = locate(E.rand_x, E.rand_y, 6) + if(!Adjacent(user)) + to_chat(user, "Unable to teleport, too far from crate.") + return playsound(E.loc, E.usesound, 50, 1) to_chat(user, "Teleporting [name]...") E.teleporting = 1 @@ -226,11 +234,13 @@ to_chat(user, "Error: User located in container--aborting for safety.") playsound(E.loc, 'sound/machines/buzz-sigh.ogg', 50, 1) return + if(!(E.rcell && E.rcell.use(E.chargecost))) + to_chat(user, "Unable to teleport, insufficient charge.") + return var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(5, 1, src) s.start() do_teleport(src, L) - E.rcell.use(E.chargecost) to_chat(user, "Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.") return else 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 76b69edc28c..ed2599e91dd 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -327,7 +327,7 @@ new /obj/item/clothing/suit/storage/det_suit(src) new /obj/item/clothing/suit/storage/det_suit/forensics/blue(src) new /obj/item/clothing/suit/storage/det_suit/forensics/red(src) - new /obj/item/clothing/gloves/color/black(src) + new /obj/item/clothing/gloves/color/black/forensics(src) new /obj/item/clothing/head/det_hat(src) new /obj/item/clothing/shoes/brown(src) new /obj/item/weapon/storage/box/evidence(src) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 07a738a8c94..010da69a834 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -102,6 +102,9 @@ L[tmpname] = R var/desc = input("Please select a telepad.", "RCS") in L E.pad = L[desc] + if(!Adjacent(user)) + to_chat(user, "Unable to teleport, too far from crate.") + return playsound(E.loc, E.usesound, 50, 1) to_chat(user, "Teleporting [src.name]...") E.teleporting = 1 @@ -109,17 +112,23 @@ E.teleporting = 0 return E.teleporting = 0 + if(!(E.rcell && E.rcell.use(E.chargecost))) + to_chat(user, "Unable to teleport, insufficient charge.") + return var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(5, 1, src) s.start() do_teleport(src, E.pad, 0) - E.rcell.use(E.chargecost) to_chat(user, "Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.") return + else E.rand_x = rand(50,200) E.rand_y = rand(50,200) var/L = locate(E.rand_x, E.rand_y, 6) + if(!Adjacent(user)) + to_chat(user, "Unable to teleport, too far from crate.") + return playsound(E.loc, E.usesound, 50, 1) to_chat(user, "Teleporting [src.name]...") E.teleporting = 1 @@ -127,11 +136,13 @@ E.teleporting = 0 return E.teleporting = 0 + if(!(E.rcell && E.rcell.use(E.chargecost))) + to_chat(user, "Unable to teleport, insufficient charge.") + return var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(5, 1, src) s.start() do_teleport(src, L) - E.rcell.use(E.chargecost) to_chat(user, "Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.") return else diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm index 104fac7fd69..0fbc7b97879 100644 --- a/code/game/objects/structures/curtains.dm +++ b/code/game/objects/structures/curtains.dm @@ -35,6 +35,44 @@ icon_state = "open" layer = SHOWER_OPEN_LAYER +/obj/structure/curtain/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/toy/crayon)) + color = input(user, "Choose Color") as color + else if(isscrewdriver(W)) + if(anchored) + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] unscrews [src] from the floor.", "You start to unscrew [src] from the floor...", "You hear rustling noises.") + if(do_after(user, 50 * W.toolspeed, target = src)) + if(!anchored) + return + anchored = FALSE + to_chat(user, "You unscrew [src] from the floor.") + else + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] screws [src] to the floor.", "You start to screw [src] to the floor...", "You hear rustling noises.") + if(do_after(user, 50 * W.toolspeed, target = src)) + if(anchored) + return + anchored = TRUE + to_chat(user, "You screw [src] to the floor.") + else if(istype(W, /obj/item/weapon/wirecutters)) + if(!anchored) + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] cuts apart [src].", "You start to cut apart [src].", "You hear cutting.") + if(do_after(user, 50 * W.toolspeed, target = src)) + if(anchored) + return + to_chat(user, "You cut apart [src].") + deconstruct() + else + . = ..() + +/obj/structure/curtain/proc/deconstruct(disassembled = TRUE) + new /obj/item/stack/sheet/cloth(loc, 2) + new /obj/item/stack/sheet/plastic(loc, 2) + new /obj/item/stack/rods(loc, 1) + qdel(src) + /obj/structure/curtain/black name = "black curtain" color = "#222222" @@ -59,4 +97,4 @@ color = "#000066" #undef SHOWER_OPEN_LAYER -#undef SHOWER_CLOSED_LAYER \ No newline at end of file +#undef SHOWER_CLOSED_LAYER diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 72638ff0943..158593a973f 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -105,19 +105,21 @@ var/global/list/captain_display_cases = list() var/ue = null var/image/occupant_overlay = null var/obj/item/weapon/airlock_electronics/circuit + var/start_showpiece_type = null //add type for items on display + +/obj/structure/displaycase/New() + . = ..() + if(start_showpiece_type) + occupant = new start_showpiece_type(src) + update_icon() /obj/structure/displaycase/captains_laser name = "captain's display case" desc = "A display case for the captain's antique laser gun. Hooked up with an anti-theft system." - burglar_alarm = 1 - -/obj/structure/displaycase/captains_laser/New() - captain_display_cases += src - req_access = list(access_captain) + burglar_alarm = 1 locked = 1 - spawn(5) - occupant = new /obj/item/weapon/gun/energy/laser/captain(src) - update_icon() + req_access = list(access_captain) + start_showpiece_type = /obj/item/weapon/gun/energy/laser/captain /obj/structure/displaycase/Destroy() dump() diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index ed690192098..c93a481189d 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -43,7 +43,7 @@ /obj/structure/flora/tree/palm/New() ..() icon_state = pick("palm1","palm2") - pixel_x = 0 + pixel_x = 0 //grass /obj/structure/flora/grass @@ -209,7 +209,7 @@ icon_state = "plant-1" anchored = 0 layer = 5 - w_class = 5 + w_class = WEIGHT_CLASS_HUGE force = 10 throwforce = 13 throw_speed = 2 @@ -333,4 +333,4 @@ else qdel(src) else - return ..() \ No newline at end of file + return ..() diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index 265d1d1c236..14f1357af87 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -3,7 +3,7 @@ desc = "A folded membrane which rapidly expands into a large cubical shape on activation." icon = 'icons/obj/inflatable.dmi' icon_state = "folded_wall" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL /obj/item/inflatable/attack_self(mob/user) playsound(loc, 'sound/items/zip.ogg', 75, 1) @@ -279,7 +279,7 @@ icon_state = "inf_box" item_state = "syringe_kit" max_combined_w_class = 21 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL /obj/item/weapon/storage/briefcase/inflatable/New() ..() diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index bfb5d584965..3f4eea3dbf4 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -40,7 +40,7 @@ name = "sign" desc = "" icon = 'icons/obj/decals.dmi' - w_class = 3 //big + w_class = WEIGHT_CLASS_NORMAL burn_state = FLAMMABLE var/sign_state = "" @@ -225,4 +225,3 @@ name = "\improper Escape Arm" desc = "A direction sign, pointing out which way escape shuttle dock is." icon_state = "direction_evac" - diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 1835a1bb31a..56c6861e4fc 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -93,7 +93,7 @@ desc = "A collapsed roller bed that can be carried around." icon = 'icons/obj/rollerbed.dmi' icon_state = "folded" - w_class = 4 // Can't be put in backpacks. + w_class = WEIGHT_CLASS_BULKY // Can't be put in backpacks. /obj/item/roller/attack_self(mob/user) var/obj/structure/stool/bed/roller/R = new /obj/structure/stool/bed/roller(user.loc) @@ -140,4 +140,4 @@ var/obj/structure/stool/bed/roller/R = new /obj/structure/stool/bed/roller(user.loc) R.add_fingerprint(user) qdel(held) - held = null \ No newline at end of file + held = null diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm index 6de3c88981d..6000b361aa5 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm @@ -54,7 +54,7 @@ icon_state = "stool" force = 10 throwforce = 10 - w_class = 5 + w_class = WEIGHT_CLASS_HUGE var/obj/structure/stool/origin = null /obj/item/weapon/stool/attack_self(mob/user as mob) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 55181579699..d6bec1019b2 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -412,6 +412,35 @@ /obj/structure/table/woodentable/poker/narsie_act() return +/* + * Fancy Tables + */ + +/obj/structure/table/wood/fancy + name = "fancy table" + desc = "A standard metal table frame covered with an amazingly fancy, patterned cloth." + icon = 'icons/obj/structures.dmi' + icon_state = "fancy_table" + parts = /obj/item/weapon/table_parts/fancy + canSmoothWith = list(/obj/structure/table/wood/fancy, /obj/structure/table/wood/fancy/black) + +/obj/structure/table/wood/fancy/New() + icon = 'icons/obj/smooth_structures/fancy_table.dmi' //so that the tables place correctly in the map editor + ..() + +/obj/structure/table/wood/fancy/black + icon_state = "fancy_table_black" + parts = /obj/item/weapon/table_parts/fancy/black + +/obj/structure/table/wood/fancy/black/New() + ..() + icon = 'icons/obj/smooth_structures/fancy_table_black.dmi' //so that the tables place correctly in the map editor + + +/* + * Glass Tables + */ + /obj/structure/glasstable_frame name = "glass table frame" desc = "A metal frame for a glass table." diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 767d934c7dd..d3cc48d46bf 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -106,10 +106,10 @@ to_chat(user, "You need a tighter grip!") if(cistern) - if(I.w_class > 3) + if(I.w_class > WEIGHT_CLASS_NORMAL) to_chat(user, "[I] does not fit!") return - if(w_items + I.w_class > 5) + if(w_items + I.w_class > WEIGHT_CLASS_HUGE) to_chat(user, "The cistern is full!") return if(!user.drop_item()) @@ -120,6 +120,15 @@ to_chat(user, "You carefully place [I] into the cistern.") return +/obj/structure/toilet/secret + var/secret_type = null + +/obj/structure/toilet/secret/New() + . = ..() + if(secret_type) + var/obj/item/secret = new secret_type(src) + secret.desc += " It's a secret!" + w_items += secret.w_class /obj/structure/urinal diff --git a/code/game/response_team.dm b/code/game/response_team.dm index bf25ad6760e..344a9b72054 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -195,6 +195,8 @@ var/ert_request_answered = 0 ticker.mode.ert += M.mind M.forceMove(spawn_location) + job_master.CreateMoneyAccount(M, class, null) + active_team.equip_officer(class, M) return M @@ -332,6 +334,8 @@ var/ert_request_answered = 0 W.name = "[H.real_name]'s ID Card ([rt_job])" W.access = get_centcom_access(W.assignment) W.photo = get_id_photo(H) + if(H.mind && H.mind.initial_account && H.mind.initial_account.account_number) + W.associated_account_number = H.mind.initial_account.account_number /datum/outfit/job/centcom/response_team/imprint_pda(mob/living/carbon/human/H) var/obj/item/device/pda/PDA = H.wear_pda diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm index 94dc68b51f2..f4d281cdf68 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -145,6 +145,11 @@ burnt = 1 update_icon() +/turf/simulated/floor/carpet/black + icon = 'icons/turf/floors/carpet_black.dmi' + floor_tile = /obj/item/stack/tile/carpet/black + canSmoothWith = list(/turf/simulated/floor/carpet/black) + /turf/simulated/floor/fakespace icon = 'icons/turf/space.dmi' icon_state = "0" @@ -153,4 +158,4 @@ /turf/simulated/floor/fakespace/New() ..() - icon_state = "[rand(0,25)]" \ No newline at end of file + icon_state = "[rand(0,25)]" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 6853baf0755..d7de6dd6844 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -101,7 +101,9 @@ var/global/nologevent = 0

[check_rights(R_ADMIN,0) ? "Traitor panel | " : "" ] Narrate to | - Subtle message + Subtle message | + Bless | + Smite "} if(M.client) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index d6a5ede9ed8..4c9194d1225 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -229,7 +229,8 @@ var/list/admin_verbs_snpc = list( verbs += /client/proc/togglebuildmodeself if(holder.rights & R_ADMIN) verbs += admin_verbs_admin - control_freak = 0 + spawn(1) + control_freak = 0 if(holder.rights & R_BAN) verbs += admin_verbs_ban if(holder.rights & R_EVENT) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 605c4acd1f3..b43001f3abc 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1546,7 +1546,7 @@ to_chat(X, take_msg) else if(is_mhelp && check_rights(R_MOD|R_MENTOR, 0, X.mob)) to_chat(X, take_msg) - to_chat(M, "Your question is being attended to by [key_name(usr.client)]. Thanks for your patience!") + to_chat(M, "Your question is being attended to by [key_name(usr.client, null, 0)]. Thanks for your patience!") else to_chat(usr, "Unable to locate mob.") @@ -1790,9 +1790,15 @@ H = M ptypes += "Brain Damage" ptypes += "Honk Tumor" + ptypes += "Hallucinate" + ptypes += "Cold" + ptypes += "Hunger" ptypes += "Cluwne" ptypes += "Mutagen Cookie" ptypes += "Hellwater Cookie" + ptypes += "Assassin" + ptypes += "Priest" + ptypes += "Lynch" var/punishment = input(owner, "How would you like to smite [M]?", "Its good to be baaaad...", "") as null|anything in ptypes if(!(punishment in ptypes)) return @@ -1820,6 +1826,15 @@ to_chat(H, "Life seems funnier, somehow.") organ.insert(H) logmsg = "a honk tumor." + if("Hallucinate") + H.Hallucinate(1000) + logmsg = "hallucinations." + if("Hunger") + H.nutrition = NUTRITION_LEVEL_CURSED + logmsg = "starvation." + if("Cold") + H.reagents.add_reagent("frostoil", 40) + H.reagents.add_reagent("ice", 40) if("Cluwne") H.makeCluwne() logmsg = "cluwned." @@ -1828,6 +1843,7 @@ evilcookie.reagents.add_reagent("mutagen", 10) evilcookie.desc = "It has a faint green glow." evilcookie.bitesize = 100 + evilcookie.flags = NODROP H.drop_l_hand() H.equip_to_slot_or_del(evilcookie, slot_l_hand) logmsg = "a mutagen cookie." @@ -1836,9 +1852,92 @@ evilcookie.reagents.add_reagent("hell_water", 25) evilcookie.desc = "Sulphur-flavored." evilcookie.bitesize = 100 + evilcookie.flags = NODROP H.drop_l_hand() H.equip_to_slot_or_del(evilcookie, slot_l_hand) logmsg = "a hellwater cookie." + if("Priest") + logmsg = "priest." + H.mutations |= NOCLONE + message_admins("[key_name_admin(owner)] is sending a dark priest to assassinate [key_name_admin(M)]...") + var/list/candidates = pollCandidates("Do you want to play as a murderous dark priest?") + if(!candidates.len) + to_chat(usr, "ERROR: Could not create priest. No valid candidates.") + return + var/mob/C = pick(candidates) + var/key_of_priest = C.key + if(!key_of_priest) + to_chat(usr, "ERROR: Could not create priest. Could not pick key.") + return + var/datum/mind/priest_mind = new /datum/mind(key_of_priest) + priest_mind.active = 1 + var/mob/living/carbon/human/priest_mob = new /mob/living/carbon/human(pick(latejoin)) + priest_mind.transfer_to(priest_mob) + var/datum/outfit/admin/dark_priest/O = new /datum/outfit/admin/dark_priest + priest_mob.equipOutfit(O, FALSE) + var/obj/item/weapon/pinpointer/advpinpointer/N = new /obj/item/weapon/pinpointer/advpinpointer(priest_mob) + priest_mob.equip_to_slot_or_del(N, slot_r_store) + N.active = 1 + N.mode = 2 + N.target = H + N.point_at(N.target) + N.flags |= NODROP + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = priest_mind + kill_objective.target = H.mind + kill_objective.explanation_text = "Murder [H.real_name], the [H.mind.assigned_role], in the name of the dark gods." + priest_mind.objectives += kill_objective + ticker.mode.traitors |= priest_mob.mind + to_chat(priest_mob, "ATTENTION: You are now a dark priest!") + to_chat(priest_mob, "Goal: MURDER [H.real_name], currently in [get_area(H.loc)], in the name of the dark gods. "); + to_chat(priest_mob, "The gods will prevent their revival."); + priest_mob.mind.special_role = SPECIAL_ROLE_TRAITOR + var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR] + tatorhud.join_hud(priest_mob) + ticker.mode.set_antag_hud(priest_mob, "hudsyndicate") + if("Assassin") + logmsg = "assassin." + var/list/possible_traitors = list() + for(var/mob/living/player in living_mob_list) + if(player.client && player.mind && !player.mind.special_role && player.stat != DEAD && player != H) + if(ishuman(player)) + if(player.client && (ROLE_TRAITOR in player.client.prefs.be_special) && !jobban_isbanned(player, ROLE_TRAITOR) && !jobban_isbanned(player, "Syndicate")) + possible_traitors += player.mind + for(var/datum/mind/player in possible_traitors) + if(player.current) + if(ismindshielded(player.current)) + possible_traitors -= player + if(possible_traitors.len) + var/datum/mind/newtraitormind = pick(possible_traitors) + var/mob/living/newtraitor = newtraitormind.current + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = newtraitormind + kill_objective.target = H.mind + kill_objective.explanation_text = "Assassinate [H.real_name], the [H.mind.assigned_role]." + newtraitormind.objectives += kill_objective + ticker.mode.equip_traitor(newtraitor) + ticker.mode.traitors |= newtraitor.mind + to_chat(newtraitor, "ATTENTION: It is time to pay your debt to the Syndicate...") + to_chat(newtraitor, "You are now a traitor.") + to_chat(newtraitor, "Goal: KILL [H.real_name], currently in [get_area(H.loc)]"); + newtraitor.mind.special_role = SPECIAL_ROLE_TRAITOR + var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR] + tatorhud.join_hud(newtraitor) + ticker.mode.set_antag_hud(newtraitor, "hudsyndicate") + else + to_chat(usr, "ERROR: Failed to create a traitor.") + return + if("Lynch") + logmsg = "lynch." + for(var/datum/mind/crew in ticker.minds) + if(!crew.current) + continue + if(!isliving(crew.current)) + continue + if(crew == H.mind) + continue + to_chat(crew.current, "
The gods have given you a task: find [H.real_name], located in [get_area(H.loc)], and slay them!"); + to_chat(crew.current, "Do not harm anyone other than [H.real_name] while carrying out this task.
"); if("Gib") logmsg = "gibbed." M.gib(FALSE) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 04f8b29da0c..8d201d6ee8a 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -35,6 +35,9 @@ client/proc/one_click_antag() var/list/mob/living/carbon/human/candidates = list() var/mob/living/carbon/human/H = null + log_admin("[key_name(owner)] tried making Traitors with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making Traitors with One-Click-Antag") + for(var/mob/living/carbon/human/applicant in player_list) if(ROLE_TRAITOR in applicant.client.prefs.be_special) if(player_old_enough_antag(applicant.client,ROLE_TRAITOR)) @@ -69,6 +72,9 @@ client/proc/one_click_antag() var/list/mob/living/carbon/human/candidates = list() var/mob/living/carbon/human/H = null + log_admin("[key_name(owner)] tried making Changelings with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making Changelings with One-Click-Antag") + for(var/mob/living/carbon/human/applicant in player_list) if(ROLE_CHANGELING in applicant.client.prefs.be_special) if(player_old_enough_antag(applicant.client,ROLE_CHANGELING)) @@ -101,6 +107,9 @@ client/proc/one_click_antag() var/list/mob/living/carbon/human/candidates = list() var/mob/living/carbon/human/H = null + log_admin("[key_name(owner)] tried making Revolutionaries with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making Revolutionaries with One-Click-Antag") + for(var/mob/living/carbon/human/applicant in player_list) if(ROLE_REV in applicant.client.prefs.be_special) if(player_old_enough_antag(applicant.client,ROLE_REV)) @@ -127,6 +136,9 @@ client/proc/one_click_antag() var/list/candidates = pollCandidates("Do you wish to be considered for the position of a Wizard Foundation 'diplomat'?", "wizard") + log_admin("[key_name(owner)] tried making a Wizard with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making a Wizard with One-Click-Antag") + if(candidates.len) var/mob/dead/observer/selected = pick(candidates) candidates -= selected @@ -146,6 +158,9 @@ client/proc/one_click_antag() var/list/mob/living/carbon/human/candidates = list() var/mob/living/carbon/human/H = null + log_admin("[key_name(owner)] tried making a Cult with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making a Cult with One-Click-Antag") + for(var/mob/living/carbon/human/applicant in player_list) if(ROLE_CULTIST in applicant.client.prefs.be_special) if(player_old_enough_antag(applicant.client,ROLE_CULTIST)) @@ -177,6 +192,9 @@ client/proc/one_click_antag() var/mob/theghost = null var/time_passed = world.time + log_admin("[key_name(owner)] tried making a Nuke Op Team with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making a Nuke Op Team with One-Click-Antag") + for(var/mob/G in respawnable_list) if(istype(G) && G.client && (ROLE_OPERATIVE in G.client.prefs.be_special)) if(!jobban_isbanned(G, "operative") && !jobban_isbanned(G, "Syndicate")) @@ -265,10 +283,18 @@ client/proc/one_click_antag() //Abductors /datum/admins/proc/makeAbductorTeam() new /datum/event/abductor + + log_admin("[key_name(owner)] tried making Abductors with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making Abductors with One-Click-Antag") + return 1 /datum/admins/proc/makeAliens() var/datum/event/alien_infestation/E = new /datum/event/alien_infestation + + log_admin("[key_name(owner)] tried making Aliens with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making Aliens with One-Click-Antag") + E.spawncount = 3 // TODO The fact we have to do this rather than just have events start // when we ask them to, is bad. @@ -289,6 +315,9 @@ client/proc/one_click_antag() if(prob(10)) input = "Save Runtime and any other cute things on the station." + log_admin("[key_name(owner)] tried making a Death Squad with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making a Death Squad with One-Click-Antag") + var/syndicate_leader_selected = 0 //when the leader is chosen. The last person spawned. //Generates a list of commandos from active ghosts. Then the user picks which characters to respawn as the commandos. @@ -400,6 +429,9 @@ client/proc/one_click_antag() var/leader_chosen = 0 //when the leader is chosen. The last person spawned. + log_admin("[key_name(owner)] tried making Vox Raiders with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making Vox Raiders with One-Click-Antag") + //Generates a list of candidates from active ghosts. for(var/mob/G in respawnable_list) if(istype(G) && G.client && (ROLE_RAIDER in G.client.prefs.be_special)) @@ -502,6 +534,9 @@ client/proc/one_click_antag() var/list/mob/living/carbon/human/candidates = list() var/mob/living/carbon/human/H = null + log_admin("[key_name(owner)] tried making Vampires with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making Vampires with One-Click-Antag") + for(var/mob/living/carbon/human/applicant in player_list) if(ROLE_VAMPIRE in applicant.client.prefs.be_special) if(player_old_enough_antag(applicant.client,ROLE_VAMPIRE)) @@ -533,6 +568,9 @@ client/proc/one_click_antag() var/mob/theghost = null var/time_passed = world.time + log_admin("[key_name(owner)] tried making Thunderdome Teams with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making Thunderdone Teams with One-Click-Antag") + //Generates a list of candidates from active ghosts. for(var/mob/G in respawnable_list) spawn(0) diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm index 9bfe544cef5..79914745e79 100644 --- a/code/modules/admin/verbs/onlyone.dm +++ b/code/modules/admin/verbs/onlyone.dm @@ -37,7 +37,7 @@ H.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/weapon/claymore(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/claymore/highlander(H), slot_r_hand) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(H.loc), slot_l_store) diff --git a/code/modules/arcade/arcade_prize.dm b/code/modules/arcade/arcade_prize.dm index d3457696268..6af1ca30f36 100644 --- a/code/modules/arcade/arcade_prize.dm +++ b/code/modules/arcade/arcade_prize.dm @@ -67,7 +67,7 @@ throwforce = 0 throw_speed = 1 throw_range = 1 - w_class = 1 + w_class = WEIGHT_CLASS_TINY max_amount = 9999 //Dang that's a lot of tickets /obj/item/stack/tickets/New(var/loc, var/amount=null) @@ -86,4 +86,4 @@ else if(amount >= 4) icon_state = "tickets_2" else - icon_state = "tickets_1" \ No newline at end of file + icon_state = "tickets_1" diff --git a/code/modules/arcade/mob_hunt/mob_cards.dm b/code/modules/arcade/mob_hunt/mob_cards.dm index 0479644ad85..26393e8e370 100644 --- a/code/modules/arcade/mob_hunt/mob_cards.dm +++ b/code/modules/arcade/mob_hunt/mob_cards.dm @@ -7,7 +7,7 @@ icon_state = "trade_card" force = 0 throwforce = 1 - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/datum/mob_hunt/mob_data /obj/item/weapon/nanomob_card/proc/update_info() @@ -40,4 +40,4 @@ /obj/item/weapon/storage/box/nanomob_booster_pack/New() ..() for(var/i in 1 to 6) - new /obj/item/weapon/nanomob_card/booster(src) \ No newline at end of file + new /obj/item/weapon/nanomob_card/booster(src) diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index bd981e99076..34cb4c458f0 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -4,12 +4,12 @@ icon = 'icons/obj/assemblies/new_assemblies.dmi' icon_state = "" flags = CONDUCT - w_class = 2 + w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=100) throwforce = 2 throw_speed = 3 throw_range = 10 - origin_tech = "magnets=1" + origin_tech = "magnets=1;engineering=1" toolspeed = 1 usesound = 'sound/items/Deconstruct.ogg' diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index f6019ace266..41a67a43560 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/tank.dmi' item_state = "assembly" throwforce = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL throw_speed = 2 throw_range = 4 flags = CONDUCT //Copied this from old code, so this may or may not be necessary @@ -171,4 +171,4 @@ if(!T) return T.assume_air(removed) - air_update_turf() \ No newline at end of file + air_update_turf() diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 47d33a1e5ce..f4a71a77ced 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -5,7 +5,7 @@ item_state = "assembly" flags = CONDUCT throwforce = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 10 @@ -100,7 +100,7 @@ a_left.hear_talk(M, msg) if(a_right) a_right.hear_talk(M, msg) - + hear_message(mob/living/M as mob, msg) if(a_left) a_left.hear_message(M, msg) @@ -210,8 +210,3 @@ qdel(src) return return - - - - - diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 3e0c8061ceb..16b047ab1f0 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -3,7 +3,7 @@ desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted." icon_state = "infrared" materials = list(MAT_METAL=1000, MAT_GLASS=500) - origin_tech = "magnets=2" + origin_tech = "magnets=2;materials=2" bomb_name = "tripwire mine" diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index 02a869c9bc3..7436d27a608 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -3,7 +3,7 @@ desc = "A handy little spring-loaded trap for catching pesty rodents." icon_state = "mousetrap" materials = list(MAT_METAL=100) - origin_tech = "combat=1" + origin_tech = "combat=1;materials=2;engineering=1" var/armed = 0 bomb_name = "contact mine" diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index f3296cdabb0..767fe11b8c6 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -3,7 +3,7 @@ desc = "Used for scanning and alerting when someone enters a certain proximity." icon_state = "prox" materials = list(MAT_METAL=800, MAT_GLASS=200) - origin_tech = "magnets=1" + origin_tech = "magnets=1;engineering=1" secured = 0 diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index 6ffe6f42d12..aa8bc299e66 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -6,7 +6,7 @@ var/obj/item/clothing/head/helmet/part1 = null var/obj/item/device/radio/electropack/part2 = null var/status = 0 - w_class = 5 + w_class = WEIGHT_CLASS_HUGE flags = CONDUCT /obj/item/assembly/shock_kit/Destroy() diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 9a76869d339..959a8d60452 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -4,7 +4,7 @@ icon_state = "signaller" item_state = "signaler" materials = list(MAT_METAL=400, MAT_GLASS=120) - origin_tech = "magnets=1" + origin_tech = "magnets=1;bluespace=1" wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE secured = 1 diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index 0587a806b2b..eeed711ee29 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -3,7 +3,7 @@ desc = "Used to time things. Works well with contraptions which has to count down. Tick tock." icon_state = "timer" materials = list(MAT_METAL=500, MAT_GLASS=50) - origin_tech = "magnets=1" + origin_tech = "magnets=1;engineering=1" secured = 0 diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index ba0752dd28e..05f5b62a741 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -3,7 +3,7 @@ desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated." icon_state = "voice" materials = list(MAT_METAL=500, MAT_GLASS=50) - origin_tech = "magnets=1" + origin_tech = "magnets=1;engineering=1" var/listening = 0 var/recorded = null //the activation message var/recorded_type = 0 // 0 for say, 1 for emote @@ -18,10 +18,10 @@ hear_talk(mob/living/M as mob, msg) hear_input(M, msg, 0) - + hear_message(mob/living/M as mob, msg) hear_input(M, msg, 1) - + proc/hear_input(mob/living/M as mob, msg, type) if(!istype(M,/mob/living)) return diff --git a/code/modules/client/client defines.dm b/code/modules/client/client defines.dm index d547a9a582f..ca3d17e9c50 100644 --- a/code/modules/client/client defines.dm +++ b/code/modules/client/client defines.dm @@ -76,8 +76,6 @@ "off" = "borgmacro") ) - var/reset_stretch = 0 //Used by things that fiddle with client's stretch-to-fit. - var/topic_debugging = 0 //if set to true, allows client to see nanoUI errors -- yes i realize this is messy but it'll make live testing infinitely easier control_freak = CONTROL_FREAK_ALL | CONTROL_FREAK_SKIN | CONTROL_FREAK_MACROS @@ -93,7 +91,7 @@ // Donator stuff. var/donator_level = DONATOR_LEVEL_NONE - + // If set to true, this client can interact with atoms such as buttons and doors on top of regular machinery interaction var/advanced_admin_interaction = FALSE diff --git a/code/modules/client/preference/loadout/loadout_hat.dm b/code/modules/client/preference/loadout/loadout_hat.dm index 1b1978f7d71..196f9f65ca0 100644 --- a/code/modules/client/preference/loadout/loadout_hat.dm +++ b/code/modules/client/preference/loadout/loadout_hat.dm @@ -137,7 +137,7 @@ /datum/gear/hat/med_beret display_name = "medical beret" path = /obj/item/clothing/head/beret/med - allowed_roles = list("Chief Medical Officer", "Medical Doctor" , "Virologist", "Brig Physician") + allowed_roles = list("Chief Medical Officer", "Medical Doctor" , "Virologist", "Brig Physician" , "Coroner") /datum/gear/hat/surgicalcap_purple display_name = "surgical cap, purple" diff --git a/code/modules/client/preference/loadout/loadout_racial.dm b/code/modules/client/preference/loadout/loadout_racial.dm index e9d89a31d34..f7d96011e5c 100644 --- a/code/modules/client/preference/loadout/loadout_racial.dm +++ b/code/modules/client/preference/loadout/loadout_racial.dm @@ -19,7 +19,7 @@ display_name = "lightweight veil" description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built medical HUD." path = /obj/item/clothing/glasses/hud/health/tajblind - allowed_roles = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Psychiatrist", "Paramedic", "Virologist", "Brig Physician") + allowed_roles = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Psychiatrist", "Paramedic", "Virologist", "Brig Physician" , "Coroner") /datum/gear/racial/tajsci display_name = "hi-tech veil" diff --git a/code/modules/client/preference/loadout/loadout_suit.dm b/code/modules/client/preference/loadout/loadout_suit.dm index 2ac4b3bb7e9..ae43a10ee89 100644 --- a/code/modules/client/preference/loadout/loadout_suit.dm +++ b/code/modules/client/preference/loadout/loadout_suit.dm @@ -29,7 +29,7 @@ /datum/gear/suit/coat/job/med display_name = "winter coat, medical" path = /obj/item/clothing/suit/hooded/wintercoat/medical - allowed_roles = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Psychiatrist", "Paramedic", "Virologist", "Brig Physician") + allowed_roles = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Psychiatrist", "Paramedic", "Virologist", "Brig Physician" , "Coroner") /datum/gear/suit/coat/job/sci display_name = "winter coat, science" diff --git a/code/modules/client/preference/loadout/loadout_uniform.dm b/code/modules/client/preference/loadout/loadout_uniform.dm index 7ffb7e09516..889dfaa1080 100644 --- a/code/modules/client/preference/loadout/loadout_uniform.dm +++ b/code/modules/client/preference/loadout/loadout_uniform.dm @@ -61,12 +61,12 @@ /datum/gear/uniform/skirt/job/viro display_name = "skirt, virologist" path = /obj/item/clothing/under/rank/virologist/skirt - allowed_roles = list("Chief Medical Officer","Medical Doctor") + allowed_roles = list("Virologist") /datum/gear/uniform/skirt/job/med display_name = "skirt, medical" path = /obj/item/clothing/under/rank/medical/skirt - allowed_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Psychiatrist","Paramedic","Brig Physician") + allowed_roles = list("Chief Medical Officer","Medical Doctor","Psychiatrist","Paramedic","Coroner") /datum/gear/uniform/skirt/job/phys display_name = "skirt, physician" diff --git a/code/modules/client/view.dm b/code/modules/client/view.dm new file mode 100644 index 00000000000..f4e74e203e8 --- /dev/null +++ b/code/modules/client/view.dm @@ -0,0 +1,90 @@ +/* + * ViewMods Client module + * This should be used by anything that wants to change a client's view range. + * Also includes + */ + +/* Defines */ +#define CUSTOM_VIEWRANGES list(1, 2, 3, 4, 5, 6, "RESET") + +/* Viewmods */ +/client + var/list/ViewMods = list() + var/ViewModsActive = FALSE + var/ViewPreferedIconSize = 0 + +/client/proc/AddViewMod(id, size) + var/datum/viewmod/V = new /datum/viewmod(id, size) + ViewMods[V.id] = V + UpdateView() + +/client/proc/CheckViewMod(id) + . = 0 + if(ViewMods[id]) + . = 1 + +/client/proc/RemoveViewMod(id) + if(CheckViewMod(id)) + qdel(ViewMods[id]) + ViewMods.Remove(id) + UpdateView() + +/client/proc/UpdateView() + if(!ViewModsActive) + ViewPreferedIconSize = winget(src, "mapwindow.map", "icon-size") + + var/highest_range = 0 + for(var/mod_id in ViewMods) + var/datum/viewmod/V = ViewMods[mod_id] + highest_range = max(highest_range, V.size) + + SetView(highest_range ? highest_range : world.view) + ViewModsActive = (highest_range > 0) + +/client/proc/SetView(view_range) + if(view_range == world.view) + winset(src, "mapwindow.map", "icon-size=[ViewPreferedIconSize]") + else + winset(src, "mapwindow.map", "icon-size=0") + + view = view_range + + if(mob && mob.hud_used) + // If view range is less than world.view, assume the HUD will not fit under normal mode and turn it to reduced + if(view_range < world.view) + // If it's really tiny, turn their hud off completely + if(view_range <= ARBITRARY_VIEWRANGE_NOHUD) + mob.hud_used.show_hud(HUD_STYLE_NOHUD) + else + mob.hud_used.show_hud(HUD_STYLE_REDUCED) + else + mob.hud_used.show_hud(HUD_STYLE_STANDARD) + +/* Viewmod datums */ +/datum/viewmod + var/id = "" + var/size = -1 + +/datum/viewmod/New(new_id, new_size = world.view) + . = ..() + id = new_id + size = new_size + +/* Client verbs */ +/proc/viewNum_to_text(view) + return "[(view * 2) + 1]x[(view * 2) + 1]" + +/client/verb/set_view_range(view_range as null|anything in CUSTOM_VIEWRANGES) + set name = "Set View Range" + set category = "Preferences" + + if(!view_range) + return + + RemoveViewMod("custom") + if(view_range == "RESET") + to_chat(src, "View range reset.") + return + + to_chat(src, "View range set to [viewNum_to_text(view_range)]") + AddViewMod("custom", view_range) \ No newline at end of file diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 914b3ed9209..2142d336fac 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -85,7 +85,7 @@ //Ears: currently only used for headsets and earmuffs /obj/item/clothing/ears name = "ears" - w_class = 1 + w_class = WEIGHT_CLASS_TINY throwforce = 2 slot_flags = SLOT_EARS burn_state = FIRE_PROOF @@ -128,7 +128,7 @@ /obj/item/clothing/ears/offear name = "Other ear" - w_class = 5 + w_class = WEIGHT_CLASS_HUGE icon = 'icons/mob/screen_gen.dmi' icon_state = "block" slot_flags = SLOT_EARS | SLOT_TWOEARS @@ -145,7 +145,7 @@ /obj/item/clothing/glasses name = "glasses" icon = 'icons/obj/clothing/glasses.dmi' - w_class = 2 + w_class = WEIGHT_CLASS_SMALL flags_cover = GLASSESCOVERSEYES slot_flags = SLOT_EYES materials = list(MAT_GLASS = 250) @@ -177,7 +177,7 @@ BLIND // can't see anything /obj/item/clothing/gloves name = "gloves" gender = PLURAL //Carn: for grammarically correct text-parsing - w_class = 2 + w_class = WEIGHT_CLASS_SMALL icon = 'icons/obj/clothing/gloves.dmi' siemens_coefficient = 0.50 body_parts_covered = HANDS @@ -543,7 +543,7 @@ BLIND // can't see anything desc = "A suit that protects against low pressure environments. Has a big 13 on the back." icon_state = "space" item_state = "s_suit" - w_class = 4//bulky item + w_class = WEIGHT_CLASS_BULKY gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 flags = STOPSPRESSUREDMAGE | THICKMATERIAL diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 5c0c6dcb402..c7c7c3afcb0 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -35,7 +35,7 @@ desc = "Used for seeing walls, floors, and stuff through anything." icon_state = "meson" item_state = "glasses" - origin_tech = "magnets=2;engineering=2" + origin_tech = "magnets=1;engineering=2" vision_flags = SEE_TURFS invis_view = SEE_INVISIBLE_MINIMUM //don't render darkness while wearing these prescription_upgradable = 1 @@ -51,6 +51,7 @@ desc = "An Optical Meson Scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness." icon_state = "nvgmeson" item_state = "glasses" + origin_tech = "magnets=4;engineering=5;plasmatech=4" darkness_view = 8 prescription_upgradable = 0 @@ -84,6 +85,7 @@ desc = "A pair of snazzy goggles used to protect against chemical spills. Fitted with an analyzer for scanning items and reagents." icon_state = "purple" item_state = "glasses" + origin_tech = "magnets=2;engineering=1" prescription_upgradable = 0 scan_reagents = 1 //You can see reagents while wearing science goggles species_fit = list("Vox") @@ -119,7 +121,7 @@ desc = "You can totally see in the dark now!" icon_state = "night" item_state = "glasses" - origin_tech = "magnets=2" + origin_tech = "materials=4;magnets=4;plasmatech=4;engineering=4" darkness_view = 8 invis_view = SEE_INVISIBLE_MINIMUM //don't render darkness while wearing these species_fit = list("Vox") diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 9eb2455622e..818ed3f2f10 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -29,6 +29,7 @@ name = "\improper Health Scanner HUD" desc = "A heads-up display that scans the humans in view and provides accurate data about their health status." icon_state = "healthhud" + origin_tech = "magnets=3;biotech=2" HUDType = DATA_HUD_MEDICAL_ADVANCED species_fit = list("Vox") sprite_sheets = list( @@ -48,6 +49,7 @@ desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness." icon_state = "healthhudnight" item_state = "glasses" + origin_tech = "magnets=4;biotech=4;plasmatech=4;engineering=5" darkness_view = 8 invis_view = SEE_INVISIBLE_MINIMUM //don't render darkness while wearing these prescription_upgradable = 0 @@ -56,6 +58,7 @@ name = "Diagnostic HUD" desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits." icon_state = "diagnostichud" + origin_tech = "magnets=2;engineering=2" HUDType = DATA_HUD_DIAGNOSTIC species_fit = list("Vox") sprite_sheets = list( @@ -67,6 +70,7 @@ desc = "A robotics diagnostic HUD fitted with a light amplifier." icon_state = "diagnostichudnight" item_state = "glasses" + origin_tech = "magnets=4;powerstorage=4;plasmatech=4;engineering=5" darkness_view = 8 invis_view = SEE_INVISIBLE_MINIMUM //don't render darkness while wearing these prescription_upgradable = 0 @@ -75,6 +79,7 @@ name = "\improper Security HUD" desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status and security records." icon_state = "securityhud" + origin_tech = "magnets=3;combat=2" var/global/list/jobs[0] HUDType = DATA_HUD_SECURITY_ADVANCED species_fit = list("Vox") @@ -102,6 +107,7 @@ name = "\improper Night Vision Security HUD" desc = "An advanced heads-up display which provides id data and vision in complete darkness." icon_state = "securityhudnight" + origin_tech = "magnets=4;combat=4;plasmatech=4;engineering=5" darkness_view = 8 invis_view = SEE_INVISIBLE_MINIMUM //don't render darkness while wearing these prescription_upgradable = 0 @@ -110,6 +116,7 @@ name = "HUDSunglasses" desc = "Sunglasses with a HUD." icon_state = "sunhud" + origin_tech = "magnets=3;combat=3;engineering=3" darkness_view = 1 flash_protect = 1 tint = 1 @@ -165,4 +172,4 @@ up = 0 /obj/item/clothing/glasses/hud/health/tajblind/attack_self() - toggle_veil() \ No newline at end of file + toggle_veil() diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index ee5022a1793..5b0ec203c1d 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -17,6 +17,13 @@ icon_state = "black" item_state = "r_hands" + +/obj/item/clothing/gloves/color/black/forensics + name = "forensics gloves" + desc = "These high-tech gloves don't leave any material traces on objects they touch. Perfect for leaving crime scenes undisturbed...both before and after the crime." + icon_state = "forensics" + can_leave_fibers = FALSE + /obj/item/clothing/gloves/combat desc = "These tactical gloves are somewhat fire and impact resistant." name = "combat gloves" @@ -124,4 +131,4 @@ to_chat(user, "You cut [cell] away from [src].") cell.forceMove(get_turf(loc)) cell = null - update_icon() \ No newline at end of file + update_icon() diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 5ddb28359e6..6d46eb7b061 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -380,7 +380,7 @@ throwforce = 3.0 throw_speed = 2 throw_range = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL attack_verb = list("warned", "cautioned", "smashed") burn_state = FIRE_PROOF diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index 25cdc259f92..59081cf3d00 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -5,7 +5,7 @@ item_state = "balaclava" flags = BLOCKHAIR flags_inv = HIDEFACE - w_class = 2 + w_class = WEIGHT_CLASS_SMALL actions_types = list(/datum/action/item_action/adjust) adjusted_flags = SLOT_HEAD species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") @@ -27,7 +27,7 @@ item_state = "luchag" flags = BLOCKHAIR flags_inv = HIDEFACE - w_class = 2 + w_class = WEIGHT_CLASS_SMALL species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', @@ -47,4 +47,4 @@ name = "Rudos Mask" desc = "Worn by robust fighters who are willing to do anything to win." icon_state = "luchar" - item_state = "luchar" \ No newline at end of file + item_state = "luchar" diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index c0ebe33a796..851c10db354 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -5,7 +5,7 @@ item_state = "breath" flags = AIRTIGHT flags_cover = MASKCOVERSMOUTH - w_class = 2 + w_class = WEIGHT_CLASS_SMALL gas_transfer_coefficient = 0.10 permeability_coefficient = 0.50 actions_types = list(/datum/action/item_action/adjust) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 0a3ee36ebbb..80350b3f3fe 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -5,7 +5,7 @@ flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT flags_inv = HIDEEARS|HIDEEYES|HIDEFACE flags_cover = MASKCOVERSMOUTH | MASKCOVERSEYES - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL item_state = "gas_alt" gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 @@ -31,7 +31,7 @@ flash_protect = 2 tint = 2 armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) - origin_tech = "materials=2;engineering=2" + origin_tech = "materials=2;engineering=3" actions_types = list(/datum/action/item_action/toggle) /obj/item/clothing/mask/gas/welding/attack_self() @@ -70,7 +70,7 @@ flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT flags_inv = HIDEEARS|HIDEEYES|HIDEFACE flags_cover = MASKCOVERSMOUTH | MASKCOVERSEYES - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL item_state = "bane_mask" gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 @@ -494,4 +494,3 @@ // ******************************************************************** - diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 8d031476931..d524d87e3d8 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -4,7 +4,7 @@ icon_state = "muzzle" item_state = "muzzle" flags_cover = MASKCOVERSMOUTH - w_class = 2 + w_class = WEIGHT_CLASS_SMALL gas_transfer_coefficient = 0.90 put_on_delay = 20 var/resist_time = 0 //deciseconds of how long you need to gnaw to get rid of the gag, 0 to make it impossible to remove @@ -24,14 +24,14 @@ name = "gag" desc = "Stick this in their mouth to stop the noise." icon_state = "gag" - w_class = 1 + w_class = WEIGHT_CLASS_TINY /obj/item/clothing/mask/muzzle/tapegag name = "tape gag" desc = "MHPMHHH!" icon_state = "tapegag" item_state = null - w_class = 1 + w_class = WEIGHT_CLASS_TINY resist_time = 150 mute = 0 species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin") @@ -59,7 +59,7 @@ desc = "A sterile mask designed to help prevent the spread of diseases." icon_state = "sterile" item_state = "sterile" - w_class = 1 + w_class = WEIGHT_CLASS_TINY flags_cover = MASKCOVERSMOUTH gas_transfer_coefficient = 0.90 permeability_coefficient = 0.01 @@ -109,7 +109,7 @@ icon_state = "blueneckscarf" item_state = "blueneckscarf" flags_cover = MASKCOVERSMOUTH - w_class = 2 + w_class = WEIGHT_CLASS_SMALL gas_transfer_coefficient = 0.90 /obj/item/clothing/mask/redscarf @@ -118,7 +118,7 @@ icon_state = "redwhite_scarf" item_state = "redwhite_scarf" flags_cover = MASKCOVERSMOUTH - w_class = 2 + w_class = WEIGHT_CLASS_SMALL gas_transfer_coefficient = 0.90 /obj/item/clothing/mask/greenscarf @@ -127,7 +127,7 @@ icon_state = "green_scarf" item_state = "green_scarf" flags_cover = MASKCOVERSMOUTH - w_class = 2 + w_class = WEIGHT_CLASS_SMALL gas_transfer_coefficient = 0.90 /obj/item/clothing/mask/ninjascarf @@ -136,7 +136,7 @@ icon_state = "ninja_scarf" item_state = "ninja_scarf" flags_cover = MASKCOVERSMOUTH - w_class = 2 + w_class = WEIGHT_CLASS_SMALL gas_transfer_coefficient = 0.90 @@ -147,7 +147,7 @@ item_state = "pig" flags = BLOCKHAIR flags_inv = HIDEFACE - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/clothing/mask/horsehead @@ -157,7 +157,7 @@ item_state = "horsehead" flags = BLOCKHAIR flags_inv = HIDEFACE - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/voicechange = 0 var/temporaryname = " the Horse" var/originalname = "" @@ -247,7 +247,7 @@ icon_state = "fawkes" item_state = "fawkes" flags_inv = HIDEFACE - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/clothing/mask/gas/clown_hat/pennywise name = "Pennywise Mask" @@ -263,7 +263,7 @@ desc = "A colorful bandana." flags_inv = HIDEFACE flags_cover = MASKCOVERSMOUTH - w_class = 1 + w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_MASK adjusted_flags = SLOT_HEAD icon_state = "bandbotany" diff --git a/code/modules/clothing/masks/voice.dm b/code/modules/clothing/masks/voice.dm index 8655c2b7541..01dd9a65a99 100644 --- a/code/modules/clothing/masks/voice.dm +++ b/code/modules/clothing/masks/voice.dm @@ -8,7 +8,6 @@ name = "gas mask" // desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics." var/obj/item/voice_changer/changer - origin_tech = "syndicate=4" burn_state = FIRE_PROOF /obj/item/clothing/mask/gas/voice/verb/Toggle_Voice_Changer() diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index b036946e4ae..88796165114 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -2,6 +2,7 @@ desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle." name = "magboots" icon_state = "magboots0" + origin_tech = "materials=3;magnets=4;engineering=4" var/magboot_state = "magboots" var/magpulse = 0 var/slowdown_active = 2 @@ -40,13 +41,14 @@ icon_state = "advmag0" magboot_state = "advmag" slowdown_active = SHOES_SLOWDOWN + origin_tech = null /obj/item/clothing/shoes/magboots/syndie desc = "Reverse-engineered magnetic boots that have a heavy magnetic pull. Property of Gorlex Marauders." name = "blood-red magboots" icon_state = "syndiemag0" magboot_state = "syndiemag" - origin_tech = "magnets=2;syndicate=3" + origin_tech = "magnets=4;syndicate=2" obj/item/clothing/shoes/magboots/syndie/advance //For the Syndicate Strike Team desc = "Reverse-engineered magboots that appear to be based on an advanced model, as they have a lighter magnetic pull. Property of Gorlex Marauders." diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 7a651881699..6a07ea17da8 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -5,7 +5,7 @@ item_state = "brown" permeability_coefficient = 0.05 flags = NOSLIP - origin_tech = "syndicate=3" + origin_tech = "syndicate=2" burn_state = FIRE_PROOF var/list/clothing_choices = list() silence_steps = 1 diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm index 33e08206fd1..69ecd6eca0e 100644 --- a/code/modules/clothing/spacesuits/alien.dm +++ b/code/modules/clothing/spacesuits/alien.dm @@ -74,7 +74,7 @@ // Vox space gear (vaccuum suit, low pressure armour) // Can't be equipped by any other species due to bone structure and vox cybernetics. /obj/item/clothing/suit/space/vox - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank) armor = list(melee = 40, bullet = 40, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30) heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS diff --git a/code/modules/clothing/spacesuits/ert.dm b/code/modules/clothing/spacesuits/ert.dm index 82c4a832c6c..80257cda101 100644 --- a/code/modules/clothing/spacesuits/ert.dm +++ b/code/modules/clothing/spacesuits/ert.dm @@ -29,7 +29,7 @@ desc = "A suit worn by members of the Nanotrasen Emergency Response Team. Armoured, space ready, and fire resistant." icon_state = "ert_commander" item_state = "suit-command" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank) armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50) allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/crowbar, \ diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index ab601821ef8..802f39ad361 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -352,7 +352,7 @@ icon_state = "hardsuit1-syndi" item_state = "syndie_hardsuit" item_color = "syndi" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL var/on = 1 actions_types = list(/datum/action/item_action/toggle_hardsuit_mode) armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50) @@ -447,7 +447,7 @@ name = "gem-encrusted hardsuit" desc = "A bizarre gem-encrusted suit that radiates magical energies." item_state = "wiz_hardsuit" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL unacidable = 1 armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50) allowed = list(/obj/item/weapon/teleportation_scroll,/obj/item/weapon/tank) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 54aa39a305e..20d9809f2b2 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -27,7 +27,7 @@ desc = "A bulky, heavy-duty piece of exclusive Nanotrasen armor. YOU are in charge!" icon_state = "caparmor" item_state = "capspacesuit" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY allowed = list(/obj/item/weapon/tank, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs) armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50) species_restricted = list("exclude", "Diona", "Wryn") @@ -86,7 +86,7 @@ blood_overlay_type = "coat" flags_inv = 0 slowdown = 0 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL //Space santa outfit suit /obj/item/clothing/head/helmet/space/santahat @@ -123,7 +123,7 @@ desc = "Yarr." icon_state = "pirate" item_state = "pirate" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank) slowdown = 0 armor = list(melee = 30, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30) diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 9ece7d54aa3..273dab0c787 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -62,7 +62,7 @@ flags = null //non-conductive force = 0 throwforce = 0 - w_class = 2 //Fits in boxes. + w_class = WEIGHT_CLASS_SMALL //Fits in boxes. materials = list() attack_verb = list("tapped") @@ -115,7 +115,8 @@ base_state = "plasmamanAtmos_helmet" armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0) max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - + flash_protect = 2 + /obj/item/clothing/suit/space/eva/plasmaman/engineer name = "plasmaman engineer suit" icon_state = "plasmamanEngineer_suit" @@ -126,7 +127,8 @@ icon_state = "plasmamanEngineer_helmet0" base_state = "plasmamanEngineer_helmet" armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) - + flash_protect = 2 + /obj/item/clothing/suit/space/eva/plasmaman/engineer/ce name = "plasmaman chief engineer suit" icon_state = "plasmaman_CE" @@ -138,7 +140,7 @@ icon_state = "plasmaman_CE_helmet0" base_state = "plasmaman_CE_helmet" max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - + flash_protect = 2 //SERVICE /obj/item/clothing/suit/space/eva/plasmaman/assistant diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 24f5a340760..da181368cc5 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -14,7 +14,7 @@ slot_flags = SLOT_BACK req_one_access = list() req_access = list() - w_class = 4 + w_class = WEIGHT_CLASS_BULKY // These values are passed on to all component pieces. armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index 4b8f32f5a74..37aa5b776ba 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -12,7 +12,7 @@ icon_state = "syndicate" item_state = "space_suit_syndicate" desc = "Has a tag on it: Totally not property of of a hostile corporation, honest!" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank) armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30) @@ -173,4 +173,4 @@ obj/item/clothing/suit/space/syndicate/black/red/strike /obj/item/clothing/suit/space/syndicate/black/engie name = "Black Engineering Space Suit" icon_state = "syndicate-black-engie" - item_state = "syndicate-black" \ No newline at end of file + item_state = "syndicate-black" diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index c9d3ccac27b..7a2fa10db07 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -376,7 +376,7 @@ desc = "A suit that protects against some damage." icon_state = "centcom" item_state = "centcom" - w_class = 4//bulky item + w_class = WEIGHT_CLASS_BULKY body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/emergency_oxygen) flags = THICKMATERIAL @@ -393,7 +393,7 @@ icon_state = "heavy" item_state = "swat_suit" armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) - w_class = 4//bulky item + w_class = WEIGHT_CLASS_BULKY gas_transfer_coefficient = 0.90 flags = THICKMATERIAL body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index f0fbfca0cbd..49f8a8ea8d1 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -15,7 +15,7 @@ desc = "A suit that protects against biological contamination." icon_state = "bio" item_state = "bio_suit" - w_class = 4//bulky item + w_class = WEIGHT_CLASS_BULKY gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 flags = THICKMATERIAL @@ -93,4 +93,4 @@ strip_delay = 40 put_on_delay = 20 species_fit = null - sprite_sheets = null \ No newline at end of file + sprite_sheets = null diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 5d25cf95c2d..8b6e4d2e0d3 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -135,7 +135,7 @@ icon_state = "syndicate-black-red" item_state = "syndicate-black-red" desc = "A plastic replica of the syndicate space suit, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT burn_state = FIRE_PROOF @@ -714,7 +714,7 @@ desc = "A soft white robe made of a synthetic fiber that provides improved protection against biohazards. Possessing multiple overlapping layers, yet light enough to allow complete freedom of movement, it denotes its wearer as a master physician." icon_state = "mercy_hoodie" item_state = "mercy_hoodie" - w_class = 4//bulky item + w_class = WEIGHT_CLASS_BULKY gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 flags_size = ONESIZEFITSALL diff --git a/code/modules/clothing/suits/storage.dm b/code/modules/clothing/suits/storage.dm index 70fa8a30227..5e73af7aa39 100644 --- a/code/modules/clothing/suits/storage.dm +++ b/code/modules/clothing/suits/storage.dm @@ -5,7 +5,7 @@ ..() pockets = new/obj/item/weapon/storage/internal(src) pockets.storage_slots = 2 //two slots - pockets.max_w_class = 2 //fit only pocket sized items + pockets.max_w_class = WEIGHT_CLASS_SMALL //fit only pocket sized items pockets.max_combined_w_class = 4 /obj/item/clothing/suit/storage/Destroy() diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 81cc172d0e2..3d31af6230b 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -14,7 +14,7 @@ desc = "A suit that protects against fire and heat." icon_state = "fire" item_state = "fire_suit" - w_class = 4//bulky item + w_class = WEIGHT_CLASS_BULKY gas_transfer_coefficient = 0.90 permeability_coefficient = 0.50 body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS @@ -43,7 +43,7 @@ desc = "A suit that protects against extreme fire and heat." //icon_state = "thermal" item_state = "ro_suit" - w_class = 4//bulky item + w_class = WEIGHT_CLASS_BULKY slowdown = 1.5 /obj/item/clothing/suit/fire/atmos @@ -85,7 +85,7 @@ desc = "A suit designed for safety when handling explosives." icon_state = "bombsuit" item_state = "bombsuit" - w_class = 4//bulky item + w_class = WEIGHT_CLASS_BULKY gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 flags = THICKMATERIAL @@ -142,7 +142,7 @@ desc = "A suit that protects against radiation. Label: Made with lead, do not eat insulation." icon_state = "rad" item_state = "rad_suit" - w_class = 4//bulky item + w_class = WEIGHT_CLASS_BULKY gas_transfer_coefficient = 0.90 permeability_coefficient = 0.50 flags = THICKMATERIAL @@ -157,4 +157,4 @@ species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/suit.dmi' - ) \ No newline at end of file + ) diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index f0da2e141a0..5f358ac58f4 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -6,7 +6,7 @@ item_state = "" //no inhands item_color = "bluetie" slot_flags = SLOT_TIE - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/slot = "decor" var/obj/item/clothing/under/has_suit = null //the suit the tie may be attached to var/image/inv_overlay = null //overlay used when attached to clothing. diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm index cab12cba542..4c53d9c3c8d 100644 --- a/code/modules/clothing/under/accessories/holster.dm +++ b/code/modules/clothing/under/accessories/holster.dm @@ -7,7 +7,7 @@ var/holster_allow = /obj/item/weapon/gun var/obj/item/weapon/gun/holstered = null actions_types = list(/datum/action/item_action/accessory/holster) - w_class = 3 // so it doesn't fit in pockets + w_class = WEIGHT_CLASS_NORMAL // so it doesn't fit in pockets /obj/item/clothing/accessory/holster/Destroy() QDEL_NULL(holstered) @@ -140,4 +140,4 @@ name = "shoulder holster" desc = "A handgun holster. Made of expensive leather." icon_state = "holster" - item_color = "holster_low" \ No newline at end of file + item_color = "holster_low" diff --git a/code/modules/clothing/under/accessories/storage.dm b/code/modules/clothing/under/accessories/storage.dm index fd335f43fb7..a306864cbfc 100644 --- a/code/modules/clothing/under/accessories/storage.dm +++ b/code/modules/clothing/under/accessories/storage.dm @@ -7,7 +7,7 @@ var/slots = 3 var/obj/item/weapon/storage/internal/hold actions_types = list(/datum/action/item_action/accessory/storage) - w_class = 3 // so it doesn't fit in pockets + w_class = WEIGHT_CLASS_NORMAL // so it doesn't fit in pockets /obj/item/clothing/accessory/storage/New() ..() @@ -110,4 +110,4 @@ hold.can_hold = list(/obj/item/weapon/hatchet/unathiknife, /obj/item/weapon/kitchen/knife) new /obj/item/weapon/hatchet/unathiknife(hold) - new /obj/item/weapon/hatchet/unathiknife(hold) \ No newline at end of file + new /obj/item/weapon/hatchet/unathiknife(hold) diff --git a/code/modules/clothing/under/chameleon.dm b/code/modules/clothing/under/chameleon.dm index 63f09efd3bf..8828f7a4c2e 100644 --- a/code/modules/clothing/under/chameleon.dm +++ b/code/modules/clothing/under/chameleon.dm @@ -5,7 +5,7 @@ item_state = "bl_suit" item_color = "black" desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist." - origin_tech = "syndicate=3" + origin_tech = "syndicate=2" var/list/clothing_choices = list() burn_state = FIRE_PROOF armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 7494f559383..41111585072 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -167,7 +167,7 @@ icon_state = "black" item_state = "bl_suit" item_color = "black" - w_class = 4//bulky item + w_class = WEIGHT_CLASS_BULKY gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index ae964af74a8..6f266c121e1 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -307,9 +307,26 @@ /obj/item/weapon/bikehorn) category = CAT_MISC +/datum/crafting_recipe/blackcarpet + name = "Black Carpet" + result = /obj/item/stack/tile/carpet/black + time = 20 + reqs = list(/obj/item/stack/tile/carpet = 1) + tools = list(/obj/item/toy/crayon) + category = CAT_MISC + +/datum/crafting_recipe/showercurtain + name = "Shower Curtains" + result = /obj/structure/curtain + time = 20 + reqs = list(/obj/item/stack/sheet/cloth = 2, + /obj/item/stack/sheet/plastic = 2, + /obj/item/stack/rods = 1) + category = CAT_MISC + /datum/crafting_recipe/bonfire name = "Bonfire" time = 60 reqs = list(/obj/item/weapon/grown/log = 5) result = /obj/structure/bonfire - category = CAT_PRIMAL \ No newline at end of file + category = CAT_PRIMAL diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 723cd4095e3..6e414737b32 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -20,7 +20,7 @@ icon_state = "tatgun" force = 0 throwforce = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/tattoo_name = "tiger stripe tattoo" // Tat name for visible messages var/tattoo_icon = "Tiger-stripe Tattoo" // body_accessory.dmi, new icons defined in sprite_accessories.dm var/tattoo_r = 1 // RGB values for the body markings @@ -221,7 +221,7 @@ item_state = "lunch_box" force = 5 throwforce = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL max_combined_w_class = 9 storage_slots = 3 @@ -248,7 +248,7 @@ hitsound = 'sound/weapons/tap.ogg' force = 0 throwforce = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/used = 0 /obj/item/fluff/wingler_comb/attack_self(mob/user) @@ -268,7 +268,7 @@ desc = "Some sci-fi looking parts for a stun baton." icon = 'icons/obj/custom_items.dmi' icon_state = "scifikit" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/device/fluff/desolate_baton_kit/afterattack(atom/target, mob/user, proximity) if(!proximity || !ishuman(user) || user.incapacitated()) @@ -293,7 +293,7 @@ name = "welding helmet modkit" desc = "Some spraypaint and a stencil, perfect for painting flames onto a welding helmet!" icon_state = "modkit" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force = 0 throwforce = 0 @@ -318,7 +318,7 @@ name = "plasmaman suit modkit" desc = "A kit containing nanites that are able to modify the look of a plasmaman suit and helmet without exposing the wearer to hostile environments." icon_state = "modkit" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force = 0 throwforce = 0 @@ -360,6 +360,68 @@ return to_chat(user, "You can't modify [target]!") +/obj/item/device/fluff/lighty_plasman_modkit // LightFire53: Ikelos + name = "plasmaman suit modkit" + desc = "A kit containing nanites that are able to modify the look of a plasmaman suit and helmet without exposing the wearer to hostile environments." + icon_state = "modkit" + w_class = 2 + force = 0 + throwforce = 0 + var/picked_color = null + var/list/helmets = list( + "Blue" = "plasmaman_ikelosdefault_helmet", + "Gold" = "plasmaman_ikelosgold_helmet", + "Red" = "plasmaman_ikelossecurity_helmet") + var/list/suits = list( + "Blue" = "plasmaman_ikelosdefault", + "Gold" = "plasmaman_ikelosgold", + "Red" = "plasmaman_ikelossecurity") + +/obj/item/device/fluff/lighty_plasman_modkit/afterattack(atom/target, mob/user, proximity) + if(!proximity || !ishuman(user) || user.incapacitated()) + return + var/mob/living/carbon/human/H = user + + if(istype(target, /obj/item/clothing/head/helmet/space/eva/plasmaman)) + if(used & USED_MOD_HELM) + to_chat(H, "The kit's helmet modifier has already been used.") + return + + picked_color = input(H, "Which color would you like to paint [target]?", "Recolor") as null|anything in helmets + var/obj/item/clothing/head/helmet/space/eva/plasmaman/P = target + + if(!picked_color) + return + P.icon_state = helmets[picked_color] + "[P.on]" + P.base_state = helmets[picked_color] + + to_chat(H, "You modify the appearance of [target].") + P.icon = 'icons/obj/custom_items.dmi' + used |= USED_MOD_HELM + + if(P == H.head) + H.update_inv_head() + return + if(istype(target, /obj/item/clothing/suit/space/eva/plasmaman)) + if(used & USED_MOD_SUIT) + to_chat(user, "The kit's suit modifier has already been used.") + return + picked_color = input(H, "Which color would you like to paint [target]?", "Recolor") as null|anything in suits + var/obj/item/clothing/suit/space/eva/plasmaman/P = target + + if(!picked_color) + return + P.icon_state = suits[picked_color] + + to_chat(H, "You modify the appearance of [target].") + P.icon = 'icons/obj/custom_items.dmi' + used |= USED_MOD_SUIT + + if(P == H.wear_suit) + H.update_inv_wear_suit() + return + to_chat(user, "You can't modify [target]!") + #undef USED_MOD_HELM #undef USED_MOD_SUIT @@ -367,7 +429,7 @@ name = "sallet modkit" desc = "A modkit that can make most helmets look like a steel sallet." icon_state = "modkit" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force = 0 throwforce = 0 @@ -706,6 +768,16 @@ item_state = "castile_dress" item_color = "castile_dress" +/obj/item/clothing/under/fluff/xantholne //Xantholne: Meex Zwichsnicrur + name = "Stripped Shorts and Shirt" + desc = "A silky pair of dark shorts with a matching shirt. The shirt's collar has a tag on the inside that reads 'Meexy' on it." + icon = 'icons/obj/custom_items.dmi' + lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi' + righthand_file = 'icons/mob/inhands/fluff_righthand.dmi' + icon_state = "xantholne" + item_state = "xantholne" + item_color = "xantholne" + /obj/item/clothing/under/fluff/elishirt // FlattestGuitar9: Eli Randolph name = "casual dress shirt" desc = "A soft, white dress shirt paired up with black suit pants. The set looks comfortable." diff --git a/code/modules/detective_work/detective_work.dm b/code/modules/detective_work/detective_work.dm index 01267f2fb08..dd22a439c19 100644 --- a/code/modules/detective_work/detective_work.dm +++ b/code/modules/detective_work/detective_work.dm @@ -16,33 +16,33 @@ atom/proc/add_fibers(mob/living/carbon/human/M) var/item_multiplier = istype(src,/obj/item)?1.2:1 if(M.wear_suit) fibertext = "Material from \a [M.wear_suit]." - if(prob(10*item_multiplier) && !(fibertext in suit_fibers)) + if(prob(10*item_multiplier) && !(fibertext in suit_fibers) && M.wear_suit.can_leave_fibers) //log_to_dd("Added fibertext: [fibertext]") suit_fibers += fibertext if(!(M.wear_suit.body_parts_covered & UPPER_TORSO)) if(M.w_uniform) fibertext = "Fibers from \a [M.w_uniform]." - if(prob(12*item_multiplier) && !(fibertext in suit_fibers)) //Wearing a suit means less of the uniform exposed. + if(prob(12*item_multiplier) && !(fibertext in suit_fibers) && M.w_uniform.can_leave_fibers) //Wearing a suit means less of the uniform exposed. //log_to_dd("Added fibertext: [fibertext]") suit_fibers += fibertext if(!(M.wear_suit.body_parts_covered & HANDS)) if(M.gloves) fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) + if(prob(20*item_multiplier) && !(fibertext in suit_fibers) && M.gloves.can_leave_fibers) //log_to_dd("Added fibertext: [fibertext]") suit_fibers += fibertext else if(M.w_uniform) fibertext = "Fibers from \a [M.w_uniform]." - if(prob(15*item_multiplier) && !(fibertext in suit_fibers)) + if(prob(15*item_multiplier) && !(fibertext in suit_fibers) && M.w_uniform.can_leave_fibers) // "Added fibertext: [fibertext]" suit_fibers += fibertext if(M.gloves) fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) + if(prob(20*item_multiplier) && !(fibertext in suit_fibers) && M.gloves.can_leave_fibers) //log_to_dd("Added fibertext: [fibertext]") suit_fibers += "Material from a pair of [M.gloves.name]." else if(M.gloves) fibertext = "Material from a pair of [M.gloves.name]." - if(prob(20*item_multiplier) && !(fibertext in suit_fibers)) + if(prob(20*item_multiplier) && !(fibertext in suit_fibers) && M.gloves.can_leave_fibers) //log_to_dd("Added fibertext: [fibertext]") - suit_fibers += "Material from a pair of [M.gloves.name]." \ No newline at end of file + suit_fibers += "Material from a pair of [M.gloves.name]." diff --git a/code/modules/detective_work/evidence.dm b/code/modules/detective_work/evidence.dm index e457d73fb87..cb4e2604771 100644 --- a/code/modules/detective_work/evidence.dm +++ b/code/modules/detective_work/evidence.dm @@ -6,7 +6,7 @@ icon = 'icons/obj/storage.dmi' icon_state = "evidenceobj" item_state = "" - w_class = 1 + w_class = WEIGHT_CLASS_TINY /obj/item/weapon/evidencebag/afterattack(obj/item/I, mob/user,proximity) if(!proximity || loc == I) @@ -29,7 +29,7 @@ to_chat(user, "You find putting an evidence bag in another evidence bag to be slightly absurd.") return 1 //now this is podracing - if(I.w_class > 3) + if(I.w_class > WEIGHT_CLASS_NORMAL) to_chat(user, "[I] won't fit in [src].") return @@ -76,7 +76,7 @@ "You hear someone rustle around in a plastic bag, and remove something.") overlays.Cut() //remove the overlays user.put_in_hands(I) - w_class = 1 + w_class = WEIGHT_CLASS_TINY icon_state = "evidenceobj" desc = "An empty evidence bag." @@ -87,7 +87,7 @@ /obj/item/weapon/storage/box/evidence name = "evidence bag box" desc = "A box claiming to contain evidence bags." - + /obj/item/weapon/storage/box/evidence/New() new /obj/item/weapon/evidencebag(src) new /obj/item/weapon/evidencebag(src) @@ -95,4 +95,4 @@ new /obj/item/weapon/evidencebag(src) new /obj/item/weapon/evidencebag(src) new /obj/item/weapon/evidencebag(src) - ..() \ No newline at end of file + ..() diff --git a/code/modules/detective_work/footprints_and_rag.dm b/code/modules/detective_work/footprints_and_rag.dm index cc93863cc95..cc6a463a0ee 100644 --- a/code/modules/detective_work/footprints_and_rag.dm +++ b/code/modules/detective_work/footprints_and_rag.dm @@ -17,7 +17,7 @@ /obj/item/weapon/reagent_containers/glass/rag name = "damp rag" desc = "For cleaning up messes, you suppose." - w_class = 1 + w_class = WEIGHT_CLASS_TINY icon = 'icons/obj/toy.dmi' icon_state = "rag" amount_per_transfer_from_this = 5 diff --git a/code/modules/detective_work/scanner.dm b/code/modules/detective_work/scanner.dm index 69aeb643263..c8c2ace6d88 100644 --- a/code/modules/detective_work/scanner.dm +++ b/code/modules/detective_work/scanner.dm @@ -7,11 +7,11 @@ desc = "Used to remotely scan objects and biomass for DNA and fingerprints. Can print a report of the findings." icon = 'icons/goonstation/objects/objects.dmi' icon_state = "detscanner" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL item_state = "electronic" flags = CONDUCT | NOBLUDGEON slot_flags = SLOT_BELT - origin_tech = "magnets=4;biotech=2" + origin_tech = "engineering=4;biotech=2;programming=5" var/scanning = 0 var/list/log = list() actions_types = list(/datum/action/item_action/print_report) diff --git a/code/modules/fish/fish_eggs.dm b/code/modules/fish/fish_eggs.dm index 5255859b704..756093fbd01 100644 --- a/code/modules/fish/fish_eggs.dm +++ b/code/modules/fish/fish_eggs.dm @@ -4,7 +4,7 @@ desc = "Eggs laid by a fish. This cluster seems... empty?" icon = 'icons/obj/fish_items.dmi' icon_state = "eggs" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/datum/fish/fish_type = null //Holds the datum of the fish that the egg is for, null means dud eggs /obj/item/fish_eggs/goldfish @@ -66,4 +66,3 @@ desc = "A cluster of bright neon eggs belonging to a bio-luminescent species of fish." icon_state = "glofish_eggs" fish_type = /datum/fish/glofish - diff --git a/code/modules/fish/fish_items.dm b/code/modules/fish/fish_items.dm index 9f58d58942e..64ca8269298 100644 --- a/code/modules/fish/fish_items.dm +++ b/code/modules/fish/fish_items.dm @@ -10,7 +10,7 @@ icon_state = "egg_scoop" slot_flags = SLOT_BELT throwforce = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 7 @@ -21,7 +21,7 @@ icon_state = "net" slot_flags = SLOT_BELT throwforce = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 7 @@ -35,7 +35,7 @@ icon = 'icons/obj/fish_items.dmi' icon_state = "fish_food" throwforce = 1 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 7 @@ -46,7 +46,7 @@ icon_state = "brush" slot_flags = SLOT_BELT throwforce = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 7 attack_verb = list("scrubbed", "brushed", "scraped") @@ -90,7 +90,7 @@ icon = 'icons/obj/fish_items.dmi' icon_state = "fish" throwforce = 1 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 7 force = 1 diff --git a/code/modules/fish/fishtank.dm b/code/modules/fish/fishtank.dm index 34d393fad0c..45967dc8ac7 100644 --- a/code/modules/fish/fishtank.dm +++ b/code/modules/fish/fishtank.dm @@ -369,17 +369,21 @@ /obj/machinery/fishtank/proc/breed_fish() var/list/breed_candidates = fish_list.Copy() var/datum/fish/parent1 = pick_n_take(breed_candidates) - var/datum/fish/parent2 = null if(!parent1.crossbreeder) //fish with crossbreed = 0 will only breed with their own species, and only leave duds if they can't breed - if(parent1 in breed_candidates) + var/match_found = 0 + for(var/datum/fish/possible in breed_candidates) + if(parent1.type == possible.type) + match_found = 1 + break + if(match_found) egg_list.Add(parent1.egg_item) else egg_list.Add(/obj/item/fish_eggs) else - parent2 = pick(breed_candidates) + var/datum/fish/parent2 = pick(breed_candidates) if(!parent2.crossbreeder) //second fish refuses to crossbreed, spawn a dud egg_list.Add(/obj/item/fish_eggs) - else if(parent1 == parent2) //both fish are the same type + else if(parent1.type == parent2.type) //both fish are the same type if(prob(90)) //90% chance to get that type of egg egg_list.Add(parent1.egg_item) else //10% chance to get a dud diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 23ae568af9b..0b5b2171f86 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -141,7 +141,7 @@ name = "pewter cup" desc = "Everyone gets a trophy." icon_state = "pewter_cup" - w_class = 1 + w_class = WEIGHT_CLASS_TINY force = 1 throwforce = 1 amount_per_transfer_from_this = 5 @@ -154,7 +154,7 @@ name = "gold cup" desc = "You're winner!" icon_state = "golden_cup" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY force = 14 throwforce = 10 amount_per_transfer_from_this = 20 @@ -165,7 +165,7 @@ name = "silver cup" desc = "Best loser!" icon_state = "silver_cup" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL force = 10 throwforce = 8 amount_per_transfer_from_this = 15 @@ -176,7 +176,7 @@ name = "bronze cup" desc = "At least you ranked!" icon_state = "bronze_cup" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force = 5 throwforce = 4 amount_per_transfer_from_this = 10 @@ -349,4 +349,4 @@ desc = "A bowl made out of mushrooms. Not food, though it might have contained some at some point." icon = 'icons/obj/lavaland/ash_flora.dmi' icon_state = "mushroom_bowl" - w_class = 2 \ No newline at end of file + w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 75f9c9a776f..e1a517caaf3 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -130,7 +130,7 @@ throwforce = 5 throw_speed = 3 throw_range = 5 - w_class = 1 + w_class = WEIGHT_CLASS_TINY item_state = "beer" hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("stabbed", "slashed", "attacked") diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 3a079e99da4..cbb049c883c 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -130,7 +130,7 @@ istype(W, /obj/item/weapon/hatchet) \ ) inaccurate = 1 - else if(W.w_class <= 2 && istype(src,/obj/item/weapon/reagent_containers/food/snacks/sliceable)) + else if(W.w_class <= WEIGHT_CLASS_SMALL && istype(src,/obj/item/weapon/reagent_containers/food/snacks/sliceable)) if(!iscarbon(user)) return 1 to_chat(user, "You slip [W] inside [src].") @@ -2477,4 +2477,4 @@ desc = "A large fried potato nugget that may or may not try to valid you." icon_state = "tatortot" list_reagents = list("nutriment" = 4) - filling_color = "FFD700" \ No newline at end of file + filling_color = "FFD700" diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index dbdffffda29..8301b021cc4 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -43,7 +43,7 @@ desc = "A peel from a banana." icon_state = "banana_peel" item_state = "banana_peel" - w_class = 1 + w_class = WEIGHT_CLASS_TINY throwforce = 0 throw_speed = 3 throw_range = 7 diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm index a7ef947a5ce..d2dac1decfe 100644 --- a/code/modules/hydroponics/grown/corn.dm +++ b/code/modules/hydroponics/grown/corn.dm @@ -30,7 +30,7 @@ desc = "A reminder of meals gone by." icon_state = "corncob" item_state = "corncob" - w_class = 1 + w_class = WEIGHT_CLASS_TINY throwforce = 0 throw_speed = 3 throw_range = 7 @@ -62,7 +62,7 @@ desc = "A cob with snap pops" icon_state = "snapcorn" item_state = "corncob" - w_class = 1 + w_class = WEIGHT_CLASS_TINY throwforce = 0 throw_speed = 3 throw_range = 7 @@ -81,4 +81,4 @@ snap_pops -= 1 if(!snap_pops) new /obj/item/weapon/grown/corncob(user.loc) - qdel(src) \ No newline at end of file + qdel(src) diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index 7deb961e67a..1752cda7567 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -117,7 +117,7 @@ force = 0 slot_flags = SLOT_HEAD throwforce = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 1 throw_range = 3 @@ -167,7 +167,7 @@ force = 0 slot_flags = SLOT_HEAD throwforce = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 1 throw_range = 3 attack_verb = list("roasted", "scorched", "burned") diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm index 5a229148a17..06bb153e47f 100644 --- a/code/modules/hydroponics/grown/melon.dm +++ b/code/modules/hydroponics/grown/melon.dm @@ -22,7 +22,7 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/watermelonslice slices_num = 5 dried_type = null - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL filling_color = "#008000" bitesize_mod = 3 diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm index f6d9be51b4a..52f60d06b18 100644 --- a/code/modules/hydroponics/grown/nettle.dm +++ b/code/modules/hydroponics/grown/nettle.dm @@ -37,7 +37,7 @@ force = 15 hitsound = 'sound/weapons/bladeslice.ogg' throwforce = 5 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 1 throw_range = 3 origin_tech = "combat=3" diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index 961fe7c4096..339459669be 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -37,7 +37,7 @@ icon_state = "logs" force = 5 throwforce = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL throw_speed = 2 throw_range = 3 origin_tech = "materials=1" @@ -191,4 +191,4 @@ /obj/structure/bonfire/unbuckle_mob(force=0) if(buckled_mob) buckled_mob.pixel_y -= 13 - . = ..() \ No newline at end of file + . = ..() diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 608c52bfcb4..9a93d1a9673 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/device.dmi' icon_state = "hydro" item_state = "analyzer" - w_class = 1 + w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_BELT origin_tech = "magnets=2;biotech=2" materials = list(MAT_METAL=30, MAT_GLASS=20) @@ -24,7 +24,7 @@ flags = OPENCONTAINER slot_flags = SLOT_BELT throwforce = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 10 @@ -46,7 +46,7 @@ flags = OPENCONTAINER slot_flags = SLOT_BELT throwforce = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 10 @@ -68,7 +68,7 @@ flags = CONDUCT force = 5 throwforce = 7 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=50) attack_verb = list("slashed", "sliced", "cut", "clawed") hitsound = 'sound/weapons/bladeslice.ogg' @@ -80,7 +80,7 @@ icon_state = "hatchet" flags = CONDUCT force = 12 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throwforce = 15 throw_speed = 3 throw_range = 4 @@ -111,7 +111,7 @@ throwforce = 5 throw_speed = 2 throw_range = 3 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY flags = CONDUCT armour_penetration = 20 slot_flags = SLOT_BACK @@ -140,7 +140,7 @@ force = 3 sharp = 0 edge = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL extend = 0 slot_flags = SLOT_BELT origin_tech = "materials=3;combat=3" @@ -154,7 +154,7 @@ icon_state = "tscythe1" item_state = "scythe0" //use the normal scythe in-hands slot_flags = SLOT_BACK //won't fit on belt, but can be worn on belt when extended - w_class = 4 //won't fit in backpacks while extended + w_class = WEIGHT_CLASS_BULKY //won't fit in backpacks while extended force = 15 //slightly better than normal scythe damage attack_verb = list("chopped", "sliced", "cut", "reaped") hitsound = 'sound/weapons/bladeslice.ogg' @@ -165,7 +165,7 @@ icon_state = "tscythe0" item_state = null //no sprite for folded version, like a tele-baton slot_flags = SLOT_BELT //can be worn on belt again, but no longer makes sense to wear on the back - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force = 3 attack_verb = list("hit", "poked") hitsound = "swing_hit" @@ -200,7 +200,7 @@ icon = 'icons/obj/chemical.dmi' icon_state = "bottle16" volume = 50 - w_class = 1 + w_class = WEIGHT_CLASS_TINY amount_per_transfer_from_this = 10 possible_transfer_amounts = list(1,2,5,10,15,25,50) @@ -249,7 +249,7 @@ icon = 'icons/obj/chemical.dmi' icon_state = "bottle16" volume = 50 - w_class = 1 + w_class = WEIGHT_CLASS_TINY amount_per_transfer_from_this = 10 possible_transfer_amounts = list(1,2,5,10,15,25,50) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index ae79eda23d3..093cd2114a4 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -5,7 +5,7 @@ /obj/item/seeds icon = 'icons/obj/hydroponics/seeds.dmi' icon_state = "seed" // Unknown plant seed - these shouldn't exist in-game. - w_class = 1 + w_class = WEIGHT_CLASS_TINY burn_state = FLAMMABLE var/plantname = "Plants" // Name of plant when planted. var/product // A type path. The thing that is created when the plant is harvested. diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index a32b31611cc..96f88f3d9c4 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -167,7 +167,7 @@ icon_state ="book" throw_speed = 1 throw_range = 5 - w_class = 3 //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever) + w_class = WEIGHT_CLASS_NORMAL //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever) attack_verb = list("bashed", "whacked", "educated") burn_state = FLAMMABLE @@ -201,7 +201,7 @@ /obj/item/weapon/book/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(carved) if(!store) - if(W.w_class < 3) + if(W.w_class < WEIGHT_CLASS_NORMAL) user.drop_item() W.forceMove(src) store = W @@ -293,7 +293,7 @@ icon_state ="scanner" throw_speed = 1 throw_range = 5 - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/obj/machinery/computer/library/checkout/computer // Associated computer - Modes 1 to 3 use this var/obj/item/weapon/book/book // Currently scanned book var/mode = 0 // 0 - Scan only, 1 - Scan and Set Buffer, 2 - Scan and Attempt to Check In, 3 - Scan and Attempt to Add to Inventory diff --git a/code/modules/martial_arts/martial.dm b/code/modules/martial_arts/martial.dm index 971dc69a1b6..10b3e8f3ad0 100644 --- a/code/modules/martial_arts/martial.dm +++ b/code/modules/martial_arts/martial.dm @@ -7,6 +7,8 @@ var/datum/martial_art/base = null // The permanent style var/deflection_chance = 0 //Chance to deflect projectiles var/help_verb = null + var/no_guns = FALSE //set to TRUE to prevent users of this style from using guns (sleeping carp, highlander). They can still pick them up, but not fire them. + var/no_guns_message = "" //message to tell the style user if they try and use a gun while no_guns = TRUE (DISHONORABRU!) /datum/martial_art/proc/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) return 0 @@ -172,7 +174,7 @@ name = "bo staff" desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts. Can be wielded to both kill and incapacitate." force = 10 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK force_unwielded = 10 force_wielded = 24 diff --git a/code/modules/martial_arts/sleeping_carp.dm b/code/modules/martial_arts/sleeping_carp.dm index 960844a063a..c6af4679552 100644 --- a/code/modules/martial_arts/sleeping_carp.dm +++ b/code/modules/martial_arts/sleeping_carp.dm @@ -8,6 +8,8 @@ name = "The Sleeping Carp" deflection_chance = 100 help_verb = /mob/living/carbon/human/proc/sleeping_carp_help + no_guns = TRUE + no_guns_message = "Use of ranged weaponry would bring dishonor to the clan." /datum/martial_art/the_sleeping_carp/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) if(findtext(streak,WRIST_WRENCH_COMBO)) diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm index 00ea7632900..2ce3f8d6195 100644 --- a/code/modules/mining/coins.dm +++ b/code/modules/mining/coins.dm @@ -7,7 +7,7 @@ flags = CONDUCT force = 1 throwforce = 2 - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/string_attached var/list/sideslist = list("heads","tails") var/cmineral = null @@ -149,4 +149,4 @@ if(do_after(user, 15, target = src)) user.visible_message("[user] has flipped [src]. It lands on [coinflip].", \ "You flip [src]. It lands on [coinflip].", \ - "You hear the clattering of loose change.") \ No newline at end of file + "You hear the clattering of loose change.") diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index d6c375c2832..2c37ad5c5bb 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -521,7 +521,7 @@ desc = "A token to redeem a piece of equipment. Use it on a mining equipment vendor." icon = 'icons/obj/items.dmi' icon_state = "mining_voucher" - w_class = 1 + w_class = WEIGHT_CLASS_TINY /**********************Mining Point Card**********************/ @@ -555,7 +555,7 @@ icon_state = "Jaunter" item_state = "electronic" throwforce = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 5 origin_tech = "bluespace=2" @@ -614,8 +614,9 @@ icon = 'icons/obj/items.dmi' icon_state = "resonator" item_state = "resonator" + origin_tech = "magnets=3;engineering=3" desc = "A handheld device that creates small fields of energy that resonate until they detonate, crushing rock. It can also be activated without a target to create a field at the user's location, to act as a delayed time trap. It's more effective in a vaccuum." - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL force = 8 throwforce = 10 var/cooldown = 0 @@ -627,7 +628,7 @@ name = "upgraded resonator" desc = "An upgraded version of the resonator that can produce more fields at once." icon_state = "resonator_u" - origin_tech = "magnets=3;combat=3" + origin_tech = "materials=4;powerstorage=3;engineering=3;magnets=3" fieldlimit = 5 /obj/item/weapon/resonator/proc/CreateResonance(var/target, var/creator) @@ -711,7 +712,7 @@ /obj/item/weapon/mining_drone_cube name = "mining drone cube" desc = "Compressed mining drone, ready for deployment. Just press the button to activate!" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL icon = 'icons/obj/aibots.dmi' icon_state = "minedronecube" item_state = "electronic" @@ -728,7 +729,7 @@ name = "Drone Kit" desc = "A boxed kit that includes one mining drone cube and a welding tool with an increased capacity." icon_state = "implant" - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL storage_slots = 2 can_hold = list(/obj/item/weapon/mining_drone_cube, /obj/item/weapon/weldingtool/hugetank) @@ -745,8 +746,9 @@ icon = 'icons/obj/hypo.dmi' icon_state = "lazarus_hypo" item_state = "hypo" + origin_tech = "biotech=4;magnets=6" throwforce = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 5 var/loaded = 1 @@ -806,7 +808,7 @@ name = "manual mining scanner" icon_state = "mining1" item_state = "analyzer" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL flags = CONDUCT slot_flags = SLOT_BELT var/cooldown = 0 @@ -838,7 +840,7 @@ name = "advanced automatic mining scanner" icon_state = "mining0" item_state = "analyzer" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL flags = CONDUCT slot_flags = SLOT_BELT var/cooldown = 35 @@ -928,10 +930,11 @@ name = "mining jetpack" icon_state = "jetpack-mining" item_state = "jetpack-mining" + origin_tech = "materials=4;magnets=4;engineering=5" desc = "A tank of compressed carbon dioxide for miners to use as propulsion in local space. The compact size allows for easy storage at the cost of capacity." volume = 40 throw_range = 7 - w_class = 3 //same as syndie harness + w_class = WEIGHT_CLASS_NORMAL //same as syndie harness /*********************Hivelord stabilizer****************/ @@ -940,8 +943,8 @@ icon = 'icons/obj/chemical.dmi' icon_state = "bottle19" desc = "Inject a hivelord core with this stabilizer to preserve its healing powers indefinitely." - w_class = 1 - origin_tech = "biotech=1" + w_class = WEIGHT_CLASS_TINY + origin_tech = "biotech=3" /obj/item/weapon/hivelordstabilizer/afterattack(obj/item/organ/internal/M, mob/user) var/obj/item/organ/internal/hivelord_core/C = M @@ -963,7 +966,7 @@ \nMark a mob with the destabilizing force, then hit them in melee to activate it for extra damage. Extra damage if backstabbed in this fashion. \ This weapon is only particularly effective against large creatures." force = 20 //As much as a bone spear, but this is significantly more annoying to carry around due to requiring the use of both hands at all times - w_class = 4 + w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK force_unwielded = 20 //It's never not wielded so these are the same force_wielded = 20 diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index 922dd34a166..6289333549b 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -155,7 +155,7 @@ icon = 'icons/obj/lavaland/ash_flora.dmi' icon_state = "mushroom_shavings" list_reagents = list("sugar" = 3, "ethanol" = 2, "stabilizing_agent" = 3, "minttoxin" = 2) - w_class = 1 + w_class = WEIGHT_CLASS_TINY /obj/item/weapon/reagent_containers/food/snacks/ash_flora/New() ..() @@ -194,7 +194,7 @@ desc = "A bowl made out of mushrooms. Not food, though it might have contained some at some point." icon = 'icons/obj/lavaland/ash_flora.dmi' icon_state = "mushroom_bowl" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL //what you can craft with these things /datum/crafting_recipe/mushroom_bowl diff --git a/code/modules/mining/lavaland/loot/ashdragon_loot.dm b/code/modules/mining/lavaland/loot/ashdragon_loot.dm index 4565039d52e..418d00c6f19 100644 --- a/code/modules/mining/lavaland/loot/ashdragon_loot.dm +++ b/code/modules/mining/lavaland/loot/ashdragon_loot.dm @@ -15,8 +15,8 @@ if(4) new /obj/item/weapon/dragons_blood(src) -// Spectral Blade - +// Spectral Blade + /obj/item/weapon/melee/ghost_sword name = "spectral blade" desc = "A rusted and dulled blade. It doesn't look like it'd do much damage. It glows weakly." @@ -25,7 +25,7 @@ flags = CONDUCT sharp = 1 edge = 1 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY force = 1 throwforce = 1 hitsound = 'sound/effects/ghost2.ogg' @@ -71,7 +71,7 @@ var/turf/T = get_turf(src) var/list/contents = T.GetAllContents() var/mob/dead/observer/current_spirits = list() - + for(var/mob/dead/observer/O in player_list) if(is_type_in_list(O.following, contents)) ghost_counter++ @@ -145,7 +145,7 @@ stage4 = list("Your blood burns.") stage5 = list("You're a fucking dragon. However, any previous allegiances you held still apply. It'd be incredibly rude to eat your still human friends for no reason.") new_form = /mob/living/simple_animal/hostile/megafauna/dragon/lesser - + //Lava Staff /obj/item/weapon/lava_staff @@ -156,7 +156,7 @@ icon = 'icons/obj/guns/magic.dmi' slot_flags = SLOT_BACK item_state = "staffofstorms" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY force = 25 damtype = BURN hitsound = 'sound/weapons/sear.ogg' @@ -214,4 +214,4 @@ /obj/effect/overlay/temp/lavastaff icon_state = "lavastaff_warn" - duration = 50 \ No newline at end of file + duration = 50 diff --git a/code/modules/mining/lavaland/loot/hierophant_loot.dm b/code/modules/mining/lavaland/loot/hierophant_loot.dm index f06fd25d428..64689a3a535 100644 --- a/code/modules/mining/lavaland/loot/hierophant_loot.dm +++ b/code/modules/mining/lavaland/loot/hierophant_loot.dm @@ -5,7 +5,7 @@ item_state = "hierophant_staff" icon = 'icons/obj/guns/magic.dmi' slot_flags = SLOT_BACK - w_class = 4 + w_class = WEIGHT_CLASS_BULKY force = 20 hitsound = "swing_hit" //hitsound = 'sound/weapons/sonic_jackhammer.ogg' @@ -185,4 +185,4 @@ //playsound(T,'sound/effects/bin_close.ogg', 200, 1) sleep(2) for(var/t in RANGE_TURFS(1, T)) - new /obj/effect/overlay/temp/hierophant/blast(t, user, friendly_fire_check) \ No newline at end of file + new /obj/effect/overlay/temp/hierophant/blast(t, user, friendly_fire_check) diff --git a/code/modules/mining/lavaland/loot/legion_loot.dm b/code/modules/mining/lavaland/loot/legion_loot.dm index 49e64f3349e..f85a6a57aac 100644 --- a/code/modules/mining/lavaland/loot/legion_loot.dm +++ b/code/modules/mining/lavaland/loot/legion_loot.dm @@ -6,7 +6,7 @@ icon = 'icons/obj/guns/magic.dmi' slot_flags = SLOT_BACK item_state = "staffofstorms" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY force = 25 damtype = BURN hitsound = 'sound/weapons/sear.ogg' @@ -49,4 +49,4 @@ "You hold [src] skyward, calling down a terrible storm!") playsound(user, 'sound/magic/Staff_Change.ogg', 200, 0) A.telegraph() - storm_cooldown = world.time + 200 \ No newline at end of file + storm_cooldown = world.time + 200 diff --git a/code/modules/mining/lavaland/loot/tendril_loot.dm b/code/modules/mining/lavaland/loot/tendril_loot.dm index dec8712eb74..1c2093ce8c2 100644 --- a/code/modules/mining/lavaland/loot/tendril_loot.dm +++ b/code/modules/mining/lavaland/loot/tendril_loot.dm @@ -5,7 +5,7 @@ name = "paradox bag" desc = "Somehow, it's in two places at once." max_combined_w_class = 60 - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL //External /obj/item/device/shared_storage @@ -144,7 +144,7 @@ item_state = "rods" desc = "Not to be confused with the kind Research hassles you for." force = 12 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL burn_state = LAVA_PROOF | FIRE_PROOF /datum/crafting_recipe/oar @@ -391,4 +391,4 @@ if(!can_destroy && !force) return QDEL_HINT_LETMELIVE else - . = ..() \ No newline at end of file + . = ..() diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index a9151609f74..7852fe0edd8 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -79,10 +79,10 @@ force = 15.0 throwforce = 10.0 item_state = "pickaxe" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY materials = list(MAT_METAL=2000) //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" + origin_tech = "materials=2;engineering=3" attack_verb = list("hit", "pierced", "sliced", "attacked") var/list/digsound = list('sound/effects/picaxe1.ogg','sound/effects/picaxe2.ogg','sound/effects/picaxe3.ogg') var/drill_verb = "picking" @@ -100,7 +100,7 @@ icon_state = "spickaxe" item_state = "spickaxe" digspeed = 30 //mines faster than a normal pickaxe, bought from mining vendor - origin_tech = "materials=3;engineering=2" + origin_tech = "materials=3;engineering=4" desc = "A silver-plated pickaxe that mines slightly faster than standard-issue." toolspeed = 0.75 @@ -109,7 +109,7 @@ icon_state = "gpickaxe" item_state = "gpickaxe" digspeed = 20 - origin_tech = "materials=4;engineering=2" + origin_tech = "materials=4;engineering=4" desc = "A gold-plated pickaxe that mines faster than standard-issue." toolspeed = 0.6 @@ -118,7 +118,7 @@ icon_state = "dpickaxe" item_state = "dpickaxe" digspeed = 20 //mines twice as fast as a normal pickaxe, bought from mining vendor - origin_tech = "materials=4;engineering=3" + origin_tech = "materials=5;engineering=4" desc = "A pickaxe with a diamond pick head. Extremely robust at cracking rock walls and digging up dirt." toolspeed = 0.5 @@ -130,7 +130,7 @@ digsound = list('sound/weapons/drill.ogg') hitsound = 'sound/weapons/drill.ogg' usesound = 'sound/weapons/drill.ogg' - origin_tech = "materials=2;powerstorage=3;engineering=2" + origin_tech = "materials=2;powerstorage=2;engineering=3" desc = "An electric mining drill for the especially scrawny." toolspeed = 0.5 @@ -143,16 +143,16 @@ name = "diamond-tipped mining drill" icon_state = "diamonddrill" digspeed = 10 - origin_tech = "materials=6;powerstorage=4;engineering=5" + origin_tech = "materials=6;powerstorage=4;engineering=4" desc = "Yours is the drill that will pierce the heavens!" toolspeed = 0.25 /obj/item/weapon/pickaxe/diamonddrill/traitor //Pocket-sized traitor diamond drill. name = "supermatter drill" icon_state = "smdrill" - origin_tech = "materials=6;powerstorage=4;engineering=5;syndicate=3" + origin_tech = "materials=6;powerstorage=4;engineering=4;syndicate=3" desc = "Microscopic supermatter crystals cover the head of this tiny drill." - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/weapon/pickaxe/drill/cyborg/diamond //This is the BORG version! name = "diamond-tipped cyborg mining drill" //To inherit the NODROP flag, and easier to change borg specific drill mechanics. @@ -165,7 +165,7 @@ icon_state = "jackhammer" item_state = "jackhammer" digspeed = 5 //the epitome of powertools. extremely fast mining, laughs at puny walls - origin_tech = "materials=3;powerstorage=2;engineering=2" + origin_tech = "materials=6;powerstorage=4;engineering=5;magnets=4" digsound = list('sound/weapons/sonic_jackhammer.ogg') hitsound = 'sound/weapons/sonic_jackhammer.ogg' usesound = 'sound/weapons/sonic_jackhammer.ogg' @@ -184,9 +184,9 @@ force = 8.0 throwforce = 4.0 item_state = "shovel" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL materials = list(MAT_METAL=50) - origin_tech = "materials=1;engineering=1" + origin_tech = "materials=2;engineering=2" attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked") usesound = 'sound/effects/shovel_dig.ogg' toolspeed = 1 @@ -198,7 +198,7 @@ item_state = "spade" force = 5.0 throwforce = 7.0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL toolspeed = 2 @@ -219,7 +219,7 @@ desc = "It allows you to store and deploy lazarus-injected creatures easier." icon = 'icons/obj/mobcap.dmi' icon_state = "mobcap0" - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_range = 20 var/mob/living/simple_animal/captured = null var/colorindex = 0 @@ -282,7 +282,7 @@ desc = "An emergency shelter stored within a pocket of bluespace." icon_state = "capsule" icon = 'icons/obj/mining.dmi' - w_class = 1 + w_class = WEIGHT_CLASS_TINY origin_tech = "engineering=3;bluespace=3" var/template_id = "shelter_alpha" var/datum/map_template/shelter/template @@ -333,8 +333,28 @@ new /obj/effect/effect/harmless_smoke(get_turf(src)) qdel(src) +/obj/item/weapon/survivalcapsule/luxury + name = "luxury bluespace shelter capsule" + desc = "An exorbitantly expensive luxury suite stored within a pocket of bluespace." + origin_tech = "engineering=3;bluespace=4" + template_id = "shelter_beta" + //Pod turfs and objects +//Window +/obj/structure/window/reinforced/survival_pod + name = "pod window" + icon = 'icons/obj/lavaland/survival_pod.dmi' + icon_state = "pwindow" + +// This override can be removed whenever we get rid of the stupid fucking `dir = 9` = full tile!!!! shit +/obj/structure/window/reinforced/survival_pod/CanPass(atom/movable/mover, turf/target, height=0) + if(istype(mover) && mover.checkpass(PASSGLASS)) + return 1 + if(get_dir(loc, target) == dir) + return !density + else + return 1 //Floors /turf/simulated/floor/pod @@ -364,6 +384,12 @@ base_icon_state = "survival_pod" glass_type = "/survival_pod" +//Windoor +/obj/machinery/door/window/survival_pod + icon = 'icons/obj/lavaland/survival_pod.dmi' + icon_state = "windoor" + base_state = "windoor" + //Table /obj/structure/table/survival_pod icon = 'icons/obj/lavaland/survival_pod.dmi' @@ -536,3 +562,31 @@ new /obj/item/stack/rods(loc) qdel(src) return ..() + +/obj/item/fakeartefact + name = "expensive forgery" + icon = 'icons/mob/screen_gen.dmi' + icon_state = "x2" + var/possible = list(/obj/item/ship_in_a_bottle, + /obj/item/weapon/gun/energy/pulse, + /obj/item/weapon/sleeping_carp_scroll, + /obj/item/weapon/shield/changeling, + /obj/item/weapon/lava_staff, + /obj/item/weapon/katana/energy, + /obj/item/weapon/storage/toolbox/green/memetic, + /obj/item/weapon/gun/projectile/automatic/l6_saw, + /obj/item/weapon/gun/magic/staff/chaos, + /obj/item/weapon/gun/magic/staff/spellblade, + /obj/item/weapon/gun/magic/wand/death, + /obj/item/weapon/gun/magic/wand/fireball, + /obj/item/stack/telecrystal, + /obj/item/weapon/banhammer) + +/obj/item/fakeartefact/New() + . = ..() + var/obj/item/I = pick(possible) + name = initial(I.name) + icon = initial(I.icon) + desc = initial(I.desc) + icon_state = initial(I.icon_state) + item_state = initial(I.item_state) diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index 3fa8d1c1edf..30fca5f2f95 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -9,7 +9,7 @@ throwforce = 0 burn_state = FLAMMABLE burntime = 20 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY /obj/item/weapon/moneybag/attack_hand(user as mob) var/amt_gold = 0 @@ -119,4 +119,4 @@ new /obj/item/weapon/coin/silver(src) new /obj/item/weapon/coin/gold(src) new /obj/item/weapon/coin/gold(src) - new /obj/item/weapon/coin/adamantine(src) \ No newline at end of file + new /obj/item/weapon/coin/adamantine(src) diff --git a/code/modules/mining/ore.dm b/code/modules/mining/ore.dm index cc50f46b9e5..873b6c798d1 100644 --- a/code/modules/mining/ore.dm +++ b/code/modules/mining/ore.dm @@ -153,7 +153,7 @@ icon = 'icons/obj/mining.dmi' icon_state = "Gibtonite ore" item_state = "Gibtonite ore" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY throw_range = 0 anchored = 1 //Forces people to carry it by hand, no pulling! var/primed = 0 diff --git a/code/modules/mining/shelters.dm b/code/modules/mining/shelters.dm index 38750b12d19..2389470e7f5 100644 --- a/code/modules/mining/shelters.dm +++ b/code/modules/mining/shelters.dm @@ -40,3 +40,17 @@ /datum/map_template/shelter/alpha/New() . = ..() whitelisted_turfs = typecacheof(/turf/simulated/mineral) + +/datum/map_template/shelter/beta + name = "Shelter Beta" + shelter_id = "shelter_beta" + description = "An extremly luxurious shelter, containing all \ + the amenities of home, including carpeted floors, hot and cold \ + running water, a gourmet three course meal, cooking facilities, \ + and a deluxe companion to keep you from getting lonely during \ + an ash storm." + mappath = "_maps/map_files/templates/shelter_2.dmm" + +/datum/map_template/shelter/beta/New() + . = ..() + whitelisted_turfs = typecacheof(/turf/simulated/mineral) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index cdd1b55bcf9..3782806db33 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -13,6 +13,10 @@ alien_organs += new /obj/item/organ/internal/xenos/plasmavessel/hunter ..() +/mob/living/carbon/alien/humanoid/hunter/movement_delay() + . = -1 //hunters are sanic + . += ..() //but they still need to slow down on stun + /mob/living/carbon/alien/humanoid/hunter/handle_regular_hud_updates() ..() //-Yvarov diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index 8d8f8894234..6a9565fc449 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -12,14 +12,12 @@ pixel_x = -16 maxHealth = 200 health = 200 - move_delay_add = 1 large = 1 /mob/living/carbon/alien/humanoid/sentinel/praetorian name = "alien praetorian" maxHealth = 200 health = 200 - move_delay_add = 1 large = 1 /mob/living/carbon/alien/humanoid/sentinel/large/update_icons() diff --git a/code/modules/mob/living/carbon/alien/humanoid/empress.dm b/code/modules/mob/living/carbon/alien/humanoid/empress.dm index 287974b610f..7db3ea5b1c5 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/empress.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/empress.dm @@ -6,7 +6,6 @@ icon_state = "alienq_s" status_flags = CANPARALYSE mob_size = MOB_SIZE_LARGE - move_delay_add = 3 large = 1 ventcrawler = 0 diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 735b4ccb777..fff315c90e3 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -26,16 +26,8 @@ /mob/living/carbon/alien/humanoid/movement_delay() - var/tally = 0 - if(istype(src, /mob/living/carbon/alien/humanoid/queen)) - tally += 4 - if(istype(src, /mob/living/carbon/alien/humanoid/drone)) - tally += 0 - if(istype(src, /mob/living/carbon/alien/humanoid/sentinel)) - tally += 0 - if(istype(src, /mob/living/carbon/alien/humanoid/hunter)) - tally = -2 // hunters go supersuperfast - return (tally + move_delay_add + config.alien_delay) + . = ..() + . += move_delay_add + config.alien_delay //move_delay_add is used to slow aliens with stuns /mob/living/carbon/alien/humanoid/Process_Spacemove(var/check_drift = 0) if(..()) diff --git a/code/modules/mob/living/carbon/alien/humanoid/inventory.dm b/code/modules/mob/living/carbon/alien/humanoid/inventory.dm index 223b6a512ae..08017da0b76 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/inventory.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/inventory.dm @@ -22,7 +22,7 @@ if(slot_l_store) if(l_store) return - if(W.w_class > 3) + if(W.w_class > WEIGHT_CLASS_NORMAL) return unEquip(W) l_store = W @@ -30,7 +30,7 @@ if(slot_r_store) if(r_store) return - if(W.w_class > 3) + if(W.w_class > WEIGHT_CLASS_NORMAL) return unEquip(W) r_store = W @@ -44,4 +44,4 @@ if(slot_l_store) if(l_store) l_store.attack_alien(src) if(slot_r_store) - if(r_store) r_store.attack_alien(src) \ No newline at end of file + if(r_store) r_store.attack_alien(src) diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index 11914d3c0ee..a8f17714b0e 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -28,6 +28,9 @@ alien_organs += new /obj/item/organ/internal/xenos/neurotoxin ..() +/mob/living/carbon/alien/humanoid/queen/movement_delay() + . = ..() + . += 3 /mob/living/carbon/alien/humanoid/queen/handle_regular_hud_updates() ..() //-Yvarov diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 98d1bec775c..38ea99834b0 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -14,7 +14,7 @@ var/const/MAX_ACTIVE_TIME = 400 icon = 'icons/mob/alien.dmi' icon_state = "facehugger" item_state = "facehugger" - w_class = 1 //note: can be picked up by aliens unlike most other items of w_class below 4 + w_class = WEIGHT_CLASS_TINY //note: can be picked up by aliens unlike most other items of w_class below 4 throw_range = 5 tint = 3 flags = AIRTIGHT @@ -249,4 +249,4 @@ var/const/MAX_ACTIVE_TIME = 400 gender = FEMALE /obj/item/clothing/mask/facehugger/lamarr/New()//to prevent deleting it if aliums are disabled - return \ No newline at end of file + return diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 15c52d2693c..55711fb6a6d 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -5,8 +5,9 @@ desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity." icon = 'icons/obj/assemblies.dmi' icon_state = "mmi_empty" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL origin_tech = "biotech=3" + origin_tech = "biotech=2;programming=3;engineering=2" //Revised. Brainmob is now contained directly within object of transfer. MMI in this case. var/alien = 0 @@ -121,7 +122,7 @@ /obj/item/device/mmi/radio_enabled name = "Radio-enabled Man-Machine Interface" desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity. This one comes with a built-in radio." - origin_tech = "biotech=4" + origin_tech = "biotech=2;programming=3;engineering=2;magnets=2" var/obj/item/device/radio/radio = null//Let's give it a radio. @@ -174,6 +175,7 @@ /obj/item/device/mmi/syndie name = "Syndicate Man-Machine Interface" desc = "Syndicate's own brand of MMI. It enforces laws designed to help Syndicate agents achieve their goals upon cyborgs created with it, but doesn't fit in Nanotrasen AI cores." + origin_tech = "biotech=4;programming=4;syndicate=2" syndiemmi = 1 /obj/item/device/mmi/attempt_become_organ(obj/item/organ/external/parent,mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 56a98142f80..7a12b570201 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -4,11 +4,11 @@ max_damage = 200 icon_state = "brain2" force = 1.0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throwforce = 1.0 throw_speed = 3 throw_range = 5 - origin_tech = "biotech=3" + origin_tech = "biotech=5" attack_verb = list("attacked", "slapped", "whacked") var/mob/living/carbon/brain/brainmob = null organ_tag = "brain" @@ -28,7 +28,7 @@ name = "xenomorph brain" desc = "We barely understand the brains of terrestial animals. Who knows what we may find in the brain of such an advanced species?" icon_state = "brain-x" - origin_tech = "biotech=7" + origin_tech = "biotech=6" mmi_icon = 'icons/mob/alien.dmi' mmi_icon_state = "AlienMMI" diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 565dd250fd8..54d8a680ae7 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -3,8 +3,8 @@ desc = "A cube of shining metal, four inches to a side and covered in shallow grooves." icon = 'icons/obj/assemblies.dmi' icon_state = "posibrain" - w_class = 3 - origin_tech = "biotech=3;programming=2" + w_class = WEIGHT_CLASS_NORMAL + origin_tech = "biotech=3;programming=3;plasmatech=2" var/searching = 0 var/askDelay = 10 * 60 * 1 @@ -37,7 +37,7 @@ silenced = !silenced to_chat(user, "You toggle the speaker [silenced ? "off" : "on"].") if(brainmob && brainmob.key) - to_chat(brainmob, "Your internal speaker has been toggled [silenced ? "off" : "on"].") + to_chat(brainmob, "Your internal speaker has been toggled [silenced ? "off" : "on"].") /obj/item/device/mmi/posibrain/proc/request_player() for(var/mob/dead/observer/O in player_list) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 000a7a52bd0..e8737175b23 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1985,8 +1985,8 @@ to_chat(src, "Your fingers don't fit in the trigger guard!") return 0 - if(martial_art && martial_art.name == "The Sleeping Carp") //great dishonor to famiry - to_chat(src, "Use of ranged weaponry would bring dishonor to the clan.") + if(martial_art && martial_art.no_guns) //great dishonor to famiry + to_chat(src, "[martial_art.no_guns_message]") return 0 return . diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index c65e5f70f99..87176a7a02a 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -1,75 +1,8 @@ /mob/living/carbon/human/movement_delay() . = 0 . += ..() - - var/gravity = 1 - - if(!has_gravity(src)) - gravity = 0 - - if(flying) - gravity = 0 - - if(embedded_flag) - handle_embedded_objects() //Moving with objects stuck in you can cause bad times. - - if(slowed) - . += 10 - - if(gravity) - if(species.slowdown) - . = species.slowdown - - var/health_deficiency = (maxHealth - health + staminaloss) - if(reagents) - for(var/datum/reagent/R in reagents.reagent_list) - if(R.shock_reduction) - health_deficiency -= R.shock_reduction - if(health_deficiency >= 40) - . += (health_deficiency / 25) - - var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80 - if(hungry >= 70) - . += hungry/50 - - if(wear_suit) - . += wear_suit.slowdown - - if(!buckled) - if(shoes) - . += shoes.slowdown - - if(shock_stage >= 10) - . += 3 - - if(back) - . += back.slowdown - - if(l_hand && (l_hand.flags & HANDSLOW)) - . += l_hand.slowdown - if(r_hand && (r_hand.flags & HANDSLOW)) - . += r_hand.slowdown - - if(FAT in src.mutations) - . += 1.5 - - if(bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) - . += (BODYTEMP_COLD_DAMAGE_LIMIT - bodytemperature) / COLD_SLOWDOWN_FACTOR - - . += 2 * stance_damage //damaged/missing feet or legs is slow - - if(RUN in mutations) - . = -1 - - if(status_flags & IGNORESLOWDOWN) // make sure this is always at the end so we don't have ignore slowdown getting ignored itself - . = -1 - - if(status_flags & GOTTAGOFAST) - . -= 1 - if(status_flags & GOTTAGOREALLYFAST) - . -= 2 - . += config.human_delay + . += species.movement_delay(src) /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index bb297513ef5..8e1c32f931a 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -546,7 +546,7 @@ return 0 if(I.slot_flags & SLOT_DENYPOCKET) return - if(I.w_class <= 2 || (I.slot_flags & SLOT_POCKET)) + if(I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & SLOT_POCKET)) return 1 if(slot_r_store) if(I.flags & NODROP) @@ -559,7 +559,7 @@ return 0 if(I.slot_flags & SLOT_DENYPOCKET) return 0 - if(I.w_class <= 2 || (I.slot_flags & SLOT_POCKET)) + if(I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & SLOT_POCKET)) return 1 return 0 if(slot_s_store) @@ -575,7 +575,7 @@ if(!disable_warning) to_chat(src, "You somehow have a suit with no defined allowed items for suit storage, stop that.") return 0 - if(I.w_class > 4) + if(I.w_class > WEIGHT_CLASS_BULKY) if(!disable_warning) to_chat(src, "The [name] is too big to attach.") return 0 diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index d2d44757705..c1d1a169c1d 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -380,6 +380,72 @@ if(heat_level_3_breathe to INFINITY) H.apply_damage(hot_env_multiplier*HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat") +//////////////// +// MOVE SPEED // +//////////////// + +/datum/species/proc/movement_delay(mob/living/carbon/human/H) + . = 0 //We start at 0. + var/flight = 0 //Check for flight and flying items + var/ignoreslow = 0 + var/gravity = 0 + + if(H.flying) + flight = 1 + + if((H.status_flags & IGNORESLOWDOWN) || (RUN in H.mutations)) + ignoreslow = 1 + + if(has_gravity(H)) + gravity = 1 + + if(H.embedded_flag) + H.handle_embedded_objects() //Moving with objects stuck in you can cause bad times. + + if(!ignoreslow && gravity) + if(slowdown) + . = slowdown + + if(H.wear_suit) + . += H.wear_suit.slowdown + if(!H.buckled) + if(H.shoes) + . += H.shoes.slowdown + if(H.back) + . += H.back.slowdown + if(H.l_hand && (H.l_hand.flags & HANDSLOW)) + . += H.l_hand.slowdown + if(H.r_hand && (H.r_hand.flags & HANDSLOW)) + . += H.r_hand.slowdown + + var/health_deficiency = (H.maxHealth - H.health + H.staminaloss) + var/hungry = (500 - H.nutrition)/5 // So overeat would be 100 and default level would be 80 + if(H.reagents) + for(var/datum/reagent/R in H.reagents.reagent_list) + if(R.shock_reduction) + health_deficiency -= R.shock_reduction + if(health_deficiency >= 40) + if(flight) + . += (health_deficiency / 75) + else + . += (health_deficiency / 25) + if(H.shock_stage >= 10) + . += 3 + . += 2 * H.stance_damage //damaged/missing feet or legs is slow + + if((hungry >= 70) && !flight) + . += hungry/50 + if(FAT in H.mutations) + . += (1.5 - flight) + if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) + . += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR + + if(H.status_flags & GOTTAGOFAST) + . -= 1 + if(H.status_flags & GOTTAGOREALLYFAST) + . -= 2 + return . + /datum/species/proc/handle_post_spawn(var/mob/living/carbon/C) //Handles anything not already covered by basic species assignment. grant_abilities(C) return diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index 9031a77311c..85fed33c156 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -83,10 +83,11 @@ if(bodytemperature >= 330.23) // 135 F return -1 // slimes become supercharged at high temperatures - . = ..(1) + . = ..() var/health_deficiency = (100 - health) - if(health_deficiency >= 45) . += (health_deficiency / 25) + if(health_deficiency >= 45) + . += (health_deficiency / 25) if(bodytemperature < 183.222) . += (283.222 - bodytemperature) / 10 * 1.75 @@ -101,7 +102,7 @@ if(health <= 0) // if damaged, the slime moves twice as slow . *= 2 - return . + config.slime_delay + . += config.slime_delay /mob/living/carbon/slime/ObjBump(obj/O) if(!client && powerlevel > 0) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 5e1dab9874b..06b6440f756 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -174,6 +174,15 @@ return 0 if(!..()) return 0 + var/obj/item/hand_item = get_active_hand() + if(istype(hand_item, /obj/item/weapon/gun) && A != hand_item) + if(a_intent == I_HELP || !ismob(A)) + visible_message("[src] points to [A] with [hand_item]") + return 1 + A.visible_message("[src] points [hand_item] at [A]!", + "[src] points [hand_item] at you!") + A << 'sound/weapons/TargetOn.ogg' + return 1 visible_message("[src] points to [A]") return 1 @@ -919,7 +928,6 @@ /mob/living/movement_delay(ignorewalk = 0) . = ..() - if(isturf(loc)) var/turf/T = loc . += T.slowdown diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 202984fd14e..3f1799c7c9f 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -82,6 +82,7 @@ var/current_pda_messaging = null var/custom_sprite = 0 + var/slowdown = 0 /mob/living/silicon/pai/New(var/obj/item/device/paicard) loc = paicard @@ -117,6 +118,12 @@ C.toff = 1 ..() +/mob/living/silicon/pai/movement_delay() + . = ..() + . += slowdown + . += 1 //A bit slower than humans, so they're easier to smash + . += config.robot_delay + /mob/living/silicon/pai/update_icons() if(stat == DEAD) icon_state = "[chassis]_dead" diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm index d399db99515..2c9ab233eda 100644 --- a/code/modules/mob/living/silicon/robot/component.dm +++ b/code/modules/mob/living/silicon/robot/component.dm @@ -171,7 +171,7 @@ flags = CONDUCT slot_flags = SLOT_BELT throwforce = 3 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 5 throw_range = 10 origin_tech = "magnets=1;biotech=1" diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index bbda7a05318..282f97c4dc4 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -327,7 +327,7 @@ ..() else if(istype(AM,/obj/item)) var/obj/item/O = AM - if(O.w_class > 2) + if(O.w_class > WEIGHT_CLASS_SMALL) to_chat(src, "You are too small to pull that.") return else diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm index 5ccc6e9585c..e896e7c9473 100644 --- a/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -7,14 +7,11 @@ //No longer needed, but I'll leave it here incase we plan to re-use it. /mob/living/silicon/robot/movement_delay() - . = ..(1) //Incase I need to add stuff other than "speed" later - + . = ..() . += speed - if(module_active && istype(module_active,/obj/item/borg/combat/mobility)) . -= 3 - - return . + config.robot_delay + . += config.robot_delay /mob/living/silicon/robot/mob_negates_gravity() return magpulse diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index d524ffd8e06..a7d297d0bdc 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -10,7 +10,7 @@ throwforce = 5 throw_speed = 2 throw_range = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL var/created_name = "Cleanbot" /obj/item/weapon/bucket_sensor/attackby(obj/item/W, mob/user as mob, params) @@ -204,7 +204,7 @@ throwforce = 10 throw_speed = 2 throw_range = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL var/created_name = "Floorbot" /obj/item/weapon/toolbox_tiles_sensor @@ -216,7 +216,7 @@ throwforce = 10 throw_speed = 2 throw_range = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL var/created_name = "Floorbot" /obj/item/weapon/storage/toolbox/mechanical/attackby(obj/item/stack/tile/plasteel/T, mob/user, params) @@ -286,7 +286,7 @@ var/build_step = 0 var/created_name = "Medibot" //To preserve the name if it's a unique medbot I guess var/skin = null //Same as medbot, set to tox or ointment for the respective kits. - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL var/treatment_brute = "salglu_solution" var/treatment_oxy = "salbutamol" var/treatment_fire = "salglu_solution" @@ -478,4 +478,4 @@ overlays -= "hs_arm" new /obj/item/robot_parts/l_arm(get_turf(src)) to_chat(user, "You remove the robot arm from [src].") - build_step-- \ No newline at end of file + build_step-- diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 95a1d100161..5f977bfd508 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -37,12 +37,85 @@ icon_resting = "cat_rest" gender = FEMALE gold_core_spawnable = CHEM_MOB_SPAWN_INVALID + var/list/family = list() + var/memory_saved = 0 + var/list/children = list() //Actual mob instances of children + var/cats_deployed = 0 + +/mob/living/simple_animal/pet/cat/Runtime/New() + Read_Memory() + ..() + +/mob/living/simple_animal/pet/cat/Runtime/Life() + if(!cats_deployed && ticker.current_state >= GAME_STATE_SETTING_UP) + Deploy_The_Cats() + if(!stat && ticker.current_state == GAME_STATE_FINISHED && !memory_saved) + Write_Memory() + ..() + +/mob/living/simple_animal/pet/cat/Runtime/make_babies() + var/mob/baby = ..() + if(baby) + children += baby + return baby + +/mob/living/simple_animal/pet/cat/Runtime/death() + if(!memory_saved) + Write_Memory(1) + ..() + +/mob/living/simple_animal/pet/cat/Runtime/proc/Read_Memory() + var/savefile/S = new /savefile("data/npc_saves/Runtime.sav") + S["family"] >> family + + if(isnull(family)) + family = list() + +/mob/living/simple_animal/pet/cat/Runtime/proc/Write_Memory(dead) + var/savefile/S = new /savefile("data/npc_saves/Runtime.sav") + family = list() + if(!dead) + for(var/mob/living/simple_animal/pet/cat/kitten/C in children) + if(istype(C,type) || C.stat || !C.z || !C.butcher_results) + continue + if(C.type in family) + family[C.type] += 1 + else + family[C.type] = 1 + S["family"] << family + memory_saved = 1 + +/mob/living/simple_animal/pet/cat/Runtime/proc/Deploy_The_Cats() + cats_deployed = 1 + for(var/cat_type in family) + if(family[cat_type] > 0) + for(var/i in 1 to min(family[cat_type],100)) //Limits to about 500 cats, you wouldn't think this would be needed (BUT IT IS) + new cat_type(loc) + /mob/living/simple_animal/pet/cat/handle_automated_action() ..() + if(prob(1)) + custom_emote(1, pick("stretches out for a belly rub.", "wags its tail.", "lies down.")) + icon_state = "[icon_living]_rest" + resting = 1 + update_canmove() + else if (prob(1)) + custom_emote(1, pick("sits down.", "crouches on its hind legs.", "looks alert.")) + icon_state = "[icon_living]_sit" + resting = 1 + update_canmove() + else if (prob(1)) + if (resting) + custom_emote(1, pick("gets up and meows.", "walks around.", "stops resting.")) + icon_state = "[icon_living]" + resting = 0 + update_canmove() + else + custom_emote(1, pick("grooms its fur.", "twitches its whiskers.", "shakes out its coat.")) //MICE! - if(eats_mice && loc && isturf(loc) && !incapacitated()) + if(eats_mice && isturf(loc) && !incapacitated()) for(var/mob/living/simple_animal/mouse/M in view(1,src)) if(!M.stat && Adjacent(M)) custom_emote(1, "splats \the [M]!") @@ -50,13 +123,11 @@ movement_target = null stop_automated_movement = 0 break - - //attempt to mate make_babies() /mob/living/simple_animal/pet/cat/handle_automated_movement() ..() - if(eats_mice && !incapacitated()) + if(!stat && !resting && !buckled) turns_since_scan++ if(turns_since_scan > 5) walk_to(src,0) @@ -75,6 +146,7 @@ stop_automated_movement = 1 walk_to(src,movement_target,0,3) + /mob/living/simple_animal/pet/cat/Proc name = "Proc" @@ -102,4 +174,4 @@ gold_core_spawnable = CHEM_MOB_SPAWN_INVALID eats_mice = 0 atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 \ No newline at end of file + minbodytemp = 0 diff --git a/code/modules/mob/living/simple_animal/friendly/sloth.dm b/code/modules/mob/living/simple_animal/friendly/sloth.dm index 1066b2a0d39..bf12b07de2e 100644 --- a/code/modules/mob/living/simple_animal/friendly/sloth.dm +++ b/code/modules/mob/living/simple_animal/friendly/sloth.dm @@ -21,7 +21,7 @@ melee_damage_upper = 18 health = 50 maxHealth = 50 - speed = 1 + speed = 2 //Cargo Sloth diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index 5b2419bf7e8..bc75bd554e5 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -260,7 +260,7 @@ var/list/items = list() for(var/obj/item/I in view(1,src)) - if(I.loc != src && I.w_class <= 2) + if(I.loc != src && I.w_class <= WEIGHT_CLASS_SMALL) items.Add(I) var/obj/selection = input("Select an item.", "Pickup") in items diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index a14efc6d279..35926a602f2 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -22,7 +22,6 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 - speed = 4 faction = list("faithless") gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE 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 80227526cbc..3298e334bd2 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -222,7 +222,7 @@ icon = 'icons/obj/items.dmi' icon_state = "goliath_hide" flags = NOBLUDGEON - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL layer = 4 /obj/item/asteroid/goliath_hide/afterattack(atom/target, mob/user, proximity_flag) 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 3cfc1b2c291..df5b53f5368 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -258,7 +258,7 @@ if(spawnees & 512) C = new(src.loc) C.name = "Corrupted drone morality core" - C.origin_tech = "illegal=[rand(3,6)]" + C.origin_tech = "syndicate=[rand(3,6)]" return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm index 5a0798874e4..687e0b7c73a 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm @@ -12,7 +12,7 @@ response_help = "pets" emote_hear = list("chitters") maxHealth = 250 - health = 200 + health = 250 harm_intent_damage = 3 melee_damage_lower = 15 melee_damage_upper = 20 diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm index 66972b06d2e..e5beb60097e 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm @@ -31,7 +31,7 @@ response_disarm = "shoves" response_harm = "hits" turns_per_move = 10 - speed = -1 + speed = 0 maxHealth = 20 health = 20 @@ -74,7 +74,7 @@ response_help = "shakes hands with" response_disarm = "shoves" response_harm = "hits" - speed = -1 + speed = 0 maxHealth = 20 health = 20 diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 2c1fb61be2f..de27a2173c3 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -505,7 +505,8 @@ /mob/living/simple_animal/parrot/movement_delay() if(client && stat == CONSCIOUS && parrot_state != "parrot_fly") icon_state = "parrot_fly" - ..() + //Because the most appropriate place to set icon_state is movement_delay(), clearly + return ..() /mob/living/simple_animal/parrot/proc/search_for_item() for(var/atom/movable/AM in view(src)) @@ -515,12 +516,12 @@ if(istype(AM, /obj/item)) var/obj/item/I = AM - if(I.w_class < 2) + if(I.w_class < WEIGHT_CLASS_SMALL) return I if(iscarbon(AM)) var/mob/living/carbon/C = AM - if((C.l_hand && C.l_hand.w_class <= 2) || (C.r_hand && C.r_hand.w_class <= 2)) + if((C.l_hand && C.l_hand.w_class <= WEIGHT_CLASS_SMALL) || (C.r_hand && C.r_hand.w_class <= WEIGHT_CLASS_SMALL)) return C return null @@ -544,12 +545,12 @@ if(istype(AM, /obj/item)) var/obj/item/I = AM - if(I.w_class <= 2) + if(I.w_class <= WEIGHT_CLASS_SMALL) return I if(iscarbon(AM)) var/mob/living/carbon/C = AM - if(C.l_hand && C.l_hand.w_class <= 2 || C.r_hand && C.r_hand.w_class <= 2) + if(C.l_hand && C.l_hand.w_class <= WEIGHT_CLASS_SMALL || C.r_hand && C.r_hand.w_class <= WEIGHT_CLASS_SMALL) return C return null @@ -571,7 +572,7 @@ for(var/obj/item/I in view(1,src)) //Make sure we're not already holding it and it's small enough - if(I.loc != src && I.w_class <= 2) + if(I.loc != src && I.w_class <= WEIGHT_CLASS_SMALL) //If we have a perch and the item is sitting on it, continue if(!client && parrot_perch && I.loc == parrot_perch.loc) @@ -600,10 +601,10 @@ var/obj/item/stolen_item = null for(var/mob/living/carbon/C in view(1,src)) - if(C.l_hand && C.l_hand.w_class <= 2) + if(C.l_hand && C.l_hand.w_class <= WEIGHT_CLASS_SMALL) stolen_item = C.l_hand - if(C.r_hand && C.r_hand.w_class <= 2) + if(C.r_hand && C.r_hand.w_class <= WEIGHT_CLASS_SMALL) stolen_item = C.r_hand if(stolen_item) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index bd6ed65a979..f24068bf35d 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -434,11 +434,11 @@ /mob/living/simple_animal/movement_delay() - var/tally = 0 //Incase I need to add stuff other than "speed" later + . = ..() - tally = speed + . = speed - return tally+config.animal_delay + . += config.animal_delay /mob/living/simple_animal/Stat() ..() @@ -592,7 +592,7 @@ alone = 0 continue if(alone && partner && children < 3) - new childtype(loc) + return new childtype(loc) /mob/living/simple_animal/say_quote(var/message) var/verb = "says" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index a1b6c652913..cb86d417fbc 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -424,7 +424,7 @@ var/list/slot_equipment_priority = list( \ return 0 if(slot_flags & SLOT_DENYPOCKET) return - if( w_class <= 2 || (slot_flags & SLOT_POCKET) ) + if( w_class <= WEIGHT_CLASS_SMALL || (slot_flags & SLOT_POCKET) ) return 1 if(slot_r_store) if(H.r_store) @@ -435,7 +435,7 @@ var/list/slot_equipment_priority = list( \ return 0 if(slot_flags & SLOT_DENYPOCKET) return 0 - if( w_class <= 2 || (slot_flags & SLOT_POCKET) ) + if( w_class <= WEIGHT_CLASS_SMALL || (slot_flags & SLOT_POCKET) ) return 1 return 0 if(slot_s_store) @@ -447,7 +447,7 @@ var/list/slot_equipment_priority = list( \ if(!disable_warning) to_chat(usr, "You somehow have a suit with no defined allowed items for suit storage, stop that.") return 0 - if(src.w_class > 4) + if(src.w_class > WEIGHT_CLASS_BULKY) if(!disable_warning) to_chat(usr, "The [name] is too big to attach.") return 0 @@ -1008,9 +1008,10 @@ var/list/slot_equipment_priority = list( \ drop_l_hand() drop_r_hand() -/mob/proc/facedir(var/ndir) - if(!canface()) return 0 - dir = ndir +/mob/proc/facedir(ndir) + if(!canface()) + return 0 + setDir(ndir) client.move_delay += movement_delay() return 1 diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 624ec318f03..fffd02adf0a 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -26,7 +26,7 @@ plane = HUD_PLANE item_state = "nothing" icon = 'icons/mob/screen_gen.dmi' - w_class = 5 + w_class = WEIGHT_CLASS_BULKY /obj/item/weapon/grab/New(var/mob/user, var/mob/victim) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 03ba9618bd4..20e08001754 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -149,14 +149,6 @@ /client/Move(n, direct) - if(viewingCanvas) - view = world.view //Reset the view - winset(src, "mapwindow.map", "icon-size=[src.reset_stretch]") - viewingCanvas = 0 - mob.reset_perspective() - if(mob.hud_used) - mob.hud_used.show_hud(HUD_STYLE_STANDARD) - if(world.time < move_delay) return diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index a5c64adc7ea..da26fc96fec 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -4,7 +4,7 @@ icon_state = "clipboard" item_state = "clipboard" throwforce = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 10 var/obj/item/weapon/pen/haspen //The stored pen. diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 00458df575c..214c284f206 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -3,7 +3,7 @@ desc = "A folder." icon = 'icons/obj/bureaucracy.dmi' icon_state = "folder" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL pressure_resistance = 2 burn_state = FLAMMABLE @@ -121,4 +121,3 @@ ..() new /obj/item/documents/syndicate/blue(src) update_icon() - diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 60a501f1ecf..250abe3d682 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -10,7 +10,7 @@ icon_state = "paper" item_state = "paper" throwforce = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_range = 1 throw_speed = 1 layer = 4 diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index da20ed65dde..2a7c7e113e1 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -5,7 +5,7 @@ icon_state = "paper" item_state = "paper" throwforce = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_range = 2 throw_speed = 1 layer = 4 @@ -241,4 +241,4 @@ if(photo) desc += "\nThere is a photo attached to it." overlays += image('icons/obj/bureaucracy.dmi', "clip") - return \ No newline at end of file + return diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 89ba611f33c..efcce443d6c 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -4,7 +4,7 @@ icon_state = "paper_bin1" item_state = "sheet-metal" throwforce = 1 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL throw_speed = 3 throw_range = 7 pressure_resistance = 8 diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 3b8a10ffbc0..9f5d3534215 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -17,7 +17,7 @@ item_state = "pen" slot_flags = SLOT_BELT | SLOT_EARS throwforce = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 materials = list(MAT_METAL=10) @@ -124,7 +124,7 @@ */ /obj/item/weapon/pen/sleepy flags = OPENCONTAINER - origin_tech = "materials=2;syndicate=5" + origin_tech = "engineering=4;syndicate=2" /obj/item/weapon/pen/sleepy/attack(mob/living/M, mob/user) @@ -146,7 +146,7 @@ * (Alan) Edaggers */ /obj/item/weapon/pen/edagger - origin_tech = "combat=3;syndicate=5" + origin_tech = "combat=3;syndicate=1" attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") //these wont show up if the pen is off var/on = 0 @@ -167,7 +167,7 @@ force = 18 sharp = 1 edge = 1 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL name = "energy dagger" hitsound = 'sound/weapons/blade1.ogg' throwforce = 35 @@ -200,4 +200,4 @@ add_logs(user, P, "used poison pen on") to_chat(user, "You apply the poison to [P].") else - to_chat(user, "[src] clicks. It seems to be depleted.") \ No newline at end of file + to_chat(user, "[src] clicks. It seems to be depleted.") diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index a9e232560fc..dc86ce2299a 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -15,7 +15,7 @@ desc = "A camera film cartridge. Insert it into a camera to reload it." icon_state = "film" item_state = "electropack" - w_class = 1 + w_class = WEIGHT_CLASS_TINY burn_state = FLAMMABLE @@ -27,7 +27,7 @@ icon = 'icons/obj/items.dmi' icon_state = "photo" item_state = "paper" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL burn_state = FLAMMABLE burntime = 5 var/blueprints = 0 // Does this have the blueprints? @@ -146,7 +146,7 @@ desc = "A polaroid camera. 10 photos left." icon_state = "camera" item_state = "electropack" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_BELT var/list/matter = list("metal" = 2000) var/pictures_max = 10 @@ -508,7 +508,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s desc = "video camera that can send live feed to the entertainment network." icon_state = "videocam" item_state = "videocam" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_BELT materials = list(MAT_METAL=2000) var/on = 0 diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 26e397039d8..2ca25bf185f 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -5,7 +5,7 @@ icon_state = "stamp-ok" item_state = "stamp" throwforce = 0 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 materials = list(MAT_METAL=60) @@ -105,4 +105,4 @@ if(chosen_stamp) name = chosen_stamp.name icon_state = chosen_stamp.icon_state - item_color = chosen_stamp.item_color \ No newline at end of file + item_color = chosen_stamp.item_color diff --git a/code/modules/pda/PDA.dm b/code/modules/pda/PDA.dm index d5208a01b8f..9b0413b94ee 100755 --- a/code/modules/pda/PDA.dm +++ b/code/modules/pda/PDA.dm @@ -10,8 +10,9 @@ var/global/list/obj/item/device/pda/PDAs = list() icon = 'icons/obj/pda.dmi' icon_state = "pda" item_state = "electronic" - w_class = 1 + w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_ID | SLOT_BELT | SLOT_PDA + origin_tech = "programming=2" //Main variables var/owner = null @@ -302,21 +303,29 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/AltClick(mob/user) ..() - if(issilicon(usr)) + if(issilicon(user)) return if(can_use(user)) if(id) - remove_id() + remove_id(user) else to_chat(user, "This PDA does not have an ID in it!") -/obj/item/device/pda/proc/remove_id() +/obj/item/device/pda/CtrlClick(mob/user) + ..() + if(issilicon(user)) + return + + if(can_use(user)) + remove_pen(user) + +/obj/item/device/pda/proc/remove_id(mob/user) if(id) if(ismob(loc)) var/mob/M = loc M.put_in_hands(id) - to_chat(usr, "You remove the ID from the [name].") + to_chat(user, "You remove the ID from the [name].") else id.forceMove(get_turf(src)) overlays -= image('icons/goonstation/objects/pda_overlay.dmi', id.icon_state) @@ -332,36 +341,37 @@ var/global/list/obj/item/device/pda/PDAs = list() if( can_use(usr) ) if(id) - remove_id() + remove_id(usr) else to_chat(usr, "This PDA does not have an ID in it.") else to_chat(usr, "You cannot do this while restrained.") - /obj/item/device/pda/verb/verb_remove_pen() set category = "Object" set name = "Remove pen" set src in usr + remove_pen(usr) - if(issilicon(usr)) +/obj/item/device/pda/proc/remove_pen(mob/user) + + if(issilicon(user)) return - if( can_use(usr) ) + if( can_use(user) ) var/obj/item/weapon/pen/O = locate() in src if(O) + to_chat(user, "You remove the [O] from [src].") if(istype(loc, /mob)) var/mob/M = loc if(M.get_active_hand() == null) M.put_in_hands(O) - to_chat(usr, "You remove \the [O] from \the [src].") return O.forceMove(get_turf(src)) else - to_chat(usr, "This PDA does not have a pen in it.") + to_chat(user, "This PDA does not have a pen in it.") else - to_chat(usr, "You cannot do this while restrained.") - + to_chat(user, "You cannot do this while restrained.") /obj/item/device/pda/proc/id_check(mob/user as mob, choice as num)//To check for IDs; 1 for in-pda use, 2 for out of pda use. if(choice == 1) diff --git a/code/modules/pda/cart.dm b/code/modules/pda/cart.dm index 459ae09835a..b432effb8be 100644 --- a/code/modules/pda/cart.dm +++ b/code/modules/pda/cart.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/pda.dmi' icon_state = "cart" item_state = "electronic" - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/obj/item/radio/integrated/radio = null @@ -322,4 +322,4 @@ my_game.hacked = 1 to_chat(user, "TR4P_M45T3R.mod successfully initialized. ToS violated. User Agreement nullified. Gotta pwn them all.") to_chat(user, "You can now create trapped versions of any mob in your collection that will damage hunters who attempt to capture it.") - description_antag = "This copy of Nano-Mob Hunter GO! has been hacked to allow the creation of trap mobs which will cause any PDA that attempts to capture it to shock anyone holding it. Hacked copies of the game will not trigger the trap." \ No newline at end of file + description_antag = "This copy of Nano-Mob Hunter GO! has been hacked to allow the creation of trap mobs which will cause any PDA that attempts to capture it to shock anyone holding it. Hacked copies of the game will not trigger the trap." diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 03a84d161e5..da56a496947 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -122,7 +122,8 @@ desc = "Heavy-duty switching circuits for power control." icon = 'icons/obj/module.dmi' icon_state = "power_mod" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL + origin_tech = "engineering=2;programming=1" item_state = "electronic" flags = CONDUCT usesound = 'sound/items/Deconstruct.ogg' @@ -621,7 +622,7 @@ if(((stat & BROKEN) || malfhack) \ && !opened \ && ( \ - (W.force >= 5 && W.w_class >= 3.0) \ + (W.force >= 5 && W.w_class >= WEIGHT_CLASS_NORMAL) \ || istype(W,/obj/item/weapon/crowbar) \ ) \ && prob(20) ) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 33aa4931fcc..b70e847cab4 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -485,7 +485,7 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list( color = COLOR_RED desc = "A coil of power cable." throwforce = 10 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 2 throw_range = 5 materials = list(MAT_METAL=10, MAT_GLASS=5) @@ -568,9 +568,9 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list( /obj/item/stack/cable_coil/proc/update_wclass() if(amount == 1) - w_class = 1 + w_class = WEIGHT_CLASS_TINY else - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/stack/cable_coil/examine(mob/user) if(!..(user, 1)) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 942ed2ac98a..9832b028270 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -22,13 +22,6 @@ if(maxcharge < amount) return 0 var/power_used = min(maxcharge-charge,amount) - if(crit_fail) - return 0 - if(!prob(reliability)) - minor_fault++ - if(prob(minor_fault)) - crit_fail = 1 - return 0 charge += power_used return power_used @@ -38,8 +31,6 @@ to_chat(user, "[desc]\nThe manufacturer's label states this cell has a power rating of [maxcharge], and that you should not swallow it.\nThe charge meter reads [round(src.percent() )]%.") else to_chat(user, "This power cell has an exciting chrome finish, as it is an uber-capacity cell type! It has a power rating of [maxcharge]!\nThe charge meter reads [round(src.percent() )]%.") - if(crit_fail) - to_chat(user, "This power cell seems to be faulty.") /obj/item/weapon/stock_parts/cell/attack_self(mob/user as mob) src.add_fingerprint(user) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index a1e97bf58d2..366c9ee52af 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -122,6 +122,7 @@ fixture_type = "bulb" sheets_refunded = 1 + // the standard tube light fixture /obj/machinery/light name = "light fixture" @@ -149,6 +150,7 @@ // this is used to calc the probability the light burns out var/rigged = 0 // true if rigged to explode + var/lightmaterials = list(MAT_GLASS=100) //stores the materials the light is made of to stop infinite glass exploit // the smaller bulb light fixture @@ -305,6 +307,7 @@ brightness_range = L.brightness_range brightness_power = L.brightness_power brightness_color = L.brightness_color + lightmaterials = L.materials on = has_power() update() @@ -472,6 +475,7 @@ L.brightness_range = brightness_range L.brightness_power = brightness_power L.brightness_color = brightness_color + L.materials = lightmaterials // light item inherits the switchcount, then zero it L.switchcount = switchcount @@ -500,6 +504,7 @@ L.brightness_range = brightness_range L.brightness_power = brightness_power L.brightness_color = brightness_color + L.materials = lightmaterials // light item inherits the switchcount, then zero it L.switchcount = switchcount @@ -592,11 +597,11 @@ icon = 'icons/obj/lighting.dmi' force = 2 throwforce = 5 - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/status = 0 // LIGHT_OK, LIGHT_BURNED or LIGHT_BROKEN var/base_state var/switchcount = 0 // number of times switched - materials = list(MAT_METAL=60) + materials = list(MAT_GLASS=100) var/rigged = 0 // true if rigged to explode var/brightness_range = 2 //how much light it gives off var/brightness_power = 1 @@ -608,11 +613,10 @@ icon_state = "ltube" base_state = "ltube" item_state = "c_tube" - materials = list(MAT_GLASS=100) brightness_range = 8 /obj/item/weapon/light/tube/large - w_class = 2 + w_class = WEIGHT_CLASS_SMALL name = "large light tube" brightness_range = 15 brightness_power = 2 @@ -623,7 +627,6 @@ icon_state = "lbulb" base_state = "lbulb" item_state = "contvapour" - materials = list(MAT_GLASS=100) brightness_range = 5 brightness_color = "#a0a080" @@ -637,7 +640,6 @@ icon_state = "fbulb" base_state = "fbulb" item_state = "egg4" - materials = list(MAT_GLASS=100) brightness_range = 5 // update the icon state and description of the light diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index dea4c4797e8..fa9b61c8059 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -204,7 +204,7 @@ icon = 'icons/obj/power.dmi' icon_state = "sp_base" item_state = "electropack" - w_class = 4 // Pretty big! + w_class = WEIGHT_CLASS_BULKY // Pretty big! anchored = 0 var/tracker = 0 var/glass_type = null diff --git a/code/modules/power/supermatter/sm_shard.dm b/code/modules/power/supermatter/sm_shard.dm index 2ffd5b040ec..d4c1109e16e 100644 --- a/code/modules/power/supermatter/sm_shard.dm +++ b/code/modules/power/supermatter/sm_shard.dm @@ -7,7 +7,7 @@ icon_state = "supermatter" sharp = 1 edge = 1 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL flags = CONDUCT light_color = "#8A8A00" var/brightness = 2 @@ -85,7 +85,7 @@ icon = 'icons/obj/weapons.dmi' icon_state = "tongs" edge = 1 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL flags = CONDUCT var/obj/item/held = null // The item currently being held diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index 7b4b7a0d02e..c4ce808f00d 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -81,4 +81,5 @@ name = "tracker electronics" icon = 'icons/obj/doors/door_assembly.dmi' icon_state = "door_electronics" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL + origin_tech = "engineering=2;programming=1" \ No newline at end of file diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 924dcac3b4c..71400802ee2 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -6,7 +6,7 @@ flags = CONDUCT slot_flags = SLOT_BELT throwforce = 1 - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/fire_sound = null //What sound should play when this ammo is fired var/caliber = null //Which kind of guns it can be loaded into var/projectile_type = null //The bullet type to create when New() is called @@ -87,7 +87,7 @@ item_state = "syringe_kit" materials = list(MAT_METAL=30000) throwforce = 2 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throw_speed = 4 throw_range = 10 var/list/stored_ammo = list() @@ -192,4 +192,4 @@ var/turf_mag = get_turf(src) for(var/obj/item/ammo in stored_ammo) ammo.forceMove(turf_mag) - stored_ammo -= ammo \ No newline at end of file + stored_ammo -= ammo diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index bba922624f1..0304f4a48a9 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -7,7 +7,7 @@ flags = CONDUCT slot_flags = SLOT_BELT materials = list(MAT_METAL=2000) - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL throwforce = 5 throw_speed = 3 throw_range = 5 diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index de217a9715d..f541ca2a94a 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -3,7 +3,7 @@ desc = "A vicious alien projectile weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive." icon_state = "spikethrower" item_state = "spikethrower" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL fire_sound_text = "a strange noise" mag_type = /obj/item/ammo_box/magazine/internal/spikethrower burst_size = 2 @@ -52,7 +52,7 @@ sharp = 1 edge = 0 throwforce = 5 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL caliber = "spike" icon_state = "bolt" fire_sound = 'sound/weapons/bladeslice.ogg' diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 40356f8a7d9..7a039ca29df 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -3,9 +3,9 @@ desc = "A basic energy-based laser gun that fires concentrated beams of light which pass through glass and thin metal." icon_state = "laser" item_state = "laser" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL materials = list(MAT_METAL=2000) - origin_tech = "combat=3;magnets=2" + origin_tech = "combat=4;magnets=2" ammo_type = list(/obj/item/ammo_casing/energy/lasergun) ammo_x_offset = 1 shaded_charge = 1 @@ -13,6 +13,7 @@ /obj/item/weapon/gun/energy/laser/practice name = "practice laser gun" desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice." + origin_tech = "combat=2;magnets=2" ammo_type = list(/obj/item/ammo_casing/energy/laser/practice) clumsy_check = 0 needs_permit = 0 @@ -66,11 +67,11 @@ desc = "An advanced laser cannon that does more damage the farther away the target is." icon_state = "lasercannon" item_state = "laser" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY force = 10 flags = CONDUCT slot_flags = SLOT_BACK - origin_tech = "combat=4;materials=3;powerstorage=3" + origin_tech = "combat=4;magnets=4;powerstorage=3" ammo_type = list(/obj/item/ammo_casing/energy/laser/accelerator) ammo_x_offset = 3 @@ -111,7 +112,7 @@ name = "xray laser gun" desc = "A high-power laser gun capable of expelling concentrated xray blasts." icon_state = "xray" - origin_tech = "combat=5;materials=3;magnets=2;syndicate=2" + origin_tech = "combat=6;materials=4;magnets=4;syndicate=1" ammo_type = list(/obj/item/ammo_casing/energy/xray) /obj/item/weapon/gun/energy/immolator @@ -120,7 +121,7 @@ icon_state = "immolator" item_state = "laser" ammo_type = list(/obj/item/ammo_casing/energy/immolator) - origin_tech = "combat=4;materials=4;magnets=3;plasmatech=2" + origin_tech = "combat=4;magnets=4;powerstorage=3" shaded_charge = 1 ////////Laser Tag//////////////////// @@ -130,7 +131,7 @@ icon_state = "bluetag" desc = "Standard issue weapon of the Imperial Guard" ammo_type = list(/obj/item/ammo_casing/energy/laser/bluetag) - origin_tech = "combat=1;magnets=2" + origin_tech = "combat=2;magnets=2" clumsy_check = 0 needs_permit = 0 ammo_x_offset = 2 @@ -141,7 +142,7 @@ icon_state = "redtag" desc = "Standard issue weapon of the Imperial Guard" ammo_type = list(/obj/item/ammo_casing/energy/laser/redtag) - origin_tech = "combat=1;magnets=2" + origin_tech = "combat=2;magnets=2" clumsy_check = 0 needs_permit = 0 ammo_x_offset = 2 diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index 727ebdd7082..3e4838f7e20 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -4,7 +4,7 @@ icon_state = "energy" item_state = null //so the human update icon uses the icon_state instead. ammo_type = list(/obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser) - origin_tech = "combat=3;magnets=2" + origin_tech = "combat=4;magnets=3" modifystate = 2 can_flashlight = 1 ammo_x_offset = 3 @@ -31,7 +31,7 @@ desc = "A small, pistol-sized energy gun with a built-in flashlight. It has two settings: stun and kill." icon_state = "mini" item_state = "gun" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL ammo_x_offset = 2 charge_sections = 3 can_flashlight = 0 // Can't attach or detach the flashlight, and override it's icon update @@ -51,6 +51,7 @@ name = "\improper X-01 MultiPhase Energy Gun" desc = "This is an expensive, modern recreation of an antique laser gun. This gun has several unique firemodes, but lacks the ability to recharge over time." icon_state = "hoslaser" + origin_tech = null force = 10 ammo_type = list(/obj/item/ammo_casing/energy/electrode/hos, /obj/item/ammo_casing/energy/laser/hos, /obj/item/ammo_casing/energy/disabler) ammo_x_offset = 4 @@ -71,7 +72,7 @@ icon_state = "turretlaser" item_state = "turretlaser" slot_flags = null - w_class = 5 + w_class = WEIGHT_CLASS_HUGE ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser) weapon_weight = WEAPON_MEDIUM can_flashlight = 0 @@ -83,51 +84,10 @@ desc = "An energy gun with an experimental miniaturized nuclear reactor that automatically charges the internal power cell." icon_state = "nucgun" item_state = "nucgun" - origin_tech = "combat=3;materials=5;powerstorage=3" + origin_tech = "combat=4;magnets=4;powerstorage=4" var/fail_tick = 0 charge_delay = 5 can_charge = 0 ammo_x_offset = 1 ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser, /obj/item/ammo_casing/energy/disabler) selfcharge = 1 - -/obj/item/weapon/gun/energy/gun/nuclear/process() - if(fail_tick > 0) - fail_tick-- - ..() - -/obj/item/weapon/gun/energy/gun/nuclear/shoot_live_shot() - failcheck() - update_icon() - ..() - -/obj/item/weapon/gun/energy/gun/nuclear/proc/failcheck() - if(!prob(reliability) && istype(loc, /mob/living)) - var/mob/living/M = loc - switch(fail_tick) - if(0 to 200) - fail_tick += (2*(100-reliability)) - M.apply_effect(rand(3,120), IRRADIATE) - to_chat(M, "Your [name] feels warmer.") - if(201 to INFINITY) - processing_objects.Remove(src) - M.apply_effect(300, IRRADIATE) - crit_fail = 1 - to_chat(M, "Your [name]'s reactor overloads!") - -/obj/item/weapon/gun/energy/gun/nuclear/emp_act(severity) - ..() - reliability = max(reliability - round(15/severity), 0) //Do not allow it to go negative! - -/obj/item/weapon/gun/energy/gun/nuclear/update_icon() - ..() - if(crit_fail) - overlays += "[icon_state]_fail_3" - else - switch(fail_tick) - if(0) - overlays += "[icon_state]_fail_0" - if(1 to 150) - overlays += "[icon_state]_fail_1" - if(151 to INFINITY) - overlays += "[icon_state]_fail_2" diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 456627398ce..7ded54f6690 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -3,7 +3,7 @@ desc = "A heavy-duty, multifaceted energy rifle with three modes. Preferred by front-line combat personnel." icon_state = "pulse" item_state = null - w_class = 4 + w_class = WEIGHT_CLASS_BULKY force = 10 flags = CONDUCT slot_flags = SLOT_BACK @@ -25,7 +25,7 @@ /obj/item/weapon/gun/energy/pulse/carbine name = "pulse carbine" desc = "A compact variant of the pulse rifle with less firepower but easier storage." - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL slot_flags = SLOT_BELT icon_state = "pulse_carbine" item_state = "pulse" @@ -37,7 +37,7 @@ /obj/item/weapon/gun/energy/pulse/pistol name = "pulse pistol" desc = "A pulse rifle in an easily concealed handgun package with low capacity." - w_class = 2 + w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_BELT icon_state = "pulse_pistol" item_state = "gun" @@ -77,9 +77,9 @@ icon_state = "turretlaser" item_state = "turretlaser" slot_flags = null - w_class = 5 + w_class = WEIGHT_CLASS_HUGE ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser/pulse) weapon_weight = WEAPON_MEDIUM can_flashlight = 0 trigger_guard = TRIGGER_GUARD_NONE - ammo_x_offset = 2 \ No newline at end of file + ammo_x_offset = 2 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 3595b9c7ea8..cde0361c810 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -4,8 +4,8 @@ icon_state = "ionrifle" item_state = null //so the human update icon uses the icon_state instead. fire_sound = 'sound/weapons/IonRifle.ogg' - origin_tech = "combat=2;magnets=4" - w_class = 5 + origin_tech = "combat=4;magnets=4" + w_class = WEIGHT_CLASS_HUGE flags = CONDUCT slot_flags = SLOT_BACK ammo_type = list(/obj/item/ammo_casing/energy/ion) @@ -20,8 +20,7 @@ name = "ion carbine" desc = "The MK.II Prototype Ion Projector is a lightweight carbine version of the larger ion rifle, built to be ergonomic and efficient." icon_state = "ioncarbine" - origin_tech = "combat=4;magnets=4;materials=4" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL slot_flags = SLOT_BELT ammo_x_offset = 2 flight_x_offset = 18 @@ -32,7 +31,7 @@ desc = "A gun that discharges high amounts of controlled radiation to slowly break a target into component elements." icon_state = "decloner" fire_sound = 'sound/weapons/pulse3.ogg' - origin_tech = "combat=5;materials=4;powerstorage=3" + origin_tech = "combat=4;materials=4;biotech=5;plasmatech=6" ammo_type = list(/obj/item/ammo_casing/energy/declone) ammo_x_offset = 1 @@ -49,7 +48,7 @@ item_state = "gun" fire_sound = 'sound/effects/stealthoff.ogg' ammo_type = list(/obj/item/ammo_casing/energy/flora/yield, /obj/item/ammo_casing/energy/flora/mut) - origin_tech = "materials=2;biotech=3;powerstorage=3" + origin_tech = "materials=2;biotech=4" modifystate = 1 ammo_x_offset = 1 selfcharge = 1 @@ -60,7 +59,7 @@ icon = 'icons/obj/guns/projectile.dmi' icon_state = "riotgun" item_state = "c20r" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY ammo_type = list(/obj/item/ammo_casing/energy/meteor) cell_type = /obj/item/weapon/stock_parts/cell/potato clumsy_check = 0 //Admin spawn only, might as well let clowns use it. @@ -74,7 +73,7 @@ item_state = "pen" lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' - w_class = 1 + w_class = WEIGHT_CLASS_TINY /obj/item/weapon/gun/energy/mindflayer name = "\improper Mind Flayer" @@ -89,9 +88,9 @@ desc = "A weapon favored by syndicate stealth specialists." icon_state = "crossbow" item_state = "crossbow" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=2000) - origin_tech = "combat=2;magnets=2;syndicate=5" + origin_tech = "combat=4;magnets=4;syndicate=5" suppressed = 1 ammo_type = list(/obj/item/ammo_casing/energy/bolt) weapon_weight = WEAPON_LIGHT @@ -111,9 +110,9 @@ name = "energy crossbow" desc = "A reverse engineered weapon using syndicate technology." icon_state = "crossbowlarge" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL materials = list(MAT_METAL=4000) - origin_tech = "combat=2;magnets=2;syndicate=3" //can be further researched for more syndie tech + origin_tech = "combat=4;magnets=4;syndicate=2" suppressed = 0 ammo_type = list(/obj/item/ammo_casing/energy/bolt/large) @@ -136,7 +135,7 @@ icon_state = "plasmacutter" item_state = "plasmacutter" modifystate = -1 - origin_tech = "combat=1;materials=3;magnets=2;plasmatech=2;engineering=1" + origin_tech = "combat=1;materials=3;magnets=2;plasmatech=3;engineering=1" ammo_type = list(/obj/item/ammo_casing/energy/plasma) fire_sound = 'sound/weapons/laser.ogg' usesound = 'sound/items/Welder.ogg' @@ -173,7 +172,7 @@ name = "advanced plasma cutter" icon_state = "adv_plasmacutter" modifystate = "adv_plasmacutter" - origin_tech = "combat=3;materials=4;magnets=3;plasmatech=3;engineering=2" + origin_tech = "combat=3;materials=4;magnets=3;plasmatech=4;engineering=2" ammo_type = list(/obj/item/ammo_casing/energy/plasma/adv) force = 15 @@ -183,6 +182,7 @@ ammo_type = list(/obj/item/ammo_casing/energy/wormhole, /obj/item/ammo_casing/energy/wormhole/orange) item_state = null icon_state = "wormhole_projector1" + origin_tech = "combat=4;bluespace=6;plasmatech=4;engineering=4" var/obj/effect/portal/blue var/obj/effect/portal/orange @@ -250,7 +250,7 @@ desc = "A specialized ASMD laser-rifle, capable of flat-out disintegrating most targets in a single hit." ammo_type = list(/obj/item/ammo_casing/energy/instakill) force = 60 - origin_tech = null + origin_tech = "combat=7;magnets=6" /obj/item/weapon/gun/energy/laser/instakill/emp_act() //implying you could stop the instagib return @@ -280,8 +280,9 @@ desc = "A specialized firearm designed to fire lethal bolts of toxins." icon_state = "toxgun" fire_sound = 'sound/effects/stealthoff.ogg' - w_class = 3 - origin_tech = "combat=4;plasmatech=3" + + w_class = WEIGHT_CLASS_NORMAL + origin_tech = "combat=4;magnets=4;powerstorage=3" ammo_type = list(/obj/item/ammo_casing/energy/toxplasma) shaded_charge = 1 @@ -292,7 +293,7 @@ origin_tech = "combat=6;materials=5;powerstorage=4" ammo_type = list(/obj/item/ammo_casing/energy/sniper) slot_flags = SLOT_BACK - w_class = 4 + w_class = WEIGHT_CLASS_BULKY zoomable = TRUE zoom_amt = 7 //Long range, enough to see in front of you, but no tiles behind you. shaded_charge = 1 @@ -303,12 +304,12 @@ icon_state = "tempgun_4" item_state = "tempgun_4" slot_flags = SLOT_BACK - w_class = 4 + w_class = WEIGHT_CLASS_BULKY fire_sound = 'sound/weapons/pulse3.ogg' desc = "A gun that changes the body temperature of its targets." var/temperature = 300 var/target_temperature = 300 - origin_tech = "combat=3;materials=4;powerstorage=3;magnets=2" + origin_tech = "combat=4;materials=4;powerstorage=3;magnets=2" ammo_type = list(/obj/item/ammo_casing/energy/temp) selfcharge = 1 diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index ea92cb06449..2113a2c1b81 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -3,6 +3,7 @@ desc = "A small, low capacity gun used for non-lethal takedowns." icon_state = "taser" item_state = null //so the human update icon uses the icon_state instead. + origin_tech = "combat=3" ammo_type = list(/obj/item/ammo_casing/energy/electrode) ammo_x_offset = 3 @@ -16,6 +17,7 @@ desc = "A high-tech revolver that fires internal, reusable shock cartridges in a revolving cylinder. The cartridges can be recharged using conventional rechargers." icon_state = "stunrevolver" item_state = "gun" + origin_tech = "combat=4;materials=4;powerstorage=4" ammo_type = list(/obj/item/ammo_casing/energy/shock_revolver) can_flashlight = 0 shaded_charge = 1 @@ -25,7 +27,7 @@ desc = "A dual-mode taser designed to fire both short-range high-power electrodes and long-range disabler beams." icon_state = "advtaser" ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/disabler) - origin_tech = null + origin_tech = "combat=4" ammo_x_offset = 2 /obj/item/weapon/gun/energy/gun/advtaser/cyborg @@ -43,6 +45,7 @@ desc = "A self-defense weapon that exhausts organic targets, weakening them until they collapse." icon_state = "disabler" item_state = null + origin_tech = "combat=3" ammo_type = list(/obj/item/ammo_casing/energy/disabler) ammo_x_offset = 3 diff --git a/code/modules/projectiles/guns/grenade_launcher.dm b/code/modules/projectiles/guns/grenade_launcher.dm index 5abac9ebad9..ad49c99bfc4 100644 --- a/code/modules/projectiles/guns/grenade_launcher.dm +++ b/code/modules/projectiles/guns/grenade_launcher.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/guns/projectile.dmi' icon_state = "riotgun" item_state = "riotgun" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY throw_speed = 2 throw_range = 10 force = 5 diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 860d52d2550..f26583bbe0d 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -7,7 +7,7 @@ fire_sound = 'sound/weapons/emitter.ogg' fire_sound_text = "energy blast" flags = CONDUCT - w_class = 5 + w_class = WEIGHT_CLASS_HUGE var/max_charges = 6 var/charges = 0 var/recharge_rate = 4 diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 20461c08acf..ac804ab9192 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -4,7 +4,7 @@ ammo_type = /obj/item/ammo_casing/magic icon_state = "nothingwand" item_state = "wand" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL can_charge = 0 max_charges = 100 //100, 50, 50, 34 (max charge distribution by 25%ths) var/variable_charges = 1 diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm index a556d4572a2..59a24533e80 100644 --- a/code/modules/projectiles/guns/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/chronos.dmi' icon_state = "chronogun" item_state = "chronogun" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL var/mob/living/current_target var/last_check = 0 diff --git a/code/modules/projectiles/guns/mounted.dm b/code/modules/projectiles/guns/mounted.dm index ae9c8f06d09..8fec6cd8b8e 100644 --- a/code/modules/projectiles/guns/mounted.dm +++ b/code/modules/projectiles/guns/mounted.dm @@ -4,7 +4,7 @@ icon_state = "armcannon" force = 5 flags = NODROP - w_class = 5 + w_class = WEIGHT_CLASS_HUGE can_flashlight = 0 selfcharge = 1 trigger_guard = TRIGGER_GUARD_ALLOW_ALL // Has no trigger at all, uses neural signals instead @@ -20,7 +20,7 @@ item_state = "armcannonlase" force = 5 flags = NODROP - w_class = 5 + w_class = WEIGHT_CLASS_HUGE materials = null selfcharge = 1 trigger_guard = TRIGGER_GUARD_ALLOW_ALL diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 961a7b91e05..7575e9b92f8 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -3,7 +3,7 @@ name = "projectile gun" icon_state = "pistol" origin_tech = "combat=2;materials=2" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL materials = list(MAT_METAL=1000) var/mag_type = /obj/item/ammo_box/magazine/m10mm //Removes the need for max_ammo and caliber info @@ -77,7 +77,7 @@ S.oldsound = fire_sound S.initial_w_class = w_class fire_sound = 'sound/weapons/Gunshot_silenced.ogg' - w_class = 3 //so pistols do not fit in pockets when suppressed + w_class = WEIGHT_CLASS_NORMAL //so pistols do not fit in pockets when suppressed A.loc = src update_icon() return @@ -169,7 +169,7 @@ user.visible_message("[user] shortens \the [src]!", "You shorten \the [src].") name = "sawn-off [name]" desc = sawn_desc - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL item_state = "gun"//phil235 is it different with different skin? slot_flags &= ~SLOT_BACK //you can't sling it on your back slot_flags |= SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) @@ -191,7 +191,7 @@ icon = 'icons/obj/guns/projectile.dmi' icon_state = "suppressor" item_state = "suppressor" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/oldsound = null var/initial_w_class = null diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 0b174c635b0..4b4ef8de12e 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -1,5 +1,5 @@ /obj/item/weapon/gun/projectile/automatic - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL var/alarmed = 0 var/select = 1 can_suppress = 1 @@ -83,7 +83,7 @@ desc = "A two-round burst .45 SMG, designated 'C-20r'. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp." icon_state = "c20r" item_state = "c20r" - origin_tech = "combat=5;materials=2;syndicate=8" + origin_tech = "combat=5;materials=2;syndicate=6" mag_type = /obj/item/ammo_box/magazine/smgm45 fire_sound = 'sound/weapons/Gunshot_smg.ogg' fire_delay = 2 @@ -120,7 +120,7 @@ name = "\improper 'Type U3' Uzi" desc = "A lightweight, burst-fire submachine gun, for when you really want someone dead. Uses 9mm rounds." icon_state = "mini-uzi" - origin_tech = "combat=5;materials=2;syndicate=8" + origin_tech = "combat=4;materials=2;syndicate=4" mag_type = /obj/item/ammo_box/magazine/uzim9mm burst_size = 2 @@ -129,7 +129,7 @@ desc = "A three-round burst 5.56 toploading carbine, designated 'M-90gl'. Has an attached underbarrel grenade launcher which can be toggled on and off." icon_state = "m90" item_state = "m90" - origin_tech = "combat=5;materials=2;syndicate=8" + origin_tech = "combat=5;materials=2;syndicate=6" mag_type = /obj/item/ammo_box/magazine/m556 fire_sound = 'sound/weapons/Gunshot_smg.ogg' can_suppress = 0 @@ -194,9 +194,9 @@ desc = "A genuine 'Chicago Typewriter'." icon_state = "tommygun" item_state = "shotgun" - w_class = 5 + w_class = WEIGHT_CLASS_HUGE slot_flags = 0 - origin_tech = "combat=5;materials=1;syndicate=2" + origin_tech = "combat=5;materials=1;syndicate=3" mag_type = /obj/item/ammo_box/magazine/tommygunm45 fire_sound = 'sound/weapons/Gunshot_smg.ogg' can_suppress = 0 @@ -209,7 +209,7 @@ icon_state = "arg" item_state = "arg" slot_flags = 0 - origin_tech = "combat=5;materials=1" + origin_tech = "combat=6;engineering=4" mag_type = /obj/item/ammo_box/magazine/m556 fire_sound = 'sound/weapons/Gunshot_smg.ogg' can_suppress = 0 @@ -222,8 +222,8 @@ desc = "A compact, mag-fed semi-automatic shotgun for combat in narrow corridors, nicknamed 'Bulldog' by boarding parties. Compatible only with specialized 8-round drum magazines." icon_state = "bulldog" item_state = "bulldog" - w_class = 3 - origin_tech = "combat=5;materials=4;syndicate=6" + w_class = WEIGHT_CLASS_NORMAL + origin_tech = "combat=6;materials=4;syndicate=6" mag_type = /obj/item/ammo_box/magazine/m12g fire_sound = 'sound/weapons/Gunshot4.ogg' can_suppress = 0 @@ -255,8 +255,8 @@ desc = "An experimental carbine. Uses encased laser projectors as ammunition."//we need to uncouple the toroidal resistance dejammers icon_state = "lasercarbine" item_state = "laser" - w_class = 3 - origin_tech = "combat=5;materials=5" + w_class = WEIGHT_CLASS_NORMAL + origin_tech = "combat=4;materials=2" mag_type = /obj/item/ammo_box/magazine/laser fire_sound = 'sound/weapons/emitter2.ogg' can_suppress = 0 diff --git a/code/modules/projectiles/guns/projectile/launchers.dm b/code/modules/projectiles/guns/projectile/launchers.dm index 462341fdc36..eaa1ab67e67 100644 --- a/code/modules/projectiles/guns/projectile/launchers.dm +++ b/code/modules/projectiles/guns/projectile/launchers.dm @@ -8,7 +8,7 @@ item_state = "gun" mag_type = /obj/item/ammo_box/magazine/internal/grenadelauncher fire_sound = 'sound/weapons/grenadelaunch.ogg' - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL /obj/item/weapon/gun/projectile/revolver/grenadelauncher/attackby(var/obj/item/A, mob/user, params) ..() @@ -35,7 +35,7 @@ desc = "A prototype pistol designed to fire self propelled rockets." icon_state = "gyropistol" fire_sound = 'sound/effects/Explosion1.ogg' - origin_tech = "combat=3" + origin_tech = "combat=5" mag_type = /obj/item/ammo_box/magazine/m75 burst_size = 1 fire_delay = 0 @@ -57,7 +57,8 @@ desc = "A weapon favored by carp hunters. Fires specialized spears using kinetic energy." icon_state = "speargun" item_state = "speargun" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY + origin_tech = "combat=4;engineering=4" force = 10 can_suppress = 0 mag_type = /obj/item/ammo_box/magazine/internal/speargun diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 5de627d7933..3876e067f70 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -2,8 +2,8 @@ name = "stechkin pistol" desc = "A small, easily concealable 10mm handgun. Has a threaded barrel for suppressors." icon_state = "pistol" - w_class = 2 - origin_tech = "combat=2;materials=2;syndicate=2" + w_class = WEIGHT_CLASS_SMALL + origin_tech = "combat=3;materials=2;syndicate=4" mag_type = /obj/item/ammo_box/magazine/m10mm can_suppress = 1 burst_size = 1 @@ -22,7 +22,7 @@ name = "\improper M1911" desc = "A classic .45 handgun with a small magazine capacity." icon_state = "m1911" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL mag_type = /obj/item/ammo_box/magazine/m45 can_suppress = 0 @@ -66,7 +66,7 @@ name = "stechkin APS pistol" desc = "The original russian version of a widely used Syndicate sidearm. Uses 9mm ammo." icon_state = "aps" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL origin_tech = "combat=3;materials=2;syndicate=3" mag_type = /obj/item/ammo_box/magazine/pistolm9mm can_suppress = 0 diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 80192a3091d..ef7a17fa28a 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -3,6 +3,7 @@ desc = "A suspicious revolver. Uses .357 ammo." icon_state = "revolver" mag_type = /obj/item/ammo_box/magazine/internal/cylinder + origin_tech = "combat=3;materials=2" /obj/item/weapon/gun/projectile/revolver/New() ..() @@ -88,7 +89,6 @@ desc = "A cheap Martian knock-off of a classic law enforcement firearm. Uses .38-special rounds." name = "\improper .38 Mars Special" icon_state = "detective" - origin_tech = "combat=2;materials=2" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev38 unique_rename = 1 unique_reskin = 1 @@ -146,7 +146,6 @@ name = "\improper Unica 6 auto-revolver" desc = "A retro high-powered autorevolver typically used by officers of the New Russia military. Uses .357 ammo." //>10mm hole >.357 icon_state = "mateba" - origin_tech = "combat=2;materials=2" /obj/item/weapon/gun/projectile/revolver/golden name = "\improper Golden revolver" @@ -258,7 +257,7 @@ /obj/item/weapon/gun/projectile/revolver/capgun name = "cap gun" desc = "Looks almost like the real thing! Ages 8 and up." - origin_tech = "combat=1;materials=1" + origin_tech = null mag_type = /obj/item/ammo_box/magazine/internal/cylinder/cap ///////////////////////////// @@ -270,11 +269,10 @@ desc = "A true classic." icon_state = "dshotgun" item_state = "shotgun" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY force = 10 flags = CONDUCT slot_flags = SLOT_BACK - origin_tech = "combat=3;materials=1" mag_type = /obj/item/ammo_box/magazine/internal/shot/dual sawn_desc = "Omar's coming!" unique_rename = 1 @@ -325,10 +323,9 @@ desc = "Essentially a tube that aims shotgun shells." icon_state = "ishotgun" item_state = "shotgun" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY force = 10 slot_flags = null - origin_tech = "combat=2;materials=2" mag_type = /obj/item/ammo_box/magazine/internal/shot/improvised sawn_desc = "I'm just here for the gasoline." unique_rename = 0 @@ -373,7 +370,7 @@ icon_state = "cane" item_state = "stick" sawn_state = SAWN_OFF - w_class = 2 + w_class = WEIGHT_CLASS_SMALL force = 10 can_unsuppress = 0 slot_flags = null diff --git a/code/modules/projectiles/guns/projectile/saw.dm b/code/modules/projectiles/guns/projectile/saw.dm index cfe8ffbb0a5..8b35ac805b4 100644 --- a/code/modules/projectiles/guns/projectile/saw.dm +++ b/code/modules/projectiles/guns/projectile/saw.dm @@ -3,9 +3,9 @@ desc = "A heavily modified 5.56 light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the receiver below the designation." icon_state = "l6closed100" item_state = "l6closedmag" - w_class = 5 + w_class = WEIGHT_CLASS_HUGE slot_flags = 0 - origin_tech = "combat=5;materials=1;syndicate=2" + origin_tech = "combat=6;engineering=3;syndicate=6" mag_type = /obj/item/ammo_box/magazine/mm556x45 weapon_weight = WEAPON_MEDIUM fire_sound = 'sound/weapons/Gunshot3.ogg' diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 35cde243c20..3ef496d3c0d 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -3,7 +3,7 @@ desc = "A traditional shotgun with wood furniture and a four-shell capacity underneath." icon_state = "shotgun" item_state = "shotgun" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY force = 10 flags = CONDUCT slot_flags = SLOT_BACK @@ -171,9 +171,9 @@ name = "combat shotgun" desc = "A semi automatic shotgun with tactical furniture and a six-shell capacity underneath." icon_state = "cshotgun" - origin_tech = "combat=5;materials=2" + origin_tech = "combat=6" mag_type = /obj/item/ammo_box/magazine/internal/shot/com - w_class = 5 + w_class = WEIGHT_CLASS_HUGE //Dual Feed Shotgun @@ -183,7 +183,7 @@ icon_state = "cycler" origin_tech = "combat=4;materials=2" mag_type = /obj/item/ammo_box/magazine/internal/shot/tube - w_class = 5 + w_class = WEIGHT_CLASS_HUGE var/toggled = 0 var/obj/item/ammo_box/magazine/internal/shot/alternate_magazine diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index bf26dad78b3..b0bcc0743e2 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -8,10 +8,10 @@ mag_type = /obj/item/ammo_box/magazine/sniper_rounds fire_delay = 40 burst_size = 1 - origin_tech = "combat=8" + origin_tech = "combat=7" can_unsuppress = 1 can_suppress = 1 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL zoomable = TRUE zoom_amt = 7 //Long range, enough to see in front of you, but no tiles behind you. slot_flags = SLOT_BACK @@ -26,7 +26,7 @@ /obj/item/weapon/gun/projectile/automatic/sniper_rifle/syndicate name = "syndicate sniper rifle" desc = "Syndicate flavoured sniper rifle, it packs quite a punch, a punch to your face" - origin_tech = "combat=8;syndicate=4" + origin_tech = "combat=7;syndicate=6" //Normal Boolets /obj/item/ammo_box/magazine/sniper_rounds @@ -101,7 +101,6 @@ name = "sniper rounds (Bleed)" desc = "Haemorrhage sniper rounds, leaves your target in a pool of crimson pain" icon_state = "haemorrhage" - origin_tech = "combat=7;syndicate=5" ammo_type = /obj/item/ammo_casing/haemorrhage max_ammo = 5 @@ -131,6 +130,7 @@ name = "sniper rounds (penetrator)" desc = "An extremely powerful round capable of passing straight through cover and anyone unfortunate enough to be behind it." ammo_type = /obj/item/ammo_casing/penetrator + origin_tech = "combat=6;syndicate=3" max_ammo = 5 /obj/item/ammo_casing/penetrator diff --git a/code/modules/projectiles/guns/projectile/toy.dm b/code/modules/projectiles/guns/projectile/toy.dm index 809647e4186..8a191f06b97 100644 --- a/code/modules/projectiles/guns/projectile/toy.dm +++ b/code/modules/projectiles/guns/projectile/toy.dm @@ -20,7 +20,7 @@ name = "foam force pistol" desc = "A small, easily concealable toy handgun. Ages 8 and up." icon_state = "pistol" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL mag_type = /obj/item/ammo_box/magazine/toy/pistol fire_sound = 'sound/weapons/Gunshot.ogg' can_suppress = 0 @@ -65,7 +65,7 @@ mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/crossbow fire_sound = 'sound/items/syringeproj.ogg' slot_flags = SLOT_BELT - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/weapon/gun/projectile/automatic/c20r/toy name = "donksoft SMG" @@ -96,4 +96,4 @@ icon_state = "tommygun" item_state = "shotgun" mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/tommygun - w_class = 2 + w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/projectiles/guns/rocket.dm b/code/modules/projectiles/guns/rocket.dm index f9a8d00bdb1..0b1f2b2c94d 100644 --- a/code/modules/projectiles/guns/rocket.dm +++ b/code/modules/projectiles/guns/rocket.dm @@ -4,12 +4,12 @@ desc = "Say hello to my little friend" icon_state = "rocket" item_state = "rocket" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY throw_speed = 2 throw_range = 10 force = 5.0 flags = CONDUCT - origin_tech = "combat=8;materials=5" + origin_tech = "combat=6" var/missile_speed = 2 var/missile_range = 30 var/max_rockets = 1 diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm index 332d279376b..65440fa9e49 100644 --- a/code/modules/projectiles/guns/syringe_gun.dm +++ b/code/modules/projectiles/guns/syringe_gun.dm @@ -3,7 +3,8 @@ desc = "A spring loaded rifle designed to fit syringes, used to incapacitate unruly patients from a distance." icon_state = "syringegun" item_state = "syringegun" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL + origin_tech = "combat=2;biotech=3" throw_speed = 3 throw_range = 7 force = 4 @@ -88,8 +89,8 @@ desc = "A small spring-loaded sidearm that functions identically to a syringe gun." icon_state = "syringe_pistol" item_state = "gun" //Smaller inhand - w_class = 2 - origin_tech = "combat=2;syndicate=2" + w_class = WEIGHT_CLASS_SMALL + origin_tech = "combat=2;syndicate=2;biotech=3" force = 2 //Also very weak because it's smaller suppressed = 1 //Softer fire sound can_unsuppress = 0 //Permanently silenced diff --git a/code/modules/projectiles/guns/throw/crossbow.dm b/code/modules/projectiles/guns/throw/crossbow.dm index 11d39bf2a38..77d3e89eade 100644 --- a/code/modules/projectiles/guns/throw/crossbow.dm +++ b/code/modules/projectiles/guns/throw/crossbow.dm @@ -153,7 +153,7 @@ icon_state = "bolt" item_state = "bolt" throwforce = 20 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL sharp = 1 edge = 0 diff --git a/code/modules/projectiles/guns/throw/pielauncher.dm b/code/modules/projectiles/guns/throw/pielauncher.dm index f6405f47194..3af48788134 100644 --- a/code/modules/projectiles/guns/throw/pielauncher.dm +++ b/code/modules/projectiles/guns/throw/pielauncher.dm @@ -2,7 +2,7 @@ name = "pie cannon" desc = "A projectile weapon that fires pies." icon_state = "piecannon" - w_class = 5 + w_class = WEIGHT_CLASS_HUGE throw_speed = 2 throw_range = 3 force = 5 diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 6cddc1c1b91..01dcbd5228d 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -130,7 +130,7 @@ /obj/item/projectile/beam/instakill/on_hit(atom/target) . = ..() - if(iscarbon(target)) - var/mob/living/carbon/M = target - M.visible_message("[M] explodes into a shower of gibs!") - M.gib() + if(isliving(target)) + var/mob/living/L = target + L.visible_message("[L] explodes!") + L.gib() \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index c441ab97805..009828543ce 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -3,7 +3,7 @@ desc = "..." icon = 'icons/obj/chemical.dmi' icon_state = null - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/amount_per_transfer_from_this = 5 var/possible_transfer_amounts = list(5,10,15,25,30) var/volume = 30 diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm index b170f6b0867..f60efa3b784 100644 --- a/code/modules/reagents/reagent_containers/glass_containers.dm +++ b/code/modules/reagents/reagent_containers/glass_containers.dm @@ -289,9 +289,10 @@ name = "cryostasis beaker" desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units." icon_state = "beakernoreact" - materials = list(MAT_GLASS=500) + materials = list(MAT_METAL=3000) volume = 50 amount_per_transfer_from_this = 10 + origin_tech = "materials=2;engineering=3;plasmatech=3" flags = OPENCONTAINER /obj/item/weapon/reagent_containers/glass/beaker/noreact/New() @@ -302,12 +303,12 @@ 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" - materials = list(MAT_GLASS=5000) + materials = list(MAT_GLASS=3000) volume = 300 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25,30,50,100,300) flags = OPENCONTAINER - + origin_tech = "bluespace=5;materials=4;plasmatech=4" /obj/item/weapon/reagent_containers/glass/beaker/cryoxadone list_reagents = list("cryoxadone" = 30) @@ -330,7 +331,7 @@ icon_state = "bucket" item_state = "bucket" materials = list(MAT_METAL=200) - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL amount_per_transfer_from_this = 20 possible_transfer_amounts = list(5,10,15,20,25,30,50,80,100,120) volume = 120 @@ -353,4 +354,4 @@ user.unEquip(src) qdel(src) else - ..() \ No newline at end of file + ..() diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index cc4bf75ea45..8674ba75a09 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -7,7 +7,7 @@ flags = OPENCONTAINER | NOBLUDGEON slot_flags = SLOT_BELT throwforce = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 7 var/spray_maxrange = 3 //what the sprayer will set spray_currentrange to in the attack_self. @@ -145,7 +145,7 @@ icon_state = "chemsprayer" item_state = "chemsprayer" throwforce = 0 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL spray_maxrange = 7 spray_currentrange = 7 amount_per_transfer_from_this = 10 @@ -204,4 +204,4 @@ icon_state = "plantbgone" item_state = "plantbgone" volume = 100 - list_reagents = list("glyphosate" = 100) \ No newline at end of file + list_reagents = list("glyphosate" = 100) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 0f2b766bb3c..ebb13f0830c 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -14,7 +14,7 @@ amount_per_transfer_from_this = 5 possible_transfer_amounts = null //list(5,10,15) volume = 15 - w_class = 1 + w_class = WEIGHT_CLASS_TINY sharp = 1 var/mode = SYRINGE_DRAW var/projectile_type = /obj/item/projectile/bullet/dart/syringe @@ -398,4 +398,4 @@ /obj/item/weapon/reagent_containers/syringe/bioterror name = "bioterror syringe" desc = "Contains several paralyzing reagents." - list_reagents = list("neurotoxin" = 5, "capulettium_plus" = 5, "sodium_thiopental" = 5) \ No newline at end of file + list_reagents = list("neurotoxin" = 5, "capulettium_plus" = 5, "sodium_thiopental" = 5) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 209edb809b2..8896d939e2f 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -334,7 +334,7 @@ icon_state = "conveyor0" name = "conveyor belt assembly" desc = "A conveyor belt assembly." - w_class = 4 + w_class = WEIGHT_CLASS_BULKY var/id = "" //inherited by the belt /obj/item/conveyor_construct/attackby(obj/item/I, mob/user, params) @@ -361,7 +361,7 @@ desc = "A conveyor control switch assembly." icon = 'icons/obj/recycling.dmi' icon_state = "switch-off" - w_class = 4 + w_class = WEIGHT_CLASS_BULKY var/id = "" //inherited by the switch /obj/item/conveyor_switch_construct/New() diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index a8d3902e6f3..52db1f8d30c 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -216,7 +216,7 @@ //The whole system for the sorttype var is determined based on the order of this list, //disposals must always be 1, since anything that's untagged will automatically go to disposals, or sorttype = 1 --Superxpdude - w_class = 1 + w_class = WEIGHT_CLASS_TINY item_state = "electronic" flags = CONDUCT slot_flags = SLOT_BELT @@ -430,4 +430,4 @@ /obj/item/shippingPackage/Destroy() QDEL_NULL(wrapped) - return ..() \ No newline at end of file + return ..() diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 9e411abaee3..25a9862b6b1 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -103,8 +103,6 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). for(var/obj/I in component_parts) if(istype(I, /obj/item/weapon/reagent_containers/glass/beaker)) reagents.trans_to(I, reagents.total_volume) - if(I.reliability != 100 && crit_fail) - I.crit_fail = 1 I.loc = src.loc for(var/obj/item/weapon/reagent_containers/glass/G in component_parts) reagents.trans_to(G, G.reagents.maximum_volume) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 26f9413bc5f..a3ea37c2d30 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -2,7 +2,7 @@ /*************************************************************** ** Design Datums ** -** All the data for building stuff and tracking reliability. ** +** All the data for building stuff. ** ***************************************************************/ /* For the materials datum, it assumes you need reagents unless specified otherwise. To designate a material that isn't a reagent, @@ -23,9 +23,6 @@ The currently supporting non-reagent materials: 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 (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. - A single sheet of anything is 2000 units of material. Materials besides metal/glass require help from other jobs (mining for other types of metals and chemistry for reagents). @@ -39,7 +36,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 = 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. var/construction_time //Amount of time required for building the object @@ -51,14 +47,3 @@ other types of metals and chemistry for reagents). var/list/reagents = list() //List of reagents. Format: "id" = amount. var/maxstack = 1 var/lathe_time_factor = 1 //How many times faster than normal is this to build on the protolathe - -//A proc to calculate the reliability of a design based on tech levels and innate modifiers. -//Input: A list of /datum/tech; Output: The new reliabilty. -/datum/design/proc/CalcReliability(var/list/temp_techs) - var/new_reliability - for(var/datum/tech/T in temp_techs) - if(T.id in req_tech) - new_reliability += T.level - new_reliability = Clamp(new_reliability, reliability, 100) - reliability = new_reliability - return diff --git a/code/modules/research/designs/AI_module_designs.dm b/code/modules/research/designs/AI_module_designs.dm index 01de6f63848..018c0bb837a 100644 --- a/code/modules/research/designs/AI_module_designs.dm +++ b/code/modules/research/designs/AI_module_designs.dm @@ -6,7 +6,7 @@ name = "AI Module (Freeform)" desc = "Allows for the construction of a Freeform AI Module." id = "freeform_module" - req_tech = list("programming" = 4, "materials" = 4) + req_tech = list("programming" = 5, "materials" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100) build_path = /obj/item/weapon/aiModule/freeform @@ -16,7 +16,7 @@ name = "AI Module (oneCrewMember)" desc = "Allows for the construction of a oneCrewMember AI Module." id = "onecrewmember_module" - req_tech = list("programming" = 4, "materials" = 6) + req_tech = list("programming" = 6, "materials" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/oneCrewMember @@ -26,7 +26,7 @@ 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) + req_tech = list("programming" = 4, "biotech" = 2, "materials" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100) build_path = /obj/item/weapon/aiModule/oxygen @@ -36,7 +36,7 @@ name = "AI Module (ProtectStation)" desc = "Allows for the construction of a ProtectStation AI Module." id = "protectstation_module" - req_tech = list("programming" = 3, "materials" = 6) + req_tech = list("programming" = 5, "materials" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100) build_path = /obj/item/weapon/aiModule/protectStation @@ -46,7 +46,7 @@ name = "AI Module (Purge)" desc = "Allows for the construction of a Purge AI Module." id = "purge_module" - req_tech = list("programming" = 4, "materials" = 6) + req_tech = list("programming" = 5, "materials" = 6) build_type = IMPRINTER materials = list(MAT_GLASS = 2000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/purge @@ -66,7 +66,7 @@ name = "AI Module (Reset)" desc = "Allows for the construction of a Reset AI Module." id = "reset_module" - req_tech = list("programming" = 3, "materials" = 6) + req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100) build_path = /obj/item/weapon/aiModule/reset @@ -76,7 +76,7 @@ name = "AI Module (Safeguard)" desc = "Allows for the construction of a Safeguard AI Module." id = "safeguard_module" - req_tech = list("programming" = 3, "materials" = 4) + req_tech = list("programming" = 3, "materials" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100) build_path = /obj/item/weapon/aiModule/safeguard @@ -86,7 +86,7 @@ name = "Core AI Module (Antimov)" desc = "Allows for the construction of a Antimov AI Core Module." id = "antimov_module" - req_tech = list("programming" = 4, "materials" = 6, "syndicate" = 2) + req_tech = list("programming" = 5, "syndicate" = 2, "materials" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/antimov @@ -96,7 +96,7 @@ 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) + req_tech = list("programming" = 3, "materials" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/asimov @@ -106,7 +106,7 @@ 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) + req_tech = list("programming" = 5, "materials" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/corp @@ -116,7 +116,7 @@ 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) + req_tech = list("programming" = 3, "materials" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/crewsimov @@ -126,7 +126,7 @@ 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) + req_tech = list("programming" = 6, "materials" = 6) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/freeformcore @@ -136,7 +136,7 @@ name = "Core AI Module (P.A.L.A.D.I.N.)" desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module." id = "paladin_module" - req_tech = list("programming" = 4, "materials" = 6) + req_tech = list("programming" = 5, "materials" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/paladin @@ -146,7 +146,7 @@ name = "Core AI Module (T.Y.R.A.N.T.)" desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module." id = "tyrant_module" - req_tech = list("programming" = 4, "syndicate" = 2, "materials" = 6) + req_tech = list("programming" = 5, "syndicate" = 2, "materials" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100) build_path = /obj/item/weapon/aiModule/tyrant diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 29370cbc04b..99d4fa8fe22 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -852,7 +852,6 @@ name = "Machine Board (Vendor)" desc = "The circuit board for a Vendor." id = "vendor" - req_tech = list("programming" = 1) build_type = AUTOLATHE materials = list(MAT_GLASS = 750, MAT_METAL = 250) build_path = /obj/item/weapon/circuitboard/vendor diff --git a/code/modules/research/designs/bluespace_designs.dm b/code/modules/research/designs/bluespace_designs.dm index e15fe544f1a..ed42ac98780 100644 --- a/code/modules/research/designs/bluespace_designs.dm +++ b/code/modules/research/designs/bluespace_designs.dm @@ -5,10 +5,9 @@ name = "Artificial Bluespace Crystal" desc = "A small blue crystal with mystical properties." id = "bluespace_crystal" - req_tech = list("bluespace" = 4, "materials" = 6) + req_tech = list("bluespace" = 3, "materials" = 6, "plasmatech" = 4) build_type = PROTOLATHE materials = list(MAT_DIAMOND = 1500, MAT_PLASMA = 1500) - reliability = 100 build_path = /obj/item/weapon/ore/bluespace_crystal/artificial category = list("Bluespace") @@ -16,10 +15,9 @@ 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) + req_tech = list("bluespace" = 7, "materials" = 5, "engineering" = 5, "plasmatech" = 6) build_type = PROTOLATHE materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250) - reliability = 80 build_path = /obj/item/weapon/storage/backpack/holding category = list("Bluespace") @@ -27,29 +25,17 @@ 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) + req_tech = list("bluespace" = 7, "materials" = 5, "engineering" = 5, "plasmatech" = 6) build_type = PROTOLATHE 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(MAT_METAL = 3000, MAT_PLASMA = 3000, MAT_DIAMOND = 500) - reliability = 76 - build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace - category = list("Medical") - /datum/design/telesci_gps name = "GPS Device" desc = "A device that can track its position at all times." id = "telesci_Gps" - req_tech = list("materials" = 2, "magnets" = 3, "bluespace" = 3) + req_tech = list("materials" = 2, "bluespace" = 2) build_type = PROTOLATHE materials = list(MAT_METAL = 500, MAT_GLASS = 1000) build_path = /obj/item/device/gps @@ -59,10 +45,9 @@ 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) + req_tech = list("bluespace" = 4, "materials" = 3, "engineering" = 4) build_type = PROTOLATHE 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") @@ -70,7 +55,7 @@ name = "Telepad Beacon" desc = "Use to warp in a cargo telepad." id = "telepad_beacon" - req_tech = list("bluespace" = 3, "materials" = 4) + req_tech = list("programming" = 5, "bluespace" = 4, "engineering" = 4, "plasmatech" = 4) build_type = PROTOLATHE materials = list (MAT_METAL = 2000, MAT_GLASS = 1750, MAT_SILVER = 500) build_path = /obj/item/device/telepad_beacon @@ -82,6 +67,6 @@ id = "beacon" req_tech = list("bluespace" = 1) build_type = PROTOLATHE - materials = list (MAT_METAL = 20, MAT_GLASS = 10) + materials = list (MAT_METAL = 150, MAT_GLASS = 100) build_path = /obj/item/device/radio/beacon - category = list("Bluespace") \ No newline at end of file + category = list("Bluespace") diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index 6d3624701b9..961dfd51710 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -6,7 +6,7 @@ name = "Console Board (AI Core)" desc = "Allows for the construction of circuit boards used to build new AI cores." id = "aicore" - req_tech = list("programming" = 4, "biotech" = 3) + req_tech = list("programming" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/aicore @@ -16,7 +16,7 @@ name = "Console Board (AI Integrity Restorer)" desc = "Allows for the construction of circuit boards used to build an AI Integrity Restorer." id = "aifixer" - req_tech = list("programming" = 3, "biotech" = 2) + req_tech = list("programming" = 4, "magnets" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/aifixer @@ -26,7 +26,7 @@ name = "Console Board (AI Upload)" desc = "Allows for the construction of circuit boards used to build an AI Upload Console." id = "aiupload" - req_tech = list("programming" = 4) + req_tech = list("programming" = 5, "engineering" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/aiupload @@ -56,7 +56,7 @@ name = "Console Board (Camera Monitor)" desc = "Allows for the construction of circuit boards used to build camera monitors." id = "seccamera" - req_tech = list("programming" = 2) + req_tech = list("programming" = 2, "combat" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/camera @@ -66,7 +66,7 @@ name = "Console Board (Cloning Machine Console)" desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console." id = "clonecontrol" - req_tech = list("programming" = 3, "biotech" = 3) + req_tech = list("programming" = 4, "biotech" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/cloning @@ -76,7 +76,7 @@ name = "Console Board (Communications Console)" desc = "Allows for the construction of circuit boards used to build a communications console." id = "comconsole" - req_tech = list("programming" = 2, "magnets" = 2) + req_tech = list("programming" = 3, "magnets" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/communications @@ -96,7 +96,7 @@ name = "Console Board (Cyborg Upload)" desc = "Allows for the construction of circuit boards used to build a Cyborg Upload Console." id = "borgupload" - req_tech = list("programming" = 4) + req_tech = list("programming" = 5, "engineering" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/borgupload @@ -106,7 +106,7 @@ name = "Console Board (DNA Machine)" desc = "Allows for the construction of circuit boards used to build a new DNA scanning console." id = "scan_console" - req_tech = list("programming" = 2, "biotech" = 3) + req_tech = list("programming" = 2, "biotech" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/scan_consolenew @@ -136,7 +136,7 @@ name = "Console Board (ID Computer)" desc = "Allows for the construction of circuit boards used to build an ID computer." id = "idcardconsole" - req_tech = list("programming" = 2) + req_tech = list("programming" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/card @@ -146,7 +146,7 @@ name = "Console Board (Mech Bay Power Control Console)" desc = "Allows for the construction of circuit boards used to build a mech bay power control console." id = "mechapower" - req_tech = list("programming" = 2, "powerstorage" = 3) + req_tech = list("programming" = 3, "powerstorage" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mech_bay_power_console @@ -156,7 +156,7 @@ name = "Console Board (Medical Records)" desc = "Allows for the construction of circuit boards used to build a medical records console." id = "med_data" - req_tech = list("programming" = 2) + req_tech = list("programming" = 2, "biotech" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/med_data @@ -176,7 +176,7 @@ name = "Console Board (Operating Computer)" desc = "Allows for the construction of circuit boards used to build an operating computer console." id = "operating" - req_tech = list("programming" = 2, "biotech" = 2) + req_tech = list("programming" = 2, "biotech" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/operating @@ -186,7 +186,7 @@ name = "Computer Design (PanD.E.M.I.C. 2200)" desc = "Allows for the construction of circuit boards used to build a PanD.E.M.I.C. 2200 console." id = "pandemic" - req_tech = list("programming" = 2, "biotech" = 2) + req_tech = list("programming" = 3, "biotech" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/pandemic @@ -196,7 +196,7 @@ name = "Console Board (Power Monitor)" desc = "Allows for the construction of circuit boards used to build a new power monitor" id = "powermonitor" - req_tech = list("programming" = 2) + req_tech = list("programming" = 2, "powerstorage" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/powermonitor @@ -246,7 +246,7 @@ name = "Console Board (Security Records Console)" desc = "Allows for the construction of circuit boards used to build a security records console." id = "secdata" - req_tech = list("programming" = 2) + req_tech = list("programming" = 2, "combat" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/secure_data @@ -266,7 +266,7 @@ name = "Console Board (Spacepod Locator)" desc = "Allows for the construction of circuit boards used to build a space-pod locating console" id = "spacepodc" - req_tech = list("programming" = 2) + req_tech = list("programming" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/pod_locater @@ -296,7 +296,7 @@ name = "Console Board (Telecommunications Monitoring Console)" desc = "Allows for the construction of circuit boards used to build a telecommunications monitor." id = "comm_monitor" - req_tech = list("programming" = 3) + req_tech = list("programming" = 3, "magnets" = 3, "bluespace" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/comm_monitor @@ -306,7 +306,7 @@ name = "Console Board (Telecommunications Server Monitoring Console)" desc = "Allows for the construction of circuit boards used to build a telecommunication server browser and monitor." id = "comm_server" - req_tech = list("programming" = 3) + req_tech = list("programming" = 3, "magnets" = 3, "bluespace" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/comm_server @@ -316,7 +316,7 @@ name = "Console Board (Telecommunications Traffic Control Console)" desc = "Allows for the construction of circuit boards used to build a telecommunications traffic control console." id = "comm_traffic" - req_tech = list("programming" = 3) + req_tech = list("programming" = 3, "magnets" = 3, "bluespace" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/comm_traffic @@ -326,7 +326,7 @@ name = "Console Board (Telepad Control Console)" desc = "Allows for the construction of circuit boards used to build a telescience console." id = "telesci_console" - req_tech = list("programming" = 3, "bluespace" = 2) + req_tech = list("programming" = 3, "bluespace" = 3, "plasmatech" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telesci_console @@ -336,7 +336,7 @@ name = "Console Board (Teleporter Console)" desc = "Allows for the construction of circuit boards used to build a teleporter control console." id = "teleconsole" - req_tech = list("programming" = 3, "bluespace" = 2) + req_tech = list("programming" = 3, "bluespace" = 3, "plasmatech" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/teleporter diff --git a/code/modules/research/designs/computer_part_designs.dm b/code/modules/research/designs/computer_part_designs.dm index 278adb3cf25..5108cdfeaee 100644 --- a/code/modules/research/designs/computer_part_designs.dm +++ b/code/modules/research/designs/computer_part_designs.dm @@ -63,7 +63,7 @@ id = "netcard_basic" req_tech = list("programming" = 2, "engineering" = 1) build_type = IMPRINTER - materials = list(MAT_GLASS = 100, "sacid" = 20) + materials = list(MAT_METAL = 250, MAT_GLASS = 100, "sacid" = 20) build_path = /obj/item/weapon/computer_hardware/network_card category = list("Computer Parts") @@ -72,7 +72,7 @@ id = "netcard_advanced" req_tech = list("programming" = 4, "engineering" = 2) build_type = IMPRINTER - materials = list(MAT_GLASS = 200, "sacid" = 20) + materials = list(MAT_METAL = 500, MAT_GLASS = 200, "sacid" = 20) build_path = /obj/item/weapon/computer_hardware/network_card/advanced category = list("Computer Parts") @@ -81,7 +81,7 @@ id = "netcard_wired" req_tech = list("programming" = 5, "engineering" = 3) build_type = IMPRINTER - materials = list(MAT_GLASS = 400, "sacid" = 20) + materials = list(MAT_METAL = 2500, MAT_GLASS = 400, "sacid" = 20) build_path = /obj/item/weapon/computer_hardware/network_card/wired category = list("Computer Parts") diff --git a/code/modules/research/designs/equipment_designs.dm b/code/modules/research/designs/equipment_designs.dm index 9792f007c55..a3e9b82b722 100644 --- a/code/modules/research/designs/equipment_designs.dm +++ b/code/modules/research/designs/equipment_designs.dm @@ -5,7 +5,7 @@ name = "Experimental Welding Tool" desc = "An experimental welder capable of self-fuel generation." id = "exwelder" - req_tech = list("materials" = 4, "engineering" = 4, "bluespace" = 3, "plasmatech" = 3) + req_tech = list("materials" = 4, "engineering" = 5, "bluespace" = 3, "plasmatech" = 4) build_type = PROTOLATHE materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_PLASMA = 1500, MAT_URANIUM = 200) build_path = /obj/item/weapon/weldingtool/experimental @@ -17,7 +17,7 @@ id = "health_hud" req_tech = list("biotech" = 2, "magnets" = 3) build_type = PROTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 50) + materials = list(MAT_METAL = 500, MAT_GLASS = 500) build_path = /obj/item/clothing/glasses/hud/health category = list("Equipment") @@ -25,9 +25,9 @@ name = "Night Vision Health Scanner HUD" desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness." id = "health_hud_night" - req_tech = list("biotech" = 4, "magnets" = 5) + req_tech = list("biotech" = 4, "magnets" = 5, "plasmatech" = 4, "engineering" = 6) build_type = PROTOLATHE - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_URANIUM = 1000, MAT_SILVER = 250) + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_SILVER = 350) build_path = /obj/item/clothing/glasses/hud/health/night category = list("Equipment") @@ -45,9 +45,9 @@ name = "Night Vision Goggles" desc = "Goggles that let you see through darkness unhindered." id = "night_vision_goggles" - req_tech = list("magnets" = 4) + req_tech = list("materials" = 4, "magnets" = 5, "plasmatech" = 4, "engineering" = 5) build_type = PROTOLATHE - materials = list(MAT_METAL = 100, MAT_GLASS = 100, MAT_URANIUM = 1000) + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000) build_path = /obj/item/clothing/glasses/night category = list("Equipment") @@ -57,7 +57,7 @@ id = "security_hud" req_tech = list("magnets" = 3, "combat" = 2) build_type = PROTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 50) + materials = list(MAT_METAL = 500, MAT_GLASS = 500) build_path = /obj/item/clothing/glasses/hud/security category = list("Equipment") @@ -65,9 +65,9 @@ name = "Night Vision Security HUD" desc = "A heads-up display which provides id data and vision in complete darkness." id = "security_hud_night" - req_tech = list("magnets" = 5, "combat" = 4) + req_tech = list("combat" = 4, "magnets" = 5, "plasmatech" = 4, "engineering" = 6) build_type = PROTOLATHE - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_URANIUM = 1000, MAT_GOLD = 350) + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_GOLD = 350) build_path = /obj/item/clothing/glasses/hud/security/night category = list("Equipment") @@ -75,9 +75,9 @@ name = "Optical Meson Scanners" desc = "Used for seeing walls, floors, and stuff through anything." id = "mesons" - req_tech = list("materials" = 3, "magnets" = 3, "engineering" = 3) + req_tech = list("magnets" = 2, "engineering" = 2, "plasmatech" = 2) build_type = PROTOLATHE - materials = list(MAT_METAL = 200, MAT_GLASS = 300, MAT_PLASMA = 100) + materials = list(MAT_METAL = 500, MAT_GLASS = 500) build_path = /obj/item/clothing/glasses/meson category = list("Equipment") @@ -85,9 +85,9 @@ name = "Night Vision Optical Meson Scanners" desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display." id = "nvgmesons" - req_tech = list("materials" = 5, "magnets" = 5, "engineering" = 4) + req_tech = list("magnets" = 5, "plasmatech" = 5, "engineering" = 6) build_type = PROTOLATHE - materials = list(MAT_METAL = 300, MAT_GLASS = 400, MAT_PLASMA = 250, MAT_URANIUM = 1000) + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000) build_path = /obj/item/clothing/glasses/meson/night category = list("Equipment") @@ -95,7 +95,7 @@ name = "Air Horn" desc = "Damn son, where'd you find this?" id = "air_horn" - req_tech = list("materials" = 2, "engineering" = 2) + req_tech = list("materials" = 4, "engineering" = 4) build_type = PROTOLATHE materials = list(MAT_METAL = 4000, MAT_BANANIUM = 1000) build_path = /obj/item/weapon/bikehorn/airhorn @@ -105,9 +105,9 @@ name = "Welding Gas Mask" desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd." id = "weldingmask" - req_tech = list("materials" = 2, "engineering" = 2) + req_tech = list("materials" = 2, "engineering" = 3) build_type = PROTOLATHE - materials = list(MAT_METAL = 4000, MAT_GLASS = 1000) + materials = list(MAT_METAL = 3000, MAT_GLASS = 1000) build_path = /obj/item/clothing/mask/gas/welding category = list("Equipment") @@ -115,37 +115,26 @@ name = "Portable Seed Extractor" desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant." build_type = PROTOLATHE - req_tech = list("biotech" = 2, "materials" = 2) - materials = list(MAT_METAL = 200, MAT_GLASS = 100) + req_tech = list("biotech" = 3, "engineering" = 2) + materials = list(MAT_METAL = 1000, MAT_GLASS = 400) build_path = /obj/item/weapon/storage/bag/plants/portaseeder category = list("Equipment") -/datum/design/detective_scanner - name = "Forensic Scanner" - desc = "A high tech scanner designed for forensic evidence collection, DNA recovery, and fiber analysis." - id = "detectivescanner" - req_tech = list("biotech" = 2, "magnets" = 4) - build_type = PROTOLATHE - materials = list(MAT_METAL = 6000, MAT_GLASS = 2000) - build_path = /obj/item/device/detective_scanner - locked = 1 //no validhunting scientists. - category = list("Equipment") - /datum/design/sci_goggles name = "Science Goggles" desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine." id = "scigoggles" - req_tech = list("materials" = 3, "magnets" = 3, "engineering" = 2) + req_tech = list("magnets" = 2) build_type = PROTOLATHE - materials = list(MAT_METAL = 250, MAT_GLASS = 300) + materials = list(MAT_METAL = 500, MAT_GLASS = 500) build_path = /obj/item/clothing/glasses/science category = list("Equipment") /datum/design/nv_sci_goggles name = "Night Vision Science Goggles" - desc = "Like Science google, but works in darkness." + desc = "Like Science Goggles, but works in darkness." id = "nvscigoggles" - req_tech = list("materials" = 5, "magnets" = 5, "engineering" = 4) + req_tech = list("magnets" = 5, "plasmatech" = 4, "engineering" = 6) build_type = PROTOLATHE materials = list(MAT_METAL = 250, MAT_GLASS = 300, MAT_PLASMA = 250, MAT_URANIUM = 1000) build_path = /obj/item/clothing/glasses/science/night @@ -155,9 +144,9 @@ name = "Diagnostic HUD" desc = "A HUD used to analyze and determine faults within robotic machinery." id = "dianostic_hud" - req_tech = list("magnets" = 3, "engineering" = 3, "materials" = 2) + req_tech = list("magnets" = 3, "engineering" = 2) build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) + materials = list(MAT_METAL = 500, MAT_GLASS = 500) build_path = /obj/item/clothing/glasses/hud/diagnostic category = list("Equipment") @@ -165,9 +154,9 @@ name = "Night Vision Diagnostic HUD" desc = "Upgraded version of the diagnostic HUD designed to function during a power failure." id = "dianostic_hud_night" - req_tech = list("magnets" = 5, "engineering" = 4, "materials" = 4) + req_tech = list("magnets" = 5, "plasmatech" = 4, "engineering" = 6, "powerstorage" = 4) build_type = PROTOLATHE - materials = list("$metal" = 200, "$glass" = 200, "$uranium" = 1000, "$plasma" = 300) + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_PLASMA = 300) build_path = /obj/item/clothing/glasses/hud/diagnostic/night category = list("Equipment") @@ -177,7 +166,7 @@ id = "hydroponic_hud" req_tech = list("magnets" = 3, "biotech" = 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/hydroponic category = list("Equipment") @@ -185,9 +174,9 @@ name = "Night Vision Hydroponic HUD" desc = "A HUD used to analyze the health and status of plants growing in low-light environments." id = "hydroponic_hud_night" - req_tech = list("magnets" = 5, "biotech" = 4) + req_tech = list("biotech" = 4, "magnets" = 5, "plasmatech" = 4, "engineering" = 6) build_type = PROTOLATHE - materials = list("$metal" = 200, "$glass" = 200, "$uranium" = 1000, "$plasma" = 200) + materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_URANIUM = 1000, MAT_PLASMA = 200) build_path = /obj/item/clothing/glasses/hud/hydroponic/night category = list("Equipment") @@ -269,4 +258,4 @@ build_path = /obj/item/device/multitool/abductor build_type = PROTOLATHE materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_DIAMOND = 2000) - category = list("Equipment") \ No newline at end of file + category = list("Equipment") diff --git a/code/modules/research/designs/janitorial_designs.dm b/code/modules/research/designs/janitorial_designs.dm index 8c575425ebe..d7031f4f754 100644 --- a/code/modules/research/designs/janitorial_designs.dm +++ b/code/modules/research/designs/janitorial_designs.dm @@ -13,9 +13,9 @@ /datum/design/blutrash name = "Trashbag of Holding" - desc = "An advanced trashabg with bluespace properties; capable of holding a plethora of garbage." + desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage." id = "blutrash" - req_tech = list("materials" = 5, "bluespace" = 3) + req_tech = list("materials" = 5, "bluespace" = 4, "engineering" = 4, "plasmatech" = 3) build_type = PROTOLATHE materials = list(MAT_GOLD = 1500, MAT_URANIUM = 250, MAT_PLASMA = 1500) build_path = /obj/item/weapon/storage/bag/trash/bluespace @@ -25,7 +25,7 @@ name = "Floor Buffer Upgrade" desc = "A floor buffer that can be attached to vehicular janicarts." id = "buffer" - req_tech = list("materials" = 5, "engineering" = 3) + req_tech = list("materials" = 4, "engineering" = 4) build_type = PROTOLATHE materials = list(MAT_METAL = 3000, MAT_GLASS = 200) build_path = /obj/item/janiupgrade @@ -35,7 +35,7 @@ name = "Holographic Sign Projector" desc = "A holograpic projector used to project various warning signs." id = "holosign" - req_tech = list("magnets" = 3, "powerstorage" = 2) + req_tech = list("programming" = 3) build_type = PROTOLATHE materials = list(MAT_METAL = 2000, MAT_GLASS = 1000) build_path = /obj/item/weapon/holosign_creator @@ -45,8 +45,8 @@ name = "Light Replacer" desc = "A device to automatically replace lights. Refill with working lightbulbs." id = "light_replacer" - req_tech = list("magnets" = 3, "materials" = 4) + req_tech = list("magnets" = 3, "engineering" = 4) build_type = PROTOLATHE 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 + category = list("Janitorial") diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index c1d3c64d6b9..5e54cbadb4e 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -26,7 +26,7 @@ name = "Machine Board (Emitter)" desc = "The circuit board for an emitter." id = "emitter" - req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 5) + req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/emitter @@ -36,7 +36,7 @@ name = "Computer Design (Power Turbine Console Board)" desc = "The circuit board for a power turbine console." id = "power_turbine_console" - req_tech = list("programming" = 4, "powerstorage" = 4, "engineering" = 4) + req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/turbine_computer @@ -76,7 +76,7 @@ name = "Machine Board (Telepad Board)" desc = "Allows for the construction of circuit boards used to build a Telepad." id = "telepad" - req_tech = list("programming" = 4, "bluespace" = 4, "materials" = 3, "engineering" = 3) + req_tech = list("programming" = 4, "bluespace" = 5, "plasmatech" = 4, "engineering" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telesci_pad @@ -96,7 +96,7 @@ name = "Machine Board (Teleportation Station)" desc = "Allows for the construction of circuit boards used to build a Teleporter Station." id = "tele_station" - req_tech = list("programming" = 4, "bluespace" = 4, "engineering" = 4) + req_tech = list("programming" = 5, "bluespace" = 4, "engineering" = 4, "plasmatech" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/teleporter_station @@ -116,7 +116,7 @@ name = "Machine Board (Body Scanner)" desc = "Allows for the construction of circuit boards used to build a Body Scanner." id = "bodyscanner" - req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3) + req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/bodyscanner @@ -126,7 +126,7 @@ name = "Machine Board (Body Scanner Console)" desc = "Allows for the construction of circuit boards used to build a Body Scanner Console." id = "bodyscanner_console" - req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3) + req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/bodyscanner_console @@ -136,7 +136,7 @@ name = "Machine Board (Cloning Pod)" desc = "Allows for the construction of circuit boards used to build a Cloning Pod." id = "clonepod" - req_tech = list("programming" = 3, "biotech" = 3) + req_tech = list("programming" = 4, "biotech" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/clonepod @@ -146,7 +146,7 @@ name = "Machine Board (Cloning Scanner)" desc = "Allows for the construction of circuit boards used to build a Cloning Scanner." id = "clonescanner" - req_tech = list("programming" = 3, "biotech" = 3) + req_tech = list("programming" = 4, "biotech" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/clonescanner @@ -156,7 +156,7 @@ name = "Machine Board (Cryotube Board)" desc = "Allows for the construction of circuit boards used to build a Cryotube." id = "cryotube" - req_tech = list("programming" = 4, "biotech" = 3, "engineering" = 4) + req_tech = list("programming" = 5, "biotech" = 3, "engineering" = 4, "plasmatech" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/cryo_tube @@ -166,7 +166,7 @@ name = "Machine Board (Portable Chem Dispenser)" desc = "The circuit board for a Portable Chem Dispenser." id = "chem_dispenser" - req_tech = list("programming" = 4, "biotech" = 3, "engineering" = 4, "materials" = 4, "plasmatech" = 3) + req_tech = list("programming" = 5, "biotech" = 3, "materials" = 4, "plasmatech" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/chem_dispenser @@ -176,7 +176,7 @@ name = "Machine Design (Chem Master Board)" desc = "The circuit board for a Chem Master 2999." id = "chem_master" - req_tech = list("biotech" = 1, "materials" = 2, "programming" = 2) + req_tech = list("biotech" = 3, "materials" = 3, "programming" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/chem_master @@ -186,7 +186,7 @@ name = "Machine Design (Chemical Heater Board)" desc = "The circuit board for a chemical heater." id = "chem_heater" - req_tech = list("engineering" = 2, "materials" = 2) + req_tech = list("engineering" = 2, "biotech" = 2, "programming" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/chem_heater @@ -196,7 +196,7 @@ name = "Machine Board (Sleeper)" desc = "Allows for the construction of circuit boards used to build a Sleeper." id = "sleeper" - req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3) + req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/sleeper @@ -206,7 +206,7 @@ name = "Machine Board (Biogenerator)" desc = "The circuit board for a Biogenerator." id = "biogenerator" - req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3) + req_tech = list("programming" = 2, "biotech" = 3, "materials" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/biogenerator @@ -216,7 +216,7 @@ name = "Machine Board (Hydroponics Tray)" desc = "The circuit board for a Hydroponics Tray." id = "hydro_tray" - req_tech = list("programming" = 1, "biotech" = 1) + req_tech = list("biotech" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/hydroponics @@ -226,7 +226,7 @@ name = "Machine Board (Autolathe)" desc = "The circuit board for an Autolathe." id = "autolathe" - req_tech = list("programming" = 2, "engineering" = 2) + req_tech = list("programming" = 3, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/autolathe @@ -276,7 +276,7 @@ name = "Machine Board (Mech Bay Recharger)" desc = "The circuit board for a Mech Bay Recharger." id = "mech_recharger" - req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4) + req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mech_recharger @@ -316,7 +316,7 @@ name = "Machine Design (Gibber Board)" desc = "The circuit board for a gibber." id = "gibber" - req_tech = list("programming" = 1) + req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/gibber @@ -366,7 +366,7 @@ name = "Machine Design (Recycler Board)" desc = "The circuit board for a recycler." id = "recycler" - req_tech = list("programming" = 1) + req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/recycler @@ -396,7 +396,7 @@ name = "Machine Board (Microwave)" desc = "The circuit board for a Microwave." id = "microwave" - req_tech = list("programming" = 1) + req_tech = list("programming" = 2, "magnets" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/microwave @@ -406,7 +406,7 @@ name = "Machine Board (Oven)" desc = "The circuit board for an Oven." id = "oven" - req_tech = list("programming" = 1, "plasmatech" = 1) + req_tech = list("programming" = 2, "magnets" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/oven @@ -416,7 +416,7 @@ name = "Machine Board (Grill)" desc = "The circuit board for a Grill." id = "grill" - req_tech = list("programming" = 1, "plasmatech" = 1) + req_tech = list("programming" = 2, "magnets" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/grill @@ -426,7 +426,7 @@ name = "Machine Board (Candy Maker)" desc = "The circuit board for a Candy Maker." id = "candymaker" - req_tech = list("programming" = 2) + req_tech = list("programming" = 2, "magnets" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/candy_maker @@ -436,7 +436,7 @@ name = "Machine Board (Deep Fryer)" desc = "The circuit board for a Deep Fryer." id = "deepfryer" - req_tech = list("programming" = 2) + req_tech = list("programming" = 1) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/deepfryer @@ -446,7 +446,7 @@ name = "Machine Board (Orion Trail Arcade Machine)" desc = "Allows for the construction of circuit boards used to build a new Orion Trail machine." id = "arcademachineonion" - req_tech = list("programming" = 2) + req_tech = list("programming" = 1) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/arcade/orion_trail @@ -456,7 +456,7 @@ name = "Machine Board (Programmable Unloader)" desc = "The circuit board for a Programmable Unloader." id = "selunload" - req_tech = list("programming" = 5) + req_tech = list("engineering" = 1, "programming" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 2000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/programmable @@ -476,7 +476,7 @@ name = "Machine Design (Ore Redemption Board)" desc = "The circuit board for an Ore Redemption machine." id = "ore_redemption" - req_tech = list("programming" = 1, "engineering" = 2) + req_tech = list("programming" = 2, "engineering" = 2, "plasmatech" = 3) build_type = IMPRINTER materials = list(MAT_GLASS=1000, "sacid"=20) build_path = /obj/item/weapon/circuitboard/ore_redemption @@ -486,7 +486,7 @@ name = "Machine Design (Mining Rewards Vendor Board)" desc = "The circuit board for a Mining Rewards Vendor." id = "mining_equipment_vendor" - req_tech = list("programming" = 1, "engineering" = 2) + req_tech = list("engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS=1000, "sacid"=20) build_path = /obj/item/weapon/circuitboard/mining_equipment_vendor @@ -496,7 +496,7 @@ name = "Machine Design (Claw Game Board)" desc = "The circuit board for a Claw Game." id = "clawgame" - req_tech = list("programming" = 2) + req_tech = list("programming" = 1) build_type = IMPRINTER materials = list(MAT_GLASS=1000, "sacid"=20) build_path = /obj/item/weapon/circuitboard/clawgame @@ -530,4 +530,14 @@ build_type = IMPRINTER materials = list(MAT_GLASS=1000, "sacid"=20) build_path = /obj/item/weapon/circuitboard/plantgenes - category = list("Hydroponics Machinery") \ No newline at end of file + category = list("Hydroponics Machinery") + +/datum/design/ntnet_relay + name = "Machine Design (NTNet Relay Board)" + desc = "The circuit board for a wireless network relay." + id = "ntnet_relay" + req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 2) + build_type = IMPRINTER + materials = list(MAT_GLASS=1000, "sacid"=20) + build_path = /obj/item/weapon/circuitboard/machine/ntnet_relay + category = list("Subspace Telecomms") diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index 4b00be0b932..e535c6cf3c0 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -6,7 +6,7 @@ name = "Exosuit Board (APLU \"Ripley\" Central Control module)" desc = "Allows for the construction of a \"Ripley\" Central Control module." id = "ripley_main" - req_tech = list("programming" = 3) + req_tech = list("programming" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/ripley/main @@ -16,7 +16,7 @@ name = "Exosuit Board (APLU \"Ripley\" Peripherals Control module)" desc = "Allows for the construction of a \"Ripley\" Peripheral Control module." id = "ripley_peri" - req_tech = list("programming" = 3) + req_tech = list("programming" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/ripley/peripherals @@ -27,7 +27,7 @@ name = "Exosuit Board (\"Odysseus\" Central Control module)" desc = "Allows for the construction of a \"Odysseus\" Central Control module." id = "odysseus_main" - req_tech = list("programming" = 3,"biotech" = 2) + req_tech = list("programming" = 3,"biotech" = 3, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/odysseus/main @@ -37,7 +37,7 @@ name = "Exosuit Board (\"Odysseus\" Peripherals Control module)" desc = "Allows for the construction of a \"Odysseus\" Peripheral Control module." id = "odysseus_peri" - req_tech = list("programming" = 3,"biotech" = 2) + req_tech = list("programming" = 3,"biotech" = 3, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/odysseus/peripherals @@ -48,7 +48,7 @@ name = "Exosuit Board (\"Gygax\" Central Control module)" desc = "Allows for the construction of a \"Gygax\" Central Control module." id = "gygax_main" - req_tech = list("programming" = 4) + req_tech = list("programming" = 4, "combat" = 3, "engineering" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/gygax/main @@ -58,7 +58,7 @@ name = "Exosuit Board (\"Gygax\" Peripherals Control module)" desc = "Allows for the construction of a \"Gygax\" Peripheral Control module." id = "gygax_peri" - req_tech = list("programming" = 4) + req_tech = list("programming" = 4, "combat" = 3, "engineering" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/gygax/peripherals @@ -68,7 +68,7 @@ name = "Exosuit Board (\"Gygax\" Weapons & Targeting Control module)" desc = "Allows for the construction of a \"Gygax\" Weapons & Targeting Control module." id = "gygax_targ" - req_tech = list("programming" = 4, "combat" = 2) + req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/gygax/targeting @@ -79,7 +79,7 @@ name = "Exosuit Board (\"Durand\" Central Control module)" desc = "Allows for the construction of a \"Durand\" Central Control module." id = "durand_main" - req_tech = list("programming" = 4) + req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/durand/main @@ -89,7 +89,7 @@ name = "Exosuit Board (\"Durand\" Peripherals Control module)" desc = "Allows for the construction of a \"Durand\" Peripheral Control module." id = "durand_peri" - req_tech = list("programming" = 4) + req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/durand/peripherals @@ -99,7 +99,7 @@ name = "Exosuit Board (\"Durand\" Weapons & Targeting Control module)" desc = "Allows for the construction of a \"Durand\" Weapons & Targeting Control module." id = "durand_targ" - req_tech = list("programming" = 4, "combat" = 2) + req_tech = list("programming" = 5, "combat" = 4, "engineering" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/durand/targeting @@ -110,7 +110,7 @@ name = "Exosuit Board (\"Phazon\" Central Control module)" desc = "Allows for the construction of a \"Phazon\" Central Control module." id = "phazon_main" - req_tech = list("programming" = 5, "materials" = 7, "powerstorage" = 6) + req_tech = list("programming" = 6, "materials" = 6, "plasmatech" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/phazon/main @@ -120,7 +120,7 @@ name = "Exosuit Board (\"Phazon\" Peripherals Control module)" desc = "Allows for the construction of a \"Phazon\" Peripheral Control module." id = "phazon_peri" - req_tech = list("programming" = 5, "bluespace" = 6) + req_tech = list("programming" = 6, "bluespace" = 5, "plasmatech" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/phazon/peripherals @@ -130,7 +130,7 @@ name = "Exosuit Design (\"Phazon\" Weapons & Targeting Control module)" desc = "Allows for the construction of a \"Phazon\" Weapons & Targeting Control module." id = "phazon_targ" - req_tech = list("programming" = 5, "magnets" = 6) + req_tech = list("programming" = 6, "magnets" = 5, "plasmatech" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/phazon/targeting @@ -141,7 +141,7 @@ name = "Exosuit Board (\"H.O.N.K\" Central Control module)" desc = "Allows for the construction of a \"H.O.N.K\" Central Control module." id = "honker_main" - req_tech = list("programming" = 3) + req_tech = list("programming" = 3, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/honker/main @@ -151,7 +151,7 @@ name = "Exosuit Board (\"H.O.N.K\" Peripherals Control module)" desc = "Allows for the construction of a \"H.O.N.K\" Peripheral Control module." id = "honker_peri" - req_tech = list("programming" = 3) + req_tech = list("programming" = 3, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/honker/peripherals @@ -161,7 +161,7 @@ name = "Exosuit Board (\"H.O.N.K\" Weapons & Targeting Control module)" desc = "Allows for the construction of a \"H.O.N.K\" Weapons & Targeting Control module." id = "honker_targ" - req_tech = list("programming" = 3) + req_tech = list("programming" = 3, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/honker/targeting @@ -171,7 +171,7 @@ name = "Exosuit Module (\"Reticence\" Central Control module)" desc = "Allows for the construction of a \"Reticence\" Central Control module." id = "reticence_main" - req_tech = list("programming" = 3) + req_tech = list("programming" = 3, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/reticence/main @@ -181,7 +181,7 @@ name = "Exosuit Module (\"Reticence\" Peripherals Control module)" desc = "Allows for the construction of a \"Reticence\" Peripheral Control module." id = "reticence_peri" - req_tech = list("programming" = 3) + req_tech = list("programming" = 3, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/reticence/peripherals @@ -191,8 +191,8 @@ name = "Exosuit Module (\"Reticence\" Weapons & Targeting Control module)" desc = "Allows for the construction of a \"Reticence\" Weapons & Targeting Control module." id = "reticence_targ" - req_tech = list("programming" = 3) + req_tech = list("programming" = 3, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/reticence/targeting - category = list("Exosuit Modules") \ No newline at end of file + category = list("Exosuit Modules") diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index b31eeb43319..7f47b68d76a 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -637,7 +637,7 @@ name = "Exosuit Medical Equipment (Mounted Sleeper)" id = "mech_sleeper" build_type = MECHFAB - req_tech = list("biotech" = 2) + req_tech = list("biotech" = 3, "engineering" = 3, "plasmatech" = 2) build_path = /obj/item/mecha_parts/mecha_equipment/medical/sleeper materials = list(MAT_METAL=5000,MAT_GLASS=10000) construction_time = 100 @@ -647,7 +647,7 @@ name = "Exosuit Medical Equipment (Syringe Gun)" id = "mech_syringe_gun" build_type = MECHFAB - req_tech = list("magnets" = 3,"biotech" = 3) + req_tech = list("magnets" = 4,"biotech" = 4, "combat" = 3, "materials" = 4) build_path = /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun materials = list(MAT_METAL=3000,MAT_GLASS=2000) construction_time = 200 @@ -658,7 +658,7 @@ id = "mech_generator" build_type = MECHFAB build_path = /obj/item/mecha_parts/mecha_equipment/generator - materials = list(MAT_METAL=10000,MAT_GLASS=1000,MAT_SILVER=500) + materials = list(MAT_METAL=10000,MAT_GLASS=1000,MAT_SILVER=2000,MAT_PLASMA=5000) construction_time = 100 category = list("Exosuit Equipment") @@ -666,7 +666,7 @@ name = "Exosuit Weapon (PBT \"Pacifier\" Mounted Taser)" id = "mech_taser" build_type = MECHFAB - req_tech = list("combat" = 2) + req_tech = list("combat" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser materials = list(MAT_METAL=10000) construction_time = 100 @@ -676,7 +676,7 @@ name = "Exosuit Weapon (\"Ultra AC 2\" LMG)" id = "mech_lmg" build_type = MECHFAB - req_tech = list("combat" = 2) + req_tech = list("combat" = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg materials = list(MAT_METAL=10000) construction_time = 100 @@ -734,7 +734,7 @@ desc = "An upgraded version of the standard drill." id = "mech_diamond_drill" build_type = MECHFAB - req_tech = list("materials" = 4, "engineering" = 3) + req_tech = list("materials" = 5, "engineering" = 4) build_path = /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill materials = list(MAT_METAL=10000,MAT_DIAMOND=6500) construction_time = 100 @@ -754,7 +754,7 @@ desc = "Compact nuclear reactor module." id = "mech_generator_nuclear" build_type = MECHFAB - req_tech = list("powerstorage"= 3, "engineering" = 3, "materials" = 3) + req_tech = list("powerstorage"= 5, "engineering" = 4, "materials" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear materials = list(MAT_METAL=10000,MAT_GLASS=1000,MAT_SILVER=500) construction_time = 100 @@ -765,7 +765,7 @@ desc = "An exosuit mounted Gravitational Catapult." id = "mech_gravcatapult" build_type = MECHFAB - req_tech = list("bluespace" = 2, "magnets" = 3, "engineering" = 3) + req_tech = list("bluespace" = 4, "magnets" = 3, "engineering" = 4) build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult materials = list(MAT_METAL=10000) construction_time = 100 @@ -776,7 +776,7 @@ desc = "An exosuit module that allows generating of small quasi-stable wormholes." id = "mech_wormhole_gen" build_type = MECHFAB - req_tech = list("bluespace" = 3, "magnets" = 2) + req_tech = list("bluespace" = 4, "magnets" = 4, "plasmatech" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator materials = list(MAT_METAL=10000) construction_time = 100 @@ -787,7 +787,7 @@ desc = "An exosuit-mounted Rapid Construction Device." id = "mech_rcd" build_type = MECHFAB - req_tech = list("materials" = 4, "bluespace" = 3, "magnets" = 4, "powerstorage"=4, "engineering" = 4) + req_tech = list("materials" = 5, "bluespace" = 3, "magnets" = 4, "powerstorage"=4, "engineering" = 5) build_path = /obj/item/mecha_parts/mecha_equipment/rcd materials = list(MAT_METAL=30000,MAT_GOLD=20000,MAT_PLASMA=25000,MAT_SILVER=20000) construction_time = 1200 @@ -820,7 +820,7 @@ desc = "Automated Repair Droid. BEEP BOOP" id = "mech_repair_droid" build_type = MECHFAB - req_tech = list("magnets" = 3, "programming" = 3, "engineering" = 3) + req_tech = list("magnets" = 3, "programming" = 3, "engineering" = 5) build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid materials = list(MAT_METAL=10000,MAT_GLASS=5000,MAT_GOLD=1000,MAT_SILVER=2000) construction_time = 100 @@ -853,9 +853,9 @@ desc = "An exosuit module that allows exosuits to teleport to any position in view." id = "mech_teleporter" build_type = MECHFAB - req_tech = list("bluespace" = 10, "magnets" = 5) + req_tech = list("bluespace" = 8, "magnets" = 5) build_path = /obj/item/mecha_parts/mecha_equipment/teleporter - materials = list(MAT_METAL=10000) + materials = list(MAT_METAL=10000,MAT_DIAMOND=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -864,7 +864,7 @@ desc = "Tesla Energy Relay" id = "mech_energy_relay" build_type = MECHFAB - req_tech = list("magnets" = 4, "powerstorage" = 3) + req_tech = list("magnets" = 4, "powerstorage" = 5, "engineering" = 4) build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay materials = list(MAT_METAL=10000,MAT_GLASS=2000,MAT_GOLD=2000,MAT_SILVER=3000) construction_time = 100 @@ -876,7 +876,7 @@ desc = "Allows for the construction of CH-LC Laser Cannon." id = "mech_laser_heavy" build_type = MECHFAB - req_tech = list("combat" = 4, "magnets" = 4) + req_tech = list("combat" = 4, "magnets" = 4, "engineering" = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy materials = list(MAT_METAL=10000) construction_time = 100 @@ -887,7 +887,7 @@ desc = "Allows for the construction of CH-PS Laser." id = "mech_laser" build_type = MECHFAB - req_tech = list("combat" = 3, "magnets" = 3) + req_tech = list("combat" = 3, "magnets" = 3, "engineering" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser materials = list(MAT_METAL=10000) construction_time = 100 @@ -898,7 +898,7 @@ desc = "Allows for the construction of CH-PD Disabler." id = "mech_laser" build_type = MECHFAB - req_tech = list("combat" = 3, "magnets" = 3) + req_tech = list("combat" = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/disabler materials = list(MAT_METAL=10000) construction_time = 100 @@ -942,7 +942,7 @@ desc = "Allows for the construction of SGL-6 Grenade Launcher." id = "mech_grenade_launcher" build_type = MECHFAB - req_tech = list("combat" = 3) + req_tech = list("combat" = 4, "engineering" = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000) construction_time = 100 @@ -953,7 +953,7 @@ desc = "Allows for the construction of SRM-8 Missile Rack." id = "mech_missile_rack" build_type = MECHFAB - req_tech = list("combat" = 6, "materials" = 6) + req_tech = list("combat" = 6, "materials" = 5, "engineering" = 5) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000) construction_time = 100 @@ -964,9 +964,9 @@ desc = "A device that shoots resonant plasma bursts at extreme velocity. The blasts are capable of crushing rock and demolishing solid obstacles." id = "mech_plasma_cutter" build_type = MECHFAB - req_tech = list("powerstorage"= 3, "engineering" = 3, "materials" = 3, "combat" = 1, "plasmatech" = 2) + req_tech = list("engineering" = 3, "materials" = 3, "plasmatech" = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma - materials = list(MAT_METAL=1500, MAT_GLASS=500, MAT_PLASMA=200) + materials = list(MAT_METAL = 8000, MAT_GLASS = 1000, MAT_PLASMA = 2000) construction_time = 100 category = list("Exosuit Equipment") @@ -977,7 +977,7 @@ build_type = MECHFAB req_tech = list("combat" = 6, "magnets" = 5, "materials" = 5) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/tesla - materials = list(MAT_METAL = 10000, MAT_GLASS = 10000, MAT_SILVER = 10000) + materials = list(MAT_METAL=20000,MAT_SILVER=8000) construction_time = 100 category = list("Exosuit Equipment") @@ -986,9 +986,9 @@ desc = "Allows for the construction of ZFI Immolation Beam Gun." id = "mech_tesla" build_type = MECHFAB - req_tech = list("combat" = 4, "materials" = 4, "plasmatech" = 2, "magnets" = 3) + req_tech = list("combat" = 6, "magnets" = 5, "materials" = 5) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/immolator - materials = list(MAT_METAL = 4000, MAT_GLASS = 1000, MAT_SILVER = 3000, MAT_PLASMA = 2000) + materials = list(MAT_METAL = 10000, MAT_SILVER = 8000, MAT_PLASMA = 8000) construction_time = 100 category = list("Exosuit Equipment") @@ -1026,7 +1026,7 @@ id = "borg_upgrade_vtec" build_type = MECHFAB build_path = /obj/item/borg/upgrade/vtec - req_tech = list("engineering" = 4, "materials" = 5) + req_tech = list("engineering" = 4, "materials" = 5, "programming" = 4) materials = list(MAT_METAL=80000 , MAT_GLASS=6000 , MAT_URANIUM= 5000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -1046,7 +1046,7 @@ id = "borg_upgrade_disablercooler" build_type = MECHFAB build_path = /obj/item/borg/upgrade/disablercooler - req_tech = list("combat" = 5, "powerstorage" = 4) + req_tech = list("combat" = 5, "powerstorage" = 4, "engineering" = 4) materials = list(MAT_METAL=80000 , MAT_GLASS=6000 , MAT_GOLD= 2000, MAT_DIAMOND = 500) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -1056,7 +1056,7 @@ id = "borg_upgrade_diamonddrill" build_type = MECHFAB build_path = /obj/item/borg/upgrade/ddrill - req_tech = list("engineering" = 5, "materials" = 5) + req_tech = list("engineering" = 5, "materials" = 6) materials = list(MAT_METAL=10000, MAT_DIAMOND=2000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -1066,7 +1066,7 @@ id = "borg_upgrade_holding" build_type = MECHFAB build_path = /obj/item/borg/upgrade/soh - req_tech = list("engineering" = 5, "materials" = 5, "bluespace" = 3) + req_tech = list("engineering" = 4, "materials" = 4, "bluespace" = 4) materials = list(MAT_METAL = 10000, MAT_GOLD = 250, MAT_URANIUM = 500) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -1075,7 +1075,7 @@ name = "Cyborg Upgrade (Illegal Modules)" id = "borg_syndicate_module" build_type = MECHFAB - req_tech = list("combat" = 4, "syndicate" = 3) + req_tech = list("combat" = 4, "syndicate" = 2) build_path = /obj/item/borg/upgrade/syndicate materials = list(MAT_METAL=10000,MAT_GLASS=15000,MAT_DIAMOND = 10000) construction_time = 120 @@ -1137,3 +1137,14 @@ materials = list(MAT_METAL=1000, MAT_GLASS=2500) construction_time = 200 category = list("Misc") + +/datum/design/synthetic_flash + name = "Synthetic Flash" + desc = "A synthetic flash used mostly in borg construction." + id = "sflash" + req_tech = list("magnets" = 3, "combat" = 2) + build_type = MECHFAB + materials = list(MAT_METAL = 750, MAT_GLASS = 750) + construction_time = 100 + build_path = /obj/item/device/flash/synthetic + category = list("Misc") diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index f1d477a4f89..66c150f636d 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -5,10 +5,9 @@ name = "Advanced Mass-Spectrometer" desc = "A device for analyzing chemicals in the blood and their quantities." id = "adv_mass_spectrometer" - req_tech = list("biotech" = 2, "magnets" = 4) + req_tech = list("biotech" = 3, "magnets" = 4, "plasmatech" = 3) build_type = PROTOLATHE - materials = list(MAT_METAL = 30, MAT_GLASS = 20) - reliability = 74 + materials = list(MAT_METAL = 500, MAT_GLASS = 200) build_path = "/obj/item/device/mass_spectrometer/adv" category = list("Medical") @@ -16,21 +15,29 @@ name = "Advanced Reagent Scanner" desc = "A device for identifying chemicals and their proportions." id = "adv_reagent_scanner" - req_tech = list("biotech" = 2, "magnets" = 4) + req_tech = list("biotech" = 3, "magnets" = 4, "plasmatech" = 3) build_type = PROTOLATHE materials = list(MAT_METAL = 30, MAT_GLASS = 20) - reliability = 74 build_path = /obj/item/device/reagent_scanner/adv category = list("Medical") +/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" = 6, "materials" = 5, "plasmatech" = 4) + build_type = PROTOLATHE + materials = list(MAT_METAL = 3000, MAT_PLASMA = 3000, MAT_DIAMOND = 500) + build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace + category = list("Medical") + /datum/design/noreactbeaker name = "Cryostasis Beaker" desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units." id = "splitbeaker" - req_tech = list("materials" = 2) + req_tech = list("materials" = 3, "engineering" = 3, "plasmatech" = 3) build_type = PROTOLATHE materials = list(MAT_METAL = 3000) - reliability = 76 build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact category = list("Medical") @@ -41,7 +48,6 @@ req_tech = list("programming" = 2, "biotech" = 2, "magnets" = 2) build_type = PROTOLATHE materials = list(MAT_METAL = 30, MAT_GLASS = 20) - reliability = 76 build_path = /obj/item/device/robotanalyzer category = list("Medical") @@ -62,7 +68,6 @@ req_tech = list("materials" = 7, "biotech" = 5, "powerstorage" = 5) build_type = PROTOLATHE materials = list(MAT_METAL = 5000, MAT_GLASS = 2000, MAT_SILVER = 1000) - reliability = 76 build_path = /obj/item/weapon/defibrillator category = list("Medical") @@ -71,10 +76,9 @@ name = "Handheld Crew Monitor" desc = "A device for tracking crew members on the station." id = "sensor_device" - req_tech = list("biotech" = 4, "magnets" = 3, "materials" = 3) + req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2) build_type = PROTOLATHE materials = list(MAT_METAL = 30, MAT_GLASS = 20) - reliability = 76 build_path = /obj/item/device/sensor_device category = list("Medical") @@ -82,11 +86,10 @@ name = "Man-Machine Interface" desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity." id = "mmi" - req_tech = list("programming" = 2, "biotech" = 3) + req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 2) build_type = PROTOLATHE | MECHFAB materials = list(MAT_METAL = 1000, MAT_GLASS = 500) construction_time = 75 - reliability = 76 build_path = /obj/item/device/mmi category = list("Misc","Medical") @@ -94,10 +97,9 @@ name = "Mass-Spectrometer" desc = "A device for analyzing chemicals in the blood." id = "mass_spectrometer" - req_tech = list("biotech" = 2, "magnets" = 2) + req_tech = list("magnets" = 2, "plasmatech" = 2) build_type = PROTOLATHE - materials = list(MAT_METAL = 30, MAT_GLASS = 20) - reliability = 76 + materials = list(MAT_METAL = 300, MAT_GLASS = 100) build_path = /obj/item/device/mass_spectrometer category = list("Medical") @@ -105,10 +107,9 @@ name = "Positronic Brain" desc = "The latest in Artificial Intelligences." id = "mmi_posi" - req_tech = list("programming" = 5, "biotech" = 4) + req_tech = list("programming" = 5, "biotech" = 4, "plasmatech" = 3) 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") @@ -117,11 +118,10 @@ name = "Radio-Enabled Man-Machine Interface" desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity. This one comes with a built-in radio." id = "mmi_radio" - req_tech = list("programming" = 2, "biotech" = 4) + req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 2) build_type = PROTOLATHE | MECHFAB materials = list(MAT_METAL = 1200, MAT_GLASS = 500) construction_time = 75 - reliability = 74 build_path = /obj/item/device/mmi/radio_enabled category = list("Misc","Medical") @@ -139,25 +139,12 @@ name = "Reagent Scanner" desc = "A device for identifying chemicals." id = "reagent_scanner" - req_tech = list("biotech" = 2, "magnets" = 2) + req_tech = list("magnets" = 2, "plasmatech" = 2) build_type = PROTOLATHE materials = list(MAT_METAL = 30, MAT_GLASS = 20) - reliability = 76 build_path = /obj/item/device/reagent_scanner category = list("Medical") -/datum/design/synthetic_flash - name = "Synthetic Flash" - desc = "A synthetic flash used mostly in borg construction." - id = "sflash" - req_tech = list("magnets" = 3, "combat" = 2) - build_type = MECHFAB - materials = list(MAT_METAL = 750, MAT_GLASS = 750) - construction_time = 100 - reliability = 76 - build_path = /obj/item/device/flash/synthetic - category = list("Misc") - /datum/design/item/scalpel_laser1 name = "Basic Laser Scalpel" desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved." @@ -266,10 +253,10 @@ name = "Welding Shield implant" desc = "These reactive micro-shields will protect you from welders and flashes without obscuring your vision." id = "ci-welding" - req_tech = list("materials" = 4, "biotech" = 2) + req_tech = list("materials" = 4, "biotech" = 4, "engineering" = 5, "plasmatech" = 4) build_type = PROTOLATHE | MECHFAB construction_time = 40 - materials = list(MAT_METAL = 200, MAT_GLASS = 400) + materials = list(MAT_METAL = 600, MAT_GLASS = 400) build_path = /obj/item/organ/internal/cyberimp/eyes/shield category = list("Misc", "Medical") @@ -277,10 +264,10 @@ name = "Medical HUD implant" desc = "These cybernetic eyes will display a medical HUD over everything you see. Wiggle eyes to control." id = "ci-medhud" - req_tech = list("materials" = 6, "programming" = 4, "biotech" = 4) + req_tech = list("materials" = 5, "programming" = 4, "biotech" = 4) build_type = PROTOLATHE | MECHFAB construction_time = 50 - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 500, MAT_GOLD = 500) + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 500) build_path = /obj/item/organ/internal/cyberimp/eyes/hud/medical category = list("Misc", "Medical") @@ -288,10 +275,10 @@ name = "Security HUD implant" desc = "These cybernetic eyes will display a security HUD over everything you see. Wiggle eyes to control." id = "ci-sechud" - req_tech = list("materials" = 6, "programming" = 5, "biotech" = 4, "combat" = 2) + req_tech = list("materials" = 5, "programming" = 4, "biotech" = 4, "combat" = 3) build_type = PROTOLATHE | MECHFAB construction_time = 50 - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 750, MAT_GOLD = 750) + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 750, MAT_GOLD = 750) build_path = /obj/item/organ/internal/cyberimp/eyes/hud/security category = list("Misc", "Medical") @@ -299,10 +286,10 @@ name = "X-Ray implant" desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile." id = "ci-xray" - req_tech = list("materials" = 7, "programming" = 5, "biotech" = 6, "magnets" = 5) + req_tech = list("materials" = 7, "programming" = 5, "biotech" = 7, "magnets" = 5,"plasmatech" = 6) build_type = PROTOLATHE | MECHFAB construction_time = 60 - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 2000) + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 2000) build_path = /obj/item/organ/internal/cyberimp/eyes/xray category = list("Misc", "Medical") @@ -310,10 +297,10 @@ name = "Thermals implant" desc = "These cybernetic eyes will give you Thermal vision. Vertical slit pupil included." id = "ci-thermals" - req_tech = list("materials" = 7, "programming" = 5, "biotech" = 5, "magnets" = 5, "syndicate" = 5) + req_tech = list("materials" = 6, "programming" = 4, "biotech" = 7, "magnets" = 5,"plasmatech" = 4) build_type = PROTOLATHE | MECHFAB construction_time = 60 - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_DIAMOND = 2000) + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_DIAMOND = 2000) build_path = /obj/item/organ/internal/cyberimp/eyes/thermals category = list("Misc", "Medical") @@ -321,10 +308,10 @@ name = "Anti-Drop implant" desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle." id = "ci-antidrop" - req_tech = list("materials" = 7, "programming" = 5, "biotech" = 5) + req_tech = list("materials" = 5, "programming" = 6, "biotech" = 5) build_type = PROTOLATHE | MECHFAB construction_time = 60 - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 400, MAT_GOLD = 400) + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 400, MAT_GOLD = 400) build_path = /obj/item/organ/internal/cyberimp/brain/anti_drop category = list("Misc", "Medical") @@ -332,10 +319,10 @@ name = "CNS Rebooter implant" desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned." id = "ci-antistun" - req_tech = list("materials" = 7, "programming" = 5, "biotech" = 6) + req_tech = list("materials" = 6, "programming" = 5, "biotech" = 6) build_type = PROTOLATHE | MECHFAB construction_time = 60 - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 500, MAT_GOLD = 1000) + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 1000) build_path = /obj/item/organ/internal/cyberimp/brain/anti_stun category = list("Misc", "Medical") @@ -354,10 +341,10 @@ name = "Nutriment pump implant" desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving." id = "ci-nutriment" - req_tech = list("materials" = 6, "programming" = 4, "biotech" = 5) + req_tech = list("materials" = 3, "powerstorage" = 4, "biotech" = 3) build_type = PROTOLATHE | MECHFAB construction_time = 40 - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 500, MAT_URANIUM = 500) + materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 500) build_path = /obj/item/organ/internal/cyberimp/chest/nutriment category = list("Misc", "Medical") @@ -365,10 +352,10 @@ name = "Nutriment pump implant PLUS" desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are hungry." id = "ci-nutrimentplus" - req_tech = list("materials" = 6, "programming" = 4, "biotech" = 6) + req_tech = list("materials" = 5, "powerstorage" = 4, "biotech" = 4) build_type = PROTOLATHE | MECHFAB construction_time = 50 - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 500, MAT_URANIUM = 750) + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_GOLD = 500, MAT_URANIUM = 750) build_path = /obj/item/organ/internal/cyberimp/chest/nutriment/plus category = list("Misc", "Medical") @@ -376,10 +363,10 @@ name = "Reviver implant" desc = "This implant will attempt to revive you if you lose consciousness. For the faint of heart!" id = "ci-reviver" - req_tech = list("materials" = 6, "programming" = 4, "biotech" = 7, "syndicate" = 4) + req_tech = list("materials" = 5, "programming" = 4, "biotech" = 5) build_type = PROTOLATHE | MECHFAB construction_time = 60 - materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 500, MAT_URANIUM = 1000, MAT_DIAMOND = 2000) + materials = list(MAT_METAL = 800, MAT_GLASS = 800, MAT_GOLD = 300, MAT_URANIUM = 500) build_path = /obj/item/organ/internal/cyberimp/chest/reviver category = list("Misc", "Medical") @@ -391,7 +378,7 @@ name = "Implanter" desc = "A sterile automatic implant injector." id = "implanter" - req_tech = list("materials" = 1, "programming" = 2, "biotech" = 3) + req_tech = list("materials" = 2, "biotech" = 3, "programming" = 2) build_type = PROTOLATHE materials = list(MAT_METAL = 600, MAT_GLASS = 200) build_path = /obj/item/weapon/implanter @@ -401,28 +388,28 @@ name = "Implant Case" desc = "A glass case containing an implant." id = "implantcase" - req_tech = list("materials" = 1, "biotech" = 2) + req_tech = list("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" +/datum/design/implant_chem + name = "Chemical Implant Case" desc = "A glass case containing an implant." - id = "implant_freedom" - req_tech = list("materials" = 2, "biotech" = 3, "magnets" = 3, "syndicate" = 5) + id = "implant_chem" + req_tech = list("materials" = 3, "biotech" = 5,) build_type = PROTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 500, MAT_GOLD = 250) - build_path = /obj/item/weapon/implantcase/freedom + materials = list(MAT_GLASS = 700) + build_path = /obj/item/weapon/implantcase/chem category = list("Medical") -/datum/design/implant_adrenalin - name = "Adrenalin Implant Case" +/datum/design/implant_tracking + name = "Tracking Implant Case" desc = "A glass case containing an implant." - id = "implant_adrenalin" - req_tech = list("materials" = 2, "biotech" = 5, "combat" = 3, "syndicate" = 6) + id = "implant_tracking" + req_tech = list("materials" = 2, "biotech" = 3, "magnets" = 3, "programming" = 2) 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 + materials = list(MAT_METAL = 500, MAT_GLASS = 500) + build_path = /obj/item/weapon/implantcase/track + category = list("Medical") diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm index aa3014e2825..fa75bd29c24 100644 --- a/code/modules/research/designs/mining_designs.dm +++ b/code/modules/research/designs/mining_designs.dm @@ -5,28 +5,17 @@ name = "Diamond Mining Drill" desc = "Yours is the drill that will pierce the heavens!" id = "drill_diamond" - req_tech = list("materials" = 6, "powerstorage" = 4, "engineering" = 4) + req_tech = list("materials" = 6, "powerstorage" = 5, "engineering" = 5) build_type = PROTOLATHE materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_DIAMOND = 2000) //Yes, a whole diamond is needed. - reliability = 79 build_path = /obj/item/weapon/pickaxe/drill/diamonddrill category = list("Mining") -/datum/design/pick_diamond - name = "Diamond Pickaxe" - desc = "A pickaxe with a diamond pick head, this is just like minecraft." - id = "pick_diamond" - req_tech = list("materials" = 6) - build_type = PROTOLATHE - materials = list(MAT_DIAMOND = 3000) - build_path = /obj/item/weapon/pickaxe/diamond - category = list("Mining") - /datum/design/drill name = "Mining Drill" desc = "Yours is the drill that will pierce through the rock walls." id = "drill" - req_tech = list("materials" = 2, "powerstorage" = 3, "engineering" = 2) + req_tech = list("materials" = 2, "powerstorage" = 2, "engineering" = 3) build_type = PROTOLATHE materials = list(MAT_METAL = 6000, MAT_GLASS = 1000) build_path = /obj/item/weapon/pickaxe/drill @@ -36,10 +25,9 @@ name = "Plasma Cutter" desc = "You could use it to cut limbs off of xenos! Or, you know, mine stuff." id = "plasmacutter" - req_tech = list("materials" = 2, "plasmatech" = 2, "engineering" = 2, "combat" = 1, "magnets" = 2) + req_tech = list("materials" = 3, "plasmatech" = 3, "magnets" = 2) build_type = PROTOLATHE - materials = list(MAT_METAL = 1500, MAT_GLASS = 500, MAT_GOLD = 500, MAT_PLASMA = 500) - reliability = 79 + materials = list(MAT_METAL = 1500, MAT_GLASS = 500, MAT_PLASMA = 400) build_path = /obj/item/weapon/gun/energy/plasmacutter category = list("Mining") @@ -47,10 +35,9 @@ name = "Advanced Plasma Cutter" desc = "It's an advanced plasma cutter, oh my god." id = "plasmacutter_adv" - req_tech = list("materials" = 4, "plasmatech" = 3, "engineering" = 3, "combat" = 3, "magnets" = 3) + req_tech = list("materials" = 4, "plasmatech" = 4, "engineering" = 2, "combat" = 3, "magnets" = 3) build_type = PROTOLATHE 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") @@ -58,7 +45,7 @@ name = "Sonic Jackhammer" desc = "Essentially a handheld planet-cracker. Can drill through walls with ease as well." id = "jackhammer" - req_tech = list("materials" = 6, "powerstorage" = 6, "engineering" = 5, "magnets" = 6) + req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 6, "magnets" = 5) build_type = PROTOLATHE materials = list(MAT_METAL = 6000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_DIAMOND = 6000) build_path = /obj/item/weapon/pickaxe/drill/jackhammer @@ -70,10 +57,10 @@ id = "superresonator" req_tech = list("materials" = 4, "powerstorage" = 3, "engineering" = 3, "magnets" = 3) build_type = PROTOLATHE - materials = list(MAT_METAL = 4000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_URANIUM = 2000) + materials = list(MAT_METAL = 4000, MAT_GLASS = 1500, MAT_SILVER = 1000, MAT_URANIUM = 1000) build_path = /obj/item/weapon/resonator/upgraded category = list("Mining") - + /datum/design/trigger_guard_mod name = "Kinetic Accelerator Trigger Guard Mod" desc = "A device which allows kinetic accelerators to be wielded by any organism." @@ -132,4 +119,4 @@ build_type = PROTOLATHE | MECHFAB materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000) build_path = /obj/item/borg/upgrade/modkit/aoe/turfs - category = list("Mining", "Cyborg Upgrade Modules") \ No newline at end of file + category = list("Mining", "Cyborg Upgrade Modules") diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index ea67fe5e809..080cca11ffb 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -7,7 +7,7 @@ id = "design_disk" req_tech = list("programming" = 1) build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL = 30, MAT_GLASS = 10) + materials = list(MAT_METAL = 300, MAT_GLASS = 100) build_path = /obj/item/weapon/disk/design_disk category = list("Miscellaneous") @@ -25,7 +25,7 @@ name = "Intellicard" desc = "Allows for the construction of an intellicard." id = "intellicard" - req_tech = list("programming" = 4, "materials" = 4) + req_tech = list("programming" = 3, "materials" = 3) build_type = PROTOLATHE materials = list(MAT_GLASS = 1000, MAT_GOLD = 200) build_path = /obj/item/device/aicard @@ -47,7 +47,7 @@ id = "tech_disk" req_tech = list("programming" = 1) build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL = 30, MAT_GLASS = 10) + materials = list(MAT_METAL = 300, MAT_GLASS = 100) build_path = /obj/item/weapon/disk/tech_disk category = list("Miscellaneous") @@ -59,4 +59,4 @@ build_type = PROTOLATHE materials = list(MAT_METAL = 500, MAT_GLASS = 300) build_path = /obj/item/device/camera/digital - category = list("Miscellaneous") \ No newline at end of file + category = list("Miscellaneous") diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm index a70088b25b1..f1b361a4b5b 100644 --- a/code/modules/research/designs/power_designs.dm +++ b/code/modules/research/designs/power_designs.dm @@ -28,10 +28,9 @@ name = "Hyper-Capacity Power Cell" desc = "A power cell that holds 30000 units of energy" id = "hyper_cell" - req_tech = list("powerstorage" = 5, "materials" = 4) - reliability = 70 + req_tech = list("powerstorage" = 5, "materials" = 5, "engineering" = 5) build_type = PROTOLATHE | MECHFAB | PODFAB - materials = list(MAT_METAL = 400, MAT_GOLD = 150, MAT_SILVER = 150, MAT_GLASS = 70) + materials = list(MAT_METAL = 700, 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") @@ -40,8 +39,7 @@ name = "Super-Capacity Power Cell" desc = "A power cell that holds 20000 units of energy" id = "super_cell" - req_tech = list("powerstorage" = 3, "materials" = 2) - reliability = 75 + req_tech = list("powerstorage" = 3, "materials" = 3) build_type = PROTOLATHE | MECHFAB | PODFAB materials = list(MAT_METAL = 700, MAT_GLASS = 70) construction_time=100 @@ -52,8 +50,7 @@ name = "Bluespace Power Cell" desc = "A power cell that holds 40000 units of energy." id = "bluespace_cell" - req_tech = list("powerstorage" = 6, "materials" = 5) - reliability = 70 + req_tech = list("powerstorage" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5) build_type = PROTOLATHE | MECHFAB materials = list(MAT_METAL = 800, MAT_GOLD = 300, MAT_SILVER = 300, MAT_GLASS = 160, MAT_DIAMOND = 160) construction_time=100 @@ -64,9 +61,8 @@ name = "Machine Board (PACMAN-type Generator)" desc = "The circuit board that for a PACMAN-type portable generator." id = "pacman" - req_tech = list("programming" = 3, "plasmatech" = 3, "powerstorage" = 3, "engineering" = 3) + req_tech = list("programming" = 2, "plasmatech" = 3, "powerstorage" = 3, "engineering" = 3) build_type = IMPRINTER - reliability = 79 materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/pacman category = list("Engineering Machinery") @@ -75,9 +71,8 @@ name = "Machine Board (MRSPACMAN-type Generator)" desc = "The circuit board that for a MRSPACMAN-type portable generator." id = "mrspacman" - req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 5) + req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 5, "plasmatech" = 4) build_type = IMPRINTER - reliability = 74 materials = list(MAT_GLASS = 2000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/pacman/mrs category = list("Engineering Machinery") @@ -88,7 +83,6 @@ id = "superpacman" req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4) build_type = IMPRINTER - reliability = 76 materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/pacman/super category = list("Engineering Machinery") @@ -97,7 +91,7 @@ name = "Machine Design (Tesla Coil Board)" desc = "The circuit board for a tesla coil." id = "tesla_coil" - req_tech = list("programming" = 1) + req_tech = list("programming" = 3, "powerstorage" = 3, "magnets" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/tesla_coil @@ -107,8 +101,8 @@ name = "Machine Design (Grounding Rod Board)" desc = "The circuit board for a grounding rod." id = "grounding_rod" - req_tech = list("programming" = 1) + req_tech = list("programming" = 3, "powerstorage" = 3, "magnets" = 3, "plasmatech" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/grounding_rod - category = list("Engineering Machinery") \ No newline at end of file + category = list("Engineering Machinery") diff --git a/code/modules/research/designs/stock_parts_designs.dm b/code/modules/research/designs/stock_parts_designs.dm index 7859f635cd5..ab4464a5f27 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(MAT_METAL = 50, MAT_GLASS = 50) + materials = list(MAT_METAL = 100, MAT_GLASS = 100) build_path = /obj/item/weapon/stock_parts/capacitor category = list("Stock Parts","Machinery","initial") lathe_time_factor = 5 @@ -19,7 +19,7 @@ id = "basic_sensor" req_tech = list("magnets" = 1) build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 20) + materials = list(MAT_METAL = 100, MAT_GLASS = 50) build_path = /obj/item/weapon/stock_parts/scanning_module category = list("Stock Parts","Machinery","initial") lathe_time_factor = 5 @@ -28,9 +28,9 @@ name = "Micro Manipulator" desc = "A stock part used in the construction of various devices." id = "micro_mani" - req_tech = list("materials" = 1, "programming" = 1) + req_tech = list("materials" = 1) build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL = 30) + materials = list(MAT_METAL = 100) build_path = /obj/item/weapon/stock_parts/manipulator category = list("Stock Parts","Machinery","initial") lathe_time_factor = 5 @@ -41,7 +41,7 @@ id = "basic_micro_laser" req_tech = list("magnets" = 1) build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL = 10, MAT_GLASS = 20) + materials = list(MAT_METAL = 100, MAT_GLASS = 50) build_path = /obj/item/weapon/stock_parts/micro_laser category = list("Stock Parts","Machinery","initial") lathe_time_factor = 5 @@ -52,7 +52,7 @@ id = "basic_matter_bin" req_tech = list("materials" = 1) build_type = PROTOLATHE | AUTOLATHE - materials = list(MAT_METAL = 80) + materials = list(MAT_METAL = 100) build_path = /obj/item/weapon/stock_parts/matter_bin category = list("Stock Parts","Machinery","initial") lathe_time_factor = 5 @@ -63,7 +63,7 @@ id = "adv_capacitor" req_tech = list("powerstorage" = 3) build_type = PROTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 50) + materials = list(MAT_METAL = 150, MAT_GLASS = 150) build_path = /obj/item/weapon/stock_parts/capacitor/adv category = list("Stock Parts") lathe_time_factor = 5 @@ -74,7 +74,7 @@ id = "adv_sensor" req_tech = list("magnets" = 3) build_type = PROTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 20) + materials = list(MAT_METAL = 150, MAT_GLASS = 100) build_path = /obj/item/weapon/stock_parts/scanning_module/adv category = list("Stock Parts") lathe_time_factor = 5 @@ -85,7 +85,7 @@ id = "nano_mani" req_tech = list("materials" = 3, "programming" = 2) build_type = PROTOLATHE - materials = list(MAT_METAL = 30) + materials = list(MAT_METAL = 150) build_path = /obj/item/weapon/stock_parts/manipulator/nano category = list("Stock Parts") lathe_time_factor = 5 @@ -96,7 +96,7 @@ id = "high_micro_laser" req_tech = list("magnets" = 3) build_type = PROTOLATHE - materials = list(MAT_METAL = 10, MAT_GLASS = 20) + materials = list(MAT_METAL = 150, MAT_GLASS = 100) build_path = /obj/item/weapon/stock_parts/micro_laser/high category = list("Stock Parts") lathe_time_factor = 5 @@ -107,7 +107,7 @@ id = "adv_matter_bin" req_tech = list("materials" = 3) build_type = PROTOLATHE - materials = list(MAT_METAL = 80) + materials = list(MAT_METAL = 150) build_path = /obj/item/weapon/stock_parts/matter_bin/adv category = list("Stock Parts") lathe_time_factor = 5 @@ -116,10 +116,9 @@ name = "Super Capacitor" desc = "A stock part used in the construction of various devices." id = "super_capacitor" - req_tech = list("powerstorage" = 5, "materials" = 4) + req_tech = list("powerstorage" = 5, "engineering" = 5) build_type = PROTOLATHE - reliability = 71 - materials = list(MAT_METAL = 50, MAT_GLASS = 50, MAT_GOLD = 20) + materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100) build_path = /obj/item/weapon/stock_parts/capacitor/super category = list("Stock Parts") lathe_time_factor = 5 @@ -128,10 +127,9 @@ name = "Phasic Scanning Module" desc = "A stock part used in the construction of various devices." id = "phasic_sensor" - req_tech = list("magnets" = 5, "materials" = 3) + req_tech = list("magnets" = 5, "engineering" = 5) build_type = PROTOLATHE - materials = list(MAT_METAL = 50, MAT_GLASS = 20, MAT_SILVER = 10) - reliability = 72 + materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_SILVER = 60) build_path = /obj/item/weapon/stock_parts/scanning_module/phasic category = list("Stock Parts") lathe_time_factor = 5 @@ -140,10 +138,9 @@ name = "Pico Manipulator" desc = "A stock part used in the construction of various devices." id = "pico_mani" - req_tech = list("materials" = 5, "programming" = 2) + req_tech = list("materials" = 5, "programming" = 4, "engineering" = 5) build_type = PROTOLATHE - materials = list(MAT_METAL = 30) - reliability = 73 + materials = list(MAT_METAL = 200) build_path = /obj/item/weapon/stock_parts/manipulator/pico category = list("Stock Parts") lathe_time_factor = 5 @@ -152,10 +149,9 @@ name = "Ultra-High-Power Micro-Laser" desc = "A stock part used in the construction of various devices." id = "ultra_micro_laser" - req_tech = list("magnets" = 5, "materials" = 5) + req_tech = list("magnets" = 5, "engineering" = 5) build_type = PROTOLATHE - materials = list(MAT_METAL = 10, MAT_GLASS = 20, MAT_URANIUM = 10) - reliability = 70 + materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_URANIUM = 60) build_path = /obj/item/weapon/stock_parts/micro_laser/ultra category = list("Stock Parts") lathe_time_factor = 5 @@ -164,10 +160,9 @@ name = "Super Matter Bin" desc = "A stock part used in the construction of various devices." id = "super_matter_bin" - req_tech = list("materials" = 5) + req_tech = list("materials" = 5, "engineering" = 5) build_type = PROTOLATHE - materials = list(MAT_METAL = 80) - reliability = 75 + materials = list(MAT_METAL = 200) build_path = /obj/item/weapon/stock_parts/matter_bin/super category = list("Stock Parts") lathe_time_factor = 5 @@ -176,10 +171,9 @@ name = "Quadratic Capacitor" desc = "A stock part used in the construction of various devices." id = "quadratic_capacitor" - req_tech = list("powerstorage" = 6, "materials" = 5) + req_tech = list("powerstorage" = 6, "engineering" = 5, "materials" = 5, "bluespace" = 5) build_type = PROTOLATHE - reliability = 71 - materials = list(MAT_METAL = 100, MAT_GLASS = 100, MAT_DIAMOND = 40) + materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100, MAT_DIAMOND = 100) build_path = /obj/item/weapon/stock_parts/capacitor/quadratic category = list("Stock Parts") lathe_time_factor = 5 @@ -188,10 +182,9 @@ name = "Triphasic Scanning Module" desc = "A stock part used in the construction of various devices." id = "triphasic_scanning" - req_tech = list("magnets" = 6, "materials" = 4) + req_tech = list("magnets" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5) build_type = PROTOLATHE - materials = list(MAT_METAL = 100, MAT_GLASS = 40, MAT_DIAMOND = 20) - reliability = 72 + materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 60) build_path = /obj/item/weapon/stock_parts/scanning_module/triphasic category = list("Stock Parts") lathe_time_factor = 5 @@ -200,10 +193,9 @@ name = "Femto Manipulator" desc = "A stock part used in the construction of various devices." id = "femto_mani" - req_tech = list("materials" = 6, "programming" = 3) + req_tech = list("materials" = 7, "programming" = 5, "engineering" = 5, "bluespace" = 5) build_type = PROTOLATHE - materials = list(MAT_METAL = 60, MAT_DIAMOND = 30) - reliability = 73 + materials = list(MAT_METAL = 200, MAT_DIAMOND = 60) build_path = /obj/item/weapon/stock_parts/manipulator/femto category = list("Stock Parts") lathe_time_factor = 5 @@ -212,10 +204,9 @@ name = "Quad-Ultra Micro-Laser" desc = "A stock part used in the construction of various devices." id = "quadultra_micro_laser" - req_tech = list("magnets" = 6, "materials" = 6) + req_tech = list("magnets" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5) build_type = PROTOLATHE - materials = list(MAT_METAL = 20, MAT_GLASS = 40, MAT_URANIUM = 20, MAT_DIAMOND = 20) - reliability = 70 + materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_URANIUM = 100, MAT_DIAMOND = 60) build_path = /obj/item/weapon/stock_parts/micro_laser/quadultra category = list("Stock Parts") lathe_time_factor = 5 @@ -224,10 +215,9 @@ name = "Bluespace Matter Bin" desc = "A stock part used in the construction of various devices." id = "bluespace_matter_bin" - req_tech = list("materials" = 6) + req_tech = list("materials" = 7, "engineering" = 5, "bluespace" = 5) build_type = PROTOLATHE - materials = list(MAT_METAL = 160, MAT_DIAMOND = 200) - reliability = 75 + materials = list(MAT_METAL = 250, MAT_DIAMOND = 200) build_path = /obj/item/weapon/stock_parts/matter_bin/bluespace category = list("Stock Parts") lathe_time_factor = 5 @@ -236,7 +226,7 @@ name = "Rapid Part Exchange Device" desc = "Special mechanical module made to store, sort, and apply standard machine parts." id = "rped" - req_tech = list("engineering" = 3, "materials" = 3) + req_tech = list("engineering" = 1) build_type = PROTOLATHE materials = list(MAT_METAL = 10000, MAT_GLASS = 5000) //hardcore build_path = /obj/item/weapon/storage/part_replacer @@ -246,7 +236,7 @@ name = "Bluespace RPED" desc = "Powered by bluespace technology, this RPED variant can upgrade buildings from a distance, without needing to remove the panel first." id = "bs_rped" - req_tech = list("engineering" = 3, "materials" = 5, "programming" = 3, "bluespace" = 3) + req_tech = list("engineering" = 4, "bluespace" = 3) build_type = PROTOLATHE materials = list(MAT_METAL = 15000, MAT_GLASS = 5000, MAT_SILVER = 2500) //hardcore build_path = /obj/item/weapon/storage/part_replacer/bluespace @@ -261,4 +251,4 @@ materials = list(MAT_METAL = 4000, MAT_PLASMA = 4000) build_path = /obj/item/stack/sheet/mineral/abductor category = list("Stock Parts") - lathe_time_factor = 5 \ No newline at end of file + lathe_time_factor = 5 diff --git a/code/modules/research/designs/telecomms_designs.dm b/code/modules/research/designs/telecomms_designs.dm index 4c6d72c0120..fec717f41ab 100644 --- a/code/modules/research/designs/telecomms_designs.dm +++ b/code/modules/research/designs/telecomms_designs.dm @@ -36,7 +36,7 @@ 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) + req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telecomms/relay @@ -56,7 +56,7 @@ name = "Machine Board (Subspace Broadcaster)" desc = "Allows for the construction of Subspace Broadcasting equipment." id = "s-broadcaster" - req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1) + req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster @@ -66,7 +66,7 @@ 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) + req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/telecomms/receiver @@ -76,9 +76,9 @@ 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) + req_tech = list("magnets" = 2, "materials" = 2, "bluespace" = 3, "plasmatech" = 3) build_type = PROTOLATHE - materials = list(MAT_GLASS = 1000, MAT_SILVER = 20, MAT_GOLD = 20) + materials = list(MAT_GLASS = 800, MAT_SILVER = 100, MAT_GOLD = 100) build_path = /obj/item/weapon/stock_parts/subspace/crystal category = list("Stock Parts") @@ -86,9 +86,9 @@ name = "Hyperwave Filter" desc = "A tiny device capable of filtering and converting super-intense radiowaves." id = "s-filter" - req_tech = list("programming" = 2, "magnets" = 2) + req_tech = list("programming" = 3, "magnets" = 3) build_type = PROTOLATHE - materials = list(MAT_METAL = 40, MAT_SILVER = 10) + materials = list(MAT_METAL = 100, MAT_SILVER = 100) build_path = /obj/item/weapon/stock_parts/subspace/filter category = list("Stock Parts") @@ -96,9 +96,9 @@ name = "Subspace Amplifier" desc = "A compact micro-machine capable of amplifying weak subspace transmissions." id = "s-amplifier" - req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1) + req_tech = list("programming" = 3, "magnets" = 4, "materials" = 3, "bluespace" = 2) build_type = PROTOLATHE - materials = list(MAT_METAL = 10, MAT_GOLD = 30, MAT_URANIUM = 15) + materials = list(MAT_METAL = 100, MAT_GOLD = 100, MAT_URANIUM = 100) build_path = /obj/item/weapon/stock_parts/subspace/amplifier category = list("Stock Parts") @@ -106,9 +106,9 @@ name = "Subspace Analyzer" desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." id = "s-analyzer" - req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1) + req_tech = list("programming" = 3, "magnets" = 4, "materials" = 2, "bluespace" = 3) build_type = PROTOLATHE - materials = list(MAT_METAL = 10, MAT_GOLD = 15) + materials = list(MAT_METAL = 100, MAT_GOLD = 100) build_path = /obj/item/weapon/stock_parts/subspace/analyzer category = list("Stock Parts") @@ -116,9 +116,9 @@ 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) + req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2) build_type = PROTOLATHE - materials = list(MAT_METAL = 80, MAT_SILVER = 20) + materials = list(MAT_METAL = 100, MAT_SILVER = 100) build_path = /obj/item/weapon/stock_parts/subspace/ansible category = list("Stock Parts") @@ -126,9 +126,9 @@ name = "Subspace Transmitter" desc = "A large piece of equipment used to open a window into the subspace dimension." id = "s-transmitter" - req_tech = list("magnets" = 3, "materials" = 3, "bluespace" = 2) + req_tech = list("magnets" = 3, "materials" = 4, "bluespace" = 4) build_type = PROTOLATHE - materials = list(MAT_GLASS = 100, MAT_SILVER = 10, MAT_URANIUM = 15) + materials = list(MAT_GLASS = 100, MAT_SILVER = 100, MAT_URANIUM = 100) build_path = /obj/item/weapon/stock_parts/subspace/transmitter category = list("Stock Parts") @@ -136,8 +136,8 @@ 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) + req_tech = list("programming" = 2, "magnets" = 3, "materials" = 2, "bluespace" = 3) build_type = PROTOLATHE - materials = list(MAT_METAL = 10, MAT_SILVER = 20) + materials = list(MAT_METAL = 100, MAT_SILVER = 200) 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 e282e42fa3f..9391af77424 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -6,10 +6,9 @@ name = "Advanced Energy Gun" desc = "An energy gun with an experimental miniaturized reactor." id = "nuclear_gun" - req_tech = list("combat" = 4, "materials" = 5, "powerstorage" = 3) + req_tech = list("combat" = 5, "magnets" = 5, "powerstorage" = 5) build_type = PROTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_URANIUM = 2000) - reliability = 76 + materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 4000) build_path = /obj/item/weapon/gun/energy/gun/nuclear locked = 1 category = list("Weapons") @@ -18,7 +17,7 @@ name = "Decloner" desc = "Your opponent will bubble into a messy pile of goop." id = "decloner" - req_tech = list("combat" = 6, "materials" = 7, "biotech" = 5, "powerstorage" = 6) + req_tech = list("combat" = 5, "materials" = 5, "biotech" = 6, "plasmatech" = 7) build_type = PROTOLATHE materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000) reagents = list("mutagen" = 40) @@ -30,19 +29,18 @@ name = "Energy Crossbow" desc = "A reverse-engineered energy crossbow favored by syndicate infiltration teams and carp hunters." id = "largecrossbow" - req_tech = list("combat" = 5, "materials" = 5, "engineering" = 3, "biotech" = 4, "syndicate" = 3) + req_tech = list("combat" = 5, "engineering" = 3, "magnet" = 5, "syndicate" = 3) build_type = PROTOLATHE 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" desc = "A tool that discharges controlled radiation which induces mutation in plant cells. Harmless to other organic life." id = "flora_gun" - req_tech = list("materials" = 2, "biotech" = 3, "powerstorage" = 3) + req_tech = list("materials" = 2, "biotech" = 4) build_type = PROTOLATHE materials = list(MAT_METAL = 2000, MAT_GLASS = 500) reagents = list("radium" = 20) @@ -53,9 +51,9 @@ name = "Ion Carbine" desc = "How to dismantle a cyborg : The gun." id = "ioncarbine" - req_tech = list("combat" = 5, "materials" = 4, "magnets" = 4) + req_tech = list("combat" = 5, "magnets" = 4) build_type = PROTOLATHE - materials = list(MAT_SILVER = 4000, MAT_METAL = 6000, MAT_URANIUM = 1000) + materials = list(MAT_SILVER = 6000, MAT_METAL = 8000, MAT_URANIUM = 2000) build_path = /obj/item/weapon/gun/energy/ionrifle/carbine locked = 1 category = list("Weapons") @@ -64,9 +62,9 @@ name = "Bluespace Wormhole Projector" desc = "A projector that emits high density quantum-coupled bluespace beams." id = "wormholeprojector" - req_tech = list("combat" = 6, "materials" = 6, "bluespace" = 4) + req_tech = list("combat" = 5, "engineering" = 5, "bluespace" = 7, "plasmatech" = 6) build_type = PROTOLATHE - materials = list(MAT_SILVER = 1000, MAT_METAL = 5000, MAT_DIAMOND = 3000) + materials = list(MAT_SILVER = 2000, MAT_METAL = 5000, MAT_DIAMOND = 3000) build_path = /obj/item/weapon/gun/energy/wormhole_projector locked = 1 access_requirement = list(access_rd) //screw you, HoS, this aint yours; this is only for a man of science---and trouble. @@ -76,10 +74,9 @@ name = "Large Grenade" desc = "A grenade that affects a larger area and use larger containers." id = "large_Grenade" - req_tech = list("combat" = 3, "materials" = 2) + req_tech = list("combat" = 3, "engineering" = 3) build_type = PROTOLATHE materials = list(MAT_METAL = 3000) - reliability = 79 build_path = /obj/item/weapon/grenade/chem_grenade/large category = list("Weapons") @@ -87,7 +84,7 @@ name = "Telescopic Riot Shield" desc = "An advanced riot shield made of lightweight materials that collapses for easy storage." id = "tele_shield" - req_tech = list("combat" = 4, "materials" = 3, "engineering" = 3) + req_tech = list("combat" = 4, "materials" = 3, "engineering" = 4) build_type = PROTOLATHE materials = list(MAT_METAL = 4000, MAT_GLASS = 5000, MAT_SILVER = 300) build_path = /obj/item/weapon/shield/riot/tele @@ -97,9 +94,9 @@ name = "Accelerator Laser Cannon" desc = "A heavy duty laser cannon. It does more damage the farther away the target is." id = "lasercannon" - req_tech = list("combat" = 4, "materials" = 3, "powerstorage" = 3) + req_tech = list("combat" = 5, "magnets" = 5, "powerstorage" = 3) build_type = PROTOLATHE - materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_DIAMOND = 2000) + materials = list(MAT_METAL = 10000, MAT_GLASS = 3000, MAT_DIAMOND = 3000) build_path = /obj/item/weapon/gun/energy/lasercannon locked = 1 category = list("Weapons") @@ -108,7 +105,7 @@ name = "Plasma Pistol" desc = "A specialized firearm designed to fire lethal bolts of toxins." id = "ppistol" - req_tech = list("combat" = 4, "plasmatech" = 3) + req_tech = list("combat" = 5, "magnets" = 5, "powerstorage" = 5) build_type = PROTOLATHE materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_PLASMA = 3000) build_path = /obj/item/weapon/gun/energy/toxgun @@ -152,7 +149,7 @@ name = "Rapid Syringe Gun" desc = "A gun that fires many syringes." id = "rapidsyringe" - req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2) + req_tech = list("combat" = 2, "biotech" = 3) build_type = PROTOLATHE materials = list(MAT_METAL = 5000, MAT_GLASS = 1000) build_path = /obj/item/weapon/gun/syringe/rapidsyringe @@ -172,7 +169,7 @@ name = "Tesla Revolver" desc = "A high-tech revolver that fires internal, reusable shock cartridges in a revolving cylinder. The cartridges can be recharged using conventional rechargers." id = "stunrevolver" - req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 5) + req_tech = list("combat" = 4, "materials" = 4, "powerstorage" = 5) build_type = PROTOLATHE materials = list(MAT_METAL = 10000, MAT_GLASS = 10000, MAT_SILVER = 10000) build_path = /obj/item/weapon/gun/energy/shock_revolver @@ -183,7 +180,7 @@ name = "Temperature Gun" desc = "A gun that changes the body temperature of its targets." id = "temp_gun" - req_tech = list("combat" = 3, "materials" = 4, "powerstorage" = 3, "magnets" = 2) + req_tech = list("combat" = 4, "materials" = 4, "powerstorage" = 3, "magnets" = 2) build_type = PROTOLATHE materials = list(MAT_METAL = 5000, MAT_GLASS = 500, MAT_SILVER = 3000) build_path = /obj/item/weapon/gun/energy/temperature @@ -213,9 +210,9 @@ name = "Xray Laser Gun" desc = "Not quite as menacing as it sounds" id = "xray" - req_tech = list("combat" = 6, "materials" = 5, "biotech" = 5, "powerstorage" = 4) + req_tech = list("combat" = 7, "magnets" = 5, "biotech" = 5, "powerstorage" = 4) build_type = PROTOLATHE - materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000, MAT_METAL = 4000) + materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000, MAT_METAL = 5000) build_path = /obj/item/weapon/gun/energy/xray locked = 1 category = list("Weapons") @@ -224,9 +221,9 @@ name = "Immolator Laser Gun" desc = "Has fewer shots than a regular laser gun, but ignites the target on hit" id = "immolator" - req_tech = list("combat" = 4, "materials" = 5, "powerstorage" = 5, "magnets" = 4) + req_tech = list("combat" = 5, "magnets" = 5, "powerstorage" = 5) build_type = PROTOLATHE materials = list(MAT_METAL = 4000, MAT_GLASS = 1000, MAT_SILVER = 3000, MAT_PLASMA = 2000) build_path = /obj/item/weapon/gun/energy/immolator locked = 1 - category = list("Weapons") \ No newline at end of file + category = list("Weapons") diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 421f0cf8e92..f0aed90bc91 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -149,9 +149,6 @@ if(temp_tech.len == 0) to_chat(user, "You cannot experiment on this item!") return - if(O.reliability < 90 && O.crit_fail == 0) - to_chat(usr, "Item is neither reliable enough or broken enough to learn from.") - return if(!user.drop_item()) return loaded_item = O @@ -494,16 +491,11 @@ //Global reactions if(prob(EFFECT_PROB_VERYLOW) && prob(13)) - visible_message("[src] improves [exp_on], drawing the life essence of those nearby!") + visible_message("Experimentor draws the life essence of those nearby!") for(var/mob/living/m in view(4,src)) to_chat(m, "You feel your flesh being torn from you, mists of blood drifting to [src]!") m.take_overall_damage(50) investigate_log("Experimentor has taken 50 brute a blood sacrifice from [m]", "experimentor") - var/list/reqs = ConvertReqString2List(exp_on.origin_tech) - for(var/T in reqs) - reqs[T] = reqs[T] + 1 - exp_on.origin_tech = list2params(reqs) - investigate_log("Experimentor has set the origin tech of [exp_on] to [exp_on.origin_tech]", "experimentor") if(prob(EFFECT_PROB_VERYLOW-badThingCoeff) && prob(87)) var/globalMalf = rand(1,87) @@ -585,7 +577,6 @@ var/list/temp_tech = ConvertReqString2List(process.origin_tech) for(var/T in temp_tech) linked_console.files.UpdateTech(T, temp_tech[T]) - linked_console.files.UpdateDesigns(process,temp_tech) src.updateUsrDialog() return @@ -639,6 +630,7 @@ name = realName cooldownMax = rand(60,300) realProc = pick("teleport","explode","rapidDupe","petSpray","flash","clean","floofcannon") + origin_tech = pick("engineering=[rand(2,5)]","magnets=[rand(2,5)]","plasmatech=[rand(2,5)]","programming=[rand(2,5)]","powerstorage=[rand(2,5)]") /obj/item/weapon/relic/attack_self(mob/user) if(revealed) diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 20093e7771b..ad90dcce9f6 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -72,10 +72,10 @@ Note: Must be placed west/left of and R&D console to function. for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) T += M.rating materials.max_amount = T * 75000 - T = 0 + T = 1.2 for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) - T += (M.rating/3) - efficiency_coeff = max(T, 1) + T -= M.rating/10 + efficiency_coeff = min(max(0, T), 1) /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 = materials.amount(M) @@ -103,8 +103,6 @@ Note: Must be placed west/left of and R&D console to function. for(var/obj/I in component_parts) if(istype(I, /obj/item/weapon/reagent_containers/glass/beaker)) reagents.trans_to(I, reagents.total_volume) - if(I.reliability != 100 && crit_fail) - I.crit_fail = 1 I.loc = src.loc for(var/obj/item/weapon/reagent_containers/glass/G in component_parts) reagents.trans_to(G, G.reagents.maximum_volume) diff --git a/code/modules/research/rd-readme.dm b/code/modules/research/rd-readme.dm index 8680460c227..1ecc9dbb0da 100644 --- a/code/modules/research/rd-readme.dm +++ b/code/modules/research/rd-readme.dm @@ -22,7 +22,7 @@ materials. While researching you are dealing with two different types of information: Technology Paths and Device Designs. Technology Paths are the "Tech Trees" of the game. You start out with a number of them at the game start and they are improved by using the Destructive Analyzer. By themselves, they don't do a whole lot. However, they unlock Device Designs. This is the information used -by the circuit imprinter and the protolathe to produce objects. It also tracks the current reliability of that particular design. +by the circuit imprinter and the protolathe to produce objects. //EXISTING TECH Each tech path should have at LEAST one item at every level (levels 1 - 20). This is to allow for a more fluid progression of the diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 1e7e9b1674a..fc57e16a6e9 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -319,58 +319,62 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(linked_destroy) if(linked_destroy.busy) to_chat(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 - linked_destroy.busy = 1 - add_wait_message("Processing and Updating Database...", DECONSTRUCT_DELAY) - nanomanager.update_uis(src) - flick("d_analyzer_process", linked_destroy) - spawn(DECONSTRUCT_DELAY) - clear_wait_message() - if(linked_destroy) - linked_destroy.busy = 0 - if(!linked_destroy.hacked) - if(!linked_destroy.loaded_item) - to_chat(usr, "The destructive analyzer appears to be empty.") - menu = 0 - submenu = 0 - return - if((linked_destroy.loaded_item.reliability >= 99 - (linked_destroy.decon_mod * 3)) || linked_destroy.loaded_item.crit_fail) - var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) - for(var/T in temp_tech) - if(prob(linked_destroy.loaded_item.reliability)) //If deconstructed item is not reliable enough its just being wasted, else it is pocessed - files.UpdateTech(T, temp_tech[T]) //Check if deconstructed item has research levels higher/same/one less than current ones - files.UpdateDesigns(linked_destroy.loaded_item, temp_tech, src) //If if such reseach type found all the known designs are checked for having this research type in them - menu = 0 //If design have it it gains some reliability - submenu = 0 - else //Same design always gain quality - menu = 2 //Crit fail gives the same design a lot of reliability, like really a lot - submenu = 0 - if(linked_lathe) //Also sends salvaged materials to a linked protolathe, if any. - for(var/material in linked_destroy.loaded_item.materials) - linked_lathe.materials.insert_amount(min((linked_lathe.materials.max_amount - linked_lathe.materials.total_amount), (linked_destroy.loaded_item.materials[material]*(linked_destroy.decon_mod/10))), material) - linked_destroy.loaded_item = null - else + return + var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) + var/cancontinue = FALSE + for(var/T in temp_tech) + if(files.IsTechHigher(T, temp_tech[T])) + cancontinue = TRUE + break + if(!cancontinue) + var/choice = input("This item does not raise tech levels. Proceed destroying loaded item anyway?") in list("Proceed", "Cancel") + if(choice == "Cancel" || !linked_destroy) + return + linked_destroy.busy = 1 + add_wait_message("Processing and Updating Database...", DECONSTRUCT_DELAY) + nanomanager.update_uis(src) + flick("d_analyzer_process", linked_destroy) + spawn(DECONSTRUCT_DELAY) + clear_wait_message() + if(linked_destroy) + linked_destroy.busy = 0 + if(!linked_destroy.hacked) + if(!linked_destroy.loaded_item) + to_chat(usr, "The destructive analyzer appears to be empty.") menu = 0 submenu = 0 - for(var/obj/I in linked_destroy.contents) - for(var/mob/M in I.contents) - M.death() - if(istype(I,/obj/item/stack/sheet))//Only deconsturcts one sheet at a time instead of the entire stack - var/obj/item/stack/sheet/S = I - if(S.amount > 1) - S.amount-- - linked_destroy.loaded_item = S - else - qdel(S) - linked_destroy.icon_state = "d_analyzer" + return + for(var/T in temp_tech) + var/datum/tech/KT = files.known_tech[T] //For stat logging of high levels + if(files.IsTechHigher(T, temp_tech[T]) && KT.level >= 5) //For stat logging of high levels + feedback_add_details("high_research_level","[KT][KT.level + 1]") //+1 to show the level which we're about to get + files.UpdateTech(T, temp_tech[T]) + menu = 0 + submenu = 0 + if(linked_lathe) //Also sends salvaged materials to a linked protolathe, if any. + for(var/material in linked_destroy.loaded_item.materials) + linked_lathe.materials.insert_amount(min((linked_lathe.materials.max_amount - linked_lathe.materials.total_amount), (linked_destroy.loaded_item.materials[material]*(linked_destroy.decon_mod/10))), material) + linked_destroy.loaded_item = null + else + menu = 0 + submenu = 0 + for(var/obj/I in linked_destroy.contents) + for(var/mob/M in I.contents) + M.death() + if(istype(I,/obj/item/stack/sheet))//Only deconsturcts one sheet at a time instead of the entire stack + var/obj/item/stack/sheet/S = I + if(S.amount > 1) + S.amount-- + linked_destroy.loaded_item = S else - if(!(I in linked_destroy.component_parts)) - qdel(I) - linked_destroy.icon_state = "d_analyzer" - use_power(250) - nanomanager.update_uis(src) + qdel(S) + linked_destroy.icon_state = "d_analyzer" + else + if(!(I in linked_destroy.component_parts)) + qdel(I) + linked_destroy.icon_state = "d_analyzer" + use_power(250) + nanomanager.update_uis(src) else if(href_list["sync"]) //Sync the research holder with all the R&D consoles in the game that aren't sync protected. if(!sync) @@ -399,13 +403,12 @@ won't update every console in existence) but it's more of a hassle to do. Also, sync = !sync else if(href_list["build"]) //Causes the Protolathe to build something. - var/coeff - if(linked_lathe) - coeff = linked_lathe.efficiency_coeff - else - coeff = 1 - var/g2g = 1 if(linked_lathe) + if(linked_lathe.busy) + to_chat(usr, "Protolathe is busy at the moment.") + return + var/coeff = linked_lathe.efficiency_coeff + var/g2g = 1 var/datum/design/being_built = files.known_designs[href_list["build"]] if(being_built) var/power = 2000 @@ -416,15 +419,11 @@ won't update every console in existence) but it's more of a hassle to do. Also, for(var/M in being_built.materials) power += round(being_built.materials[M] * amount / 5) power = max(2000, power) - if(linked_lathe.busy) - g2g = 0 var/key = usr.key //so we don't lose the info during the spawn delay if(!(being_built.build_type & PROTOLATHE)) g2g = 0 message_admins("Protolathe exploit attempted by [key_name(usr, usr.client)]!") - - if(g2g) //If input is incorrect, nothing happens var/time_to_construct = PROTOLATHE_CONSTRUCT_DELAY * amount / coeff var/enough_materials = 1 @@ -437,7 +436,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/list/efficient_mats = list() for(var/MAT in being_built.materials) - efficient_mats[MAT] = being_built.materials[MAT] + efficient_mats[MAT] = being_built.materials[MAT]*coeff if(!linked_lathe.materials.has_materials(efficient_mats, amount)) src.visible_message("The [src.name] beeps, \"Not enough materials to complete prototype.\"") @@ -445,7 +444,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, g2g = 0 else for(var/R in being_built.reagents) - if(!linked_lathe.reagents.has_reagent(R, being_built.reagents[R])) + if(!linked_lathe.reagents.has_reagent(R, being_built.reagents[R])*coeff) src.visible_message("The [src.name] beeps, \"Not enough reagents to complete prototype.\"") enough_materials = 0 g2g = 0 @@ -453,7 +452,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(enough_materials) linked_lathe.materials.use_amount(efficient_mats, amount) for(var/R in being_built.reagents) - linked_lathe.reagents.remove_reagent(R, being_built.reagents[R]) + linked_lathe.reagents.remove_reagent(R, being_built.reagents[R]*coeff) var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes. var/O = being_built.locked @@ -464,7 +463,6 @@ 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 = 100 if(!istype(new_item, /obj/item/stack/sheet)) // To avoid materials dupe glitches new_item.materials = efficient_mats.Copy() if(O) @@ -487,6 +485,9 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/coeff = linked_imprinter.efficiency_coeff var/g2g = 1 if(linked_imprinter) + if(linked_imprinter.busy) + to_chat(usr, "Circuit Imprinter is busy at the moment.") + return var/datum/design/being_built = null being_built = files.known_designs[href_list["imprint"]] if(being_built) @@ -494,8 +495,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, for(var/M in being_built.materials) power += round(being_built.materials[M] / 5) power = max(2000, power) - if(linked_imprinter.busy) - g2g = 0 if(!(being_built.build_type & IMPRINTER)) g2g = 0 message_admins("Circuit imprinter exploit attempted by [key_name(usr, usr.client)]!") @@ -525,7 +524,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, spawn(IMPRINTER_DELAY) if(g2g) var/obj/item/new_item = new P(src) - new_item.reliability = 100 new_item.loc = linked_imprinter.loc linked_imprinter.busy = 0 clear_wait_message() @@ -710,7 +708,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/list/disk_data = list() data["disk_data"] = disk_data disk_data["name"] = d_disk.blueprint.name - disk_data["reliability"] = d_disk.blueprint.reliability var/b_type = d_disk.blueprint.build_type var/list/lathe_types = list() disk_data["lathe_types"] = lathe_types @@ -743,7 +740,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/list/loaded_item_list = list() data["loaded_item"] = loaded_item_list loaded_item_list["name"] = linked_destroy.loaded_item.name - loaded_item_list["reliability"] = linked_destroy.loaded_item.reliability var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech) var/list/tech_list = list() loaded_item_list["origin_tech"] = tech_list @@ -767,6 +763,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(submenu == 1) var/list/designs_list = list() data["matching_designs"] = designs_list + var/coeff = linked_lathe.efficiency_coeff for(var/datum/design/D in matching_designs) var/list/design_list = list() designs_list[++designs_list.len] = design_list @@ -779,7 +776,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/list/material_list = list() materials_list[++materials_list.len] = material_list material_list["name"] = CallMaterialName(M) - material_list["amount"] = D.materials[M] + material_list["amount"] = D.materials[M]*coeff var/t = linked_lathe.check_mat(D, M) if(t < 1) @@ -792,7 +789,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/list/material_list = list() materials_list[++materials_list.len] = material_list material_list["name"] = CallMaterialName(R) - material_list["amount"] = D.reagents[R] + material_list["amount"] = D.reagents[R]*coeff var/t = linked_lathe.check_mat(D, R) if(t < 1) diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index 8386c79377d..ac1ed47f7b3 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -51,8 +51,8 @@ research holder datum. // known is a list of id -> datum mappings var/list/possible_tech = list() //List of all tech in the game that players have access to (barring special events). var/list/known_tech = list() //List of locally known tech. - var/list/possible_designs = list() //List of all designs (at base reliability). - var/list/known_designs = list() //List of available designs (at base reliability). + var/list/possible_designs = list() //List of all designs + var/list/known_designs = list() //List of available designs /datum/research/New() //Insert techs into possible_tech here. Known_tech automatically updated. // MON DIEU!!! @@ -102,15 +102,11 @@ research holder datum. /datum/research/proc/AddDesign2Known(var/datum/design/D) if(D.id in known_designs) - // NOTE: This is for reliability only - This is on the chopping block - var/datum/design/known = known_designs[D.id] - if(D.reliability > known.reliability) - known.reliability = D.reliability return // Global datums make me nervous known_designs[D.id] = D -//Refreshes known_tech and known_designs list. Then updates the reliability vars of the designs in the known_designs list. +//Refreshes known_tech and known_designs list. //Input/Output: n/a /datum/research/proc/RefreshResearch() for(var/datum/tech/PT in possible_tech) @@ -122,10 +118,6 @@ research holder datum. for(var/v in known_tech) var/datum/tech/T = known_tech[v] T.level = Clamp(T.level, 0, 20) - for(var/v in known_designs) - var/datum/design/D = known_designs[v] - // NOTE: reliability stuff, axe this later - D.CalcReliability(known_tech) //Refreshes the levels of a given tech. //Input: Tech's ID and Level; Output: null @@ -133,22 +125,20 @@ research holder datum. var/datum/tech/KT = known_tech[ID] if(KT) if(KT.level <= level) - // Will bump the tech to (value_of_target - 1) automatically - - // after that it'll only bump it up by 1 until it's greater + // Will bump the tech to (value_of_target) automatically - + // after that it'll bump it up by 1 until it's greater // than the source tech - KT.level = max((KT.level + 1), (level - 1)) + KT.level = max((KT.level + 1), level) -/datum/research/proc/UpdateDesigns(var/obj/item/I, var/list/temp_tech) - for(var/T in temp_tech) - if(temp_tech[T] - 1 >= known_tech[T]) - for(var/datum/design/D in known_designs) - // NOTE: icky reliability stuff - if(D.req_tech[T]) - D.reliability = min(100, D.reliability + 1) - if(D.build_path == I.type) - D.reliability = min(100, D.reliability + rand(1,3)) - if(I.crit_fail) - D.reliability = min(100, D.reliability + rand(3, 5)) +//Checks if the origin level can raise current tech levels +//Input: Tech's ID and Level; Output: TRUE for yes, FALSE for no +/datum/research/proc/IsTechHigher(ID, level) + var/datum/tech/KT = known_tech[ID] + if(KT) + if(KT.level <= level) + return TRUE + else + return FALSE /datum/research/proc/FindDesignByID(var/id) return known_designs[id] @@ -210,63 +200,63 @@ research holder datum. //Trunk Technologies (don't require any other techs and you start knowning them). -datum/tech/materials +/datum/tech/materials name = "Materials Research" desc = "Development of new and improved materials." id = "materials" max_level = 7 -datum/tech/engineering +/datum/tech/engineering name = "Engineering Research" desc = "Development of new and improved engineering parts and methods." id = "engineering" - max_level = 6 + max_level = 7 -datum/tech/plasmatech +/datum/tech/plasmatech name = "Plasma Research" desc = "Research into the mysterious substance colloqually known as 'plasma'." id = "plasmatech" - max_level = 4 + max_level = 7 rare = 3 -datum/tech/powerstorage +/datum/tech/powerstorage name = "Power Manipulation Technology" desc = "The various technologies behind the storage and generation of electicity." id = "powerstorage" - max_level = 6 + max_level = 7 -datum/tech/bluespace +/datum/tech/bluespace name = "'Blue-space' Research" desc = "Research into the sub-reality known as 'blue-space'." id = "bluespace" - max_level = 6 + max_level = 7 rare = 2 -datum/tech/biotech +/datum/tech/biotech name = "Biological Technology" desc = "Research into the deeper mysteries of life and organic substances." id = "biotech" - max_level = 5 + max_level = 7 -datum/tech/combat +/datum/tech/combat name = "Combat Systems Research" desc = "The development of offensive and defensive systems." id = "combat" - max_level=6 + max_level = 7 -datum/tech/magnets +/datum/tech/magnets name = "Electromagnetic Spectrum Research" desc = "Research into the electromagnetic spectrum. No clue how they actually work, though." id = "magnets" - max_level = 6 + max_level = 7 -datum/tech/programming +/datum/tech/programming name = "Data Theory Research" desc = "The development of new computer and artificial intelligence and data storage systems." id = "programming" - max_level = 5 + max_level = 7 -datum/tech/syndicate +/datum/tech/syndicate name = "Illegal Technologies Research" desc = "The study of technologies that violate standard Nanotrasen regulations." id = "syndicate" @@ -352,7 +342,7 @@ datum/tech/robotics name = "\improper Component Design Disk" desc = "A disk for storing device design data for construction in lathes." icon_state = "datadisk2" - materials = list(MAT_METAL=30, MAT_GLASS=10) + materials = list(MAT_METAL=100, MAT_GLASS=100) var/datum/design/blueprint // I'm doing this so that disk paths with pre-loaded designs don't get weird names // Otherwise, I'd use "initial()" diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 0fa680faf6a..787fdf67350 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -260,7 +260,7 @@ temp_server.files.RefreshResearch() else if(href_list["reset_design"]) - var/choice = alert("Design Data Deletion", "Are you sure you want to delete this design? If you still have the prerequisites for the design, it'll reset to its base reliability. Data lost cannot be recovered.", "Continue", "Cancel") + var/choice = alert("Design Data Deletion", "Are you sure you want to delete this design? Data lost cannot be recovered.", "Continue", "Cancel") if(choice == "Continue") for(var/datum/design/D in temp_server.files.known_designs) if(D.id == href_list["reset_design"]) diff --git a/code/modules/research/xenoarchaeology/chemistry.dm b/code/modules/research/xenoarchaeology/chemistry.dm index b198bd02459..7094f2d00f4 100644 --- a/code/modules/research/xenoarchaeology/chemistry.dm +++ b/code/modules/research/xenoarchaeology/chemistry.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/device.dmi' icon_state = "solution_tray" materials = list(MAT_GLASS=5) - w_class = 1 + w_class = WEIGHT_CLASS_TINY amount_per_transfer_from_this = 1 possible_transfer_amounts = list(1, 2) volume = 2 @@ -51,4 +51,4 @@ obj/item/weapon/reagent_containers/glass/solution_tray/attackby(obj/item/weapon/ /obj/item/weapon/reagent_containers/glass/beaker/fuel name = "beaker 'fuel'" - list_reagents = list("fuel" = 50) \ No newline at end of file + list_reagents = list("fuel" = 50) diff --git a/code/modules/research/xenoarchaeology/geosample.dm b/code/modules/research/xenoarchaeology/geosample.dm index e4aaa4a554b..6d32b4e0ca9 100644 --- a/code/modules/research/xenoarchaeology/geosample.dm +++ b/code/modules/research/xenoarchaeology/geosample.dm @@ -19,7 +19,7 @@ desc = "It looks extremely delicate." icon = 'icons/obj/xenoarchaeology.dmi' icon_state = "sliver1" //0-4 - w_class = 1 + w_class = WEIGHT_CLASS_TINY sharp = 1 //item_state = "electronic" var/source_rock = "/turf/simulated/mineral/" diff --git a/code/modules/research/xenoarchaeology/tools/tools.dm b/code/modules/research/xenoarchaeology/tools/tools.dm index 6ac7aee6a2b..b17569da383 100644 --- a/code/modules/research/xenoarchaeology/tools/tools.dm +++ b/code/modules/research/xenoarchaeology/tools/tools.dm @@ -7,7 +7,7 @@ desc = "A coiled metallic tape used to check dimensions and lengths." icon = 'icons/obj/xenoarchaeology.dmi' icon_state = "measuring" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL //todo: dig site tape @@ -17,8 +17,8 @@ icon = 'icons/obj/mining.dmi' icon_state = "satchel" slot_flags = SLOT_BELT | SLOT_POCKET - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL storage_slots = 50 max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class - max_w_class = 3 + max_w_class = WEIGHT_CLASS_NORMAL can_hold = list(/obj/item/weapon/fossil) diff --git a/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm index d020845784c..4edf8f69d9a 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/xenoarchaeology.dmi' icon_state = "flashgun" item_state = "lampgreen" - w_class = 1 + w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_BELT var/nearest_artifact_id = "unknown" var/nearest_artifact_distance = -1 diff --git a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm index 72f85146df1..8c4ec23004c 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm @@ -19,7 +19,7 @@ icon = 'icons/obj/device.dmi' icon_state = "sampler0" item_state = "screwdriver_brown" - w_class = 1 + w_class = WEIGHT_CLASS_TINY //slot_flags = SLOT_BELT var/sampled_turf = "" var/num_stored_bags = 10 @@ -73,7 +73,7 @@ filled_bag.icon_state = "evidence" var/image/I = image("icon"=R, "layer"=FLOAT_LAYER) filled_bag.underlays += I - filled_bag.w_class = 1 + filled_bag.w_class = WEIGHT_CLASS_TINY to_chat(user, "You take a core sample of the [item_to_sample].") else diff --git a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm index 83429d509bc..ad195a0a141 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm @@ -9,7 +9,7 @@ icon = 'icons/obj/pda.dmi' icon_state = "crap" item_state = "analyzer" - w_class = 1 + w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_BELT var/list/positive_locations = list() var/datum/depth_scan/current diff --git a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm index 4e6e48b49b5..ec00023ab29 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm @@ -12,7 +12,7 @@ excavation_amount = 0.5 digsound = list('sound/weapons/thudswoosh.ogg') drill_verb = "brushing" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/weapon/pickaxe/one_pick name = "1/6 pick" @@ -24,7 +24,7 @@ excavation_amount = 1 digsound = list('sound/items/Screwdriver.ogg') drill_verb = "delicately picking" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/weapon/pickaxe/two_pick name = "1/3 pick" @@ -36,7 +36,7 @@ excavation_amount = 2 digsound = list('sound/items/Screwdriver.ogg') drill_verb = "delicately picking" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/weapon/pickaxe/three_pick name = "1/2 pick" @@ -48,7 +48,7 @@ excavation_amount = 3 digsound = list('sound/items/Screwdriver.ogg') drill_verb = "delicately picking" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/weapon/pickaxe/four_pick name = "2/3 pick" @@ -60,7 +60,7 @@ excavation_amount = 4 digsound = list('sound/items/Screwdriver.ogg') drill_verb = "delicately picking" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/weapon/pickaxe/five_pick name = "5/6 pick" @@ -72,7 +72,7 @@ excavation_amount = 5 digsound = list('sound/items/Screwdriver.ogg') drill_verb = "delicately picking" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/weapon/pickaxe/six_pick name = "1/1 pick" @@ -84,7 +84,7 @@ excavation_amount = 6 digsound = list('sound/items/Screwdriver.ogg') drill_verb = "delicately picking" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/weapon/pickaxe/hand name = "hand pickaxe" @@ -96,7 +96,7 @@ excavation_amount = 15 digsound = list('sound/items/Crowbar.ogg') drill_verb = "clearing" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL /obj/item/weapon/pickaxe/robotic name = "robotic pickaxe" @@ -125,7 +125,7 @@ item_state = "syringe_kit" foldable = /obj/item/stack/sheet/cardboard //BubbleWrap storage_slots = 7 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL can_hold = list(/obj/item/weapon/pickaxe/brush,\ /obj/item/weapon/pickaxe/one_pick,\ /obj/item/weapon/pickaxe/two_pick,\ @@ -134,7 +134,7 @@ /obj/item/weapon/pickaxe/five_pick,\ /obj/item/weapon/pickaxe/six_pick) max_combined_w_class = 17 - max_w_class = 4 + max_w_class = WEIGHT_CLASS_BULKY use_to_pickup = 1 // for picking up broken bulbs, not that most people will try /obj/item/weapon/storage/box/excavation/New() diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index c42b6e8286c..c3a0c1a030a 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -7,7 +7,7 @@ icon = 'icons/mob/slimes.dmi' icon_state = "grey slime extract" force = 1 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throwforce = 0 throw_speed = 3 throw_range = 6 @@ -121,7 +121,7 @@ /obj/item/slimepotion name = "slime potion" desc = "A hard yet gelatinous capsule excreted by a slime, containing mysterious substances." - w_class = 1 + w_class = WEIGHT_CLASS_TINY origin_tech = "biotech=4" /obj/item/slimepotion/afterattack(obj/item/weapon/reagent_containers/target, mob/user, proximity_flag) @@ -179,7 +179,7 @@ desc = "A miraculous chemical mix that can raise the intelligence of creatures to human levels." icon = 'icons/obj/chemical.dmi' icon_state = "bottle19" - origin_tech = "biotech=5" + origin_tech = "biotech=6" var/list/not_interested = list() var/being_used = 0 var/sentience_type = SENTIENCE_ORGANIC @@ -350,6 +350,7 @@ desc = "A potent chemical mix that will remove the slowdown from any item." icon = 'icons/obj/chemical.dmi' icon_state = "bottle3" + origin_tech = "biotech=5" /obj/item/slimepotion/speed/afterattack(obj/item/C, mob/user, proximity_flag) if(!proximity_flag) @@ -371,6 +372,7 @@ desc = "A potent chemical mix that will fireproof any article of clothing. Has three uses." icon = 'icons/obj/chemical.dmi' icon_state = "bottle17" + origin_tech = "biotech=5" var/uses = 3 /obj/item/slimepotion/fireproof/afterattack(obj/item/clothing/C, mob/user, proximity_flag) @@ -552,7 +554,7 @@ singular_name = "floor tile" desc = "Through a series of micro-teleports, these tiles let people move at incredible speeds." icon_state = "tile-bluespace" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL force = 6 materials = list(MAT_METAL=500) throwforce = 10 @@ -575,7 +577,7 @@ singular_name = "floor tile" desc = "Time seems to flow very slowly around these tiles." icon_state = "tile-sepia" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL force = 6 materials = list(MAT_METAL=500) throwforce = 10 diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 5903035903b..7dc0f1062e4 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -263,7 +263,7 @@ timer = world.time priority_announcement.Announce("The Emergency Shuttle has left the station. Estimate [timeLeft(600)] minutes until the shuttle docks at Central Command.") for(var/mob/M in player_list) - if(!isnewplayer(M) && !M.client.karma_spent && !M.get_preference(DISABLE_KARMA_REMINDER)) + if(!isnewplayer(M) && !M.client.karma_spent && !M.client.ckey in karma_spenders && !M.get_preference(DISABLE_KARMA_REMINDER)) to_chat(M, "You have not yet spent your karma for the round; was there a player worthy of receiving your reward? Look under OOC tab, Award Karma.") if(SHUTTLE_ESCAPE) diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 24d76267b13..d24853a7948 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -183,18 +183,17 @@ objective.unit_completed(cost) msg += "+[cost]: [tech.name] - new data.
" - // Sell max reliablity designs + // Sell designs if(istype(thing, /obj/item/weapon/disk/design_disk)) var/obj/item/weapon/disk/design_disk/disk = thing - if(!disk.blueprint) continue + if(!disk.blueprint) + continue var/datum/design/design = disk.blueprint - if(design.id in shuttle_master.researchDesigns) continue - - if(initial(design.reliability) < 100 && design.reliability >= 100) - // Maxed out reliability designs only. - shuttle_master.points += shuttle_master.points_per_design - shuttle_master.researchDesigns += design.id - msg += "+[shuttle_master.points_per_design]: Reliable [design.name] design.
" + if(design.id in shuttle_master.researchDesigns) + continue + shuttle_master.points += shuttle_master.points_per_design + shuttle_master.researchDesigns += design.id + msg += "+[shuttle_master.points_per_design]: [design.name] design.
" // Sell exotic plants if(istype(thing, /obj/item/seeds)) @@ -246,6 +245,7 @@ /obj/machinery/teleport/station, /obj/machinery/teleport/hub, /obj/machinery/telepad, + /obj/machinery/telepad_cargo, /obj/machinery/clonepod, /obj/effect/hierophant, /obj/item/device/warp_cube, diff --git a/code/modules/spacepods/equipment.dm b/code/modules/spacepods/equipment.dm index 65b3b9232b8..d1f78ffdf28 100644 --- a/code/modules/spacepods/equipment.dm +++ b/code/modules/spacepods/equipment.dm @@ -269,7 +269,7 @@ desc = "A key for a spacepod lock." icon = 'icons/vehicles/spacepod.dmi' icon_state = "podkey" - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/id = 0 // Key - Lock Interactions diff --git a/code/modules/spacepods/parts.dm b/code/modules/spacepods/parts.dm index 757d7a95dcc..4ae9f73025b 100644 --- a/code/modules/spacepods/parts.dm +++ b/code/modules/spacepods/parts.dm @@ -6,7 +6,7 @@ name="Space Pod Core" icon_state = "core" flags = CONDUCT - origin_tech = "programming=2;materials=3;bluespace=2;engineering=3" + origin_tech = "programming=2;materials=2;biotech=2;engineering=2" /obj/item/pod_parts/pod_frame name = "Space Pod Frame" diff --git a/code/modules/surgery/organs/augments_eyes.dm b/code/modules/surgery/organs/augments_eyes.dm index 1c66bd2c31b..1e419fb1b2b 100644 --- a/code/modules/surgery/organs/augments_eyes.dm +++ b/code/modules/surgery/organs/augments_eyes.dm @@ -5,7 +5,7 @@ implant_overlay = "eye_implant_overlay" slot = "eye_sight" parent_organ = "eyes" - w_class = 1 + w_class = WEIGHT_CLASS_TINY var/vision_flags = 0 var/dark_view = 0 @@ -42,7 +42,7 @@ desc = "These cybernetic eye implants will give you X-ray vision. Blinking is futile." eye_colour = list(0, 0, 0) implant_color = "#000000" - origin_tech = "materials=6;programming=4;biotech=6;magnets=5" + origin_tech = "materials=4;programming=4;biotech=6;magnets=4" vision_flags = SEE_MOBS | SEE_OBJS | SEE_TURFS dark_view = 8 see_invisible = SEE_INVISIBLE_MINIMUM @@ -54,7 +54,7 @@ implant_color = "#FFCC00" vision_flags = SEE_MOBS flash_protect = -1 - origin_tech = "materials=6;programming=4;biotech=5;magnets=5;syndicate=4" + origin_tech = "materials=5;programming=4;biotech=4;magnets=4;syndicate=1" aug_message = "You see prey everywhere you look..." // HUD implants @@ -83,7 +83,7 @@ desc = "These cybernetic eye implants will display a medical HUD over everything you see." eye_colour = list(0,0,208) implant_color = "#00FFFF" - origin_tech = "materials=4;programming=3;biotech=4" + origin_tech = "materials=4;programming=4;biotech=4" aug_message = "You suddenly see health bars floating above people's heads..." HUD_type = DATA_HUD_MEDICAL_ADVANCED @@ -92,7 +92,7 @@ desc = "These cybernetic eye implants will display a security HUD over everything you see." eye_colour = list(208,0,0) implant_color = "#CC0000" - origin_tech = "materials=4;programming=4;biotech=3;combat=1" + origin_tech = "materials=4;programming=4;biotech=3;combat=3" aug_message = "Job indicator icons pop up in your vision. That is not a certified surgeon..." HUD_type = DATA_HUD_SECURITY_ADVANCED @@ -101,7 +101,7 @@ name = "welding shield implant" desc = "These reactive micro-shields will protect you from welders and flashes without obscuring your vision." slot = "eye_shield" - origin_tech = "materials=4;biotech=3" + origin_tech = "materials=4;biotech=3;engineering=4;plasmatech=3" implant_color = "#101010" flash_protect = 2 // Welding with thermals will still hurt your eyes a bit. diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 278941d87e4..4a7aa2554fc 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -48,7 +48,7 @@ var/obj/item/r_hand_obj = null implant_color = "#DE7E00" slot = "brain_antidrop" - origin_tech = "materials=5;programming=4;biotech=4" + origin_tech = "materials=4;programming=5;biotech=4" actions_types = list(/datum/action/item_action/organ_action/toggle) /obj/item/organ/internal/cyberimp/brain/anti_drop/ui_action_click() @@ -126,7 +126,7 @@ desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned." implant_color = "#FFFF00" slot = "brain_antistun" - origin_tech = "materials=6;programming=4;biotech=5" + origin_tech = "materials=5;programming=4;biotech=5" /obj/item/organ/internal/cyberimp/brain/anti_stun/on_life() ..() @@ -168,7 +168,7 @@ var/synthesizing = 0 var/poison_amount = 5 slot = "stomach" - origin_tech = "materials=5;programming=3;biotech=4" + origin_tech = "materials=2;powerstorage=2;biotech=2" /obj/item/organ/internal/cyberimp/chest/nutriment/on_life() if(!owner) @@ -197,14 +197,14 @@ implant_color = "#006607" hunger_threshold = NUTRITION_LEVEL_HUNGRY poison_amount = 10 - origin_tech = "materials=5;programming=3;biotech=5" + origin_tech = "materials=4;powerstorage=3;biotech=3" /obj/item/organ/internal/cyberimp/chest/reviver name = "Reviver implant" desc = "This implant will attempt to revive you if you lose consciousness. For the faint of heart!" icon_state = "chest_implant" implant_color = "#AD0000" - origin_tech = "materials=6;programming=3;biotech=6;syndicate=4" + origin_tech = "materials=5;programming=4;biotech=4" slot = "heartdrive" var/revive_cost = 0 var/reviving = 0 @@ -338,7 +338,7 @@ name = "Arm-cannon laser implant" desc = "A variant of the arm cannon implant that fires lethal laser beams. The cannon emerges from the subject's arms and remains in the shoulders when not in use." icon_state = "armcannon_lase_implant" - origin_tech = "materials=5;combat=5;biotech=4;powerstorage=4;syndicate=5"//this is kinda nutty and i might lower it + origin_tech = "materials=4;combat=4;biotech=4;powerstorage=4;syndicate=3" actions_types = list(/datum/action/item_action/organ_action/toggle) /obj/item/organ/internal/cyberimp/chest/arm_mod/lase/New() diff --git a/code/modules/surgery/organs/autoimplanter.dm b/code/modules/surgery/organs/autoimplanter.dm index 4af88abc52f..6f72deca2e1 100644 --- a/code/modules/surgery/organs/autoimplanter.dm +++ b/code/modules/surgery/organs/autoimplanter.dm @@ -3,7 +3,7 @@ desc = "A device that automatically injects a cyber-implant into the user without the hassle of extensive surgery. It has a slot to insert implants and a screwdriver slot for removing accidentally added implants." icon_state = "autoimplanter" item_state = "walkietalkie"//left as this so as to intentionally not have inhands - w_class = 2 + w_class = WEIGHT_CLASS_SMALL usesound = 'sound/weapons/circsawhit.ogg' var/obj/item/organ/internal/cyberimp/storedorgan diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index 045e34ea41e..fb52fba69f9 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -327,6 +327,10 @@ var/list/organ_cache = list() /obj/item/organ/proc/replaced(var/mob/living/carbon/human/target) return // Nothing uses this, it is always overridden +// A version of `replaced` that "flattens" the process of insertion, making organs "Plug'n'play" +// (Particularly the heart, which stops beating when removed) +/obj/item/organ/proc/safe_replace(var/mob/living/carbon/human/target) + replaced(target) /obj/item/organ/proc/surgeryize() return @@ -370,4 +374,4 @@ I use this so that this can be made better once the organ overhaul rolls out -- // The only thing the official proc does is //instantiate the list and call this proc dna.deserialize(data["dna"]) - ..() \ No newline at end of file + ..() diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index ae421c98025..071d579b0c0 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -1,9 +1,9 @@ #define PROCESS_ACCURACY 10 /obj/item/organ/internal - origin_tech = "biotech=2" + origin_tech = "biotech=3" force = 1 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throwforce = 0 var/zone = "chest" var/slot @@ -139,7 +139,7 @@ organ_tag = "heart" parent_organ = "chest" slot = "heart" - origin_tech = "biotech=3" + origin_tech = "biotech=5" var/beating = 1 dead_icon = "heart-off" var/icon_base = "heart" @@ -170,6 +170,10 @@ if(!owner) Stop() +/obj/item/organ/internal/heart/safe_replace(mob/living/carbon/human/target) + Restart() + ..() + /obj/item/organ/internal/heart/proc/Stop() beating = 0 update_icon() @@ -190,7 +194,7 @@ desc = "it needs to be pumped..." icon_state = "cursedheart-off" icon_base = "cursedheart" - origin_tech = "biotech=5" + origin_tech = "biotech=6" actions_types = list(/datum/action/item_action/organ_action/cursed_heart) var/last_pump = 0 var/pump_delay = 30 //you can pump 1 second early, for lag, but no more (otherwise you could spam heal) @@ -487,8 +491,8 @@ name = "black tumor" desc = "A tiny black mass with red tendrils trailing from it. It seems to shrivel in the light." icon_state = "blacktumor" - origin_tech = "biotech=4" - w_class = 1 + origin_tech = "biotech=5" + w_class = WEIGHT_CLASS_TINY parent_organ = "head" slot = "brain_tumor" health = 3 @@ -520,7 +524,7 @@ desc = "A tiny yellow mass shaped like..a banana?" icon_state = "honktumor" origin_tech = "biotech=1" - w_class = 1 + w_class = WEIGHT_CLASS_TINY parent_organ = "head" slot = "brain_tumor" health = 3 @@ -607,7 +611,7 @@ desc = "Let they who is worthy wear the beard of Thorbjorndottir." icon_state = "liver" origin_tech = "biotech=1" - w_class = 1 + w_class = WEIGHT_CLASS_TINY parent_organ = "head" slot = "hair_organ" diff --git a/code/modules/surgery/organs/subtypes/skrell.dm b/code/modules/surgery/organs/subtypes/skrell.dm index b8debe746e7..842088f2937 100644 --- a/code/modules/surgery/organs/subtypes/skrell.dm +++ b/code/modules/surgery/organs/subtypes/skrell.dm @@ -21,7 +21,7 @@ // Allow adjacency calculation to work properly loc = owner // Fit only pocket sized items - pocket.max_w_class = 2 + pocket.max_w_class = WEIGHT_CLASS_SMALL pocket.max_combined_w_class = 2 /obj/item/organ/internal/headpocket/on_life() diff --git a/code/modules/surgery/organs/subtypes/standard.dm b/code/modules/surgery/organs/subtypes/standard.dm index 62ae8c78d66..a6467584963 100644 --- a/code/modules/surgery/organs/subtypes/standard.dm +++ b/code/modules/surgery/organs/subtypes/standard.dm @@ -8,7 +8,7 @@ icon_name = "torso" max_damage = 100 min_broken_damage = 35 - w_class = 5 + w_class = WEIGHT_CLASS_HUGE body_part = UPPER_TORSO vital = 1 amputation_point = "spine" @@ -42,7 +42,7 @@ icon_name = "groin" max_damage = 100 min_broken_damage = 35 - w_class = 4 + w_class = WEIGHT_CLASS_BULKY // if you know what I mean ;) body_part = LOWER_TORSO vital = 1 parent_organ = "chest" @@ -55,7 +55,7 @@ icon_name = "l_arm" max_damage = 50 min_broken_damage = 30 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL body_part = ARM_LEFT parent_organ = "chest" amputation_point = "left shoulder" @@ -74,7 +74,7 @@ icon_name = "l_leg" max_damage = 50 min_broken_damage = 30 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL body_part = LEG_LEFT icon_position = LEFT parent_organ = "groin" @@ -95,7 +95,7 @@ icon_name = "l_foot" max_damage = 30 min_broken_damage = 15 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL body_part = FOOT_LEFT icon_position = LEFT parent_organ = "l_leg" @@ -121,7 +121,7 @@ icon_name = "l_hand" max_damage = 30 min_broken_damage = 15 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL body_part = HAND_LEFT parent_organ = "l_arm" amputation_point = "left wrist" @@ -152,7 +152,7 @@ name = "head" max_damage = 75 min_broken_damage = 35 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL body_part = HEAD vital = 1 parent_organ = "chest" diff --git a/code/modules/surgery/organs/subtypes/xenos.dm b/code/modules/surgery/organs/subtypes/xenos.dm index 5e771931165..8f4434f41bc 100644 --- a/code/modules/surgery/organs/subtypes/xenos.dm +++ b/code/modules/surgery/organs/subtypes/xenos.dm @@ -36,8 +36,8 @@ /obj/item/organ/internal/xenos/plasmavessel name = "xeno plasma vessel" icon_state = "plasma" - origin_tech = "biotech=5;plasmatech=2" - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL + origin_tech = "biotech=5;plasmatech=4" parent_organ = "chest" slot = "plasmavessel" alien_powers = list(/mob/living/carbon/alien/humanoid/verb/plant, /mob/living/carbon/alien/humanoid/verb/transfer_plasma) @@ -56,7 +56,7 @@ /obj/item/organ/internal/xenos/plasmavessel/queen name = "bloated xeno plasma vessel" icon_state = "plasma_large" - origin_tech = "biotech=6;plasma=3" + origin_tech = "biotech=6;plasmatech=4" stored_plasma = 200 max_plasma = 500 plasma_rate = 25 @@ -127,7 +127,7 @@ parent_organ = "head" slot = "hivenode" origin_tech = "biotech=5;magnets=4;bluespace=3" - w_class = 1 + w_class = WEIGHT_CLASS_TINY alien_powers = list(/mob/living/carbon/alien/humanoid/verb/whisp) /obj/item/organ/internal/xenos/hivenode/insert(mob/living/carbon/M, special = 0) @@ -163,6 +163,6 @@ icon_state = "eggsac" parent_organ = "groin" slot = "eggsac" - w_class = 4 - origin_tech = "biotech=8" + w_class = WEIGHT_CLASS_BULKY + origin_tech = "biotech=6" alien_powers = list(/mob/living/carbon/alien/humanoid/queen/verb/lay_egg) diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index b0014a391a3..37e1aebe089 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -5,7 +5,7 @@ icon_state = "retractor" materials = list(MAT_METAL=6000, MAT_GLASS=3000) flags = CONDUCT - w_class = 2 + w_class = WEIGHT_CLASS_SMALL origin_tech = "materials=1;biotech=1" @@ -16,7 +16,7 @@ icon_state = "hemostat" materials = list(MAT_METAL=5000, MAT_GLASS=2500) flags = CONDUCT - w_class = 1 + w_class = WEIGHT_CLASS_TINY origin_tech = "materials=1;biotech=1" attack_verb = list("attacked", "pinched") @@ -28,7 +28,7 @@ icon_state = "cautery" materials = list(MAT_METAL=2500, MAT_GLASS=750) flags = CONDUCT - w_class = 1 + w_class = WEIGHT_CLASS_TINY origin_tech = "materials=1;biotech=1" attack_verb = list("burnt") @@ -44,7 +44,7 @@ force = 15.0 sharp = 1 edge = 1 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL origin_tech = "materials=1;biotech=1" attack_verb = list("drilled") @@ -64,7 +64,7 @@ force = 10.0 sharp = 1 edge = 1 - w_class = 1 + w_class = WEIGHT_CLASS_TINY throwforce = 5.0 throw_speed = 3 throw_range = 5 @@ -124,12 +124,12 @@ force = 15.0 sharp = 1 edge = 1 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL throwforce = 9.0 throw_speed = 3 throw_range = 5 materials = list(MAT_METAL=10000, MAT_GLASS=6000) - origin_tech = "materials=1;biotech=1" + origin_tech = "biotech=1;combat=1" attack_verb = list("attacked", "slashed", "sawed", "cut") //misc, formerly from code/defines/weapons.dm @@ -138,7 +138,7 @@ icon = 'icons/obj/surgery.dmi' icon_state = "bone-gel" force = 0 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL throwforce = 1.0 origin_tech = "materials=1;biotech=1" @@ -149,7 +149,7 @@ force = 0 throwforce = 1.0 origin_tech = "materials=1;biotech=1" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL /obj/item/weapon/bonesetter name = "bone setter" @@ -159,7 +159,7 @@ throwforce = 9.0 throw_speed = 3 throw_range = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL attack_verb = list("attacked", "hit", "bludgeoned") origin_tech = "materials=1;biotech=1" @@ -168,6 +168,6 @@ desc = "Nanotrasen brand surgical drapes provide optimal safety and infection control." icon = 'icons/obj/surgery.dmi' icon_state = "surgical_drapes" - w_class = 1 + w_class = WEIGHT_CLASS_SMALL origin_tech = "biotech=1" attack_verb = list("slapped") diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm index 113d2abd751..f2d9ad86436 100644 --- a/code/modules/telesci/bscrystal.dm +++ b/code/modules/telesci/bscrystal.dm @@ -4,8 +4,8 @@ desc = "A glowing bluespace crystal, not much is known about how they work. It looks very delicate." icon = 'icons/obj/telescience.dmi' icon_state = "bluespace_crystal" - w_class = 1 - origin_tech = "bluespace=4;materials=3" + w_class = WEIGHT_CLASS_TINY + origin_tech = "bluespace=6;materials=3" points = 50 var/blink_range = 8 // The teleport range when crushed/thrown at someone. refined_type = /obj/item/stack/sheet/bluespace_crystal @@ -44,7 +44,7 @@ /obj/item/weapon/ore/bluespace_crystal/artificial name = "artificial bluespace crystal" desc = "An artificially made bluespace crystal, it looks delicate." - origin_tech = "bluespace=2" + origin_tech = "bluespace=3;plasmatech=4" blink_range = 4 // Not as good as the organic stuff! points = 0 // nice try refined_type = null @@ -58,7 +58,7 @@ var/global/list/datum/stack_recipe/bluespace_crystal_recipes = list(new/datum/st icon = 'icons/obj/telescience.dmi' icon_state = "polycrystal" desc = "A stable polycrystal, made of fused-together bluespace crystals. You could probably break one off." - origin_tech = "bluespace=4;materials=3" + origin_tech = "bluespace=6;materials=3" attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed") toolspeed = 1 usesound = 'sound/items/Deconstruct.ogg' diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index 7558fd602ee..8de7977ce2f 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -4,9 +4,9 @@ var/list/GPS_list = list() desc = "Helping lost spacemen find their way through the planets since 2016." icon = 'icons/obj/telescience.dmi' icon_state = "gps-c" - w_class = 2 + w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_BELT - origin_tech = "programming=2;engineering=2" + origin_tech = "materials=2;magnets=1;bluespace=2" var/gpstag = "COM0" var/emped = 0 var/turf/locked_location @@ -32,7 +32,7 @@ var/list/GPS_list = list() emped = FALSE overlays -= "emp" overlays += "working" - + /obj/item/device/gps/AltClick(mob/user) if(CanUseTopic(user, inventory_state) != STATUS_INTERACTIVE) return 1 //user not valid to use gps @@ -51,7 +51,7 @@ var/list/GPS_list = list() if(!tracking) to_chat(user, "[src] is turned off. Use alt+click to toggle it back on.") return - + var/obj/item/device/gps/t = "" var/gps_window_height = 110 + GPS_list.len * 20 // Variable window height, depending on how many GPS units there are to show if(emped) @@ -82,12 +82,12 @@ var/list/GPS_list = list() /obj/item/device/gps/Topic(href, href_list) if(..(state = inventory_state)) return 1 - + if(href_list["tag"] ) var/a = input("Please enter desired tag.", name, gpstag) as text|null if(!a || ..(state = inventory_state)) return 1 - + a = uppertext(sanitize(copytext(a, 1, 5))) if(src.loc == usr) gpstag = a @@ -112,8 +112,8 @@ var/list/GPS_list = list() gpstag = "BORG0" desc = "A mining cyborg internal positioning system. Used as a recovery beacon for damaged cyborg assets, or a collaboration tool for mining teams." flags = NODROP - -/obj/item/device/gps/internal + +/obj/item/device/gps/internal icon_state = null flags = ABSTRACT gpstag = "Eerie Signal" @@ -162,4 +162,4 @@ var/list/GPS_list = list() clear() tagged = null fast_processing.Remove(src) - . = ..() \ No newline at end of file + . = ..() diff --git a/code/modules/vehicle/janicart.dm b/code/modules/vehicle/janicart.dm index dfdd0ffc03c..ed76e1c2d3d 100644 --- a/code/modules/vehicle/janicart.dm +++ b/code/modules/vehicle/janicart.dm @@ -36,7 +36,7 @@ desc = "An upgrade for mobile janicarts." icon = 'icons/obj/vehicles.dmi' icon_state = "upgrade" - + origin_tech = "materials=3;engineering=4" /obj/vehicle/janicart/Move(atom/OldLoc, Dir) ..() diff --git a/code/modules/vehicle/vehicle.dm b/code/modules/vehicle/vehicle.dm index 2a1ea4c7d64..bdd8ca39c90 100644 --- a/code/modules/vehicle/vehicle.dm +++ b/code/modules/vehicle/vehicle.dm @@ -61,7 +61,7 @@ desc = "A small grey key." icon = 'icons/obj/vehicles.dmi' icon_state = "key" - w_class = 1 + w_class = WEIGHT_CLASS_TINY //BUCKLE HOOKS @@ -159,4 +159,4 @@ spaceworthy = TRUE /obj/vehicle/space/Process_Spacemove(direction) - return 1 \ No newline at end of file + return 1 diff --git a/html/changelog.html b/html/changelog.html index aafd6723606..8321bac3afd 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,185 @@ -->
+

10 June 2017

+

Alffd updated:

+
    +
  • Ports Incoming5643's persistence features for Runtime from TG
  • +
  • Ports additional cat NPC emotes from TG
  • +
+

Citinited updated:

+
    +
  • Disconnecting before the shuttle leaves after having spent karma will no longer prompt you to spend karma.
  • +
+

FalseIncarnate updated:

+
    +
  • Adds Highlander Style, granted to the wielder of Highlander Claymores. This martial art allows you to deflect ranged attacks from the weapons of COWARDS. FOR THE HONOR OF THE HIGHLANDERS!
  • +
  • Highlander now equips combatants with a Highlander claymore instead of a normal claymore. FIGHT ON BROTHERS!
  • +
+ +

09 June 2017

+

Alexshreds updated:

+
    +
  • Taking mhelps no longer gives mhelping players your IC name
  • +
+

FlattyPatty updated:

+
    +
  • Added forensics gloves for the Detective.
  • +
+

Fox McCloud updated:

+
    +
  • Paramedic door is no longer diamond
  • +
  • Fixes the backwards health analyzer sprite
  • +
  • Remove adrenaline and freedom implants from R&D
  • +
  • Added chem and tracking implants to R&D
  • +
+

KasparoVy updated:

+
    +
  • Adds some sanity checking to the RCS.
  • +
  • The cargo shuttle no longer permits RCS telepads.
  • +
+

Kyep updated:

+
    +
  • glowshrooms are now destroyable with two hits from a wirecutter.
  • +
  • New 'department' shuttle, which can be sent by CC instead of the regular evac shuttle.
  • +
  • The gods have grown tired of prayers requesting freebies, and developed some new curses with which to smite those who would treat them like miracle vending machines.
  • +
+

alexkar598 updated:

+
    +
  • Surgury holosign switch has correct icon at roundstart
  • +
+

tigercat2000 updated:

+
    +
  • You can now zoom in with the Set View Range option in your Preferences tab!
  • +
+ +

08 June 2017

+

Alexshreds updated:

+
    +
  • Hyphema and Ocular Restoration are now possible to evolve from viruses
  • +
+ +

07 June 2017

+

Fethas updated:

+
    +
  • adds cardboard cutouts..now you can trick the station into thinkings it shadowlings!
  • +
+

tigercat2000 updated:

+
    +
  • Luxury versions of the bluespace shelter capsule! Currently not obtainable.
  • +
  • Black Carpet can now be crafted using a stack of carpet and a crayon.
  • +
  • Black fancy tables can now be crafted using Black Carpet.
  • +
  • Shower curtains can now be recoloured with crayons, unscrewed from the floor, disassembled with wire cutters, and reassembled using cloth, plastic, and a metal rod.
  • +
+ +

06 June 2017

+

DarkPyrolord updated:

+
    +
  • Plasmamen should be able to become vampires on normal vampire rounds.
  • +
+

Fox McCloud updated:

+
    +
  • adjust the mech tesla, immolator, and disabler techs to bring it in line with the tech refactor
  • +
+

Kyep updated:

+
    +
  • Instagib lasers now work against non-carbon mobs, such as animals and borgs.
  • +
+

imsxz updated:

+
    +
  • Sergeant Araneus now spawns at full HP.
  • +
+ +

04 June 2017

+

Crazylemon64 updated:

+
    +
  • Clone's hearts now start operational
  • +
  • EMP'd clone pods can now be emptied again
  • +
+

FreeStylaLT updated:

+
    +
  • Cell 6 is now connected to the atmos system properly.
  • +
+ +

03 June 2017

+

FlattestGuitar updated:

+
    +
  • PACMAN boards and pico manipulators now have proper research levels
  • +
+ +

01 June 2017

+

Alexshreds updated:

+
    +
  • Ian's hardsuit is no longer invisible
  • +
+

FreeStylaLT updated:

+
    +
  • Gamma armory no longer affected by brig events.
  • +
  • Outer armory windoor access has been lowered to Security Officer+, instead of Warden+.
  • +
  • Removed a redundant door in the brig's main hallway.
  • +
  • Removed a redundant fire alarm, placed it elsewhere in the north hallway.
  • +
+

Kyep updated:

+
    +
  • ERTs no longer start penniless, unable to afford even basic food, or coffee.
  • +
+

Purpose2 updated:

+
    +
  • Adds a build-time on Tables & Racks.
  • +
+

tigercat2000 updated:

+
    +
  • Upgrading the Exosuit Fabricator and Protolathe with the right parts will lower item costs
  • +
  • Added an item to Cargo that RnD can use
  • +
  • Tweaks the tech levels for many items and the required tech levels for their designs. This is to make RnD more of a station-wide effort.
  • +
  • RnD tech level skipping skips 1 level further
  • +
  • The Destructive Analyzer will only prompt the user if tech levels will not be increased.
  • +
  • The Experimentor can no longer raise tech levels of items. It can however discover the tech levels of strange objects.
  • +
  • Removes the Autolathe from the RnD Room.
  • +
  • Removed the Forensic Scanner from RnD. Cargo can order a Forensics crate now.
  • +
+ +

31 May 2017

+

FalseIncarnate updated:

+
    +
  • Shrimp and electric eels properly lay their own eggs again if they have a suitable partner.
  • +
+

Xantholne updated:

+
    +
  • Virologists actually spawn with their skirt
  • +
  • Coroner now can finally spawn with some Medical loadout clothes.
  • +
  • Medical Doctors will stop spawning with Chemist/Virologist Skirts
  • +
  • CMOs won't spawn with a virologist skirt anymore.
  • +
  • Virologists and Chemists wont spawn with a Medical Doctor skirt anymore.
  • +
+ +

30 May 2017

+

Fruerlund updated:

+
    +
  • You can now take out pens by CTRL Clicking PDAs
  • +
+ +

29 May 2017

+

Jovaniph updated:

+
    +
  • Two welding goggles on in the atmos room
  • +
+

Purpose2 updated:

+
    +
  • Increases the size of Megaphones.
  • +
  • Headset encryption keys are now 'small' items.
  • +
+

Tayyyyyyy, FlattestGuitar updated:

+
    +
  • A targeting mode-esque message and sound when you point at something with a gun in your active hand
  • +
+ +

28 May 2017

+

Fox McCloud updated:

+
    +
  • Fixes various mobs moving around faster than intended
  • +
+

27 May 2017

Crazylemon64 updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index d53b0c4f70f..e05ac7eb89b 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4783,3 +4783,127 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - rscadd: Cloning now can be halted at any point, but ejecting too early may result in clones with missing body parts. - bugfix: Slime people now no longer spontaneously die +2017-05-28: + Fox McCloud: + - bugfix: Fixes various mobs moving around faster than intended +2017-05-29: + Jovaniph: + - rscadd: Two welding goggles on in the atmos room + Purpose2: + - tweak: Increases the size of Megaphones. + - tweak: Headset encryption keys are now 'small' items. + Tayyyyyyy, FlattestGuitar: + - rscadd: A targeting mode-esque message and sound when you point at something with + a gun in your active hand +2017-05-30: + Fruerlund: + - rscadd: You can now take out pens by CTRL Clicking PDAs +2017-05-31: + FalseIncarnate: + - bugfix: Shrimp and electric eels properly lay their own eggs again if they have + a suitable partner. + Xantholne: + - bugfix: Virologists actually spawn with their skirt + - bugfix: Coroner now can finally spawn with some Medical loadout clothes. + - bugfix: Medical Doctors will stop spawning with Chemist/Virologist Skirts + - bugfix: CMOs won't spawn with a virologist skirt anymore. + - bugfix: Virologists and Chemists wont spawn with a Medical Doctor skirt anymore. +2017-06-01: + Alexshreds: + - bugfix: Ian's hardsuit is no longer invisible + FreeStylaLT: + - bugfix: Gamma armory no longer affected by brig events. + - tweak: Outer armory windoor access has been lowered to Security Officer+, instead + of Warden+. + - tweak: Removed a redundant door in the brig's main hallway. + - tweak: Removed a redundant fire alarm, placed it elsewhere in the north hallway. + Kyep: + - bugfix: ERTs no longer start penniless, unable to afford even basic food, or coffee. + Purpose2: + - tweak: Adds a build-time on Tables & Racks. + tigercat2000: + - tweak: Upgrading the Exosuit Fabricator and Protolathe with the right parts will + lower item costs + - rscadd: Added an item to Cargo that RnD can use + - tweak: Tweaks the tech levels for many items and the required tech levels for + their designs. This is to make RnD more of a station-wide effort. + - tweak: RnD tech level skipping skips 1 level further + - tweak: The Destructive Analyzer will only prompt the user if tech levels will + not be increased. + - rscdel: The Experimentor can no longer raise tech levels of items. It can however + discover the tech levels of strange objects. + - rscdel: Removes the Autolathe from the RnD Room. + - rscdel: Removed the Forensic Scanner from RnD. Cargo can order a Forensics crate + now. +2017-06-03: + FlattestGuitar: + - bugfix: PACMAN boards and pico manipulators now have proper research levels +2017-06-04: + Crazylemon64: + - bugfix: Clone's hearts now start operational + - bugfix: EMP'd clone pods can now be emptied again + FreeStylaLT: + - bugfix: Cell 6 is now connected to the atmos system properly. +2017-06-06: + DarkPyrolord: + - bugfix: Plasmamen should be able to become vampires on normal vampire rounds. + Fox McCloud: + - tweak: adjust the mech tesla, immolator, and disabler techs to bring it in line + with the tech refactor + Kyep: + - bugfix: Instagib lasers now work against non-carbon mobs, such as animals and + borgs. + imsxz: + - bugfix: Sergeant Araneus now spawns at full HP. +2017-06-07: + Fethas: + - rscadd: adds cardboard cutouts..now you can trick the station into thinkings it + shadowlings! + tigercat2000: + - rscadd: Luxury versions of the bluespace shelter capsule! Currently not obtainable. + - rscadd: Black Carpet can now be crafted using a stack of carpet and a crayon. + - rscadd: Black fancy tables can now be crafted using Black Carpet. + - rscadd: Shower curtains can now be recoloured with crayons, unscrewed from the + floor, disassembled with wire cutters, and reassembled using cloth, plastic, + and a metal rod. +2017-06-08: + Alexshreds: + - bugfix: Hyphema and Ocular Restoration are now possible to evolve from viruses +2017-06-09: + Alexshreds: + - tweak: Taking mhelps no longer gives mhelping players your IC name + FlattyPatty: + - rscadd: Added forensics gloves for the Detective. + Fox McCloud: + - tweak: Paramedic door is no longer diamond + - bugfix: Fixes the backwards health analyzer sprite + - rscdel: Remove adrenaline and freedom implants from R&D + - rscadd: Added chem and tracking implants to R&D + KasparoVy: + - bugfix: Adds some sanity checking to the RCS. + - bugfix: The cargo shuttle no longer permits RCS telepads. + Kyep: + - rscadd: glowshrooms are now destroyable with two hits from a wirecutter. + - rscadd: New 'department' shuttle, which can be sent by CC instead of the regular + evac shuttle. + - rscadd: The gods have grown tired of prayers requesting freebies, and developed + some new curses with which to smite those who would treat them like miracle + vending machines. + alexkar598: + - bugfix: Surgury holosign switch has correct icon at roundstart + tigercat2000: + - rscadd: You can now zoom in with the Set View Range option in your Preferences + tab! +2017-06-10: + Alffd: + - rscadd: Ports Incoming5643's persistence features for Runtime from TG + - rscadd: Ports additional cat NPC emotes from TG + Citinited: + - bugfix: Disconnecting before the shuttle leaves after having spent karma will + no longer prompt you to spend karma. + FalseIncarnate: + - rscadd: Adds Highlander Style, granted to the wielder of Highlander Claymores. + This martial art allows you to deflect ranged attacks from the weapons of COWARDS. + FOR THE HONOR OF THE HIGHLANDERS! + - tweak: Highlander now equips combatants with a Highlander claymore instead of + a normal claymore. FIGHT ON BROTHERS! diff --git a/icons/mob/corgi_back.dmi b/icons/mob/corgi_back.dmi index ffc5e9428db..e3ed70343a3 100644 Binary files a/icons/mob/corgi_back.dmi and b/icons/mob/corgi_back.dmi differ diff --git a/icons/mob/corgi_head.dmi b/icons/mob/corgi_head.dmi index a92b79d564e..8022b8aaf2e 100644 Binary files a/icons/mob/corgi_head.dmi and b/icons/mob/corgi_head.dmi differ diff --git a/icons/mob/inhands/fluff_lefthand.dmi b/icons/mob/inhands/fluff_lefthand.dmi index 84380f038ed..209f7660781 100644 Binary files a/icons/mob/inhands/fluff_lefthand.dmi and b/icons/mob/inhands/fluff_lefthand.dmi differ diff --git a/icons/mob/inhands/fluff_righthand.dmi b/icons/mob/inhands/fluff_righthand.dmi index d93ab0ffc68..d048ff86003 100644 Binary files a/icons/mob/inhands/fluff_righthand.dmi and b/icons/mob/inhands/fluff_righthand.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index 6d0661c8911..08050649225 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 7dc7b163c54..90a218c7166 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/mob/species/plasmaman/helmet.dmi b/icons/mob/species/plasmaman/helmet.dmi index 880e1e7c5eb..125be79a278 100644 Binary files a/icons/mob/species/plasmaman/helmet.dmi and b/icons/mob/species/plasmaman/helmet.dmi differ diff --git a/icons/mob/species/plasmaman/suit.dmi b/icons/mob/species/plasmaman/suit.dmi index fb428adaadc..827146bb24c 100644 Binary files a/icons/mob/species/plasmaman/suit.dmi and b/icons/mob/species/plasmaman/suit.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 3ff998af6b7..f9bb3b2bbec 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/cardboard_cutout.dmi b/icons/obj/cardboard_cutout.dmi new file mode 100644 index 00000000000..da5f58d7f7c Binary files /dev/null and b/icons/obj/cardboard_cutout.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index 82ce8437b28..42f1eda0e74 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi index 8879fa3e84e..639bedfde29 100644 Binary files a/icons/obj/custom_items.dmi and b/icons/obj/custom_items.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 2735d145ac8..cb535c90165 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/lavaland/survival_pod.dmi b/icons/obj/lavaland/survival_pod.dmi index fae242d524f..a4c207b402c 100644 Binary files a/icons/obj/lavaland/survival_pod.dmi and b/icons/obj/lavaland/survival_pod.dmi differ diff --git a/icons/obj/machineprototype.dmi b/icons/obj/machineprototype.dmi new file mode 100644 index 00000000000..f5312bdba60 Binary files /dev/null and b/icons/obj/machineprototype.dmi differ diff --git a/icons/obj/smooth_structures/fancy_table.dmi b/icons/obj/smooth_structures/fancy_table.dmi new file mode 100644 index 00000000000..a57b165f4ac Binary files /dev/null and b/icons/obj/smooth_structures/fancy_table.dmi differ diff --git a/icons/obj/smooth_structures/fancy_table_black.dmi b/icons/obj/smooth_structures/fancy_table_black.dmi new file mode 100644 index 00000000000..d4570e8a7c1 Binary files /dev/null and b/icons/obj/smooth_structures/fancy_table_black.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 85788316c13..2c7fedf90b3 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi index e4fedae838b..67cc9682cf8 100644 Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ diff --git a/icons/turf/floors/carpet_black.dmi b/icons/turf/floors/carpet_black.dmi new file mode 100644 index 00000000000..d1174203aa9 Binary files /dev/null and b/icons/turf/floors/carpet_black.dmi differ diff --git a/nano/templates/r_n_d.tmpl b/nano/templates/r_n_d.tmpl index e007fc93f31..973ce934873 100644 --- a/nano/templates/r_n_d.tmpl +++ b/nano/templates/r_n_d.tmpl @@ -53,7 +53,6 @@ {{:helper.link('Clear Disk', 'trash', {'clear_tech': 1})}} {{else}}
    Name: {{:data.disk_data.name}}
    -
    Reliability: {{:data.disk_data.reliability}}
    {{for data.disk_data.lathe_types}} {{if index == 0}} @@ -96,7 +95,6 @@ {{else}}

    Deconstruction Menu:

    Name: {{:data.loaded_item.name}}
    -
    Reliability: {{:data.loaded_item.reliability}}

    Origin Tech:

    {{for data.loaded_item.origin_tech}}
    diff --git a/paradise.dme b/paradise.dme index e31e3f51fbd..8580458e828 100644 --- a/paradise.dme +++ b/paradise.dme @@ -278,6 +278,7 @@ #include "code\datums\diseases\advance\symptoms\stimulant.dm" #include "code\datums\diseases\advance\symptoms\symptoms.dm" #include "code\datums\diseases\advance\symptoms\viral.dm" +#include "code\datums\diseases\advance\symptoms\vision.dm" #include "code\datums\diseases\advance\symptoms\voice_change.dm" #include "code\datums\diseases\advance\symptoms\vomit.dm" #include "code\datums\diseases\advance\symptoms\weakness.dm" @@ -709,6 +710,7 @@ #include "code\game\objects\items\blueprints.dm" #include "code\game\objects\items\bodybag.dm" #include "code\game\objects\items\candle.dm" +#include "code\game\objects\items\cardboard_cutouts.dm" #include "code\game\objects\items\changestone.dm" #include "code\game\objects\items\contraband.dm" #include "code\game\objects\items\control_wand.dm" @@ -733,6 +735,7 @@ #include "code\game\objects\items\devices\guitar.dm" #include "code\game\objects\items\devices\laserpointer.dm" #include "code\game\objects\items\devices\lightreplacer.dm" +#include "code\game\objects\items\devices\machineprototype.dm" #include "code\game\objects\items\devices\megaphone.dm" #include "code\game\objects\items\devices\multitool.dm" #include "code\game\objects\items\devices\paicard.dm" @@ -803,6 +806,7 @@ #include "code\game\objects\items\weapons\garrote.dm" #include "code\game\objects\items\weapons\gift_wrappaper.dm" #include "code\game\objects\items\weapons\handcuffs.dm" +#include "code\game\objects\items\weapons\highlander_swords.dm" #include "code\game\objects\items\weapons\holosign.dm" #include "code\game\objects\items\weapons\holy_weapons.dm" #include "code\game\objects\items\weapons\kitchen.dm" @@ -1136,6 +1140,7 @@ #include "code\modules\client\client defines.dm" #include "code\modules\client\client procs.dm" #include "code\modules\client\message.dm" +#include "code\modules\client\view.dm" #include "code\modules\client\preference\preferences.dm" #include "code\modules\client\preference\preferences_mysql.dm" #include "code\modules\client\preference\preferences_spawnpoints.dm"