mirror of
https://github.com/KabKebab/GS13.git
synced 2026-04-18 01:11:29 +01:00
Attempted to fix virology as the current addition/changes were incomplete with the individual working on it just disappearing and just leaving it in it's current state, this change will revert back virology to the old system with the old symptoms and stats as it was before. (hopefully)
364 lines
12 KiB
Plaintext
364 lines
12 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/bedsheet
|
|
icon = 'icons/obj/bedsheets.dmi'
|
|
icon_state = "random_bedsheet"
|
|
name = "random dorms bedsheet"
|
|
loot = list(/obj/item/bedsheet = 8, /obj/item/bedsheet/blue = 8, /obj/item/bedsheet/green = 8,
|
|
/obj/item/bedsheet/grey = 8, /obj/item/bedsheet/orange = 8, /obj/item/bedsheet/purple = 8,
|
|
/obj/item/bedsheet/red = 8, /obj/item/bedsheet/yellow = 8, /obj/item/bedsheet/brown = 8,
|
|
/obj/item/bedsheet/black = 8, /obj/item/bedsheet/patriot = 3, /obj/item/bedsheet/rainbow = 3,
|
|
/obj/item/bedsheet/ian = 3, /obj/item/bedsheet/runtime = 3, /obj/item/bedsheet/nanotrasen = 3,
|
|
/obj/item/bedsheet/pirate = 1, /obj/item/bedsheet/cosmos = 1, /obj/item/bedsheet/gondola = 1
|
|
)
|
|
|
|
/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/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/glowstick
|
|
name = "random colored glowstick"
|
|
icon = 'icons/obj/lighting.dmi'
|
|
icon_state = "random_glowstick"
|
|
|
|
/obj/effect/spawner/lootdrop/glowstick/Initialize()
|
|
loot = typesof(/obj/item/flashlight/glowstick)
|
|
. = ..()
|
|
|
|
|
|
/obj/effect/spawner/lootdrop/gloves
|
|
name = "random gloves"
|
|
desc = "These gloves are supposed to be a random color..."
|
|
icon = 'icons/obj/clothing/gloves.dmi'
|
|
icon_state = "random_gloves"
|
|
loot = list(
|
|
/obj/item/clothing/gloves/color/orange = 1,
|
|
/obj/item/clothing/gloves/color/red = 1,
|
|
/obj/item/clothing/gloves/color/blue = 1,
|
|
/obj/item/clothing/gloves/color/purple = 1,
|
|
/obj/item/clothing/gloves/color/green = 1,
|
|
/obj/item/clothing/gloves/color/grey = 1,
|
|
/obj/item/clothing/gloves/color/light_brown = 1,
|
|
/obj/item/clothing/gloves/color/brown = 1,
|
|
/obj/item/clothing/gloves/color/white = 1,
|
|
/obj/item/clothing/gloves/color/rainbow = 1)
|
|
|
|
/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/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
|
|
)
|
|
|
|
/obj/effect/spawner/lootdrop/mre
|
|
name = "random MRE"
|
|
icon = 'icons/obj/storage.dmi'
|
|
icon_state = "mre"
|
|
|
|
/obj/effect/spawner/lootdrop/mre/Initialize()
|
|
for(var/A in subtypesof(/obj/item/storage/box/mre))
|
|
var/obj/item/storage/box/mre/M = A
|
|
var/our_chance = initial(M.spawner_chance)
|
|
if(our_chance)
|
|
LAZYSET(loot, M, our_chance)
|
|
return ..()
|
|
|
|
|
|
// Tech storage circuit board spawners
|
|
// For these, make sure that lootcount equals the number of list items
|
|
|
|
/obj/effect/spawner/lootdrop/techstorage
|
|
name = "generic circuit board spawner"
|
|
lootdoubles = FALSE
|
|
fan_out_items = TRUE
|
|
|
|
/obj/effect/spawner/lootdrop/techstorage/service
|
|
name = "service circuit board spawner"
|
|
lootcount = 10
|
|
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"
|
|
lootcount = 8
|
|
loot = list(
|
|
/obj/item/circuitboard/computer/aifixer,
|
|
/obj/item/circuitboard/machine/rdserver,
|
|
/obj/item/circuitboard/computer/pandemic,
|
|
/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/effect/spawner/lootdrop/techstorage/security
|
|
name = "security circuit board spawner"
|
|
lootcount = 3
|
|
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"
|
|
lootcount = 3
|
|
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"
|
|
lootcount = 9
|
|
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"
|
|
lootcount = 8
|
|
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/effect/spawner/lootdrop/techstorage/AI
|
|
name = "secure AI circuit board spawner"
|
|
lootcount = 3
|
|
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"
|
|
lootcount = 3
|
|
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"
|
|
lootcount = 3
|
|
loot = list(
|
|
/obj/item/circuitboard/computer/mecha_control,
|
|
/obj/item/circuitboard/computer/apc_control,
|
|
/obj/item/circuitboard/computer/robotics
|
|
)
|