Merge pull request #11540 from zeroisthebiggay/uplinkclothinggetssuckies

Ports Syndicate Sneaksuits and buffs the paramedic gloves with some other things vaguely relating to armor
This commit is contained in:
kevinz000
2020-03-20 23:23:26 -07:00
committed by GitHub
36 changed files with 185 additions and 16 deletions
+3
View File
@@ -131,6 +131,8 @@
#define TRAIT_UNINTELLIGIBLE_SPEECH "unintelligible-speech" #define TRAIT_UNINTELLIGIBLE_SPEECH "unintelligible-speech"
#define TRAIT_SOOTHED_THROAT "soothed-throat" #define TRAIT_SOOTHED_THROAT "soothed-throat"
#define TRAIT_LAW_ENFORCEMENT_METABOLISM "law-enforcement-metabolism" #define TRAIT_LAW_ENFORCEMENT_METABOLISM "law-enforcement-metabolism"
#define TRAIT_QUICK_CARRY "quick-carry"
#define TRAIT_QUICKER_CARRY "quicker-carry"
#define TRAIT_STRONG_GRABBER "strong_grabber" #define TRAIT_STRONG_GRABBER "strong_grabber"
#define TRAIT_CALCIUM_HEALER "calcium_healer" #define TRAIT_CALCIUM_HEALER "calcium_healer"
#define TRAIT_MAGIC_CHOKE "magic_choke" #define TRAIT_MAGIC_CHOKE "magic_choke"
@@ -224,6 +226,7 @@
#define GHOSTROLE_TRAIT "ghostrole" #define GHOSTROLE_TRAIT "ghostrole"
#define APHRO_TRAIT "aphro" #define APHRO_TRAIT "aphro"
#define BLOODSUCKER_TRAIT "bloodsucker" #define BLOODSUCKER_TRAIT "bloodsucker"
#define CLOTHING_TRAIT "clothing" //used for quirky carrygloves
// unique trait sources, still defines // unique trait sources, still defines
#define STATUE_MUTE "statue" #define STATUE_MUTE "statue"
@@ -259,6 +259,42 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
new /obj/item/ammo_box/a762(src) new /obj/item/ammo_box/a762(src)
new /obj/item/ammo_box/a762(src) new /obj/item/ammo_box/a762(src)
/obj/item/storage/toolbox/infiltrator
name = "insidious case"
desc = "Bearing the emblem of the Syndicate, this case contains a full infiltrator stealth suit, and has enough room to fit weaponry if necessary while being quite the heavy bludgeoning implement when in a pinch."
icon_state = "infiltrator_case"
item_state = "infiltrator_case"
force = 12
throwforce = 16
w_class = WEIGHT_CLASS_NORMAL
has_latches = FALSE
/obj/item/storage/toolbox/infiltrator/ComponentInitialize()
. = ..()
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.silent = TRUE
STR.max_items = 10
STR.max_w_class = WEIGHT_CLASS_NORMAL
STR.can_hold = typecacheof(list(
/obj/item/clothing/head/helmet/infiltrator,
/obj/item/clothing/suit/armor/vest/infiltrator,
/obj/item/clothing/under/syndicate/bloodred,
/obj/item/clothing/gloves/color/latex/nitrile/infiltrator,
/obj/item/clothing/mask/infiltrator,
/obj/item/clothing/shoes/combat/sneakboots,
/obj/item/gun/ballistic/automatic/pistol,
/obj/item/gun/ballistic/revolver,
/obj/item/ammo_box
))
/obj/item/storage/toolbox/infiltrator/PopulateContents()
new /obj/item/clothing/head/helmet/infiltrator(src)
new /obj/item/clothing/suit/armor/vest/infiltrator(src)
new /obj/item/clothing/under/syndicate/bloodred(src)
new /obj/item/clothing/gloves/color/latex/nitrile/infiltrator(src)
new /obj/item/clothing/mask/infiltrator(src)
new /obj/item/clothing/shoes/combat/sneakboots(src)
/obj/item/storage/toolbox/plastitanium/gold_real /obj/item/storage/toolbox/plastitanium/gold_real
name = "golden toolbox" name = "golden toolbox"
desc = "A larger then normal toolbox made of gold plated plastitanium." desc = "A larger then normal toolbox made of gold plated plastitanium."
@@ -374,6 +374,12 @@
for(var/i in 1 to 3) for(var/i in 1 to 3)
new /obj/item/grenade/spawnergrenade/buzzkill(src) new /obj/item/grenade/spawnergrenade/buzzkill(src)
/obj/item/storage/box/syndie_kit/sleepytime/PopulateContents()
new /obj/item/clothing/under/syndicate/bloodred/sleepytime(src)
new /obj/item/reagent_containers/food/drinks/mug/coco(src)
new /obj/item/toy/plush/carpplushie(src)
new /obj/item/bedsheet/syndie(src)
/obj/item/storage/box/syndie_kit/kitchen_gun /obj/item/storage/box/syndie_kit/kitchen_gun
name = "Kitchen Gun (TM) package" name = "Kitchen Gun (TM) package"
+4 -5
View File
@@ -447,7 +447,7 @@
permeability_coefficient = 0.01 permeability_coefficient = 0.01
flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH
var/vchange = 1 var/voice_change = 1 ///This determines if the voice changer is on or off.
var/datum/action/item_action/chameleon/change/chameleon_action var/datum/action/item_action/chameleon/change/chameleon_action
@@ -470,15 +470,14 @@
chameleon_action.emp_randomise(INFINITY) chameleon_action.emp_randomise(INFINITY)
/obj/item/clothing/mask/chameleon/attack_self(mob/user) /obj/item/clothing/mask/chameleon/attack_self(mob/user)
vchange = !vchange voice_change = !voice_change
to_chat(user, "<span class='notice'>The voice changer is now [vchange ? "on" : "off"]!</span>") to_chat(user, "<span class='notice'>The voice changer is now [voice_change ? "on" : "off"]!</span>")
/obj/item/clothing/mask/chameleon/drone /obj/item/clothing/mask/chameleon/drone
//Same as the drone chameleon hat, undroppable and no protection //Same as the drone chameleon hat, undroppable and no protection
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
// Can drones use the voice changer part? Let's not find out. // Can drones use the voice changer part? Let's not find out.
vchange = 0 voice_change = 0
/obj/item/clothing/mask/chameleon/drone/Initialize() /obj/item/clothing/mask/chameleon/drone/Initialize()
. = ..() . = ..()
+22 -2
View File
@@ -194,7 +194,7 @@
/obj/item/clothing/gloves/color/latex /obj/item/clothing/gloves/color/latex
name = "latex gloves" name = "latex gloves"
desc = "Cheap sterile gloves made from latex." desc = "Cheap sterile gloves made from latex. Transfers basic paramedical knowledge to the wearer via the use of nanochips."
icon_state = "latex" icon_state = "latex"
item_state = "lgloves" item_state = "lgloves"
siemens_coefficient = 0.3 siemens_coefficient = 0.3
@@ -202,14 +202,34 @@
item_color="mime" item_color="mime"
transfer_prints = TRUE transfer_prints = TRUE
resistance_flags = NONE resistance_flags = NONE
var/carrytrait = TRAIT_QUICK_CARRY
/obj/item/clothing/gloves/color/latex/equipped(mob/user, slot)
..()
if(slot == SLOT_GLOVES)
ADD_TRAIT(user, carrytrait, CLOTHING_TRAIT)
/obj/item/clothing/gloves/color/latex/dropped(mob/user)
..()
REMOVE_TRAIT(user, carrytrait, CLOTHING_TRAIT)
/obj/item/clothing/gloves/color/latex/nitrile /obj/item/clothing/gloves/color/latex/nitrile
name = "nitrile gloves" name = "nitrile gloves"
desc = "Pricy sterile gloves that are stronger than latex." desc = "Pricy sterile gloves that are stronger than latex. Transfers advanced paramedical knowledge to the wearer via the use of nanochips."
icon_state = "nitrile" icon_state = "nitrile"
item_state = "nitrilegloves" item_state = "nitrilegloves"
item_color = "cmo" item_color = "cmo"
transfer_prints = FALSE transfer_prints = FALSE
carrytrait = TRAIT_QUICKER_CARRY
/obj/item/clothing/gloves/color/latex/nitrile/infiltrator
name = "insidious combat gloves"
desc = "Specialized combat gloves for carrying people around. Transfers tactical kidnapping knowledge to the user via the use of nanochips."
icon_state = "infiltrator"
item_state = "infiltrator"
siemens_coefficient = 0
permeability_coefficient = 0.3
resistance_flags = FIRE_PROOF | ACID_PROOF
/obj/item/clothing/gloves/color/white /obj/item/clothing/gloves/color/white
name = "white gloves" name = "white gloves"
+15
View File
@@ -256,6 +256,21 @@
strip_delay = 100 strip_delay = 100
mutantrace_variation = STYLE_MUZZLE mutantrace_variation = STYLE_MUZZLE
/obj/item/clothing/head/helmet/infiltrator
name = "insidious helmet"
desc = "An insidious armored combat helmet signed with Syndicate insignia. The visor is coated with a resistant paste guaranteed to withstand bright flashes perfectly."
icon_state = "infiltrator"
item_state = "infiltrator"
armor = list("melee" = 40, "bullet" = 40, "laser" = 30, "energy" = 40, "bomb" = 70, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
flash_protect = 2
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
dynamic_hair_suffix = ""
dynamic_fhair_suffix = ""
strip_delay = 80
mutantrace_variation = STYLE_MUZZLE
//LightToggle //LightToggle
/obj/item/clothing/head/helment/ComponentInitialize() /obj/item/clothing/head/helment/ComponentInitialize()
+14
View File
@@ -12,6 +12,20 @@
/obj/item/clothing/mask/balaclava/attack_self(mob/user) /obj/item/clothing/mask/balaclava/attack_self(mob/user)
adjustmask(user) adjustmask(user)
/obj/item/clothing/mask/infiltrator
name = "insidious balaclava"
desc = "An incredibly suspicious balaclava made with Syndicate nanofibers to absorb impacts slightly while obfuscating the voice and face using a garbled vocoder."
icon_state = "syndicate_balaclava"
item_state = "syndicate_balaclava"
clothing_flags = ALLOWINTERNALS
flags_cover = HEADCOVERSEYES
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
visor_flags_inv = HIDEFACE|HIDEFACIALHAIR
w_class = WEIGHT_CLASS_SMALL
armor = list("melee" = 10, "bullet" = 5, "laser" = 5,"energy" = 5, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 100, "acid" = 40)
resistance_flags = FIRE_PROOF | ACID_PROOF
var/voice_unknown = TRUE ///This makes it so that your name shows up as unknown when wearing the mask.
/obj/item/clothing/mask/luchador /obj/item/clothing/mask/luchador
name = "Luchador Mask" name = "Luchador Mask"
desc = "Worn by robust fighters, flying high to defeat their foes!" desc = "Worn by robust fighters, flying high to defeat their foes!"
@@ -19,6 +19,14 @@
permeability_coefficient = 0.05 //Thick soles, and covers the ankle permeability_coefficient = 0.05 //Thick soles, and covers the ankle
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
/obj/item/clothing/shoes/combat/sneakboots
name = "insidious sneakboots"
desc = "A pair of insidious boots with special noise muffling soles which very slightly drown out your footsteps. They would be absolutely perfect for stealth operations were it not for the iconic Syndicate flairs."
icon_state = "sneakboots"
item_state = "sneakboots"
resistance_flags = FIRE_PROOF | ACID_PROOF
clothing_flags = TRAIT_SILENT_STEP
/obj/item/clothing/shoes/combat/swat //overpowered boots for death squads /obj/item/clothing/shoes/combat/swat //overpowered boots for death squads
name = "\improper SWAT boots" name = "\improper SWAT boots"
desc = "High speed, no drag combat boots." desc = "High speed, no drag combat boots."
+9
View File
@@ -191,6 +191,15 @@
. = ..() . = ..()
allowed = GLOB.detective_vest_allowed allowed = GLOB.detective_vest_allowed
/obj/item/clothing/suit/armor/vest/infiltrator
name = "insidious combat vest"
desc = "An insidious combat vest designed using Syndicate nanofibers to absorb the supreme majority of kinetic blows. Although it doesn't look like it'll do too much for energy impacts."
icon_state = "infiltrator"
item_state = "infiltrator"
armor = list("melee" = 30, "bullet" = 40, "laser" = 20, "energy" = 30, "bomb" = 70, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
strip_delay = 80
//All of the armor below is mostly unused //All of the armor below is mostly unused
/obj/item/clothing/suit/armor/centcom /obj/item/clothing/suit/armor/centcom
+5
View File
@@ -12,6 +12,7 @@
var/can_adjust = TRUE var/can_adjust = TRUE
var/adjusted = NORMAL_STYLE var/adjusted = NORMAL_STYLE
var/alt_covers_chest = FALSE // for adjusted/rolled-down jumpsuits, FALSE = exposes chest and arms, TRUE = exposes arms only var/alt_covers_chest = FALSE // for adjusted/rolled-down jumpsuits, FALSE = exposes chest and arms, TRUE = exposes arms only
var/dummy_thick = FALSE // is able to hold accessories on its item
var/obj/item/clothing/accessory/attached_accessory var/obj/item/clothing/accessory/attached_accessory
var/mutable_appearance/accessory_overlay var/mutable_appearance/accessory_overlay
mutantrace_variation = STYLE_DIGITIGRADE mutantrace_variation = STYLE_DIGITIGRADE
@@ -82,6 +83,10 @@
if(user) if(user)
to_chat(user, "<span class='warning'>[src] already has an accessory.</span>") to_chat(user, "<span class='warning'>[src] already has an accessory.</span>")
return return
if(dummy_thick)
if(user)
to_chat(user, "<span class='warning'>[src] is too bulky and cannot have accessories attached to it!</span>")
return
else else
if(user && !user.temporarilyRemoveItemFromInventory(I)) if(user && !user.temporarilyRemoveItemFromInventory(I))
return return
+20 -1
View File
@@ -19,6 +19,25 @@
alt_covers_chest = TRUE alt_covers_chest = TRUE
fitted = FEMALE_UNIFORM_TOP fitted = FEMALE_UNIFORM_TOP
/obj/item/clothing/under/syndicate/bloodred
name = "blood-red sneaksuit"
desc = "An insidious armored jumpsuit lined with Syndicate nanofibers and prototype platings, slightly resistant to most forms of damage, but is far too bulky to have anything attached to it. It still counts as stealth if there are no witnesses."
icon_state = "bloodred_pajamas"
item_state = "bl_suit"
item_color = "bloodred_pajamas"
dummy_thick = TRUE
armor = list("melee" = 10, "bullet" = 10, "laser" = 10,"energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 50, "acid" = 40)
resistance_flags = FIRE_PROOF | ACID_PROOF
can_adjust = FALSE
/obj/item/clothing/under/syndicate/bloodred/sleepytime
name = "blood-red pajamas"
desc = "Do operatives dream of nuclear sheep?"
icon_state = "bloodred_pajamas"
item_state = "bl_suit"
item_color = "bloodred_pajamas"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
/obj/item/clothing/under/syndicate/tacticool /obj/item/clothing/under/syndicate/tacticool
name = "tacticool turtleneck" name = "tacticool turtleneck"
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-." desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
@@ -75,7 +94,7 @@
item_color = "rus_under" item_color = "rus_under"
can_adjust = FALSE can_adjust = FALSE
armor = list("melee" = 5, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) armor = list("melee" = 5, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
resistance_flags = NONE resistance_flags = NONE
/obj/item/clothing/under/syndicate/baseball /obj/item/clothing/under/syndicate/baseball
name = "major league, number unknown" name = "major league, number unknown"
+14 -4
View File
@@ -880,10 +880,20 @@
return (ishuman(target) && !CHECK_MOBILITY(target, MOBILITY_STAND)) return (ishuman(target) && !CHECK_MOBILITY(target, MOBILITY_STAND))
/mob/living/carbon/human/proc/fireman_carry(mob/living/carbon/target) /mob/living/carbon/human/proc/fireman_carry(mob/living/carbon/target)
if(can_be_firemanned(target)) var/carrydelay = 50 //if you have latex you are faster at grabbing
visible_message("<span class='notice'>[src] starts lifting [target] onto their back...</span>", var/skills_space = "" //cobby told me to do this
"<span class='notice'>You start lifting [target] onto your back...</span>") if(HAS_TRAIT(src, TRAIT_QUICKER_CARRY))
if(do_after(src, 30, TRUE, target)) carrydelay = 30
skills_space = "expertly"
else if(HAS_TRAIT(src, TRAIT_QUICK_CARRY))
carrydelay = 40
skills_space = "quickly"
if(can_be_firemanned(target) && !incapacitated(FALSE, TRUE))
visible_message("<span class='notice'>[src] starts [skills_space] lifting [target] onto their back..</span>",
//Joe Medic starts quickly/expertly lifting Grey Tider onto their back..
"<span class='notice'>[carrydelay < 35 ? "Using your gloves' nanochips, you" : "You"] [skills_space] start to lift [target] onto your back[carrydelay == 40 ? ", while assisted by the nanochips in your gloves.." : "..."]</span>")
//(Using your gloves' nanochips, you/You) ( /quickly/expertly) start to lift Grey Tider onto your back(, while assisted by the nanochips in your gloves../...)
if(do_after(src, carrydelay, TRUE, target))
//Second check to make sure they're still valid to be carried //Second check to make sure they're still valid to be carried
if(can_be_firemanned(target) && !incapacitated(FALSE, TRUE)) if(can_be_firemanned(target) && !incapacitated(FALSE, TRUE))
target.set_resting(FALSE, TRUE) target.set_resting(FALSE, TRUE)
+7 -1
View File
@@ -13,7 +13,7 @@
/mob/living/carbon/human/GetVoice() /mob/living/carbon/human/GetVoice()
if(istype(wear_mask, /obj/item/clothing/mask/chameleon)) if(istype(wear_mask, /obj/item/clothing/mask/chameleon))
var/obj/item/clothing/mask/chameleon/V = wear_mask var/obj/item/clothing/mask/chameleon/V = wear_mask
if(V.vchange && wear_id) if(V.voice_change && wear_id)
var/obj/item/card/id/idcard = wear_id.GetID() var/obj/item/card/id/idcard = wear_id.GetID()
if(istype(idcard)) if(istype(idcard))
return idcard.registered_name return idcard.registered_name
@@ -21,6 +21,12 @@
return real_name return real_name
else else
return real_name return real_name
if(istype(wear_mask, /obj/item/clothing/mask/infiltrator))
var/obj/item/clothing/mask/infiltrator/V = wear_mask
if(V.voice_unknown)
return ("Unknown")
else
return real_name
if(mind) if(mind)
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
if(changeling && changeling.mimicing ) if(changeling && changeling.mimicing )
@@ -76,6 +76,15 @@
cost = 2 cost = 2
illegal_tech = FALSE illegal_tech = FALSE
/datum/uplink_item/badass/tactical_naptime
name = "Sleepy Time Pajama Bundle"
desc = "Even soldiers need to get a good nights rest. Comes with some cozy as heck sleeping wear, a blankie to keep yourself warm in deep space, a hot mug of cocoa for you and your fuzzy friend."
item = /obj/item/storage/box/syndie_kit/sleepytime
cost = 4
limited_stock = 1
cant_discount = TRUE
include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
/datum/uplink_item/badass/shades /datum/uplink_item/badass/shades
name = "Big Sunglasses" name = "Big Sunglasses"
desc = "Prevents flashes and looks badbass with some Smokes." desc = "Prevents flashes and looks badbass with some Smokes."
@@ -9,18 +9,28 @@
/datum/uplink_item/suits/turtlenck /datum/uplink_item/suits/turtlenck
name = "Tactical Turtleneck" name = "Tactical Turtleneck"
desc = "A slightly armored suit that has no sensor on them, if someone sees you in this hope they think its a fake." desc = "A slightly armored conspicious jumpsuit that has no suit sensors attached to them, if someone sees you in this hope they think its a fake."
item = /obj/item/clothing/under/syndicate item = /obj/item/clothing/under/syndicate
cost = 1 cost = 1
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //They already get these exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //They already get these
/datum/uplink_item/suits/turtlenck_skirt /datum/uplink_item/suits/turtlenck_skirt
name = "Tactical Skirtleneck" name = "Tactical Skirtleneck"
desc = "A slightly armored suit that has no sensor on them, if someone sees you in this hope they think its a fake." desc = "A slightly armored conspicious jumpsuit that has no suit sensors attached to them, if someone sees you in this hope they think its a fake."
item = /obj/item/clothing/under/syndicate/skirt item = /obj/item/clothing/under/syndicate/skirt
cost = 1 cost = 1
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //They already get these exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //They already get these
/datum/uplink_item/suits/infiltrator_bundle
name = "Insidious Infiltration Gear Case"
desc = "Developed by Roseus Galactic in conjunction with the Gorlex Marauders to produce a functional suit for urban operations, \
this suit proves to be cheaper than your standard issue hardsuit, with none of the movement restrictions (or the space proofing) of the outdated spacesuits employed by the company. \
Comes with an armored vest, helmet, blood-red sneaksuit, sneakboots, specialized combat gloves and a high-tech balaclava which obfuscates both your voice and your face. The case is also rather useful as a storage container and bludgeoning implement."
item = /obj/item/storage/toolbox/infiltrator
cost = 3
limited_stock = 1 //you only get one so you don't end up with too many gun cases
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
/datum/uplink_item/suits/padding /datum/uplink_item/suits/padding
name = "Soft Padding" name = "Soft Padding"
desc = "An inconspicious soft padding meant to be worn underneath jumpsuits, will cushion the user from melee harm." desc = "An inconspicious soft padding meant to be worn underneath jumpsuits, will cushion the user from melee harm."
@@ -139,7 +139,7 @@
name = "Headset Upgrader" name = "Headset Upgrader"
desc = "A device that can be used to make one headset immune to flashbangs." desc = "A device that can be used to make one headset immune to flashbangs."
item = /obj/item/headsetupgrader item = /obj/item/headsetupgrader
cost = 3 cost = 1
/datum/uplink_item/device_tools/medgun /datum/uplink_item/device_tools/medgun
name = "Medbeam Gun" name = "Medbeam Gun"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 KiB

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1018 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1006 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 414 KiB

After

Width:  |  Height:  |  Size: 415 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 429 KiB

After

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 382 KiB

After

Width:  |  Height:  |  Size: 384 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 KiB

After

Width:  |  Height:  |  Size: 336 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 72 KiB