diff --git a/_maps/map_files/RandomZLevels/wildwest.dmm b/_maps/map_files/RandomZLevels/wildwest.dmm
index 12d6f1d124c..07acec7105d 100644
--- a/_maps/map_files/RandomZLevels/wildwest.dmm
+++ b/_maps/map_files/RandomZLevels/wildwest.dmm
@@ -68,7 +68,7 @@
"bp" = (/obj/structure/lattice,/turf/space,/area/space)
"bq" = (/obj/effect/mine/dnascramble,/obj/item/ammo_box/c10mm,/turf/simulated/floor/wood,/area/awaymission/wwmines)
"br" = (/obj/structure/closet/crate,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/awaymission/wwrefine)
-"bs" = (/turf/simulated/wall/mineral/sandstone,/area/awaymission/wwmines)
+"bs" = (/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/slimejelly,/turf/simulated/floor/carpet,/area/awaymission/wwmines)
"bt" = (/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/space,/area/space)
"bu" = (/obj/structure/lattice,/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/space,/area/space)
"bv" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines)
@@ -195,10 +195,10 @@
"dM" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines)
"dN" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines)
"dO" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/wwmines)
-"dP" = (/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly,/turf/simulated/floor/carpet,/area/awaymission/wwmines)
+"dP" = (/obj/item/weapon/reagent_containers/food/snacks/donut,/turf/simulated/floor/carpet,/area/awaymission/wwmines)
"dQ" = (/obj/item/weapon/reagent_containers/food/drinks/coffee,/turf/simulated/floor/carpet,/area/awaymission/wwmines)
"dR" = (/obj/item/weapon/reagent_containers/food/snacks/donut/jelly,/turf/simulated/floor/carpet,/area/awaymission/wwmines)
-"dS" = (/obj/item/weapon/reagent_containers/food/snacks/donut/normal,/turf/simulated/floor/carpet,/area/awaymission/wwmines)
+"dS" = (/obj/item/weapon/reagent_containers/food/drinks/coffee,/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/slimejelly,/turf/simulated/floor/carpet,/area/awaymission/wwmines)
"dT" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/carpet,/area/awaymission/wwmines)
"dU" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/turf/space,/area/space)
"dV" = (/obj/structure/lattice,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/turf/space,/area/space)
@@ -228,7 +228,6 @@
"et" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand12"; icon_state = "ironsand12"},/area/awaymission/wwgov)
"eu" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/blue,/obj/item/weapon/gun/projectile,/turf/simulated/floor/wood,/area/awaymission/wwmines)
"ev" = (/obj/effect/decal/cleanable/blood,/obj/structure/stool/bed,/obj/item/weapon/bedsheet/blue,/turf/simulated/floor/wood,/area/awaymission/wwmines)
-"ew" = (/obj/item/weapon/reagent_containers/food/drinks/coffee,/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly,/turf/simulated/floor/carpet,/area/awaymission/wwmines)
"ex" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1"; icon_state = "gibdown1"},/turf/simulated/floor/carpet,/area/awaymission/wwmines)
"ey" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand7"; icon_state = "ironsand7"},/area/awaymission/wwgov)
"ez" = (/obj/structure/sign/vacuum,/turf/simulated/wall/r_wall,/area/awaymission/wwrefine)
@@ -582,48 +581,48 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaGaIaUbabababababaaUaLaRaRaXaRaRbhbhbhbnbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbkbhaRaRaRaRaRaRaXaRaRaRaRaRaLaLaLaNaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaGaIaIaUbababobababfaUaLaRaRaRaRaRbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbkbhbhbhbhbhbhbibhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaRaRaRaLaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaIaUaUbabababfbabaaUaLaRaRaRaRaRbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRbqbhbhbhaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaRaRaRaLaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpaaaaaaaabpbpbpbpbpbpbpbpbpbpaabpaabpbpbpbpaaaaaabpbpbpbpbpbpbpbpbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaGaIaUbrbabababababaaUaLaRaRaRaRaRbkbhbhbhaRbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsaRbhbhbhbhaRbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsaRbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaRaRaLaLaGaGaGaGaGaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaabpbtbububububububtbtbtbtbtbububtbtbtbubtbtbtbtbubububububtbtbtbtbtaabpaabpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaGaGaGaIaUbababababababaaUaLaRaRaRaRaRbhbhbhbhaRbsbvbwbwbxbwbwbwbsbybzeSbzbBbsaRbhbhbCbhaRbsbDbDbDfQbDbDbDgEbBbBbEcebFbGbBgFbhbhbhbhgGbwbwbHgHbJbwbKbsaRbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaRaRaLaNaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaabpbLbMbNbObObObObObObObObObObObObObObObObObObObObObObObObObObObObPbMbQaaaaaabpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaIaUbabababfbababaaUaLaRaRaRaRaRbhbhbhbhaRbsgIbRbwbwbwbSgJbsbhbhbhbhbhbsaRbhbhbhbhaRbsbDbDbDbDbDbDbDbhbhbhbhbhbhbhbhbhbhbhbhbhbhbwbwbwbwbwbwbwbsaRbhbhbhbhaRaXaRaRaRaRaRaRaRaRaRaRaRaLaLaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaabpbTbUbVbVbVbVbVbVbVbVbVbWbVbVbVbVbVbVbVbVbVbVbWbVbVbVbVbVbVbVbVbVbXbQaaaaaaaabpbpaaaaaaaaaaaaaaaaaaaaaaaaaGaGaIaUbfbababababfbaaUaLaRaWaRaRbdbhbhbhbhaRbsbwbwbwbwbwbwbwbsbhbhbhbhbhbsaRbhbkbhbhaRbsbDbDbDbDbDbDbDbBbBbBbBbBbBbBbAbBbYbBbBbBbZbwbwbwbwcabwbwbsaRbhbhbhbhaRaRaRaRaRaRaRaXaRaRaRaRaRaRaLaNaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaabpbTcbbVbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbVccbQaaaaaaaaaabpbpaaaaaaaaaaaaaaaaaaaaaaaGaGaIaUbababababababaaUaLaRaRaRaRaRbhbhbkbhaRbsgIbRcdbwbwbSgJbsbsbsbsbscfbsaRbhbnbhbhaRbsgKcgbDbDchcgbDbBcicicicicicicicibhbhbhbhbBbwbwbwbwbwbwgJbsaRbhbhbCbhaRaRaRaRaRaRaRaRaRaRaRaRaRaRaLaNaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaabpbTcbbVbMcjcjcjcjcjcjbMckclgLclclckgMclckckgLckclbMcmcngNcncpbMbVcccqaaaaaaaaaaaabpcrbpaaaaaaaaaaaaaaaaaaaGaGaIaUbababababababmaUaLaRaRaRaRaRbibhbhbhaRbsbwbwbwbwbwbwbwcfbhbhbhbhbhbsaRbhbhbhbhaRbsbDbDbDcsbDbDbDbBbhbhbhbhbhbhbhbhbhbhbhbhbBbwbwbwbwbwbwbwbsaRbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaLaLaRaLaIaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaabpbTcbbVbMckckckclckckbMckctctctctcuctcuckcvcvclckbMcncncncncnbMbWcccqaaaaaaaaaabpbpbpbpbpbpaaaaaaaaaaaaaaaGaGaIaUbabmbabmbababaaUaLaRaRaRaRaRbhbhbhbhaRbsbsbsbsbsbsbsbsbsbhbhbhbhgObsaRbhcwbhbhaRbsbDbDbDbDbDbDbDbBbhbhbhbhgPbhbhgPbhbhbhbhbBbwbwbwbwbwbwbwbsaRbhbhbhbhaRaRcxaRaRaRaRaRaRaRaRaLaLaLaLaIaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabpbpbLcbbVbMgQczckckckgRbMgScuctctctctctctcAckckckgRbMgTcncBcCgUbMbVcccqbpbpaabpbpbpaaaaaabpbpbpbpaaaaaaaaaGaGaGaIaUbababababababaaUaLaRaRaRaRaRbhbhbhbhaRbscDbhgVbhbhbhgVbhbhbhbhbhbhbsaRbhbhbhbhaRbsbBbBbBbBbBbBbBbBbhbhbhgWbsgXgObsgXbhbhbhbBbBbBcEcFbBbBbBbsaRbkbhbnbhaRaRaRaRaRaRaRaRaRaRaRaRaLaLaLaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabpaabTcbbVbMcGcHckckcIckcJckctctctctcKctctcAckckckckbMcncncncncnbMbWccbQaacrbpbpaaaaaaaaaaaaaaaabpbpbpaaaaaGaGaGaIaUbfbabababababaaUaLaRaRaRaRaRbhbibhbhaRbscDbhbhbsbsbhbhbsbsbhbhbsbsbsaRbhbhbhbhaRbsbhcicicicicicibhbhbhbhbhgVbhbhgVbhbhbhbhbhcicicicicicibhbsaRbhbhbhbhaRaRaRaRaRaRaRaRaWaRaRaRaRaRaLaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabpaabTcLbVbMcyczckckckckbMckctctctctctctctcMckckckckcJcncncncncnbMbVcNbQaabpaaaaaaaaaaaaaaaaaaaaaaaabpaaaGaGaGaGaIaUbabfbacObababaaUaLaRaYaRaRaXbhbhbhbhaRbscDbCbhcDbsbhbhbsbhbhbhbhbhbsaRbhbhbhbhaRbsbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbsaRbhbhbhbhaRaRaRaXaRaRaRaRaRaRaRaRaRaRaLaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabpaabLbMbVbMckckckckckckbMckctctcPctctctctcMckckckckbMcncQcRcScnbMbVbMbQaabpaaaaaaaaaaaaaaaaaaaaaaaaaGaGaGaGaGaGaIaUbababababababaaUaLaRaRaRaRaRbhbhbhbhaRbscDbhbhcDbsbhbhbsgYbhbhbhgZbsaRbhbhbhbkaRbscVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbhbsaRbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaRaRaRaLaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaacrbpbLcXbVbMgSckcIckclgRbMgSctctctctctctctcMckckckgRbMhacncYcngUbMbVcZbQaabpbpaaaaaaaaaaaaaaaaaaaGaGaGaGaGaGaGaIaIaUbababababfbabaaUaLaRaRaRaRaRbhbhbkbhaRbscDbhgPcDbsbhbhbscTbhbhbhcUbsaRbkbhbhbhaRbsbhhbbhbhbhbhhbbhbhbhbhhbbhbhbhbhhbbhbhbhbhhbbhbhbhbhhbbhbsaRbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaRaRaRaLaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaabpbpaabTcbbVbMckckckckckclbMckcuctdactctctctckckckckckbMcncncncncnbMbVccbQbpbpbpbpaaaaaaaaaaaaaaaaaGaGaGaGaGaGaIaIaUaUbabababababadbaUaLaRaRaRaRaRbhbhbhbhaRbsbsbsbsbsbscfcfbsbsdcdcbsbsbsaRbhbhbjbhaRbsbsbsbsdcdcdcbsbsbsbsbsbsbsdddebsbsbsbsbsbsbsdcdcdcbsbsbsbsaRcwbhbkbhaRaRaRaYaRaRaRaRaRaRaRaRaRaLaLaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpaaaaaaaabpbpbpbpbpbpbpbpbpbpaabpaabpbpbpbpaaaaaabpbpbpbpbpbpbpbpbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaGaIaUbrbabababababaaUaLaRaRaRaRaRbkbhbhbhaReXeXeXeXeXeXeXeXeXeXeXeXeXeXeXaRbhbhbhbhaReXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXaRbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaRaRaLaLaGaGaGaGaGaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaabpbtbububububububtbtbtbtbtbububtbtbtbubtbtbtbtbubububububtbtbtbtbtaabpaabpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaGaGaGaIaUbababababababaaUaLaRaRaRaRaRbhbhbhbhaReXbvbwbwbxbwbwbweXbybzeSbzbBeXaRbhbhbCbhaReXbDbDbDfQbDbDbDgEbBbBbEcebFbGbBgFbhbhbhbhgGbwbwbHgHbJbwbKeXaRbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaRaRaLaNaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaabpbLbMbNbObObObObObObObObObObObObObObObObObObObObObObObObObObObObPbMbQaaaaaabpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaIaUbabababfbababaaUaLaRaRaRaRaRbhbhbhbhaReXgIbRbwbwbwbSgJeXbhbhbhbhbheXaRbhbhbhbhaReXbDbDbDbDbDbDbDbhbhbhbhbhbhbhbhbhbhbhbhbhbhbwbwbwbwbwbwbweXaRbhbhbhbhaRaXaRaRaRaRaRaRaRaRaRaRaRaLaLaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaabpbTbUbVbVbVbVbVbVbVbVbVbWbVbVbVbVbVbVbVbVbVbVbWbVbVbVbVbVbVbVbVbVbXbQaaaaaaaabpbpaaaaaaaaaaaaaaaaaaaaaaaaaGaGaIaUbfbababababfbaaUaLaRaWaRaRbdbhbhbhbhaReXbwbwbwbwbwbwbweXbhbhbhbhbheXaRbhbkbhbhaReXbDbDbDbDbDbDbDbBbBbBbBbBbBbBbAbBbYbBbBbBbZbwbwbwbwcabwbweXaRbhbhbhbhaRaRaRaRaRaRaRaXaRaRaRaRaRaRaLaNaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaabpbTcbbVbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbVccbQaaaaaaaaaabpbpaaaaaaaaaaaaaaaaaaaaaaaGaGaIaUbababababababaaUaLaRaRaRaRaRbhbhbkbhaReXgIbRcdbwbwbSgJeXeXeXeXeXcfeXaRbhbnbhbhaReXgKcgbDbDchcgbDbBcicicicicicicicibhbhbhbhbBbwbwbwbwbwbwgJeXaRbhbhbCbhaRaRaRaRaRaRaRaRaRaRaRaRaRaRaLaNaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaabpbTcbbVbMcjcjcjcjcjcjbMckclgLclclckgMclckckgLckclbMcmcngNcncpbMbVcccqaaaaaaaaaaaabpcrbpaaaaaaaaaaaaaaaaaaaGaGaIaUbababababababmaUaLaRaRaRaRaRbibhbhbhaReXbwbwbwbwbwbwbwcfbhbhbhbhbheXaRbhbhbhbhaReXbDbDbDcsbDbDbDbBbhbhbhbhbhbhbhbhbhbhbhbhbBbwbwbwbwbwbwbweXaRbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaLaLaRaLaIaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaabpbTcbbVbMckckckclckckbMckctctctctcuctcuckcvcvclckbMcncncncncnbMbWcccqaaaaaaaaaabpbpbpbpbpbpaaaaaaaaaaaaaaaGaGaIaUbabmbabmbababaaUaLaRaRaRaRaRbhbhbhbhaReXeXeXeXeXeXeXeXeXbhbhbhbhgOeXaRbhcwbhbhaReXbDbDbDbDbDbDbDbBbhbhbhbhgPbhbhgPbhbhbhbhbBbwbwbwbwbwbwbweXaRbhbhbhbhaRaRcxaRaRaRaRaRaRaRaRaLaLaLaLaIaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabpbpbLcbbVbMgQczckckckgRbMgScuctctctctctctcAckckckgRbMgTcncBcCgUbMbVcccqbpbpaabpbpbpaaaaaabpbpbpbpaaaaaaaaaGaGaGaIaUbababababababaaUaLaRaRaRaRaRbhbhbhbhaReXcDbhgVbhbhbhgVbhbhbhbhbhbheXaRbhbhbhbhaReXbBbBbBbBbBbBbBbBbhbhbhgWeXgXgOeXgXbhbhbhbBbBbBcEcFbBbBbBeXaRbkbhbnbhaRaRaRaRaRaRaRaRaRaRaRaRaLaLaLaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabpaabTcbbVbMcGcHckckcIckcJckctctctctcKctctcAckckckckbMcncncncncnbMbWccbQaacrbpbpaaaaaaaaaaaaaaaabpbpbpaaaaaGaGaGaIaUbfbabababababaaUaLaRaRaRaRaRbhbibhbhaReXcDbhbheXeXbhbheXeXbhbheXeXeXaRbhbhbhbhaReXbhcicicicicicibhbhbhbhbhgVbhbhgVbhbhbhbhbhcicicicicicibheXaRbhbhbhbhaRaRaRaRaRaRaRaRaWaRaRaRaRaRaLaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabpaabTcLbVbMcyczckckckckbMckctctctctctctctcMckckckckcJcncncncncnbMbVcNbQaabpaaaaaaaaaaaaaaaaaaaaaaaabpaaaGaGaGaGaIaUbabfbacObababaaUaLaRaYaRaRaXbhbhbhbhaReXcDbCbhcDeXbhbheXbhbhbhbhbheXaRbhbhbhbhaReXbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbheXaRbhbhbhbhaRaRaRaXaRaRaRaRaRaRaRaRaRaRaLaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabpaabLbMbVbMckckckckckckbMckctctcPctctctctcMckckckckbMcncQcRcScnbMbVbMbQaabpaaaaaaaaaaaaaaaaaaaaaaaaaGaGaGaGaGaGaIaUbababababababaaUaLaRaRaRaRaRbhbhbhbhaReXcDbhbhcDeXbhbheXgYbhbhbhgZeXaRbhbhbhbkaReXcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbheXaRbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaRaRaRaLaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaacrbpbLcXbVbMgSckcIckclgRbMgSctctctctctctctcMckckckgRbMhacncYcngUbMbVcZbQaabpbpaaaaaaaaaaaaaaaaaaaGaGaGaGaGaGaGaIaIaUbababababfbabaaUaLaRaRaRaRaRbhbhbkbhaReXcDbhgPcDeXbhbheXcTbhbhbhcUeXaRbkbhbhbhaReXbhhbbhbhbhbhhbbhbhbhbhhbbhbhbhbhhbbhbhbhbhhbbhbhbhbhhbbheXaRbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaRaRaRaLaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaabpbpaabTcbbVbMckckckckckclbMckcuctdactctctctckckckckckbMcncncncncnbMbVccbQbpbpbpbpaaaaaaaaaaaaaaaaaGaGaGaGaGaGaIaIaUaUbabababababadbaUaLaRaRaRaRaRbhbhbhbhaReXeXeXeXeXeXcfcfeXeXdcdceXeXeXaRbhbhbjbhaReXeXeXeXdcdcdceXeXeXeXeXeXeXdddeeXeXeXeXeXeXeXdcdcdceXeXeXeXaRcwbhbkbhaRaRaRaYaRaRaRaRaRaRaRaRaRaLaLaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaabpaaaadfcbbVbMckdgclckckckbMckckhcckckckhccIckckhcckckbMdhdhhddjdjbMbVcccqbpaaaabpbpbpbpaaaaaaaGaGaGaGaGaGaGaGaIaUaUbfbmbabababmbabaaUaLaRaRaRaRaRbhbhbhbhaRaRaRaRaRaRhedkaRheaRaRaRaRaRaRaRbhbhbhbhaRaRaRaRheaRaRaRheaRaRaRaRaRheaXdkheaRaRaRaRaRheaRaRaRheaRaRaRaRbhbhbhbhaRaRaRaRaRaRaRaRaRaRaRaRaRaRaLaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaabpaaaadfcbbVbMbMbMbMbMbMbMbMbMbMbMcJcJbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbVcccqaaaaaaaaaaaabpbpbpaGaIaIaIaIaIaIaIaIaIaUaZbabababababababfaUaLaRaRaRaRaRbhbhbibhbhbhbhbhbhbhbhdlbkbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhdmbhbhbhbhbhdlbhbhbhbkbhbhbhbhbhbhbhbhbhbhbhbjbhbhbhaRaRaRaRdnaRaRaRaRaRaRaRaRaLaLaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaabpaaaadfcbbVbVbVbVbVbVbVdobVbVbVhfbVbVhfbVbVbVbVbVbVbVbVbVbVbVbVbVbVdocccqbpaaaaaaaaaaaaaaaGaGaIaUaUaUaUaUaUaUaUaUbabababababfbaaUaUaUaLaRaRaRaRaRbhbhdpbhbhbhbhbhbhbhbhdlbhbhbhbhbhbhbhbhbhbhbhbhcwbhbhbhbhbhbhbhbhbhbhbhbibhbhbhbhdlbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhaRaRaRaRaRaRaRaXaRaRaRaRaRaLaLaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaabpaaaadfcbbVdobVbVbVbVbVbVbVbVbVbVbVdqbVbVbVbVbVbVdobVbVbVdrbVbVbVbVbVccbQbpaaaaaaaaaaaaaaaGaGaIaUaZbabmbababfbabababababababmbaaUaNaLaLaRaRaRaRaRbibhbhbhbhbhbhbhbhbhbhbhbhbhbhbibhbhbhbhbhbhbhbhbhbhbhbhbhbkbhbhbhbhbhbhbhbhbhbhbhdlbhbhbhbhbjbhbhcwbhbkbhbhbhbhbhbhbhbkbhaRaRaRaRaRaRaRaRaRaRaRaRaRaRaLaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaabpaaaadfcbbVbVbVbMbMbMbVbVbVbVbVbVbVbWbVbVbVbVbVbVdqbVdrbVbVbVbVbWbVbVccbQbpaaaaaaaaaaaaaGaGaGaIaUbababababababababmbababfbaaUaUaUaLaLaRaRaWaRaRaRbqbhbhbhbhbhbhbnbhbhbhbhbhbhbhdlbhbkbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhdlbhbhbhbhbhbhbhbhbhbhbhbhbhbhbnbhbhbhbhaRaRaRaRhgaRaRhgaRaRaRaRaRaLaLaGaGaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaabpaaaadfcbbVbVbVbMdsbMbVbVbVdrbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVdtbVbVbVccbQbpbpaaaaaaaaaaaGaGaGaIaUbabfbababablbabababababaaUaUaNaNaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRhgdkaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRbhbhdpbhbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsdcdcbsbsbsbsbsaLaLaNaGaGaGaGaaaaaaaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaabpbpaadfcbdrbVbVbMdubMbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVdobVbVdrbVbVbWbVccbQbpbpbpaaaaaGaGaGaGaGaIaUbabababababababababfbabaaUaNaNaLaLaRaRaRaRaRaRaRaWaRaRaRaRaRaRbsbsbsbsbsbsbsbscfbsbsbsbsbsbsbsaRaRbsbsbsbsbsbsbsbsbsbsbsbsbsaRbjbhbhbhbsbhbhbhgVbhbhgVbibhbhbsdvhhdvdvdvbhdvbsbhbhgVbhbhbhgVbhbhbsaLaNaNaGaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabpbpdfcLbVbVbVbVbVhfbVbVbVbVbVbVbVbVbVbVbVdwbVbVbVbVbVbVbVbVbVbVbVbVcNbQbpaabpbpbpaGaGaGaGaGaIaUbmbabababfbabababaaUaUaUaUaNaNaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRbsbwhibwbwhibwbsbhbshjbwbwbwbwbsaRaRbsbhdygVdybhdybhdygVdybhbsaRbhbhbhbhbsbhbDdzbDdAdBbDbDbDbhdCbhbhbhbhbhbhbhbsdDcwdEbhbjbhdFdGbhdHaLaNaNaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaabpdfbMdIdJdJdJdJdJdJdJdJdJdJdKdLdLdIdJdJdJdJdJdJdJdJdJdJdJdJdJdJdKbMbQbpaaaabpaGaGaGaGaGaGaIaUbababababababmbabaaUaNaNaNaLaLaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRbsdMbwbwbwbwdNbsbhbsdxbwbwbwbwbsaRaRbsbhbhbhbhbhbhbhbhbhbhbhbsaRbkbhbhbhbsbhbDdOdPdQdRdSdTbDbhbsbhbhbhbhdGbhbhbsbBbhdEbhbhbhdFbhbhbsaLaNaNaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabpbpaadUdUdUdUdUdUdUdUdUdUdUdVdWdXdYdZdUdUdUdUdUdUdVdUdUdUdUdUdUdVdUdUbpcraaaabpbpbpaGaIaIaIaIaUbbbbaUaUaUaUbabmaUaUaNaNaLaLaRaRaRaRaXaRaRaRaRaReaaRaRaXaRaRaRbsdMbxebbwbwdNbsgObsecbwebbwbwbsaRaRbsbhdybhdybhdybhedbhdybhbsaRbhbhbhbhbsgXbDeedQbDbDdQefdzgObsdvbhbhbhbhbhbhbsdDbhdEbhbhcwdFbhbhdHaLaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabpbpaaaaaaaaaaaaaaaaaabpbpbpbpdfeheibQaaaaaaaaaaaabpbpbpbpbpbpbpbpbpbpbpbpbpaaaaaacraIaIejejejejekekejejejaUaUaUaUaNaNaNaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRbsdMbwbwelbwdNbsbhbsdxbwbwbxbwbsaRaRbsgXbhbibhbhbhbhbhbhbhgObsaRbhbhbhbhbsbhbDdOdSbDbDdSdTembhbsdvdvbhbhbhhkbhdCbhbhbhdGbhbhdFbhbhbsaLaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpaaaaaaaaaaaabpbpaaaaaadfeneobQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpbpbpejejejepeqerekekekekejejejejaNaNaLaLaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRbsdMhlbwbwhldNbsbhbshjbwbwbwbwbsaRaRbsbhbhbhbhbhbCbhbhbhbhbhcfaRbhbhbnbhbsbhbDeedRbDbDdRefbDbhbsbsbsbsbsbsbsbsbsbhesesesesbhdFbhbhdHaLaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpbpbpbpbpbpaaaaaaaadfdXetbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaejekekekekekekekekekekekekejaNaNaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaXaRaRaRaRbsbsbsbwbwbsbsbscfbsbsbwbwbsbsbsaWaRbsbheubhdybhdybhevbhdybhbshmbhbhbhbhbshnbDdOdQbDbDewexbDgObsbyhobybybyhobybsbhdDhpbBdDbhgPbhbhbsaLaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfeheybQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaezekekekekekekekekekekekekejaNaNaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRbsbhbhbhbhbhbhbhbhbhbhbhbhbhbhbsdkaRbsgXbhbhbhbhbhbhbhbhbhgObsaRbhdpbhbhbsbhbDeedSdQdPdRefeAbhbsbhbhbhbhbhbhbhbsbsbsbsbsbseBbsbsbsbsaLaNaNaGaGaGaGaaaaaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfeCdYbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeDeEeFeGekekekekekekekekekekekekejaNaNaLaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRbsbhbheHbhbsbsbsbsbsbsbhbhbhbhbsdkaWbsbhdybhevbhdybhdybhdybhbsaRbhbhbhbhbsbhbDbDbDeIeJeKbDbDbhdCbhcwbhbhbjbhbhdCeLhqeMeNeOeOePhreLbsaLaNaNaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdXeQbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeRekekeRekekekekekekekekekekekekejaNaNaNaLaRaRaRaRaXaRaRaRaRaRaRaNaNaRaRaRaRaRaRbsgXbhbhbhbhhshshshsbhbhbhbhgObsdkaRbsbhbhbhbhbhbhbhbhbhbhbhbsaRbhbhbhbhbsbhbhbhgPbhbhgPbhbhbhbsbhbhbhbhbhbhbhbseLeLeLeTeUeVeLeLeLbsaLaNaNaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfendYbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeDeEeEeWekekekekekekekekekekekekejaNaNaNaLaRaRaRaRaRaRaRaRaRaRaRaNaNaNaRaRaRaRaRbsbhbhbhgPdpbibhbhbhbhgPbhbhbhbsdkaRbsbhbhgPbhbhbhbhbhgPbhbhbsaRbhbhbhbhbsbsbsbsbseXeXbsbsbsbsbsbsbsbsbsbsbsbsbseLeLeYeLeLeVeLeLhtbsaLaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdXeibQaaaaaaaaaaaaaaaaaaaaaabpbpaaaaaaaaaaaaaaaaaaaaeZekekekekekekekekekekekekejaNaNaNaLaRaRaRaRaRaRaRaRbdaRaRaRaNaNaNaRaRaRaRbsfabsfabsfabsfabsbsfabsfabsfbbsaRaXfcbsbsbseBbsbsbsbsbsbsbsbsaRbhbhcwbhfdfebhgVbBbhbhbsbhbhgVbhbhbsbhbhgVbhbhbsffeLfgeLffeLfgeLeLbsaLaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaabtbtbtbtbtbtbtbtbtbtbtbtbtbtfhdLdLfibtbtbtbtbtbtaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaafjekekekekekekekekekekekekejaNaNaLaLaRaRaRaRaRaRaRaRaRaRaRaRaRaNaNaNaRaRaRbsbsbsbsbsbsbsbsbsbsbsfcbsbsbsbsaRaRfkaRaWaRaRaRaRflaRaWaRaRaRaRbhbhbhgObshubhbhbBfmbhbsbhfnbBfmbhbsbhfobBfpbhbseLeLeLfqeLeLeLfqeLbsaLaNaNaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabTfrfsfsfsfsfsfsfsfsfsfsfsfsfsfsftftfsfsfsfsfsfsfufvbpbpbpbpbpaaaaaaaaaaaaaaaaaaaaaaejekekekekekekfwekekekekekejaNaLaLaPaRaRaRaRaRaRaRaRaRaRaRaRaRaRaNaNaNaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaReaaWfxfcbsbsbsbsbseBbsbsbsbsbsbsaRbjbhbhfycfbhbhbhbBbhbhbsbhbhegbhbCbsbjbhbhbhbhbsdcdcdcbsdCbseLfzeLbsaLaNaNaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftftftfBfvbpbpbpbpaaaaaaaaaaaaaaaaaaaaaaaafCekekekekekekekekekekekekejaNaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaNaNaRaRaRaRaRaRbsbsbsbsbsbsbsbsbsbsbsbsfcdkbsfDbhbhbhbhgVbhbhbhbhbhbsaRbhfEbhbhcfbhbhbhbBfmgObsbhfnbBfmbjbsbhfobBfpbhbsbhbhbhbhbhdceLeLhtbsaLaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftfFfFfGfHfIfIbpbpbpaaaaaaaaaaaaaaaaaaaaaaeZekekekekekekfJekekekekekejaNaLaRaRaRaRaRaRaRaRaRaRaPaRaNaNaNaNaNaNaNaRaRaRaRaRaRbsfKbhbhbhbhgVbhbhbhbhbhbsdkeBbhbhbhbhdpcwbhbhbhbhbhddaRbhbjbhgObshubjbhbBbhbhbsgXbhbBbhgObsgXcwfLbhgObsbsbsbsbhbhdceLfMeLbsaLaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftfNftfNfIfIfIbpbpaaaaaaaaaaaaaaaaaaaaaaaafjekekekekekekekekekekekekejaNaLaRaRaRaRaRaRaNaNaNaNaNaNaNaNaNaNaNaNaNaRaRaRaRaRaRbsbhbhbhbhbjbhfObhbjdGbhbsflbsbhbhdGbhbhbhbhbhbhcwbhbshmbhfPbhbhbsfebhbhbBbhbhbsbhfnbBfmbhbsbhfobBfpbhbshvbhbshnbhdceLeLeLbsaLaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabTfAftftfSftftftftftftftftftftftftftftftftftfsfsfTfHfIbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaejekekekekekekekekekekekekejaLaLaRaRaRaRaLaLaLaLaLaLaLaLaLaLaLaLaLfUaLaLaRaRaRaRaRbsbhbhbhbhbhfPfVdpbhfWbhcfaRbsgXbhbhbhbhbhfRbhbhbhgObsdnbhbhbhbheBfXbhbhbBfmgObsbhbhbhbhbhbsbhbhbhbhbhbsfYbhcfbhbhdceLfZeLbsaLaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftftftfBfvbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaafCekekekekekekekekekekekekejaLaPaRaRaLaLaLaLaRaRaRaRaRaRaRaRdnaRaRaRaLaLaLaRaRaRaRbsgXdpbhbhbhbhbhbhgabhgOeBhmbsbhbhbhbhbhbhdpbhbhdGbheBaRbhbhbhbhbsfebhbhbBbhbhbsbsbscfbseBbsbsbscfbsbsbsbseBbsbhbhdceLeLhtbsaLaNaNaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftftftfBbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeZekekekekekekekekekekekekejaLaLaLaLaLaLaRaRaRaRaRaRaRaRaRaRaRaRaReaaRaLaLaLaRaRaRbsbhbhbjbhbnbhbhdpbhbhbhbsaWbsbhbhcwbhbhbhbibhbhbhbhbsaRaRaRaRaRbsgXbhcwbBbBbhbsbhbhbjbhbhcwbhbhbhbhbhbhbhbhbhbjbhbseLfMeLbsaLaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftftftfBbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafjekekekekekekekekekekekekejaGaNaNaLaLaRaRaRaRaRaLaLaLfUaRaRaRaRaRaRaRaRaRaLaLaRaRbsbhbhbhbhbhbhbhbhdGbhbhbsaRbsbhbhbhgPbhbhgPbhbhbhbhfcaRaXaRaRaRbsbhbhgPbhbhcwcfbhbhgPbhdGbhbhbhgPbhbhfPcwbhgPbhbhbseLeLeLbsaLaNaNaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftgdftftftftftftftftftfBbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaejgeeEeWeRgfggezgeeEghejejejaGaNaNaLaRaRaRaRaRaRaLaLaLaLaLaLaLaRaRaReaaRaRaRaLaLaLbsbsbsbsbsfcaRbsbsbsbsbsbsaRbsbsbsbseBdcdcbsbsbsbsbsbsaRaRaRaRaRbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsaLaNaNaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftftftfBbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeZekeZaaaaaaaaaaaGaGaGaGaNaLaLaRaRaRaRaRaRaRaRaRaRaLaLaLaLaLaLaRaRaRaRaRfUaLaLaRaRaRaRaRaRfcbsbsaRaRaRaRaRaRaRaRheaRaRheaRaRaRaRaRaRaRaRaRaRaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaNaNaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaabpaaaadfcbbVbVbVbMdsbMbVbVbVdrbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVdtbVbVbVccbQbpbpaaaaaaaaaaaGaGaGaIaUbabfbababablbabababababaaUaUaNaNaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRhgdkaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRbhbhdpbheXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXdcdceXeXeXeXeXaLaLaNaGaGaGaGaaaaaaaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaabpbpaadfcbdrbVbVbMdubMbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVdobVbVdrbVbVbWbVccbQbpbpbpaaaaaGaGaGaGaGaIaUbabababababababababfbabaaUaNaNaLaLaRaRaRaRaRaRaRaWaRaRaRaRaRaReXeXeXeXeXeXeXeXcfeXeXeXeXeXeXeXaRaReXeXeXeXeXeXeXeXeXeXeXeXeXaRbjbhbhbheXbhbhbhgVbhbhgVbibhbheXdvhhdvdvdvbhdveXbhbhgVbhbhbhgVbhbheXaLaNaNaGaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabpbpdfcLbVbVbVbVbVhfbVbVbVbVbVbVbVbVbVbVbVdwbVbVbVbVbVbVbVbVbVbVbVbVcNbQbpaabpbpbpaGaGaGaGaGaIaUbmbabababfbabababaaUaUaUaUaNaNaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaReXbwhibwbwhibweXbheXhjbwbwbwbweXaRaReXbhdygVdybhdybhdygVdybheXaRbhbhbhbheXbhbDdzbDdAdBbDbDbDbhdCbhbhbhbhbhbhbheXdDcwdEbhbjbhdFdGbhdHaLaNaNaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaabpdfbMdIdJdJdJdJdJdJdJdJdJdJdKdLdLdIdJdJdJdJdJdJdJdJdJdJdJdJdJdJdKbMbQbpaaaabpaGaGaGaGaGaGaIaUbababababababmbabaaUaNaNaNaLaLaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaReXdMbwbwbwbwdNeXbheXdxbwbwbwbweXaRaReXbhbhbhbhbhbhbhbhbhbhbheXaRbkbhbhbheXbhbDdObsdQdRdPdTbDbheXbhbhbhbhdGbhbheXbBbhdEbhbhbhdFbhbheXaLaNaNaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabpbpaadUdUdUdUdUdUdUdUdUdUdUdVdWdXdYdZdUdUdUdUdUdUdVdUdUdUdUdUdUdVdUdUbpcraaaabpbpbpaGaIaIaIaIaUbbbbaUaUaUaUbabmaUaUaNaNaLaLaRaRaRaRaXaRaRaRaRaReaaRaRaXaRaRaReXdMbxebbwbwdNeXgOeXecbwebbwbweXaRaReXbhdybhdybhdybhedbhdybheXaRbhbhbhbheXgXbDeedQbDbDdQefdzgOeXdvbhbhbhbhbhbheXdDbhdEbhbhcwdFbhbhdHaLaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabpbpaaaaaaaaaaaaaaaaaabpbpbpbpdfeheibQaaaaaaaaaaaabpbpbpbpbpbpbpbpbpbpbpbpbpaaaaaacraIaIejejejejekekejejejaUaUaUaUaNaNaNaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaReXdMbwbwelbwdNeXbheXdxbwbwbxbweXaRaReXgXbhbibhbhbhbhbhbhbhgOeXaRbhbhbhbheXbhbDdOdPbDbDdPdTembheXdvdvbhbhbhhkbhdCbhbhbhdGbhbhdFbhbheXaLaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpaaaaaaaaaaaabpbpaaaaaadfeneobQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpbpbpejejejepeqerekekekekejejejejaNaNaLaLaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaReXdMhlbwbwhldNeXbheXhjbwbwbwbweXaRaReXbhbhbhbhbhbCbhbhbhbhbhcfaRbhbhbnbheXbhbDeedRbDbDdRefbDbheXeXeXeXeXeXeXeXeXbhesesesesbhdFbhbhdHaLaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpbpbpbpbpbpaaaaaaaadfdXetbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaejekekekekekekekekekekekekejaNaNaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaXaRaRaRaReXeXeXbwbweXeXeXcfeXeXbwbweXeXeXaWaReXbheubhdybhdybhevbhdybheXhmbhbhbhbheXhnbDdOdQbDbDdSexbDgOeXbyhobybybyhobyeXbhdDhpbBdDbhgPbhbheXaLaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfeheybQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaezekekekekekekekekekekekekejaNaNaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaReXbhbhbhbhbhbhbhbhbhbhbhbhbhbheXdkaReXgXbhbhbhbhbhbhbhbhbhgOeXaRbhdpbhbheXbhbDeedPdQbsdRefeAbheXbhbhbhbhbhbhbheXeXeXeXeXeXeBeXeXeXeXaLaNaNaGaGaGaGaaaaaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfeCdYbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeDeEeFeGekekekekekekekekekekekekejaNaNaLaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaReXbhbheHbheXeXeXeXeXeXbhbhbhbheXdkaWeXbhdybhevbhdybhdybhdybheXaRbhbhbhbheXbhbDbDbDeIeJeKbDbDbhdCbhcwbhbhbjbhbhdCeLhqeMeNeOeOePhreLeXaLaNaNaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdXeQbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeRekekeRekekekekekekekekekekekekejaNaNaNaLaRaRaRaRaXaRaRaRaRaRaRaNaNaRaRaRaRaRaReXgXbhbhbhbhhshshshsbhbhbhbhgOeXdkaReXbhbhbhbhbhbhbhbhbhbhbheXaRbhbhbhbheXbhbhbhgPbhbhgPbhbhbheXbhbhbhbhbhbhbheXeLeLeLeTeUeVeLeLeLeXaLaNaNaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfendYbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeDeEeEeWekekekekekekekekekekekekejaNaNaNaLaRaRaRaRaRaRaRaRaRaRaRaNaNaNaRaRaRaRaReXbhbhbhgPdpbibhbhbhbhgPbhbhbheXdkaReXbhbhgPbhbhbhbhbhgPbhbheXaRbhbhbhbheXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeLeLeYeLeLeVeLeLhteXaLaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdXeibQaaaaaaaaaaaaaaaaaaaaaabpbpaaaaaaaaaaaaaaaaaaaaeZekekekekekekekekekekekekejaNaNaNaLaRaRaRaRaRaRaRaRbdaRaRaRaNaNaNaRaRaRaReXfaeXfaeXfaeXfaeXeXfaeXfaeXfbeXaRaXfceXeXeXeBeXeXeXeXeXeXeXeXaRbhbhcwbhfdfebhgVbBbhbheXbhbhgVbhbheXbhbhgVbhbheXffeLfgeLffeLfgeLeLeXaLaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaabtbtbtbtbtbtbtbtbtbtbtbtbtbtfhdLdLfibtbtbtbtbtbtaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaafjekekekekekekekekekekekekejaNaNaLaLaRaRaRaRaRaRaRaRaRaRaRaRaRaNaNaNaRaRaReXeXeXeXeXeXeXeXeXeXeXfceXeXeXeXaRaRfkaRaWaRaRaRaRflaRaWaRaRaRaRbhbhbhgOeXhubhbhbBfmbheXbhfnbBfmbheXbhfobBfpbheXeLeLeLfqeLeLeLfqeLeXaLaNaNaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabTfrfsfsfsfsfsfsfsfsfsfsfsfsfsfsftftfsfsfsfsfsfsfufvbpbpbpbpbpaaaaaaaaaaaaaaaaaaaaaaejekekekekekekfwekekekekekejaNaLaLaPaRaRaRaRaRaRaRaRaRaRaRaRaRaRaNaNaNaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaReaaWfxfceXeXeXeXeXeBeXeXeXeXeXeXaRbjbhbhfycfbhbhbhbBbhbheXbhbhegbhbCeXbjbhbhbhbheXdcdcdceXdCeXeLfzeLeXaLaNaNaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftftftfBfvbpbpbpbpaaaaaaaaaaaaaaaaaaaaaaaafCekekekekekekekekekekekekejaNaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaNaNaRaRaRaRaRaReXeXeXeXeXeXeXeXeXeXeXeXfcdkeXfDbhbhbhbhgVbhbhbhbhbheXaRbhfEbhbhcfbhbhbhbBfmgOeXbhfnbBfmbjeXbhfobBfpbheXbhbhbhbhbhdceLeLhteXaLaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftfFfFfGfHfIfIbpbpbpaaaaaaaaaaaaaaaaaaaaaaeZekekekekekekfJekekekekekejaNaLaRaRaRaRaRaRaRaRaRaRaPaRaNaNaNaNaNaNaNaRaRaRaRaRaReXfKbhbhbhbhgVbhbhbhbhbheXdkeBbhbhbhbhdpcwbhbhbhbhbhddaRbhbjbhgOeXhubjbhbBbhbheXgXbhbBbhgOeXgXcwfLbhgOeXeXeXeXbhbhdceLfMeLeXaLaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftfNftfNfIfIfIbpbpaaaaaaaaaaaaaaaaaaaaaaaafjekekekekekekekekekekekekejaNaLaRaRaRaRaRaRaNaNaNaNaNaNaNaNaNaNaNaNaNaRaRaRaRaRaReXbhbhbhbhbjbhfObhbjdGbheXfleXbhbhdGbhbhbhbhbhbhcwbheXhmbhfPbhbheXfebhbhbBbhbheXbhfnbBfmbheXbhfobBfpbheXhvbheXhnbhdceLeLeLeXaLaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabTfAftftfSftftftftftftftftftftftftftftftftftfsfsfTfHfIbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaejekekekekekekekekekekekekejaLaLaRaRaRaRaLaLaLaLaLaLaLaLaLaLaLaLaLfUaLaLaRaRaRaRaReXbhbhbhbhbhfPfVdpbhfWbhcfaReXgXbhbhbhbhbhfRbhbhbhgOeXdnbhbhbhbheBfXbhbhbBfmgOeXbhbhbhbhbheXbhbhbhbhbheXfYbhcfbhbhdceLfZeLeXaLaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftftftfBfvbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaafCekekekekekekekekekekekekejaLaPaRaRaLaLaLaLaRaRaRaRaRaRaRaRdnaRaRaRaLaLaLaRaRaRaReXgXdpbhbhbhbhbhbhgabhgOeBhmeXbhbhbhbhbhbhdpbhbhdGbheBaRbhbhbhbheXfebhbhbBbhbheXeXeXcfeXeBeXeXeXcfeXeXeXeXeBeXbhbhdceLeLhteXaLaNaNaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftftftfBbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeZekekekekekekekekekekekekejaLaLaLaLaLaLaRaRaRaRaRaRaRaRaRaRaRaRaReaaRaLaLaLaRaRaReXbhbhbjbhbnbhbhdpbhbhbheXaWeXbhbhcwbhbhbhbibhbhbhbheXaRaRaRaRaReXgXbhcwbBbBbheXbhbhbjbhbhcwbhbhbhbhbhbhbhbhbhbjbheXeLfMeLeXaLaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftftftfBbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafjekekekekekekekekekekekekejaGaNaNaLaLaRaRaRaRaRaLaLaLfUaRaRaRaRaRaRaRaRaRaLaLaRaReXbhbhbhbhbhbhbhbhdGbhbheXaReXbhbhbhgPbhbhgPbhbhbhbhfcaRaXaRaRaReXbhbhgPbhbhcwcfbhbhgPbhdGbhbhbhgPbhbhfPcwbhgPbhbheXeLeLeLeXaLaNaNaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftgdftftftftftftftftftfBbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaejgeeEeWeRgfggezgeeEghejejejaGaNaNaLaRaRaRaRaRaRaLaLaLaLaLaLaLaRaRaReaaRaRaRaLaLaLeXeXeXeXeXfcaReXeXeXeXeXeXaReXeXeXeXeBdcdceXeXeXeXeXeXaRaRaRaRaReXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXaLaNaNaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftftftftftftftftftftftftftftftftfBbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeZekeZaaaaaaaaaaaGaGaGaGaNaLaLaRaRaRaRaRaRaRaRaRaRaLaLaLaLaLaLaRaRaRaRaRfUaLaLaRaRaRaRaRaRfceXeXaRaRaRaRaRaRaRaRheaRaRheaRaRaRaRaRaRaRaRaRaRaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaNaNaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaabTfAftftftftftftftfSftftftftftftftftftftftftftftfBbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeZekeZaaaaaaaaaGaGaGaGaGaNaLaRaRaRaRaRaRaRaRaRaRaRaRaRaRfUaLaLaLaRaRaReaaRaRaLaRaReaaRaLaLaLaLaLaLaLaLaRaRaLaLaLaLaLaRaRaLaLaRaRaLaRaRaRaRaLaLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaGaGaGaGaGaGaGaGaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaabTgigjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgkbQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagleRglaaaaaaaaaGaGaGaGaNaNaLaLaLaLaLaLaRaRaRaRaRaRaRaRaRaRaLaLaLaLaLaRaRaRaRgmaRaWaRaRfUaNaNaNaNaNaNaLaLaLaLaNaNaNaLaLaLaLaLaLaLaLaRaLaLaLaLaLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaGaGaGaGaGaGaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaadUdUdUdUdUdUdUdUdUdUdUdUdUdUdUdUdUdUdUdUdUdUdUdUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagbgogpgqgrgogcaaaaaaaGaGaGaNaNaNaLaLaLaLaLaLfUaLaLaRaRaRaRaRaRaRaRaLaLaLaLaRaRaWeaaRaRaRaRaLaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaNaNaNaNaLaLaLaGaGaGaNaNaNaNaNaNaNaNaNaNaNaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm
index 1c99c8d970c..667c7152e85 100644
--- a/code/__DEFINES/role_preferences.dm
+++ b/code/__DEFINES/role_preferences.dm
@@ -37,6 +37,7 @@
#define ROLE_MORPH "morph"
#define ROLE_ERT "emergency response team"
#define ROLE_NYMPH "Dionaea"
+#define ROLE_GSPIDER "giant spider"
//Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR.
@@ -69,4 +70,5 @@ var/global/list/special_roles = list(
ROLE_GUARDIAN,
ROLE_MORPH,
ROLE_TRADER,
+ ROLE_GSPIDER,
)
diff --git a/code/__DEFINES/rolebans.dm b/code/__DEFINES/rolebans.dm
index dba57111150..b2eb79e26be 100644
--- a/code/__DEFINES/rolebans.dm
+++ b/code/__DEFINES/rolebans.dm
@@ -17,6 +17,7 @@ var/global/list/antag_roles = list(
ROLE_REVENANT,
ROLE_GUARDIAN,
ROLE_MORPH,
+ ROLE_GSPIDER,
)
// Bannable other roles
@@ -26,4 +27,4 @@ var/global/list/other_roles = list(
ROLE_ERT,
"AntagHUD",
"Records"
-)
\ No newline at end of file
+)
diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm
index e85ba6a12cf..be703845fb3 100644
--- a/code/_globalvars/lists/names.dm
+++ b/code/_globalvars/lists/names.dm
@@ -8,6 +8,7 @@ var/list/first_names_male = file2list("config/names/first_male.txt")
var/list/first_names_female = file2list("config/names/first_female.txt")
var/list/last_names = file2list("config/names/last.txt")
var/list/clown_names = file2list("config/names/clown.txt")
+var/list/mime_names = file2list("config/names/mime.txt")
var/list/diona_names = file2list ("config/names/diona.txt")
var/list/verbs = file2list("config/names/verbs.txt")
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index cb36ab280d7..a20efc98a06 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -143,6 +143,21 @@ The box in your backpack has an oxygen tank and gas mask in it."
desc = "You ate too much food, lardass. Run around the station and lose some weight."
icon_state = "fat"
+/obj/screen/alert/full
+ name = "Full"
+ desc = "You feel full and satisfied, but you shouldn't eat much more."
+ icon_state = "full"
+
+/obj/screen/alert/well_fed
+ name = "Well Fed"
+ desc = "You feel quite satisfied, but you may be able to eat a bit more."
+ icon_state = "well_fed"
+
+/obj/screen/alert/fed
+ name = "Fed"
+ desc = "You feel moderately satisfied, but a bit more food may not hurt."
+ icon_state = "fed"
+
/obj/screen/alert/hungry
name = "Hungry"
desc = "Some food would be good right about now."
diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm
index 894e88e3a08..0252977dcf4 100644
--- a/code/datums/diseases/_MobProcs.dm
+++ b/code/datums/diseases/_MobProcs.dm
@@ -77,8 +77,8 @@
if(prob(15/D.permeability_mod))
return
-/* if(satiety>0 && prob(satiety/10)) // positive satiety makes it harder to contract the disease.
- return*/
+ if(satiety > 0 && prob(satiety/10)) // positive satiety makes it harder to contract the disease.
+ return
var/target_zone = pick(head_ch;1,body_ch;2,hands_ch;3,feet_ch;4)
diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm
index d38c65beb8c..c55a42e397c 100644
--- a/code/datums/diseases/_disease.dm
+++ b/code/datums/diseases/_disease.dm
@@ -102,7 +102,7 @@ var/list/diseases = subtypesof(/datum/disease)
return
if(affected_mob)
- if(affected_mob.reagents.has_reagent("spaceacillin"))
+ if(affected_mob.reagents.has_reagent("spaceacillin") || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10)))
return
var/spread_range = 1
diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm
index 2e953f3ec91..afe6c059d6d 100644
--- a/code/datums/recipe.dm
+++ b/code/datums/recipe.dm
@@ -37,7 +37,7 @@
var/list/reagents // example: = list("berryjuice" = 5) // do not list same reagent twice
var/list/items // example: = list(/obj/item/weapon/crowbar, /obj/item/weapon/welder) // place /foo/bar before /foo
var/list/fruit // example: = list("fruit" = 3)
- var/result // example: = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
+ var/result // example: = /obj/item/weapon/reagent_containers/food/snacks/donut
var/time = 100 // 1/10 part of second
var/byproduct // example: = /obj/item/weapon/kitchen/mould // byproduct to return, such as a mould or trash
diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm
index 13752088a18..aae8a668799 100644
--- a/code/game/data_huds.dm
+++ b/code/game/data_huds.dm
@@ -68,47 +68,55 @@
return 1
return 0
-//helper for getting the appropriate health status
+//helper for getting the appropriate health status UPDATED BY PUCKABOO2 TO INCLUDE NEGATIVES.
/proc/RoundHealth(health)
switch(health)
if(100 to INFINITY)
return "health100"
- if(93 to 100)
- return "health93"
- if(86 to 93)
- return "health86"
- if(78 to 86)
- return "health78"
- if(71 to 78)
- return "health71"
- if(64 to 71)
- return "health64"
- if(56 to 64)
- return "health56"
- if(49 to 56)
- return "health49"
- if(42 to 49)
- return "health42"
- if(35 to 42)
- return "health35"
- if(28 to 35)
- return "health28"
- if(21 to 28)
- return "health21"
- if(14 to 21)
- return "health14"
- if(7 to 14)
- return "health7"
- if(1 to 7)
- return "health1"
- if(-50 to 1)
+ if(95 to 100)
+ return "health95" //For telling patients to eat a warm donk pocket and go on with their shift.
+ if(90 to 95)
+ return "health90"
+ if(80 to 90)
+ return "health80"
+ if(70 to 80)
+ return "health70"
+ if(60 to 70)
+ return "health60"
+ if(50 to 60)
+ return "health50"
+ if(40 to 50)
+ return "health40"
+ if(30 to 40)
+ return "health30"
+ if(20 to 30)
+ return "health20"
+ if(10 to 20)
+ return "health10"
+ if(0 to 10)
return "health0"
- if(-85 to -50)
+ if(-10 to 0)
+ return "health-0" //The health bar will turn a brilliant red and flash as usual, but deducted health will be black.
+ if(-20 to -10)
+ return "health-10"
+ if(-30 to -20)
+ return "health-20"
+ if(-40 to -30)
+ return "health-30"
+ if(-50 to -40)
+ return "health-40"
+ if(-60 to -50)
return "health-50"
- if(-99 to -85)
- return "health-85"
+ if(-70 to -60)
+ return "health-60"
+ if(-80 to -70)
+ return "health-70" //Doc?
+ if(-90 to -80)
+ return "health-80" //Hey, doc?
+ if(-100 to -90)
+ return "health-90" //HURRY UP, DOC!
else
- return "health-100"
+ return "health-100" //doc u had 1 job
return "0"
///HOOKS
@@ -394,4 +402,4 @@
if(weedlevel < 1) // You don't want to see these icons if the value is small
holder.icon_state = ""
return
- holder.icon_state = "hudweed[RoundPlantBar(weedlevel/10)]"
\ No newline at end of file
+ holder.icon_state = "hudweed[RoundPlantBar(weedlevel/10)]"
diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm
index 3800597709a..57b69358f6b 100644
--- a/code/game/gamemodes/changeling/powers/absorb.dm
+++ b/code/game/gamemodes/changeling/powers/absorb.dm
@@ -58,8 +58,8 @@
if(!changeling.has_dna(target.dna))
changeling.absorb_dna(target, user)
- if(user.nutrition < 450) // Nutrition level before overeat_duration starts ticking for you to become obese.
- user.nutrition = min((user.nutrition + target.nutrition), 450)
+ if(user.nutrition < NUTRITION_LEVEL_WELL_FED)
+ user.nutrition = min((user.nutrition + target.nutrition), NUTRITION_LEVEL_WELL_FED)
if(target.mind)//if the victim has got a mind
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index b51a6074ec9..5a3d0599c8c 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -407,7 +407,7 @@ var/round_start_time = 0
if(player.client)
if(player.client.karma_spent == 0)
- if(player.get_preference(DISABLE_KARMA_REMINDER))
+ if(!player.get_preference(DISABLE_KARMA_REMINDER))
var/dat
dat += {"
Karma ReminderKarma Reminder
You have not yet spent your karma for the round, surely there is a player who was worthy of receiving
diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm
index 7200e74f48f..bf8a106109a 100644
--- a/code/game/gamemodes/shadowling/shadowling.dm
+++ b/code/game/gamemodes/shadowling/shadowling.dm
@@ -312,7 +312,7 @@ Made by Xhuis
if(!H.weakeyes)
H.weakeyes = 1 //Makes them more vulnerable to flashes and flashbangs
var/light_amount = 0
- H.nutrition = 450 //i aint never get hongry
+ H.nutrition = NUTRITION_LEVEL_WELL_FED //i aint never get hongry
if(isturf(H.loc))
var/turf/T = H.loc
light_amount = T.get_lumcount() * 10
@@ -349,7 +349,7 @@ Made by Xhuis
if(!H.weakeyes)
H.weakeyes = 1 //Makes them more vulnerable to flashes and flashbangs
var/light_amount = 0
- H.nutrition = 450 //i aint never get hongry
+ H.nutrition = NUTRITION_LEVEL_WELL_FED //i aint never get hongry
if(isturf(H.loc))
var/turf/T = H.loc
light_amount = T.get_lumcount() * 10
diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm
index 39c9c24ec50..46bba1522dd 100644
--- a/code/game/gamemodes/vampire/vampire.dm
+++ b/code/game/gamemodes/vampire/vampire.dm
@@ -304,7 +304,7 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
H.vessel.remove_reagent("blood", 25)
if(ishuman(owner))
var/mob/living/carbon/human/V = owner
- V.nutrition = min(450, V.nutrition + (blood / 2))
+ V.nutrition = min(NUTRITION_LEVEL_WELL_FED, V.nutrition + (blood / 2))
draining = null
to_chat(owner, "You stop draining [H.name] of blood.")
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index 1b8004f88cc..1162735db96 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -524,3 +524,4 @@
icon_state = "laptop"
icon_keyboard = "laptop_key"
icon_screen = "medlaptop"
+ density = 0
diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm
index 027b182e0c0..ee90fcc3b21 100644
--- a/code/game/machinery/computer/skills.dm
+++ b/code/game/machinery/computer/skills.dm
@@ -6,6 +6,7 @@
icon_state = "laptop"
icon_keyboard = "laptop_key"
icon_screen = "medlaptop"
+ density = 0
light_color = LIGHT_COLOR_GREEN
req_one_access = list(access_heads)
circuit = /obj/item/weapon/circuitboard/skills
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index e48a5f44b32..1d9e02f52a1 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -705,6 +705,7 @@
for(var/obj/item/O in I) // the things inside the tools, if anything; mainly for janiborg trash bags
O.loc = R
qdel(I)
+ R.module.remove_subsystems_and_actions(R)
qdel(R.module)
return ..()
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index b886bc3ff71..9e4e8d5745c 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -7,6 +7,8 @@
var/mob/living/carbon/human/attached = null
var/mode = 1 // 1 is injecting, 0 is taking blood.
var/obj/item/weapon/reagent_containers/beaker = null
+ var/transfer_amount = 5
+ var/possible_transfer_amounts = list(1,5,10)
/obj/machinery/iv_drip/New()
..()
@@ -115,10 +117,6 @@
// Give blood
if(mode)
if(beaker.volume > 0)
- var/transfer_amount = 5
- if(istype(beaker, /obj/item/weapon/reagent_containers/blood))
- // speed up transfer on blood packs
- transfer_amount = 10
var/fraction = min(transfer_amount/beaker.volume, 1) //the fraction that is transfered of the total volume
beaker.reagents.reaction(attached, INGEST, fraction) //make reagents reacts, but don't spam messages
beaker.reagents.trans_to(attached, transfer_amount)
@@ -238,3 +236,15 @@
to_chat(user, "No chemicals are attached.")
to_chat(user, "[attached ? attached : "No one"] is attached.")
+
+/obj/machinery/iv_drip/verb/set_transfer_rate()
+ set name = "Set transfer amount"
+ set category = "Object"
+ set src in view(1)
+
+ if(usr.incapacitated())
+ return
+ var/default = 5
+ var/N = input("Amount per transfer from this:", "[src]", default) as null|anything in possible_transfer_amounts
+ if(N)
+ transfer_amount = N
\ No newline at end of file
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 4ec9471a36a..43c25084cb5 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -796,10 +796,10 @@
desc = "A self-serving Chinese food machine, for all your Chinese food needs."
product_slogans = "Taste 5000 years of culture!"
icon_state = "snack"
- products = list(/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein = 5, /obj/item/weapon/reagent_containers/food/snacks/chinese/tao = 5, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles = 5,
- /obj/item/weapon/reagent_containers/food/snacks/chinese/rice = 5, /obj/item/weapon/reagent_containers/food/snacks/wingfangchu = 5)
+ products = list(/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein = 6, /obj/item/weapon/reagent_containers/food/snacks/chinese/tao = 6, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles = 6,
+ /obj/item/weapon/reagent_containers/food/snacks/chinese/rice = 6)
prices = list(/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein = 50, /obj/item/weapon/reagent_containers/food/snacks/chinese/tao = 50, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles = 50,
- /obj/item/weapon/reagent_containers/food/snacks/chinese/rice = 50, /obj/item/weapon/reagent_containers/food/snacks/wingfangchu = 50)
+ /obj/item/weapon/reagent_containers/food/snacks/chinese/rice = 50)
/obj/machinery/vending/cola
name = "\improper Robust Softdrinks"
@@ -945,7 +945,7 @@
icon_deny = "sec-deny"
req_access_txt = "1"
products = list(/obj/item/weapon/restraints/handcuffs = 8,/obj/item/weapon/restraints/handcuffs/cable/zipties = 8,/obj/item/weapon/grenade/flashbang = 4,/obj/item/device/flash = 5,
- /obj/item/weapon/reagent_containers/food/snacks/donut/normal = 12,/obj/item/weapon/storage/box/evidence = 6,/obj/item/device/flashlight/seclite = 4,/obj/item/weapon/restraints/legcuffs/bola/energy = 7)
+ /obj/item/weapon/reagent_containers/food/snacks/donut = 12,/obj/item/weapon/storage/box/evidence = 6,/obj/item/device/flashlight/seclite = 4,/obj/item/weapon/restraints/legcuffs/bola/energy = 7)
contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/weapon/storage/fancy/donut_box = 2,/obj/item/device/hailer = 5)
/obj/machinery/vending/hydronutrients
@@ -1033,8 +1033,10 @@
products = list(/obj/item/clothing/suit/chickensuit = 1,/obj/item/clothing/head/chicken = 1,/obj/item/clothing/under/gladiator = 1,
/obj/item/clothing/head/helmet/gladiator = 1,/obj/item/clothing/under/gimmick/rank/captain/suit = 1,/obj/item/clothing/head/flatcap = 1,
/obj/item/clothing/suit/storage/labcoat/mad = 1,/obj/item/clothing/glasses/gglasses = 1,/obj/item/clothing/shoes/jackboots = 1,
- /obj/item/clothing/under/schoolgirl = 1,/obj/item/clothing/head/kitty = 1,/obj/item/clothing/under/blackskirt = 1,/obj/item/clothing/head/beret = 1,
- /obj/item/clothing/accessory/waistcoat = 1,/obj/item/clothing/under/suit_jacket = 1,/obj/item/clothing/head/that =1,/obj/item/clothing/under/kilt = 1,/obj/item/clothing/head/beret = 1,/obj/item/clothing/accessory/waistcoat = 1,
+ /obj/item/clothing/under/schoolgirl = 1,/obj/item/clothing/head/kitty = 1,/obj/item/clothing/under/blackskirt = 1,
+ /obj/item/clothing/suit/toggle/owlwings = 1, /obj/item/clothing/under/owl = 1,/obj/item/clothing/mask/gas/owl_mask = 1,
+ /obj/item/clothing/suit/toggle/owlwings/griffinwings = 1, /obj/item/clothing/under/griffin = 1, /obj/item/clothing/shoes/griffin = 1, /obj/item/clothing/head/griffin = 1,
+ /obj/item/clothing/accessory/waistcoat = 1,/obj/item/clothing/under/suit_jacket = 1,/obj/item/clothing/head/that =1,/obj/item/clothing/under/kilt = 1,/obj/item/clothing/accessory/waistcoat = 1,
/obj/item/clothing/glasses/monocle =1,/obj/item/clothing/head/bowlerhat = 1,/obj/item/weapon/cane = 1,/obj/item/clothing/under/sl_suit = 1,
/obj/item/clothing/mask/fakemoustache = 1,/obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1,/obj/item/clothing/head/plaguedoctorhat = 1,/obj/item/clothing/mask/gas/plaguedoctor = 1,
/obj/item/clothing/suit/apron = 1,/obj/item/clothing/under/waiter = 1,/obj/item/clothing/suit/jacket/miljacket = 1,
@@ -1044,10 +1046,20 @@
/obj/item/clothing/mask/gas/cyborg = 1,/obj/item/clothing/suit/holidaypriest = 1,/obj/item/clothing/head/wizard/marisa/fake = 1,
/obj/item/clothing/suit/wizrobe/marisa/fake = 1,/obj/item/clothing/under/sundress = 1,/obj/item/clothing/head/witchwig = 1,/obj/item/weapon/twohanded/staff/broom = 1,
/obj/item/clothing/suit/wizrobe/fake = 1,/obj/item/clothing/head/wizard/fake = 1,/obj/item/weapon/twohanded/staff = 3,/obj/item/clothing/mask/gas/sexyclown = 1,
- /obj/item/clothing/under/sexyclown = 1,/obj/item/clothing/mask/gas/sexymime = 1,/obj/item/clothing/under/sexymime = 1,/obj/item/clothing/suit/apron/overalls = 1,
+ /obj/item/clothing/under/sexyclown = 1,/obj/item/clothing/mask/gas/sexymime = 1,/obj/item/clothing/under/sexymime = 1,
+ /obj/item/clothing/mask/face/bat = 1,/obj/item/clothing/mask/face/bee = 1,/obj/item/clothing/mask/face/bear = 1,/obj/item/clothing/mask/face/raven = 1,/obj/item/clothing/mask/face/jackal = 1,/obj/item/clothing/mask/face/fox = 1,/obj/item/clothing/mask/face/tribal = 1,/obj/item/clothing/mask/face/rat = 1,
+ /obj/item/clothing/suit/apron/overalls = 1,
/obj/item/clothing/head/rabbitears =1, /obj/item/clothing/head/sombrero = 1, /obj/item/clothing/suit/poncho = 1,
/obj/item/clothing/suit/poncho/green = 1, /obj/item/clothing/suit/poncho/red = 1, /obj/item/clothing/accessory/blue = 1, /obj/item/clothing/accessory/red = 1, /obj/item/clothing/accessory/black = 1, /obj/item/clothing/accessory/horrible = 1,
- /obj/item/clothing/under/maid = 1, /obj/item/clothing/under/janimaid = 1, /obj/item/clothing/under/pants/camo = 1, /obj/item/clothing/mask/bandana = 1, /obj/item/clothing/mask/bandana/black = 1)
+ /obj/item/clothing/under/maid = 1, /obj/item/clothing/under/janimaid = 1,
+ /obj/item/clothing/under/jester = 1, /obj/item/clothing/head/jester = 1,
+ /obj/item/clothing/under/pants/camo = 1, /obj/item/clothing/mask/bandana = 1, /obj/item/clothing/mask/bandana/black = 1,
+ /obj/item/clothing/shoes/singery = 1,/obj/item/clothing/under/singery = 1,
+ /obj/item/clothing/shoes/singerb = 1,/obj/item/clothing/under/singerb = 1,
+ /obj/item/clothing/suit/hooded/carp_costume = 1,/obj/item/clothing/suit/hooded/bee_costume = 1,
+ /obj/item/clothing/suit/snowman = 1,/obj/item/clothing/head/snowman = 1,
+ /obj/item/clothing/mask/joy = 1,
+ /obj/item/clothing/head/cueball = 1,/obj/item/clothing/under/scratch = 1)
contraband = list(/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/weapon/gun/magic/wand = 1, /obj/item/clothing/mask/balaclava=1, /obj/item/clothing/mask/horsehead = 2)
premium = list(/obj/item/clothing/suit/hgpirate = 1, /obj/item/clothing/head/hgpiratecap = 1, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/weapon/shield/riot/roman = 1)
refill_canister = /obj/item/weapon/vending_refill/autodrobe
@@ -1163,7 +1175,12 @@
desc = "It doesn't seem the slightest bit unusual. This frustrates you immensely."
icon_state = "hats"
product_ads = "Warning, not all hats are dog/monkey compatible. Apply forcefully with care.;Apply directly to the forehead.;Who doesn't love spending cash on hats?!;From the people that brought you collectable hat crates, Hatlord!"
- products = list(/obj/item/clothing/head/bowlerhat = 10,/obj/item/clothing/head/beaverhat = 10,/obj/item/clothing/head/boaterhat = 10,/obj/item/clothing/head/fedora = 10,/obj/item/clothing/head/fez = 10)
+ products = list(/obj/item/clothing/head/bowlerhat = 10,
+ /obj/item/clothing/head/beaverhat = 10,
+ /obj/item/clothing/head/boaterhat = 10,
+ /obj/item/clothing/head/fedora = 10,
+ /obj/item/clothing/head/fez = 10,
+ /obj/item/clothing/head/beret = 10)
contraband = list(/obj/item/clothing/head/bearpelt = 5)
premium = list(/obj/item/clothing/head/soft/rainbow = 1)
refill_canister = /obj/item/weapon/vending_refill/hatdispenser
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 32ba3730419..e3c10994a8b 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -502,6 +502,8 @@
/obj/mecha/attack_animal(mob/living/simple_animal/user as mob)
log_message("Attack by simple animal. Attacker - [user].",1)
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.do_attack_animation(src)
if(user.melee_damage_upper == 0)
user.custom_emote(1, "[user.friendly] [src]")
else
diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm
index 9d1fb75d25e..8443ac90f17 100644
--- a/code/game/objects/effects/spiders.dm
+++ b/code/game/objects/effects/spiders.dm
@@ -201,7 +201,7 @@
if(player_spiders && !selecting_player)
selecting_player = 1
spawn()
- var/list/candidates = pollCandidates("Do you want to play as a spider?", ROLE_ALIEN, 1)
+ var/list/candidates = pollCandidates("Do you want to play as a spider?", ROLE_GSPIDER, 1)
if(candidates.len)
var/mob/C = pick(candidates)
diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm
index eae834731a9..0e9d9a0ac09 100644
--- a/code/game/objects/items/robot/robot_items.dm
+++ b/code/game/objects/items/robot/robot_items.dm
@@ -34,51 +34,3 @@
name = "Overdrive"
icon = 'icons/obj/decals.dmi'
icon_state = "shock"
-
-/**********************************************************************
- HUD/SIGHT things
-***********************************************************************/
-/obj/item/borg/sight
- icon = 'icons/obj/decals.dmi'
- icon_state = "securearea"
- var/sight_mode = null
-
-/obj/item/borg/sight/xray
- name = "X-ray Vision"
- sight_mode = BORGXRAY
-
-/obj/item/borg/sight/thermal
- name = "Thermal Vision"
- sight_mode = BORGTHERM
- icon_state = "thermal"
- icon = 'icons/obj/clothing/glasses.dmi'
-
-/obj/item/borg/sight/meson
- name = "Meson Vision"
- sight_mode = BORGMESON
- icon_state = "meson"
- icon = 'icons/obj/clothing/glasses.dmi'
-
-/obj/item/borg/sight/hud
- name = "Hud"
- var/obj/item/clothing/glasses/hud/hud = null
-
-/obj/item/borg/sight/hud/med
- name = "medical hud"
- icon_state = "healthhud"
- icon = 'icons/obj/clothing/glasses.dmi'
-
-/obj/item/borg/sight/hud/med/New()
- ..()
- hud = new /obj/item/clothing/glasses/hud/health(src)
- return
-
-/obj/item/borg/sight/hud/sec
- name = "security hud"
- icon_state = "securityhud"
- icon = 'icons/obj/clothing/glasses.dmi'
-
-/obj/item/borg/sight/hud/sec/New()
- ..()
- hud = new /obj/item/clothing/glasses/hud/security(src)
- return
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index ffb1d31faa8..bd6f3acfdee 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -35,6 +35,7 @@
R.uneq_all()
R.hands.icon_state = "nomod"
R.icon_state = "robot"
+ R.module.remove_subsystems_and_actions(R)
qdel(R.module)
R.module = null
@@ -328,4 +329,4 @@
to_chat(cyborg, "Self-repair is active in [msgmode] mode.")
msg_cooldown = world.time
else
- deactivate()
\ No newline at end of file
+ deactivate()
diff --git a/code/game/objects/items/weapons/alien_specific.dm b/code/game/objects/items/weapons/alien_specific.dm
index c487af03cd6..922f4004714 100644
--- a/code/game/objects/items/weapons/alien_specific.dm
+++ b/code/game/objects/items/weapons/alien_specific.dm
@@ -64,10 +64,3 @@
desc = "Useful for taking pictures, making friends and flash-frying chips."
icon = 'icons/mob/alien.dmi'
icon_state = "borg-flash"
-
-//heat vision
-
-/obj/item/borg/sight/thermal/alien
- name = "thermal module"
- icon = 'icons/mob/alien.dmi'
- icon_state = "borg-extra-vision"
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/garrote.dm b/code/game/objects/items/weapons/garrote.dm
index 22b589c7517..a48bc19d512 100644
--- a/code/game/objects/items/weapons/garrote.dm
+++ b/code/game/objects/items/weapons/garrote.dm
@@ -107,6 +107,12 @@
return
/obj/item/weapon/twohanded/garrote/process()
+ if(!strangling)
+ // Our mark got gibbed or similar
+ update_icon()
+ processing_objects.Remove(src)
+ return
+
if(!istype(loc, /mob/living/carbon/human))
strangling = null
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index fc5318bff2f..904fb667932 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -175,8 +175,7 @@
"/obj/item/clothing/glasses",
"/obj/item/ammo_casing/shotgun",
"/obj/item/ammo_box",
- "/obj/item/weapon/reagent_containers/food/snacks/donut/normal",
- "/obj/item/weapon/reagent_containers/food/snacks/donut/jelly",
+ "/obj/item/weapon/reagent_containers/food/snacks/donut",
"/obj/item/weapon/kitchen/knife/combat",
"/obj/item/weapon/melee/baton",
"/obj/item/weapon/melee/classic_baton",
diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm
index c4488216b12..1d8990875a4 100644
--- a/code/game/objects/items/weapons/storage/fancy.dm
+++ b/code/game/objects/items/weapons/storage/fancy.dm
@@ -53,9 +53,8 @@
/obj/item/weapon/storage/fancy/donut_box/New()
..()
- for(var/i=1; i <= storage_slots; i++)
- new /obj/item/weapon/reagent_containers/food/snacks/donut/normal(src)
- return
+ for(var/i = 1 to storage_slots)
+ new /obj/item/weapon/reagent_containers/food/snacks/donut(src)
/*
* Egg Box
diff --git a/code/modules/client/preference/loadout/loadout_hat.dm b/code/modules/client/preference/loadout/loadout_hat.dm
index e5f8c158092..7e4ca4620d9 100644
--- a/code/modules/client/preference/loadout/loadout_hat.dm
+++ b/code/modules/client/preference/loadout/loadout_hat.dm
@@ -117,3 +117,13 @@
display_name = "science beret"
path = /obj/item/clothing/head/beret/sci
allowed_roles = list("Research Director", "Scientist")
+
+/datum/gear/hat/surgicalcap_purple
+ display_name = "surgical cap, purple"
+ path = /obj/item/clothing/head/surgery/purple
+ allowed_roles = list("Chief Medical Officer", "Medical Doctor")
+
+/datum/gear/hat/surgicalcap_green
+ display_name = "surgical cap, green"
+ path = /obj/item/clothing/head/surgery/green
+ allowed_roles = list("Chief Medical Officer", "Medical Doctor")
\ No newline at end of file
diff --git a/code/modules/client/preference/loadout/loadout_uniform.dm b/code/modules/client/preference/loadout/loadout_uniform.dm
index aaec97829c8..5e0d5b0510d 100644
--- a/code/modules/client/preference/loadout/loadout_uniform.dm
+++ b/code/modules/client/preference/loadout/loadout_uniform.dm
@@ -98,6 +98,19 @@
path = /obj/item/clothing/under/rank/head_of_security/skirt
allowed_roles = list("Head of Security")
+/datum/gear/uniform/job/medical/scrubs
+ subtype_path = /datum/gear/uniform/job/medical/scrubs
+
+/datum/gear/uniform/job/medical/scrubs/purple
+ display_name = "medical scrubs, purple"
+ path = /obj/item/clothing/under/rank/medical/purple
+ allowed_roles = list("Chief Medical Officer", "Medical Doctor")
+
+/datum/gear/uniform/job/medical/scrubs/green
+ display_name = "medical scrubs, green"
+ path = /obj/item/clothing/under/rank/medical/green
+ allowed_roles = list("Chief Medical Officer", "Medical Doctor")
+
/datum/gear/uniform/sec
subtype_path = /datum/gear/uniform/sec
diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm
index bf139ee4c8b..09cef84894c 100644
--- a/code/modules/client/preference/preferences.dm
+++ b/code/modules/client/preference/preferences.dm
@@ -23,6 +23,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
// ROLE_GANG = 21,
ROLE_BORER = 21,
ROLE_NINJA = 21,
+ ROLE_GSPIDER = 21,
ROLE_ABDUCTOR = 30,
)
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index 98e5026ae81..691394eb1b4 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -79,9 +79,17 @@
name = "cueball helmet"
desc = "A large, featureless white orb meant to be worn on your head. How do you even see out of this thing?"
icon_state = "cueball"
+ item_state = "cueball"
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
- item_state="cueball"
- flags_inv = 0
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+
+/obj/item/clothing/head/snowman
+ name = "snowman head"
+ desc = "A ball of white styrofoam. So festive."
+ icon_state = "snowman_h"
+ item_state = "snowman_h"
+ flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
/obj/item/clothing/head/that
name = "sturdy top-hat"
@@ -348,6 +356,11 @@
attack_verb = list("warned", "cautioned", "smashed")
burn_state = FIRE_PROOF
+/obj/item/clothing/head/jester
+ name = "jester hat"
+ desc = "A hat with bells, to add some merryness to the suit."
+ icon_state = "jester_hat"
+
/obj/item/clothing/head/griffin
name = "griffon head"
desc = "Why not 'eagle head'? Who knows."
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index f299419ed09..6e429dd3958 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -139,6 +139,13 @@
w_class = 2
gas_transfer_coefficient = 0.90
+/obj/item/clothing/mask/joy
+ name = "joy mask"
+ desc = "Express your happiness or hide your sorrows with this face with tears of joy cutout."
+ icon_state = "joy"
+ flags = MASKCOVERSMOUTH
+ flags_inv = HIDEFACE
+
/obj/item/clothing/mask/pig
name = "pig mask"
desc = "A rubber pig mask."
@@ -188,6 +195,58 @@
if(user.real_name == "[originalname][temporaryname]" || user.real_name == "A Horse With No Name") //if it's somehow changed while the mask is on it doesn't revert
user.real_name = originalname
+/obj/item/clothing/mask/face
+ flags = MASKCOVERSMOUTH
+ flags_inv = HIDEFACE
+
+/obj/item/clothing/mask/face/rat
+ name = "rat mask"
+ desc = "A mask made of soft vinyl and latex, representing the head of a rat."
+ icon_state = "rat"
+ item_state = "rat"
+
+/obj/item/clothing/mask/face/fox
+ name = "fox mask"
+ desc = "A mask made of soft vinyl and latex, representing the head of a fox."
+ icon_state = "fox"
+ item_state = "fox"
+
+/obj/item/clothing/mask/face/bee
+ name = "bee mask"
+ desc = "A mask made of soft vinyl and latex, representing the head of a bee."
+ icon_state = "bee"
+ item_state = "bee"
+
+/obj/item/clothing/mask/face/bear
+ name = "bear mask"
+ desc = "A mask made of soft vinyl and latex, representing the head of a bear."
+ icon_state = "bear"
+ item_state = "bear"
+
+/obj/item/clothing/mask/face/bat
+ name = "bat mask"
+ desc = "A mask made of soft vinyl and latex, representing the head of a bat."
+ icon_state = "bat"
+ item_state = "bat"
+
+/obj/item/clothing/mask/face/raven
+ name = "raven mask"
+ desc = "A mask made of soft vinyl and latex, representing the head of a raven."
+ icon_state = "raven"
+ item_state = "raven"
+
+/obj/item/clothing/mask/face/jackal
+ name = "jackal mask"
+ desc = "A mask made of soft vinyl and latex, representing the head of a jackal."
+ icon_state = "jackal"
+ item_state = "jackal"
+
+/obj/item/clothing/mask/face/tribal
+ name = "tribal mask"
+ desc = "A mask carved out of wood, detailed carefully by hand."
+ icon_state = "bumba"
+ item_state = "bumba"
+
/obj/item/clothing/mask/fawkes
name = "Guy Fawkes mask"
desc = "A mask designed to help you remember a specific date."
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index 4b2ae0ea01b..702c47d13ed 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -212,3 +212,15 @@
righthand_file = 'icons/goonstation/mob/inhands/clothing_righthand.dmi'
flags = NODROP
shoe_sound = "clownstep"
+
+/obj/item/clothing/shoes/singery
+ name = "yellow performer's boots"
+ desc = "These boots were made for dancing."
+ icon_state = "ysing"
+ put_on_delay = 50
+
+/obj/item/clothing/shoes/singerb
+ name = "blue performer's boots"
+ desc = "These boots were made for dancing."
+ icon_state = "bsing"
+ put_on_delay = 50
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 8798caf2e06..37e8daad42b 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -249,6 +249,13 @@
I.overlays += image(icon = 'icons/mob/robots.dmi' , icon_state = "eyes-robot") //gotta look realistic
H.add_alt_appearance("standard_borg_disguise", I, silicon_mob_list+H) //you look like a robot to robots! (including yourself because you're totally a robot)
+/obj/item/clothing/suit/snowman
+ name = "snowman outfit"
+ desc = "Two white spheres covered in white glitter. 'Tis the season."
+ icon_state = "snowman"
+ item_state = "snowman"
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO
+ flags_inv = HIDEJUMPSUIT
/obj/item/clothing/suit/poncho
name = "poncho"
@@ -279,6 +286,44 @@
item_state = "ponchoshame"
flags = NODROP
+/obj/item/clothing/suit/hooded/carp_costume
+ name = "carp costume"
+ desc = "A costume made from 'synthetic' carp scales, it smells."
+ icon_state = "carp_casual"
+ item_state = "labcoat"
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
+ cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
+ min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT //Space carp like space, so you should too
+ allowed = list(/obj/item/weapon/tank/emergency_oxygen)
+ hoodtype = /obj/item/clothing/head/hooded/carp_hood
+
+/obj/item/clothing/head/hooded/carp_hood
+ name = "carp hood"
+ desc = "A hood attached to a carp costume."
+ icon_state = "carp_casual"
+ body_parts_covered = HEAD
+ cold_protection = HEAD
+ min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
+ flags = NODROP|BLOCKHAIR
+ flags_inv = HIDEEARS
+
+/obj/item/clothing/suit/hooded/bee_costume // It's Hip!
+ name = "bee costume"
+ desc = "Bee the true Queen!"
+ icon_state = "bee"
+ item_state = "labcoat"
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
+ flags = THICKMATERIAL
+ hoodtype = /obj/item/clothing/head/hooded/bee_hood
+
+/obj/item/clothing/head/hooded/bee_hood
+ name = "bee hood"
+ desc = "A hood attached to a bee costume."
+ icon_state = "bee"
+ body_parts_covered = HEAD
+ flags = THICKMATERIAL|NODROP|BLOCKHAIR
+ flags_inv = HIDEEARS
+
/obj/item/clothing/suit/bloated_human //OH MY GOD WHAT HAVE YOU DONE!?!?!?
name = "bloated human suit"
desc = "A horribly bloated suit made from human skins."
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index 6da895760af..486d7d7c34e 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -495,6 +495,26 @@
item_color = "janimaid"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
+/obj/item/clothing/under/singery
+ name = "yellow performer's outfit"
+ desc = "Just looking at this makes you want to sing."
+ icon_state = "ysing"
+ item_state = "ysing"
+ item_color = "ysing"
+
+/obj/item/clothing/under/singerb
+ name = "blue performer's outfit"
+ desc = "Just looking at this makes you want to sing."
+ icon_state = "bsing"
+ item_state = "bsing"
+ item_color = "bsing"
+
+/obj/item/clothing/under/jester
+ name = "jester suit"
+ desc = "A jolly dress, well suited to entertain your master, nuncle."
+ icon_state = "jester"
+ item_color = "jester"
+
/obj/item/clothing/under/flappers
name = "flappers"
desc = "Nothing like the roarin' '20s, flapping the night away on the dance floor."
diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index df0f6916530..97d010439c9 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -154,6 +154,14 @@
icon_on = "guessipon"
icon_off = "guessip"
+/obj/item/weapon/lighter/zippo/fluff/duckchan // Duckchan: Rybys Romney
+ name = "Monogrammed Zippo"
+ desc = " A shiny purple zippo lighter, engraved with Rybys Romney and BuzzPing's name, with a festive green flame."
+ icon = 'icons/obj/custom_items.dmi'
+ icon_state = "rybysfluff"
+ icon_on = "rybysfluffopen"
+ icon_off = "rybysfluff"
+
/obj/item/weapon/fluff/dogwhistle //phantasmicdream: Zeke Varloss
name = "Sax's whistle"
desc = "This whistle seems to have a strange aura about it. Maybe you should blow on it?"
@@ -376,6 +384,18 @@
icon_state = "kakicharakiti"
//////////// Suits ////////////
+/obj/item/clothing/suit/fluff/dusty_jacket //ComputerlessCitizen: Screech
+ name = "Dusty Jacket"
+ desc = "A worn leather jacket. Some burn holes have been patched."
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
+ icon = 'icons/obj/custom_items.dmi'
+ icon_state = "dusty_jacket"
+ ignore_suitadjust = 1
+ actions_types = list()
+ adjust_flavour = null
+ species_fit = null
+ sprite_sheets = null
+
/obj/item/clothing/suit/storage/labcoat/fluff/aeneas_rinil //Socialsystem: Lynn Fea
name = "Robotics labcoat"
desc = "A labcoat with a few markings denoting it as the labcoat of roboticist."
diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm
index f14c0d19254..4655dcba98f 100644
--- a/code/modules/food_and_drinks/food.dm
+++ b/code/modules/food_and_drinks/food.dm
@@ -5,7 +5,8 @@
possible_transfer_amounts = null
volume = 50 //Sets the default container amount for all food items.
var/filling_color = "#FFFFFF" //Used by sandwiches.
- var/bitesize = 1
+ var/junkiness = 0 //for junk food. used to lower human satiety.
+ var/bitesize = 2
var/consume_sound = 'sound/items/eatfood.ogg'
var/apply_type = INGEST
var/apply_method = "swallow"
@@ -15,5 +16,5 @@
/obj/item/weapon/reagent_containers/food/New()
..()
- pixel_x = rand(-10, 10) //Randomizes postion
- pixel_y = rand(-10, 10)
\ No newline at end of file
+ pixel_x = rand(-5, 5) //Randomizes postion
+ pixel_y = rand(-5, 5)
\ No newline at end of file
diff --git a/code/modules/food_and_drinks/food/candy.dm b/code/modules/food_and_drinks/food/candy.dm
index 32a4a584a88..d0d6ab4b32d 100644
--- a/code/modules/food_and_drinks/food/candy.dm
+++ b/code/modules/food_and_drinks/food/candy.dm
@@ -22,7 +22,6 @@
desc = "Such sweet, fattening food."
icon_state = "chocolatebar"
filling_color = "#7D5F46"
- bitesize = 2
list_reagents = list("nutriment" = 2, "chocolate" = 4)
/obj/item/weapon/reagent_containers/food/snacks/candy/caramel
@@ -30,7 +29,6 @@
desc = "Chewy and dense, yet it practically melts in your mouth!"
icon_state = "caramel"
filling_color = "#DB944D"
- bitesize = 2
list_reagents = list("cream" = 2, "sugar" = 2)
@@ -39,7 +37,6 @@
desc = "A hard, brittle candy with a distinctive taste."
icon_state = "toffee"
filling_color = "#7D5F46"
- bitesize = 2
list_reagents = list("nutriment" = 3, "sugar" = 3)
/obj/item/weapon/reagent_containers/food/snacks/candy/nougat
@@ -47,7 +44,6 @@
desc = "A soft, chewy candy commonly found in candybars."
icon_state = "nougat"
filling_color = "#7D5F46"
- bitesize = 2
list_reagents = list("nutriment" = 3, "sugar" = 3)
/obj/item/weapon/reagent_containers/food/snacks/candy/taffy
@@ -55,7 +51,6 @@
desc = "Old fashioned saltwater taffy. Chewy!"
icon_state = "candy1"
filling_color = "#7D5F46"
- bitesize = 2
list_reagents = list("nutriment" = 3, "sugar" = 3)
/obj/item/weapon/reagent_containers/food/snacks/candy/taffy/New()
@@ -111,7 +106,6 @@
desc = "It's a handful of candy corn. Cannot be stored in a detective's hat, alas."
icon_state = "candycorn"
filling_color = "#FFFCB0"
- bitesize = 2
list_reagents = list("nutriment" = 4, "sugar" = 2)
// ***********************************************************
@@ -134,14 +128,15 @@
trash = /obj/item/trash/candy
filling_color = "#7D5F46"
bitesize = 3
- list_reagents = list("nutriment" = 2, "chocolate" = 5)
+ junkiness = 25
+ list_reagents = list("nutriment" = 1, "chocolate" = 1)
+
/obj/item/weapon/reagent_containers/food/snacks/candy/candycane
name = "candy cane"
desc = "A festive mint candy cane."
icon_state = "candycane"
filling_color = "#F2F2F2"
- bitesize = 2
list_reagents = list("minttoxin" = 1, "sugar" = 5)
/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear
@@ -181,7 +176,6 @@
desc = "Not legal tender. Tasty though."
icon_state = "candy_cash"
filling_color = "#302000"
- bitesize = 2
list_reagents = list("nutriment" = 2, "chocolate" = 4)
/obj/item/weapon/reagent_containers/food/snacks/candy/coin
@@ -511,32 +505,35 @@
// Candybar Flavors
// ***********************************************************
-/obj/item/weapon/reagent_containers/food/snacks/candy/candybar/rice
+/obj/item/weapon/reagent_containers/food/snacks/candy/confectionery
+ list_reagents = list("nutriment" = 1, "chocolate" = 1)
+
+/obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/rice
name = "Asteroid Crunch Bar"
desc = "Crunchy rice deposits in delicious chocolate! A favorite of miners galaxy-wide."
icon_state = "asteroidcrunch"
trash = /obj/item/trash/candy
filling_color = "#7D5F46"
-/obj/item/weapon/reagent_containers/food/snacks/candy/candybar/toffee
+/obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/toffee
name = "Yum-baton Bar"
desc = "Chocolate and toffee in the shape of a baton. Security sure knows how to pound these down!"
icon_state = "yumbaton"
filling_color = "#7D5F46"
-/obj/item/weapon/reagent_containers/food/snacks/candy/candybar/caramel
+/obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/caramel
name = "Malper Bar"
desc = "A chocolate syringe filled with a caramel injection. Just what the doctor ordered!"
icon_state = "malper"
filling_color = "#7D5F46"
-/obj/item/weapon/reagent_containers/food/snacks/candy/candybar/caramel_nougat
+/obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/caramel_nougat
name = "Toxins Test Bar"
desc = "An explosive combination of chocolate, caramel, and nougat. Research has never been so tasty!"
icon_state = "toxinstest"
filling_color = "#7D5F46"
-/obj/item/weapon/reagent_containers/food/snacks/candy/candybar/nougat
+/obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/nougat
name = "Tool-erone Bar"
desc = "Chocolate-covered nougat, shaped like a wrench. Great for an engineer on the go!"
icon_state = "toolerone"
diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm
index 77e3f22a1e8..dfd89a809da 100644
--- a/code/modules/food_and_drinks/food/customizables.dm
+++ b/code/modules/food_and_drinks/food/customizables.dm
@@ -69,6 +69,7 @@
icon_state = "breadslice"
var/baseicon = "sandwich"
var/basename = "sandwich"
+ bitesize = 4
var/top = 1 //Do we have a top?
var/obj/item/toptype
var/add_overlays = 1 //Do we stack?
@@ -76,7 +77,6 @@
var/sandwich_limit = 40
var/fullycustom = 0
trash = /obj/item/trash/plate
- bitesize = 2
var/list/ingredients = list()
list_reagents = list("nutriment" = 8)
diff --git a/code/modules/food_and_drinks/food/seafood.dm b/code/modules/food_and_drinks/food/seafood.dm
index c0a95d39315..0a219ee2de6 100644
--- a/code/modules/food_and_drinks/food/seafood.dm
+++ b/code/modules/food_and_drinks/food/seafood.dm
@@ -6,7 +6,7 @@
icon_state = "fishfillet"
filling_color = "#FFDEFE"
bitesize = 6
- list_reagents = list("protein" = 3, "carpotoxin" = 3)
+ list_reagents = list("protein" = 3, "carpotoxin" = 2, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/salmonmeat
name = "raw salmon"
@@ -14,8 +14,8 @@
icon = 'icons/obj/food/seafood.dmi'
icon_state = "fishfillet"
filling_color = "#FFDEFE"
- bitesize = 3
- list_reagents = list("protein" = 3)
+ bitesize = 6
+ list_reagents = list("protein" = 3, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/salmonsteak
name = "Salmon steak"
@@ -25,7 +25,7 @@
trash = /obj/item/trash/plate
filling_color = "#7A3D11"
bitesize = 3
- list_reagents = list("nutriment" = 4, "sodiumchloride" = 1, "blackpepper" = 1)
+ list_reagents = list("nutriment" = 4, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/catfishmeat
name = "raw catfish"
@@ -33,8 +33,8 @@
icon = 'icons/obj/food/seafood.dmi'
icon_state = "fishfillet"
filling_color = "#FFDEFE"
- bitesize = 3
- list_reagents = list("protein" = 3)
+ bitesize = 6
+ list_reagents = list("protein" = 3, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/fishfingers
name = "Fish Fingers"
@@ -42,8 +42,8 @@
icon = 'icons/obj/food/seafood.dmi'
icon_state = "fishfingers"
filling_color = "#FFDEFE"
- bitesize = 3
- list_reagents = list("nutriment" = 4, "carpotoxin" = 3)
+ bitesize = 1
+ list_reagents = list("nutriment" = 4)
/obj/item/weapon/reagent_containers/food/snacks/fishburger
name = "Fillet -o- Carp Sandwich"
@@ -52,7 +52,7 @@
icon_state = "fishburger"
filling_color = "#FFDEFE"
bitesize = 3
- list_reagents = list("nutriment" = 6, "carpotoxin" = 3)
+ list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/cubancarp
name = "Cuban Carp"
@@ -62,7 +62,7 @@
trash = /obj/item/trash/plate
filling_color = "#E9ADFF"
bitesize = 3
- list_reagents = list("nutriment" = 6, "carpotoxin" = 3, "capsaicin" = 3)
+ list_reagents = list("nutriment" = 6, "capsaicin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/fishandchips
name = "Fish and Chips"
@@ -71,7 +71,7 @@
icon_state = "fishandchips"
filling_color = "#E3D796"
bitesize = 3
- list_reagents = list("nutriment" = 6, "carpotoxin" = 3)
+ list_reagents = list("nutriment" = 6)
/obj/item/weapon/reagent_containers/food/snacks/sashimi
name = "carp sashimi"
@@ -79,7 +79,7 @@
icon = 'icons/obj/food/seafood.dmi'
icon_state = "sashimi"
bitesize = 3
- list_reagents = list("nutriment" = 6, "toxin" = 5)
+ list_reagents = list("nutriment" = 6, "capsaicin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/fried_shrimp
name = "fried shrimp"
diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index 49cd0c1fa3b..dd5884606d0 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -47,7 +47,7 @@
qdel(src)
return 0
- if(istype(M, /mob/living/carbon))
+ if(iscarbon(M))
var/mob/living/carbon/C = M
if(C.eat(src, user))
bitecount++
@@ -255,20 +255,23 @@
trash = /obj/item/trash/snack_bowl
filling_color = "#468C00"
bitesize = 3
- list_reagents = list("nutriment" = 8, "omnizine" = 8)
+ list_reagents = list("nutriment" = 8, "omnizine" = 8, "vitamin" = 6)
/obj/item/weapon/reagent_containers/food/snacks/chips
name = "chips"
desc = "Commander Riker's What-The-Crisps"
icon_state = "chips"
+ bitesize = 1
trash = /obj/item/trash/chips
filling_color = "#E8C31E"
- list_reagents = list("nutriment" = 3, "sodiumchloride" = 1)
+ junkiness = 20
+ list_reagents = list("nutriment" = 1, "sodiumchloride" = 1, "sugar" = 3)
/obj/item/weapon/reagent_containers/food/snacks/cornchips
name = "corn chips"
desc = "Goes great with salsa! OLE!"
icon_state = "chips"
+ bitesize = 1
trash = /obj/item/trash/chips
filling_color = "#E8C31E"
list_reagents = list("nutriment" = 3)
@@ -277,23 +280,22 @@
name = "cookie"
desc = "COOKIE!!!"
icon_state = "COOKIE!!!"
+ bitesize = 1
filling_color = "#DBC94F"
- list_reagents = list("nutriment" = 5)
+ list_reagents = list("nutriment" = 1)
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar
name = "Chocolate Bar"
desc = "Such sweet, fattening food."
icon_state = "chocolatebar"
filling_color = "#7D5F46"
- bitesize = 2
- list_reagents = list("nutriment" = 2, "chocolate" = 4)
+ list_reagents = list("nutriment" = 2, "sugar" = 2, "cocoa" = 2)
/obj/item/weapon/reagent_containers/food/snacks/choc_pile //for reagent chocolate being spilled on turfs
name = "Pile of Chocolate"
desc = "A pile of pure chocolate pieces."
icon_state = "cocoa"
filling_color = "#7D5F46"
- bitesize = 2
list_reagents = list("chocolate" = 5)
/obj/item/weapon/reagent_containers/food/snacks/chocolateegg
@@ -301,95 +303,75 @@
desc = "Such sweet, fattening food."
icon_state = "chocolateegg"
filling_color = "#7D5F46"
- bitesize = 2
- list_reagents = list("nutriment" = 3, "chocolate" = 4)
+ list_reagents = list("nutriment" = 4, "sugar" = 2, "cocoa" = 2)
/obj/item/weapon/reagent_containers/food/snacks/donut
name = "donut"
desc = "Goes great with Robust Coffee."
icon_state = "donut1"
- filling_color = "#D9C386"
- bitesize = 3
+ bitesize = 5
+ list_reagents = list("nutriment" = 3, "sugar" = 2)
+ var/extra_reagent = null
+ filling_color = "#D2691E"
+ var/randomized_sprinkles = 1
-/obj/item/weapon/reagent_containers/food/snacks/donut/normal
- name = "donut"
- desc = "Goes great with Robust Coffee."
- icon_state = "donut1"
- list_reagents = list("nutriment" = 3, "sprinkles" = 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/donut/normal/New()
+/obj/item/weapon/reagent_containers/food/snacks/donut/New()
..()
- if(prob(30))
+ if(randomized_sprinkles && prob(30))
icon_state = "donut2"
name = "frosted donut"
reagents.add_reagent("sprinkles", 2)
+ filling_color = "#FF69B4"
/obj/item/weapon/reagent_containers/food/snacks/donut/sprinkles
name = "frosted donut"
icon_state = "donut2"
- list_reagents = list("nutriment" = 3, "sprinkles" = 3)
+ list_reagents = list("nutriment" = 3, "sugar" = 2, "spinkles" = 2)
+ filling_color = "#FF69B4"
+ randomized_sprinkles = 0
/obj/item/weapon/reagent_containers/food/snacks/donut/chaos
- name = "Chaos Donut"
+ name = "chaos donut"
desc = "Like life, it never quite tastes the same."
- icon_state = "donut1"
- filling_color = "#ED11E6"
bitesize = 10
/obj/item/weapon/reagent_containers/food/snacks/donut/chaos/New()
..()
- var/extra_reagent = pick("nutriment", "capsaicin", "frostoil", "sprinkles", "plasma", "chocolate", "slimejelly", "banana", "berryjuice", "omnizine")
+ extra_reagent = pick("nutriment", "capsaicin", "frostoil", "krokodil", "plasma", "cocoa", "slimejelly", "banana", "berryjuice", "omnizine")
reagents.add_reagent("[extra_reagent]", 3)
if(prob(30))
icon_state = "donut2"
- name = "Frosted Chaos Donut"
+ name = "frosted chaos donut"
reagents.add_reagent("sprinkles", 2)
-
+ filling_color = "#FF69B4"
/obj/item/weapon/reagent_containers/food/snacks/donut/jelly
- name = "Jelly Donut"
+ name = "jelly donut"
desc = "You jelly?"
icon_state = "jdonut1"
- filling_color = "#ED1169"
- bitesize = 5
- list_reagents = list("nutriment" = 3, "sprinkles" = 1, "berryjuice" = 5)
+ extra_reagent = "berryjuice"
/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/New()
..()
+ if(extra_reagent)
+ reagents.add_reagent("[extra_reagent]", 3)
if(prob(30))
icon_state = "jdonut2"
- name = "Frosted Jelly Donut"
+ name = "frosted jelly Donut"
reagents.add_reagent("sprinkles", 2)
+ filling_color = "#FF69B4"
-/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
- name = "Jelly Donut"
+/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/slimejelly
+ name = "jelly donut"
desc = "You jelly?"
icon_state = "jdonut1"
- filling_color = "#ED1169"
- bitesize = 5
- list_reagents = list("nutriment" = 3, "sprinkles" = 1, "slimejelly" = 5)
+ extra_reagent = "slimejelly"
-/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly/New()
- ..()
- if(prob(30))
- icon_state = "jdonut2"
- name = "Frosted Jelly Donut"
- reagents.add_reagent("sprinkles", 2)
-
-/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly
- name = "Jelly Donut"
+/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/cherryjelly
+ name = "jelly donut"
desc = "You jelly?"
icon_state = "jdonut1"
- filling_color = "#ED1169"
- bitesize = 5
- list_reagents = list("nutriment" = 3, "sprinkles" = 1, "cherryjelly" = 5)
-
-/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly/New()
- ..()
- if(prob(30))
- icon_state = "jdonut2"
- name = "Frosted Jelly Donut"
- reagents.add_reagent("sprinkles", 2)
+ extra_reagent = "cherryjelly"
/obj/item/weapon/reagent_containers/food/snacks/egg
name = "egg"
@@ -458,14 +440,15 @@
desc = "A fried egg, with a touch of salt and pepper."
icon_state = "friedegg"
filling_color = "#FFDF78"
- list_reagents = list("nutriment" = 2, "egg" = 5, "sodiumchloride" = 1, "blackpepper" = 1)
+ bitesize = 1
+ list_reagents = list("nutriment" = 3, "egg" = 5)
/obj/item/weapon/reagent_containers/food/snacks/boiledegg
name = "Boiled egg"
desc = "A hard boiled egg."
icon_state = "egg"
filling_color = "#FFFFFF"
- list_reagents = list("nutriment" = 2, "egg" = 5)
+ list_reagents = list("nutriment" = 2, "egg" = 5, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/organ
@@ -475,7 +458,7 @@
icon_state = "appendix"
filling_color = "#E00D34"
bitesize = 3
- list_reagents = list("protein" = 4)
+ list_reagents = list("protein" = 4, "vitamin" = 4)
/obj/item/weapon/reagent_containers/food/snacks/appendix
//yes, this is the same as meat. I might do something different in future
@@ -485,7 +468,7 @@
icon_state = "appendix"
filling_color = "#E00D34"
bitesize = 3
- list_reagents = list("protein" = 3)
+ list_reagents = list("protein" = 3, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/appendix/inflamed
name = "inflamed appendix"
@@ -499,7 +482,7 @@
desc = "We all love tofu."
filling_color = "#FFFEE0"
bitesize = 3
- list_reagents = list("plantmatter" = 3)
+ list_reagents = list("plantmatter" = 2)
/obj/item/weapon/reagent_containers/food/snacks/fried_tofu
name = "Fried Tofu"
@@ -507,7 +490,7 @@
desc = "Proof that even vegetarians crave unhealthy foods."
filling_color = "#FFFEE0"
bitesize = 3
- list_reagents = list("nutriment" = 3)
+ list_reagents = list("plantmatter" = 3)
/obj/item/weapon/reagent_containers/food/snacks/tofurkey
name = "Tofurkey"
@@ -530,7 +513,7 @@
icon_state = "hugemushroomslice"
filling_color = "#E0D7C5"
bitesize = 6
- list_reagents = list("plantmatter" = 3, "psilocybin" = 3)
+ list_reagents = list("plantmatter" = 3, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/tomatomeat
name = "tomato slice"
@@ -538,7 +521,7 @@
icon_state = "tomatomeat"
filling_color = "#DB0000"
bitesize = 6
- list_reagents = list("protein" = 3)
+ list_reagents = list("protein" = 2)
/obj/item/weapon/reagent_containers/food/snacks/bearmeat
name = "bear meat"
@@ -546,7 +529,7 @@
icon_state = "bearmeat"
filling_color = "#DB0000"
bitesize = 3
- list_reagents = list("protein" = 12, "methamphetamine" = 5)
+ list_reagents = list("protein" = 12, "morphine" = 5, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/xenomeat
name = "meat"
@@ -554,14 +537,14 @@
icon_state = "xenomeat"
filling_color = "#43DE18"
bitesize = 6
- list_reagents = list("protein" = 3)
+ list_reagents = list("protein" = 3, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/spidermeat
name = "spider meat"
desc = "A slab of spider meat."
icon_state = "spidermeat"
bitesize = 3
- list_reagents = list("protein" = 3, "toxin" = 3)
+ list_reagents = list("protein" = 3, "toxin" = 3, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/lizardmeat
name = "mutant lizard meat"
@@ -575,7 +558,6 @@
name = "spider leg"
desc = "A still twitching leg of a giant spider... you don't really want to eat this, do you?"
icon_state = "spiderleg"
- bitesize = 2
list_reagents = list("protein" = 2, "toxin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/meatball
@@ -583,16 +565,14 @@
desc = "A great meal all round."
icon_state = "meatball"
filling_color = "#DB0000"
- bitesize = 2
- list_reagents = list("protein" = 3)
+ list_reagents = list("protein" = 4, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/sausage
name = "Sausage"
desc = "A piece of mixed, long meat."
icon_state = "sausage"
filling_color = "#DB0000"
- bitesize = 2
- list_reagents = list("protein" = 6, "porktonium" = 10)
+ list_reagents = list("protein" = 6, "vitamin" = 1, "porktonium" = 10)
/obj/item/weapon/reagent_containers/food/snacks/donkpocket
name = "Donk-pocket"
@@ -639,16 +619,16 @@
desc = "A strange looking burger. It looks almost sentient."
icon_state = "brainburger"
filling_color = "#F2B6EA"
- bitesize = 2
- list_reagents = list("nutriment" = 6, "prions" = 10)
+ bitesize = 3
+ list_reagents = list("nutriment" = 6, "prions" = 10, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/ghostburger
name = "Ghost Burger"
desc = "Spooky! It doesn't look very filling."
icon_state = "ghostburger"
filling_color = "#FFF2FF"
- bitesize = 2
- list_reagents = list("nutriment" = 2)
+ bitesize = 3
+ list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/human
var/hname = ""
@@ -659,71 +639,72 @@
name = "-burger"
desc = "A bloody burger."
icon_state = "hburger"
- bitesize = 2
- list_reagents = list("nutriment" = 6)
+ bitesize = 3
+ list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/cheeseburger
name = "cheeseburger"
desc = "The cheese adds a good flavor."
icon_state = "cheeseburger"
- list_reagents = list("nutriment" = 2)
+ bitesize = 3
+ list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/monkeyburger
name = "burger"
desc = "The cornerstone of every nutritious breakfast."
icon_state = "hburger"
filling_color = "#D63C3C"
- bitesize = 2
- list_reagents = list("nutriment" = 6)
+ bitesize = 3
+ list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/tofuburger
name = "Tofu Burger"
desc = "What.. is that meat?"
icon_state = "tofuburger"
filling_color = "#FFFEE0"
- bitesize = 2
- list_reagents = list("nutriment" = 6)
+ bitesize = 3
+ list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/roburger
name = "roburger"
desc = "The lettuce is the only organic component. Beep."
icon_state = "roburger"
filling_color = "#CCCCCC"
- bitesize = 2
- list_reagents = list("nutriment" = 2, "nanomachines" = 10)
+ bitesize = 3
+ list_reagents = list("nutriment" = 6, "nanomachines" = 10, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/roburgerbig
name = "roburger"
desc = "This massive patty looks like poison. Beep."
icon_state = "roburger"
filling_color = "#CCCCCC"
- volume = 100
- bitesize = 0.1
- list_reagents = list("nanomachines" = 100)
+ volume = 120
+ bitesize = 3
+ list_reagents = list("nutriment" = 6, "nanomachines" = 70, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/xenoburger
name = "xenoburger"
desc = "Smells caustic. Tastes like heresy."
icon_state = "xburger"
filling_color = "#43DE18"
- bitesize = 2
- list_reagents = list("nutriment" = 8)
+ bitesize = 3
+ list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/clownburger
name = "Clown Burger"
desc = "This tastes funny..."
icon_state = "clownburger"
filling_color = "#FF00FF"
- bitesize = 2
- list_reagents = list("nutriment" = 6)
+ bitesize = 3
+ list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/mimeburger
name = "Mime Burger"
desc = "Its taste defies language."
icon_state = "mimeburger"
filling_color = "#FFFFFF"
- bitesize = 2
- list_reagents = list("nutriment" = 6)
+ bitesize = 3
+ list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/omelette
name = "Omelette Du Fromage"
@@ -731,14 +712,14 @@
icon_state = "omelette"
trash = /obj/item/trash/plate
filling_color = "#FFF9A8"
- list_reagents = list("nutriment" = 8)
+ list_reagents = list("nutriment" = 8, "vitamin" = 1)
+ bitesize = 1
/obj/item/weapon/reagent_containers/food/snacks/muffin
name = "Muffin"
desc = "A delicious and spongy little cake"
icon_state = "muffin"
filling_color = "#E0CF9B"
- bitesize = 2
list_reagents = list("nutriment" = 6)
/obj/item/weapon/reagent_containers/food/snacks/pie
@@ -748,7 +729,7 @@
trash = /obj/item/trash/plate
filling_color = "#FBFFB8"
bitesize = 3
- list_reagents = list("nutriment" = 4, "banana" = 5)
+ list_reagents = list("nutriment" = 6, "banana" = 5, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/pie/throw_impact(atom/hit_atom)
..()
@@ -762,7 +743,7 @@
icon_state = "berryclafoutis"
trash = /obj/item/trash/plate
bitesize = 3
- list_reagents = list("nutriment" = 4, "berryjuice" = 5)
+ list_reagents = list("nutriment" = 10, "berryjuice" = 5, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/waffles
name = "waffles"
@@ -770,8 +751,7 @@
icon_state = "waffles"
trash = /obj/item/trash/waffles
filling_color = "#E6DEB5"
- bitesize = 2
- list_reagents = list("nutriment" = 8)
+ list_reagents = list("nutriment" = 8, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/eggplantparm
name = "Eggplant Parmigiana"
@@ -779,8 +759,7 @@
icon_state = "eggplantparm"
trash = /obj/item/trash/plate
filling_color = "#4D2F5E"
- bitesize = 2
- list_reagents = list("nutriment" = 6)
+ list_reagents = list("nutriment" = 6, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/soylentgreen
name = "Soylent Green"
@@ -788,8 +767,7 @@
icon_state = "soylent_green"
trash = /obj/item/trash/waffles
filling_color = "#B8E6B5"
- bitesize = 2
- list_reagents = list("nutriment" = 10)
+ list_reagents = list("nutriment" = 10, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/soylenviridians
name = "Soylen Virdians"
@@ -797,8 +775,7 @@
icon_state = "soylent_yellow"
trash = /obj/item/trash/waffles
filling_color = "#E6FA61"
- bitesize = 2
- list_reagents = list("nutriment" = 10)
+ list_reagents = list("nutriment" = 10, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/meatpie
name = "Meat-pie"
@@ -806,8 +783,8 @@
desc = "An old barber recipe, very delicious!"
trash = /obj/item/trash/plate
filling_color = "#948051"
- bitesize = 2
- list_reagents = list("nutriment" = 10)
+ bitesize = 3
+ list_reagents = list("nutriment" = 10, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/tofupie
name = "Tofu-pie"
@@ -815,24 +792,24 @@
desc = "A delicious tofu pie."
trash = /obj/item/trash/plate
filling_color = "#FFFEE0"
- bitesize = 2
- list_reagents = list("nutriment" = 10)
+ bitesize = 3
+ list_reagents = list("nutriment" = 10, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/amanita_pie
name = "amanita pie"
desc = "Sweet and tasty poison pie."
icon_state = "amanita_pie"
filling_color = "#FFCCCC"
- bitesize = 3
- list_reagents = list("nutriment" = 5, "amanitin" = 3, "psilocybin" = 1)
+ bitesize = 4
+ list_reagents = list("nutriment" = 6, "amanitin" = 3, "psilocybin" = 1, "vitamin" = 4)
/obj/item/weapon/reagent_containers/food/snacks/plump_pie
name = "plump pie"
desc = "I bet you love stuff made out of plump helmets!"
icon_state = "plump_pie"
filling_color = "#B8279B"
- bitesize = 2
- list_reagents = list("nutriment" = 8)
+ bitesize = 3
+ list_reagents = list("nutriment" = 10, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/plump_pie/New()
..()
@@ -847,8 +824,7 @@
desc = "A delicious meatpie. Probably heretical."
trash = /obj/item/trash/plate
filling_color = "#43DE18"
- bitesize = 2
- list_reagents = list("nutriment" = 10)
+ list_reagents = list("nutriment" = 10, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/wingfangchu
name = "Wing Fang Chu"
@@ -856,8 +832,7 @@
icon_state = "wingfangchu"
trash = /obj/item/trash/snack_bowl
filling_color = "#43DE18"
- bitesize = 2
- list_reagents = list("nutriment" = 6)
+ list_reagents = list("nutriment" = 6, "soysauce" = 5, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/human/kabob
name = "-kabob"
@@ -865,7 +840,6 @@
desc = "A human meat, on a stick."
trash = /obj/item/stack/rods
filling_color = "#A85340"
- bitesize = 2
list_reagents = list("nutriment" = 8)
/obj/item/weapon/reagent_containers/food/snacks/monkeykabob
@@ -874,7 +848,6 @@
desc = "Delicious meat, on a stick."
trash = /obj/item/stack/rods
filling_color = "#A85340"
- bitesize = 2
list_reagents = list("nutriment" = 8)
/obj/item/weapon/reagent_containers/food/snacks/tofukabob
@@ -883,7 +856,6 @@
desc = "Vegan meat, on a stick."
trash = /obj/item/stack/rods
filling_color = "#FFFEE0"
- bitesize = 2
list_reagents = list("nutriment" = 8)
/obj/item/weapon/reagent_containers/food/snacks/popcorn
@@ -912,8 +884,8 @@
desc = "Beef jerky made from the finest space cows."
trash = /obj/item/trash/sosjerky
filling_color = "#631212"
- bitesize = 2
- list_reagents = list("protein" = 4)
+ junkiness = 25
+ list_reagents = list("protein" = 1, "sugar" = 3)
/obj/item/weapon/reagent_containers/food/snacks/pistachios
name = "Pistachios"
@@ -921,7 +893,8 @@
desc = "A snack of deliciously salted pistachios. A perfectly valid choice..."
trash = /obj/item/trash/pistachios
filling_color = "#BAD145"
- list_reagents = list("plantmatter" = 6, "sodiumchloride" = 1)
+ junkiness = 20
+ list_reagents = list("plantmatter" = 2, "sodiumchloride" = 1, "sugar" = 4)
/obj/item/weapon/reagent_containers/food/snacks/no_raisin
name = "4no Raisins"
@@ -929,14 +902,15 @@
desc = "Best raisins in the universe. Not sure why."
trash = /obj/item/trash/raisins
filling_color = "#343834"
- list_reagents = list("plantmatter" = 6)
+ junkiness = 25
+ list_reagents = list("plantmatter" = 2, "sugar" = 4)
/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie
name = "Space Twinkie"
icon_state = "space_twinkie"
desc = "Guaranteed to survive longer then you will."
filling_color = "#FFE591"
- bitesize = 2
+ junkiness = 25
list_reagents = list("sugar" = 4)
/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers
@@ -945,36 +919,36 @@
desc = "Bite sized cheesie snacks that will honk all over your mouth"
trash = /obj/item/trash/cheesie
filling_color = "#FFA305"
- bitesize = 2
- list_reagents = list("nutriment" = 4, "fake_cheese" = 2)
+ junkiness = 25
+ list_reagents = list("nutriment" = 1, "fake_cheese" = 2, "sugar" = 3)
/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein
name = "chow mein"
desc = "What is in this anyways?"
icon_state = "chinese1"
- bitesize = 2
- list_reagents = list("nutriment" = 6, "beans" = 3, "msg" = 4)
+ junkiness = 25
+ list_reagents = list("nutriment" = 1, "beans" = 3, "msg" = 4, "sugar" = 2)
/obj/item/weapon/reagent_containers/food/snacks/chinese/tao
name = "Admiral Yamamoto carp"
desc = "Tastes like chicken."
icon_state = "chinese2"
- bitesize = 2
- list_reagents = list("nutriment" = 4, "protein" = 2, "msg" = 4)
+ junkiness = 25
+ list_reagents = list("nutriment" = 1, "protein" = 1, "msg" = 4, "sugar" = 4)
/obj/item/weapon/reagent_containers/food/snacks/chinese/newdles
name = "chinese newdles"
desc = "Made fresh, weekly!"
icon_state = "chinese3"
- bitesize = 2
- list_reagents = list("nutriment" = 6, "msg" = 4)
+ junkiness = 25
+ list_reagents = list("nutriment" = 1, "msg" = 4, "sugar" = 3)
/obj/item/weapon/reagent_containers/food/snacks/chinese/rice
name = "fried rice"
desc = "A timeless classic."
icon_state = "chinese4"
- bitesize = 2
- list_reagents = list("nutriment" = 3, "rice" = 3, "msg" = 4)
+ junkiness = 20
+ list_reagents = list("nutriment" = 1, "rice" = 3, "msg" = 4, "sugar" = 2)
/obj/item/weapon/reagent_containers/food/snacks/syndicake
name = "Syndi-Cakes"
@@ -990,7 +964,6 @@
desc = "Totally baked."
icon_state = "loadedbakedpotato"
filling_color = "#9C7A68"
- bitesize = 2
list_reagents = list("nutriment" = 6)
/obj/item/weapon/reagent_containers/food/snacks/fries
@@ -999,7 +972,6 @@
icon_state = "fries"
trash = /obj/item/trash/plate
filling_color = "#EDDD00"
- bitesize = 2
list_reagents = list("nutriment" = 4)
/obj/item/weapon/reagent_containers/food/snacks/soydope
@@ -1008,7 +980,6 @@
icon_state = "soydope"
trash = /obj/item/trash/plate
filling_color = "#C4BF76"
- bitesize = 2
list_reagents = list("nutriment" = 2)
/obj/item/weapon/reagent_containers/food/snacks/spagetti
@@ -1016,7 +987,7 @@
desc = "A bundle of raw spaghetti."
icon_state = "spagetti"
filling_color = "#EDDD00"
- list_reagents = list("nutriment" = 1)
+ list_reagents = list("nutriment" = 1, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/cheesyfries
name = "Cheesy Fries"
@@ -1024,7 +995,6 @@
icon_state = "cheesyfries"
trash = /obj/item/trash/plate
filling_color = "#EDDD00"
- bitesize = 2
list_reagents = list("nutriment" = 6)
/obj/item/weapon/reagent_containers/food/snacks/fortunecookie
@@ -1032,7 +1002,6 @@
desc = "A true prophecy in each cookie!"
icon_state = "fortune_cookie"
filling_color = "#E8E79E"
- bitesize = 2
list_reagents = list("nutriment" = 3)
/obj/item/weapon/reagent_containers/food/snacks/badrecipe
@@ -1040,8 +1009,7 @@
desc = "Someone should be demoted from chef for this."
icon_state = "badrecipe"
filling_color = "#211F02"
- bitesize = 2
- list_reagents = list("????" = 5, "carbon" = 3)
+ list_reagents = list("????" = 30)
/obj/item/weapon/reagent_containers/food/snacks/badrecipe/New()
..()
@@ -1056,7 +1024,7 @@
trash = /obj/item/trash/plate
filling_color = "#7A3D11"
bitesize = 3
- list_reagents = list("nutriment" = 4, "sodiumchloride" = 1, "blackpepper" = 1)
+ list_reagents = list("nutriment" = 5)
/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff
name = "Spacy Liberty Duff"
@@ -1080,7 +1048,6 @@
name = "Poppy pretzel"
desc = "It's all twisted up!"
icon_state = "poppypretzel"
- bitesize = 2
filling_color = "#916E36"
list_reagents = list("nutriment" = 5)
@@ -1091,7 +1058,7 @@
trash = /obj/item/trash/snack_bowl
filling_color = "#785210"
bitesize = 5
- list_reagents = list("nutriment" = 8, "water" = 5)
+ list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 4)
/obj/item/weapon/reagent_containers/food/snacks/slimesoup
name = "slime soup"
@@ -1099,7 +1066,7 @@
icon_state = "slimesoup"
filling_color = "#C4DBA0"
bitesize = 5
- list_reagents = list("slimejelly" = 5, "water" = 10)
+ list_reagents = list("nutriment" = 5, "slimejelly" = 5, "water" = 5, "vitamin" = 4)
/obj/item/weapon/reagent_containers/food/snacks/bloodsoup
name = "Tomato soup"
@@ -1107,7 +1074,7 @@
icon_state = "tomatosoup"
filling_color = "#FF0000"
bitesize = 5
- list_reagents = list("nutriment" = 2, "blood" = 10, "water" = 5)
+ list_reagents = list("nutriment" = 2, "blood" = 10, "water" = 5, "vitamin" = 4)
/obj/item/weapon/reagent_containers/food/snacks/clownstears
name = "Clown's Tears"
@@ -1115,7 +1082,7 @@
icon_state = "clownstears"
filling_color = "#C4FBFF"
bitesize = 5
- list_reagents = list("nutriment" = 4, "banana" = 5, "water" = 10)
+ list_reagents = list("nutriment" = 4, "banana" = 5, "water" = 5, "vitamin" = 8)
/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup
name = "Vegetable soup"
@@ -1124,7 +1091,7 @@
trash = /obj/item/trash/snack_bowl
filling_color = "#AFC4B5"
bitesize = 5
- list_reagents = list("nutriment" = 8, "water" = 5)
+ list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 4)
/obj/item/weapon/reagent_containers/food/snacks/nettlesoup
name = "Nettle soup"
@@ -1133,54 +1100,20 @@
trash = /obj/item/trash/snack_bowl
filling_color = "#AFC4B5"
bitesize = 5
- list_reagents = list("nutriment" = 8, "water" = 5, "omnizine" = 5)
+ list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 4)
/obj/item/weapon/reagent_containers/food/snacks/mysterysoup
- name = "Mystery soup"
+ name = "mystery soup"
desc = "The mystery is, why aren't you eating it?"
icon_state = "mysterysoup"
- trash = /obj/item/trash/snack_bowl
- filling_color = "#F082FF"
+ var/extra_reagent = null
bitesize = 5
+ list_reagents = list("nutriment" = 6)
/obj/item/weapon/reagent_containers/food/snacks/mysterysoup/New()
..()
- var/mysteryselect = pick(1,2,3,4,5,6,7,8,9,10)
- switch(mysteryselect)
- if(1)
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("capsaicin", 3)
- reagents.add_reagent("tomatojuice", 2)
- if(2)
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("frostoil", 3)
- reagents.add_reagent("tomatojuice", 2)
- if(3)
- reagents.add_reagent("nutriment", 5)
- reagents.add_reagent("water", 5)
- reagents.add_reagent("omnizine", 5)
- if(4)
- reagents.add_reagent("nutriment", 5)
- reagents.add_reagent("water", 10)
- if(5)
- reagents.add_reagent("nutriment", 2)
- reagents.add_reagent("banana", 10)
- if(6)
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("blood", 10)
- if(7)
- reagents.add_reagent("slimejelly", 10)
- reagents.add_reagent("water", 10)
- if(8)
- reagents.add_reagent("carbon", 10)
- reagents.add_reagent("toxin", 10)
- if(9)
- reagents.add_reagent("nutriment", 5)
- reagents.add_reagent("tomatojuice", 10)
- if(10)
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("tomatojuice", 5)
- reagents.add_reagent("oculine", 5)
+ extra_reagent = pick("capsaicin", "frostoil", "omnizine", "banana", "blood", "slimejelly", "toxin", "banana", "carbon", "oculine")
+ reagents.add_reagent("[extra_reagent]", 5)
/obj/item/weapon/reagent_containers/food/snacks/wishsoup
name = "Wish Soup"
@@ -1195,7 +1128,8 @@
..()
if(prob(25))
desc = "A wish come true!" // hue
- reagents.add_reagent("nutriment", 8)
+ reagents.add_reagent("nutriment", 9)
+ reagents.add_reagent("vitamin", 1)
/obj/item/weapon/reagent_containers/food/snacks/hotchili
name = "Hot Chili"
@@ -1204,7 +1138,7 @@
trash = /obj/item/trash/snack_bowl
filling_color = "#FF3C00"
bitesize = 5
- list_reagents = list("nutriment" = 6, "capsaicin" = 3, "tomatojuice" = 2)
+ list_reagents = list("nutriment" = 5, "capsaicin" = 1, "tomatojuice" = 2, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/coldchili
name = "Cold Chili"
@@ -1213,20 +1147,18 @@
filling_color = "#2B00FF"
trash = /obj/item/trash/snack_bowl
bitesize = 5
- list_reagents = list("nutriment" = 6, "frostoil" = 3, "tomatojuice" = 2)
+ list_reagents = list("nutriment" = 5, "frostoil" = 1, "tomatojuice" = 2, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/raw_bacon
name = "raw bacon"
desc = "It's fleshy and pink!"
icon_state = "raw_bacon"
- bitesize = 2
list_reagents = list("nutriment" = 1, "porktonium" = 10)
/obj/item/weapon/reagent_containers/food/snacks/bacon
name = "bacon"
desc = "It looks juicy and tastes amazing!"
icon_state = "bacon2"
- bitesize = 2
list_reagents = list("nutriment" = 4, "porktonium" = 10, "msg" = 4)
/obj/item/weapon/reagent_containers/food/snacks/telebacon
@@ -1234,7 +1166,6 @@
desc = "It tastes a little odd but it is still delicious."
icon_state = "bacon"
var/obj/item/device/radio/beacon/bacon/baconbeacon
- bitesize = 2
list_reagents = list("nutriment" = 4, "porktonium" = 10)
/obj/item/weapon/reagent_containers/food/snacks/telebacon/New()
@@ -1254,7 +1185,7 @@
bitesize = 12
filling_color = "#ADAC7F"
var/monkey_type = "Monkey"
- list_reagents = list("protein" = 10)
+ list_reagents = list("nutriment" = 2)
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/afterattack(obj/O, mob/user, proximity)
if(!proximity)
@@ -1342,8 +1273,8 @@
desc = "This is absolutely Ei Nath."
icon_state = "spellburger"
filling_color = "#D505FF"
- bitesize = 2
- list_reagents = list("nutriment" = 6)
+ bitesize = 3
+ list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger
name = "Big Bite Burger"
@@ -1351,7 +1282,7 @@
icon_state = "bigbiteburger"
filling_color = "#E3D681"
bitesize = 3
- list_reagents = list("nutriment" = 14)
+ list_reagents = list("nutriment" = 10, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/enchiladas
name = "Enchiladas"
@@ -1368,7 +1299,7 @@
icon_state = "burrito"
trash = /obj/item/trash/plate
filling_color = "#A36A1F"
- list_reagents = list("nutriment" = 5)
+ list_reagents = list("nutriment" = 4, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/chimichanga
name = "Chimichanga"
@@ -1385,7 +1316,7 @@
trash = /obj/item/trash/tray
filling_color = "#5C3C11"
bitesize = 6
- list_reagents = list("nutriment" = 10, "banana" = 5, "blackpepper" = 1, "sodiumchloride" = 1)
+ list_reagents = list("nutriment" = 10, "banana" = 5, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/baguette
name = "Baguette"
@@ -1393,7 +1324,7 @@
icon_state = "baguette"
filling_color = "#E3D796"
bitesize = 3
- list_reagents = list("nutriment" = 6, "blackpepper" = 1, "sodiumchloride" = 1)
+ list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/sandwich
name = "Sandwich"
@@ -1401,8 +1332,7 @@
icon_state = "sandwich"
trash = /obj/item/trash/plate
filling_color = "#D9BE29"
- bitesize = 2
- list_reagents = list("nutriment" = 6)
+ list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich
name = "Toasted Sandwich"
@@ -1410,7 +1340,6 @@
icon_state = "toastedsandwich"
trash = /obj/item/trash/plate
filling_color = "#D9BE29"
- bitesize = 2
list_reagents = list("nutriment" = 6, "carbon" = 2)
/obj/item/weapon/reagent_containers/food/snacks/grilledcheese
@@ -1419,8 +1348,7 @@
icon_state = "toastedsandwich"
trash = /obj/item/trash/plate
filling_color = "#D9BE29"
- bitesize = 2
- list_reagents = list("nutriment" = 7) //why make a regualr sandwhich when you can make grilled cheese, with this nutriment value?
+ list_reagents = list("nutriment" = 7, "vitamin" = 1) //why make a regualr sandwhich when you can make grilled cheese, with this nutriment value?
/obj/item/weapon/reagent_containers/food/snacks/tomatosoup
name = "Tomato Soup"
@@ -1428,8 +1356,8 @@
icon_state = "tomatosoup"
trash = /obj/item/trash/snack_bowl
filling_color = "#D92929"
- bitesize = 3
- list_reagents = list("nutriment" = 5, "tomatojuice" = 10)
+ bitesize = 5
+ list_reagents = list("nutriment" = 5, "tomatojuice" = 10, "vitamin" = 3)
/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles
name = "Roffle Waffles"
@@ -1438,15 +1366,15 @@
trash = /obj/item/trash/waffles
filling_color = "#FF00F7"
bitesize = 4
- list_reagents = list("nutriment" = 8, "psilocybin" = 8)
+ list_reagents = list("nutriment" = 8, "psilocybin" = 2, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/stew
name = "Stew"
desc = "A nice and warm stew. Healthy and strong."
icon_state = "stew"
filling_color = "#9E673A"
- bitesize = 10
- list_reagents = list("nutriment" = 10, "tomatojuice" = 5, "oculine" = 5, "water" = 5)
+ bitesize = 7
+ list_reagents = list("nutriment" = 10, "oculine" = 5, "tomatojuice" = 5, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast
name = "Jellied Toast"
@@ -1455,42 +1383,39 @@
trash = /obj/item/trash/plate
filling_color = "#B572AB"
bitesize = 3
- list_reagents = list("nutriment" = 1)
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry
- list_reagents = list("nutriment" = 1, "cherryjelly" = 5)
+ list_reagents = list("nutriment" = 1, "cherryjelly" = 5, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime
- list_reagents = list("nutriment" = 1, "slimejelly" = 5)
+ list_reagents = list("nutriment" = 1, "slimejelly" = 5, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/jellyburger
name = "Jelly Burger"
desc = "Culinary delight..?"
icon_state = "jellyburger"
filling_color = "#B572AB"
- bitesize = 2
- list_reagents = list("nutriment" = 5)
+ bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime
- list_reagents = list("nutriment" = 5, "slimejelly" = 5)
+ list_reagents = list("nutriment" = 6, "slimejelly" = 5, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry
- list_reagents = list("nutriment" = 5, "cherryjelly" = 5)
+ list_reagents = list("nutriment" = 6, "cherryjelly" = 5, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/milosoup
name = "Milosoup"
desc = "The universes best soup! Yum!!!"
icon_state = "milosoup"
trash = /obj/item/trash/snack_bowl
- bitesize = 4
- list_reagents = list("nutriment" = 8, "water" = 5)
+ bitesize = 5
+ list_reagents = list("nutriment" = 7, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat
name = "Stewed Soy Meat"
desc = "Even non-vegetarians will LOVE this!"
icon_state = "stewedsoymeat"
trash = /obj/item/trash/plate
- bitesize = 2
list_reagents = list("nutriment" = 8)
/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti
@@ -1499,8 +1424,7 @@
icon_state = "spagettiboiled"
trash = /obj/item/trash/plate
filling_color = "#FCEE81"
- bitesize = 2
- list_reagents = list("nutriment" = 2)
+ list_reagents = list("nutriment" = 2, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/boiledrice
name = "Boiled Rice"
@@ -1508,8 +1432,7 @@
icon_state = "boiledrice"
trash = /obj/item/trash/snack_bowl
filling_color = "#FFFBDB"
- bitesize = 2
- list_reagents = list("nutriment" = 2)
+ list_reagents = list("nutriment" = 5, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/ricepudding
name = "Rice Pudding"
@@ -1517,8 +1440,7 @@
icon_state = "rpudding"
trash = /obj/item/trash/snack_bowl
filling_color = "#FFFBDB"
- bitesize = 2
- list_reagents = list("nutriment" = 4)
+ list_reagents = list("nutriment" = 7, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/pastatomato
name = "Spagetti"
@@ -1527,7 +1449,7 @@
trash = /obj/item/trash/plate
filling_color = "#DE4545"
bitesize = 4
- list_reagents = list("nutriment" = 6, "tomatojuice" = 10)
+ list_reagents = list("nutriment" = 6, "tomatojuice" = 10, "vitamin" = 4)
/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti
name = "Spagetti & Meatballs"
@@ -1535,23 +1457,20 @@
icon_state = "meatballspagetti"
trash = /obj/item/trash/plate
filling_color = "#DE4545"
- bitesize = 2
- list_reagents = list("nutriment" = 8, "synaptizine" = 5)
+ list_reagents = list("nutriment" = 8, "synaptizine" = 5, "vitamin" = 4)
/obj/item/weapon/reagent_containers/food/snacks/spesslaw
name = "Spesslaw"
desc = "A lawyers favourite"
icon_state = "spesslaw"
filling_color = "#DE4545"
- bitesize = 2
- list_reagents = list("nutriment" = 8, "synaptizine" = 10)
+ list_reagents = list("nutriment" = 8, "synaptizine" = 10, "vitamin" = 6)
/obj/item/weapon/reagent_containers/food/snacks/poppypretzel
name = "Poppy Pretzel"
desc = "A large soft pretzel full of POP!"
icon_state = "poppypretzel"
filling_color = "#AB7D2E"
- bitesize = 2
list_reagents = list("nutriment" = 5)
/obj/item/weapon/reagent_containers/food/snacks/carrotfries
@@ -1560,16 +1479,15 @@
icon_state = "carrotfries"
trash = /obj/item/trash/plate
filling_color = "#FAA005"
- bitesize = 2
- list_reagents = list("plantmatter" = 3, "oculine" = 3)
+ list_reagents = list("plantmatter" = 3, "oculine" = 3, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/superbiteburger
name = "Super Bite Burger"
desc = "This is a mountain of a burger. FOOD!"
icon_state = "superbiteburger"
filling_color = "#CCA26A"
- bitesize = 10
- list_reagents = list("nutriment" = 50)
+ bitesize = 7
+ list_reagents = list("nutriment" = 40, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/candiedapple
name = "Candied Apple"
@@ -1577,7 +1495,7 @@
icon_state = "candiedapple"
filling_color = "#F21873"
bitesize = 3
- list_reagents = list("nutriment" = 3) // A candy apple without sugar...
+ list_reagents = list("nutriment" = 3, "sugar" = 2)
/obj/item/weapon/reagent_containers/food/snacks/applepie
name = "Apple Pie"
@@ -1585,7 +1503,7 @@
icon_state = "applepie"
filling_color = "#E0EDC5"
bitesize = 3
- list_reagents = list("nutriment" = 4)
+ list_reagents = list("nutriment" = 10, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/cherrypie
name = "Cherry Pie"
@@ -1593,7 +1511,7 @@
icon_state = "cherrypie"
filling_color = "#FF525A"
bitesize = 3
- list_reagents = list("nutriment" = 4)
+ list_reagents = list("nutriment" = 10, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/twobread
name = "Two Bread"
@@ -1601,7 +1519,7 @@
icon_state = "twobread"
filling_color = "#DBCC9A"
bitesize = 3
- list_reagents = list("nutriment" = 2)
+ list_reagents = list("nutriment" = 2, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich
name = "Jelly Sandwich"
@@ -1610,13 +1528,12 @@
trash = /obj/item/trash/plate
filling_color = "#9E3A78"
bitesize = 3
- list_reagents = list("nutriment" = 2)
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime
- list_reagents = list("nutriment" = 2, "slimejelly" = 5)
+ list_reagents = list("nutriment" = 2, "slimejelly" = 5, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry
- list_reagents = list("nutriment" = 2, "cherryjelly" = 5)
+ list_reagents = list("nutriment" = 2, "cherryjelly" = 5, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore
name = "Boiled Slime Core"
@@ -1629,8 +1546,9 @@
name = "mint"
desc = "it is only wafer thin."
icon_state = "mint"
+ bitesize = 1
filling_color = "#F2F2F2"
- list_reagents = list("minttoxin" = 2)
+ list_reagents = list("minttoxin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup
name = "chantrelle soup"
@@ -1638,15 +1556,14 @@
icon_state = "mushroomsoup"
trash = /obj/item/trash/snack_bowl
filling_color = "#E386BF"
- bitesize = 3
- list_reagents = list("nutriment" = 8)
+ bitesize = 5
+ list_reagents = list("nutriment" = 8, "vitamin" = 4)
/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit
name = "plump helmet biscuit"
desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour."
icon_state = "phelmbiscuit"
filling_color = "#CFB4C4"
- bitesize = 2
list_reagents = list("nutriment" = 5)
/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/New()
@@ -1654,7 +1571,6 @@
if(prob(10))
name = "exceptional plump helmet biscuit"
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" // Is this a reference?
- reagents.add_reagent("nutriment", 3)
reagents.add_reagent("omnizine", 5)
/obj/item/weapon/reagent_containers/food/snacks/chawanmushi
@@ -1670,25 +1586,13 @@
desc = "Wait, how do you spell it again..?"
icon_state = "beetsoup"
trash = /obj/item/trash/snack_bowl
+ bitesize = 5
filling_color = "#FAC9FF"
- bitesize = 2
- list_reagents = list("nutriment" = 8)
+ list_reagents = list("nutriment" = 7, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/beetsoup/New()
..()
- switch(rand(1,6))
- if(1)
- name = "borsch"
- if(2)
- name = "bortsch"
- if(3)
- name = "borstch"
- if(4)
- name = "borsh"
- if(5)
- name = "borshch"
- if(6)
- name = "borscht"
+ name = pick("borsch","bortsch","borstch","borsh","borshch","borscht")
/obj/item/weapon/reagent_containers/food/snacks/herbsalad
name = "herb salad"
@@ -1697,7 +1601,7 @@
trash = /obj/item/trash/snack_bowl
filling_color = "#76B87F"
bitesize = 3
- list_reagents = list("nutriment" = 8)
+ list_reagents = list("nutriment" = 8, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/validsalad
name = "valid salad"
@@ -1706,7 +1610,7 @@
trash = /obj/item/trash/snack_bowl
filling_color = "#76B87F"
bitesize = 3
- list_reagents = list("nutriment" = 8, "omnizine" = 5)
+ list_reagents = list("nutriment" = 8, "salglu_solution" = 5, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/appletart
name = "golden apple streusel tart"
@@ -1715,45 +1619,13 @@
trash = /obj/item/trash/plate
filling_color = "#FFFF00"
bitesize = 3
- list_reagents = list("nutriment" = 8, "gold" = 5)
-
-/obj/item/weapon/reagent_containers/food/snacks/dough_ball
- name = "ball of raw dough"
- desc = "A ball of raw dough, ready to be molded into new recipes."
- icon = 'icons/obj/food/food_ingredients.dmi'
- icon_state = "dough"
- list_reagents = list("nutriment" = 3)
-
-/obj/item/weapon/reagent_containers/food/snacks/dough_ball/attackby(obj/item/weapon/W, mob/user, params)
- if(istype(W,/obj/item/weapon/kitchen/rollingpin))
- user.visible_message( \
- "[user] flattens the dough with the rolling pin!", \
- "You flatten the dough with your rolling pin!" \
- )
- new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(loc)
- qdel(src)
+ list_reagents = list("nutriment" = 8, "gold" = 5, "vitamin" = 4)
/////////////////////////////////////////////////Sliceable////////////////////////////////////////
// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels
// sliceable is just an organization type path, it doesn't have any additional code or variables tied to it.
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough
- name = "flattened dough"
- desc = "Still raw. You resist the temptation to cover it in tomato sauce."
- icon = 'icons/obj/food/food_ingredients.dmi'
- icon_state = "flatdough"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/doughslice
- slices_num = 3
- list_reagents = list("nutriment" = 3)
-
-/obj/item/weapon/reagent_containers/food/snacks/doughslice
- name = "slice of dough"
- desc = "an individual portion of raw dough, ready to be cooked."
- icon = 'icons/obj/food/food_ingredients.dmi'
- icon_state = "doughslice"
- bitesize = 2
-
/obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread
name = "meatbread loaf"
desc = "The culinary base of every self-respecting eloquen/tg/entleman."
@@ -1761,8 +1633,7 @@
slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice
slices_num = 5
filling_color = "#FF7575"
- bitesize = 2
- list_reagents = list("protein" = 20, "nutriment" = 10)
+ list_reagents = list("protein" = 20, "nutriment" = 10, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice
name = "meatbread slice"
@@ -1770,7 +1641,6 @@
icon_state = "meatbreadslice"
trash = /obj/item/trash/plate
filling_color = "#FF7575"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread
name = "xenomeatbread loaf"
@@ -1779,8 +1649,7 @@
slice_path = /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice
slices_num = 5
filling_color = "#8AFF75"
- bitesize = 2
- list_reagents = list("protein" = 20, "nutriment" = 10)
+ list_reagents = list("protein" = 20, "nutriment" = 10, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice
name = "xenomeatbread slice"
@@ -1788,7 +1657,6 @@
icon_state = "xenobreadslice"
trash = /obj/item/trash/plate
filling_color = "#8AFF75"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/spidermeatbread
name = "spider meat loaf"
@@ -1796,15 +1664,13 @@
icon_state = "spidermeatbread"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/spidermeatbreadslice
slices_num = 5
- bitesize = 2
- list_reagents = list("protein" = 20, "nutriment" = 10, "toxin" = 15)
+ list_reagents = list("protein" = 20, "nutriment" = 10, "toxin" = 15, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/spidermeatbreadslice
name = "spider meat bread slice"
desc = "A slice of meatloaf made from an animal that most likely still wants you dead."
icon_state = "xenobreadslice"
trash = /obj/item/trash/plate
- bitesize = 2
list_reagents = list("toxin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread
@@ -1814,7 +1680,6 @@
slice_path = /obj/item/weapon/reagent_containers/food/snacks/bananabreadslice
slices_num = 5
filling_color = "#EDE5AD"
- bitesize = 2
list_reagents = list("banana" = 20, "nutriment" = 20)
/obj/item/weapon/reagent_containers/food/snacks/bananabreadslice
@@ -1823,7 +1688,6 @@
icon_state = "bananabreadslice"
trash = /obj/item/trash/plate
filling_color = "#EDE5AD"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread
name = "Tofubread"
@@ -1832,8 +1696,7 @@
slice_path = /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice
slices_num = 5
filling_color = "#F7FFE0"
- bitesize = 2
- list_reagents = list("nutriment" = 30)
+ list_reagents = list("nutriment" = 20, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice
name = "Tofubread slice"
@@ -1841,7 +1704,6 @@
icon_state = "tofubreadslice"
trash = /obj/item/trash/plate
filling_color = "#F7FFE0"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake
name = "Carrot Cake"
@@ -1849,9 +1711,9 @@
icon_state = "carrotcake"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice
slices_num = 5
+ bitesize = 3
filling_color = "#FFD675"
- bitesize = 2
- list_reagents = list("nutriment" = 25, "oculine" = 10)
+ list_reagents = list("nutriment" = 20, "oculine" = 10, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice
name = "Carrot Cake slice"
@@ -1859,7 +1721,6 @@
icon_state = "carrotcake_slice"
trash = /obj/item/trash/plate
filling_color = "#FFD675"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake
name = "Brain Cake"
@@ -1868,8 +1729,8 @@
slice_path = /obj/item/weapon/reagent_containers/food/snacks/braincakeslice
slices_num = 5
filling_color = "#E6AEDB"
- bitesize = 2
- list_reagents = list("protein" = 15, "nutriment" = 10, "mannitol" = 10)
+ bitesize = 3
+ list_reagents = list("protein" = 10, "nutriment" = 10, "mannitol" = 10, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/braincakeslice
name = "Brain Cake slice"
@@ -1877,7 +1738,6 @@
icon_state = "braincakeslice"
trash = /obj/item/trash/plate
filling_color = "#E6AEDB"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake
name = "Cheese Cake"
@@ -1886,8 +1746,8 @@
slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice
slices_num = 5
filling_color = "#FAF7AF"
- bitesize = 2
- list_reagents = list("nutriment" = 25)
+ bitesize = 3
+ list_reagents = list("nutriment" = 20, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice
name = "Cheese Cake slice"
@@ -1895,7 +1755,6 @@
icon_state = "cheesecake_slice"
trash = /obj/item/trash/plate
filling_color = "#FAF7AF"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake
name = "Vanilla Cake"
@@ -1903,8 +1762,9 @@
icon_state = "plaincake"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/plaincakeslice
slices_num = 5
+ bitesize = 3
filling_color = "#F7EDD5"
- list_reagents = list("nutriment" = 20)
+ list_reagents = list("nutriment" = 20, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice
name = "Vanilla Cake slice"
@@ -1912,7 +1772,6 @@
icon_state = "plaincake_slice"
trash = /obj/item/trash/plate
filling_color = "#F7EDD5"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake
name = "Orange Cake"
@@ -1920,8 +1779,9 @@
icon_state = "orangecake"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/orangecakeslice
slices_num = 5
+ bitesize = 3
filling_color = "#FADA8E"
- list_reagents = list("nutriment" = 20)
+ list_reagents = list("nutriment" = 20, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice
name = "Orange Cake slice"
@@ -1929,16 +1789,16 @@
icon_state = "orangecake_slice"
trash = /obj/item/trash/plate
filling_color = "#FADA8E"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake
name = "Lime Cake"
desc = "A cake with added lime."
icon_state = "limecake"
+ bitesize = 3
slice_path = /obj/item/weapon/reagent_containers/food/snacks/limecakeslice
slices_num = 5
filling_color = "#CBFA8E"
- list_reagents = list("nutriment" = 20)
+ list_reagents = list("nutriment" = 20, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/limecakeslice
name = "Lime Cake slice"
@@ -1946,7 +1806,6 @@
icon_state = "limecake_slice"
trash = /obj/item/trash/plate
filling_color = "#CBFA8E"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake
name = "Lemon Cake"
@@ -1954,8 +1813,9 @@
icon_state = "lemoncake"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice
slices_num = 5
+ bitesize = 3
filling_color = "#FAFA8E"
- list_reagents = list("nutriment" = 20)
+ list_reagents = list("nutriment" = 20, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice
name = "Lemon Cake slice"
@@ -1963,7 +1823,6 @@
icon_state = "lemoncake_slice"
trash = /obj/item/trash/plate
filling_color = "#FAFA8E"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake
name = "Chocolate Cake"
@@ -1971,8 +1830,9 @@
icon_state = "chocolatecake"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice
slices_num = 5
+ bitesize = 3
filling_color = "#805930"
- list_reagents = list("nutriment" = 20, "chocolate" = 20)
+ list_reagents = list("nutriment" = 20, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice
name = "Chocolate Cake slice"
@@ -1980,7 +1840,6 @@
icon_state = "chocolatecake_slice"
trash = /obj/item/trash/plate
filling_color = "#805930"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel
name = "Cheese wheel"
@@ -1989,22 +1848,19 @@
slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesewedge
slices_num = 5
filling_color = "#FFF700"
- bitesize = 2
- list_reagents = list("nutriment" = 20, "cheese" = 20)
+ list_reagents = list("nutriment" = 15, "vitamin" = 5, "cheese" = 20)
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge
name = "Cheese wedge"
desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far."
icon_state = "cheesewedge"
filling_color = "#FFF700"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/weirdcheesewedge
name = "Weird Cheese"
desc = "Some kind of... gooey, messy, gloopy thing. Similar to cheese, but only in the looser sense of the word."
icon_state = "weirdcheesewedge"
filling_color = "#00FF33"
- bitesize = 2
list_reagents = list("mercury" = 5, "lsd" = 5, "ethanol" = 5, "weird_cheese" = 5)
/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake
@@ -2015,7 +1871,7 @@
slices_num = 5
filling_color = "#FFD6D6"
bitesize = 3
- list_reagents = list("nutriment" = 20, "sprinkles" = 10)
+ list_reagents = list("nutriment" = 20, "sprinkles" = 10, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice
name = "Birthday Cake slice"
@@ -2023,7 +1879,6 @@
icon_state = "birthdaycakeslice"
trash = /obj/item/trash/plate
filling_color = "#FFD6D6"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/bread
name = "Bread"
@@ -2032,8 +1887,7 @@
slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice
slices_num = 6
filling_color = "#FFE396"
- bitesize = 2
- list_reagents = list("nutriment" = 6)
+ list_reagents = list("nutriment" = 10)
/obj/item/weapon/reagent_containers/food/snacks/breadslice
name = "Bread slice"
@@ -2041,8 +1895,7 @@
icon_state = "breadslice"
trash = /obj/item/trash/plate
filling_color = "#D27332"
- bitesize = 2
- list_reagents = list("bread" = 5)
+ list_reagents = list("nutriment" = 2, "bread" = 5)
/obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread
name = "Cream Cheese Bread"
@@ -2051,8 +1904,7 @@
slice_path = /obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice
slices_num = 5
filling_color = "#FFF896"
- bitesize = 2
- list_reagents = list("nutriment" = 20)
+ list_reagents = list("nutriment" = 20, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice
name = "Cream Cheese Bread slice"
@@ -2060,14 +1912,13 @@
icon_state = "creamcheesebreadslice"
trash = /obj/item/trash/plate
filling_color = "#FFF896"
- bitesize = 2
+ list_reagents = list("nutriment" = 4, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/watermelonslice
name = "Watermelon Slice"
desc = "A slice of watery goodness."
icon_state = "watermelonslice"
filling_color = "#FF3867"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake
name = "Apple Cake"
@@ -2075,8 +1926,9 @@
icon_state = "applecake"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/applecakeslice
slices_num = 5
+ bitesize = 3
filling_color = "#EBF5B8"
- list_reagents = list("nutriment" = 15)
+ list_reagents = list("nutriment" = 20, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/applecakeslice
name = "Apple Cake slice"
@@ -2084,7 +1936,6 @@
icon_state = "applecakeslice"
trash = /obj/item/trash/plate
filling_color = "#EBF5B8"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie
name = "Pumpkin Pie"
@@ -2092,8 +1943,9 @@
icon_state = "pumpkinpie"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice
slices_num = 5
+ bitesize = 3
filling_color = "#F5B951"
- list_reagents = list("nutriment" = 15)
+ list_reagents = list("nutriment" = 20, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice
name = "Pumpkin Pie slice"
@@ -2101,12 +1953,12 @@
icon_state = "pumpkinpieslice"
trash = /obj/item/trash/plate
filling_color = "#F5B951"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/cracker
name = "Cracker"
desc = "It's a salted cracker."
icon_state = "cracker"
+ bitesize = 1
filling_color = "#F5DEB8"
list_reagents = list("nutriment" = 1)
@@ -2140,15 +1992,14 @@
icon_state = "pizzamargherita"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/margheritaslice
slices_num = 6
- bitesize = 2
- list_reagents = list("nutriment" = 40, "tomatojuice" = 6)
+ list_reagents = list("nutriment" = 30, "tomatojuice" = 6, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/margheritaslice
name = "Margherita slice"
desc = "A slice of the classic pizza."
icon_state = "pizzamargheritaslice"
filling_color = "#BAA14C"
- bitesize = 2
+ list_reagents = list("nutriment" = 5)
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza
name = "Meatpizza"
@@ -2156,15 +2007,13 @@
icon_state = "meatpizza"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice
slices_num = 6
- bitesize = 2
- list_reagents = list("protein" = 30, "nutriment" = 20, "tomatojuice" = 6)
+ list_reagents = list("protein" = 30, "tomatojuice" = 6, "vitamin" = 8)
/obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice
name = "Meatpizza slice"
desc = "A slice of a meaty pizza."
icon_state = "meatpizzaslice"
filling_color = "#BAA14C"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza
name = "Mushroompizza"
@@ -2172,15 +2021,13 @@
icon_state = "mushroompizza"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice
slices_num = 6
- bitesize = 2
- list_reagents = list("plantmatter" = 25, "nutriment" = 10)
+ list_reagents = list("plantmatter" = 30, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice
name = "Mushroompizza slice"
desc = "Maybe it is the last slice of pizza in your life."
icon_state = "mushroompizzaslice"
filling_color = "#BAA14C"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza
name = "Vegetable pizza"
@@ -2188,15 +2035,13 @@
icon_state = "vegetablepizza"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice
slices_num = 6
- bitesize = 2
- list_reagents = list("plantmatter" = 20, "nutriment" = 10, "tomatojuice" = 6, "oculine" = 12)
+ list_reagents = list("plantmatter" = 25, "tomatojuice" = 6, "oculine" = 12, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice
name = "Vegetable pizza slice"
desc = "A slice of the most green pizza of all pizzas not containing green ingredients "
icon_state = "vegetablepizzaslice"
filling_color = "#BAA14C"
- bitesize = 2
/obj/item/pizzabox
name = "pizza box"
@@ -2377,57 +2222,52 @@
name = "egg wrap"
desc = "The precursor to Pigs in a Blanket."
icon_state = "wrap"
- bitesize = 2
list_reagents = list("nutriment" = 5)
/obj/item/weapon/reagent_containers/food/snacks/beans
name = "tin of beans"
desc = "Musical fruit in a slightly less musical container."
icon_state = "beans"
- bitesize = 2
- list_reagents = list("nutriment" = 10, "beans" = 10)
+ list_reagents = list("nutriment" = 10, "beans" = 10, "vitamin" = 3)
/obj/item/weapon/reagent_containers/food/snacks/benedict
name = "eggs benedict"
desc = "There is only one egg on this, how rude."
icon_state = "benedict"
bitesize = 3
- list_reagents = list("nutriment" = 3, "egg" = 3)
+ list_reagents = list("nutriment" = 6, "egg" = 3, "vitamin" = 4)
/obj/item/weapon/reagent_containers/food/snacks/hotdog
name = "hotdog"
desc = "Fresh footlong ready to go down on."
icon_state = "hotdog"
bitesize = 3
- list_reagents = list("nutriment" = 3, "ketchup" = 3)
+ list_reagents = list("nutriment" = 6, "ketchup" = 3, "vitamin" = 3)
/obj/item/weapon/reagent_containers/food/snacks/meatbun
name = "meat bun"
desc = "Has the potential to not be Dog."
icon_state = "meatbun"
bitesize = 6
- list_reagents = list("nutriment" = 6)
+ list_reagents = list("nutriment" = 6, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich
name = "icecream sandwich"
desc = "Portable Ice-cream in it's own packaging."
icon_state = "icecreamsandwich"
- bitesize = 2
list_reagents = list("nutriment" = 2, "ice" = 2)
/obj/item/weapon/reagent_containers/food/snacks/notasandwich
name = "not-a-sandwich"
desc = "Something seems to be wrong with this, you can't quite figure what. Maybe it's his moustache."
icon_state = "notasandwich"
- bitesize = 2
- list_reagents = list("nutriment" = 6)
+ list_reagents = list("nutriment" = 6, "vitamin" = 6)
/obj/item/weapon/reagent_containers/food/snacks/sugarcookie
name = "sugar cookie"
desc = "Just like your little sister used to make."
icon_state = "sugarcookie"
- bitesize = 2
- list_reagents = list("nutriment" = 2, "sugar" = 5)
+ list_reagents = list("nutriment" = 3, "sugar" = 3)
/obj/item/weapon/reagent_containers/food/snacks/friedbanana
name = "Fried Banana"
@@ -2441,8 +2281,7 @@
icon_state = "dionaroast"
trash = /obj/item/trash/plate
filling_color = "#75754B"
- bitesize = 2
- list_reagents = list("plantmatter" = 4, "nutriment" = 2, "radium" = 2)
+ list_reagents = list("plantmatter" = 4, "nutriment" = 2, "radium" = 2, "vitamin" = 4)
/obj/item/weapon/reagent_containers/food/snacks/boiledspiderleg
name = "boiled spider leg"
@@ -2450,14 +2289,13 @@
icon_state = "spiderlegcooked"
trash = /obj/item/trash/plate
bitesize = 3
- list_reagents = list("nutriment" = 3, "toxin" = 2)
+ list_reagents = list("nutriment" = 3, "capsaicin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/spidereggs
name = "spider eggs"
desc = "A cluster of juicy spider eggs. A great side dish for when you care not for your health."
icon_state = "spidereggs"
- bitesize = 2
- list_reagents = list("protein" = 2, "toxin" = 3)
+ list_reagents = list("protein" = 2, "toxin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/spidereggsham
name = "green eggs and ham"
@@ -2465,7 +2303,7 @@
icon_state = "spidereggsham"
trash = /obj/item/trash/plate
bitesize = 4
- list_reagents = list("nutriment" = 6, "sodiumchloride" = 1, "toxin" = 3)
+ list_reagents = list("nutriment" = 6)
/obj/item/weapon/reagent_containers/food/snacks/sliceable/turkey
name = "Turkey"
@@ -2473,8 +2311,7 @@
icon_state = "turkey"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/turkeyslice
slices_num = 6
- bitesize = 2
- list_reagents = list("protein" = 24, "nutriment" = 18)
+ list_reagents = list("protein" = 24, "nutriment" = 18, "vitamin" = 5)
/obj/item/weapon/reagent_containers/food/snacks/turkeyslice
name = "turkey serving"
@@ -2482,7 +2319,6 @@
icon_state = "turkeyslice"
trash = /obj/item/trash/plate
filling_color = "#B97A57"
- bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/mashed_potatoes //mashed taters
name = "mashed potatoes"
@@ -2490,8 +2326,7 @@
icon_state = "mashedtaters"
trash = /obj/item/trash/plate
filling_color = "#D6D9C1"
- bitesize = 2
- list_reagents = list("nutriment" = 5, "gravy" = 5, "mashedpotatoes" = 10)
+ list_reagents = list("nutriment" = 5, "gravy" = 5, "mashedpotatoes" = 10, "vitamin" = 2)
////////////////////////////////ICE CREAM///////////////////////////////////
/obj/item/weapon/reagent_containers/food/snacks/icecream
@@ -2499,6 +2334,7 @@
desc = "Delicious ice cream."
icon = 'icons/obj/kitchen.dmi'
icon_state = "icecream_cone"
+ bitesize = 3
list_reagents = list("nutriment" = 1, "sugar" = 1)
/obj/item/weapon/reagent_containers/food/snacks/icecream/New()
@@ -2532,7 +2368,6 @@
desc = "A box of cereal."
icon = 'icons/obj/food/food.dmi'
icon_state = "cereal_box"
- bitesize = 2
list_reagents = list("nutriment" = 3)
/obj/item/weapon/reagent_containers/food/snacks/deepfryholder
@@ -2540,7 +2375,6 @@
desc = "If you can see this description the code for the deep fryer fucked up."
icon = 'icons/obj/food/food.dmi'
icon_state = "deepfried_holder_icon"
- bitesize = 2
list_reagents = list("nutriment" = 3)
/obj/item/weapon/reagent_containers/food/snacks/dough
@@ -2548,8 +2382,7 @@
desc = "A piece of dough."
icon = 'icons/obj/food/food_ingredients.dmi'
icon_state = "dough"
- bitesize = 2
- list_reagents = list("nutriment" = 3)
+ list_reagents = list("nutriment" = 6)
// Dough + rolling pin = flat dough
/obj/item/weapon/reagent_containers/food/snacks/dough/attackby(obj/item/I, mob/user, params)
@@ -2571,14 +2404,13 @@
icon_state = "flat dough"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/doughslice
slices_num = 3
- list_reagents = list("nutriment" = 3)
+ list_reagents = list("nutriment" = 6)
/obj/item/weapon/reagent_containers/food/snacks/doughslice
name = "dough slice"
desc = "The building block of an impressive dish."
icon = 'icons/obj/food/food_ingredients.dmi'
icon_state = "doughslice"
- bitesize = 2
list_reagents = list("nutriment" = 1)
/obj/item/weapon/reagent_containers/food/snacks/bun
@@ -2586,53 +2418,34 @@
desc = "The base for any self-respecting burger."
icon = 'icons/obj/food/food_ingredients.dmi'
icon_state = "bun"
- bitesize = 3
- list_reagents = list("nutriment" = 4)
+ list_reagents = list("nutriment" = 1)
/obj/item/weapon/reagent_containers/food/snacks/taco
name = "taco"
desc = "Take a bite!"
icon_state = "taco"
bitesize = 3
- list_reagents = list("nutriment" = 7)
+ list_reagents = list("nutriment" = 7, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/cutlet
name = "cutlet"
desc = "A tasty meat slice."
icon = 'icons/obj/food/food_ingredients.dmi'
icon_state = "cutlet"
- bitesize = 2
list_reagents = list("protein" = 2)
-/obj/item/weapon/reagent_containers/food/snacks/rawmeatball
- name = "raw meatball"
- desc = "A raw meatball."
- icon = 'icons/obj/food/food_ingredients.dmi'
- icon_state = "rawmeatball"
- bitesize = 2
- list_reagents = list("protein" = 2)
-
-/obj/item/weapon/reagent_containers/food/snacks/hotdog
- name = "hotdog"
- desc = "Unrelated to dogs, maybe."
- icon_state = "hotdog"
- bitesize = 2
- list_reagents = list("protein" = 6)
-
/obj/item/weapon/reagent_containers/food/snacks/flatbread
name = "flatbread"
desc = "Bland but filling."
icon = 'icons/obj/food/food_ingredients.dmi'
icon_state = "flatbread"
- bitesize = 2
- list_reagents = list("nutriment" = 3)
+ list_reagents = list("nutriment" = 6, "vitamin" = 1)
/obj/item/weapon/reagent_containers/food/snacks/rawsticks
name = "raw potato sticks"
desc = "Raw fries, not very tasty."
icon = 'icons/obj/food/food_ingredients.dmi'
icon_state = "rawsticks"
- bitesize = 2
list_reagents = list("plantmatter" = 3)
/obj/item/weapon/reagent_containers/food/snacks/ectoplasm
@@ -2649,7 +2462,7 @@
trash = /obj/item/trash/liquidfood
filling_color = "#A8A8A8"
bitesize = 4
- list_reagents = list("nutriment" = 20, "iron" = 3)
+ list_reagents = list("nutriment" = 20, "iron" = 3, "vitamin" = 2)
/obj/item/weapon/reagent_containers/food/snacks/tastybread
@@ -2658,5 +2471,5 @@
icon_state = "tastybread"
trash = /obj/item/trash/tastybread
filling_color = "#A66829"
- bitesize = 2
- list_reagents = list("nutriment" = 6)
\ No newline at end of file
+ junkiness = 20
+ list_reagents = list("nutriment" = 2, "sugar" = 4)
\ No newline at end of file
diff --git a/code/modules/food_and_drinks/recipes/recipes_candy.dm b/code/modules/food_and_drinks/recipes/recipes_candy.dm
index 98f969a17ec..414eee38354 100644
--- a/code/modules/food_and_drinks/recipes/recipes_candy.dm
+++ b/code/modules/food_and_drinks/recipes/recipes_candy.dm
@@ -505,7 +505,7 @@
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar,
/obj/item/weapon/reagent_containers/food/snacks/candy/caramel,
)
- result = /obj/item/weapon/reagent_containers/food/snacks/candy/candybar/caramel
+ result = /obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/caramel
/datum/recipe/candy/toolerone
reagents = list()
@@ -513,7 +513,7 @@
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar,
/obj/item/weapon/reagent_containers/food/snacks/candy/nougat,
)
- result = /obj/item/weapon/reagent_containers/food/snacks/candy/candybar/nougat
+ result = /obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/nougat
/datum/recipe/candy/yumbaton
reagents = list()
@@ -521,14 +521,14 @@
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar,
/obj/item/weapon/reagent_containers/food/snacks/candy/toffee,
)
- result = /obj/item/weapon/reagent_containers/food/snacks/candy/candybar/toffee
+ result = /obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/toffee
/datum/recipe/candy/crunch
reagents = list("rice" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/candy/candybar,
)
- result = /obj/item/weapon/reagent_containers/food/snacks/candy/candybar/rice
+ result = /obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/rice
/datum/recipe/candy/toxinstest
reagents = list()
@@ -537,4 +537,4 @@
/obj/item/weapon/reagent_containers/food/snacks/candy/caramel,
/obj/item/weapon/reagent_containers/food/snacks/candy/nougat,
)
- result = /obj/item/weapon/reagent_containers/food/snacks/candy/candybar/caramel_nougat
+ result = /obj/item/weapon/reagent_containers/food/snacks/candy/confectionery/caramel_nougat
diff --git a/code/modules/food_and_drinks/recipes/recipes_microwave.dm b/code/modules/food_and_drinks/recipes/recipes_microwave.dm
index 5903e191b4e..2840c099ea6 100644
--- a/code/modules/food_and_drinks/recipes/recipes_microwave.dm
+++ b/code/modules/food_and_drinks/recipes/recipes_microwave.dm
@@ -29,24 +29,24 @@
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough
)
- result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/slimejelly
/datum/recipe/microwave/jellydonut/cherry
reagents = list("cherryjelly" = 5, "sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough
)
- result = /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/cherryjelly
/datum/recipe/microwave/donut
reagents = list("sugar" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough
)
- result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut
/datum/recipe/microwave/donut/sprinkles
- reagents = list("sugar" = 5, "sprinkles" = 3)
+ reagents = list("sugar" = 5, "sprinkles" = 2)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/dough
)
@@ -671,12 +671,6 @@ datum/recipe/microwave/slimesandwich
)
result = /obj/item/weapon/reagent_containers/food/snacks/taco
-/datum/recipe/microwave/meatball
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/rawmeatball
- )
- result = /obj/item/weapon/reagent_containers/food/snacks/meatball
-
/datum/recipe/microwave/fries
items = list(
/obj/item/weapon/reagent_containers/food/snacks/rawsticks
diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm
index 7d646b23cc3..bab7e2a38b9 100644
--- a/code/modules/hydroponics/seed_datums.dm
+++ b/code/modules/hydroponics/seed_datums.dm
@@ -3,7 +3,7 @@
name = "chili"
seed_name = "chili"
display_name = "chili plants"
- chems = list("capsaicin" = list(3,5), "plantmatter" = list(1,25))
+ chems = list("capsaicin" = list(3,5), "plantmatter" = list(1,25), "vitamin" = list(1,25))
mutants = list("icechili", "ghostchili")
kitchen_tag = "chili"
preset_icon = "chilipepper"
@@ -24,7 +24,7 @@
seed_name = "ice pepper"
display_name = "ice-pepper plants"
mutants = null
- chems = list("frostoil" = list(3,5), "plantmatter" = list(1,50))
+ chems = list("frostoil" = list(3,5), "plantmatter" = list(1,50), "vitamin" = list(1,50))
kitchen_tag = "icechili"
preset_icon = "icepepper"
@@ -58,7 +58,7 @@
seed_name = "berry"
display_name = "berry bush"
mutants = list("glowberries","poisonberries")
- chems = list("plantmatter" = list(1,10))
+ chems = list("plantmatter" = list(1,10), "vitamin" = list(1,25))
kitchen_tag = "berries"
preset_icon = "berrypile"
@@ -79,7 +79,7 @@
seed_name = "glowberry"
display_name = "glowberry bush"
mutants = null
- chems = list("plantmatter" = list(1,10), "uranium" = list(3,5))
+ chems = list("plantmatter" = list(1,10), "uranium" = list(3,5), "vitamin" = list(1,25))
preset_icon = "glowberrypile"
/datum/seed/berry/glow/New()
@@ -99,7 +99,7 @@
seed_name = "poison berry"
display_name = "poison berry bush"
mutants = list("deathberries")
- chems = list("plantmatter" = list(1), "toxin" = list(3,5))
+ chems = list("plantmatter" = list(1), "toxin" = list(3,5), "vitamin" = list(1,25))
kitchen_tag = "poisonberries"
preset_icon = "poisonberrypile"
@@ -113,7 +113,7 @@
seed_name = "death berry"
display_name = "death berry bush"
mutants = null
- chems = list("plantmatter" = list(1), "toxin" = list(3,3), "lexorin" = list(1,5))
+ chems = list("plantmatter" = list(1), "toxin" = list(3,3), "lexorin" = list(1,5), "vitamin" = list(1,25))
preset_icon = "deathberrypile"
/datum/seed/berry/poison/death/New()
@@ -169,7 +169,7 @@
seed_name = "tomato"
display_name = "tomato plant"
mutants = list("bluetomato","bloodtomato","killertomato")
- chems = list("plantmatter" = list(1,10))
+ chems = list("plantmatter" = list(1,10), "vitamin" = list(1,25))
kitchen_tag = "tomato"
preset_icon = "tomato"
@@ -190,7 +190,7 @@
seed_name = "blood tomato"
display_name = "blood tomato plant"
mutants = list("killertomato")
- chems = list("protein" = list(1,10), "blood" = list(1,5))
+ chems = list("protein" = list(1,10), "blood" = list(1,5), "vitamin" = list(1,25))
splat_type = /obj/effect/decal/cleanable/blood/splatter
kitchen_tag = "bloodtomato"
preset_icon = "bloodtomato"
@@ -222,7 +222,7 @@
seed_name = "blue tomato"
display_name = "blue tomato plant"
mutants = list("bluespacetomato")
- chems = list("plantmatter" = list(1,20), "lube" = list(1,5))
+ chems = list("plantmatter" = list(1,20), "lube" = list(1,5), "vitamin" = list(1,25))
preset_icon = "bluetomato"
/datum/seed/tomato/blue/New()
@@ -237,7 +237,7 @@
seed_name = "bluespace tomato"
display_name = "bluespace tomato plant"
mutants = null
- chems = list("plantmatter" = list(1,20), "singulo" = list(10,5))
+ chems = list("plantmatter" = list(1,20), "singulo" = list(10,5), "vitamin" = list(1,25))
preset_icon = "bluespacetomato"
/datum/seed/tomato/blue/teleport/New()
@@ -254,7 +254,7 @@
seed_name = "eggplant"
display_name = "eggplants"
mutants = list("egg-plant")
- chems = list("plantmatter" = list(1,10))
+ chems = list("plantmatter" = list(1,10), "vitamin" = list(1,25))
kitchen_tag = "eggplant"
preset_icon = "eggplant"
@@ -294,7 +294,7 @@
seed_name = "apple"
display_name = "apple tree"
mutants = list("poisonapple","goldapple")
- chems = list("plantmatter" = list(1,10))
+ chems = list("plantmatter" = list(1,10), "vitamin" = list(1,25))
kitchen_tag = "apple"
preset_icon = "apple"
@@ -320,7 +320,7 @@
seed_name = "golden apple"
display_name = "gold apple tree"
mutants = null
- chems = list("plantmatter" = list(1,10), "gold" = list(1,5))
+ chems = list("plantmatter" = list(1,10), "gold" = list(1,5), "vitamin" = list(1,25))
kitchen_tag = "goldapple"
preset_icon = "goldapple"
@@ -339,7 +339,7 @@
seed_name = "ambrosia vulgaris"
display_name = "ambrosia vulgaris"
mutants = list("ambrosiadeus")
- chems = list("plantmatter" = list(1), "thc" = list(1,8), "silver_sulfadiazine" = list(1,8,1), "styptic_powder" = list(1,10,1), "toxin" = list(1,10))
+ chems = list("plantmatter" = list(1), "thc" = list(1,8), "silver_sulfadiazine" = list(1,8,1), "styptic_powder" = list(1,10,1), "vitamin" = list(1,25), "toxin" = list(1,10))
kitchen_tag = "ambrosia"
preset_icon = "ambrosiavulgaris"
@@ -359,7 +359,7 @@
seed_name = "ambrosia deus"
display_name = "ambrosia deus"
mutants = null
- chems = list("plantmatter" = list(1), "styptic_powder" = list(1,8), "synaptizine" = list(1,8,1), "methamphetamine" = list(1,10,1), "thc" = list(1,10))
+ chems = list("plantmatter" = list(1), "styptic_powder" = list(1,8), "synaptizine" = list(1,8,1), "methamphetamine" = list(1,10,1), "vitamin" = list(1,25), "thc" = list(1,10))
kitchen_tag = "ambrosiadeus"
preset_icon = "ambrosiadeus"
@@ -431,7 +431,7 @@
seed_name = "tea aspera"
display_name = "tea aspera"
mutants = list("teaastra")
- chems = list("teapowder" = list(1,20), "charcoal" = list(1,30))
+ chems = list("teapowder" = list(1,20), "charcoal" = list(1,30), "vitamin" = list(1,25))
preset_icon = "tea_aspera_leaves"
/datum/seed/teaaspera/New()
@@ -449,7 +449,7 @@
name = "teaastra"
seed_name = "tea astra"
display_name = "tea astra"
- chems = list("teapowder" = list(1,20), "haloperidol" = list(1,30))
+ chems = list("teapowder" = list(1,20), "haloperidol" = list(1,30), "vitamin" = list(1,25))
preset_icon = "tea_astra_leaves"
/datum/seed/teaastra/New()
@@ -471,7 +471,7 @@
seed_name = "coffee arabica"
display_name = "coffee arabica"
mutants = list("coffeer")
- chems = list("coffeepowder" = list(1,20), "synaptizine" = list(1,40))
+ chems = list("coffeepowder" = list(1,20), "synaptizine" = list(1,40), "vitamin" = list(1,25))
kitchen_tag = "coffeea"
preset_icon = "coffee_arabica"
@@ -490,7 +490,7 @@
name = "coffeer"
seed_name = "coffee robusta"
display_name = "coffee robusta"
- chems = list("coffeepowder" = list(1,20), "synaptizine" = list(1,20), "methamphetamine" = list(1,40))
+ chems = list("coffeepowder" = list(1,20), "synaptizine" = list(1,20), "methamphetamine" = list(1,40), "vitamin" = list(1,25))
kitchen_tag = "coffeer"
preset_icon = "coffee_robusta"
@@ -551,7 +551,7 @@
seed_name = "plump helmet"
display_name = "plump helmet mushrooms"
mutants = list("walkingmushroom","towercap")
- chems = list("plantmatter" = list(2,10))
+ chems = list("plantmatter" = list(2,10), "vitamin" = list(1,25))
kitchen_tag = "plumphelmet"
preset_icon = "plumphelmet"
@@ -786,7 +786,7 @@
/datum/seed/flower/moonflower
name = "moonflowers"
seed_name = "moonflowers"
- chems = list("plantmatter" = list(1,50), "moonshine" = list(1,10))
+ chems = list("plantmatter" = list(1,50), "moonshine" = list(1,10), "vitamin" = list(1,25))
mutants = null
display_name = "moonflowers"
preset_icon = "moonflower"
@@ -824,7 +824,7 @@
seed_name = "grape"
display_name = "grapevines"
mutants = list("greengrapes")
- chems = list("plantmatter" = list(1,10), "sugar" = list(1,5))
+ chems = list("plantmatter" = list(1,10), "sugar" = list(1,5), "vitamin" = list(1,25))
kitchen_tag = "grapes"
preset_icon = "grapes"
@@ -845,7 +845,7 @@
seed_name = "green grape"
display_name = "green grapevines"
mutants = null
- chems = list("plantmatter" = list(1,10), "silver_sulfadiazine" = list(3,5))
+ chems = list("plantmatter" = list(1,10), "silver_sulfadiazine" = list(3,5), "vitamin" = list(1,25))
preset_icon = "greengrapes"
/datum/seed/grapes/green/New()
@@ -857,7 +857,7 @@
name = "soybean"
seed_name = "soybean"
display_name = "soybeans"
- chems = list("plantmatter" = list(1,20), "soybeanoil" = list(1,20))
+ chems = list("plantmatter" = list(1,20), "soybeanoil" = list(1,20), "vitamin" = list(1,25))
mutants = list("koibean")
kitchen_tag = "soybeans"
preset_icon = "soybeans"
@@ -877,7 +877,7 @@
name = "koibean"
seed_name = "koibean"
display_name = "koi beans"
- chems = list("plantmatter" = list(1,30), "carpotoxin" = list(1,20))
+ chems = list("plantmatter" = list(1,30), "carpotoxin" = list(1,20), "vitamin" = list(1,25))
mutants = null
kitchen_tag = "koibean"
preset_icon = "koibeans"
@@ -918,7 +918,7 @@
name = "cabbage"
seed_name = "cabbage"
display_name = "cabbages"
- chems = list("plantmatter" = list(1,10))
+ chems = list("plantmatter" = list(1,10), "vitamin" = list(1,25))
kitchen_tag = "cabbage"
preset_icon = "cabbage"
@@ -938,7 +938,7 @@
name = "banana"
seed_name = "banana"
display_name = "banana tree"
- chems = list("banana" = list(10,10))
+ chems = list("banana" = list(10,10), "vitamin" = list(1,25))
trash_type = /obj/item/weapon/bananapeel
kitchen_tag = "banana"
preset_icon = "banana"
@@ -958,7 +958,7 @@
name = "corn"
seed_name = "corn"
display_name = "ears of corn"
- chems = list("plantmatter" = list(1,10), "corn_starch" = list(3,5))
+ chems = list("plantmatter" = list(1,10), "corn_starch" = list(3,5), "vitamin" = list(1,25))
kitchen_tag = "corn"
trash_type = /obj/item/weapon/corncob
preset_icon = "corn"
@@ -978,7 +978,7 @@
name = "potato"
seed_name = "potato"
display_name = "potatoes"
- chems = list("plantmatter" = list(1,10))
+ chems = list("plantmatter" = list(1,10), "vitamin" = list(1,25))
kitchen_tag = "potato"
preset_icon = "potato"
@@ -1035,7 +1035,7 @@
name = "carrot"
seed_name = "carrot"
display_name = "carrots"
- chems = list("plantmatter" = list(1,20), "oculine" = list(3,5))
+ chems = list("plantmatter" = list(1,20), "oculine" = list(3,5), "vitamin" = list(1,25))
kitchen_tag = "carrot"
preset_icon = "carrot"
@@ -1070,7 +1070,7 @@
name = "whitebeet"
seed_name = "white-beet"
display_name = "white-beets"
- chems = list("plantmatter" = list(0,20), "sugar" = list(1,5))
+ chems = list("plantmatter" = list(0,20), "sugar" = list(1,5), "vitamin" = list(1,25))
kitchen_tag = "whitebeet"
preset_icon = "whitebeet"
@@ -1109,7 +1109,7 @@
name = "watermelon"
seed_name = "watermelon"
display_name = "watermelon vine"
- chems = list("plantmatter" = list(1,6))
+ chems = list("plantmatter" = list(1,6), "vitamin" = list(1,25))
kitchen_tag = "watermelon"
preset_icon = "watermelon"
@@ -1130,7 +1130,7 @@
name = "pumpkin"
seed_name = "pumpkin"
display_name = "pumpkin vine"
- chems = list("plantmatter" = list(1,6))
+ chems = list("plantmatter" = list(1,6), "vitamin" = list(1,25))
kitchen_tag = "pumpkin"
preset_icon = "pumpkin"
@@ -1150,7 +1150,7 @@
name = "lime"
seed_name = "lime"
display_name = "lime trees"
- chems = list("plantmatter" = list(1,20))
+ chems = list("plantmatter" = list(1,20), "vitamin" = list(1,25))
kitchen_tag = "lime"
preset_icon = "lime"
@@ -1170,7 +1170,7 @@
name = "lemon"
seed_name = "lemon"
display_name = "lemon trees"
- chems = list("plantmatter" = list(1,20))
+ chems = list("plantmatter" = list(1,20), "vitamin" = list(1,25))
mutants = list("cashtree")
kitchen_tag = "lemon"
preset_icon = "lemon"
diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm
index 3f2784a1bf4..712fca9592a 100644
--- a/code/modules/mining/equipment_locker.dm
+++ b/code/modules/mining/equipment_locker.dm
@@ -737,6 +737,7 @@
healable = 0
var/mode = MINEDRONE_COLLECT
var/light_on = 0
+ var/mesons_active
var/datum/action/innate/minedrone/toggle_light/toggle_light_action
var/datum/action/innate/minedrone/toggle_meson_vision/toggle_meson_vision_action
@@ -863,6 +864,28 @@
mode = MINEDRONE_COLLECT
SetCollectBehavior()
+
+/mob/living/simple_animal/hostile/mining_drone/update_sight()
+ if(!client)
+ return
+ if(stat == DEAD)
+ grant_death_vision()
+ return
+
+ if(mesons_active)
+ sight |= SEE_TURFS
+ see_invisible = SEE_INVISIBLE_MINIMUM
+ else
+ sight &= ~SEE_TURFS
+ see_invisible = SEE_INVISIBLE_LIVING
+
+ see_in_dark = initial(see_in_dark)
+
+ if(client.eye != src)
+ var/atom/A = client.eye
+ if(A.update_remote_sight(src)) //returns 1 if we override all other sight updates.
+ return
+
//Actions for sentient minebots
/datum/action/innate/minedrone
@@ -889,15 +912,10 @@
/datum/action/innate/minedrone/toggle_meson_vision/Activate()
var/mob/living/simple_animal/hostile/mining_drone/user = owner
+ user.mesons_active = !user.mesons_active
+ user.update_sight()
- if(user.sight & SEE_TURFS)
- user.sight &= ~SEE_TURFS
- user.see_invisible = SEE_INVISIBLE_LIVING
- else
- user.sight |= SEE_TURFS
- user.see_invisible = SEE_INVISIBLE_MINIMUM
-
- to_chat(user, "You toggle your meson vision [(user.sight & SEE_TURFS) ? "on" : "off"].")
+ to_chat(user, "You toggle your meson vision [(user.mesons_active) ? "on" : "off"].")
/datum/action/innate/minedrone/toggle_mode
name = "Toggle Mode"
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 9954b8e12b2..db6ef63ad22 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -226,6 +226,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(client.statpanel == "Status")
show_stat_station_time()
show_stat_emergency_shuttle_eta()
+ stat(null, "Respawnability: [(src in respawnable_list) ? "Yes" : "No"]")
/mob/dead/observer/verb/reenter_corpse()
set category = "Ghost"
@@ -667,4 +668,4 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
mind.active = 1
mind.transfer_to(new_char)
else
- new_char.key = key
\ No newline at end of file
+ new_char.key = key
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index fed16671887..cb3bd3cee00 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -34,12 +34,12 @@
/mob/living/carbon/Move(NewLoc, direct)
. = ..()
if(.)
- if(src.nutrition && src.stat != 2)
- src.nutrition -= HUNGER_FACTOR/10
- if(src.m_intent == "run")
- src.nutrition -= HUNGER_FACTOR/10
- if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360)
- src.bodytemperature += 2
+ if(nutrition && stat != DEAD)
+ nutrition -= HUNGER_FACTOR/10
+ if(m_intent == "run")
+ nutrition -= HUNGER_FACTOR/10
+ if((FAT in mutations) && m_intent == "run" && bodytemperature <= 360)
+ bodytemperature += 2
// Moving around increases germ_level faster
if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8))
@@ -939,9 +939,10 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
/mob/living/carbon/proc/eat(var/obj/item/weapon/reagent_containers/food/toEat, mob/user)
if(!istype(toEat))
return 0
- var/fullness = 0
+ var/fullness = nutrition + 10
if(istype(toEat, /obj/item/weapon/reagent_containers/food/snacks))
- fullness = nutrition + (reagents.get_reagent_amount("nutriment") * 20) + (reagents.get_reagent_amount("protein") * 25) + (reagents.get_reagent_amount("plantmatter") * 25)
+ for(var/datum/reagent/consumable/C in reagents.reagent_list) //we add the nutrition value of what we're currently digesting
+ fullness += C.nutriment_factor * C.volume / C.metabolization_rate
if(user == src)
if(istype(toEat, /obj/item/weapon/reagent_containers/food/drinks))
if(!selfDrink(toEat))
@@ -960,15 +961,18 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
if(istype(toEat, /obj/item/weapon/reagent_containers/food/pill))
to_chat(src, "You [toEat.apply_method] [toEat].")
else
+ if(toEat.junkiness && satiety < -150 && nutrition > NUTRITION_LEVEL_STARVING + 50 )
+ to_chat(src, "You don't feel like eating any more junk food at the moment.")
+ return 0
if(fullness <= 50)
to_chat(src, "You hungrily chew out a piece of [toEat] and gobble it!")
- else if(fullness > 50 && fullness <= 150)
+ else if(fullness > 50 && fullness < 150)
to_chat(src, "You hungrily begin to eat [toEat].")
- else if(fullness > 150 && fullness <= 350)
+ else if(fullness > 150 && fullness < 500)
to_chat(src, "You take a bite of [toEat].")
- else if(fullness > 350 && fullness <= 550)
+ else if(fullness > 500 && fullness < 600)
to_chat(src, "You unwillingly chew a bit of [toEat].")
- else if(fullness > (550 * (1 + overeatduration / 2000))) // The more you eat - the more you can eat
+ else if(fullness > (600 * (1 + overeatduration / 2000))) // The more you eat - the more you can eat
to_chat(src, "You cannot force any more of [toEat] to go down your throat.")
return 0
return 1
@@ -977,7 +981,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
return 1
/mob/living/carbon/proc/forceFed(var/obj/item/weapon/reagent_containers/food/toEat, mob/user, fullness)
- if(fullness <= (550 * (1 + overeatduration / 1000)))
+ if(fullness <= (600 * (1 + overeatduration / 1000)))
if(!toEat.instant_application)
visible_message("[user] attempts to force [src] to [toEat.apply_method] [toEat].")
else
@@ -1005,15 +1009,14 @@ so that different stomachs can handle things in different ways VB*/
/mob/living/carbon/proc/consume(var/obj/item/weapon/reagent_containers/food/toEat)
if(!toEat.reagents)
return
+ if(satiety > -200)
+ satiety -= toEat.junkiness
if(toEat.consume_sound)
playsound(loc, toEat.consume_sound, rand(10,50), 1)
if(toEat.reagents.total_volume)
- toEat.reagents.reaction(src, toEat.apply_type)
- spawn(0)
- if(toEat.reagents.total_volume > toEat.bitesize)
- toEat.reagents.trans_to(src, toEat.bitesize*toEat.transfer_efficiency)
- else
- toEat.reagents.trans_to(src, toEat.reagents.total_volume*toEat.transfer_efficiency)
+ var/fraction = min(toEat.bitesize/toEat.reagents.total_volume, 1)
+ toEat.reagents.reaction(src, toEat.apply_type, fraction)
+ toEat.reagents.trans_to(src, toEat.bitesize*toEat.transfer_efficiency)
/mob/living/carbon/get_access()
. = ..()
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index ff7622731d6..453402ec7e3 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -253,10 +253,10 @@
if(5)
msg += "[t_He] looks absolutely soaked.\n"
- if(nutrition < 100)
+ if(nutrition < NUTRITION_LEVEL_STARVING - 50)
msg += "[t_He] [t_is] severely malnourished.\n"
- else if(nutrition >= 500)
- if(user.nutrition < 100)
+ else if(nutrition >= NUTRITION_LEVEL_FAT)
+ if(user.nutrition < NUTRITION_LEVEL_STARVING - 50)
msg += "[t_He] [t_is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n"
else
msg += "[t_He] [t_is] quite chubby.\n"
@@ -516,7 +516,7 @@
return istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(H.glasses, /obj/item/clothing/glasses/hud/health/health_advanced) || istype(CIH,/obj/item/organ/internal/cyberimp/eyes/hud/medical)
else
return 0
- else if(istype(M, /mob/living/silicon))
+ else if(isrobot(M) || isAI(M)) //Stand-in/Stopgap to prevent pAIs from freely altering records, pending a more advanced Records system
switch(hudtype)
if("security")
return 1
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 4b764b9b4e2..51344d18052 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -351,9 +351,7 @@ emp_act
if(ismob(I.thrower))
var/mob/M = I.thrower
if(M)
- src.attack_log += text("\[[time_stamp()]\] Has been hit with a [I], thrown by [key_name(M)]")
- M.attack_log += text("\[[time_stamp()]\] Hit [key_name(src)] with a thrown [I]")
- msg_admin_attack("[key_name_admin(src)] was hit by a [I], thrown by [key_name_admin(M)]", print_attack_log = I.throwforce)
+ add_logs(M, src, "hit", I, " (thrown)", print_attack_log = I.throwforce)
//thrown weapon embedded object code.
if(dtype == BRUTE && istype(I))
diff --git a/code/modules/mob/living/carbon/human/interactive/functions.dm b/code/modules/mob/living/carbon/human/interactive/functions.dm
index 199530c4805..080736ddfd7 100644
--- a/code/modules/mob/living/carbon/human/interactive/functions.dm
+++ b/code/modules/mob/living/carbon/human/interactive/functions.dm
@@ -442,7 +442,7 @@
var/static/list/customableTypes = list(/obj/item/weapon/reagent_containers/food/snacks/customizable,/obj/item/weapon/reagent_containers/food/snacks/breadslice,/obj/item/weapon/reagent_containers/food/snacks/bun,/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti,/obj/item/trash/plate,/obj/item/trash/bowl)
- var/static/list/rawtypes = list(/obj/item/weapon/reagent_containers/food/snacks/grown, /obj/item/weapon/reagent_containers/food/snacks/rawcutlet, /obj/item/weapon/reagent_containers/food/snacks/rawmeatball, /obj/item/weapon/reagent_containers/food/snacks/rawsticks, /obj/item/weapon/reagent_containers/food/snacks/salmonmeat, /obj/item/weapon/reagent_containers/food/snacks/carpmeat, /obj/item/weapon/reagent_containers/food/snacks/catfishmeat, /obj/item/weapon/reagent_containers/food/snacks/spagetti, /obj/item/weapon/reagent_containers/food/snacks/dough_ball, /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/weapon/reagent_containers/food/snacks/doughslice, /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/weapon/reagent_containers/food/snacks/boiledrice, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/raw_bacon)
+ var/static/list/rawtypes = list(/obj/item/weapon/reagent_containers/food/snacks/grown, /obj/item/weapon/reagent_containers/food/snacks/rawcutlet, /obj/item/weapon/reagent_containers/food/snacks/rawsticks, /obj/item/weapon/reagent_containers/food/snacks/salmonmeat, /obj/item/weapon/reagent_containers/food/snacks/carpmeat, /obj/item/weapon/reagent_containers/food/snacks/catfishmeat, /obj/item/weapon/reagent_containers/food/snacks/spagetti, /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/weapon/reagent_containers/food/snacks/doughslice, /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/weapon/reagent_containers/food/snacks/boiledrice, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/raw_bacon)
try
var/list/allContents = getAllContents()
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 052d528df0b..0be4298dadc 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -506,17 +506,14 @@
//END FIRE CODE
/mob/living/carbon/human/proc/stabilize_temperature_from_calories()
+ var/body_temperature_difference = species.body_temperature - bodytemperature
+
if(bodytemperature <= species.cold_level_1) //260.15 is 310.15 - 50, the temperature where you start to feel effects.
- if(nutrition >= 2) //If we are very, very cold we'll use up quite a bit of nutriment to heat us up.
- nutrition -= 2
- var/body_temperature_difference = species.body_temperature - bodytemperature
- bodytemperature += max((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM)
+ bodytemperature += max((body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM)
if(bodytemperature >= species.cold_level_1 && bodytemperature <= species.heat_level_1)
- var/body_temperature_difference = species.body_temperature - bodytemperature
- bodytemperature += body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR
+ bodytemperature += body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR
if(bodytemperature >= species.heat_level_1) //360.15 is 310.15 + 50, the temperature where you start to feel effects.
//We totally need a sweat system cause it totally makes sense...~
- var/body_temperature_difference = species.body_temperature - bodytemperature
bodytemperature += min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -BODYTEMP_AUTORECOVERY_MINIMUM) //We're dealing with negative numbers
@@ -676,11 +673,20 @@
becomeFat()
// nutrition decrease
- if(nutrition > 0 && stat != 2)
- nutrition = max (0, nutrition - HUNGER_FACTOR)
+ if(nutrition > 0 && stat != DEAD)
+ // THEY HUNGER
+ var/hunger_rate = HUNGER_FACTOR
+ if(satiety > 0)
+ satiety--
+ if(satiety < 0)
+ satiety++
+ if(prob(round(-satiety/40)))
+ Jitter(5)
+ hunger_rate = 3 * HUNGER_FACTOR
+ nutrition = max(0, nutrition - hunger_rate)
- if(nutrition > 450)
- if(overeatduration < 800) //capped so people don't take forever to unfat
+ if(nutrition > NUTRITION_LEVEL_FULL)
+ if(overeatduration < 600) //capped so people don't take forever to unfat
overeatduration++
else
@@ -690,6 +696,22 @@
else
overeatduration -= 2
+ //metabolism change
+ if(nutrition > NUTRITION_LEVEL_FAT)
+ metabolism_efficiency = 1
+ else if(nutrition > NUTRITION_LEVEL_FED && satiety > 80)
+ if(metabolism_efficiency != 1.25)
+ to_chat(src, "You feel vigorous.")
+ metabolism_efficiency = 1.25
+ else if(nutrition < NUTRITION_LEVEL_STARVING + 50)
+ if(metabolism_efficiency != 0.8)
+ to_chat(src, "You feel sluggish.")
+ metabolism_efficiency = 0.8
+ else
+ if(metabolism_efficiency == 1.25)
+ to_chat(src, "You no longer feel vigorous.")
+ metabolism_efficiency = 1
+
if(drowsyness)
AdjustDrowsy(-1)
EyeBlurry(2)
@@ -932,20 +954,8 @@
if(getToxLoss() >= 45 && nutrition > 20)
lastpuke ++
if(lastpuke >= 25) // about 25 second delay I guess
- Stun(5)
-
- visible_message("[src] throws up!", \
- "[src] throws up!")
- playsound(loc, 'sound/effects/splat.ogg', 50, 1)
-
- var/turf/location = loc
- if(istype(location, /turf/simulated))
- location.add_vomit_floor(src, 1)
-
- nutrition -= 20
+ vomit(20, 0, 1, 0, 1)
adjustToxLoss(-3)
-
- // make it so you can only puke so fast
lastpuke = 0
//0.1% chance of playing a scary sound to someone who's in complete darkness
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index 3c06ac497d7..8c4f36b1b67 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -559,8 +559,12 @@
switch(H.nutrition)
if(NUTRITION_LEVEL_FULL to INFINITY)
H.throw_alert("nutrition", /obj/screen/alert/fat)
- if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FULL)
- H.clear_alert("nutrition")
+ if(NUTRITION_LEVEL_WELL_FED to NUTRITION_LEVEL_FULL)
+ H.throw_alert("nutrition", /obj/screen/alert/full)
+ if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED)
+ H.throw_alert("nutrition", /obj/screen/alert/well_fed)
+ if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED)
+ H.throw_alert("nutrition", /obj/screen/alert/fed)
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
H.throw_alert("nutrition", /obj/screen/alert/hungry)
else
diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm
index 84cb86db417..8a94cb28534 100644
--- a/code/modules/mob/living/carbon/human/species/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station.dm
@@ -817,8 +817,8 @@
H.nutrition += light_amount
H.traumatic_shock -= light_amount
- if(H.nutrition > 450)
- H.nutrition = 450
+ if(H.nutrition > NUTRITION_LEVEL_WELL_FED)
+ H.nutrition = NUTRITION_LEVEL_WELL_FED
if(light_amount > 0)
H.clear_alert("nolight")
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 373e2a7e4fd..bc849f9674e 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -345,7 +345,7 @@
SetDruggy(0)
SetHallucinate(0)
blinded = 0
- nutrition = 400
+ nutrition = NUTRITION_LEVEL_FED + 50
bodytemperature = 310
CureBlind()
CureNearsighted()
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index 3a090576351..8d9fd8aea1c 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -32,6 +32,7 @@
var/implanting = 0 //Used for the mind-slave implant
var/floating = 0
var/mob_size = MOB_SIZE_HUMAN
+ var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
var/nightvision = 0
var/bloodcrawl = 0 //0 No blood crawling, 1 blood crawling, 2 blood crawling+mob devour
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 44db25814c9..b0f42e9a8cb 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -408,9 +408,22 @@ proc/get_radio_key_from_channel(var/channel)
return
var/atom/whisper_loc = get_whisper_loc()
- var/list/listening = hearers(message_range, whisper_loc)
+ var/list/listening = hear(message_range, whisper_loc)
listening |= src
+ var/list/hearturfs = list()
+
+ //Pass whispers on to anything inside the immediate listeners.
+ // This comes before the ghosts do so that ghosts don't act as whisper relays
+ for(var/atom/L in listening)
+ if(ismob(L))
+ for(var/mob/C in L.contents)
+ if(isliving(C))
+ listening += C
+ hearturfs += get_turf(L)
+ if(isobj(L))
+ hearturfs += get_turf(L)
+
//ghosts
for(var/mob/M in dead_mob_list) //does this include players who joined as observers as well?
if(!M.client)
@@ -418,11 +431,14 @@ proc/get_radio_key_from_channel(var/channel)
if(M.stat == DEAD && M.client && M.get_preference(CHAT_GHOSTEARS))
listening |= M
- //Pass whispers on to anything inside the immediate listeners.
- for(var/mob/L in listening)
- for(var/mob/C in L.contents)
- if(isliving(C))
- listening += C
+ // This, in tandem with "hearturfs", lets nested mobs hear whispers that are in range
+ // Grifted from saycode above.
+ for(var/mob/M in player_list)
+ if(!M.client || isnewplayer(M))
+ continue //skip monkeys and leavers
+ if(get_turf(M) in hearturfs)
+ listening |= M
+
//pass on the message to objects that can hear us.
for(var/obj/O in view(message_range, whisper_loc))
diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm
index 92055b813ab..41d4c67427d 100644
--- a/code/modules/mob/living/silicon/pai/death.dm
+++ b/code/modules/mob/living/silicon/pai/death.dm
@@ -24,6 +24,5 @@
//Read as: I have no idea what I'm doing but asking for help got me nowhere so this is what you get. - Nodrak
if(mind) qdel(mind)
living_mob_list -= src
- ghostize()
if(icon_state != "[chassis]_dead" || cleanWipe)
qdel(src)
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index d0aeb8b9fa7..77a66e4eba0 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -114,6 +114,11 @@
C.toff = 1
..()
+/mob/living/silicon/pai/update_icons()
+ if(stat == DEAD)
+ icon_state = "[chassis]_dead"
+ else
+ icon_state = resting ? "[chassis]_rest" : "[chassis]"
// this function shows the information about being silenced as a pAI in the Status panel
/mob/living/silicon/pai/proc/show_silenced()
@@ -420,17 +425,17 @@
set category = "IC"
// Pass lying down or getting up to our pet human, if we're in a rig.
- if(istype(src.loc,/obj/item/device/paicard))
+ if(stat == CONSCIOUS && istype(src.loc,/obj/item/device/paicard))
resting = 0
var/obj/item/weapon/rig/rig = src.get_rig()
if(istype(rig))
rig.force_rest(src)
else
resting = !resting
- icon_state = resting ? "[chassis]_rest" : "[chassis]"
to_chat(src, "You are now [resting ? "resting" : "getting up"]")
- canmove = !resting
+ update_icons()
+ update_canmove()
//Overriding this will stop a number of headaches down the track.
/mob/living/silicon/pai/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm
index 5bb3cf3b645..ff0bcacd903 100644
--- a/code/modules/mob/living/silicon/pai/recruit.dm
+++ b/code/modules/mob/living/silicon/pai/recruit.dm
@@ -28,6 +28,9 @@ var/datum/paiController/paiController // Global handler for pAI candidates
if("signup" in href_list)
var/mob/dead/observer/O = locate(href_list["signup"])
if(!O) return
+ if(!(O in respawnable_list))
+ to_chat(O, "You've given up your ability to respawn!")
+ return
if(!check_recruit(O)) return
recruitWindow(O)
return
@@ -361,6 +364,8 @@ var/datum/paiController/paiController // Global handler for pAI candidates
return 0
if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
return 0
+ if(!(O in respawnable_list))
+ return 0
if(O.client)
return 1
return 0
diff --git a/code/modules/mob/living/silicon/pai/say.dm b/code/modules/mob/living/silicon/pai/say.dm
index 1acb470773a..722e3b632ea 100644
--- a/code/modules/mob/living/silicon/pai/say.dm
+++ b/code/modules/mob/living/silicon/pai/say.dm
@@ -6,8 +6,11 @@
/mob/living/silicon/pai/get_whisper_loc()
if(loc == card) // currently in its card?
- if(istype(card.loc, /mob/living))
- return card.loc // allow a pai being held or in pocket to whisper
+ var/atom/movable/whisper_loc = card
+ if(istype(card.loc, /obj/item/device/pda)) // Step up 1 level if in a PDA
+ whisper_loc = card.loc
+ if(istype(whisper_loc.loc, /mob/living))
+ return whisper_loc.loc // allow a pai being held or in pocket to whisper
else
- return card // allow a pai in its card to whisper
- return ..()
\ No newline at end of file
+ return whisper_loc // allow a pai in its card to whisper
+ return ..()
diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm
index 4e05ff4a402..cf5a44884d1 100644
--- a/code/modules/mob/living/silicon/robot/inventory.dm
+++ b/code/modules/mob/living/silicon/robot/inventory.dm
@@ -14,10 +14,6 @@
return 0
O.mouse_opacity = 2
- if(istype(O,/obj/item/borg/sight))
- var/obj/item/borg/sight/S = O
- sight_mode &= ~S.sight_mode
- update_sight()
if(client)
client.screen -= O
@@ -53,7 +49,6 @@
if((cell.charge * 100 / cell.maxcharge) < B.powerneeded)
to_chat(src, "Not enough power to activate [B.name]!")
return
- var/activated_thingy = null
if(!module_state_1)
O.mouse_opacity = initial(O.mouse_opacity)
module_state_1 = O
@@ -61,7 +56,6 @@
O.plane = HUD_PLANE
O.screen_loc = inv1.screen_loc
contents += O
- activated_thingy = O
else if(!module_state_2)
O.mouse_opacity = initial(O.mouse_opacity)
module_state_2 = O
@@ -69,7 +63,6 @@
O.plane = HUD_PLANE
O.screen_loc = inv2.screen_loc
contents += O
- activated_thingy = O
else if(!module_state_3)
O.mouse_opacity = initial(O.mouse_opacity)
module_state_3 = O
@@ -77,11 +70,8 @@
O.plane = HUD_PLANE
O.screen_loc = inv3.screen_loc
contents += O
- activated_thingy = O
else
to_chat(src, "You need to disable a module first!")
- if(istype(activated_thingy,/obj/item/borg/sight))
- update_sight()
update_icons()
/mob/living/silicon/robot/proc/uneq_active()
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 64b6da638c0..2840e7b381c 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -86,6 +86,7 @@ var/list/robot_verbs_default = list(
var/datum/effect/system/ion_trail_follow/ion_trail // Ionpulse effect.
var/datum/action/item_action/toggle_research_scanner/scanner = null
+ var/list/module_actions = list()
/mob/living/silicon/robot/New(loc,var/syndie = 0,var/unfinished = 0, var/alien = 0)
spark_system = new /datum/effect/system/spark_spread()
@@ -371,7 +372,7 @@ var/list/robot_verbs_default = list(
//languages
module.add_languages(src)
//subsystems
- module.add_subsystems(src)
+ module.add_subsystems_and_actions(src)
//Custom_sprite check and entry
if(custom_sprite == 1)
@@ -976,21 +977,17 @@ var/list/robot_verbs_default = list(
else
overlays -= "eyes"
- if(opened && custom_sprite == 1) //Custom borgs also have custom panels, heh
- if(wiresexposed)
- overlays += "[src.ckey]-openpanel +w"
- else if(cell)
- overlays += "[src.ckey]-openpanel +c"
- else
- overlays += "[src.ckey]-openpanel -c"
-
if(opened)
+ var/panelprefix = "ov"
+ if(custom_sprite) //Custom borgs also have custom panels, heh
+ panelprefix = "[ckey]"
+
if(wiresexposed)
- overlays += "ov-openpanel +w"
+ overlays += "[panelprefix]-openpanel +w"
else if(cell)
- overlays += "ov-openpanel +c"
+ overlays += "[panelprefix]-openpanel +c"
else
- overlays += "ov-openpanel -c"
+ overlays += "[panelprefix]-openpanel -c"
var/combat = list("Combat","Peacekeeper")
if(modtype in combat)
@@ -1424,7 +1421,7 @@ var/list/robot_verbs_default = list(
//languages
module.add_languages(src)
//subsystems
- module.add_subsystems(src)
+ module.add_subsystems_and_actions(src)
status_flags &= ~CANPUSH
@@ -1443,7 +1440,7 @@ var/list/robot_verbs_default = list(
//languages
module.add_languages(src)
//subsystems
- module.add_subsystems(src)
+ module.add_subsystems_and_actions(src)
status_flags &= ~CANPUSH
diff --git a/code/modules/mob/living/silicon/robot/robot_module_actions.dm b/code/modules/mob/living/silicon/robot/robot_module_actions.dm
new file mode 100644
index 00000000000..e7ef9961a95
--- /dev/null
+++ b/code/modules/mob/living/silicon/robot/robot_module_actions.dm
@@ -0,0 +1,37 @@
+/datum/action/innate/robot_sight
+ var/sight_mode = null
+ icon_icon = 'icons/obj/decals.dmi'
+ button_icon_state = "securearea"
+
+/datum/action/innate/robot_sight/Activate()
+ var/mob/living/silicon/robot/R = owner
+ R.sight_mode |= sight_mode
+ R.update_sight()
+ active = 1
+
+/datum/action/innate/robot_sight/Deactivate()
+ var/mob/living/silicon/robot/R = owner
+ R.sight_mode &= ~sight_mode
+ R.update_sight()
+ active = 0
+
+/datum/action/innate/robot_sight/xray
+ name = "X-ray Vision"
+ sight_mode = BORGXRAY
+
+/datum/action/innate/robot_sight/thermal
+ name = "Thermal Vision"
+ sight_mode = BORGTHERM
+ icon_icon = 'icons/obj/clothing/glasses.dmi'
+ button_icon_state = "thermal"
+
+// ayylmao
+/datum/action/innate/robot_sight/thermal/alien
+ icon_icon = 'icons/mob/alien.dmi'
+ button_icon_state = "borg-extra-vision"
+
+/datum/action/innate/robot_sight/meson
+ name = "Meson Vision"
+ sight_mode = BORGMESON
+ icon_icon = 'icons/obj/clothing/glasses.dmi'
+ button_icon_state = "meson"
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index d99bad202d7..39f73310566 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -9,6 +9,7 @@
var/list/modules = list()
var/obj/item/emag = null
var/list/subsystems = list()
+ var/list/module_actions = list()
var/module_type = "NoMod" // For icon usage
@@ -92,11 +93,19 @@
R.add_language("Orluum", 0)
R.add_language("Clownish",0)
-/obj/item/weapon/robot_module/proc/add_subsystems(mob/living/silicon/robot/R)
+/obj/item/weapon/robot_module/proc/add_subsystems_and_actions(mob/living/silicon/robot/R)
R.verbs |= subsystems
+ for(var/A in module_actions)
+ var/datum/action/act = new A()
+ act.Grant(R)
+ R.module_actions += act
-/obj/item/weapon/robot_module/proc/remove_subsystems(mob/living/silicon/robot/R)
+/obj/item/weapon/robot_module/proc/remove_subsystems_and_actions(mob/living/silicon/robot/R)
R.verbs -= subsystems
+ for(var/datum/action/A in R.module_actions)
+ A.Remove(R)
+ qdel(A)
+ R.module_actions.Cut()
/obj/item/weapon/robot_module/standard
name = "standard robot module"
@@ -166,6 +175,9 @@
name = "engineering robot module"
module_type = "Engineer"
subsystems = list(/mob/living/silicon/proc/subsystem_power_monitor)
+ module_actions = list(
+ /datum/action/innate/robot_sight/meson,
+ )
stacktypes = list(
/obj/item/stack/sheet/metal/cyborg = 50,
@@ -178,7 +190,6 @@
/obj/item/weapon/robot_module/engineering/New()
..()
- modules += new /obj/item/borg/sight/meson(src)
modules += new /obj/item/weapon/rcd/borg(src)
modules += new /obj/item/weapon/extinguisher(src)
modules += new /obj/item/weapon/weldingtool/largetank/cyborg(src)
@@ -297,10 +308,12 @@
/obj/item/weapon/robot_module/miner
name = "miner robot module"
module_type = "Miner"
+ module_actions = list(
+ /datum/action/innate/robot_sight/meson,
+ )
/obj/item/weapon/robot_module/miner/New()
..()
- modules += new /obj/item/borg/sight/meson(src)
modules += new /obj/item/weapon/storage/bag/ore/cyborg(src)
modules += new /obj/item/weapon/pickaxe/drill/cyborg(src)
modules += new /obj/item/weapon/shovel(src)
@@ -317,10 +330,12 @@
/obj/item/weapon/robot_module/deathsquad
name = "NT advanced combat module"
module_type = "Malf"
+ module_actions = list(
+ /datum/action/innate/robot_sight/thermal,
+ )
/obj/item/weapon/robot_module/deathsquad/New()
..()
- modules += new /obj/item/borg/sight/thermal(src)
modules += new /obj/item/weapon/melee/energy/sword/cyborg(src)
modules += new /obj/item/weapon/gun/energy/pulse/cyborg(src)
modules += new /obj/item/weapon/crowbar(src)
@@ -385,11 +400,13 @@
/obj/item/weapon/robot_module/combat
name = "combat robot module"
module_type = "Malf"
+ module_actions = list(
+ /datum/action/innate/robot_sight/thermal,
+ )
/obj/item/weapon/robot_module/combat/New()
..()
modules += new /obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg(src)
- modules += new /obj/item/borg/sight/thermal(src)
modules += new /obj/item/weapon/gun/energy/gun/cyborg(src)
modules += new /obj/item/weapon/pickaxe/drill/jackhammer(src)
modules += new /obj/item/borg/combat/shield(src)
@@ -418,11 +435,13 @@
/obj/item/weapon/robot_module/alien/hunter
name = "alien hunter module"
module_type = "Standard"
+ module_actions = list(
+ /datum/action/innate/robot_sight/thermal/alien,
+ )
/obj/item/weapon/robot_module/alien/hunter/New()
modules += new /obj/item/weapon/melee/energy/alien/claws(src)
modules += new /obj/item/device/flash/cyborg/alien(src)
- modules += new /obj/item/borg/sight/thermal/alien(src)
var/obj/item/weapon/reagent_containers/spray/alien/stun/S = new /obj/item/weapon/reagent_containers/spray/alien/stun(src)
S.reagents.add_reagent("ether",250) //nerfed to sleeptoxin to make it less instant drop.
modules += S
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 6cb582e94c1..1d6a7eb43fe 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -67,7 +67,8 @@
var/bodytemperature = 310.055 //98.7 F
var/flying = 0
var/charges = 0.0
- var/nutrition = 400.0//Carbon
+ var/nutrition = NUTRITION_LEVEL_FED + 50 //Carbon
+ var/satiety = 0 //Carbon
var/overeatduration = 0 // How long this guy is overeating //Carbon
var/intent = null//Living
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 3c5e3ac0130..20640edce66 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -494,6 +494,9 @@
if(mind.assigned_role == "Clown") //give them a clownname if they are a clown
new_character.real_name = pick(clown_names) //I hate this being here of all places but unfortunately dna is based on real_name!
new_character.rename_self("clown")
+ else if(mind.assigned_role == "Mime")
+ new_character.real_name = pick(mime_names)
+ new_character.rename_self("mime")
else if(new_character.species == "Diona")
new_character.real_name = pick(diona_names) //I hate this being here of all places but unfortunately dna is based on real_name!
new_character.rename_self("diona")
diff --git a/code/modules/nano/interaction/default.dm b/code/modules/nano/interaction/default.dm
index cb00e6a12b3..3f9155ed162 100644
--- a/code/modules/nano/interaction/default.dm
+++ b/code/modules/nano/interaction/default.dm
@@ -15,7 +15,7 @@
return STATUS_UPDATE // Ghosts can view updates
/mob/living/silicon/pai/default_can_use_topic(var/src_object)
- if(src_object == src && !stat)
+ if((src_object == src || src_object == radio) && stat == CONSCIOUS)
return STATUS_INTERACTIVE
else
return ..()
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index ae931484524..fb160920fbe 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -678,7 +678,7 @@
to_chat(H, "The APC power currents surge erratically, damaging your chassis!")
H.adjustFireLoss(10,0)
else if(src.cell && src.cell.charge > 0)
- if(H.nutrition < 450)
+ if(H.nutrition < NUTRITION_LEVEL_WELL_FED)
if(src.cell.charge >= 500)
H.nutrition += 50
src.cell.charge -= 500
@@ -689,8 +689,8 @@
to_chat(user, "You slot your fingers into the APC interface and siphon off some of the stored charge for your own use.")
if(src.cell.charge < 0)
src.cell.charge = 0
- if(H.nutrition > 500)
- H.nutrition = 500
+ if(H.nutrition > NUTRITION_LEVEL_WELL_FED + 50)
+ H.nutrition = NUTRITION_LEVEL_WELL_FED + 50
src.charging = 1
else
to_chat(user, "You are already fully charged.")
diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm
index 27166f78214..767bb8876e1 100644
--- a/code/modules/projectiles/guns/magic/wand.dm
+++ b/code/modules/projectiles/guns/magic/wand.dm
@@ -68,7 +68,7 @@
var/message ="You irradiate yourself with pure energy! "
message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?")
to_chat(user, message)
- user.adjustFireLoss(500)
+ user.adjustFireLoss(3000)
charges--
..()
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index c79a37dc9c5..d7a6b75c3d1 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -10,9 +10,6 @@
/obj/item/projectile/magic/death
name = "bolt of death"
icon_state = "pulse1_bl"
- damage_type = BURN //OXY does not kill IPCs
- damage = 50000
- nodamage = 0
/obj/item/projectile/magic/fireball
name = "bolt of fireball"
@@ -27,6 +24,12 @@
var/exp_flash = 3
var/exp_fire = 2
+/obj/item/projectile/magic/death/on_hit(var/mob/living/carbon/G)
+ . = ..()
+ if(isliving(G))
+ G.adjustFireLoss(3000)
+ visible_message("[G] topples backwards as the death bolt impacts them!")
+
/obj/item/projectile/magic/fireball/Range()
var/turf/T1 = get_step(src,turn(dir, -45))
var/turf/T2 = get_step(src,turn(dir, 45))
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index a1638c82aff..b1cdef1f73c 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -136,12 +136,11 @@
var/mob/living/M = target
if(ishuman(target))
var/mob/living/carbon/human/H = M
- if((H.species.flags & IS_PLANT) && (M.nutrition < 500))
+ if(H.species.flags & IS_PLANT)
if(prob(15))
M.apply_effect((rand(30,80)),IRRADIATE)
M.Weaken(5)
- for(var/mob/V in viewers(src))
- V.show_message("[M] writhes in pain as \his vacuoles boil.", 3, "You hear the crunching of leaves.", 2)
+ M.visible_message("[M] writhes in pain as \his vacuoles boil.", "You writhe in pain as your vacuoles boil!", "You hear the crunching of leaves.")
if(prob(35))
if(prob(80))
randmutb(M)
@@ -152,7 +151,7 @@
else
M.adjustFireLoss(rand(5,15))
M.show_message("The radiation beam singes you!")
- else if(istype(target, /mob/living/carbon/))
+ else if(iscarbon(target))
M.show_message("The radiation beam dissipates harmlessly through your body.")
else
return 1
@@ -170,9 +169,9 @@
var/mob/M = target
if(ishuman(target)) //These rays make plantmen fat.
var/mob/living/carbon/human/H = M
- if((H.species.flags & IS_PLANT) && (M.nutrition < 500))
- M.nutrition += 30
- else if(istype(target, /mob/living/carbon/))
+ if(H.species.flags & IS_PLANT)
+ H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL)
+ else if(iscarbon(target))
M.show_message("The radiation beam dissipates harmlessly through your body.")
else
return 1
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 367c747c4e0..1e043d88b7c 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -73,7 +73,7 @@
/datum/reagent/proc/on_mob_life(mob/living/M)
current_cycle++
- holder.remove_reagent(id, metabolization_rate) //By default it slowly disappears.
+ holder.remove_reagent(id, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears.
/datum/reagent/proc/on_mob_death(mob/living/M) //use this to have chems have a "death-triggered" effect
return
diff --git a/code/modules/reagents/chemistry/reagents/alcohol.dm b/code/modules/reagents/chemistry/reagents/alcohol.dm
index 536385d7614..627fbf3062c 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol.dm
@@ -37,7 +37,7 @@
name = "Beer"
id = "beer"
description = "An alcoholic beverage made from malted grains, hops, yeast, and water."
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.2
drink_icon ="beerglass"
@@ -49,6 +49,7 @@
id = "cider"
description = "An alcoholic beverage derived from apples."
color = "#174116"
+ nutriment_factor = 1 * REAGENTS_METABOLISM
alcohol_perc = 0.2
drink_icon = "rewriter"
drink_name = "Cider"
@@ -217,6 +218,7 @@
description = "A potent mixture of caffeine and alcohol."
reagent_state = LIQUID
color = "#102000" // rgb: 16, 32, 0
+ nutriment_factor = 1 * REAGENTS_METABOLISM
alcohol_perc = 0.3
heart_rate_increase = 1
drink_icon = "thirteen_loko_glass"
@@ -240,6 +242,7 @@
description = "This appears to be beer mixed with milk. Disgusting."
reagent_state = LIQUID
color = "#895C4C" // rgb: 137, 92, 76
+ nutriment_factor = 2 * REAGENTS_METABOLISM
alcohol_perc = 0.2
drink_icon = "glass_brown"
drink_name = "Glass of bilk"
@@ -714,6 +717,7 @@
description = "A Vikings drink, though a cheap one."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
+ nutriment_factor = 1 * REAGENTS_METABOLISM
alcohol_perc = 0.2
drink_icon = "meadglass"
drink_name = "Mead"
diff --git a/code/modules/reagents/chemistry/reagents/drinks.dm b/code/modules/reagents/chemistry/reagents/drinks.dm
index 489eac3eb81..cf60d77c2c1 100644
--- a/code/modules/reagents/chemistry/reagents/drinks.dm
+++ b/code/modules/reagents/chemistry/reagents/drinks.dm
@@ -213,7 +213,7 @@
name = "Hot Chocolate"
id = "hot_coco"
description = "Made with love! And coco beans."
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 3 * REAGENTS_METABOLISM
color = "#403010" // rgb: 64, 48, 16
adj_temp_hot = 5
drink_icon = "hot_coco"
@@ -225,6 +225,7 @@
id = "coffee"
description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant."
color = "#482000" // rgb: 72, 32, 0
+ nutriment_factor = 0
adj_dizzy = -5
adj_drowsy = -3
adj_sleepy = -2
@@ -307,6 +308,7 @@
id = "tea"
description = "Tasty black tea: It has antioxidants. It's good for you!"
color = "#101000" // rgb: 16, 16, 0
+ nutriment_factor = 0
adj_dizzy = -2
adj_drowsy = -1
adj_sleepy = -3
diff --git a/code/modules/reagents/chemistry/reagents/food.dm b/code/modules/reagents/chemistry/reagents/food.dm
index e2aef002060..fa37e5544e7 100644
--- a/code/modules/reagents/chemistry/reagents/food.dm
+++ b/code/modules/reagents/chemistry/reagents/food.dm
@@ -21,7 +21,7 @@
id = "nutriment"
description = "A questionable mixture of various pure nutrients commonly found in processed foods."
reagent_state = SOLID
- nutriment_factor = 12 * REAGENTS_METABOLISM
+ nutriment_factor = 15 * REAGENTS_METABOLISM
color = "#664330" // rgb: 102, 67, 48
/datum/reagent/consumable/nutriment/on_mob_life(mob/living/M)
@@ -42,14 +42,12 @@
name = "Protein"
id = "protein"
description = "Various essential proteins and fats commonly found in animal flesh and blood."
- nutriment_factor = 15 * REAGENTS_METABOLISM
diet_flags = DIET_CARN | DIET_OMNI
/datum/reagent/consumable/nutriment/plantmatter // Plant-based biomatter, digestable by herbivores and omnivores, worthless to carnivores
name = "Plant-matter"
id = "plantmatter"
description = "Vitamin-rich fibers and natural sugars commonly found in fresh produce."
- nutriment_factor = 15 * REAGENTS_METABOLISM
diet_flags = DIET_HERB | DIET_OMNI
/datum/reagent/consumable/vitamin
@@ -63,6 +61,8 @@
if(prob(50))
M.adjustBruteLoss(-1)
M.adjustFireLoss(-1)
+ if(M.satiety < 600)
+ M.satiety += 30
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.species.exotic_blood)
@@ -72,6 +72,38 @@
H.vessel.add_reagent("blood", 0.5)
..()
+/datum/reagent/consumable/sugar
+ name = "Sugar"
+ id = "sugar"
+ description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
+ reagent_state = SOLID
+ color = "#FFFFFF" // rgb: 255, 255, 255
+ nutriment_factor = 5 * REAGENTS_METABOLISM
+ overdose_threshold = 200 // Hyperglycaemic shock
+
+/datum/reagent/consumable/sugar/on_mob_life(mob/living/M)
+ M.AdjustDrowsy(-5)
+ if(current_cycle >= 90)
+ M.AdjustJitter(2)
+ if(prob(50))
+ M.AdjustParalysis(-1)
+ M.AdjustStunned(-1)
+ M.AdjustWeakened(-1)
+ if(prob(4))
+ M.reagents.add_reagent("epinephrine", 1.2)
+ ..()
+
+/datum/reagent/consumable/sugar/overdose_start(mob/living/M)
+ to_chat(M, "You pass out from hyperglycemic shock!")
+ M.emote("collapse")
+ ..()
+
+/datum/reagent/consumable/sugar/overdose_process(mob/living/M, severity)
+ M.Paralyse(3 * severity)
+ M.Weaken(4 * severity)
+ if(prob(8))
+ M.adjustToxLoss(severity)
+
/datum/reagent/consumable/soysauce
name = "Soysauce"
id = "soysauce"
@@ -351,6 +383,7 @@
id = "rice"
description = "Enjoy the great taste of nothing."
reagent_state = SOLID
+ nutriment_factor = 3 * REAGENTS_METABOLISM
color = "#FFFFFF" // rgb: 0, 0, 0
/datum/reagent/consumable/cherryjelly
@@ -409,9 +442,10 @@
description = "A sweet substance produced by bees through partial digestion. Bee barf."
reagent_state = LIQUID
color = "#d3a308"
+ nutriment_factor = 15 * REAGENTS_METABOLISM
/datum/reagent/consumable/honey/on_mob_life(mob/living/M)
- M.reagents.add_reagent("sugar", 0.4)
+ M.reagents.add_reagent("sugar", 3)
if(prob(20))
M.adjustBruteLoss(-3)
M.adjustFireLoss(-1)
@@ -483,8 +517,6 @@
description = "Some cheese. Pour it out to make it solid."
reagent_state = SOLID
color = "#FFFF00"
- metabolization_rate = 0 //heheheh
- nutriment_factor = 0
/datum/reagent/consumable/cheese/on_mob_life(mob/living/M)
if(prob(3))
@@ -514,9 +546,7 @@
description = "Hell, I don't even know if this IS cheese. Whatever it is, it ain't normal. If you want to, pour it out to make it solid."
reagent_state = SOLID
color = "#50FF00"
- metabolization_rate = 0 //heheheh
addiction_chance = 5
- nutriment_factor = 0
/datum/reagent/consumable/weird_cheese/on_mob_life(mob/living/M)
if(prob(5))
@@ -671,37 +701,6 @@
///Food Related, but non-nutritious
-/datum/reagent/sugar
- name = "Sugar"
- id = "sugar"
- description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
- reagent_state = SOLID
- color = "#FFFFFF" // rgb: 255, 255, 255
- overdose_threshold = 200 // Hyperglycaemic shock
-
-/datum/reagent/sugar/on_mob_life(mob/living/M)
- M.AdjustDrowsy(-5)
- if(current_cycle >= 90)
- M.AdjustJitter(2)
- if(prob(50))
- M.AdjustParalysis(-1)
- M.AdjustStunned(-1)
- M.AdjustWeakened(-1)
- if(prob(4))
- M.reagents.add_reagent("epinephrine", 1.2)
- ..()
-
-/datum/reagent/sugar/overdose_start(mob/living/M)
- to_chat(M, "You pass out from hyperglycemic shock!")
- M.emote("collapse")
- ..()
-
-/datum/reagent/sugar/overdose_process(mob/living/M, severity)
- M.Paralyse(3 * severity)
- M.Weaken(4 * severity)
- if(prob(8))
- M.adjustToxLoss(severity)
-
/datum/reagent/questionmark // food poisoning
name = "????"
id = "????"
diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm
index b3b94ff7e88..de539ef52ba 100644
--- a/code/modules/reagents/chemistry/reagents/medicine.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine.dm
@@ -2,6 +2,10 @@
name = "Medicine"
id = "medicine"
+/datum/reagent/medicine/on_mob_life(mob/living/M)
+ current_cycle++
+ holder.remove_reagent(id, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism
+
/datum/reagent/medicine/hydrocodone
name = "Hydrocodone"
id = "hydrocodone"
diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm
index e7e14f2e4ba..25135f7a079 100644
--- a/code/modules/research/designs/comp_board_designs.dm
+++ b/code/modules/research/designs/comp_board_designs.dm
@@ -343,28 +343,31 @@
category = list("Computer Boards")
datum/design/GAC
- name = "Circuit Design (General Air Control)"
+ name = "Console Board (General Air Control)"
desc = "Allows for the construction of circuit boards used to build a General Air Control Computer."
id = "GAC"
req_tech = list("programming" = 3, "magnets" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/air_management
+ category = list("Computer Boards")
datum/design/tank_control
- name = "Circuit Design (Large Tank Control)"
+ name = "Console Board (Large Tank Control)"
desc = "Allows for the construction of circuit boards used to build a Large Tank Control Computer."
id = "tankcontrol"
req_tech = list("programming" = 3, "magnets" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/large_tank_control
+ category = list("Computer Boards")
datum/design/AAC
- name = "Circuit Design (Atmospheric Automations Console)"
- desc = "Allows for the construction of circuit boards used to build an Atmospheric Autmations Console."
+ name = "Console Board (Atmospheric Automations Console)"
+ desc = "Allows for the construction of circuit boards used to build an Atmospheric Automations Console."
id = "AAC"
req_tech = list("programming" = 4, "magnets" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/atmos_automation
\ No newline at end of file
+ build_path = /obj/item/weapon/circuitboard/atmos_automation
+ category = list("Computer Boards")
\ No newline at end of file
diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm
index 88f8078a2ba..153f169efca 100644
--- a/code/modules/surgery/organs/augments_internal.dm
+++ b/code/modules/surgery/organs/augments_internal.dm
@@ -164,7 +164,7 @@
desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving."
icon_state = "chest_implant"
implant_color = "#00AA00"
- var/hunger_threshold = 150
+ var/hunger_threshold = NUTRITION_LEVEL_STARVING
var/synthesizing = 0
var/poison_amount = 5
slot = "stomach"
@@ -195,7 +195,7 @@
desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are hungry."
icon_state = "chest_implant"
implant_color = "#006607"
- hunger_threshold = 300
+ hunger_threshold = NUTRITION_LEVEL_HUNGRY
poison_amount = 10
origin_tech = "materials=5;programming=3;biotech=5"
diff --git a/code/modules/surgery/organs/blood.dm b/code/modules/surgery/organs/blood.dm
index f71e9bff0be..1bdf29dd191 100644
--- a/code/modules/surgery/organs/blood.dm
+++ b/code/modules/surgery/organs/blood.dm
@@ -66,7 +66,7 @@
if(mind) //Handles vampires "eating" blood that isn't their own.
if(mind in ticker.mode.vampires)
for(var/datum/reagent/blood/BL in vessel.reagent_list)
- if(nutrition >= 450)
+ if(nutrition >= NUTRITION_LEVEL_WELL_FED)
break //We don't want blood tranfusions making vampires fat.
if(BL.data["donor"] != src)
nutrition += (15 * REAGENTS_METABOLISM)
diff --git a/code/modules/surgery/organs/subtypes/standard.dm b/code/modules/surgery/organs/subtypes/standard.dm
index faa6c403355..62ae8c78d66 100644
--- a/code/modules/surgery/organs/subtypes/standard.dm
+++ b/code/modules/surgery/organs/subtypes/standard.dm
@@ -103,7 +103,7 @@
can_stand = 1
/obj/item/organ/external/foot/remove()
- if(owner.shoes) owner.unEquip(owner.shoes)
+ if(owner && owner.shoes) owner.unEquip(owner.shoes)
. = ..()
/obj/item/organ/external/foot/right
@@ -128,12 +128,13 @@
can_grasp = 1
/obj/item/organ/external/hand/remove()
- if(owner.gloves)
- owner.unEquip(owner.gloves)
- if(owner.l_hand)
- owner.unEquip(owner.l_hand,1)
- if(owner.r_hand)
- owner.unEquip(owner.r_hand,1)
+ if(owner)
+ if(owner.gloves)
+ owner.unEquip(owner.gloves)
+ if(owner.l_hand)
+ owner.unEquip(owner.l_hand,1)
+ if(owner.r_hand)
+ owner.unEquip(owner.r_hand,1)
. = ..()
diff --git a/config/names/mime.txt b/config/names/mime.txt
new file mode 100644
index 00000000000..520d3affce9
--- /dev/null
+++ b/config/names/mime.txt
@@ -0,0 +1,24 @@
+Invisible Man
+Lemon Mime
+Marcel
+Marcel Mime
+Mime
+Mr Beret
+Mr Mime
+Mr Mute
+Mute
+Omerta
+Oui Oui
+Pantomime
+Quiet
+Quiet Riot
+Silence
+Silencio
+Silent Knight
+Silent Majority
+Silent Night
+Silent Sorrow
+Transparency
+Unspeakable
+Untouchable
+Wall Runner
\ No newline at end of file
diff --git a/goon/browserassets/js/browserOutput.js b/goon/browserassets/js/browserOutput.js
index 271d7872d46..2abf26079d8 100644
--- a/goon/browserassets/js/browserOutput.js
+++ b/goon/browserassets/js/browserOutput.js
@@ -86,7 +86,7 @@ if (typeof String.prototype.trim !== 'function') {
//Shit fucking piece of crap that doesn't work god fuckin damn it
function linkify(text) {
- var rex = /((?:'+$0+'';
diff --git a/html/changelog.html b/html/changelog.html
index 11d88e379af..63bba8c96e0 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -55,6 +55,66 @@
-->
+
11 January 2017
+
Crazylemon64 updated:
+
+ - Ghosts can now see if they're allowed to respawn or not at a glance
+ - Cyborg sight modes are now actions, instead of items
+ - Mining drones can now use meson sight again
+ - It's no longer opposite day for the karma reminder preference
+
+
Lady Luck updated:
+
+ - office laptops are now traversable
+
+
Markolie updated:
+
+ - simple_animals now have an attack cooldown when attacking mechas.
+
+
uraniummeltdown updated:
+
+ - Atmos Console Boards now show in Computer Boards of Circuit Imprinter
+
+
+
10 January 2017
+
Crazylemon updated:
+
+ - Giant spiders now have their own role pref
+
+
Crazylemon64 updated:
+
+ - pAIs can now adjust their radios
+ - pAIs can now more reliably hear nearby whispers
+ - pAIs can now whisper while inside a PDA
+ - pAIs can no longer change their icon from being dead, while dead
+ - Non-respawnable players are no longer prompted to submit a pAI when the opportunity is available
+ - Borg sight modules work again
+
+
Fox McCloud updated:
+
+ - different alert levels for how full you are from starving all the way to fat
+ - There is now satiety and nutrition; being satisfied and full has a number of positive benefits; being unsatisfied and hungry has negative side effects
+ - Some foods have vitamins in them which provide little nutrition, but greatly increase your satisfaction
+ - Some food reagents have had their nutritional values tweaked
+ - reagent numbers tweaked on most food items
+ - Fixes the floral gun not properly working on Diona
+
+
TullyBurnalot updated:
+
+ - Wand of Death now reliably kills people by adding 300 Burn Damage. This includes self-casting
+ - Minor flavour text visible on impact of target
+ - pAI HUDs are now visual-only, restricting their access to editable records
+
+
pinatacolada updated:
+
+ - IV drips now have adjustable rates
+
+
uraniummeltdown updated:
+
+ - Mimes can now choose name on entry just like Clowns
+ - Added many new costumes to the Autodrobe!
+
+
09 January 2017
Crazylemon64 updated:
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index 4de6bf51203..43ee9363c77 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -3290,3 +3290,46 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
Kyep:
- bugfix: Antags should no longer get bounced to lobby at round start in certain
rare situations.
+2017-01-10:
+ Crazylemon:
+ - tweak: Giant spiders now have their own role pref
+ Crazylemon64:
+ - bugfix: pAIs can now adjust their radios
+ - bugfix: pAIs can now more reliably hear nearby whispers
+ - bugfix: pAIs can now whisper while inside a PDA
+ - bugfix: pAIs can no longer change their icon from being dead, while dead
+ - bugfix: Non-respawnable players are no longer prompted to submit a pAI when the
+ opportunity is available
+ - bugfix: Borg sight modules work again
+ Fox McCloud:
+ - rscadd: different alert levels for how full you are from starving all the way
+ to fat
+ - rscadd: There is now satiety and nutrition; being satisfied and full has a number
+ of positive benefits; being unsatisfied and hungry has negative side effects
+ - rscadd: Some foods have vitamins in them which provide little nutrition, but greatly
+ increase your satisfaction
+ - tweak: Some food reagents have had their nutritional values tweaked
+ - tweak: reagent numbers tweaked on most food items
+ - bugfix: Fixes the floral gun not properly working on Diona
+ TullyBurnalot:
+ - bugfix: Wand of Death now reliably kills people by adding 300 Burn Damage. This
+ includes self-casting
+ - rscadd: Minor flavour text visible on impact of target
+ - tweak: pAI HUDs are now visual-only, restricting their access to editable records
+ pinatacolada:
+ - tweak: IV drips now have adjustable rates
+ uraniummeltdown:
+ - rscadd: Mimes can now choose name on entry just like Clowns
+ - rscadd: Added many new costumes to the Autodrobe!
+2017-01-11:
+ Crazylemon64:
+ - rscadd: Ghosts can now see if they're allowed to respawn or not at a glance
+ - rscadd: Cyborg sight modes are now actions, instead of items
+ - bugfix: Mining drones can now use meson sight again
+ - bugfix: It's no longer opposite day for the karma reminder preference
+ Lady Luck:
+ - tweak: office laptops are now traversable
+ Markolie:
+ - bugfix: simple_animals now have an attack cooldown when attacking mechas.
+ uraniummeltdown:
+ - bugfix: Atmos Console Boards now show in Computer Boards of Circuit Imprinter
diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi
index 85f9b1e25a6..09ba4ebe9d1 100644
Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index b3af414cde5..8e851a7c26c 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi
index 74a0ddef98b..efff252421b 100644
Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ
diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi
index 23b8c76b7c2..a8dc0d7a0ea 100644
Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ
diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi
index 7cc23dca587..99359f5b079 100644
Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index de27e629ee8..47e169492a1 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
index 74ef949dd10..f2c1c3a1311 100644
Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 63af8386202..16ed4ce4b04 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi
index 84f4e2b4b70..e5e658a0d68 100644
Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ
diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi
index 1fefc0259e5..04dfe342cb6 100644
Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index 2016309aaff..4a3a484a14f 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi
index 08a739ba702..40f4c4c2b07 100644
Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ
diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi
index 4380c3a34bb..27e4ffc2c61 100644
Binary files a/icons/obj/custom_items.dmi and b/icons/obj/custom_items.dmi differ
diff --git a/paradise.dme b/paradise.dme
index 0f96de59c40..b0417dc5ee5 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1613,6 +1613,7 @@
#include "code\modules\mob\living\silicon\robot\robot_damage.dm"
#include "code\modules\mob\living\silicon\robot\robot_items.dm"
#include "code\modules\mob\living\silicon\robot\robot_modules.dm"
+#include "code\modules\mob\living\silicon\robot\robot_module_actions.dm"
#include "code\modules\mob\living\silicon\robot\robot_movement.dm"
#include "code\modules\mob\living\silicon\robot\update_status.dm"
#include "code\modules\mob\living\silicon\robot\drone\drone.dm"