Merge branch 'master' into outdoorsprites

This commit is contained in:
Cerebulon
2021-08-23 21:29:28 +01:00
committed by GitHub
56 changed files with 538 additions and 222 deletions
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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.
+97
View File
@@ -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."
+60 -33
View File
@@ -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)
+3 -3
View File
@@ -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
+2 -2
View File
@@ -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
+4 -1
View File
@@ -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"
+2 -2
View File
@@ -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
+5
View File
@@ -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
*/
+21 -36
View File
@@ -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"
+2 -2
View File
@@ -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
+26 -9
View File
@@ -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"
+39
View File
@@ -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"
+3 -1
View File
@@ -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()
. = ..()
+40 -35
View File
@@ -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()
+1 -1
View File
@@ -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
+20
View File
@@ -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."
+21 -7
View File
@@ -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
+14 -6
View File
@@ -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"
+4 -3
View File
@@ -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
+1 -1
View File
@@ -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
+3 -5
View File
@@ -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>", \