[MIRROR] [READY] Vatgrowing: Third time's the charm (#508)

* Merge pull request #53020 from Qustinnus/fatgrowing

[READY] Vatgrowing: Third time's the charm

* [READY] Vatgrowing: Third time's the charm

Co-authored-by: 81Denton <32391752+81Denton@users.noreply.github.com>
This commit is contained in:
SkyratBot
2020-08-25 01:36:10 +02:00
committed by GitHub
co-authored by 81Denton
parent f733bc21a8
commit 7bbe8ec530
98 changed files with 3070 additions and 792 deletions
@@ -125,6 +125,7 @@
setDir(pick(1,2,4,8))
icon_state += "-old"
add_blood_DNA(list("Non-human DNA" = random_blood_type()))
AddElement(/datum/element/swabable, CELL_LINE_TABLE_SLUDGE, CELL_VIRUS_TABLE_GENERIC, rand(2,4), 10)
/obj/effect/decal/cleanable/blood/drip
name = "drips of blood"
@@ -159,6 +159,8 @@
/obj/effect/decal/cleanable/vomit/old/Initialize(mapload, list/datum/disease/diseases)
. = ..()
icon_state += "-old"
AddElement(/datum/element/swabable, CELL_LINE_TABLE_SLUDGE, CELL_VIRUS_TABLE_GENERIC, rand(2,4), 10)
/obj/effect/decal/cleanable/chem_pile
name = "chemical pile"
@@ -238,3 +240,15 @@
desc = "Torn pieces of cardboard and paper, left over from a package."
icon = 'icons/obj/objects.dmi'
icon_state = "paper_shreds"
/obj/effect/decal/cleanable/garbage
name = "decomposing garbage"
desc = "A split open garbage bag, its stinking content seems to be partially liquified. Yuck!"
icon = 'icons/obj/objects.dmi'
icon_state = "garbage"
layer = OBJ_LAYER //To display the decal over wires.
beauty = -150
/obj/effect/decal/cleanable/garbage/Initialize()
. = ..()
AddElement(/datum/element/swabable, CELL_LINE_TABLE_SLUDGE, CELL_VIRUS_TABLE_GENERIC, rand(2,4), 15)
@@ -195,3 +195,14 @@
/obj/item/clothing/head/fedora/beige,
/obj/item/clothing/under/suit/beige,
/obj/item/clothing/shoes/laceup)
/obj/effect/spawner/bundle/hobo_squat
name = "hobo squat spawner"
items = list(/obj/structure/bed/maint,
/obj/effect/spawner/scatter/grime,
/obj/effect/spawner/lootdrop/maint_drugs)
/obj/effect/spawner/bundle/moisture_trap
name = "moisture trap spawner"
items = list(/obj/effect/spawner/scatter/moisture,
/obj/structure/moisture_trap)
@@ -0,0 +1,15 @@
///This spawner can spawn either a swabbable or non-swabble decal, the purpose of this is provide swabbing spots that cannot be rushed every round using map knowledge.
/obj/effect/spawner/lootdrop/gross_decal_spawner
name = "gross decal spawner"
icon_state = "random_trash"
loot = list(
/obj/effect/decal/cleanable/garbage = 15,
/obj/effect/decal/cleanable/vomit/old = 15,
/obj/effect/decal/cleanable/blood/gibs/old = 15,
/obj/effect/decal/cleanable/insectguts = 5,
/obj/effect/decal/cleanable/greenglow/ecto = 5,
/obj/effect/decal/cleanable/wrapping = 5,
/obj/effect/decal/cleanable/plastic = 5,
/obj/effect/decal/cleanable/glass = 5,
/obj/effect/decal/cleanable/dirt = 30
)
@@ -131,6 +131,70 @@
/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka,
)
/obj/effect/spawner/lootdrop/garbage_spawner
name = "garbage_spawner"
loot = list(/obj/effect/spawner/lootdrop/food_packaging = 56,
/obj/item/trash/can = 8,
/obj/item/shard = 8,
/obj/effect/spawner/lootdrop/botanical_waste = 8,
/obj/effect/spawner/lootdrop/cigbutt = 8,
/obj/item/reagent_containers/syringe = 5,
/obj/item/reagent_containers/food/snacks/deadmouse = 2,
/obj/item/light/tube/broken = 3,
/obj/item/light/tube/broken = 1,
/obj/item/trash/candle = 1)
/obj/effect/spawner/lootdrop/cigbutt
name = "cigarette butt spawner"
loot = list(/obj/item/cigbutt = 65,
/obj/item/cigbutt/roach = 20,
/obj/item/cigbutt/cigarbutt = 15)
/obj/effect/spawner/lootdrop/food_packaging
name = "food packaging spawner"
loot = list(/obj/item/trash/raisins = 20,
/obj/item/trash/cheesie = 10,
/obj/item/trash/candy = 10,
/obj/item/trash/chips = 10,
/obj/item/trash/sosjerky = 10,
/obj/item/trash/pistachios = 10,
/obj/item/trash/boritos = 8,
/obj/item/trash/can/food/beans = 6,
/obj/item/trash/popcorn = 5,
/obj/item/trash/energybar = 5,
/obj/item/trash/can/food/peaches/maint = 4,
/obj/item/trash/semki = 2)
/obj/effect/spawner/lootdrop/botanical_waste
name = "botanical waste spawner"
loot = list(/obj/item/grown/bananapeel = 60,
/obj/item/grown/corncob = 30,
/obj/item/reagent_containers/food/snacks/grown/bungopit = 10)
/obj/effect/spawner/lootdrop/refreshing_beverage
name = "good soda spawner"
loot = list(/obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola = 15,
/obj/item/reagent_containers/food/drinks/soda_cans/grey_bull = 15,
/obj/item/reagent_containers/food/drinks/soda_cans/monkey_energy = 10,
/obj/item/reagent_containers/food/drinks/soda_cans/thirteenloko = 10,
/obj/item/reagent_containers/food/drinks/beer/light = 10,
/obj/item/reagent_containers/food/drinks/soda_cans/shamblers = 5,
/obj/item/reagent_containers/food/drinks/soda_cans/pwr_game = 5,
/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb = 5,
/obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 5,
/obj/item/reagent_containers/food/drinks/soda_cans/starkist = 5,
/obj/item/reagent_containers/food/drinks/soda_cans/space_up = 5,
/obj/item/reagent_containers/food/drinks/soda_cans/sol_dry = 5,
/obj/item/reagent_containers/food/drinks/soda_cans/cola = 5)
/obj/effect/spawner/lootdrop/maint_drugs
name = "maint drugs spawner"
loot = list(/obj/item/reagent_containers/food/drinks/bottle/hooch = 50,
/obj/item/clothing/mask/cigarette/rollie/cannabis = 15,
/obj/item/clothing/mask/cigarette/rollie/mindbreaker = 5,
/obj/item/reagent_containers/syringe = 15,
/obj/item/cigbutt/roach = 15)
/obj/effect/spawner/lootdrop/grille_or_trash
name = "maint grille or trash spawner"
loot = list(/obj/structure/grille = 5,
@@ -0,0 +1,22 @@
///this spawner usually spawns a boring crate, but has a chance to replace the crate with "loot crate" with a different loot table or a decorative site.
/obj/effect/loot_site_spawner
icon = 'icons/effects/landmarks_static.dmi'
icon_state = "loot_site"
///This is the loot table for the spawner. Try to make sure the weights add up to 1000, so it is easy to understand.
var/list/loot_table = list(/obj/structure/closet/crate/maint = 765,
/obj/structure/closet/crate/trashcart/filled = 80,
/obj/effect/spawner/bundle/moisture_trap = 50,
/obj/effect/spawner/bundle/hobo_squat = 35,
/obj/structure/closet/mini_fridge = 40,
/obj/effect/spawner/lootdrop/gross_decal_spawner = 30)
/obj/effect/loot_site_spawner/Initialize()
..()
if(!length(loot_table))
return INITIALIZE_HINT_QDEL
var/spawned_object = pickweight(loot_table)
new spawned_object(get_turf(src))
return INITIALIZE_HINT_QDEL
@@ -0,0 +1,55 @@
///This spawner scatters the spawned stuff around where it is placed.
/obj/effect/spawner/scatter
///determines how many things to scatter
var/max_spawns = 3
///determines how big of a range we should scatter things in.
var/radius = 2
///This weighted list acts as the loot table for the spawner
var/list/loot_table
/obj/effect/spawner/scatter/Initialize()
..()
if(!length(loot_table))
return INITIALIZE_HINT_QDEL
var/list/candidate_locations = list()
for(var/turf/turf_in_view in oview(radius, get_turf(src)))
if(!turf_in_view.density)
candidate_locations += turf_in_view
if(!candidate_locations.len)
return INITIALIZE_HINT_QDEL
var/loot_spawned = 0
while((max_spawns-loot_spawned) && candidate_locations.len)
var/spawned_thing = pickweight(loot_table)
while(islist(spawned_thing))
spawned_thing = pickweight(spawned_thing)
new spawned_thing(pick_n_take(candidate_locations))
loot_spawned++
return INITIALIZE_HINT_QDEL
///This spawner will scatter garbage around a dirty site.
/obj/effect/spawner/scatter/grime
name = "trash and grime scatterer"
max_spawns = 5
loot_table = list(/obj/effect/spawner/lootdrop/garbage_spawner = 30,
/mob/living/simple_animal/hostile/cockroach = 25,
/obj/effect/decal/cleanable/garbage = 20,
/obj/effect/decal/cleanable/vomit/old = 15,
/obj/effect/spawner/lootdrop/cigbutt = 10)
///This spawner will scatter water related items around a moist site.
/obj/effect/spawner/scatter/moisture
max_spawns = 2
radius = 1
loot_table = list(/obj/item/clothing/head/cone = 35,
/obj/item/clothing/suit/caution = 15,
/mob/living/simple_animal/hostile/retaliate/frog = 10,
/obj/item/reagent_containers/glass/rag = 10,
/obj/item/reagent_containers/glass/bucket = 10,
/obj/effect/decal/cleanable/blood/old = 10,
/obj/structure/mopbucket = 10)