Files
Casper3667 9194363697 Warehouse spawn content changes (#22843)
This changes up some of the possible warehouse spawn content. More book
options, couple of shield gens, slightly higher chance of some mats and
some other changes.

The big notable one is the chance of a big mob in the warehouse was
changed from 3% per round to 9% and the list for small and large mobs
was expanded. Particularly psirens were added, with a need to reduce the
spawn rate after the arc.

The warehouse spawn total was also reduced from 180 to 120, partly as a
test and to make the warehouse slightly less overloaded.
2026-07-17 18:48:57 +00:00

422 lines
12 KiB
Plaintext

// --- Uncommon ---
STOCK_ITEM_UNCOMMON(shrooms, 2)
if(prob(65))
new /obj/item/seeds/glowshroom(L)
if(prob(5))
new /obj/item/seeds/ghostmushroomseed(L)
if(prob(30))
new /obj/item/seeds/amanitamycelium(L)
STOCK_ITEM_UNCOMMON(plasteel, 3)
new /obj/item/stack/material/plasteel(L, rand(1,30))
STOCK_ITEM_UNCOMMON(silver, 2)
new /obj/item/stack/material/silver(L, rand(5,30))
STOCK_ITEM_UNCOMMON(phoronsheets, 0.25)
new /obj/item/stack/material/phoron(L, rand(5,20))
STOCK_ITEM_UNCOMMON(phoronglass, 0.5)
new /obj/item/stack/material/glass/phoronglass(L, rand(10,20))
STOCK_ITEM_UNCOMMON(stone, 2)
if(prob(50))
new /obj/item/stack/material/sandstone(L, 50)
else
new /obj/item/stack/material/marble(L, 50)
STOCK_ITEM_UNCOMMON(iron, 2)
new /obj/item/stack/material/iron(L, 50)
STOCK_ITEM_UNCOMMON(other_mat, 0.5)
var/obj/item/stack/material/M = pick(/obj/item/stack/material/osmium, /obj/item/stack/material/mhydrogen, /obj/item/stack/material/tritium, /obj/item/stack/material/bronze)
new M(L, rand(1, 20))
STOCK_ITEM_UNCOMMON(flare, 2)
new /obj/item/flashlight/flare(L)
new /obj/item/flashlight/flare(L)
if (prob(50))
new /obj/random/glowstick(L)
STOCK_ITEM_UNCOMMON(implants, 1)
if(prob(50))
new /obj/item/storage/box/cdeathalarm_kit(L)
else
new /obj/item/storage/box/tactical/trackimp(L)
STOCK_ITEM_UNCOMMON(flashbang, 0.75)
new /obj/item/storage/box/tactical/flashbangs(L)
STOCK_ITEM_UNCOMMON(stinger, 0.75)
new /obj/item/storage/box/tactical/stingers(L)
STOCK_ITEM_UNCOMMON(arrest, 1)
if(prob(60))
new /obj/item/storage/box/handcuffs(L)
else
new /obj/item/holowarrant(L)
STOCK_ITEM_UNCOMMON(monkey, 2)
if(prob(40))
var/type = pick( \
/obj/item/storage/box/unique/monkeycubes/farwacubes, \
/obj/item/storage/box/unique/monkeycubes/stokcubes, \
/obj/item/storage/box/unique/monkeycubes/neaeracubes \
)
new type(L)
else
new /obj/item/storage/box/unique/monkeycubes(L)
STOCK_ITEM_UNCOMMON(specialcrayon, 1.5)
if(prob(50))
new /obj/item/pen/crayon/mime(L)
else
new /obj/item/pen/crayon/rainbow(L)
STOCK_ITEM_UNCOMMON(contraband, 2)
for(var/i in 1 to rand(1, 3))
new /obj/random/contraband(L)
STOCK_ITEM_UNCOMMON(mediumcell, 3)
for(var/i in 1 to rand(1,2))
var/type = pick( \
/obj/item/cell/super, \
/obj/item/cell/high \
)
new type(L)
STOCK_ITEM_UNCOMMON(chempack, 5)
var/list/chems = GET_SINGLETON_SUBTYPE_MAP(/singleton/reagent/)
var/list/exclusion = list(/singleton/reagent/drink, /singleton/reagent, /singleton/reagent/adminordrazine, /singleton/reagent/polysomnine/beer2, /singleton/reagent/azoth, /singleton/reagent/elixir,\
/singleton/reagent/liquid_fire, /singleton/reagent/philosopher_stone, /singleton/reagent/toxin/undead, /singleton/reagent/love_potion, /singleton/reagent/shapesand, /singleton/reagent/usolve,\
/singleton/reagent/sglue, /singleton/reagent/black_matter, /singleton/reagent/drugs/cocaine, /singleton/reagent/drugs/raskara_dust, /singleton/reagent/drugs/heroin, /singleton/reagent/drugs/joy, /singleton/reagent/toxin/stimm, /singleton/reagent/drugs/impedrezene, /singleton/reagent/bottle_lightning, /singleton/reagent/toxin/hylemnomil, /singleton/reagent/toxin/nanites, /singleton/reagent/nitroglycerin,
/singleton/reagent/aslimetoxin, /singleton/reagent/sanasomnum, /singleton/reagent/rezadone, /singleton/reagent/kois/black, /singleton/reagent/toxin/carpotoxin, /singleton/reagent/toxin/malignant_tumour_cells)
chems -= exclusion
for (var/i in 1 to rand(2, 4))
var/obj/item/reagent_containers/chem_disp_cartridge/C = new /obj/item/reagent_containers/chem_disp_cartridge(L)
var/rname = pick(chems)
//If we get a drink, reroll it once.
//Should result in a higher chance of getting medicines and chemicals
if (ispath(rname, /singleton/reagent/drink) || ispath(rname, /singleton/reagent/alcohol/ethanol))
rname = pick(chems)
var/singleton/reagent/R = GET_SINGLETON(rname)
C.reagents.add_reagent(rname, C.volume)
C.setLabel(R.name)
STOCK_ITEM_UNCOMMON(robolimbs, 3)
for(var/i in 1 to rand(1, 2))
var/manuf = pick(GLOB.fabricator_robolimbs)
var/type = pick( \
/obj/item/robot_parts/l_arm, \
/obj/item/robot_parts/r_arm, \
/obj/item/robot_parts/l_leg, \
/obj/item/robot_parts/r_leg \
)
new type(L, manuf)
STOCK_ITEM_UNCOMMON(circuitboards, 3)
var/list/allboards = subtypesof(/obj/item/circuitboard)
var/list/exclusion = list(
/obj/item/circuitboard/unary_atmos,
/obj/item/circuitboard/telecomms,
/* Remove abstract hardsuit circuit boards.
These 4 aren't used in hardsuit construction.
Their children are used instead. */
/obj/item/circuitboard/rig_assembly,
/obj/item/circuitboard/rig_assembly/civilian,
/obj/item/circuitboard/rig_assembly/combat,
/obj/item/circuitboard/rig_assembly/illegal
)
allboards -= exclusion
for(var/i in 1 to rand(1, 2))
var/type = pick(allboards)
new type(L)
STOCK_ITEM_UNCOMMON(jetpack, 3)
new /obj/item/tank/jetpack/void(L)
if(prob(40))
new /obj/item/tank/emergency_oxygen/double(L)
STOCK_ITEM_UNCOMMON(inhaler, 1)
var/obj/item/reagent_containers/inhaler/I = pick(subtypesof(/obj/item/reagent_containers/inhaler))
new I(L)
STOCK_ITEM_UNCOMMON(advwelder, 2)
if(prob(5))
new /obj/item/weldingtool/experimental(L)
else
new /obj/item/weldingtool/hugetank(L)
STOCK_ITEM_UNCOMMON(policebaton, 1.5)
new /obj/item/melee/classic_baton(L)
STOCK_ITEM_UNCOMMON(stunbaton, 0.75) //batons spawn with no powercell
var/obj/item/melee/baton/B = new /obj/item/melee/baton(L)
if(B.bcell)
QDEL_NULL(B.bcell)
B.queue_icon_update()
STOCK_ITEM_UNCOMMON(firingpin, 3)
new /obj/item/storage/box/firingpins(L)
STOCK_ITEM_UNCOMMON(watch, 3)
new /obj/random/watches(L)
STOCK_ITEM_UNCOMMON(MMI, 1.5)
new /obj/item/mmi(L)
STOCK_ITEM_UNCOMMON(voidsuit, 2)
new /obj/random/voidsuit(L,1)
STOCK_ITEM_UNCOMMON(violin, 1)
new /obj/item/synthesized_instrument/violin(L)
STOCK_ITEM_UNCOMMON(atmosfiresuit, 2)
new /obj/item/clothing/head/hardhat/atmos(L)
new /obj/item/clothing/suit/fire/atmos(L)
STOCK_ITEM_UNCOMMON(debugger, 2)
new /obj/item/debugger(L)
STOCK_ITEM_UNCOMMON(surgerykit, 2.5)
new /obj/item/storage/firstaid/surgery(L)
STOCK_ITEM_UNCOMMON(crimekit, 1)
new /obj/item/storage/briefcase/crimekit(L)
STOCK_ITEM_UNCOMMON(carpet, 2)
new /obj/item/stack/tile/carpet(L, 50)
STOCK_ITEM_UNCOMMON(gift, 4)
new /obj/item/a_gift(L)
STOCK_ITEM_UNCOMMON(riotshield, 2)
new /obj/item/shield/riot(L)
if(prob(20))
new /obj/item/shield/riot(L)
STOCK_ITEM_UNCOMMON(fireaxe, 1)
new /obj/item/material/twohanded/fireaxe(L)
STOCK_ITEM_UNCOMMON(service, 2)
new /obj/item/rfd/service(L)
STOCK_ITEM_UNCOMMON(robot, 2)
var/list/bots = list(
/mob/living/bot/cleanbot = 2,
/mob/living/bot/medbot = 2,
/mob/living/bot/farmbot = 1,
)
var/type = pickweight(bots)
var/mob/living/bot/newbot = new type(L)
newbot.on = FALSE //Deactivated
STOCK_ITEM_UNCOMMON(headset, 2)
var/list/sets = list(
/obj/item/radio/headset/headset_eng = 1,
/obj/item/radio/headset/headset_rob = 0.4,
/obj/item/radio/headset/headset_med = 1,
/obj/item/radio/headset/headset_sci = 0.8,
/obj/item/radio/headset/headset_medsci = 0.4,
/obj/item/radio/headset/headset_cargo = 1,
/obj/item/radio/headset/headset_service = 1,
/obj/item/radio/headset/headset_sec = 0.5
)
var/type = pickweight(sets)
new type(L)
STOCK_ITEM_UNCOMMON(bat, 1.2)
new /obj/item/material/twohanded/baseballbat(L)
STOCK_ITEM_UNCOMMON(scythe, 0.75)
new /obj/item/material/scythe(L)
STOCK_ITEM_UNCOMMON(laserpoint, 0.75)
new /obj/item/laser_pointer(L)
STOCK_ITEM_UNCOMMON(manual, 2)
if(prob(20))
var/list/booklist = subtypesof(/obj/item/book/manual)
booklist -= /obj/item/book/manual/wiki //just this one. we want to keep the subtypes.
booklist -= /obj/item/book/manual/nuclear //yeah no
var/type = pick(booklist)
new type(L)
else
if (!establish_db_connection(GLOB.dbcon))
return
var/query_str = "SELECT author, title, content FROM ss13_library ORDER BY RAND() LIMIT :amount:"
var/list/query_data = list("amount" = 3)
var/DBQuery/query_books = GLOB.dbcon.NewQuery(query_str)
query_books.Execute(query_data)
while (query_books.NextRow())
CHECK_TICK
var/author = query_books.item[1]
var/title = query_books.item[2]
var/content = query_books.item[3]
var/obj/item/book/B = new(L)
B.name = "Book: [title]"
B.title = title
B.author = author
B.dat = content
var/randbook = "book[rand(1,16)]"
B.icon_state = randbook
B.item_state = randbook
STOCK_ITEM_UNCOMMON(spystuff, 0.75)
if(prob(40))
new /obj/item/radiojammer(L)
else
new /obj/item/clothing/glasses/night(L)
if(prob(10))
new /obj/item/storage/box/syndie_kit/spy/hidden(L)
STOCK_ITEM_UNCOMMON(seeds, 1)
for(var/i in 1 to rand(1, 3))
var/obj/item/seeds/SP = pick(subtypesof(/obj/item/seeds) - /obj/item/seeds/cutting)
new SP(L)
STOCK_ITEM_UNCOMMON(rped, 1)
new /obj/item/storage/part_replacer(L)
STOCK_ITEM_UNCOMMON(briefcase, 2)
var/list/briefcases = list(
/obj/item/storage/briefcase = 1,
/obj/item/storage/briefcase/real = 0.8,
/obj/item/storage/briefcase/black = 0.8,
/obj/item/storage/briefcase/aluminium = 0.5,
/obj/item/storage/briefcase/nt = 0.5
)
var/type = pickweight(briefcases)
new type(L)
STOCK_ITEM_UNCOMMON(blade, 1.2)
var/list/blades = list(
/obj/item/material/knife/butterfly = 1,
/obj/item/material/knife/butterfly/switchblade = 1,
/obj/item/material/hook = 1.5,
/obj/item/material/knife/ritual = 1.5,
/obj/item/material/hatchet/butch = 1,
/obj/item/material/hatchet = 1.5,
/obj/item/material/hatchet/unathiknife = 0.75,
/obj/item/material/knife/tacknife = 1,
/obj/item/material/knife/bayonet = 0.5
)
var/type = pickweight(blades)
new type(L)
STOCK_ITEM_UNCOMMON(laserscalpel, 1.3)
new /obj/item/surgery/scalpel/laser(L)
STOCK_ITEM_UNCOMMON(electropack, 1)
new /obj/item/radio/electropack(L)
STOCK_ITEM_UNCOMMON(randomhide, 0.5)
var/obj/item/stack/material/animalhide/spawn_hide = pick(typesof(/obj/item/stack/material/animalhide))
new spawn_hide(L, rand(5, 50))
STOCK_ITEM_UNCOMMON(hoodie, 1)
new /obj/random/hoodie(L)
STOCK_ITEM_UNCOMMON(bang, 0.5)
var/obj/item/gun/bang/B = pick(subtypesof(/obj/item/gun/bang))
new B(L)
STOCK_ITEM_UNCOMMON(cookingoil, 1)
var/turf/T = get_turf(L)
if(!turf_clear(T))
for(var/turf/U in range(T,1))
if(turf_clear(U))
T = U
break
new /obj/structure/reagent_dispensers/cookingoil(T)
STOCK_ITEM_UNCOMMON(coin, 1.3)
new /obj/random/coin(L)
if(prob(20))
new /obj/random/coin(L)
STOCK_ITEM_UNCOMMON(plushie, 1)
new /obj/random/plushie(L)
STOCK_ITEM_UNCOMMON(flag, 1)
new /obj/random/random_flag(L)
STOCK_ITEM_UNCOMMON(apiary, 1)
new /obj/item/bee_pack(L)
if(prob(75))
new /obj/item/bee_net(L)
if(prob(60))
new /obj/item/bee_smoker(L)
if(prob(30))
new /obj/item/honey_frame(L)
STOCK_ITEM_UNCOMMON(wristbound, 0.5)
var/list/possible_wristbounds = list()
for(var/thing in subtypesof(/obj/item/modular_computer/handheld/wristbound/preset))
var/obj/item/modular_computer/handheld/wristbound/preset/P = thing
if(initial(P.hidden))
continue
possible_wristbounds += P
var/wristbound_type = pick(possible_wristbounds)
new wristbound_type(L)
STOCK_ITEM_UNCOMMON(pops, 0.5)
if(prob(85))
new /obj/item/storage/box/unique/snappops(L)
else if (prob(25))
new /obj/item/storage/box/unique/snappops/syndi(L)
else
new /obj/item/storage/box/partypopper(L)
STOCK_ITEM_UNCOMMON(collectable_headwear, 0.5)
var/type = pick(subtypesof(/obj/item/clothing/head/collectable))
new type(L)
STOCK_ITEM_UNCOMMON(pickaxes, 1)
var/list/pickaxe_type = list(
/obj/item/pickaxe = 10,
/obj/item/pickaxe/hammer = 1,
/obj/item/pickaxe/silver = 2,
/obj/item/pickaxe/drill = 5,
/obj/item/pickaxe/gold = 0.5,
/obj/item/pickaxe/diamond = 0.25,
/obj/item/pickaxe/brush = 1,
/obj/item/pickaxe/hand = 2
)
var/type = pickweight(pickaxe_type)
new type(L)
STOCK_ITEM_UNCOMMON(alt_glasses, 1)
var/list/glasses = list(/obj/item/clothing/glasses/regular/circle,
/obj/item/clothing/glasses/regular/jamjar,
/obj/item/clothing/glasses/threedglasses,
/obj/item/clothing/glasses/regular/hipster,
/obj/item/clothing/glasses/regular/scanners)
var/type = pick(glasses)
new type(L)
STOCK_ITEM_UNCOMMON(gumballs, 3)
new /obj/item/glass_jar/gumball(L)
STOCK_ITEM_UNCOMMON(stickers, 1)
var/list/all_stickers = subtypesof(/obj/item/storage/stickersheet)
var/type = pick(all_stickers)
new type(L)
STOCK_ITEM_UNCOMMON(wizarddressup, 1)
new /obj/random/wizard_dressup(L)
STOCK_ITEM_UNCOMMON(nothing, 0)
// no-op