mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-19 13:35:10 +00:00
About The Pull Request
This PR adds medical wounds, new forms of injuries that people can suffer that cause debilitation and complications, and often require more than what can be found in a medkit to treat. But let's be honest, big complicated walls of text about medical changes make people's eyes glaze over easily- so I created a handy infograph to explain the basics!
Also there's a full guide here!
dreamseeker_2020-04-18_20-42-19.png
The infograph may not be fully up to date with the specifics of the PR's status, but it'll be updated along with major changes so people have something to use as a crash course for familiarizing themselves with how wounds function. I also have another infograph with all 9 of the possible initial wounds coming, and will be up soon. You can also find the longform design doc here with more info on the broad details, including descriptions of treatments: hackmd whee
What this does
There's a lot to cover, but here's the bullet points of the main features and changes:
Getting lots of damage on a limb can result in wounds, with more damage causing worse wounds. These can range from dislocated joints and minor cuts to compound fractures and fourth degree burns, and can affect you in different ways depending on what bodypart they're applied to (namely with broken bones).
You can damage individual bodyparts on clothing (only jumpsuits for now) through the use of lasers and sharp weapons. Bodyparts that reach max damage are considered "shredded" and will not apply any protection for that zone until it is repaired with cloth. If all zones are disabled, the entire piece of clothing is shredded and unwearable until repaired with 3 cloth. Jumpsuits give a small amount of wound protection, and since sharp weapons and lasers generally get extra wound bonuses against bare flesh, even a plain jumpsuit provides decent protection from a few laser shots or scalpel stabs.
Lasers gain a powerful niche versus unarmored/lightly armored carbons! As noted above, lasers can shred clothing and burn away zones of jumpsuits in 2 shots each, after which the target's bare flesh is exposed (barring other clothing), and lasers excel at dealing burn wounds against uncovered skin. Think big, nasty charring!
Bleeding is now totally limb based, and gauze is as well. Bleeding is also 95% cut wound based, meaning sharp weapons make you bleed rather than just having 40+ brute on a limb.
The more wounds and damage you get on a bodypart, the easier it'll be to gain more severe wounds. Wounds are arranged from Moderate, to Severe, to Critical in increasing severity, and you'll generally have to suffer the lesser ones before getting the worse ones.
dreamseeker_2020-05-15_03-15-59.png
Above: Someone having an incredibly bad day from bloodloss
dreamseeker_2020-05-04_22-29-29.png
Above: Scars from healed wounds
ShareX_2020-05-15_06-55-20.png
Above: Actual combat involving someone's head getting cracked
Here's a quick, if non-exhaustive, list of things I have left to do before I consider it feature complete
Finish adding treatments for each wound type/severity (mostly surgeries/triage for critical wounds)
Add second winds for bad injuries to give the victim a chance to get away
Flesh out severe & critical injuries in general
Find sprites for the bonesetter, bone gel, and anything else that might be needed
Add the medical items for treating the less severe wounds to the station
Polish code and remove any redundancies I left behind
Quick balance pass to make sure nothing is horribly abuseable
Why It's Good For The Game
Adds a flexible new system for representing damage on carbons with injuries that can be treated in different ways. Moderate wounds from getting toolboxed or sliced with a scalpel can usually be treated by a buddy or even by yourself with the right tools, but getting flayed with a fireaxe or a laser gun emptied into your bare skin may require extra attention or even surgery in bad cases! Also makes laser guns cooler and more like 40k lasguns that can flash fry people (cool!)
This should also make spessmen more resilient and harder to kill outright, while still adding consequences and complications to getting hurt. Wounds aren't immediately fatal, but they can do things like slow down interactions, deal damage over time through infections, and generally make you more fragile until fixed. They can also give you a "second wind" on being applied that gives you a small adrenaline boost (or whatever) to help disengage and escape immediate danger.
Changelog
🆑 Ryll/Shaps
add: Introduces medical wounds, new injuries that can happen to fleshy carbons when they sustain lots of damage on a bodypart. There's quite a lot of change here, but you can read the guide at: https://tgstation13.org/wiki/Guide_to_wounds and an extended changelog is available here: https://hackmd.io/l_FI9b3tSqa_woDadewJXA
add: Introduces scars and temporal scarring! Healing a wound leaves a scar behind that can be seen by examining someone twice rapidly, and if Temporal Scarring is enabled in character prefs, surviving a round with scars will save them to be granted at roundstart another round! Let your body tell stories!
tweak: Bleeding is now fully bodypart-focused, and 95% of bleeding comes from cut wounds from sharp weapons. Gauze is applied on a limb-by-limb basis, and helps staunch bloodflow rather than totally stop it. Notably, you no longer bleed just from having 40+ brute damage on a limb.
del: Organic bodyparts are no longer disabled at maximum damage, but are easier to cause wounds to
add: O2 medkits in emergency lockers have been replaced with new emergency medkits with basic tools for diagnosing and treating wounds and basic damage
tweak: Herapin now rapidly increases bleeding on all open cuts, rather than causing bleeding by itself. The more cuts on the target, the more it will affect them.
tweak: Neckgrab table slams now hit the targeted limb rather than just the head, with a large chance to dislocate or break a bone
tweak: Sharp weapons and burning weapons can now shred zones on jumpsuits, disabling protection on that limb. Damaged clothes can be repaired with cloth.
tweak: Slaughter demons now deal less raw damage, but gain the ability to cause cut wounds, which becomes more powerful with each attack on a humanoid but resets when bloodcrawling.
/🆑
625 lines
23 KiB
Plaintext
625 lines
23 KiB
Plaintext
/* Backpacks
|
|
* Contains:
|
|
* Backpack
|
|
* Backpack Types
|
|
* Satchel Types
|
|
*/
|
|
|
|
/*
|
|
* Backpack
|
|
*/
|
|
|
|
/obj/item/storage/backpack
|
|
name = "backpack"
|
|
desc = "You wear this on your back and put items into it."
|
|
icon_state = "backpack"
|
|
inhand_icon_state = "backpack"
|
|
lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi'
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
slot_flags = ITEM_SLOT_BACK //ERROOOOO
|
|
resistance_flags = NONE
|
|
max_integrity = 300
|
|
|
|
/obj/item/storage/backpack/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.max_combined_w_class = 21
|
|
STR.max_w_class = WEIGHT_CLASS_NORMAL
|
|
STR.max_items = 21
|
|
|
|
/*
|
|
* Backpack Types
|
|
*/
|
|
|
|
/obj/item/storage/backpack/old/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.max_combined_w_class = 12
|
|
|
|
/obj/item/bag_of_holding_inert
|
|
name = "inert bag of holding"
|
|
desc = "What is currently a just an unwieldly block of metal with a slot ready to accept a bluespace anomaly core."
|
|
icon = 'icons/obj/storage.dmi'
|
|
icon_state = "brokenpack"
|
|
inhand_icon_state = "brokenpack"
|
|
lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi'
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
resistance_flags = FIRE_PROOF
|
|
item_flags = NO_MAT_REDEMPTION
|
|
|
|
/obj/item/storage/backpack/holding
|
|
name = "bag of holding"
|
|
desc = "A backpack that opens into a localized pocket of bluespace."
|
|
icon_state = "holdingpack"
|
|
inhand_icon_state = "holdingpack"
|
|
resistance_flags = FIRE_PROOF
|
|
item_flags = NO_MAT_REDEMPTION
|
|
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 50)
|
|
component_type = /datum/component/storage/concrete/bluespace/bag_of_holding
|
|
|
|
/obj/item/storage/backpack/holding/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.allow_big_nesting = TRUE
|
|
STR.max_w_class = WEIGHT_CLASS_GIGANTIC
|
|
STR.max_combined_w_class = 35
|
|
|
|
/obj/item/storage/backpack/holding/suicide_act(mob/living/user)
|
|
user.visible_message("<span class='suicide'>[user] is jumping into [src]! It looks like [user.p_theyre()] trying to commit suicide.</span>")
|
|
user.dropItemToGround(src, TRUE)
|
|
user.Stun(100, ignore_canstun = TRUE)
|
|
sleep(20)
|
|
playsound(src, "rustle", 50, TRUE, -5)
|
|
qdel(user)
|
|
|
|
/obj/item/storage/backpack/santabag
|
|
name = "Santa's Gift Bag"
|
|
desc = "Space Santa uses this to deliver presents to all the nice children in space in Christmas! Wow, it's pretty big!"
|
|
icon_state = "giftbag0"
|
|
inhand_icon_state = "giftbag"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
|
|
/obj/item/storage/backpack/santabag/Initialize()
|
|
. = ..()
|
|
regenerate_presents()
|
|
|
|
/obj/item/storage/backpack/santabag/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.max_w_class = WEIGHT_CLASS_NORMAL
|
|
STR.max_combined_w_class = 60
|
|
|
|
/obj/item/storage/backpack/santabag/suicide_act(mob/user)
|
|
user.visible_message("<span class='suicide'>[user] places [src] over [user.p_their()] head and pulls it tight! It looks like [user.p_they()] [user.p_are()]n't in the Christmas spirit...</span>")
|
|
return (OXYLOSS)
|
|
|
|
/obj/item/storage/backpack/santabag/proc/regenerate_presents()
|
|
addtimer(CALLBACK(src, .proc/regenerate_presents), 30 SECONDS)
|
|
|
|
var/mob/M = get(loc, /mob)
|
|
if(!istype(M))
|
|
return
|
|
if(M.mind && HAS_TRAIT(M.mind, TRAIT_CANNOT_OPEN_PRESENTS))
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
var/turf/floor = get_turf(src)
|
|
var/obj/item/I = new /obj/item/a_gift/anything(floor)
|
|
if(STR.can_be_inserted(I, stop_messages=TRUE))
|
|
STR.handle_item_insertion(I, prevent_warning=TRUE)
|
|
else
|
|
qdel(I)
|
|
|
|
|
|
/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"
|
|
inhand_icon_state = "backpack"
|
|
|
|
/obj/item/storage/backpack/clown
|
|
name = "Giggles von Honkerton"
|
|
desc = "It's a backpack made by Honk! Co."
|
|
icon_state = "clownpack"
|
|
inhand_icon_state = "clownpack"
|
|
|
|
/obj/item/storage/backpack/explorer
|
|
name = "explorer bag"
|
|
desc = "A robust backpack for stashing your loot."
|
|
icon_state = "explorerpack"
|
|
inhand_icon_state = "explorerpack"
|
|
|
|
/obj/item/storage/backpack/mime
|
|
name = "Parcel Parceaux"
|
|
desc = "A silent backpack made for those silent workers. Silence Co."
|
|
icon_state = "mimepack"
|
|
inhand_icon_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"
|
|
inhand_icon_state = "medicalpack"
|
|
|
|
/obj/item/storage/backpack/security
|
|
name = "security backpack"
|
|
desc = "It's a very robust backpack."
|
|
icon_state = "securitypack"
|
|
inhand_icon_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"
|
|
inhand_icon_state = "captainpack"
|
|
|
|
/obj/item/storage/backpack/industrial
|
|
name = "industrial backpack"
|
|
desc = "It's a tough backpack for the daily grind of station life."
|
|
icon_state = "engiepack"
|
|
inhand_icon_state = "engiepack"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/botany
|
|
name = "botany backpack"
|
|
desc = "It's a backpack made of all-natural fibers."
|
|
icon_state = "botpack"
|
|
inhand_icon_state = "botpack"
|
|
|
|
/obj/item/storage/backpack/chemistry
|
|
name = "chemistry backpack"
|
|
desc = "A backpack specially designed to repel stains and hazardous liquids."
|
|
icon_state = "chempack"
|
|
inhand_icon_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"
|
|
inhand_icon_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"
|
|
inhand_icon_state = "toxpack"
|
|
|
|
/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"
|
|
inhand_icon_state = "viropack"
|
|
|
|
/obj/item/storage/backpack/ert
|
|
name = "emergency response team commander backpack"
|
|
desc = "A spacious backpack with lots of pockets, worn by the Commander of an Emergency Response Team."
|
|
icon_state = "ert_commander"
|
|
inhand_icon_state = "securitypack"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/ert/security
|
|
name = "emergency response team security backpack"
|
|
desc = "A spacious backpack with lots of pockets, worn by Security Officers of an Emergency Response Team."
|
|
icon_state = "ert_security"
|
|
|
|
/obj/item/storage/backpack/ert/medical
|
|
name = "emergency response team medical backpack"
|
|
desc = "A spacious backpack with lots of pockets, worn by Medical Officers of an Emergency Response Team."
|
|
icon_state = "ert_medical"
|
|
|
|
/obj/item/storage/backpack/ert/engineer
|
|
name = "emergency response team engineer backpack"
|
|
desc = "A spacious backpack with lots of pockets, worn by Engineers of an Emergency Response Team."
|
|
icon_state = "ert_engineering"
|
|
|
|
/obj/item/storage/backpack/ert/janitor
|
|
name = "emergency response team janitor backpack"
|
|
desc = "A spacious backpack with lots of pockets, worn by Janitors of an Emergency Response Team."
|
|
icon_state = "ert_janitor"
|
|
|
|
/obj/item/storage/backpack/ert/clown
|
|
name = "emergency response team clown backpack"
|
|
desc = "A spacious backpack with lots of pockets, worn by Clowns of an Emergency Response Team."
|
|
icon_state = "ert_clown"
|
|
/*
|
|
* Satchel Types
|
|
*/
|
|
|
|
/obj/item/storage/backpack/satchel
|
|
name = "satchel"
|
|
desc = "A trendy looking satchel."
|
|
icon_state = "satchel-norm"
|
|
inhand_icon_state = "satchel-norm"
|
|
|
|
/obj/item/storage/backpack/satchel/leather
|
|
name = "leather satchel"
|
|
desc = "It's a very fancy satchel made with fine leather."
|
|
icon_state = "satchel"
|
|
inhand_icon_state = "satchel"
|
|
|
|
/obj/item/storage/backpack/satchel/leather/withwallet/PopulateContents()
|
|
new /obj/item/storage/wallet/random(src)
|
|
|
|
/obj/item/storage/backpack/satchel/fireproof
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/satchel/eng
|
|
name = "industrial satchel"
|
|
desc = "A tough satchel with extra pockets."
|
|
icon_state = "satchel-eng"
|
|
inhand_icon_state = "satchel-eng"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/satchel/med
|
|
name = "medical satchel"
|
|
desc = "A sterile satchel used in medical departments."
|
|
icon_state = "satchel-med"
|
|
inhand_icon_state = "satchel-med"
|
|
|
|
/obj/item/storage/backpack/satchel/vir
|
|
name = "virologist satchel"
|
|
desc = "A sterile satchel with virologist colours."
|
|
icon_state = "satchel-vir"
|
|
inhand_icon_state = "satchel-vir"
|
|
|
|
/obj/item/storage/backpack/satchel/chem
|
|
name = "chemist satchel"
|
|
desc = "A sterile satchel with chemist colours."
|
|
icon_state = "satchel-chem"
|
|
inhand_icon_state = "satchel-chem"
|
|
|
|
/obj/item/storage/backpack/satchel/gen
|
|
name = "geneticist satchel"
|
|
desc = "A sterile satchel with geneticist colours."
|
|
icon_state = "satchel-gen"
|
|
inhand_icon_state = "satchel-gen"
|
|
|
|
/obj/item/storage/backpack/satchel/tox
|
|
name = "scientist satchel"
|
|
desc = "Useful for holding research materials."
|
|
icon_state = "satchel-tox"
|
|
inhand_icon_state = "satchel-tox"
|
|
|
|
/obj/item/storage/backpack/satchel/hyd
|
|
name = "botanist satchel"
|
|
desc = "A satchel made of all natural fibers."
|
|
icon_state = "satchel-hyd"
|
|
inhand_icon_state = "satchel-hyd"
|
|
|
|
/obj/item/storage/backpack/satchel/sec
|
|
name = "security satchel"
|
|
desc = "A robust satchel for security related needs."
|
|
icon_state = "satchel-sec"
|
|
inhand_icon_state = "satchel-sec"
|
|
|
|
/obj/item/storage/backpack/satchel/explorer
|
|
name = "explorer satchel"
|
|
desc = "A robust satchel for stashing your loot."
|
|
icon_state = "satchel-explorer"
|
|
inhand_icon_state = "satchel-explorer"
|
|
|
|
/obj/item/storage/backpack/satchel/cap
|
|
name = "captain's satchel"
|
|
desc = "An exclusive satchel for Nanotrasen officers."
|
|
icon_state = "satchel-cap"
|
|
inhand_icon_state = "satchel-cap"
|
|
|
|
/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"
|
|
inhand_icon_state = "satchel-flat"
|
|
w_class = WEIGHT_CLASS_NORMAL //Can fit in backpacks itself.
|
|
|
|
/obj/item/storage/backpack/satchel/flat/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE, INVISIBILITY_OBSERVER, use_anchor = TRUE)
|
|
|
|
/obj/item/storage/backpack/satchel/flat/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.max_combined_w_class = 15
|
|
STR.set_holdable(null, list(/obj/item/storage/backpack/satchel/flat)) //muh recursive backpacks)
|
|
|
|
/obj/item/storage/backpack/satchel/flat/PopulateContents()
|
|
var/datum/supply_pack/costumes_toys/randomised/contraband/C = new
|
|
for(var/i in 1 to 2)
|
|
var/ctype = pick(C.contains)
|
|
new ctype(src)
|
|
|
|
qdel(C)
|
|
|
|
/obj/item/storage/backpack/satchel/flat/with_tools/PopulateContents()
|
|
new /obj/item/stack/tile/plasteel(src)
|
|
new /obj/item/crowbar(src)
|
|
|
|
..()
|
|
|
|
/obj/item/storage/backpack/satchel/flat/empty/PopulateContents()
|
|
return
|
|
|
|
/obj/item/storage/backpack/duffelbag
|
|
name = "duffel bag"
|
|
desc = "A large duffel bag for holding extra things."
|
|
icon_state = "duffel"
|
|
inhand_icon_state = "duffel"
|
|
slowdown = 1
|
|
|
|
/obj/item/storage/backpack/duffelbag/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.max_combined_w_class = 30
|
|
|
|
/obj/item/storage/backpack/duffelbag/captain
|
|
name = "captain's duffel bag"
|
|
desc = "A large duffel bag for holding extra captainly goods."
|
|
icon_state = "duffel-captain"
|
|
inhand_icon_state = "duffel-captain"
|
|
|
|
/obj/item/storage/backpack/duffelbag/med
|
|
name = "medical duffel bag"
|
|
desc = "A large duffel bag for holding extra medical supplies."
|
|
icon_state = "duffel-med"
|
|
inhand_icon_state = "duffel-med"
|
|
|
|
/obj/item/storage/backpack/duffelbag/med/surgery
|
|
name = "surgical duffel bag"
|
|
desc = "A large duffel bag for holding extra medical supplies - this one seems to be designed for holding surgical tools."
|
|
|
|
/obj/item/storage/backpack/duffelbag/med/surgery/PopulateContents()
|
|
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/bonesetter(src)
|
|
new /obj/item/surgical_drapes(src)
|
|
new /obj/item/clothing/mask/surgical(src)
|
|
new /obj/item/razor(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/sec
|
|
name = "security duffel bag"
|
|
desc = "A large duffel bag for holding extra security supplies and ammunition."
|
|
icon_state = "duffel-sec"
|
|
inhand_icon_state = "duffel-sec"
|
|
|
|
/obj/item/storage/backpack/duffelbag/sec/surgery
|
|
name = "surgical duffel bag"
|
|
desc = "A large duffel bag for holding extra supplies - this one has a material inlay with space for various sharp-looking tools."
|
|
|
|
/obj/item/storage/backpack/duffelbag/sec/surgery/PopulateContents()
|
|
new /obj/item/scalpel(src)
|
|
new /obj/item/hemostat(src)
|
|
new /obj/item/retractor(src)
|
|
new /obj/item/circular_saw(src)
|
|
new /obj/item/bonesetter(src)
|
|
new /obj/item/surgicaldrill(src)
|
|
new /obj/item/cautery(src)
|
|
new /obj/item/surgical_drapes(src)
|
|
new /obj/item/clothing/mask/surgical(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/engineering
|
|
name = "industrial duffel bag"
|
|
desc = "A large duffel bag for holding extra tools and supplies."
|
|
icon_state = "duffel-eng"
|
|
inhand_icon_state = "duffel-eng"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/duffelbag/drone
|
|
name = "drone duffel bag"
|
|
desc = "A large duffel bag for holding tools and hats."
|
|
icon_state = "duffel-drone"
|
|
inhand_icon_state = "duffel-drone"
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/duffelbag/drone/PopulateContents()
|
|
new /obj/item/screwdriver(src)
|
|
new /obj/item/wrench(src)
|
|
new /obj/item/weldingtool(src)
|
|
new /obj/item/crowbar(src)
|
|
new /obj/item/stack/cable_coil(src)
|
|
new /obj/item/wirecutters(src)
|
|
new /obj/item/multitool(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/clown
|
|
name = "clown's duffel bag"
|
|
desc = "A large duffel bag for holding lots of funny gags!"
|
|
icon_state = "duffel-clown"
|
|
inhand_icon_state = "duffel-clown"
|
|
|
|
/obj/item/storage/backpack/duffelbag/clown/cream_pie/PopulateContents()
|
|
for(var/i in 1 to 10)
|
|
new /obj/item/reagent_containers/food/snacks/pie/cream(src)
|
|
|
|
/obj/item/storage/backpack/fireproof
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie
|
|
name = "suspicious looking duffel bag"
|
|
desc = "A large duffel bag for holding extra tactical supplies."
|
|
icon_state = "duffel-syndie"
|
|
inhand_icon_state = "duffel-syndieammo"
|
|
slowdown = 0
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
STR.silent = TRUE
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/hitman
|
|
desc = "A large duffel bag for holding extra things. There is a Nanotrasen logo on the back."
|
|
icon_state = "duffel-syndieammo"
|
|
inhand_icon_state = "duffel-syndieammo"
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/hitman/PopulateContents()
|
|
new /obj/item/clothing/under/suit/black(src)
|
|
new /obj/item/clothing/accessory/waistcoat(src)
|
|
new /obj/item/clothing/suit/toggle/lawyer/black(src)
|
|
new /obj/item/clothing/shoes/laceup(src)
|
|
new /obj/item/clothing/gloves/color/black(src)
|
|
new /obj/item/clothing/glasses/sunglasses(src)
|
|
new /obj/item/clothing/head/fedora(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/med
|
|
name = "medical duffel bag"
|
|
desc = "A large duffel bag for holding extra tactical medical supplies."
|
|
icon_state = "duffel-syndiemed"
|
|
inhand_icon_state = "duffel-syndiemed"
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/surgery
|
|
name = "surgery duffel bag"
|
|
desc = "A suspicious looking duffel bag for holding surgery tools."
|
|
icon_state = "duffel-syndiemed"
|
|
inhand_icon_state = "duffel-syndiemed"
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/surgery/PopulateContents()
|
|
new /obj/item/scalpel(src)
|
|
new /obj/item/hemostat(src)
|
|
new /obj/item/retractor(src)
|
|
new /obj/item/circular_saw(src)
|
|
new /obj/item/bonesetter(src)
|
|
new /obj/item/surgicaldrill(src)
|
|
new /obj/item/cautery(src)
|
|
new /obj/item/surgical_drapes(src)
|
|
new /obj/item/clothing/suit/straight_jacket(src)
|
|
new /obj/item/clothing/mask/muzzle(src)
|
|
new /obj/item/mmi/syndie(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/ammo
|
|
name = "ammunition duffel bag"
|
|
desc = "A large duffel bag for holding extra weapons ammunition and supplies."
|
|
icon_state = "duffel-syndieammo"
|
|
inhand_icon_state = "duffel-syndieammo"
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/ammo/shotgun
|
|
desc = "A large duffel bag, packed to the brim with Bulldog shotgun magazines."
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/ammo/shotgun/PopulateContents()
|
|
for(var/i in 1 to 6)
|
|
new /obj/item/ammo_box/magazine/m12g(src)
|
|
new /obj/item/ammo_box/magazine/m12g/slug(src)
|
|
new /obj/item/ammo_box/magazine/m12g/slug(src)
|
|
new /obj/item/ammo_box/magazine/m12g/dragon(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/ammo/smg
|
|
desc = "A large duffel bag, packed to the brim with C-20r magazines."
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/ammo/smg/PopulateContents()
|
|
for(var/i in 1 to 9)
|
|
new /obj/item/ammo_box/magazine/smgm45(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/ammo/mech
|
|
desc = "A large duffel bag, packed to the brim with various exosuit ammo."
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/ammo/mech/PopulateContents()
|
|
new /obj/item/mecha_ammo/scattershot(src)
|
|
new /obj/item/mecha_ammo/scattershot(src)
|
|
new /obj/item/mecha_ammo/scattershot(src)
|
|
new /obj/item/mecha_ammo/scattershot(src)
|
|
new /obj/item/storage/belt/utility/syndicate(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/ammo/mauler
|
|
desc = "A large duffel bag, packed to the brim with various exosuit ammo."
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/ammo/mauler/PopulateContents()
|
|
new /obj/item/mecha_ammo/lmg(src)
|
|
new /obj/item/mecha_ammo/lmg(src)
|
|
new /obj/item/mecha_ammo/lmg(src)
|
|
new /obj/item/mecha_ammo/scattershot(src)
|
|
new /obj/item/mecha_ammo/scattershot(src)
|
|
new /obj/item/mecha_ammo/scattershot(src)
|
|
new /obj/item/mecha_ammo/missiles_he(src)
|
|
new /obj/item/mecha_ammo/missiles_he(src)
|
|
new /obj/item/mecha_ammo/missiles_he(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/c20rbundle
|
|
desc = "A large duffel bag containing a C-20r, some magazines, and a cheap looking suppressor."
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/c20rbundle/PopulateContents()
|
|
new /obj/item/ammo_box/magazine/smgm45(src)
|
|
new /obj/item/ammo_box/magazine/smgm45(src)
|
|
new /obj/item/gun/ballistic/automatic/c20r(src)
|
|
new /obj/item/suppressor/specialoffer(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/bulldogbundle
|
|
desc = "A large duffel bag containing a Bulldog, some drums, and a pair of thermal imaging glasses."
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/bulldogbundle/PopulateContents()
|
|
new /obj/item/gun/ballistic/shotgun/bulldog(src)
|
|
new /obj/item/ammo_box/magazine/m12g(src)
|
|
new /obj/item/ammo_box/magazine/m12g(src)
|
|
new /obj/item/clothing/glasses/thermal/syndi(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle
|
|
desc = "A large duffel bag containing a medical equipment, a Donksoft LMG, a big jumbo box of riot darts, and a knock-off pair of magboots."
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle/PopulateContents()
|
|
new /obj/item/clothing/shoes/magboots/syndie(src)
|
|
new /obj/item/storage/firstaid/tactical(src)
|
|
new /obj/item/gun/ballistic/automatic/l6_saw/toy(src)
|
|
new /obj/item/ammo_box/foambox/riot(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle
|
|
desc = "A large duffel bag containing deadly chemicals, a handheld chem sprayer, Bioterror foam grenade, a Donksoft assault rifle, box of riot grade darts, a dart pistol, and a box of syringes."
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle/PopulateContents()
|
|
new /obj/item/reagent_containers/spray/chemsprayer/bioterror(src)
|
|
new /obj/item/storage/box/syndie_kit/chemical(src)
|
|
new /obj/item/gun/syringe/syndicate(src)
|
|
new /obj/item/gun/ballistic/automatic/c20r/toy(src)
|
|
new /obj/item/storage/box/syringes(src)
|
|
new /obj/item/ammo_box/foambox/riot(src)
|
|
new /obj/item/grenade/chem_grenade/bioterrorfoam(src)
|
|
if(prob(5))
|
|
new /obj/item/reagent_containers/food/snacks/pizza/pineapple(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/c4/PopulateContents()
|
|
for(var/i in 1 to 10)
|
|
new /obj/item/grenade/c4(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/x4/PopulateContents()
|
|
for(var/i in 1 to 3)
|
|
new /obj/item/grenade/c4/x4(src)
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/firestarter
|
|
desc = "A large duffel bag containing a New Russian pyro backpack sprayer, Elite hardsuit, a Stechkin APS pistol, minibomb, ammo, and other equipment."
|
|
|
|
/obj/item/storage/backpack/duffelbag/syndie/firestarter/PopulateContents()
|
|
new /obj/item/clothing/under/syndicate/soviet(src)
|
|
new /obj/item/watertank/op(src)
|
|
new /obj/item/clothing/suit/space/hardsuit/syndi/elite(src)
|
|
new /obj/item/gun/ballistic/automatic/pistol/aps(src)
|
|
new /obj/item/ammo_box/magazine/m9mm_aps/fire(src)
|
|
new /obj/item/ammo_box/magazine/m9mm_aps/fire(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka(src)
|
|
new /obj/item/reagent_containers/hypospray/medipen/stimulants(src)
|
|
new /obj/item/grenade/syndieminibomb(src)
|
|
|
|
// For ClownOps.
|
|
/obj/item/storage/backpack/duffelbag/clown/syndie/ComponentInitialize()
|
|
. = ..()
|
|
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
|
slowdown = 0
|
|
STR.silent = TRUE
|
|
|
|
/obj/item/storage/backpack/duffelbag/clown/syndie/PopulateContents()
|
|
new /obj/item/pda/clown(src)
|
|
new /obj/item/clothing/under/rank/civilian/clown(src)
|
|
new /obj/item/clothing/shoes/clown_shoes(src)
|
|
new /obj/item/clothing/mask/gas/clown_hat(src)
|
|
new /obj/item/bikehorn(src)
|
|
new /obj/item/implanter/sad_trombone(src)
|
|
|
|
/obj/item/storage/backpack/henchmen
|
|
name = "wings"
|
|
desc = "Granted to the henchmen who deserve it. This probably doesn't include you."
|
|
icon_state = "henchmen"
|
|
inhand_icon_state = "henchmen"
|
|
|
|
/obj/item/storage/backpack/duffelbag/cops
|
|
name = "police bag"
|
|
desc = "A large duffel bag for holding extra police gear."
|
|
slowdown = 0
|