diff --git a/_maps/map_files/MiniStation/MiniStation.dmm b/_maps/map_files/MiniStation/MiniStation.dmm index 3d04818ef2a9d3d..d63590ecb3c9612 100644 --- a/_maps/map_files/MiniStation/MiniStation.dmm +++ b/_maps/map_files/MiniStation/MiniStation.dmm @@ -1194,7 +1194,7 @@ "wX" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplatecorner"; dir = 2},/area/hallway/primary/central) "wY" = (/obj/machinery/atmospherics/binary/pump/on,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/hallway/primary/central) "wZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/meter{use_power = 0},/turf/simulated/floor/plating{icon_state = "warnplatecorner"; dir = 1},/area/hallway/primary/central) -"xa" = (/obj/structure/closet/crate{desc = "It's a storage unit for kitchen clothes and equipment."; name = "Kitchen Crate"},/obj/item/clothing/head/chefhat,/obj/item/clothing/under/rank/chef,/obj/item/weapon/storage/box/mousetraps{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/mousetraps,/obj/item/clothing/under/waiter,/obj/item/clothing/under/waiter,/obj/item/weapon/reagent_containers/food/drinks/flour,/obj/item/weapon/reagent_containers/food/drinks/flour,/obj/item/weapon/reagent_containers/food/drinks/flour,/obj/item/weapon/reagent_containers/food/drinks/flour,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/bar) +"xa" = (/obj/structure/closet/crate{desc = "It's a storage unit for kitchen clothes and equipment."; name = "Kitchen Crate"},/obj/item/clothing/head/chefhat,/obj/item/clothing/under/rank/chef,/obj/item/weapon/storage/box/mousetraps{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/mousetraps,/obj/item/clothing/under/waiter,/obj/item/clothing/under/waiter,/obj/item/weapon/reagent_containers/food/condiment/flour,/obj/item/weapon/reagent_containers/food/condiment/flour,/obj/item/weapon/reagent_containers/food/condiment/flour,/obj/item/weapon/reagent_containers/food/condiment/flour,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/bar) "xb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/camera/autoname,/mob/living/simple_animal/mouse/brown/Tom,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/bar) "xc" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/bar) "xd" = (/obj/machinery/door/airlock{name = "Frozen Storage"; req_access_txt = "25"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/bar) @@ -1703,7 +1703,7 @@ "GM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/computer) "GN" = (/obj/structure/closet/radiation,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/tcommsat/computer) "GO" = (/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 12; id = "ferry_home"; name = "station"; turf_type = /turf/space; width = 5},/turf/simulated/floor/plating,/area/space) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/MiniStation/z2.dmm b/_maps/map_files/MiniStation/z2.dmm index d21ff7b45902058..7660fecb54ebd3b 100644 --- a/_maps/map_files/MiniStation/z2.dmm +++ b/_maps/map_files/MiniStation/z2.dmm @@ -294,7 +294,7 @@ "jc" = (/obj/structure/table,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) "jd" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 9},/area/syndicate_mothership) "je" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/syndicate_mothership) -"jf" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"jf" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/mushroompizza,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "jg" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 5; pixel_y = -2; step_x = 0},/obj/item/toy/cards/deck/syndicate{icon_state = "deck_syndicate_full"; pixel_x = -6; pixel_y = 6},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "jh" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{tag = "icon-podhatch (WEST)"; icon_state = "podhatch"; dir = 8},/area/syndicate_mothership) "ji" = (/turf/unsimulated/floor{icon_state = "red"; dir = 10},/area/tdome/tdomeobserve) @@ -453,7 +453,7 @@ "mV" = (/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/holding) "mW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) "mX" = (/obj/effect/landmark{name = "Holding Facility"},/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/holding) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM diff --git a/_maps/map_files/generic/z2.dmm b/_maps/map_files/generic/z2.dmm index d831d1ba2ae5caf..1721c241e6dc36d 100644 --- a/_maps/map_files/generic/z2.dmm +++ b/_maps/map_files/generic/z2.dmm @@ -537,7 +537,7 @@ "kv" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space) "kw" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 9},/area/syndicate_mothership) "kx" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/syndicate_mothership) -"ky" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"ky" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/mushroompizza,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "kz" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 5; pixel_y = -2; step_x = 0},/obj/item/toy/cards/deck/syndicate{icon_state = "deck_syndicate_full"; pixel_x = -6; pixel_y = 6},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "kA" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{tag = "icon-podhatch (WEST)"; icon_state = "podhatch"; dir = 8},/area/syndicate_mothership) "kI" = (/turf/unsimulated/wall/fakeglass{color = "#008000"; dir = 6; icon_state = "fakewindows2"},/area/wizard_station) @@ -810,7 +810,7 @@ "qb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) "qc" = (/obj/effect/landmark{name = "Holding Facility"},/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/holding) "qd" = (/obj/docking_port/stationary/transit{dheight = 0; dir = 2; dwidth = 11; height = 22; id = "whiteship_transit"; width = 35},/turf/space/transit/horizontal,/area/space) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababadaeaeaeaeaeafaeaeaeaeaeafaeaeaeaeaeafaeaeaeaeaeag aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahaiaiaiaiaiajakakakakakajalalalalalajamanananaoap diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 71a290ec08fdea8..9945a13fcadf24b 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -37,12 +37,12 @@ return t //Removes a few problematic characters -/proc/sanitize_simple(var/t,var/list/repl_chars = list("\n"="#","\t"="#","�"="�")) +/proc/sanitize_simple(var/t,var/list/repl_chars = list("\n"="#","\t"="#")) for(var/char in repl_chars) var/index = findtext(t, char) while(index) t = copytext(t, 1, index) + repl_chars[char] + copytext(t, index+1) - index = findtext(t, char) + index = findtext(t, char, index+1) return t //Runs byond's sanitization proc along-side sanitize_simple @@ -147,32 +147,63 @@ return t_out -//this proc strips html properly, but it's not lazy like the other procs. -//this means that it doesn't just remove < and > and call it a day. seriously, who the fuck thought that would be useful. +//this proc strips html properly, this means that it removes everything between < and >, and between "http" and "://" //also limit the size of the input, if specified to /proc/strip_html_properly(var/input,var/max_length=MAX_MESSAGE_LEN) if(!input) return - var/opentag = 1 //These store the position of < and > respectively. - var/closetag = 1 - while(1) - opentag = findtext(input, "<") - closetag = findtext(input, ">") - if(closetag && opentag) - if(closetag < opentag) - input = copytext(input, (closetag + 1)) - else - input = copytext(input, 1, opentag) + copytext(input, (closetag + 1)) - else if(closetag || opentag) - if(opentag) - input = copytext(input, 1, opentag) - else - input = copytext(input, (closetag + 1)) - else - break + if(max_length) input = copytext(input,1,max_length) - return input + + var/sanitized_output + var/next_html_tag = findtext(input, "<") + var/next_http = findtext(input, "http", 1, next_html_tag) + + //the opening and closing of the expression to skip, e.g '<' and '>' + var/opening = non_zero_min(next_html_tag, next_http) + var/closing + + sanitized_output = copytext(input, 1, opening) + + while(next_html_tag || next_http) + + //we treat < ... > + if(opening == next_html_tag) + closing = findtext(input, ">", opening + 1) + if(closing) + next_html_tag = findtext(input, "<", closing) + next_http = findtext(input, "http", closing, next_html_tag) + else //no matching ">" + next_html_tag = 0 + + //we treat "http(s)://" + else + closing = findtext(input, "://", opening + 1) + if(closing) + closing += 2 //skip these extra // + next_http = findtext(input, "http", closing) + next_html_tag = findtext(input, "<", closing, next_http) + else //no matching "://" + next_http = 0 + + //check if we've something to skip + if(closing) + opening = non_zero_min(next_html_tag, next_http) + sanitized_output += copytext(input, closing + 1, opening) + + sanitized_output += copytext(input, opening) //don't forget the remaining text + + return sanitized_output + +//strip_html_properly helper proc that returns the smallest non null of two numbers +//or 0 if they're both null (needed because of findtext returning 0 when a value is not present) +/proc/non_zero_min(var/a, var/b) + if(!a) + return b + if(!b) + return a + return (a < b ? a : b) /* * Text searches diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index d7a9b4c3afb538e..426acbdcaaaa66b 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1343,27 +1343,43 @@ var/global/list/common_tools = list( //Is this even used for anything besides balloons? Yes I took out the W:lit stuff because : really shouldnt be used. /proc/is_sharp(obj/item/W as obj) // For the record, WHAT THE HELL IS THIS METHOD OF DOING IT? - return ( \ - istype(W, /obj/item/weapon/screwdriver) || \ - istype(W, /obj/item/weapon/pen) || \ - istype(W, /obj/item/weapon/weldingtool) || \ - istype(W, /obj/item/weapon/lighter/zippo) || \ - istype(W, /obj/item/weapon/match) || \ - istype(W, /obj/item/clothing/mask/cigarette) || \ - istype(W, /obj/item/weapon/wirecutters) || \ - istype(W, /obj/item/weapon/circular_saw) || \ - istype(W, /obj/item/weapon/melee/energy/sword) || \ - istype(W, /obj/item/weapon/melee/energy/blade) || \ - istype(W, /obj/item/weapon/shovel) || \ - istype(W, /obj/item/weapon/kitchenknife) || \ - istype(W, /obj/item/weapon/scalpel) || \ - istype(W, /obj/item/weapon/kitchen/utensil/knife) || \ - istype(W, /obj/item/weapon/shard) || \ - istype(W, /obj/item/weapon/broken_bottle) || \ - istype(W, /obj/item/weapon/reagent_containers/syringe) || \ - istype(W, /obj/item/weapon/kitchen/utensil/fork) && W.icon_state != "forkloaded" || \ - istype(W, /obj/item/weapon/twohanded/fireaxe) \ - ) + if(istype(W, /obj/item/weapon/circular_saw)) + return 1 + if(istype(W, /obj/item/weapon/melee/energy)) + var/obj/item/weapon/melee/energy/E = W + if(E.active) + return 1 + else + return 0 + if(istype(W, /obj/item/weapon/shovel)) + return 1 + if(istype(W, /obj/item/weapon/kitchenknife)) + return 2 + if(istype(W, /obj/item/weapon/scalpel)) + return 2 + if(istype(W, /obj/item/weapon/kitchen/utensil/knife)) + return 2 + if(istype(W, /obj/item/weapon/shard)) + return 1 + if(istype(W, /obj/item/weapon/broken_bottle)) + return 1 + if(istype(W, /obj/item/weapon/twohanded/fireaxe)) + return 1 + if(istype(W, /obj/item/weapon/hatchet)) + return 1 + +/proc/is_pointed(obj/item/W as obj) + if(istype(W, /obj/item/weapon/pen)) + return 1 + if(istype(W, /obj/item/weapon/screwdriver)) + return 1 + if(istype(W, /obj/item/weapon/reagent_containers/syringe)) + return 1 + if(istype(W, /obj/item/weapon/kitchen/utensil/fork)) + return 1 + else + return 0 + /* Checks if that loc and dir has a item on the wall diff --git a/code/_globalvars/station.dm b/code/_globalvars/station.dm index fe6552163549021..e8512549c1c55a4 100644 --- a/code/_globalvars/station.dm +++ b/code/_globalvars/station.dm @@ -1,4 +1,4 @@ -var/global/obj/effect/datacore/data_core = null +var/global/datum/datacore/data_core = null //var/global/defer_powernet_rebuild = 0 // true if net rebuild will be called manually after an event //Noble idea, but doing this made GC fail. The gains from waiting on deffering are lost by using del() diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index e04adb83d04b6bc..4014d4eb0ebdb90 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -1,6 +1,5 @@ -/obj/effect/datacore - name = "datacore" +/datum/datacore var/medical[] = list() var/medicalPrintCount = 0 var/general[] = list() @@ -25,7 +24,7 @@ var/time = "" var/dataId = 0 -/obj/effect/datacore/proc/createCrimeEntry(cname = "", cdetails = "", author = "", time = "") +/datum/datacore/proc/createCrimeEntry(cname = "", cdetails = "", author = "", time = "") var/datum/data/crime/c = new /datum/data/crime c.crimeName = cname c.crimeDetails = cdetails @@ -34,14 +33,14 @@ c.dataId = ++securityCrimeCounter return c -/obj/effect/datacore/proc/addMinorCrime(id = "", var/datum/data/crime/crime) +/datum/datacore/proc/addMinorCrime(id = "", var/datum/data/crime/crime) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["mi_crim"] crimes |= crime return -/obj/effect/datacore/proc/removeMinorCrime(id, cDataId) +/datum/datacore/proc/removeMinorCrime(id, cDataId) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["mi_crim"] @@ -50,7 +49,7 @@ crimes -= crime return -/obj/effect/datacore/proc/removeMajorCrime(id, cDataId) +/datum/datacore/proc/removeMajorCrime(id, cDataId) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["ma_crim"] @@ -59,14 +58,14 @@ crimes -= crime return -/obj/effect/datacore/proc/addMajorCrime(id = "", var/datum/data/crime/crime) +/datum/datacore/proc/addMajorCrime(id = "", var/datum/data/crime/crime) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["ma_crim"] crimes |= crime return -/obj/effect/datacore/proc/manifest(var/nosleep = 0) +/datum/datacore/proc/manifest(var/nosleep = 0) spawn() if(!nosleep) sleep(40) @@ -74,12 +73,12 @@ manifest_inject(H) return -/obj/effect/datacore/proc/manifest_modify(var/name, var/assignment) +/datum/datacore/proc/manifest_modify(var/name, var/assignment) var/datum/data/record/foundrecord = find_record("name", name, data_core.general) if(foundrecord) foundrecord.fields["rank"] = assignment -/obj/effect/datacore/proc/get_manifest(monochrome, OOC) +/datum/datacore/proc/get_manifest(monochrome, OOC) var/list/heads = list() var/list/sec = list() var/list/eng = list() @@ -135,49 +134,49 @@ misc[name] = rank if(heads.len > 0) dat += "Heads" - for(name in heads) + for(var/name in heads) dat += "[name][heads[name]]" even = !even if(sec.len > 0) dat += "Security" - for(name in sec) + for(var/name in sec) dat += "[name][sec[name]]" even = !even if(eng.len > 0) dat += "Engineering" - for(name in eng) + for(var/name in eng) dat += "[name][eng[name]]" even = !even if(med.len > 0) dat += "Medical" - for(name in med) + for(var/name in med) dat += "[name][med[name]]" even = !even if(sci.len > 0) dat += "Science" - for(name in sci) + for(var/name in sci) dat += "[name][sci[name]]" even = !even if(sup.len > 0) dat += "Supply" - for(name in sup) + for(var/name in sup) dat += "[name][sup[name]]" even = !even if(civ.len > 0) dat += "Civilian" - for(name in civ) + for(var/name in civ) dat += "[name][civ[name]]" even = !even // in case somebody is insane and added them to the manifest, why not if(bot.len > 0) dat += "Silicon" - for(name in bot) + for(var/name in bot) dat += "[name][bot[name]]" even = !even // misc guys if(misc.len > 0) dat += "Miscellaneous" - for(name in misc) + for(var/name in misc) dat += "[name][misc[name]]" even = !even @@ -188,7 +187,7 @@ var/record_id_num = 1001 -/obj/effect/datacore/proc/manifest_inject(var/mob/living/carbon/human/H) +/datum/datacore/proc/manifest_inject(var/mob/living/carbon/human/H) if(H.mind && (H.mind.assigned_role != "MODE")) var/assignment if(H.mind.assigned_role) @@ -199,6 +198,11 @@ var/record_id_num = 1001 assignment = "Unassigned" var/id = num2hex(record_id_num++,6) + var/image = get_id_photo(H) + var/obj/item/weapon/photo/photo_front = new() + var/obj/item/weapon/photo/photo_side = new() + photo_front.photocreate(null, icon(image, dir = SOUTH)) + photo_side.photocreate(null, icon(image, dir = WEST)) //These records should ~really~ be merged or something //General Record @@ -207,10 +211,14 @@ var/record_id_num = 1001 G.fields["name"] = H.real_name G.fields["rank"] = assignment G.fields["age"] = H.age + if(config.mutant_races) + G.fields["species"] = H.dna.species.name G.fields["fingerprint"] = md5(H.dna.uni_identity) G.fields["p_stat"] = "Active" G.fields["m_stat"] = "Stable" G.fields["sex"] = H.gender + G.fields["photo_front"] = photo_front + G.fields["photo_side"] = photo_side general += G //Medical Record @@ -251,7 +259,166 @@ var/record_id_num = 1001 L.fields["b_dna"] = H.dna.unique_enzymes L.fields["enzymes"] = H.dna.struc_enzymes L.fields["identity"] = H.dna.uni_identity - L.fields["image"] = getFlatIcon(H) //This is god-awful + L.fields["image"] = image locked += L return +/datum/datacore/proc/get_id_photo(var/mob/living/carbon/human/H) + var/icon/photo = null + var/g = (H.gender == FEMALE) ? "f" : "m" + if(!config.mutant_races || H.dna.species.use_skintones) + photo = icon("icon" = 'icons/mob/human.dmi', "icon_state" = "[H.skin_tone]_[g]_s") + else + photo = icon("icon" = 'icons/mob/human.dmi', "icon_state" = "[H.dna.species.id]_[g]_s") + photo.Blend("#[H.dna.mutant_color]", ICON_MULTIPLY) + + var/icon/eyes_s + if(EYECOLOR in H.dna.species.specflags) + eyes_s = icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "[H.dna.species.eyes]_s") + eyes_s.Blend("#[H.eye_color]", ICON_MULTIPLY) + + var/datum/sprite_accessory/S + S = hair_styles_list[H.hair_style] + if(S && (HAIR in H.dna.species.specflags)) + var/icon/hair_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s") + hair_s.Blend("#[H.hair_color]", ICON_MULTIPLY) + eyes_s.Blend(hair_s, ICON_OVERLAY) + + S = facial_hair_styles_list[H.facial_hair_style] + if(S && (FACEHAIR in H.dna.species.specflags)) + var/icon/facial_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s") + facial_s.Blend("#[H.facial_hair_color]", ICON_MULTIPLY) + eyes_s.Blend(facial_s, ICON_OVERLAY) + + if(eyes_s) + photo.Blend(eyes_s, ICON_OVERLAY) + + var/icon/clothes_s = null + switch(H.mind.assigned_role) + if("Assistant") + clothes_s = icon('icons/mob/uniform.dmi', "grey_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Scientist") + clothes_s = icon('icons/mob/uniform.dmi', "toxinswhite_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_tox"), ICON_OVERLAY) + if("Station Engineer") + clothes_s = icon('icons/mob/uniform.dmi', "engine_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) + if("Security Officer") + clothes_s = icon('icons/mob/uniform.dmi', "security_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY) + if("Medical Doctor") + clothes_s = icon('icons/mob/uniform.dmi', "medical_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) + if("Cargo Technician") + clothes_s = icon('icons/mob/uniform.dmi', "cargo_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Shaft Miner") + clothes_s = icon('icons/mob/uniform.dmi', "miner_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Atmospheric Technician") + clothes_s = icon('icons/mob/uniform.dmi', "atmos_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) + if("Botanist") + clothes_s = icon('icons/mob/uniform.dmi', "hydroponics_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "ggloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "apron"), ICON_OVERLAY) + if("Chemist") + clothes_s = icon('icons/mob/uniform.dmi', "chemistrywhite_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_chem"), ICON_OVERLAY) + if("Cook") + clothes_s = icon('icons/mob/uniform.dmi', "chef_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "chef"), ICON_OVERLAY) + if("Janitor") + clothes_s = icon('icons/mob/uniform.dmi', "janitor_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Geneticist") + clothes_s = icon('icons/mob/uniform.dmi', "geneticswhite_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_gen"), ICON_OVERLAY) + if("Virologist") + clothes_s = icon('icons/mob/uniform.dmi', "virologywhite_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_vir"), ICON_OVERLAY) + if("Roboticist") + clothes_s = icon('icons/mob/uniform.dmi', "robotics_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) + if("Lawyer") + clothes_s = icon('icons/mob/uniform.dmi', "bluesuit_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "suitjacket_blue"), ICON_OVERLAY) + if("Clown") + clothes_s = icon('icons/mob/uniform.dmi', "clown_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "clown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/mask.dmi', "clown"), ICON_OVERLAY) + if("Mime") + clothes_s = icon('icons/mob/uniform.dmi', "mime_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "lgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/mask.dmi', "mime"), ICON_OVERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "suspenders"), ICON_OVERLAY) + if("Bartender") + clothes_s = icon('icons/mob/uniform.dmi', "ba_suit_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "armoralt"), ICON_OVERLAY) + if("Quartermaster") + clothes_s = icon('icons/mob/uniform.dmi', "qm_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + if("Chaplain") + clothes_s = icon('icons/mob/uniform.dmi', "chapblack_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Research Director") + clothes_s = icon('icons/mob/uniform.dmi', "director_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) + if("Chief Medical Officer") + clothes_s = icon('icons/mob/uniform.dmi', "cmo_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_cmo"), ICON_OVERLAY) + if("Captain") + clothes_s = icon('icons/mob/uniform.dmi', "captain_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "capcarapace"), ICON_OVERLAY) + if("Head of Security") + clothes_s = icon('icons/mob/uniform.dmi', "hos_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "hostrench"), ICON_OVERLAY) + if("Warden") + clothes_s = icon('icons/mob/uniform.dmi', "warden_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "warden_jacket"), ICON_OVERLAY) + if("Detective") + clothes_s = icon('icons/mob/uniform.dmi', "detective_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/mask.dmi', "cigaron"), ICON_OVERLAY) + clothes_s.Blend(icon('icons/mob/head.dmi', "detective"), ICON_OVERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "detective"), ICON_OVERLAY) + if("Chief Engineer") + clothes_s = icon('icons/mob/uniform.dmi', "chief_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) + if("Head of Personnel") + clothes_s = icon('icons/mob/uniform.dmi', "hop_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + if("Librarian") + clothes_s = icon('icons/mob/uniform.dmi', "red_suit_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + + if(clothes_s) + photo.Blend(clothes_s, ICON_OVERLAY) + + return photo diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 60f500503015865..28b088522404cab 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -396,7 +396,7 @@ var/list/advance_cures = list( if(D.symptoms.len > 0) - var/new_name = input(user, "Name your new disease.", "New Name") + var/new_name = stripped_input(user, "Name your new disease.", "New Name") if(!new_name) return D.AssignName(new_name) diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm new file mode 100644 index 000000000000000..bc63c1709607310 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/fire.dm @@ -0,0 +1,40 @@ +/* +////////////////////////////////////// + +Spontaneous Combustion + + Slightly hidden. + Lowers resistance tremendously. + Decreases stage tremendously. + Decreases transmittablity tremendously. + Fatal Level. + +Bonus + Ignites infected mob. + +////////////////////////////////////// +*/ + +/datum/symptom/fire + + name = "Spontaneous Combustion" + stealth = 1 + resistance = -4 + stage_speed = -4 + transmittable = -4 + level = 6 + severity = 5 + +/datum/symptom/fire/Activate(var/datum/disease/advance/A) + ..() + if(prob(SYMPTOM_ACTIVATION_PROB)) + var/mob/living/M = A.affected_mob + switch(A.stage) + if(4) + M.adjust_fire_stacks(5) + M.IgniteMob() + + if(5) + M.adjust_fire_stacks(10) + M.IgniteMob() + return \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 1280be88102e0ad..16e16c914a6a04b 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -58,7 +58,7 @@ Bonus /datum/symptom/heal/metabolism - name = "Anti-Bodies Metabolism " + name = "Anti-Bodies Metabolism" stealth = -1 resistance = -1 stage_speed = -1 diff --git a/code/datums/diseases/advance/symptoms/skin.dm b/code/datums/diseases/advance/symptoms/skin.dm new file mode 100644 index 000000000000000..d2bcf62735850ca --- /dev/null +++ b/code/datums/diseases/advance/symptoms/skin.dm @@ -0,0 +1,86 @@ +/* +////////////////////////////////////// +Vitiligo + + Extremely Noticable. + Decreases resistance slightly. + Reduces stage speed slightly. + Reduces transmission. + Critical Level. + +BONUS + Makes the mob lose skin pigmentation. + +////////////////////////////////////// +*/ + +/datum/symptom/vitiligo + + name = "Vitiligo" + stealth = -3 + resistance = -1 + stage_speed = -1 + transmittable = -2 + level = 4 + severity = 1 + +/datum/symptom/vitiligo/Activate(var/datum/disease/advance/A) + ..() + if(prob(SYMPTOM_ACTIVATION_PROB)) + var/mob/living/M = A.affected_mob + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(H.skin_tone == "albino") + return + switch(A.stage) + if(5) + H.skin_tone = "albino" + H.update_body(0) + else + H.visible_message("[H] looks a bit pale...", "You look a bit pale...") + + return + + +/* +////////////////////////////////////// +Revitiligo + + Extremely Noticable. + Decreases resistance slightly. + Reduces stage speed slightly. + Reduces transmission. + Critical Level. + +BONUS + Makes the mob gain skin pigmentation. + +////////////////////////////////////// +*/ + +/datum/symptom/revitiligo + + name = "Revitiligo" + stealth = -3 + resistance = -1 + stage_speed = -1 + transmittable = -2 + level = 4 + severity = 1 + +/datum/symptom/vitiligo/Activate(var/datum/disease/advance/A) + ..() + if(prob(SYMPTOM_ACTIVATION_PROB)) + var/mob/living/M = A.affected_mob + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(H.skin_tone == "african2") + return + switch(A.stage) + if(5) + H.skin_tone = "african2" + H.update_body(0) + else + H.visible_message("[H] looks a bit dark...", "You look a bit dark...") + + return \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/visionloss.dm b/code/datums/diseases/advance/symptoms/vision.dm similarity index 54% rename from code/datums/diseases/advance/symptoms/visionloss.dm rename to code/datums/diseases/advance/symptoms/vision.dm index c80b5a35d6c42fa..b63a4ee729faef8 100644 --- a/code/datums/diseases/advance/symptoms/visionloss.dm +++ b/code/datums/diseases/advance/symptoms/vision.dm @@ -1,49 +1,89 @@ -/* -////////////////////////////////////// - -Hyphema (Eye bleeding) - - Slightly noticable. - Lowers resistance tremendously. - Decreases stage speed tremendously. - Decreases transmittablity. - Critical Level. - -Bonus - Causes blindness. - -////////////////////////////////////// -*/ - -/datum/symptom/visionloss - - name = "Hyphema" - stealth = -1 - resistance = -4 - stage_speed = -4 - transmittable = -3 - level = 5 - severity = 4 - -/datum/symptom/visionloss/Activate(var/datum/disease/advance/A) - ..() - if(prob(SYMPTOM_ACTIVATION_PROB)) - var/mob/living/M = A.affected_mob - switch(A.stage) - if(1, 2) - M << "Your eyes itch." - if(3, 4) - M << "Your eyes ache." - M.eye_blurry = 10 - M.eye_stat += 1 - else - M << "Your eyes burn horrificly!" - M.eye_blurry = 20 - M.eye_stat += 5 - if (M.eye_stat >= 10) - M.disabilities |= NEARSIGHT - if (prob(M.eye_stat - 10 + 1) && !(M.eye_blind)) - M << "You go blind!" - M.disabilities |= BLIND - M.eye_blind = 1 - return \ No newline at end of file +/* +////////////////////////////////////// + +Hyphema (Eye bleeding) + + Slightly noticable. + Lowers resistance tremendously. + Decreases stage speed tremendously. + Decreases transmittablity. + Critical Level. + +Bonus + Causes blindness. + +////////////////////////////////////// +*/ + +/datum/symptom/visionloss + + name = "Hyphema" + stealth = -1 + resistance = -4 + stage_speed = -4 + transmittable = -3 + level = 5 + severity = 4 + +/datum/symptom/visionloss/Activate(var/datum/disease/advance/A) + ..() + if(prob(SYMPTOM_ACTIVATION_PROB)) + var/mob/living/M = A.affected_mob + switch(A.stage) + if(1, 2) + M << "Your eyes itch." + if(3, 4) + M << "Your eyes ache." + M.eye_blurry = 10 + M.eye_stat += 1 + else + M << "Your eyes burn horrificly!" + M.eye_blurry = 20 + M.eye_stat += 5 + if (M.eye_stat >= 10) + M.disabilities |= NEARSIGHT + if (prob(M.eye_stat - 10 + 1) && !(M.eye_blind)) + M << "You go blind!" + M.disabilities |= BLIND + M.eye_blind = 1 + return + + +/* +////////////////////////////////////// + +Ocular Restoration + + Noticable. + Lowers resistance significantly. + Decreases stage speed moderately.. + Decreases transmittablity tremendously. + High level. + +Bonus + Restores eyesight. + +////////////////////////////////////// +*/ + +/datum/symptom/visionaid + + name = "Ocular Restoration" + stealth = -1 + resistance = -3 + stage_speed = -2 + transmittable = -4 + level = 4 + +/datum/symptom/visionaid/Activate(var/datum/disease/advance/A) + ..() + if(prob(SYMPTOM_ACTIVATION_PROB * 5)) + var/mob/living/M = A.affected_mob + switch(A.stage) + if(4, 5) + if (M.reagents.get_reagent_amount("oculine") < 20) + M.reagents.add_reagent("oculine", 20) + else + if(prob(SYMPTOM_ACTIVATION_PROB * 5)) + M << "[pick("Your eyes feel great.", "You are now blinking manually.", "You don't feel the need to blink.")]" + return diff --git a/code/datums/diseases/advance/symptoms/vitiligo.dm b/code/datums/diseases/advance/symptoms/vitiligo.dm deleted file mode 100644 index e24be2c36b5f5cd..000000000000000 --- a/code/datums/diseases/advance/symptoms/vitiligo.dm +++ /dev/null @@ -1,42 +0,0 @@ -/* -////////////////////////////////////// -Vitiligo - - Extremely Noticable. - Decreases resistance slightly. - Reduces stage speed slightly. - Reduces transmission. - Critical Level. - -BONUS - Makes the mob lose skin pigmentation. - -////////////////////////////////////// -*/ - -/datum/symptom/vitiligo - - name = "Vitiligo" - stealth = -3 - resistance = -1 - stage_speed = -1 - transmittable = -2 - level = 5 - severity = 1 - -/datum/symptom/vitiligo/Activate(var/datum/disease/advance/A) - ..() - if(prob(SYMPTOM_ACTIVATION_PROB)) - var/mob/living/M = A.affected_mob - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(H.skin_tone == "albino") - return - switch(A.stage) - if(5) - H.skin_tone = "albino" - H.update_body(0) - else - H.visible_message("[H] looks a bit pale...", "You look a bit pale...") - - return \ No newline at end of file diff --git a/code/datums/goon_mutations_powers.dm b/code/datums/goon_mutations_powers.dm index 38069f484886122..e164eced75250a5 100644 --- a/code/datums/goon_mutations_powers.dm +++ b/code/datums/goon_mutations_powers.dm @@ -6,6 +6,7 @@ text_gain_indication = "You begin to fade into the shadows." text_lose_indication = "You become fully visible." + /datum/mutation/human/stealth/on_life(mob/living/carbon/human/owner) var/turf/simulated/T = get_turf(owner) if(!istype(T)) @@ -26,8 +27,11 @@ lowest_value = 256 * 14 text_gain_indication = "You feel one with your surroundings." text_lose_indication = "You feel oddly exposed." - + var/last_location /datum/mutation/human/chameleon/on_life(mob/living/carbon/human/owner) + if(owner.loc != last_location) + owner.alpha = round(255 * 0.80) + last_location = owner.loc if((world.time - owner.last_movement) >= 30 && !owner.stat && owner.canmove && !owner.restrained()) owner.alpha -= 25 else diff --git a/code/datums/spell.dm b/code/datums/spell.dm index c49252f1a1ec503..7137bbf9ad1b575 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -58,6 +58,8 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin if(user.z == ZLEVEL_CENTCOM && !centcom_cancast) //Certain spells are not allowed on the centcom zlevel return 0 + if(user.z == ZLEVEL_CENTCOM && ticker.mode.name == "ragin' mages") + return 0 if(!skipcharge) switch(charge_type) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 846e90a51bf680c..d00eb9d40308435 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -723,9 +723,9 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /datum/supply_packs/organic/food name = "Food Crate" - contains = list(/obj/item/weapon/reagent_containers/food/drinks/flour, - /obj/item/weapon/reagent_containers/food/drinks/milk, - /obj/item/weapon/reagent_containers/food/drinks/soymilk, + contains = list(/obj/item/weapon/reagent_containers/food/condiment/flour, + /obj/item/weapon/reagent_containers/food/condiment/milk, + /obj/item/weapon/reagent_containers/food/condiment/soymilk, /obj/item/weapon/storage/fancy/egg_box, /obj/item/weapon/reagent_containers/food/condiment/enzyme, /obj/item/weapon/reagent_containers/food/condiment/sugar, diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index a8613af17f54d7b..ae0b05441c64018 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -18,6 +18,7 @@ var/list/blob_nodes = list() restricted_jobs = list("Cyborg", "AI") var/declared = 0 + var/burst = 0 var/cores_to_spawn = 1 var/players_per_core = 30 @@ -52,6 +53,39 @@ var/list/blob_nodes = list() return 1 +/datum/game_mode/blob/proc/get_blob_candidates() + var/list/candidates = list() + for(var/mob/living/carbon/human/player in player_list) + if(!player.stat && player.mind && !player.mind.special_role && !jobban_isbanned(player, "Syndicate") && (player.client.prefs.be_special & BE_BLOB)) + candidates += player + return candidates + + +/datum/game_mode/blob/proc/blobize(var/mob/living/carbon/human/blob) + var/datum/mind/blobmind = blob.mind + if(!istype(blobmind)) + return 0 + infected_crew += blobmind + blobmind.special_role = "Blob" + log_game("[blob.key] (ckey) has been selected as a Blob") + greet_blob(blobmind) + blob << "You feel very tired and bloated! You don't have long before you burst!" + spawn(600) + burst_blob(blobmind) + return 1 + +/datum/game_mode/blob/proc/make_blobs(var/count) + var/list/candidates = get_blob_candidates() + var/mob/living/carbon/human/blob = null + count=min(count, candidates.len) + for(var/i = 0, i < count, i++) + blob = pick(candidates) + candidates -= blob + blobize(blob) + return count + + + /datum/game_mode/blob/announce() world << "The current game mode is - Blob!" world << "A dangerous alien organism is rapidly spreading throughout the station!" @@ -72,27 +106,39 @@ var/list/blob_nodes = list() /datum/game_mode/blob/proc/burst_blobs() for(var/datum/mind/blob in infected_crew) - - var/client/blob_client = null - var/turf/location = null - - if(iscarbon(blob.current)) - var/mob/living/carbon/C = blob.current - if(directory[ckey(blob.key)]) - blob_client = directory[ckey(blob.key)] - location = get_turf(C) - if(location.z != ZLEVEL_STATION || istype(location, /turf/space)) - location = null + burst_blob(blob) + +/datum/game_mode/blob/proc/burst_blob(var/datum/mind/blob, var/warned=0) + var/client/blob_client = null + var/turf/location = null + + if(iscarbon(blob.current)) + var/mob/living/carbon/C = blob.current + if(directory[ckey(blob.key)]) + blob_client = directory[ckey(blob.key)] + location = get_turf(C) + if(location.z != ZLEVEL_STATION || istype(location, /turf/space)) + if(!warned) + C << "You feel ready to burst, but this isn't an appropriate place! You must return to the station!" + message_admins("[key_name(C)] was in space when the blobs burst, and will die if he doesn't return to the station.") + spawn(300) + burst_blob(blob, 1) + else + burst ++ + log_admin("[key_name(C)] was in space when attempting to burst as a blob.") + message_admins("[key_name(C)] was in space when attempting to burst as a blob.") + C.gib() + make_blobs(1) + check_finished() //Still needed in case we can't make any blobs + + else if(blob_client && location) + burst ++ C.gib() - - - if(blob_client && location) - var/obj/effect/blob/core/core = new(location, 200, blob_client, blob_point_rate) - if(core.overmind && core.overmind.mind) - core.overmind.mind.name = blob.name - infected_crew -= blob - infected_crew += core.overmind.mind - + var/obj/effect/blob/core/core = new(location, 200, blob_client, blob_point_rate) + if(core.overmind && core.overmind.mind) + core.overmind.mind.name = blob.name + infected_crew -= blob + infected_crew += core.overmind.mind /datum/game_mode/blob/post_setup() diff --git a/code/game/gamemodes/blob/blob_finish.dm b/code/game/gamemodes/blob/blob_finish.dm index f83550796b7a7a5..56c1b4449c823ed 100644 --- a/code/game/gamemodes/blob/blob_finish.dm +++ b/code/game/gamemodes/blob/blob_finish.dm @@ -1,5 +1,5 @@ /datum/game_mode/blob/check_finished() - if(!declared)//No blobs have been spawned yet + if(infected_crew.len > burst)//Some blobs have yet to burst return 0 if(blobwincount <= blobs.len)//Blob took over return 1 diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index 5a378980f8f5f84..bfccd051890d842 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -12,6 +12,9 @@ var/obj/item/weapon/disk/nuclear/the_disk = null var/active = 0 +/obj/item/weapon/pinpointer/Destroy() + active = 0 + ..() /obj/item/weapon/pinpointer/attack_self() if(!active) @@ -239,7 +242,8 @@ if(16 to INFINITY) icon_state = "pinonfar" - spawn(5) .() + spawn(5) + .() /obj/item/weapon/pinpointer/operative name = "operative pinpointer" diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 34cc59457e975f5..084cefb272ccaa7 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -12,6 +12,7 @@ var/op = 1 var/activepage var/list/active_challenges = list() + var/mob/living/carbon/human/owner /obj/item/weapon/spellbook/attackby(obj/item/O as obj, mob/user as mob) if(istype(O, /obj/item/weapon/antag_spawner/contract)) @@ -28,6 +29,13 @@ /obj/item/weapon/spellbook/attack_self(mob/user as mob) + if(!owner) + user << "You bind the spellbook to yourself." + owner = user + return + if(user != owner) + user << "The [name] does not recognize you as it's owner and refuses to open." + return user.set_machine(src) var/dat if(temp) @@ -38,7 +46,7 @@ dat += "
" dat += "Learn and Improve Magical Abilities
" dat += "Summon Magical Tools and Weapons
" - if(ticker.mode != "ragin' mages") // we totally need summon guns x100 + if(ticker.mode.name != "ragin' mages") // we totally need summon guns x100 dat += "Raise The Stakes For More Power
" dat += "
" dat += "Re-memorize Spells
" @@ -100,7 +108,7 @@ dat += "Instant Summons (10)
" dat += "This spell can be used to bind a valuable item to you, bringing it to your hand at will. Using this spell while holding the bound item will allow you to unbind it. It does not require wizard garb.
" - if(ticker.mode != "ragin' mages") // we totally need summon guns x100 + if(ticker.mode.name != "ragin' mages") // we totally need summon greentext x100 dat += "Summon Events (One time use, persistent global spell)
" dat += "Give Murphy's law a little push and replace all events with special wizard ones that will confound and confuse everyone. Multiple castings increase the rate of these events.
" diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index ff3763796bb8246..1b6b18b7c899bed 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -156,9 +156,12 @@ wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(wizard_mob), slot_in_backpack) // wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/scrying_gem(wizard_mob), slot_l_store) For scrying gem. wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(wizard_mob), slot_r_store) - wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/spellbook(wizard_mob), slot_r_hand) + var/obj/item/weapon/spellbook/spellbook = new /obj/item/weapon/spellbook(wizard_mob) + spellbook.owner = wizard_mob + wizard_mob.equip_to_slot_or_del(spellbook, slot_r_hand) wizard_mob << "You will find a list of available spells in your spell book. Choose your magic arsenal carefully." + wizard_mob << "The spellbook is bound to you, and others cannot use it." wizard_mob << "In your pockets you will find a teleport scroll. Use it as needed." wizard_mob.mind.store_memory("Remember: do not forget to prepare your spells.") wizard_mob.update_icons() diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index 0136e52eb2839c1..8c8c69ce873ace9 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -70,7 +70,7 @@ Station Engineer /datum/job/engineer/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/orange(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/workboots(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat(H), slot_head) H.equip_to_slot_or_del(new /obj/item/device/t_scanner(H), slot_r_store) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index d673cf214a5c37e..45e0278b5df8ede 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -32,11 +32,11 @@ if(..()) return var/dat - if (src.temp) + if(src.temp) dat = text("[src.temp]

Clear Screen") else dat = text("Confirm Identity: []
", src, (src.scan ? text("[]", src.scan.name) : "----------")) - if (src.authenticated) + if(src.authenticated) switch(src.screen) if(1.0) dat += {" @@ -73,7 +73,7 @@ var/blood_type = "" var/b_dna = "" for(var/datum/data/record/E in data_core.medical) - if ((E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"])) + if((E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"])) blood_type = E.fields["blood_type"] b_dna = E.fields["b_dna"] var/background @@ -105,10 +105,20 @@ dat += "" if(active1 in data_core.general) - dat += "" + if(istype(active1.fields["photo_front"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P1 = active1.fields["photo_front"] + user << browse_rsc(P1.img, "photo_front") + if(istype(active1.fields["photo_side"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P2 = active1.fields["photo_side"] + user << browse_rsc(P2.img, "photo_side") + dat += "" + dat += "" + dat += "" dat += "" dat += "" dat += "" + if(config.mutant_races) + dat += "" dat += "" dat += "" dat += "" @@ -185,33 +195,34 @@ return /obj/machinery/computer/med_data/Topic(href, href_list) - if(..()) - return + . = ..() + if(.) + return . if(!(active1 in data_core.general)) src.active1 = null if(!(active2 in data_core.medical)) src.active2 = null - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) + if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) usr.set_machine(src) - if (href_list["temp"]) + if(href_list["temp"]) src.temp = null - if (href_list["scan"]) - if (src.scan) + if(href_list["scan"]) + if(src.scan) src.scan.loc = src.loc src.scan = null else var/obj/item/I = usr.get_active_hand() - if (istype(I, /obj/item/weapon/card/id)) + if(istype(I, /obj/item/weapon/card/id)) usr.drop_item() I.loc = src src.scan = I - else if (href_list["logout"]) + else if(href_list["logout"]) src.authenticated = null src.screen = null src.active1 = null src.active2 = null - else if (href_list["choice"]) + else if(href_list["choice"]) // SORTING! if(href_list["choice"] == "Sorting") // Reverse the order if clicked twice @@ -224,21 +235,21 @@ // New sorting order! sortBy = href_list["sort"] order = initial(order) - else if (href_list["login"]) - if (istype(usr, /mob/living/silicon)) + else if(href_list["login"]) + if(istype(usr, /mob/living/silicon)) src.active1 = null src.active2 = null src.authenticated = 1 src.rank = "AI" src.screen = 1 - else if (istype(src.scan, /obj/item/weapon/card/id)) + else if(istype(src.scan, /obj/item/weapon/card/id)) src.active1 = null src.active2 = null - if (src.check_access(src.scan)) + if(src.check_access(src.scan)) src.authenticated = src.scan.registered_name src.rank = src.scan.assignment src.screen = 1 - if (src.authenticated) + if(src.authenticated) if(href_list["screen"]) src.screen = text2num(href_list["screen"]) @@ -264,88 +275,94 @@

Severity: [Dis.severity]"} - else if (href_list["del_all"]) + else if(href_list["del_all"]) src.temp = text("Are you sure you wish to delete all records?
\n\tYes
\n\tNo
", src, src) - else if (href_list["del_all2"]) + else if(href_list["del_all2"]) investigate_log("[usr.name] ([usr.key]) has deleted all medical records.", "records") data_core.medical.Cut() src.temp = "All records deleted." - else if (href_list["field"]) + else if(href_list["field"]) var/a1 = src.active1 var/a2 = src.active2 switch(href_list["field"]) if("fingerprint") if(active1) - var/t1 = copytext(sanitize(input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) + var/t1 = stripped_input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) + if(!canUseMedicalRecordsConsole(usr, t1, a1)) return src.active1.fields["fingerprint"] = t1 if("sex") if(active1) - if (src.active1.fields["sex"] == "Male") + if(src.active1.fields["sex"] == "Male") src.active1.fields["sex"] = "Female" else src.active1.fields["sex"] = "Male" if("age") if(active1) var/t1 = input("Please input age:", "Med. records", src.active1.fields["age"], null) as num - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) + if(!canUseMedicalRecordsConsole(usr, t1, a1)) return src.active1.fields["age"] = t1 + if("species") + if(active1) + var/t1 = stripped_input("Please input species name", "Med. records", src.active1.fields["species"], null) + if(!canUseMedicalRecordsConsole(usr, t1, a1)) + return + active1.fields["species"] = t1 if("mi_dis") if(active2) - var/t1 = copytext(sanitize(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["mi_dis"] = t1 if("mi_dis_d") if(active2) - var/t1 = copytext(sanitize(input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_multiline_input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["mi_dis_d"] = t1 if("ma_dis") if(active2) - var/t1 = copytext(sanitize(input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["ma_dis"] = t1 if("ma_dis_d") if(active2) - var/t1 = copytext(sanitize(input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_multiline_input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["ma_dis_d"] = t1 if("alg") if(active2) - var/t1 = copytext(sanitize(input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["alg"] = t1 if("alg_d") if(active2) - var/t1 = copytext(sanitize(input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_multiline_input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["alg_d"] = t1 if("cdi") if(active2) - var/t1 = copytext(sanitize(input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["cdi"] = t1 if("cdi_d") if(active2) - var/t1 = copytext(sanitize(input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_multiline_input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["cdi_d"] = t1 if("notes") if(active2) - var/t1 = copytext(sanitize(input("Please summarize notes:", "Med. records", src.active2.fields["notes"], null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_multiline_input("Please summarize notes:", "Med. records", src.active2.fields["notes"], null) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["notes"] = t1 if("p_stat") @@ -359,13 +376,25 @@ src.temp = text("Blood Type:
\n\tA-A+
\n\tB-B+
\n\tAB-AB+
\n\tO-O+
", src, src, src, src, src, src, src, src) if("b_dna") if(active2) - var/t1 = copytext(sanitize(input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["b_dna"] = t1 + if("show_photo_front") + if(active1) + if(active1.fields["photo_front"]) + if(istype(active1.fields["photo_front"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P = active1.fields["photo_front"] + P.show(usr) + if("show_photo_side") + if(active1) + if(active1.fields["photo_side"]) + if(istype(active1.fields["photo_side"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P = active1.fields["photo_side"] + P.show(usr) else - else if (href_list["p_stat"]) + else if(href_list["p_stat"]) if(active1) switch(href_list["p_stat"]) if("deceased") @@ -377,7 +406,7 @@ if("unfit") src.active1.fields["p_stat"] = "Physically Unfit" - else if (href_list["m_stat"]) + else if(href_list["m_stat"]) if(active1) switch(href_list["m_stat"]) if("insane") @@ -390,7 +419,7 @@ src.active1.fields["m_stat"] = "Stable" - else if (href_list["blood_type"]) + else if(href_list["blood_type"]) if(active2) switch(href_list["blood_type"]) if("an") @@ -411,17 +440,17 @@ src.active2.fields["blood_type"] = "O+" - else if (href_list["del_r"]) + else if(href_list["del_r"]) if(active2) src.temp = text("Are you sure you wish to delete the record (Medical Portion Only)?
\n\tYes
\n\tNo
", src, src) - else if (href_list["del_r2"]) + else if(href_list["del_r2"]) investigate_log("[usr.name] ([usr.key]) has deleted the medical records for [active1.fields["name"]].", "records") if(active2) data_core.medical -= active2 active2 = null - else if (href_list["d_rec"]) + else if(href_list["d_rec"]) active1 = find_record("id", href_list["d_rec"], data_core.general) if(active1) active2 = find_record("id", href_list["d_rec"], data_core.medical) @@ -429,8 +458,8 @@ active1 = null screen = 4 - else if (href_list["new"]) - if ((istype(src.active1, /datum/data/record) && !( istype(src.active2, /datum/data/record) ))) + else if(href_list["new"]) + if((istype(src.active1, /datum/data/record) && !( istype(src.active2, /datum/data/record) ))) var/datum/data/record/R = new /datum/data/record( ) R.fields["name"] = src.active1.fields["name"] R.fields["id"] = src.active1.fields["id"] @@ -450,46 +479,46 @@ src.active2 = R src.screen = 4 - else if (href_list["add_c"]) + else if(href_list["add_c"]) if(!(active2 in data_core.medical)) return var/a2 = src.active2 - var/t1 = copytext(sanitize(input("Add Comment:", "Med. records", null, null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_multiline_input("Add Comment:", "Med. records", null, null) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return var/counter = 1 while(src.active2.fields[text("com_[]", counter)]) counter++ src.active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", src.authenticated, src.rank, worldtime2text(), time2text(world.realtime, "MMM DD"), year_integer+540, t1,) - else if (href_list["del_c"]) - if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])])) + else if(href_list["del_c"]) + if((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])])) src.active2.fields[text("com_[]", href_list["del_c"])] = "Deleted" - else if (href_list["search"]) + else if(href_list["search"]) var/t1 = stripped_input(usr, "Search String: (Name, DNA, or ID)", "Med. records") - if ((!( t1 ) || usr.stat || !( src.authenticated ) || usr.restrained() || ((!in_range(src, usr)) && (!istype(usr, /mob/living/silicon))))) + if(!canUseMedicalRecordsConsole(usr, t1)) return src.active1 = null src.active2 = null t1 = lowertext(t1) for(var/datum/data/record/R in data_core.medical) - if ((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]) || t1 == lowertext(R.fields["b_dna"]))) + if((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]) || t1 == lowertext(R.fields["b_dna"]))) src.active2 = R else //Foreach continue //goto(3229) - if (!( src.active2 )) + if(!( src.active2 )) src.temp = text("Could not locate record [].", t1) else for(var/datum/data/record/E in data_core.general) - if ((E.fields["name"] == src.active2.fields["name"] || E.fields["id"] == src.active2.fields["id"])) + if((E.fields["name"] == src.active2.fields["name"] || E.fields["id"] == src.active2.fields["id"])) src.active1 = E else //Foreach continue //goto(3334) src.screen = 4 - else if (href_list["print_p"]) - if (!( src.printing )) + else if(href_list["print_p"]) + if(!( src.printing )) src.printing = 1 data_core.medicalPrintCount++ playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1) @@ -497,7 +526,10 @@ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc ) P.info = "
Medical Record - (MR-[data_core.medicalPrintCount])

" if(active1 in data_core.general) - P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["name"], src.active1.fields["id"], src.active1.fields["sex"], src.active1.fields["age"], src.active1.fields["fingerprint"], src.active1.fields["p_stat"], src.active1.fields["m_stat"]) + P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
", src.active1.fields["name"], src.active1.fields["id"], src.active1.fields["sex"], src.active1.fields["age"]) + if(config.mutant_races) + P.info += "\nSpecies: [active1.fields["species"]]
" + P.info += text("\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["fingerprint"], src.active1.fields["p_stat"], src.active1.fields["m_stat"]) else P.info += "General Record Lost!
" if(active2 in data_core.medical) @@ -545,6 +577,15 @@ ..(severity) +/obj/machinery/computer/med_data/proc/canUseMedicalRecordsConsole(mob/user, message = 1, record1, record2) + if(user) + if(message) + if(authenticated) + if(user.canUseTopic(src)) + if(!record1 || record1 == active1) + if(!record2 || record2 == active2) + return 1 + return 0 /obj/machinery/computer/med_data/laptop name = "medical laptop" diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 6b4d124790fd295..480c87c596588d0 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -36,16 +36,16 @@ /obj/machinery/computer/secure_data/attack_hand(mob/user as mob) if(..()) return - if (src.z > 6) + if(src.z > 6) user << "Unable to establish a connection: \black You're too far away from the station!" return var/dat - if (temp) + if(temp) dat = text("[]

Clear Screen", temp, src) else dat = text("Confirm Identity: []
", src, (scan ? text("[]", scan.name) : "----------")) - if (authenticated) + if(authenticated) switch(screen) if(1.0) @@ -122,7 +122,7 @@ for(var/datum/data/record/R in sortRecord(data_core.general, sortBy, order)) var/crimstat = "" for(var/datum/data/record/E in data_core.security) - if ((E.fields["name"] == R.fields["name"]) && (E.fields["id"] == R.fields["id"])) + if((E.fields["name"] == R.fields["name"]) && (E.fields["id"] == R.fields["id"])) crimstat = E.fields["criminal"] var/background switch(crimstat) @@ -159,21 +159,34 @@ dat += "
Delete All Records

Back" if(3.0) dat += "Security Record
" - if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) - dat += {"
Medical Record
Name:[active1.fields["name"]]
Name:[active1.fields["name"]]
ID:[active1.fields["id"]]
Sex: [active1.fields["sex"]] 
Age: [active1.fields["age"]] 
Species: [active1.fields["species"]] 
Fingerprint: [active1.fields["fingerprint"]] 
Physical Status: [active1.fields["p_stat"]] 
Mental Status: [active1.fields["m_stat"]] 
+ if(istype(active1, /datum/data/record) && data_core.general.Find(active1)) + if(istype(active1.fields["photo_front"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P1 = active1.fields["photo_front"] + user << browse_rsc(P1.img, "photo_front") + if(istype(active1.fields["photo_side"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P2 = active1.fields["photo_side"] + user << browse_rsc(P2.img, "photo_side") + dat += {"
- - + "} + if(config.mutant_races) + dat += "" + dat += {" -
Name: [active1.fields["name"]] 
ID: [active1.fields["id"]] 
Sex: [active1.fields["sex"]] 
Age: [active1.fields["age"]] 
Rank: [active1.fields["rank"]] 
Age: [active1.fields["age"]] 
Species: [active1.fields["species"]] 
Rank: [active1.fields["rank"]] 
Fingerprint: [active1.fields["fingerprint"]] 
Physical Status: [active1.fields["p_stat"]] 
Mental Status: [active1.fields["m_stat"]] 
"} +
+ +

+ Update front photo

+ Update side photo
+ "} else - dat += "General Record Lost!
" - if ((istype(active2, /datum/data/record) && data_core.security.Find(active2))) - dat += "
Security Data" + dat += "
General Record Lost!
" + if((istype(active2, /datum/data/record) && data_core.security.Find(active2))) + dat += "Security Data" dat += "
Criminal Status: [active2.fields["criminal"]]" dat += "

Minor Crimes: Add New" @@ -244,13 +257,14 @@ I can't be bothered to look more of the actual code outside of switch but that probably needs revising too. What a mess.*/ /obj/machinery/computer/secure_data/Topic(href, href_list) - if(..()) - return - if (!( data_core.general.Find(active1) )) + . = ..() + if(.) + return . + if(!( data_core.general.Find(active1) )) active1 = null - if (!( data_core.security.Find(active2) )) + if(!( data_core.security.Find(active2) )) active2 = null - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon))) + if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon))) usr.set_machine(src) switch(href_list["choice"]) // SORTING! @@ -269,13 +283,13 @@ What a mess.*/ if("Clear Screen") temp = null - if ("Return") + if("Return") screen = 1 active1 = null active2 = null if("Confirm Identity") - if (scan) + if(scan) if(istype(usr,/mob/living/carbon/human) && !usr.get_active_hand()) usr.put_in_hands(scan) else @@ -283,7 +297,7 @@ What a mess.*/ scan = null else var/obj/item/I = usr.get_active_hand() - if (istype(I, /obj/item/weapon/card/id)) + if(istype(I, /obj/item/weapon/card/id)) usr.drop_item() I.loc = src scan = I @@ -295,14 +309,14 @@ What a mess.*/ active2 = null if("Log In") - if (istype(usr, /mob/living/silicon)) + if(istype(usr, /mob/living/silicon)) var/mob/living/silicon/borg = usr active1 = null active2 = null authenticated = borg.name rank = "AI" screen = 1 - else if (istype(scan, /obj/item/weapon/card/id)) + else if(istype(scan, /obj/item/weapon/card/id)) active1 = null active2 = null if(check_access(scan)) @@ -315,50 +329,53 @@ What a mess.*/ active1 = null active2 = null - if ("Browse Record") + if("Browse Record") var/datum/data/record/R = locate(href_list["d_rec"]) var/S = locate(href_list["d_rec"]) - if (!( data_core.general.Find(R) )) + if(!( data_core.general.Find(R) )) temp = "Record Not Found!" else for(var/datum/data/record/E in data_core.security) - if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) + if((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) S = E active1 = R active2 = S screen = 3 -/* if ("Search Fingerprints") +/* if("Search Fingerprints") var/t1 = input("Search String: (Fingerprint)", "Secure. records", null, null) as text - if ((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || (!in_range(src, usr)) && (!istype(usr, /mob/living/silicon)))) + if((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || (!in_range(src, usr)) && (!istype(usr, /mob/living/silicon)))) return active1 = null active2 = null t1 = lowertext(t1) for(var/datum/data/record/R in data_core.general) - if (lowertext(R.fields["fingerprint"]) == t1) + if(lowertext(R.fields["fingerprint"]) == t1) active1 = R - if (!( active1 )) + if(!( active1 )) temp = text("Could not locate record [].", t1) else for(var/datum/data/record/E in data_core.security) - if ((E.fields["name"] == active1.fields["name"] || E.fields["id"] == active1.fields["id"])) + if((E.fields["name"] == active1.fields["name"] || E.fields["id"] == active1.fields["id"])) active2 = E screen = 3 */ - if ("Print Record") - if (!( printing )) + if("Print Record") + if(!( printing )) printing = 1 data_core.securityPrintCount++ playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1) sleep(30) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc ) P.info = "
Security Record - (SR-[data_core.securityPrintCount])

" - if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) - P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", active1.fields["name"], active1.fields["id"], active1.fields["sex"], active1.fields["age"], active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"]) + if((istype(active1, /datum/data/record) && data_core.general.Find(active1))) + P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
", active1.fields["name"], active1.fields["id"], active1.fields["sex"], active1.fields["age"]) + if(config.mutant_races) + P.info += "\nSpecies: [active1.fields["species"]]
" + P.info += text("\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"]) else P.info += "General Record Lost!
" - if ((istype(active2, /datum/data/record) && data_core.security.Find(active2))) + if((istype(active2, /datum/data/record) && data_core.security.Find(active2))) P.info += text("
\n
Security Data

\nCriminal Status: []", active2.fields["criminal"]) P.info += "
\n
\nMinor Crimes:
\n" @@ -406,49 +423,49 @@ What a mess.*/ P.info += "" printing = null //RECORD DELETE - if ("Delete All Records") + if("Delete All Records") temp = "" temp += "Are you sure you wish to delete all Security records?
" temp += "Yes
" temp += "No" - if ("Purge All Records") + if("Purge All Records") investigate_log("[usr.name] ([usr.key]) has purged all the security records.", "records") for(var/datum/data/record/R in data_core.security) del(R) data_core.security.Cut() temp = "All Security records deleted." - if ("Add Entry") - if (!( istype(active2, /datum/data/record) )) + if("Add Entry") + if(!( istype(active2, /datum/data/record) )) return var/a2 = active2 - var/t1 = copytext(sanitize(input("Add Comment:", "Secure. records", null, null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + var/t1 = stripped_multiline_input("Add Comment:", "Secure. records", null, null) + if(!canUseSecurityRecordsConsole(t1, usr, null, a2)) return var/counter = 1 while(active2.fields[text("com_[]", counter)]) counter++ active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", src.authenticated, src.rank, worldtime2text(), time2text(world.realtime, "MMM DD"), year_integer+540, t1,) - if ("Delete Record (ALL)") - if (active1) + if("Delete Record (ALL)") + if(active1) temp = "
Are you sure you wish to delete the record (ALL)?
" temp += "Yes
" temp += "No" - if ("Delete Record (Security)") - if (active2) + if("Delete Record (Security)") + if(active2) temp = "
Are you sure you wish to delete the record (Security Portion Only)?
" temp += "Yes
" temp += "No" - if ("Delete Entry") - if ((istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])])) + if("Delete Entry") + if((istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])])) active2.fields[text("com_[]", href_list["del_c"])] = "Deleted" //RECORD CREATE - if ("New Record (Security)") - if ((istype(active1, /datum/data/record) && !( istype(active2, /datum/data/record) ))) + if("New Record (Security)") + if((istype(active1, /datum/data/record) && !( istype(active2, /datum/data/record) ))) var/datum/data/record/R = new /datum/data/record() R.fields["name"] = active1.fields["name"] R.fields["id"] = active1.fields["id"] @@ -461,7 +478,7 @@ What a mess.*/ active2 = R screen = 3 - if ("New Record (General)") + if("New Record (General)") //General Record var/datum/data/record/G = new /datum/data/record() G.fields["name"] = "New Record" @@ -469,6 +486,10 @@ What a mess.*/ G.fields["rank"] = "Unassigned" G.fields["sex"] = "Male" G.fields["age"] = "Unknown" + if(config.mutant_races) + G.fields["species"] = "Human" + G.fields["photo_front"] = new /icon() + G.fields["photo_side"] = new /icon() G.fields["fingerprint"] = "?????" G.fields["p_stat"] = "Active" G.fields["m_stat"] = "Stable" @@ -507,15 +528,15 @@ What a mess.*/ //FIELD FUNCTIONS - if ("Edit Field") + if("Edit Field") var/a1 = active1 var/a2 = active2 switch(href_list["field"]) if("name") - if (istype(active1, /datum/data/record) || istype(active2, /datum/data/record)) + if(istype(active1, /datum/data/record) || istype(active2, /datum/data/record)) var/t1 = stripped_input(usr, "Please input name:", "Secure. records", active1.fields["name"], null) - if ((!( t1 ) || !length(trim(t1)) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon)))) || active1 != a1) + if(!canUseSecurityRecordsConsole(usr, t1, null, a1)) return if(istype(active1, /datum/data/record)) active1.fields["name"] = t1 @@ -523,67 +544,93 @@ What a mess.*/ active2.fields["name"] = t1 if("id") if(istype(active2,/datum/data/record) || istype(active1,/datum/data/record)) - var/t1 = copytext(sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) + var/t1 = stripped_input(usr, "Please input id:", "Secure. records", active1.fields["id"], null) + if(!canUseSecurityRecordsConsole(usr, t1, null, a1)) return if(istype(active1,/datum/data/record)) active1.fields["id"] = t1 if(istype(active2,/datum/data/record)) active2.fields["id"] = t1 if("fingerprint") - if (istype(active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) + if(istype(active1, /datum/data/record)) + var/t1 = stripped_input(usr, "Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) + if(!canUseSecurityRecordsConsole(usr, t1, null, a1)) return active1.fields["fingerprint"] = t1 if("sex") - if (istype(active1, /datum/data/record)) - if (active1.fields["sex"] == "Male") + if(istype(active1, /datum/data/record)) + if(active1.fields["sex"] == "Male") active1.fields["sex"] = "Female" else active1.fields["sex"] = "Male" if("age") - if (istype(active1, /datum/data/record)) - var/t1 = input("Please input age:", "Secure. records", active1.fields["age"], null) as num - if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) + if(istype(active1, /datum/data/record)) + var/t1 = input("Please input age:", "Secure. records", active1.fields["age"], null) as num + if(!canUseSecurityRecordsConsole(usr, null, null, a1) || !t1) return active1.fields["age"] = t1 + if("species") + if(istype(active1, /datum/data/record)) + var/t1 = input("Select a species", "Species Selection") as null|anything in roundstart_species + if(!canUseSecurityRecordsConsole(usr, t1, null, a1)) + return + active1.fields["species"] = t1 + if("show_photo_front") + if(active1.fields["photo_front"]) + if(istype(active1.fields["photo_front"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P = active1.fields["photo_front"] + P.show(usr) + if("upd_photo_front") + var/icon/photo = get_photo(usr) + if(photo) + qdel(active1.fields["photo_front"]) + active1.fields["photo_front"] = photo + if("show_photo_side") + if(active1.fields["photo_side"]) + if(istype(active1.fields["photo_side"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P = active1.fields["photo_side"] + P.show(usr) + if("upd_photo_side") + var/icon/photo = get_photo(usr) + if(photo) + qdel(active1.fields["photo_side"]) + active1.fields["photo_side"] = photo if("mi_crim_add") - if (istype(active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input minor crime names:", "Secure. records", "", null) as text),1,MAX_MESSAGE_LEN) - var/t2 = copytext(sanitize(input("Please input minor crime details:", "Secure. records", "", null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( t2 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + if(istype(active1, /datum/data/record)) + var/t1 = stripped_input(usr, "Please input minor crime names:", "Secure. records", "", null) + var/t2 = stripped_multiline_input(usr, "Please input minor crime details:", "Secure. records", "", null) + if(!canUseSecurityRecordsConsole(usr, t1, t2, null, a2)) return var/crime = data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text()) data_core.addMinorCrime(active1.fields["id"], crime) if("mi_crim_delete") - if (istype(active1, /datum/data/record)) - if (href_list["cdataid"]) - if ((!( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + if(istype(active1, /datum/data/record)) + if(href_list["cdataid"]) + if(!canUseSecurityRecordsConsole(usr, null, null, a2)) return data_core.removeMinorCrime(active1.fields["id"], href_list["cdataid"]) if("ma_crim_add") - if (istype(active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input major crime names:", "Secure. records", "", null) as text),1,MAX_MESSAGE_LEN) - var/t2 = copytext(sanitize(input("Please input major crime details:", "Secure. records", "", null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( t2 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + if(istype(active1, /datum/data/record)) + var/t1 = stripped_input(usr, "Please input major crime names:", "Secure. records", "", null) + var/t2 = stripped_multiline_input(usr, "Please input major crime details:", "Secure. records", "", null) + if(!canUseSecurityRecordsConsole(usr, t1, t2, a2)) return var/crime = data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text()) data_core.addMajorCrime(active1.fields["id"], crime) if("ma_crim_delete") - if (istype(active1, /datum/data/record)) - if (href_list["cdataid"]) - if ((!( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + if(istype(active1, /datum/data/record)) + if(href_list["cdataid"]) + if(!canUseSecurityRecordsConsole(usr, null, null, a2)) return data_core.removeMajorCrime(active1.fields["id"], href_list["cdataid"]) if("notes") - if (istype(active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize notes:", "Secure. records", active2.fields["notes"], null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + if(istype(active2, /datum/data/record)) + var/t1 = stripped_input(usr, "Please summarize notes:", "Secure. records", active2.fields["notes"], null) + if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) return active2.fields["notes"] = t1 if("criminal") - if (istype(active2, /datum/data/record)) + if(istype(active2, /datum/data/record)) temp = "
Criminal Status:
" temp += "
    " temp += "
  • None
  • " @@ -595,7 +642,7 @@ What a mess.*/ if("rank") var/list/L = list( "Head of Personnel", "Captain", "AI" ) //This was so silly before the change. Now it actually works without beating your head against the keyboard. /N - if ((istype(active1, /datum/data/record) && L.Find(rank))) + if((istype(active1, /datum/data/record) && L.Find(rank))) temp = "
    Rank:
    " temp += "
      " for(var/rank in get_all_jobs()) @@ -607,14 +654,14 @@ What a mess.*/ else//To properly clear as per clear screen. temp=null switch(href_list["choice"]) - if ("Change Rank") - if (active1) + if("Change Rank") + if(active1) active1.fields["rank"] = href_list["rank"] if(href_list["rank"] in get_all_jobs()) active1.fields["real_rank"] = href_list["real_rank"] - if ("Change Criminal Status") - if (active2) + if("Change Criminal Status") + if(active2) var/old_field = active2.fields["criminal"] switch(href_list["criminal2"]) if("none") @@ -630,24 +677,24 @@ What a mess.*/ investigate_log("[active1.fields["name"]] has been set from [old_field] to [active2.fields["criminal"]] by [usr.name] ([usr.key]).", "records") for(var/mob/living/carbon/human/H in mob_list) //thanks for forcing me to do this, whoever wrote this shitty records system H.sec_hud_set_security_status() - if ("Delete Record (Security) Execute") + if("Delete Record (Security) Execute") investigate_log("[usr.name] ([usr.key]) has deleted the security records for [active1.fields["name"]].", "records") - if (active2) + if(active2) data_core.security -= active2 del(active2) - if ("Delete Record (ALL) Execute") - if (active1) + if("Delete Record (ALL) Execute") + if(active1) investigate_log("[usr.name] ([usr.key]) has deleted all records for [active1.fields["name"]].", "records") for(var/datum/data/record/R in data_core.medical) - if ((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) + if((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) data_core.medical -= R del(R) break data_core.general -= active1 del(active1) - if (active2) + if(active2) data_core.security -= active2 del(active2) else @@ -657,6 +704,18 @@ What a mess.*/ updateUsrDialog() return +/obj/machinery/computer/secure_data/proc/get_photo(var/mob/user) + var/obj/item/weapon/photo/P = null + if(istype(user, /mob/living/silicon)) + var/mob/living/silicon/tempAI = user + var/datum/picture/selection = tempAI.GetPhoto() + if(selection) + P = new() + P.photocreate(selection.fields["icon"], selection.fields["img"], selection.fields["desc"]) + else if(istype(user.get_active_hand(), /obj/item/weapon/photo)) + P = user.get_active_hand() + return P + /obj/machinery/computer/secure_data/emp_act(severity) if(stat & (BROKEN|NOPOWER)) ..(severity) @@ -664,11 +723,11 @@ What a mess.*/ for(var/datum/data/record/R in data_core.security) if(prob(10/severity)) - switch(rand(1,6)) + switch(rand(1,8)) if(1) R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]" if(2) - R.fields["sex"] = pick("Male", "Female") + R.fields["sex"] = pick("Male", "Female") if(3) R.fields["age"] = rand(5, 85) if(4) @@ -677,6 +736,12 @@ What a mess.*/ R.fields["p_stat"] = pick("*Unconcious*", "Active", "Physically Unfit") if(6) R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable") + if(7) + R.fields["species"] = pick(roundstart_species) + if(8) + var/datum/data/record/G = pick(data_core.general) + R.fields["photo_front"] = G.fields["photo_front"] + R.fields["photo_side"] = G.fields["photo_side"] continue else if(prob(1)) @@ -685,6 +750,17 @@ What a mess.*/ ..(severity) +/obj/machinery/computer/secure_data/proc/canUseSecurityRecordsConsole(mob/user, message1 = 1, message2 = 1, record1, record2) + if(user) + if(trim(message1)) + if(trim(message2)) + if(authenticated) + if(user.canUseTopic(src)) + if(!record1 || record1 == active1) + if(!record2 || record2 == active2) + return 1 + return 0 + /obj/machinery/computer/secure_data/detective_computer icon = 'icons/obj/computer.dmi' icon_state = "messyfiles" diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index d90968524f07ed8..b0f83365b214d9f 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -84,12 +84,26 @@ open_machine() /obj/machinery/atmospherics/unary/cryo_cell/container_resist() - if(stat & DEAD) - return - sleep(usr.stat * 1200) open_machine() return +/obj/machinery/atmospherics/unary/cryo_cell/verb/move_eject() + set name = "Eject Cryo Cell" + set desc = "Begin the release sequence inside the cryo tube." + set category = "Object" + set src in oview(1) + if(usr == occupant || contents.Find(usr)) //If the user is inside the tube... + if(usr.stat == DEAD) //and he's not dead.... + return + usr << "Release sequence activated. This will take about a minute." + sleep(600) + if(!src || !usr || (!occupant && !contents.Find(usr))) //Check if someone's released/replaced/bombed him already + return + open_machine() + add_fingerprint(usr) + else + open_machine() + /obj/machinery/atmospherics/unary/cryo_cell/examine(mob/user) ..() diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index eb030504a43284c..deca054d322f2ee 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -151,14 +151,14 @@ if(istype(W, /obj/item/weapon/reagent_containers/food/snacks)) if(!compartment_access_check(user)) return - if(nosugar_check(W)) + if(junk_check(W)) if(!iscompartmentfull(user)) user.drop_item() W.loc = src food_load(W) user << "You insert [W] into [src]'s chef compartment." else - user << "[src]'s chef compartment does not accept sugary food." + user << "[src]'s chef compartment does not accept junk food." return if(istype(W, /obj/item/weapon/storage/bag/tray)) @@ -170,7 +170,7 @@ for(var/obj/item/weapon/reagent_containers/food/snacks/S in T.contents) if(iscompartmentfull(user)) break - if(nosugar_check(S)) + if(junk_check(S)) T.remove_from_storage(S, src) food_load(S) loaded++ @@ -194,8 +194,8 @@ req_access_txt = "0" return 1 -/obj/machinery/vending/snack/proc/nosugar_check(obj/item/weapon/W) - if(W.reagents.has_reagent("sugar")) +/obj/machinery/vending/snack/proc/junk_check(obj/item/weapon/reagent_containers/food/snacks/S) + if(S.junkiness) return 0 return 1 @@ -889,7 +889,7 @@ desc = "A kitchen and restaurant equipment vendor" product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..." icon_state = "dinnerware" - products = list(/obj/item/weapon/storage/bag/tray = 8,/obj/item/weapon/kitchen/utensil/fork = 6,/obj/item/weapon/kitchenknife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/apron/chef = 2,/obj/item/weapon/reagent_containers/food/condiment/pack/ketchup = 5,/obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce = 5) + products = list(/obj/item/weapon/storage/bag/tray = 8,/obj/item/weapon/kitchen/utensil/fork = 6,/obj/item/weapon/kitchenknife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/apron/chef = 2,/obj/item/weapon/reagent_containers/food/condiment/pack/ketchup = 5,/obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce = 5,/obj/item/weapon/reagent_containers/glass/bowl = 10) contraband = list(/obj/item/weapon/kitchen/rollingpin = 2, /obj/item/weapon/kitchenknife/butcher = 2) /obj/machinery/vending/sovietsoda diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index f3ad7db4378f8b8..379ce34d2cd73c2 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -8,7 +8,6 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \ desc = "Some rods. Can be used for building, or something." singular_name = "metal rod" icon_state = "rods" - item_state = "rods" flags = CONDUCT w_class = 3.0 force = 9.0 @@ -32,7 +31,6 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \ icon_state = "rods" /obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob) - ..() if (istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W @@ -53,6 +51,17 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \ if (!R && replace) user.put_in_hands(new_item) return + + if(istype(W,/obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/S = W + if(amount != 1) + user << "You must use a single rod." + else if(S.w_class > 2) + user << "The ingredient is too big for [src]." + else + var/obj/item/weapon/reagent_containers/food/snacks/customizable/A = new/obj/item/weapon/reagent_containers/food/snacks/customizable/kebab(get_turf(src)) + A.initialize_custom_food(src, S, user) + return ..() /obj/item/stack/rods/cyborg/ diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index 12911c16baa7dfd..da2e082ca486749 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -40,10 +40,6 @@ name = "plate" icon_state = "plate" -/obj/item/trash/snack_bowl - name = "snack bowl" - icon_state = "snack_bowl" - /obj/item/trash/pistachios name = "pistachios pack" icon_state = "pistachios_pack" diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 2098d686ea9216c..ac865a96dc51d51 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -203,8 +203,11 @@ qdel(src) //correctly before deleting the grenade. /obj/item/weapon/grenade/chem_grenade/proc/mix_reagents() + var/total_temp for(var/obj/item/weapon/reagent_containers/glass/G in beakers) G.reagents.trans_to(src, G.reagents.total_volume) + total_temp += G.reagents.chem_temp + reagents.chem_temp = total_temp /obj/item/weapon/grenade/chem_grenade/proc/can_flood_from(myloc, maxrange) var/list/reachable = list(myloc) diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index d39fbf35fc79ef2..75d7957007e38ef 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -677,33 +677,56 @@

      Food for Dummies

      Here is a guide on basic food recipes and also how to not poison your customers accidentally. -

      Burger:

      - Put 1 meat and 1 flour into the microwave and turn it on. Then wait. - -

      Bread:

      - Put 3 flour into the microwave and then wait. - -

      Waffles:

      - Add 2 flour and 2 egg to the microwave and then wait. - -

      Popcorn:

      - Add 1 corn to the microwave and wait. - -

      Meat Steak:

      - Put 1 meat, 1 unit of salt and 1 unit of pepper into the microwave and wait. - -

      Meat Pie:

      - Put 1 meat and 2 flour into the microwave and wait. - -

      Boiled Spagetti:

      - Put 1 spagetti and 5 units of water into the microwave and wait. - -

      Donuts:

      - Add 1 egg and 1 flour to the microwave and wait. - -

      Fries:

      - Add one potato to the processor and wait. +

      Basic ingredients preparation:

      + + Dough: Add an egg to 15 flour. Dough can be transformed by using your knife and rolling pin or by adding milk. All doughs can be microwaved.
      + Bowl: Add water to it for soup preparation.
      + Meat: Microwave it, process it, slice it into microwavable cutlets with your knife, or use it raw.
      + Cheese: Add 5u universal enzyme (catalyst) to milk and soy milk to prepare cheese (sliceable) and tofu. + +

      Custom food:

      + Add ingredients to a base item to prepare a custom meal.
      + The bases are:
      + - bun (burger)
      + - breadslices(sandwich)
      + - plain bread
      + - plain pie
      + - vanilla cake
      + - empty bowl (salad)
      + - bowl with 10u water (soup)
      + - boiled spaghetti
      + - pizza bread
      + - metal rod (kebab) + +

      Table Craft:

      + Put ingredients on table, then click and drag the table onto yourself to prepare recipes. + +

      Microwave:

      + Use it to cook or boil food ingredients (meats, doughs, egg, spaghetti, donkpocket, etc...). + It can cook multiple items at once. Use the higher power settings for faster (and riskier) cooking. + +

      Processor:

      + Use it to process certain ingredients (meat into faggot, doughslice into spaghetti, potato into fries,etc...) + +

      Gibber:

      + Stuff an animal in it to grind it into meat. + +

      Meat spike:

      + Stick an animal on it then begin collecting its meat. + + +

      Example recipes:

      + Vanilla Cake: Microwave cake batter.
      + Burger: 1 bun + 1 meat
      + Bread: Microwave dough.
      + Waffles: 2 doughslices
      + Popcorn: Microwave corn.
      + Meat Steak: Microwave meat.
      + Meat Pie: 1 plain pie + 1u black pepper + 1u salt + 1 meat
      + Boiled Spagetti: Microwave spaghetti.
      + Donuts: 1u sugar + 1 doughslice
      + Fries: Process potato. diff --git a/code/game/objects/structures/crates_lockers/closets/fitness.dm b/code/game/objects/structures/crates_lockers/closets/fitness.dm index c701cc054a56437..c22b32d12b29eca 100644 --- a/code/game/objects/structures/crates_lockers/closets/fitness.dm +++ b/code/game/objects/structures/crates_lockers/closets/fitness.dm @@ -6,6 +6,7 @@ /obj/structure/closet/athletic_mixed/New() ..() + new /obj/item/clothing/under/shorts/purple(src) new /obj/item/clothing/under/shorts/grey(src) new /obj/item/clothing/under/shorts/black(src) new /obj/item/clothing/under/shorts/red(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 2225b1d78a65150..8484f67c54913a7 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -105,7 +105,7 @@ new /obj/item/weapon/storage/backpack/satchel_eng(src) new /obj/item/weapon/storage/backpack/dufflebag/engineering(src) new /obj/item/clothing/under/rank/engineer(src) - new /obj/item/clothing/shoes/sneakers/orange(src) + new /obj/item/clothing/shoes/workboots(src) new /obj/item/weapon/storage/toolbox/mechanical(src) // new /obj/item/weapon/cartridge/engineering(src) new /obj/item/device/radio/headset/headset_eng(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index 6935ef90038e124..74ab96993925f8c 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -19,7 +19,7 @@ /obj/structure/closet/secure_closet/freezer/kitchen/New() ..() for(var/i = 0, i < 3, i++) - new /obj/item/weapon/reagent_containers/food/drinks/flour(src) + new /obj/item/weapon/reagent_containers/food/condiment/flour(src) new /obj/item/weapon/reagent_containers/food/condiment/sugar(src) return @@ -60,9 +60,9 @@ /obj/structure/closet/secure_closet/freezer/fridge/New() ..() for(var/i = 0, i < 5, i++) - new /obj/item/weapon/reagent_containers/food/drinks/milk(src) + new /obj/item/weapon/reagent_containers/food/condiment/milk(src) for(var/i = 0, i < 5, i++) - new /obj/item/weapon/reagent_containers/food/drinks/soymilk(src) + new /obj/item/weapon/reagent_containers/food/condiment/soymilk(src) for(var/i = 0, i < 2, i++) new /obj/item/weapon/storage/fancy/egg_box(src) return diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index a6e76d0c5c19c9a..85b3cd3af7088d0 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -101,6 +101,14 @@ heat_protection = FEET|LEGS max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT +/obj/item/clothing/shoes/workboots + name = "work boots" + desc = "Nanotrasen-issue Engineering lace-up work boots for the especially blue-collar." + icon_state = "workboots" + item_state = "jackboots" + strip_delay = 40 + put_on_delay = 40 + /obj/item/clothing/shoes/cult name = "cultist boots" desc = "A pair of boots worn by the followers of Nar-Sie." diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm index 43f8e49c5f4b9e6..1fb22fcd9a8ccc4 100644 --- a/code/modules/clothing/under/shorts.dm +++ b/code/modules/clothing/under/shorts.dm @@ -24,4 +24,8 @@ /obj/item/clothing/under/shorts/grey icon_state = "greyshorts" - item_color = "greyshorts" \ No newline at end of file + item_color = "greyshorts" + +/obj/item/clothing/under/shorts/purple + icon_state = "purpleshorts" + item_color = "purpleshorts" \ No newline at end of file diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 967cb2dfab16fdb..dfc441d15e2e57c 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -3,7 +3,7 @@ var/reqs[] = list() //type paths of items consumed associated with how many are needed var/result //type path of item resulting from this craft var/tools[] = list() //type paths of items needed but not consumed - var/time = 0 //time in deciseconds + var/time = 30 //time in deciseconds var/parts[] = list() //type paths of items that will be placed in the result var/chem_catalists[] = list() //like tools but for reagents diff --git a/code/modules/crafting/table.dm b/code/modules/crafting/table.dm index 390765aa60c58c2..ce689f657e4fd0e 100644 --- a/code/modules/crafting/table.dm +++ b/code/modules/crafting/table.dm @@ -7,7 +7,7 @@ interact(usr) /obj/structure/table/proc/check_contents(datum/table_recipe/R) - check_table() + check_table(R) main_loop: for(var/A in R.reqs) for(var/B in table_contents) @@ -20,18 +20,18 @@ return 0 return 1 -/obj/structure/table/proc/check_table() +/obj/structure/table/proc/check_table(datum/table_recipe/R) table_contents = list() for(var/obj/item/I in loc) if(istype(I, /obj/item/stack)) var/obj/item/stack/S = I table_contents[I.type] += S.amount else - if(istype(I, /obj/item/weapon/reagent_containers)) - for(var/datum/reagent/R in I.reagents.reagent_list) - table_contents[R.type] += R.volume - table_contents[I.type] += 1 + for(var/obj/item/weapon/reagent_containers/RC in loc) + if((RC.flags & OPENCONTAINER) || (R && (RC.type in R.reqs))) + for(var/datum/reagent/A in RC.reagents.reagent_list) + table_contents[A.type] += A.volume /obj/structure/table/proc/check_tools(mob/user, datum/table_recipe/R) if(!R.tools.len) @@ -56,7 +56,7 @@ return !i /obj/structure/table/proc/construct_item(mob/user, datum/table_recipe/R) - check_table() + check_table(R) if(check_contents(R) && check_tools(user, R)) if(do_after(user, R.time)) if(!check_contents(R) || !check_tools(user, R)) @@ -121,11 +121,13 @@ amt -= RC.reagents.get_reagent_amount(RG.id) RC.reagents.del_reagent(RG.id) - for(var/A in R.parts) + deletion_loop: for(var/B in Deletion) - if(!istype(B, A)) - Deletion.Remove(B) - qdel(B) + for(var/A in R.parts) + if(istype(B, A)) + continue deletion_loop + Deletion.Remove(B) + qdel(B) return Deletion @@ -136,10 +138,10 @@ if(!table_contents.len) return user.face_atom(src) - var/dat = "

      Construction menu

      " + var/dat = "

      Crafting menu

      " dat += "
      " if(busy) - dat += "Construction in progress...
      " + dat += "Crafting in progress..." else for(var/datum/table_recipe/R in table_recipes) if(check_contents(R)) diff --git a/code/modules/food&drinks/drinks/drinks.dm b/code/modules/food&drinks/drinks/drinks.dm index a891c8254931ec0..048cb07287c2f6a 100644 --- a/code/modules/food&drinks/drinks/drinks.dm +++ b/code/modules/food&drinks/drinks/drinks.dm @@ -120,28 +120,6 @@ // rather then having to add it to something else first. They should only contain liquids. They have a default container size of 50. // Formatting is the same as food. -/obj/item/weapon/reagent_containers/food/drinks/milk - name = "Space Milk" - desc = "It's milk. White and nutritious goodness!" - icon_state = "milk" - item_state = "carton" - list_reagents = list("milk" = 50) - -/obj/item/weapon/reagent_containers/food/drinks/flour - name = "flour sack" - desc = "A big bag of flour. Good for baking!" - icon = 'icons/obj/food.dmi' - icon_state = "flour" - item_state = "flour" - list_reagents = list("flour" = 30) - -/obj/item/weapon/reagent_containers/food/drinks/soymilk - name = "SoyMilk" - desc = "It's soy milk. White and nutritious goodness!" - icon_state = "soymilk" - item_state = "carton" - list_reagents = list("soymilk" = 50) - /obj/item/weapon/reagent_containers/food/drinks/coffee name = "Robust Coffee" desc = "Careful, the beverage you're about to enjoy is extremely hot." diff --git a/code/modules/food&drinks/food/condiment.dm b/code/modules/food&drinks/food/condiment.dm index d0050a53b13f37d..774ab4fa801af4e 100644 --- a/code/modules/food&drinks/food/condiment.dm +++ b/code/modules/food&drinks/food/condiment.dm @@ -25,8 +25,6 @@ "cornoil" = list("oliveoil", "corn oil bottle", "A delicious oil used in cooking. Made from corn"), "sugar" = list("emptycondiment", "sugar bottle", "Tasty spacey sugar!")) -/obj/item/weapon/reagent_containers/food/condiment/attackby(obj/item/weapon/W as obj, mob/user as mob) - return /obj/item/weapon/reagent_containers/food/condiment/attack_self(mob/user as mob) return @@ -69,9 +67,6 @@ return 1 return 0 -/obj/item/weapon/reagent_containers/food/condiment/attackby(obj/item/I as obj, mob/user as mob) - return - /obj/item/weapon/reagent_containers/food/condiment/afterattack(obj/target, mob/user , proximity) if(!proximity) return if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. @@ -99,7 +94,7 @@ user << "You transfer [trans] units of the condiment to [target]." /obj/item/weapon/reagent_containers/food/condiment/on_reagent_change() - if(icon_state == "saltshakersmall" || icon_state == "peppermillsmall") + if(!possible_states.len) return if(reagents.reagent_list.len > 0) var/main_reagent = reagents.get_master_reagent_id() @@ -130,6 +125,8 @@ list_reagents = list("enzyme" = 50) /obj/item/weapon/reagent_containers/food/condiment/sugar + name = "sugar bottle" + desc = "Tasty spacey sugar!" list_reagents = list("sugar" = 50) /obj/item/weapon/reagent_containers/food/condiment/saltshaker //Seperate from above since it's a small shaker rather then @@ -140,6 +137,7 @@ amount_per_transfer_from_this = 1 volume = 20 list_reagents = list("sodiumchloride" = 20) + possible_states = list() /obj/item/weapon/reagent_containers/food/condiment/peppermill name = "pepper mill" @@ -149,8 +147,38 @@ amount_per_transfer_from_this = 1 volume = 20 list_reagents = list("blackpepper" = 20) + possible_states = list() + +/obj/item/weapon/reagent_containers/food/condiment/milk + name = "space milk" + desc = "It's milk. White and nutritious goodness!" + icon_state = "milk" + item_state = "carton" + list_reagents = list("milk" = 50) + possible_states = list() + +/obj/item/weapon/reagent_containers/food/condiment/flour + name = "flour sack" + desc = "A big bag of flour. Good for baking!" + icon = 'icons/obj/food.dmi' + icon_state = "flour" + item_state = "flour" + list_reagents = list("flour" = 30) + possible_states = list() + +/obj/item/weapon/reagent_containers/food/condiment/soymilk + name = "soy milk" + desc = "It's soy milk. White and nutritious goodness!" + icon_state = "soymilk" + item_state = "carton" + list_reagents = list("soymilk" = 50) + possible_states = list() + + + //Food packs. To easily apply deadly toxi... delicious sauces to your food! + /obj/item/weapon/reagent_containers/food/condiment/pack name = "condiment pack" desc = "A small plastic pack with condiments to put on your food" diff --git a/code/modules/food&drinks/food/customizables.dm b/code/modules/food&drinks/food/customizables.dm new file mode 100644 index 000000000000000..b72751fdd1f84a2 --- /dev/null +++ b/code/modules/food&drinks/food/customizables.dm @@ -0,0 +1,296 @@ + +#define INGREDIENTS_FILL 1 +#define INGREDIENTS_SCATTER 2 +#define INGREDIENTS_STACK 3 +#define INGREDIENTS_STACKPLUSTOP 4 +#define INGREDIENTS_LINE 5 + +//************************************************************** +// +// Customizable Food +// +//************************************************************** + + +/obj/item/weapon/reagent_containers/food/snacks/customizable + bitesize = 4 + w_class = 3 + + var/ingMax = 12 + var/list/ingredients = list() + var/Ingredientsplacement = INGREDIENTS_FILL + var/customname = "custom" + +/obj/item/weapon/reagent_containers/food/snacks/customizable/examine(mob/user) + ..() + var/ingredients_listed = "" + for(var/obj/item/weapon/reagent_containers/food/snacks/ING in ingredients) + ingredients_listed += "[ING.name], " + var/size = "standard" + if(ingredients.len<2) + size = "small" + if(ingredients.len>5) + size = "big" + if(ingredients.len>8) + size = "monster" + user << "It contains [ingredients.len?"[ingredients_listed]":"no ingredient, "]making a [size]-sized [initial(name)]." + +/obj/item/weapon/reagent_containers/food/snacks/customizable/attackby(obj/item/I, mob/user) + if(istype(I,/obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/S = I + if(I.w_class > 2) + user << "The ingredient is too big for [src]." + else if((ingredients.len >= ingMax) || (reagents.total_volume >= volume)) + user << "You can't add more ingredients to [src]." + else + user.drop_item() + if(S.trash) + new S.trash(get_turf(user)) + S.trash = null //we remove the plate before adding the ingredient + ingredients += S + S.loc = src + filling_color = S.filling_color + S.reagents.trans_to(src,min(S.reagents.total_volume, 15)) //limit of 15, we don't want our custom food to be completely filled by just one ingredient with large reagent volume. + update_overlays(S) + user << "You add the [I.name] to the [name]." + update_name(S) + + else . = ..() + return + +/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/update_name(obj/item/weapon/reagent_containers/food/snacks/S) + for(var/obj/item/I in ingredients) + if(!istype(S, I.type)) + customname = "custom" + if(ingredients.len == 1) //first ingredient + if(istype(S, /obj/item/weapon/reagent_containers/food/snacks/meat/human)) + var/obj/item/weapon/reagent_containers/food/snacks/meat/human/H = S + if(H.subjectname) + customname = "[H.subjectname]" + else if(H.subjectjob) + customname = "[H.subjectjob]" + else + customname = "[initial(S.name)]" + name = "[customname] [initial(name)]" + +/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/initialize_custom_food(obj/item/BASE, obj/item/I, mob/user) + if(istype(BASE,/obj/item/weapon/reagent_containers)) + var/obj/item/weapon/reagent_containers/RC = BASE + RC.reagents.trans_to(src,RC.reagents.total_volume) + if(I && user) + attackby(I, user) + qdel(BASE) + +/obj/item/weapon/reagent_containers/food/snacks/customizable/update_overlays(obj/item/weapon/reagent_containers/food/snacks/S) + + var/image/I = new(icon, "[initial(icon_state)]_filling") + if(S.filling_color == "#FFFFFF") + I.color = pick("#FF0000","#0000FF","#008000","#FFFF00") + else + I.color = S.filling_color + + switch(Ingredientsplacement) + + if(INGREDIENTS_SCATTER) + I.pixel_x = rand(-1,1) + I.pixel_y = rand(-1,1) + if(INGREDIENTS_STACK) + I.pixel_y = ingredients.len + if(INGREDIENTS_STACKPLUSTOP) + I.pixel_y = ingredients.len + overlays.Cut(ingredients.len) + var/image/TOP = new(icon, "[icon_state]_top") + TOP.pixel_y = ingredients.len + 4 + overlays += I + overlays += TOP + return + if(INGREDIENTS_FILL) + overlays.Cut() + if(INGREDIENTS_LINE) + I.pixel_y = rand(-8,3) + I.pixel_x = I.pixel_y + + overlays += I + +/obj/item/weapon/reagent_containers/food/snacks/customizable/create_slices(slices_lost) + if(!slice_path || !slices_num) + return + var/reagents_per_slice = reagents.total_volume/slices_num + for(var/i=1 to (slices_num-slices_lost)) + var/obj/item/weapon/reagent_containers/food/snacks/slice = new slice_path (loc) + slice.name = "[customname] [initial(slice.name)]" + slice.filling_color = filling_color + slice.update_overlays(src) + reagents.trans_to(slice,reagents_per_slice) + qdel(src) + +/obj/item/weapon/reagent_containers/food/snacks/customizable/Destroy() + for(. in ingredients) + qdel(.) + return ..() + + + + + +///////////////////////////////////////////////////////////////////////////// +////////////// Customizable Food Types ///////////////////////////// +///////////////////////////////////////////////////////////////////////////// + +/obj/item/weapon/reagent_containers/food/snacks/customizable/burger + name = "burger" + desc = "A timeless classic." + Ingredientsplacement = INGREDIENTS_STACKPLUSTOP + icon_state = "bun" + + +/obj/item/weapon/reagent_containers/food/snacks/customizable/bread + name = "bread" + ingMax = 6 + slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/custom + slices_num = 5 + icon_state = "tofubread" + + +/obj/item/weapon/reagent_containers/food/snacks/customizable/cake + name = "cake" + ingMax = 6 + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/custom + slices_num = 5 + icon_state = "plaincake" + + +/obj/item/weapon/reagent_containers/food/snacks/customizable/kebab + name = "kebab" + desc = "Delicious food on a stick." + Ingredientsplacement = INGREDIENTS_LINE + trash = /obj/item/stack/rods + list_reagents = list("nutriment" = 1) + ingMax = 6 + icon_state = "rod" + + +/obj/item/weapon/reagent_containers/food/snacks/customizable/pasta + name = "spaghetti" + desc = "Noodles. With stuff. Delicious." + Ingredientsplacement = INGREDIENTS_SCATTER + ingMax = 6 + icon_state = "spaghettiboiled" + + +/obj/item/weapon/reagent_containers/food/snacks/customizable/pie + name = "pie" + ingMax = 6 + icon_state = "pie" + + +/obj/item/weapon/reagent_containers/food/snacks/customizable/pizza + name = "pizza" + desc = "A personalized pan pizza meant for only one person." + Ingredientsplacement = INGREDIENTS_SCATTER + ingMax = 8 + slice_path = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/custom + slices_num = 6 + icon_state = "pizzamargherita" + + +/obj/item/weapon/reagent_containers/food/snacks/customizable/salad + name = "salad" + desc = "Very tasty." + trash = /obj/item/weapon/reagent_containers/glass/bowl + ingMax = 6 + icon_state = "bowl" + + +/obj/item/weapon/reagent_containers/food/snacks/customizable/sandwich + name = "sandwich" + desc = "A timeless classic." + Ingredientsplacement = INGREDIENTS_STACK + icon_state = "breadslice" + var/finished = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/sandwich/initialize_custom_food(obj/item/weapon/reagent_containers/BASE, obj/item/I, mob/user) + icon_state = BASE.icon_state + ..() + +/obj/item/weapon/reagent_containers/food/snacks/customizable/sandwich/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/breadslice)) //we're finishing the custom food. + var/obj/item/weapon/reagent_containers/food/snacks/breadslice/BS = I + if(finished) + return + user << "You finish the [src.name]." + finished = 1 + BS.reagents.trans_to(src, BS.reagents.total_volume) + ingMax = ingredients.len //can't add more ingredients after that + var/image/TOP = new(icon, "[BS.icon_state]") + TOP.pixel_y = ingredients.len + 4 + overlays += TOP + if(istype(BS, /obj/item/weapon/reagent_containers/food/snacks/breadslice/custom)) + var/image/O = new(icon, "[initial(BS.icon_state)]_filling") + O.color = BS.filling_color + O.pixel_y = ingredients.len + 4 + overlays += O + qdel(BS) + return + else + ..() + + +/obj/item/weapon/reagent_containers/food/snacks/customizable/soup + name = "soup" + desc = "A bowl with liquid and... stuff in it." + trash = /obj/item/weapon/reagent_containers/glass/bowl + ingMax = 8 + icon_state = "wishsoup" + + + + + + + +// Bowl //////////////////////////////////////////////// + +/obj/item/weapon/reagent_containers/glass/bowl + name = "bowl" + icon_state = "snack_bowl" + name = "bowl" + desc = "A simple bowl, used for soups and salads." + icon = 'icons/obj/food.dmi' + icon_state = "bowl" + flags = OPENCONTAINER + w_class = 3 + +/obj/item/weapon/reagent_containers/glass/bowl/attackby(obj/item/I,mob/user) + if(istype(I,/obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/S = I + if(I.w_class > 2) + user << "The ingredient is too big for [src]." + else if(contents.len >= 20) + user << "You can't add more ingredients to [src]." + else + if(reagents.has_reagent("water", 10)) //are we starting a soup or a salad? + var/obj/item/weapon/reagent_containers/food/snacks/customizable/A = new/obj/item/weapon/reagent_containers/food/snacks/customizable/soup(get_turf(src)) + A.initialize_custom_food(src, S, user) + else + var/obj/item/weapon/reagent_containers/food/snacks/customizable/A = new/obj/item/weapon/reagent_containers/food/snacks/customizable/salad(get_turf(src)) + A.initialize_custom_food(src, S, user) + else . = ..() + return + +/obj/item/weapon/reagent_containers/glass/bowl/on_reagent_change() + ..() + update_icon() + +/obj/item/weapon/reagent_containers/glass/bowl/update_icon() + overlays.Cut() + if(reagents.total_volume) + icon_state = "wishsoup" + else + icon_state = "bowl" + +#undef INGREDIENTS_FILL +#undef INGREDIENTS_SCATTER +#undef INGREDIENTS_STACK +#undef INGREDIENTS_STACKPLUSTOP +#undef INGREDIENTS_LINE diff --git a/code/modules/food&drinks/food/snacks.dm b/code/modules/food&drinks/food/snacks.dm index 738d9ad22465b0e..441ab29203358ff 100644 --- a/code/modules/food&drinks/food/snacks.dm +++ b/code/modules/food&drinks/food/snacks.dm @@ -6,13 +6,18 @@ var/bitesize = 2 var/bitecount = 0 var/trash = null - var/slice_path + var/slice_path // for sliceable food. path of the item resulting from the slicing var/slices_num var/eatverb var/wrapped = 0 var/dried_type = null var/potency = null var/dry = 0 + var/cooked_type = null //for microwave cooking. path of the resulting item after microwaving + var/filling_color = "#FFFFFF" //color to use when added to custom food. + var/custom_food_type = null //for food customizing. path of the custom food to create + var/junkiness = 0 //for junk food. used to lower human satiety. + //Placeholder for effect that trigger on eating that aren't tied to reagents. /obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume() @@ -95,6 +100,8 @@ return if(reagents) //Handle ingestion of the reagent. + if(M.satiety > -200) + M.satiety -= junkiness playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1) if(reagents.total_volume) reagents.reaction(M, INGEST) @@ -130,24 +137,27 @@ if(istype(W,/obj/item/weapon/storage)) ..() // -> item/attackby() return 0 - if((slices_num <= 0 || !slices_num) || !slice_path) + if(istype(W,/obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/S = W + if(S.w_class > 2) + user << "The ingredient is too big for [src]." + return 0 + if(contents.len >= 20) + user << "You can't add more ingredients to [src]." + return 0 + if(custom_food_type && ispath(custom_food_type)) + var/obj/item/weapon/reagent_containers/food/snacks/customizable/C = new custom_food_type(get_turf(src)) + C.initialize_custom_food(src, S, user) + return 0 + if(is_sharp(W)) + var/sharpness = is_sharp(W) + if(slice(sharpness, W, user)) + return 1 + + +/obj/item/weapon/reagent_containers/food/snacks/proc/slice(var/accuracy, obj/item/weapon/W, mob/user) + if((slices_num <= 0 || !slices_num) || !slice_path) //is the food sliceable? return 0 - var/inaccurate = 0 - if( \ - istype(W, /obj/item/weapon/kitchenknife) || \ - istype(W, /obj/item/weapon/scalpel) || \ - istype(W, /obj/item/weapon/kitchen/utensil/knife) \ - ) - else if( \ - istype(W, /obj/item/weapon/circular_saw) || \ - istype(W, /obj/item/weapon/melee/energy/sword) && W:active || \ - istype(W, /obj/item/weapon/melee/energy/blade) || \ - istype(W, /obj/item/weapon/shovel) || \ - istype(W, /obj/item/weapon/hatchet) \ - ) - inaccurate = 1 - else - return 0 // --- this is everything that is NOT a slicing implement, and which is not being slipped into food; allow afterattack --- if ( \ !isturf(src.loc) || \ @@ -159,7 +169,7 @@ return 1 var/slices_lost = 0 - if (!inaccurate) + if (accuracy > 1) user.visible_message( \ "[user] slices [src].", \ "You slice [src]." \ @@ -170,11 +180,26 @@ "You inaccurately slice [src] with your [W]!" \ ) slices_lost = rand(1,min(1,round(slices_num/2))) + create_slices(slices_lost) + +/obj/item/weapon/reagent_containers/food/snacks/proc/create_slices(slices_lost) + if(!slice_path && !slices_num) + return var/reagents_per_slice = reagents.total_volume/slices_num for(var/i=1 to (slices_num-slices_lost)) var/obj/slice = new slice_path (src.loc) reagents.trans_to(slice,reagents_per_slice) - qdel(src) // so long and thanks for all the fish + qdel(src) + +/obj/item/weapon/reagent_containers/food/snacks/proc/update_overlays(obj/item/weapon/reagent_containers/food/snacks/S) + overlays.Cut() + var/image/I = new(src.icon, "[initial(icon_state)]_filling") + if(S.filling_color == "#FFFFFF") + I.color = pick("#FF0000","#0000FF","#008000","#FFFF00") + else + I.color = S.filling_color + + overlays += I /obj/item/weapon/reagent_containers/food/snacks/Destroy() @@ -224,19 +249,19 @@ // reagents.add_reagent("nutriment", 2) // this line of code for all the contents. // bitesize = 3 //This is the amount each bite consumes. -//All foods (except slicable, since they have unique procs) are distributed among various categories. Use common sense. +//All foods are distributed among various categories. Use common sense. -/////////////////////////////////////////////////Sliceable//////////////////////////////////////// -// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels +/////////////////////////////////////////////////Store//////////////////////////////////////// +// All the food items that can store an item inside itself, like bread or cake. -//sliceable only changes w class, storage is handled by sliceable/store -/obj/item/weapon/reagent_containers/food/snacks/sliceable - w_class = 3 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store +/obj/item/weapon/reagent_containers/food/snacks/store + w_class = 3 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/attackby(obj/item/weapon/W, mob/user) - if(W.w_class <= 2) +/obj/item/weapon/reagent_containers/food/snacks/store/attackby(obj/item/weapon/W, mob/user) + if(W.w_class > 2 || custom_food_type) //can't store objects inside food needed to start a customizable snack. + ..() + else if(contents.len) return 0 if(!iscarbon(user)) @@ -246,23 +271,3 @@ add_fingerprint(user) contents += W return 1 // no afterattack here - else - ..() - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel - name = "cheese wheel" - desc = "A big wheel of delcious Cheddar." - icon_state = "cheesewheel" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesewedge - slices_num = 5 - list_reagents = list("nutriment" = 20, "vitamin" = 5) - -/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" - -/obj/item/weapon/reagent_containers/food/snacks/watermelonslice - name = "watermelon slice" - desc = "A slice of watery goodness." - icon_state = "watermelonslice" diff --git a/code/modules/food&drinks/food/snacks/dough.dm b/code/modules/food&drinks/food/snacks/dough.dm new file mode 100644 index 000000000000000..750a38bf295d6cf --- /dev/null +++ b/code/modules/food&drinks/food/snacks/dough.dm @@ -0,0 +1,123 @@ + + +/////////////////// Dough Ingredients //////////////////////// + +// Flour + egg = dough +/obj/item/weapon/reagent_containers/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/egg)) + var/obj/item/weapon/reagent_containers/food/snacks/egg/E = W + if(flags & OPENCONTAINER) + if(reagents) + if(reagents.has_reagent("flour")) + if(reagents.get_reagent_amount("flour", 15)) + var/obj/item/weapon/reagent_containers/food/snacks/S = new /obj/item/weapon/reagent_containers/food/snacks/dough(get_turf(src)) + user << "You mix egg and flour to make some dough." + reagents.remove_reagent("flour", 15) + if(E.reagents) + E.reagents.trans_to(S,E.reagents.total_volume) + qdel(E) + else + user << "Not enough flour to make dough." + return + ..() + +/obj/item/weapon/reagent_containers/food/snacks/dough + name = "dough" + desc = "A piece of dough." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "dough" + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain + bitesize = 2 + list_reagents = list("nutriment" = 3) + w_class = 3 + + +// Dough + rolling pin = flat dough +/obj/item/weapon/reagent_containers/food/snacks/dough/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/weapon/kitchen/rollingpin)) + if(isturf(loc)) + new /obj/item/weapon/reagent_containers/food/snacks/flatdough(loc) + user << "You flatten [src]." + qdel(src) + else + user << "You need to put [src] on a surface to roll it out!" + else + ..() + + +// sliceable into 3xdoughslices +/obj/item/weapon/reagent_containers/food/snacks/flatdough + name = "flat dough" + desc = "A flattened dough." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "flat dough" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/doughslice + slices_num = 3 + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/pizzabread + list_reagents = list("nutriment" = 3) + w_class = 3 + +/obj/item/weapon/reagent_containers/food/snacks/pizzabread + name = "pizza bread" + desc = "Add ingredients to make a pizza" + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "pizzabread" + bitesize = 2 + custom_food_type = /obj/item/weapon/reagent_containers/food/snacks/customizable/pizza + list_reagents = list("nutriment" = 2) + w_class = 3 + + +/obj/item/weapon/reagent_containers/food/snacks/doughslice + name = "dough slice" + desc = "A building block of an impressive dish." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "doughslice" + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/bun + bitesize = 2 + list_reagents = list("nutriment" = 1) + filling_color = "#CD853F" + + +/obj/item/weapon/reagent_containers/food/snacks/bun + name = "bun" + desc = "A base for any self-respecting burger." + icon = 'icons/obj/food.dmi' + icon_state = "bun" + bitesize = 2 + list_reagents = list("nutriment" = 4) + custom_food_type = /obj/item/weapon/reagent_containers/food/snacks/customizable/burger + filling_color = "#CD853F" + +/obj/item/weapon/reagent_containers/food/snacks/cakebatter + name = "cake batter" + desc = "Cook it to get a cake." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "cakebatter" + bitesize = 2 + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain + list_reagents = list("nutriment" = 4) + w_class = 3 + +// Cake batter + rolling pin = pie dough +/obj/item/weapon/reagent_containers/food/snacks/cakebatter/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/weapon/kitchen/rollingpin)) + if(isturf(loc)) + new /obj/item/weapon/reagent_containers/food/snacks/piedough(loc) + user << "You flatten [src]." + qdel(src) + else + user << "You need to put [src] on a surface to roll it out!" + else + ..() + +/obj/item/weapon/reagent_containers/food/snacks/piedough + name = "pie dough" + desc = "Cook it to get a pie." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "piedough" + bitesize = 2 + slice_path = /obj/item/weapon/reagent_containers/food/snacks/doughslice + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/pie/plain + list_reagents = list("nutriment" = 4) + w_class = 3 diff --git a/code/modules/food&drinks/food/snacks/meat.dm b/code/modules/food&drinks/food/snacks/meat.dm index bbc01d8ad3e0528..4f487914b0341a8 100644 --- a/code/modules/food&drinks/food/snacks/meat.dm +++ b/code/modules/food&drinks/food/snacks/meat.dm @@ -5,6 +5,10 @@ dried_type = /obj/item/weapon/reagent_containers/food/snacks/sosjerky bitesize = 3 list_reagents = list("nutriment" = 3) + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/meatsteak + slice_path = /obj/item/weapon/reagent_containers/food/snacks/rawcutlet + slices_num = 3 + filling_color = "#FF0000" /obj/item/weapon/reagent_containers/food/snacks/meat/synthmeat name = "synthmeat" @@ -19,27 +23,33 @@ icon_state = "slimemeat" desc = "Because jello wasn't offensive enough to vegans" list_reagents = list("nutriment" = 3, "slimejelly" = 3) + filling_color = "#00FFFF" /obj/item/weapon/reagent_containers/food/snacks/meat/human/mutant/golem icon_state = "golemmeat" desc = "Edible rocks, welcome to the future" list_reagents = list("nutriment" = 3, "iron" = 3) + filling_color = "#A9A9A9" /obj/item/weapon/reagent_containers/food/snacks/meat/human/mutant/golem/adamantine icon_state = "agolemmeat" desc = "From the slime pen to the rune to the kitchen, science" + filling_color = "#66CDAA" /obj/item/weapon/reagent_containers/food/snacks/meat/human/mutant/lizard icon_state = "lizardmeat" desc = "Delicious dino damage" + filling_color = "#6B8E23" /obj/item/weapon/reagent_containers/food/snacks/meat/human/mutant/plant icon_state = "plantmeat" desc = "All the joys of healthy eating with all the fun of cannibalism" + filling_color = "#E9967A" /obj/item/weapon/reagent_containers/food/snacks/meat/human/mutant/shadow icon_state = "shadowmeat" desc = "Ow, the edge" + filling_color = "#202020" /obj/item/weapon/reagent_containers/food/snacks/meat/human/mutant/fly icon_state = "flymeat" @@ -50,11 +60,13 @@ name = "-bone" icon_state = "skeletonmeat" desc = "There's a point where this needs to stop and clearly we have passed it" + filling_color = "#F0F0F0" /obj/item/weapon/reagent_containers/food/snacks/meat/human/mutant/zombie name = "-meat (rotten)" icon_state = "lizardmeat" //Close enough. desc = "Halfway to becoming fertilizer for your garden." + filling_color = "#6B8E23" /obj/item/weapon/reagent_containers/food/snacks/meat/monkey //same as plain meat diff --git a/code/modules/food&drinks/food/snacks_bread.dm b/code/modules/food&drinks/food/snacks_bread.dm index c8f81fbaa16f401..74a8223b6cab566 100644 --- a/code/modules/food&drinks/food/snacks_bread.dm +++ b/code/modules/food&drinks/food/snacks_bread.dm @@ -1,116 +1,108 @@ -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/meatbread +/obj/item/weapon/reagent_containers/food/snacks/store/bread + slices_num = 5 + + +/obj/item/weapon/reagent_containers/food/snacks/breadslice + bitesize = 2 + custom_food_type = /obj/item/weapon/reagent_containers/food/snacks/customizable/sandwich + filling_color = "#FFA500" + +/obj/item/weapon/reagent_containers/food/snacks/store/bread/plain + name = "bread" + desc = "Some plain old Earthen bread." + icon_state = "bread" + list_reagents = list("nutriment" = 10) + custom_food_type = /obj/item/weapon/reagent_containers/food/snacks/customizable/bread + slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain + +/obj/item/weapon/reagent_containers/food/snacks/breadslice/plain + name = "bread slice" + desc = "A slice of home." + icon_state = "breadslice" + +/obj/item/weapon/reagent_containers/food/snacks/store/bread/meat name = "meatbread loaf" desc = "The culinary base of every self-respecting eloquen/tg/entleman." icon_state = "meatbread" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice - slices_num = 5 - list_reagents = list("nutriment" = 30, "vitamin" = 5) + slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/meat + list_reagents = list("nutriment" = 30, "vitamin" = 10) - -/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice +/obj/item/weapon/reagent_containers/food/snacks/breadslice/meat name = "meatbread slice" desc = "A slice of delicious meatbread." icon_state = "meatbreadslice" - trash = /obj/item/trash/plate - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/xenomeatbread +/obj/item/weapon/reagent_containers/food/snacks/store/bread/xenomeat name = "xenomeatbread loaf" desc = "The culinary base of every self-respecting eloquen/tg/entleman. Extra Heretical." icon_state = "xenomeatbread" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice - slices_num = 5 - list_reagents = list("nutriment" = 30, "vitamin" = 5) + slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/xenomeat + list_reagents = list("nutriment" = 30, "vitamin" = 10) - -/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice +/obj/item/weapon/reagent_containers/food/snacks/breadslice/xenomeat name = "xenomeatbread slice" desc = "A slice of delicious meatbread. Extra Heretical." icon_state = "xenobreadslice" - trash = /obj/item/trash/plate - + filling_color = "#32CD32" -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/spidermeatbread +/obj/item/weapon/reagent_containers/food/snacks/store/bread/spidermeat name = "spider meat loaf" desc = "Reassuringly green meatloaf made from spider meat." icon_state = "spidermeatbread" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/spidermeatbreadslice - slices_num = 5 - list_reagents = list("nutriment" = 30, "toxin" = 15, "vitamin" = 5) + slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/spidermeat + list_reagents = list("nutriment" = 30, "vitamin" = 10) - -/obj/item/weapon/reagent_containers/food/snacks/spidermeatbreadslice +/obj/item/weapon/reagent_containers/food/snacks/breadslice/spidermeat 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 - - list_reagents = list("toxin" = 2) + filling_color = "#7CFC00" -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/bananabread +/obj/item/weapon/reagent_containers/food/snacks/store/bread/banana name = "banana-nut bread" desc = "A heavenly and filling treat." icon_state = "bananabread" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/bananabreadslice - slices_num = 5 - list_reagents = list("nutriment" = 30, "banana" = 20) + slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/banana + list_reagents = list("nutriment" = 20, "banana" = 20) -/obj/item/weapon/reagent_containers/food/snacks/bananabreadslice +/obj/item/weapon/reagent_containers/food/snacks/breadslice/banana name = "banana-nut bread slice" desc = "A slice of delicious banana bread." icon_state = "bananabreadslice" - trash = /obj/item/trash/plate - + filling_color = "#FFD700" -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/tofubread +/obj/item/weapon/reagent_containers/food/snacks/store/bread/tofu name = "Tofubread" desc = "Like meatbread but for vegetarians. Not guaranteed to give superpowers." icon_state = "tofubread" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice - slices_num = 5 - list_reagents = list("nutriment" = 30, "vitamin" = 5) + slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/tofu + list_reagents = list("nutriment" = 30, "vitamin" = 10) - -/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice +/obj/item/weapon/reagent_containers/food/snacks/breadslice/tofu name = "tofubread slice" desc = "A slice of delicious tofubread." icon_state = "tofubreadslice" - trash = /obj/item/trash/plate - - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/bread - name = "bread" - desc = "Some plain old Earthen bread." - icon_state = "bread" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice - slices_num = 5 - list_reagents = list("nutriment" = 6, "vitamin" = 5) - + filling_color = "#FF8C00" -/obj/item/weapon/reagent_containers/food/snacks/breadslice - name = "bread slice" - desc = "A slice of home." - icon_state = "breadslice" - trash = /obj/item/trash/plate - - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/creamcheesebread +/obj/item/weapon/reagent_containers/food/snacks/store/bread/creamcheese name = "cream cheese bread" desc = "Yum yum yum!" icon_state = "creamcheesebread" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice - slices_num = 5 + slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice/creamcheese list_reagents = list("nutriment" = 20, "vitamin" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice +/obj/item/weapon/reagent_containers/food/snacks/breadslice/creamcheese name = "cream cheese bread slice" desc = "A slice of yum!" icon_state = "creamcheesebreadslice" - trash = /obj/item/trash/plate + filling_color = "#FF8C00" +/obj/item/weapon/reagent_containers/food/snacks/breadslice/custom + name = "bread slice" + icon_state = "tofubreadslice" + filling_color = "#FFFFFF" /obj/item/weapon/reagent_containers/food/snacks/baguette name = "baguette" @@ -118,3 +110,4 @@ icon_state = "baguette" list_reagents = list("nutriment" = 6, "blackpepper" = 1, "sodiumchloride" = 1, "vitamin" = 1) bitesize = 3 + w_class = 3 \ No newline at end of file diff --git a/code/modules/food&drinks/food/snacks_burgers.dm b/code/modules/food&drinks/food/snacks_burgers.dm index a6d80c43c7601ad..e1a2e40d2eb8671 100644 --- a/code/modules/food&drinks/food/snacks_burgers.dm +++ b/code/modules/food&drinks/food/snacks_burgers.dm @@ -1,4 +1,8 @@ + /obj/item/weapon/reagent_containers/food/snacks/burger + filling_color = "#CD853F" + +/obj/item/weapon/reagent_containers/food/snacks/burger/plain name = "burger" desc = "The cornerstone of every nutritious breakfast." icon_state = "hburger" @@ -118,6 +122,7 @@ desc = "Forget the Big Mac. THIS is the future!" icon_state = "bigbiteburger" list_reagents = list("nutriment" = 14, "vitamin" = 5) + w_class = 3 /obj/item/weapon/reagent_containers/food/snacks/burger/jelly name = "jelly burger" @@ -135,3 +140,4 @@ desc = "This is a mountain of a burger. FOOD!" icon_state = "superbiteburger" list_reagents = list("nutriment" = 46, "vitamin" = 5) + w_class = 3 diff --git a/code/modules/food&drinks/food/snacks_cake.dm b/code/modules/food&drinks/food/snacks_cake.dm index 259b81df7db1763..c3319e2aa718a03 100644 --- a/code/modules/food&drinks/food/snacks_cake.dm +++ b/code/modules/food&drinks/food/snacks_cake.dm @@ -1,139 +1,163 @@ -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/carrotcake +/obj/item/weapon/reagent_containers/food/snacks/store/cake + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/plain + slices_num = 5 + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/cakeslice + trash = /obj/item/trash/plate + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain + name = "vanilla cake" + desc = "A plain cake, not a lie." + icon_state = "plaincake" + custom_food_type = /obj/item/weapon/reagent_containers/food/snacks/customizable/cake + list_reagents = list("nutriment" = 10, "vitamin" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/cakeslice/plain + name = "vanilla cake slice" + desc = "Just a slice of cake, it is enough for everyone." + icon_state = "plaincake_slice" + filling_color = "#FFD700" + +/obj/item/weapon/reagent_containers/food/snacks/store/cake/carrot name = "carrot cake" desc = "A favorite desert of a certain wascally wabbit. Not a lie." icon_state = "carrotcake" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/carrot slices_num = 5 - list_reagents = list("nutriment" = 20, "oculine" = 10, "vitamin" = 5) + list_reagents = list("nutriment" = 20, "oculine" = 10, "vitamin" = 10) -/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice +/obj/item/weapon/reagent_containers/food/snacks/cakeslice/carrot name = "carrot cake slice" desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie." icon_state = "carrotcake_slice" - trash = /obj/item/trash/plate + filling_color = "#FFA500" + -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/braincake +/obj/item/weapon/reagent_containers/food/snacks/store/cake/brain name = "brain cake" desc = "A squishy cake-thing." icon_state = "braincake" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/braincakeslice + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/brain slices_num = 5 - list_reagents = list("nutriment" = 20, "mannitol" = 10, "vitamin" = 5) + list_reagents = list("nutriment" = 20, "mannitol" = 10, "vitamin" = 10) -/obj/item/weapon/reagent_containers/food/snacks/braincakeslice + +/obj/item/weapon/reagent_containers/food/snacks/cakeslice/brain name = "brain cake slice" desc = "Lemme tell you something about prions. THEY'RE DELICIOUS." icon_state = "braincakeslice" - trash = /obj/item/trash/plate + filling_color = "#FF69B4" -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/cheesecake +/obj/item/weapon/reagent_containers/food/snacks/store/cake/cheese name = "cheese cake" desc = "DANGEROUSLY cheesy." icon_state = "cheesecake" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/cheese slices_num = 5 - list_reagents = list("nutriment" = 20, "vitamin" = 5) + list_reagents = list("nutriment" = 20, "vitamin" = 10) -/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice + +/obj/item/weapon/reagent_containers/food/snacks/cakeslice/cheese name = "cheese cake slice" desc = "Slice of pure cheestisfaction." icon_state = "cheesecake_slice" - trash = /obj/item/trash/plate - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/plaincake - name = "vanilla cake" - desc = "A plain cake, not a lie." - icon_state = "plaincake" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/plaincakeslice - slices_num = 5 - list_reagents = list("nutriment" = 20, "vitamin" = 5) + filling_color = "#FFFACD" -/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice - name = "vanilla cake slice" - desc = "Just a slice of cake, it is enough for everyone." - icon_state = "plaincake_slice" - trash = /obj/item/trash/plate -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/orangecake +/obj/item/weapon/reagent_containers/food/snacks/store/cake/orange name = "orange cake" desc = "A cake with added orange." icon_state = "orangecake" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/orangecakeslice + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/orange slices_num = 5 - list_reagents = list("nutriment" = 20, "vitamin" = 5) + list_reagents = list("nutriment" = 20, "vitamin" = 10) -/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice +/obj/item/weapon/reagent_containers/food/snacks/cakeslice/orange name = "orange cake slice" desc = "Just a slice of cake, it is enough for everyone." icon_state = "orangecake_slice" - trash = /obj/item/trash/plate + filling_color = "#FFA500" -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/limecake +/obj/item/weapon/reagent_containers/food/snacks/store/cake/lime name = "lime cake" desc = "A cake with added lime." icon_state = "limecake" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/limecakeslice + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/lime slices_num = 5 - list_reagents = list("nutriment" = 20, "vitamin" = 5) -/obj/item/weapon/reagent_containers/food/snacks/limecakeslice + list_reagents = list("nutriment" = 20, "vitamin" = 10) + +/obj/item/weapon/reagent_containers/food/snacks/cakeslice/lime name = "lime cake slice" desc = "Just a slice of cake, it is enough for everyone." icon_state = "limecake_slice" - trash = /obj/item/trash/plate + filling_color = "#00FF00" -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/lemoncake + +/obj/item/weapon/reagent_containers/food/snacks/store/cake/lemon name = "lemon cake" desc = "A cake with added lemon." icon_state = "lemoncake" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/lemon slices_num = 5 - list_reagents = list("nutriment" = 20, "vitamin" = 5) + list_reagents = list("nutriment" = 20, "vitamin" = 10) + -/obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice +/obj/item/weapon/reagent_containers/food/snacks/cakeslice/lemon name = "lemon cake slice" desc = "Just a slice of cake, it is enough for everyone." icon_state = "lemoncake_slice" - trash = /obj/item/trash/plate + filling_color = "#FFEE00" + -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/chocolatecake +/obj/item/weapon/reagent_containers/food/snacks/store/cake/chocolate name = "chocolate cake" desc = "A cake with added chocolate." icon_state = "chocolatecake" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/chocolate slices_num = 5 - list_reagents = list("nutriment" = 20, "vitamin" = 5) + list_reagents = list("nutriment" = 20, "vitamin" = 10) + -/obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice +/obj/item/weapon/reagent_containers/food/snacks/cakeslice/chocolate name = "chocolate cake slice" desc = "Just a slice of cake, it is enough for everyone." icon_state = "chocolatecake_slice" - trash = /obj/item/trash/plate + filling_color = "#A0522D" + -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/birthdaycake +/obj/item/weapon/reagent_containers/food/snacks/store/cake/birthday name = "birthday cake" desc = "Happy Birthday little clown..." icon_state = "birthdaycake" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/birthday slices_num = 5 - list_reagents = list("nutriment" = 20, "sprinkles" = 10, "vitamin" = 5) + list_reagents = list("nutriment" = 20, "sprinkles" = 10, "vitamin" = 10) -/obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice +/obj/item/weapon/reagent_containers/food/snacks/cakeslice/birthday name = "birthday cake slice" desc = "A slice of your birthday." icon_state = "birthdaycakeslice" - trash = /obj/item/trash/plate + filling_color = "#DC143C" + -/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/applecake +/obj/item/weapon/reagent_containers/food/snacks/store/cake/apple name = "apple cake" desc = "A cake centred with Apple." icon_state = "applecake" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/applecakeslice + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cakeslice/apple slices_num = 5 - list_reagents = list("nutriment" = 20, "vitamin" = 5) + list_reagents = list("nutriment" = 20, "vitamin" = 10) -/obj/item/weapon/reagent_containers/food/snacks/applecakeslice +/obj/item/weapon/reagent_containers/food/snacks/cakeslice/apple name = "apple cake slice" desc = "A slice of heavenly cake." icon_state = "applecakeslice" - trash = /obj/item/trash/plate + filling_color = "#FF4500" + +/obj/item/weapon/reagent_containers/food/snacks/cakeslice/custom + name = "cake slice" + icon_state = "plaincake_slice" + filling_color = "#FFFFFF" diff --git a/code/modules/food&drinks/food/snacks_egg.dm b/code/modules/food&drinks/food/snacks_egg.dm index ee277292caca90e..5b3f1ec649f28f1 100644 --- a/code/modules/food&drinks/food/snacks_egg.dm +++ b/code/modules/food&drinks/food/snacks_egg.dm @@ -6,12 +6,15 @@ desc = "Such, sweet, fattening food." icon_state = "chocolateegg" list_reagents = list("nutriment" = 4, "sugar" = 2, "vitamin" = 2) + filling_color = "#A0522D" /obj/item/weapon/reagent_containers/food/snacks/egg name = "egg" desc = "An egg!" icon_state = "egg" list_reagents = list("nutriment" = 1, "vitamin" = 1) + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/boiledegg + filling_color = "#F0E68C" /obj/item/weapon/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom) ..() @@ -72,12 +75,14 @@ icon_state = "friedegg" list_reagents = list("nutriment" = 2, "sodiumchloride" = 1, "blackpepper" = 1, "vitamin" = 1) bitesize = 1 + filling_color = "#FFFFF0" /obj/item/weapon/reagent_containers/food/snacks/boiledegg name = "boiled egg" desc = "A hard boiled egg." icon_state = "egg" list_reagents = list("nutriment" = 2, "vitamin" = 2) + filling_color = "#FFFFF0" /obj/item/weapon/reagent_containers/food/snacks/omelette //FUCK THIS name = "omelette du fromage" @@ -86,6 +91,7 @@ trash = /obj/item/trash/plate list_reagents = list("nutriment" = 7, "vitamin" = 2) bitesize = 1 + w_class = 3 /obj/item/weapon/reagent_containers/food/snacks/omelette/attackby(obj/item/weapon/W, mob/user) if(istype(W,/obj/item/weapon/kitchen/utensil/fork)) @@ -108,3 +114,5 @@ desc = "There is only one egg on this, how rude." icon_state = "benedict" list_reagents = list("nutriment" = 6, "vitamin" = 4) + trash = /obj/item/trash/plate + w_class = 3 \ No newline at end of file diff --git a/code/modules/food&drinks/food/snacks_meat.dm b/code/modules/food&drinks/food/snacks_meat.dm index 0b84a8f7573214d..8f811965746a864 100644 --- a/code/modules/food&drinks/food/snacks_meat.dm +++ b/code/modules/food&drinks/food/snacks_meat.dm @@ -10,6 +10,7 @@ trash = /obj/item/trash/plate list_reagents = list("nutriment" = 6, "vitamin" = 3) bitesize = 3 + filling_color = "#CD853F" /obj/item/weapon/reagent_containers/food/snacks/carpmeat name = "carp fillet" @@ -17,6 +18,7 @@ icon_state = "fishfillet" list_reagents = list("nutriment" = 2, "carpotoxin" = 2, "vitamin" = 2) bitesize = 6 + filling_color = "#FA8072" /obj/item/weapon/reagent_containers/food/snacks/carpmeat/New() ..() @@ -32,12 +34,14 @@ icon_state = "fishfingers" list_reagents = list("nutriment" = 4) bitesize = 1 + filling_color = "#CD853F" /obj/item/weapon/reagent_containers/food/snacks/fishandchips name = "fish and chips" desc = "I do say so myself chap." icon_state = "fishandchips" list_reagents = list("nutriment" = 6) + filling_color = "#FA8072" ////////////////////////////////////////////MEATS AND ALIKE//////////////////////////////////////////// @@ -46,12 +50,14 @@ desc = "We all love tofu." icon_state = "tofu" list_reagents = list("nutriment" = 2) + filling_color = "#F0E68C" /obj/item/weapon/reagent_containers/food/snacks/tomatomeat name = "tomato slice" desc = "A slice from a huge tomato." icon_state = "tomatomeat" list_reagents = list("nutriment" = 2) + filling_color = "#FF0000" /obj/item/weapon/reagent_containers/food/snacks/bearmeat name = "bear meat" @@ -65,18 +71,22 @@ icon_state = "xenomeat" list_reagents = list("nutriment" = 3, "vitamin" = 1) bitesize = 4 + filling_color = "#32CD32" /obj/item/weapon/reagent_containers/food/snacks/spidermeat name = "spider meat" desc = "A slab of spider meat." icon_state = "spidermeat" list_reagents = list("nutriment" = 3, "toxin" = 3, "vitamin" = 1) + filling_color = "#7CFC00" /obj/item/weapon/reagent_containers/food/snacks/spiderleg 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" list_reagents = list("nutriment" = 2, "toxin" = 2) + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/boiledspiderleg + filling_color = "#000000" /obj/item/weapon/reagent_containers/food/snacks/cornedbeef name = "corned beef and cabbage" @@ -90,12 +100,14 @@ desc = "A great meal all round. Not a cord of wood." icon_state = "faggot" list_reagents = list("nutriment" = 1, "vitamin" = 1) + filling_color = "#800000" /obj/item/weapon/reagent_containers/food/snacks/sausage name = "sausage" desc = "A piece of mixed, long meat." icon_state = "sausage" list_reagents = list("nutriment" = 5, "vitamin" = 1) + filling_color = "#CD5C5C" /obj/item/weapon/reagent_containers/food/snacks/sausage/New() ..() @@ -105,36 +117,35 @@ name = "wing fang chu" desc = "A savory dish of alien wing wang in soy." icon_state = "wingfangchu" - trash = /obj/item/trash/snack_bowl + trash = /obj/item/weapon/reagent_containers/glass/bowl list_reagents = list("nutriment" = 6, "vitamin" = 2) -/obj/item/weapon/reagent_containers/food/snacks/human/kebab - name = "-kebab" +/obj/item/weapon/reagent_containers/food/snacks/kebab + trash = /obj/item/stack/rods icon_state = "kebab" + w_class = 3 + +/obj/item/weapon/reagent_containers/food/snacks/kebab/human + name = "human-kebab" desc = "A human meat, on a stick." - trash = /obj/item/stack/rods - list_reagents = list("nutriment" = 8) + list_reagents = list("nutriment" = 10, "vitamin" = 6) -/obj/item/weapon/reagent_containers/food/snacks/monkeykebab +/obj/item/weapon/reagent_containers/food/snacks/kebab/monkey name = "meat-kebab" - icon_state = "kebab" desc = "Delicious meat, on a stick." - trash = /obj/item/stack/rods - list_reagents = list("nutriment" = 8) + list_reagents = list("nutriment" = 8, "vitamin" = 2) -/obj/item/weapon/reagent_containers/food/snacks/tofukebab +/obj/item/weapon/reagent_containers/food/snacks/kebab/tofu name = "tofu-kebab" - icon_state = "kebab" desc = "Vegan meat, on a stick." - trash = /obj/item/stack/rods list_reagents = list("nutriment" = 8) /obj/item/weapon/reagent_containers/food/snacks/meatsteak name = "meat steak" desc = "A piece of hot spicy meat." icon_state = "meatsteak" - trash = /obj/item/trash/plate list_reagents = list("nutriment" = 8, "sodiumchloride" = 1, "blackpepper" = 1, "vitamin" = 1) + filling_color = "#B22222" /obj/item/weapon/reagent_containers/food/snacks/monkeycube name = "monkey cube" @@ -142,7 +153,8 @@ icon_state = "monkeycube" bitesize = 12 wrapped = 0 - list_reagents = list("nutriment" = 10) + list_reagents = list("nutriment" = 5) + filling_color = "#CD853F" /obj/item/weapon/reagent_containers/food/snacks/monkeycube/afterattack(obj/O, mob/user,proximity) if(!proximity) return @@ -179,18 +191,7 @@ icon_state = "enchiladas" list_reagents = list("nutriment" = 8, "capsaicin" = 6) bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/stew - name = "stew" - desc = "A nice and warm stew. Healthy and strong." - icon_state = "stew" - trash = /obj/item/trash/snack_bowl - list_reagents = list("nutriment" = 10, "tomatojuice" = 5, "oculine" = 5, "water" = 5) - bitesize = 10 - -/obj/item/weapon/reagent_containers/food/snacks/stew/New() - ..() - eatverb = pick("slurp","sip","suck","inhale","drink") + filling_color = "#FFA07A" /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat name = "stewed soy meat" @@ -198,6 +199,7 @@ icon_state = "stewedsoymeat" trash = /obj/item/trash/plate list_reagents = list("nutriment" = 8) + filling_color = "#D2691E" /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat/New() ..() @@ -209,6 +211,7 @@ icon_state = "spiderlegcooked" trash = /obj/item/trash/plate list_reagents = list("nutriment" = 2, "capsaicin" = 2) + filling_color = "#000000" /obj/item/weapon/reagent_containers/food/snacks/spidereggsham name = "green eggs and ham" @@ -217,9 +220,30 @@ trash = /obj/item/trash/plate list_reagents = list("nutriment" = 6, "sodiumchloride" = 1, "toxin" = 3) bitesize = 4 + filling_color = "#7FFF00" /obj/item/weapon/reagent_containers/food/snacks/sashimi name = "carp sashimi" desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself." icon_state = "sashimi" list_reagents = list("nutriment" = 6, "capsaicin" = 4) + filling_color = "#FA8072" + +/obj/item/weapon/reagent_containers/food/snacks/rawcutlet + name = "raw cutlet" + desc = "A raw meat cutlet." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "rawcutlet" + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/cutlet + bitesize = 2 + list_reagents = list("nutriment" = 2) + filling_color = "#B22222" + +/obj/item/weapon/reagent_containers/food/snacks/cutlet + name = "cutlet" + desc = "A cooked meat cutlet." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "cutlet" + bitesize = 2 + list_reagents = list("nutriment" = 4, "vitamin" = 1) + filling_color = "#B22222" diff --git a/code/modules/food&drinks/food/snacks_other.dm b/code/modules/food&drinks/food/snacks_other.dm index dd0f226b82720ac..435878887b4239b 100644 --- a/code/modules/food&drinks/food/snacks_other.dm +++ b/code/modules/food&drinks/food/snacks_other.dm @@ -1,11 +1,33 @@ ////////////////////////////////////////////OTHER//////////////////////////////////////////// +/obj/item/weapon/reagent_containers/food/snacks/cheesewheel + name = "cheese wheel" + desc = "A big wheel of delcious Cheddar." + icon_state = "cheesewheel" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + slices_num = 5 + list_reagents = list("nutriment" = 15, "vitamin" = 5) + w_class = 3 + +/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 = "#FFD700" + +/obj/item/weapon/reagent_containers/food/snacks/watermelonslice + name = "watermelon slice" + desc = "A slice of watery goodness." + icon_state = "watermelonslice" + filling_color = "#FF1493" + /obj/item/weapon/reagent_containers/food/snacks/candy_corn name = "candy corn" desc = "It's a handful of candy corn. Can be stored in a detective's hat." icon_state = "candy_corn" list_reagents = list("nutriment" = 4, "sugar" = 2) + filling_color = "#FF8C00" /obj/item/weapon/reagent_containers/food/snacks/chocolatebar name = "chocolate bar" @@ -13,6 +35,7 @@ icon_state = "chocolatebarunwrapped" wrapped = 0 list_reagents = list("nutriment" = 4, "sugar" = 2, "coco" = 2, "vitamin" = 1) + filling_color = "#A0522D" /obj/item/weapon/reagent_containers/food/snacks/chocolatebar/attack_self(mob/user) if(wrapped) @@ -45,6 +68,7 @@ trash = /obj/item/trash/popcorn list_reagents = list("nutriment" = 2) bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 + filling_color = "#FFEFD5" /obj/item/weapon/reagent_containers/food/snacks/popcorn/New() ..() @@ -55,6 +79,7 @@ desc = "Totally baked." icon_state = "loadedbakedpotato" list_reagents = list("nutriment" = 6) + filling_color = "#D2B48C" /obj/item/weapon/reagent_containers/food/snacks/fries name = "space fries" @@ -62,6 +87,7 @@ icon_state = "fries" trash = /obj/item/trash/plate list_reagents = list("nutriment" = 4) + filling_color = "#FFD700" /obj/item/weapon/reagent_containers/food/snacks/soydope name = "soy dope" @@ -69,6 +95,7 @@ icon_state = "soydope" trash = /obj/item/trash/plate list_reagents = list("nutriment" = 2) + filling_color = "#DEB887" /obj/item/weapon/reagent_containers/food/snacks/cheesyfries name = "cheesy fries" @@ -76,28 +103,14 @@ icon_state = "cheesyfries" trash = /obj/item/trash/plate list_reagents = list("nutriment" = 6) + filling_color = "#FFD700" /obj/item/weapon/reagent_containers/food/snacks/badrecipe name = "burned mess" desc = "Someone should be demoted from cook for this." icon_state = "badrecipe" list_reagents = list("????" = 30) - -/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff - name = "spacy liberty duff" - desc = "Jello gelatin, from Alfred Hubbard's cookbook." - icon_state = "spacylibertyduff" - trash = /obj/item/trash/snack_bowl - bitesize = 3 - list_reagents = list("nutriment" = 6, "mushroomhallucinogen" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/amanitajelly - name = "amanita jelly" - desc = "Looks curiously toxic." - icon_state = "amanitajelly" - trash = /obj/item/trash/snack_bowl - bitesize = 3 - list_reagents = list("nutriment" = 6, "amatoxin" = 6, "mushroomhallucinogen" = 6) + filling_color = "#8B4513" /obj/item/weapon/reagent_containers/food/snacks/carrotfries name = "carrot fries" @@ -105,6 +118,7 @@ icon_state = "carrotfries" trash = /obj/item/trash/plate list_reagents = list("nutriment" = 3, "oculine" = 3, "vitamin" = 2) + filling_color = "#FFA500" /obj/item/weapon/reagent_containers/food/snacks/candiedapple name = "candied apple" @@ -112,40 +126,57 @@ icon_state = "candiedapple" bitesize = 3 list_reagents = list("nutriment" = 3, "sugar" = 3) + filling_color = "#FF4500" /obj/item/weapon/reagent_containers/food/snacks/mint name = "mint" desc = "it is only wafer thin." icon_state = "mint" bitesize = 1 + trash = /obj/item/trash/plate list_reagents = list("minttoxin" = 1) + filling_color = "#800000" /obj/item/weapon/reagent_containers/food/snacks/wrap name = "egg wrap" desc = "The precursor to Pigs in a Blanket." icon_state = "wrap" list_reagents = list("nutriment" = 5) + filling_color = "#F0E68C" /obj/item/weapon/reagent_containers/food/snacks/beans name = "tin of beans" desc = "Musical fruit in a slightly less musical container." icon_state = "beans" list_reagents = list("nutriment" = 10) + filling_color = "#B22222" /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" list_reagents = list("nutriment" = 2, "toxin" = 2) + filling_color = "#008000" /obj/item/weapon/reagent_containers/food/snacks/chococoin name = "chocolate coin" desc = "A completely edible but nonflippable festive coin." icon_state = "chococoin" list_reagents = list("nutriment" = 2, "sugar" = 2, "coco" = 2) + filling_color = "#A0522D" /obj/item/weapon/reagent_containers/food/snacks/chocoorange name = "chocolate orange" desc = "A festive chocolate orange" icon_state = "chocoorange" list_reagents = list("nutriment" = 4, "sugar" = 2, "coco" = 2) + filling_color = "#A0522D" + + +/obj/item/weapon/reagent_containers/food/snacks/eggplantparm + name = "eggplant parmigiana" + desc = "The only good recipe for eggplant." + icon_state = "eggplantparm" + trash = /obj/item/trash/plate + list_reagents = list("nutriment" = 6, "vitamin" = 3) + filling_color = "#BA55D3" \ No newline at end of file diff --git a/code/modules/food&drinks/food/snacks_pastry.dm b/code/modules/food&drinks/food/snacks_pastry.dm index 86c7592ec6e6073..8f8e70b208479d1 100644 --- a/code/modules/food&drinks/food/snacks_pastry.dm +++ b/code/modules/food&drinks/food/snacks_pastry.dm @@ -81,7 +81,7 @@ name = "chawanmushi" desc = "A legendary egg custard that makes friends out of enemies. Probably too hot for a cat to eat." icon_state = "chawanmushi" - trash = /obj/item/trash/snack_bowl + trash = /obj/item/weapon/reagent_containers/glass/bowl list_reagents = list("nutriment" = 6) ////////////////////////////////////////////WAFFLES//////////////////////////////////////////// @@ -92,6 +92,7 @@ icon_state = "waffles" trash = /obj/item/trash/waffles list_reagents = list("nutriment" = 7, "vitamin" = 1) + filling_color = "#D2691E" /obj/item/weapon/reagent_containers/food/snacks/soylentgreen name = "\improper Soylent Green" @@ -99,6 +100,7 @@ icon_state = "soylent_green" trash = /obj/item/trash/waffles list_reagents = list("nutriment" = 9, "vitamin" = 1) + filling_color = "#9ACD32" /obj/item/weapon/reagent_containers/food/snacks/soylenviridians name = "\improper Soylent Virdians" @@ -106,6 +108,7 @@ icon_state = "soylent_yellow" trash = /obj/item/trash/waffles list_reagents = list("nutriment" = 9, "vitamin" = 1) + filling_color = "#9ACD32" /obj/item/weapon/reagent_containers/food/snacks/rofflewaffles name = "roffle waffles" @@ -114,6 +117,7 @@ trash = /obj/item/trash/waffles bitesize = 4 list_reagents = list("nutriment" = 8, "mushroomhallucinogen" = 8, "vitamin" = 2) + filling_color = "#00BFFF" ////////////////////////////////////////////OTHER//////////////////////////////////////////// @@ -123,17 +127,19 @@ icon_state = "COOKIE!!!" bitesize = 1 list_reagents = list("nutriment" = 5) + filling_color = "#F0E68C" /obj/item/weapon/reagent_containers/food/snacks/donkpocket name = "\improper Donk-pocket" desc = "The food of choice for the seasoned traitor." icon_state = "donkpocket" list_reagents = list("nutriment" = 4) + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/donkpocket/warm + filling_color = "#CD853F" -/obj/item/weapon/reagent_containers/food/snacks/donkpocketwarm +/obj/item/weapon/reagent_containers/food/snacks/donkpocket/warm name = "\improper Warm Donk-pocket" desc = "The heated food of choice for the seasoned traitor." - icon_state = "donkpocket" list_reagents = list("nutriment" = 4, "omnizine" = 4) /obj/item/weapon/reagent_containers/food/snacks/fortunecookie @@ -141,18 +147,22 @@ desc = "A true prophecy in each cookie!" icon_state = "fortune_cookie" list_reagents = list("nutriment" = 3) + filling_color = "#F4A460" /obj/item/weapon/reagent_containers/food/snacks/poppypretzel name = "poppy pretzel" desc = "It's all twisted up!" icon_state = "poppypretzel" list_reagents = list("nutriment" = 5) + filling_color = "#F0E68C" /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" list_reagents = list("nutriment" = 5, "vitamin" = 1) + filling_color = "#F0E68C" + /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/New() ..() if(prob(10)) @@ -160,20 +170,13 @@ desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" reagents.add_reagent("omnizine", 5) -/obj/item/weapon/reagent_containers/food/snacks/appletart - name = "golden apple streusel tart" - desc = "A tasty dessert that won't make it through a metal detector." - icon_state = "gappletart" - trash = /obj/item/trash/plate - bitesize = 3 - list_reagents = list("nutriment" = 8, "gold" = 5, "vitamin" = 4) - /obj/item/weapon/reagent_containers/food/snacks/cracker name = "cracker" desc = "It's a salted cracker." icon_state = "cracker" bitesize = 1 list_reagents = list("nutriment" = 1) + filling_color = "#F0E68C" /obj/item/weapon/reagent_containers/food/snacks/hotdog name = "hotdog" @@ -181,21 +184,25 @@ icon_state = "hotdog" bitesize = 3 list_reagents = list("nutriment" = 6, "ketchup" = 3, "vitamin" = 3) + filling_color = "#8B0000" /obj/item/weapon/reagent_containers/food/snacks/meatbun name = "meat bun" desc = "Has the potential to not be Dog." icon_state = "meatbun" list_reagents = list("nutriment" = 4, "vitamin" = 2) + filling_color = "#8B0000" /obj/item/weapon/reagent_containers/food/snacks/sugarcookie name = "sugar cookie" desc = "Just like your little sister used to make." icon_state = "sugarcookie" list_reagents = list("nutriment" = 3, "sugar" = 3) + filling_color = "#CD853F" -/obj/item/weapon/reagent_containers/food/snacks/chococornet/ +/obj/item/weapon/reagent_containers/food/snacks/chococornet name = "chocolate cornet" desc = "Which side's the head, the fat end or the thin end?" icon_state = "chococornet" list_reagents = list("nutriment" = 6, "sodiumchloride" = 1, "vitamin" = 1) + filling_color = "#FFE4C4" diff --git a/code/modules/food&drinks/food/snacks_pie.dm b/code/modules/food&drinks/food/snacks_pie.dm index 8b0ba2f676ba1de..74255b13950df74 100644 --- a/code/modules/food&drinks/food/snacks_pie.dm +++ b/code/modules/food&drinks/food/snacks_pie.dm @@ -1,83 +1,105 @@ /obj/item/weapon/reagent_containers/food/snacks/pie + trash = /obj/item/trash/plate + bitesize = 3 + w_class = 3 + +/obj/item/weapon/reagent_containers/food/snacks/pie/plain + name = "plain pie" + desc = "A simple pie, still delicious." + icon_state = "pie" + custom_food_type = /obj/item/weapon/reagent_containers/food/snacks/customizable/pie + list_reagents = list("nutriment" = 4, "vitamin" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/pie/cream name = "banana cream pie" desc = "Just like back home, on clown planet! HONK!" icon_state = "pie" trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 4, "banana" = 5, "vitamin" = 2) + list_reagents = list("nutriment" = 4, "banana" = 5, "vitamin" = 5) -/obj/item/weapon/reagent_containers/food/snacks/pie/throw_impact(atom/hit_atom) +/obj/item/weapon/reagent_containers/food/snacks/pie/cream/throw_impact(atom/hit_atom) ..() new/obj/effect/decal/cleanable/pie_smudge(src.loc) reagents.reaction(hit_atom, TOUCH) del(src) // Not qdel, because it'll hit other mobs then the floor for runtimes. -/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis + +/obj/item/weapon/reagent_containers/food/snacks/pie/berryclafoutis name = "berry clafoutis" desc = "No black birds, this is a good sign." icon_state = "berryclafoutis" - trash = /obj/item/trash/plate list_reagents = list("nutriment" = 4, "berryjuice" = 5, "vitamin" = 2) -/obj/item/weapon/reagent_containers/food/snacks/meatpie + +/obj/item/weapon/reagent_containers/food/snacks/pie/meatpie name = "meat-pie" icon_state = "meatpie" desc = "An old barber recipe, very delicious!" - trash = /obj/item/trash/plate list_reagents = list("nutriment" = 10, "vitamin" = 5) -/obj/item/weapon/reagent_containers/food/snacks/tofupie + +/obj/item/weapon/reagent_containers/food/snacks/pie/tofupie name = "tofu-pie" icon_state = "meatpie" desc = "A delicious tofu pie." - trash = /obj/item/trash/plate list_reagents = list("nutriment" = 10, "vitamin" = 2) -/obj/item/weapon/reagent_containers/food/snacks/amanita_pie + + +/obj/item/weapon/reagent_containers/food/snacks/pie/amanita_pie name = "amanita pie" desc = "Sweet and tasty poison pie." icon_state = "amanita_pie" bitesize = 4 list_reagents = list("nutriment" = 5, "amatoxin" = 3, "mushroomhallucinogen" = 1, "vitamin" = 4) -/obj/item/weapon/reagent_containers/food/snacks/plump_pie + +/obj/item/weapon/reagent_containers/food/snacks/pie/plump_pie name = "plump pie" desc = "I bet you love stuff made out of plump helmets!" icon_state = "plump_pie" list_reagents = list("nutriment" = 8, "vitamin" = 4) -/obj/item/weapon/reagent_containers/food/snacks/plump_pie/New() + +/obj/item/weapon/reagent_containers/food/snacks/pie/plump_pie/New() ..() if(prob(10)) name = "exceptional plump pie" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" reagents.add_reagent("omnizine", 5) -/obj/item/weapon/reagent_containers/food/snacks/xemeatpie + +/obj/item/weapon/reagent_containers/food/snacks/pie/xemeatpie name = "xeno-pie" icon_state = "xenomeatpie" desc = "A delicious meatpie. Probably heretical." trash = /obj/item/trash/plate list_reagents = list("nutriment" = 10, "vitamin" = 5) -/obj/item/weapon/reagent_containers/food/snacks/applepie + + +/obj/item/weapon/reagent_containers/food/snacks/pie/applepie name = "apple pie" desc = "A pie containing sweet sweet love...or apple." icon_state = "applepie" list_reagents = list("nutriment" = 4, "vitamin" = 3) -/obj/item/weapon/reagent_containers/food/snacks/cherrypie + + +/obj/item/weapon/reagent_containers/food/snacks/pie/cherrypie name = "cherry pie" desc = "Taste so good, make a grown man cry." icon_state = "cherrypie" list_reagents = list("nutriment" = 4, "vitamin" = 2) -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie + +/obj/item/weapon/reagent_containers/food/snacks/pumpkinpie name = "pumpkin pie" desc = "A delicious treat for the autumn months." icon_state = "pumpkinpie" slice_path = /obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice slices_num = 5 - list_reagents = list("nutriment" = 15, "vitamin" = 3) + list_reagents = list("nutriment" = 15, "vitamin" = 5) /obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice name = "pumpkin pie slice" @@ -85,3 +107,8 @@ icon_state = "pumpkinpieslice" trash = /obj/item/trash/plate +/obj/item/weapon/reagent_containers/food/snacks/pie/appletart + name = "golden apple streusel tart" + desc = "A tasty dessert that won't make it through a metal detector." + icon_state = "gappletart" + list_reagents = list("nutriment" = 8, "gold" = 5, "vitamin" = 4) \ No newline at end of file diff --git a/code/modules/food&drinks/food/snacks_pizza.dm b/code/modules/food&drinks/food/snacks_pizza.dm index 1767faa7aca82ae..7a8bad746149f98 100644 --- a/code/modules/food&drinks/food/snacks_pizza.dm +++ b/code/modules/food&drinks/food/snacks_pizza.dm @@ -1,60 +1,72 @@ /////////////////////////////////////////////////PIZZA//////////////////////////////////////// -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza +/obj/item/weapon/reagent_containers/food/snacks/pizza + w_class = 3 slices_num = 6 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita +/obj/item/weapon/reagent_containers/food/snacks/pizza/margherita name = "margherita" desc = "The most cheezy pizza in galaxy." icon_state = "pizzamargherita" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/margheritaslice + slice_path = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/margherita slices_num = 6 list_reagents = list("nutriment" = 30, "tomatojuice" = 6, "vitamin" = 5) -/obj/item/weapon/reagent_containers/food/snacks/margheritaslice + + +/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/margherita name = "margherita slice" desc = "A slice of the most cheezy pizza in galaxy." icon_state = "pizzamargheritaslice" + filling_color = "#FFA500" -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza +/obj/item/weapon/reagent_containers/food/snacks/pizza/meatpizza name = "meatpizza" desc = "Greasy pizza with delicious meat." icon_state = "meatpizza" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice + slice_path = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/meatpizza slices_num = 6 list_reagents = list("nutriment" = 40, "tomatojuice" = 6, "vitamin" = 8) -/obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice +/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/meatpizza name = "meatpizza slice" desc = "A nutritious slice of meatpizza." icon_state = "meatpizzaslice" + filling_color = "#A52A2A" -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza +/obj/item/weapon/reagent_containers/food/snacks/pizza/mushroompizza name = "mushroom pizza" desc = "Very special pizza." icon_state = "mushroompizza" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice + slice_path = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/mushroompizza slices_num = 6 list_reagents = list("nutriment" = 30, "vitamin" = 5) -/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice +/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/mushroompizza name = "mushroom pizza slice" desc = "Maybe it is the last slice of pizza in your life." icon_state = "mushroompizzaslice" + filling_color = "#FFE4C4" -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza +/obj/item/weapon/reagent_containers/food/snacks/pizza/vegetablepizza name = "vegetable pizza" desc = "No one of Tomatos Sapiens were harmed during making this pizza." icon_state = "vegetablepizza" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice + slice_path = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/vegetablepizza slices_num = 6 list_reagents = list("nutriment" = 25, "tomatojuice" = 6, "oculine" = 12, "vitamin" = 5) -/obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice +/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/vegetablepizza name = "vegetable pizza slice" desc = "A slice of the most green pizza of all pizzas not containing green ingredients." icon_state = "vegetablepizzaslice" + filling_color = "#FFA500" + +/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/custom + name = "pizza slice" + icon_state = "pizzamargheritaslice" + filling_color = "#FFFFFF" /obj/item/pizzabox name = "pizza box" @@ -63,7 +75,7 @@ icon_state = "pizzabox1" var/open = 0 // Is the box open? var/ismessy = 0 // Fancy mess on the lid - var/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pizza // Content pizza + var/obj/item/weapon/reagent_containers/food/snacks/pizza/pizza // Content pizza var/list/boxes = list() // If the boxes are stacked, they come here var/boxtag = "" @@ -183,7 +195,7 @@ return - if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/)) // Long ass fucking object name + if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/pizza/)) // Long ass fucking object name if(open) user.drop_item() I.loc = src @@ -213,21 +225,21 @@ ..() /obj/item/pizzabox/margherita/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita(src) + pizza = new /obj/item/weapon/reagent_containers/food/snacks/pizza/margherita(src) boxtag = "Margherita Deluxe" update_icon() /obj/item/pizzabox/vegetable/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza(src) + pizza = new /obj/item/weapon/reagent_containers/food/snacks/pizza/vegetablepizza(src) boxtag = "Gourmet Vegatable" update_icon() /obj/item/pizzabox/mushroom/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza(src) + pizza = new /obj/item/weapon/reagent_containers/food/snacks/pizza/mushroompizza(src) boxtag = "Mushroom Special" update_icon() /obj/item/pizzabox/meat/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza(src) + pizza = new /obj/item/weapon/reagent_containers/food/snacks/pizza/meatpizza(src) boxtag = "Meatlover's Supreme" update_icon() \ No newline at end of file diff --git a/code/modules/food&drinks/food/snacks_salad.dm b/code/modules/food&drinks/food/snacks_salad.dm index 889b1a02b8db940..a2753415eab5a36 100644 --- a/code/modules/food&drinks/food/snacks_salad.dm +++ b/code/modules/food&drinks/food/snacks_salad.dm @@ -1,8 +1,9 @@ //this category is very little but I think that it has great potential to grow ////////////////////////////////////////////SALAD//////////////////////////////////////////// /obj/item/weapon/reagent_containers/food/snacks/salad - trash = /obj/item/trash/snack_bowl + trash = /obj/item/weapon/reagent_containers/glass/bowl bitesize = 3 + w_class = 3 /obj/item/weapon/reagent_containers/food/snacks/salad/New() ..() @@ -18,10 +19,10 @@ name = "herb salad" desc = "A tasty salad with apples on top." icon_state = "herbsalad" - list_reagents = list("nutriment" = 8, "vitamin" = 2) + list_reagents = list("nutriment" = 8, "vitamin" = 4) /obj/item/weapon/reagent_containers/food/snacks/salad/validsalad name = "valid salad" desc = "It's just an herb salad with meatballs and fried potato slices. Nothing suspicious about it." icon_state = "validsalad" - list_reagents = list("nutriment" = 8, "doctorsdelight" = 5, "vitamin" = 2) + list_reagents = list("nutriment" = 8, "doctorsdelight" = 5, "vitamin" = 4) diff --git a/code/modules/food&drinks/food/snacks_sandwichtoast.dm b/code/modules/food&drinks/food/snacks_sandwichtoast.dm index fb507194f107579..4c2a84c28e619d7 100644 --- a/code/modules/food&drinks/food/snacks_sandwichtoast.dm +++ b/code/modules/food&drinks/food/snacks_sandwichtoast.dm @@ -5,6 +5,7 @@ icon_state = "sandwich" trash = /obj/item/trash/plate list_reagents = list("nutriment" = 6, "vitamin" = 1) + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/toastedsandwich /obj/item/weapon/reagent_containers/food/snacks/toastedsandwich name = "toasted sandwich" diff --git a/code/modules/food&drinks/food/snacks_soup.dm b/code/modules/food&drinks/food/snacks_soup.dm index 4f99bb1092781bc..03f2969ac07d3d8 100644 --- a/code/modules/food&drinks/food/snacks_soup.dm +++ b/code/modules/food&drinks/food/snacks_soup.dm @@ -1,24 +1,40 @@ /obj/item/weapon/reagent_containers/food/snacks/soup + w_class = 3 + trash = /obj/item/weapon/reagent_containers/glass/bowl bitesize = 5 - trash = /obj/item/trash/snack_bowl /obj/item/weapon/reagent_containers/food/snacks/soup/New() ..() eatverb = pick("slurp","sip","suck","inhale","drink") -/obj/item/weapon/reagent_containers/food/snacks/soup/meatballsoup +/obj/item/weapon/reagent_containers/food/snacks/soup/wish + name = "wish soup" + desc = "I wish this was soup." + icon_state = "wishsoup" + list_reagents = list("nutriment" = 2, "water" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/soup/wish/New() + ..() + if(prob(25)) + desc = "A wish come true!" + reagents.add_reagent("nutriment", 9) + reagents.add_reagent("vitamin", 1) + else + reagents.add_reagent("water", 10) + +/obj/item/weapon/reagent_containers/food/snacks/soup/meatball name = "meatball soup" desc = "You've got balls kid, BALLS!" icon_state = "meatballsoup" list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 5) -/obj/item/weapon/reagent_containers/food/snacks/soup/slimesoup +/obj/item/weapon/reagent_containers/food/snacks/soup/slime name = "slime soup" desc = "If no water is available, you may substitute tears." icon_state = "slimesoup" list_reagents = list("nutriment" = 2, "slimejelly" = 5, "water" = 10, "vitamin" = 5) -/obj/item/weapon/reagent_containers/food/snacks/soup/bloodsoup +/obj/item/weapon/reagent_containers/food/snacks/soup/blood name = "tomato soup" desc = "Smells like copper." icon_state = "tomatosoup" @@ -30,42 +46,30 @@ icon_state = "clownstears" list_reagents = list("nutriment" = 4, "banana" = 5, "water" = 10, "vitamin" = 8) -/obj/item/weapon/reagent_containers/food/snacks/soup/vegetablesoup +/obj/item/weapon/reagent_containers/food/snacks/soup/vegetable name = "vegetable soup" desc = "A true vegan meal." icon_state = "vegetablesoup" list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 4) -/obj/item/weapon/reagent_containers/food/snacks/soup/nettlesoup +/obj/item/weapon/reagent_containers/food/snacks/soup/nettle name = "nettle soup" desc = "To think, the botanist would've beat you to death with one of these." icon_state = "nettlesoup" list_reagents = list("nutriment" = 8, "omnizine" = 5, "water" = 6, "vitamin" = 5) -/obj/item/weapon/reagent_containers/food/snacks/soup/mysterysoup +/obj/item/weapon/reagent_containers/food/snacks/soup/mystery name = "mystery soup" desc = "The mystery is, why aren't you eating it?" icon_state = "mysterysoup" list_reagents = list("nutriment" = 6, "tomatojuice" = 2) var/extra_reagent = null -/obj/item/weapon/reagent_containers/food/snacks/soup/mysterysoup/New() +/obj/item/weapon/reagent_containers/food/snacks/soup/mystery/New() ..() + 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/soup/wishsoup - name = "wish soup" - desc = "I wish this was soup." - icon_state = "wishsoup" -/obj/item/weapon/reagent_containers/food/snacks/soup/wishsoup/New() - ..() - if(prob(25)) - desc = "A wish come true!" - reagents.add_reagent("nutriment", 9) - reagents.add_reagent("vitamin", 1) - else - reagents.add_reagent("water", 10) - /obj/item/weapon/reagent_containers/food/snacks/soup/hotchili name = "hot chili" desc = "A five alarm Texan Chili!" @@ -84,29 +88,52 @@ icon_state = "monkeysdelight" list_reagents = list("nutriment" = 10, "banana" = 5, "blackpepper" = 1, "sodiumchloride" = 1, "vitamin" = 5) -/obj/item/weapon/reagent_containers/food/snacks/soup/tomatosoup +/obj/item/weapon/reagent_containers/food/snacks/soup/tomato name = "tomato soup" desc = "Drinking this feels like being a vampire! A tomato vampire..." icon_state = "tomatosoup" list_reagents = list("nutriment" = 8, "tomatojuice" = 10, "vitamin" = 3) -/obj/item/weapon/reagent_containers/food/snacks/soup/milosoup +/obj/item/weapon/reagent_containers/food/snacks/soup/milo name = "milosoup" desc = "The universes best soup! Yum!!!" icon_state = "milosoup" list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 3) -/obj/item/weapon/reagent_containers/food/snacks/soup/mushroomsoup +/obj/item/weapon/reagent_containers/food/snacks/soup/mushroom name = "chantrelle soup" desc = "A delicious and hearty mushroom soup." icon_state = "mushroomsoup" list_reagents = list("nutriment" = 8, "vitamin" = 5) -/obj/item/weapon/reagent_containers/food/snacks/soup/beetsoup +/obj/item/weapon/reagent_containers/food/snacks/soup/beet name = "beet soup" desc = "Wait, how do you spell it again..?" icon_state = "beetsoup" - list_reagents = list("nutriment" = 8,"vitamin" = 5) -/obj/item/weapon/reagent_containers/food/snacks/soup/beetsoup/New() + list_reagents = list("nutriment" = 8, "vitamin" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/soup/beet/New() ..() name = pick("borsch","bortsch","borstch","borsh","borshch","borscht") + + +/obj/item/weapon/reagent_containers/food/snacks/soup/spacylibertyduff + name = "spacy liberty duff" + desc = "Jello gelatin, from Alfred Hubbard's cookbook." + icon_state = "spacylibertyduff" + bitesize = 3 + list_reagents = list("nutriment" = 6, "mushroomhallucinogen" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/soup/amanitajelly + name = "amanita jelly" + desc = "Looks curiously toxic." + icon_state = "amanitajelly" + bitesize = 3 + list_reagents = list("nutriment" = 6, "amatoxin" = 6, "mushroomhallucinogen" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/soup/stew + name = "stew" + desc = "A nice and warm stew. Healthy and strong." + icon_state = "stew" + list_reagents = list("nutriment" = 10, "tomatojuice" = 5, "oculine" = 5, "water" = 5) + bitesize = 7 diff --git a/code/modules/food&drinks/food/snacks_spaghetti.dm b/code/modules/food&drinks/food/snacks_spaghetti.dm index da698fae091cc1a..cb3771f5c44ffb3 100644 --- a/code/modules/food&drinks/food/snacks_spaghetti.dm +++ b/code/modules/food&drinks/food/snacks_spaghetti.dm @@ -4,13 +4,17 @@ desc = "Now that's a nic'e pasta!" icon_state = "spaghetti" list_reagents = list("nutriment" = 1, "vitamin" = 1) + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti + filling_color = "#F0E68C" /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti name = "boiled spaghetti" - desc = "A plain dish of noodles, this sucks." + desc = "A plain dish of noodles, this needs more ingredients." icon_state = "spaghettiboiled" trash = /obj/item/trash/plate list_reagents = list("nutriment" = 2, "vitamin" = 1) + custom_food_type = /obj/item/weapon/reagent_containers/food/snacks/customizable/pasta + filling_color = "#F0E68C" /obj/item/weapon/reagent_containers/food/snacks/pastatomato name = "spaghetti" @@ -19,6 +23,7 @@ trash = /obj/item/trash/plate bitesize = 4 list_reagents = list("nutriment" = 6, "tomatojuice" = 10, "vitamin" = 4) + filling_color = "#DC143C" /obj/item/weapon/reagent_containers/food/snacks/copypasta name = "copypasta" @@ -27,6 +32,7 @@ trash = /obj/item/trash/plate bitesize = 4 list_reagents = list("nutriment" = 12, "tomatojuice" = 20, "vitamin" = 8) + filling_color = "#DC143C" /obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti name = "spaghetti and meatballs" @@ -34,16 +40,12 @@ icon_state = "meatballspaghetti" trash = /obj/item/trash/plate list_reagents = list("nutriment" = 8, "vitamin" = 4) + filling_color = "#F0E68C" /obj/item/weapon/reagent_containers/food/snacks/spesslaw name = "spesslaw" desc = "A lawyers favourite." icon_state = "spesslaw" - list_reagents = list("nutriment" = 8, "vitamin" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/eggplantparm - name = "eggplant parmigiana" - desc = "The only good recipe for eggplant." - icon_state = "eggplantparm" trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 6, "vitamin" = 3) + list_reagents = list("nutriment" = 8, "vitamin" = 6) + filling_color = "#F0E68C" diff --git a/code/modules/food&drinks/food/snacks_vend.dm b/code/modules/food&drinks/food/snacks_vend.dm index e04cb0d575bfafd..fec5f1cdc0f37ca 100644 --- a/code/modules/food&drinks/food/snacks_vend.dm +++ b/code/modules/food&drinks/food/snacks_vend.dm @@ -8,6 +8,8 @@ icon_state = "candy" trash = /obj/item/trash/candy list_reagents = list("nutriment" = 1, "sugar" = 3) + junkiness = 25 + filling_color = "#D2691E" /obj/item/weapon/reagent_containers/food/snacks/sosjerky name = "\improper Scaredy's Private Reserve Beef Jerky" @@ -15,6 +17,8 @@ desc = "Beef jerky made from the finest space cows." trash = /obj/item/trash/sosjerky list_reagents = list("nutriment" = 1, "sugar" = 3) + junkiness = 25 + filling_color = "#8B0000" /obj/item/weapon/reagent_containers/food/snacks/chips name = "chips" @@ -23,6 +27,8 @@ trash = /obj/item/trash/chips bitesize = 1 list_reagents = list("nutriment" = 1, "sugar" = 3) + junkiness = 20 + filling_color = "#FFD700" /obj/item/weapon/reagent_containers/food/snacks/no_raisin name = "4no raisins" @@ -30,12 +36,16 @@ desc = "Best raisins in the universe. Not sure why." trash = /obj/item/trash/raisins list_reagents = list("nutriment" = 2, "sugar" = 4) + junkiness = 25 + filling_color = "#8B0000" /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie name = "space twinkie" icon_state = "space_twinkie" desc = "Guaranteed to survive longer than you will." list_reagents = list("sugar" = 4) + junkiness = 25 + filling_color = "#FFD700" /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers name = "cheesie honkers" @@ -43,6 +53,8 @@ icon_state = "cheesie_honkers" trash = /obj/item/trash/cheesie list_reagents = list("nutriment" = 1, "sugar" = 3) + junkiness = 25 + filling_color = "#FFD700" /obj/item/weapon/reagent_containers/food/snacks/syndicake name = "syndi-cakes" @@ -50,3 +62,4 @@ desc = "An extremely moist snack cake that tastes just as good after being nuked." trash = /obj/item/trash/syndi_cakes list_reagents = list("nutriment" = 4, "doctorsdelight" = 5) + filling_color = "#F5F5DC" diff --git a/code/modules/food&drinks/kitchen machinery/microwave.dm b/code/modules/food&drinks/kitchen machinery/microwave.dm index c6229ec5410b229..62760d546866311 100644 --- a/code/modules/food&drinks/kitchen machinery/microwave.dm +++ b/code/modules/food&drinks/kitchen machinery/microwave.dm @@ -9,15 +9,12 @@ use_power = 1 idle_power_usage = 5 active_power_usage = 100 - flags = OPENCONTAINER | NOREACT var/operating = 0 // Is it on? var/dirty = 0 // = {0..100} Does it need cleaning? var/broken = 0 // ={0,1,2} How broken is it??? - var/global/list/datum/recipe/available_recipes // List of the recipes you can use - var/global/list/acceptable_items // List of the items you can put in - var/global/list/acceptable_reagents // List of the reagents you can put in - var/global/max_n_of_items = 0 + var/global/max_n_of_items = 10 var/efficiency = 0 + var/microwavepower = 1 // see code/modules/food/recipes_microwave.dm for recipes @@ -28,20 +25,6 @@ /obj/machinery/microwave/New() create_reagents(100) - if(!available_recipes) - available_recipes = new - for(var/type in (typesof(/datum/recipe) - /datum/recipe)) - available_recipes += new type - acceptable_items = new - acceptable_reagents = new - for(var/datum/recipe/recipe in available_recipes) - for(var/item in recipe.items) - acceptable_items |= item - for(var/reagent in recipe.reagents) - acceptable_reagents |= reagent - if(recipe.items) - max_n_of_items = max(max_n_of_items, recipe.items.len) - component_parts = list() component_parts += new /obj/item/weapon/circuitboard/microwave(null) component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) @@ -137,19 +120,29 @@ src.broken = 0 // just to be sure src.icon_state = "mw" src.flags = OPENCONTAINER + else if(src.dirty==100) // The microwave is all dirty so can't be used! user << "It's dirty!" return 1 - else if(is_type_in_list(O,acceptable_items)) + + else if(istype(O, /obj/item/weapon/storage/bag/tray)) + var/obj/item/weapon/storage/T = O + var/loaded = 0 + for(var/obj/item/weapon/reagent_containers/food/snacks/S in T.contents) + if (contents.len>=max_n_of_items) + user << "[src] is full, you cannot put more." + return 1 + T.remove_from_storage(S, src) + loaded++ + + if(loaded) + user << "You insert [loaded] items into [src]." + + + else if(istype(O,/obj/item/weapon/reagent_containers/food/snacks)) if (contents.len>=max_n_of_items) - user << "This [src] is full of ingredients, you cannot put more." + user << "[src] is full, you cannot put more." return 1 - if (istype(O,/obj/item/stack) && O:amount>1) - new O.type (src) - O:use(1) - user.visible_message( \ - "[user] has added one of [O] to \the [src].", \ - "You add one of [O] to \the [src].") else // user.unEquip(O) //This just causes problems so far as I can tell. -Pete if(!user.drop_item()) @@ -159,25 +152,10 @@ user.visible_message( \ "[user] has added \the [O] to \the [src].", \ "You add \the [O] to \the [src].") - else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ - istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ - istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ - ) - if (!O.reagents) - return 1 - for (var/datum/reagent/R in O.reagents.reagent_list) - if (!(R.id in acceptable_reagents)) - user << "Your [O] contains components unsuitable for cookery." - return 1 - //G.reagents.trans_to(src,G.amount_per_transfer_from_this) - else if(istype(O,/obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = O - user << "This is ridiculous. You can not fit \the [G.affecting] in this [src]." - return 1 + else - user << "You have no idea what you can cook with this." - return 1 - src.updateUsrDialog() + ..() + updateUsrDialog() /obj/machinery/microwave/attack_paw(mob/user as mob) return src.attack_hand(user) @@ -199,59 +177,33 @@ if(panel_open || !anchored) return var/dat = "
      " - if(src.broken > 0) + if(broken > 0) dat += "ERROR: 09734014-A2379-D18746 --Bad memory
      Contact your operator or use command line to rebase memory ///git checkout {HEAD} -a commit pull --rebase push {*NEW HEAD*}
      " //Thats how all the git fiddling looks to me - else if(src.operating) + else if(operating) dat += "Microwaving in progress!
      Please wait...!" - else if(src.dirty==100) - dat += "ERROR: >> 0 --Responce input zero
      Contact your operator of the device manifactor support." + else if(dirty==100) + dat += "ERROR: >> 0 --Response input zero
      Contact your operator of the device manifactor support." else var/list/items_counts = new - var/list/items_measures = new - var/list/items_measures_p = new for (var/obj/O in contents) - var/display_name = O.name - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) - items_measures[display_name] = "egg" - items_measures_p[display_name] = "eggs" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) - items_measures[display_name] = "tofu chunk" - items_measures_p[display_name] = "tofu chunks" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat - items_measures[display_name] = "slab of meat" - items_measures_p[display_name] = "slabs of meat" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - display_name = "Donk Pockets" - items_measures[display_name] = "donk pocket" - items_measures_p[display_name] = "donk pockets" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) - items_measures[display_name] = "fillet of meat" - items_measures_p[display_name] = "fillets of meat" - items_counts[display_name]++ + items_counts[O.name]++ + for (var/O in items_counts) var/N = items_counts[O] - if (!(O in items_measures)) - dat += "[capitalize(O)]: [N] [lowertext(O)]\s
      " - else - if (N==1) - dat += "[capitalize(O)]: [N] [items_measures[O]]
      " - else - dat += "[capitalize(O)]: [N] [items_measures_p[O]]
      " - - for (var/datum/reagent/R in reagents.reagent_list) - var/display_name = R.name - if (R.id == "capsaicin") - display_name = "hot sauce" - if (R.id == "frostoil") - display_name = "cold sauce" - dat += "[display_name]: [R.volume] unit\s
      " - - if (items_counts.len==0 && reagents.reagent_list.len==0) + dat += "[capitalize(O)]: [N]
      " + + if (items_counts.len==0) dat += "The microwave is empty." else dat = "

      Ingredients:

      [dat]" dat += "Turn on" - dat += "Eject ingredients" + dat += "Eject ingredients
      " + dat += "Microwave Power: [microwavepower*200]W
      " + dat += "200W" + dat += "400W" + dat += "600W" + dat += "800W" + dat += "1000W
      " var/datum/browser/popup = new(user, "microwave", name, 300, 300) popup.set_content(dat) @@ -266,67 +218,48 @@ if(stat & (NOPOWER|BROKEN)) return start() - if (reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run - if (!microwave_operate(10)) - abort() - return - stop() - return - var/datum/recipe/recipe = select_recipe(available_recipes,src) - var/obj/cooked - if (!recipe) - dirty += 1 - if (prob(max(10,dirty*5))) - if (!microwave_operate(4)) - abort() - return - muck_start() - microwave_operate(4) + if (prob(max(microwavepower*5,dirty*5))) + muck_start() + if (!microwaving(4)) muck_finish() - cooked = fail() - cooked.loc = src.loc return - else if (has_extra_item()) - if (!microwave_operate(4)) - abort() - return + muck_finish() + return + + else if (has_extra_item()) + if (!microwaving(4)) broke() - cooked = fail() - cooked.loc = src.loc - return - else - if (!microwave_operate(10)) - abort() - return - stop() - cooked = fail() - cooked.loc = src.loc return + + broke() + return + else - var/halftime = round(recipe.time/10/2) - if (!microwave_operate(halftime)) - abort() - return - if (!microwave_operate(halftime)) + + if(!microwaving(10)) abort() - cooked = fail() - cooked.loc = src.loc return - cooked = recipe.make_food(src) stop() - if(cooked) - cooked.loc = src.loc - for(var/i=1,iYou dispose of the microwave contents." src.updateUsrDialog() @@ -372,7 +300,6 @@ playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) src.visible_message("The microwave gets covered in muck!") src.dirty = 100 // Make it dirty so it can't be used util cleaned - src.flags = null //So you can't add condiments src.icon_state = "mwbloody" // Make it look dirty too src.operating = 0 // Turn it off again aferwards src.updateUsrDialog() @@ -388,21 +315,6 @@ src.operating = 0 // Turn it off again aferwards src.updateUsrDialog() -/obj/machinery/microwave/proc/fail() - var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src) - var/amount = 0 - for (var/obj/O in contents-ffuu) - amount++ - if (O.reagents) - var/id = O.reagents.get_master_reagent_id() - if (id) - amount+=O.reagents.get_reagent_amount(id) - qdel(O) - src.reagents.clear_reagents() - ffuu.reagents.add_reagent("carbon", amount) - ffuu.reagents.add_reagent("toxin", amount/10) - return ffuu - /obj/machinery/microwave/Topic(href, href_list) if(..() || panel_open) return @@ -418,5 +330,10 @@ if ("dispose") dispose() + if ("power") + var/amount = text2num(href_list["amount"]) + if(amount<1 || amount>5) + return + microwavepower = amount updateUsrDialog() return diff --git a/code/modules/food&drinks/kitchen machinery/processor.dm b/code/modules/food&drinks/kitchen machinery/processor.dm index ca681a46d2bd952..2c153acb1d3f70a 100644 --- a/code/modules/food&drinks/kitchen machinery/processor.dm +++ b/code/modules/food&drinks/kitchen machinery/processor.dm @@ -42,6 +42,10 @@ input = /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans output = /obj/item/weapon/reagent_containers/food/snacks/soydope +/datum/food_processor_process/spaghetti + input = /obj/item/weapon/reagent_containers/food/snacks/doughslice + output = /obj/item/weapon/reagent_containers/food/snacks/spaghetti + /* mobs */ /datum/food_processor_process/mob/process(loc, what) diff --git a/code/modules/food&drinks/food/snacks/food_mixtures.dm b/code/modules/food&drinks/recipes/food_mixtures.dm similarity index 51% rename from code/modules/food&drinks/food/snacks/food_mixtures.dm rename to code/modules/food&drinks/recipes/food_mixtures.dm index 02d2d686af22c11..ae4f352b6d209dd 100644 --- a/code/modules/food&drinks/food/snacks/food_mixtures.dm +++ b/code/modules/food&drinks/recipes/food_mixtures.dm @@ -81,7 +81,7 @@ /datum/chemical_reaction/cheesewheel/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) - new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location) + new /obj/item/weapon/reagent_containers/food/snacks/cheesewheel(location) return /datum/chemical_reaction/synthmeat @@ -110,3 +110,80 @@ result = "hell_ramen" required_reagents = list("capsaicin" = 1, "hot_ramen" = 6) result_amount = 6 + +/datum/chemical_reaction/cakebatter + name = "Cake Batter" + id = "cakebatter" + result = null + required_reagents = list("milk" = 5) + result_amount = 1 + required_container = /obj/item/weapon/reagent_containers/food/snacks/dough + mix_message = "The dough forms a cake batter." + +/datum/chemical_reaction/cakebatter/on_reaction(var/datum/reagents/holder) + var/obj/item/weapon/reagent_containers/food/snacks/S = new /obj/item/weapon/reagent_containers/food/snacks/cakebatter + S.loc = get_turf(holder.my_atom) + S.reagents.add_reagent("vitamin", 2) + if(holder && holder.my_atom) + qdel(holder.my_atom) + +/datum/chemical_reaction/piedough + name = "Pie Dough" + id = "piedough" + result = null + required_reagents = list("milk" = 5) + result_amount = 1 + required_container = /obj/item/weapon/reagent_containers/food/snacks/flatdough + mix_message = "The dough forms a pie dough." + +/datum/chemical_reaction/piedough/on_reaction(var/datum/reagents/holder) + var/obj/item/weapon/reagent_containers/food/snacks/S = new /obj/item/weapon/reagent_containers/food/snacks/piedough + S.loc = get_turf(holder.my_atom) + S.reagents.add_reagent("vitamin", 2) + if(holder && holder.my_atom) + qdel(holder.my_atom) + +/datum/chemical_reaction/cakebatter2 + name = "Cake Batter2" + id = "cakebatter2" + result = null + required_reagents = list("soymilk" = 5) + result_amount = 1 + required_container = /obj/item/weapon/reagent_containers/food/snacks/dough + mix_message = "The dough forms a cake batter." + +/datum/chemical_reaction/cakebatter2/on_reaction(var/datum/reagents/holder) + var/obj/item/weapon/reagent_containers/food/snacks/S = new /obj/item/weapon/reagent_containers/food/snacks/cakebatter + S.loc = get_turf(holder.my_atom) + if(holder && holder.my_atom) + qdel(holder.my_atom) + +/datum/chemical_reaction/piedough2 + name = "Pie Dough2" + id = "piedough2" + result = null + required_reagents = list("soymilk" = 5) + result_amount = 1 + required_container = /obj/item/weapon/reagent_containers/food/snacks/flatdough + mix_message = "The dough forms a pie dough." + +/datum/chemical_reaction/piedough2/on_reaction(var/datum/reagents/holder) + var/obj/item/weapon/reagent_containers/food/snacks/S = new /obj/item/weapon/reagent_containers/food/snacks/piedough + S.loc = get_turf(holder.my_atom) + if(holder && holder.my_atom) + qdel(holder.my_atom) + +/datum/chemical_reaction/imitationcarpmeat + name = "Imitation Carpmeat" + id = "imitationcarpmeat" + result = null + required_reagents = list("carpotoxin" = 5) + result_amount = 1 + required_container = /obj/item/weapon/reagent_containers/food/snacks/tofu + mix_message = "The mixture becomes similar to carp meat." + +/datum/chemical_reaction/imitationcarpmeat/on_reaction(var/datum/reagents/holder) + var/obj/item/weapon/reagent_containers/food/snacks/S = new /obj/item/weapon/reagent_containers/food/snacks/carpmeat/imitation + S.loc = get_turf(holder.my_atom) + if(holder && holder.my_atom) + qdel(holder.my_atom) diff --git a/code/modules/food&drinks/recipes/microwave/recipes.dm b/code/modules/food&drinks/recipes/microwave/recipes.dm deleted file mode 100644 index 7e4ec7c1cdbc884..000000000000000 --- a/code/modules/food&drinks/recipes/microwave/recipes.dm +++ /dev/null @@ -1,85 +0,0 @@ - -// see code/datums/recipe.dm - -////////////////////////////////////////////////FOOD ADDITTIONS//////////////////////////////////////////////// - -/datum/recipe/wrap - reagents = list("soysauce" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/friedegg, - /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/wrap - -/datum/recipe/beans - reagents = list("ketchup" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans, - /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/beans - -////////////////////////////////////////////////MISC RECIPE's//////////////////////////////////////////////// - -/datum/recipe/loadedbakedpotato - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/potato, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato - -/datum/recipe/cheesyfries - items = list( - /obj/item/weapon/reagent_containers/food/snacks/fries, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/cheesyfries - -/datum/recipe/popcorn - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/corn - ) - result = /obj/item/weapon/reagent_containers/food/snacks/popcorn - -/datum/recipe/spacylibertyduff - reagents = list("water" = 5, "vodka" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff - -/datum/recipe/amanitajelly - reagents = list("water" = 5, "vodka" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/amanitajelly - make_food(var/obj/container as obj) - var/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/being_cooked = ..(container) - being_cooked.reagents.del_reagent("amatoxin") - return being_cooked - -/datum/recipe/candiedapple - reagents = list("water" = 5, "sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/apple - ) - result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple - -/datum/recipe/chococoin - items = list( - /obj/item/weapon/coin, - /obj/item/weapon/reagent_containers/food/snacks/chocolatebar, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/chococoin - -/datum/recipe/chocoorange - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange, - /obj/item/weapon/reagent_containers/food/snacks/chocolatebar, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/chocoorange diff --git a/code/modules/food&drinks/recipes/microwave/recipes_bread.dm b/code/modules/food&drinks/recipes/microwave/recipes_bread.dm deleted file mode 100644 index 396ceeb7043bc83..000000000000000 --- a/code/modules/food&drinks/recipes/microwave/recipes_bread.dm +++ /dev/null @@ -1,78 +0,0 @@ - -// see code/datums/recipe.dm - -////////////////////////////////////////////////BREAD//////////////////////////////////////////////// - -/datum/recipe/bread/plain - reagents = list("flour" = 15) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/bread - -/datum/recipe/bread/meat - reagents = list("flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/meatbread - -/datum/recipe/bread/xenomeat - reagents = list("flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/xenomeatbread - -/datum/recipe/bread/spidermeat - reagents = list("flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/spidermeat, - /obj/item/weapon/reagent_containers/food/snacks/spidermeat, - /obj/item/weapon/reagent_containers/food/snacks/spidermeat, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/spidermeatbread - -/datum/recipe/bread/banana - reagents = list("milk" = 5, "flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/banana, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/bananabread - -/datum/recipe/bread/tofu - reagents = list("flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/tofubread - -/datum/recipe/bread/creamcheese - reagents = list("flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/creamcheesebread - -/datum/recipe/bread/baguette - reagents = list("sodiumchloride" = 1, "blackpepper" = 1, "flour" = 10) - result = /obj/item/weapon/reagent_containers/food/snacks/baguette diff --git a/code/modules/food&drinks/recipes/microwave/recipes_burger.dm b/code/modules/food&drinks/recipes/microwave/recipes_burger.dm deleted file mode 100644 index 8823a0928f52b9b..000000000000000 --- a/code/modules/food&drinks/recipes/microwave/recipes_burger.dm +++ /dev/null @@ -1,194 +0,0 @@ - -// see code/datums/recipe.dm - -////////////////////////////////////////////////BURGERS//////////////////////////////////////////////// - -/datum/recipe/burger/human - make_food(var/obj/container as obj) - var/human_name - var/human_job - for (var/obj/item/weapon/reagent_containers/food/snacks/meat/human/HM in container) - if (!HM.subjectname) - continue - human_name = HM.subjectname - human_job = HM.subjectjob - break - var/lastname_index = findtext(human_name, " ") - if (lastname_index) - human_name = copytext(human_name,lastname_index+1) - - var/obj/item/weapon/reagent_containers/food/snacks/burger/human/HB = ..(container) - HB.name = human_name+HB.name - HB.job = human_job - return HB - - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat/human - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/human - -/datum/recipe/burger/plain - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat //do not place this recipe before /datum/recipe/humanburger - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger - -/datum/recipe/burger/appendix - reagents = list("flour" = 5) - items = list( - /obj/item/organ/appendix - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/appendix - -/datum/recipe/burger/brain - reagents = list("flour" = 5) - items = list( - /obj/item/organ/brain - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/brain - -/datum/recipe/burger/xeno - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/xenomeat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/xeno - -/datum/recipe/burger/fish - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/carpmeat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/fish - -/datum/recipe/burger/tofu - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/tofu - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/tofu - -/datum/recipe/burger/ghost - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/ectoplasm - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/ghost - -/datum/recipe/burger/clown - reagents = list("flour" = 5) - items = list( - /obj/item/clothing/mask/gas/clown_hat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/clown - -/datum/recipe/burger/mime - reagents = list("flour" = 5) - items = list( - /obj/item/clothing/mask/gas/mime - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/mime - -/datum/recipe/burger/red - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/toy/crayon/red, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/red - -/datum/recipe/burger/orange - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/toy/crayon/orange, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/orange - -/datum/recipe/burger/yellow - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/toy/crayon/yellow, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/yellow - -/datum/recipe/burger/green - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/toy/crayon/green, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/green - -/datum/recipe/burger/blue - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/toy/crayon/blue, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/blue - -/datum/recipe/burger/purple - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/toy/crayon/purple, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/purple - -/datum/recipe/burger/spell - reagents = list("flour" = 5) - items = list( - /obj/item/clothing/head/wizard/fake, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/spell - -/datum/recipe/burger/spell - reagents = list("flour" = 5) - items = list( - /obj/item/clothing/head/wizard, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/spell - -/datum/recipe/burger/bigbite - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/bigbite - -/datum/recipe/burger/superbite - reagents = list("sodiumchloride" = 5, "blackpepper" = 5, "flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - - ) - result = /obj/item/weapon/reagent_containers/food/snacks/burger/superbite - -/datum/recipe/burger/slime - reagents = list("slimejelly" = 5, "flour" = 5) - items = list() - result = /obj/item/weapon/reagent_containers/food/snacks/burger/jelly/slime - -/datum/recipe/burger/jelly - reagents = list("cherryjelly" = 5, "flour" = 5) - items = list() - result = /obj/item/weapon/reagent_containers/food/snacks/burger/jelly/cherry diff --git a/code/modules/food&drinks/recipes/microwave/recipes_cake.dm b/code/modules/food&drinks/recipes/microwave/recipes_cake.dm deleted file mode 100644 index 25314c6e22b8218..000000000000000 --- a/code/modules/food&drinks/recipes/microwave/recipes_cake.dm +++ /dev/null @@ -1,110 +0,0 @@ - -// see code/datums/recipe.dm - -////////////////////////////////////////////////CAKE//////////////////////////////////////////////// - -/datum/recipe/cake/carrot - reagents = list("milk" = 5, "flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/carrotcake - -/datum/recipe/cake/cheese - reagents = list("milk" = 5, "flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/cheesecake - -/datum/recipe/cake/plain - reagents = list("milk" = 5, "flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/plaincake - -/datum/recipe/cake/birthday - reagents = list("milk" = 5, "flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/clothing/head/cakehat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/birthdaycake - -/datum/recipe/cake/apple - reagents = list("milk" = 5, "flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/apple, - /obj/item/weapon/reagent_containers/food/snacks/grown/apple, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/applecake - -/datum/recipe/cake/orange - reagents = list("milk" = 5, "flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange, - /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/orangecake - -/datum/recipe/cake/lime - reagents = list("milk" = 5, "flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime, - /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/limecake - -/datum/recipe/cake/lemon - reagents = list("milk" = 5, "flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon, - /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/lemoncake - -/datum/recipe/cake/chocolate - reagents = list("milk" = 5, "flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/chocolatebar, - /obj/item/weapon/reagent_containers/food/snacks/chocolatebar, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/chocolatecake - -/datum/recipe/cake/brain - reagents = list("milk" = 5, "flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/organ/brain - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/store/braincake diff --git a/code/modules/food&drinks/recipes/microwave/recipes_egg.dm b/code/modules/food&drinks/recipes/microwave/recipes_egg.dm deleted file mode 100644 index 7797053ffbf406a..000000000000000 --- a/code/modules/food&drinks/recipes/microwave/recipes_egg.dm +++ /dev/null @@ -1,40 +0,0 @@ - -////////////////////////////////////////////////EGG RECIPE's//////////////////////////////////////////////// - -/datum/recipe/egg/fried - reagents = list("sodiumchloride" = 1, "blackpepper" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg - ) - result = /obj/item/weapon/reagent_containers/food/snacks/friedegg - -/datum/recipe/egg/boiled - reagents = list("water" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg - ) - result = /obj/item/weapon/reagent_containers/food/snacks/boiledegg - -/datum/recipe/egg/omelette - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/omelette - -/datum/recipe/egg/chocolate - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/chocolatebar, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/chocolateegg - -/datum/recipe/egg/benedict - items = list( - /obj/item/weapon/reagent_containers/food/snacks/friedegg, - /obj/item/weapon/reagent_containers/food/snacks/meatsteak, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/benedict diff --git a/code/modules/food&drinks/recipes/microwave/recipes_meat.dm b/code/modules/food&drinks/recipes/microwave/recipes_meat.dm deleted file mode 100644 index 81506429ae05713..000000000000000 --- a/code/modules/food&drinks/recipes/microwave/recipes_meat.dm +++ /dev/null @@ -1,145 +0,0 @@ - -////////////////////////////////////////////////KEBABS NO REMOVE//////////////////////////////////////////////// - -/datum/recipe/kebab/human - items = list( - /obj/item/stack/rods, - /obj/item/weapon/reagent_containers/food/snacks/meat/human, - /obj/item/weapon/reagent_containers/food/snacks/meat/human, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/human/kebab - -/datum/recipe/kebab/monkey - items = list( - /obj/item/stack/rods, - /obj/item/weapon/reagent_containers/food/snacks/meat/monkey, - /obj/item/weapon/reagent_containers/food/snacks/meat/monkey, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/monkeykebab - -/datum/recipe/kebab/tofu - items = list( - /obj/item/stack/rods, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/tofukebab - -////////////////////////////////////////////////FISH//////////////////////////////////////////////// - -/datum/recipe/carpmeat - reagents = list("carpotoxin" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/tofu - ) - result = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/imitation - -/datum/recipe/cubancarp - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/chili, - /obj/item/weapon/reagent_containers/food/snacks/carpmeat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/cubancarp - -/datum/recipe/fishandchips - items = list( - /obj/item/weapon/reagent_containers/food/snacks/fries, - /obj/item/weapon/reagent_containers/food/snacks/carpmeat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/fishandchips - -/datum/recipe/fishfingers - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/carpmeat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/fishfingers - -/datum/recipe/sashimi - reagents = list("soysauce" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/spidereggs, - /obj/item/weapon/reagent_containers/food/snacks/carpmeat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sashimi - -////////////////////////////////////////////////MR SPIDER//////////////////////////////////////////////// - -/datum/recipe/boiledspiderleg - reagents = list("water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/spiderleg, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/boiledspiderleg - -/datum/recipe/spidereggsham - reagents = list("sodiumchloride" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/spidereggs, - /obj/item/weapon/reagent_containers/food/snacks/spidermeat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/spidereggsham - -////////////////////////////////////////////////MISC RECIPE's//////////////////////////////////////////////// - -/datum/recipe/cornedbeef - reagents = list("sodiumchloride" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage, - /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/cornedbeef - -/datum/recipe/wingfangchu - reagents = list("soysauce" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/wingfangchu - -/datum/recipe/meatsteak - reagents = list("sodiumchloride" = 1, "blackpepper" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/meatsteak - -/datum/recipe/enchiladas - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/grown/chili, - /obj/item/weapon/reagent_containers/food/snacks/grown/chili, - /obj/item/weapon/reagent_containers/food/snacks/grown/corn, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas - -/datum/recipe/stew - reagents = list("water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/grown/potato, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/stew - -/datum/recipe/stewedsoymeat - items = list( - /obj/item/weapon/reagent_containers/food/snacks/soydope, - /obj/item/weapon/reagent_containers/food/snacks/soydope, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat - -/datum/recipe/sausage - items = list( - /obj/item/weapon/reagent_containers/food/snacks/faggot, - /obj/item/weapon/reagent_containers/food/snacks/meat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sausage diff --git a/code/modules/food&drinks/recipes/microwave/recipes_pastry.dm b/code/modules/food&drinks/recipes/microwave/recipes_pastry.dm deleted file mode 100644 index 1b470763aa00adc..000000000000000 --- a/code/modules/food&drinks/recipes/microwave/recipes_pastry.dm +++ /dev/null @@ -1,193 +0,0 @@ - -////////////////////////////////////////////////DONUTS//////////////////////////////////////////////// - -/datum/recipe/donut - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donut - -/datum/recipe/donut/jelly - reagents = list("berryjuice" = 5, "flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly - -/datum/recipe/donut/jelly/slime - reagents = list("slimejelly" = 5, "flour" = 5) - result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/slimejelly - -/datum/recipe/donut/jelly/cherry - reagents = list("cherryjelly" = 5, "flour" = 5) - result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/cherryjelly - -/datum/recipe/chaosdonut - reagents = list("frostoil" = 5, "capsaicin" = 5, "flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donut/chaos - - -////////////////////////////////////////////////WAFFLES//////////////////////////////////////////////// - -/datum/recipe/waffles - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/waffles - - -/datum/recipe/waffles/soylenviridians - reagents = list("flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soylenviridians - -/datum/recipe/waffles/soylentgreen - reagents = list("flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat/human, - /obj/item/weapon/reagent_containers/food/snacks/meat/human, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soylentgreen - - -/datum/recipe/waffles/roffle - reagents = list("mushroomhallucinogen" = 5, "flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/rofflewaffles - -////////////////////////////////////////////////DONKPOCCKETS//////////////////////////////////////////////// - -/datum/recipe/donkpocket - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/faggot - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket - -/datum/recipe/donkpocketwarm - reagents = list() - items = list( - /obj/item/weapon/reagent_containers/food/snacks/donkpocket - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donkpocketwarm/ - - -////////////////////////////////////////////////MUFFINS//////////////////////////////////////////////// - -/datum/recipe/muffin - reagents = list("milk" = 5, "flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/muffin - -/datum/recipe/muffin/berry - reagents = list("milk" = 5, "flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/berries - ) - result = /obj/item/weapon/reagent_containers/food/snacks/muffin/berry - -/datum/recipe/muffin/booberry - reagents = list("milk" = 5, "flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/berries, - /obj/item/weapon/ectoplasm - ) - result = /obj/item/weapon/reagent_containers/food/snacks/muffin/booberry - -/datum/recipe/muffin/chawanmushi - reagents = list("water" = 5, "soysauce" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/chawanmushi - -////////////////////////////////////////////OTHER//////////////////////////////////////////// - -/datum/recipe/hotdog - reagents = list("ketchup" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/sausage, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/hotdog - -/datum/recipe/meatbun - reagents = list("soysauce" = 5, "flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/faggot, - /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/meatbun - -/datum/recipe/sugarcookie - reagents = list("flour" = 5, "sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sugarcookie - -/datum/recipe/fortunecookie - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/paper, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/fortunecookie -/datum/recipe/fortunecookie/make_food(var/obj/container as obj) - var/obj/item/weapon/paper/paper = locate() in container - paper.loc = null //prevent deletion - var/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/being_cooked = ..(container) - paper.loc = being_cooked - being_cooked.trash = paper //so the paper is left behind as trash without special-snowflake(TM Nodrak) code ~carn - return being_cooked - -/datum/recipe/poppypretzel - reagents = list("flour" = 5) - items = list( - /obj/item/seeds/poppyseed, - /obj/item/weapon/reagent_containers/food/snacks/egg, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel - -/datum/recipe/plumphelmetbiscuit - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit - -/datum/recipe/appletart - reagents = list("sugar" = 5, "milk" = 5, "flour" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/appletart - -/datum/recipe/cracker - reagents = list("flour" = 5, "sodiumchloride" = 1) - result = /obj/item/weapon/reagent_containers/food/snacks/cracker - -/datum/recipe/chococornet - reagents = list("flour" = 10, "sodiumchloride" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/chocolatebar, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/chococornet diff --git a/code/modules/food&drinks/recipes/microwave/recipes_pie.dm b/code/modules/food&drinks/recipes/microwave/recipes_pie.dm deleted file mode 100644 index 83afd98f833c309..000000000000000 --- a/code/modules/food&drinks/recipes/microwave/recipes_pie.dm +++ /dev/null @@ -1,76 +0,0 @@ - -// see code/datums/recipe.dm - -////////////////////////////////////////////////PIES//////////////////////////////////////////////// - -/datum/recipe/pie/banana - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/banana, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/pie - -/datum/recipe/pie/meat - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/meatpie - -/datum/recipe/pie/tofu - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/tofu, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/tofupie - -/datum/recipe/pie/xemeat - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/xemeatpie - -/datum/recipe/pie/cherry - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/cherries, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/cherrypie - -/datum/recipe/pie/berryclafoutis - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/berries, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis - -/datum/recipe/pie/amanita - reagents = list("flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/amanita_pie - -/datum/recipe/pie/plump - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/plump_pie - - -/datum/recipe/pie/apple - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/apple, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/applepie - -/datum/recipe/pie/pumpkin - reagents = list("milk" = 5, "sugar" = 5, "flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin, - /obj/item/weapon/reagent_containers/food/snacks/egg, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie diff --git a/code/modules/food&drinks/recipes/microwave/recipes_pizza.dm b/code/modules/food&drinks/recipes/microwave/recipes_pizza.dm deleted file mode 100644 index 6aee67ae1114755..000000000000000 --- a/code/modules/food&drinks/recipes/microwave/recipes_pizza.dm +++ /dev/null @@ -1,47 +0,0 @@ - -////////////////////////////////////////////////PIZZA!!!//////////////////////////////////////////////// - -/datum/recipe/pizza/margherita - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita - -/datum/recipe/pizza/meat - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza - -/datum/recipe/pizza/mushroom - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza - -/datum/recipe/pizza/vegetable - reagents = list("flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant, - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/corn, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza - - diff --git a/code/modules/food&drinks/recipes/microwave/recipes_salad.dm b/code/modules/food&drinks/recipes/microwave/recipes_salad.dm deleted file mode 100644 index dbb60ad54bd27fc..000000000000000 --- a/code/modules/food&drinks/recipes/microwave/recipes_salad.dm +++ /dev/null @@ -1,37 +0,0 @@ -////////////////////////////////////////////////SALADS//////////////////////////////////////////////// - -/datum/recipe/salad/herb - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/apple, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/salad/herbsalad - make_food(var/obj/container as obj) - var/obj/item/weapon/reagent_containers/food/snacks/salad/herbsalad/being_cooked = ..(container) - being_cooked.reagents.del_reagent("toxin") - return being_cooked - -/datum/recipe/salad/aesir - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus, - /obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/salad/aesirsalad - -/datum/recipe/salad/valid - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris, - /obj/item/weapon/reagent_containers/food/snacks/grown/potato, - /obj/item/weapon/reagent_containers/food/snacks/faggot, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/salad/validsalad - make_food(var/obj/container as obj) - var/obj/item/weapon/reagent_containers/food/snacks/salad/validsalad/being_cooked = ..(container) - being_cooked.reagents.del_reagent("toxin") - return being_cooked \ No newline at end of file diff --git a/code/modules/food&drinks/recipes/microwave/recipes_sandwichtoast.dm b/code/modules/food&drinks/recipes/microwave/recipes_sandwichtoast.dm deleted file mode 100644 index 70347693bb4b16f..000000000000000 --- a/code/modules/food&drinks/recipes/microwave/recipes_sandwichtoast.dm +++ /dev/null @@ -1,82 +0,0 @@ - -// see code/datums/recipe.dm - -////////////////////////////////////////////////SANDWICHES//////////////////////////////////////////////// - -/datum/recipe/sandwich/plain - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meatsteak, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sandwich - -/datum/recipe/sandwich/toasted - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sandwich - ) - result = /obj/item/weapon/reagent_containers/food/snacks/toastedsandwich - -/datum/recipe/sandwich/grilledcheese - items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/grilledcheese - -/datum/recipe/sandwich/twobread - reagents = list("wine" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/twobread - -/datum/recipe/sandwich/slime - reagents = list("slimejelly" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime - -/datum/recipe/sandwich/cherry - reagents = list("cherryjelly" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry - -/datum/recipe/sandwich/notasandwich - items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - /obj/item/clothing/mask/fakemoustache, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/notasandwich - -/datum/recipe/sandwich/icecream - reagents = list("ice" = 5, "cream" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/icecream, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich - -////////////////////////////////////////////////TOAST//////////////////////////////////////////////// - -/datum/recipe/toast/slime - reagents = list("slimejelly" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime - -/datum/recipe/toast/jellied - reagents = list("cherryjelly" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/breadslice, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry diff --git a/code/modules/food&drinks/recipes/microwave/recipes_soup.dm b/code/modules/food&drinks/recipes/microwave/recipes_soup.dm deleted file mode 100644 index d7ce9e26bb96065..000000000000000 --- a/code/modules/food&drinks/recipes/microwave/recipes_soup.dm +++ /dev/null @@ -1,125 +0,0 @@ - -// see code/datums/recipe.dm - -////////////////////////////////////////////////SOUP//////////////////////////////////////////////// - -/datum/recipe/soup/meatball - reagents = list("water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/faggot , - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/potato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/meatballsoup - -/datum/recipe/soup/vegetable - reagents = list("water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, - /obj/item/weapon/reagent_containers/food/snacks/grown/corn, - /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant, - /obj/item/weapon/reagent_containers/food/snacks/grown/potato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/vegetablesoup - -/datum/recipe/soup/nettle - reagents = list("water" = 10) - items = list( - /obj/item/weapon/grown/nettle, - /obj/item/weapon/reagent_containers/food/snacks/grown/potato, - /obj/item/weapon/reagent_containers/food/snacks/egg, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/nettlesoup - -/datum/recipe/soup/wish - reagents = list("water" = 20) - result= /obj/item/weapon/reagent_containers/food/snacks/soup/wishsoup - -/datum/recipe/soup/hotchili - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/grown/chili, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/hotchili - -/datum/recipe/soup/coldchili - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/coldchili - -/datum/recipe/soup/tomato - reagents = list("water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/tomatosoup - -/datum/recipe/soup/milo - reagents = list("water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/soydope, - /obj/item/weapon/reagent_containers/food/snacks/soydope, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/milosoup - -/datum/recipe/soup/blood - reagents = list("blood" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blood, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blood, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/bloodsoup - -/datum/recipe/soup/slime - reagents = list("water" = 10, "slimejelly" = 5) - items = list( - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/slimesoup - -/datum/recipe/soup/clownstears - reagents = list("water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/banana, - /obj/item/weapon/ore/bananium, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/clownstears - -/datum/recipe/soup/mystery - reagents = list("water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/badrecipe, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/mysterysoup - -/datum/recipe/soup/mushroom - reagents = list("water" = 5, "milk" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/mushroomsoup - -/datum/recipe/soup/beet - reagents = list("water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet, - /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/beetsoup - -/datum/recipe/soup/monkeysdelight - reagents = list("sodiumchloride" = 1, "blackpepper" = 1, "flour" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/monkeycube, - /obj/item/weapon/reagent_containers/food/snacks/grown/banana, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/soup/monkeysdelight diff --git a/code/modules/food&drinks/recipes/microwave/recipes_spaghetti.dm b/code/modules/food&drinks/recipes/microwave/recipes_spaghetti.dm deleted file mode 100644 index fa3ff8c5c4eea26..000000000000000 --- a/code/modules/food&drinks/recipes/microwave/recipes_spaghetti.dm +++ /dev/null @@ -1,59 +0,0 @@ - -// see code/datums/recipe.dm - -////////////////////////////////////////////////SPAGHETTI//////////////////////////////////////////////// - -/datum/recipe/spaghetti/plain - reagents = list("flour" = 5) - result= /obj/item/weapon/reagent_containers/food/snacks/spaghetti - -/datum/recipe/spaghetti/boiled - reagents = list("water" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/spaghetti, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti - -/datum/recipe/spaghetti/pastatomato - reagents = list("water" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/spaghetti, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/pastatomato - -/datum/recipe/spaghetti/copypasta - items = list( - /obj/item/weapon/reagent_containers/food/snacks/pastatomato, - /obj/item/weapon/reagent_containers/food/snacks/pastatomato, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/copypasta - -/datum/recipe/spaghetti/meatball - reagents = list("water" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/spaghetti, - /obj/item/weapon/reagent_containers/food/snacks/faggot, - /obj/item/weapon/reagent_containers/food/snacks/faggot, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti - -/datum/recipe/spaghetti/spesslaw - reagents = list("water" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/spaghetti, - /obj/item/weapon/reagent_containers/food/snacks/faggot, - /obj/item/weapon/reagent_containers/food/snacks/faggot, - /obj/item/weapon/reagent_containers/food/snacks/faggot, - /obj/item/weapon/reagent_containers/food/snacks/faggot, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/spesslaw - -/datum/recipe/spaghetti/eggplantparm - items = list( - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/eggplantparm diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm new file mode 100644 index 000000000000000..f6162ef472960f8 --- /dev/null +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm @@ -0,0 +1,60 @@ + +// see code/module/crafting/table.dm + +////////////////////////////////////////////////BREAD//////////////////////////////////////////////// + +/datum/table_recipe/meatbread + name = "Meat bread" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/meat = 3, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/meat + +/datum/table_recipe/xenomeatbread + name = "Xenomeat bread" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/xenomeat = 3, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/xenomeat + +/datum/table_recipe/spidermeatbread + name = "Spidermeat bread" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/spidermeat = 3, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/spidermeat + +/datum/table_recipe/banananutbread + name = "Banana nut bread" + reqs = list( + /datum/reagent/consumable/milk = 5, + /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/egg = 3, + /obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/banana + +/datum/table_recipe/tofubread + name = "Tofu bread" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/tofu = 3, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/tofu + +/datum/table_recipe/creamcheesebread + name = "Cream cheese bread" + reqs = list( + /datum/reagent/consumable/milk = 5, + /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/creamcheese + diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm new file mode 100644 index 000000000000000..d1d49e7394bbce2 --- /dev/null +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm @@ -0,0 +1,193 @@ + +// see code/module/crafting/table.dm + +////////////////////////////////////////////////BURGERS//////////////////////////////////////////////// + + +/datum/table_recipe/humanburger + name = "Human burger" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/bun = 1, + /obj/item/weapon/reagent_containers/food/snacks/meat/human = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/human + +/datum/table_recipe/burger + name = "Burger" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/meat = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + + result = /obj/item/weapon/reagent_containers/food/snacks/burger/plain + +/datum/table_recipe/appendixburger + name = "Appendix burger" + reqs = list( + /obj/item/organ/appendix = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/appendix + +/datum/table_recipe/brainburger + name = "Brain burger" + reqs = list( + /obj/item/organ/brain = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/brain + +/datum/table_recipe/xenoburger + name = "Xeno burger" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/xenomeat = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/xeno + +/datum/table_recipe/fishburger + name = "Fish burger" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/fish + +/datum/table_recipe/tofuburger + name = "Tofu burger" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/tofu = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/tofu + +/datum/table_recipe/ghostburger + name = "Ghost burger" + reqs = list( + /obj/item/weapon/ectoplasm = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/ghost + +/datum/table_recipe/clownburger + name = "Clown burger" + reqs = list( + /obj/item/clothing/mask/gas/clown_hat = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/clown + +/datum/table_recipe/mimeburger + name = "Mime burger" + reqs = list( + /obj/item/clothing/mask/gas/mime = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/mime + +/datum/table_recipe/redburger + name = "Red burger" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/meat = 1, + /obj/item/toy/crayon/red = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/red + +/datum/table_recipe/orangeburger + name = "Orange burger" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/meat = 1, + /obj/item/toy/crayon/orange = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/orange + +/datum/table_recipe/yellowburger + name = "Yellow burger" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/meat = 1, + /obj/item/toy/crayon/yellow = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/yellow + +/datum/table_recipe/greenburger + name = "Green burger" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/meat = 1, + /obj/item/toy/crayon/green = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/green + +/datum/table_recipe/blueburger + name = "Blue burger" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/meat = 1, + /obj/item/toy/crayon/blue = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/blue + +/datum/table_recipe/purpleburger + name = "Purple burger" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/meat = 1, + /obj/item/toy/crayon/purple = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/purple + +/datum/table_recipe/spellburger + name = "Spell burger" + reqs = list( + /obj/item/clothing/head/wizard/fake, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/spell + +/datum/table_recipe/spellburger2 + name = "Spell burger" + reqs = list( + /obj/item/clothing/head/wizard = 1, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/spell + +/datum/table_recipe/bigbiteburger + name = "Big bite burger" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/meat = 3, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/bigbite + +/datum/table_recipe/superbiteburger + name = "Super bite burger" + reqs = list( + /datum/reagent/consumable/sodiumchloride = 5, + /datum/reagent/consumable/blackpepper = 5, + /obj/item/weapon/reagent_containers/food/snacks/meat = 5, + /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 4, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3, + /obj/item/weapon/reagent_containers/food/snacks/egg = 2, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/superbite + +/datum/table_recipe/slimeburger + name = "Jelly burger" + reqs = list( + /datum/reagent/toxin/slimejelly = 5, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/jelly/slime + +/datum/table_recipe/jellyburger + name = "Jelly burger" + reqs = list( + /datum/reagent/consumable/cherryjelly = 5, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/jelly/cherry \ No newline at end of file diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm new file mode 100644 index 000000000000000..e866629edca81c0 --- /dev/null +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm @@ -0,0 +1,76 @@ + +// see code/module/crafting/table.dm + +////////////////////////////////////////////////CAKE//////////////////////////////////////////////// + +/datum/table_recipe/carrotcake + name = "Carrot cake" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/carrot = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/carrot + +/datum/table_recipe/cheesecake + name = "Cheese cake" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/cheese + +/datum/table_recipe/applecake + name = "Apple cake" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/apple = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/apple + +/datum/table_recipe/orangecake + name = "Orange cake" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/orange + +/datum/table_recipe/limecake + name = "Lime cake" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/lime + +/datum/table_recipe/lemoncake + name = "Lemon cake" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/lemon + +/datum/table_recipe/chocolatecake + name = "Chocolate cake" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/chocolate + +/datum/table_recipe/birthdaycake + name = "Birthday cake" + reqs = list( + /obj/item/clothing/head/cakehat = 1, + /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/birthday + +/datum/table_recipe/braincake + name = "Brain cake" + reqs = list( + /obj/item/organ/brain = 1, + /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/brain diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_egg.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_egg.dm new file mode 100644 index 000000000000000..0b8277a83e581af --- /dev/null +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_egg.dm @@ -0,0 +1,38 @@ + +// see code/module/crafting/table.dm + +////////////////////////////////////////////////EGG RECIPE's//////////////////////////////////////////////// + +/datum/table_recipe/friedegg + name = "Fried egg" + reqs = list( + /datum/reagent/consumable/sodiumchloride = 1, + /datum/reagent/consumable/blackpepper = 1, + /obj/item/weapon/reagent_containers/food/snacks/boiledegg = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/friedegg + +/datum/table_recipe/omelette + name = "omelette" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/egg = 2, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/omelette + +/datum/table_recipe/chocolateegg + name = "Chocolate egg" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/egg = 1, + /obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/chocolateegg + +/datum/table_recipe/eggsbenedict + name = "Eggs benedict" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/friedegg = 1, + /obj/item/weapon/reagent_containers/food/snacks/meatsteak = 1, + /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 1, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/benedict diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm new file mode 100644 index 000000000000000..c4e0830b09ad571 --- /dev/null +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm @@ -0,0 +1,123 @@ + + +////////////////////////////////////////////////KEBABS//////////////////////////////////////////////// + +/datum/table_recipe/humankebab + name = "Human kebab" + reqs = list( + /obj/item/stack/rods = 1, + /obj/item/weapon/reagent_containers/food/snacks/meat/human = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/kebab/human + +/datum/table_recipe/monkeykebab + name = "Monkey kebab" + reqs = list( + /obj/item/stack/rods = 1, + /obj/item/weapon/reagent_containers/food/snacks/meat/monkey = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/kebab/monkey + +/datum/table_recipe/tofukebab + name = "Tofu kebab" + reqs = list( + /obj/item/stack/rods = 1, + /obj/item/weapon/reagent_containers/food/snacks/tofu = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/kebab/tofu + +// see code/module/crafting/table.dm + +////////////////////////////////////////////////FISH//////////////////////////////////////////////// + +/datum/table_recipe/cubancarp + name = "Cuban carp" + reqs = list( + /datum/reagent/consumable/flour = 5, + /obj/item/weapon/reagent_containers/food/snacks/grown/chili = 1, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/cubancarp + +/datum/table_recipe/fishandchips + name = "Fish and chips" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/fries = 1, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/fishandchips + +/datum/table_recipe/fishfingers + name = "Fish fingers" + reqs = list( + /datum/reagent/consumable/flour = 5, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/fishfingers + +/datum/table_recipe/sashimi + name = "Sashimi" + reqs = list( + /datum/reagent/consumable/soysauce = 5, + /obj/item/weapon/reagent_containers/food/snacks/spidereggs = 1, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sashimi + +////////////////////////////////////////////////MR SPIDER//////////////////////////////////////////////// + +/datum/table_recipe/spidereggsham + name = "Spider eggs ham" + reqs = list( + /datum/reagent/consumable/sodiumchloride = 1, + /obj/item/weapon/reagent_containers/food/snacks/spidereggs = 1, + /obj/item/weapon/reagent_containers/food/snacks/spidermeat = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/spidereggsham + +////////////////////////////////////////////////MISC RECIPE's//////////////////////////////////////////////// + +/datum/table_recipe/cornedbeef + name = "Corned beef" + reqs = list( + /datum/reagent/consumable/sodiumchloride = 5, + /obj/item/weapon/reagent_containers/food/snacks/meat = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/cornedbeef + +/datum/table_recipe/wingfangchu + name = "Wingfangchu" + reqs = list( + /datum/reagent/consumable/soysauce = 5, + /obj/item/weapon/reagent_containers/food/snacks/xenomeat = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/wingfangchu + +/datum/table_recipe/enchiladas + name = "Enchiladas" + reqs = list( + /datum/reagent/consumable/capsaicin = 5, + /obj/item/weapon/reagent_containers/food/snacks/cutlet = 2, + /obj/item/weapon/reagent_containers/food/snacks/grown/chili = 2, + /obj/item/weapon/reagent_containers/food/snacks/grown/corn = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas + +/datum/table_recipe/stewedsoymeat + name = "Stewed soymeat" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/soydope = 2, + /obj/item/weapon/reagent_containers/food/snacks/grown/carrot = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat + +/datum/table_recipe/sausage + name = "Sausage" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/faggot = 1, + /obj/item/weapon/reagent_containers/food/snacks/cutlet = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sausage diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm new file mode 100644 index 000000000000000..5f171fd0796344e --- /dev/null +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm @@ -0,0 +1,105 @@ + +// see code/module/crafting/table.dm + +// MISC + +/datum/table_recipe/candiedapple + name = "Candied apple" + reqs = list(/datum/reagent/water = 5, + /datum/reagent/consumable/sugar = 5, + /obj/item/weapon/reagent_containers/food/snacks/grown/apple = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple + +/datum/table_recipe/chococoin + name = "Choco coin" + reqs = list( + /obj/item/weapon/coin = 1, + /obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 1, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/chococoin + +/datum/table_recipe/chocoorange + name = "Choco orange" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange = 1, + /obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 1, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/chocoorange + +/datum/table_recipe/loadedbakedpotato + name = "Loaded baked potato" + time = 40 + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/grown/potato = 1, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato + +/datum/table_recipe/cheesyfries + name = "Cheesy fries" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/fries = 1, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/cheesyfries + +/datum/table_recipe/wrap + name = "Wrap" + reqs = list(/datum/reagent/consumable/soysauce = 10, + /obj/item/weapon/reagent_containers/food/snacks/friedegg = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage = 1, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/wrap + +/datum/table_recipe/beans + name = "Beans" + time = 40 + reqs = list(/datum/reagent/consumable/ketchup = 5, + /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/beans + +/datum/table_recipe/eggplantparm + name ="Eggplant parmigiana" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2, + /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/eggplantparm + +/datum/table_recipe/baguette + name = "Baguette" + time = 40 + reqs = list(/datum/reagent/consumable/sodiumchloride = 1, + /datum/reagent/consumable/blackpepper = 1, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/baguette + +////////////////////////////////////////////////TOAST//////////////////////////////////////////////// + +/datum/table_recipe/slimetoast + name = "Slime toast" + reqs = list( + /datum/reagent/toxin/slimejelly = 5, + /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime + +/datum/table_recipe/jelliedyoast + name = "Jellied toast" + reqs = list( + /datum/reagent/consumable/cherryjelly = 5, + /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry + +/datum/table_recipe/twobread + name = "Two bread" + reqs = list( + /datum/reagent/consumable/ethanol/wine = 5, + /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/twobread + diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm new file mode 100644 index 000000000000000..92d3df85d3463e7 --- /dev/null +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm @@ -0,0 +1,212 @@ + +// see code/module/crafting/table.dm + +////////////////////////////////////////////////DONUTS//////////////////////////////////////////////// + +/datum/table_recipe/chaosdonut + name = "Chaos donut" + reqs = list( + /datum/reagent/consumable/frostoil = 5, + /datum/reagent/consumable/capsaicin = 5, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donut/chaos + +/datum/table_recipe/donut + time = 15 + name = "Donut" + reqs = list( + /datum/reagent/consumable/sugar = 1, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donut + +/datum/table_recipe/jellydonut + name = "Jelly donut" + reqs = list( + /datum/reagent/consumable/berryjuice = 5, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly + +/datum/table_recipe/cherryjellydonut + name = "Cherry jelly donut" + reqs = list( + /datum/reagent/consumable/cherryjelly = 5, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/cherryjelly + +/datum/table_recipe/slimejellydonut + name = "Slime jelly donut" + reqs = list( + /datum/reagent/toxin/slimejelly = 5, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/slimejelly + +////////////////////////////////////////////////WAFFLES//////////////////////////////////////////////// + +/datum/table_recipe/waffles + time = 15 + name = "Waffles" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/waffles + + +/datum/table_recipe/soylenviridians + name = "Soylent viridians" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 2, + /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soylenviridians + +/datum/table_recipe/soylentgreen + name = "Soylent green" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 2, + /obj/item/weapon/reagent_containers/food/snacks/meat/human = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soylentgreen + + +/datum/table_recipe/rofflewaffles + name = "Roffle waffles" + reqs = list( + /datum/reagent/mushroomhallucinogen = 5, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/rofflewaffles + +////////////////////////////////////////////////DONKPOCCKETS//////////////////////////////////////////////// + +/datum/table_recipe/donkpocket + time = 15 + name = "Donkpocket" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1, + /obj/item/weapon/reagent_containers/food/snacks/faggot = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket + + +////////////////////////////////////////////////MUFFINS//////////////////////////////////////////////// + +/datum/table_recipe/muffin + time = 15 + name = "Muffin" + reqs = list( + /datum/reagent/consumable/milk = 5, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/muffin + +/datum/table_recipe/berrymuffin + name = "Berry muffin" + reqs = list( + /datum/reagent/consumable/milk = 5, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/berries = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/muffin/berry + +/datum/table_recipe/booberrymuffin + name = "Booberry muffin" + reqs = list( + /datum/reagent/consumable/milk = 5, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/berries = 1, + /obj/item/weapon/ectoplasm = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/muffin/booberry + +/datum/table_recipe/chawanmushi + name = "Chawanmushi" + reqs = list( + /datum/reagent/water = 5, + /datum/reagent/consumable/soysauce = 5, + /obj/item/weapon/reagent_containers/food/snacks/egg = 2, + /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/chawanmushi + +////////////////////////////////////////////OTHER//////////////////////////////////////////// + +/datum/table_recipe/hotdog + name = "Hot dog" + reqs = list( + /datum/reagent/consumable/ketchup = 5, + /obj/item/weapon/reagent_containers/food/snacks/bun = 1, + /obj/item/weapon/reagent_containers/food/snacks/sausage = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/hotdog + +/datum/table_recipe/meatbun + name = "Meat bun" + reqs = list( + /datum/reagent/consumable/soysauce = 5, + /datum/reagent/consumable/flour = 5, + /obj/item/weapon/reagent_containers/food/snacks/faggot = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/meatbun + +/datum/table_recipe/sugarcookie + time = 15 + name = "Sugar cookie" + reqs = list( + /datum/reagent/consumable/sugar = 5, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sugarcookie + +/datum/table_recipe/fortunecookie + time = 15 + name = "Fortune cookie" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1, + /obj/item/weapon/paper = 1 + ) + parts = list( + /obj/item/weapon/paper + ) + result = /obj/item/weapon/reagent_containers/food/snacks/fortunecookie + +/datum/table_recipe/poppypretzel + time = 15 + name = "Poppy pretzel" + reqs = list( + /obj/item/seeds/poppyseed = 1, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel + +/datum/table_recipe/plumphelmetbiscuit + time = 15 + name = "Plumphelmet biscuit" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit + +/datum/table_recipe/cracker + time = 15 + name = "Cracker" + reqs = list( + /datum/reagent/consumable/sodiumchloride = 1, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/cracker + +/datum/table_recipe/chococornet + name = "Choco cornet" + reqs = list( + /datum/reagent/consumable/sodiumchloride = 1, + /obj/item/weapon/reagent_containers/food/snacks/doughslice = 1, + /obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/chococornet diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm new file mode 100644 index 000000000000000..9e5db90e49718b9 --- /dev/null +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm @@ -0,0 +1,100 @@ + +// see code/module/crafting/table.dm + +////////////////////////////////////////////////PIES//////////////////////////////////////////////// + +/datum/table_recipe/bananacreampie + name = "Banana cream pie" + reqs = list( + /datum/reagent/consumable/milk = 5, + /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pie/cream + +/datum/table_recipe/meatpie + name = "Meat pie" + reqs = list( + /datum/reagent/consumable/blackpepper = 1, + /datum/reagent/consumable/sodiumchloride = 1, + /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/meat = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pie/meatpie + +/datum/table_recipe/tofupie + name = "Tofu pie" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/tofu = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pie/tofupie + +/datum/table_recipe/xenopie + name = "Xeno pie" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/xenomeat = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pie/xemeatpie + +/datum/table_recipe/cherrypie + name = "Cherry pie" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/cherries = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pie/cherrypie + +/datum/table_recipe/berryclafoutis + name = "Berry clafoutis" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/berries = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pie/berryclafoutis + +/datum/table_recipe/amanitapie + name = "Amanita pie" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pie/amanita_pie + +/datum/table_recipe/plumppie + name = "Plump pie" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pie/plump_pie + +/datum/table_recipe/applepie + name = "Apple pie" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/apple = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pie/applepie + +/datum/table_recipe/pumpkinpie + name = "Pumpkin pie" + reqs = list( + /datum/reagent/consumable/milk = 5, + /datum/reagent/consumable/sugar = 5, + /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pumpkinpie + +/datum/table_recipe/goldenappletart + name = "Golden apple tart" + reqs = list( + /datum/reagent/consumable/milk = 5, + /datum/reagent/consumable/sugar = 5, + /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pie/appletart + diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_pizza.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_pizza.dm new file mode 100644 index 000000000000000..ea7273b45149bdf --- /dev/null +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_pizza.dm @@ -0,0 +1,44 @@ + +// see code/module/crafting/table.dm + +////////////////////////////////////////////////PIZZA!!!//////////////////////////////////////////////// + +/datum/table_recipe/margheritapizza + name = "Margherita pizza" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 4, + /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pizza/margherita + +/datum/table_recipe/meatpizza + name = "Meat pizza" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, + /obj/item/weapon/reagent_containers/food/snacks/cutlet = 4, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pizza/meatpizza + +/datum/table_recipe/mushroompizza + name = "Mushroom pizza" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom = 5 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pizza/mushroompizza + +/datum/table_recipe/vegetablepizza + name = "Vegetable pizza" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/carrot = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/corn = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pizza/vegetablepizza + + diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_salad.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_salad.dm new file mode 100644 index 000000000000000..3121f865b81191d --- /dev/null +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_salad.dm @@ -0,0 +1,44 @@ + +// see code/module/crafting/table.dm + +////////////////////////////////////////////////SALADS//////////////////////////////////////////////// + +/datum/table_recipe/herbsalad + name = "Herb salad" + reqs = list( + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris = 3, + /obj/item/weapon/reagent_containers/food/snacks/grown/apple = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/salad/herbsalad + +/datum/table_recipe/aesirsalad + name = "Aesir salad" + reqs = list( + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus = 3, + /obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/salad/aesirsalad + +/datum/table_recipe/validsalad + name = "Valid salad" + reqs = list( + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris = 3, + /obj/item/weapon/reagent_containers/food/snacks/grown/potato = 1, + /obj/item/weapon/reagent_containers/food/snacks/faggot = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/salad/validsalad + +/datum/table_recipe/monkeysdelight + name = "Monkeys delight" + reqs = list( + /datum/reagent/consumable/flour = 5, + /datum/reagent/consumable/sodiumchloride = 1, + /datum/reagent/consumable/blackpepper = 1, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/monkeycube = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/monkeysdelight diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_sandwich.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_sandwich.dm new file mode 100644 index 000000000000000..62e0fee749a3b48 --- /dev/null +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_sandwich.dm @@ -0,0 +1,62 @@ + +// see code/datums/recipe.dm + + +// see code/module/crafting/table.dm + +////////////////////////////////////////////////SANDWICHES//////////////////////////////////////////////// + +/datum/table_recipe/sandwich + name = "Sandwich" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2, + /obj/item/weapon/reagent_containers/food/snacks/meatsteak = 1, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sandwich + +/datum/table_recipe/grilledcheesesandwich + name = "Grilled cheese sandwich" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/grilledcheese + +/datum/table_recipe/slimesandwich + name = "Jelly sandwich" + reqs = list( + /datum/reagent/toxin/slimejelly = 5, + /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2, + /obj/item/weapon/reagent_containers/food/snacks/tofu = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime + +/datum/table_recipe/cherrysandwich + name = "Jelly sandwich" + reqs = list( + /datum/reagent/consumable/cherryjelly = 5, + /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2, + /obj/item/weapon/reagent_containers/food/snacks/tofu = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry + +/datum/table_recipe/icecreamsandwich + name = "Icecream sandwich" + reqs = list( + /datum/reagent/consumable/cream = 5, + /datum/reagent/consumable/ice = 5, + /obj/item/weapon/reagent_containers/food/snacks/icecream = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich + +/datum/table_recipe/notasandwich + name = "Not a sandwich" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2, + /obj/item/clothing/mask/fakemoustache + ) + result = /obj/item/weapon/reagent_containers/food/snacks/notasandwich + + + diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm new file mode 100644 index 000000000000000..c245d73217a6de2 --- /dev/null +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm @@ -0,0 +1,180 @@ + +// see code/module/crafting/table.dm + +////////////////////////////////////////////////SOUP//////////////////////////////////////////////// + +/datum/table_recipe/meatballsoup + name = "Meatball soup" + reqs = list( + /datum/reagent/water = 10, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/faggot = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/carrot = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/potato = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/meatball + +/datum/table_recipe/vegetablesoup + name = "Vegetable soup" + reqs = list( + /datum/reagent/water = 10, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/carrot = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/corn = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/potato = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/vegetable + +/datum/table_recipe/nettlesoup + name = "Nettle soup" + reqs = list( + /datum/reagent/water = 10, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/grown/nettle = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/potato = 1, + /obj/item/weapon/reagent_containers/food/snacks/egg = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/nettle + +/datum/table_recipe/wishsoup + name = "Wish soup" + reqs = list( + /datum/reagent/water = 20, + /obj/item/weapon/reagent_containers/glass/bowl = 1 + ) + result= /obj/item/weapon/reagent_containers/food/snacks/soup/wish + +/datum/table_recipe/hotchili + name = "Hot chili" + reqs = list( + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/cutlet = 2, + /obj/item/weapon/reagent_containers/food/snacks/grown/chili = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/hotchili + +/datum/table_recipe/coldchili + name = "Cold chili" + reqs = list( + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/cutlet = 2, + /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/coldchili + +/datum/table_recipe/tomatosoup + name = "Tomato soup" + reqs = list( + /datum/reagent/water = 10, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/tomato + +/datum/table_recipe/milosoup + name = "Milo soup" + reqs = list( + /datum/reagent/water = 10, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/soydope = 2, + /obj/item/weapon/reagent_containers/food/snacks/tofu = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/milo + +/datum/table_recipe/bloodsoup + name = "Blood soup" + reqs = list( + /datum/reagent/blood = 10, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blood = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/blood + +/datum/table_recipe/slimesoup + name = "Slime soup" + reqs = list( + /datum/reagent/water = 10, + /datum/reagent/toxin/slimejelly = 5, + /obj/item/weapon/reagent_containers/glass/bowl = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/slime + +/datum/table_recipe/clownstears + name = "Clowns tears" + reqs = list( + /datum/reagent/water = 10, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1, + /obj/item/weapon/ore/bananium = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/clownstears + +/datum/table_recipe/mysterysoup + name = "Mystery soup" + reqs = list( + /datum/reagent/water = 10, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/badrecipe = 1, + /obj/item/weapon/reagent_containers/food/snacks/tofu = 1, + /obj/item/weapon/reagent_containers/food/snacks/egg = 1, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/mystery + +/datum/table_recipe/mushroomsoup + name = "Mushroom soup" + reqs = list( + /datum/reagent/consumable/milk = 5, + /datum/reagent/water = 5, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/mushroom + +/datum/table_recipe/beetsoup + name = "Beet soup" + reqs = list( + /datum/reagent/water = 10, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage = 1, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/beet + +/datum/table_recipe/stew + name = "Stew" + reqs = list( + /datum/reagent/water = 10, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1, + /obj/item/weapon/reagent_containers/food/snacks/cutlet = 3, + /obj/item/weapon/reagent_containers/food/snacks/grown/potato = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/carrot = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom = 1 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/stew + +/datum/table_recipe/spacylibertyduff + name = "Spacy liberty duff" + reqs = list( + /datum/reagent/consumable/ethanol/vodka = 5, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap = 3 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/spacylibertyduff + +/datum/table_recipe/amanitajelly + name = "Amanita jelly" + reqs = list( + /datum/reagent/consumable/ethanol/vodka = 5, + /obj/item/weapon/reagent_containers/glass/bowl = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita = 3 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/amanitajelly + + + diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_spaghetti.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_spaghetti.dm new file mode 100644 index 000000000000000..c33b2cd7a5b951b --- /dev/null +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_spaghetti.dm @@ -0,0 +1,37 @@ + +// see code/module/crafting/table.dm + +////////////////////////////////////////////////SPAGHETTI//////////////////////////////////////////////// + +/datum/table_recipe/tomatopasta + name = "Tomato pasta" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pastatomato + +/datum/table_recipe/copypasta + name = "Copypasta" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/pastatomato = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/copypasta + +/datum/table_recipe/spaghettimeatball + name = "Spaghetti meatball" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti = 1, + /obj/item/weapon/reagent_containers/food/snacks/faggot = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti + +/datum/table_recipe/spesslaw + name = "Spesslaw" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti = 1, + /obj/item/weapon/reagent_containers/food/snacks/faggot = 4 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/spesslaw + + diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 3849d5aa4d8adb2..1ee029453d2d30d 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -36,7 +36,7 @@ productivity = P /obj/machinery/biogenerator/on_reagent_change() //When the reagents change, change the icon as well. - update_icon() + update_icon() /obj/machinery/biogenerator/update_icon() if(panel_open) @@ -231,7 +231,7 @@ else beaker.reagents.add_reagent("cream",10) if("cmilk") if (check_cost(100/efficiency)) return 0 - else new/obj/item/weapon/reagent_containers/food/drinks/milk(src.loc) + else new/obj/item/weapon/reagent_containers/food/condiment/milk(src.loc) if("ccream") if (check_cost(300/efficiency)) return 0 else new/obj/item/weapon/reagent_containers/food/drinks/bottle/cream(src.loc) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 10fad6295a6c83c..d7f54f21a4732f8 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -98,6 +98,8 @@ name = "ear of corn" desc = "Needs some butter!" icon_state = "corn" + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/popcorn + filling_color = "#FFFF00" trash = /obj/item/weapon/grown/corncob /obj/item/weapon/reagent_containers/food/snacks/grown/corn/add_juice() @@ -113,6 +115,7 @@ desc = "Great for toppings!" icon_state = "cherry" gender = PLURAL + filling_color = "#FF0000" /obj/item/weapon/reagent_containers/food/snacks/grown/cherries/add_juice() if(..()) @@ -127,6 +130,7 @@ desc = "Long-used as a symbol of rest, peace, and death." icon_state = "poppy" slot_flags = SLOT_HEAD + filling_color = "#FF6347" /obj/item/weapon/reagent_containers/food/snacks/grown/poppy/add_juice() if(..()) @@ -138,9 +142,10 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/harebell seed = /obj/item/seeds/harebell name = "harebell" - desc = "\"I'll sweeten thy sad grave: thou shalt not lack the flower that's like thy face, pale primrose, nor the azured hare-bell, like thy veins; no, nor the leaf of eglantine, whom not to slander, out-sweeten’d not thy breath.\"" + desc = "\"I'll sweeten thy sad grave: thou shalt not lack the flower that's like thy face, pale primrose, nor the azured hare-bell, like thy veins; no, nor the leaf of eglantine, whom not to slander, out-sweeten’d not thy breath.\"" icon_state = "harebell" slot_flags = SLOT_HEAD + filling_color = "#E6E6FA" /obj/item/weapon/reagent_containers/food/snacks/grown/harebell/add_juice() if(..()) @@ -153,6 +158,7 @@ name = "potato" desc = "Boil 'em! Mash 'em! Stick 'em in a stew!" icon_state = "potato" + filling_color = "#E9967A" /obj/item/weapon/reagent_containers/food/snacks/grown/potato/add_juice() if(..()) @@ -182,6 +188,7 @@ desc = "Nutritious!" icon_state = "grapes" dried_type = /obj/item/weapon/reagent_containers/food/snacks/no_raisin + filling_color = "#FF1493" /obj/item/weapon/reagent_containers/food/snacks/grown/grapes/add_juice() if(..()) @@ -196,6 +203,7 @@ desc = "Nutritious!" icon_state = "greengrapes" dried_type = /obj/item/weapon/reagent_containers/food/snacks/no_raisin + filling_color = "#7FFF00" /obj/item/weapon/reagent_containers/food/snacks/grown/grapes/green/add_juice() ..() @@ -207,6 +215,7 @@ name = "cabbage" desc = "Ewwwwwwwwww. Cabbage." icon_state = "cabbage" + filling_color = "#90EE90" /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage/add_juice() if(..()) @@ -221,6 +230,7 @@ desc = "Nutritious!" icon_state = "berrypile" gender = PLURAL + filling_color = "#FF00FF" /obj/item/weapon/reagent_containers/food/snacks/grown/berries/add_juice() if(..()) @@ -233,6 +243,7 @@ name = "bunch of poison-berries" desc = "Taste so good, you could die!" icon_state = "poisonberrypile" + filling_color = "#C71585" /obj/item/weapon/reagent_containers/food/snacks/grown/berries/poison/add_juice() ..() @@ -243,6 +254,7 @@ name = "bunch of death-berries" desc = "Taste so good, you could die!" icon_state = "deathberrypile" + filling_color = "#708090" /obj/item/weapon/reagent_containers/food/snacks/grown/berries/death/add_juice() ..() @@ -256,6 +268,7 @@ var/on = 1 var/brightness_on = 2 //luminosity when on icon_state = "glowberrypile" + filling_color = "#7CFC00" /obj/item/weapon/reagent_containers/food/snacks/grown/berries/glow/add_juice() ..() @@ -281,6 +294,7 @@ name = "cocoa pod" desc = "Fattening... Mmmmm... chucklate." icon_state = "cocoapod" + filling_color = "#FFD700" /obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod/add_juice() if(..()) @@ -293,6 +307,7 @@ name = "sugarcane" desc = "Sickly sweet." icon_state = "sugarcane" + filling_color = "#FFD700" /obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane/add_juice() if(..()) @@ -305,6 +320,7 @@ desc = "This is a plant." icon_state = "ambrosiavulgaris" slot_flags = SLOT_HEAD + filling_color = "#008000" /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/add_juice() if(..()) @@ -331,6 +347,7 @@ name = "ambrosia deus branch" desc = "Eating this makes you feel immortal!" icon_state = "ambrosiadeus" + filling_color = "#008B8B" /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus/add_juice() ..() @@ -346,6 +363,7 @@ name = "apple" desc = "It's a little piece of Eden." icon_state = "apple" + filling_color = "#FF4500" /obj/item/weapon/reagent_containers/food/snacks/grown/apple/add_juice() if(..()) @@ -371,6 +389,7 @@ name = "golden apple" desc = "Emblazoned upon the apple is the word 'Kallisti'." icon_state = "goldapple" + filling_color = "#FFD700" /obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold/add_juice() ..() @@ -390,6 +409,8 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/watermelonslice slices_num = 5 dried_type = null + w_class = 3 + filling_color = "#008000" /obj/item/weapon/reagent_containers/food/snacks/grown/watermelon/add_juice() if(..()) @@ -402,6 +423,7 @@ name = "pumpkin" desc = "It's large and scary." icon_state = "pumpkin" + filling_color = "#FFA500" /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/add_juice() if(..()) @@ -435,18 +457,21 @@ name = "lime" desc = "It's so sour, your face will twist." icon_state = "lime" + filling_color = "#00FF00" /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon seed = /obj/item/seeds/lemonseed name = "lemon" desc = "When life gives you lemons, be grateful they aren't limes." icon_state = "lemon" + filling_color = "#FFD700" /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange seed = /obj/item/seeds/orangeseed name = "orange" desc = "It's an tangy fruit." icon_state = "orange" + filling_color = "#FFA500" /obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet @@ -454,6 +479,7 @@ name = "white-beet" desc = "You can't beat white-beet." icon_state = "whitebeet" + filling_color = "#F4A460" /obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet/add_juice() if(..()) @@ -470,6 +496,7 @@ icon_state = "banana" item_state = "banana" trash = /obj/item/weapon/grown/bananapeel + filling_color = "#FFFF00" /obj/item/weapon/reagent_containers/food/snacks/grown/banana/add_juice() if(..()) @@ -490,6 +517,7 @@ name = "chili" desc = "It's spicy! Wait... IT'S BURNING ME!!" icon_state = "chilipepper" + filling_color = "#FF0000" /obj/item/weapon/reagent_containers/food/snacks/grown/chili/add_juice() if(..()) @@ -509,6 +537,7 @@ name = "ice-pepper" desc = "It's a mutant strain of chili" icon_state = "icepepper" + filling_color = "#0000CD" /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper/add_juice() ..() @@ -529,6 +558,7 @@ desc = "It seems to be vibrating gently." icon_state = "ghostchilipepper" var/mob/held_mob + filling_color = "#F8F8FF" /obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chilli/add_juice() ..() @@ -565,6 +595,7 @@ name = "eggplant" desc = "Maybe there's a chicken inside?" icon_state = "eggplant" + filling_color = "#800080" /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant/add_juice() if(..()) @@ -588,6 +619,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy desc = "There MUST be a chicken inside." icon_state = "eggyplant" inside_type = /obj/item/weapon/reagent_containers/food/snacks/egg + filling_color = "#F8F8FF" obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() ..() @@ -601,6 +633,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() desc = "It's pretty bland, but oh the possibilities..." gender = PLURAL icon_state = "soybeans" + filling_color = "#F0E68C" /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans/add_juice() if(..()) @@ -613,6 +646,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() name = "koibean" desc = "Something about these seems fishy." icon_state = "koibeans" + filling_color = "#F0E68C" /obj/item/weapon/reagent_containers/food/snacks/grown/koibeans/add_juice() if(..()) @@ -627,6 +661,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() desc = "Store in a location at least 50 yards away from werewolves." icon_state = "moonflower" slot_flags = SLOT_HEAD + filling_color = "#E6E6FA" /obj/item/weapon/reagent_containers/food/snacks/grown/moonflower/add_juice() if(..()) @@ -642,6 +677,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() desc = "I say to-mah-to, you say tom-mae-to." icon_state = "tomato" var/splat = /obj/effect/decal/cleanable/tomato_smudge + filling_color = "#FF6347" /obj/item/weapon/reagent_containers/food/snacks/grown/tomato/add_juice() if(..()) @@ -668,6 +704,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() desc = "I say to-mah-to, you say tom-mae-to... OH GOD IT'S EATING MY LEGS!!" icon_state = "killertomato" var/awakening = 0 + filling_color = "#FF0000" /obj/item/weapon/reagent_containers/food/snacks/grown/tomato/killer/attack(mob/M, mob/user, def_zone) if(awakening) @@ -702,6 +739,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() desc = "So bloody...so...very...bloody....AHHHH!!!!" icon_state = "bloodtomato" splat = /obj/effect/gibspawner/generic + filling_color = "#FF0000" /obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blood/add_juice(var/loc, var/potency = 10) ..() @@ -714,6 +752,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() desc = "I say blue-mah-to, you say blue-mae-to." icon_state = "bluetomato" splat = /obj/effect/decal/cleanable/oil + filling_color = "#0000FF" /obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue/add_juice() ..() @@ -757,6 +796,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() desc = "Sigh... wheat... a-grain?" gender = PLURAL icon_state = "wheat" + filling_color = "#F0E68C" /obj/item/weapon/reagent_containers/food/snacks/grown/wheat/add_juice() if(..()) @@ -768,6 +808,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() name = "grass" desc = "Green and lush." icon_state = "grassclump" + filling_color = "#32CD32" /obj/item/weapon/reagent_containers/food/snacks/grown/grass/add_juice() if(..()) @@ -819,6 +860,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() icon_state = "kudzupod" var/list/mutations = list() var/mutating = 0 + filling_color = "#6B8E23" /obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod/add_juice() if(..()) @@ -832,6 +874,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() name = "carrot" desc = "It's good for the eyes!" icon_state = "carrot" + filling_color = "#FFA500" /obj/item/weapon/reagent_containers/food/snacks/grown/carrot/add_juice() if(..()) @@ -846,6 +889,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() name = "reishi" desc = "Ganoderma lucidum: A special fungus known for its medicinal and stress relieving properties." icon_state = "reishi" + filling_color = "#FF4500" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi/add_juice() ..() @@ -865,6 +909,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() name = "fly amanita" desc = "Amanita Muscaria: Learn poisonous mushrooms by heart. Only pick mushrooms you know." icon_state = "amanita" + filling_color = "#FF0000" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita/add_juice() ..() @@ -884,6 +929,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() name = "destroying angel" desc = "Amanita Virosa: Deadly poisonous basidiomycete fungus filled with alpha amatoxins." icon_state = "angel" + filling_color = "#C0C0C0" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel/add_juice() ..() @@ -903,6 +949,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() name = "liberty-cap" desc = "Psilocybe Semilanceata: Liberate yourself!" icon_state = "libertycap" + filling_color = "#DAA520" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap/add_juice(var/loc, var/potency = 15) ..() @@ -920,6 +967,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() name = "plump-helmet" desc = "Plumus Hellmus: Plump, soft and s-so inviting~" icon_state = "plumphelmet" + filling_color = "#9370DB" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet/add_juice() ..() @@ -933,6 +981,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() name = "walking mushroom" desc = "Plumus Locomotus: The beginning of the great walk." icon_state = "walkingmushroom" + filling_color = "#9370DB" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/add_juice() ..() @@ -957,6 +1006,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() name = "chanterelle cluster" desc = "Cantharellus Cibarius: These jolly yellow little shrooms sure look tasty!" icon_state = "chanterelle" + filling_color = "#FFA500" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle/add_juice() ..() @@ -968,6 +1018,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() name = "glowshroom cluster" desc = "Mycena Bregprox: This species of mushroom glows in the dark." icon_state = "glowshroom" + filling_color = "#00FA9A" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/New(var/loc, var/new_potency = 10) ..() @@ -1066,6 +1117,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() name = "coffee beans" desc = "Dry them out to make coffee." icon_state = "coffee_arabica" + filling_color = "#DC143C" /obj/item/weapon/reagent_containers/food/snacks/grown/coffee/add_juice() if(..()) @@ -1094,6 +1146,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() name = "tobacco leaves" desc = "Dry them out to make some smokes." icon_state = "tobacco_leaves" + filling_color = "#008000" /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/add_juice() if(..()) @@ -1101,11 +1154,12 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() reagents.add_reagent("vitamin", 1 + round((potency / 40), 1)) -/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco_space +/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/space seed = /obj/item/seeds/tobacco_space_seed name = "space tobacco leaves" desc = "Dry them out to make some space-smokes." icon_state = "stobacco_leaves" + filling_color = "#008000" /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/space/add_juice() ..() @@ -1127,13 +1181,14 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() /obj/item/weapon/reagent_containers/food/snacks/grown/tea/aspera seed = /obj/item/seeds/tea_aspera_seed name = "Tea Aspera tips" - + filling_color = "#008000" /obj/item/weapon/reagent_containers/food/snacks/grown/tea/astra seed = /obj/item/seeds/tea_astra_seed name = "Tea Astra tips" desc = "These aromatic tips of the tea plant can be dried to make tea." icon_state = "tea_astra_leaves" + filling_color = "#4582B4" /obj/item/weapon/reagent_containers/food/snacks/grown/tea/astra/add_juice() ..() diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index b1eab4fc945553d..9df293f72a3f47b 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -56,7 +56,7 @@ origin_tech = "materials=1" attack_verb = list("bashed", "battered", "bludgeoned", "whacked") var/list/accepted = list(/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco, - /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco_space, + /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/space, /obj/item/weapon/reagent_containers/food/snacks/grown/tea/aspera, /obj/item/weapon/reagent_containers/food/snacks/grown/tea/astra, /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris, diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index c8e2e45e854d779..a29a6925d25f43f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -53,6 +53,8 @@ verbs -= /mob/dead/observer/verb/boo verbs -= /mob/dead/observer/verb/possess + animate(src, pixel_y = 2, time = 10, loop = -1) + ..() /mob/dead/CanPass(atom/movable/mover, turf/target, height=0) diff --git a/code/modules/mob/living/carbon/brain/emote.dm b/code/modules/mob/living/carbon/brain/emote.dm index 4c1f2e5527195f4..6c7b938288ff0a4 100644 --- a/code/modules/mob/living/carbon/brain/emote.dm +++ b/code/modules/mob/living/carbon/brain/emote.dm @@ -62,7 +62,7 @@ for(var/mob/M in dead_mob_list) if (!M.client || istype(M, /mob/new_player)) continue //skip monkeys, leavers, and new_players - if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(src,null))) + if(M.stat == DEAD && (M.client && (M.client.prefs.toggles & CHAT_GHOSTSIGHT)) && !(M in viewers(src,null))) M.show_message(message) diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index a67f683174ccd35..0c9893c0d39c368 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -188,7 +188,7 @@ for(var/mob/M in dead_mob_list) if(!M.client || istype(M, /mob/new_player)) continue //skip monkeys, leavers and new players - if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(src,null))) + if(M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(src,null))) M.show_message(message) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 53eaa53884f8f46..4846abc0eb7df5c 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -322,7 +322,7 @@ for(var/mob/M in dead_mob_list) if(!M.client || istype(M, /mob/new_player)) continue //skip monkeys, leavers and new players - if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(src,null))) + if(M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(src,null))) M.show_message(message) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 79bda25cad52fcb..e2290b924040071 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -260,21 +260,37 @@ if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user - if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/hud/security/sunglasses)) - if(!user.stat && user != src) //|| !user.canmove || user.restrained()) Fluff: Sechuds have eye-tracking technology and sets 'arrest' to people that the wearer looks and blinks at. - var/criminal = "None" - - var/perpname = get_face_name(get_id_name("")) - if(perpname) - var/datum/data/record/R = find_record("name", perpname, data_core.security) + if(istype(H.glasses, /obj/item/clothing/glasses/hud)) + var/perpname = get_face_name(get_id_name("")) + if(perpname) + var/datum/data/record/R = find_record("name", perpname, data_core.general) + if(R) + msg += "Rank: [R.fields["rank"]]
      " + msg += "\[Front photo\] " + msg += "\[Side photo\]
      " + if(istype(H.glasses, /obj/item/clothing/glasses/hud/health)) + if(R) + var/health = R.fields["p_stat"] + msg += "\[[health]\]" + health = R.fields["m_stat"] + msg += "\[[health]\]
      " + R = find_record("name", perpname, data_core.medical) if(R) - criminal = R.fields["criminal"] + msg += "\[Medical evaluation\]
      " + + if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if(!user.stat && user != src) //|| !user.canmove || user.restrained()) Fluff: Sechuds have eye-tracking technology and sets 'arrest' to people that the wearer looks and blinks at. + var/criminal = "None" + + R = find_record("name", perpname, data_core.security) + if(R) + criminal = R.fields["criminal"] - msg += "Criminal status: \[[criminal]\]\n" - msg += "Security record: \[View\] " - msg += "\[Add crime\] " - msg += "\[View comment log\] " - msg += "\[Add comment\]\n" + msg += "Criminal status: \[[criminal]\]\n" + msg += "Security record: \[View\] " + msg += "\[Add crime\] " + msg += "\[View comment log\] " + msg += "\[Add comment\]\n" msg += "*---------*" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 5463c2e2084c60e..5af48151fbabf67 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -249,7 +249,6 @@ siemens_coeff = G.siemens_coefficient return ..(shock_damage,source,siemens_coeff) - /mob/living/carbon/human/Topic(href, href_list) if(usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY)) if(href_list["item"]) @@ -295,113 +294,194 @@ ..() - if(href_list["criminal"]) +///////HUDs/////// + if(href_list["hud"]) if(istype(usr, /mob/living/carbon/human)) var/mob/living/carbon/human/H = usr - if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - if(usr.stat || usr == src) //|| !usr.canmove || usr.restrained()) Fluff: Sechuds have eye-tracking technology and sets 'arrest' to people that the wearer looks and blinks at. - return //Non-fluff: This allows sec to set people to arrest as they get disarmed or beaten - // Checks the user has security clearence before allowing them to change arrest status via hud, comment out to enable all access - var/allowed_access = null - var/obj/item/clothing/glasses/G = H.glasses - if (!G.emagged) - if(H.wear_id) - var/list/access = H.wear_id.GetAccess() - if(access_sec_doors in access) - allowed_access = H.get_authentification_name() - else - allowed_access = "@%&ERROR_%$*" - - - if(!allowed_access) - H << "ERROR: Invalid Access" - return - - var/perpname = get_face_name(get_id_name("")) - if(perpname) - var/datum/data/record/R = find_record("name", perpname, data_core.security) + var/perpname = get_face_name(get_id_name("")) + if(istype(H.glasses, /obj/item/clothing/glasses/hud)) + var/datum/data/record/R = find_record("name", perpname, data_core.general) + if(href_list["photo_front"] || href_list["photo_side"]) if(R) - if(href_list["status"]) - var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Discharged", "Cancel") + if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud)) return + var/obj/item/weapon/photo/P = null + if(href_list["photo_front"]) + P = R.fields["photo_front"] + else if(href_list["photo_side"]) + P = R.fields["photo_side"] + if(P) + P.show(H) + + if(href_list["hud"] == "m") + if(istype(H.glasses, /obj/item/clothing/glasses/hud/health)) + if(href_list["p_stat"]) + var/health = input(usr, "Specify a new physical status for this person.", "Medical HUD", R.fields["p_stat"]) in list("Active", "Physically Unfit", "*Unconscious*", "*Deceased*", "Cancel") if(R) - if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - if(setcriminal != "Cancel") - investigate_log("[src.key] has been set from [R.fields["criminal"]] to [setcriminal] by [usr.name] ([usr.key]).", "records") - R.fields["criminal"] = setcriminal - sec_hud_set_security_status() + if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/health)) return + if(health && health != "Cancel") + R.fields["p_stat"] = health + return + if(href_list["m_stat"]) + var/health = input(usr, "Specify a new mental status for this person.", "Medical HUD", R.fields["m_stat"]) in list("Stable", "*Watch*", "*Unstable*", "*Insane*", "Cancel") + if(R) + if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/health)) return + if(health && health != "Cancel") + R.fields["m_stat"] = health + return + if(href_list["evaluation"]) + if(!getBruteLoss() && !getFireLoss() && !getOxyLoss() && getToxLoss() < 20) + usr << "No external injuries detected.
      " return - - if(href_list["view"]) + var/span = "notice" + var/status = "" + if(getBruteLoss()) + usr << "Physical trauma analysis:" + for(var/obj/item/organ/limb/org in organs) + var/brutedamage = org.brute_dam + if(brutedamage > 0) + status = "received minor physical injuries." + span = "notice" + if(brutedamage > 20) + status = "been seriously damaged." + span = "danger" + if(brutedamage > 40) + status = "sustained major trauma!" + span = "userdanger" + if(brutedamage) + usr << "The [org.getDisplayName()] appears to have [status]" + if(getFireLoss()) + usr << "Analysis of skin burns:" + for(var/obj/item/organ/limb/org in organs) + var/burndamage = org.burn_dam + if(burndamage > 0) + status = "signs of minor burns." + span = "notice" + if(burndamage > 20) + status = "serious burns." + span = "danger" + if(burndamage > 40) + status = "major burns!" + span = "userdanger" + if(burndamage) + usr << "The [org.getDisplayName()] appears to have [status]" + if(getOxyLoss()) + usr << "Patient has signs of suffocation, emergency treatment may be required!" + if(getToxLoss() > 20) + usr << "Gathered data is inconsistent with the analysis, possible cause: poisoning." + + if(href_list["hud"] == "s") + if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if(usr.stat || usr == src) //|| !usr.canmove || usr.restrained()) Fluff: Sechuds have eye-tracking technology and sets 'arrest' to people that the wearer looks and blinks at. + return //Non-fluff: This allows sec to set people to arrest as they get disarmed or beaten + // Checks the user has security clearence before allowing them to change arrest status via hud, comment out to enable all access + var/allowed_access = null + var/obj/item/clothing/glasses/G = H.glasses + if (!G.emagged) + if(H.wear_id) + var/list/access = H.wear_id.GetAccess() + if(access_sec_doors in access) + allowed_access = H.get_authentification_name() + else + allowed_access = "@%&ERROR_%$*" + + + if(!allowed_access) + H << "ERROR: Invalid Access" + return + + if(perpname) + R = find_record("name", perpname, data_core.security) if(R) - if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if(href_list["status"]) + var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Discharged", "Cancel") + if(setcriminal != "Cancel") + if(R) + if(H.canUseHUD()) + if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + investigate_log("[src.key] has been set from [R.fields["criminal"]] to [setcriminal] by [usr.name] ([usr.key]).", "records") + R.fields["criminal"] = setcriminal + sec_hud_set_security_status() return - usr << "Name: [R.fields["name"]] Criminal Status: [R.fields["criminal"]]" - usr << "Minor Crimes:" - for(var/datum/data/crime/c in R.fields["mi_crim"]) - usr << "Crime: [c.crimeName]" - usr << "Details: [c.crimeDetails]" - usr << "Added by [c.author] at [c.time]" - usr << "----------" - usr << "Major Crimes:" - for(var/datum/data/crime/c in R.fields["ma_crim"]) - usr << "Crime: [c.crimeName]" - usr << "Details: [c.crimeDetails]" - usr << "Added by [c.author] at [c.time]" - usr << "----------" - usr << "Notes: [R.fields["notes"]]" - return - if(href_list["add_crime"]) - switch(alert("What crime would you like to add?","Security HUD","Minor Crime","Major Crime","Cancel")) - if("Minor Crime") - if(R) - var/t1 = copytext(sanitize(input("Please input minor crime names:", "Security HUD", "", null) as text),1,MAX_MESSAGE_LEN) - var/t2 = copytext(sanitize(input("Please input minor crime details:", "Security HUD", "", null) as message),1,MAX_MESSAGE_LEN) - if(R) - if (!t1 || !t2 || !allowed_access || H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - return - var/crime = data_core.createCrimeEntry(t1, t2, allowed_access, worldtime2text()) - data_core.addMinorCrime(R.fields["id"], crime) - usr << "Successfully added a minor crime." - return - if("Major Crime") + if(href_list["view"]) if(R) - var/t1 = copytext(sanitize(input("Please input major crime names:", "Security HUD", "", null) as text),1,MAX_MESSAGE_LEN) - var/t2 = copytext(sanitize(input("Please input major crime details:", "Security HUD", "", null) as message),1,MAX_MESSAGE_LEN) - if(R) - if (!t1 || !t2 || !allowed_access || H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - return - var/crime = data_core.createCrimeEntry(t1, t2, allowed_access, worldtime2text()) - data_core.addMajorCrime(R.fields["id"], crime) - usr << "Successfully added a major crime." - return - else return + if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return + usr << "Name: [R.fields["name"]] Criminal Status: [R.fields["criminal"]]" + usr << "Minor Crimes:" + for(var/datum/data/crime/c in R.fields["mi_crim"]) + usr << "Crime: [c.crimeName]" + usr << "Details: [c.crimeDetails]" + usr << "Added by [c.author] at [c.time]" + usr << "----------" + usr << "Major Crimes:" + for(var/datum/data/crime/c in R.fields["ma_crim"]) + usr << "Crime: [c.crimeName]" + usr << "Details: [c.crimeDetails]" + usr << "Added by [c.author] at [c.time]" + usr << "----------" + usr << "Notes: [R.fields["notes"]]" + return - if(href_list["view_comment"]) - if(R) - if(H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if(href_list["add_crime"]) + switch(alert("What crime would you like to add?","Security HUD","Minor Crime","Major Crime","Cancel")) + if("Minor Crime") + if(R) + var/t1 = stripped_input("Please input minor crime names:", "Security HUD", "", null) + var/t2 = stripped_multiline_input("Please input minor crime details:", "Security HUD", "", null) + if(R) + if (!t1 || !t2 || !allowed_access) return + else if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return + var/crime = data_core.createCrimeEntry(t1, t2, allowed_access, worldtime2text()) + data_core.addMinorCrime(R.fields["id"], crime) + usr << "Successfully added a minor crime." + return + if("Major Crime") + if(R) + var/t1 = stripped_input("Please input major crime names:", "Security HUD", "", null) + var/t2 = stripped_multiline_input("Please input major crime details:", "Security HUD", "", null) + if(R) + if (!t1 || !t2 || !allowed_access) return + else if (!H.canUseHUD()) return + else if (!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return + var/crime = data_core.createCrimeEntry(t1, t2, allowed_access, worldtime2text()) + data_core.addMajorCrime(R.fields["id"], crime) + usr << "Successfully added a major crime." return - usr << "Comments/Log:" - var/counter = 1 - while(R.fields[text("com_[]", counter)]) - usr << R.fields[text("com_[]", counter)] - usr << "----------" - counter++ - return - if(href_list["add_comment"]) - if(R) - var/t1 = copytext(sanitize(input("Add Comment:", "Secure. records", null, null) as message),1,MAX_MESSAGE_LEN) - if(R) - if (!t1 || !allowed_access || H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if(href_list["view_comment"]) + if(R) + if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return + usr << "Comments/Log:" + var/counter = 1 + while(R.fields[text("com_[]", counter)]) + usr << R.fields[text("com_[]", counter)] + usr << "----------" + counter++ return - var/counter = 1 - while(R.fields[text("com_[]", counter)]) - counter++ - R.fields[text("com_[]", counter)] = text("Made by [] on [] [], []
      []", allowed_access, worldtime2text(), time2text(world.realtime, "MMM DD"), year_integer+540, t1,) - usr << "Successfully added comment." - return - usr << "Unable to locate a data core entry for this person." + + if(href_list["add_comment"]) + if(R) + var/t1 = stripped_multiline_input("Add Comment:", "Secure. records", null, null) + if(R) + if (!t1 || !allowed_access) return + else if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return + var/counter = 1 + while(R.fields[text("com_[]", counter)]) + counter++ + R.fields[text("com_[]", counter)] = text("Made by [] on [] [], []
      []", allowed_access, worldtime2text(), time2text(world.realtime, "MMM DD"), year_integer+540, t1,) + usr << "Successfully added comment." + return + usr << "Unable to locate a data core entry for this person." + +/mob/living/carbon/human/proc/canUseHUD() + return !(src.stat || src.weakened || src.stunned || src.restrained()) /mob/living/carbon/human/proc/play_xylophone() if(!src.xylophone) diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 77be26fc62178a3..b7df925da575883 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -46,7 +46,7 @@ var/list/listening_dead = list() for(var/mob/M in player_list) - if(M.stat == DEAD && ((M.client.prefs.toggles & CHAT_GHOSTWHISPER) || (get_dist(M, src) <= 7))) + if(M.stat == DEAD && M.client && ((M.client.prefs.toggles & CHAT_GHOSTWHISPER) || (get_dist(M, src) <= 7))) listening_dead |= M var/list/listening = get_hearers_in_view(1, src) diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index 0c4d805ded19656..e3503bd5a57823f 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -205,9 +205,9 @@ return /mob/living/carbon/slime/MouseDrop(var/atom/movable/A as mob|obj) - if(isliving(A) && A != usr) + if(isliving(A) && A != src && usr == src) var/mob/living/Food = A - if(Food.Adjacent(usr) && !stat && Food.stat != DEAD) //messy + if(Food.Adjacent(src) && !stat && Food.stat != DEAD) //messy Feedon(Food) ..() diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 9adb0fd4188094b..891fae0abeb51dc 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -268,7 +268,7 @@ if(!M.client || istype(M, /mob/new_player)) continue //skip monkeys, leavers and new players var/T = get_turf(src) - if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(T,null))) + if(M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(T,null))) M.show_message(message) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index dd3745d424519f3..f94e95160dafa39 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -161,7 +161,7 @@ var/list/department_radio_keys = list( var/list/listening = get_hearers_in_view(message_range, source) var/list/listening_dead = list() for(var/mob/M in player_list) - if(M.stat == DEAD && ((M.client.prefs.toggles & CHAT_GHOSTEARS) || (get_dist(M, src) <= 7))&& client) // client is so that ghosts don't have to listen to mice + if(M.stat == DEAD && M.client && ((M.client.prefs.toggles & CHAT_GHOSTEARS) || (get_dist(M, src) <= 7)) && client) // client is so that ghosts don't have to listen to mice listening_dead |= M listening -= listening_dead //so ghosts dont hear stuff twice diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index f831e687de53dac..0f7e32324bab5a4 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -34,7 +34,6 @@ var/list/ai_list = list() radiomod = ";" //AIs will, by default, state their laws on the internal radio. var/obj/item/device/pda/ai/aiPDA = null var/obj/item/device/multitool/aiMulti = null - var/obj/item/device/camera/siliconcam/aicamera = null var/obj/machinery/bot/Bot //MALFUNCTION diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index e69830054bcd5cf..570e6b320d26f86 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -56,7 +56,6 @@ var/obj/item/weapon/tank/internal = null //Hatred. Used if a borg has a jetpack. var/obj/item/robot_parts/robot_suit/robot_suit = null //Used for deconstruction to remember what the borg was constructed out of.. - var/obj/item/device/camera/siliconcam/aicamera = null //photography var/toner = 0 var/tonermax = 40 diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 4b6e2ae91e52b90..1d241afcca82c1a 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -9,6 +9,7 @@ var/list/alarms_to_clear = list() var/designation = "" var/radiomod = "" //Radio character used before state laws/arrivals announce to allow department transmissions, default, or none at all. + var/obj/item/device/camera/siliconcam/aicamera = null //photography var/obj/item/device/radio/borg/radio = null //AIs dont use this but this is at the silicon level to advoid copypasta in say() @@ -413,4 +414,8 @@ return /mob/living/silicon/setEarDamage() - return \ No newline at end of file + return + +/mob/living/silicon/proc/GetPhoto() + if (aicamera) + return aicamera.selectpicture(aicamera) \ No newline at end of file diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 84961dff06874ff..08029e1a5f5561f 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -68,7 +68,7 @@ var/icon/clothes_s = null if(job_civilian_low & ASSISTANT)//This gives the preview icon clothes depending on which job(if any) is set to 'high' clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) else if(backbag == 3) @@ -78,7 +78,7 @@ switch(job_civilian_high) if(HOP) clothes_s = new /icon('icons/mob/uniform.dmi', "hop_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/head.dmi', "hopcap"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) @@ -86,7 +86,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(BARTENDER) clothes_s = new /icon('icons/mob/uniform.dmi', "bar_suit_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armoralt"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) @@ -94,7 +94,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(BOTANIST) clothes_s = new /icon('icons/mob/uniform.dmi', "hydroponics_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/hands.dmi', "ggloves"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "apron"), ICON_OVERLAY) if(backbag == 2) @@ -103,7 +103,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(COOK) clothes_s = new /icon('icons/mob/uniform.dmi', "chef_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/head.dmi', "chef"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "chef"), ICON_OVERLAY) if(backbag == 2) @@ -112,22 +112,22 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(JANITOR) clothes_s = new /icon('icons/mob/uniform.dmi', "janitor_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) if(backbag == 3) clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(LIBRARIAN) clothes_s = new /icon('icons/mob/uniform.dmi', "red_suit_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) if(backbag == 3) clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(QUARTERMASTER) clothes_s = new /icon('icons/mob/uniform.dmi', "qm_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sun"), ICON_OVERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_OVERLAY) + clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sun"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "clipboard"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) @@ -135,21 +135,21 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(CARGOTECH) clothes_s = new /icon('icons/mob/uniform.dmi', "cargo_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) if(backbag == 3) clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(MINER) clothes_s = new /icon('icons/mob/uniform.dmi', "miner_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "engiepack"), ICON_OVERLAY) if(backbag == 3) clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-eng"), ICON_OVERLAY) if(LAWYER) clothes_s = new /icon('icons/mob/uniform.dmi', "bluesuit_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "suitjacket_blue"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "briefcase"), ICON_OVERLAY) if(backbag == 2) @@ -158,7 +158,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(CHAPLAIN) clothes_s = new /icon('icons/mob/uniform.dmi', "chapblack_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "bible"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) @@ -166,12 +166,12 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(CLOWN) clothes_s = new /icon('icons/mob/uniform.dmi', "clown_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "clown"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "clown"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/mask.dmi', "clown"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/back.dmi', "clownpack"), ICON_OVERLAY) if(MIME) clothes_s = new /icon('icons/mob/uniform.dmi', "mime_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/hands.dmi', "lgloves"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/mask.dmi', "mime"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/head.dmi', "beret"), ICON_OVERLAY) @@ -185,7 +185,7 @@ switch(job_medsci_high) if(RD) clothes_s = new /icon('icons/mob/uniform.dmi', "director_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "clipboard"), ICON_OVERLAY) if(backbag == 2) @@ -194,7 +194,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(SCIENTIST) clothes_s = new /icon('icons/mob/uniform.dmi', "toxinswhite_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) @@ -202,7 +202,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(CHEMIST) clothes_s = new /icon('icons/mob/uniform.dmi', "chemistrywhite_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_chem"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) @@ -210,7 +210,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(CMO) clothes_s = new /icon('icons/mob/uniform.dmi', "cmo_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_cmo"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "firstaid"), ICON_OVERLAY) if(backbag == 2) @@ -219,7 +219,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-med"), ICON_OVERLAY) if(DOCTOR) clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "firstaid"), ICON_OVERLAY) if(backbag == 2) @@ -228,7 +228,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-med"), ICON_OVERLAY) if(GENETICIST) clothes_s = new /icon('icons/mob/uniform.dmi', "geneticswhite_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_gen"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) @@ -236,7 +236,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(VIROLOGIST) clothes_s = new /icon('icons/mob/uniform.dmi', "virologywhite_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/mask.dmi', "sterile"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_vir"), ICON_OVERLAY) if(backbag == 2) @@ -245,7 +245,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-med"), ICON_OVERLAY) if(ROBOTICIST) clothes_s = new /icon('icons/mob/uniform.dmi', "robotics_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/inhands/items_lefthand.dmi', "toolbox_blue"), ICON_OVERLAY) if(backbag == 2) @@ -257,9 +257,9 @@ switch(job_engsec_high) if(CAPTAIN) clothes_s = new /icon('icons/mob/uniform.dmi', "captain_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/head.dmi', "captain"), ICON_OVERLAY) - clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sun"), ICON_OVERLAY) + clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sun"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "capcarapace"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "captainpack"), ICON_OVERLAY) @@ -267,10 +267,10 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-cap"), ICON_OVERLAY) if(HOS) clothes_s = new /icon('icons/mob/uniform.dmi', "hos_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/head.dmi', "hosberetblack"), ICON_OVERLAY) - clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sunhud"), ICON_OVERLAY) + clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sunhud"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "hostrench"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "securitypack"), ICON_OVERLAY) @@ -278,10 +278,10 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-sec"), ICON_OVERLAY) if(WARDEN) clothes_s = new /icon('icons/mob/uniform.dmi', "warden_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/head.dmi', "policehelm"), ICON_OVERLAY) - clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sunhud"), ICON_OVERLAY) + clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sunhud"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "warden_jacket"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "securitypack"), ICON_OVERLAY) @@ -289,7 +289,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-sec"), ICON_OVERLAY) if(DETECTIVE) clothes_s = new /icon('icons/mob/uniform.dmi', "detective_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/mask.dmi', "cigaron"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/head.dmi', "detective"), ICON_OVERLAY) @@ -300,9 +300,9 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(OFFICER) clothes_s = new /icon('icons/mob/uniform.dmi', "security_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/head.dmi', "beret_badge"), ICON_OVERLAY) + clothes_s.Blend(new /icon('icons/mob/head.dmi', "helmet"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "securitypack"), ICON_OVERLAY) @@ -310,7 +310,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-sec"), ICON_OVERLAY) if(CHIEF) clothes_s = new /icon('icons/mob/uniform.dmi', "chief_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/mask.dmi', "cigaron"), ICON_OVERLAY) @@ -321,7 +321,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-eng"), ICON_OVERLAY) if(ENGINEER) clothes_s = new /icon('icons/mob/uniform.dmi', "engine_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "workboots"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/head.dmi', "hardhat0_yellow"), ICON_OVERLAY) if(backbag == 2) @@ -330,7 +330,7 @@ clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-eng"), ICON_OVERLAY) if(ATMOSTECH) clothes_s = new /icon('icons/mob/uniform.dmi', "atmos_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index a3db1f6b3b7d78c..247b0356c00fa1c 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -332,22 +332,22 @@ else injectaialbum(icon, img, desc, pixel_x, pixel_y, blueprintsinject) - -obj/item/device/camera/siliconcam/proc/viewpichelper(var/obj/item/device/camera/siliconcam/targetloc) +obj/item/device/camera/siliconcam/proc/selectpicture(var/obj/item/device/camera/siliconcam/targetloc) var/list/nametemp = list() var/find - var/datum/picture/selection if(targetloc.aipictures.len == 0) usr << "No images saved" return for(var/datum/picture/t in targetloc.aipictures) nametemp += t.fields["name"] find = input("Select image (numbered in order taken)") in nametemp - var/obj/item/weapon/photo/P = new/obj/item/weapon/photo() for(var/datum/picture/q in targetloc.aipictures) if(q.fields["name"] == find) - selection = q - break // just in case some AI decides to take 10 thousand pictures in a round + return q + +obj/item/device/camera/siliconcam/proc/viewpichelper(var/obj/item/device/camera/siliconcam/targetloc) + var/obj/item/weapon/photo/P = new/obj/item/weapon/photo() + var/datum/picture/selection = selectpicture(targetloc) P.photocreate(selection.fields["icon"], selection.fields["img"], selection.fields["desc"]) P.pixel_x = selection.fields["pixel_x"] P.pixel_y = selection.fields["pixel_y"] diff --git a/code/modules/reagents/Chemistry-Goon-Medicine.dm b/code/modules/reagents/Chemistry-Goon-Medicine.dm index 9afb2cc233b0514..4b65973724df81e 100644 --- a/code/modules/reagents/Chemistry-Goon-Medicine.dm +++ b/code/modules/reagents/Chemistry-Goon-Medicine.dm @@ -496,7 +496,7 @@ datum/reagent/oculine/on_mob_life(var/mob/living/M as mob) name = "Oculine" id = "oculine" result = "oculine" - required_reagents = list("atropine" = 1, "spaceacillin" = 1, "salglu_solution" = 1) + required_reagents = list("charcoal" = 1, "carbon" = 1, "hydrogen" = 1) result_amount = 3 mix_message = "The mixture sputters loudly and becomes a pale pink color." @@ -601,24 +601,23 @@ datum/reagent/strange_reagent metabolization_rate = 0.2 datum/reagent/strange_reagent/reaction_mob(var/mob/living/carbon/human/M as mob, var/method=TOUCH, var/volume) - if(M.bruteloss > 80 || M.fireloss > 80) - if(ishuman(M) || ismonkey(M)) - var/mob/living/carbon/C_target = M - var/obj/item/organ/brain/B = C_target.getorgan(/obj/item/organ/brain) - if(B) - B.loc = get_turf(C_target) - B.transfer_identity(C_target) - C_target.internal_organs -= B - M.gib() - else if(M.stat == DEAD) + if(M.stat == DEAD) + if(M.getBruteLoss() >= 80 || M.getFireLoss() >= 80) + if(ishuman(M) || ismonkey(M)) + var/mob/living/carbon/C_target = M + var/obj/item/organ/brain/B = C_target.getorgan(/obj/item/organ/brain) + if(B) + B.loc = get_turf(C_target) + B.transfer_identity(C_target) + C_target.internal_organs -= B + M.gib(M) + return var/mob/dead/observer/ghost = M.get_ghost() M.visible_message("[M]'s body convulses a bit.") - if(M.health <= config.health_threshold_dead && !M.suiciding && !ghost && !(NOCLONE in M.mutations)) + if(!M.suiciding && !ghost && !(NOCLONE in M.mutations)) M.stat = 1 - M.adjustBruteLoss(-10) - M.adjustFireLoss(-10) - M.adjustOxyLoss(-10) - M.adjustToxLoss(-10) + M.adjustOxyLoss(-20) + M.adjustToxLoss(-20) dead_mob_list -= M living_mob_list |= list(M) M.emote("gasp") diff --git a/code/modules/reagents/Chemistry-Goon-Pyrotechnics.dm b/code/modules/reagents/Chemistry-Goon-Pyrotechnics.dm index ddb358b72b58672..777ec06fdf0f87a 100644 --- a/code/modules/reagents/Chemistry-Goon-Pyrotechnics.dm +++ b/code/modules/reagents/Chemistry-Goon-Pyrotechnics.dm @@ -140,4 +140,5 @@ proc/goonchem_vortex(var/turf/simulated/T, var/setting_type, var/range, var/pull for(var/i = 0, i < pull_times, i++) step_away(X,T) else - X.throw_at(T) \ No newline at end of file + for(var/i = 0, i < pull_times, i++) + step_towards(X,T) \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Goon-Toxins.dm b/code/modules/reagents/Chemistry-Goon-Toxins.dm index 4264afcefa29123..8c0a3b7d61c3faf 100644 --- a/code/modules/reagents/Chemistry-Goon-Toxins.dm +++ b/code/modules/reagents/Chemistry-Goon-Toxins.dm @@ -103,12 +103,11 @@ datum/reagent/neurotoxin2 datum/reagent/neurotoxin2/on_mob_life(var/mob/living/M as mob) cycle_count++ - if(!M) M = holder.my_atom if(M.brainloss + M.toxloss <= 60) M.adjustBrainLoss(1*REM) M.adjustToxLoss(1*REM) if(cycle_count == 17) - M.sleeping += 1 + M.sleeping += 10 // buffed so it works ..() return diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index ef220eaca26365f..b9735642ba992c6 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -251,12 +251,13 @@ icon_state = "mixer0" use_power = 1 idle_power_usage = 20 - var/beaker = null + var/obj/item/weapon/reagent_containers/glass/beaker = null var/obj/item/weapon/storage/pill_bottle/loaded_pill_bottle = null var/mode = 0 var/condi = 0 var/useramount = 30 // Last used amount + /obj/machinery/chem_master/New() create_reagents(100) overlays += "waitlight" @@ -277,15 +278,14 @@ stat |= NOPOWER -/obj/machinery/chem_master/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob) +/obj/machinery/chem_master/attackby(var/obj/item/B as obj, var/mob/user as mob) if(default_unfasten_wrench(user, B)) return if(istype(B, /obj/item/weapon/reagent_containers/glass)) - if(src.beaker) - user << "A beaker is already loaded into the machine." + user << "A beaker is already loaded into the machine." return src.beaker = B user.drop_item() @@ -294,17 +294,16 @@ src.updateUsrDialog() icon_state = "mixer1" - else if(istype(B, /obj/item/weapon/storage/pill_bottle)) - + else if(!condi && istype(B, /obj/item/weapon/storage/pill_bottle)) if(src.loaded_pill_bottle) - user << "A pill bottle is already loaded into the machine." + user << "A pill bottle is already loaded into the machine." return - src.loaded_pill_bottle = B user.drop_item() B.loc = src user << "You add the pill bottle into the dispenser slot!" src.updateUsrDialog() + return /obj/machinery/chem_master/Topic(href, href_list) @@ -313,44 +312,63 @@ usr.set_machine(src) - - if (href_list["ejectp"]) + if(href_list["ejectp"]) if(loaded_pill_bottle) loaded_pill_bottle.loc = src.loc loaded_pill_bottle = null + else if(href_list["close"]) usr << browse(null, "window=chem_master") usr.unset_machine() return + else if(href_list["toggle"]) + mode = !mode + + else if(href_list["createbottle"]) + if(!condi) + var/name = stripped_input(usr, "Name:","Name your bottle!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN) + if(!name) + return + var/obj/item/weapon/reagent_containers/glass/bottle/P = new/obj/item/weapon/reagent_containers/glass/bottle(src.loc) + P.name = trim("[name] bottle") + P.pixel_x = rand(-7, 7) //random position + P.pixel_y = rand(-7, 7) + reagents.trans_to(P, 30) + else + var/obj/item/weapon/reagent_containers/food/condiment/P = new/obj/item/weapon/reagent_containers/food/condiment(src.loc) + reagents.trans_to(P, 50) + if(beaker) - var/datum/reagents/R = beaker:reagents + var/datum/reagents/R = beaker.reagents if (href_list["analyze"]) var/dat = "" - if(!condi) - dat += "Chemmaster 3000Chemical infos:

      Name:
      [href_list["name"]]

      Description:
      [href_list["desc"]]


      (Back)" - else - dat += "Condimaster 3000Condiment infos:

      Name:
      [href_list["name"]]

      Description:
      [href_list["desc"]]


      (Back)" - usr << browse(dat, "window=chem_master;size=575x400") + dat += "[condi ? "Condiment" : "Chemical"] information:

      " + dat += "Name:
      [href_list["name"]]

      " + dat += "Description:
      [href_list["desc"]]


      " + dat += "Back" + var/datum/browser/popup = new(usr, "chem_master", name) + popup.set_content(dat) + popup.set_title_image(usr.browse_rsc_icon(src.icon, src.icon_state)) + popup.open(1) return - else if (href_list["add"]) - + else if(href_list["add"]) if(href_list["amount"]) var/id = href_list["add"] var/amount = text2num(href_list["amount"]) if (amount < 0) return R.trans_id_to(src, id, amount) - else if (href_list["addcustom"]) - + else if(href_list["addcustom"]) var/id = href_list["addcustom"] - useramount = input("Select the amount to transfer.", 30, useramount) as num - useramount = isgoodnumber(useramount) + var/amt_temp = isgoodnumber(input(usr, "Select the amount to transfer.", "Transfer how much?", useramount) as num|null) + if(!amt_temp) + return + useramount = amt_temp src.Topic(null, list("amount" = "[useramount]", "add" = "[id]")) - else if (href_list["remove"]) - + else if(href_list["remove"]) if(href_list["amount"]) var/id = href_list["remove"] var/amount = text2num(href_list["amount"]) @@ -360,38 +378,37 @@ else reagents.remove_reagent(id, amount) - - else if (href_list["removecustom"]) - + else if(href_list["removecustom"]) var/id = href_list["removecustom"] - useramount = input("Select the amount to transfer.", 30, useramount) as num - useramount = isgoodnumber(useramount) + var/amt_temp = isgoodnumber(input(usr, "Select the amount to transfer.", "Transfer how much?", useramount) as num|null) + if(!amt_temp) + return + useramount = amt_temp src.Topic(null, list("amount" = "[useramount]", "remove" = "[id]")) - else if (href_list["toggle"]) - mode = !mode - - else if (href_list["main"]) + else if(href_list["main"]) attack_hand(usr) return - else if (href_list["eject"]) + + else if(href_list["eject"]) if(beaker) - beaker:loc = src.loc + beaker.loc = src.loc beaker = null reagents.clear_reagents() icon_state = "mixer0" - else if (href_list["createpill"]) //Also used for condiment packs. + + else if(href_list["createpill"]) //Also used for condiment packs. if(reagents.total_volume == 0) return if(!condi) var/amount = 1 var/vol_each = min(reagents.total_volume, 50) if(text2num(href_list["many"])) - amount = min(max(round(input(usr, "Amount:", "How many pills?", amount) as num|null), 0), 10) + amount = min(max(round(input(usr, "Max 10. Buffer content will be split evenly.", "How many pills?", amount) as num|null), 0), 10) if(!amount) return - vol_each = min(reagents.total_volume/amount, 50) + vol_each = min(reagents.total_volume / amount, 50) var/name = stripped_input(usr,"Name:","Name your pill!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN) - if(!name) + if(!name || !reagents.total_volume) return var/obj/item/weapon/reagent_containers/pill/P @@ -406,7 +423,7 @@ reagents.trans_to(P,vol_each) else var/name = stripped_input(usr, "Name:", "Name your pack!", reagents.get_master_reagent_name(), MAX_NAME_LEN) - if(!name) + if(!name || !reagents.total_volume) return var/obj/item/weapon/reagent_containers/food/condiment/pack/P = new/obj/item/weapon/reagent_containers/food/condiment/pack(src.loc) @@ -415,30 +432,17 @@ P.desc = "A small condiment pack. The label says it contains [name]." reagents.trans_to(P,10) - else if (href_list["createbottle"]) - if(!condi) - var/name = stripped_input(usr, "Name:","Name your bottle!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN) - if(!name) - return - var/obj/item/weapon/reagent_containers/glass/bottle/P = new/obj/item/weapon/reagent_containers/glass/bottle(src.loc) - P.name = trim("[name] bottle") - P.pixel_x = rand(-7, 7) //random position - P.pixel_y = rand(-7, 7) - reagents.trans_to(P,30) - else - var/obj/item/weapon/reagent_containers/food/condiment/P = new/obj/item/weapon/reagent_containers/food/condiment(src.loc) - reagents.trans_to(P,50) else if(href_list["createpatch"]) if(reagents.total_volume == 0) return var/amount = 1 var/vol_each = min(reagents.total_volume, 50) if(text2num(href_list["many"])) - amount = min(max(round(input(usr, "Amount:", "How many patches?", amount) as num|null), 0), 10) + amount = min(max(round(input(usr, "Max 10. Buffer content will be split evenly.", "How many patches?", amount) as num|null), 0), 10) if(!amount) return - vol_each = min(reagents.total_volume/amount, 50) + vol_each = min(reagents.total_volume / amount, 50) var/name = stripped_input(usr,"Name:","Name your patch!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN) - if(!name) + if(!name || !reagents.total_volume) return var/obj/item/weapon/reagent_containers/pill/P @@ -461,61 +465,76 @@ /obj/machinery/chem_master/attack_hand(mob/user as mob) if(stat & BROKEN) return + user.set_machine(src) var/dat = "" - if(!beaker) + if(beaker) + dat += "Beaker \[[beaker.reagents.total_volume]/[beaker.volume]\] Eject and Clear Buffer
      " + else dat = "Please insert beaker.
      " - if(src.loaded_pill_bottle) - dat += "Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]

      " + + dat += "
      Add to buffer:
        " + if(beaker) + if(beaker.reagents.total_volume) + for(var/datum/reagent/G in beaker.reagents.reagent_list) + dat += "
      • [G.name], [G.volume] Units - " + dat += "Analyze " + dat += "1 " + dat += "5 " + dat += "10 " + dat += "All " + dat += "Custom" else - dat += "No pill bottle inserted.

        " - dat += "Close" + dat += "
      • Beaker is empty." + else + dat += "
      • No beaker." + + dat += "

      Transfer to [(!mode ? "disposal" : "beaker")]:
        " + if(reagents.total_volume) + for(var/datum/reagent/N in reagents.reagent_list) + dat += "
      • [N.name], [N.volume] Units - " + dat += "Analyze " + dat += "1 " + dat += "5 " + dat += "10 " + dat += "All " + dat += "Custom" else - var/datum/reagents/R = beaker:reagents - dat += "Eject beaker and Clear Buffer
        " + dat += "
      • Buffer is empty." + dat += "

      " + + if(!condi) if(src.loaded_pill_bottle) - dat += "Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]

      " + dat += "Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\] Eject" else - dat += "No pill bottle inserted.

      " - if(!R.total_volume) - dat += "Beaker is empty." - else - dat += "Add to buffer:
      " - for(var/datum/reagent/G in R.reagent_list) - dat += "[G.name] , [G.volume] Units - " - dat += "(Analyze) " - dat += "(1) " - dat += "(5) " - dat += "(10) " - dat += "(All) " - dat += "(Custom)
      " - - dat += "
      Transfer to [(!mode ? "disposal" : "beaker")]:
      " - if(reagents.total_volume) - for(var/datum/reagent/N in reagents.reagent_list) - dat += "[N.name] , [N.volume] Units - " - dat += "(Analyze) " - dat += "(1) " - dat += "(5) " - dat += "(10) " - dat += "(All) " - dat += "(Custom)
      " - else - dat += "Empty
      " - if(!condi) - dat += "

      Create pill (50 units max)
      " - dat += "Create pills (10 pills max)

      " - dat += "

      Create patch (50 units max)
      " - dat += "Create patches (10 patches max)

      " - dat += "Create bottle (30 units max)" - else - dat += "

      Create pack (10 units max)
      " - dat += "Create bottle (50 units max)" + dat += "No pill bottle inserted." + else + dat += "
      " + + dat += "
        " if(!condi) - user << browse("Chemmaster 3000Chemmaster menu:

        [dat]", "window=chem_master;size=575x400") + if(beaker && reagents.total_volume) + dat += "
      • Create pill (50 units max)" + dat += "
      • Create multiple pills
        " + dat += "
      • Create patch (50 units max)" + dat += "
      • Create multiple patches
        " + else + dat += "
      • Create pill (50 units max)" + dat += "
      • Create multiple pills
        " + dat += "
      • Create patch (50 units max)" + dat += "
      • Create multiple patches
        " else - user << browse("Condimaster 3000Condimaster menu:

        [dat]", "window=chem_master;size=575x400") - onclose(user, "chem_master") + if(beaker && reagents.total_volume) + dat += "
      • Create pack (10 units max)
        " + else + dat += "
      • Create pack (10 units max)
        " + dat += "
      • Create bottle ([condi ? "50" : "30"] units max)" + dat += "
      " + dat += "
      Close" + var/datum/browser/popup = new(user, "chem_master", name, 470, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open(1) return /obj/machinery/chem_master/proc/isgoodnumber(var/num) @@ -523,7 +542,7 @@ if(num > 200) num = 200 else if(num < 0) - num = 1 + num = 0 else num = round(num) return num @@ -531,7 +550,6 @@ return 0 - /obj/machinery/chem_master/condimaster name = "CondiMaster 3000" desc = "Used to create condiments and other cooking supplies." @@ -963,12 +981,12 @@ obj/machinery/computer/pandemic/proc/replicator_cooldown(var/waittime) usr << "The machine cannot hold anymore items." return 1 - //Fill machine with the plantbag! - if(istype(O, /obj/item/weapon/storage/bag/plants)) + //Fill machine with a bag! + if(istype(O, /obj/item/weapon/storage/bag)) + var/obj/item/weapon/storage/bag/B = O - for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in O.contents) - O.contents -= G - G.loc = src + for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in B.contents) + B.remove_from_storage(G, src) holdingitems += G if(holdingitems && holdingitems.len >= limit) //Sanity checking so the blender doesn't overfill user << "You fill the All-In-One grinder to the brim." diff --git a/code/modules/reagents/Chemistry-Reagents/Consumable-Reagents/Food-Reagents.dm b/code/modules/reagents/Chemistry-Reagents/Consumable-Reagents/Food-Reagents.dm index 9443053a54909c2..639bbb04de8643f 100644 --- a/code/modules/reagents/Chemistry-Reagents/Consumable-Reagents/Food-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents/Consumable-Reagents/Food-Reagents.dm @@ -41,7 +41,7 @@ datum/reagent/consumable/vitamin/on_mob_life(var/mob/living/M as mob) if(prob(50)) M.heal_organ_damage(1,1) if(M.satiety < 600) - M.satiety += 20 + M.satiety += 30 ..() return @@ -51,14 +51,7 @@ datum/reagent/consumable/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 = 15 * REAGENTS_METABOLISM - metabolization_rate = 2 * REAGENTS_METABOLISM - -datum/reagent/consumable/sugar/on_mob_life(var/mob/living/M as mob) - if(M.satiety > -200) - M.satiety -= 20 //eating sugar makes you more hungry over time by making your hunger drop faster. - M.nutrition += max(((NUTRITION_LEVEL_FED + 50) - M.nutrition )/100, 0) * nutriment_factor // sugar doesn't help your hunger if your stomach is nearly full - holder.remove_reagent(src.id, metabolization_rate) + nutriment_factor = 10 * REAGENTS_METABOLISM datum/reagent/consumable/virus_food name = "Virus Food" diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 04131cd4de82882..dfdb24a2863f1ac 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -8,11 +8,14 @@ volume = 50 var/apply_type = INGEST var/apply_method = "swallow" + var/roundstart = 0 /obj/item/weapon/reagent_containers/pill/New() ..() if(!icon_state) icon_state = "pill[rand(1,20)]" + if(reagents.total_volume && roundstart) + name += " ([reagents.total_volume]u)" /obj/item/weapon/reagent_containers/pill/attack_self(mob/user) @@ -70,63 +73,64 @@ desc = "Highly toxic." icon_state = "pill5" list_reagents = list("toxin" = 50) - + roundstart = 1 /obj/item/weapon/reagent_containers/pill/cyanide name = "cyanide pill" desc = "Don't swallow this." icon_state = "pill5" list_reagents = list("cyanide" = 50) - + roundstart = 1 /obj/item/weapon/reagent_containers/pill/adminordrazine name = "adminordrazine pill" desc = "It's magic. We don't have to explain it." icon_state = "pill16" list_reagents = list("adminordrazine" = 50) - + roundstart = 1 /obj/item/weapon/reagent_containers/pill/morphine name = "morphine pill" desc = "Commonly used to treat insomnia." icon_state = "pill8" list_reagents = list("morphine" = 30) - + roundstart = 1 /obj/item/weapon/reagent_containers/pill/stimulant name = "stimulant pill" desc = "Often taken by overworked employees, athletes, and the inebriated. You'll snap to attention immediately!" icon_state = "pill19" list_reagents = list("ephedrine" = 10, "ethylredoxrazine" = 10, "coffee" = 30) - + roundstart = 1 /obj/item/weapon/reagent_containers/pill/salbutamol name = "salbutamol pill" desc = "Used to treat oxygen deprivation." icon_state = "pill18" list_reagents = list("salbutamol" = 30) - + roundstart = 1 /obj/item/weapon/reagent_containers/pill/charcoal name = "antitoxin pill" desc = "Neutralizes many common toxins." icon_state = "pill17" list_reagents = list("charcoal" = 50) - + roundstart = 1 /obj/item/weapon/reagent_containers/pill/epinephrine name = "epinephrine pill" desc = "Used to stabilize patients." icon_state = "pill5" - list_reagents = list("epinephrine" = 50) - + list_reagents = list("epinephrine" = 15) + roundstart = 1 /obj/item/weapon/reagent_containers/pill/mannitol name = "mannitol pill" desc = "Used to treat brain damage." icon_state = "pill17" list_reagents = list("mannitol" = 50) - + roundstart = 1 /obj/item/weapon/reagent_containers/pill/mutadone name = "mutadone pill" desc = "Used to treat genetic damage." icon_state = "pill20" list_reagents = list("mutadone" = 50) - + roundstart = 1 /obj/item/weapon/reagent_containers/pill/salicyclic - name = "salicyclic acid pill" + name = "salicylic acid pill" desc = "Used to dull pain." icon_state = "pill5" - list_reagents = list("sal_acid" = 50) + list_reagents = list("sal_acid" = 24) + roundstart = 1 diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 158b666f29ddb23..e6f476df192c838 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -630,7 +630,8 @@ id = "borg_upgrade_vtec" build_type = MECHFAB build_path = /obj/item/borg/upgrade/vtec - materials = list("$metal"=80000 , "$glass"=6000 , "$gold"= 5000) + req_tech = list("engineering" = 4, "materials" = 5) + materials = list("$metal"=80000 , "$glass"=6000 , "$uranium"= 5000) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -639,6 +640,7 @@ id = "borg_upgrade_tasercooler" build_type = MECHFAB build_path = /obj/item/borg/upgrade/tasercooler + req_tech = list("combat" = 5, "power" = 4) materials = list("$metal"=80000 , "$glass"=6000 , "$gold"= 2000, "$diamond" = 500) construction_time = 120 category = list("Cyborg Upgrade Modules") @@ -648,7 +650,8 @@ id = "borg_upgrade_jetpack" build_type = MECHFAB build_path = /obj/item/borg/upgrade/jetpack - materials = list("$metal"=10000,"$plasma"=15000,"$uranium" = 20000) + req_tech = list("engineering" = 4, "power" = 4) + materials = list("$metal"=10000,"$plasma"=12000,"$uranium" = 10000) construction_time = 120 category = list("Cyborg Upgrade Modules") diff --git a/code/world.dm b/code/world.dm index 039a2c95545eeff..1b0a3d170727bc7 100644 --- a/code/world.dm +++ b/code/world.dm @@ -58,7 +58,7 @@ world.log << "Database connection established." - data_core = new /obj/effect/datacore() + data_core = new /datum/datacore() spawn(-1) diff --git a/config/admins.txt b/config/admins.txt index 3081f865151c761..dc149720d8b6fd9 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -77,3 +77,4 @@ thurgatar = Game Master xerux = Game Master dannno = Game Master allura = Game Master +lo6a4evskiy = Game Master diff --git a/html/changelogs/Deantwo-PR-7445.yml b/html/changelogs/Deantwo-PR-7445.yml new file mode 100644 index 000000000000000..d31b8778699790d --- /dev/null +++ b/html/changelogs/Deantwo-PR-7445.yml @@ -0,0 +1,6 @@ +author: Deantwo + +delete-after: True + +changes: + - tweak: "Updated the ChemMaster's UI to the station default along with some functionality improvements." diff --git a/html/changelogs/Lo6a4evskiy-PR-7257.yml b/html/changelogs/Lo6a4evskiy-PR-7257.yml new file mode 100644 index 000000000000000..507f2478826853b --- /dev/null +++ b/html/changelogs/Lo6a4evskiy-PR-7257.yml @@ -0,0 +1,39 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscdel (general adding of nice things) +# rscadd (general deleting of nice things) +# imageadd +# imagedel +# spellcheck (typo fixes) +# experiment +# tgs (TG-ported fixes?) +################################# + +# Your name. +author: Lo6a4evskiy + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in single (') or double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "General record now contains a species field and a photo of the crewmember. Security record consoles allow you to update it with a photo taken in-game (with detective's camera, for example, or AI's)." + - rscadd: "Expanded functionality of security HUDs to display rank and photos." + - rscadd: "Medical HUDs allow user to change others' mental and physical status. Currently has no gameplay effect other than changing records." + - rscadd: "Medical HUDs can perform an examination at the distance, similrarly to how attacking yourself with help intent works. Has limited ability to detect suffocation and toxin damage." \ No newline at end of file diff --git a/html/changelogs/Paprka-ablightonrobotics.yml b/html/changelogs/Paprka-ablightonrobotics.yml new file mode 100644 index 000000000000000..1595635449b109a --- /dev/null +++ b/html/changelogs/Paprka-ablightonrobotics.yml @@ -0,0 +1,4 @@ +author: Paprika +delete-after: True +changes: + - tweak: "Added rnd requirements to borg upgrades and tweaked the prices." \ No newline at end of file diff --git a/html/changelogs/TZK13-PR-7197.yml b/html/changelogs/TZK13-PR-7197.yml new file mode 100644 index 000000000000000..665b84e16278775 --- /dev/null +++ b/html/changelogs/TZK13-PR-7197.yml @@ -0,0 +1,9 @@ +author: TZK13 + +delete-after: True + +changes: + - rscadd: "Advancements in the field of virology by Nanotrasen's finest have uncovered three new disease symptoms for further research:" + - rscadd: "Ocular Restoration heals any eye trauma experienced by the infected patient." + - rscadd: "Revitiligo increases the pigmentation levels of the infected patient's skin." + - rscadd: "Spontaneous Combustion ignites the infected patient without warning." \ No newline at end of file diff --git a/html/changelogs/drovidi-PR-7440.yml b/html/changelogs/drovidi-PR-7440.yml new file mode 100644 index 000000000000000..116b7dcf6341e6a --- /dev/null +++ b/html/changelogs/drovidi-PR-7440.yml @@ -0,0 +1,8 @@ +author: drovidi + +delete-after: True + +changes: + - tweak: "Blobs who burst in space will be given a 30 second warning before dying." + - tweak: "If a blob does die from bursting in space, a new crewmember will be infected." + - bugfix: "If there are no blobs or infected crew left after bursting, the round will now end properly, rather than becoming endless." \ No newline at end of file diff --git a/html/changelogs/phil235-PR-7572.yml b/html/changelogs/phil235-PR-7572.yml new file mode 100644 index 000000000000000..10390387ec0d751 --- /dev/null +++ b/html/changelogs/phil235-PR-7572.yml @@ -0,0 +1,6 @@ +author: phil235 + +delete-after: True + +changes: + - rscadd: "Cooking overhaul: microwave recipes are converted to tablecraft recipes. Added customizable food (burger,sandwich,spaghettis,soup,salad,cake,bread,kebab,pie) with specific color depending on ingredients used. Added new food ingredients (dough, flat dough, cake batter, pie dough, raw cutlet, cutlet, pizzabread). Meat is now sliceable into rawcutlets. Changed food recipes a bit (replacing stuff with new food ingredients). Repurposed the microwave to actually cook certain food items(no reagents required), and added a power setting to it. Bowl is no longer trash but a beaker-like container that is used in salad&soup recipes. Changed the hunger system a bit, sugar becomes a normal reagent again. Faster nutrition drain is now handled by a variable in junk food. Milk and soymilk cartons as well as flour packs are now condiment bottles. Added a slight buff to vitamin." diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index da1c71022d358a8..858fb2ba7c99f58 100644 Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 3d80a2669ea4fd1..aadeecc5da83587 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index 725367cf1356023..eee89a7e0d60ea7 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 8e5b28e1b1d3b11..b4c76ec86646bb4 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 5b1e335edd84aac..7a837f2abeda044 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index 29b3bd9e76719b6..9b53a7330eaf77e 100644 Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ diff --git a/icons/obj/food_ingredients.dmi b/icons/obj/food_ingredients.dmi new file mode 100644 index 000000000000000..aa66fd411c61ae6 Binary files /dev/null and b/icons/obj/food_ingredients.dmi differ diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi index f250ff8f04e742c..d996d179b2f3a3f 100644 Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 0317dbb5cf9732b..15b6e8c1f2d328b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -190,6 +190,7 @@ #include "code\datums\diseases\advance\symptoms\deafness.dm" #include "code\datums\diseases\advance\symptoms\dizzy.dm" #include "code\datums\diseases\advance\symptoms\fever.dm" +#include "code\datums\diseases\advance\symptoms\fire.dm" #include "code\datums\diseases\advance\symptoms\flesh_eating.dm" #include "code\datums\diseases\advance\symptoms\genetics.dm" #include "code\datums\diseases\advance\symptoms\hallucigen.dm" @@ -199,11 +200,11 @@ #include "code\datums\diseases\advance\symptoms\oxygen.dm" #include "code\datums\diseases\advance\symptoms\shedding.dm" #include "code\datums\diseases\advance\symptoms\shivering.dm" +#include "code\datums\diseases\advance\symptoms\skin.dm" #include "code\datums\diseases\advance\symptoms\sneeze.dm" #include "code\datums\diseases\advance\symptoms\stimulant.dm" #include "code\datums\diseases\advance\symptoms\symptoms.dm" -#include "code\datums\diseases\advance\symptoms\visionloss.dm" -#include "code\datums\diseases\advance\symptoms\vitiligo.dm" +#include "code\datums\diseases\advance\symptoms\vision.dm" #include "code\datums\diseases\advance\symptoms\voice_change.dm" #include "code\datums\diseases\advance\symptoms\vomit.dm" #include "code\datums\diseases\advance\symptoms\weight.dm" @@ -941,6 +942,7 @@ #include "code\modules\food&drinks\drinks\drinks\bottle.dm" #include "code\modules\food&drinks\drinks\drinks\drinkingglass.dm" #include "code\modules\food&drinks\food\condiment.dm" +#include "code\modules\food&drinks\food\customizables.dm" #include "code\modules\food&drinks\food\snacks.dm" #include "code\modules\food&drinks\food\snacks_bread.dm" #include "code\modules\food&drinks\food\snacks_burgers.dm" @@ -956,7 +958,7 @@ #include "code\modules\food&drinks\food\snacks_soup.dm" #include "code\modules\food&drinks\food\snacks_spaghetti.dm" #include "code\modules\food&drinks\food\snacks_vend.dm" -#include "code\modules\food&drinks\food\snacks\food_mixtures.dm" +#include "code\modules\food&drinks\food\snacks\dough.dm" #include "code\modules\food&drinks\food\snacks\meat.dm" #include "code\modules\food&drinks\kitchen machinery\food_cart.dm" #include "code\modules\food&drinks\kitchen machinery\gibber.dm" @@ -967,19 +969,20 @@ #include "code\modules\food&drinks\kitchen machinery\processor.dm" #include "code\modules\food&drinks\kitchen machinery\smartfridge.dm" #include "code\modules\food&drinks\recipes\drinks_recipes.dm" -#include "code\modules\food&drinks\recipes\microwave\recipes.dm" -#include "code\modules\food&drinks\recipes\microwave\recipes_bread.dm" -#include "code\modules\food&drinks\recipes\microwave\recipes_burger.dm" -#include "code\modules\food&drinks\recipes\microwave\recipes_cake.dm" -#include "code\modules\food&drinks\recipes\microwave\recipes_egg.dm" -#include "code\modules\food&drinks\recipes\microwave\recipes_meat.dm" -#include "code\modules\food&drinks\recipes\microwave\recipes_pastry.dm" -#include "code\modules\food&drinks\recipes\microwave\recipes_pie.dm" -#include "code\modules\food&drinks\recipes\microwave\recipes_pizza.dm" -#include "code\modules\food&drinks\recipes\microwave\recipes_salad.dm" -#include "code\modules\food&drinks\recipes\microwave\recipes_sandwichtoast.dm" -#include "code\modules\food&drinks\recipes\microwave\recipes_soup.dm" -#include "code\modules\food&drinks\recipes\microwave\recipes_spaghetti.dm" +#include "code\modules\food&drinks\recipes\food_mixtures.dm" +#include "code\modules\food&drinks\recipes\tablecraft\recipes_bread.dm" +#include "code\modules\food&drinks\recipes\tablecraft\recipes_burger.dm" +#include "code\modules\food&drinks\recipes\tablecraft\recipes_cake.dm" +#include "code\modules\food&drinks\recipes\tablecraft\recipes_egg.dm" +#include "code\modules\food&drinks\recipes\tablecraft\recipes_meat.dm" +#include "code\modules\food&drinks\recipes\tablecraft\recipes_misc.dm" +#include "code\modules\food&drinks\recipes\tablecraft\recipes_pastry.dm" +#include "code\modules\food&drinks\recipes\tablecraft\recipes_pie.dm" +#include "code\modules\food&drinks\recipes\tablecraft\recipes_pizza.dm" +#include "code\modules\food&drinks\recipes\tablecraft\recipes_salad.dm" +#include "code\modules\food&drinks\recipes\tablecraft\recipes_sandwich.dm" +#include "code\modules\food&drinks\recipes\tablecraft\recipes_soup.dm" +#include "code\modules\food&drinks\recipes\tablecraft\recipes_spaghetti.dm" #include "code\modules\hydroponics\biogenerator.dm" #include "code\modules\hydroponics\grown.dm" #include "code\modules\hydroponics\growninedible.dm"