Merge pull request #8222 from MistakeNot4892/survivalism_nomap

General wilderness updates.
This commit is contained in:
Atermonera
2021-08-22 21:04:17 -07:00
committed by GitHub
33 changed files with 295 additions and 139 deletions
+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"
+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()
. = ..()
+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
+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
@@ -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
@@ -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"