mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
208 lines
7.3 KiB
Plaintext
208 lines
7.3 KiB
Plaintext
/obj/effect/spawner/lootdrop
|
|
icon = 'icons/effects/landmarks_static.dmi'
|
|
icon_state = "random_loot"
|
|
layer = OBJ_LAYER
|
|
var/lootcount = 1 //how many items will be spawned
|
|
var/lootdoubles = TRUE //if the same item can be spawned twice
|
|
var/list/loot //a list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect)
|
|
var/fan_out_items = FALSE //Whether the items should be distributed to offsets 0,3,-3,6,-6,9,-9.. This overrides pixel_x/y on the spawner itself
|
|
|
|
/obj/effect/spawner/lootdrop/Initialize(mapload)
|
|
..()
|
|
if(loot && loot.len)
|
|
var/turf/T = get_turf(src)
|
|
var/loot_spawned = 0
|
|
while((lootcount-loot_spawned) && loot.len)
|
|
var/lootspawn = pickweight(loot)
|
|
if(!lootdoubles)
|
|
loot.Remove(lootspawn)
|
|
|
|
if(lootspawn)
|
|
var/atom/movable/spawned_loot = new lootspawn(T)
|
|
if (!fan_out_items)
|
|
if (pixel_x != 0)
|
|
spawned_loot.pixel_x = pixel_x
|
|
if (pixel_y != 0)
|
|
spawned_loot.pixel_y = pixel_y
|
|
else
|
|
if (loot_spawned)
|
|
spawned_loot.pixel_x = spawned_loot.pixel_y = ((!(loot_spawned%2)*loot_spawned/2)*-3)+((loot_spawned%2)*(loot_spawned+1)/2*3)
|
|
loot_spawned++
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
/obj/effect/spawner/lootdrop/armory_contraband
|
|
name = "armory contraband gun spawner"
|
|
lootdoubles = FALSE
|
|
|
|
loot = list(
|
|
/obj/item/gun/ballistic/automatic/pistol = 8,
|
|
/obj/item/gun/ballistic/shotgun/automatic/combat = 5,
|
|
/obj/item/gun/ballistic/revolver/mateba,
|
|
/obj/item/gun/ballistic/automatic/pistol/deagle
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/gambling
|
|
name = "gambling valuables spawner"
|
|
loot = list(
|
|
/obj/item/gun/ballistic/revolver/russian = 5,
|
|
/obj/item/storage/box/syndie_kit/throwing_weapons = 1,
|
|
/obj/item/toy/cards/deck/syndicate = 2
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/grille_or_trash
|
|
name = "maint grille or trash spawner"
|
|
loot = list(/obj/structure/grille = 5,
|
|
/obj/item/cigbutt = 1,
|
|
/obj/item/trash/cheesie = 1,
|
|
/obj/item/trash/candy = 1,
|
|
/obj/item/trash/chips = 1,
|
|
/obj/item/reagent_containers/food/snacks/deadmouse = 1,
|
|
/obj/item/trash/pistachios = 1,
|
|
/obj/item/trash/plate = 1,
|
|
/obj/item/trash/popcorn = 1,
|
|
/obj/item/trash/raisins = 1,
|
|
/obj/item/trash/sosjerky = 1,
|
|
/obj/item/trash/syndi_cakes = 1)
|
|
|
|
/obj/effect/spawner/lootdrop/three_course_meal
|
|
name = "three course meal spawner"
|
|
lootcount = 3
|
|
lootdoubles = FALSE
|
|
var/soups = list(
|
|
/obj/item/reagent_containers/food/snacks/soup/beet,
|
|
/obj/item/reagent_containers/food/snacks/soup/sweetpotato,
|
|
/obj/item/reagent_containers/food/snacks/soup/stew,
|
|
/obj/item/reagent_containers/food/snacks/soup/hotchili,
|
|
/obj/item/reagent_containers/food/snacks/soup/nettle,
|
|
/obj/item/reagent_containers/food/snacks/soup/meatball)
|
|
var/salads = list(
|
|
/obj/item/reagent_containers/food/snacks/salad/herbsalad,
|
|
/obj/item/reagent_containers/food/snacks/salad/validsalad,
|
|
/obj/item/reagent_containers/food/snacks/salad/fruit,
|
|
/obj/item/reagent_containers/food/snacks/salad/jungle,
|
|
/obj/item/reagent_containers/food/snacks/salad/aesirsalad)
|
|
var/mains = list(
|
|
/obj/item/reagent_containers/food/snacks/bearsteak,
|
|
/obj/item/reagent_containers/food/snacks/enchiladas,
|
|
/obj/item/reagent_containers/food/snacks/stewedsoymeat,
|
|
/obj/item/reagent_containers/food/snacks/burger/bigbite,
|
|
/obj/item/reagent_containers/food/snacks/burger/superbite,
|
|
/obj/item/reagent_containers/food/snacks/burger/fivealarm)
|
|
|
|
/obj/effect/spawner/lootdrop/three_course_meal/Initialize(mapload)
|
|
loot = list(pick(soups) = 1,pick(salads) = 1,pick(mains) = 1)
|
|
. = ..()
|
|
|
|
/obj/effect/spawner/lootdrop/maintenance
|
|
name = "maintenance loot spawner"
|
|
// see code/_globalvars/lists/maintenance_loot.dm for loot table
|
|
|
|
/obj/effect/spawner/lootdrop/maintenance/Initialize(mapload)
|
|
loot = GLOB.maintenance_loot
|
|
. = ..()
|
|
|
|
/obj/effect/spawner/lootdrop/crate_spawner
|
|
name = "lootcrate spawner" //USE PROMO CODE "SELLOUT" FOR 20% OFF!
|
|
lootdoubles = FALSE
|
|
|
|
loot = list(
|
|
/obj/structure/closet/crate/secure/loot = 20,
|
|
"" = 80
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/organ_spawner
|
|
name = "organ spawner"
|
|
loot = list(
|
|
/obj/item/organ/heart/gland/electric = 3,
|
|
/obj/item/organ/heart/gland/trauma = 4,
|
|
/obj/item/organ/heart/gland/egg = 7,
|
|
/obj/item/organ/heart/gland/chem = 5,
|
|
/obj/item/organ/heart/gland/mindshock = 5,
|
|
/obj/item/organ/heart/gland/plasma = 7,
|
|
/obj/item/organ/heart/gland/pop = 5,
|
|
/obj/item/organ/heart/gland/slime = 4,
|
|
/obj/item/organ/heart/gland/spiderman = 5,
|
|
/obj/item/organ/heart/gland/ventcrawling = 1,
|
|
/obj/item/organ/body_egg/alien_embryo = 1,
|
|
/obj/item/organ/regenerative_core = 2)
|
|
lootcount = 3
|
|
|
|
/obj/effect/spawner/lootdrop/two_percent_xeno_egg_spawner
|
|
name = "2% chance xeno egg spawner"
|
|
loot = list(
|
|
/obj/effect/decal/remains/xeno = 49,
|
|
/obj/effect/spawner/xeno_egg_delivery = 1)
|
|
|
|
/obj/effect/spawner/lootdrop/costume
|
|
name = "random costume spawner"
|
|
|
|
/obj/effect/spawner/lootdrop/costume/Initialize()
|
|
loot = list()
|
|
for(var/path in subtypesof(/obj/effect/spawner/bundle/costume))
|
|
loot[path] = TRUE
|
|
. = ..()
|
|
|
|
// Minor lootdrops follow
|
|
|
|
/obj/effect/spawner/lootdrop/minor/beret_or_rabbitears
|
|
name = "beret or rabbit ears spawner"
|
|
loot = list(
|
|
/obj/item/clothing/head/beret = 1,
|
|
/obj/item/clothing/head/rabbitears = 1)
|
|
|
|
/obj/effect/spawner/lootdrop/minor/bowler_or_that
|
|
name = "bowler or top hat spawner"
|
|
loot = list(
|
|
/obj/item/clothing/head/bowler = 1,
|
|
/obj/item/clothing/head/that = 1)
|
|
|
|
/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears
|
|
name = "kitty ears or rabbit ears spawner"
|
|
loot = list(
|
|
/obj/item/clothing/head/kitty = 1,
|
|
/obj/item/clothing/head/rabbitears = 1)
|
|
|
|
/obj/effect/spawner/lootdrop/minor/pirate_or_bandana
|
|
name = "pirate hat or bandana spawner"
|
|
loot = list(
|
|
/obj/item/clothing/head/pirate = 1,
|
|
/obj/item/clothing/head/bandana = 1)
|
|
|
|
/obj/effect/spawner/lootdrop/minor/twentyfive_percent_cyborg_mask
|
|
name = "25% cyborg mask spawner"
|
|
loot = list(
|
|
/obj/item/clothing/mask/gas/cyborg = 25,
|
|
"" = 75)
|
|
|
|
/obj/effect/spawner/lootdrop/aimodule_harmless // These shouldn't allow the AI to start butchering people
|
|
name = "harmless AI module spawner"
|
|
loot = list(
|
|
/obj/item/aiModule/core/full/asimov,
|
|
/obj/item/aiModule/core/full/asimovpp,
|
|
/obj/item/aiModule/core/full/hippocratic,
|
|
/obj/item/aiModule/core/full/paladin_devotion,
|
|
/obj/item/aiModule/core/full/paladin
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/aimodule_neutral // These shouldn't allow the AI to start butchering people without reason
|
|
name = "neutral AI module spawner"
|
|
loot = list(
|
|
/obj/item/aiModule/core/full/corp,
|
|
/obj/item/aiModule/core/full/maintain,
|
|
/obj/item/aiModule/core/full/drone,
|
|
/obj/item/aiModule/core/full/peacekeeper,
|
|
/obj/item/aiModule/core/full/reporter,
|
|
/obj/item/aiModule/core/full/robocop,
|
|
/obj/item/aiModule/core/full/liveandletlive
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/aimodule_harmful // These will get the shuttle called
|
|
name = "harmful AI module spawner"
|
|
loot = list(
|
|
/obj/item/aiModule/core/full/antimov,
|
|
/obj/item/aiModule/core/full/balance,
|
|
/obj/item/aiModule/core/full/tyrant,
|
|
/obj/item/aiModule/core/full/thermurderdynamic,
|
|
/obj/item/aiModule/core/full/damaged
|
|
)
|