diff --git a/aurorastation.dme b/aurorastation.dme index 56bd42aef1d..a0dab8d0565 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1148,8 +1148,16 @@ #include "code\game\objects\items\weapons\tanks\tank_types.dm" #include "code\game\objects\items\weapons\tanks\tanks.dm" #include "code\game\objects\items\weapons\tanks\watertank.dm" +#include "code\game\objects\random\clothing.dm" +#include "code\game\objects\random\food.dm" +#include "code\game\objects\random\loot.dm" +#include "code\game\objects\random\medical.dm" +#include "code\game\objects\random\misc.dm" #include "code\game\objects\random\produce.dm" #include "code\game\objects\random\random.dm" +#include "code\game\objects\random\tech.dm" +#include "code\game\objects\random\weapon.dm" +#include "code\game\objects\random\weapon_and_ammo.dm" #include "code\game\objects\structures\barsign.dm" #include "code\game\objects\structures\bedsheet_bin.dm" #include "code\game\objects\structures\bonfire.dm" diff --git a/code/game/objects/random/clothing.dm b/code/game/objects/random/clothing.dm new file mode 100644 index 00000000000..d9438d51098 --- /dev/null +++ b/code/game/objects/random/clothing.dm @@ -0,0 +1,276 @@ +/obj/random/belt + name = "random belt" + problist = list( + /obj/item/storage/belt/utility = 1, + /obj/item/storage/belt/medical = 0.4, + /obj/item/storage/belt/medical/first_responder = 0.4, + /obj/item/storage/belt/medical/first_responder/combat = 0.1, + /obj/item/storage/belt/security/tactical = 0.1, + /obj/item/storage/belt/military = 0.1, + /obj/item/storage/belt/custodial = 0.4 + ) + +// Spawns a random backpack. +// Novelty and rare backpacks have lower weights. +/obj/random/backpack + name = "random backpack" + problist = list( + /obj/item/storage/backpack = 3, + /obj/item/storage/backpack/cultpack = 2, + /obj/item/storage/backpack/medic = 3, + /obj/item/storage/backpack/security = 3, + /obj/item/storage/backpack/captain = 2, + /obj/item/storage/backpack/industrial = 3, + /obj/item/storage/backpack/toxins = 3, + /obj/item/storage/backpack/hydroponics = 3, + /obj/item/storage/backpack/pharmacy = 3, + /obj/item/storage/backpack/cloak = 2, + /obj/item/storage/backpack/syndie = 1, + /obj/item/storage/backpack/satchel = 3, + /obj/item/storage/backpack/satchel/leather = 3, + /obj/item/storage/backpack/satchel/eng = 3, + /obj/item/storage/backpack/satchel/med = 3, + /obj/item/storage/backpack/satchel/pharm = 3, + /obj/item/storage/backpack/satchel/tox = 3, + /obj/item/storage/backpack/satchel/sec = 3, + /obj/item/storage/backpack/satchel/hyd = 3, + /obj/item/storage/backpack/satchel/cap = 1, + /obj/item/storage/backpack/satchel/syndie = 1, + /obj/item/storage/backpack/ert = 1, + /obj/item/storage/backpack/ert/security = 1, + /obj/item/storage/backpack/ert/engineer = 1, + /obj/item/storage/backpack/ert/medical = 1, + /obj/item/storage/backpack/duffel = 3, + /obj/item/storage/backpack/duffel/cap = 1, + /obj/item/storage/backpack/duffel/hyd = 3, + /obj/item/storage/backpack/duffel/med = 3, + /obj/item/storage/backpack/duffel/eng = 3, + /obj/item/storage/backpack/duffel/tox = 3, + /obj/item/storage/backpack/duffel/sec = 3, + /obj/item/storage/backpack/duffel/pharm = 3, + /obj/item/storage/backpack/duffel/syndie = 1, + /obj/item/storage/backpack/messenger = 2, + /obj/item/storage/backpack/messenger/pharm = 2, + /obj/item/storage/backpack/messenger/med = 2, + /obj/item/storage/backpack/messenger/tox = 2, + /obj/item/storage/backpack/messenger/com = 1, + /obj/item/storage/backpack/messenger/engi = 2, + /obj/item/storage/backpack/messenger/hyd = 2, + /obj/item/storage/backpack/messenger/sec = 2, + /obj/item/storage/backpack/messenger/syndie = 1, + ) + +/obj/random/colored_jumpsuit + name = "random colored jumpsuit" + desc = "This is a random colored jumpsuit." + icon = 'icons/obj/clothing/uniforms.dmi' + icon_state = "black" + spawnlist = list( + /obj/item/clothing/under/color/black, + /obj/item/clothing/under/color/blue, + /obj/item/clothing/under/color/green, + /obj/item/clothing/under/color/grey, + /obj/item/clothing/under/color/orange, + /obj/item/clothing/under/color/pink, + /obj/item/clothing/under/color/red, + /obj/item/clothing/under/color/white, + /obj/item/clothing/under/color/yellow, + /obj/item/clothing/under/color/lightblue, + /obj/item/clothing/under/color/aqua, + /obj/item/clothing/under/color/purple, + /obj/item/clothing/under/color/lightpurple, + /obj/item/clothing/under/color/lightgreen, + /obj/item/clothing/under/color/lightbrown, + /obj/item/clothing/under/color/brown, + /obj/item/clothing/under/color/yellowgreen, + /obj/item/clothing/under/color/darkblue, + /obj/item/clothing/under/color/lightred, + /obj/item/clothing/under/color/darkred + ) + +/obj/random/suit + name = "random suit" + desc = "This is a random suit." + icon = 'icons/obj/clothing/uniforms.dmi' + icon_state = "checkered_suit" + spawnlist = list( + /obj/item/clothing/under/suit_jacket/charcoal, + /obj/item/clothing/under/suit_jacket/navy, + /obj/item/clothing/under/suit_jacket/burgundy, + /obj/item/clothing/under/suit_jacket/checkered, + /obj/item/clothing/under/suit_jacket/tan, + /obj/item/clothing/under/sl_suit, + /obj/item/clothing/under/suit_jacket, + /obj/item/clothing/under/suit_jacket/really_black, + /obj/item/clothing/under/suit_jacket/red, + /obj/item/clothing/under/suit_jacket/white + ) + +/obj/random/chameleon + name = "random possible chameleon item" + desc = "A random possible chameleon item. What could possibly go wrong?" + icon = 'icons/obj/clothing/gloves.dmi' + icon_state = "yellow" + problist = list( + + /obj/item/clothing/gloves/chameleon = 1, + /obj/item/clothing/gloves/black = 10, + + /obj/item/clothing/head/chameleon = 0.5, + /obj/item/clothing/head/softcap = 5, + + /obj/item/clothing/mask/chameleon = 1, + /obj/item/clothing/mask/gas = 10, + + /obj/item/clothing/shoes/chameleon = 0.5, + /obj/item/clothing/shoes/black = 5, + + /obj/item/clothing/suit/chameleon = 0.1, + /obj/item/clothing/suit/armor/vest = 1, + + /obj/item/clothing/under/chameleon = 0.75, + /obj/item/clothing/under/color/black = 7.5, + + /obj/item/gun/energy/chameleon = 0.1, + /obj/item/gun/bang/deagle = 0.1, + + /obj/item/storage/backpack/chameleon = 1, + /obj/item/storage/backpack = 10, + + /obj/item/clothing/glasses/chameleon = 1 + ) + +/obj/random/gloves + name = "random gloves" + desc = "Random gloves, assorted usefulness." + icon = 'icons/obj/clothing/gloves.dmi' + icon_state = "yellow" + problist = list( + /obj/item/clothing/gloves/black = 1, + /obj/item/clothing/gloves/black_leather = 0.5, + /obj/item/clothing/gloves/botanic_leather = 0.7, + /obj/item/clothing/gloves/boxing = 0.3, + /obj/item/clothing/gloves/boxing/green = 0.3, + /obj/item/clothing/gloves/captain = 0.1, + /obj/item/clothing/gloves/combat = 0.2, + /obj/item/clothing/gloves/yellow/budget = 1.2, + /obj/item/clothing/gloves/latex = 0.5, + /obj/item/clothing/gloves/latex/nitrile = 0.4, + /obj/item/clothing/gloves/yellow = 0.9 + ) + +/obj/random/watches + name = "random watches" + desc = "Random watches, probably able to tell the time." + icon = 'icons/obj/clothing/gloves.dmi' + icon_state = "watch" + problist = list( + /obj/item/clothing/wrists/watch = 1, + /obj/item/clothing/wrists/watch/silver = 0.7, + /obj/item/clothing/wrists/watch/gold = 0.5, + /obj/item/clothing/wrists/watch/spy = 0.3, + ) + +/obj/random/hoodie + name = "random winter coat" + desc = "This is a random winter coat." + icon = 'icons/obj/clothing/hoodies.dmi' + icon_state = "coatwinter" + problist = list( + /obj/item/clothing/suit/storage/hooded/wintercoat = 5, + /obj/item/clothing/suit/storage/hooded/wintercoat/engineering = 3, + /obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos = 3, + /obj/item/clothing/suit/storage/hooded/wintercoat/medical = 3, + /obj/item/clothing/suit/storage/hooded/wintercoat/science = 3, + /obj/item/clothing/suit/storage/hooded/wintercoat/hydro = 3, + /obj/item/clothing/suit/storage/hooded/wintercoat/cargo = 3, + /obj/item/clothing/suit/storage/hooded/wintercoat/miner = 3, + /obj/item/clothing/suit/storage/hooded/wintercoat/security = 2, + /obj/item/clothing/suit/storage/hooded/wintercoat/captain = 1 + ) + +/obj/random/bandana + name = "random bandana" + desc = "This is a random bandana." + icon = 'icons/obj/clothing/hats/bandanas.dmi' + icon_state = "bandana" + problist = list( + /obj/item/clothing/head/bandana/colorable/random = 5, + /obj/item/clothing/head/bandana/engineering = 3, + /obj/item/clothing/head/bandana/atmos = 3, + /obj/item/clothing/head/bandana/medical = 3, + /obj/item/clothing/head/bandana/science = 3, + /obj/item/clothing/head/bandana/hydro = 3, + /obj/item/clothing/head/bandana/cargo = 3, + /obj/item/clothing/head/bandana/miner = 3, + /obj/item/clothing/head/bandana/security = 2, + /obj/item/clothing/head/bandana/captain = 1 + ) + +/obj/random/softcap + name = "random softcap" + desc = "This is a random softcap." + icon = 'icons/obj/clothing/hats/soft_caps.dmi' + icon_state = "softcap" + problist = list( + /obj/item/clothing/head/softcap/colorable/random = 5, + /obj/item/clothing/head/softcap/engineering = 3, + /obj/item/clothing/head/softcap/atmos = 3, + /obj/item/clothing/head/softcap/medical = 3, + /obj/item/clothing/head/softcap/science = 3, + /obj/item/clothing/head/softcap/hydro = 3, + /obj/item/clothing/head/softcap/cargo = 3, + /obj/item/clothing/head/softcap/miner = 3, + /obj/item/clothing/head/softcap/security = 2, + /obj/item/clothing/head/softcap/captain = 1 + ) + +/obj/random/beret + name = "random beret" + desc = "This is a random beret." + icon = 'icons/obj/clothing/hats/berets.dmi' + icon_state = "beret" + problist = list( + /obj/item/clothing/head/beret/colorable/random = 5, + /obj/item/clothing/head/beret/engineering = 3, + /obj/item/clothing/head/beret/atmos = 3, + /obj/item/clothing/head/beret/medical = 3, + /obj/item/clothing/head/beret/science = 3, + /obj/item/clothing/head/beret/hydro = 3, + /obj/item/clothing/head/beret/cargo = 3, + /obj/item/clothing/head/beret/miner = 3, + /obj/item/clothing/head/beret/security = 2, + /obj/item/clothing/head/beret/captain = 1 + ) + +/obj/random/hardhat + name = "random hardhat" + desc = "This is a random hardhat." + icon = 'icons/obj/clothing/hats/hardhats.dmi' + icon_state = "hardhat_yellow" + problist = list( + /obj/item/clothing/head/hardhat = 1, + /obj/item/clothing/head/hardhat/orange = 1, + /obj/item/clothing/head/hardhat/red = 1, + /obj/item/clothing/head/hardhat/green = 1, + /obj/item/clothing/head/hardhat/dblue = 1, + /obj/item/clothing/head/hardhat/white = 0.5, + /obj/item/clothing/head/hardhat/atmos = 0.1, + /obj/item/clothing/head/hardhat/first_responder = 0.1, + /obj/item/clothing/head/hardhat/firefighter = 0.1 + ) + +/obj/random/wizard_dressup + name = "random wizard clothes" + desc = "This is a random piece of fake wizard clothing." + icon = 'icons/obj/wizard.dmi' + icon_state = "staff" + has_postspawn = TRUE + +/obj/random/wizard_dressup/spawn_item() + var/obj/item/clothing/suit/wizrobe/W = pick(typesof(/obj/item/clothing/suit/wizrobe)) + . = new W(loc) + +/obj/random/wizard_dressup/post_spawn(obj/thing) + var/obj/item/clothing/head/wizard/H = pick(typesof(/obj/item/clothing/head/wizard)) + new H(loc) diff --git a/code/game/objects/random/food.dm b/code/game/objects/random/food.dm new file mode 100644 index 00000000000..f9439bdaa63 --- /dev/null +++ b/code/game/objects/random/food.dm @@ -0,0 +1,227 @@ +/obj/random/mre + name = "random MRE" + desc = "This is a random single MRE." + icon = 'icons/obj/food.dmi' + icon_state = "mre" + spawnlist = list( + /obj/item/storage/box/fancy/mre, + /obj/item/storage/box/fancy/mre/menu2, + /obj/item/storage/box/fancy/mre/menu3, + /obj/item/storage/box/fancy/mre/menu4, + /obj/item/storage/box/fancy/mre/menu5, + /obj/item/storage/box/fancy/mre/menu6, + /obj/item/storage/box/fancy/mre/menu7, + /obj/item/storage/box/fancy/mre/menu8, + /obj/item/storage/box/fancy/mre/menu9, + /obj/item/storage/box/fancy/mre/menu10 + ) + +/obj/random/mre/main + name = "random MRE main course" + desc = "This is a random main course for MREs." + icon_state = "pouch_medium" + spawnlist = list( + /obj/item/storage/box/fancy/mrebag, + /obj/item/storage/box/fancy/mrebag/menu2, + /obj/item/storage/box/fancy/mrebag/menu3, + /obj/item/storage/box/fancy/mrebag/menu4, + /obj/item/storage/box/fancy/mrebag/menu5, + /obj/item/storage/box/fancy/mrebag/menu6, + /obj/item/storage/box/fancy/mrebag/menu7, + /obj/item/storage/box/fancy/mrebag/menu8 + ) + +/obj/random/mre/dessert + name = "random MRE dessert" + desc = "This is a random dessert for MREs." + icon_state = "pouch_medium" + spawnlist = list( + /obj/item/reagent_containers/food/snacks/candy, + /obj/item/reagent_containers/food/snacks/cb01, + /obj/item/reagent_containers/food/snacks/cb02, + /obj/item/reagent_containers/food/snacks/cb03, + /obj/item/reagent_containers/food/snacks/cb04, + /obj/item/reagent_containers/food/snacks/cb05, + /obj/item/reagent_containers/food/snacks/cb06, + /obj/item/reagent_containers/food/snacks/cb07, + /obj/item/reagent_containers/food/snacks/cb08, + /obj/item/reagent_containers/food/snacks/cb09, + /obj/item/reagent_containers/food/snacks/cb10, + /obj/item/reagent_containers/food/snacks/proteinbar, + /obj/item/reagent_containers/food/snacks/donut/normal, + /obj/item/reagent_containers/food/snacks/donut/cherryjelly, + /obj/item/reagent_containers/food/snacks/chocolatebar, + /obj/item/reagent_containers/food/snacks/cookie, + /obj/item/reagent_containers/food/snacks/poppypretzel, + /obj/item/storage/box/fancy/gum + ) + +/obj/random/mre/dessert/vegan + name = "random vegan MRE dessert" + desc = "This is a random vegan dessert for MREs." + spawnlist = list( + /obj/item/reagent_containers/food/snacks/candy, + /obj/item/reagent_containers/food/snacks/cb01, + /obj/item/reagent_containers/food/snacks/cb02, + /obj/item/reagent_containers/food/snacks/cb03, + /obj/item/reagent_containers/food/snacks/cb04, + /obj/item/reagent_containers/food/snacks/cb05, + /obj/item/reagent_containers/food/snacks/cb06, + /obj/item/reagent_containers/food/snacks/cb07, + /obj/item/reagent_containers/food/snacks/cb08, + /obj/item/reagent_containers/food/snacks/cb09, + /obj/item/reagent_containers/food/snacks/cb10, + /obj/item/reagent_containers/food/snacks/chocolatebar, + /obj/item/reagent_containers/food/snacks/donut/cherryjelly, + /obj/item/reagent_containers/food/snacks/plumphelmetbiscuit + ) + +/obj/random/mre/drink + name = "random MRE drink" + desc = "This is a random drink for MREs." + icon_state = "packet_small" + spawnlist = list( + /obj/item/reagent_containers/food/condiment/small/packet/coffee, + /obj/item/reagent_containers/food/condiment/small/packet/tea, + /obj/item/reagent_containers/food/condiment/small/packet/cocoa, + /obj/item/reagent_containers/food/condiment/small/packet/grape, + /obj/item/reagent_containers/food/condiment/small/packet/orange, + /obj/item/reagent_containers/food/condiment/small/packet/watermelon, + /obj/item/reagent_containers/food/condiment/small/packet/apple + ) + +/obj/random/mre/spread + name = "random MRE spread" + desc = "This is a random spread packet for MREs." + icon_state = "packet_small" + spawnlist = list( + /obj/item/reagent_containers/food/condiment/small/packet/jelly, + /obj/item/reagent_containers/food/condiment/small/packet/honey + ) + +/obj/random/mre/spread/vegan + name = "random vegan MRE spread" + desc = "This is a random vegan spread packet for MREs." + spawnlist = list(/obj/item/reagent_containers/food/condiment/small/packet/jelly) + +/obj/random/mre/sauce + name = "random MRE sauce" + desc = "This is a random sauce packet for MREs." + icon_state = "packet_small" + spawnlist = list( + /obj/item/reagent_containers/food/condiment/small/packet/salt, + /obj/item/reagent_containers/food/condiment/small/packet/pepper, + /obj/item/reagent_containers/food/condiment/small/packet/sugar, + /obj/item/reagent_containers/food/condiment/small/packet/capsaicin, + /obj/item/reagent_containers/food/condiment/small/packet/ketchup, + /obj/item/reagent_containers/food/condiment/small/packet/mayo, + /obj/item/reagent_containers/food/condiment/small/packet/soy + ) + +/obj/random/mre/sauce/vegan + spawnlist = list( + /obj/item/reagent_containers/food/condiment/small/packet/salt, + /obj/item/reagent_containers/food/condiment/small/packet/pepper, + /obj/item/reagent_containers/food/condiment/small/packet/sugar, + /obj/item/reagent_containers/food/condiment/small/packet/soy + ) + +/obj/random/mre/sauce/sugarfree + spawnlist = list( + /obj/item/reagent_containers/food/condiment/small/packet/salt, + /obj/item/reagent_containers/food/condiment/small/packet/pepper, + /obj/item/reagent_containers/food/condiment/small/packet/capsaicin, + /obj/item/reagent_containers/food/condiment/small/packet/ketchup, + /obj/item/reagent_containers/food/condiment/small/packet/mayo, + /obj/item/reagent_containers/food/condiment/small/packet/soy + ) + +/obj/random/mre/sauce/crayon + spawnlist = list( + /obj/item/reagent_containers/food/condiment/small/packet/crayon, + /obj/item/reagent_containers/food/condiment/small/packet/crayon/red, + /obj/item/reagent_containers/food/condiment/small/packet/crayon/orange, + /obj/item/reagent_containers/food/condiment/small/packet/crayon/yellow, + /obj/item/reagent_containers/food/condiment/small/packet/crayon/green, + /obj/item/reagent_containers/food/condiment/small/packet/crayon/blue, + /obj/item/reagent_containers/food/condiment/small/packet/crayon/purple, + /obj/item/reagent_containers/food/condiment/small/packet/crayon/grey, + /obj/item/reagent_containers/food/condiment/small/packet/crayon/brown + ) + +/obj/random/booze + name = "random alcohol bottle" + desc = "This is a random alcohol bottle." + icon = 'icons/obj/drinks.dmi' + icon_state = "broken_bottle" + spawnlist = list( + /obj/item/reagent_containers/food/drinks/bottle/gin, + /obj/item/reagent_containers/food/drinks/bottle/whiskey, + /obj/item/reagent_containers/food/drinks/bottle/vodka, + /obj/item/reagent_containers/food/drinks/bottle/tequila, + /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing, + /obj/item/reagent_containers/food/drinks/bottle/rum, + /obj/item/reagent_containers/food/drinks/bottle/champagne, + /obj/item/reagent_containers/food/drinks/bottle/vermouth, + /obj/item/reagent_containers/food/drinks/bottle/kahlua, + /obj/item/reagent_containers/food/drinks/bottle/cognac, + /obj/item/reagent_containers/food/drinks/bottle/wine, + /obj/item/reagent_containers/food/drinks/bottle/absinthe, + /obj/item/reagent_containers/food/drinks/bottle/melonliquor, + /obj/item/reagent_containers/food/drinks/bottle/pwine, + /obj/item/reagent_containers/food/drinks/bottle/brandy, + /obj/item/reagent_containers/food/drinks/bottle/guinness, + /obj/item/reagent_containers/food/drinks/bottle/drambuie, + /obj/item/reagent_containers/food/drinks/bottle/cremeyvette, + /obj/item/reagent_containers/food/drinks/bottle/cremewhite, + /obj/item/reagent_containers/food/drinks/bottle/chartreuseyellow, + /obj/item/reagent_containers/food/drinks/bottle/chartreusegreen, + /obj/item/reagent_containers/food/drinks/bottle/grenadine, + /obj/item/reagent_containers/food/drinks/bottle/bluecuracao, + /obj/item/reagent_containers/food/drinks/bottle/bitters, + /obj/item/reagent_containers/food/drinks/bottle/champagne, + /obj/item/reagent_containers/food/drinks/bottle/mintsyrup, + /obj/item/reagent_containers/food/drinks/bottle/sarezhiwine, + /obj/item/reagent_containers/food/drinks/bottle/small/beer, + /obj/item/reagent_containers/food/drinks/bottle/small/ale, + /obj/item/reagent_containers/food/drinks/bottle/small/xuizijuice + ) + +/obj/random/keg + name = "random alcohol keg" + desc = "Contains a random alcohol keg." + icon = 'icons/obj/reagent_dispensers.dmi' + icon_state = "beertankTEMP" + spawnlist = list( + /obj/structure/reagent_dispensers/keg/beerkeg = 2, + /obj/structure/reagent_dispensers/keg/xuizikeg = 0.5, + /obj/structure/reagent_dispensers/keg/mead = 0.5 + ) + +/obj/random/pizzabox + name = "random pizzabox" + desc = "Contains a random pizzabox." + icon = 'icons/obj/food.dmi' + icon_state = "pizzabox1" + spawnlist = list( + /obj/item/pizzabox/margherita, + /obj/item/pizzabox/vegetable, + /obj/item/pizzabox/mushroom, + /obj/item/pizzabox/meat, + /obj/item/pizzabox/pineapple, + /obj/item/pizzabox/pepperoni, + ) + +//Sometimes the chef will have spare oil in storage. +//Sometimes they wont, and will need to order it from cargo +//Variety is the spice of life! +/obj/random/cookingoil + name = "random cooking oil" + desc = "Has a 50% chance of spawning a tank of cooking oil, otherwise nothing." + icon = 'icons/obj/reagent_dispensers.dmi' + icon_state = "oiltank" + spawn_nothing_percentage = 50 + + spawnlist = list( + /obj/structure/reagent_dispensers/cookingoil + ) diff --git a/code/game/objects/random/loot.dm b/code/game/objects/random/loot.dm new file mode 100644 index 00000000000..c001d885366 --- /dev/null +++ b/code/game/objects/random/loot.dm @@ -0,0 +1,407 @@ +/obj/random/loot + name = "random maintenance loot" + desc = "Stuff for the maint-dwellers." + icon = 'icons/holidays/christmas/presents.dmi' + icon_state = "gift1" + problist = list( + /obj/item/bluespace_crystal/artificial = 0.1, + /obj/item/bodybag = 0.7, + /obj/item/clothing/accessory/storage/knifeharness = 0.3, + /obj/item/clothing/accessory/storage/webbing = 0.6, + /obj/item/clothing/glasses/sunglasses = 0.75, + /obj/item/clothing/glasses/welding = 0.75, + /obj/item/clothing/head/bearpelt = 0.4, + /obj/item/clothing/head/collectable/petehat = 0.1, + /obj/item/clothing/head/hardhat = 1.2, + /obj/item/clothing/head/helmet/augment = 0.1, + /obj/item/clothing/head/pirate = 0.2, + /obj/item/clothing/head/pumpkin/lantern = 0.4, + /obj/item/clothing/head/redcoat = 0.2, + /obj/item/clothing/head/richard = 0.3, + /obj/item/clothing/head/softcap/rainbow = 0.7, + /obj/item/clothing/head/syndicatefake = 0.5, + /obj/item/clothing/head/ushanka = 0.3, + /obj/item/clothing/head/witchwig = 0.5, + /obj/item/clothing/mask/balaclava = 0.75, + /obj/item/clothing/mask/fakemoustache = 0.4, + /obj/item/clothing/mask/gas = 1.25, + /obj/item/clothing/mask/gas/cyborg = 0.7, + /obj/item/clothing/mask/gas/mime = 0.1, + /obj/item/clothing/mask/gas/old = 0.75, + /obj/item/clothing/mask/gas/owl_mask = 0.5, + /obj/item/clothing/mask/gas/syndicate = 0.4, + /obj/item/clothing/mask/horsehead = 0.5, + /obj/item/clothing/mask/luchador = 0.1, + /obj/item/clothing/mask/luchador/rudos = 0.1, + /obj/item/clothing/mask/luchador/tecnicos = 0.1, + /obj/item/clothing/mask/muzzle = 0.2, + /obj/item/clothing/mask/pig = 0.3, + /obj/item/clothing/mask/smokable/cigarette/cigar/cohiba = 0.7, + /obj/item/clothing/mask/smokable/pipe/cobpipe = 0.5, + /obj/item/clothing/shoes/carp = 0.5, + /obj/item/clothing/shoes/combat = 0.2, + /obj/item/clothing/shoes/cyborg = 0.4, + /obj/item/clothing/shoes/galoshes = 0.6, + /obj/item/clothing/shoes/jackboots = 0.5, + /obj/item/clothing/shoes/rainbow = 0.5, + /obj/item/clothing/shoes/slippers/worn = 0.5, + /obj/item/clothing/shoes/winter = 0.3, + /obj/item/clothing/shoes/workboots = 0.75, + /obj/item/clothing/suit/ianshirt = 0.5, + /obj/item/clothing/suit/storage/hazardvest = 0.75, + /obj/item/clothing/suit/storage/toggle/leather_jacket/nanotrasen = 0.7, + /obj/item/clothing/suit/storage/vest = 0.2, + /obj/item/clothing/suit/syndicatefake = 0.6, + /obj/item/clothing/under/overalls = 1, + /obj/item/clothing/under/syndicate/tacticool = 0.4, + /obj/item/clothing/under/syndicate/tracksuit = 0.2, + /obj/item/device/firing_pin = 0.3, + /obj/item/device/firing_pin/clown = 0.01, + /obj/item/device/flashlight = 1, + /obj/item/device/flashlight/flare = 0.5, + /obj/item/device/flashlight/heavy = 0.5, + /obj/item/device/flashlight/lantern = 0.4, + /obj/item/device/flashlight/maglight = 0.4, + /obj/item/device/floor_painter = 0.6, + /obj/item/device/gps/engineering = 0.6, + /obj/item/device/kinetic_analyzer = 0.1, + /obj/item/device/laser_pointer/purple = 0.1, + /obj/item/device/light_meter = 0.1, + /obj/item/device/magnetic_lock/engineering = 0.3, + /obj/item/device/magnetic_lock/keypad = 0.1, + /obj/item/device/magnetic_lock/security = 0.3, + /obj/item/device/megaphone = 0.3, + /obj/item/device/price_scanner = 0.1, + /obj/item/device/taperecorder = 0.6, + /obj/item/device/uv_light = 0.1, + /obj/item/device/wormhole_jaunter = 0.1, + /obj/item/inflatable/door/ = 0.1, + /obj/item/seeds/random = 0.25, + /obj/item/stack/material/bronze{amount=10}, + /obj/item/banhammer = 0.05, + /obj/item/clothing/head/cone = 0.7, + /obj/item/contraband/poster = 1.3, + /obj/item/extinguisher = 1.3, + /obj/item/extinguisher/mini = 0.9, + /obj/item/flame/lighter = 0.9, + /obj/item/flame/lighter/zippo = 0.7, + /obj/item/grenade/chem_grenade/cleaner = 0.1, + /obj/item/grenade/smokebomb = 0.05, //We /tg/ now. + /obj/item/haircomb = 0.5, + /obj/item/inflatable_duck = 0.2, + /obj/item/lipstick = 0.6, + /obj/item/material/hook = 0.3, + /obj/item/material/knife/tacknife = 0.4, + /obj/item/mesmetron = 0.1, + /obj/item/pickaxe = 0.4, + /obj/item/razor = 0.5, + /obj/item/reagent_containers/extinguisher_refill = 0.1, + /obj/item/reagent_containers/extinguisher_refill/filled = 0.5, + /obj/item/reagent_containers/food/drinks/flask/lithium = 0.3, + /obj/item/reagent_containers/food/drinks/flask/shiny = 0.3, + /obj/item/reagent_containers/food/drinks/teapot = 0.4, + /obj/item/reagent_containers/cooking_container/board/bowl = 0.8, + /obj/item/reagent_containers/inhaler/hyperzine = 0.1, + /obj/item/reagent_containers/spray/cleaner = 0.6, + /obj/item/reagent_containers/spray/sterilizine = 0.4, + /obj/item/reagent_containers/spray/waterflower = 0.2, + /obj/item/shovel = 0.5, + /obj/item/spacecash/ewallet/lotto = 0.3, + /obj/item/staff/broom = 0.5, + /obj/item/storage/bag/plasticbag = 1, + /obj/item/storage/box/condimentbottles = 0.2, + /obj/item/storage/box/donkpockets = 0.6, + /obj/item/storage/box/drinkingglasses = 0.2, + /obj/item/storage/box/lights = 0.5, + /obj/item/storage/box/lights/colored/blue = 0.1, + /obj/item/storage/box/lights/colored/cyan = 0.1, + /obj/item/storage/box/lights/colored/green = 0.1, + /obj/item/storage/box/lights/colored/magenta = 0.1, + /obj/item/storage/box/lights/colored/red = 0.1, + /obj/item/storage/box/lights/colored/yellow = 0.1, + /obj/item/storage/box/lights/coloredmixed = 0.2, + /obj/item/storage/box/masks = 0.5, + /obj/item/storage/box/mousetraps = 0.3, + /obj/item/storage/box/pineapple = 0.1, + /obj/item/storage/box/smokebombs = 0.1, + /obj/item/storage/box/syringes = 0.3, + /obj/item/storage/box/fancy/cigarettes = 1.2, + /obj/item/storage/box/fancy/cigarettes/acmeco = 0.3, + /obj/item/storage/box/fancy/cigarettes/blank = 1, + /obj/item/storage/box/fancy/cigarettes/dromedaryco = 0.8, + /obj/item/storage/box/fancy/crayons = 0.5, + /obj/item/storage/wallet/random/ = 0.1, + /obj/item/trap/animal = 0.8, + /obj/random/arcade = 0.25, + /obj/random/backpack = 0.7, + /obj/random/belt = 0.9, + /obj/random/booze = 1.1, + /obj/random/chameleon = 0.5, + /obj/random/coin = 1.2, + /obj/random/colored_jumpsuit = 0.7, + /obj/random/contraband = 0.9, + /obj/random/firstaid = 0.4, + /obj/random/gloves = 2, + /obj/random/glowstick = 0.4, + /obj/random/hoodie = 0.5, + /obj/random/bandana = 0.5, + /obj/random/softcap = 0.5, + /obj/random/beret = 0.5, + /obj/random/junk = 0.4, + /obj/random/medical = 0.4, + /obj/random/powercell = 0.8, + /obj/random/smalltank = 0.5, + /obj/random/soap = 0.5, + /obj/random/spacecash = 0.3, + /obj/random/tech_supply = 1.2, + /obj/random/technology_scanner = 1, + /obj/random/tool = 1, + /obj/random/toolbox = 1, + /obj/random_produce = 0.25, + /obj/random/watches = 1, + /obj/random/wizard_dressup = 0.25, + /obj/item/device/synthesized_instrument/violin = 0.1, + /obj/item/device/synthesized_instrument/guitar = 1, + /obj/item/device/synthesized_instrument/trumpet = 0.25 + ) + +/obj/random/highvalue + name = "random high value item" + desc = "This is a random high value item." + icon = 'icons/obj/coins.dmi' + icon_state = "coin_diamond_heads" + problist = list( + /obj/random/telecrystals = 0.1, + /obj/item/gun/projectile/automatic/rifle/shotgun = 0.1, + /obj/random/melee = 0.3, + /obj/item/gun/energy/lawgiver = 0.1, + /obj/item/gun/projectile/automatic/terminator = 0.1, + /obj/item/device/personal_shield = 0.4, + /obj/random/safe_rig = 0.4, + /obj/item/gun/energy/disruptorpistol/magnum = 0.3, + /obj/item/gun/projectile/shotgun/pump/combat = 0.2, + /obj/item/clothing/glasses/thermal = 0.5 + ) + +/obj/random/highvalue/no_crystal + problist = list( + /obj/item/clothing/suit/armor/reactive = 0.5, + /obj/item/clothing/glasses/thermal = 0.5, + /obj/item/gun/projectile/automatic/rifle/shotgun = 0.5, + /obj/random/sword = 0.5, + /obj/item/gun/energy/lawgiver = 0.5, + /obj/item/melee/energy/axe = 0.5, + /obj/item/gun/projectile/automatic/terminator = 0.5, + /obj/item/rig/military = 0.5, + /obj/item/rig/unathi/fancy = 0.5, + /obj/item/rig/vaurca = 0.5, + /obj/item/anomaly_core = 0.5, + /obj/item/reagent_containers/food/drinks/bottle/vintage_wine = 0.1 + ) + +//Can be good loot for away sites as well as a guaranteed valuable for a merchant. +/obj/random/highvalue/no_weapon + problist = list( + /obj/item/bluespace_crystal = 1, + /obj/item/reagent_containers/food/drinks/bottle/vintage_wine = 0.1, + /obj/item/clothing/glasses/thermal = 0.5, + /obj/item/anomaly_core = 0.5, + /obj/item/rig/military = 0.2, + /obj/item/rig/unathi/fancy = 0.2, + /obj/item/rig/vaurca = 0.2, + /obj/item/stack/material/phoron/full = 0.1, + /obj/item/stack/material/plasteel/full = 0.8, + /obj/random/voidsuit = 1, + /obj/item/rfd/construction = 0.4, + /obj/item/vaurca/box = 0.1, + /obj/item/melee/vaurca/rock = 0.1, + /obj/item/device/personal_shield = 0.1, + /obj/item/storage/secure/briefcase/money = 0.1 + ) + +/obj/random/highvalue/cash + problist = list( + /obj/item/storage/secure/briefcase/money = 1, + /obj/item/stack/material/phoron/full = 0.1 + ) + +/obj/random/highvalue/safe + name = "random corporate safe high value item" + desc = "This is a random corporate safe high value item." + icon = 'icons/obj/coins.dmi' + icon_state = "coin_diamond_heads" + problist = list( + /obj/item/device/personal_shield = 0.4, + /obj/random/safe_rig = 0.4, + /obj/item/clothing/glasses/thermal = 0.3, + /obj/item/storage/toolbox/infiltration = 0.3, + /obj/random/melee/highvalue = 0.3, + /obj/item/gun/energy/disruptorpistol/magnum = 0.3, + /obj/item/gun/projectile/shotgun/pump/combat = 0.2, + /obj/item/gun/energy/lawgiver = 0.1, + /obj/item/gun/projectile/automatic/terminator = 0.1, + /obj/item/gun/projectile/automatic/rifle/shotgun = 0.1 + ) + +/obj/random/custom_ka + name = "random custom kinetic accelerator" + desc = "Contains random assemblies. The parts may not always be compatible with eachother." + icon = 'icons/obj/kinetic_accelerators.dmi' + icon_state = "frame01" + spawnlist = list( + /obj/item/toy/mech/honk + ) + has_postspawn = TRUE + +/obj/random/custom_ka/post_spawn(obj/thing) + var/list/frames = list( + /obj/item/gun/custom_ka/frame01 = 1, + /obj/item/gun/custom_ka/frame02 = 2, + /obj/item/gun/custom_ka/frame03 = 3, + /obj/item/gun/custom_ka/frame04 = 2, + /obj/item/gun/custom_ka/frame05 = 1 + ) + + var/list/cells = list( + /obj/item/custom_ka_upgrade/cells/cell01 = 2, + /obj/item/custom_ka_upgrade/cells/cell02 = 3, + /obj/item/custom_ka_upgrade/cells/cell03 = 2, + /obj/item/custom_ka_upgrade/cells/cell04 = 1, + /obj/item/custom_ka_upgrade/cells/cell05 = 1 + ) + + var/list/barrels = list( + /obj/item/custom_ka_upgrade/barrels/barrel01 = 2, + /obj/item/custom_ka_upgrade/barrels/barrel02 = 3, + /obj/item/custom_ka_upgrade/barrels/barrel03 = 2, + /obj/item/custom_ka_upgrade/barrels/barrel04 = 1, + /obj/item/custom_ka_upgrade/barrels/barrel05 = 1 + ) + + var/frame_type = pickweight(frames) + var/obj/item/gun/custom_ka/spawned_frame = new frame_type(thing.loc) + + var/cell_type = pickweight(cells) + spawned_frame.installed_cell = new cell_type(spawned_frame) + + var/barrel_type = pickweight(barrels) + spawned_frame.installed_barrel = new barrel_type(spawned_frame) + + spawned_frame.installed_upgrade_chip = new /obj/item/custom_ka_upgrade/upgrade_chips/capacity(spawned_frame) + + spawned_frame.update_icon() + spawned_frame.update_stats() + + qdel(thing) + +/obj/random/prebuilt_ka + name = "random prebuilt kinetic accelerator" + desc = "Contains working kinetic accelerators that were prebuilt in code." + icon = 'icons/obj/kinetic_accelerators.dmi' + icon_state = "frameA" + spawnlist = list( + /obj/item/gun/custom_ka/frame01/prebuilt = 2.5, + /obj/item/gun/custom_ka/frame02/prebuilt = 5, + /obj/item/gun/custom_ka/frame03/prebuilt = 10, + /obj/item/gun/custom_ka/frame04/prebuilt = 5, + /obj/item/gun/custom_ka/frame05/prebuilt = 2.5, + /obj/item/gun/custom_ka/frameA/prebuilt = 1, + /obj/item/gun/custom_ka/frameB/prebuilt = 1, + /obj/item/gun/custom_ka/frameC/prebuilt = 1, + /obj/item/gun/custom_ka/frameD/prebuilt = 1, + /obj/item/gun/custom_ka/frameF/prebuilt01 = 1, + /obj/item/gun/custom_ka/frameF/prebuilt02 = 1 + ) + +/obj/random/telecrystals + name = "random telecrystals" + desc = "Contains a random amount of telecrystals." + icon = 'icons/obj/telescience.dmi' + icon_state = "telecrystal" + spawnlist = list( + /obj/item/stack/telecrystal{amount = 10} = 0.5, + /obj/item/stack/telecrystal{amount = 15} = 0.4, + /obj/item/stack/telecrystal{amount = 20} = 0.3, + /obj/item/stack/telecrystal{amount = 30} = 0.2 + ) + +/obj/random/contraband + name = "random contraband" + desc = "This is some random contraband." + icon = 'icons/obj/cosmetics.dmi' + icon_state = "purplecomb" + problist = list( + /obj/item/storage/pill_bottle/mortaphenyl = 3, + /obj/item/storage/pill_bottle/happy = 2, + /obj/item/storage/pill_bottle/zoom = 2, + /obj/item/reagent_containers/glass/beaker/vial/random/toxin = 1, + /obj/item/contraband/poster = 5, + /obj/item/material/knife/butterfly = 2, + /obj/item/material/butterflyblade = 3, + /obj/item/material/butterflyhandle = 3, + /obj/item/material/wirerod = 3, + /obj/item/melee/baton/cattleprod = 1, + /obj/item/material/knife/tacknife = 1, + /obj/item/material/kitchen/utensil/knife/boot = 2, + /obj/item/storage/secure/briefcase/money = 1, + /obj/item/material/knife/butterfly/switchblade = 1, + /obj/item/reagent_containers/syringe/drugs = 1, + /obj/item/reagent_containers/food/snacks/grown/mushroom/libertycap = 2, + /obj/item/reagent_containers/food/snacks/grown/ambrosiavulgaris = 2, + /obj/item/reagent_containers/food/snacks/grown/ambrosiadeus = 1, + /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi = 1, + /obj/item/reagent_containers/food/snacks/grown/mushroom/destroyingangel = 1, + /obj/item/reagent_containers/food/snacks/grown/mushroom/ghostmushroom = 0.5, + /obj/item/seeds/ambrosiavulgarisseed = 2, + /obj/item/seeds/ambrosiadeusseed = 1, + /obj/item/clothing/mask/gas/voice = 1, + /obj/item/clothing/gloves/brassknuckles = 2, + /obj/item/reagent_containers/inhaler/space_drugs = 2, + /obj/item/reagent_containers/inhaler/xuxigas = 1 + ) + +/obj/random/coin + name = "random coin" + desc = "This is a random coin." + icon = 'icons/obj/coins.dmi' + icon_state = "coin__heads" + problist = list( + /obj/item/coin/iron = 5, + /obj/item/coin/silver = 3, + /obj/item/coin/gold = 0.7, + /obj/item/coin/phoron = 0.5, + /obj/item/coin/uranium = 0.5, + /obj/item/coin/platinum = 0.2, + /obj/item/coin/diamond = 0.1 + ) + +/obj/random/spacecash + name = "random credit chips" + desc = "This is a random credit chip." + icon = 'icons/obj/cash.dmi' + icon_state = "spacecash1" + problist = list( + /obj/item/spacecash/c1 = 6, + /obj/item/spacecash/c10 = 3, + /obj/item/spacecash/c20 = 2, + /obj/item/spacecash/c50 = 1, + /obj/item/spacecash/c100 = 0.3, + /obj/item/spacecash/c200 = 0.2, + /obj/item/spacecash/c1000 = 0.1 + ) + +/obj/random/finances + name = "random valued item" + desc = "Contains raw valued items like phoron, gold, and money." + spawnlist = list( + /obj/item/spacecash/bundle{worth = 5000} = 0.25, + /obj/item/spacecash/bundle{worth = 10000} = 0.5, + /obj/item/spacecash/bundle{worth = 25000} = 0.25, + /obj/item/stack/material/phoron{amount = 50} = 1, + /obj/item/stack/material/gold{amount = 50} = 1 + ) + + has_postspawn = TRUE + +/obj/random/finances/post_spawn(var/obj/item/spawned) + spawned.update_icon() diff --git a/code/game/objects/random/medical.dm b/code/game/objects/random/medical.dm new file mode 100644 index 00000000000..ba1d3fc7154 --- /dev/null +++ b/code/game/objects/random/medical.dm @@ -0,0 +1,52 @@ +/obj/random/medical + name = "random medical item" + desc = "This is a random medical item." + icon = 'icons/obj/item/stacks/medical.dmi' + icon_state = "brutepack" + spawn_nothing_percentage = 25 + problist = list( + /obj/item/stack/medical/bruise_pack = 4, + /obj/item/stack/medical/ointment = 4, + /obj/item/stack/medical/advanced/bruise_pack = 2, + /obj/item/stack/medical/advanced/ointment = 2, + /obj/item/stack/medical/splint = 1, + /obj/item/bodybag = 2, + /obj/item/bodybag/cryobag = 1, + /obj/item/auto_cpr = 1, + /obj/item/storage/pill_bottle/kelotane = 3, + /obj/item/storage/pill_bottle/bicaridine = 3, + /obj/item/storage/pill_bottle/antitox = 3, + /obj/item/storage/pill_bottle/mortaphenyl = 2, + /obj/item/storage/pill_bottle/antiparasitic = 1, + /obj/item/storage/pill_bottle/asinodryl = 1, + /obj/item/storage/pill_bottle/steramycin =1, + /obj/item/reagent_containers/syringe/dylovene = 3, + /obj/item/reagent_containers/syringe/inaprovaline = 3, + /obj/item/reagent_containers/syringe/antiparasitic = 1, + /obj/item/reagent_containers/syringe/antibiotic = 2, + /obj/item/reagent_containers/syringe/fluvectionem = 2, + /obj/item/reagent_containers/hypospray/autoinjector/coagzolug = 2, + /obj/item/reagent_containers/hypospray/autoinjector/hyronalin = 2, + /obj/item/reagent_containers/hypospray/autoinjector/sideeffectbgone = 1, + /obj/item/reagent_containers/inhaler/pneumalin = 1, + /obj/item/reagent_containers/inhaler/peridaxon = 1, + /obj/item/stack/nanopaste = 1 + ) + +/obj/random/firstaid + name = "random first aid kit" + desc = "This is a random first aid kit." + icon = 'icons/obj/storage.dmi' + icon_state = "firstaid" + problist = list( + /obj/item/storage/firstaid/regular = 4, + /obj/item/storage/firstaid/trauma = 3, + /obj/item/storage/firstaid/toxin = 3, + /obj/item/storage/firstaid/o2 = 3, + /obj/item/storage/firstaid/fire = 3, + /obj/item/storage/firstaid/radiation = 3, + /obj/item/storage/firstaid/stab = 2, + /obj/item/storage/firstaid/adv = 2, + /obj/item/storage/firstaid/combat = 1, + /obj/item/storage/firstaid/empty = 2 + ) diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm new file mode 100644 index 00000000000..d343e9a115c --- /dev/null +++ b/code/game/objects/random/misc.dm @@ -0,0 +1,456 @@ +/obj/random/smokable + name = "random smokable" + desc = "This is a random smoking item." + icon = 'icons/obj/cigs_lighters.dmi' + icon_state = "cigpacket" + problist = list( + /obj/item/storage/box/fancy/cigarettes = 30, + /obj/item/storage/box/fancy/cigarettes/blank = 5, + /obj/item/storage/box/fancy/cigarettes/acmeco = 2, + /obj/item/storage/box/fancy/cigarettes/dromedaryco = 10, + /obj/item/storage/box/fancy/cigarettes/cigar = 9, + /obj/item/storage/box/fancy/cigarettes/nicotine = 10, + /obj/item/storage/box/fancy/cigarettes/rugged = 10, + /obj/item/storage/box/fancy/cigarettes/pra = 5, + /obj/item/storage/box/fancy/cigarettes/dpra = 2, + /obj/item/storage/box/fancy/cigarettes/nka = 2, + /obj/item/storage/box/fancy/cigarettes/federation = 2, + /obj/item/storage/box/fancy/cigarettes/dyn = 2 + ) + +/obj/random/action_figure + name = "random action figure" + desc = "This is a random action figure." + icon = 'icons/obj/toy.dmi' + icon_state = "assistant" + spawnlist = list( + /obj/item/toy/figure/cmo, + /obj/item/toy/figure/assistant, + /obj/item/toy/figure/atmos, + /obj/item/toy/figure/bartender, + /obj/item/toy/figure/borg, + /obj/item/toy/figure/gardener, + /obj/item/toy/figure/captain, + /obj/item/toy/figure/cargotech, + /obj/item/toy/figure/ce, + /obj/item/toy/figure/chaplain, + /obj/item/toy/figure/chef, + /obj/item/toy/figure/chemist, + /obj/item/toy/figure/clown, + /obj/item/toy/figure/corgi, + /obj/item/toy/figure/detective, + /obj/item/toy/figure/dsquad, + /obj/item/toy/figure/engineer, + /obj/item/toy/figure/geneticist, + /obj/item/toy/figure/hop, + /obj/item/toy/figure/hos, + /obj/item/toy/figure/qm, + /obj/item/toy/figure/janitor, + /obj/item/toy/figure/agent, + /obj/item/toy/figure/librarian, + /obj/item/toy/figure/md, + /obj/item/toy/figure/mime, + /obj/item/toy/figure/miner, + /obj/item/toy/figure/ninja, + /obj/item/toy/figure/wizard, + /obj/item/toy/figure/rd, + /obj/item/toy/figure/roboticist, + /obj/item/toy/figure/scientist, + /obj/item/toy/figure/syndie, + /obj/item/toy/figure/secofficer, + /obj/item/toy/figure/warden, + /obj/item/toy/figure/psychologist, + /obj/item/toy/figure/paramedic, + /obj/item/toy/figure/ert + ) + +/obj/random/plushie + name = "random plushie" + desc = "This is a random plushie." + icon = 'icons/obj/toy.dmi' + icon_state = "nymphplushie" + spawnlist = list( + /obj/item/toy/plushie/ian, + /obj/item/toy/plushie/drone, + /obj/item/toy/plushie/carp, + /obj/item/toy/plushie/beepsky, + /obj/item/toy/plushie/ivancarp, + /obj/item/toy/plushie/nymph, + /obj/item/toy/plushie/mouse, + /obj/item/toy/plushie/kitten, + /obj/item/toy/plushie/lizard, + /obj/item/toy/plushie/farwa, + /obj/item/toy/plushie/squid, + /obj/item/toy/plushie/bear, + /obj/item/toy/plushie/bearfire, + /obj/item/toy/plushie/herring_gull + ) + +/obj/random/balloon + name = "random balloon" + desc = "This is a random balloon." + icon = 'icons/obj/toy.dmi' + icon_state = "balloon" + spawnlist = list( + /obj/item/toy/balloon/color = 7, + /obj/item/toy/balloon/latex = 1, + /obj/item/toy/balloon/latex/nitrile = 1, + /obj/item/toy/balloon/syndicate = 2, + /obj/item/toy/balloon/nanotrasen = 2, + /obj/item/toy/balloon/fellowship = 1, + /obj/item/toy/balloon/fellowshiphead = 1, + /obj/item/toy/balloon/contender = 1, + /obj/item/toy/balloon/contenderhead = 1, + /obj/item/toy/balloon/bat = 1, + /obj/item/toy/balloon/ghost = 1, + /obj/item/toy/balloon/xmastree = 1, + /obj/item/toy/balloon/candycane = 1 + ) + +/obj/random/desktoy + name = "random desk toy" + desc = "This is a random desk toy." + icon = 'icons/obj/toy.dmi' + icon_state = "dippybird" + spawnlist = list( + /obj/item/toy/desk/newtoncradle, + /obj/item/toy/desk/fan, + /obj/item/toy/desk/officetoy, + /obj/item/toy/desk/dippingbird + ) + +/obj/random/lavalamp + name = "random lava lamp" + desc = "This is a random lava lamp." + icon = 'icons/obj/lighting.dmi' + icon_state = "lavalamp" + spawnlist = list( + /obj/item/device/flashlight/lamp/lava, + /obj/item/device/flashlight/lamp/lava/red, + /obj/item/device/flashlight/lamp/lava/orange, + /obj/item/device/flashlight/lamp/lava/yellow, + /obj/item/device/flashlight/lamp/lava/green, + /obj/item/device/flashlight/lamp/lava/cyan, + /obj/item/device/flashlight/lamp/lava/blue, + /obj/item/device/flashlight/lamp/lava/purple, + /obj/item/device/flashlight/lamp/lava/pink + ) + +/obj/random/glowstick + name = "random glowstick" + desc = "This is a random glowstick." + icon = 'icons/obj/lighting.dmi' + icon_state = "glowstick" + spawnlist = list( + /obj/item/device/flashlight/flare/glowstick, + /obj/item/device/flashlight/flare/glowstick/red, + /obj/item/device/flashlight/flare/glowstick/blue, + /obj/item/device/flashlight/flare/glowstick/orange, + /obj/item/device/flashlight/flare/glowstick/yellow + ) + +/obj/random/arcade + name = "random arcade loot" + desc = "Arcade loot!" + icon = 'icons/obj/items.dmi' + icon_state = "gift3" + spawnlist = list( + /obj/item/storage/box/snappops = 11, + /obj/item/clothing/under/syndicate/tacticool = 5, + /obj/item/toy/sword = 22, + /obj/item/gun/projectile/revolver/capgun = 11, + /obj/item/toy/crossbow = 11, + /obj/item/storage/box/fancy/crayons = 11, + /obj/item/toy/spinningtoy = 11, + /obj/item/toy/mech/ripley = 1, + /obj/item/toy/mech/fireripley = 1, + /obj/item/toy/mech/deathripley = 1, + /obj/item/toy/mech/gygax = 1, + /obj/item/toy/mech/durand = 1, + /obj/item/toy/mech/honk = 1, + /obj/item/toy/mech/marauder = 1, + /obj/item/toy/mech/seraph = 1, + /obj/item/toy/mech/mauler = 1, + /obj/item/toy/mech/odysseus = 1, + /obj/item/toy/mech/phazon = 1, + /obj/item/reagent_containers/spray/waterflower = 5, + /obj/random/action_figure = 11, + /obj/random/plushie = 44, + /obj/item/toy/cultsword = 5, + /obj/random/balloon = 22, + /obj/item/toy/katana = 11, + /obj/item/toy/bosunwhistle = 5, + /obj/item/storage/belt/champion = 11, + /obj/item/pen/invisible = 5, + /obj/item/grenade/fake = 1, + /obj/item/bikehorn = 11, + /obj/item/clothing/mask/fakemoustache = 11, + /obj/item/clothing/mask/gas/mime = 11, + /obj/item/clothing/shoes/carp = 9, + /obj/item/gun/energy/wand/toy = 5, + /obj/item/device/binoculars = 11, + /obj/item/device/megaphone = 11, + /obj/item/eightball = 11, + /obj/item/eightball/haunted = 1, + /obj/item/eightball/broken = 1, + /obj/item/spirit_board = 5, + /obj/item/device/laser_pointer = 1, + /obj/item/clothing/accessory/badge/press/plastic = 2, + /obj/item/storage/box/partypopper = 11 + ) + +/obj/random/arcade/orion + name = "random arcade loot for orion trails" + desc = "Arcade loot for orion trails aracde machine!" + icon = 'icons/obj/items.dmi' + icon_state = "gift3" + spawnlist = list( + /obj/item/clothing/under/syndicate/tacticool = 7, + /obj/item/toy/sword = 22, + /obj/item/gun/projectile/revolver/capgun = 11, + /obj/item/gun/bang = 22, + /obj/item/toy/crossbow = 11, + /obj/random/action_figure = 11, + /obj/item/toy/cultsword = 7, + /obj/random/balloon = 22, + /obj/item/toy/katana = 11, + /obj/random/plushie = 55, + /obj/item/storage/belt/champion = 11, + /obj/item/pen/invisible = 10, + /obj/item/grenade/fake = 7, + /obj/item/gun/energy/wand/toy = 7, + /obj/item/device/binoculars = 11, + /obj/item/device/megaphone = 11, + /obj/item/eightball = 11, + /obj/item/eightball/haunted = 5, + /obj/item/spirit_board = 5, + /obj/item/clothing/accessory/badge/press/plastic = 2 + ) + +/obj/random/animal_crate + name = "random animal" + desc = "Contains a random crate with an animal." + icon = 'icons/obj/structures.dmi' + icon_state = "densecrate" + spawnlist = list( + /obj/structure/largecrate/animal/corgi = 3, + /obj/structure/largecrate/animal/cow = 4, + /obj/structure/largecrate/animal/goat = 3, + /obj/structure/largecrate/animal/cat = 2, + /obj/structure/largecrate/animal/chick = 4, + /obj/structure/largecrate/animal/adhomai = 0.5, + /obj/structure/largecrate/animal/adhomai/fatshouter = 0.5, + /obj/structure/largecrate/animal/adhomai/rafama = 0.5, + /obj/structure/largecrate/animal/adhomai/schlorrgo = 0.2, + /obj/structure/largecrate/animal/hakhma = 0.5 + ) + +/obj/random/random_flag + name = "random flag" + desc = "Contains a random boxed flag or banner." + icon = 'icons/obj/decals.dmi' + icon_state = "flag_boxed" + spawnlist = list( + /obj/item/flag/biesel, + /obj/item/flag/biesel/l, + /obj/item/flag/dominia, + /obj/item/flag/dominia/l, + /obj/item/flag/dpra, + /obj/item/flag/dpra/l, + /obj/item/flag/elyra, + /obj/item/flag/elyra/l, + /obj/item/flag/eridani, + /obj/item/flag/eridani/l, + /obj/item/flag/hegemony, + /obj/item/flag/hegemony/l, + /obj/item/flag/heph, + /obj/item/flag/heph/l, + /obj/item/flag/nralakk, + /obj/item/flag/nralakk/l, + /obj/item/flag/nanotrasen, + /obj/item/flag/nanotrasen/l, + /obj/item/flag/nka, + /obj/item/flag/nka/l, + /obj/item/flag/pra, + /obj/item/flag/pra/l, + /obj/item/flag/sol, + /obj/item/flag/sol/l, + /obj/item/flag/sedantis, + /obj/item/flag/sedantis/l, + /obj/item/flag/zenghu, + /obj/item/flag/zenghu/l, + /obj/item/flag/coalition, + /obj/item/flag/coalition/l + ) + +/obj/random/gift + name = "random gift" + desc = "Contains a randomly sized gift." + icon = 'icons/holidays/christmas/presents.dmi' + icon_state = "gift1" + spawnlist = list( + /obj/item/xmasgift = 0.5, + /obj/item/xmasgift/medium = 0.3, + /obj/item/xmasgift/large = 0.2 + ) + +/obj/random/junk + name = "random trash" + desc = "This is toss." + icon = 'icons/obj/trash.dmi' + icon_state = "koisbar" + spawn_nothing_percentage = 5 + problist = list( + /obj/item/trash/koisbar = 0.5, + /obj/item/trash/raisins = 1, + /obj/item/trash/candy = 1, + /obj/item/trash/cheesie = 2, + /obj/item/trash/chips = 0.75, + /obj/item/trash/popcorn = 0.75, + /obj/item/trash/sosjerky = 0.5, + /obj/item/trash/syndi_cakes = 0.25, + /obj/item/trash/waffles = 0.75, + /obj/item/trash/plate = 0.75, + /obj/item/trash/snack_bowl = 0.75, + /obj/item/trash/pistachios = 0.75, + /obj/item/trash/semki = 0.5, + /obj/item/trash/tray = 0.75, + /obj/item/trash/candle = 0.75, + /obj/item/trash/liquidfood = 0.75, + /obj/item/trash/tastybread= 0.75, + /obj/item/trash/meatsnack = 0.5, + /obj/item/trash/maps = 0.5, + /obj/item/trash/tuna = 0.5, + /obj/effect/decal/cleanable/ash = 1.5, + /obj/effect/decal/cleanable/dirt = 2, + /obj/effect/decal/cleanable/flour = 1, + /obj/effect/decal/cleanable/greenglow = 1, + /obj/effect/decal/cleanable/molten_item = 1, + /obj/effect/decal/cleanable/vomit = 2, + /obj/effect/decal/cleanable/generic = 2, + /obj/effect/decal/cleanable/liquid_fuel = 0.5, + /obj/effect/decal/cleanable/mucus = 1.5, + /obj/effect/decal/cleanable/blood/drip = 1.5, + /obj/item/storage/box = 1, + /obj/item/material/shard = 1, + /obj/item/material/shard/shrapnel = 1, + /obj/item/broken_bottle = 1, + /obj/item/stack/material/cardboard = 1, + /obj/item/stack/rods = 1, + /obj/item/corncob = 1, + /obj/item/paper/crumpled = 1, + /obj/item/inflatable/torn = 1, + /obj/item/ammo_casing/c45/rubber = 0.5, + /obj/item/ammo_casing/c9mm/rubber = 0.5, + /obj/item/ammo_casing/c45/flash = 0.5, + /obj/item/ammo_casing/shotgun/beanbag = 0.5, + /obj/item/flame/lighter/random = 0.25, + /obj/item/lipstick/random = 0.25, + /obj/item/reagent_containers/glass/beaker/vial/random = 0.1, + /obj/item/towel/random = 0.1, + /obj/item/device/flashlight/flare/glowstick/random = 0.25, + /obj/item/stack/cable_coil/random/ = 0.1, + /obj/item/bananapeel = 0.1, //honk, + /obj/item/key = 0.1, + /obj/item/reagent_containers/blood/ripped = 0.1, + /obj/item/shreddedp = 0.1 + ) + +/obj/random/dirt_75 + name = "dirt 75%" + desc = "75% chance of spawning dirt, otherwise nothing." + icon = 'icons/effects/effects.dmi' + icon_state = "dirt" + layer = ABOVE_CABLE_LAYER // just so it appears under structures in map editor + spawn_nothing_percentage = 25 + spawnlist = list( + /obj/effect/decal/cleanable/dirt + ) + +/obj/random/vendor + name = "random vendor" + var/depleted = FALSE + var/scan_id = TRUE // Should the spawned vendor check IDs + problist = list( + /obj/machinery/vending/boozeomat = 1, + /obj/machinery/vending/coffee = 1, + /obj/machinery/vending/snack = 1, + /obj/machinery/vending/cola = 1, + /obj/machinery/vending/cigarette = 1, + /obj/machinery/vending/medical = 1.2, + /obj/machinery/vending/phoronresearch = 0.7, + /obj/machinery/vending/security = 0.3, + /obj/machinery/vending/hydronutrients = 1, + /obj/machinery/vending/hydroseeds = 1, + /obj/machinery/vending/dinnerware = 1, + /obj/machinery/vending/sovietsoda = 2, + /obj/machinery/vending/tool = 1, + /obj/machinery/vending/engivend = 0.6, + /obj/machinery/vending/engineering = 1, + /obj/machinery/vending/robotics = 1, + /obj/machinery/vending/tacticool = 0.2, + /obj/machinery/vending/tacticool/ert = 0.1 + ) + has_postspawn = TRUE + +/obj/random/vendor/Initialize(mapload, _depleted = 0) + depleted = _depleted + . = ..() + +/obj/random/vendor/post_spawn(obj/machinery/vending/V) + if (!depleted) + return + + //Greatly reduce the contents. it will have 0-20% of what it usually has + for (var/content in V.products) + if (prob(40)) + V.products[content] = 0 //40% chance to completely lose an item + else + var/multiplier = rand(0,20) //Else, we reduce it to a very low percentage + if (multiplier) + multiplier /= 100 + + V.products[content] *= multiplier + if (V.products[content] < 1 && V.products[content] > 0) //But we'll usually have at least 1 left + V.products[content] = 0 + + // Clamp to an integer so we don't get 0.78 of a screwdriver. + V.products[content] = round(V.products[content]) + + V.scan_id &= scan_id + +/obj/random/smalltank + name = "random small tank" + +/obj/random/smalltank/item_to_spawn() + if (prob(40)) + return /obj/item/tank/emergency_oxygen + else if (prob(60)) + return /obj/item/tank/emergency_oxygen/engi + else + return /obj/item/tank/emergency_oxygen/double + +/obj/random/pottedplant + name = "random potted plant" + desc = "Spawns a random potted plant." + icon = 'icons/obj/plants.dmi' + icon_state = "plant-26" + spawn_nothing_percentage = 1 + +/obj/random/pottedplant/spawn_item() + var/obj/structure/flora/pottedplant/P = null + var/list/unwanted = list( + /obj/structure/flora/pottedplant, // don't want parent base obj + /obj/structure/flora/pottedplant/random, // depreciated + /obj/structure/flora/pottedplant/dead2, // does not fit horizon's aesthetic + /obj/structure/flora/pottedplant/empty + ) + var/list/rare = list( + /obj/structure/flora/pottedplant/eye, + /obj/structure/flora/pottedplant/dead + ) + while(!P) + P = pick(typesof(/obj/structure/flora/pottedplant)) + if(P in unwanted || ((P in rare) && prob(50))) + P = null + . = new P(loc) diff --git a/code/game/objects/random/produce.dm b/code/game/objects/random/produce.dm index 1b78599a964..12d2ea69c8c 100644 --- a/code/game/objects/random/produce.dm +++ b/code/game/objects/random/produce.dm @@ -66,4 +66,36 @@ "cacao" = 0.5, "cherry" = 0.25, "onion" = 0.5 - ) \ No newline at end of file + ) + +/obj/random/seed + name = "random seed" + desc = "This is a random normal seed." + icon = 'icons/obj/seeds.dmi' + icon_state = "random" + spawnlist = list( + /obj/item/seeds/limeseed, + /obj/item/seeds/lemonseed, + /obj/item/seeds/orangeseed, + /obj/item/seeds/grapeseed, + /obj/item/seeds/berryseed, + /obj/item/seeds/appleseed, + /obj/item/seeds/bananaseed, + /obj/item/seeds/watermelonseed, + /obj/item/seeds/pumpkinseed, + /obj/item/seeds/wheatseed, + /obj/item/seeds/cornseed, + /obj/item/seeds/riceseed, + /obj/item/seeds/sugarcaneseed, + /obj/item/seeds/carrotseed, + /obj/item/seeds/garlicseed, + /obj/item/seeds/onionseed, + /obj/item/seeds/potatoseed, + /obj/item/seeds/whitebeetseed, + /obj/item/seeds/tomatoseed, + /obj/item/seeds/chiliseed, + /obj/item/seeds/eggplantseed, + /obj/item/seeds/peanutseed, + /obj/item/seeds/soyaseed, + /obj/item/seeds/cabbageseed + ) diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index 4a461de79b4..ededb9ade2d 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -54,2134 +54,3 @@ /obj/random/single/item_to_spawn() return ispath(spawn_object) ? spawn_object : text2path(spawn_object) - -/obj/random/tool - name = "random tool" - desc = "This is a random tool" - icon = 'icons/obj/tools.dmi' - icon_state = "wrench" - spawnlist = list( - /obj/item/screwdriver, - /obj/item/wirecutters, - /obj/item/weldingtool, - /obj/item/crowbar, - /obj/item/wrench, - /obj/item/hammer, - /obj/item/device/flashlight - ) - -/obj/random/technology_scanner - name = "random scanner" - desc = "This is a random technology scanner." - icon = 'icons/obj/device.dmi' - icon_state = "atmos" - problist = list( - /obj/item/device/t_scanner = 5, - /obj/item/device/radio = 2, - /obj/item/device/analyzer = 5 - ) - -/obj/random/powercell - name = "random powercell" - desc = "This is a random powercell." - icon = 'icons/obj/power.dmi' - icon_state = "cell" - problist = list( - /obj/item/cell/crap = 10, - /obj/item/cell = 40, - /obj/item/cell/high = 40, - /obj/item/cell/super = 9, - /obj/item/cell/hyper = 1 - ) - -/obj/random/bomb_supply - name = "bomb supply" - desc = "This is a random bomb supply." - icon = 'icons/obj/assemblies/new_assemblies.dmi' - icon_state = "signaller" - problist = list( - /obj/item/device/assembly/igniter = 2, - /obj/item/device/assembly/prox_sensor = 2, - /obj/item/device/assembly/signaler = 2, - /obj/item/device/multitool = 1, - /obj/item/device/transfer_valve = 0.5 - ) - -/obj/random/toolbox - name = "random toolbox" - desc = "This is a random toolbox." - icon = 'icons/obj/storage/toolbox.dmi' - icon_state = "red" - spawnlist = list( - /obj/item/storage/toolbox/mechanical = 3, - /obj/item/storage/toolbox/electrical = 2, - /obj/item/storage/toolbox/emergency = 1 - ) - -/obj/random/tech_supply - name = "random tech supply" - desc = "This is a random piece of technology supplies." - icon = 'icons/obj/power.dmi' - icon_state = "cell" -// spawn_nothing_percentage = 50 - problist = list( - /obj/random/powercell = 3, - /obj/random/technology_scanner = 2, - /obj/item/stack/packageWrap = 1, - /obj/random/bomb_supply = 2, - /obj/item/extinguisher = 1, - /obj/item/clothing/gloves/yellow/budget = 1, - /obj/item/stack/cable_coil = 3, - /obj/random/toolbox = 2, - /obj/item/storage/belt/utility = 2, - /obj/random/tool = 5, - /obj/item/tape_roll = 2 - ) - -/obj/random/medical - name = "Random Medicine" - desc = "This is a random medical item." - icon = 'icons/obj/item/stacks/medical.dmi' - icon_state = "brutepack" - spawn_nothing_percentage = 25 - problist = list( - /obj/item/stack/medical/bruise_pack = 4, - /obj/item/stack/medical/ointment = 4, - /obj/item/stack/medical/advanced/bruise_pack = 2, - /obj/item/stack/medical/advanced/ointment = 2, - /obj/item/stack/medical/splint = 1, - /obj/item/bodybag = 2, - /obj/item/bodybag/cryobag = 1, - /obj/item/auto_cpr = 1, - /obj/item/storage/pill_bottle/kelotane = 3, - /obj/item/storage/pill_bottle/bicaridine = 3, - /obj/item/storage/pill_bottle/antitox = 3, - /obj/item/storage/pill_bottle/mortaphenyl = 2, - /obj/item/storage/pill_bottle/antiparasitic = 1, - /obj/item/storage/pill_bottle/asinodryl = 1, - /obj/item/storage/pill_bottle/steramycin =1, - /obj/item/reagent_containers/syringe/dylovene = 3, - /obj/item/reagent_containers/syringe/inaprovaline = 3, - /obj/item/reagent_containers/syringe/antiparasitic = 1, - /obj/item/reagent_containers/syringe/antibiotic = 2, - /obj/item/reagent_containers/syringe/fluvectionem = 2, - /obj/item/reagent_containers/hypospray/autoinjector/coagzolug = 2, - /obj/item/reagent_containers/hypospray/autoinjector/hyronalin = 2, - /obj/item/reagent_containers/hypospray/autoinjector/sideeffectbgone = 1, - /obj/item/reagent_containers/inhaler/pneumalin = 1, - /obj/item/reagent_containers/inhaler/peridaxon = 1, - /obj/item/stack/nanopaste = 1 - ) - -/obj/random/firstaid - name = "Random First Aid Kit" - desc = "This is a random first aid kit." - icon = 'icons/obj/storage.dmi' - icon_state = "firstaid" - problist = list( - /obj/item/storage/firstaid/regular = 4, - /obj/item/storage/firstaid/trauma = 3, - /obj/item/storage/firstaid/toxin = 3, - /obj/item/storage/firstaid/o2 = 3, - /obj/item/storage/firstaid/fire = 3, - /obj/item/storage/firstaid/radiation = 3, - /obj/item/storage/firstaid/stab = 2, - /obj/item/storage/firstaid/adv = 2, - /obj/item/storage/firstaid/combat = 1, - /obj/item/storage/firstaid/empty = 2 - ) - -/obj/random/contraband - name = "Random Illegal Item" - desc = "Hot Stuff." - icon = 'icons/obj/cosmetics.dmi' - icon_state = "purplecomb" -// spawn_nothing_percentage = 50 - problist = list( - /obj/item/storage/pill_bottle/mortaphenyl = 3, - /obj/item/storage/pill_bottle/happy = 2, - /obj/item/storage/pill_bottle/zoom = 2, - /obj/item/reagent_containers/glass/beaker/vial/random/toxin = 1, - /obj/item/contraband/poster = 5, - /obj/item/material/knife/butterfly = 2, - /obj/item/material/butterflyblade = 3, - /obj/item/material/butterflyhandle = 3, - /obj/item/material/wirerod = 3, - /obj/item/melee/baton/cattleprod = 1, - /obj/item/material/knife/tacknife = 1, - /obj/item/material/kitchen/utensil/knife/boot = 2, - /obj/item/storage/secure/briefcase/money = 1, - /obj/item/material/knife/butterfly/switchblade = 1, - /obj/item/reagent_containers/syringe/drugs = 1, - /obj/item/reagent_containers/food/snacks/grown/mushroom/libertycap = 2, - /obj/item/reagent_containers/food/snacks/grown/ambrosiavulgaris = 2, - /obj/item/reagent_containers/food/snacks/grown/ambrosiadeus = 1, - /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi = 1, - /obj/item/reagent_containers/food/snacks/grown/mushroom/destroyingangel = 1, - /obj/item/reagent_containers/food/snacks/grown/mushroom/ghostmushroom = 0.5, - /obj/item/seeds/ambrosiavulgarisseed = 2, - /obj/item/seeds/ambrosiadeusseed = 1, - /obj/item/clothing/mask/gas/voice = 1, - /obj/item/clothing/gloves/brassknuckles = 2, - /obj/item/reagent_containers/inhaler/space_drugs = 2, - /obj/item/reagent_containers/inhaler/xuxigas = 1 - ) - -/obj/random/smokable - name = "random smokable" - desc = "This is a random smoking item." - icon = 'icons/obj/cigs_lighters.dmi' - icon_state = "cigpacket" - problist = list( - /obj/item/storage/box/fancy/cigarettes = 30, - /obj/item/storage/box/fancy/cigarettes/blank = 5, - /obj/item/storage/box/fancy/cigarettes/acmeco = 2, - /obj/item/storage/box/fancy/cigarettes/dromedaryco = 10, - /obj/item/storage/box/fancy/cigarettes/cigar = 9, - /obj/item/storage/box/fancy/cigarettes/nicotine = 10, - /obj/item/storage/box/fancy/cigarettes/rugged = 10, - /obj/item/storage/box/fancy/cigarettes/pra = 5, - /obj/item/storage/box/fancy/cigarettes/dpra = 2, - /obj/item/storage/box/fancy/cigarettes/nka = 2, - /obj/item/storage/box/fancy/cigarettes/federation = 2, - /obj/item/storage/box/fancy/cigarettes/dyn = 2 - ) - -/obj/random/energy - name = "Random Energy Weapon" - desc = "This is a random security weapon." - icon = 'icons/obj/guns/ecarbine.dmi' - icon_state = "energykill100" - problist = list( - /obj/item/gun/energy/rifle/laser = 2, - /obj/item/gun/energy/gun = 2, - /obj/item/gun/energy/stunrevolver = 1 - ) - -/obj/random/projectile - name = "Random Projectile Weapon" - desc = "This is a random security weapon." - icon = 'icons/obj/guns/cshotgun.dmi' - icon_state = "cshotgun" - problist = list( - /obj/item/gun/projectile/shotgun/pump = 3, - /obj/item/gun/projectile/automatic/wt550 = 2, - /obj/item/gun/projectile/shotgun/pump/combat = 1 - ) - -/obj/random/handgun - name = "Random Handgun" - desc = "This is a random security sidearm." - icon = 'icons/obj/guns/secgun.dmi' - icon_state = "secgun" - problist = list( - /obj/item/gun/projectile/sec = 3, - /obj/item/gun/projectile/sec/wood = 1 - ) - -/obj/random/ammo - name = "Random Ammunition" - desc = "This is random ammunition." - icon = 'icons/obj/ammo.dmi' - icon_state = "45-10" - problist = list( - /obj/item/storage/box/beanbags = 6, - /obj/item/storage/box/shotgunammo = 2, - /obj/item/storage/box/shotgunshells = 4, - /obj/item/storage/box/stunshells = 1, - /obj/item/ammo_magazine/c45m = 2, - /obj/item/ammo_magazine/c45m/rubber = 4, - /obj/item/ammo_magazine/c45m/flash = 4, - /obj/item/ammo_magazine/mc9mmt = 2, - /obj/item/ammo_magazine/mc9mmt/rubber = 6 - ) - -/obj/random/action_figure - name = "random action figure" - desc = "This is a random action figure." - icon = 'icons/obj/toy.dmi' - icon_state = "assistant" - spawnlist = list( - /obj/item/toy/figure/cmo, - /obj/item/toy/figure/assistant, - /obj/item/toy/figure/atmos, - /obj/item/toy/figure/bartender, - /obj/item/toy/figure/borg, - /obj/item/toy/figure/gardener, - /obj/item/toy/figure/captain, - /obj/item/toy/figure/cargotech, - /obj/item/toy/figure/ce, - /obj/item/toy/figure/chaplain, - /obj/item/toy/figure/chef, - /obj/item/toy/figure/chemist, - /obj/item/toy/figure/clown, - /obj/item/toy/figure/corgi, - /obj/item/toy/figure/detective, - /obj/item/toy/figure/dsquad, - /obj/item/toy/figure/engineer, - /obj/item/toy/figure/geneticist, - /obj/item/toy/figure/hop, - /obj/item/toy/figure/hos, - /obj/item/toy/figure/qm, - /obj/item/toy/figure/janitor, - /obj/item/toy/figure/agent, - /obj/item/toy/figure/librarian, - /obj/item/toy/figure/md, - /obj/item/toy/figure/mime, - /obj/item/toy/figure/miner, - /obj/item/toy/figure/ninja, - /obj/item/toy/figure/wizard, - /obj/item/toy/figure/rd, - /obj/item/toy/figure/roboticist, - /obj/item/toy/figure/scientist, - /obj/item/toy/figure/syndie, - /obj/item/toy/figure/secofficer, - /obj/item/toy/figure/warden, - /obj/item/toy/figure/psychologist, - /obj/item/toy/figure/paramedic, - /obj/item/toy/figure/ert - ) - -/obj/random/plushie - name = "random plushie" - desc = "This is a random plushie." - icon = 'icons/obj/toy.dmi' - icon_state = "nymphplushie" - spawnlist = list( - /obj/item/toy/plushie/ian, - /obj/item/toy/plushie/drone, - /obj/item/toy/plushie/carp, - /obj/item/toy/plushie/beepsky, - /obj/item/toy/plushie/ivancarp, - /obj/item/toy/plushie/nymph, - /obj/item/toy/plushie/mouse, - /obj/item/toy/plushie/kitten, - /obj/item/toy/plushie/lizard, - /obj/item/toy/plushie/farwa, - /obj/item/toy/plushie/squid, - /obj/item/toy/plushie/bear, - /obj/item/toy/plushie/bearfire - ) - -/obj/random/balloon - name = "random balloon" - desc = "This is a random balloon." - icon = 'icons/obj/toy.dmi' - icon_state = "balloon" - spawnlist = list( - /obj/item/toy/balloon/color = 7, - /obj/item/toy/balloon/latex = 1, - /obj/item/toy/balloon/latex/nitrile = 1, - /obj/item/toy/balloon/syndicate = 2, - /obj/item/toy/balloon/nanotrasen = 2, - /obj/item/toy/balloon/fellowship = 1, - /obj/item/toy/balloon/fellowshiphead = 1, - /obj/item/toy/balloon/contender = 1, - /obj/item/toy/balloon/contenderhead = 1, - /obj/item/toy/balloon/bat = 1, - /obj/item/toy/balloon/ghost = 1, - /obj/item/toy/balloon/xmastree = 1, - /obj/item/toy/balloon/candycane = 1 - ) - -/obj/random/desktoy - name = "random desk toy" - desc = "This is a random desk toy." - icon = 'icons/obj/toy.dmi' - icon_state = "dippybird" - spawnlist = list( - /obj/item/toy/desk/newtoncradle, - /obj/item/toy/desk/fan, - /obj/item/toy/desk/officetoy, - /obj/item/toy/desk/dippingbird - ) - -/obj/random/lavalamp - name = "random lava lamp" - desc = "This is a random lava lamp." - icon = 'icons/obj/lighting.dmi' - icon_state = "lavalamp" - spawnlist = list( - /obj/item/device/flashlight/lamp/lava, - /obj/item/device/flashlight/lamp/lava/red, - /obj/item/device/flashlight/lamp/lava/orange, - /obj/item/device/flashlight/lamp/lava/yellow, - /obj/item/device/flashlight/lamp/lava/green, - /obj/item/device/flashlight/lamp/lava/cyan, - /obj/item/device/flashlight/lamp/lava/blue, - /obj/item/device/flashlight/lamp/lava/purple, - /obj/item/device/flashlight/lamp/lava/pink - ) - -/obj/random/smalltank - name = "random small tank" - -/obj/random/smalltank/item_to_spawn() - if (prob(40)) - return /obj/item/tank/emergency_oxygen - else if (prob(60)) - return /obj/item/tank/emergency_oxygen/engi - else - return /obj/item/tank/emergency_oxygen/double - -/obj/random/belt - name = "random belt" - problist = list( - /obj/item/storage/belt/utility = 1, - /obj/item/storage/belt/medical = 0.4, - /obj/item/storage/belt/medical/first_responder = 0.4, - /obj/item/storage/belt/medical/first_responder/combat = 0.1, - /obj/item/storage/belt/security/tactical = 0.1, - /obj/item/storage/belt/military = 0.1, - /obj/item/storage/belt/custodial = 0.4 - ) - -// Spawns a random backpack. -// Novelty and rare backpacks have lower weights. -/obj/random/backpack - name = "random backpack" - problist = list( - /obj/item/storage/backpack = 3, - /obj/item/storage/backpack/cultpack = 2, - /obj/item/storage/backpack/medic = 3, - /obj/item/storage/backpack/security = 3, - /obj/item/storage/backpack/captain = 2, - /obj/item/storage/backpack/industrial = 3, - /obj/item/storage/backpack/toxins = 3, - /obj/item/storage/backpack/hydroponics = 3, - /obj/item/storage/backpack/pharmacy = 3, - /obj/item/storage/backpack/cloak = 2, - /obj/item/storage/backpack/syndie = 1, - /obj/item/storage/backpack/satchel = 3, - /obj/item/storage/backpack/satchel/leather = 3, - /obj/item/storage/backpack/satchel/eng = 3, - /obj/item/storage/backpack/satchel/med = 3, - /obj/item/storage/backpack/satchel/pharm = 3, - /obj/item/storage/backpack/satchel/tox = 3, - /obj/item/storage/backpack/satchel/sec = 3, - /obj/item/storage/backpack/satchel/hyd = 3, - /obj/item/storage/backpack/satchel/cap = 1, - /obj/item/storage/backpack/satchel/syndie = 1, - /obj/item/storage/backpack/ert = 1, - /obj/item/storage/backpack/ert/security = 1, - /obj/item/storage/backpack/ert/engineer = 1, - /obj/item/storage/backpack/ert/medical = 1, - /obj/item/storage/backpack/duffel = 3, - /obj/item/storage/backpack/duffel/cap = 1, - /obj/item/storage/backpack/duffel/hyd = 3, - /obj/item/storage/backpack/duffel/med = 3, - /obj/item/storage/backpack/duffel/eng = 3, - /obj/item/storage/backpack/duffel/tox = 3, - /obj/item/storage/backpack/duffel/sec = 3, - /obj/item/storage/backpack/duffel/pharm = 3, - /obj/item/storage/backpack/duffel/syndie = 1, - /obj/item/storage/backpack/messenger = 2, - /obj/item/storage/backpack/messenger/pharm = 2, - /obj/item/storage/backpack/messenger/med = 2, - /obj/item/storage/backpack/messenger/tox = 2, - /obj/item/storage/backpack/messenger/com = 1, - /obj/item/storage/backpack/messenger/engi = 2, - /obj/item/storage/backpack/messenger/hyd = 2, - /obj/item/storage/backpack/messenger/sec = 2, - /obj/item/storage/backpack/messenger/syndie = 1, - ) - -/obj/random/voidsuit - name = "random voidsuit" - var/damaged = 0 - var/list/suitmap = list( - /obj/item/clothing/suit/space/void = /obj/item/clothing/head/helmet/space/void, - /obj/item/clothing/suit/space/void/engineering = /obj/item/clothing/head/helmet/space/void/engineering, - /obj/item/clothing/suit/space/void/mining = /obj/item/clothing/head/helmet/space/void/mining, - /obj/item/clothing/suit/space/void/medical = /obj/item/clothing/head/helmet/space/void/medical, - /obj/item/clothing/suit/space/void/security = /obj/item/clothing/head/helmet/space/void/security, - /obj/item/clothing/suit/space/void/atmos = /obj/item/clothing/head/helmet/space/void/atmos, - /obj/item/clothing/suit/space/void/merc = /obj/item/clothing/head/helmet/space/void/merc, - /obj/item/clothing/suit/space/void/captain = /obj/item/clothing/head/helmet/space/void/captain, - /obj/item/clothing/suit/space/void/cruiser = /obj/item/clothing/head/helmet/space/void/cruiser, - /obj/item/clothing/suit/space/void/coalition = /obj/item/clothing/head/helmet/space/void/coalition, - /obj/item/clothing/suit/space/void/hos = /obj/item/clothing/head/helmet/space/void/hos, - /obj/item/clothing/suit/space/void/lancer = /obj/item/clothing/head/helmet/space/void/lancer, - /obj/item/clothing/suit/space/void/sci = /obj/item/clothing/head/helmet/space/void/sci, - /obj/item/clothing/suit/space/void/sol = /obj/item/clothing/head/helmet/space/void/sol, - /obj/item/clothing/suit/space/void/hephaestus = /obj/item/clothing/head/helmet/space/void/hephaestus, - /obj/item/clothing/suit/space/void/zenghu = /obj/item/clothing/head/helmet/space/void/zenghu, - /obj/item/clothing/suit/space/void/einstein = /obj/item/clothing/head/helmet/space/void/einstein, - /obj/item/clothing/suit/space/void/zavodskoi = /obj/item/clothing/head/helmet/space/void/zavodskoi - ) - problist = list( - /obj/item/clothing/suit/space/void = 2, - /obj/item/clothing/suit/space/void/engineering = 2, - /obj/item/clothing/suit/space/void/mining = 2, - /obj/item/clothing/suit/space/void/medical = 2.3, - /obj/item/clothing/suit/space/void/security = 1, - /obj/item/clothing/suit/space/void/atmos = 1.5, - /obj/item/clothing/suit/space/void/merc = 0.5, - /obj/item/clothing/suit/space/void/captain = 0.3, - /obj/item/clothing/suit/space/void/cruiser = 0.5, - /obj/item/clothing/suit/space/void/coalition = 1, - /obj/item/clothing/suit/space/void/hos = 0.3, - /obj/item/clothing/suit/space/void/lancer = 0.3, - /obj/item/clothing/suit/space/void/sci = 2, - /obj/item/clothing/suit/space/void/sol = 0.5, - /obj/item/clothing/suit/space/void/zavodskoi = 0.5, - /obj/item/clothing/suit/space/void/einstein = 0.5, - /obj/item/clothing/suit/space/void/hephaestus = 0.5, - /obj/item/clothing/suit/space/void/zenghu = 0.5 - ) - has_postspawn = TRUE - -/obj/random/voidsuit/no_nanotrasen - suitmap = list( - /obj/item/clothing/suit/space/void = /obj/item/clothing/head/helmet/space/void, - /obj/item/clothing/suit/space/void/merc = /obj/item/clothing/head/helmet/space/void/merc, - /obj/item/clothing/suit/space/void/cruiser = /obj/item/clothing/head/helmet/space/void/cruiser, - /obj/item/clothing/suit/space/void/coalition = /obj/item/clothing/head/helmet/space/void/coalition, - /obj/item/clothing/suit/space/void/lancer = /obj/item/clothing/head/helmet/space/void/lancer, - /obj/item/clothing/suit/space/void/sol = /obj/item/clothing/head/helmet/space/void/sol, - /obj/item/clothing/suit/space/void/hephaestus = /obj/item/clothing/head/helmet/space/void/hephaestus, - /obj/item/clothing/suit/space/void/zenghu = /obj/item/clothing/head/helmet/space/void/zenghu, - /obj/item/clothing/suit/space/void/einstein = /obj/item/clothing/head/helmet/space/void/einstein, - /obj/item/clothing/suit/space/void/zavodskoi = /obj/item/clothing/head/helmet/space/void/zavodskoi - ) - problist = list( - /obj/item/clothing/suit/space/void = 2, - /obj/item/clothing/suit/space/void/merc = 0.5, - /obj/item/clothing/suit/space/void/cruiser = 0.5, - /obj/item/clothing/suit/space/void/coalition = 1, - /obj/item/clothing/suit/space/void/lancer = 0.3, - /obj/item/clothing/suit/space/void/sol = 0.5, - /obj/item/clothing/suit/space/void/zavodskoi = 0.5, - /obj/item/clothing/suit/space/void/einstein = 0.5, - /obj/item/clothing/suit/space/void/hephaestus = 0.5, - /obj/item/clothing/suit/space/void/zenghu = 0.5 - ) - -/obj/random/voidsuit/Initialize(mapload, _damaged = 0) - damaged = _damaged - . = ..(mapload) - -/obj/random/voidsuit/post_spawn(obj/item/clothing/suit/space/suit) - var/helmet = suitmap[suit.type] - if (helmet) - new helmet(loc) - else - log_debug("random_obj (voidsuit): Type [suit.type] was unable to spawn a matching helmet!") - new /obj/item/clothing/shoes/magboots(loc) - if (damaged && prob(60)) - suit.create_breaches(pick(DAMAGE_BRUTE, DAMAGE_BURN), rand(1, 5)) - -//Random MRE stuff - -/obj/random/mre - name = "random MRE" - desc = "This is a random single MRE." - icon = 'icons/obj/food.dmi' - icon_state = "mre" - spawnlist = list(/obj/item/storage/box/fancy/mre, - /obj/item/storage/box/fancy/mre/menu2, - /obj/item/storage/box/fancy/mre/menu3, - /obj/item/storage/box/fancy/mre/menu4, - /obj/item/storage/box/fancy/mre/menu5, - /obj/item/storage/box/fancy/mre/menu6, - /obj/item/storage/box/fancy/mre/menu7, - /obj/item/storage/box/fancy/mre/menu8, - /obj/item/storage/box/fancy/mre/menu9, - /obj/item/storage/box/fancy/mre/menu10) - - -/obj/random/mre/main - name = "random MRE main course" - desc = "This is a random main course for MREs." - icon_state = "pouch_medium" - spawnlist = list(/obj/item/storage/box/fancy/mrebag, - /obj/item/storage/box/fancy/mrebag/menu2, - /obj/item/storage/box/fancy/mrebag/menu3, - /obj/item/storage/box/fancy/mrebag/menu4, - /obj/item/storage/box/fancy/mrebag/menu5, - /obj/item/storage/box/fancy/mrebag/menu6, - /obj/item/storage/box/fancy/mrebag/menu7, - /obj/item/storage/box/fancy/mrebag/menu8) - -/obj/random/mre/dessert - name = "random MRE dessert" - desc = "This is a random dessert for MREs." - icon_state = "pouch_medium" - spawnlist = list(/obj/item/reagent_containers/food/snacks/candy, - /obj/item/reagent_containers/food/snacks/cb01, //finally, a use of these outside hallowe'en - /obj/item/reagent_containers/food/snacks/cb02, - /obj/item/reagent_containers/food/snacks/cb03, - /obj/item/reagent_containers/food/snacks/cb04, - /obj/item/reagent_containers/food/snacks/cb05, - /obj/item/reagent_containers/food/snacks/cb06, - /obj/item/reagent_containers/food/snacks/cb07, - /obj/item/reagent_containers/food/snacks/cb08, - /obj/item/reagent_containers/food/snacks/cb09, - /obj/item/reagent_containers/food/snacks/cb10, - /obj/item/reagent_containers/food/snacks/proteinbar, - /obj/item/reagent_containers/food/snacks/donut/normal, - /obj/item/reagent_containers/food/snacks/donut/cherryjelly, - /obj/item/reagent_containers/food/snacks/chocolatebar, - /obj/item/reagent_containers/food/snacks/cookie, - /obj/item/reagent_containers/food/snacks/poppypretzel, - /obj/item/storage/box/fancy/gum) - -/obj/random/mre/dessert/vegan - name = "random vegan MRE dessert" - desc = "This is a random vegan dessert for MREs." - spawnlist = list(/obj/item/reagent_containers/food/snacks/candy, - /obj/item/reagent_containers/food/snacks/cb01, - /obj/item/reagent_containers/food/snacks/cb02, - /obj/item/reagent_containers/food/snacks/cb03, - /obj/item/reagent_containers/food/snacks/cb04, - /obj/item/reagent_containers/food/snacks/cb05, - /obj/item/reagent_containers/food/snacks/cb06, - /obj/item/reagent_containers/food/snacks/cb07, - /obj/item/reagent_containers/food/snacks/cb08, - /obj/item/reagent_containers/food/snacks/cb09, - /obj/item/reagent_containers/food/snacks/cb10, - /obj/item/reagent_containers/food/snacks/chocolatebar, - /obj/item/reagent_containers/food/snacks/donut/cherryjelly, - /obj/item/reagent_containers/food/snacks/plumphelmetbiscuit) - -/obj/random/mre/drink - name = "random MRE drink" - desc = "This is a random drink for MREs." - icon_state = "packet_small" - spawnlist = list(/obj/item/reagent_containers/food/condiment/small/packet/coffee, - /obj/item/reagent_containers/food/condiment/small/packet/tea, - /obj/item/reagent_containers/food/condiment/small/packet/cocoa, - /obj/item/reagent_containers/food/condiment/small/packet/grape, - /obj/item/reagent_containers/food/condiment/small/packet/orange, - /obj/item/reagent_containers/food/condiment/small/packet/watermelon, - /obj/item/reagent_containers/food/condiment/small/packet/apple) - -/obj/random/mre/spread - name = "random MRE spread" - desc = "This is a random spread packet for MREs." - icon_state = "packet_small" - spawnlist = list(/obj/item/reagent_containers/food/condiment/small/packet/jelly, - /obj/item/reagent_containers/food/condiment/small/packet/honey) - -/obj/random/mre/spread/vegan - name = "random vegan MRE spread" - desc = "This is a random vegan spread packet for MREs." - spawnlist = list(/obj/item/reagent_containers/food/condiment/small/packet/jelly) - -/obj/random/mre/sauce - name = "random MRE sauce" - desc = "This is a random sauce packet for MREs." - icon_state = "packet_small" - spawnlist = list(/obj/item/reagent_containers/food/condiment/small/packet/salt, - /obj/item/reagent_containers/food/condiment/small/packet/pepper, - /obj/item/reagent_containers/food/condiment/small/packet/sugar, - /obj/item/reagent_containers/food/condiment/small/packet/capsaicin, - /obj/item/reagent_containers/food/condiment/small/packet/ketchup, - /obj/item/reagent_containers/food/condiment/small/packet/mayo, - /obj/item/reagent_containers/food/condiment/small/packet/soy) - -/obj/random/mre/sauce/vegan - spawnlist = list(/obj/item/reagent_containers/food/condiment/small/packet/salt, - /obj/item/reagent_containers/food/condiment/small/packet/pepper, - /obj/item/reagent_containers/food/condiment/small/packet/sugar, - /obj/item/reagent_containers/food/condiment/small/packet/soy) - -/obj/random/mre/sauce/sugarfree - spawnlist = list(/obj/item/reagent_containers/food/condiment/small/packet/salt, - /obj/item/reagent_containers/food/condiment/small/packet/pepper, - /obj/item/reagent_containers/food/condiment/small/packet/capsaicin, - /obj/item/reagent_containers/food/condiment/small/packet/ketchup, - /obj/item/reagent_containers/food/condiment/small/packet/mayo, - /obj/item/reagent_containers/food/condiment/small/packet/soy) - -/obj/random/mre/sauce/crayon - spawnlist = list(/obj/item/reagent_containers/food/condiment/small/packet/crayon, - /obj/item/reagent_containers/food/condiment/small/packet/crayon/red, - /obj/item/reagent_containers/food/condiment/small/packet/crayon/orange, - /obj/item/reagent_containers/food/condiment/small/packet/crayon/yellow, - /obj/item/reagent_containers/food/condiment/small/packet/crayon/green, - /obj/item/reagent_containers/food/condiment/small/packet/crayon/blue, - /obj/item/reagent_containers/food/condiment/small/packet/crayon/purple, - /obj/item/reagent_containers/food/condiment/small/packet/crayon/grey, - /obj/item/reagent_containers/food/condiment/small/packet/crayon/brown) - -/obj/random/vendor - name = "random vendor" - var/depleted = FALSE - var/scan_id = TRUE // Should the spawned vendor check IDs - problist = list( - /obj/machinery/vending/boozeomat = 1, - /obj/machinery/vending/coffee = 1, - /obj/machinery/vending/snack = 1, - /obj/machinery/vending/cola = 1, - /obj/machinery/vending/cigarette = 1, - /obj/machinery/vending/medical = 1.2, - /obj/machinery/vending/phoronresearch = 0.7, - /obj/machinery/vending/security = 0.3, - /obj/machinery/vending/hydronutrients = 1, - /obj/machinery/vending/hydroseeds = 1, - /obj/machinery/vending/dinnerware = 1, - /obj/machinery/vending/sovietsoda = 2, - /obj/machinery/vending/tool = 1, - /obj/machinery/vending/engivend = 0.6, - /obj/machinery/vending/engineering = 1, - /obj/machinery/vending/robotics = 1, - /obj/machinery/vending/tacticool = 0.2, - /obj/machinery/vending/tacticool/ert = 0.1 - ) - has_postspawn = TRUE - -/obj/random/vendor/Initialize(mapload, _depleted = 0) - depleted = _depleted - . = ..() - -/obj/random/vendor/post_spawn(obj/machinery/vending/V) - if (!depleted) - return - - //Greatly reduce the contents. it will have 0-20% of what it usually has - for (var/content in V.products) - if (prob(40)) - V.products[content] = 0 //40% chance to completely lose an item - else - var/multiplier = rand(0,20) //Else, we reduce it to a very low percentage - if (multiplier) - multiplier /= 100 - - V.products[content] *= multiplier - if (V.products[content] < 1 && V.products[content] > 0) //But we'll usually have at least 1 left - V.products[content] = 0 - - // Clamp to an integer so we don't get 0.78 of a screwdriver. - V.products[content] = round(V.products[content]) - - V.scan_id &= scan_id - -/obj/random/glowstick - name = "random glowstick" - desc = "This is a random glowstick." - icon = 'icons/obj/lighting.dmi' - icon_state = "glowstick" - spawnlist = list( - /obj/item/device/flashlight/flare/glowstick, - /obj/item/device/flashlight/flare/glowstick/red, - /obj/item/device/flashlight/flare/glowstick/blue, - /obj/item/device/flashlight/flare/glowstick/orange, - /obj/item/device/flashlight/flare/glowstick/yellow - ) - -/obj/random/booze - name = "random alcoholic drink" - desc = "This is a random alcoholic drink." - icon = 'icons/obj/drinks.dmi' - icon_state = "broken_bottle" - spawnlist = list( - /obj/item/reagent_containers/food/drinks/bottle/gin, - /obj/item/reagent_containers/food/drinks/bottle/whiskey, - /obj/item/reagent_containers/food/drinks/bottle/vodka, - /obj/item/reagent_containers/food/drinks/bottle/tequila, - /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing, - /obj/item/reagent_containers/food/drinks/bottle/rum, - /obj/item/reagent_containers/food/drinks/bottle/champagne, - /obj/item/reagent_containers/food/drinks/bottle/vermouth, - /obj/item/reagent_containers/food/drinks/bottle/kahlua, - /obj/item/reagent_containers/food/drinks/bottle/cognac, - /obj/item/reagent_containers/food/drinks/bottle/wine, - /obj/item/reagent_containers/food/drinks/bottle/absinthe, - /obj/item/reagent_containers/food/drinks/bottle/melonliquor, - /obj/item/reagent_containers/food/drinks/bottle/pwine, - /obj/item/reagent_containers/food/drinks/bottle/brandy, - /obj/item/reagent_containers/food/drinks/bottle/guinness, - /obj/item/reagent_containers/food/drinks/bottle/drambuie, - /obj/item/reagent_containers/food/drinks/bottle/cremeyvette, - /obj/item/reagent_containers/food/drinks/bottle/cremewhite, - /obj/item/reagent_containers/food/drinks/bottle/chartreuseyellow, - /obj/item/reagent_containers/food/drinks/bottle/chartreusegreen, - /obj/item/reagent_containers/food/drinks/bottle/grenadine, - /obj/item/reagent_containers/food/drinks/bottle/bluecuracao, - /obj/item/reagent_containers/food/drinks/bottle/bitters, - /obj/item/reagent_containers/food/drinks/bottle/champagne, - /obj/item/reagent_containers/food/drinks/bottle/mintsyrup, - /obj/item/reagent_containers/food/drinks/bottle/sarezhiwine, - /obj/item/reagent_containers/food/drinks/bottle/small/beer, - /obj/item/reagent_containers/food/drinks/bottle/small/ale, - /obj/item/reagent_containers/food/drinks/bottle/small/xuizijuice - ) - -/obj/random/melee - name = "random melee weapon" - desc = "This is a random melee weapon." - icon = 'icons/obj/weapons.dmi' - icon_state = "baton" - spawnlist = list( - /obj/item/melee/telebaton, - /obj/item/melee/energy/sword, - /obj/item/melee/energy/sword/pirate, - /obj/item/melee/energy/glaive, - /obj/item/melee/chainsword, - /obj/item/melee/baton/stunrod, - /obj/item/material/harpoon, - /obj/random/sword, - /obj/item/melee/hammer, - /obj/item/melee/hammer/powered, - /obj/item/material/twohanded/fireaxe, - /obj/item/melee/classic_baton, - /obj/item/material/twohanded/pike, - /obj/item/material/twohanded/pike/halberd, - /obj/item/material/twohanded/pike/pitchfork, - /obj/item/melee/whip, - /obj/item/clothing/accessory/storage/bayonet - ) - -/obj/random/melee/highvalue - name = "random high value melee weapon" - desc = "This is a random high value melee weapon." - icon = 'icons/obj/weapons.dmi' - icon_state = "baton" - spawnlist = list( - /obj/item/melee/energy/sword, - /obj/item/melee/energy/glaive, - /obj/item/melee/chainsword, - /obj/item/melee/hammer, - /obj/item/melee/hammer/powered - ) - -/obj/random/coin - name = "random coin" - desc = "This is a random coin." - icon = 'icons/obj/coins.dmi' - icon_state = "coin__heads" - problist = list( - /obj/item/coin/iron = 5, - /obj/item/coin/silver = 3, - /obj/item/coin/gold = 0.7, - /obj/item/coin/phoron = 0.5, - /obj/item/coin/uranium = 0.5, - /obj/item/coin/platinum = 0.2, - /obj/item/coin/diamond = 0.1 - ) - -/obj/random/spacecash - name = "random credit chips" - desc = "This is a random credit chip." - icon = 'icons/obj/cash.dmi' - icon_state = "spacecash1" - problist = list( - /obj/item/spacecash/c1 = 6, - /obj/item/spacecash/c10 = 3, - /obj/item/spacecash/c20 = 2, - /obj/item/spacecash/c50 = 1, - /obj/item/spacecash/c100 = 0.3, - /obj/item/spacecash/c200 = 0.2, - /obj/item/spacecash/c1000 = 0.1 - ) - -/obj/random/energy_antag - name = "random energy weapon" - desc = "This is a random energy weapon." - icon = 'icons/obj/guns/retro.dmi' - icon_state = "retro100" - spawnlist = list( - /obj/item/gun/energy/retro, - /obj/item/gun/energy/xray, - /obj/item/gun/energy/gun, - /obj/item/gun/energy/pistol, - /obj/item/gun/energy/mindflayer, - /obj/item/gun/energy/toxgun, - /obj/item/gun/energy/vaurca/gatlinglaser, - /obj/item/gun/energy/vaurca/blaster, - /obj/item/gun/energy/crossbow/largecrossbow, - /obj/item/gun/energy/rifle, - /obj/item/gun/energy/rifle/laser, - /obj/item/gun/energy/rifle/laser/heavy, - /obj/item/gun/energy/rifle/laser/xray, - /obj/item/gun/energy/net, - /obj/item/gun/energy/laser/shotgun, - /obj/item/gun/energy/decloner, - /obj/item/gun/energy/freeze - ) - -/obj/random/colored_jumpsuit - name = "random colored jumpsuit" - desc = "This is a random colored jumpsuit." - icon = 'icons/obj/clothing/uniforms.dmi' - icon_state = "black" - spawnlist = list( - /obj/item/clothing/under/color/black, - /obj/item/clothing/under/color/blue, - /obj/item/clothing/under/color/green, - /obj/item/clothing/under/color/grey, - /obj/item/clothing/under/color/orange, - /obj/item/clothing/under/color/pink, - /obj/item/clothing/under/color/red, - /obj/item/clothing/under/color/white, - /obj/item/clothing/under/color/yellow, - /obj/item/clothing/under/color/lightblue, - /obj/item/clothing/under/color/aqua, - /obj/item/clothing/under/color/purple, - /obj/item/clothing/under/color/lightpurple, - /obj/item/clothing/under/color/lightgreen, - /obj/item/clothing/under/color/lightbrown, - /obj/item/clothing/under/color/brown, - /obj/item/clothing/under/color/yellowgreen, - /obj/item/clothing/under/color/darkblue, - /obj/item/clothing/under/color/lightred, - /obj/item/clothing/under/color/darkred - ) - -/obj/random/suit - name = "random suit" - desc = "This is a random suit." - icon = 'icons/obj/clothing/uniforms.dmi' - icon_state = "checkered_suit" - spawnlist = list( - /obj/item/clothing/under/suit_jacket/charcoal, - /obj/item/clothing/under/suit_jacket/navy, - /obj/item/clothing/under/suit_jacket/burgundy, - /obj/item/clothing/under/suit_jacket/checkered, - /obj/item/clothing/under/suit_jacket/tan, - /obj/item/clothing/under/sl_suit, - /obj/item/clothing/under/suit_jacket, - /obj/item/clothing/under/suit_jacket/really_black, - /obj/item/clothing/under/suit_jacket/red, - /obj/item/clothing/under/suit_jacket/white - ) - -/obj/random/loot - name = "random maintenance loot" - desc = "Stuff for the maint-dwellers." - icon = 'icons/holidays/christmas/presents.dmi' - icon_state = "gift1" - problist = list( - /obj/item/bluespace_crystal/artificial = 0.1, - /obj/item/bodybag = 0.7, - /obj/item/clothing/accessory/storage/knifeharness = 0.3, - /obj/item/clothing/accessory/storage/webbing = 0.6, - /obj/item/clothing/glasses/sunglasses = 0.75, - /obj/item/clothing/glasses/welding = 0.75, - /obj/item/clothing/head/bearpelt = 0.4, - /obj/item/clothing/head/collectable/petehat = 0.1, - /obj/item/clothing/head/hardhat = 1.2, - /obj/item/clothing/head/helmet/augment = 0.1, - /obj/item/clothing/head/pirate = 0.2, - /obj/item/clothing/head/pumpkin/lantern = 0.4, - /obj/item/clothing/head/redcoat = 0.2, - /obj/item/clothing/head/richard = 0.3, - /obj/item/clothing/head/softcap/rainbow = 0.7, - /obj/item/clothing/head/syndicatefake = 0.5, - /obj/item/clothing/head/ushanka = 0.3, - /obj/item/clothing/head/witchwig = 0.5, - /obj/item/clothing/mask/balaclava = 0.75, - /obj/item/clothing/mask/fakemoustache = 0.4, - /obj/item/clothing/mask/gas = 1.25, - /obj/item/clothing/mask/gas/cyborg = 0.7, - /obj/item/clothing/mask/gas/mime = 0.1, - /obj/item/clothing/mask/gas/old = 0.75, - /obj/item/clothing/mask/gas/owl_mask = 0.5, - /obj/item/clothing/mask/gas/syndicate = 0.4, - /obj/item/clothing/mask/horsehead = 0.5, - /obj/item/clothing/mask/luchador = 0.1, - /obj/item/clothing/mask/luchador/rudos = 0.1, - /obj/item/clothing/mask/luchador/tecnicos = 0.1, - /obj/item/clothing/mask/muzzle = 0.2, - /obj/item/clothing/mask/pig = 0.3, - /obj/item/clothing/mask/smokable/cigarette/cigar/cohiba = 0.7, - /obj/item/clothing/mask/smokable/pipe/cobpipe = 0.5, - /obj/item/clothing/shoes/carp = 0.5, - /obj/item/clothing/shoes/combat = 0.2, - /obj/item/clothing/shoes/cyborg = 0.4, - /obj/item/clothing/shoes/galoshes = 0.6, - /obj/item/clothing/shoes/jackboots = 0.5, - /obj/item/clothing/shoes/rainbow = 0.5, - /obj/item/clothing/shoes/slippers/worn = 0.5, - /obj/item/clothing/shoes/winter = 0.3, - /obj/item/clothing/shoes/workboots = 0.75, - /obj/item/clothing/suit/ianshirt = 0.5, - /obj/item/clothing/suit/storage/hazardvest = 0.75, - /obj/item/clothing/suit/storage/toggle/leather_jacket/nanotrasen = 0.7, - /obj/item/clothing/suit/storage/vest = 0.2, - /obj/item/clothing/suit/syndicatefake = 0.6, - /obj/item/clothing/under/overalls = 1, - /obj/item/clothing/under/syndicate/tacticool = 0.4, - /obj/item/clothing/under/syndicate/tracksuit = 0.2, - /obj/item/device/firing_pin = 0.3, - /obj/item/device/firing_pin/clown = 0.01, - /obj/item/device/flashlight = 1, - /obj/item/device/flashlight/flare = 0.5, - /obj/item/device/flashlight/heavy = 0.5, - /obj/item/device/flashlight/lantern = 0.4, - /obj/item/device/flashlight/maglight = 0.4, - /obj/item/device/floor_painter = 0.6, - /obj/item/device/gps/engineering = 0.6, - /obj/item/device/kinetic_analyzer = 0.1, - /obj/item/device/laser_pointer/purple = 0.1, - /obj/item/device/light_meter = 0.1, - /obj/item/device/magnetic_lock/engineering = 0.3, - /obj/item/device/magnetic_lock/keypad = 0.1, - /obj/item/device/magnetic_lock/security = 0.3, - /obj/item/device/megaphone = 0.3, - /obj/item/device/price_scanner = 0.1, - /obj/item/device/taperecorder = 0.6, - /obj/item/device/uv_light = 0.1, - /obj/item/device/wormhole_jaunter = 0.1, - /obj/item/inflatable/door/ = 0.1, - /obj/item/seeds/random = 0.25, - /obj/item/stack/material/bronze{amount=10}, - /obj/item/banhammer = 0.05, - /obj/item/clothing/head/cone = 0.7, - /obj/item/contraband/poster = 1.3, - /obj/item/extinguisher = 1.3, - /obj/item/extinguisher/mini = 0.9, - /obj/item/flame/lighter = 0.9, - /obj/item/flame/lighter/zippo = 0.7, - /obj/item/grenade/chem_grenade/cleaner = 0.1, - /obj/item/grenade/smokebomb = 0.05, //We /tg/ now. - /obj/item/haircomb = 0.5, - /obj/item/inflatable_duck = 0.2, - /obj/item/lipstick = 0.6, - /obj/item/material/hook = 0.3, - /obj/item/material/knife/tacknife = 0.4, - /obj/item/mesmetron = 0.1, - /obj/item/pickaxe = 0.4, - /obj/item/razor = 0.5, - /obj/item/reagent_containers/extinguisher_refill = 0.1, - /obj/item/reagent_containers/extinguisher_refill/filled = 0.5, - /obj/item/reagent_containers/food/drinks/flask/lithium = 0.3, - /obj/item/reagent_containers/food/drinks/flask/shiny = 0.3, - /obj/item/reagent_containers/food/drinks/teapot = 0.4, - /obj/item/reagent_containers/cooking_container/board/bowl = 0.8, - /obj/item/reagent_containers/inhaler/hyperzine = 0.1, - /obj/item/reagent_containers/spray/cleaner = 0.6, - /obj/item/reagent_containers/spray/sterilizine = 0.4, - /obj/item/reagent_containers/spray/waterflower = 0.2, - /obj/item/shovel = 0.5, - /obj/item/spacecash/ewallet/lotto = 0.3, - /obj/item/staff/broom = 0.5, - /obj/item/storage/bag/plasticbag = 1, - /obj/item/storage/box/condimentbottles = 0.2, - /obj/item/storage/box/donkpockets = 0.6, - /obj/item/storage/box/drinkingglasses = 0.2, - /obj/item/storage/box/lights = 0.5, - /obj/item/storage/box/lights/colored/blue = 0.1, - /obj/item/storage/box/lights/colored/cyan = 0.1, - /obj/item/storage/box/lights/colored/green = 0.1, - /obj/item/storage/box/lights/colored/magenta = 0.1, - /obj/item/storage/box/lights/colored/red = 0.1, - /obj/item/storage/box/lights/colored/yellow = 0.1, - /obj/item/storage/box/lights/coloredmixed = 0.2, - /obj/item/storage/box/masks = 0.5, - /obj/item/storage/box/mousetraps = 0.3, - /obj/item/storage/box/pineapple = 0.1, - /obj/item/storage/box/smokebombs = 0.1, - /obj/item/storage/box/syringes = 0.3, - /obj/item/storage/box/fancy/cigarettes = 1.2, - /obj/item/storage/box/fancy/cigarettes/acmeco = 0.3, - /obj/item/storage/box/fancy/cigarettes/blank = 1, - /obj/item/storage/box/fancy/cigarettes/dromedaryco = 0.8, - /obj/item/storage/box/fancy/crayons = 0.5, - /obj/item/storage/wallet/random/ = 0.1, - /obj/item/trap/animal = 0.8, - /obj/random/arcade = 0.25, - /obj/random/backpack = 0.7, - /obj/random/belt = 0.9, - /obj/random/booze = 1.1, - /obj/random/chameleon = 0.5, - /obj/random/coin = 1.2, - /obj/random/colored_jumpsuit = 0.7, - /obj/random/contraband = 0.9, - /obj/random/firstaid = 0.4, - /obj/random/gloves = 2, - /obj/random/glowstick = 0.4, - /obj/random/hoodie = 0.5, - /obj/random/bandana = 0.5, - /obj/random/softcap = 0.5, - /obj/random/beret = 0.5, - /obj/random/junk = 0.4, - /obj/random/medical = 0.4, - /obj/random/powercell = 0.8, - /obj/random/smalltank = 0.5, - /obj/random/soap = 0.5, - /obj/random/spacecash = 0.3, - /obj/random/tech_supply = 1.2, - /obj/random/technology_scanner = 1, - /obj/random/tool = 1, - /obj/random/toolbox = 1, - /obj/random_produce = 0.25, - /obj/random/watches = 1, - /obj/random/wizard_dressup = 0.25, - /obj/item/device/synthesized_instrument/violin = 0.1, - /obj/item/device/synthesized_instrument/guitar = 1, - /obj/item/device/synthesized_instrument/trumpet = 0.25 - ) - - -/obj/random/chameleon - name = "random possible chameleon item" - desc = "A random possible chameleon item. What could possibly go wrong?" - icon = 'icons/obj/clothing/gloves.dmi' - icon_state = "yellow" - problist = list( - - /obj/item/clothing/gloves/chameleon = 1, - /obj/item/clothing/gloves/black = 10, - - /obj/item/clothing/head/chameleon = 0.5, - /obj/item/clothing/head/softcap = 5, - - /obj/item/clothing/mask/chameleon = 1, - /obj/item/clothing/mask/gas = 10, - - /obj/item/clothing/shoes/chameleon = 0.5, - /obj/item/clothing/shoes/black = 5, - - /obj/item/clothing/suit/chameleon = 0.1, - /obj/item/clothing/suit/armor/vest = 1, - - /obj/item/clothing/under/chameleon = 0.75, - /obj/item/clothing/under/color/black = 7.5, - - /obj/item/gun/energy/chameleon = 0.1, - /obj/item/gun/bang/deagle = 0.1, - - /obj/item/storage/backpack/chameleon = 1, - /obj/item/storage/backpack = 10, - - /obj/item/clothing/glasses/chameleon = 1 - - ) - -/obj/random/gloves - name = "random gloves" - desc = "Random gloves, assorted usefulness." - icon = 'icons/obj/clothing/gloves.dmi' - icon_state = "yellow" - problist = list( - /obj/item/clothing/gloves/black = 1, - /obj/item/clothing/gloves/black_leather = 0.5, - /obj/item/clothing/gloves/botanic_leather = 0.7, - /obj/item/clothing/gloves/boxing = 0.3, - /obj/item/clothing/gloves/boxing/green = 0.3, - /obj/item/clothing/gloves/captain = 0.1, - /obj/item/clothing/gloves/combat = 0.2, - /obj/item/clothing/gloves/yellow/budget = 1.2, - /obj/item/clothing/gloves/latex = 0.5, - /obj/item/clothing/gloves/latex/nitrile = 0.4, - /obj/item/clothing/gloves/yellow = 0.9 - ) - -/obj/random/watches - name = "random watches" - desc = "Random watches, probably able to tell the time." - icon = 'icons/obj/clothing/gloves.dmi' - icon_state = "watch" - problist = list( - /obj/item/clothing/wrists/watch = 1, - /obj/item/clothing/wrists/watch/silver = 0.7, - /obj/item/clothing/wrists/watch/gold = 0.5, - /obj/item/clothing/wrists/watch/spy = 0.3, - ) - -/obj/random/hoodie - name = "random winter coat" - desc = "This is a random winter coat." - icon = 'icons/obj/clothing/hoodies.dmi' - icon_state = "coatwinter" - problist = list( - /obj/item/clothing/suit/storage/hooded/wintercoat = 5, - /obj/item/clothing/suit/storage/hooded/wintercoat/engineering = 3, - /obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos = 3, - /obj/item/clothing/suit/storage/hooded/wintercoat/medical = 3, - /obj/item/clothing/suit/storage/hooded/wintercoat/science = 3, - /obj/item/clothing/suit/storage/hooded/wintercoat/hydro = 3, - /obj/item/clothing/suit/storage/hooded/wintercoat/cargo = 3, - /obj/item/clothing/suit/storage/hooded/wintercoat/miner = 3, - /obj/item/clothing/suit/storage/hooded/wintercoat/security = 2, - /obj/item/clothing/suit/storage/hooded/wintercoat/captain = 1 - ) - -/obj/random/bandana - name = "random bandana" - desc = "This is a random bandana." - icon = 'icons/obj/clothing/hats/bandanas.dmi' - icon_state = "bandana" - problist = list( - /obj/item/clothing/head/bandana/colorable/random = 5, - /obj/item/clothing/head/bandana/engineering = 3, - /obj/item/clothing/head/bandana/atmos = 3, - /obj/item/clothing/head/bandana/medical = 3, - /obj/item/clothing/head/bandana/science = 3, - /obj/item/clothing/head/bandana/hydro = 3, - /obj/item/clothing/head/bandana/cargo = 3, - /obj/item/clothing/head/bandana/miner = 3, - /obj/item/clothing/head/bandana/security = 2, - /obj/item/clothing/head/bandana/captain = 1 - ) - -/obj/random/softcap - name = "random softcap" - desc = "This is a random softcap." - icon = 'icons/obj/clothing/hats/soft_caps.dmi' - icon_state = "softcap" - problist = list( - /obj/item/clothing/head/softcap/colorable/random = 5, - /obj/item/clothing/head/softcap/engineering = 3, - /obj/item/clothing/head/softcap/atmos = 3, - /obj/item/clothing/head/softcap/medical = 3, - /obj/item/clothing/head/softcap/science = 3, - /obj/item/clothing/head/softcap/hydro = 3, - /obj/item/clothing/head/softcap/cargo = 3, - /obj/item/clothing/head/softcap/miner = 3, - /obj/item/clothing/head/softcap/security = 2, - /obj/item/clothing/head/softcap/captain = 1 - ) - -/obj/random/beret - name = "random beret" - desc = "This is a random beret." - icon = 'icons/obj/clothing/hats/berets.dmi' - icon_state = "beret" - problist = list( - /obj/item/clothing/head/beret/colorable/random = 5, - /obj/item/clothing/head/beret/engineering = 3, - /obj/item/clothing/head/beret/atmos = 3, - /obj/item/clothing/head/beret/medical = 3, - /obj/item/clothing/head/beret/science = 3, - /obj/item/clothing/head/beret/hydro = 3, - /obj/item/clothing/head/beret/cargo = 3, - /obj/item/clothing/head/beret/miner = 3, - /obj/item/clothing/head/beret/security = 2, - /obj/item/clothing/head/beret/captain = 1 - ) - -/obj/random/hardhat - name = "random hardhat" - desc = "This is a random hardhat." - icon = 'icons/obj/clothing/hats/hardhats.dmi' - icon_state = "hardhat_yellow" - problist = list( - /obj/item/clothing/head/hardhat = 1, - /obj/item/clothing/head/hardhat/orange = 1, - /obj/item/clothing/head/hardhat/red = 1, - /obj/item/clothing/head/hardhat/green = 1, - /obj/item/clothing/head/hardhat/dblue = 1, - /obj/item/clothing/head/hardhat/white = 0.5, - /obj/item/clothing/head/hardhat/atmos = 0.1, - /obj/item/clothing/head/hardhat/first_responder = 0.1, - /obj/item/clothing/head/hardhat/firefighter = 0.1 - ) - -/obj/random/highvalue - name = "random high valuable item" - desc = "This is a random high valuable item." - icon = 'icons/obj/coins.dmi' - icon_state = "coin_diamond_heads" - problist = list( - /obj/random/telecrystals = 0.1, - /obj/item/gun/projectile/automatic/rifle/shotgun = 0.1, - /obj/random/melee = 0.3, - /obj/item/gun/energy/lawgiver = 0.1, - /obj/item/gun/projectile/automatic/terminator = 0.1, - /obj/item/device/personal_shield = 0.4, - /obj/random/safe_rig = 0.4, - /obj/item/gun/energy/disruptorpistol/magnum = 0.3, - /obj/item/gun/projectile/shotgun/pump/combat = 0.2, - /obj/item/clothing/glasses/thermal = 0.5 - ) - -/obj/random/highvalue/no_crystal - problist = list( - /obj/item/clothing/suit/armor/reactive = 0.5, - /obj/item/clothing/glasses/thermal = 0.5, - /obj/item/gun/projectile/automatic/rifle/shotgun = 0.5, - /obj/random/sword = 0.5, - /obj/item/gun/energy/lawgiver = 0.5, - /obj/item/melee/energy/axe = 0.5, - /obj/item/gun/projectile/automatic/terminator = 0.5, - /obj/item/rig/military = 0.5, - /obj/item/rig/unathi/fancy = 0.5, - /obj/item/rig/vaurca = 0.5, - /obj/item/anomaly_core = 0.5, - /obj/item/reagent_containers/food/drinks/bottle/vintage_wine = 0.1 - ) - -//Can be good loot for away sites as well as a guaranteed valuable for a merchant. -/obj/random/highvalue/no_weapon - problist = list( - /obj/item/bluespace_crystal = 1, - /obj/item/reagent_containers/food/drinks/bottle/vintage_wine = 0.1, - /obj/item/clothing/glasses/thermal = 0.5, - /obj/item/anomaly_core = 0.5, - /obj/item/rig/military = 0.2, - /obj/item/rig/unathi/fancy = 0.2, - /obj/item/rig/vaurca = 0.2, - /obj/item/stack/material/phoron/full = 0.1, - /obj/item/stack/material/plasteel/full = 0.8, - /obj/random/voidsuit = 1, - /obj/item/rfd/construction = 0.4, - /obj/item/vaurca/box = 0.1, - /obj/item/melee/vaurca/rock = 0.1, - /obj/item/device/personal_shield = 0.1, - /obj/item/storage/secure/briefcase/money = 0.1 - ) - -/obj/random/highvalue/cash - problist = list( - /obj/item/storage/secure/briefcase/money = 1, - /obj/item/stack/material/phoron/full = 0.1 - ) - -/obj/random/highvalue/safe - name = "random corporate safe high valuable item" - desc = "This is a random corporate safe high valuable item." - icon = 'icons/obj/coins.dmi' - icon_state = "coin_diamond_heads" - problist = list( - /obj/item/device/personal_shield = 0.4, - /obj/random/safe_rig = 0.4, - /obj/item/clothing/glasses/thermal = 0.3, - /obj/item/storage/toolbox/infiltration = 0.3, - /obj/random/melee/highvalue = 0.3, - /obj/item/gun/energy/disruptorpistol/magnum = 0.3, - /obj/item/gun/projectile/shotgun/pump/combat = 0.2, - /obj/item/gun/energy/lawgiver = 0.1, - /obj/item/gun/projectile/automatic/terminator = 0.1, - /obj/item/gun/projectile/automatic/rifle/shotgun = 0.1 - ) - -/obj/random/junk - name = "random trash" - desc = "This is toss." - icon = 'icons/obj/trash.dmi' - icon_state = "koisbar" - spawn_nothing_percentage = 5 - problist = list( - /obj/item/trash/koisbar = 0.5, - /obj/item/trash/raisins = 1, - /obj/item/trash/candy = 1, - /obj/item/trash/cheesie = 2, - /obj/item/trash/chips = 0.75, - /obj/item/trash/popcorn = 0.75, - /obj/item/trash/sosjerky = 0.5, - /obj/item/trash/syndi_cakes = 0.25, - /obj/item/trash/waffles = 0.75, - /obj/item/trash/plate = 0.75, - /obj/item/trash/snack_bowl = 0.75, - /obj/item/trash/pistachios = 0.75, - /obj/item/trash/semki = 0.5, - /obj/item/trash/tray = 0.75, - /obj/item/trash/candle = 0.75, - /obj/item/trash/liquidfood = 0.75, - /obj/item/trash/tastybread= 0.75, - /obj/item/trash/meatsnack = 0.5, - /obj/item/trash/maps = 0.5, - /obj/item/trash/tuna = 0.5, - /obj/effect/decal/cleanable/ash = 1.5, - /obj/effect/decal/cleanable/dirt = 2, - /obj/effect/decal/cleanable/flour = 1, - /obj/effect/decal/cleanable/greenglow = 1, - /obj/effect/decal/cleanable/molten_item = 1, - /obj/effect/decal/cleanable/vomit = 2, - /obj/effect/decal/cleanable/generic = 2, - /obj/effect/decal/cleanable/liquid_fuel = 0.5, - /obj/effect/decal/cleanable/mucus = 1.5, - /obj/effect/decal/cleanable/blood/drip = 1.5, - /obj/item/storage/box = 1, - /obj/item/material/shard = 1, - /obj/item/material/shard/shrapnel = 1, - /obj/item/broken_bottle = 1, - /obj/item/stack/material/cardboard = 1, - /obj/item/stack/rods = 1, - /obj/item/corncob = 1, - /obj/item/paper/crumpled = 1, - /obj/item/inflatable/torn = 1, - /obj/item/ammo_casing/c45/rubber = 0.5, - /obj/item/ammo_casing/c9mm/rubber = 0.5, - /obj/item/ammo_casing/c45/flash = 0.5, - /obj/item/ammo_casing/shotgun/beanbag = 0.5, - /obj/item/flame/lighter/random = 0.25, - /obj/item/lipstick/random = 0.25, - /obj/item/reagent_containers/glass/beaker/vial/random = 0.1, - /obj/item/towel/random = 0.1, - /obj/item/device/flashlight/flare/glowstick/random = 0.25, - /obj/item/stack/cable_coil/random/ = 0.1, - /obj/item/bananapeel = 0.1, //honk, - /obj/item/key = 0.1, - /obj/item/reagent_containers/blood/ripped = 0.1, - /obj/item/shreddedp = 0.1 - - ) - -/obj/random/dirt_75 - name = "dirt 75%" - desc = "75% chance of spawning dirt, otherwise nothing." - icon = 'icons/effects/effects.dmi' - icon_state = "dirt" - layer = ABOVE_CABLE_LAYER // just so it appears under structures in map editor - spawn_nothing_percentage = 25 - spawnlist = list( - /obj/effect/decal/cleanable/dirt - ) - -//Sometimes the chef will have spare oil in storage. -//Sometimes they wont, and will need to order it from cargo -//Variety is the spice of life! -/obj/random/cookingoil - name = "random cooking oil" - desc = "Has a 50% chance of spawning a tank of cooking oil, otherwise nothing" - icon = 'icons/obj/reagent_dispensers.dmi' - icon_state = "oiltank" - spawn_nothing_percentage = 50 - - spawnlist = list( - /obj/structure/reagent_dispensers/cookingoil - ) - -/obj/random/sword - name = "random sword" - desc = "This is a random sword." - icon = 'icons/obj/weapons.dmi' - icon_state = "claymore" - spawnlist = list( - /obj/item/material/sword, - /obj/item/material/sword/katana, - /obj/item/material/sword/rapier, - /obj/item/material/sword/longsword, - /obj/item/material/sword/sabre, - /obj/item/material/sword/axe, - /obj/item/material/sword/khopesh, - /obj/item/material/sword/dao, - /obj/item/material/sword/gladius - ) - -/obj/random/arcade - name = "random arcade loot" - desc = "Arcade loot!" - icon = 'icons/obj/items.dmi' - icon_state = "gift3" - spawnlist = list( - /obj/item/storage/box/snappops = 11, - /obj/item/clothing/under/syndicate/tacticool = 5, - /obj/item/toy/sword = 22, - /obj/item/gun/projectile/revolver/capgun = 11, - /obj/item/toy/crossbow = 11, - /obj/item/storage/box/fancy/crayons = 11, - /obj/item/toy/spinningtoy = 11, - /obj/item/toy/mech/ripley = 1, - /obj/item/toy/mech/fireripley = 1, - /obj/item/toy/mech/deathripley = 1, - /obj/item/toy/mech/gygax = 1, - /obj/item/toy/mech/durand = 1, - /obj/item/toy/mech/honk = 1, - /obj/item/toy/mech/marauder = 1, - /obj/item/toy/mech/seraph = 1, - /obj/item/toy/mech/mauler = 1, - /obj/item/toy/mech/odysseus = 1, - /obj/item/toy/mech/phazon = 1, - /obj/item/reagent_containers/spray/waterflower = 5, - /obj/random/action_figure = 11, - /obj/random/plushie = 44, - /obj/item/toy/cultsword = 5, - /obj/random/balloon = 22, - /obj/item/toy/katana = 11, - /obj/item/toy/bosunwhistle = 5, - /obj/item/storage/belt/champion = 11, - /obj/item/pen/invisible = 5, - /obj/item/grenade/fake = 1, - /obj/item/bikehorn = 11, - /obj/item/clothing/mask/fakemoustache = 11, - /obj/item/clothing/mask/gas/mime = 11, - /obj/item/clothing/shoes/carp = 9, - /obj/item/gun/energy/wand/toy = 5, - /obj/item/device/binoculars = 11, - /obj/item/device/megaphone = 11, - /obj/item/eightball = 11, - /obj/item/eightball/haunted = 1, - /obj/item/eightball/broken = 1, - /obj/item/spirit_board = 5, - /obj/item/device/laser_pointer = 1, - /obj/item/clothing/accessory/badge/press/plastic = 2, - /obj/item/storage/box/partypopper = 11 - ) - -/obj/random/arcade/orion - name = "random arcade loot for orion trails" - desc = "Arcade loot for orion trails aracde machine!" - icon = 'icons/obj/items.dmi' - icon_state = "gift3" - spawnlist = list( - /obj/item/clothing/under/syndicate/tacticool = 7, - /obj/item/toy/sword = 22, - /obj/item/gun/projectile/revolver/capgun = 11, - /obj/item/gun/bang = 22, - /obj/item/toy/crossbow = 11, - /obj/random/action_figure = 11, - /obj/item/toy/cultsword = 7, - /obj/random/balloon = 22, - /obj/item/toy/katana = 11, - /obj/random/plushie = 55, - /obj/item/storage/belt/champion = 11, - /obj/item/pen/invisible = 10, - /obj/item/grenade/fake = 7, - /obj/item/gun/energy/wand/toy = 7, - /obj/item/device/binoculars = 11, - /obj/item/device/megaphone = 11, - /obj/item/eightball = 11, - /obj/item/eightball/haunted = 5, - /obj/item/spirit_board = 5, - /obj/item/clothing/accessory/badge/press/plastic = 2 - ) - -/obj/random/custom_ka - name = "random custom kinetic accelerator" - desc = "Contains random assemblies. The parts may not always be compatible with eachother." - icon = 'icons/obj/kinetic_accelerators.dmi' - icon_state = "frame01" - spawnlist = list( - /obj/item/toy/mech/honk - ) - has_postspawn = TRUE - -/obj/random/custom_ka/post_spawn(obj/thing) - var/list/frames = list( - /obj/item/gun/custom_ka/frame01 = 1, - /obj/item/gun/custom_ka/frame02 = 2, - /obj/item/gun/custom_ka/frame03 = 3, - /obj/item/gun/custom_ka/frame04 = 2, - /obj/item/gun/custom_ka/frame05 = 1 - ) - - var/list/cells = list( - /obj/item/custom_ka_upgrade/cells/cell01 = 2, - /obj/item/custom_ka_upgrade/cells/cell02 = 3, - /obj/item/custom_ka_upgrade/cells/cell03 = 2, - /obj/item/custom_ka_upgrade/cells/cell04 = 1, - /obj/item/custom_ka_upgrade/cells/cell05 = 1 - ) - - var/list/barrels = list( - /obj/item/custom_ka_upgrade/barrels/barrel01 = 2, - /obj/item/custom_ka_upgrade/barrels/barrel02 = 3, - /obj/item/custom_ka_upgrade/barrels/barrel03 = 2, - /obj/item/custom_ka_upgrade/barrels/barrel04 = 1, - /obj/item/custom_ka_upgrade/barrels/barrel05 = 1 - ) - - var/frame_type = pickweight(frames) - var/obj/item/gun/custom_ka/spawned_frame = new frame_type(thing.loc) - - var/cell_type = pickweight(cells) - spawned_frame.installed_cell = new cell_type(spawned_frame) - - var/barrel_type = pickweight(barrels) - spawned_frame.installed_barrel = new barrel_type(spawned_frame) - - spawned_frame.installed_upgrade_chip = new /obj/item/custom_ka_upgrade/upgrade_chips/capacity(spawned_frame) - - spawned_frame.update_icon() - spawned_frame.update_stats() - - qdel(thing) - -/obj/random/prebuilt_ka - name = "random prebuilt kinetic accelerator" - desc = "Contains working kinetic accelerators that were prebuilt in code." - icon = 'icons/obj/kinetic_accelerators.dmi' - icon_state = "frameA" - spawnlist = list( - /obj/item/gun/custom_ka/frame01/prebuilt = 2.5, - /obj/item/gun/custom_ka/frame02/prebuilt = 5, - /obj/item/gun/custom_ka/frame03/prebuilt = 10, - /obj/item/gun/custom_ka/frame04/prebuilt = 5, - /obj/item/gun/custom_ka/frame05/prebuilt = 2.5, - /obj/item/gun/custom_ka/frameA/prebuilt = 1, - /obj/item/gun/custom_ka/frameB/prebuilt = 1, - /obj/item/gun/custom_ka/frameC/prebuilt = 1, - /obj/item/gun/custom_ka/frameD/prebuilt = 1, - /obj/item/gun/custom_ka/frameF/prebuilt01 = 1, - /obj/item/gun/custom_ka/frameF/prebuilt02 = 1 - ) - -/obj/random/vault_rig - name = "random rigsuit" - desc = "Contains a random rigsuit found in the vault." - icon = 'icons/obj/rig_modules.dmi' - icon_state = "breacher_rig" - spawnlist = list( - /obj/item/rig/ce = 1, - /obj/item/rig/eva= 1, - /obj/item/rig/hazard = 1, - /obj/item/rig/hazmat = 1, - /obj/item/rig/medical = 1, - /obj/item/rig/industrial = 1 - ) - -/obj/random/safe_rig - name = "random rigsuit" - desc = "contains a random highvalue rigsuit found in the vault" - icon = 'icons/obj/rig_modules.dmi' - icon_state = "breacher_rig" - spawnlist = list( - /obj/item/rig/combat/equipped = 0.8, - /obj/item/rig/military = 0.3, - /obj/item/rig/hazard/equipped = 0.8, - /obj/item/rig/retro/equipped = 0.8, - /obj/item/rig/ert/security = 0.3, - /obj/item/rig/unathi = 0.4 - ) -/obj/random/telecrystals - name = "random telecrystals" - desc = "Contains a random amount of telecrystals." - icon = 'icons/obj/telescience.dmi' - icon_state = "telecrystal" - spawnlist = list( - /obj/item/stack/telecrystal{amount = 10} = 0.5, - /obj/item/stack/telecrystal{amount = 15} = 0.4, - /obj/item/stack/telecrystal{amount = 20} = 0.3, - /obj/item/stack/telecrystal{amount = 30} = 0.2 - ) - -/obj/random/bad_ai - name = "random evil AI module" - desc = "Contains a random evil AI module." - icon = 'icons/obj/module.dmi' - icon_state = "std_mod" - spawnlist = list( - /obj/item/aiModule/antimov = 1, - /obj/item/aiModule/asimov = 1, - /obj/item/aiModule/purge = 1, - /obj/item/aiModule/quarantine = 1, - /obj/item/aiModule/freeform = 1, - /obj/item/aiModule/oneHuman = 0.5, - /obj/item/aiModule/oxygen = 1 - ) - -/obj/random/rig_module - name = "random rig module" - desc = "Contains a random rig module worthy of vault protection." - icon = 'icons/obj/rig_modules.dmi' - icon_state = "actuators" - spawnlist = list( - /obj/item/rig_module/actuators/combat = 1, - /obj/item/rig_module/chem_dispenser/combat = 1, - /obj/item/rig_module/chem_dispenser/injector = 1, - /obj/item/rig_module/device/emag_hand = 1, - /obj/item/rig_module/device/rfd_c = 1, - /obj/item/rig_module/electrowarfare_suite = 0.5, - /obj/item/rig_module/emp_shielding = 0.5, - /obj/item/rig_module/fabricator/energy_net = 1, - /obj/item/rig_module/fabricator = 0.5, - /obj/item/rig_module/grenade_launcher = 0.5, - /obj/item/rig_module/maneuvering_jets = 0.5, - /obj/item/rig_module/mounted/egun = 1, - /obj/item/rig_module/mounted/smg = 0.5, - /obj/item/rig_module/vision/multi = 0.5 - ) - -/obj/random/finances - name = "random valued item" - desc = "Contains raw valued items like phoron, gold, and money." - spawnlist = list( - /obj/item/spacecash/bundle{worth = 5000} = 0.25, - /obj/item/spacecash/bundle{worth = 10000} = 0.5, - /obj/item/spacecash/bundle{worth = 25000} = 0.25, - /obj/item/stack/material/phoron{amount = 50} = 1, - /obj/item/stack/material/gold{amount = 50} = 1 - ) - - has_postspawn = TRUE - -/obj/random/finances/post_spawn(var/obj/item/spawned) - spawned.update_icon() - -/obj/random/vault_weapon - name = "random vault weapon" - desc = "This is a random vault weapon." - icon = 'icons/obj/guns/caplaser.dmi' - icon_state = "caplaser" - spawnlist = list( - /obj/item/gun/custom_ka/frameA/prebuilt = 1, - /obj/item/gun/custom_ka/frameB/prebuilt = 0.5, - /obj/item/gun/custom_ka/frameC/prebuilt = 0.25, - /obj/item/gun/custom_ka/frameD/prebuilt = 0.125, - /obj/item/gun/custom_ka/frameF/prebuilt01 = 0.03125, - /obj/item/gun/custom_ka/frameF/prebuilt02 = 0.03125, - /obj/item/gun/custom_ka/frameE/prebuilt = 0.03125, - /obj/item/gun/energy/captain/xenoarch = 0.5, - /obj/item/gun/energy/laser/xenoarch = 0.5, - /obj/item/gun/energy/laser/practice/xenoarch = 0.25, - /obj/item/gun/energy/xray/xenoarch = 0.25, - /obj/item/gun/energy/net = 1 - ) - -/obj/random/vault_weapon/post_spawn(var/obj/item/gun/spawned) - spawned.name = "prototype [spawned.name]" - if(istype(spawned,/obj/item/gun/custom_ka/)) - var/obj/item/gun/custom_ka/KA = spawned - KA.can_disassemble_barrel = FALSE - KA.can_disassemble_cell = FALSE - - if(istype(spawned,/obj/item/gun/energy/)) - var/obj/item/gun/energy/E = spawned - E.charge_cost *= 2 - E.self_recharge = 0 - E.reliability = 90 - -/obj/random/animal_crate - name = "random animal" - desc = "Contains a random crate with some animal." - icon = 'icons/obj/structures.dmi' - icon_state = "densecrate" - spawnlist = list( - /obj/structure/largecrate/animal/corgi = 3, - /obj/structure/largecrate/animal/cow = 4, - /obj/structure/largecrate/animal/goat = 3, - /obj/structure/largecrate/animal/cat = 2, - /obj/structure/largecrate/animal/chick = 4, - /obj/structure/largecrate/animal/adhomai = 0.5, - /obj/structure/largecrate/animal/adhomai/fatshouter = 0.5, - /obj/structure/largecrate/animal/adhomai/rafama = 0.5, - /obj/structure/largecrate/animal/adhomai/schlorrgo = 0.2, - /obj/structure/largecrate/animal/hakhma = 0.5 - ) - -/obj/random/random_flag - name = "random flag" - desc = "Contains a random boxed flag or banner." - icon = 'icons/obj/decals.dmi' - icon_state = "flag_boxed" - spawnlist = list( - /obj/item/flag/biesel, - /obj/item/flag/biesel/l, - /obj/item/flag/dominia, - /obj/item/flag/dominia/l, - /obj/item/flag/dpra, - /obj/item/flag/dpra/l, - /obj/item/flag/elyra, - /obj/item/flag/elyra/l, - /obj/item/flag/eridani, - /obj/item/flag/eridani/l, - /obj/item/flag/hegemony, - /obj/item/flag/hegemony/l, - /obj/item/flag/heph, - /obj/item/flag/heph/l, - /obj/item/flag/nralakk, - /obj/item/flag/nralakk/l, - /obj/item/flag/nanotrasen, - /obj/item/flag/nanotrasen/l, - /obj/item/flag/nka, - /obj/item/flag/nka/l, - /obj/item/flag/pra, - /obj/item/flag/pra/l, - /obj/item/flag/sol, - /obj/item/flag/sol/l, - /obj/item/flag/sedantis, - /obj/item/flag/sedantis/l, - /obj/item/flag/zenghu, - /obj/item/flag/zenghu/l, - /obj/item/flag/coalition, - /obj/item/flag/coalition/l - ) - -/obj/random/gift - name = "random gift" - desc = "Contains a randomly sized gift." - icon = 'icons/holidays/christmas/presents.dmi' - icon_state = "gift1" - spawnlist = list( - /obj/item/xmasgift = 0.5, - /obj/item/xmasgift/medium = 0.3, - /obj/item/xmasgift/large = 0.2 - ) - -/obj/random/weapon_and_ammo - name = "random weapon and ammo" - desc = "Summons a random weapon, with ammo if applicable" - icon = 'icons/obj/guns/xenoblaster.dmi' - icon_state = "xenoblaster" - var/chosen_rarity //Can be set to force certain rarity - var/concealable = FALSE //If the gun should fit in a backpack - has_postspawn = TRUE - - var/list/Shoddy = list( - /obj/item/gun/energy/blaster = 1, - /obj/item/gun/energy/retro = 0.5, - /obj/item/gun/energy/toxgun = 0.5, - /obj/item/gun/projectile/automatic/improvised = 1, - /obj/item/gun/projectile/contender = 0.5, - /obj/item/gun/projectile/leyon = 1, - /obj/item/gun/projectile/revolver/derringer = 1, - /obj/item/gun/projectile/shotgun/pump/rifle/obrez = 1, - /obj/item/gun/projectile/shotgun/pump/rifle/vintage = 1, - /obj/item/gun/launcher/harpoon = 1 - ) - - var/list/Common = list( - /obj/item/gun/energy/blaster/carbine = 1, - /obj/item/gun/energy/crossbow/largecrossbow = 1, - /obj/item/gun/energy/laser = 0.5, - /obj/item/gun/energy/pistol = 1, - /obj/item/gun/energy/rifle = 1, - /obj/item/gun/projectile/automatic/c20r = 1, - /obj/item/gun/projectile/automatic/mini_uzi = 1, - /obj/item/gun/projectile/automatic/tommygun = 1, - /obj/item/gun/projectile/automatic/lebman = 1, - /obj/item/gun/projectile/automatic/wt550/lethal = 0.5, - /obj/item/gun/projectile/colt = 0.5, - /obj/item/gun/projectile/colt/super = 1, - /obj/item/gun/projectile/pistol/sol = 1, - /obj/item/gun/projectile/pistol/adhomai = 1, - /obj/item/gun/projectile/revolver/detective = 0.5, - /obj/item/gun/projectile/revolver/adhomian = 1, - /obj/item/gun/projectile/revolver/lemat = 1, - /obj/item/gun/projectile/sec/lethal= 0.5, - /obj/item/gun/projectile/shotgun/doublebarrel/pellet = 1, - /obj/item/gun/projectile/shotgun/pump/rifle = 1, - /obj/item/gun/projectile/tanto = 1, - /obj/item/gun/projectile/gauss = 1, - /obj/item/gun/projectile/revolver/knife = 1 - ) - - var/list/Rare = list( - /obj/item/gun/energy/blaster/revolver = 1, - /obj/item/gun/energy/blaster/rifle = 1, - /obj/item/gun/energy/pistol/hegemony = 1, - /obj/item/gun/energy/rifle/laser = 1, - /obj/item/gun/energy/rifle/icelance = 1, - /obj/item/gun/energy/rifle/ionrifle = 0.5, - /obj/item/gun/energy/vaurca/blaster = 1, - /obj/item/gun/energy/xray = 1, - /obj/item/gun/energy/lasercannon = 1, - /obj/item/gun/projectile/automatic/rifle/sts35 = 1, - /obj/item/gun/projectile/automatic/rifle/shorty = 1, - /obj/item/gun/projectile/automatic/rifle/carbine = 1, - /obj/item/gun/projectile/automatic/x9 = 1, - /obj/item/gun/projectile/deagle = 1, - /obj/item/gun/projectile/deagle/adhomai = 1, - /obj/item/gun/projectile/silenced = 1, - /obj/item/gun/projectile/dragunov = 1, - /obj/item/gun/projectile/plasma/bolter = 0.5, - /obj/item/gun/projectile/shotgun/doublebarrel/sawn = 1, - /obj/item/gun/projectile/shotgun/foldable = 1, - /obj/item/gun/projectile/shotgun/pump/combat = 1, - /obj/item/gun/projectile/shotgun/pump/combat/sol = 1, - /obj/item/gun/projectile/automatic/rifle/adhomian = 1, - /obj/item/gun/projectile/musket = 0.5, - /obj/item/gun/launcher/grenade = 1, - /obj/item/gun/energy/freeze = 0.5 - ) - - var/list/Epic = list( - /obj/item/gun/energy/decloner = 0.5, - /obj/item/gun/energy/rifle/laser/xray = 1, - /obj/item/gun/energy/rifle/laser/tachyon = 1, - /obj/item/gun/energy/sniperrifle = 1, - /obj/item/gun/energy/tesla = 1, - /obj/item/gun/energy/laser/shotgun = 1, - /obj/item/gun/energy/vaurca/gatlinglaser = 1, - /obj/item/gun/projectile/automatic/rifle/shotgun = 0.5, - /obj/item/gun/projectile/automatic/rifle/sol = 1, - /obj/item/gun/projectile/automatic/rifle/w556 = 1, - /obj/item/gun/projectile/automatic/rifle/z8 = 1, - /obj/item/gun/projectile/cannon = 1, - /obj/item/gun/projectile/plasma = 0.5, - /obj/item/gun/projectile/revolver = 0.5 - ) - - var/list/Legendary = list( - /obj/item/gun/energy/lawgiver = 1, - /obj/item/gun/energy/pulse = 1, - /obj/item/gun/energy/pulse/pistol = 1, - /obj/item/gun/energy/rifle/pulse = 1, - /obj/item/gun/projectile/automatic/railgun = 1, - /obj/item/gun/projectile/automatic/rifle/l6_saw = 1, - /obj/item/gun/projectile/automatic/terminator = 1, - /obj/item/gun/projectile/gyropistol = 1, - /obj/item/gun/projectile/nuke = 1, - /obj/item/gun/projectile/revolver/mateba = 1 - ) - -/obj/random/weapon_and_ammo/concealable - concealable = TRUE - -/obj/random/weapon_and_ammo/post_spawn(var/obj/item/gun/projectile/spawned) - if(istype(spawned, /obj/item/gun/energy)) - return - - else if(istype(spawned, /obj/item/gun/projectile)) - if(spawned.magazine_type) - var/obj/item/ammo_magazine/am = spawned.magazine_type - new am(spawned.loc) - new am(spawned.loc) - else if(istype(spawned, /obj/item/gun/projectile/shotgun) && spawned.caliber == "shotgun") - if(istype(spawned.loc, /obj/item/storage/box)) - spawned.loc.icon_state = "largebox" - var/obj/item/storage/box/b = new /obj/item/storage/box(spawned.loc) - for(var/i = 0; i < 8; i++) - new spawned.ammo_type(b) - else if(spawned.ammo_type) - var/list/provided_ammo = list() - for(var/i = 0; i < (spawned.max_shells * 2); i++) - provided_ammo += new spawned.ammo_type(spawned.loc) - if(provided_ammo.len) - new /obj/item/ammo_pile(spawned.loc, provided_ammo) - - if(istype(spawned, /obj/item/gun/projectile/musket)) - new /obj/item/reagent_containers/powder_horn(spawned.loc) - - else if(istype(spawned, /obj/item/gun/launcher)) - if(istype(spawned, /obj/item/gun/launcher/harpoon)) - for(var/i in 1 to 4) - new /obj/item/material/harpoon(spawned.loc) - if(istype(spawned, /obj/item/gun/launcher/grenade)) - var/list/grenade_types = list( - /obj/item/grenade/smokebomb, - /obj/item/grenade/flashbang, - /obj/item/grenade/empgrenade, - /obj/item/grenade/chem_grenade/incendiary - ) - var/obj/item/storage/bag/plasticbag/bag = new /obj/item/storage/bag/plasticbag(spawned.loc) - for(var/i in 1 to 7) - var/chosen_type = pick(grenade_types) - new chosen_type(bag) - -/obj/random/weapon_and_ammo/spawn_item() - var/obj/item/W = pick_gun() - . = new W(loc) - -/obj/random/weapon_and_ammo/proc/pick_gun() - var/list/possible_rarities = list( - "Shoddy" = 25, - "Common" = 35, - "Rare" = 25, - "Epic" = 14, - "Legendary" = 1 - ) - if(!chosen_rarity) - chosen_rarity = pickweight(possible_rarities) - var/obj/item/W - switch(chosen_rarity) - if("Shoddy") - W = pickweight(Shoddy) - if("Common") - W = pickweight(Common) - if("Rare") - W = pickweight(Rare) - if("Epic") - W = pickweight(Epic) - if("Legendary") - W = pickweight(Legendary) - if(concealable) - var/weapon_w_class = initial(W.w_class) - if(weapon_w_class > 3) - chosen_rarity = null - return pick_gun() - - return W - -/obj/random/keg - name = "random alcohol keg" - desc = "Contains a random alcohol keg." - icon = 'icons/obj/reagent_dispensers.dmi' - icon_state = "beertankTEMP" - spawnlist = list( - /obj/structure/reagent_dispensers/keg/beerkeg = 2, - /obj/structure/reagent_dispensers/keg/xuizikeg = 0.5, - /obj/structure/reagent_dispensers/keg/mead = 0.5 - ) - -/obj/random/pizzabox - name = "random pizzabox" - desc = "Contains a random pizzabox." - icon = 'icons/obj/food.dmi' - icon_state = "pizzabox1" - spawnlist = list( - /obj/item/pizzabox/margherita, - /obj/item/pizzabox/vegetable, - /obj/item/pizzabox/mushroom, - /obj/item/pizzabox/meat, - /obj/item/pizzabox/pineapple, - /obj/item/pizzabox/pepperoni - ) - -/obj/random/seed - name = "random seed" - desc = "This is a random normal seed." - icon = 'icons/obj/seeds.dmi' - icon_state = "random" - spawnlist = list( - /obj/item/seeds/limeseed, - /obj/item/seeds/lemonseed, - /obj/item/seeds/orangeseed, - /obj/item/seeds/grapeseed, - /obj/item/seeds/berryseed, - /obj/item/seeds/appleseed, - /obj/item/seeds/bananaseed, - /obj/item/seeds/watermelonseed, - /obj/item/seeds/pumpkinseed, - /obj/item/seeds/wheatseed, - /obj/item/seeds/cornseed, - /obj/item/seeds/riceseed, - /obj/item/seeds/sugarcaneseed, - /obj/item/seeds/carrotseed, - /obj/item/seeds/garlicseed, - /obj/item/seeds/onionseed, - /obj/item/seeds/potatoseed, - /obj/item/seeds/whitebeetseed, - /obj/item/seeds/tomatoseed, - /obj/item/seeds/chiliseed, - /obj/item/seeds/eggplantseed, - /obj/item/seeds/peanutseed, - /obj/item/seeds/soyaseed, - /obj/item/seeds/cabbageseed - ) - -/obj/random/wizard_dressup - name = "random wizard clothes" - desc = "This is a random piece of fake wizard clothing." - icon = 'icons/obj/wizard.dmi' - icon_state = "staff" - has_postspawn = TRUE - -/obj/random/wizard_dressup/spawn_item() - var/obj/item/clothing/suit/wizrobe/W = pick(typesof(/obj/item/clothing/suit/wizrobe)) - . = new W(loc) - -/obj/random/wizard_dressup/post_spawn(obj/thing) - var/obj/item/clothing/head/wizard/H = pick(typesof(/obj/item/clothing/head/wizard)) - new H(loc) - -/obj/random/civgun - name = "random civilian handgun" - desc = "This is a random civilian gun." - icon = 'icons/obj/guns/xenoblaster.dmi' - icon_state = "random" - has_postspawn = TRUE - spawnlist = list( - /obj/item/gun/projectile/leyon, - /obj/item/gun/energy/blaster, - /obj/item/gun/energy/pistol, - /obj/item/gun/projectile/revolver/detective, - /obj/item/gun/projectile/sec/lethal, - /obj/item/gun/projectile/colt, - /obj/item/gun/projectile/pistol, - /obj/item/gun/projectile/pistol/detective, - /obj/item/gun/projectile/pistol/adhomai, - /obj/item/gun/projectile/pistol/sol, - /obj/item/gun/energy/blaster/revolver, - /obj/item/gun/projectile/revolver/lemat, - /obj/item/gun/projectile/tanto, - /obj/item/gun/projectile/automatic/x9, - /obj/item/gun/energy/disruptorpistol, - /obj/item/gun/energy/retro, - ) - -/obj/random/civgun/post_spawn(var/obj/item/gun/projectile/spawned) - if(istype(spawned, /obj/item/gun/energy)) - return - - else if(istype(spawned, /obj/item/gun/projectile)) - if(spawned.magazine_type) - var/obj/item/ammo_magazine/am = spawned.magazine_type - new am(spawned.loc) - new am(spawned.loc) - else if(istype(spawned, /obj/item/gun/projectile/shotgun) && spawned.caliber == "shotgun") - if(istype(spawned.loc, /obj/item/storage/box)) - spawned.loc.icon_state = "largebox" - var/obj/item/storage/box/b = new /obj/item/storage/box(spawned.loc) - for(var/i = 0; i < 8; i++) - new spawned.ammo_type(b) - else if(spawned.ammo_type) - var/list/provided_ammo = list() - for(var/i = 0; i < (spawned.max_shells * 2); i++) - provided_ammo += new spawned.ammo_type(spawned.loc) - if(provided_ammo.len) - new /obj/item/ammo_pile(spawned.loc, provided_ammo) - -/obj/random/civgun/rifle - name = "random civilian longarm" - desc = "This is a random civilian long gun." - icon = 'icons/obj/guns/xenoblaster.dmi' - icon_state = "random" - has_postspawn = TRUE - spawnlist = list( - /obj/item/gun/projectile/automatic/mini_uzi, - /obj/item/gun/projectile/automatic/c20r, - /obj/item/gun/projectile/automatic/wt550/lethal, - /obj/item/gun/projectile/automatic/rifle/carbine, - /obj/item/gun/projectile/automatic/rifle/carbine/civcarbine, - /obj/item/gun/projectile/automatic/tommygun, - /obj/item/gun/projectile/shotgun/pump/rifle, - /obj/item/gun/projectile/shotgun/pump/rifle/pipegun, - /obj/item/gun/projectile/shotgun/pump/rifle/obrez, - /obj/item/gun/projectile/contender, - /obj/item/gun/projectile/shotgun/pump/rifle/vintage, - /obj/item/gun/projectile/gauss, - /obj/item/gun/projectile/gauss/carbine, - /obj/item/gun/projectile/shotgun/pump, - /obj/item/gun/projectile/shotgun/doublebarrel, - /obj/item/gun/projectile/shotgun/doublebarrel/sawn, - /obj/item/gun/projectile/shotgun/foldable, - /obj/item/gun/projectile/revolver, - /obj/item/gun/energy/blaster/carbine, - /obj/item/gun/energy/laser/shotgun, - /obj/item/gun/energy/rifle, - /obj/item/gun/energy/rifle/laser, - /obj/item/gun/energy/gun, - /obj/item/gun/custom_ka/frame04/illegal, - /obj/item/gun/projectile/automatic/lebman, - /obj/item/gun/projectile/pistol/super_heavy, - /obj/item/gun/projectile/deagle, - /obj/item/gun/custom_ka/frame01/illegal - ) - - -/obj/random/voidsuit/freebooter - name = "random freebooter voidsuit" - suitmap = list( - /obj/item/clothing/suit/space/void/engineering = /obj/item/clothing/head/helmet/space/void/engineering, - /obj/item/clothing/suit/space/void/mining = /obj/item/clothing/head/helmet/space/void/mining, - /obj/item/clothing/suit/space/void/merc = /obj/item/clothing/head/helmet/space/void/merc, - /obj/item/clothing/suit/space/void/freelancer = /obj/item/clothing/head/helmet/space/void/freelancer, - /obj/item/rig/industrial, - /obj/item/rig/eva, - /obj/item/rig/hazard, - /obj/item/clothing/suit/space/syndicate/black/red = /obj/item/clothing/head/helmet/space/syndicate/black/red, - /obj/item/clothing/suit/space/syndicate/black = /obj/item/clothing/head/helmet/space/syndicate/black - ) - problist = list( - /obj/item/clothing/suit/space/void/engineering = 3, - /obj/item/clothing/suit/space/void/mining = 3, - /obj/item/clothing/suit/space/void/merc = 1, - /obj/item/clothing/suit/space/void/freelancer = 1, - /obj/item/rig/industrial = 2, - /obj/item/rig/hazard = 1, - /obj/item/rig/eva = 2, - /obj/item/clothing/suit/space/syndicate/black = 1, - /obj/item/clothing/suit/space/syndicate/black/red = 1 - ) - has_postspawn = TRUE - -/obj/random/pottedplant - name = "random potted plant" - desc = "Spawns a random potted plant." - icon = 'icons/obj/plants.dmi' - icon_state = "plant-26" - spawn_nothing_percentage = 1 - -/obj/random/pottedplant/spawn_item() - var/obj/structure/flora/pottedplant/P = null - var/list/unwanted = list( - /obj/structure/flora/pottedplant, // don't want parent base obj - /obj/structure/flora/pottedplant/random, // depreciated - /obj/structure/flora/pottedplant/dead2, // does not fit horizon's aesthetic - /obj/structure/flora/pottedplant/empty - ) - var/list/rare = list( - /obj/structure/flora/pottedplant/eye, - /obj/structure/flora/pottedplant/dead - ) - while(!P) - P = pick(typesof(/obj/structure/flora/pottedplant)) - if(P in unwanted || ((P in rare) && prob(50))) - P = null - . = new P(loc) diff --git a/code/game/objects/random/tech.dm b/code/game/objects/random/tech.dm new file mode 100644 index 00000000000..21182b89c58 --- /dev/null +++ b/code/game/objects/random/tech.dm @@ -0,0 +1,256 @@ +/obj/random/tool + name = "random tool" + desc = "This is a random tool" + icon = 'icons/obj/tools.dmi' + icon_state = "wrench" + spawnlist = list( + /obj/item/screwdriver, + /obj/item/wirecutters, + /obj/item/weldingtool, + /obj/item/crowbar, + /obj/item/wrench, + /obj/item/hammer, + /obj/item/device/flashlight + ) + +/obj/random/technology_scanner + name = "random scanner" + desc = "This is a random technology scanner." + icon = 'icons/obj/device.dmi' + icon_state = "atmos" + problist = list( + /obj/item/device/t_scanner = 5, + /obj/item/device/radio = 2, + /obj/item/device/analyzer = 5 + ) + +/obj/random/powercell + name = "random powercell" + desc = "This is a random powercell." + icon = 'icons/obj/power.dmi' + icon_state = "cell" + problist = list( + /obj/item/cell/crap = 10, + /obj/item/cell = 40, + /obj/item/cell/high = 40, + /obj/item/cell/super = 9, + /obj/item/cell/hyper = 1 + ) + +/obj/random/bomb_supply + name = "bomb supply" + desc = "This is a random bomb supply." + icon = 'icons/obj/assemblies/new_assemblies.dmi' + icon_state = "signaller" + problist = list( + /obj/item/device/assembly/igniter = 2, + /obj/item/device/assembly/prox_sensor = 2, + /obj/item/device/assembly/signaler = 2, + /obj/item/device/multitool = 1, + /obj/item/device/transfer_valve = 0.5 + ) + +/obj/random/toolbox + name = "random toolbox" + desc = "This is a random toolbox." + icon = 'icons/obj/storage/toolbox.dmi' + icon_state = "red" + spawnlist = list( + /obj/item/storage/toolbox/mechanical = 3, + /obj/item/storage/toolbox/electrical = 2, + /obj/item/storage/toolbox/emergency = 1 + ) + +/obj/random/tech_supply + name = "random tech supply" + desc = "This is a random piece of technology supplies." + icon = 'icons/obj/power.dmi' + icon_state = "cell" + problist = list( + /obj/random/powercell = 3, + /obj/random/technology_scanner = 2, + /obj/item/stack/packageWrap = 1, + /obj/random/bomb_supply = 2, + /obj/item/extinguisher = 1, + /obj/item/clothing/gloves/yellow/budget = 1, + /obj/item/stack/cable_coil = 3, + /obj/random/toolbox = 2, + /obj/item/storage/belt/utility = 2, + /obj/random/tool = 5, + /obj/item/tape_roll = 2 + ) + +/obj/random/bad_ai + name = "random evil AI module" + desc = "Contains a random evil AI module." + icon = 'icons/obj/module.dmi' + icon_state = "std_mod" + spawnlist = list( + /obj/item/aiModule/antimov = 1, + /obj/item/aiModule/asimov = 1, + /obj/item/aiModule/purge = 1, + /obj/item/aiModule/quarantine = 1, + /obj/item/aiModule/freeform = 1, + /obj/item/aiModule/oneHuman = 0.5, + /obj/item/aiModule/oxygen = 1 + ) + +/obj/random/rig_module + name = "random rig module" + desc = "Contains a random rig module worthy of vault protection." + icon = 'icons/obj/rig_modules.dmi' + icon_state = "actuators" + spawnlist = list( + /obj/item/rig_module/actuators/combat = 1, + /obj/item/rig_module/chem_dispenser/combat = 1, + /obj/item/rig_module/chem_dispenser/injector = 1, + /obj/item/rig_module/device/emag_hand = 1, + /obj/item/rig_module/device/rfd_c = 1, + /obj/item/rig_module/electrowarfare_suite = 0.5, + /obj/item/rig_module/emp_shielding = 0.5, + /obj/item/rig_module/fabricator/energy_net = 1, + /obj/item/rig_module/fabricator = 0.5, + /obj/item/rig_module/grenade_launcher = 0.5, + /obj/item/rig_module/maneuvering_jets = 0.5, + /obj/item/rig_module/mounted/egun = 1, + /obj/item/rig_module/mounted/smg = 0.5, + /obj/item/rig_module/vision/multi = 0.5 + ) + +/obj/random/voidsuit/freebooter + name = "random freebooter voidsuit" + suitmap = list( + /obj/item/clothing/suit/space/void/engineering = /obj/item/clothing/head/helmet/space/void/engineering, + /obj/item/clothing/suit/space/void/mining = /obj/item/clothing/head/helmet/space/void/mining, + /obj/item/clothing/suit/space/void/merc = /obj/item/clothing/head/helmet/space/void/merc, + /obj/item/clothing/suit/space/void/freelancer = /obj/item/clothing/head/helmet/space/void/freelancer, + /obj/item/rig/industrial, + /obj/item/rig/eva, + /obj/item/rig/hazard, + /obj/item/clothing/suit/space/syndicate/black/red = /obj/item/clothing/head/helmet/space/syndicate/black/red, + /obj/item/clothing/suit/space/syndicate/black = /obj/item/clothing/head/helmet/space/syndicate/black + ) + problist = list( + /obj/item/clothing/suit/space/void/engineering = 3, + /obj/item/clothing/suit/space/void/mining = 3, + /obj/item/clothing/suit/space/void/merc = 1, + /obj/item/clothing/suit/space/void/freelancer = 1, + /obj/item/rig/industrial = 2, + /obj/item/rig/hazard = 1, + /obj/item/rig/eva = 2, + /obj/item/clothing/suit/space/syndicate/black = 1, + /obj/item/clothing/suit/space/syndicate/black/red = 1 + ) + has_postspawn = TRUE + +/obj/random/voidsuit + name = "random voidsuit" + var/damaged = 0 + var/list/suitmap = list( + /obj/item/clothing/suit/space/void = /obj/item/clothing/head/helmet/space/void, + /obj/item/clothing/suit/space/void/engineering = /obj/item/clothing/head/helmet/space/void/engineering, + /obj/item/clothing/suit/space/void/mining = /obj/item/clothing/head/helmet/space/void/mining, + /obj/item/clothing/suit/space/void/medical = /obj/item/clothing/head/helmet/space/void/medical, + /obj/item/clothing/suit/space/void/security = /obj/item/clothing/head/helmet/space/void/security, + /obj/item/clothing/suit/space/void/atmos = /obj/item/clothing/head/helmet/space/void/atmos, + /obj/item/clothing/suit/space/void/merc = /obj/item/clothing/head/helmet/space/void/merc, + /obj/item/clothing/suit/space/void/captain = /obj/item/clothing/head/helmet/space/void/captain, + /obj/item/clothing/suit/space/void/cruiser = /obj/item/clothing/head/helmet/space/void/cruiser, + /obj/item/clothing/suit/space/void/coalition = /obj/item/clothing/head/helmet/space/void/coalition, + /obj/item/clothing/suit/space/void/hos = /obj/item/clothing/head/helmet/space/void/hos, + /obj/item/clothing/suit/space/void/lancer = /obj/item/clothing/head/helmet/space/void/lancer, + /obj/item/clothing/suit/space/void/sci = /obj/item/clothing/head/helmet/space/void/sci, + /obj/item/clothing/suit/space/void/sol = /obj/item/clothing/head/helmet/space/void/sol, + /obj/item/clothing/suit/space/void/hephaestus = /obj/item/clothing/head/helmet/space/void/hephaestus, + /obj/item/clothing/suit/space/void/zenghu = /obj/item/clothing/head/helmet/space/void/zenghu, + /obj/item/clothing/suit/space/void/einstein = /obj/item/clothing/head/helmet/space/void/einstein, + /obj/item/clothing/suit/space/void/zavodskoi = /obj/item/clothing/head/helmet/space/void/zavodskoi + ) + problist = list( + /obj/item/clothing/suit/space/void = 2, + /obj/item/clothing/suit/space/void/engineering = 2, + /obj/item/clothing/suit/space/void/mining = 2, + /obj/item/clothing/suit/space/void/medical = 2.3, + /obj/item/clothing/suit/space/void/security = 1, + /obj/item/clothing/suit/space/void/atmos = 1.5, + /obj/item/clothing/suit/space/void/merc = 0.5, + /obj/item/clothing/suit/space/void/captain = 0.3, + /obj/item/clothing/suit/space/void/cruiser = 0.5, + /obj/item/clothing/suit/space/void/coalition = 1, + /obj/item/clothing/suit/space/void/hos = 0.3, + /obj/item/clothing/suit/space/void/lancer = 0.3, + /obj/item/clothing/suit/space/void/sci = 2, + /obj/item/clothing/suit/space/void/sol = 0.5, + /obj/item/clothing/suit/space/void/zavodskoi = 0.5, + /obj/item/clothing/suit/space/void/einstein = 0.5, + /obj/item/clothing/suit/space/void/hephaestus = 0.5, + /obj/item/clothing/suit/space/void/zenghu = 0.5 + ) + has_postspawn = TRUE + +/obj/random/voidsuit/no_nanotrasen + suitmap = list( + /obj/item/clothing/suit/space/void = /obj/item/clothing/head/helmet/space/void, + /obj/item/clothing/suit/space/void/merc = /obj/item/clothing/head/helmet/space/void/merc, + /obj/item/clothing/suit/space/void/cruiser = /obj/item/clothing/head/helmet/space/void/cruiser, + /obj/item/clothing/suit/space/void/coalition = /obj/item/clothing/head/helmet/space/void/coalition, + /obj/item/clothing/suit/space/void/lancer = /obj/item/clothing/head/helmet/space/void/lancer, + /obj/item/clothing/suit/space/void/sol = /obj/item/clothing/head/helmet/space/void/sol, + /obj/item/clothing/suit/space/void/hephaestus = /obj/item/clothing/head/helmet/space/void/hephaestus, + /obj/item/clothing/suit/space/void/zenghu = /obj/item/clothing/head/helmet/space/void/zenghu, + /obj/item/clothing/suit/space/void/einstein = /obj/item/clothing/head/helmet/space/void/einstein, + /obj/item/clothing/suit/space/void/zavodskoi = /obj/item/clothing/head/helmet/space/void/zavodskoi + ) + problist = list( + /obj/item/clothing/suit/space/void = 2, + /obj/item/clothing/suit/space/void/merc = 0.5, + /obj/item/clothing/suit/space/void/cruiser = 0.5, + /obj/item/clothing/suit/space/void/coalition = 1, + /obj/item/clothing/suit/space/void/lancer = 0.3, + /obj/item/clothing/suit/space/void/sol = 0.5, + /obj/item/clothing/suit/space/void/zavodskoi = 0.5, + /obj/item/clothing/suit/space/void/einstein = 0.5, + /obj/item/clothing/suit/space/void/hephaestus = 0.5, + /obj/item/clothing/suit/space/void/zenghu = 0.5 + ) + +/obj/random/voidsuit/Initialize(mapload, _damaged = 0) + damaged = _damaged + . = ..(mapload) + +/obj/random/voidsuit/post_spawn(obj/item/clothing/suit/space/suit) + var/helmet = suitmap[suit.type] + if (helmet) + new helmet(loc) + else + log_debug("random_obj (voidsuit): Type [suit.type] was unable to spawn a matching helmet!") + new /obj/item/clothing/shoes/magboots(loc) + if (damaged && prob(60)) + suit.create_breaches(pick(DAMAGE_BRUTE, DAMAGE_BURN), rand(1, 5)) +/obj/random/vault_rig + name = "random rigsuit" + desc = "Contains a random rigsuit found in the vault." + icon = 'icons/obj/rig_modules.dmi' + icon_state = "breacher_rig" + spawnlist = list( + /obj/item/rig/ce = 1, + /obj/item/rig/eva= 1, + /obj/item/rig/hazard = 1, + /obj/item/rig/hazmat = 1, + /obj/item/rig/medical = 1, + /obj/item/rig/industrial = 1 + ) + +/obj/random/safe_rig + name = "random rigsuit" + desc = "contains a random highvalue rigsuit found in the vault" + icon = 'icons/obj/rig_modules.dmi' + icon_state = "breacher_rig" + spawnlist = list( + /obj/item/rig/combat/equipped = 0.8, + /obj/item/rig/military = 0.3, + /obj/item/rig/hazard/equipped = 0.8, + /obj/item/rig/retro/equipped = 0.8, + /obj/item/rig/ert/security = 0.3, + /obj/item/rig/unathi = 0.4 + ) diff --git a/code/game/objects/random/weapon.dm b/code/game/objects/random/weapon.dm new file mode 100644 index 00000000000..e978d0bef2d --- /dev/null +++ b/code/game/objects/random/weapon.dm @@ -0,0 +1,245 @@ +/obj/random/energy + name = "random energy weapon" + desc = "This is a random energy weapon." + icon = 'icons/obj/guns/ecarbine.dmi' + icon_state = "energykill100" + problist = list( + /obj/item/gun/energy/rifle/laser = 2, + /obj/item/gun/energy/gun = 2, + /obj/item/gun/energy/stunrevolver = 1 + ) + +/obj/random/projectile + name = "random projectile weapon" + desc = "This is a random projectile weapon." + icon = 'icons/obj/guns/cshotgun.dmi' + icon_state = "cshotgun" + problist = list( + /obj/item/gun/projectile/shotgun/pump = 3, + /obj/item/gun/projectile/automatic/wt550 = 2, + /obj/item/gun/projectile/shotgun/pump/combat = 1 + ) + +/obj/random/handgun + name = "random handgun" + desc = "This is a random handgun." + icon = 'icons/obj/guns/secgun.dmi' + icon_state = "secgun" + problist = list( + /obj/item/gun/projectile/sec = 3, + /obj/item/gun/projectile/sec/wood = 1 + ) + +/obj/random/ammo + name = "random ammunition" + desc = "This is some random ammunition." + icon = 'icons/obj/ammo.dmi' + icon_state = "45-10" + problist = list( + /obj/item/storage/box/beanbags = 6, + /obj/item/storage/box/shotgunammo = 2, + /obj/item/storage/box/shotgunshells = 4, + /obj/item/storage/box/stunshells = 1, + /obj/item/ammo_magazine/c45m = 2, + /obj/item/ammo_magazine/c45m/rubber = 4, + /obj/item/ammo_magazine/c45m/flash = 4, + /obj/item/ammo_magazine/mc9mmt = 2, + /obj/item/ammo_magazine/mc9mmt/rubber = 6 + ) + +/obj/random/melee + name = "random melee weapon" + desc = "This is a random melee weapon." + icon = 'icons/obj/weapons.dmi' + icon_state = "baton" + spawnlist = list( + /obj/item/melee/telebaton, + /obj/item/melee/energy/sword, + /obj/item/melee/energy/sword/pirate, + /obj/item/melee/energy/glaive, + /obj/item/melee/chainsword, + /obj/item/melee/baton/stunrod, + /obj/item/material/harpoon, + /obj/random/sword, + /obj/item/melee/hammer, + /obj/item/melee/hammer/powered, + /obj/item/material/twohanded/fireaxe, + /obj/item/melee/classic_baton, + /obj/item/material/twohanded/pike, + /obj/item/material/twohanded/pike/halberd, + /obj/item/material/twohanded/pike/pitchfork, + /obj/item/melee/whip, + /obj/item/clothing/accessory/storage/bayonet + ) + +/obj/random/melee/highvalue + name = "random high value melee weapon" + desc = "This is a random high value melee weapon." + icon = 'icons/obj/weapons.dmi' + icon_state = "baton" + spawnlist = list( + /obj/item/melee/energy/sword, + /obj/item/melee/energy/glaive, + /obj/item/melee/chainsword, + /obj/item/melee/hammer, + /obj/item/melee/hammer/powered + ) + +/obj/random/energy_antag + name = "random energy weapon" + desc = "This is a random energy weapon." + icon = 'icons/obj/guns/retro.dmi' + icon_state = "retro100" + spawnlist = list( + /obj/item/gun/energy/retro, + /obj/item/gun/energy/xray, + /obj/item/gun/energy/gun, + /obj/item/gun/energy/pistol, + /obj/item/gun/energy/mindflayer, + /obj/item/gun/energy/toxgun, + /obj/item/gun/energy/vaurca/gatlinglaser, + /obj/item/gun/energy/vaurca/blaster, + /obj/item/gun/energy/crossbow/largecrossbow, + /obj/item/gun/energy/rifle, + /obj/item/gun/energy/rifle/laser, + /obj/item/gun/energy/rifle/laser/heavy, + /obj/item/gun/energy/rifle/laser/xray, + /obj/item/gun/energy/net, + /obj/item/gun/energy/laser/shotgun, + /obj/item/gun/energy/decloner, + /obj/item/gun/energy/freeze + ) + +/obj/random/sword + name = "random sword" + desc = "This is a random sword." + icon = 'icons/obj/weapons.dmi' + icon_state = "claymore" + spawnlist = list( + /obj/item/material/sword, + /obj/item/material/sword/katana, + /obj/item/material/sword/rapier, + /obj/item/material/sword/longsword, + /obj/item/material/sword/sabre, + /obj/item/material/sword/axe, + /obj/item/material/sword/khopesh, + /obj/item/material/sword/dao, + /obj/item/material/sword/gladius + ) + +/obj/random/civgun + name = "random civilian handgun" + desc = "This is a random civilian gun." + icon = 'icons/obj/guns/xenoblaster.dmi' + icon_state = "random" + has_postspawn = TRUE + spawnlist = list( + /obj/item/gun/projectile/leyon, + /obj/item/gun/energy/blaster, + /obj/item/gun/energy/pistol, + /obj/item/gun/projectile/revolver/detective, + /obj/item/gun/projectile/sec/lethal, + /obj/item/gun/projectile/colt, + /obj/item/gun/projectile/pistol, + /obj/item/gun/projectile/pistol/detective, + /obj/item/gun/projectile/pistol/adhomai, + /obj/item/gun/projectile/pistol/sol, + /obj/item/gun/energy/blaster/revolver, + /obj/item/gun/projectile/revolver/lemat, + /obj/item/gun/projectile/tanto, + /obj/item/gun/projectile/automatic/x9, + /obj/item/gun/energy/disruptorpistol, + /obj/item/gun/energy/retro, + ) + +/obj/random/civgun/post_spawn(var/obj/item/gun/projectile/spawned) + if(istype(spawned, /obj/item/gun/energy)) + return + + else if(istype(spawned, /obj/item/gun/projectile)) + if(spawned.magazine_type) + var/obj/item/ammo_magazine/am = spawned.magazine_type + new am(spawned.loc) + new am(spawned.loc) + else if(istype(spawned, /obj/item/gun/projectile/shotgun) && spawned.caliber == "shotgun") + if(istype(spawned.loc, /obj/item/storage/box)) + spawned.loc.icon_state = "largebox" + var/obj/item/storage/box/b = new /obj/item/storage/box(spawned.loc) + for(var/i = 0; i < 8; i++) + new spawned.ammo_type(b) + else if(spawned.ammo_type) + var/list/provided_ammo = list() + for(var/i = 0; i < (spawned.max_shells * 2); i++) + provided_ammo += new spawned.ammo_type(spawned.loc) + if(provided_ammo.len) + new /obj/item/ammo_pile(spawned.loc, provided_ammo) + +/obj/random/civgun/rifle + name = "random civilian longarm" + desc = "This is a random civilian long gun." + icon = 'icons/obj/guns/xenoblaster.dmi' + icon_state = "random" + has_postspawn = TRUE + spawnlist = list( + /obj/item/gun/projectile/automatic/mini_uzi, + /obj/item/gun/projectile/automatic/c20r, + /obj/item/gun/projectile/automatic/wt550/lethal, + /obj/item/gun/projectile/automatic/rifle/carbine, + /obj/item/gun/projectile/automatic/rifle/carbine/civcarbine, + /obj/item/gun/projectile/automatic/tommygun, + /obj/item/gun/projectile/shotgun/pump/rifle, + /obj/item/gun/projectile/shotgun/pump/rifle/pipegun, + /obj/item/gun/projectile/shotgun/pump/rifle/obrez, + /obj/item/gun/projectile/contender, + /obj/item/gun/projectile/shotgun/pump/rifle/vintage, + /obj/item/gun/projectile/gauss, + /obj/item/gun/projectile/gauss/carbine, + /obj/item/gun/projectile/shotgun/pump, + /obj/item/gun/projectile/shotgun/doublebarrel, + /obj/item/gun/projectile/shotgun/doublebarrel/sawn, + /obj/item/gun/projectile/shotgun/foldable, + /obj/item/gun/projectile/revolver, + /obj/item/gun/energy/blaster/carbine, + /obj/item/gun/energy/laser/shotgun, + /obj/item/gun/energy/rifle, + /obj/item/gun/energy/rifle/laser, + /obj/item/gun/energy/gun, + /obj/item/gun/custom_ka/frame04/illegal, + /obj/item/gun/projectile/automatic/lebman, + /obj/item/gun/projectile/pistol/super_heavy, + /obj/item/gun/projectile/deagle, + /obj/item/gun/custom_ka/frame01/illegal + ) + +/obj/random/vault_weapon + name = "random vault weapon" + desc = "This is a random vault weapon." + icon = 'icons/obj/guns/caplaser.dmi' + icon_state = "caplaser" + spawnlist = list( + /obj/item/gun/custom_ka/frameA/prebuilt = 1, + /obj/item/gun/custom_ka/frameB/prebuilt = 0.5, + /obj/item/gun/custom_ka/frameC/prebuilt = 0.25, + /obj/item/gun/custom_ka/frameD/prebuilt = 0.125, + /obj/item/gun/custom_ka/frameF/prebuilt01 = 0.03125, + /obj/item/gun/custom_ka/frameF/prebuilt02 = 0.03125, + /obj/item/gun/custom_ka/frameE/prebuilt = 0.03125, + /obj/item/gun/energy/captain/xenoarch = 0.5, + /obj/item/gun/energy/laser/xenoarch = 0.5, + /obj/item/gun/energy/laser/practice/xenoarch = 0.25, + /obj/item/gun/energy/xray/xenoarch = 0.25, + /obj/item/gun/energy/net = 1 + ) + +/obj/random/vault_weapon/post_spawn(var/obj/item/gun/spawned) + spawned.name = "prototype [spawned.name]" + if(istype(spawned,/obj/item/gun/custom_ka/)) + var/obj/item/gun/custom_ka/KA = spawned + KA.can_disassemble_barrel = FALSE + KA.can_disassemble_cell = FALSE + + if(istype(spawned,/obj/item/gun/energy/)) + var/obj/item/gun/energy/E = spawned + E.charge_cost *= 2 + E.self_recharge = 0 + E.reliability = 90 diff --git a/code/game/objects/random/weapon_and_ammo.dm b/code/game/objects/random/weapon_and_ammo.dm new file mode 100644 index 00000000000..a3649f33ca1 --- /dev/null +++ b/code/game/objects/random/weapon_and_ammo.dm @@ -0,0 +1,185 @@ + +/obj/random/weapon_and_ammo + name = "random weapon and ammo" + desc = "Summons a random weapon, with ammo if applicable." + icon = 'icons/obj/guns/xenoblaster.dmi' + icon_state = "xenoblaster" + var/chosen_rarity //Can be set to force certain rarity + var/concealable = FALSE //If the gun should fit in a backpack + has_postspawn = TRUE + + var/list/Shoddy = list( + /obj/item/gun/energy/blaster = 1, + /obj/item/gun/energy/retro = 0.5, + /obj/item/gun/energy/toxgun = 0.5, + /obj/item/gun/projectile/automatic/improvised = 1, + /obj/item/gun/projectile/contender = 0.5, + /obj/item/gun/projectile/leyon = 1, + /obj/item/gun/projectile/revolver/derringer = 1, + /obj/item/gun/projectile/shotgun/pump/rifle/obrez = 1, + /obj/item/gun/projectile/shotgun/pump/rifle/vintage = 1, + /obj/item/gun/launcher/harpoon = 1 + ) + + var/list/Common = list( + /obj/item/gun/energy/blaster/carbine = 1, + /obj/item/gun/energy/crossbow/largecrossbow = 1, + /obj/item/gun/energy/laser = 0.5, + /obj/item/gun/energy/pistol = 1, + /obj/item/gun/energy/rifle = 1, + /obj/item/gun/projectile/automatic/c20r = 1, + /obj/item/gun/projectile/automatic/mini_uzi = 1, + /obj/item/gun/projectile/automatic/tommygun = 1, + /obj/item/gun/projectile/automatic/lebman = 1, + /obj/item/gun/projectile/automatic/wt550/lethal = 0.5, + /obj/item/gun/projectile/colt = 0.5, + /obj/item/gun/projectile/colt/super = 1, + /obj/item/gun/projectile/pistol/sol = 1, + /obj/item/gun/projectile/pistol/adhomai = 1, + /obj/item/gun/projectile/revolver/detective = 0.5, + /obj/item/gun/projectile/revolver/adhomian = 1, + /obj/item/gun/projectile/revolver/lemat = 1, + /obj/item/gun/projectile/sec/lethal= 0.5, + /obj/item/gun/projectile/shotgun/doublebarrel/pellet = 1, + /obj/item/gun/projectile/shotgun/pump/rifle = 1, + /obj/item/gun/projectile/tanto = 1, + /obj/item/gun/projectile/gauss = 1, + /obj/item/gun/projectile/revolver/knife = 1 + ) + + var/list/Rare = list( + /obj/item/gun/energy/blaster/revolver = 1, + /obj/item/gun/energy/blaster/rifle = 1, + /obj/item/gun/energy/pistol/hegemony = 1, + /obj/item/gun/energy/rifle/laser = 1, + /obj/item/gun/energy/rifle/icelance = 1, + /obj/item/gun/energy/rifle/ionrifle = 0.5, + /obj/item/gun/energy/vaurca/blaster = 1, + /obj/item/gun/energy/xray = 1, + /obj/item/gun/energy/lasercannon = 1, + /obj/item/gun/projectile/automatic/rifle/sts35 = 1, + /obj/item/gun/projectile/automatic/rifle/shorty = 1, + /obj/item/gun/projectile/automatic/rifle/carbine = 1, + /obj/item/gun/projectile/automatic/x9 = 1, + /obj/item/gun/projectile/deagle = 1, + /obj/item/gun/projectile/deagle/adhomai = 1, + /obj/item/gun/projectile/silenced = 1, + /obj/item/gun/projectile/dragunov = 1, + /obj/item/gun/projectile/plasma/bolter = 0.5, + /obj/item/gun/projectile/shotgun/doublebarrel/sawn = 1, + /obj/item/gun/projectile/shotgun/foldable = 1, + /obj/item/gun/projectile/shotgun/pump/combat = 1, + /obj/item/gun/projectile/shotgun/pump/combat/sol = 1, + /obj/item/gun/projectile/automatic/rifle/adhomian = 1, + /obj/item/gun/projectile/musket = 0.5, + /obj/item/gun/launcher/grenade = 1, + /obj/item/gun/energy/freeze = 0.5 + ) + + var/list/Epic = list( + /obj/item/gun/energy/decloner = 0.5, + /obj/item/gun/energy/rifle/laser/xray = 1, + /obj/item/gun/energy/rifle/laser/tachyon = 1, + /obj/item/gun/energy/sniperrifle = 1, + /obj/item/gun/energy/tesla = 1, + /obj/item/gun/energy/laser/shotgun = 1, + /obj/item/gun/energy/vaurca/gatlinglaser = 1, + /obj/item/gun/projectile/automatic/rifle/shotgun = 0.5, + /obj/item/gun/projectile/automatic/rifle/sol = 1, + /obj/item/gun/projectile/automatic/rifle/w556 = 1, + /obj/item/gun/projectile/automatic/rifle/z8 = 1, + /obj/item/gun/projectile/cannon = 1, + /obj/item/gun/projectile/plasma = 0.5, + /obj/item/gun/projectile/revolver = 0.5 + ) + + var/list/Legendary = list( + /obj/item/gun/energy/lawgiver = 1, + /obj/item/gun/energy/pulse = 1, + /obj/item/gun/energy/pulse/pistol = 1, + /obj/item/gun/energy/rifle/pulse = 1, + /obj/item/gun/projectile/automatic/railgun = 1, + /obj/item/gun/projectile/automatic/rifle/l6_saw = 1, + /obj/item/gun/projectile/automatic/terminator = 1, + /obj/item/gun/projectile/gyropistol = 1, + /obj/item/gun/projectile/nuke = 1, + /obj/item/gun/projectile/revolver/mateba = 1 + ) + +/obj/random/weapon_and_ammo/concealable + concealable = TRUE + +/obj/random/weapon_and_ammo/post_spawn(var/obj/item/gun/projectile/spawned) + if(istype(spawned, /obj/item/gun/energy)) + return + + else if(istype(spawned, /obj/item/gun/projectile)) + if(spawned.magazine_type) + var/obj/item/ammo_magazine/am = spawned.magazine_type + new am(spawned.loc) + new am(spawned.loc) + else if(istype(spawned, /obj/item/gun/projectile/shotgun) && spawned.caliber == "shotgun") + if(istype(spawned.loc, /obj/item/storage/box)) + spawned.loc.icon_state = "largebox" + var/obj/item/storage/box/b = new /obj/item/storage/box(spawned.loc) + for(var/i = 0; i < 8; i++) + new spawned.ammo_type(b) + else if(spawned.ammo_type) + var/list/provided_ammo = list() + for(var/i = 0; i < (spawned.max_shells * 2); i++) + provided_ammo += new spawned.ammo_type(spawned.loc) + if(provided_ammo.len) + new /obj/item/ammo_pile(spawned.loc, provided_ammo) + + if(istype(spawned, /obj/item/gun/projectile/musket)) + new /obj/item/reagent_containers/powder_horn(spawned.loc) + + else if(istype(spawned, /obj/item/gun/launcher)) + if(istype(spawned, /obj/item/gun/launcher/harpoon)) + for(var/i in 1 to 4) + new /obj/item/material/harpoon(spawned.loc) + if(istype(spawned, /obj/item/gun/launcher/grenade)) + var/list/grenade_types = list( + /obj/item/grenade/smokebomb, + /obj/item/grenade/flashbang, + /obj/item/grenade/empgrenade, + /obj/item/grenade/chem_grenade/incendiary + ) + var/obj/item/storage/bag/plasticbag/bag = new /obj/item/storage/bag/plasticbag(spawned.loc) + for(var/i in 1 to 7) + var/chosen_type = pick(grenade_types) + new chosen_type(bag) + +/obj/random/weapon_and_ammo/spawn_item() + var/obj/item/W = pick_gun() + . = new W(loc) + +/obj/random/weapon_and_ammo/proc/pick_gun() + var/list/possible_rarities = list( + "Shoddy" = 25, + "Common" = 35, + "Rare" = 25, + "Epic" = 14, + "Legendary" = 1 + ) + if(!chosen_rarity) + chosen_rarity = pickweight(possible_rarities) + var/obj/item/W + switch(chosen_rarity) + if("Shoddy") + W = pickweight(Shoddy) + if("Common") + W = pickweight(Common) + if("Rare") + W = pickweight(Rare) + if("Epic") + W = pickweight(Epic) + if("Legendary") + W = pickweight(Legendary) + if(concealable) + var/weapon_w_class = initial(W.w_class) + if(weapon_w_class > 3) + chosen_rarity = null + return pick_gun() + + return W diff --git a/html/changelogs/DreamySkrell-random-dm-split-11111.yml b/html/changelogs/DreamySkrell-random-dm-split-11111.yml new file mode 100644 index 00000000000..a33d8ecbbc8 --- /dev/null +++ b/html/changelogs/DreamySkrell-random-dm-split-11111.yml @@ -0,0 +1,41 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: DreamySkrell + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - refactor: "Split random.dm into categorized files."