Files
Paradise/code/game/objects/items/weapons/storage/belt.dm
S34N 705578b23b Energy detective revolver (#17771)
* Initial defines

* more work

* icon

* more stuff

* UID not hard ref

* tidying

* overload go brrt

* le sound and dead cell

* delet gap

* initial chargepack stuff

* simplify

* oops

* yeet this

* placeholder sprites

* oops magic number

* the gun speaks!

* consolidation

* tweaking and tidying

* so long old gun

* icon purge

* reapplies placeholder

* 1 minute tracker, not two

* makes it use a pinpointer

* revert tiny map changes

* cease your tracking, fool

* oops

* soft refs

* charlie review

* projectile ref to firing obj, removes testing overrides
& cleans up signals

* some more UID null checks

* ICONS

* ICONS CONFLICT

* MORE ICONS

* makes it freaking work

* first pass fixes

* charlie review

* charlie review 2, variable boogaloo

* fixes holsters

* colours the overcharged shot

* and recolours tracker to be yellow to match charge

* yellow laser icon

* widen overcharge misfire %

* fixes unlinkable pinpointers

* fixes gun not speaking when tcomms setup is changed

* steel request

* no chargey

* loudening 2022

* steel part 1

* Apply suggestions from code review

Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>

* restores missing sprites

Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>
2022-06-25 20:15:09 +01:00

841 lines
25 KiB
Plaintext

/obj/item/storage/belt
name = "belt"
desc = "Can hold various things."
icon = 'icons/obj/clothing/belts.dmi'
icon_state = "utilitybelt"
item_state = "utility"
lefthand_file = 'icons/mob/inhands/equipment/belt_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/belt_righthand.dmi'
slot_flags = SLOT_BELT
attack_verb = list("whipped", "lashed", "disciplined")
max_integrity = 300
equip_sound = 'sound/items/equip/toolbelt_equip.ogg'
/// Do we have overlays for items held inside the belt?
var/use_item_overlays = FALSE
/obj/item/storage/belt/update_icon()
if(use_item_overlays)
cut_overlays()
for(var/obj/item/I in contents)
add_overlay("[I.belt_icon]")
..()
/obj/item/storage/belt/proc/can_use()
return is_equipped()
/obj/item/storage/belt/MouseDrop(obj/over_object, src_location, over_location)
var/mob/M = usr
if(!istype(over_object, /obj/screen))
return ..()
playsound(loc, "rustle", 50, TRUE, -5)
if(!M.restrained() && !M.stat && can_use())
switch(over_object.name)
if("r_hand")
M.unEquip(src, silent = TRUE)
M.put_in_r_hand(src)
if("l_hand")
M.unEquip(src, silent = TRUE)
M.put_in_l_hand(src)
add_fingerprint(usr)
return
/obj/item/storage/belt/deserialize(list/data)
..()
update_icon()
/obj/item/storage/belt/utility
name = "tool-belt" //Carn: utility belt is nicer, but it bamboozles the text parsing.
desc = "Can hold various tools."
icon_state = "utilitybelt"
item_state = "utility"
use_item_overlays = TRUE
drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
can_hold = list(
/obj/item/crowbar,
/obj/item/screwdriver,
/obj/item/weldingtool,
/obj/item/wirecutters,
/obj/item/wrench,
/obj/item/multitool,
/obj/item/flashlight,
/obj/item/stack/cable_coil,
/obj/item/t_scanner,
/obj/item/analyzer,
/obj/item/geiger_counter,
/obj/item/extinguisher/mini,
/obj/item/holosign_creator)
/obj/item/storage/belt/utility/full/populate_contents()
new /obj/item/screwdriver(src)
new /obj/item/wrench(src)
new /obj/item/weldingtool(src)
new /obj/item/crowbar(src)
new /obj/item/wirecutters(src)
new /obj/item/stack/cable_coil/random(src, 30)
update_icon()
/obj/item/storage/belt/utility/full/multitool/populate_contents()
..()
new /obj/item/multitool(src)
update_icon()
/obj/item/storage/belt/utility/atmostech/populate_contents()
new /obj/item/screwdriver(src)
new /obj/item/wrench(src)
new /obj/item/weldingtool(src)
new /obj/item/crowbar(src)
new /obj/item/wirecutters(src)
new /obj/item/t_scanner(src)
new /obj/item/extinguisher/mini(src)
update_icon()
/obj/item/storage/belt/utility/chief
name = "advanced toolbelt"
desc = "Holds tools, looks snazzy"
icon_state = "utilitybelt_ce"
item_state = "utility_ce"
/obj/item/storage/belt/utility/chief/full/populate_contents()
new /obj/item/screwdriver/power(src)
new /obj/item/crowbar/power(src)
new /obj/item/weldingtool/experimental(src)//This can be changed if this is too much
new /obj/item/multitool(src)
new /obj/item/stack/cable_coil/random(src, 30)
new /obj/item/extinguisher/mini(src)
new /obj/item/analyzer(src)
update_icon()
//much roomier now that we've managed to remove two tools
/obj/item/storage/belt/medical
name = "medical belt"
desc = "Can hold various medical equipment."
icon_state = "medicalbelt"
item_state = "medical"
use_to_pickup = TRUE //Allow medical belt to pick up medicine
use_item_overlays = TRUE
max_w_class = WEIGHT_CLASS_NORMAL
can_hold = list(
/obj/item/healthanalyzer,
/obj/item/dnainjector,
/obj/item/reagent_containers/dropper,
/obj/item/reagent_containers/glass/beaker,
/obj/item/reagent_containers/glass/bottle,
/obj/item/reagent_containers/food/pill,
/obj/item/reagent_containers/syringe,
/obj/item/lighter/zippo,
/obj/item/storage/fancy/cigarettes,
/obj/item/storage/pill_bottle,
/obj/item/stack/medical,
/obj/item/flashlight/pen,
/obj/item/clothing/mask/surgical,
/obj/item/clothing/gloves/color/latex,
/obj/item/reagent_containers/hypospray/autoinjector,
/obj/item/reagent_containers/hypospray/CMO,
/obj/item/reagent_containers/hypospray/safety,
/obj/item/rad_laser,
/obj/item/sensor_device,
/obj/item/wrench/medical,
/obj/item/handheld_defibrillator,
/obj/item/reagent_containers/applicator,
/obj/item/geiger_counter
)
/obj/item/storage/belt/medical/surgery
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 17
use_to_pickup = TRUE
name = "surgical belt"
desc = "Can hold various surgical tools."
storage_slots = 9
use_item_overlays = TRUE
can_hold = list(
/obj/item/scalpel,
/obj/item/hemostat,
/obj/item/retractor,
/obj/item/circular_saw,
/obj/item/bonegel,
/obj/item/bonesetter,
/obj/item/FixOVein,
/obj/item/surgicaldrill,
/obj/item/cautery,
)
/obj/item/storage/belt/medical/surgery/loaded/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/bonegel(src)
new /obj/item/bonesetter(src)
new /obj/item/FixOVein(src)
new /obj/item/surgicaldrill(src)
new /obj/item/cautery(src)
/obj/item/storage/belt/medical/response_team/populate_contents()
new /obj/item/reagent_containers/food/pill/salbutamol(src)
new /obj/item/reagent_containers/food/pill/salbutamol(src)
new /obj/item/reagent_containers/food/pill/charcoal(src)
new /obj/item/reagent_containers/food/pill/charcoal(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
update_icon()
/obj/item/storage/belt/botany
name = "botanist belt"
desc = "Can hold various botanical supplies."
icon_state = "botanybelt"
item_state = "botany"
use_item_overlays = TRUE
can_hold = list(
/obj/item/plant_analyzer,
/obj/item/cultivator,
/obj/item/hatchet,
/obj/item/reagent_containers/glass/bottle,
// /obj/item/reagent_containers/syringe,
// /obj/item/reagent_containers/glass/beaker,
/obj/item/lighter/zippo,
/obj/item/storage/fancy/cigarettes,
/obj/item/shovel/spade,
/obj/item/flashlight/pen,
/obj/item/seeds,
/obj/item/wirecutters,
/obj/item/wrench,
/obj/item/reagent_containers/spray/weedspray,
/obj/item/reagent_containers/spray/plantbgone,
/obj/item/reagent_containers/spray/pestspray
)
/obj/item/storage/belt/security
name = "security belt"
desc = "Can hold security gear like handcuffs and flashes."
icon_state = "securitybelt"
item_state = "security"//Could likely use a better one.
storage_slots = 5
max_w_class = WEIGHT_CLASS_NORMAL
use_item_overlays = TRUE
can_hold = list(
/obj/item/grenade/flashbang,
/obj/item/grenade/chem_grenade/teargas,
/obj/item/reagent_containers/spray/pepper,
/obj/item/restraints/handcuffs,
/obj/item/flash,
/obj/item/clothing/glasses,
/obj/item/ammo_casing/shotgun,
/obj/item/ammo_box,
/obj/item/reagent_containers/food/snacks/donut,
/obj/item/kitchen/knife/combat,
/obj/item/melee/baton,
/obj/item/melee/classic_baton,
/obj/item/flashlight/seclite,
/obj/item/holosign_creator/security,
/obj/item/melee/classic_baton/telescopic,
/obj/item/restraints/legcuffs/bola,
/obj/item/clothing/mask/gas/sechailer)
/obj/item/storage/belt/security/full/populate_contents()
new /obj/item/reagent_containers/spray/pepper(src)
new /obj/item/restraints/handcuffs(src)
new /obj/item/grenade/flashbang(src)
new /obj/item/flash(src)
new /obj/item/melee/baton/loaded(src)
update_icon()
/obj/item/storage/belt/security/response_team/populate_contents()
new /obj/item/reagent_containers/spray/pepper(src)
new /obj/item/melee/baton/loaded(src)
new /obj/item/flash(src)
new /obj/item/melee/classic_baton/telescopic(src)
new /obj/item/grenade/flashbang(src)
update_icon()
/obj/item/storage/belt/security/response_team_gamma/populate_contents()
new /obj/item/melee/baton/loaded(src)
new /obj/item/reagent_containers/spray/pepper(src)
new /obj/item/flash(src)
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
update_icon()
/obj/item/storage/belt/security/webbing
name = "security webbing"
desc = "Unique and versatile chest rig, can hold security gear."
icon_state = "securitywebbing"
item_state = "securitywebbing"
storage_slots = 6
use_item_overlays = FALSE
/obj/item/storage/belt/soulstone
name = "soul stone belt"
desc = "Designed for ease of access to the shards during a fight, as to not let a single enemy spirit slip away"
icon_state = "soulstonebelt"
item_state = "soulstonebelt"
storage_slots = 6
use_item_overlays = TRUE
can_hold = list(
/obj/item/soulstone
)
/obj/item/storage/belt/soulstone/full/populate_contents()
for(var/I in 1 to 6)
new /obj/item/soulstone(src)
update_icon()
/obj/item/storage/belt/champion
name = "championship belt"
desc = "Proves to the world that you are the strongest!"
icon_state = "championbelt"
item_state = "champion"
materials = list(MAT_GOLD=400)
storage_slots = TRUE
can_hold = list(
/obj/item/clothing/mask/luchador
)
/obj/item/storage/belt/military
name = "military belt"
desc = "A syndicate belt designed to be used by boarding parties. Its style is modelled after the hardsuits they wear."
icon_state = "militarybelt"
item_state = "military"
max_w_class = WEIGHT_CLASS_SMALL
resistance_flags = FIRE_PROOF
/obj/item/storage/belt/military/sst
icon_state = "assaultbelt"
item_state = "assault"
/obj/item/storage/belt/military/traitor
name = "tool-belt"
desc = "Can hold various tools. This model seems to have additional compartments."
icon_state = "utilitybelt"
item_state = "utility"
use_item_overlays = TRUE // So it will still show tools in it in case sec get lazy and just glance at it.
/obj/item/storage/belt/military/traitor/hacker/populate_contents()
new /obj/item/screwdriver(src, "red")
new /obj/item/wrench(src)
new /obj/item/weldingtool/largetank(src)
new /obj/item/crowbar/red(src)
new /obj/item/wirecutters(src, "red")
new /obj/item/stack/cable_coil(src, 30, COLOR_RED)
update_icon()
/obj/item/storage/belt/grenade
name = "grenadier belt"
desc = "A belt for holding grenades."
icon_state = "assaultbelt"
item_state = "assault"
storage_slots = 30
max_combined_w_class = 60
display_contents_with_number = TRUE
can_hold = list(
/obj/item/grenade,
/obj/item/lighter,
/obj/item/reagent_containers/food/drinks/bottle/molotov
)
/obj/item/storage/belt/grenade/full/populate_contents()
for(var/I in 1 to 4)
new /obj/item/grenade/smokebomb(src) // Four of each
new /obj/item/grenade/gluon(src)
for(var/I in 1 to 10)
new /obj/item/grenade/frag(src)
for(var/I in 1 to 2)
new /obj/item/grenade/gas/plasma(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/syndieminibomb(src)
new /obj/item/grenade/chem_grenade/facid(src) //1
new /obj/item/grenade/chem_grenade/saringas(src) //1
/obj/item/storage/belt/military/abductor
name = "agent belt"
desc = "A belt used by abductor agents."
icon = 'icons/obj/abductor.dmi'
icon_state = "belt"
item_state = "security"
/obj/item/storage/belt/military/abductor/full/populate_contents()
new /obj/item/screwdriver/abductor(src)
new /obj/item/wrench/abductor(src)
new /obj/item/weldingtool/abductor(src)
new /obj/item/crowbar/abductor(src)
new /obj/item/wirecutters/abductor(src)
new /obj/item/multitool/abductor(src)
new /obj/item/stack/cable_coil(src, 30, COLOR_WHITE)
/obj/item/storage/belt/military/assault
name = "assault belt"
desc = "A tactical assault belt."
icon_state = "assaultbelt"
item_state = "assault"
storage_slots = 6
/obj/item/storage/belt/military/assault/marines/full/populate_contents()
new /obj/item/ammo_box/magazine/m12g(src)
new /obj/item/ammo_box/magazine/m12g(src)
new /obj/item/ammo_box/magazine/m12g(src)
new /obj/item/ammo_box/magazine/m12g(src)
new /obj/item/ammo_box/magazine/m45(src)
new /obj/item/ammo_box/magazine/m45(src)
update_icon()
/obj/item/storage/belt/military/assault/marines/elite/full/populate_contents()
new /obj/item/ammo_box/magazine/m556/arg(src)
new /obj/item/ammo_box/magazine/m556/arg(src)
new /obj/item/ammo_box/magazine/m556/arg(src)
new /obj/item/ammo_box/magazine/m45(src)
new /obj/item/ammo_box/magazine/m45(src)
update_icon()
/obj/item/storage/belt/janitor
name = "janibelt"
desc = "A belt used to hold most janitorial supplies."
icon_state = "janibelt"
item_state = "janibelt"
storage_slots = 6
max_w_class = WEIGHT_CLASS_BULKY // Set to this so the light replacer can fit.
use_item_overlays = TRUE
can_hold = list(
/obj/item/grenade/chem_grenade/cleaner,
/obj/item/lightreplacer,
/obj/item/flashlight,
/obj/item/reagent_containers/spray,
/obj/item/soap,
/obj/item/holosign_creator/janitor,
/obj/item/melee/flyswatter,
/obj/item/storage/bag/trash
)
/obj/item/storage/belt/janitor/full/populate_contents()
new /obj/item/lightreplacer(src)
new /obj/item/holosign_creator/janitor(src)
new /obj/item/reagent_containers/spray/cleaner(src)
new /obj/item/soap(src)
new /obj/item/grenade/chem_grenade/cleaner(src)
new /obj/item/grenade/chem_grenade/cleaner(src)
update_icon()
/obj/item/storage/belt/lazarus
name = "trainer's belt"
desc = "For the mining master, holds your lazarus capsules."
icon_state = "lazarusbelt"
item_state = "lazbelt"
w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_TINY
max_combined_w_class = 6
storage_slots = 6
can_hold = list(/obj/item/mobcapsule)
/obj/item/storage/belt/lazarus/Initialize(mapload)
. = ..()
update_icon()
/obj/item/storage/belt/lazarus/update_icon()
..()
icon_state = "[initial(icon_state)]_[length(contents)]"
/obj/item/storage/belt/lazarus/attackby(obj/item/I, mob/user)
var/amount = length(contents)
. = ..()
if(amount != length(contents))
update_icon()
/obj/item/storage/belt/lazarus/remove_from_storage(obj/item/I, atom/new_location)
..()
update_icon()
/obj/item/storage/belt/bandolier
name = "bandolier"
desc = "A bandolier for holding shotgun ammunition."
icon_state = "bandolier"
item_state = "bandolier"
storage_slots = 8
can_hold = list(/obj/item/ammo_casing/shotgun)
display_contents_with_number = TRUE
/obj/item/storage/belt/bandolier/Initialize(mapload)
. = ..()
update_icon()
/obj/item/storage/belt/bandolier/full/populate_contents()
for(var/I in 1 to 8)
new /obj/item/ammo_casing/shotgun/beanbag(src)
/obj/item/storage/belt/bandolier/update_icon()
..()
icon_state = "[initial(icon_state)]_[length(contents)]"
/obj/item/storage/belt/bandolier/attackby(obj/item/I, mob/user)
var/amount = length(contents)
..()
if(amount != length(contents))
update_icon()
/obj/item/storage/belt/holster
name = "shoulder holster"
desc = "A holster to conceal a carried handgun. WARNING: Badasses only."
icon_state = "holster"
item_state = "holster"
storage_slots = 1
max_w_class = WEIGHT_CLASS_NORMAL
can_hold = list(
/obj/item/gun/projectile/automatic/pistol,
/obj/item/gun/energy/detective
)
/obj/item/storage/belt/wands
name = "wand belt"
desc = "A belt designed to hold various rods of power. A veritable fanny pack of exotic magic."
icon_state = "soulstonebelt"
item_state = "soulstonebelt"
storage_slots = 6
use_item_overlays = TRUE
can_hold = list(
/obj/item/gun/magic/wand
)
/obj/item/storage/belt/wands/full/populate_contents()
new /obj/item/gun/magic/wand/death(src)
new /obj/item/gun/magic/wand/resurrection(src)
new /obj/item/gun/magic/wand/polymorph(src)
new /obj/item/gun/magic/wand/teleport(src)
new /obj/item/gun/magic/wand/door(src)
new /obj/item/gun/magic/wand/fireball(src)
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
update_icon()
/obj/item/storage/belt/fannypack
name = "fannypack"
desc = "A dorky fannypack for keeping small items in."
icon_state = "fannypack_leather"
item_state = "fannypack_leather"
storage_slots = 3
max_w_class = WEIGHT_CLASS_SMALL
/obj/item/storage/belt/fannypack/black
name = "black fannypack"
icon_state = "fannypack_black"
item_state = "fannypack_black"
/obj/item/storage/belt/fannypack/red
name = "red fannypack"
icon_state = "fannypack_red"
item_state = "fannypack_red"
/obj/item/storage/belt/fannypack/purple
name = "purple fannypack"
icon_state = "fannypack_purple"
item_state = "fannypack_purple"
/obj/item/storage/belt/fannypack/blue
name = "blue fannypack"
icon_state = "fannypack_blue"
item_state = "fannypack_blue"
/obj/item/storage/belt/fannypack/orange
name = "orange fannypack"
icon_state = "fannypack_orange"
item_state = "fannypack_orange"
/obj/item/storage/belt/fannypack/white
name = "white fannypack"
icon_state = "fannypack_white"
item_state = "fannypack_white"
/obj/item/storage/belt/fannypack/green
name = "green fannypack"
icon_state = "fannypack_green"
item_state = "fannypack_green"
/obj/item/storage/belt/fannypack/pink
name = "pink fannypack"
icon_state = "fannypack_pink"
item_state = "fannypack_pink"
/obj/item/storage/belt/fannypack/cyan
name = "cyan fannypack"
icon_state = "fannypack_cyan"
item_state = "fannypack_cyan"
/obj/item/storage/belt/fannypack/yellow
name = "yellow fannypack"
icon_state = "fannypack_yellow"
item_state = "fannypack_yellow"
/obj/item/storage/belt/rapier
name = "rapier sheath"
desc = "Can hold rapiers."
icon_state = "sheath"
item_state = "sheath"
storage_slots = 1
w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_BULKY
can_hold = list(/obj/item/melee/rapier)
/obj/item/storage/belt/rapier/populate_contents()
new /obj/item/melee/rapier(src)
update_icon()
/obj/item/storage/belt/rapier/attack_hand(mob/user)
if(loc != user)
return ..()
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
if(H.incapacitated())
return
if(length(contents))
var/obj/item/I = contents[1]
H.visible_message("<span class='notice'>[H] takes [I] out of [src].</span>", "<span class='notice'>You take [I] out of [src].</span>")
H.put_in_hands(I)
update_icon()
else
to_chat(user, "<span class='warning'>[src] is empty!</span>")
/obj/item/storage/belt/rapier/handle_item_insertion(obj/item/W, prevent_warning)
if(!..())
return
playsound(src, 'sound/weapons/blade_sheath.ogg', 20)
/obj/item/storage/belt/rapier/remove_from_storage(obj/item/W, atom/new_location)
if(!..())
return
playsound(src, 'sound/weapons/blade_unsheath.ogg', 20)
/obj/item/storage/belt/rapier/update_icon()
. = ..()
icon_state = initial(icon_state)
item_state = initial(item_state)
if(length(contents))
icon_state = "[icon_state]-rapier"
item_state = "[item_state]-rapier"
if(isliving(loc))
var/mob/living/L = loc
L.update_inv_belt()
// -------------------------------------
// Bluespace Belt
// -------------------------------------
/obj/item/storage/belt/bluespace
name = "Belt of Holding"
desc = "The greatest in pants-supporting technology."
icon_state = "holdingbelt"
item_state = "holdingbelt"
storage_slots = 14
w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_SMALL
max_combined_w_class = 21 // = 14 * 1.5, not 14 * 2. This is deliberate
origin_tech = "bluespace=5;materials=4;engineering=4;plasmatech=5"
can_hold = list()
/obj/item/storage/belt/bluespace/owlman
name = "Owlman's utility belt"
desc = "Sometimes people choose justice. Sometimes, justice chooses you..."
icon_state = "securitybelt"
item_state = "security"
storage_slots = 6
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 18
origin_tech = "bluespace=5;materials=4;engineering=4;plasmatech=5"
allow_quick_empty = TRUE
can_hold = list(
/obj/item/grenade/smokebomb,
/obj/item/restraints/legcuffs/bola
)
flags = NODROP
var/smokecount = 0
var/bolacount = 0
var/cooldown = 0
/obj/item/storage/belt/bluespace/owlman/Initialize(mapload)
. = ..()
START_PROCESSING(SSobj, src)
cooldown = world.time
/obj/item/storage/belt/bluespace/owlman/populate_contents()
for(var/I in 1 to 4)
new /obj/item/grenade/smokebomb(src)
new /obj/item/restraints/legcuffs/bola(src)
new /obj/item/restraints/legcuffs/bola(src)
/obj/item/storage/belt/bluespace/owlman/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/storage/belt/bluespace/owlman/process()
if(cooldown < world.time - 600)
smokecount = 0
var/obj/item/grenade/smokebomb/S
for(S in src)
smokecount++
bolacount = 0
var/obj/item/restraints/legcuffs/bola/B
for(B in src)
bolacount++
if(smokecount < 4)
while(smokecount < 4)
new /obj/item/grenade/smokebomb(src)
smokecount++
if(bolacount < 2)
while(bolacount < 2)
new /obj/item/restraints/legcuffs/bola(src)
bolacount++
cooldown = world.time
update_icon()
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
if(H.belt && H.belt == src)
if(H.s_active && H.s_active == src)
H.s_active.show_to(H)
/obj/item/storage/belt/bluespace/attack(mob/M, mob/user, def_zone)
return
/obj/item/storage/belt/bluespace/admin
name = "Admin's Tool-belt"
desc = "Holds everything for those that run everything."
icon_state = "soulstonebelt"
item_state = "soulstonebelt"
w_class = 10 // permit holding other storage items
storage_slots = 28
max_w_class = 10
max_combined_w_class = 280
can_hold = list()
/obj/item/storage/belt/bluespace/admin/populate_contents()
new /obj/item/crowbar(src)
new /obj/item/screwdriver(src)
new /obj/item/weldingtool/hugetank(src)
new /obj/item/wirecutters(src)
new /obj/item/wrench(src)
new /obj/item/multitool(src)
new /obj/item/stack/cable_coil(src)
new /obj/item/restraints/handcuffs(src)
new /obj/item/dnainjector/firemut(src)
new /obj/item/dnainjector/telemut(src)
new /obj/item/dnainjector/hulkmut(src)
// new /obj/item/spellbook(src) // for smoke effects, door openings, etc
// new /obj/item/magic/spellbook(src)
// new/obj/item/reagent_containers/hypospray/admin(src)
/obj/item/storage/belt/bluespace/sandbox
name = "Sandbox Mode Toolbelt"
desc = "Holds whatever, you can spawn your own damn stuff."
w_class = 10 // permit holding other storage items
storage_slots = 28
max_w_class = 10
max_combined_w_class = 280
can_hold = list()
/obj/item/storage/belt/bluespace/sandbox/populate_contents()
new /obj/item/crowbar(src)
new /obj/item/screwdriver(src)
new /obj/item/weldingtool/hugetank(src)
new /obj/item/wirecutters(src)
new /obj/item/wrench(src)
new /obj/item/multitool(src)
new /obj/item/stack/cable_coil(src)
new /obj/item/analyzer(src)
new /obj/item/healthanalyzer(src)
/obj/item/storage/belt/mining
name = "explorer's webbing"
desc = "A versatile chest rig, cherished by miners and hunters alike."
icon_state = "explorer1"
item_state = "explorer1"
storage_slots = 6
max_w_class = WEIGHT_CLASS_BULKY
max_combined_w_class = 20
use_item_overlays = FALSE
can_hold = list(
/obj/item/crowbar,
/obj/item/screwdriver,
/obj/item/weldingtool,
/obj/item/wirecutters,
/obj/item/wrench,
/obj/item/multitool,
/obj/item/flashlight,
/obj/item/stack/cable_coil,
/obj/item/analyzer,
/obj/item/extinguisher/mini,
/obj/item/radio,
/obj/item/clothing/gloves,
/obj/item/resonator,
/obj/item/mining_scanner,
/obj/item/pickaxe,
/obj/item/shovel,
/obj/item/stack/sheet/animalhide,
/obj/item/stack/sheet/sinew,
/obj/item/stack/sheet/bone,
/obj/item/lighter,
/obj/item/storage/fancy/cigarettes,
/obj/item/reagent_containers/food/drinks/bottle,
/obj/item/stack/medical,
/obj/item/kitchen/knife,
/obj/item/reagent_containers/hypospray,
/obj/item/gps,
/obj/item/storage/bag/ore,
/obj/item/survivalcapsule,
/obj/item/t_scanner/adv_mining_scanner,
/obj/item/reagent_containers/food/pill,
/obj/item/storage/pill_bottle,
/obj/item/stack/ore,
/obj/item/reagent_containers/food/drinks,
/obj/item/organ/internal/regenerative_core,
/obj/item/wormhole_jaunter,
/obj/item/storage/bag/plants,
/obj/item/stack/marker_beacon)
/obj/item/storage/belt/mining/vendor/Initialize(mapload)
. = ..()
new /obj/item/survivalcapsule(src)
/obj/item/storage/belt/mining/alt
icon_state = "explorer2"
item_state = "explorer2"
/obj/item/storage/belt/mining/primitive
name = "hunter's belt"
desc = "A versatile belt, woven from sinew."
icon_state = "ebelt"
item_state = "ebelt"
storage_slots = 5
/obj/item/storage/belt/chef
name = "culinary tool apron"
desc = "An apron with various pockets for holding all your cooking tools and equipment."
icon_state = "chefbelt"
item_state = "chefbelt"
storage_slots = 10
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 25
can_hold = list(
/obj/item/kitchen/utensil,
/obj/item/kitchen/knife,
/obj/item/kitchen/rollingpin,
/obj/item/kitchen/mould,
/obj/item/kitchen/sushimat,
/obj/item/kitchen/cutter,
/obj/item/assembly/mousetrap,
/obj/item/reagent_containers/spray/pestspray,
/obj/item/reagent_containers/food/drinks/flask,
/obj/item/reagent_containers/food/drinks/drinkingglass,
/obj/item/reagent_containers/food/drinks/bottle,
/obj/item/reagent_containers/food/drinks/cans,
/obj/item/reagent_containers/food/drinks/shaker,
/obj/item/reagent_containers/food/snacks,
/obj/item/reagent_containers/food/condiment,
/obj/item/reagent_containers/glass/beaker)