Sayu grenade and assembly update

This commit is contained in:
ZomgPonies
2013-11-04 14:31:58 -05:00
parent cc437cbd4b
commit 13985d2f4f
18 changed files with 1520 additions and 463 deletions
+481
View File
@@ -0,0 +1,481 @@
/obj/item/weapon/grenade/chem_grenade/dirt
payload_name = "dirt"
desc = "From the makers of BLAM! brand foaming space cleaner, this bomb guarantees steady work for any janitor."
stage = 2
New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/list/muck = list("blood","carbon","flour","radium")
var/filth = pick(muck - "radium") // not usually radioactive
B1.reagents.add_reagent(filth,25)
if(prob(25))
B1.reagents.add_reagent(pick(muck - filth,25)) // but sometimes...
beakers += B1
/obj/item/weapon/grenade/chem_grenade/meat
payload_name = "meat"
desc = "Not always as messy as the name implies."
stage = 2
New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
B1.reagents.add_reagent("blood",60)
if(prob(5))
B1.reagents.add_reagent("blood",1) // Quality control problems, causes a mess
B2.reagents.add_reagent("clonexadone",30)
beakers += B1
beakers += B2
/obj/item/weapon/grenade/chem_grenade/holywater
payload_name = "holy water"
desc = "Then shalt thou count to three, no more, no less."
stage = 2
det_time = 30
New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/large/B = new(src)
B.reagents.add_reagent("holywater",100)
beakers += B
/obj/item/weapon/grenade/chem_grenade/soap
payload_name = "soap"
desc = "Not necessarily as clean as the name implies."
stage = 2
New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
B1.reagents.add_reagent("cornoil",60)
B2.reagents.add_reagent("enzyme",5)
B2.reagents.add_reagent("ammonia",30)
beakers += B1
beakers += B2
update_icon()
/obj/item/weapon/grenade/chem_grenade/drugs
payload_name = "miracle"
desc = "How does it work?"
stage = 2
New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
B1.reagents.add_reagent("space_drugs", 25)
B1.reagents.add_reagent("mindbreaker", 25)
B1.reagents.add_reagent("potassium", 25)
B2.reagents.add_reagent("phosphorus", 25)
B2.reagents.add_reagent("sugar", 25)
beakers += B1
beakers += B2
update_icon()
/obj/item/weapon/grenade/chem_grenade/ethanol
payload_name = "ethanol"
desc = "Ach, that hits the spot."
stage = 2
New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
B1.reagents.add_reagent("ethanol", 75)
B1.reagents.add_reagent("potassium", 25)
B2.reagents.add_reagent("phosphorus", 25)
B2.reagents.add_reagent("sugar", 25)
B2.reagents.add_reagent("ethanol", 25)
beakers += B1
beakers += B2
update_icon()
// -------------------------------------
// Grenades using new grenade assemblies
// -------------------------------------
/obj/item/weapon/grenade/chem_grenade/lube
payload_name = "lubricant"
stage = 2
New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
B1.reagents.add_reagent("lube",50)
beakers += B1
/obj/item/weapon/grenade/chem_grenade/lube/remote
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
/obj/item/weapon/grenade/chem_grenade/lube/prox
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
/obj/item/weapon/grenade/chem_grenade/lube/tripwire
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/infra)
// Basic explosion grenade
/obj/item/weapon/grenade/chem_grenade/explosion
payload_name = "conventional"
stage = 2
New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
B1.reagents.add_reagent("glycerol",30) // todo: someone says NG is overpowered, test.
B1.reagents.add_reagent("sacid",15)
B2.reagents.add_reagent("sacid",15)
B2.reagents.add_reagent("pacid",30)
beakers += B1
beakers += B2
// Assembly Variants
/obj/item/weapon/grenade/chem_grenade/explosion/remote
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
/obj/item/weapon/grenade/chem_grenade/explosion/prox
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
/obj/item/weapon/grenade/chem_grenade/explosion/mine
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/mousetrap)
// Basic EMP grenade
/obj/item/weapon/grenade/chem_grenade/emp
payload_name = "EMP"
stage = 2
New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
B1.reagents.add_reagent("uranium",50)
B2.reagents.add_reagent("iron",50)
beakers += B1
beakers += B2
// Assembly Variants
/obj/item/weapon/grenade/chem_grenade/emp/remote
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
/obj/item/weapon/grenade/chem_grenade/emp/prox
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
/obj/item/weapon/grenade/chem_grenade/emp/mine
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/mousetrap)
// --------------------------------------
// Dangerous slime core grenades
// --------------------------------------
/*
/obj/item/weapon/grenade/chem_grenade/large/bluespace
payload_name = "bluespace slime"
desc = "A standard grenade casing containing weaponized slime extract."
stage = 2
New()
..()
var/obj/item/slime_extract/bluespace/B1 = new(src)
B1.Uses = rand(1,3)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
B2.reagents.add_reagent("plasma",5 * B1.Uses)
beakers += B1
beakers += B2
/obj/item/weapon/grenade/chem_grenade/large/bluespace/prox
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
/obj/item/weapon/grenade/chem_grenade/large/bluespace/mine
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/mousetrap)
/obj/item/weapon/grenade/chem_grenade/large/bluespace/remote
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
*/
/obj/item/weapon/grenade/chem_grenade/large/monster
payload_name = "gold slime"
desc = "A standard grenade containing weaponized slime extract."
stage = 2
New()
..()
var/obj/item/slime_extract/gold/B1 = new(src)
B1.Uses = rand(1,3)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
B2.reagents.add_reagent("plasma",5 * B1.Uses)
beakers += B1
beakers += B2
/obj/item/weapon/grenade/chem_grenade/large/monster/prox
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
/obj/item/weapon/grenade/chem_grenade/large/monster/mine
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/mousetrap)
/obj/item/weapon/grenade/chem_grenade/large/monster/remote
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
/obj/item/weapon/grenade/chem_grenade/large/feast
payload_name = "silver slime"
desc = "A standard grenade containing weaponized slime extract."
stage = 2
New()
..()
var/obj/item/slime_extract/silver/B1 = new(src)
B1.Uses = rand(1,3)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
B2.reagents.add_reagent("plasma",5 * B1.Uses)
beakers += B1
beakers += B2
// Slime Clusterbusters
/*/obj/item/weapon/grenade/clusterbuster/bluespace
name = "Bluespace Megabomb"
desc = "Widely regarded as proof that while there is a God, He is Insane."
payload = /obj/item/weapon/grenade/chem_grenade/large/bluespace*/
/obj/item/weapon/grenade/clusterbuster/monster
name = "Monster Megabomb"
desc = "Widely regarded as proof that there is no God."
payload = /obj/item/weapon/grenade/chem_grenade/large/monster
// --------------------------------------
// Syndie Kits
// --------------------------------------
/obj/item/weapon/storage/box/syndie_kit/remotegrenade
name = "Remote Grenade Kit"
New()
..()
new /obj/item/weapon/grenade/chem_grenade/explosion/remote(src)
new /obj/item/device/multitool(src) // used to adjust the chemgrenade's signaller
new /obj/item/device/assembly/signaler(src)
return
/obj/item/weapon/storage/box/syndie_kit/remoteemp
name = "Remote EMP Kit"
New()
..()
new /obj/item/weapon/grenade/chem_grenade/emp/remote(src)
new /obj/item/device/multitool(src) // used to adjust the chemgrenade's signaller
new /obj/item/device/assembly/signaler(src)
return
/obj/item/weapon/storage/box/syndie_kit/remotelube
name = "Remote Lube Kit"
New()
..()
new /obj/item/weapon/grenade/chem_grenade/lube(src)
new /obj/item/device/multitool(src) // used to adjust the chemgrenade's signaller
new /obj/item/device/assembly/signaler(src)
return
// --------------------------------------
// Clusterbuster Variable Payload Grenade
// Adapted from flashbang/clusterbang
// --------------------------------------
/obj/item/weapon/grenade/clusterbuster
desc = "This highly intimidating bunch of hardware seems eager to be let loose."
name = "Clusterbang"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang"
var/payload = /obj/item/weapon/grenade/flashbang
// Subtypes
// Serious grenades
/obj/item/weapon/grenade/clusterbuster/explosion
name = "Cluster Grenade"
payload = /obj/item/weapon/grenade/chem_grenade/explosion
/obj/item/weapon/grenade/clusterbuster/emp
name = "Electromagnetic Storm"
payload = /obj/item/weapon/grenade/chem_grenade/emp
/obj/item/weapon/grenade/clusterbuster/smoke
name = "Ninja Vanish"
payload = /obj/item/weapon/grenade/smokebomb
// Not serious grenades
/obj/item/weapon/grenade/clusterbuster/meat
name = "Mega Meat Grenade"
payload = /obj/item/weapon/grenade/chem_grenade/meat
/obj/item/weapon/grenade/clusterbuster/booze
name = "Booze Grenade"
payload = /obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink
/obj/item/weapon/grenade/clusterbuster/honk
name = "Mega Honk Grenade"
payload = /obj/item/weapon/bananapeel
/obj/item/weapon/grenade/clusterbuster/xmas
name = "Christmas Miracle"
payload = /obj/item/weapon/a_gift
/obj/item/weapon/grenade/clusterbuster/soap
name = "Megamaid's Passive-Aggressive Soap-creation Grenade"
payload = /obj/item/weapon/grenade/chem_grenade/soap
/obj/item/weapon/grenade/clusterbuster/dirt
name = "Megamaid's Job Security Grenade"
payload = /obj/effect/decal/cleanable/random
/obj/item/weapon/grenade/clusterbuster/megadirt
name = "Megamaid's Revenge Grenade"
payload = /obj/item/weapon/grenade/chem_grenade/dirt
/obj/item/weapon/grenade/clusterbuster/inferno
name = "Little Boy"
payload = /obj/item/weapon/grenade/chem_grenade/incendiary
/obj/item/weapon/grenade/clusterbuster/apocalypsefake
name = "Fun Bomb"
desc = "Not like the other bomb."
payload = /obj/item/toy/spinningtoy
// Grenades that should never see the light of day
/obj/item/weapon/grenade/clusterbuster/apocalypse
name = "Apocalypse Bomb"
desc = "No matter what, do not EVER use this."
payload = /obj/machinery/singularity
/obj/item/weapon/grenade/clusterbuster/ultima
name = "Earth Shattering Kaboom"
desc = "Contains one Aludium Q-36 explosive space modulator."
payload = /obj/item/weapon/grenade/chem_grenade/explosion
/obj/item/weapon/grenade/clusterbuster/lube
name = "Newton's First Law"
desc = "An object in motion remains in motion."
payload = /obj/item/weapon/grenade/chem_grenade/lube
/*/obj/item/weapon/grenade/clusterbuster/bluespace
name = "Maximum Warp"
desc = "Spacetime: Nice job breaking it, hero."
payload = /obj/item/weapon/grenade/chem_grenade/large/bluespace*/
/obj/item/weapon/grenade/clusterbuster/monster
name = "The Monster Mash"
desc = "It's a graveyeard smash."
payload = /obj/item/weapon/grenade/chem_grenade/large/monster
/obj/item/weapon/grenade/clusterbuster/banquet
name = "Bork Bork Bonanza"
desc = "Bork bork bork."
payload = /obj/item/weapon/grenade/clusterbuster/banquet/child
child
payload = /obj/item/weapon/grenade/chem_grenade/large/feast
// Mob spawning grenades
/obj/item/weapon/grenade/clusterbuster/aviary
name = "Poly-Poly Grenade"
desc = "That's an uncomfortable number of birds."
payload = /mob/living/simple_animal/parrot
/obj/item/weapon/grenade/clusterbuster/monkey
name = "Barrel of Monkeys"
desc = "Not really that much fun."
payload = /mob/living/carbon/monkey
/obj/item/weapon/grenade/clusterbuster/fluffy
name = "Fluffy Love Bomb"
desc = "Exactly as snuggly as it sounds."
payload = /mob/living/simple_animal/corgi/puppy
/obj/item/weapon/grenade/clusterbuster/prime()
var/numspawned = rand(4,8)
var/again = 0
for(var/more = numspawned,more > 0,more--)
if(prob(35))
again++
numspawned --
for(,numspawned > 0, numspawned--)
spawn(0)
new /obj/item/weapon/grenade/clusterbuster/node(src.loc,payload,name)//Launches payload
playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
for(,again > 0, again--)
spawn(0)
new /obj/item/weapon/grenade/clusterbuster/segment(src.loc,payload,name)//Creates a 'segment' that launches more payloads
playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
spawn(0)
del(src)
return
/obj/item/weapon/grenade/clusterbuster/segment
desc = "What's happening? Aaah!"
name = "clusterbuster segment"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang_segment"
/obj/item/weapon/grenade/clusterbuster/segment/New(var/turf/newloc,var/T,var/N)//Segments should never exist except part of the clusterbang, since these immediately 'do their thing' and asplode
icon_state = "clusterbang_segment_active"
active = 1
payload = T
name = N
var/stepdist = rand(1,5) //How far to step
var/temploc = src.loc //Saves the current location to know where to step away from
walk_away(src,temploc,stepdist) //I must go, my people need me
var/dettime = rand(15,60)
spawn(dettime)
prime()
/obj/item/weapon/grenade/clusterbuster/segment/prime()
var/numspawned = rand(4,8)
for(var/more = numspawned,more > 0,more--)
if(prob(35))
numspawned --
for(,numspawned > 0, numspawned--)
new /obj/item/weapon/grenade/clusterbuster/node(src.loc,payload)
spawn(0)
playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
del(src)
return
/obj/item/weapon/grenade/clusterbuster/node/New(var/turf/newloc,var/T,var/N)
icon_state = "flashbang_active"
active = 1
payload = T
name = N
var/stepdist = rand(1,4)
var/temploc = src.loc
walk_away(src,temploc,stepdist)
var/dettime = rand(15,60)
spawn(dettime)
var/atom/A = new payload(loc)
if(istype(A,/obj/item/weapon/grenade))
A:prime()
if(istype(A,/obj/machinery/singularity)) // I can't emphasize enough how much you should never use this grenade
A:energy = 200
del src
+370
View File
@@ -0,0 +1,370 @@
// -------------------------------------
// Generates an innocuous toy
// -------------------------------------
/obj/item/toy/random
name = "Random Toy"
New()
..()
var/list/types = list(/obj/item/toy/crossbow,/obj/item/toy/balloon,/obj/item/toy/spinningtoy,/obj/item/weapon/reagent_containers/spray/waterflower) + typesof(/obj/item/toy/prize) - /obj/item/toy/prize
var/T = pick(types)
new T(loc)
spawn(1)
del src
// -------------------------------------
// Random cleanables, clearly this makes sense
// -------------------------------------
/obj/effect/decal/cleanable/random
name = "Random Mess"
New()
..()
var/list/list = typesof(/obj/effect/decal/cleanable) - list(/obj/effect/decal/cleanable,/obj/effect/decal/cleanable/random,/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/cobweb2)
var/T = pick(list)
new T(loc)
spawn(0)
del src
/obj/item/stack/sheet/animalhide/random
name = "Random animal hide"
New()
..()
spawn(1)
var/htype = pick(/obj/item/stack/sheet/animalhide/cat,/obj/item/stack/sheet/animalhide/corgi,/obj/item/stack/sheet/animalhide/human,/obj/item/stack/sheet/animalhide/lizard,/obj/item/stack/sheet/animalhide/monkey)
var/obj/item/stack/S = new htype(loc)
S.amount = amount
del src
// -------------------------------------
// Not yet identified chemical.
// Could be anything!
// -------------------------------------
/obj/item/weapon/reagent_containers/glass/bottle/random_reagent
name = "unlabelled bottle"
// identify_probability = 0
New()
..()
var/datum/reagent/R = pick(chemical_reagents_list)
var/global/list/rare_chems = list("minttoxin","nanites","xenomicrobes","adminordrazine")
if(R == "blood" && prob(50)) // in contrast to pills, it is entirely reasonable to have vials of virus-free blood lying around.
var/datum/disease/advance/F = new(0) // By entirely reasonable I mean even odds. Let's not get crazy, here.
var/list/data = list("viruses"= list(F))
reagents.add_reagent(R,volume,data)
else
if(rare_chems.Find(R))
reagents.add_reagent(R,10)
else
reagents.add_reagent(R,rand(2,3)*10)
pixel_x = rand(-10,10)
pixel_y = rand(-10,10)
//Cuts out the food and drink reagents
/obj/item/weapon/reagent_containers/glass/bottle/random_chem
name = "unlabelled chemical bottle"
// identify_probability = 0
New()
..()
var/global/list/chems_only = list("slimejelly","blood","water","lube","anti_toxin","toxin","cyanide","stoxin","inaprovaline","space_drugs","serotrotium","oxygen","copper","nitrogen","hydrogen","potassium","mercury","sulfur","carbon","chlorine","fluorine","sodium","phosphorus","lithium","sugar","sacid","pacid","glycerol","radium","ryetalyn","thermite","mutagen","virusfood","iron","gold","silver","uranium","aluminum","silicon","fuel","cleaner","plantbgone","plasma","leporazine","cryptobiolin","lexorin","kelotane","dermaline","dexalin","dexalinp","tricordrazine","synaptizine","impedrezene","hyronalin","arithrazine","alkysine","imidazoline","bicaridine","hyperzine","cryoxadone","clonexadone","spaceacillin","carpotoxin","zombiepowder","mindbreaker","fluorosurfactant","foaming_agent","ethanol","ammonia","diethylamine","ethylredoxrazine","chloralhydrate","lipozine","condensedcapsaicin","frostoil","amatoxin","psilocybin","enzyme","nothing","doctorsdelight","antifreeze","neurotoxin")
var/global/list/rare_chems = list("minttoxin","nanites","xenomicrobes","adminordrazine")
var/datum/reagent/R = pick(chems_only + rare_chems)
if(R == "blood" && prob(50))
var/datum/disease/advance/F = new(0)
var/list/data = list("viruses"= list(F))
reagents.add_reagent(R,volume,data)
else
if(rare_chems.Find(R))
reagents.add_reagent(R,10)
else
reagents.add_reagent(R,rand(2,3)*10)
name = "unlabelled bottle"
pixel_x = rand(-10,10)
pixel_y = rand(-10,10)
/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem
name = "unlabelled chemical bottle"
// identify_probability = 0
New()
..()
var/global/list/base_chems = list("water","oxygen","nitrogen","hydrogen","potassium","mercury","carbon","chlorine","fluorine","phosphorus","lithium","sulfur","sacid","radium","iron","aluminum","silicon","sugar","ethanol")
var/datum/reagent/R = pick(base_chems)
reagents.add_reagent(R,rand(2,6)*5)
name = "unlabelled bottle"
pixel_x = rand(-10,10)
pixel_y = rand(-10,10)
/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink
name = "unlabelled drink"
icon = 'icons/obj/drinks.dmi'
New()
..()
var/list/drinks_only = list("beer2","hot_coco","orangejuice","tomatojuice","limejuice","carrotjuice","berryjuice","poisonberryjuice","watermelonjuice","lemonjuice","banana","nothing","potato","milk","soymilk","cream","coffee","tea","icecoffee","icetea","cola","nuka_cola","spacemountainwind","thirteenloko","dr_gibb","space_up","lemon_lime","beer","whiskey","gin","rum","vodka","holywater","tequilla","vermouth","wine","tonic","kahlua","cognac","hooch","ale","sodawater","ice","bilk","atomicbomb","threemileisland","goldschlager","patron","gintonic","cubalibre","whiskeycola","martini","vodkamartini","whiterussian","screwdrivercocktail","booger","bloodymary","gargleblaster","bravebull","tequillasunrise","toxinsspecial","beepskysmash","doctorsdelight","irishcream","manlydorf","longislandicedtea","moonshine","b52","irishcoffee","margarita","blackrussian","manhattan","manhattan_proj","whiskeysoda","antifreeze","barefoot","snowwhite","demonsblood","vodkatonic","ginfizz","bahama_mama","singulo","sbiten","devilskiss","red_mead","mead","iced_beer","grog","aloe","andalusia","alliescocktail","soy_latte","cafe_latte","acidspit","amasec","neurotoxin","hippiesdelight","bananahonk","silencer","changelingsting","irishcarbomb","syndicatebomb","erikasurprise","driestmartini")
if(prob(50))
drinks_only += list("chloralhydrate","adminordrazine","mindbreaker","tricordrazine","blood")
var/datum/reagent/R = pick(drinks_only)
if(R == "blood" && prob(40)) // it's entirely natural for you to have blood in drinking bottles.
var/datum/disease/advance/F = new(0) // it only rarely has to do with diseases.
var/list/data = list("viruses"= list(F))
reagents.add_reagent(R,volume,data)
else
reagents.add_reagent(R,volume)
name = "unlabelled bottle"
icon_state = pick("alco-white","alco-green","alco-blue","alco-clear","alco-red")
pixel_x = rand(-5,5)
pixel_y = rand(-5,5)
/obj/item/weapon/reagent_containers/food/drinks/bottle/random_reagent // Same as the chembottle code except the container
name = "unlabelled drink?"
icon = 'icons/obj/drinks.dmi'
New()
..()
var/datum/reagent/R = pick(chemical_reagents_list)
var/global/list/rare_chems = list("minttoxin","nanites","xenomicrobes","adminordrazine")
if(R == "blood" && prob(50))
var/datum/disease/advance/F = new(0)
var/list/data = list("viruses"= list(F))
reagents.add_reagent(R,volume,data)
else
if(rare_chems.Find(R))
reagents.add_reagent(R,10)
else
reagents.add_reagent(R,rand(3,10)*10)
name = "unlabelled bottle"
icon_state = pick("alco-white","alco-green","alco-blue","alco-clear","alco-red")
pixel_x = rand(-5,5)
pixel_y = rand(-5,5)
spawn(0)
del src
/obj/item/weapon/storage/pill_bottle/random_meds
name = "unlabelled pillbottle"
desc = "The sheer recklessness of this bottle's existence astounds you."
New()
..()
var/global/list/meds_only = list("anti_toxin","toxin","cyanide","stoxin","inaprovaline","space_drugs","serotrotium","ryetalyn","mutagen","leporazine","cryptobiolin","lexorin","kelotane","dermaline","dexalin","dexalinp","tricordrazine","synaptizine","impedrezene","hyronalin","arithrazine","alkysine","imidazoline","bicaridine","hyperzine","spaceacillin","carpotoxin","zombiepowder","mindbreaker","ethanol","ammonia","diethylamine","ethylredoxrazine","chloralhydrate","lipozine","condensedcapsaicin","frostoil","amatoxin","psilocybin","nothing","doctorsdelight","neurotoxin")
var/global/list/rare_meds = list("nanites","xenomicrobes","minttoxin","adminordrazine","blood")
var/i = 1
while(i < storage_slots)
var/datum/reagent/R
if(prob(50))
R = pick(meds_only + rare_meds)
else
R = pick(meds_only)
var/obj/item/weapon/reagent_containers/pill/P = new(src)
if(R == "blood") // 100% disease chance. Why else would you make a blood pill? I can think of nothing.
var/datum/disease/advance/F = new(0) // okay maybe vampires but that's about it
var/list/data = list("viruses"= list(F))
P.reagents.add_reagent(R,P.volume,data)
else
if(rare_meds.Find(R))
P.reagents.add_reagent(R,10)
else
P.reagents.add_reagent(R,rand(2,5)*10)
P.name = "Unlabelled Pill"
P.desc = "Something about this pill entices you to try it, against your better judgement."
i++
pixel_x = rand(-10,10)
pixel_y = rand(-10,10)
return
// -------------------------------------
// Containers full of unknown crap
// -------------------------------------
/obj/structure/closet/crate/secure/unknownchemicals
name = "Grey-market Chemicals Grab Pack"
desc = "Crate full of chemicals of unknown type and value from a 'trusted' source."
req_one_access = list(access_chemistry,access_research,access_qm) // the qm knows a guy, you see.
New()
..()
sleep(2)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_chem(src)
while(prob(50))
new/obj/item/weapon/reagent_containers/glass/bottle/random_reagent(src)
new/obj/item/weapon/storage/pill_bottle/random_meds(src)
while(prob(25))
new/obj/item/weapon/storage/pill_bottle/random_meds(src)
return
/obj/structure/closet/crate/secure/chemicals
name = "Chemical Supply Kit"
desc = "Full of basic chemistry supplies."
req_one_access = list(access_chemistry,access_research)
New()
..()
sleep(2)
var/global/list/base_chems = list("water","oxygen","nitrogen","hydrogen","potassium","mercury","carbon","chlorine","fluorine","phosphorus","lithium","sulfur","sacid","radium","iron","aluminum","silicon","sugar","ethanol")
for(var/chem in base_chems)
var/obj/item/weapon/reagent_containers/glass/bottle/B = new(src)
B.reagents.add_reagent(chem,B.volume)
if(prob(85))
var/datum/reagent/r = chemical_reagents_list[chem]
B.name = "[r.name] bottle"
// B.identify_probability = 100
else
B.name = "unlabelled bottle"
B.desc = "Looks like the label fell off."
// B.identify_probability = 0
/obj/structure/closet/crate/bin/flowers
name = "flower barrel"
desc = "A bin full of fresh flowers for the bereaved."
anchored = 0
New()
while(contents.len < 10)
var/flowertype = pick(/obj/item/weapon/grown/sunflower,/obj/item/weapon/grown/novaflower,/obj/item/weapon/reagent_containers/food/snacks/grown/poppy,
/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/moonflower)
var/atom/movable/AM = new flowertype(src)
AM.pixel_x = rand(-10,10)
AM.pixel_y = rand(-5,5)
/obj/structure/closet/crate/bin/plants
name = "plant barrel"
desc = "Caution: Contents may contain vitamins and minerals. It is recommended that you deep fry them before eating."
anchored = 0
New()
while(contents.len < 10)
var/ptype = pick(/obj/item/weapon/reagent_containers/food/snacks/grown/apple,/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
/obj/item/weapon/reagent_containers/food/snacks/grown/berries, /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage,
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot, /obj/item/weapon/reagent_containers/food/snacks/grown/cherries,
/obj/item/weapon/reagent_containers/food/snacks/grown/chili, /obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod,
/obj/item/weapon/reagent_containers/food/snacks/grown/corn, /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant,
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes, /obj/item/weapon/reagent_containers/food/snacks/grown/greengrapes,
/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper, /obj/item/weapon/reagent_containers/food/snacks/grown/lemon,
/obj/item/weapon/reagent_containers/food/snacks/grown/lime, /obj/item/weapon/reagent_containers/food/snacks/grown/orange,
/obj/item/weapon/reagent_containers/food/snacks/grown/potato, /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin,
/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans, /obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane,
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato, /obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,
/obj/item/weapon/reagent_containers/food/snacks/grown/wheat, /obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet,
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle, /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet)
var/obj/O = new ptype(src)
O.pixel_x = rand(-10,10)
O.pixel_y = rand(-5,5)
/obj/structure/closet/secure_closet/random_drinks
name = "Unlabelled Booze"
req_access = list(access_bar)
icon_state = "cabinetdetective_locked"
icon_closed = "cabinetdetective"
icon_locked = "cabinetdetective_locked"
icon_opened = "cabinetdetective_open"
icon_broken = "cabinetdetective_broken"
icon_off = "cabinetdetective_broken"
New()
..()
sleep(2)
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
while(prob(25))
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_reagent(src)
return
// -------------------------------------
// Do not order this.
// If you order this, do not open it.
// If you open this, run.
// If you didn't run, pray.
// -------------------------------------
/obj/structure/largecrate/evil
name = "\improper Mysterious Crate"
desc = "What could it be?"
attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/crowbar))
var/list/menace = pick( /mob/living/simple_animal/hostile/carp,/mob/living/simple_animal/hostile/faithless,/mob/living/simple_animal/hostile/pirate,
/mob/living/simple_animal/hostile/creature,/mob/living/simple_animal/hostile/pirate/ranged,
/mob/living/simple_animal/hostile/hivebot,/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/pirate)
visible_message("\red Something falls out of the [src]!")
var/obj/item/weapon/grenade/flashbang/clusterbang/C = new(src.loc)
C.prime()
spawn(10)
new menace(src.loc)
while(prob(15))
new menace(get_step_rand(src.loc))
..()
else
..()
//
//
//
// ???
//
//
//
/obj/structure/largecrate/schrodinger
name = "Schrodinger's Crate"
desc = "What happens if you open it?"
attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/crowbar))
var/mob/living/simple_animal/cat/Cat1 = new(loc)
Cat1.apply_damage(250)//,TOX)
Cat1.name = "Schrodinger's Cat"
Cat1.desc = "It seems it's been dead for a while."
var/mob/living/simple_animal/cat/Cat2 = new(loc)
Cat2.name = "Schrodinger's Cat"
Cat2.desc = "It's was alive the whole time!"
sleep(2)
if(prob(50))
del Cat1
else
del Cat2
..()
// --------------------------------------
// Collen's box of wonder and mystery
// --------------------------------------
/obj/item/weapon/storage/box/grenades
name = "tactical grenades"
desc = "A box with 6 tactical grenades."
icon_state = "flashbang"
var/list/grenadelist = list(/obj/item/weapon/grenade/chem_grenade/metalfoam, /obj/item/weapon/grenade/chem_grenade/incendiary,
/obj/item/weapon/grenade/chem_grenade/antiweed, /obj/item/weapon/grenade/chem_grenade/cleaner, /obj/item/weapon/grenade/chem_grenade/teargas,
/obj/item/weapon/grenade/chem_grenade/holywater, /obj/item/weapon/grenade/chem_grenade/soap, /obj/item/weapon/grenade/chem_grenade/meat,
/obj/item/weapon/grenade/chem_grenade/dirt, /obj/item/weapon/grenade/chem_grenade/lube, /obj/item/weapon/grenade/smokebomb,
/obj/item/weapon/grenade/chem_grenade/drugs, /obj/item/weapon/grenade/chem_grenade/ethanol) // holy list batman
New()
..()
var/nade1 = pick(grenadelist)
var/nade2 = pick(grenadelist)
var/nade3 = pick(grenadelist)
var/nade4 = pick(grenadelist)
var/nade5 = pick(grenadelist)
var/nade6 = pick(grenadelist)
new nade1(src)
new nade2(src)
new nade3(src)
new nade4(src)
new nade5(src)
new nade6(src)