diff --git a/code/defines/obj/closet.dm b/code/defines/obj/closet.dm
index de716390ede..579c9a397dd 100644
--- a/code/defines/obj/closet.dm
+++ b/code/defines/obj/closet.dm
@@ -12,6 +12,7 @@
flags = FPRINT
var/health = 100 //Might be a bit much, dono can always change later //Nerfed -Pete
var/lastbang //
+ var/lasttry = 0
/obj/structure/closet/acloset
name = "Strange closet"
diff --git a/code/defines/obj/clothing/head.dm b/code/defines/obj/clothing/head.dm
index f14755faa6b..cfb9224d953 100644
--- a/code/defines/obj/clothing/head.dm
+++ b/code/defines/obj/clothing/head.dm
@@ -18,16 +18,23 @@
name = "Captain's hat"
icon_state = "captain"
desc = "It's good being the king."
- flags = FPRINT|TABLEPASS|SUITSPACE
+ flags = FPRINT|TABLEPASS
item_state = "caphat"
/obj/item/clothing/head/centhat
name = "Cent. Comm. hat"
icon_state = "centcom"
desc = "It's even better to be the emperor."
- flags = FPRINT|TABLEPASS|SUITSPACE
+ flags = FPRINT|TABLEPASS
item_state = "centhat"
+/obj/item/clothing/head/deathsquad/beret
+ name = "officer's beret"
+ desc = "An armored beret commonly used by special operations officers."
+ icon_state = "beret_badge"
+ flags = FPRINT|TABLEPASS
+ armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)
+
/obj/item/clothing/head/powdered_wig
name = "powdered wig"
diff --git a/code/defines/obj/clothing/jumpsuit.dm b/code/defines/obj/clothing/jumpsuit.dm
index 611a9cacd41..43743aabddd 100644
--- a/code/defines/obj/clothing/jumpsuit.dm
+++ b/code/defines/obj/clothing/jumpsuit.dm
@@ -197,16 +197,16 @@
/obj/item/clothing/under/rank/centcom_officer
desc = "A jumpsuit worn by Centcom Officers."
name = "CentCom Officer Jumpsuit"
- icon_state = "officer"
+ icon_state = "centcom"
item_state = "g_suit"
- color = "officer"
+ color = "centcom"
/obj/item/clothing/under/rank/centcom_commander
desc = "A jumpsuit worn by Centcom's highest level Commanders."
name = "CentCom Officer Jumpsuit"
- icon_state = "centcom"
+ icon_state = "officer"
item_state = "dg_suit"
- color = "centcom"
+ color = "officer"
/obj/item/clothing/under/rank/miner
desc = "A snappy jumpsuit with a sturdy set of overalls. It is very dirty."
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index d01409c9e4b..fe837cd6550 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -458,6 +458,7 @@
var/registered = null
var/assignment = null
var/obj/item/weapon/photo/PHOTO = null
+ var/over = 1
/obj/item/weapon/card/id/gold
name = "identification card"
diff --git a/code/game/objects/closets.dm b/code/game/objects/closets.dm
index dab9a42deb4..15433eee2a7 100644
--- a/code/game/objects/closets.dm
+++ b/code/game/objects/closets.dm
@@ -6,7 +6,7 @@
return (!density)
/obj/structure/closet/proc/can_open()
- if(src.welded)
+ if(src.welded || istype(src.loc,/obj/effect/bigDelivery))
return 0
return 1
@@ -120,12 +120,13 @@
if(istype(W, /obj/item/weapon/packageWrap))
var/obj/item/weapon/packageWrap/O = W
if (O.amount > 3)
+ src.close()
var/obj/effect/bigDelivery/P = new /obj/effect/bigDelivery(get_turf(src.loc))
P.wrapped = src
- src.close()
P.waswelded = welded
src.welded = 0
src.loc = P
+ src.opened = 0
O.amount -= 3
else
user << "\blue You need more paper."
@@ -186,18 +187,18 @@
return
if(!src.open())
- if(istype(src.loc,/obj/effect/bigDelivery) && lastbang == 0)
+ if(istype(src.loc,/obj/effect/bigDelivery) && lasttry == 0)
var/obj/effect/bigDelivery/Pack = src.loc
if(istype(Pack.loc,/turf) && Pack.waswelded == 0)
for (var/mob/M in hearers(src.loc, null))
M << text("BANG, bang, rrrrrip!", max(0, 5 - get_dist(src, M)))
- lastbang = 1
+ lasttry = 1
sleep(10)
src.welded = 0
Pack.unwrap()
src.open()
spawn(30)
- lastbang = 0
+ lasttry = 0
else if(!istype(src.loc,/obj/effect/bigDelivery))
user << "\blue It won't budge!"
if(!lastbang)
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 9f5a21c81b3..e7bc2057f6b 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -674,11 +674,13 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if("centcom official")
M.equip_if_possible(new /obj/item/clothing/under/rank/centcom_officer(M), M.slot_w_uniform)
M.equip_if_possible(new /obj/item/clothing/shoes/black(M), M.slot_shoes)
- M.equip_if_possible(new /obj/item/clothing/gloves/black(M), M.slot_gloves)
+ M.equip_if_possible(new /obj/item/clothing/gloves/white(M), M.slot_gloves)
M.equip_if_possible(new /obj/item/device/radio/headset/heads/hop(M), M.slot_ears)
- M.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(M), M.slot_glasses)
- M.equip_if_possible(new /obj/item/weapon/gun/energy(M), M.slot_belt)
- M.equip_if_possible(new /obj/item/weapon/pen(M), M.slot_l_store)
+ var/obj/item/clothing/suit/storage/armoredundersuit/K = new(M)
+ var/obj/item/clothing/glasses/sunglasses/V = new(M)
+ V.loc = K
+ M.equip_if_possible(K, M.slot_wear_suit)
+ M.equip_if_possible(new /obj/item/weapon/gun/energy(M), M.slot_s_store)
var/obj/item/device/pda/heads/pda = new(M)
pda.owner = M.real_name
@@ -687,27 +689,33 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_if_possible(pda, M.slot_r_store)
- M.equip_if_possible(new /obj/item/weapon/clipboard(M), M.slot_l_hand)
+ var/obj/item/weapon/clipboard/G = new(M)
+ G.pen = new /obj/item/weapon/pen(G)
+ M.equip_if_possible(G, M.slot_l_store)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.icon_state = "centcom"
+ W.item_state = "id_inv"
W.access = get_all_accesses()
W.access += list("VIP Guest","Custodian","Thunderdome Overseer","Intel Officer","Medical Officer","Death Commando","Research Officer")
W.assignment = "CentCom Review Official"
W.registered = M.real_name
+ W.over = 0
M.equip_if_possible(W, M.slot_wear_id)
if("centcom commander")
M.equip_if_possible(new /obj/item/clothing/under/rank/centcom_commander(M), M.slot_w_uniform)
- M.equip_if_possible(new /obj/item/clothing/suit/armor/bulletproof(M), M.slot_wear_suit)
+ var/obj/item/clothing/suit/storage/armoredundersuit/K = new(M)
+ var/obj/item/clothing/glasses/eyepatch/G = new(M)
+ G.loc = K
+ M.equip_if_possible(K, M.slot_wear_suit)
M.equip_if_possible(new /obj/item/clothing/shoes/swat(M), M.slot_shoes)
- M.equip_if_possible(new /obj/item/clothing/gloves/swat(M), M.slot_gloves)
+ M.equip_if_possible(new /obj/item/clothing/gloves/white(M), M.slot_gloves)
M.equip_if_possible(new /obj/item/device/radio/headset/heads/captain(M), M.slot_ears)
- M.equip_if_possible(new /obj/item/clothing/glasses/eyepatch(M), M.slot_glasses)
M.equip_if_possible(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), M.slot_wear_mask)
M.equip_if_possible(new /obj/item/clothing/head/centhat(M), M.slot_head)
- M.equip_if_possible(new /obj/item/weapon/gun/projectile/mateba(M), M.slot_belt)
+ M.equip_if_possible(new /obj/item/weapon/gun/projectile/mateba(M), M.slot_s_store)
M.equip_if_possible(new /obj/item/weapon/zippo(M), M.slot_r_store)
M.equip_if_possible(new /obj/item/ammo_magazine/a357(M), M.slot_l_store)
@@ -718,17 +726,18 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
W.access += get_all_centcom_access()
W.assignment = "CentCom Commanding Officer"
W.registered = M.real_name
+ W.over = 0
M.equip_if_possible(W, M.slot_wear_id)
if("special ops officer")
M.equip_if_possible(new /obj/item/clothing/under/syndicate/combat(M), M.slot_w_uniform)
- M.equip_if_possible(new /obj/item/clothing/suit/armor/swat/officer(M), M.slot_wear_suit)
+ M.equip_if_possible(new /obj/item/clothing/suit/storage/officer(M), M.slot_wear_suit)
M.equip_if_possible(new /obj/item/clothing/shoes/combat(M), M.slot_shoes)
M.equip_if_possible(new /obj/item/clothing/gloves/combat(M), M.slot_gloves)
M.equip_if_possible(new /obj/item/device/radio/headset/heads/captain(M), M.slot_ears)
M.equip_if_possible(new /obj/item/clothing/glasses/thermal/eyepatch(M), M.slot_glasses)
M.equip_if_possible(new /obj/item/clothing/mask/cigarette/cigar/havanian(M), M.slot_wear_mask)
- M.equip_if_possible(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), M.slot_head)
+ M.equip_if_possible(new /obj/item/clothing/head/deathsquad/beret(M), M.slot_head)
M.equip_if_possible(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), M.slot_belt)
M.equip_if_possible(new /obj/item/weapon/zippo(M), M.slot_r_store)
M.equip_if_possible(new /obj/item/weapon/storage/backpack/satchel(M), M.slot_back)
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index 8bbe8ef3205..2a89b07d9ea 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -24,7 +24,7 @@ var/global/sent_strike_team = 0
var/input = null
while(!input)
- input = input(src, "Please specify which mission the death commando squad shall undertake.", "Specify Mission", "")
+ input = input(src, "Please specify which mission the death commando squad shall undertake.", "Specify Mission", "") as text|null
if(!input)
if(alert("Error, no mission set. Do you want to exit the setup process?",,"Yes","No")=="Yes")
return
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 3595950a257..36599ceeec2 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -7,11 +7,11 @@
-/obj/item/clothing/head/helmet/space/deathsquad/beret
+/*/obj/item/clothing/head/helmet/space/deathsquad/beret
name = "officer's beret"
desc = "An armored beret commonly used by special operations officers."
icon_state = "beret_badge"
- armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)
+ armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)*/
diff --git a/code/modules/clothing/suits/heavy.dm b/code/modules/clothing/suits/heavy.dm
index cca35dbe5a6..dfe197e4c6f 100644
--- a/code/modules/clothing/suits/heavy.dm
+++ b/code/modules/clothing/suits/heavy.dm
@@ -48,13 +48,29 @@
slowdown = 1
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 0, rad = 0)
-/obj/item/clothing/suit/armor/swat/officer
+/obj/item/clothing/suit/storage/officer
name = "officer jacket"
desc = "An armored jacket used in special operations."
icon_state = "detective"
item_state = "det_suit"
-
-
-
+ gas_transfer_coefficient = 0.01
+ permeability_coefficient = 0.01
+ heat_transfer_coefficient = 0.02
+ protective_temperature = 1000
+ flags = FPRINT | TABLEPASS | SUITSPACE
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
+ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
+ slowdown = 1
+ armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 0, rad = 0)
+
+/obj/item/clothing/suit/storage/armoredundersuit
+ name = "armoured undersuit"
+ desc = "An layer of armor that attaches to clothing, outfitted with pockets."
+ icon_state = "invisible"
+ item_state = "invisible"
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
+ allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/pepperspray,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/policetaperoll)
+ armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 30545cd6513..fbb975a0982 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -880,7 +880,8 @@
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
if (wear_id)
- overlays += image("icon" = 'mob.dmi', "icon_state" = "id[!lying ? null : "2"]", "layer" = MOB_LAYER)
+ if(wear_id.over)
+ overlays += image("icon" = 'mob.dmi', "icon_state" = "id[!lying ? null : "2"]", "layer" = MOB_LAYER)
if (client)
client.screen -= hud_used.intents
@@ -954,7 +955,8 @@
var/t1 = s_store.item_state
if (!t1)
t1 = s_store.icon_state
- overlays += image("icon" = 'belt_mirror.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
+ if(!istype(wear_suit, /obj/item/clothing/suit/storage/armoredundersuit))
+ overlays += image("icon" = 'belt_mirror.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
s_store.screen_loc = ui_sstore1
if (h_store)
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 4f6c9639917..06d43c66d9f 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -63,14 +63,12 @@ emp_act
if(I.IsShield() && (prob(35)))
visible_message("\red The reactive teleport system flings [src] clear of [attack_text]!")
var/list/turfs = new/list()
- for(var/turf/T in orange(6))
+ for(var/turf/T in orange(6,src))
if(istype(T,/turf/space)) continue
if(T.density) continue
- if(T.x>world.maxx-6 || T.x<6) continue
- if(T.y>world.maxy-6 || T.y<6) continue
turfs += T
- if(!turfs.len) turfs += pick(/turf in orange(6))
- else
+ if(!turfs.len)
+ turfs += pick(/turf in orange(6,src))
visible_message("\red The reactive teleport system malfunctions!")
var/turf/picked = pick(turfs)
if(!isturf(picked)) return
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index cadec94f5bd..8ff15cd5f09 100644
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -8,11 +8,11 @@
var/sortTag = null
flags = FPRINT
mouse_drag_pointer = MOUSE_ACTIVE_POINTER
- var/examtext = null
+ var/examtext = null
var/label_x = 0
- var/tag_x = 0
+ var/tag_x = 0
var/waswelded = 0
-
+
attack_hand(mob/user as mob)
return unwrap()
@@ -87,6 +87,13 @@
..()
return
+ relaymove(mob/user as mob)
+ for(var/obj/structure/closet/F in src)
+ user.loc = F
+ F.contents += user
+ F.opened = 0
+ break
+
/obj/item/smallDelivery
desc = "A small wrapped package."
name = "small parcel"
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 3b5acaab236..b2905c91359 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 528edcb7543..2f70d43f555 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
index 553f49900b4..0550550e7fa 100644
Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 3fd78d2ee53..b6526a11d07 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index ed8e3754c08..e4cb2889b62 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi
index 315b6802aa1..17d403d979a 100644
Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ