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