From 7994cd6eb342be50c152f8daff5c38caeacfdf0b Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Thu, 26 Aug 2021 12:07:46 -0400 Subject: [PATCH] Bad fix WIP --- code/game/objects/items.dm | 2 +- .../objects/items/weapons/material/misc.dm | 13 +++ code/game/objects/structures/flora/flora.dm | 95 +++++++++++------- code/game/objects/structures/flora/trees.dm | 6 +- code/game/turfs/flooring/flooring.dm | 4 +- code/game/turfs/simulated/outdoors/dirt.dm | 15 +-- code/game/turfs/simulated/outdoors/grass.dm | 3 +- .../game/turfs/simulated/outdoors/outdoors.dm | 37 +++++++ .../simulated/outdoors/outdoors_attackby.dm | 12 +-- code/modules/food/food/snacks.dm | 68 ++++--------- code/modules/hydroponics/grown.dm | 35 +++++-- code/modules/hydroponics/grown_predefined.dm | 3 - code/modules/hydroponics/grown_sif.dm | 39 +++++++ code/modules/hydroponics/seed_packets.dm | 4 +- code/modules/hydroponics/seedtypes/apples.dm | 2 +- code/modules/hydroponics/trays/tray_soil.dm | 10 ++ .../materials/materials/organic/wood.dm | 4 +- .../materials/sheets/organic/tanning/hide.dm | 2 +- code/modules/mining/mine_items.dm | 20 ++++ code/modules/mining/mine_turfs.dm | 28 ++++-- .../subtypes/animal/passive/fish.dm | 10 +- code/modules/random_map/random_map.dm | 20 ++-- .../reagents/reactions/instant/instant.dm | 10 +- code/modules/reagents/reagents/food_drinks.dm | 7 -- code/modules/reagents/reagents/other.dm | 7 +- code/modules/reagents/reagents/toxins.dm | 2 +- icons/obj/flora/mushrooms.dmi | Bin 0 -> 560 bytes icons/turf/flooring/asteroid.dmi | Bin 24335 -> 29079 bytes vorestation.dme | 1 + 29 files changed, 301 insertions(+), 158 deletions(-) create mode 100644 code/modules/hydroponics/grown_sif.dm create mode 100644 icons/obj/flora/mushrooms.dmi diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 652a413707..c8c7dbbbfc 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -85,7 +85,7 @@ // Works similarly to worn sprite_sheets, except the alternate sprites are used when the clothing/refit_for_species() proc is called. var/list/sprite_sheets_obj - var/toolspeed = 1.0 // This is a multipler on how 'fast' a tool works. e.g. setting this to 0.5 will make the tool work twice as fast. + var/toolspeed = 1 // This is a multipler on how 'fast' a tool works. e.g. setting this to 0.5 will make the tool work twice as fast. var/attackspeed = DEFAULT_ATTACK_COOLDOWN // How long click delay will be when using this, in 1/10ths of a second. Checked in the user's get_attack_speed(). var/reach = 1 // Length of tiles it can reach, 1 is adjacent. var/addblends // Icon overlay for ADD highlights when applicable. diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index da1ba64a59..333064c3f6 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -23,7 +23,20 @@ applies_material_colour = 0 drop_sound = 'sound/items/drop/axe.ogg' pickup_sound = 'sound/items/pickup/axe.ogg' +/* VOREStation Removal - We have one already +/obj/item/weapon/material/knife/machete/hatchet/stone + name = "sharp rock" + desc = "The secret is to bang the rocks together, guys." + force_divisor = 0.2 + icon_state = "rock" + item_state = "rock" + attack_verb = list("chopped", "torn", "cut") +/obj/item/weapon/material/knife/machete/hatchet/stone/set_material(var/new_material) + var/old_name = name + . = ..() + name = old_name +*/ /obj/item/weapon/material/knife/machete/hatchet/unathiknife name = "duelling knife" desc = "A length of leather-bound wood studded with razor-sharp teeth. How crude." diff --git a/code/game/objects/structures/flora/flora.dm b/code/game/objects/structures/flora/flora.dm index 96795f446d..8a130c91f5 100644 --- a/code/game/objects/structures/flora/flora.dm +++ b/code/game/objects/structures/flora/flora.dm @@ -13,6 +13,7 @@ var/min_x_scale = 0.9 var/min_y_scale = 0.9 + var/removal_tool = /obj/item/weapon/shovel var/harvest_tool = null // The type of item used to harvest the plant. var/harvest_count = 0 var/destroy_on_harvest = FALSE @@ -40,23 +41,34 @@ . = ..() if(harvest_count < max_harvests) . += get_harvestable_desc() + if(harvest_tool) + var/obj/item/tool = harvest_tool + . += SPAN_NOTICE("\The [src] can be harvested with \a [initial(tool.name)].") + + if(removal_tool) + var/obj/item/tool = removal_tool + . += SPAN_NOTICE("\The [src] can be removed with \a [initial(tool.name)].") /obj/structure/flora/proc/get_harvestable_desc() return "\The [src] seems to have something hanging from it." /obj/structure/flora/attackby(var/obj/item/weapon/W, var/mob/living/user) + if(can_harvest(W)) var/harvest_spawn = pickweight(harvest_loot) var/atom/movable/AM = spawn_harvest(harvest_spawn, user) - - if(!AM) - to_chat(user, "You fail to harvest anything from \the [src].") - + if(AM) + to_chat(user, SPAN_NOTICE("You harvest \the [AM] from \the [src].")) else - to_chat(user, "You harvest \the [AM] from \the [src].") - if(harvest_count >= max_harvests && destroy_on_harvest) - qdel(src) - return + to_chat(user, SPAN_NOTICE("You fail to harvest anything from \the [src].")) + return + + if(removal_tool && istype(W, removal_tool)) + to_chat(user, SPAN_WARNING("You start uprooting \the [src]...")) + if(do_after(user, 30)) + visible_message(SPAN_NOTICE("\The [user] uproots and discards \the [src]!")) + qdel(src) + return ..(W, user) @@ -450,19 +462,28 @@ desc = "This is a tiny well lit decorative christmas tree." icon_state = "plant-xmas" +/obj/structure/flora/mushroom + name = "mushroom" + desc = "Hey, this one seems like a fun guy." + icon_state = "mush1" + icon = 'icons/obj/flora/mushrooms.dmi' + harvest_loot = list(/obj/item/weapon/reagent_containers/food/snacks/mushroomslice = 1) + harvest_tool = /obj/item/weapon/material/knife + max_harvests = 2 + min_harvests = 0 + +/obj/structure/flora/mushroom/Initialize() + . = ..() + icon_state = "mush[rand(1,4)]" + if(prob(50)) + adjust_scale(-1, 1) + pixel_x = rand(-4, 4) + /obj/structure/flora/sif icon = 'icons/obj/flora/sifflora.dmi' -/obj/structure/flora/sif/attack_hand(mob/user) - if (user.a_intent == I_HURT) - if(do_after(user, 5 SECONDS)) - user.visible_message("\The [user] digs up \the [src.name].", "You dig up \the [src.name].") - qdel(src) - else - user.visible_message("\The [user] pokes \the [src.name].", "You poke \the [src.name].") - /datum/category_item/catalogue/flora/subterranean_bulbs - name = "Sivian Flora - Subterranean Bulbs" + name = "Sivian Flora - Cavebulbs" desc = "A plant which is native to Sif, it continues the trend of being a bioluminescent specimen. These plants \ are generally suited for conditions experienced in caverns, which are generally dark and cold. It is not \ known why this plant evolved to be bioluminescent, however this property has, unintentionally, allowed for \ @@ -475,7 +496,7 @@ value = CATALOGUER_REWARD_EASY /obj/structure/flora/sif/subterranean - name = "subterranean plant" + name = "subterranean bulbs" desc = "This is a subterranean plant. It's bulbous ends glow faintly." icon_state = "glowplant" light_range = 2 @@ -483,12 +504,15 @@ light_color = "#FF6633" light_on = TRUE catalogue_data = list(/datum/category_item/catalogue/flora/subterranean_bulbs) + harvest_loot = list(/obj/item/weapon/reagent_containers/food/snacks/grown/sif/cavebulbs = 1) + harvest_tool = /obj/item/weapon/material/knife + max_harvests = 2 + min_harvests = 0 /obj/structure/flora/sif/subterranean/Initialize() icon_state = "[initial(icon_state)][rand(1,2)]" . = ..() - /datum/category_item/catalogue/flora/eyebulbs name = "Sivian Flora - Eyebulbs" desc = "A plant native to Sif. On the end of its stems are bulbs which visually resemble \ @@ -497,10 +521,14 @@ value = CATALOGUER_REWARD_EASY /obj/structure/flora/sif/eyes - name = "mysterious bulbs" - desc = "This is a mysterious looking plant. They kind of look like eyeballs. Creepy." + name = "eyebulbs" + desc = "This is a mysterious-looking plant. They kind of look like eyeballs. Creepy." icon_state = "eyeplant" catalogue_data = list(/datum/category_item/catalogue/flora/eyebulbs) + harvest_tool = /obj/item/weapon/material/knife + max_harvests = 2 + min_harvests = 0 + harvest_loot = list(/obj/item/weapon/reagent_containers/food/snacks/grown/sif/eyebulbs = 1) /obj/structure/flora/sif/eyes/Initialize() icon_state = "[initial(icon_state)][rand(1,3)]" @@ -514,20 +542,20 @@ value = CATALOGUER_REWARD_TRIVIAL /obj/structure/flora/sif/tendrils - name = "stocky tendrils" + name = "wabback tendrils" desc = "A 'plant' made up of hardened moss. It has tiny hairs that bunch together to look like snow." icon_state = "grass" randomize_size = TRUE catalogue_data = list(/datum/category_item/catalogue/flora/mosstendrils) harvest_tool = /obj/item/weapon/material/knife - max_harvests = 1 - min_harvests = -4 + max_harvests = 3 + min_harvests = 0 harvest_loot = list( - /obj/item/seeds/wabback = 15, - /obj/item/seeds/blackwabback = 1, - /obj/item/seeds/wildwabback = 30 - ) + /obj/item/weapon/reagent_containers/food/snacks/grown/sif/wabback = 15, + /obj/item/weapon/reagent_containers/food/snacks/grown/sif/blackwabback = 1, + /obj/item/weapon/reagent_containers/food/snacks/grown/sif/wildwabback = 30 + ) /obj/structure/flora/sif/tendrils/Initialize() icon_state = "[initial(icon_state)][rand(1,3)]" @@ -546,26 +574,24 @@ value = CATALOGUER_REWARD_HARD /obj/structure/flora/sif/frostbelle - name = "gnarly shrub" + name = "frostbelle shrub" desc = "A stocky plant with fins bearing luminescent veins along its branches." - icon_state = "grass" + icon_state = "frostbelle" randomize_size = TRUE catalogue_data = list(/datum/category_item/catalogue/flora/frostbelle) harvest_tool = /obj/item/weapon/material/knife max_harvests = 2 - min_harvests = -4 + min_harvests = 0 harvest_loot = list( /obj/item/weapon/reagent_containers/food/snacks/frostbelle = 1 - ) + ) var/variantnum = null /obj/structure/flora/sif/frostbelle/Initialize() . = ..() - variantnum = rand(1,3) - update_icon() /obj/structure/flora/sif/frostbelle/update_icon() @@ -573,7 +599,6 @@ if(max_harvests > 0 && harvest_count < max_harvests) icon_state = "[initial(icon_state)][variantnum]" - else icon_state = initial(icon_state) diff --git a/code/game/objects/structures/flora/trees.dm b/code/game/objects/structures/flora/trees.dm index 3598523671..ff1a99cd0c 100644 --- a/code/game/objects/structures/flora/trees.dm +++ b/code/game/objects/structures/flora/trees.dm @@ -272,12 +272,12 @@ harvest_tool = /obj/item/weapon/material/knife max_harvests = 2 - min_harvests = -4 + min_harvests = 0 harvest_loot = list( /obj/item/weapon/reagent_containers/food/snacks/siffruit = 20, - /obj/item/weapon/reagent_containers/food/snacks/grown/sifpod = 5, + /obj/item/weapon/reagent_containers/food/snacks/grown/sif/sifpod = 5, /obj/item/seeds/sifbulb = 1 - ) + ) var/light_shift = 0 diff --git a/code/game/turfs/flooring/flooring.dm b/code/game/turfs/flooring/flooring.dm index 4f83f297c7..ba7429eec4 100644 --- a/code/game/turfs/flooring/flooring.dm +++ b/code/game/turfs/flooring/flooring.dm @@ -143,7 +143,7 @@ var/list/flooring_types /decl/flooring/grass/sif // Subtype for Sif's grass. name = "growth" desc = "A natural moss that has adapted to the sheer cold climate." - flags = TURF_REMOVE_SHOVEL + flags = 0 icon = 'icons/turf/outdoors.dmi' icon_base = "grass_sif" build_type = /obj/item/stack/tile/grass/sif @@ -152,7 +152,7 @@ var/list/flooring_types /decl/flooring/grass/sif/forest name = "thick growth" desc = "A natural moss that has adapted to the sheer cold climate." - flags = TURF_REMOVE_SHOVEL + flags = 0 icon = 'icons/turf/outdoors.dmi' icon_base = "grass_sif_dark" build_type = /obj/item/stack/tile/grass/sif/forest diff --git a/code/game/turfs/simulated/outdoors/dirt.dm b/code/game/turfs/simulated/outdoors/dirt.dm index b02bbdd9f0..e4e97388f9 100644 --- a/code/game/turfs/simulated/outdoors/dirt.dm +++ b/code/game/turfs/simulated/outdoors/dirt.dm @@ -1,7 +1,8 @@ -/turf/simulated/floor/outdoors/dirt - name = "dirt" - desc = "Quite dirty!" - icon_state = "dirt-dark" - edge_blending_priority = 2 - turf_layers = list(/turf/simulated/floor/outdoors/rocks) - initial_flooring = /decl/flooring/dirt +/turf/simulated/floor/outdoors/dirt + name = "dirt" + desc = "Quite dirty!" + icon_state = "dirt-dark" + edge_blending_priority = 2 + turf_layers = list(/turf/simulated/floor/outdoors/rocks) + initial_flooring = /decl/flooring/dirt + can_dig = TRUE diff --git a/code/game/turfs/simulated/outdoors/grass.dm b/code/game/turfs/simulated/outdoors/grass.dm index 65d0e472f1..41aa084773 100644 --- a/code/game/turfs/simulated/outdoors/grass.dm +++ b/code/game/turfs/simulated/outdoors/grass.dm @@ -7,6 +7,7 @@ var/list/grass_types = list( icon_state = "grass0" edge_blending_priority = 4 initial_flooring = /decl/flooring/grass/outdoors // VOREStation Edit + can_dig = TRUE turf_layers = list( /turf/simulated/floor/outdoors/rocks, /turf/simulated/floor/outdoors/dirt @@ -42,7 +43,6 @@ var/list/grass_types = list( var/tree_chance = 2 /* animal_chance = 0.5 - animal_types = list( /mob/living/simple_mob/animal/sif/diyaab = 10, /mob/living/simple_mob/animal/sif/glitterfly = 2, @@ -96,4 +96,3 @@ var/list/grass_types = list( /obj/structure/flora/sif/eyes = 5, /obj/structure/flora/sif/tendrils = 30 ) - diff --git a/code/game/turfs/simulated/outdoors/outdoors.dm b/code/game/turfs/simulated/outdoors/outdoors.dm index 84c91366f1..07d382a161 100644 --- a/code/game/turfs/simulated/outdoors/outdoors.dm +++ b/code/game/turfs/simulated/outdoors/outdoors.dm @@ -24,6 +24,42 @@ var/list/turf_edge_cache = list() // When a turf gets demoted or promoted, this list gets adjusted. The top-most layer is the layer on the bottom of the list, due to how pop() works. var/list/turf_layers = list(/turf/simulated/floor/outdoors/rocks) + var/can_dig = FALSE + var/loot_count + +/turf/simulated/floor/outdoors/proc/get_loot_type() + if(loot_count && prob(60)) + return pick( \ + 12;/obj/item/weapon/reagent_containers/food/snacks/worm, \ + 1;/obj/item/weapon/material/knife/machete/hatchet/stone \ + ) + +/turf/simulated/floor/outdoors/Initialize(mapload) + . = ..() + if(can_dig && prob(33)) + loot_count = rand(1,3) + +/turf/simulated/floor/outdoors/attackby(obj/item/C, mob/user) + + if(can_dig && istype(C, /obj/item/weapon/shovel)) + to_chat(user, SPAN_NOTICE("\The [user] begins digging into \the [src] with \the [C].")) + var/delay = (3 SECONDS * C.toolspeed) + user.setClickCooldown(delay) + if(do_after(user, delay, src)) + if(!(locate(/obj/machinery/portable_atmospherics/hydroponics/soil) in contents)) + var/obj/machinery/portable_atmospherics/hydroponics/soil/soil = new(src) + user.visible_message(SPAN_NOTICE("\The [src] digs \a [soil] into \the [src].")) + else + var/loot_type = get_loot_type() + if(loot_type) + loot_count-- + var/obj/item/loot = new loot_type(src) + to_chat(user, SPAN_NOTICE("You dug up \a [loot]!")) + else + to_chat(user, SPAN_NOTICE("You didn't find anything of note in \the [src].")) + return + + . = ..() /turf/simulated/floor/Initialize(mapload) if(is_outdoors()) @@ -80,6 +116,7 @@ var/list/turf_edge_cache = list() icon_state = "mud_dark" edge_blending_priority = 3 initial_flooring = /decl/flooring/mud + can_dig = TRUE /turf/simulated/floor/outdoors/rocks name = "rocks" diff --git a/code/game/turfs/simulated/outdoors/outdoors_attackby.dm b/code/game/turfs/simulated/outdoors/outdoors_attackby.dm index a59676834f..1a969fee98 100644 --- a/code/game/turfs/simulated/outdoors/outdoors_attackby.dm +++ b/code/game/turfs/simulated/outdoors/outdoors_attackby.dm @@ -1,15 +1,7 @@ // this code here enables people to dig up worms from certain tiles. /turf/simulated/floor/outdoors/grass/attackby(obj/item/weapon/S as obj, mob/user as mob) - if(istype(S, /obj/item/weapon/shovel)) - to_chat(user, "You begin to dig in \the [src] with your [S].") - if(do_after(user, 4 SECONDS * S.toolspeed)) - to_chat(user, "\The [src] has been dug up, a worm pops from the ground.") - new /obj/item/weapon/reagent_containers/food/snacks/worm(src) - else - to_chat(user, "You decide to not finish digging in \the [src].") - else if(istype(S, /obj/item/stack/tile/floor)) + if(istype(S, /obj/item/stack/tile/floor)) ChangeTurf(/turf/simulated/floor, preserve_outdoors = TRUE) return - else - ..() \ No newline at end of file + . = ..() \ No newline at end of file diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 300b8d87f9..d92499f29b 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -842,47 +842,18 @@ /obj/item/weapon/reagent_containers/food/snacks/carpmeat/Initialize() . = ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent(toxin_type, toxin_amount) - -/obj/item/weapon/reagent_containers/food/snacks/crabmeat - name = "crab legs" - desc = "... Coffee? Is that you?" - icon_state = "crabmeat" - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/crabmeat/Initialize() - . = ..() - reagents.add_reagent("seafood", 2) - -/obj/item/weapon/reagent_containers/food/snacks/crab_legs - name = "steamed crab legs" - desc = "Crab legs steamed and buttered to perfection. One day when the boss gets hungry..." - icon_state = "crablegs" - nutriment_amt = 2 - nutriment_desc = list("savory butter" = 2) - bitesize = 2 - trash = /obj/item/trash/plate - -/obj/item/weapon/reagent_containers/food/snacks/crab_legs/Initialize() - . = ..() - reagents.add_reagent("seafood", 6) - reagents.add_reagent("sodiumchloride", 1) - -/obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif - desc = "A fillet of sivian fish meat." - filling_color = "#2c2cff" - color = "#2c2cff" - toxin_type = "neurotoxic_protein" - toxin_amount = 2 - -/obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif/murkfish - toxin_type = "murk_protein" + reagents.add_reagent("seafood", 3) + if(toxin_type && toxin_amount) + reagents.add_reagent(toxin_type, toxin_amount) /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish desc = "A fillet of fish meat." - toxin_type = "neurotoxic_protein" - toxin_amount = 1 + toxin_type = null + +/obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish/sif + desc = "A fillet of sivian fish meat." + filling_color = "#2c2cff" + color = "#2c2cff" /obj/item/weapon/reagent_containers/food/snacks/fishfingers name = "Fish Fingers" @@ -894,7 +865,7 @@ /obj/item/weapon/reagent_containers/food/snacks/fishfingers/Initialize() . = ..() - reagents.add_reagent("protein", 4) + reagents.add_reagent("seafood", 4) /obj/item/weapon/reagent_containers/food/snacks/zestfish name = "Zesty Fish" @@ -906,11 +877,11 @@ /obj/item/weapon/reagent_containers/food/snacks/zestfish/Initialize() . = ..() - reagents.add_reagent("protein", 4) + reagents.add_reagent("seafood", 4) -/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice - name = "huge mushroom slice" - desc = "A slice from a huge mushroom." +/obj/item/weapon/reagent_containers/food/snacks/mushroomslice + name = "mushroom slice" + desc = "A slice of mushroom." icon_state = "hugemushroomslice" filling_color = "#E0D7C5" center_of_mass = list("x"=17, "y"=16) @@ -918,7 +889,7 @@ nutriment_desc = list("raw" = 2, "mushroom" = 2) bitesize = 6 -/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/Initialize() +/obj/item/weapon/reagent_containers/food/snacks/mushroomslice/Initialize() . = ..() reagents.add_reagent("psilocybin", 3) @@ -3941,7 +3912,8 @@ /obj/item/weapon/reagent_containers/food/snacks/rawcutlet/Initialize() . = ..() - reagents.add_reagent("protein", 1) + reagents.add_reagent("fishbait", 9) + reagents.add_reagent("protein", 3) /obj/item/weapon/reagent_containers/food/snacks/cutlet name = "cutlet" @@ -3953,7 +3925,8 @@ /obj/item/weapon/reagent_containers/food/snacks/cutlet/Initialize() . = ..() - reagents.add_reagent("protein", 2) + reagents.add_reagent("fishbait", 15) + reagents.add_reagent("protein", 5) /obj/item/weapon/reagent_containers/food/snacks/rawmeatball name = "raw meatball" @@ -3965,7 +3938,8 @@ /obj/item/weapon/reagent_containers/food/snacks/rawmeatball/Initialize() . = ..() - reagents.add_reagent("protein", 2) + reagents.add_reagent("fishbait", 30) + reagents.add_reagent("protein", 10) /obj/item/weapon/reagent_containers/food/snacks/hotdog name = "hotdog" diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index bf83e28bf7..24c5ca9b46 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -185,13 +185,17 @@ pocell.charge = pocell.maxcharge qdel(src) return - else if(W.sharp) + + if(W.sharp) + if(seed.kitchen_tag == "pumpkin") // Ugggh these checks are awful. user.show_message("You carve a face into [src]!", 1) new /obj/item/clothing/head/pumpkinhead (user.loc) qdel(src) return - else if(seed.chems) + + if(seed.chems) + if(W.sharp && W.edge && !isnull(seed.chems["woodpulp"])) user.show_message("You make planks out of \the [src]!", 1) playsound(src, 'sound/effects/woodcutting.ogg', 50, 1) @@ -209,36 +213,49 @@ to_chat(user, "You add the newly-formed wood to the stack. It now contains [NG.amount] planks.") qdel(src) return - else if(!isnull(seed.chems["potato"])) + + if(seed.kitchen_tag == "sunflower") + new /obj/item/weapon/reagent_containers/food/snacks/rawsunflower(get_turf(src)) + to_chat(user, SPAN_NOTICE("You remove the seeds from the flower, slightly damaging them.")) + qdel(src) + return + + if(seed.kitchen_tag == "potato" || !isnull(seed.chems["potato"])) to_chat(user, "You slice \the [src] into sticks.") new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(get_turf(src)) qdel(src) return - else if(!isnull(seed.chems["carrotjuice"])) + + if(!isnull(seed.chems["carrotjuice"])) to_chat(user, "You slice \the [src] into sticks.") new /obj/item/weapon/reagent_containers/food/snacks/carrotfries(get_turf(src)) qdel(src) return - else if(!isnull(seed.chems["pineapplejuice"])) + + if(!isnull(seed.chems["pineapplejuice"])) to_chat(user, "You slice \the [src] into rings.") new /obj/item/weapon/reagent_containers/food/snacks/pineapple_ring(get_turf(src)) qdel(src) return - else if(!isnull(seed.chems["soymilk"])) + + if(!isnull(seed.chems["soymilk"])) to_chat(user, "You roughly chop up \the [src].") new /obj/item/weapon/reagent_containers/food/snacks/soydope(get_turf(src)) qdel(src) return - else if(seed.get_trait(TRAIT_FLESH_COLOUR)) + + if(seed.get_trait(TRAIT_FLESH_COLOUR)) to_chat(user, "You slice up \the [src].") var/slices = rand(3,5) var/reagents_to_transfer = round(reagents.total_volume/slices) for(var/i=1; i<=slices; i++) var/obj/item/weapon/reagent_containers/food/snacks/fruit_slice/F = new(get_turf(src),seed) - if(reagents_to_transfer) reagents.trans_to_obj(F,reagents_to_transfer) + if(reagents_to_transfer) + reagents.trans_to_obj(F,reagents_to_transfer) qdel(src) return - ..() + + . = ..() /obj/item/weapon/reagent_containers/food/snacks/grown/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone) . = ..() diff --git a/code/modules/hydroponics/grown_predefined.dm b/code/modules/hydroponics/grown_predefined.dm index d8187fb24e..643d27030a 100644 --- a/code/modules/hydroponics/grown_predefined.dm +++ b/code/modules/hydroponics/grown_predefined.dm @@ -3,6 +3,3 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus plantname = "ambrosiadeus" - -/obj/item/weapon/reagent_containers/food/snacks/grown/sifpod - plantname = "sifbulb" diff --git a/code/modules/hydroponics/grown_sif.dm b/code/modules/hydroponics/grown_sif.dm new file mode 100644 index 0000000000..3075fc148f --- /dev/null +++ b/code/modules/hydroponics/grown_sif.dm @@ -0,0 +1,39 @@ +/obj/item/weapon/reagent_containers/food/snacks/grown/sif + var/seeds = 0 + +/obj/item/weapon/reagent_containers/food/snacks/grown/sif/Initialize(mapload, planttype) // Wild Sifplants have some seeds you can extract with a knife. + . = ..() + seeds = rand(1, 2) + +/obj/item/weapon/reagent_containers/food/snacks/grown/sif/examine(mob/user) + . = ..() + if(seeds) + to_chat(user, SPAN_NOTICE("You can see [seeds] seed\s in \the [src]. You might be able to extract them with a sharp object.")) + +/obj/item/weapon/reagent_containers/food/snacks/grown/sif/attackby(var/obj/item/weapon/W, var/mob/living/user) + if(seed && W.sharp && seeds > 0) + var/take_seeds = min(seeds, rand(1,2)) + seeds -= take_seeds + to_chat(user, SPAN_NOTICE("You stick \the [W] into \the [src] and lever out [take_seeds] seed\s.")) + for(var/i = 1 to take_seeds) + new /obj/item/seeds(get_turf(src), seed.name) + return + . = ..() + +/obj/item/weapon/reagent_containers/food/snacks/grown/sif/sifpod + plantname = "sifbulb" + +/obj/item/weapon/reagent_containers/food/snacks/grown/sif/wabback + plantname = "wabback" + +/obj/item/weapon/reagent_containers/food/snacks/grown/sif/blackwabback + plantname = "blackwabback" + +/obj/item/weapon/reagent_containers/food/snacks/grown/sif/wildwabback + plantname = "wildwabback" + +/obj/item/weapon/reagent_containers/food/snacks/grown/sif/eyebulbs + plantname = "eyebulbs" + +/obj/item/weapon/reagent_containers/food/snacks/grown/sif/cavebulbs + plantname = "cavebulbs" diff --git a/code/modules/hydroponics/seed_packets.dm b/code/modules/hydroponics/seed_packets.dm index 08eea609bf..c228617712 100644 --- a/code/modules/hydroponics/seed_packets.dm +++ b/code/modules/hydroponics/seed_packets.dm @@ -13,7 +13,9 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds) var/datum/seed/seed var/modified = 0 -/obj/item/seeds/Initialize() +/obj/item/seeds/Initialize(var/ml, var/_seed_type) + if(_seed_type in SSplants.seeds) + seed_type = _seed_type update_seed() . = ..() diff --git a/code/modules/hydroponics/seedtypes/apples.dm b/code/modules/hydroponics/seedtypes/apples.dm index 7044a0c6dc..4bd8a0bade 100644 --- a/code/modules/hydroponics/seedtypes/apples.dm +++ b/code/modules/hydroponics/seedtypes/apples.dm @@ -43,7 +43,7 @@ /datum/seed/apple/sif name = "sifbulb" - seed_name = "sivian tree" + seed_name = "sivian pod" display_name = "sivian pod" kitchen_tag = "apple" chems = list("nutriment" = list(1,5),"sifsap" = list(10,20)) diff --git a/code/modules/hydroponics/trays/tray_soil.dm b/code/modules/hydroponics/trays/tray_soil.dm index f396b00dbf..43c918507b 100644 --- a/code/modules/hydroponics/trays/tray_soil.dm +++ b/code/modules/hydroponics/trays/tray_soil.dm @@ -32,6 +32,16 @@ /obj/machinery/portable_atmospherics/hydroponics/soil/CanPass() return 1 +/obj/machinery/portable_atmospherics/hydroponics/soil/attackby(obj/item/O, mob/user) + if(istype(O, /obj/item/weapon/shovel) && user.a_intent == I_HURT) + user.visible_message(SPAN_NOTICE("\The [user] begins filling in \the [src].")) + if(do_after(user, 3 SECONDS) && !QDELETED(src)) + user.visible_message(SPAN_NOTICE("\The [user] fills in \the [src].")) + qdel(src) + return + . = ..() + + // Holder for vine plants. // Icons for plants are generated as overlays, so setting it to invisible wouldn't work. // Hence using a blank icon. diff --git a/code/modules/materials/materials/organic/wood.dm b/code/modules/materials/materials/organic/wood.dm index 6b2fb2ca06..93b642af74 100644 --- a/code/modules/materials/materials/organic/wood.dm +++ b/code/modules/materials/materials/organic/wood.dm @@ -45,7 +45,9 @@ new /datum/stack_recipe("noticeboard", /obj/structure/noticeboard, 1, recycle_material = "[name]"), new /datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]"), new /datum/stack_recipe("painting easel", /obj/structure/easel, 5, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]"), - new /datum/stack_recipe("painting frame", /obj/item/frame/painting, 5, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]") + new /datum/stack_recipe("painting frame", /obj/item/frame/painting, 5, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]"), + new /datum/stack_recipe("roofing tile", /obj/item/stack/tile/roofing, 3, 4, 20, recycle_material = "[name]"), + new /datum/stack_recipe("shovel", /obj/item/weapon/shovel/wood, 2, time = 10, on_floor = TRUE, supplied_material = "[name]") ) /datum/material/wood/sif diff --git a/code/modules/materials/sheets/organic/tanning/hide.dm b/code/modules/materials/sheets/organic/tanning/hide.dm index e9617ba921..26894dcaf6 100644 --- a/code/modules/materials/sheets/organic/tanning/hide.dm +++ b/code/modules/materials/sheets/organic/tanning/hide.dm @@ -20,7 +20,7 @@ //visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message) user.visible_message("\The [user] starts cutting hair off \the [src]", "You start cutting the hair off \the [src]", "You hear the sound of a knife rubbing against flesh") var/scraped = 0 - while(amount > 0 && do_after(user, 2.5 SECONDS)) // 2.5s per hide + while(amount > 0 && do_after(user, 2.5 SECONDS, user)) //Try locating an exisitng stack on the tile and add to there if possible var/obj/item/stack/hairlesshide/H = null for(var/obj/item/stack/hairlesshide/HS in user.loc) // Could be scraping something inside a locker, hence the .loc, not get_turf diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 2f744ac7c5..2c661ba062 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -128,6 +128,26 @@ edge = TRUE var/digspeed = 40 +/obj/item/weapon/shovel/wood + icon_state = "whiteshovel" + item_state = "whiteshovel" + var/datum/material/material + +/obj/item/weapon/shovel/wood/Initialize(var/ml, var/_mat) + . = ..() + material = get_material_by_name(_mat) + if(!istype(material)) + material = null + else + name = "[material.display_name] shovel" + matter = list("[material.name]" = 50) + update_icon() + +/obj/item/weapon/shovel/wood/update_icon() + . = ..() + color = material ? material.icon_colour : initial(color) + alpha = min(max(255 * material.opacity, 80), 255) + /obj/item/weapon/shovel/spade name = "spade" desc = "A small tool for digging and moving dirt." diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index aea40de035..0c6c8b44ad 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -6,24 +6,25 @@ var/list/mining_overlay_cache = list() icon = 'icons/turf/walls.dmi' icon_state = "rock-dark" density = TRUE - + /turf/simulated/mineral //wall piece name = "rock" icon = 'icons/turf/walls.dmi' icon_state = "rock" - var/rock_side_icon_state = "rock_side" - var/sand_icon_state = "asteroid" - var/rock_icon_state = "rock" - var/random_icon = 0 oxygen = 0 nitrogen = 0 opacity = 1 density = TRUE blocks_air = 1 temperature = T0C - can_dirty = FALSE + var/floor_name = "sand" + var/rock_side_icon_state = "rock_side" + var/sand_icon_state = "asteroid" + var/rock_icon_state = "rock" + var/random_icon = 0 + var/ore/mineral var/sand_dug var/mined_ore = 0 @@ -65,6 +66,10 @@ var/list/mining_overlay_cache = list() has_resources = 1 +/turf/simulated/mineral/ChangeTurf(turf/N, tell_universe, force_lighting_update, preserve_outdoors) + clear_ore_effects() + . = ..() + // Alternative rock wall sprites. /turf/simulated/mineral/light icon_state = "rock-light" @@ -109,6 +114,14 @@ var/list/mining_overlay_cache = list() blocks_air = 0 can_build_into_floor = TRUE +/turf/simulated/mineral/floor/mud + icon_state = "mud" + sand_icon_state = "mud" + +/turf/simulated/mineral/floor/dirt + icon_state = "dirt" + sand_icon_state = "dirt" + //Alternative sand floor sprite. /turf/simulated/mineral/floor/light icon_state = "sand-light" @@ -140,6 +153,7 @@ var/list/mining_overlay_cache = list() opacity = 0 blocks_air = 0 can_build_into_floor = TRUE + clear_ore_effects() update_general() /turf/simulated/mineral/proc/make_wall() @@ -223,7 +237,7 @@ var/list/mining_overlay_cache = list() //We are a sand floor else - name = "sand" + name = floor_name icon = 'icons/turf/flooring/asteroid.dmi' icon_state = sand_icon_state diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm index a4fb4f4078..408969d16a 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm @@ -129,7 +129,7 @@ catalogue_data = list(/datum/category_item/catalogue/fauna/javelin) - meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif + meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish/sif /datum/category_item/catalogue/fauna/icebass name = "Sivian Fauna - Glitter Bass" @@ -156,7 +156,7 @@ catalogue_data = list(/datum/category_item/catalogue/fauna/icebass) - meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif + meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish/sif var/max_red = 150 var/min_red = 50 @@ -245,7 +245,7 @@ var/image/head_image - meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif + meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish/sif /mob/living/simple_mob/animal/passive/fish/rockfish/Initialize() . = ..() @@ -292,7 +292,7 @@ has_eye_glow = TRUE - meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif + meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish/sif /datum/category_item/catalogue/fauna/murkin name = "Sivian Fauna - Murkfish" @@ -319,4 +319,4 @@ catalogue_data = list(/datum/category_item/catalogue/fauna/murkin) - meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif/murkfish + meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish/sif diff --git a/code/modules/random_map/random_map.dm b/code/modules/random_map/random_map.dm index d36e7a80a1..a563f16c11 100644 --- a/code/modules/random_map/random_map.dm +++ b/code/modules/random_map/random_map.dm @@ -24,6 +24,9 @@ var/global/list/map_count = list() var/floor_type = /turf/simulated/floor var/target_turf_type + var/skip_dense = FALSE + var/keep_outside = FALSE + // Storage for the final iteration of the map. var/list/map = list() // Actual map. @@ -61,11 +64,16 @@ var/global/list/map_count = list() rand_seed(seed) priority_process = 1 + var/failed = FALSE for(var/i = 0;i[capitalize(name)] generation completed in [round(0.1*(world.timeofday-start_time),0.1)] seconds.", R_DEBUG) - return - if(!do_not_announce) admin_notice("[capitalize(name)] failed to generate ([round(0.1*(world.timeofday-start_time),0.1)] seconds): could not produce sane map.", R_DEBUG) + if(!generate()) + failed = TRUE + + if(!do_not_announce) + if(!failed) + admin_notice("[capitalize(name)] generation completed in [round(0.1*(world.timeofday-start_time),0.1)] seconds.", R_DEBUG) + else + admin_notice("[capitalize(name)] failed to generate ([round(0.1*(world.timeofday-start_time),0.1)] seconds): could not produce sane map.", R_DEBUG) /datum/random_map/proc/get_map_cell(var/x,var/y) if(!map) @@ -162,11 +170,11 @@ var/global/list/map_count = list() if(!current_cell) return 0 var/turf/T = locate((origin_x-1)+x,(origin_y-1)+y,origin_z) - if(!T || (target_turf_type && !istype(T,target_turf_type))) + if(!T || (skip_dense && T.density) || (target_turf_type && !istype(T,target_turf_type))) return 0 var/newpath = get_appropriate_path(map[current_cell]) if(newpath) - T.ChangeTurf(newpath) + T.ChangeTurf(newpath, preserve_outdoors = keep_outside) get_additional_spawns(map[current_cell],T,get_spawn_dir(x, y)) return T diff --git a/code/modules/reagents/reactions/instant/instant.dm b/code/modules/reagents/reactions/instant/instant.dm index bb9e443f59..6f49a56ef3 100644 --- a/code/modules/reagents/reactions/instant/instant.dm +++ b/code/modules/reagents/reactions/instant/instant.dm @@ -1122,14 +1122,12 @@ name = "Neutralize Carpotoxin" id = "carpotoxin_neutral" result = "protein" - required_reagents = list("radium" = 1, "carpotoxin" = 1, "sifsap" = 1) - catalysts = list("sifsap" = 10) - result_amount = 2 + required_reagents = list("enzyme" = 1, "carpotoxin" = 1, "sifsap" = 1) + result_amount = 1 /decl/chemical_reaction/instant/neutralize_spidertoxin name = "Neutralize Spidertoxin" id = "spidertoxin_neutral" result = "protein" - required_reagents = list("radium" = 1, "spidertoxin" = 1, "sifsap" = 1) - catalysts = list("sifsap" = 10) - result_amount = 2 \ No newline at end of file + required_reagents = list("enzyme" = 1, "spidertoxin" = 1, "sifsap" = 1) + result_amount = 1 \ No newline at end of file diff --git a/code/modules/reagents/reagents/food_drinks.dm b/code/modules/reagents/reagents/food_drinks.dm index 457a73b01e..eac9d25471 100644 --- a/code/modules/reagents/reagents/food_drinks.dm +++ b/code/modules/reagents/reagents/food_drinks.dm @@ -309,13 +309,6 @@ color = "#FFFFAA" allergen_type = ALLERGEN_EGGS //Eggs contain egg -/datum/reagent/nutriment/protein/murk - name = "murkfin protein" - id = "murk_protein" - taste_description = "mud" - color = "#664330" - allergen_type = ALLERGEN_FISH //Murkfin is fish - /datum/reagent/nutriment/honey name = "Honey" id = "honey" diff --git a/code/modules/reagents/reagents/other.dm b/code/modules/reagents/reagents/other.dm index b6775e1759..722fcbd59c 100644 --- a/code/modules/reagents/reagents/other.dm +++ b/code/modules/reagents/reagents/other.dm @@ -631,10 +631,11 @@ M.adjustToxLoss(2 * removed) M.adjustCloneLoss(2 * removed) -/datum/reagent/fishbait +/datum/reagent/nutriment/fishbait name = "Fish Bait" id = "fishbait" description = "A natural slurry that particularily appeals to fish." - taste_description = "earthy" + taste_description = "slimy dirt" reagent_state = LIQUID - color = "#62764E" \ No newline at end of file + color = "#62764E" + nutriment_factor = 15 diff --git a/code/modules/reagents/reagents/toxins.dm b/code/modules/reagents/reagents/toxins.dm index dde7bf21a9..b59be5c7d1 100644 --- a/code/modules/reagents/reagents/toxins.dm +++ b/code/modules/reagents/reagents/toxins.dm @@ -67,7 +67,7 @@ /datum/reagent/toxin/neurotoxic_protein name = "toxic protein" id = "neurotoxic_protein" - description = "A weak neurotoxic chemical commonly found in Sivian fish meat." + description = "A weak neurotoxic chemical." taste_description = "fish" reagent_state = LIQUID color = "#005555" diff --git a/icons/obj/flora/mushrooms.dmi b/icons/obj/flora/mushrooms.dmi new file mode 100644 index 0000000000000000000000000000000000000000..755acb8d641102c7f840ba63bb1b85e6b6488e20 GIT binary patch literal 560 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 LNkvXXu0mjffp_2r literal 24335 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 r6wBGvhOU(eJ47kC@IO|&Ut#