mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 08:37:43 +01:00
[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:
@@ -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)
|
||||
Reference in New Issue
Block a user