diff --git a/code/_helpers/names.dm b/code/_helpers/names.dm index 20f7b2b31d..e85a607417 100644 --- a/code/_helpers/names.dm +++ b/code/_helpers/names.dm @@ -172,7 +172,7 @@ var/syndicate_code_response//Code response for traitors. var/safety[] = list(1,2,3)//Tells the proc which options to remove later on. var/nouns[] = list("love","hate","anger","peace","pride","sympathy","bravery","loyalty","honesty","integrity","compassion","charity","success","courage","deceit","skill","beauty","brilliance","pain","misery","beliefs","dreams","justice","truth","faith","liberty","knowledge","thought","information","culture","trust","dedication","progress","education","hospitality","leisure","trouble","friendships", "relaxation") - var/drinks[] = list("vodka and tonic","gin fizz","bahama mama","manhattan","black Russian","whiskey soda","long island tea","margarita","Irish coffee"," manly dwarf","Irish cream","doctor's delight","Beepksy Smash","tequilla sunrise","brave bull","gargle blaster","bloody mary","whiskey cola","white Russian","vodka martini","martini","Cuba libre","kahlua","vodka","wine","moonshine") + var/drinks[] = list("vodka and tonic","gin fizz","bahama mama","manhattan","black Russian","whiskey soda","long island tea","margarita","Irish coffee"," manly dwarf","Irish cream","doctor's delight","Beepksy Smash","tequilla sunrise","brave bull","gargle blaster","bloody mary","whiskey cola","white Russian","vodka martini","martini","Cuba libre","kahlua","vodka","redwine","moonshine") var/locations[] = teleportlocs.len ? teleportlocs : drinks//if null, defaults to drinks instead. var/names[] = list() diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index ed2869da1d..a2cbe7638b 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -56,7 +56,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() */ // Loop through all linked machines and send the signal or copy. for(var/obj/machinery/telecomms/machine in links) - if(filter && !istype( machine, text2path(filter) )) + if(filter && !istype(machine, filter)) continue if(!machine.on) continue @@ -288,9 +288,9 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() //Remove the level and then start adding levels that it is being broadcasted in. signal.data["level"] = list() - var/can_send = relay_information(signal, "/obj/machinery/telecomms/hub") // ideally relay the copied information to relays + var/can_send = relay_information(signal, /obj/machinery/telecomms/hub) // ideally relay the copied information to relays if(!can_send) - relay_information(signal, "/obj/machinery/telecomms/bus") // Send it to a bus instead, if it's linked to one + relay_information(signal, /obj/machinery/telecomms/bus) // Send it to a bus instead, if it's linked to one /obj/machinery/telecomms/receiver/proc/check_receive_level(datum/signal/signal) // If it's a direct message from a bluespace radio, we eat it and convert it into a subspace signal locally @@ -355,11 +355,11 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() if(is_freq_listening(signal)) if(istype(machine_from, /obj/machinery/telecomms/receiver)) //If the signal is compressed, send it to the bus. - relay_information(signal, "/obj/machinery/telecomms/bus", 1) // ideally relay the copied information to bus units + relay_information(signal, /obj/machinery/telecomms/bus, 1) // ideally relay the copied information to bus units else // Get a list of relays that we're linked to, then send the signal to their levels. - relay_information(signal, "/obj/machinery/telecomms/relay", 1) - relay_information(signal, "/obj/machinery/telecomms/broadcaster", 1) // Send it to a broadcaster. + relay_information(signal, /obj/machinery/telecomms/relay, 1) + relay_information(signal, /obj/machinery/telecomms/broadcaster, 1) // Send it to a broadcaster. /* @@ -457,7 +457,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() if(!istype(machine_from, /obj/machinery/telecomms/processor) && machine_from != src) // Signal must be ready (stupid assuming machine), let's send it // send to one linked processor unit - var/send_to_processor = relay_information(signal, "/obj/machinery/telecomms/processor") + var/send_to_processor = relay_information(signal, /obj/machinery/telecomms/processor) if(send_to_processor) return @@ -466,7 +466,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() src.receive_information(signal, src) // Try sending it! - var/list/try_send = list("/obj/machinery/telecomms/server", "/obj/machinery/telecomms/hub", "/obj/machinery/telecomms/broadcaster", "/obj/machinery/telecomms/bus") + var/list/try_send = list(/obj/machinery/telecomms/server, /obj/machinery/telecomms/hub, /obj/machinery/telecomms/broadcaster, /obj/machinery/telecomms/bus) var/i = 0 for(var/send in try_send) if(i) @@ -517,7 +517,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() relay_direct_information(signal, machine_from) // send the signal back to the machine else // no bus detected - send the signal to servers instead signal.data["slow"] += rand(5, 10) // slow the signal down - relay_information(signal, "/obj/machinery/telecomms/server") + relay_information(signal, /obj/machinery/telecomms/server) /* @@ -643,9 +643,9 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() if(Compiler && autoruncode) Compiler.Run(signal) // execute the code - var/can_send = relay_information(signal, "/obj/machinery/telecomms/hub") + var/can_send = relay_information(signal, /obj/machinery/telecomms/hub) if(!can_send) - relay_information(signal, "/obj/machinery/telecomms/broadcaster") + relay_information(signal, /obj/machinery/telecomms/broadcaster) /obj/machinery/telecomms/server/proc/setcode(var/t) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 966a48141b..326301edc9 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -84,7 +84,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 = list() - 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/magazine.dm b/code/game/objects/items/magazine.dm new file mode 100644 index 0000000000..59640c4c01 --- /dev/null +++ b/code/game/objects/items/magazine.dm @@ -0,0 +1,97 @@ +/obj/item/tabloid + name = "tabloid magazine" + desc = "It's one of those trashy tabloid magazines. It looks pretty out of date." + icon = 'icons/obj/magazine.dmi' + icon_state = "magazine" + + var/headline + var/static/list/tabloid_states = icon_states('icons/obj/magazine.dmi') + var/static/list/tabloid_publishers = list( + "\improper Solar Enquirer", + "\improper Stellar Examiner", + "\improper Antares Daily", + "\improper Weekly Galactic News", + "\improper Spiral" + ) + + var/static/list/tabloid_headlines = list( + "NARCOALGORITHMS: ARE YOUR CHILDREN SAFE?", + "ARE GMO HUMANS POISONOUS IN BED?", + "TOP 10 REASONS WHY OTHER SPECIES ARE A HOAX", + "CENTENNIAL POSITRONIC EXTENDS LIFESPAN WITH 1 SIMPLE TRICK", + "TOP 10 DANGEROUS FOODS WITH CHEMICALS", + "NEW TERRIFYING TEEN TREND: SUN-DIVING", + "HAS YOUR SPOUSE BEEN REPLACED BY AN ALIEN IMPOSTER? STUDIES SUGGEST YES!", + "SPACE CAUSES CANCER: DOCTORS CONFIRM", + "ARE BODY SCANNERS TOO INVASIVE? FIND OUT INSIDE!", + "HAS SCIENCE GONE TOO FAR? LOCAL SCIENTIST DEBUNKS ALIEN THEORY, DECRIES THEM AS TUBE EXPERIMENTS GONE WRONG", + "100 DELICIOUS RECIPES LETHAL TO CARBON-BASED LIFE", + "TOP FIVE SPECIES WE DROVE TO EXTINCTION; NUMBER TWO WILL SHOCK YOU", + "LOCAL MAN HAS SEIZURE AFTER SAYING SKRELLIAN NAME; FORCED ASSIMILATION SOON?", + "RELIGION WAS RIGHT? SHOCK FINDINGS SHOW ALIEN SIMILARITY TO ANIMALS, EXISTENCE OF BOATS", + "TOP TEN REASONS WHY ONLY HUMANS ARE SENTIENT", + "LOCAL UNATHI SYMPATHIZER: 'I really think you should stop with these spacebaiting articles.'", + "DO UNATHI SYMPATHIZERS HATE THE HUMAN RACE?", + "WHICH PLANET HAS THE BEST LOVERS? THIS AND MORE INSIDE!", + "SHE SAID WE SHOULD SEE OTHER PEOPLE, SO I MARRIED A TESHARI PACK: FULL STORY INSIDE", + "LOSE WEIGHT THREE TIMES FASTER WITH THESE LOW-G MANEUVERS!", + "SHOCKING FIGURES REVEAL MORE TEENS DIE TO UNATHI HONOUR DUELS THAN GUN VIOLENCE", + "MY DAUGHTER JOINED A NEURAL COLLECTIVE AND NOW SHE CAN TASTE SPACETIME: FULL STORY INSIDE", + "WERE THE NAZIS PSYCHIC? ONE HISTORIAN TELLS ALL", + "TAJARANS: CUTE AND CUDDLY, OR INFILTRATING THE GOVERNMENT? FIND OUT MORE INSIDE", + "IS THE SOLAR GOVERNMENT CREATING AN AI SUPERINTELLIGENCE NEAR MERCURY? ONE EXPERT REVEALS SHOCKING INSIDER DETAILS!", + "TOP TEN HISTORICAL FIGURES THAT WERE TWO PROMETHEANS IN A TRENCHCOAT", + "ZADDAT: FACT OR FICTION?", + "TOP 10 SECRET AUGMENTS THE GOVERNMENT DOESN'T WANT YOU TO GET", + "ENLARGE YOUR MENTAL FACULTIES WITH THIS 1 WEIRD HAT", + "'HELP, MY SON THINKS HE'S A 20TH CENTURY VID CHARACTER CALLED SPOCK' AND MORE SHOCKING TALES INSIDE", + "18 RADICAL HIP IMPLANTS ALL THE KIDS ARE GETTING!", + "PRESERVED HEAD OF 21ST CENTURY CAPITALIST INSISTS THAT 'DYSON WALL' ONLY SANE SOLUTION TO RIMWARD MALCONTENTS", + "50 SHADES OF GREEN; BESTSELLING MULTISPECIES ROMANCE COMING TO CINEMAS", + "PLUTO: DWARF PLANET, OR SECRET RAMPANT AI FACILITY HELL-BENT ON CORRUPTING YOUR CHILDREN?", + "TOP TEN ANIME ALIENS. NUMBER 3 WILL SICKEN YOU", + "OCTUBER X'RALLBRE EXPOSED; NUDE PHOTOSHOOT LEAKS", + "WAR ON MARS AFTER NAKED MAN WAS FOUND; WERE THE ROMANS RIGHT?", + "REAL ALIENS ARGUE EARTH MOVIES RACIST!", + "HELP! I MARRIED A HEGEMONOUS SWARM INTELLIGENCE AND MY SON THINKS HE'S A ROUTER!", + "POSITRONICS: HUMAN INGENUITY AND GENEROSITY, OR A HORRIBLE MISTAKE? FIND OUT INSIDE!", + "TENTACLES OF TERROR: SKRELL BLACK OPS SEIGE NYX NAVAL DEPOT. SHOCKING PHOTOGRAPHS INSIDE!", + "THE FREE TRADER UNION: NEITHER FREE NOR A UNION. SHOCKING EXPOSE!", + "HAS THE FREE MARKET GONE TOO FAR? LUNA GLITTERPOP STAR AUCTIONS THIRD TESTICLE FOR TRANS-ORBITAL SHIPPING BONDS", + "THEY SAID IT WAS CANCER, BUT I KNEW IT WAS A TINY, SELF-REPLICATING CLONE OF RAY KURZWEIL: FULL STORY INSIDE", + "WHAT HAS TECHNOLOGY DONE? INDUSTRY BILLIONAIRE MARRIES OWN INFORMORPH MIND-COPY", + "REPTILLIAN ICE WARRIORS FROM ANOTHER WORLD LIVE INSIDE YOUR AIR DUCTS: HERE'S HOW TO GET RID OF THEM", + "10 CRITICAL THINGS YOU NEED TO KNOW ABOUT 'DRONEGATE'", + "THEY CALL THEM JUMPGATES BUT I'VE NEVER SEEN THEM JUMP: AN INDUSTRY INSIDER SPEAKS FOR THE FIRST TIME", + "EMERGENT INTELLIGENCES ARE STEALING YOUR BANK DETAILS, FETISHES: FOIL HAT RECIPE INSIDE", + "TIME TRAVELLERS ARE STEALING YOUR WIFI: 5 TIPS FOR DEFEATING HACKERS FROM THE FUTURE", + "'My mother was an alien spy': THIS CELEBRITY REVEAL WILL SHOCK AND AMAZE YOU", + "LUMINARY SCIENTIST SPEAKS: DIABETES IS A HYPERCORP RETROVIRUS!", + "'I REROUTED MY NEURAL CIRCUITRY SO THAT PAIN TASTES OF STRAWBERRIES' AND FIFTEEN OTHER CRAZY ALMACH STORIES", + "JOINING THE NAVY? HERE'S 15 EXPERT TIPS FOR AVOIDING BRAIN PARASITES" + ) + +/obj/item/tabloid/Initialize() + . = ..() + + pixel_x = 5-rand(10) + pixel_x = 5-rand(10) + + icon_state = pick(tabloid_states) + headline = pick(tabloid_headlines) + name = pick(tabloid_publishers) + +/obj/item/tabloid/examine(mob/user, distance) + . = ..() + if(headline) + to_chat(user, "The headline screams, \"[headline]\"") + +/obj/item/tabloid/attack_self(mob/user) + user.visible_message(SPAN_NOTICE("\The [user] leafs idly through \the [src].")) + if(headline) + to_chat(user, "Most of it is the usual tabloid garbage, but the headline story, \"[headline]\", holds your attention for awhile.") + if(tabloid_headlines[headline]) + to_chat(user, tabloid_headlines[headline]) + else + to_chat(user, "Most of it is the usual tabloid garbage. You find nothing of interest.") + return TRUE diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index 301fff7600..73f2c9efd4 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -24,6 +24,18 @@ drop_sound = 'sound/items/drop/axe.ogg' pickup_sound = 'sound/items/pickup/axe.ogg' +/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 9195de1767..a78a57ddf2 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 @@ -39,21 +40,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].") - 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) @@ -408,19 +422,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 \ @@ -433,19 +456,22 @@ 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 light_power = 0.6 light_color = "#FF6633" 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 \ @@ -454,10 +480,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)]" @@ -471,20 +501,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)]" @@ -503,26 +533,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() @@ -530,7 +558,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 a9f3658ff6..a677e46a0b 100644 --- a/code/game/objects/structures/flora/trees.dm +++ b/code/game/objects/structures/flora/trees.dm @@ -271,12 +271,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 df5fe16aa7..da8f5d439d 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 3642252da4..da2f017508 100644 --- a/code/game/turfs/simulated/outdoors/dirt.dm +++ b/code/game/turfs/simulated/outdoors/dirt.dm @@ -5,6 +5,7 @@ edge_blending_priority = 2 turf_layers = list(/turf/simulated/floor/outdoors/rocks) initial_flooring = /decl/flooring/dirt + can_dig = TRUE /turf/simulated/floor/outdoors/newdirt name = "dirt" @@ -13,6 +14,7 @@ icon_state = "dirt0" edge_blending_priority = 2 initial_flooring = /decl/flooring/outdoors/newdirt + can_dig = TRUE /decl/flooring/outdoors/newdirt name = "dirt" @@ -107,4 +109,5 @@ icon_state = "side-walk" /turf/simulated/floor/outdoors/sidewalk/slab - icon_state = "slab" \ No newline at end of file + icon_state = "slab" + diff --git a/code/game/turfs/simulated/outdoors/grass.dm b/code/game/turfs/simulated/outdoors/grass.dm index 327d2baf91..181ee57c4f 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 + 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, @@ -94,4 +94,4 @@ var/list/grass_types = list( /obj/structure/flora/sif/frostbelle = 1, /obj/structure/flora/sif/eyes = 5, /obj/structure/flora/sif/tendrils = 30 - ) + ) \ No newline at end of file diff --git a/code/game/turfs/simulated/outdoors/outdoors.dm b/code/game/turfs/simulated/outdoors/outdoors.dm index cfed9385c6..f565b15e5f 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/client/preference_setup/loadout/loadout_head.dm b/code/modules/client/preference_setup/loadout/loadout_head.dm index 2513757c1c..67bfd7c7de 100644 --- a/code/modules/client/preference_setup/loadout/loadout_head.dm +++ b/code/modules/client/preference_setup/loadout/loadout_head.dm @@ -203,6 +203,10 @@ display_name = "hat, tophat" path = /obj/item/clothing/head/that +/datum/gear/head/panama + display_name = "hat, panama" + path = /obj/item/clothing/head/panama + /datum/gear/head/wig/philosopher display_name = "natural philosopher's wig" path = /obj/item/clothing/head/philosopher_wig diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index 3f79abe352..84f83829da 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -559,6 +559,18 @@ display_name = "department jacket, medical" path = /obj/item/clothing/suit/storage/toggle/med_dep_jacket +/datum/gear/suit/miscellaneous/light_jacket + display_name = "light jacket selection" + path = /obj/item/clothing/suit/storage/toggle/light_jacket + +/datum/gear/suit/miscellaneous/light_jacket/New() + ..() + var/list/jacket = list( + "grey light jacket" = /obj/item/clothing/suit/storage/toggle/light_jacket, + "dark blue light jacket" = /obj/item/clothing/suit/storage/toggle/light_jacket/blue + ) + gear_tweaks += new/datum/gear_tweak/path(jacket) + /datum/gear/suit/miscellaneous/peacoat display_name = "peacoat" path = /obj/item/clothing/suit/storage/toggle/peacoat diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 8636b5b606..9f5ce96020 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -103,6 +103,11 @@ siemens_coefficient = 0.9 body_parts_covered = 0 +/obj/item/clothing/head/panama + name = "panama hat" + icon_state = "panama" + desc = "Columbian Pure." + /obj/item/clothing/head/redcoat name = "redcoat's hat" icon_state = "redcoat" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 239accf6d8..3ef5aef074 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -715,6 +715,19 @@ item_state_slots = list(slot_r_hand_str = "med_dep_jacket", slot_l_hand_str = "med_dep_jacket") flags_inv = HIDEHOLSTER +/obj/item/clothing/suit/storage/toggle/light_jacket + name = "grey light jacket" + desc = "A light, cozy jacket. Now in grey." + icon_state = "grey_dep_jacket" + item_state_slots = list(slot_r_hand_str = "grey_dep_jacket", slot_l_hand_str = "grey_dep_jacket") + flags_inv = HIDEHOLSTER + +/obj/item/clothing/suit/storage/toggle/light_jacket/blue + name = "dark blue light jacket" + desc = "A light, cozy jacket. Now in dark blue." + icon_state = "blue_dep_jacket" + item_state_slots = list(slot_r_hand_str = "blue_dep_jacket", slot_l_hand_str = "blue_dep_jacket") + /* * Track Jackets */ diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 733fae75df..1c83b7d940 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -825,23 +825,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/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" @@ -853,7 +848,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" @@ -865,11 +860,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) @@ -877,7 +872,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) @@ -3572,19 +3567,6 @@ nutriment_amt = 3 nutriment_desc = list("bread" = 3) -// potato + knife = raw sticks -/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(obj/item/weapon/W, mob/user) - if(seed && seed.kitchen_tag && seed.kitchen_tag == "potato" && istype(W,/obj/item/weapon/material/knife)) - new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(get_turf(src)) - to_chat(user, "You cut the potato.") - qdel(src) - else if(seed && seed.kitchen_tag && seed.kitchen_tag == "sunflower" && istype(W,/obj/item/weapon/material/knife)) - new /obj/item/weapon/reagent_containers/food/snacks/rawsunflower(get_turf(src)) - to_chat(user, "You remove the seeds from the flower, slightly damaging them.") - qdel(src) - else - . = ..() - /obj/item/weapon/reagent_containers/food/snacks/rawsticks name = "raw potato sticks" desc = "Raw fries, not very tasty." @@ -3972,7 +3954,8 @@ /obj/item/weapon/reagent_containers/food/snacks/wormsickly/Initialize() . = ..() - reagents.add_reagent("fishbait", 10) + reagents.add_reagent("fishbait", 9) + reagents.add_reagent("protein", 3) /obj/item/weapon/reagent_containers/food/snacks/worm name = "strange worm" @@ -3985,7 +3968,8 @@ /obj/item/weapon/reagent_containers/food/snacks/worm/Initialize() . = ..() - reagents.add_reagent("fishbait", 20) + reagents.add_reagent("fishbait", 15) + reagents.add_reagent("protein", 5) /obj/item/weapon/reagent_containers/food/snacks/wormdeluxe name = "deluxe worm" @@ -3998,7 +3982,8 @@ /obj/item/weapon/reagent_containers/food/snacks/wormdeluxe/Initialize() . = ..() - reagents.add_reagent("fishbait", 40) + reagents.add_reagent("fishbait", 30) + reagents.add_reagent("protein", 10) /obj/item/weapon/reagent_containers/food/snacks/siffruit name = "pulsing fruit" diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index ff69fab758..10f79394e2 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -334,7 +334,7 @@ I said no! result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple /datum/recipe/twobread - reagents = list("wine" = 5) + reagents = list("redwine" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/slice/bread, /obj/item/weapon/reagent_containers/food/snacks/slice/bread, @@ -785,7 +785,7 @@ I said no! result = /obj/item/weapon/reagent_containers/food/snacks/chilicheesefries /datum/recipe/risotto - reagents = list("wine" = 5, "rice" = 10, "spacespice" = 1) + reagents = list("redwine" = 5, "rice" = 10, "spacespice" = 1) fruit = list("mushroom" = 1) reagent_mix = RECIPE_REAGENT_REPLACE //Get that rice and wine outta here result = /obj/item/weapon/reagent_containers/food/snacks/risotto diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 9070dfc29b..23fdf46cfa 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -191,13 +191,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) @@ -215,36 +219,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 af17253513..98973f22fb 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 plant_controller.seeds) + seed_type = _seed_type update_seed() . = ..() diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm index 66273144b7..64398ede2e 100644 --- a/code/modules/hydroponics/seed_storage.dm +++ b/code/modules/hydroponics/seed_storage.dm @@ -43,41 +43,46 @@ ..() wires = new(src) if(!contraband_seeds.len) - contraband_seeds = pick(list( - list( - /obj/item/seeds/ambrosiavulgarisseed = 3, - /obj/item/seeds/greengrapeseed = 3, - /obj/item/seeds/reishimycelium = 2, - /obj/item/seeds/bloodtomatoseed = 1 - ), - list( - /obj/item/seeds/ambrosiavulgarisseed = 3, - /obj/item/seeds/plastiseed = 3, - /obj/item/seeds/kudzuseed = 2, - /obj/item/seeds/rose/blood = 1 - ), - list( - /obj/item/seeds/ambrosiavulgarisseed = 3, - /obj/item/seeds/amanitamycelium = 3, - /obj/item/seeds/libertymycelium = 2, - /obj/item/seeds/glowshroom = 1 - ), - list( - /obj/item/seeds/ambrosiavulgarisseed = 3, - /obj/item/seeds/glowberryseed = 3, - /obj/item/seeds/icepepperseed = 2, - /obj/item/seeds/bluetomatoseed = 1 - ), - list( - /obj/item/seeds/durian = 2, - /obj/item/seeds/ambrosiadeusseed = 1, - /obj/item/seeds/killertomatoseed = 1 - ), - list( - /obj/item/seeds/ambrosiavulgarisseed = 3, - /obj/item/seeds/random = 6 - ) - )) + contraband_seeds = pick( /// Some form of ambrosia in all lists. + prob(30);list( /// General produce + /obj/item/seeds/ambrosiavulgarisseed = 3, + /obj/item/seeds/greengrapeseed = 3, + /obj/item/seeds/icepepperseed = 2, + /obj/item/seeds/kudzuseed = 1 + ), + prob(30);list( ///Mushroom batch + /obj/item/seeds/ambrosiavulgarisseed = 1, + /obj/item/seeds/glowberryseed = 2, + /obj/item/seeds/libertymycelium = 1, + /obj/item/seeds/reishimycelium = 2, + /obj/item/seeds/sporemycelium = 1 + ), + prob(15);list( /// Survivalist + /obj/item/seeds/ambrosiadeusseed = 2, + /obj/item/seeds/redtowermycelium = 2, + /obj/item/seeds/vale = 2, + /obj/item/seeds/siflettuce = 2 + ), + prob(20);list( /// Cold plants + /obj/item/seeds/ambrosiavulgarisseed = 2, + /obj/item/seeds/thaadra = 2, + /obj/item/seeds/icepepperseed = 2, + /obj/item/seeds/siflettuce = 1 + ), + prob(10);list( ///Poison party + /obj/item/seeds/ambrosiavulgarisseed = 3, + /obj/item/seeds/surik = 1, + /obj/item/seeds/telriis = 1, + /obj/item/seeds/nettleseed = 2, + /obj/item/seeds/poisonberryseed = 1 + ), + prob(5);list( /// Extra poison party! + /obj/item/seeds/ambrosiainfernusseed = 1, + /obj/item/seeds/amauri = 1, + /obj/item/seeds/surik = 1, + /obj/item/seeds/deathberryseed = 1 /// Very ow. + ) + ) return /obj/machinery/seed_storage/process() 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 76a3417645..4f5140a689 100644 --- a/code/modules/hydroponics/trays/tray_soil.dm +++ b/code/modules/hydroponics/trays/tray_soil.dm @@ -22,6 +22,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 2f44607e8b..129f8ecc18 100644 --- a/code/modules/materials/materials/organic/wood.dm +++ b/code/modules/materials/materials/organic/wood.dm @@ -42,7 +42,9 @@ new /datum/stack_recipe("coilgun stock", /obj/item/weapon/coilgun_assembly, 5, pass_stack_color = TRUE, recycle_material = "[name]"), new /datum/stack_recipe("crude fishing rod", /obj/item/weapon/material/fishing_rod/built, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), 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("tanning rack", /obj/structure/tanning_rack, 3, 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 a8b229c9eb..e59d1e2d82 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 31dd9add81..eb15d3f6c5 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -128,6 +128,26 @@ edge = 1 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 daa6e2710c..bef918a849 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 = 1 - + /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 = 1 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 fe23b86bf7..2ce8d46af7 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/mob/new_player/sprite_accessories_ear.dm b/code/modules/mob/new_player/sprite_accessories_ear.dm index 24e82043e4..a07b77500d 100644 --- a/code/modules/mob/new_player/sprite_accessories_ear.dm +++ b/code/modules/mob/new_player/sprite_accessories_ear.dm @@ -344,13 +344,43 @@ do_colouration = 1 color_blend_mode = ICON_MULTIPLY +/datum/sprite_accessory/ears/elfs2 + name = "pointed ears" + desc = "" + icon_state = "ears_pointy" + do_colouration = 1 + species_allowed = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) + /datum/sprite_accessory/ears/elfs - name = "elven ears" + name = "pointed ears (tall)" desc = "" icon_state = "elfs" do_colouration = 1 color_blend_mode = ICON_MULTIPLY + species_allowed = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) +/datum/sprite_accessory/ears/elfs3 + name = "pointed ears (down)" + desc = "" + icon_state = "ears_pointy_down" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + species_allowed = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) + +/datum/sprite_accessory/ears/elfs4 + name = "pointed ears (long)" + desc = "" + icon_state = "ears_pointy_long" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + species_allowed = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) + +/datum/sprite_accessory/ears/elfs5 + name = "pointed ears (long, down)" + desc = "" + icon_state = "ears_pointy_long_down" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY species_allowed = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) /datum/sprite_accessory/ears/sleek 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/drinks.dm b/code/modules/reagents/reactions/instant/drinks.dm index 5630500d63..2102c2881e 100644 --- a/code/modules/reagents/reactions/instant/drinks.dm +++ b/code/modules/reagents/reactions/instant/drinks.dm @@ -399,7 +399,7 @@ name = "Singulo" id = "singulo" result = "singulo" - required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5) + required_reagents = list("vodka" = 5, "radium" = 1, "redwine" = 5) result_amount = 10 /decl/chemical_reaction/instant/drinks/alliescocktail @@ -505,14 +505,14 @@ name = "Acid Spit" id = "acidspit" result = "acidspit" - required_reagents = list("sacid" = 1, "wine" = 5) + required_reagents = list("sacid" = 1, "redwine" = 5) result_amount = 6 /decl/chemical_reaction/instant/drinks/amasec name = "Amasec" id = "amasec" result = "amasec" - required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5) + required_reagents = list("iron" = 1, "redwine" = 5, "vodka" = 5) result_amount = 10 /decl/chemical_reaction/instant/drinks/changelingsting @@ -661,7 +661,7 @@ name = "Melon Spritzer" id = "melonspritzer" result = "melonspritzer" - required_reagents = list("watermelonjuice" = 2, "wine" = 2, "applejuice" = 1, "limejuice" = 1) + required_reagents = list("watermelonjuice" = 2, "redwine" = 2, "applejuice" = 1, "limejuice" = 1) result_amount = 6 /decl/chemical_reaction/instant/drinks/fauxfizz @@ -915,7 +915,7 @@ name = "Wine brandy" id = "winebrandy" result = "winebrandy" - required_reagents = list("wine" = 10) + required_reagents = list("redwine" = 10) catalysts = list("enzyme" = 10) //10u enzyme so it requires more than is usually added. Stops overlap with wine recipe result_amount = 5 @@ -937,7 +937,7 @@ name = "Vesper" id = "vesper" result = "vesper" - required_reagents = list("gin" = 3, "vodka" = 1, "wine" = 1) + required_reagents = list("gin" = 3, "vodka" = 1, "redwine" = 1) result_amount = 4 /decl/chemical_reaction/instant/drinks/rotgut diff --git a/code/modules/reagents/reactions/instant/instant.dm b/code/modules/reagents/reactions/instant/instant.dm index 4a6c25898d..46c9c458be 100644 --- a/code/modules/reagents/reactions/instant/instant.dm +++ b/code/modules/reagents/reactions/instant/instant.dm @@ -1105,14 +1105,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/reagent_containers/borghypo.dm b/code/modules/reagents/reagent_containers/borghypo.dm index 813a79431d..96bb210600 100644 --- a/code/modules/reagents/reagent_containers/borghypo.dm +++ b/code/modules/reagents/reagent_containers/borghypo.dm @@ -155,6 +155,7 @@ "milk", "mint", "orangejuice", + "redwine", "rum", "sake", "sodawater", @@ -172,8 +173,7 @@ "vodka", "water", "watermelonjuice", - "whiskey", - "wine") + "whiskey") /obj/item/weapon/reagent_containers/borghypo/service/attack(var/mob/M, var/mob/user) return diff --git a/code/modules/reagents/reagents/food_drinks.dm b/code/modules/reagents/reagents/food_drinks.dm index 3c85222c1b..4f549c5c1b 100644 --- a/code/modules/reagents/reagents/food_drinks.dm +++ b/code/modules/reagents/reagents/food_drinks.dm @@ -297,13 +297,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 a479b7ada5..2bb16dbbda 100644 --- a/code/modules/reagents/reagents/other.dm +++ b/code/modules/reagents/reagents/other.dm @@ -627,10 +627,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/code/modules/scripting/Implementations/Telecomms.dm b/code/modules/scripting/Implementations/Telecomms.dm index 40efd55ba1..9f83cdf933 100644 --- a/code/modules/scripting/Implementations/Telecomms.dm +++ b/code/modules/scripting/Implementations/Telecomms.dm @@ -275,7 +275,7 @@ newsign.data["vmask"] = 0 newsign.data["level"] = list() - var/pass = S.relay_information(newsign, "/obj/machinery/telecomms/hub") + var/pass = S.relay_information(newsign, /obj/machinery/telecomms/hub) if(!pass) - S.relay_information(newsign, "/obj/machinery/telecomms/broadcaster") // send this simple message to broadcasters + S.relay_information(newsign, /obj/machinery/telecomms/broadcaster) // send this simple message to broadcasters diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index e5bbf365a3..964e2a87f1 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -473,11 +473,9 @@ if(clean_name) var/okay = alert(target,"New name will be '[clean_name]', ok?", "Confirmation","Cancel","Ok") if(okay == "Ok") - new_name = clean_name - - new_name = sanitizeName(new_name, allow_numbers = TRUE) - target.name = new_name - target.real_name = target.name + target.name = new_name + target.real_name = target.name + return /datum/surgery_step/robotics/install_mmi/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("[user]'s hand slips.", \ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 1290983bfe..b8478d3ac1 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/ears.dmi b/icons/mob/human_races/sprite_accessories/ears.dmi index 243b901e8e..b3e21ecead 100644 Binary files a/icons/mob/human_races/sprite_accessories/ears.dmi and b/icons/mob/human_races/sprite_accessories/ears.dmi differ diff --git a/icons/mob/items/lefthand.dmi b/icons/mob/items/lefthand.dmi index 9ed071ffe4..98c04e2882 100644 Binary files a/icons/mob/items/lefthand.dmi and b/icons/mob/items/lefthand.dmi differ diff --git a/icons/mob/items/lefthand_suits.dmi b/icons/mob/items/lefthand_suits.dmi index 556b5e137f..e8ac30d008 100644 Binary files a/icons/mob/items/lefthand_suits.dmi and b/icons/mob/items/lefthand_suits.dmi differ diff --git a/icons/mob/items/righthand.dmi b/icons/mob/items/righthand.dmi index 3210b664b7..58dbd9d864 100644 Binary files a/icons/mob/items/righthand.dmi and b/icons/mob/items/righthand.dmi differ diff --git a/icons/mob/items/righthand_suits.dmi b/icons/mob/items/righthand_suits.dmi index 6cc80297b6..f34d67af35 100644 Binary files a/icons/mob/items/righthand_suits.dmi and b/icons/mob/items/righthand_suits.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 58b92c82dd..3bdf0e7d2e 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 4951bf32ad..cb4bab1901 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 788bfa06ba..9878d18a39 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/flora/mushrooms.dmi b/icons/obj/flora/mushrooms.dmi new file mode 100644 index 0000000000..755acb8d64 Binary files /dev/null and b/icons/obj/flora/mushrooms.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index d4de5b0ed4..929a011895 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/magazine.dmi b/icons/obj/magazine.dmi new file mode 100644 index 0000000000..62b385510c Binary files /dev/null and b/icons/obj/magazine.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 47a4d21d24..3967721435 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ diff --git a/icons/turf/flooring/asteroid.dmi b/icons/turf/flooring/asteroid.dmi index 9df9089658..c7f2b12948 100644 Binary files a/icons/turf/flooring/asteroid.dmi and b/icons/turf/flooring/asteroid.dmi differ diff --git a/maps/southern_cross/southern_cross-1.dmm b/maps/southern_cross/southern_cross-1.dmm index c6767f4d7d..df7bdbcdcc 100644 --- a/maps/southern_cross/southern_cross-1.dmm +++ b/maps/southern_cross/southern_cross-1.dmm @@ -22195,7 +22195,6 @@ dir = 4 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = 30 }, /turf/simulated/floor/tiled, @@ -22817,8 +22816,7 @@ /obj/machinery/door/firedoor/border_only, /obj/machinery/door/airlock/security{ name = "Security Checkpoint"; - req_access = list(1); - req_one_access = list(1) + req_access = list(1) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -30036,7 +30034,6 @@ "beW" = ( /obj/machinery/computer/security/telescreen{ desc = "Big Brother is watching."; - layer = 3.4; name = "Brig Monitor"; network = list("Prison"); pixel_y = 28 @@ -39664,8 +39661,7 @@ "bvS" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_medical{ - name = "Medical Hardsuits"; - req_one_access = list(5) + name = "Medical Hardsuits" }, /turf/simulated/floor/tiled/dark, /area/ai_monitored/storage/eva) @@ -47185,6 +47181,7 @@ icon_state = "frame"; pixel_y = -32 }, +/obj/item/tabloid, /turf/simulated/floor/wood, /area/rnd/research) "bIY" = ( @@ -47583,8 +47580,7 @@ "bJN" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Hallway"; - req_one_access = list(10) + name = "Engineering Hallway" }, /turf/simulated/floor/tiled/steel_grid, /area/engineering/hallway/atmos_hallway) @@ -47598,8 +47594,7 @@ "bJP" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Hallway"; - req_one_access = list(10) + name = "Engineering Hallway" }, /obj/structure/cable/green{ d1 = 1; @@ -49546,8 +49541,7 @@ "bNi" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Hallway"; - req_one_access = list(10) + name = "Engineering Hallway" }, /turf/simulated/floor/tiled/steel_grid, /area/engineering/hallway/engineer_hallway) @@ -50504,8 +50498,7 @@ "bOW" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Hallway"; - req_one_access = list(10) + name = "Engineering Hallway" }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -52126,8 +52119,7 @@ /area/engineering/drone_fabrication) "bRT" = ( /obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Hallway"; - req_one_access = list(10) + name = "Engineering Hallway" }, /obj/machinery/door/firedoor/glass, /obj/structure/disposalpipe/segment, @@ -52137,8 +52129,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Hallway"; - req_one_access = list(10) + name = "Engineering Hallway" }, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_grid, @@ -54424,6 +54415,7 @@ "bWj" = ( /obj/structure/table/woodentable, /obj/item/weapon/reagent_containers/food/snacks/chips, +/obj/item/tabloid, /turf/simulated/floor/carpet, /area/engineering/break_room) "bWk" = ( @@ -89784,6 +89776,7 @@ layer = 3.1; name = "Cafe Shutters" }, +/obj/item/tabloid, /turf/simulated/floor/tiled/yellow, /area/library) "dkx" = ( diff --git a/polaris.dme b/polaris.dme index 747c26f838..548e69afbc 100644 --- a/polaris.dme +++ b/polaris.dme @@ -979,6 +979,7 @@ #include "code\game\objects\items\glassjar.dm" #include "code\game\objects\items\gunbox.dm" #include "code\game\objects\items\latexballoon.dm" +#include "code\game\objects\items\magazine.dm" #include "code\game\objects\items\paintkit.dm" #include "code\game\objects\items\poi_items.dm" #include "code\game\objects\items\robobag.dm" @@ -1949,6 +1950,7 @@ #include "code\modules\hydroponics\grown.dm" #include "code\modules\hydroponics\grown_inedible.dm" #include "code\modules\hydroponics\grown_predefined.dm" +#include "code\modules\hydroponics\grown_sif.dm" #include "code\modules\hydroponics\seed.dm" #include "code\modules\hydroponics\seed_controller.dm" #include "code\modules\hydroponics\seed_gene_mut.dm"