Merge pull request #1125 from Neerti/2/28/2016_armor

A Load of Armor Changes
This commit is contained in:
Datraen
2016-03-08 16:32:42 -05:00
20 changed files with 450 additions and 219 deletions

View File

@@ -771,9 +771,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
contains = list(/obj/item/weapon/gun/energy/xray,
/obj/item/weapon/gun/energy/xray,
/obj/item/weapon/shield/energy,
/obj/item/weapon/shield/energy,
/obj/item/clothing/suit/armor/laserproof,
/obj/item/clothing/suit/armor/laserproof)
/obj/item/weapon/shield/energy)
cost = 125
containertype = /obj/structure/closet/crate/secure/weapon
containername = "Experimental weapons crate"
@@ -801,8 +799,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
access = access_security
group = "Security"
/datum/supply_packs/riot
/datum/supply_packs/riot_gear
name = "Riot gear crate"
contains = list(/obj/item/weapon/melee/baton,
/obj/item/weapon/melee/baton,
@@ -813,21 +810,87 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/obj/item/weapon/handcuffs,
/obj/item/weapon/handcuffs,
/obj/item/weapon/handcuffs,
/obj/item/clothing/head/helmet/riot,
/obj/item/clothing/suit/armor/riot,
/obj/item/clothing/head/helmet/riot,
/obj/item/clothing/suit/armor/riot,
/obj/item/clothing/head/helmet/riot,
/obj/item/clothing/suit/armor/riot,
/obj/item/weapon/storage/box/flashbangs,
/obj/item/weapon/storage/box/beanbags,
/obj/item/weapon/storage/box/handcuffs)
cost = 60
cost = 40
containertype = /obj/structure/closet/crate/secure
containername = "Riot gear crate"
containername = "riot gear crate"
access = access_armory
group = "Security"
/datum/supply_packs/riot_armor
name = "Riot armor set crate"
contains = list(/obj/item/clothing/head/helmet/riot,
/obj/item/clothing/suit/armor/riot,
/obj/item/clothing/gloves/arm_guard/riot,
/obj/item/clothing/shoes/leg_guard/riot)
cost = 30
containertype = /obj/structure/closet/crate/secure
containername = "riot armor set crate"
access = access_armory
group = "Security"
/datum/supply_packs/ablative_armor
name = "Ablative armor set crate"
contains = list(/obj/item/clothing/head/helmet/laserproof,
/obj/item/clothing/suit/armor/laserproof,
/obj/item/clothing/gloves/arm_guard/laserproof,
/obj/item/clothing/shoes/leg_guard/laserproof)
cost = 40
containertype = /obj/structure/closet/crate/secure
containername = "ablative armor set crate"
access = access_armory
group = "Security"
/datum/supply_packs/bullet_resistant_armor
name = "Bullet resistant armor set crate"
contains = list(/obj/item/clothing/head/helmet/bulletproof,
/obj/item/clothing/suit/armor/bulletproof,
/obj/item/clothing/gloves/arm_guard/bulletproof,
/obj/item/clothing/shoes/leg_guard/bulletproof)
cost = 35
containertype = /obj/structure/closet/crate/secure
containername = "bullet resistant armor set crate"
access = access_armory
group = "Security"
/datum/supply_packs/combat_armor
name = "Combat armor set crate"
contains = list(/obj/item/clothing/head/helmet/combat,
/obj/item/clothing/suit/armor/combat,
/obj/item/clothing/gloves/arm_guard/combat,
/obj/item/clothing/shoes/leg_guard/combat)
cost = 40
containertype = /obj/structure/closet/crate/secure
containername = "combat armor set crate"
access = access_armory
group = "Security"
/datum/supply_packs/tactical
name = "Tactical suits"
containertype = /obj/structure/closet/crate/secure
containername = "Tactical Suit Locker"
cost = 60
group = "Security"
access = access_armory
contains = list(/obj/item/clothing/under/tactical,
/obj/item/clothing/suit/armor/tactical,
/obj/item/clothing/head/helmet/tactical,
/obj/item/clothing/mask/balaclava/tactical,
/obj/item/clothing/glasses/sunglasses/sechud/tactical,
/obj/item/weapon/storage/belt/security/tactical,
/obj/item/clothing/shoes/jackboots,
/obj/item/clothing/gloves/black,
/obj/item/clothing/under/tactical,
/obj/item/clothing/suit/armor/tactical,
/obj/item/clothing/head/helmet/tactical,
/obj/item/clothing/mask/balaclava/tactical,
/obj/item/clothing/glasses/sunglasses/sechud/tactical,
/obj/item/weapon/storage/belt/security/tactical,
/obj/item/clothing/shoes/jackboots,
/obj/item/clothing/gloves/black)
/datum/supply_packs/energyweapons
name = "Energy weapons crate"
contains = list(/obj/item/weapon/gun/energy/laser,
@@ -841,9 +904,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/datum/supply_packs/shotgun
name = "Shotgun crate"
contains = list(/obj/item/clothing/suit/armor/bulletproof,
/obj/item/clothing/suit/armor/bulletproof,
/obj/item/weapon/storage/box/shotgunammo,
contains = list(/obj/item/weapon/storage/box/shotgunammo,
/obj/item/weapon/storage/box/shotgunshells,
/obj/item/weapon/gun/projectile/shotgun/pump/combat,
/obj/item/weapon/gun/projectile/shotgun/pump/combat)
@@ -855,9 +916,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/datum/supply_packs/erifle
name = "Energy marksman crate"
contains = list(/obj/item/clothing/suit/armor/laserproof,
/obj/item/clothing/suit/armor/laserproof,
/obj/item/weapon/gun/energy/sniperrifle,
contains = list(/obj/item/weapon/gun/energy/sniperrifle,
/obj/item/weapon/gun/energy/sniperrifle)
cost = 90
containertype = /obj/structure/closet/crate/secure
@@ -922,27 +981,13 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
group = "Security"
*/
/datum/supply_packs/expenergy
name = "Experimental energy gear crate"
contains = list(/obj/item/clothing/suit/armor/laserproof,
/obj/item/clothing/suit/armor/laserproof,
/obj/item/weapon/gun/energy/gun,
/datum/supply_packs/energy_guns
name = "energy guns crate"
contains = list(/obj/item/weapon/gun/energy/gun,
/obj/item/weapon/gun/energy/gun)
cost = 50
containertype = /obj/structure/closet/crate/secure
containername = "Experimental energy gear crate"
access = access_armory
group = "Security"
/datum/supply_packs/exparmor
name = "Experimental armor crate"
contains = list(/obj/item/clothing/suit/armor/laserproof,
/obj/item/clothing/suit/armor/bulletproof,
/obj/item/clothing/head/helmet/riot,
/obj/item/clothing/suit/armor/riot)
cost = 35
containertype = /obj/structure/closet/crate/secure
containername = "Experimental armor crate"
containername = "energy guns crate"
access = access_armory
group = "Security"
@@ -1320,30 +1365,6 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
containername = "Radiation suit locker"
group = "Engineering"
/datum/supply_packs/tactical
name = "Tactical suits"
containertype = /obj/structure/closet/crate/secure
containername = "Tactical Suit Locker"
cost = 45
group = "Security"
access = access_armory
contains = list(/obj/item/clothing/under/tactical,
/obj/item/clothing/suit/armor/tactical,
/obj/item/clothing/head/helmet/tactical,
/obj/item/clothing/mask/balaclava/tactical,
/obj/item/clothing/glasses/sunglasses/sechud/tactical,
/obj/item/weapon/storage/belt/security/tactical,
/obj/item/clothing/shoes/jackboots,
/obj/item/clothing/gloves/black,
/obj/item/clothing/under/tactical,
/obj/item/clothing/suit/armor/tactical,
/obj/item/clothing/head/helmet/tactical,
/obj/item/clothing/mask/balaclava/tactical,
/obj/item/clothing/glasses/sunglasses/sechud/tactical,
/obj/item/weapon/storage/belt/security/tactical,
/obj/item/clothing/shoes/jackboots,
/obj/item/clothing/gloves/black)
/datum/supply_packs/carpet
name = "Imported carpet"
containertype = /obj/structure/closet

View File

@@ -27,6 +27,9 @@
/datum/uplink_category/stealth_items
name = "Stealth and Camouflage Items"
/datum/uplink_category/armor
name = "Armor"
/datum/uplink_category/tools
name = "Devices and Tools"

View File

@@ -305,6 +305,22 @@ datum/uplink_item/dd_SortValue()
item_cost = 6
path = /obj/item/weapon/disk/file/cameras/syndicate
/********
* Armor *
********/
/datum/uplink_item/item/armor
category = /datum/uplink_category/armor
/datum/uplink_item/item/armor/combat
name = "Combat Armor Set"
item_cost = 5
path = /obj/item/weapon/storage/box/syndie_kit/combat_armor
/datum/uplink_item/item/armor/heavy_vest
name = "Heavy Armor Vest"
item_cost = 4
path = /obj/item/clothing/suit/storage/vest/heavy/merc
/********************
* Devices and Tools *
********************/
@@ -351,11 +367,6 @@ datum/uplink_item/dd_SortValue()
item_cost = 3
path = /obj/item/clothing/glasses/thermal/syndi
/datum/uplink_item/item/tools/heavy_vest
name = "Heavy Armor Vest"
item_cost = 4
path = /obj/item/clothing/suit/storage/vest/heavy/merc
/datum/uplink_item/item/tools/powersink
name = "Powersink (DANGER!)"
item_cost = 5
@@ -385,7 +396,7 @@ datum/uplink_item/dd_SortValue()
item_cost = 3
path = /obj/item/weapon/storage/secure/briefcase/money
desc = "A briefcase with 10,000 untraceable thalers for funding your sneaky activities."
/datum/uplink_item/item/tools/crystal
name = "Tradable Crystal"
item_cost = 1

View File

@@ -61,6 +61,9 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_ra
items += new/datum/uplink_random_item(/datum/uplink_item/item/stealth_items/voice)
items += new/datum/uplink_random_item(/datum/uplink_item/item/stealth_items/camera_floppy, 10, 0)
items += new/datum/uplink_random_item(/datum/uplink_item/item/armor/heavy_vest)
items += new/datum/uplink_random_item(/datum/uplink_item/item/armor/combat)
items += new/datum/uplink_random_item(/datum/uplink_item/item/tools/toolbox, reselect_propbability = 10)
items += new/datum/uplink_random_item(/datum/uplink_item/item/tools/plastique)
items += new/datum/uplink_random_item(/datum/uplink_item/item/tools/encryptionkey_radio)
@@ -69,7 +72,6 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_ra
items += new/datum/uplink_random_item(/datum/uplink_item/item/tools/clerical)
items += new/datum/uplink_random_item(/datum/uplink_item/item/tools/space_suit, 50, 10)
items += new/datum/uplink_random_item(/datum/uplink_item/item/tools/thermal)
items += new/datum/uplink_random_item(/datum/uplink_item/item/tools/heavy_vest)
items += new/datum/uplink_random_item(/datum/uplink_item/item/tools/powersink, 10, 10)
items += new/datum/uplink_random_item(/datum/uplink_item/item/tools/ai_module, 25, 0)
items += new/datum/uplink_random_item(/datum/uplink_item/item/tools/teleporter, 10, 0)

View File

@@ -50,7 +50,7 @@
/obj/item/weapon/shield/riot
name = "riot shield"
desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder."
desc = "A shield adept for close quarters engagement. It's also capable of protecting from less powerful projectiles."
icon = 'icons/obj/weapons.dmi'
icon_state = "riot"
flags = CONDUCT
@@ -65,17 +65,31 @@
attack_verb = list("shoved", "bashed")
var/cooldown = 0 //shield bash cooldown. based on world.time
/obj/item/weapon/shield/riot/handle_shield(mob/user)
. = ..()
if(.) playsound(user.loc, 'sound/weapons/Genhit.ogg', 50, 1)
/obj/item/weapon/shield/riot/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
if(user.incapacitated())
return 0
/obj/item/weapon/shield/riot/get_block_chance(mob/user, var/damage, atom/damage_source = null, mob/attacker = null)
if(istype(damage_source, /obj/item/projectile))
var/obj/item/projectile/P = damage_source
//plastic shields do not stop bullets or lasers, even in space. Will block beanbags, rubber bullets, and stunshots just fine though.
if((is_sharp(P) && damage > 10) || istype(P, /obj/item/projectile/beam))
return 0
return base_block_chance
//block as long as they are not directly behind us
var/bad_arc = reverse_direction(user.dir) //arc of directions from which we cannot block
if(check_shield_arc(user, bad_arc, damage_source, attacker))
if(prob(get_block_chance(user, damage, damage_source, attacker)))
//At this point, we succeeded in our roll for a block attempt, however these kinds of shields struggle to stand up
//to strong bullets and lasers. They still do fine to pistol rounds of all kinds, however.
if(istype(damage_source, /obj/item/projectile))
var/obj/item/projectile/P = damage_source
if((is_sharp(P) && P.armor_penetration >= 10) || istype(P, /obj/item/projectile/beam))
//If we're at this point, the bullet/beam is going to go through the shield, however it will hit for less damage.
//Bullets get slowed down, while beams are diffused as they hit the shield, so these shields are not /completely/
//useless. Extremely penetrating projectiles will go through the shield without less damage.
user.visible_message("<span class='danger'>\The [user]'s [src.name] is pierced by [attack_text]!</span>")
if(P.armor_penetration < 30) //PTR bullets and x-rays will bypass this entirely.
P.damage = P.damage / 2
return 0
//Otherwise, if we're here, we're gonna stop the attack entirely.
user.visible_message("<span class='danger'>\The [user] blocks [attack_text] with \the [src]!</span>")
playsound(user.loc, 'sound/weapons/Genhit.ogg', 50, 1)
return 1
return 0
/obj/item/weapon/shield/riot/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/melee/baton))

View File

@@ -256,4 +256,14 @@
new /obj/item/weapon/spacecash/c1000(src)
new /obj/item/weapon/spacecash/c1000(src)
/obj/item/weapon/storage/box/syndie_kit/combat_armor
name = "combat armor kit"
desc = "Contains a full set of combat armor."
/obj/item/weapon/storage/box/syndie_kit/combat_armor/New()
..()
new /obj/item/clothing/head/helmet/combat(src)
new /obj/item/clothing/suit/armor/combat(src)
new /obj/item/clothing/gloves/arm_guard/combat(src)
new /obj/item/clothing/shoes/leg_guard/combat(src)
return

View File

@@ -0,0 +1,42 @@
/obj/item/clothing/gloves/arm_guard
name = "arm guards"
desc = "These arm guards will protect your hands and arms."
body_parts_covered = HANDS|ARMS
slowdown = 1
w_class = 3
/obj/item/clothing/gloves/arm_guard/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
if(..()) //This will only run if no other problems occured when equiping.
if(H.wear_suit)
if(H.wear_suit.body_parts_covered & ARMS)
H << "<span class='warning'>You can't wear \the [src] with \the [H.wear_suit], it's in the way.</span>"
return 0
return 1
/obj/item/clothing/gloves/arm_guard/laserproof
name = "ablative arm guards"
desc = "These arm guards will protect your hands and arms from energy weapons."
icon_state = "arm_guards_laser"
siemens_coefficient = 0.4 //This is worse than the other ablative pieces, to avoid this from becoming the poor warden's insulated gloves.
armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/gloves/arm_guard/bulletproof
name = "bullet resistant arm guards"
desc = "These arm guards will protect your hands and arms from ballistic weapons."
icon_state = "arm_guards_bullet"
siemens_coefficient = 0.7
armor = list(melee = 10, bullet = 80, laser = 10, energy = 50, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/gloves/arm_guard/riot
name = "riot arm guards"
desc = "These arm guards will protect your hands and arms from close combat weapons."
icon_state = "arm_guards_riot"
siemens_coefficient = 0.5
armor = list(melee = 80, bullet = 10, laser = 10, energy = 50, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/gloves/arm_guard/combat
name = "combat arm guards"
desc = "These arm guards will protect your hands and arms from a variety of weapons."
icon_state = "arm_guards_combat"
siemens_coefficient = 0.6
armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 30, bio = 0, rad = 0)

View File

@@ -7,7 +7,7 @@
slot_r_hand_str = "helmet",
)
flags = THICKMATERIAL
armor = list(melee = 50, bullet = 15, laser = 50,energy = 10, bomb = 25, bio = 0, rad = 0)
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
flags_inv = HIDEEARS|HIDEEYES
cold_protection = HEAD
min_cold_protection_temperature = HELMET_MIN_COLD_PROTECTION_TEMPERATURE
@@ -21,7 +21,7 @@
name = "riot helmet"
desc = "It's a helmet specifically designed to protect against close range attacks."
icon_state = "riot"
armor = list(melee = 82, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0)
armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
flags_inv = HIDEEARS
siemens_coefficient = 0.7
action_button_name = "Toggle Visor"
@@ -42,6 +42,30 @@
user << "You flip the visor down."
update_clothing_icon() //so our mob-overlays update
/obj/item/clothing/head/helmet/laserproof
name = "ablative helmet"
desc = "It's a helmet specifically designed to protect against energy projectiles."
icon_state = "helmet_reflec"
armor = list(melee = 10, bullet = 10, laser = 80 ,energy = 50, bomb = 0, bio = 0, rad = 0)
flags_inv = HIDEEARS
siemens_coefficient = 0.1
/obj/item/clothing/head/helmet/bulletproof
name = "bullet-resistant helmet"
desc = "It's a helmet specifically designed to protect against ballistic projectiles."
icon_state = "helmet_bulletproof"
armor = list(melee = 10, bullet = 80, laser = 10 ,energy = 10, bomb = 0, bio = 0, rad = 0)
flags_inv = HIDEEARS
siemens_coefficient = 0.7
/obj/item/clothing/head/helmet/combat
name = "combat helmet"
desc = "It's a general purpose combat helmet, designed to protect against typical dangers to your head."
icon_state = "swat"
armor = list(melee = 50, bullet = 50, laser = 50 ,energy = 30, bomb = 30, bio = 0, rad = 0)
flags_inv = HIDEEARS
siemens_coefficient = 0.6
/obj/item/clothing/head/helmet/swat
name = "\improper SWAT helmet"
desc = "They're often used by highly trained SWAT Members."
@@ -78,7 +102,7 @@
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
)
armor = list(melee = 62, bullet = 50, laser = 50,energy = 35, bomb = 10, bio = 2, rad = 0)
armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
flags_inv = HIDEEARS
siemens_coefficient = 0.7

View File

@@ -0,0 +1,42 @@
/obj/item/clothing/shoes/leg_guard
name = "leg guards"
desc = "These will protect your legs and feet."
body_parts_covered = LEGS|FEET
slowdown = 1
w_class = 3
/obj/item/clothing/shoes/leg_guard/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
if(..()) //This will only run if no other problems occured when equiping.
if(H.wear_suit)
if(H.wear_suit.body_parts_covered & LEGS)
H << "<span class='warning'>You can't wear \the [src] with \the [H.wear_suit], it's in the way.</span>"
return 0
return 1
/obj/item/clothing/shoes/leg_guard/laserproof
name = "ablative leg guards"
desc = "These will protect your legs and feet from energy weapons."
icon_state = "leg_guards_laser"
siemens_coefficient = 0.1
armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/shoes/leg_guard/bulletproof
name = "bullet resistant leg guards"
desc = "These will protect your legs and feet from ballistic weapons."
icon_state = "leg_guards_bullet"
siemens_coefficient = 0.7
armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/shoes/leg_guard/riot
name = "riot leg guards"
desc = "These will protect your legs and feet from close combat weapons."
icon_state = "leg_guards_riot"
siemens_coefficient = 0.5
armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/shoes/leg_guard/combat
name = "combat leg guards"
desc = "These will protect your legs and feet from a variety of weapons."
icon_state = "leg_guards_combat"
siemens_coefficient = 0.6
armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 30, bio = 0, rad = 0)

View File

@@ -10,6 +10,16 @@
max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE
siemens_coefficient = 0.6
/obj/item/clothing/suit/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
if(..()) //This will only run if no other problems occured when equiping.
for(var/obj/item/clothing/I in list(H.gloves, H.shoes))
if(I && (src.body_parts_covered & ARMS && I.body_parts_covered & ARMS) )
H << "<span class='warning'>You can't wear \the [src] with \the [I], it's in the way.</span>"
return 0
if(I && (src.body_parts_covered & LEGS && I.body_parts_covered & LEGS) )
H << "<span class='warning'>You can't wear \the [src] with \the [I], it's in the way.</span>"
return 0
return 1
/obj/item/clothing/suit/armor/vest
name = "armor"
@@ -17,7 +27,7 @@
icon_state = "armor"
item_state = "armor"
blood_overlay_type = "armor"
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
/obj/item/clothing/suit/armor/vest/alt
name = "security armor"
@@ -47,24 +57,21 @@
/obj/item/clothing/suit/armor/riot
name = "Riot Suit"
desc = "A suit of armor with heavy padding to protect against melee attacks. Looks like it might impair movement."
name = "riot vest"
desc = "A vest with heavy padding to protect against melee attacks."
icon_state = "riot"
item_state = "swat_suit"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
slowdown = 1
armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
flags_inv = HIDEJUMPSUIT
siemens_coefficient = 0.5
/obj/item/clothing/suit/armor/riot/alt
name = "Riot Suit"
desc = "A suit of armor with heavy padding to protect against melee attacks. Looks like it might impair movement."
icon_state = "riot_new"
item_state = "riot_new"
/obj/item/clothing/suit/armor/bulletproof
name = "Bulletproof Vest"
name = "bullet resistant vest"
desc = "A vest that excels in protecting the wearer against high-velocity solid projectiles."
icon_state = "bulletproof"
item_state = "armor"
@@ -73,20 +80,18 @@
siemens_coefficient = 0.7
/obj/item/clothing/suit/armor/bulletproof/alt
name = "Bulletproof Vest"
desc = "A vest that excels in protecting the wearer against high-velocity solid projectiles."
icon_state = "bulletproof_new"
item_state = "bulletproof_new"
blood_overlay_type = "armor"
/obj/item/clothing/suit/armor/laserproof
name = "Ablative Armor Vest"
name = "ablative armor vest"
desc = "A vest that excels in protecting the wearer against energy projectiles."
icon_state = "armor_reflec"
item_state = "armor_reflec"
blood_overlay_type = "armor"
armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0
siemens_coefficient = 0.1
/obj/item/clothing/suit/armor/laserproof/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
if(istype(damage_source, /obj/item/projectile/energy) || istype(damage_source, /obj/item/projectile/beam))
@@ -108,6 +113,25 @@
return PROJECTILE_CONTINUE // complete projectile permutation
/obj/item/clothing/suit/armor/combat
name = "combat vest"
desc = "A vest that protects the wearer from several common types of weaponry."
icon_state = "combat"
item_state = "combat"
blood_overlay_type = "armor"
armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 30, bio = 0, rad = 0)
siemens_coefficient = 0.6
/obj/item/clothing/suit/armor/tactical
name = "tactical armor"
desc = "A suit of armor most often used by Special Weapons and Tactics squads. Includes padded vest with pockets along with shoulder and kneeguards."
icon_state = "swatarmor"
item_state = "armor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
slowdown = 1
armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
siemens_coefficient = 0.7
/obj/item/clothing/suit/armor/swat
name = "swat suit"
desc = "A heavily armored suit that protects against moderate damage. Used in special operations."
@@ -143,7 +167,7 @@
item_state = "armor"
blood_overlay_type = "armor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
//Reactive armor
@@ -200,42 +224,6 @@
src.item_state = "reactiveoff"
..()
/obj/item/clothing/suit/armor/tactical
name = "tactical armor"
desc = "A suit of armor most often used by Special Weapons and Tactics squads. Includes padded vest with pockets along with shoulder and kneeguards."
icon_state = "swatarmor"
item_state = "armor"
var/obj/item/weapon/gun/holstered = null
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
slowdown = 1
armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 20, bio = 0, rad = 0)
siemens_coefficient = 0.7
var/obj/item/clothing/accessory/holster/holster
/obj/item/clothing/suit/armor/tactical/New()
..()
holster = new(src)
/obj/item/clothing/suit/armor/tactical/attackby(obj/item/W as obj, mob/user as mob)
..()
holster.attackby(W, user)
/obj/item/clothing/suit/armor/tactical/verb/holster()
set name = "Holster"
set category = "Object"
set src in usr
if(!istype(usr, /mob/living)) return
if(usr.stat) return
if(!holster.holstered)
var/obj/item/W = usr.get_active_hand()
if(!istype(W, /obj/item))
usr << "<span class='warning'>You need your gun equiped to holster it.</span>"
return
holster.holster(W, usr)
else
holster.unholster(usr)
//Non-hardsuit ERT armor.
/obj/item/clothing/suit/armor/vest/ert
name = "emergency response team armor"
@@ -274,7 +262,7 @@
desc = "A simple kevlar plate carrier."
icon_state = "kvest"
item_state = "kvest"
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
allowed = list(/obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
body_parts_covered = UPPER_TORSO|LOWER_TORSO
@@ -331,7 +319,7 @@
desc = "A heavy kevlar plate carrier with webbing attached."
icon_state = "webvest"
item_state = "webvest"
armor = list(melee = 50, bullet = 40, laser = 50, energy = 25, bomb = 30, bio = 0, rad = 0)
armor = list(melee = 50, bullet = 40, laser = 40, energy = 25, bomb = 25, bio = 0, rad = 0)
slowdown = 1
/obj/item/clothing/suit/storage/vest/heavy/officer