mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-28 03:01:37 +00:00
* youtube 2008 die sound effect * I take pride in my work * noisecannonsbegone * armalis clothing shit
912 lines
31 KiB
Plaintext
912 lines
31 KiB
Plaintext
|
|
/*
|
|
* Backpack
|
|
*/
|
|
|
|
/obj/item/storage/backpack
|
|
name = "backpack"
|
|
desc = "You wear this on your back and put items into it."
|
|
icon_state = "backpack"
|
|
item_state = "backpack"
|
|
lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/clothing_righthand.dmi'
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
slot_flags = SLOT_BACK //ERROOOOO
|
|
max_w_class = WEIGHT_CLASS_NORMAL
|
|
max_combined_w_class = 21
|
|
storage_slots = 21
|
|
resistance_flags = NONE
|
|
max_integrity = 300
|
|
sprite_sheets = list(
|
|
"Vox" = 'icons/mob/clothing/species/vox/back.dmi',
|
|
"Grey" = 'icons/mob/clothing/species/grey/back.dmi'
|
|
)
|
|
|
|
/obj/item/storage/backpack/attackby(obj/item/W as obj, mob/user as mob, params)
|
|
if(in_range(user, src))
|
|
playsound(src.loc, "rustle", 50, 1, -5)
|
|
return ..()
|
|
|
|
/obj/item/storage/backpack/examine(mob/user)
|
|
var/space_used = 0
|
|
. = ..()
|
|
if(in_range(user, src))
|
|
for(var/obj/item/I in contents)
|
|
space_used += I.w_class
|
|
if(!space_used)
|
|
. += "<span class='notice'> [src] is empty.</span>"
|
|
else if(space_used <= max_combined_w_class * 0.6)
|
|
. += "<span class='notice'> [src] still has plenty of remaining space.</span>"
|
|
else if(space_used <= max_combined_w_class * 0.8)
|
|
. += "<span class='notice'> [src] is beginning to run out of space.</span>"
|
|
else if(space_used < max_combined_w_class)
|
|
. += "<span class='notice'> [src] doesn't have much space left.</span>"
|
|
else
|
|
. += "<span class='notice'> [src] is full.</span>"
|
|
|
|
/*
|
|
* Backpack Types
|
|
*/
|
|
|
|
/obj/item/storage/backpack/holding
|
|
name = "Bag of Holding"
|
|
desc = "A backpack that opens into a localized pocket of Bluespace."
|
|
origin_tech = "bluespace=5;materials=4;engineering=4;plasmatech=5"
|
|
icon_state = "holdingpack"
|
|
item_state = "holdingpack"
|
|
max_w_class = WEIGHT_CLASS_BULKY
|
|
max_combined_w_class = 28
|
|
resistance_flags = FIRE_PROOF
|
|
flags_2 = NO_MAT_REDEMPTION_2
|
|
cant_hold = list(/obj/item/storage/backpack, /obj/item/storage/belt/bluespace)
|
|
cant_hold_override = list(/obj/item/storage/backpack/satchel_flat)
|
|
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 60, ACID = 50)
|
|
|
|
/obj/item/storage/backpack/holding/attackby(obj/item/W, mob/user, params)
|
|
if(istype(W, /obj/item/storage/backpack/holding))
|
|
var/response = alert(user, "This creates a singularity, destroying you and much of the station. Are you SURE?","IMMINENT DEATH!", "No", "Yes")
|
|
if(response == "Yes")
|
|
user.visible_message("<span class='warning'>[user] grins as [user.p_they()] begin[user.p_s()] to put a Bag of Holding into a Bag of Holding!</span>", "<span class='warning'>You begin to put the Bag of Holding into the Bag of Holding!</span>")
|
|
if(do_after(user, 30, target=src))
|
|
investigate_log("has become a singularity. Caused by [user.key]","singulo")
|
|
user.visible_message("<span class='warning'>[user] erupts in evil laughter as [user.p_they()] put[user.p_s()] the Bag of Holding into another Bag of Holding!</span>", "<span class='warning'>You can't help but laugh wildly as you put the Bag of Holding into another Bag of Holding, complete darkness surrounding you.</span>","<span class='warning'> You hear the sound of scientific evil brewing! </span>")
|
|
qdel(W)
|
|
var/obj/singularity/singulo = new /obj/singularity(get_turf(user))
|
|
singulo.energy = 300 //To give it a small boost
|
|
message_admins("[key_name_admin(user)] detonated a bag of holding <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
|
|
log_game("[key_name(user)] detonated a bag of holding")
|
|
qdel(src)
|
|
else
|
|
user.visible_message("After careful consideration, [user] has decided that putting a Bag of Holding inside another Bag of Holding would not yield the ideal outcome.","You come to the realization that this might not be the greatest idea.")
|
|
else
|
|
. = ..()
|
|
|
|
/obj/item/storage/backpack/holding/singularity_act(current_size)
|
|
var/dist = max((current_size - 2), 1)
|
|
explosion(loc, dist, (dist * 2), (dist * 4))
|
|
|
|
/obj/item/storage/backpack/santabag
|
|
name = "Santa's Gift Bag"
|
|
desc = "Space Santa uses this to deliver toys to all the nice children in space on Christmas! Wow, it's pretty big!"
|
|
icon_state = "giftbag0"
|
|
item_state = "giftbag0"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
max_w_class = WEIGHT_CLASS_NORMAL
|
|
max_combined_w_class = 400 // can store a ton of shit!
|
|
|
|
/obj/item/storage/backpack/cultpack
|
|
name = "trophy rack"
|
|
desc = "It's useful for both carrying extra gear and proudly declaring your insanity."
|
|
icon_state = "cultpack"
|
|
item_state = "cultpack"
|
|
|
|
/obj/item/storage/backpack/clown
|
|
name = "Giggles Von Honkerton"
|
|
desc = "It's a backpack made by Honk! Co."
|
|
icon_state = "clownpack"
|
|
item_state = "clownpack"
|
|
|
|
/obj/item/storage/backpack/clown/syndie
|
|
|
|
/obj/item/storage/backpack/clown/syndie/populate_contents()
|
|
new /obj/item/clothing/under/rank/civilian/clown(src)
|
|
new /obj/item/clothing/shoes/magboots/clown(src)
|
|
new /obj/item/clothing/mask/chameleon(src)
|
|
new /obj/item/radio/headset/headset_service(src)
|
|
new /obj/item/pda/clown(src)
|
|
new /obj/item/storage/box/survival(src)
|
|
new /obj/item/reagent_containers/food/snacks/grown/banana(src)
|
|
new /obj/item/stamp/clown(src)
|
|
new /obj/item/toy/crayon/rainbow(src)
|
|
new /obj/item/storage/fancy/crayons(src)
|
|
new /obj/item/reagent_containers/spray/waterflower(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/bottleofbanana(src)
|
|
new /obj/item/instrument/bikehorn(src)
|
|
new /obj/item/bikehorn(src)
|
|
new /obj/item/dnainjector/comic(src)
|
|
for(var/i in 1 to 10)
|
|
new /obj/item/ammo_box/magazine/m12g/confetti(src)
|
|
for(var/i in 1 to 5)
|
|
new /obj/item/grenade/confetti(src)
|
|
new /obj/item/gun/projectile/revolver/capgun(src)
|
|
|
|
/obj/item/storage/backpack/mime
|
|
name = "Parcel Parceaux"
|
|
desc = "A silent backpack made for those silent workers. Silence Co."
|
|
icon_state = "mimepack"
|
|
item_state = "mimepack"
|
|
|
|
/obj/item/storage/backpack/medic
|
|
name = "medical backpack"
|
|
desc = "It's a backpack especially designed for use in a sterile environment."
|
|
icon_state = "medicalpack"
|
|
item_state = "medicalpack"
|
|
|
|
/obj/item/storage/backpack/security
|
|
name = "security backpack"
|
|
desc = "It's a very robust backpack."
|
|
icon_state = "securitypack"
|
|
item_state = "securitypack"
|
|
|
|
/obj/item/storage/backpack/captain
|
|
name = "captain's backpack"
|
|
desc = "It's a special backpack made exclusively for Nanotrasen officers."
|
|
icon_state = "captainpack"
|
|
item_state = "captainpack"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/industrial
|
|
name = "industrial backpack"
|
|
desc = "It's a tough backpack for the daily grind of station life."
|
|
icon_state = "engiepack"
|
|
item_state = "engiepack"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/industrial/atmos
|
|
name = "atmospherics backpack"
|
|
desc = "It's a fireproof backpack for Atmospherics Staff."
|
|
icon_state = "atmospack"
|
|
item_state = "atmospack"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/explorer
|
|
name = "explorer bag"
|
|
desc = "A robust backpack for stashing your loot."
|
|
icon_state = "explorerpack"
|
|
item_state = "explorerpack"
|
|
|
|
/obj/item/storage/backpack/botany
|
|
name = "botany backpack"
|
|
desc = "It's a backpack made of all-natural fibers."
|
|
icon_state = "botpack"
|
|
item_state = "botpack"
|
|
|
|
/obj/item/storage/backpack/chemistry
|
|
name = "chemistry backpack"
|
|
desc = "A backpack specially designed to repel stains and hazardous liquids."
|
|
icon_state = "chempack"
|
|
item_state = "chempack"
|
|
|
|
/obj/item/storage/backpack/genetics
|
|
name = "genetics backpack"
|
|
desc = "A bag designed to be super tough, just in case someone hulks out on you."
|
|
icon_state = "genepack"
|
|
item_state = "genepack"
|
|
|
|
/obj/item/storage/backpack/science
|
|
name = "science backpack"
|
|
desc = "A specially designed backpack. It's fire resistant and smells vaguely of plasma."
|
|
icon_state = "toxpack"
|
|
item_state = "toxpack"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/virology
|
|
name = "virology backpack"
|
|
desc = "A backpack made of hypo-allergenic fibers. It's designed to help prevent the spread of disease. Smells like monkey."
|
|
icon_state = "viropack"
|
|
item_state = "viropack"
|
|
|
|
/obj/item/storage/backpack/blueshield
|
|
name = "blueshield backpack"
|
|
desc = "A robust backpack issued to Nanotrasen's finest."
|
|
icon_state = "blueshieldpack"
|
|
item_state = "blueshieldpack"
|
|
|
|
/*
|
|
* Satchel Types
|
|
*/
|
|
|
|
/obj/item/storage/backpack/satchel
|
|
name = "leather satchel"
|
|
desc = "It's a very fancy satchel made with fine leather."
|
|
icon_state = "satchel"
|
|
item_state = "satchel"
|
|
resistance_flags = FIRE_PROOF
|
|
var/strap_side_straight = FALSE
|
|
|
|
/obj/item/storage/backpack/satchel/verb/switch_strap()
|
|
set name = "Switch Strap Side"
|
|
set category = "Object"
|
|
set src in usr
|
|
|
|
if(usr.incapacitated())
|
|
return
|
|
strap_side_straight = !strap_side_straight
|
|
item_state = strap_side_straight ? "satchel-flipped" : "satchel"
|
|
if(ishuman(loc))
|
|
var/mob/living/carbon/human/H = loc
|
|
H.update_inv_back()
|
|
|
|
|
|
|
|
/obj/item/storage/backpack/satcheldeluxe
|
|
name = "leather satchel"
|
|
desc = "An NT Deluxe satchel, with the finest quality leather and the company logo in a thin gold stitch"
|
|
icon_state = "nt_deluxe"
|
|
item_state = "satchel"
|
|
|
|
/obj/item/storage/backpack/satchel/lizard
|
|
name = "lizard skin handbag"
|
|
desc = "A handbag made out of what appears to be supple green Unathi skin. A face can be vaguely seen on the front."
|
|
icon_state = "satchel-lizard"
|
|
item_state = null
|
|
|
|
/obj/item/storage/backpack/satchel/withwallet/populate_contents()
|
|
new /obj/item/storage/wallet/random(src)
|
|
|
|
/obj/item/storage/backpack/satchel_norm
|
|
name = "satchel"
|
|
desc = "A deluxe NT Satchel, made of the highest quality leather."
|
|
icon_state = "satchel-norm"
|
|
item_state = "satchel-norm"
|
|
|
|
/obj/item/storage/backpack/satchel_eng
|
|
name = "industrial satchel"
|
|
desc = "A tough satchel with extra pockets."
|
|
icon_state = "satchel-eng"
|
|
item_state = "satchel-eng"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/satchel_atmos
|
|
name = "atmospherics satchel"
|
|
desc = "A fireproof satchel for keeping gear safe."
|
|
icon_state = "satchel-atmos"
|
|
item_state = "satchel-atmos"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/satchel/explorer
|
|
name = "explorer satchel"
|
|
desc = "A robust satchel for stashing your loot."
|
|
icon_state = "satchel-explorer"
|
|
item_state = "satchel-explorer"
|
|
|
|
/obj/item/storage/backpack/satchel_med
|
|
name = "medical satchel"
|
|
desc = "A sterile satchel used in medical departments."
|
|
icon_state = "satchel-med"
|
|
item_state = "satchel-med"
|
|
|
|
/obj/item/storage/backpack/satchel_vir
|
|
name = "virologist satchel"
|
|
desc = "A sterile satchel with virologist colours."
|
|
icon_state = "satchel-vir"
|
|
item_state = "satchel-vir"
|
|
|
|
/obj/item/storage/backpack/satchel_chem
|
|
name = "chemist satchel"
|
|
desc = "A sterile satchel with chemist colours."
|
|
icon_state = "satchel-chem"
|
|
item_state = "satchel-chem"
|
|
|
|
/obj/item/storage/backpack/satchel_gen
|
|
name = "geneticist satchel"
|
|
desc = "A sterile satchel with geneticist colours."
|
|
icon_state = "satchel-gen"
|
|
item_state = "satchel-gen"
|
|
|
|
/obj/item/storage/backpack/satchel_tox
|
|
name = "scientist satchel"
|
|
desc = "Useful for holding research materials."
|
|
icon_state = "satchel-tox"
|
|
item_state = "satchel-tox"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/satchel_sec
|
|
name = "security satchel"
|
|
desc = "A robust satchel for security related needs."
|
|
icon_state = "satchel-sec"
|
|
item_state = "satchel-sec"
|
|
|
|
/obj/item/storage/backpack/satchel_hyd
|
|
name = "hydroponics satchel"
|
|
desc = "A green satchel for plant related work."
|
|
icon_state = "satchel-hyd"
|
|
item_state = "satchel-hyd"
|
|
|
|
/obj/item/storage/backpack/satchel_cap
|
|
name = "captain's satchel"
|
|
desc = "An exclusive satchel for Nanotrasen officers."
|
|
icon_state = "satchel-cap"
|
|
item_state = "satchel-cap"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/satchel_blueshield
|
|
name = "blueshield satchel"
|
|
desc = "A robust satchel issued to Nanotrasen's finest."
|
|
icon_state = "satchel-blueshield"
|
|
item_state = "satchel-blueshield"
|
|
|
|
/obj/item/storage/backpack/satchel_flat
|
|
name = "smuggler's satchel"
|
|
desc = "A very slim satchel that can easily fit into tight spaces."
|
|
icon_state = "satchel-flat"
|
|
item_state = "satchel-flat"
|
|
w_class = WEIGHT_CLASS_NORMAL //Can fit in backpacks itself.
|
|
max_combined_w_class = 15
|
|
level = 1
|
|
cant_hold = list(/obj/item/storage/backpack/satchel_flat) //muh recursive backpacks
|
|
|
|
/obj/item/storage/backpack/satchel_flat/hide(intact)
|
|
if(intact)
|
|
invisibility = INVISIBILITY_MAXIMUM
|
|
anchored = TRUE //otherwise you can start pulling, cover it, and drag around an invisible backpack.
|
|
icon_state = "[initial(icon_state)]2"
|
|
else
|
|
invisibility = initial(invisibility)
|
|
anchored = FALSE
|
|
icon_state = initial(icon_state)
|
|
|
|
/obj/item/storage/backpack/satchel_flat/populate_contents()
|
|
new /obj/item/stack/tile/plasteel(src)
|
|
new /obj/item/crowbar(src)
|
|
|
|
/*
|
|
* Duffelbags
|
|
*/
|
|
|
|
/obj/item/storage/backpack/duffel
|
|
name = "duffelbag"
|
|
desc = "A large grey duffelbag designed to hold more items than a regular bag. It slows you down when unzipped."
|
|
icon_state = "duffel"
|
|
item_state = "duffel"
|
|
max_combined_w_class = 30
|
|
/// Is the bag zipped up?
|
|
var/zipped = TRUE
|
|
/// How long it takes to toggle the zip state of this bag
|
|
var/zip_time = 0.7 SECONDS
|
|
/// This variable is used to change the icon state to the variable when opened
|
|
var/open_icon_sprite
|
|
/// This variable is used to change the item state to the variable when opened
|
|
var/open_item_sprite
|
|
/// Do we want the bag to be antidropped when zipped up?
|
|
var/antidrop_on_zip = FALSE
|
|
|
|
/obj/item/storage/backpack/duffel/examine(mob/user)
|
|
. = ..()
|
|
. += "<span class='notice'>It is currently [zipped ? "zipped" : "unzipped"]. Alt+Shift+Click to [zipped ? "un-" : ""]zip it!</span>"
|
|
|
|
/obj/item/storage/backpack/duffel/AltShiftClick(mob/user)
|
|
. = ..()
|
|
handle_zipping(user)
|
|
|
|
/obj/item/storage/backpack/duffel/proc/handle_zipping(mob/user)
|
|
if(!Adjacent(user))
|
|
return
|
|
|
|
if(!zip_time || do_after(user, zip_time, target = src))
|
|
playsound(src, 'sound/items/zip.ogg', 75, TRUE)
|
|
zipped = !zipped
|
|
|
|
if(!zipped) // Handle slowdown and stuff now that we just zipped it
|
|
show_to(user)
|
|
|
|
if(zip_time)
|
|
slowdown = 1
|
|
if(antidrop_on_zip)
|
|
flags ^= NODROP
|
|
update_icon_state(UPDATE_ICON_STATE)
|
|
return
|
|
|
|
slowdown = 0
|
|
hide_from_all()
|
|
for(var/obj/item/storage/container in src)
|
|
container.hide_from_all() // Hide everything inside the bag too
|
|
if(antidrop_on_zip)
|
|
flags |= NODROP
|
|
update_icon_state(UPDATE_ICON_STATE)
|
|
|
|
/obj/item/storage/backpack/duffel/update_icon_state()
|
|
. = ..()
|
|
if(!zipped)
|
|
if(open_icon_sprite)
|
|
icon_state = open_icon_sprite
|
|
if(open_item_sprite)
|
|
item_state = open_item_sprite
|
|
else
|
|
if(open_icon_sprite)
|
|
icon_state = initial(icon_state)
|
|
item_state = initial(item_state)
|
|
if(ishuman(loc))
|
|
var/mob/living/carbon/human/H = loc
|
|
H.update_inv_r_hand()
|
|
H.update_inv_l_hand()
|
|
|
|
|
|
// The following three procs handle refusing access to contents if the duffel is zipped
|
|
|
|
/obj/item/storage/backpack/duffel/handle_item_insertion(obj/item/I, prevent_warning, bypass_zip = FALSE)
|
|
if(bypass_zip)
|
|
return ..()
|
|
|
|
if(zipped)
|
|
to_chat(usr, "<span class='notice'>[src] is zipped shut!</span>")
|
|
return FALSE
|
|
|
|
return ..()
|
|
|
|
/obj/item/storage/backpack/duffel/removal_allowed_check(mob/user)
|
|
if(zipped)
|
|
to_chat(user, "<span class='notice'>[src] is zipped shut!</span>")
|
|
return FALSE
|
|
|
|
return TRUE
|
|
|
|
/obj/item/storage/backpack/duffel/drop_inventory(user)
|
|
if(zipped)
|
|
to_chat(usr, "<span class='notice'>[src] is zipped shut!</span>")
|
|
return FALSE
|
|
|
|
return ..()
|
|
|
|
/obj/item/storage/backpack/duffel/show_to(mob/user)
|
|
if(isobserver(user))
|
|
return ..()
|
|
|
|
if(zipped)
|
|
to_chat(usr, "<span class='notice'>[src] is zipped shut!</span>")
|
|
return FALSE
|
|
|
|
return ..()
|
|
|
|
/obj/item/storage/backpack/duffel/syndie
|
|
name = "suspicious looking duffelbag"
|
|
desc = "A large duffelbag for holding extra tactical supplies."
|
|
icon_state = "duffel-syndiammo"
|
|
item_state = "duffel-syndiammo"
|
|
origin_tech = "syndicate=1"
|
|
silent = TRUE
|
|
zip_time = 0
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/med
|
|
name = "suspicious duffelbag"
|
|
desc = "A black and red duffelbag with a red and white cross sewn onto it."
|
|
icon_state = "duffel-syndimed"
|
|
item_state = "duffel-syndimed"
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/shotgun
|
|
desc = "A large duffelbag, packed to the brim with Bulldog shotgun ammo."
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/shotgun/populate_contents()
|
|
for(var/i in 1 to 6)
|
|
new /obj/item/ammo_box/magazine/m12g(src)
|
|
new /obj/item/ammo_box/magazine/m12g/buckshot(src)
|
|
new /obj/item/ammo_box/magazine/m12g/buckshot(src)
|
|
new /obj/item/ammo_box/magazine/m12g/dragon(src)
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/shotgunXLmags
|
|
desc = "A large duffelbag, containing three types of extended drum magazines."
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/shotgunXLmags/populate_contents()
|
|
new /obj/item/ammo_box/magazine/m12g/XtrLrg(src)
|
|
new /obj/item/ammo_box/magazine/m12g/XtrLrg/buckshot(src)
|
|
new /obj/item/ammo_box/magazine/m12g/XtrLrg/dragon(src)
|
|
|
|
/obj/item/storage/backpack/duffel/mining_conscript/
|
|
name = "mining conscription kit"
|
|
desc = "A kit containing everything a crewmember needs to support a shaft miner in the field."
|
|
|
|
/obj/item/storage/backpack/duffel/mining_conscript/populate_contents()
|
|
new /obj/item/pickaxe(src)
|
|
new /obj/item/clothing/glasses/meson(src)
|
|
new /obj/item/t_scanner/adv_mining_scanner/lesser(src)
|
|
new /obj/item/storage/bag/ore(src)
|
|
new /obj/item/clothing/under/rank/cargo/miner/lavaland(src)
|
|
new /obj/item/encryptionkey/headset_cargo(src)
|
|
new /obj/item/clothing/mask/gas/explorer(src)
|
|
new /obj/item/gun/energy/kinetic_accelerator(src)
|
|
new /obj/item/kitchen/knife/combat/survival(src)
|
|
new /obj/item/flashlight/seclite(src)
|
|
new /obj/item/clothing/suit/hooded/explorer(src)
|
|
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/smg
|
|
desc = "A large duffel bag, packed to the brim with C-20r magazines."
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/smg/populate_contents()
|
|
for(var/i in 1 to 10)
|
|
new /obj/item/ammo_box/magazine/smgm45(src)
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/c20rbundle
|
|
desc = "A large duffel bag containing a C-20r, some magazines, and a cheap looking suppressor."
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/c20rbundle/populate_contents()
|
|
new /obj/item/ammo_box/magazine/smgm45(src)
|
|
new /obj/item/ammo_box/magazine/smgm45(src)
|
|
new /obj/item/ammo_box/magazine/smgm45(src)
|
|
new /obj/item/gun/projectile/automatic/c20r(src)
|
|
new /obj/item/suppressor/specialoffer(src)
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/bulldogbundle
|
|
desc = "A large duffel bag containing a Bulldog, some drums, and a pair of thermal imaging glasses."
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/bulldogbundle/populate_contents()
|
|
new /obj/item/gun/projectile/automatic/shotgun/bulldog(src)
|
|
new /obj/item/ammo_box/magazine/m12g(src)
|
|
new /obj/item/ammo_box/magazine/m12g(src)
|
|
new /obj/item/clothing/glasses/chameleon/thermal(src)
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/med/medicalbundle
|
|
desc = "A large duffel bag containing a tactical medkit, a medical beam gun and a pair of syndicate magboots."
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/med/medicalbundle/populate_contents()
|
|
new /obj/item/storage/firstaid/tactical(src)
|
|
new /obj/item/clothing/shoes/magboots/syndie(src)
|
|
new /obj/item/gun/medbeam(src)
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/c4/populate_contents()
|
|
for(var/i in 1 to 10)
|
|
new /obj/item/grenade/plastic/c4(src)
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/x4/populate_contents()
|
|
for(var/i in 1 to 3)
|
|
new /obj/item/grenade/plastic/c4/x4(src)
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/med/surgery
|
|
name = "surgery duffelbag"
|
|
desc = "A suspicious looking duffelbag for holding surgery tools."
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/med/surgery/populate_contents()
|
|
new /obj/item/scalpel(src)
|
|
new /obj/item/hemostat(src)
|
|
new /obj/item/retractor(src)
|
|
new /obj/item/circular_saw(src)
|
|
new /obj/item/surgicaldrill(src)
|
|
new /obj/item/cautery(src)
|
|
new /obj/item/bonegel(src)
|
|
new /obj/item/bonesetter(src)
|
|
new /obj/item/FixOVein(src)
|
|
new /obj/item/clothing/suit/straight_jacket(src)
|
|
new /obj/item/clothing/mask/muzzle(src)
|
|
new /obj/item/reagent_containers/glass/bottle/reagent/hydrocodone(src)
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/med/surgery_fake //for maint spawns
|
|
name = "surgery duffelbag"
|
|
desc = "A suspicious looking duffelbag for holding surgery tools."
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/med/surgery_fake/populate_contents()
|
|
new /obj/item/scalpel(src)
|
|
new /obj/item/hemostat(src)
|
|
new /obj/item/retractor(src)
|
|
new /obj/item/cautery(src)
|
|
new /obj/item/bonegel(src)
|
|
new /obj/item/bonesetter(src)
|
|
new /obj/item/FixOVein(src)
|
|
if(prob(50))
|
|
new /obj/item/circular_saw(src)
|
|
new /obj/item/surgicaldrill(src)
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/party
|
|
desc = "A large duffel bag, packed to the brim with hilarious equipment."
|
|
|
|
/obj/item/storage/backpack/duffel/syndie/party/populate_contents()
|
|
for(var/i in 1 to 10)
|
|
new /obj/item/ammo_box/magazine/m12g/confetti(src)
|
|
for(var/i in 1 to 5)
|
|
new /obj/item/grenade/confetti(src)
|
|
new /obj/item/gun/projectile/revolver/capgun(src)
|
|
|
|
#define NANNY_MAX_VALUE 7
|
|
#define NANNY_MIN_VALUE 6
|
|
|
|
/obj/item/storage/backpack/duffel/magic_nanny_bag
|
|
name = "magic nanny bag"
|
|
desc = "Not to be confused with a magic granny bag. Zip it up to make it unable to be dropped while closed."
|
|
icon_state = "magic_nanny_bag"
|
|
item_state = "magic_nanny_bag"
|
|
max_w_class = WEIGHT_CLASS_HUGE
|
|
slot_flags = 0
|
|
storage_slots = 98 //Most that fits on your screen. Good luck getting that much in there.
|
|
max_combined_w_class = 256 //get your 8 bit magic bags here. Also it's wizard, at some point this many items will just make it crowded.
|
|
silent = TRUE
|
|
zip_time = 0
|
|
resistance_flags = FIRE_PROOF
|
|
open_icon_sprite = "magic_nanny_bag_open"
|
|
antidrop_on_zip = TRUE
|
|
|
|
|
|
/obj/item/storage/backpack/duffel/magic_nanny_bag/populate_contents(attempts = 0)
|
|
var/value = 0
|
|
//Melee Weapon
|
|
switch(rand(1, 8))
|
|
if(1)
|
|
new /obj/item/melee/spellblade(src)
|
|
value += 2
|
|
if(2)
|
|
new /obj/item/organ/internal/cyberimp/arm/katana(src)
|
|
value += 1
|
|
if(3)
|
|
new /obj/item/twohanded/mjollnir(src)
|
|
value += 2
|
|
if(4)
|
|
new /obj/item/twohanded/singularityhammer(src)
|
|
value += 2
|
|
if(5)
|
|
new /obj/item/katana(src)
|
|
value += 2 //force 40 this is value 2
|
|
if(6)
|
|
new /obj/item/claymore(src)
|
|
value += 2 //force 40 this is value 2
|
|
if(7)
|
|
new /obj/item/twohanded/spear/grey_tide(src)
|
|
value += 2 //Value 2, clones are strong
|
|
if(8)
|
|
if(prob(50))
|
|
new /obj/item/sord(src)
|
|
value -= 1 //Useless joke, might as well give them a value point back.
|
|
new /obj/item/twohanded/bostaff(src) //Funky item, not really worth a point, but good to balance sord's free point out
|
|
//Wands
|
|
var/wands = 0
|
|
while(wands < 2)
|
|
var/obj/item/pickedw = pick(
|
|
/obj/item/gun/magic/wand/death,
|
|
/obj/item/gun/magic/wand/resurrection,
|
|
/obj/item/gun/magic/wand/polymorph,
|
|
/obj/item/gun/magic/wand/teleport,
|
|
/obj/item/gun/magic/wand/door,
|
|
/obj/item/gun/magic/wand/fireball,
|
|
/obj/item/gun/magic/wand/slipping)
|
|
new pickedw(src)
|
|
wands++
|
|
|
|
for(var/obj/item/gun/magic/wand/W in contents) //All wands in this pack come in the best possible condition
|
|
W.max_charges = initial(W.max_charges)
|
|
W.charges = W.max_charges
|
|
|
|
//Staff
|
|
var/list/list_s = list(
|
|
/obj/item/gun/magic/staff/change = 2,
|
|
/obj/item/gun/magic/staff/slipping = 1,
|
|
/obj/item/gun/magic/staff/door = 1,
|
|
/obj/item/gun/magic/staff/healing = 1,
|
|
/obj/item/gun/magic/staff/chaos = 2,
|
|
/obj/item/gun/magic/staff/animate = 2,
|
|
/obj/item/gun/magic/staff/focus = 2,
|
|
/obj/item/gun/magic/hook = 1,
|
|
/obj/item/hierophant_club = 3, //Strong so super costly
|
|
/obj/item/lava_staff = 2 ) //Hot seller so 2
|
|
var/obj/item/pickeds = pick(list_s)
|
|
value += list_s[pickeds]
|
|
new pickeds(src)
|
|
|
|
//Random magical artifact.
|
|
var/list/list_a = list(
|
|
/obj/item/necromantic_stone = 2,
|
|
/obj/item/scrying = 1, //thematic discount
|
|
/obj/item/organ/internal/heart/cursed/wizard = 1,
|
|
/obj/item/organ/internal/vocal_cords/colossus/wizard = 2,
|
|
/obj/item/warp_cube/red = 1,
|
|
/obj/item/reagent_containers/food/drinks/everfull = 2,
|
|
/obj/item/clothing/suit/space/hardsuit/shielded/wizard = 2,
|
|
/obj/item/jacobs_ladder = 1, //funny
|
|
/obj/item/immortality_talisman = 1 ) //spells recharge when invincible
|
|
var/obj/item/pickeda = pick(list_a)
|
|
value += list_a[pickeda]
|
|
new pickeda(src)
|
|
|
|
//Summon
|
|
switch(rand(1, 8))
|
|
if(1)
|
|
new /obj/item/antag_spawner/slaughter_demon(src)
|
|
value += 2
|
|
if(2)
|
|
new /obj/item/antag_spawner/morph(src)
|
|
value += 1
|
|
if(3)
|
|
new /obj/item/antag_spawner/slaughter_demon/laughter(src)
|
|
value += 1
|
|
if(4)
|
|
new /obj/item/antag_spawner/slaughter_demon/shadow(src)
|
|
value += 1
|
|
if(5)
|
|
new /obj/item/antag_spawner/revenant(src)
|
|
value += 1
|
|
if(6)
|
|
new /obj/item/contract(src)
|
|
value += 2
|
|
if(7)
|
|
new /obj/item/guardiancreator(src)
|
|
value += 1
|
|
if(8)
|
|
if(prob(25))
|
|
new /obj/item/reagent_containers/food/snacks/grown/nymph_pod(src)
|
|
new /obj/item/slimepotion/sentience(src)
|
|
else
|
|
new /obj/item/paicard(src) //Still useful, not a point useful.
|
|
|
|
//Treat / potion. Free.
|
|
var/obj/item/pickedt = pick(
|
|
/obj/item/storage/box/syndidonkpockets, // Healing + speed
|
|
/obj/item/reagent_containers/food/drinks/bottle/dragonsbreath, // Killing
|
|
/obj/item/reagent_containers/food/drinks/bottle/immortality, // Super healing for 20 seconds
|
|
/obj/item/reagent_containers/food/snacks/meatsteak/stimulating, //Healing + stun immunity
|
|
/obj/item/reagent_containers/food/snacks/plum_pie ) // Great healing over long period of time
|
|
new pickedt(src)
|
|
|
|
|
|
if(value > NANNY_MAX_VALUE || value < NANNY_MIN_VALUE)
|
|
if(attempts >= 5)
|
|
message_admins("Failed to generate the wizard a properly priced magic nanny bag!")
|
|
else
|
|
new /obj/item/storage/backpack/duffel/magic_nanny_bag(get_turf(loc), attempts + 1)
|
|
qdel(src)
|
|
|
|
#undef NANNY_MAX_VALUE
|
|
#undef NANNY_MIN_VALUE
|
|
|
|
/obj/item/reagent_containers/food/drinks/bottle/dragonsbreath
|
|
name = "flask of dragons breath"
|
|
desc = "Not recommended for wizardly consumption. Recommended for mundane consumption!"
|
|
icon_state = "holyflask"
|
|
color = "#DC0000"
|
|
volume = 100
|
|
list_reagents = list("dragonsbreath" = 80, "hell_water" = 20)
|
|
|
|
/obj/item/reagent_containers/food/drinks/bottle/immortality
|
|
name = "drop of immortality"
|
|
desc = "Drinking this will make you immortal. For a moment or two, at least."
|
|
icon_state = "holyflask"
|
|
color = "#C8A5DC"
|
|
volume = 5
|
|
list_reagents = list("adminordrazine" = 5)
|
|
|
|
/obj/item/reagent_containers/food/snacks/meatsteak/stimulating
|
|
name = "stimulating steak"
|
|
desc = "Stimulate your senses."
|
|
list_reagents = list("nutriment" = 5, "stimulants" = 25)
|
|
bitesize = 100
|
|
|
|
/obj/item/reagent_containers/food/snacks/plum_pie
|
|
name = "perfect plum pie"
|
|
desc = "The Jack Horner brand of pie. 2 big thumbs up."
|
|
icon_state = "plump_pie"
|
|
filling_color = "#B8279B"
|
|
bitesize = 10
|
|
list_reagents = list("nutriment" = 3, "vitamin" = 2, "syndicate_nanites" = 45)
|
|
tastes = list("pie" = 1, "plum" = 1)
|
|
|
|
/obj/item/storage/backpack/duffel/captain
|
|
name = "captain's duffelbag"
|
|
desc = "A duffelbag designed to hold large quantities of condoms."
|
|
icon_state = "duffel-captain"
|
|
item_state = "duffel-captain"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/duffel/security
|
|
name = "security duffelbag"
|
|
desc = "A duffelbag built with robust fabric!"
|
|
icon_state = "duffel-security"
|
|
item_state = "duffel-security"
|
|
|
|
/obj/item/storage/backpack/duffel/virology
|
|
name = "virology duffelbag"
|
|
desc = "A white duffelbag designed to contain biohazards."
|
|
icon_state = "duffel-viro"
|
|
item_state = "duffel-viro"
|
|
|
|
/obj/item/storage/backpack/duffel/science
|
|
name = "scientist duffelbag"
|
|
desc = "A duffelbag designed to hold the secrets of space."
|
|
icon_state = "duffel-toxins"
|
|
item_state = "duffel-toxins"
|
|
|
|
/obj/item/storage/backpack/duffel/genetics
|
|
name = "geneticist duffelbag"
|
|
desc = "A duffelbag designed to hold gibbering monkies."
|
|
icon_state = "duffel-gene"
|
|
item_state = "duffel-gene"
|
|
|
|
/obj/item/storage/backpack/duffel/chemistry
|
|
name = "chemist duffelbag"
|
|
desc = "A duffelbag designed to hold corrosive substances."
|
|
icon_state = "duffel-chemistry"
|
|
item_state = "duffel-chemistry"
|
|
|
|
/obj/item/storage/backpack/duffel/medical
|
|
name = "medical duffelbag"
|
|
desc = "A duffelbag designed to hold medicine."
|
|
icon_state = "duffel-med"
|
|
item_state = "duffel-med"
|
|
|
|
/obj/item/storage/backpack/duffel/engineering
|
|
name = "industrial duffelbag"
|
|
desc = "A duffelbag designed to hold tools."
|
|
icon_state = "duffel-eng"
|
|
item_state = "duffel-eng"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/duffel/atmos
|
|
name = "atmospherics duffelbag"
|
|
desc = "A duffelbag designed to hold tools. This one is specially designed for atmospherics."
|
|
icon_state = "duffel-atmos"
|
|
item_state = "duffel-atmos"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/duffel/hydro
|
|
name = "hydroponics duffelbag"
|
|
desc = "A duffelbag designed to hold seeds and fauna."
|
|
icon_state = "duffel-hydro"
|
|
item_state = "duffel-hydro"
|
|
|
|
/obj/item/storage/backpack/duffel/clown
|
|
name = "smiles von wiggleton"
|
|
desc = "A duffelbag designed to hold bananas and bike horns."
|
|
icon_state = "duffel-clown"
|
|
item_state = "duffel-clown"
|
|
|
|
/obj/item/storage/backpack/duffel/blueshield
|
|
name = "blueshield duffelbag"
|
|
desc = "A robust duffelbag issued to Nanotrasen's finest."
|
|
icon_state = "duffel-blueshield"
|
|
item_state = "duffel-blueshield"
|
|
|
|
//ERT backpacks.
|
|
/obj/item/storage/backpack/ert
|
|
name = "emergency response team backpack"
|
|
desc = "A spacious backpack with lots of pockets, used by members of the Nanotrasen Emergency Response Team."
|
|
icon_state = "ert_commander"
|
|
item_state = null
|
|
max_combined_w_class = 30
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
//Commander
|
|
/obj/item/storage/backpack/ert/commander
|
|
name = "emergency response team commander backpack"
|
|
desc = "A spacious backpack with lots of pockets, worn by the commander of a Nanotrasen Emergency Response Team."
|
|
|
|
//Security
|
|
/obj/item/storage/backpack/ert/security
|
|
name = "emergency response team security backpack"
|
|
desc = "A spacious backpack with lots of pockets, worn by security members of a Nanotrasen Emergency Response Team."
|
|
icon_state = "ert_security"
|
|
|
|
//Engineering
|
|
/obj/item/storage/backpack/ert/engineer
|
|
name = "emergency response team engineer backpack"
|
|
desc = "A spacious backpack with lots of pockets, worn by engineering members of a Nanotrasen Emergency Response Team."
|
|
icon_state = "ert_engineering"
|
|
|
|
//Medical
|
|
/obj/item/storage/backpack/ert/medical
|
|
name = "emergency response team medical backpack"
|
|
desc = "A spacious backpack with lots of pockets, worn by medical members of a Nanotrasen Emergency Response Team."
|
|
icon_state = "ert_medical"
|
|
|
|
//Janitorial
|
|
/obj/item/storage/backpack/ert/janitor
|
|
name = "emergency response team janitor backpack"
|
|
desc = "A spacious backpack with lots of pockets, worn by janitorial members of a Nanotrasen Emergency Response Team."
|
|
icon_state = "ert_janitor"
|
|
|
|
//Solgov
|
|
/obj/item/storage/backpack/ert/solgov
|
|
name = "\improper TSF marine backpack"
|
|
desc = "A spacious backpack with lots of pockets, worn by marines of the Trans-Solar Federation."
|
|
icon_state = "ert_solgov"
|
|
|
|
/obj/item/storage/backpack/ert/deathsquad
|
|
name = "Deathsquad backpack"
|
|
desc = "A spacious backpack with lots of pockets, worn by those working in Special Operations."
|
|
icon_state = "ert_security"
|
|
|