mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-26 06:39:22 +01:00
Merge branch 'master' into outdoorsprites
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
@@ -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."
|
||||
|
||||
@@ -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 "<span class='notice'>\The [src] seems to have something hanging from it.</span>"
|
||||
|
||||
/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, "<span class='notice'>You fail to harvest anything from \the [src].</span>")
|
||||
|
||||
if(AM)
|
||||
to_chat(user, SPAN_NOTICE("You harvest \the [AM] from \the [src]."))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You harvest \the [AM] from \the [src].</span>")
|
||||
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("<span class='filter_notice'>\The [user] digs up \the [src.name].", "You dig up \the [src.name].</span>")
|
||||
qdel(src)
|
||||
else
|
||||
user.visible_message("<span class='filter_notice'>\The [user] pokes \the [src.name].", "You poke \the [src.name].</span>")
|
||||
|
||||
/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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
icon_state = "slab"
|
||||
|
||||
|
||||
@@ -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
|
||||
)
|
||||
)
|
||||
@@ -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"
|
||||
|
||||
@@ -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, "<span class='notice'>You begin to dig in \the [src] with your [S].</span>")
|
||||
if(do_after(user, 4 SECONDS * S.toolspeed))
|
||||
to_chat(user, "<span class='notice'>\The [src] has been dug up, a worm pops from the ground.</span>")
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/worm(src)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You decide to not finish digging in \the [src].</span>")
|
||||
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
|
||||
..()
|
||||
. = ..()
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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, "<span class='notice'>You cut the potato.</span>")
|
||||
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, "<span class='notice'>You remove the seeds from the flower, slightly damaging them.</span>")
|
||||
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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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("<span class='notice'>You carve a face into [src]!</span>", 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("<span class='notice'>You make planks out of \the [src]!</span>", 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)
|
||||
. = ..()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
@@ -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()
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
//visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message)
|
||||
user.visible_message("<span class='notice'>\The [user] starts cutting hair off \the [src]</span>", "<span class='notice'>You start cutting the hair off \the [src]</span>", "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
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<max_attempts;i++)
|
||||
if(generate())
|
||||
if(!do_not_announce) admin_notice("<span class='danger'>[capitalize(name)] generation completed in [round(0.1*(world.timeofday-start_time),0.1)] seconds.</span>", R_DEBUG)
|
||||
return
|
||||
if(!do_not_announce) admin_notice("<span class='danger'>[capitalize(name)] failed to generate ([round(0.1*(world.timeofday-start_time),0.1)] seconds): could not produce sane map.</span>", R_DEBUG)
|
||||
if(!generate())
|
||||
failed = TRUE
|
||||
|
||||
if(!do_not_announce)
|
||||
if(!failed)
|
||||
admin_notice("<span class='danger'>[capitalize(name)] generation completed in [round(0.1*(world.timeofday-start_time),0.1)] seconds.</span>", R_DEBUG)
|
||||
else
|
||||
admin_notice("<span class='danger'>[capitalize(name)] failed to generate ([round(0.1*(world.timeofday-start_time),0.1)] seconds): could not produce sane map.</span>", 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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
required_reagents = list("enzyme" = 1, "spidertoxin" = 1, "sifsap" = 1)
|
||||
result_amount = 1
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
color = "#62764E"
|
||||
nutriment_factor = 15
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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("<span class='warning'>[user]'s hand slips.</span>", \
|
||||
|
||||
Reference in New Issue
Block a user