mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-31 09:08:30 +01:00
## About The Pull Request Updates pipeguns with a brand new set of sprites. Also comes with pipe pistols; plinkier versions of the pipegun.    Alters pipeguns away from utilizing shotgun/rifle ammunition towards a bespoke junk round ammo. These shells are crafted similarly to current improvised shells. This also removes improvised shells as a shotgun ammo type. (these new shells aren't shotgun shells to begin with, they're more like rifle bullets) Crafting junk rounds produces an entirely unknown projectile in the shell. You won't know what you get until you fire the gun. Almost in every instance, however, the shot is beneficial towards killing things. And they all do about the same amount of damage, so there is hopefully never a round you didn't want to fire in the gun. Fighting someone with a pipegun is usually predictable for what amount of damage it will do, but any additional effects it might have is going to be an unknown factor. They also brutalize borgs, which is a quality that improvised shells had previously. Pipeguns operate as they did before, and do roughly 40 damage per shot with the majority of their ammo types (less than what they do currently with .310). They only have one shell in the gun at a time, so every time they're fired, they must be reloaded. Pipe pistols do roughly 15 damage per shot, but hold more ammo than the bigger pipegun. However, they're more likely to veer off-course. There are regal versions of each of these weapons, and each are more potent respective of their general rarity. Having one is going to be a lot more noteworthy. ### Minor changes Some more clothing items can carry pipeguns in their suit storage. The icemoon hermit spawns with a heroic laser musket rather than a regal pipegun (partially because it is too difficult for the hermit to get more ammo for their gun, and also because the regal pipegun is a more powerful weapon than previously) ## Why It's Good For The Game It has been a few years since I added the pipegun, and time was never particularly kind to it. There are alternative weapons now with interesting mechanics of their own. The ammunition it used has changed considerably. And it simply didn't ever feel like a 'junk gun' in a way that was fun. The original mechanics added to give it that feeling were just not fun to experience and were removed. So the pipegun has been left as 'a shitty version of X'. Even the regal pipegun was, at the end of the day, a shittier version of either a shotgun or cargo rifle. It didn't feel right not having some kind of unique quality to using these weapons that help them express themselves as unpredictable trash weapons built inside of maintenance. But I expressly didn't want to make it 'unpredictable' in a way that felt unfair on the person getting shot either. So just giving it more damage was right out. As a compromise, I reduced the overall lethality of the weapons while introducing a gimmick that will appeal to those wanting to play out the role of a homeless lunatic with a shitty homemade gun stalking maintenance. A 'chaos gun' so to speak. Maybe that will appeal to people. ## Changelog 🆑 balance: Reworks pipeguns to use an unpredictable 'junk round'. You won't know what you're shooting until you fire it. add: Introduces a pistol version of the pipegun; the pipe pistol. It is inaccurate and does significantly less damage, but more portable and has more ammunition in the gun. image: Updates the visuals of the pipeguns. balance: Also improves the Regal varieties of these weapons. By a lot. balance: More articles of clothing can be used to carry pipeguns in suit storage. balance: The Icemoon Hermit comes with a Heroic Laser Musket instead of a Regal Pipegun. remove: Improvised shells (the shotgun shell) has been replaced with improvised junk shells (which don't work with shotguns but do work with pipeguns). /🆑 --------- Co-authored-by: Jacquerel <hnevard@ gmail.com>
911 lines
30 KiB
Plaintext
911 lines
30 KiB
Plaintext
/obj/item/storage/belt
|
|
name = "not actually a toolbelt"
|
|
desc = "Can hold various things. This is the base type of /belt, are you sure you should have this?"
|
|
icon = 'icons/obj/clothing/belts.dmi'
|
|
icon_state = "utility"
|
|
inhand_icon_state = "utility"
|
|
worn_icon_state = "utility"
|
|
lefthand_file = 'icons/mob/inhands/equipment/belt_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/equipment/belt_righthand.dmi'
|
|
slot_flags = ITEM_SLOT_BELT
|
|
attack_verb_continuous = list("whips", "lashes", "disciplines")
|
|
attack_verb_simple = list("whip", "lash", "discipline")
|
|
max_integrity = 300
|
|
equip_sound = 'sound/items/equip/toolbelt_equip.ogg'
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
var/content_overlays = FALSE //If this is true, the belt will gain overlays based on what it's holding
|
|
|
|
/obj/item/storage/belt/suicide_act(mob/living/carbon/user)
|
|
user.visible_message(span_suicide("[user] begins belting [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
|
|
return BRUTELOSS
|
|
|
|
/obj/item/storage/belt/update_overlays()
|
|
. = ..()
|
|
if(!content_overlays)
|
|
return
|
|
for(var/obj/item/I in contents)
|
|
. += I.get_belt_overlay()
|
|
|
|
/obj/item/storage/belt/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/attack_equip)
|
|
update_appearance()
|
|
|
|
/obj/item/storage/belt/utility
|
|
name = "toolbelt" //Carn: utility belt is nicer, but it bamboozles the text parsing.
|
|
desc = "Holds tools."
|
|
icon_state = "utility"
|
|
inhand_icon_state = "utility"
|
|
worn_icon_state = "utility"
|
|
content_overlays = TRUE
|
|
custom_premium_price = PAYCHECK_CREW * 2
|
|
drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
|
|
pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
|
|
|
|
/obj/item/storage/belt/utility/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
|
atom_storage.max_total_storage = 21
|
|
atom_storage.set_holdable(list(
|
|
/obj/item/airlock_painter,
|
|
/obj/item/analyzer,
|
|
/obj/item/assembly/signaler,
|
|
/obj/item/clothing/gloves,
|
|
/obj/item/construction/rcd,
|
|
/obj/item/construction/rld,
|
|
/obj/item/construction/rtd,
|
|
/obj/item/crowbar,
|
|
/obj/item/extinguisher/mini,
|
|
/obj/item/flashlight,
|
|
/obj/item/forcefield_projector,
|
|
/obj/item/geiger_counter,
|
|
/obj/item/holosign_creator/atmos,
|
|
/obj/item/holosign_creator/engineering,
|
|
/obj/item/inducer,
|
|
/obj/item/lightreplacer,
|
|
/obj/item/multitool,
|
|
/obj/item/pipe_dispenser,
|
|
/obj/item/pipe_painter,
|
|
/obj/item/plunger,
|
|
/obj/item/radio,
|
|
/obj/item/screwdriver,
|
|
/obj/item/stack/cable_coil,
|
|
/obj/item/t_scanner,
|
|
/obj/item/weldingtool,
|
|
/obj/item/wirecutters,
|
|
/obj/item/wrench,
|
|
/obj/item/spess_knife,
|
|
/obj/item/melee/sickly_blade/lock,
|
|
))
|
|
|
|
/obj/item/storage/belt/utility/chief
|
|
name = "\improper Chief Engineer's toolbelt" //"the Chief Engineer's toolbelt", because "Chief Engineer's toolbelt" is not a proper noun
|
|
desc = "Holds tools, looks snazzy."
|
|
icon_state = "utility_ce"
|
|
inhand_icon_state = "utility_ce"
|
|
worn_icon_state = "utility_ce"
|
|
|
|
/obj/item/storage/belt/utility/chief/full
|
|
preload = TRUE
|
|
|
|
/obj/item/storage/belt/utility/chief/full/PopulateContents()
|
|
SSwardrobe.provide_type(/obj/item/screwdriver/power, src)
|
|
SSwardrobe.provide_type(/obj/item/crowbar/power, src)
|
|
SSwardrobe.provide_type(/obj/item/weldingtool/experimental, src)
|
|
SSwardrobe.provide_type(/obj/item/multitool, src)
|
|
SSwardrobe.provide_type(/obj/item/stack/cable_coil, src)
|
|
SSwardrobe.provide_type(/obj/item/extinguisher/mini, src)
|
|
SSwardrobe.provide_type(/obj/item/analyzer/ranged, src) //SKYRAT EDIT - Ranged Analyzer for CE - ORIGINAL: SSwardrobe.provide_type(/obj/item/analyzer, src)
|
|
//much roomier now that we've managed to remove two tools
|
|
|
|
/obj/item/storage/belt/utility/chief/full/get_types_to_preload()
|
|
var/list/to_preload = list() //Yes this is a pain. Yes this is the point
|
|
to_preload += /obj/item/screwdriver/power
|
|
to_preload += /obj/item/crowbar/power
|
|
to_preload += /obj/item/weldingtool/electric // SKYRAT EDIT - Electric welder
|
|
to_preload += /obj/item/multitool
|
|
to_preload += /obj/item/stack/cable_coil
|
|
to_preload += /obj/item/extinguisher/mini
|
|
to_preload += /obj/item/analyzer/ranged // SKYRAT EDIT - Ranged Analyzer for CE
|
|
return to_preload
|
|
|
|
/obj/item/storage/belt/utility/full/PopulateContents()
|
|
SSwardrobe.provide_type(/obj/item/screwdriver, src)
|
|
SSwardrobe.provide_type(/obj/item/wrench, src)
|
|
SSwardrobe.provide_type(/obj/item/weldingtool, src)
|
|
SSwardrobe.provide_type(/obj/item/crowbar, src)
|
|
SSwardrobe.provide_type(/obj/item/wirecutters, src)
|
|
SSwardrobe.provide_type(/obj/item/multitool, src)
|
|
SSwardrobe.provide_type(/obj/item/stack/cable_coil, src)
|
|
|
|
/obj/item/storage/belt/utility/full/get_types_to_preload()
|
|
var/list/to_preload = list() //Yes this is a pain. Yes this is the point
|
|
to_preload += /obj/item/screwdriver
|
|
to_preload += /obj/item/wrench
|
|
to_preload += /obj/item/weldingtool
|
|
to_preload += /obj/item/crowbar
|
|
to_preload += /obj/item/wirecutters
|
|
to_preload += /obj/item/multitool
|
|
to_preload += /obj/item/stack/cable_coil
|
|
return to_preload
|
|
|
|
/obj/item/storage/belt/utility/full/powertools
|
|
preload = FALSE
|
|
|
|
/obj/item/storage/belt/utility/full/powertools/PopulateContents()
|
|
new /obj/item/screwdriver/power(src)
|
|
new /obj/item/crowbar/power(src)
|
|
new /obj/item/weldingtool/electric(src) // SKYRAT EDIT - original: new /obj/item/weldingtool/experimental(src)
|
|
new /obj/item/multitool(src)
|
|
new /obj/item/holosign_creator/atmos(src)
|
|
new /obj/item/extinguisher/mini(src)
|
|
new /obj/item/stack/cable_coil(src)
|
|
|
|
/obj/item/storage/belt/utility/full/powertools/rcd/PopulateContents()
|
|
new /obj/item/screwdriver/power(src)
|
|
new /obj/item/crowbar/power(src)
|
|
new /obj/item/weldingtool/experimental(src)
|
|
new /obj/item/multitool(src)
|
|
new /obj/item/construction/rcd/loaded/upgraded(src)
|
|
new /obj/item/extinguisher/mini(src)
|
|
new /obj/item/stack/cable_coil(src)
|
|
|
|
/obj/item/storage/belt/utility/full/engi/PopulateContents()
|
|
SSwardrobe.provide_type(/obj/item/screwdriver, src)
|
|
SSwardrobe.provide_type(/obj/item/wrench, src)
|
|
SSwardrobe.provide_type(/obj/item/weldingtool/largetank, src)
|
|
SSwardrobe.provide_type(/obj/item/crowbar, src)
|
|
SSwardrobe.provide_type(/obj/item/wirecutters, src)
|
|
SSwardrobe.provide_type(/obj/item/multitool, src)
|
|
SSwardrobe.provide_type(/obj/item/stack/cable_coil, src)
|
|
|
|
/obj/item/storage/belt/utility/full/engi/get_types_to_preload()
|
|
var/list/to_preload = list() //Yes this is a pain. Yes this is the point
|
|
to_preload += /obj/item/screwdriver
|
|
to_preload += /obj/item/wrench
|
|
to_preload += /obj/item/weldingtool/largetank
|
|
to_preload += /obj/item/crowbar
|
|
to_preload += /obj/item/wirecutters
|
|
to_preload += /obj/item/multitool
|
|
to_preload += /obj/item/stack/cable_coil
|
|
return to_preload
|
|
|
|
/obj/item/storage/belt/utility/atmostech/PopulateContents()
|
|
SSwardrobe.provide_type(/obj/item/screwdriver, src)
|
|
SSwardrobe.provide_type(/obj/item/wrench, src)
|
|
SSwardrobe.provide_type(/obj/item/weldingtool, src)
|
|
SSwardrobe.provide_type(/obj/item/crowbar, src)
|
|
SSwardrobe.provide_type(/obj/item/wirecutters, src)
|
|
SSwardrobe.provide_type(/obj/item/t_scanner, src)
|
|
SSwardrobe.provide_type(/obj/item/extinguisher/mini, src)
|
|
|
|
/obj/item/storage/belt/utility/atmostech/get_types_to_preload()
|
|
var/list/to_preload = list() //Yes this is a pain. Yes this is the point
|
|
to_preload += /obj/item/screwdriver
|
|
to_preload += /obj/item/wrench
|
|
to_preload += /obj/item/weldingtool
|
|
to_preload += /obj/item/crowbar
|
|
to_preload += /obj/item/wirecutters
|
|
to_preload += /obj/item/t_scanner
|
|
to_preload += /obj/item/extinguisher/mini
|
|
return to_preload
|
|
|
|
/obj/item/storage/belt/utility/full/inducer/PopulateContents()
|
|
SSwardrobe.provide_type(/obj/item/screwdriver, src)
|
|
SSwardrobe.provide_type(/obj/item/wrench, src)
|
|
SSwardrobe.provide_type(/obj/item/weldingtool, src)
|
|
SSwardrobe.provide_type(/obj/item/crowbar/red, src)
|
|
SSwardrobe.provide_type(/obj/item/wirecutters, src)
|
|
SSwardrobe.provide_type(/obj/item/multitool, src)
|
|
SSwardrobe.provide_type(/obj/item/inducer, src)
|
|
|
|
/obj/item/storage/belt/utility/full/inducer/get_types_to_preload()
|
|
var/list/to_preload = list() //Yes this is a pain. Yes this is the point
|
|
to_preload += /obj/item/screwdriver
|
|
to_preload += /obj/item/wrench
|
|
to_preload += /obj/item/weldingtool
|
|
to_preload += /obj/item/crowbar
|
|
to_preload += /obj/item/wirecutters
|
|
to_preload += /obj/item/multitool
|
|
to_preload += /obj/item/inducer
|
|
return to_preload
|
|
|
|
/obj/item/storage/belt/utility/syndicate
|
|
preload = FALSE
|
|
|
|
/obj/item/storage/belt/utility/syndicate/PopulateContents()
|
|
new /obj/item/screwdriver/nuke(src)
|
|
new /obj/item/wrench/combat(src)
|
|
new /obj/item/weldingtool/largetank(src)
|
|
new /obj/item/crowbar(src)
|
|
new /obj/item/wirecutters(src)
|
|
new /obj/item/multitool(src)
|
|
new /obj/item/inducer/syndicate(src)
|
|
|
|
/obj/item/storage/belt/medical
|
|
name = "medical belt"
|
|
desc = "Can hold various medical equipment."
|
|
icon_state = "medical"
|
|
inhand_icon_state = "medical"
|
|
worn_icon_state = "medical"
|
|
|
|
/obj/item/storage/belt/medical/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
|
atom_storage.max_total_storage = 21
|
|
atom_storage.set_holdable(list(
|
|
/obj/item/bikehorn/rubberducky,
|
|
/obj/item/blood_filter,
|
|
/obj/item/bonesetter,
|
|
/obj/item/cautery,
|
|
/obj/item/circular_saw,
|
|
/obj/item/clothing/glasses,
|
|
/obj/item/clothing/gloves,
|
|
/obj/item/clothing/neck/stethoscope,
|
|
/obj/item/clothing/mask/breath,
|
|
/obj/item/clothing/mask/muzzle,
|
|
/obj/item/clothing/mask/surgical,
|
|
/obj/item/clothing/suit/toggle/labcoat/hospitalgown, //SKYRAT EDIT ADDITION - adds surgery gowns to belts
|
|
/obj/item/clothing/head/utility/surgerycap,
|
|
/obj/item/construction/plumbing,
|
|
/obj/item/dnainjector,
|
|
/obj/item/extinguisher/mini,
|
|
/obj/item/flashlight/pen,
|
|
/obj/item/geiger_counter,
|
|
/obj/item/gun/syringe/syndicate,
|
|
/obj/item/healthanalyzer,
|
|
/obj/item/hemostat,
|
|
/obj/item/holosign_creator/medical,
|
|
/obj/item/hypospray/mkii, //SKYRAT EDIT ADDITION - HYPOSPRAYS
|
|
/obj/item/storage/hypospraykit/, //SKYRAT EDIT ADDITION - HYPOSPRAYS
|
|
/obj/item/implant,
|
|
/obj/item/implantcase,
|
|
/obj/item/implanter,
|
|
/obj/item/lazarus_injector,
|
|
/obj/item/lighter,
|
|
/obj/item/pinpointer/crew,
|
|
/obj/item/plunger,
|
|
/obj/item/radio,
|
|
/obj/item/reagent_containers/blood,
|
|
/obj/item/reagent_containers/dropper,
|
|
/obj/item/reagent_containers/cup/beaker,
|
|
/obj/item/reagent_containers/cup/bottle,
|
|
/obj/item/reagent_containers/cup/vial, //SKYRAT EDIT ADDITION - HYPOSPRAYS
|
|
/obj/item/reagent_containers/cup/tube,
|
|
/obj/item/reagent_containers/hypospray,
|
|
/obj/item/reagent_containers/medigel,
|
|
/obj/item/reagent_containers/pill,
|
|
/obj/item/reagent_containers/spray,
|
|
/obj/item/reagent_containers/syringe,
|
|
/obj/item/retractor,
|
|
/obj/item/scalpel,
|
|
/obj/item/shears,
|
|
/obj/item/stack/medical,
|
|
/obj/item/stack/sticky_tape, //surgical tape
|
|
/obj/item/stamp,
|
|
/obj/item/sensor_device,
|
|
/obj/item/storage/fancy/cigarettes,
|
|
/obj/item/storage/pill_bottle,
|
|
/obj/item/surgical_drapes, //for true paramedics
|
|
/obj/item/surgicaldrill,
|
|
/obj/item/tank/internals/emergency_oxygen,
|
|
/obj/item/weaponcell/medical, //SKYRAT EDIT MEDIGUNS
|
|
/obj/item/handheld_soulcatcher, // SKYRAT EDIT SOULCATCHERS
|
|
/obj/item/wrench/medical,
|
|
))
|
|
|
|
/obj/item/storage/belt/medical/paramedic
|
|
name = "EMT belt"
|
|
icon_state = "emt"
|
|
inhand_icon_state = "security"
|
|
worn_icon_state = "emt"
|
|
preload = TRUE
|
|
|
|
/obj/item/storage/belt/medical/paramedic/PopulateContents()
|
|
SSwardrobe.provide_type(/obj/item/sensor_device, src)
|
|
SSwardrobe.provide_type(/obj/item/stack/medical/gauze/twelve, src)
|
|
SSwardrobe.provide_type(/obj/item/stack/medical/bone_gel, src)
|
|
SSwardrobe.provide_type(/obj/item/stack/sticky_tape/surgical, src)
|
|
SSwardrobe.provide_type(/obj/item/reagent_containers/syringe, src)
|
|
SSwardrobe.provide_type(/obj/item/reagent_containers/cup/bottle/ammoniated_mercury, src)
|
|
SSwardrobe.provide_type(/obj/item/reagent_containers/cup/bottle/formaldehyde, src)
|
|
update_appearance()
|
|
|
|
/obj/item/storage/belt/medical/paramedic/get_types_to_preload()
|
|
var/list/to_preload = list() //Yes this is a pain. Yes this is the point
|
|
to_preload += /obj/item/sensor_device
|
|
to_preload += /obj/item/stack/medical/gauze/twelve
|
|
to_preload += /obj/item/stack/medical/bone_gel
|
|
to_preload += /obj/item/stack/sticky_tape/surgical
|
|
to_preload += /obj/item/reagent_containers/syringe
|
|
to_preload += /obj/item/reagent_containers/cup/bottle/ammoniated_mercury
|
|
to_preload += /obj/item/reagent_containers/cup/bottle/formaldehyde
|
|
return to_preload
|
|
|
|
/obj/item/storage/belt/medical/ert
|
|
icon_state = "emt"
|
|
inhand_icon_state = "security"
|
|
worn_icon_state = "emt"
|
|
preload = TRUE
|
|
|
|
/obj/item/storage/belt/medical/ert/PopulateContents()
|
|
SSwardrobe.provide_type(/obj/item/sensor_device, src)
|
|
SSwardrobe.provide_type(/obj/item/pinpointer/crew, src)
|
|
SSwardrobe.provide_type(/obj/item/scalpel/advanced, src)
|
|
SSwardrobe.provide_type(/obj/item/retractor/advanced, src)
|
|
SSwardrobe.provide_type(/obj/item/stack/medical/bone_gel, src)
|
|
SSwardrobe.provide_type(/obj/item/cautery/advanced, src)
|
|
SSwardrobe.provide_type(/obj/item/surgical_drapes, src)
|
|
update_appearance()
|
|
|
|
/obj/item/storage/belt/medical/ert/get_types_to_preload()
|
|
var/list/to_preload = list()
|
|
to_preload += /obj/item/sensor_device
|
|
to_preload += /obj/item/pinpointer/crew
|
|
to_preload += /obj/item/scalpel/advanced
|
|
to_preload += /obj/item/retractor/advanced
|
|
to_preload += /obj/item/stack/medical/bone_gel
|
|
to_preload += /obj/item/cautery/advanced
|
|
to_preload += /obj/item/surgical_drapes
|
|
return to_preload
|
|
|
|
/obj/item/storage/belt/security
|
|
name = "security belt"
|
|
desc = "Can hold security gear like handcuffs and flashes."
|
|
icon_state = "security"
|
|
inhand_icon_state = "security"//Could likely use a better one.
|
|
worn_icon_state = "security"
|
|
content_overlays = TRUE
|
|
// SKYRAT EDIT ADDITION START
|
|
uses_advanced_reskins = TRUE
|
|
unique_reskin = list(
|
|
"Basic Security" = list(
|
|
RESKIN_ICON = 'icons/obj/clothing/belts.dmi',
|
|
RESKIN_ICON_STATE = "security",
|
|
RESKIN_WORN_ICON = 'icons/mob/clothing/belt.dmi',
|
|
RESKIN_WORN_ICON_STATE = "security"
|
|
),
|
|
"Peacekeeper" = list(
|
|
RESKIN_ICON = 'modular_skyrat/master_files/icons/obj/clothing/belts.dmi',
|
|
RESKIN_ICON_STATE = "peacekeeperbelt",
|
|
RESKIN_WORN_ICON = 'modular_skyrat/master_files/icons/mob/clothing/belt.dmi',
|
|
RESKIN_WORN_ICON_STATE = "peacekeeperbelt"
|
|
)
|
|
)
|
|
// SKYRAT EDIT ADDITION END
|
|
|
|
/obj/item/storage/belt/security/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_slots = 5
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
|
atom_storage.set_holdable(list(
|
|
/obj/item/ammo_box,
|
|
/obj/item/ammo_casing/shotgun,
|
|
/obj/item/assembly/flash/handheld,
|
|
/obj/item/clothing/glasses,
|
|
/obj/item/clothing/gloves,
|
|
/obj/item/flashlight/seclite,
|
|
/obj/item/food/donut,
|
|
/obj/item/grenade,
|
|
/obj/item/gun, //SKYRAT EDIT ADDITION
|
|
/obj/item/holosign_creator/security,
|
|
/obj/item/knife/combat,
|
|
/obj/item/melee/baton,
|
|
/obj/item/radio,
|
|
/obj/item/reagent_containers/spray/pepper,
|
|
/obj/item/restraints/handcuffs,
|
|
/obj/item/restraints/legcuffs/bola,
|
|
/obj/item/stock_parts/cell/microfusion, //SKYRAT EDIT ADDITION
|
|
))
|
|
|
|
/obj/item/storage/belt/security/full/PopulateContents()
|
|
new /obj/item/reagent_containers/spray/pepper(src)
|
|
new /obj/item/restraints/handcuffs(src)
|
|
new /obj/item/grenade/flashbang(src)
|
|
new /obj/item/assembly/flash/handheld(src)
|
|
new /obj/item/melee/baton/security/loaded(src)
|
|
update_appearance()
|
|
|
|
/obj/item/storage/belt/security/webbing
|
|
name = "security webbing"
|
|
desc = "Unique and versatile chest rig, can hold security gear."
|
|
icon_state = "securitywebbing"
|
|
inhand_icon_state = "securitywebbing"
|
|
worn_icon_state = "securitywebbing"
|
|
content_overlays = FALSE
|
|
custom_premium_price = PAYCHECK_COMMAND * 3
|
|
|
|
/obj/item/storage/belt/security/webbing/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_slots = 6
|
|
|
|
/obj/item/storage/belt/mining
|
|
name = "explorer's webbing"
|
|
desc = "A versatile chest rig, cherished by miners and hunters alike."
|
|
icon_state = "explorer1"
|
|
inhand_icon_state = "explorer1"
|
|
worn_icon_state = "explorer1"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
|
|
/obj/item/storage/belt/mining/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_slots = 6
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
|
atom_storage.max_total_storage = 20
|
|
atom_storage.set_holdable(list(
|
|
/obj/item/analyzer,
|
|
/obj/item/clothing/gloves,
|
|
/obj/item/crowbar,
|
|
/obj/item/extinguisher/mini,
|
|
/obj/item/flashlight,
|
|
/obj/item/gps,
|
|
/obj/item/mining_stabilizer,
|
|
/obj/item/key/lasso,
|
|
/obj/item/knife,
|
|
/obj/item/lighter,
|
|
/obj/item/mining_scanner,
|
|
/obj/item/multitool,
|
|
/obj/item/organ/internal/monster_core,
|
|
/obj/item/pickaxe,
|
|
/obj/item/radio,
|
|
/obj/item/reagent_containers/cup/glass,
|
|
/obj/item/reagent_containers/cup/glass/bottle,
|
|
/obj/item/reagent_containers/hypospray,
|
|
/obj/item/reagent_containers/pill,
|
|
/obj/item/resonator,
|
|
/obj/item/screwdriver,
|
|
/obj/item/shovel,
|
|
/obj/item/stack/cable_coil,
|
|
/obj/item/stack/marker_beacon,
|
|
/obj/item/stack/medical,
|
|
/obj/item/stack/ore,
|
|
/obj/item/stack/sheet/animalhide,
|
|
/obj/item/stack/sheet/bone,
|
|
/obj/item/stack/sheet/sinew,
|
|
/obj/item/storage/bag/ore,
|
|
/obj/item/storage/fancy/cigarettes,
|
|
/obj/item/storage/pill_bottle,
|
|
/obj/item/survivalcapsule,
|
|
/obj/item/t_scanner/adv_mining_scanner,
|
|
/obj/item/weldingtool,
|
|
/obj/item/wirecutters,
|
|
/obj/item/wrench,
|
|
/obj/item/wormhole_jaunter,
|
|
/obj/item/skeleton_key,
|
|
))
|
|
|
|
|
|
/obj/item/storage/belt/mining/vendor/PopulateContents()
|
|
new /obj/item/survivalcapsule(src)
|
|
|
|
/obj/item/storage/belt/mining/alt
|
|
icon_state = "explorer2"
|
|
inhand_icon_state = "explorer2"
|
|
worn_icon_state = "explorer2"
|
|
|
|
/obj/item/storage/belt/mining/healing/PopulateContents()
|
|
for(var/i in 1 to 2)
|
|
new /obj/item/reagent_containers/hypospray/medipen/survival/luxury(src)
|
|
for(var/i in 1 to 2)
|
|
new /obj/item/reagent_containers/hypospray/medipen/survival(src)
|
|
for(var/i in 1 to 2)
|
|
var/obj/item/organ/internal/monster_core/core = new /obj/item/organ/internal/monster_core/regenerative_core/legion(src)
|
|
core.preserve()
|
|
|
|
/obj/item/storage/belt/mining/primitive
|
|
name = "hunter's belt"
|
|
desc = "A versatile belt, woven from sinew."
|
|
icon_state = "ebelt"
|
|
inhand_icon_state = "ebelt"
|
|
worn_icon_state = "ebelt"
|
|
|
|
/obj/item/storage/belt/mining/primitive/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_slots = 5
|
|
|
|
/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"
|
|
inhand_icon_state = "soulstonebelt"
|
|
worn_icon_state = "soulstonebelt"
|
|
|
|
/obj/item/storage/belt/soulstone/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_slots = 6
|
|
atom_storage.set_holdable(/obj/item/soulstone)
|
|
|
|
/obj/item/storage/belt/soulstone/full/PopulateContents()
|
|
for(var/i in 1 to 6)
|
|
new /obj/item/soulstone/mystic(src)
|
|
|
|
/obj/item/storage/belt/soulstone/full/chappy/PopulateContents()
|
|
for(var/i in 1 to 6)
|
|
new /obj/item/soulstone/anybody/chaplain(src)
|
|
|
|
/obj/item/storage/belt/champion
|
|
name = "championship belt"
|
|
desc = "Proves to the world that you are the strongest!"
|
|
icon_state = "championbelt"
|
|
inhand_icon_state = "championbelt"
|
|
worn_icon_state = "championbelt"
|
|
custom_materials = list(/datum/material/gold=SMALL_MATERIAL_AMOUNT *4)
|
|
|
|
/obj/item/storage/belt/champion/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_slots = 1
|
|
atom_storage.set_holdable(/obj/item/clothing/mask/luchador)
|
|
|
|
/obj/item/storage/belt/military
|
|
name = "chest rig"
|
|
desc = "A set of tactical webbing worn by Syndicate boarding parties."
|
|
icon_state = "militarywebbing"
|
|
inhand_icon_state = "militarywebbing"
|
|
worn_icon_state = "militarywebbing"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/belt/military/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
|
|
|
/obj/item/storage/belt/military/snack
|
|
name = "tactical snack rig"
|
|
|
|
/obj/item/storage/belt/military/snack/Initialize(mapload)
|
|
. = ..()
|
|
var/sponsor = pick("Donk Co.", "Waffle Co.", "Roffle Co.", "Gorlax Marauders", "Tiger Cooperative")
|
|
desc = "A set of snack-tical webbing worn by athletes of the [sponsor] VR sports division."
|
|
atom_storage.max_slots = 6
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
|
atom_storage.set_holdable(list(
|
|
/obj/item/food,
|
|
/obj/item/reagent_containers/cup/glass,
|
|
))
|
|
|
|
/obj/item/storage/belt/military/snack/full
|
|
|
|
/obj/item/storage/belt/military/snack/full/Initialize(mapload)
|
|
. = ..()
|
|
var/amount = 5
|
|
var/rig_snacks
|
|
while(contents.len <= amount)
|
|
rig_snacks = pick(list(
|
|
/obj/item/food/candy,
|
|
/obj/item/food/cheesiehonkers,
|
|
/obj/item/food/cheesynachos,
|
|
/obj/item/food/chips,
|
|
/obj/item/food/cubannachos,
|
|
/obj/item/food/donkpocket,
|
|
/obj/item/food/nachos,
|
|
/obj/item/food/nugget,
|
|
/obj/item/food/rofflewaffles,
|
|
/obj/item/food/sosjerky,
|
|
/obj/item/food/spacetwinkie,
|
|
/obj/item/food/spaghetti/pastatomato,
|
|
/obj/item/food/syndicake,
|
|
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/nuka_cola,
|
|
/obj/item/reagent_containers/cup/glass/dry_ramen,
|
|
/obj/item/reagent_containers/cup/soda_cans/cola,
|
|
/obj/item/reagent_containers/cup/soda_cans/dr_gibb,
|
|
/obj/item/reagent_containers/cup/soda_cans/lemon_lime,
|
|
/obj/item/reagent_containers/cup/soda_cans/pwr_game,
|
|
/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind,
|
|
/obj/item/reagent_containers/cup/soda_cans/space_up,
|
|
/obj/item/reagent_containers/cup/soda_cans/starkist,
|
|
))
|
|
new rig_snacks(src)
|
|
|
|
/obj/item/storage/belt/military/abductor
|
|
name = "agent belt"
|
|
desc = "A belt used by abductor agents."
|
|
icon = 'icons/obj/antags/abductor.dmi'
|
|
icon_state = "belt"
|
|
inhand_icon_state = "security"
|
|
worn_icon_state = "security"
|
|
content_overlays = TRUE
|
|
|
|
/obj/item/storage/belt/military/abductor/full/PopulateContents()
|
|
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)
|
|
|
|
/obj/item/storage/belt/military/army
|
|
name = "army belt"
|
|
desc = "A belt used by military forces."
|
|
icon_state = "military"
|
|
inhand_icon_state = "security"
|
|
worn_icon_state = "military"
|
|
|
|
/obj/item/storage/belt/military/assault
|
|
name = "assault belt"
|
|
desc = "A tactical assault belt."
|
|
icon_state = "assault"
|
|
inhand_icon_state = "security"
|
|
worn_icon_state = "assault"
|
|
|
|
/obj/item/storage/belt/military/assault/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_slots = 6
|
|
|
|
/obj/item/storage/belt/military/assault/full/PopulateContents()
|
|
generate_items_inside(list(
|
|
/obj/item/ammo_box/magazine/wt550m9 = 4,
|
|
/obj/item/ammo_box/magazine/wt550m9/wtap = 2,
|
|
), src)
|
|
|
|
/obj/item/storage/belt/grenade
|
|
name = "grenadier belt"
|
|
desc = "A belt for holding grenades."
|
|
icon_state = "grenadebeltnew"
|
|
inhand_icon_state = "security"
|
|
worn_icon_state = "grenadebeltnew"
|
|
|
|
/obj/item/storage/belt/grenade/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_slots = 30
|
|
atom_storage.numerical_stacking = TRUE
|
|
atom_storage.max_total_storage = 60
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY
|
|
atom_storage.set_holdable(list(
|
|
/obj/item/food/grown/cherry_bomb,
|
|
/obj/item/food/grown/firelemon,
|
|
/obj/item/grenade,
|
|
/obj/item/grenade/c4,
|
|
/obj/item/lighter,
|
|
/obj/item/multitool,
|
|
/obj/item/reagent_containers/cup/glass/bottle/molotov,
|
|
/obj/item/screwdriver,
|
|
))
|
|
|
|
/obj/item/storage/belt/grenade/full/PopulateContents()
|
|
generate_items_inside(list(
|
|
/obj/item/grenade/chem_grenade/incendiary = 2,
|
|
/obj/item/grenade/empgrenade = 2,
|
|
/obj/item/grenade/frag = 10,
|
|
/obj/item/grenade/flashbang = 2,
|
|
/obj/item/grenade/gluon = 4,
|
|
/obj/item/grenade/smokebomb = 4,
|
|
/obj/item/grenade/syndieminibomb = 2,
|
|
/obj/item/multitool = 1,
|
|
/obj/item/screwdriver = 1,
|
|
),src)
|
|
|
|
|
|
/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"
|
|
inhand_icon_state = "soulstonebelt"
|
|
worn_icon_state = "soulstonebelt"
|
|
|
|
/obj/item/storage/belt/wands/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_slots = 6
|
|
atom_storage.set_holdable(/obj/item/gun/magic/wand)
|
|
|
|
/obj/item/storage/belt/wands/full/PopulateContents()
|
|
new /obj/item/gun/magic/wand/death(src)
|
|
new /obj/item/gun/magic/wand/resurrection(src)
|
|
new /obj/item/gun/magic/wand/fireball(src) //SKYRAT EDIT - Trades polymorph for second fireball
|
|
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
|
|
|
|
/obj/item/storage/belt/janitor
|
|
name = "janibelt"
|
|
desc = "A belt used to hold most janitorial supplies."
|
|
icon_state = "janibelt"
|
|
inhand_icon_state = "janibelt"
|
|
worn_icon_state = "janibelt"
|
|
|
|
/obj/item/storage/belt/janitor/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_slots = 6
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL // Set to this so the light replacer can fit.
|
|
atom_storage.set_holdable(list(
|
|
/obj/item/access_key,
|
|
/obj/item/assembly/mousetrap,
|
|
/obj/item/clothing/gloves,
|
|
/obj/item/flashlight,
|
|
/obj/item/forcefield_projector,
|
|
/obj/item/grenade/chem_grenade,
|
|
/obj/item/holosign_creator,
|
|
/obj/item/key/janitor,
|
|
/obj/item/lightreplacer,
|
|
/obj/item/melee/flyswatter,
|
|
/obj/item/mop, //SKYRAT EDIT - For when you're lazy to use soap
|
|
/obj/item/mop/advanced, //SKYRAT EDIT For when you're lazy to use a bucket
|
|
/obj/item/paint/paint_remover,
|
|
/obj/item/plunger,
|
|
/obj/item/pushbroom,
|
|
/obj/item/reagent_containers/cup/bucket, //SKYRAT EDIT - Bucket
|
|
/obj/item/reagent_containers/spray,
|
|
/obj/item/soap,
|
|
/obj/item/wirebrush,
|
|
))
|
|
|
|
/obj/item/storage/belt/janitor/full/PopulateContents()
|
|
new /obj/item/lightreplacer(src)
|
|
new /obj/item/reagent_containers/spray/cleaner(src)
|
|
new /obj/item/soap/nanotrasen(src)
|
|
new /obj/item/holosign_creator(src)
|
|
new /obj/item/melee/flyswatter(src)
|
|
|
|
/obj/item/storage/belt/bandolier
|
|
name = "bandolier"
|
|
desc = "A bandolier for holding rifle shotgun, and bigger revolver caliber ammunition."
|
|
icon_state = "bandolier"
|
|
inhand_icon_state = "bandolier"
|
|
worn_icon_state = "bandolier"
|
|
|
|
/obj/item/storage/belt/bandolier/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_slots = 24
|
|
atom_storage.max_total_storage = 24
|
|
atom_storage.numerical_stacking = TRUE
|
|
atom_storage.allow_quick_gather = TRUE
|
|
atom_storage.allow_quick_empty = TRUE
|
|
atom_storage.numerical_stacking = TRUE
|
|
atom_storage.set_holdable(list(
|
|
/obj/item/ammo_casing/strilka310,
|
|
/obj/item/ammo_casing/shotgun,
|
|
/obj/item/ammo_casing/a357,
|
|
/obj/item/ammo_casing/junk,
|
|
))
|
|
|
|
/obj/item/storage/belt/fannypack
|
|
name = "fannypack"
|
|
desc = "A dorky fannypack for keeping small items in. Concealed enough, or ugly enough to avert their eyes, that others won't see what you put in or take out easily."
|
|
icon_state = "fannypack_leather"
|
|
inhand_icon_state = null
|
|
worn_icon_state = "fannypack_leather"
|
|
dying_key = DYE_REGISTRY_FANNYPACK
|
|
custom_price = PAYCHECK_CREW * 2
|
|
|
|
/obj/item/storage/belt/fannypack/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_slots = 3
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
|
atom_storage.silent = TRUE
|
|
|
|
/obj/item/storage/belt/fannypack/black
|
|
name = "black fannypack"
|
|
icon_state = "fannypack_black"
|
|
worn_icon_state = "fannypack_black"
|
|
|
|
/obj/item/storage/belt/fannypack/red
|
|
name = "red fannypack"
|
|
icon_state = "fannypack_red"
|
|
worn_icon_state = "fannypack_red"
|
|
|
|
/obj/item/storage/belt/fannypack/purple
|
|
name = "purple fannypack"
|
|
icon_state = "fannypack_purple"
|
|
worn_icon_state = "fannypack_purple"
|
|
|
|
/obj/item/storage/belt/fannypack/blue
|
|
name = "blue fannypack"
|
|
icon_state = "fannypack_blue"
|
|
worn_icon_state = "fannypack_blue"
|
|
|
|
/obj/item/storage/belt/fannypack/orange
|
|
name = "orange fannypack"
|
|
icon_state = "fannypack_orange"
|
|
worn_icon_state = "fannypack_orange"
|
|
|
|
/obj/item/storage/belt/fannypack/white
|
|
name = "white fannypack"
|
|
icon_state = "fannypack_white"
|
|
worn_icon_state = "fannypack_white"
|
|
|
|
/obj/item/storage/belt/fannypack/green
|
|
name = "green fannypack"
|
|
icon_state = "fannypack_green"
|
|
worn_icon_state = "fannypack_green"
|
|
|
|
/obj/item/storage/belt/fannypack/pink
|
|
name = "pink fannypack"
|
|
icon_state = "fannypack_pink"
|
|
worn_icon_state = "fannypack_pink"
|
|
|
|
/obj/item/storage/belt/fannypack/cyan
|
|
name = "cyan fannypack"
|
|
icon_state = "fannypack_cyan"
|
|
worn_icon_state = "fannypack_cyan"
|
|
|
|
/obj/item/storage/belt/fannypack/yellow
|
|
name = "yellow fannypack"
|
|
icon_state = "fannypack_yellow"
|
|
worn_icon_state = "fannypack_yellow"
|
|
|
|
/obj/item/storage/belt/fannypack/cummerbund
|
|
name = "cummerbund"
|
|
desc = "A pleated sash that pairs well with a suit jacket."
|
|
icon_state = "cummerbund"
|
|
inhand_icon_state = null
|
|
worn_icon_state = "cummerbund"
|
|
|
|
/obj/item/storage/belt/sabre
|
|
name = "sabre sheath"
|
|
desc = "An ornate sheath designed to hold an officer's blade."
|
|
icon_state = "sheath"
|
|
inhand_icon_state = "sheath"
|
|
worn_icon_state = "sheath"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
interaction_flags_click = parent_type::interaction_flags_click | NEED_DEXTERITY | NEED_HANDS
|
|
|
|
/obj/item/storage/belt/sabre/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/update_icon_updates_onmob)
|
|
|
|
atom_storage.max_slots = 1
|
|
atom_storage.rustle_sound = FALSE
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY
|
|
atom_storage.set_holdable(/obj/item/melee/sabre)
|
|
|
|
/obj/item/storage/belt/sabre/examine(mob/user)
|
|
. = ..()
|
|
if(length(contents))
|
|
. += span_notice("Alt-click it to quickly draw the blade.")
|
|
|
|
/obj/item/storage/belt/sabre/click_alt(mob/user)
|
|
if(length(contents))
|
|
var/obj/item/I = contents[1]
|
|
user.visible_message(span_notice("[user] takes [I] out of [src]."), span_notice("You take [I] out of [src]."))
|
|
user.put_in_hands(I)
|
|
update_appearance()
|
|
else
|
|
balloon_alert(user, "it's empty!")
|
|
return CLICK_ACTION_SUCCESS
|
|
|
|
/obj/item/storage/belt/sabre/update_icon_state()
|
|
icon_state = initial(inhand_icon_state)
|
|
inhand_icon_state = initial(inhand_icon_state)
|
|
worn_icon_state = initial(worn_icon_state)
|
|
if(contents.len)
|
|
icon_state += "-sabre"
|
|
inhand_icon_state += "-sabre"
|
|
worn_icon_state += "-sabre"
|
|
return ..()
|
|
|
|
/obj/item/storage/belt/sabre/PopulateContents()
|
|
new /obj/item/melee/sabre(src)
|
|
update_appearance()
|
|
|
|
/obj/item/storage/belt/plant
|
|
name = "botanical belt"
|
|
desc = "A sturdy leather belt used to hold most hydroponics supplies."
|
|
icon_state = "plantbelt"
|
|
inhand_icon_state = "utility"
|
|
worn_icon_state = "plantbelt"
|
|
content_overlays = TRUE
|
|
|
|
/obj/item/storage/belt/plant/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_slots = 6
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
|
atom_storage.set_holdable(list(
|
|
/obj/item/cultivator,
|
|
/obj/item/geneshears,
|
|
/obj/item/graft,
|
|
/obj/item/gun/energy/floragun,
|
|
/obj/item/hatchet,
|
|
/obj/item/plant_analyzer,
|
|
/obj/item/reagent_containers/cup/beaker,
|
|
/obj/item/reagent_containers/cup/bottle,
|
|
/obj/item/reagent_containers/cup/tube,
|
|
/obj/item/reagent_containers/spray/pestspray,
|
|
/obj/item/reagent_containers/spray/plantbgone,
|
|
/obj/item/secateurs,
|
|
/obj/item/seeds,
|
|
/obj/item/shovel/spade,
|
|
))
|