mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-02-04 13:29:25 +00:00
cl MMMiracles
add: A new(old?) map, Donutstation, is now in rotation.
/cl
Map Image
Comparison Image of Original
Progress
Departmental Layout
Atmos
Wiring
Detailing/fluff
Floor tiling
A faithful recreation of Donutstation, keeping some landmarks of the old map similar while bringing in all the new content and departments that come with it.
359 lines
13 KiB
Plaintext
359 lines
13 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,1,-1,2,-2,3,-3.. 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)*-1)+((loot_spawned%2)*(loot_spawned+1)/2*1)
|
|
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/armory_contraband/metastation
|
|
loot = list(/obj/item/gun/ballistic/automatic/pistol = 5,
|
|
/obj/item/gun/ballistic/shotgun/automatic/combat = 5,
|
|
/obj/item/gun/ballistic/revolver/mateba,
|
|
/obj/item/gun/ballistic/automatic/pistol/deagle,
|
|
/obj/item/storage/box/syndie_kit/throwing_weapons = 3)
|
|
|
|
/obj/effect/spawner/lootdrop/armory_contraband/donutstation
|
|
loot = list(/obj/item/grenade/clusterbuster/teargas = 5,
|
|
/obj/item/gun/ballistic/shotgun/automatic/combat = 5,
|
|
/obj/item/bikehorn/golden,
|
|
/obj/item/grenade/clusterbuster,
|
|
/obj/item/storage/box/syndie_kit/throwing_weapons = 3)
|
|
|
|
/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/maintenance/two
|
|
name = "2 x maintenance loot spawner"
|
|
lootcount = 2
|
|
|
|
/obj/effect/spawner/lootdrop/maintenance/three
|
|
name = "3 x maintenance loot spawner"
|
|
lootcount = 3
|
|
|
|
/obj/effect/spawner/lootdrop/maintenance/four
|
|
name = "4 x maintenance loot spawner"
|
|
lootcount = 4
|
|
|
|
/obj/effect/spawner/lootdrop/maintenance/five
|
|
name = "5 x maintenance loot spawner"
|
|
lootcount = 5
|
|
|
|
/obj/effect/spawner/lootdrop/maintenance/six
|
|
name = "6 x maintenance loot spawner"
|
|
lootcount = 6
|
|
|
|
/obj/effect/spawner/lootdrop/maintenance/seven
|
|
name = "7 x maintenance loot spawner"
|
|
lootcount = 7
|
|
|
|
/obj/effect/spawner/lootdrop/maintenance/eight
|
|
name = "8 x maintenance loot spawner"
|
|
lootcount = 8
|
|
|
|
/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/item/aiModule/core/full/hulkamania
|
|
)
|
|
|
|
/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
|
|
)
|
|
|
|
// Tech storage circuit board spawners
|
|
|
|
/obj/effect/spawner/lootdrop/techstorage
|
|
name = "generic circuit board spawner"
|
|
lootdoubles = FALSE
|
|
fan_out_items = TRUE
|
|
lootcount = INFINITY
|
|
|
|
/obj/effect/spawner/lootdrop/techstorage/service
|
|
name = "service circuit board spawner"
|
|
loot = list(
|
|
/obj/item/circuitboard/computer/arcade/battle,
|
|
/obj/item/circuitboard/computer/arcade/orion_trail,
|
|
/obj/item/circuitboard/machine/autolathe,
|
|
/obj/item/circuitboard/computer/mining,
|
|
/obj/item/circuitboard/machine/ore_redemption,
|
|
/obj/item/circuitboard/machine/mining_equipment_vendor,
|
|
/obj/item/circuitboard/machine/microwave,
|
|
/obj/item/circuitboard/machine/chem_dispenser/drinks,
|
|
/obj/item/circuitboard/machine/chem_dispenser/drinks/beer,
|
|
/obj/item/circuitboard/computer/slot_machine
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/techstorage/rnd
|
|
name = "RnD circuit board spawner"
|
|
loot = list(
|
|
/obj/item/circuitboard/computer/aifixer,
|
|
/obj/item/circuitboard/machine/rdserver,
|
|
/obj/item/circuitboard/machine/mechfab,
|
|
/obj/item/circuitboard/machine/circuit_imprinter/department,
|
|
/obj/item/circuitboard/computer/teleporter,
|
|
/obj/item/circuitboard/machine/destructive_analyzer,
|
|
/obj/item/circuitboard/computer/rdconsole,
|
|
/obj/item/circuitboard/computer/nanite_chamber_control,
|
|
/obj/item/circuitboard/computer/nanite_cloud_controller,
|
|
/obj/item/circuitboard/machine/nanite_chamber,
|
|
/obj/item/circuitboard/machine/nanite_programmer,
|
|
/obj/item/circuitboard/machine/nanite_program_hub
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/techstorage/security
|
|
name = "security circuit board spawner"
|
|
loot = list(
|
|
/obj/item/circuitboard/computer/secure_data,
|
|
/obj/item/circuitboard/computer/security,
|
|
/obj/item/circuitboard/computer/prisoner
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/techstorage/engineering
|
|
name = "engineering circuit board spawner"
|
|
loot = list(
|
|
/obj/item/circuitboard/computer/atmos_alert,
|
|
/obj/item/circuitboard/computer/stationalert,
|
|
/obj/item/circuitboard/computer/powermonitor
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/techstorage/tcomms
|
|
name = "tcomms circuit board spawner"
|
|
loot = list(
|
|
/obj/item/circuitboard/computer/message_monitor,
|
|
/obj/item/circuitboard/machine/telecomms/broadcaster,
|
|
/obj/item/circuitboard/machine/telecomms/bus,
|
|
/obj/item/circuitboard/machine/telecomms/server,
|
|
/obj/item/circuitboard/machine/telecomms/receiver,
|
|
/obj/item/circuitboard/machine/telecomms/processor,
|
|
/obj/item/circuitboard/machine/announcement_system,
|
|
/obj/item/circuitboard/computer/comm_server,
|
|
/obj/item/circuitboard/computer/comm_monitor
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/techstorage/medical
|
|
name = "medical circuit board spawner"
|
|
loot = list(
|
|
/obj/item/circuitboard/computer/cloning,
|
|
/obj/item/circuitboard/machine/clonepod,
|
|
/obj/item/circuitboard/machine/chem_dispenser,
|
|
/obj/item/circuitboard/computer/scan_consolenew,
|
|
/obj/item/circuitboard/computer/med_data,
|
|
/obj/item/circuitboard/machine/smoke_machine,
|
|
/obj/item/circuitboard/machine/chem_master,
|
|
/obj/item/circuitboard/machine/clonescanner,
|
|
/obj/item/circuitboard/computer/pandemic
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/techstorage/AI
|
|
name = "secure AI circuit board spawner"
|
|
loot = list(
|
|
/obj/item/circuitboard/computer/aiupload,
|
|
/obj/item/circuitboard/computer/borgupload,
|
|
/obj/item/circuitboard/aicore
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/techstorage/command
|
|
name = "secure command circuit board spawner"
|
|
loot = list(
|
|
/obj/item/circuitboard/computer/crew,
|
|
/obj/item/circuitboard/computer/communications,
|
|
/obj/item/circuitboard/computer/card
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/techstorage/RnD_secure
|
|
name = "secure RnD circuit board spawner"
|
|
loot = list(
|
|
/obj/item/circuitboard/computer/mecha_control,
|
|
/obj/item/circuitboard/computer/apc_control,
|
|
/obj/item/circuitboard/computer/robotics
|
|
)
|