diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 87b9d38d63..77ee16063e 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -153,16 +153,17 @@ /obj/effect/meteor/proc/ram_turf(var/turf/T) //first bust whatever is in the turf for(var/atom/A in T) - if(A != src) - A.ex_act(hitpwr) + if(A == src) // Don't hit ourselves. + continue + if(isturf(A)) // Don't hit floors. We'll deal with walls later. + continue + A.ex_act(hitpwr) //then, ram the turf if it still exists if(T) if(istype(T, /turf/simulated/wall)) var/turf/simulated/wall/W = T W.take_damage(wall_power) // Stronger walls can halt asteroids. - else - T.ex_act(hitpwr) // Floors and other things lack fancy health. //process getting 'hit' by colliding with a dense object diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 5004dba0db..41e3bdc38a 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -709,6 +709,7 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice = 5, + /obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/milk = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/cream = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/cola = 5, diff --git a/code/game/objects/items/weapons/material/chainsaw.dm b/code/game/objects/items/weapons/material/chainsaw.dm index de1e1902ff..7126fb3ef8 100644 --- a/code/game/objects/items/weapons/material/chainsaw.dm +++ b/code/game/objects/items/weapons/material/chainsaw.dm @@ -4,7 +4,7 @@ obj/item/weapon/chainsaw icon_state = "chainsaw0" item_state = "chainsaw0" var/on = 0 - var/max_fuel = 20 + var/max_fuel = 100 w_class = ITEMSIZE_LARGE slot_flags = SLOT_BACK w_class = ITEMSIZE_LARGE @@ -26,20 +26,20 @@ obj/item/weapon/chainsaw/Destroy() qdel(reagents) ..() -obj/item/weapon/chainsaw/proc/turnOn() +obj/item/weapon/chainsaw/proc/turnOn(mob/user as mob) if(on) return visible_message("You start pulling the string on \the [src].", "[usr] starts pulling the string on the [src].") if(max_fuel <= 0) - if(do_after(usr, 15)) - to_chat(usr, "\The [src] won't start!") + if(do_after(user, 15)) + to_chat(user, "\The [src] won't start!") else - to_chat(usr, "You fumble with the string.") + to_chat(user, "You fumble with the string.") else - if(do_after(usr, 15)) + if(do_after(user, 15)) visible_message("You start \the [src] up with a loud grinding!", "[usr] starts \the [src] up with a loud grinding!") - attack_verb = list("shreds", "rips", "tears") + attack_verb = list("shredded", "ripped", "torn") playsound(src, 'sound/weapons/chainsaw_startup.ogg',40,1) force = active_force edge = 1 @@ -47,13 +47,13 @@ obj/item/weapon/chainsaw/proc/turnOn() on = 1 update_icon() else - to_chat(usr, "You fumble with the string.") + to_chat(user, "You fumble with the string.") -obj/item/weapon/chainsaw/proc/turnOff() +obj/item/weapon/chainsaw/proc/turnOff(mob/user as mob) if(!on) return - to_chat(usr, "You switch the gas nozzle on the chainsaw, turning it off.") + to_chat(user, "You switch the gas nozzle on the chainsaw, turning it off.") attack_verb = list("bluntly hit", "beat", "knocked") - playsound(src, 'sound/weapons/chainsaw_turnoff.ogg',40,1) + playsound(user, 'sound/weapons/chainsaw_turnoff.ogg',40,1) force = inactive_force edge = 0 sharp = 0 @@ -62,9 +62,9 @@ obj/item/weapon/chainsaw/proc/turnOff() obj/item/weapon/chainsaw/attack_self(mob/user as mob) if(!on) - turnOn() + turnOn(user) else - turnOff() + turnOff(user) obj/item/weapon/chainsaw/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity) if(!proximity) return @@ -72,6 +72,8 @@ obj/item/weapon/chainsaw/afterattack(atom/A as mob|obj|turf|area, mob/user as mo if(on) playsound(src, 'sound/weapons/chainsaw_attack.ogg',40,1) if(A && on) + if(get_fuel() > 0) + reagents.remove_reagent("fuel", 1) if(istype(A,/obj/structure/window)) var/obj/structure/window/W = A W.shatter() diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm index eb4d0f7eb7..08dc413b6a 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm @@ -13,7 +13,6 @@ path = /obj/item/device/communicator cost = 0 - display_name = "communicator watch" /datum/gear/utility/communicator/New() ..() var/list/communicators = list() diff --git a/code/modules/economy/price_list.dm b/code/modules/economy/price_list.dm index eddec56714..e9c8b1372d 100644 --- a/code/modules/economy/price_list.dm +++ b/code/modules/economy/price_list.dm @@ -420,6 +420,9 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice price_tag = 6 +/obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice + price_tag = 6 + /obj/item/weapon/reagent_containers/food/drinks/bottle/cream price_tag = 6 diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 1856b28647..f3dd6b876d 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -387,6 +387,31 @@ I said no! items = list(/obj/item/weapon/reagent_containers/food/snacks/cheesewedge) result = /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato +/datum/recipe/mashedpotato + fruit = list("potato" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/mashedpotato + +/datum/recipe/bangersandmash + items = list( + /obj/item/weapon/reagent_containers/food/snacks/mashedpotato, + /obj/item/weapon/reagent_containers/food/snacks/sausage, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bangersandmash + +/datum/recipe/cheesymash + items = list( + /obj/item/weapon/reagent_containers/food/snacks/mashedpotato, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/cheesymash + +/datum/recipe/blackpudding + reagents = list("blood" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sausage, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/blackpudding + /datum/recipe/cheesyfries items = list( /obj/item/weapon/reagent_containers/food/snacks/fries, @@ -993,7 +1018,8 @@ I said no! result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake /datum/recipe/cake/carrot - fruit = list("carrot" = 3) + fruit = list("carrot" = 1) + reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake /datum/recipe/cake/cheese @@ -1005,22 +1031,22 @@ I said no! /datum/recipe/cake/orange fruit = list("orange" = 1) - reagents = list("milk" = 5, "flour" = 15, "egg" = 9, "orangejuice" = 3, "sugar" = 5) + reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake /datum/recipe/cake/lime fruit = list("lime" = 1) - reagents = list("milk" = 5, "flour" = 15, "egg" = 9, "limejuice" = 3, "sugar" = 5) + reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake /datum/recipe/cake/lemon fruit = list("lemon" = 1) - reagents = list("milk" = 5, "flour" = 15, "egg" = 9, "lemonjuice" = 3, "sugar" = 5) + reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake /datum/recipe/cake/chocolate items = list(/obj/item/weapon/reagent_containers/food/snacks/chocolatebar) - reagents = list("milk" = 5, "flour" = 15, "egg" = 9, "coco" = 4, "sugar" = 5) + reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake /datum/recipe/cake/birthday @@ -1028,7 +1054,8 @@ I said no! result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake /datum/recipe/cake/apple - fruit = list("apple" = 2) + fruit = list("apple" = 1) + reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake /datum/recipe/cake/brain diff --git a/code/modules/mob/mob_planes.dm b/code/modules/mob/mob_planes.dm index a9b36bc6d3..25c494c2e8 100644 --- a/code/modules/mob/mob_planes.dm +++ b/code/modules/mob/mob_planes.dm @@ -37,7 +37,7 @@ /datum/plane_holder/Destroy() my_mob = null - qdel_null_list(plane_masters) //Goodbye my children, be free //VOREStation Edit - Need to qdel these now + qdel_null_list(plane_masters) //Goodbye my children, be free return ..() /datum/plane_holder/proc/set_vis(var/which = null, var/state = FALSE) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 6af4f8e99a..7c7807b803 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -1608,6 +1608,18 @@ glass_name = "wine" glass_desc = "A very classy looking drink." + +/datum/reagent/ethanol/cider + name = "Cider" + id = "cider" + description = "Hard? Soft? No-one knows but it'll get you drunk." + taste_description = "tartness" + color = "#CE9C00" // rgb: 206, 156, 0 + strength = 10 + + glass_name = "cider" + glass_desc = "The second most Irish drink." + // Cocktails diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 3d352ace9a..d9dda36eac 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -1336,10 +1336,19 @@ name = "Vodka" id = "vodka" result = "vodka" - required_reagents = list("potato" = 10) + required_reagents = list("potatojuice" = 10) catalysts = list("enzyme" = 5) result_amount = 10 +/datum/chemical_reaction/drinks/cider + name = "Cider" + id = "cider" + result = "cider" + required_reagents = list("applejuice" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + + /datum/chemical_reaction/drinks/sake name = "Sake" id = "sake" diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index 4f0279f698..72d121fb8b 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -431,6 +431,18 @@ ..() reagents.add_reagent("orangejuice", 100) +/obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice + name = "Apple Juice" + desc = "Squeezed, pressed and ground to perfection!" + icon_state = "applejuice" + item_state = "carton" + center_of_mass = list("x"=16, "y"=7) + isGlass = 0 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice/New() + ..() + reagents.add_reagent("applejuice", 100) + /obj/item/weapon/reagent_containers/food/drinks/bottle/milk name = "Large Milk Carton" desc = "It's milk. This carton's large enough to serve your biggest milk drinkers." diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 55d0f0babf..e798f7c15a 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -1380,6 +1380,63 @@ ..() bitesize = 2 +/obj/item/weapon/reagent_containers/food/snacks/mashedpotato + name = "Mashed Potato" + desc = "Pillowy mounds of mashed potato." + icon_state = "mashedpotato" + trash = /obj/item/trash/plate + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("fluffy mashed potatoes" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/mashedpotato/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/bangersandmash + name = "Bangers and Mash" + desc = "An English treat." + icon_state = "bangersandmash" + trash = /obj/item/trash/plate + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("fluffy potato" = 3, "sausage" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/bangersandmash/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/cheesymash + name = "Cheesy Mashed Potato" + desc = "The only thing that could make mash better." + icon_state = "cheesymash" + trash = /obj/item/trash/plate + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("cheesy potato" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/cheesymash/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/blackpudding + name = "Black Pudding" + desc = "This doesn't seem like a pudding at all." + icon_state = "blackpudding" + filling_color = "#FF0000" + center_of_mass = list("x"=16, "y"=7) + +/obj/item/weapon/reagent_containers/food/snacks/blackpudding/New() + ..() + reagents.add_reagent("protein", 2) + reagents.add_reagent("blood", 5) + bitesize = 3 + /obj/item/weapon/reagent_containers/food/snacks/soydope name = "Soy Dope" desc = "Dope from a soy." diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index ef9357168c..56c6731b9a 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -56,9 +56,55 @@ affected.take_damage(5, 0) /////////////////////////////////////////////////////////////// -// Necrosis Surgery +// Necrosis Surgery Step 1 /////////////////////////////////////////////////////////////// +/datum/surgery_step/fix_dead_tissue //Debridement + priority = 2 + allowed_tools = list( + /obj/item/weapon/surgical/scalpel = 100, \ + /obj/item/weapon/material/knife = 75, \ + /obj/item/weapon/material/shard = 50, \ + ) + can_infect = 1 + blood_level = 1 + + min_duration = 110 + max_duration = 160 + +/datum/surgery_step/fix_dead_tissue/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if(!hasorgans(target)) + return 0 + + if (target_zone == O_MOUTH || target_zone == O_EYES) + return 0 + + var/obj/item/organ/external/affected = target.get_organ(target_zone) + + return affected && affected.open >= 2 && (affected.status & ORGAN_DEAD) + +/datum/surgery_step/fix_dead_tissue/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("[user] starts cutting away necrotic tissue in [target]'s [affected.name] with \the [tool]." , \ + "You start cutting away necrotic tissue in [target]'s [affected.name] with \the [tool].") + target.custom_pain("The pain in [affected.name] is unbearable!", 100) + ..() + +/datum/surgery_step/fix_dead_tissue/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("[user] has cut away necrotic tissue in [target]'s [affected.name] with \the [tool].", \ + "You have cut away necrotic tissue in [target]'s [affected.name] with \the [tool].") + affected.open = 3 + +/datum/surgery_step/fix_dead_tissue/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("[user]'s hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!", \ + "Your hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!") + affected.createwound(CUT, 20, 1) + +/////////////////////////////////////////////////////////////// +// Necrosis Surgery Step 2 +/////////////////////////////////////////////////////////////// /datum/surgery_step/treat_necrosis priority = 2 allowed_tools = list( diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 8aab6a0a46..1dac70fea5 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -128,9 +128,9 @@ // Not staying still fails you too. if(success) var/calc_duration = rand(S.min_duration, S.max_duration) - if(!do_mob(user, M, calc_duration * toolspeed)) + if(!do_mob(user, M, calc_duration * toolspeed, zone)) success = FALSE - to_chat(user, "You must remain close to your patient to conduct surgery.") + to_chat(user, "You must remain close to and keep focused on your patient to conduct surgery.") if(success) S.end_step(user, M, zone, src) diff --git a/html/changelogs/SunnyDaff-foodanddrink.yml b/html/changelogs/SunnyDaff-foodanddrink.yml new file mode 100644 index 0000000000..878be7a203 --- /dev/null +++ b/html/changelogs/SunnyDaff-foodanddrink.yml @@ -0,0 +1,10 @@ +author: SunnyDaff +delete-after: True + + - rscadd: Added new food items. + - rscadd: Added Cider. + - rscadd: Added Apple Juice to bar vending machine. + - bugfix: Fixed Vodka recipe. + - bugfix: Fixed Apple and Carrot cake recipes + - tweak: Changed Cake recipes to not include fruit juice + diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 465d4e7f1b..12993651aa 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 001c6ca683..dfd41034a2 100644 Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ diff --git a/maps/submaps/surface_submaps/wilderness/GovPatrol.dmm b/maps/submaps/surface_submaps/wilderness/GovPatrol.dmm new file mode 100644 index 0000000000..0b6d9bfba9 --- /dev/null +++ b/maps/submaps/surface_submaps/wilderness/GovPatrol.dmm @@ -0,0 +1,28 @@ +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/template_noop,/area/submap/GovPatrol) +"c" = (/turf/template_noop,/area/submap/Cragzone1) +"d" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/GovPatrol) +"e" = (/obj/item/device/radio/off,/turf/template_noop,/area/submap/GovPatrol) +"f" = (/obj/item/weapon/storage/box/flare,/turf/template_noop,/area/submap/GovPatrol) +"g" = (/obj/item/ammo_casing,/turf/template_noop,/area/submap/GovPatrol) +"h" = (/obj/item/clothing/under/utility/sifguard,/obj/item/clothing/shoes/boots/jackboots,/obj/effect/decal/remains,/turf/template_noop,/area/submap/GovPatrol) +"i" = (/obj/item/stack/material/wood/sif,/turf/template_noop,/area/submap/GovPatrol) +"j" = (/obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever,/turf/template_noop,/area/submap/GovPatrol) +"k" = (/obj/structure/bonfire/sifwood,/turf/template_noop,/area/submap/GovPatrol) +"l" = (/obj/effect/decal/remains,/turf/template_noop,/area/submap/GovPatrol) + +(1,1,1) = {" +aaaaaaaaaaaaa +abbbbbbbbbbba +abbbbbbbbcbba +abbdbbbbbbbba +abbbbbbbbbbba +abbbbbbbbbbba +abbbbedbbbbba +abbbbbbfgbbba +adbgbhbbbbbba +abbibbbbbbbba +abbbjbbkbbgba +abbgbbbbblgba +aaaaaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/wilderness/wilderness.dm b/maps/submaps/surface_submaps/wilderness/wilderness.dm index dd02276df6..aa678352a0 100644 --- a/maps/submaps/surface_submaps/wilderness/wilderness.dm +++ b/maps/submaps/surface_submaps/wilderness/wilderness.dm @@ -20,6 +20,7 @@ #include "DJOutpost1.dmm" #include "Rockybase.dmm" #include "MHR.dmm" +#include "GovPatrol.dmm" #endif @@ -151,4 +152,9 @@ name = "Manhack Rock" desc = "A rock filled with nasty Synthetics." mappath = 'maps/submaps/surface_submaps/wilderness/MHR.dmm' - cost = 15 \ No newline at end of file + cost = 15 + +/datum/map_template/surface/GovPatrol + name = "GovPatrol" + desc = "A long lost SifGuard ground survey patrol. Now they have you guys!" + mappath = 'maps/submaps/surface_submaps/wilderness/GovPatrol.dmm' \ No newline at end of file diff --git a/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm b/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm index 7dda526f2b..fece6a2abc 100644 --- a/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm +++ b/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm @@ -59,3 +59,6 @@ /area/submap/Rockybase name = "Rockybase" + +/area/submap/GovPatrol + name = "GovPatrol" \ No newline at end of file