From 1eb02b5cf44d6662e71218940afa213dccd7a5a1 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Tue, 15 Jul 2014 04:02:24 -0400 Subject: [PATCH] Overhauled holsters and webbings --- code/_onclick/hud/human.dm | 4 + code/_onclick/hud/screen_objects.dm | 4 +- code/datums/supplypacks.dm | 2 +- code/game/objects/items.dm | 4 + .../crates_lockers/closets/secure/security.dm | 3 +- code/modules/clothing/clothing.dm | 71 +----------------- code/modules/clothing/head/misc_special.dm | 4 +- code/modules/clothing/under/ties.dm | 63 ++++++++++------ icons/mob/screen1_action.dmi | Bin 2939 -> 3789 bytes 9 files changed, 56 insertions(+), 99 deletions(-) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 38bb1173ce4..7e7a4f544a1 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -504,6 +504,10 @@ hud_used.item_action_list = list() for(var/obj/item/I in src) + if(istype(I,/obj/item/clothing/under)) + var/obj/item/clothing/under/U = I + if(U.hastie) + I = U.hastie if(I.icon_action_button) var/obj/screen/item_action/A = new(hud_used) //A.icon = 'icons/mob/screen1_action.dmi' diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 7283b735ed6..41d8a7819d0 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -55,9 +55,11 @@ if(usr.stat || usr.restrained() || usr.stunned || usr.lying) return 1 - if(!(owner in usr)) + + if(!(owner in usr) && !(owner.loc.loc == usr)) return 1 + owner.ui_action_click() return 1 diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 40fb6f45c9f..01ac8932762 100755 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -1070,7 +1070,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee name = "Mafia Supply crate" contains = list(/obj/item/clothing/suit/browntrenchcoat =1,/obj/item/clothing/suit/blacktrenchcoat =1,/obj/item/clothing/head/fedora/whitefedora =1, /obj/item/clothing/head/fedora/brownfedora =1,/obj/item/clothing/head/fedora =1,/obj/item/clothing/under/flappers =1,/obj/item/clothing/under/mafia =1,/obj/item/clothing/under/mafia/vest =1,/obj/item/clothing/under/mafia/white =1, - /obj/item/clothing/under/mafia/sue =1,/obj/item/clothing/under/mafia/tan =1, /obj/item/toy/crossbow/tommygun =2,/obj/item/clothing/tie/accessory/gunholster =1,) + /obj/item/clothing/under/mafia/sue =1,/obj/item/clothing/under/mafia/tan =1, /obj/item/toy/crossbow/tommygun =2) cost = 15 containertype = /obj/structure/closet/crate containername = "mafia supply crate" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 8b508553f43..b607cc3da62 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -546,6 +546,10 @@ /obj/item/proc/ui_action_click() if( src in usr ) attack_self(usr) + return + else if(istype(src, /obj/item/clothing/tie)) + if(istype(src.loc,/obj/item/clothing/under)) + attack_self(usr) /obj/item/proc/IsShield() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 0ebba4e8bd4..909c9573db5 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -123,7 +123,7 @@ new /obj/item/device/flash(src) new /obj/item/weapon/melee/baton/loaded(src) new /obj/item/weapon/gun/energy/gun(src) - new /obj/item/clothing/tie/holster/waist(src) + new /obj/item/clothing/tie/holster/armpit(src) new /obj/item/weapon/melee/telebaton(src) return @@ -281,7 +281,6 @@ new /obj/item/clothing/gloves/black(src) new /obj/item/clothing/head/det_hat(src) new /obj/item/clothing/shoes/brown(src) - new /obj/item/clothing/tie/accessory/gunholster(src) new /obj/item/weapon/storage/box/evidence(src) new /obj/item/device/radio/headset/headset_sec(src) new /obj/item/device/detective_scanner(src) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 9e54361ab63..4d4a50c83cd 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -267,12 +267,6 @@ BLIND // can't see anything I.loc = src user << "You attach [I] to [src]." - if (istype(hastie,/obj/item/clothing/tie/holster)) - verbs += /obj/item/clothing/under/proc/holster - - if (istype(hastie,/obj/item/clothing/tie/storage)) - verbs += /obj/item/clothing/under/proc/storage - if(istype(loc, /mob/living/carbon/human)) var/mob/living/carbon/human/H = loc H.update_inv_w_uniform() @@ -284,7 +278,7 @@ BLIND // can't see anything /obj/item/clothing/under/attack_hand(mob/user as mob) //only forward to the attached accessory if the clothing is equipped (not in a storage) if(hastie && src.loc == user) - hastie.attack_hand(user) + removetie() return if ((ishuman(usr) || ismonkey(usr)) && src.loc == user) //make it harder to accidentally undress yourself @@ -368,9 +362,7 @@ BLIND // can't see anything else usr << "You cannot roll down the uniform!" -/obj/item/clothing/under/verb/removetie() - set name = "Remove Accessory" - set category = "Object" +/obj/item/clothing/under/proc/removetie() set src in usr if(!istype(usr, /mob/living)) return if(usr.stat) return @@ -379,11 +371,7 @@ BLIND // can't see anything usr.put_in_hands(hastie) hastie = null - if (istype(hastie,/obj/item/clothing/tie/holster)) - verbs -= /obj/item/clothing/under/proc/holster - if (istype(hastie,/obj/item/clothing/tie/storage)) - verbs -= /obj/item/clothing/under/proc/storage var/obj/item/clothing/tie/storage/W = hastie if (W.hold) W.hold.loc = hastie @@ -396,59 +384,4 @@ BLIND // can't see anything sensor_mode = pick(0,1,2,3) ..() -/obj/item/clothing/under/proc/holster() - set name = "Holster" - set category = "Object" - set src in usr - if(!istype(usr, /mob/living)) return - if(usr.stat) return - - if (!hastie || !istype(hastie,/obj/item/clothing/tie/holster)) - usr << "\red You need a holster for that!" - return - var/obj/item/clothing/tie/holster/H = hastie - - if(!H.holstered) - if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) - usr << "\blue You need your gun equiped to holster it." - return - var/obj/item/weapon/gun/W = usr.get_active_hand() - if (!W.isHandgun()) - usr << "\red This gun won't fit in \the [H]!" - return - H.holstered = usr.get_active_hand() - usr.drop_item() - H.holstered.loc = src - usr.visible_message("\blue \The [usr] holsters \the [H.holstered].", "You holster \the [H.holstered].") - else - if(istype(usr.get_active_hand(),/obj) && istype(usr.get_inactive_hand(),/obj)) - usr << "\red You need an empty hand to draw the gun!" - else - if(usr.a_intent == "harm") - usr.visible_message("\red \The [usr] draws \the [H.holstered], ready to shoot!", \ - "\red You draw \the [H.holstered], ready to shoot!") - else - usr.visible_message("\blue \The [usr] draws \the [H.holstered], pointing it at the ground.", \ - "\blue You draw \the [H.holstered], pointing it at the ground.") - usr.put_in_hands(H.holstered) - H.holstered = null - -/obj/item/clothing/under/proc/storage() - set name = "Look in storage" - set category = "Object" - set src in usr - if(!istype(usr, /mob/living)) return - if(usr.stat) return - - if (!hastie || !istype(hastie,/obj/item/clothing/tie/storage)) - usr << "\red You need something to store items in for that!" - return - var/obj/item/clothing/tie/storage/W = hastie - - if (!istype(W.hold)) - return - - W.hold.loc = usr - W.hold.attack_hand(usr) - diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 1530b8a8a12..c071a0b77e1 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -34,9 +34,7 @@ toggle() -/obj/item/clothing/head/welding/verb/toggle() - set category = "Object" - set name = "Adjust welding mask" +/obj/item/clothing/head/welding/proc/toggle() set src in usr if(usr.canmove && !usr.stat && !usr.restrained()) diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index e5f7683b65e..932e96b60ee 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -162,6 +162,39 @@ icon_state = "holster" _color = "holster" var/obj/item/weapon/gun/holstered = null + icon_action_button = "action_holster" + +/obj/item/clothing/tie/holster/attack_self() + holster() + +/obj/item/clothing/tie/holster/proc/holster() + if(!istype(usr, /mob/living)) return + if(usr.stat) return + + if(!holstered) + if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) + usr << "\blue You need your gun equiped to holster it." + return + var/obj/item/weapon/gun/W = usr.get_active_hand() + if (!W.isHandgun()) + usr << "\red This gun won't fit in \the [src]!" + return + holstered = usr.get_active_hand() + usr.drop_item() + holstered.loc = src + usr.visible_message("\blue \The [usr] holsters \the [holstered].", "You holster \the [holstered].") + else + if(istype(usr.get_active_hand(),/obj) && istype(usr.get_inactive_hand(),/obj)) + usr << "\red You need an empty hand to draw the gun!" + else + if(usr.a_intent == "harm") + usr.visible_message("\red \The [usr] draws \the [holstered], ready to shoot!", \ + "\red You draw \the [holstered], ready to shoot!") + else + usr.visible_message("\blue \The [usr] draws \the [holstered], pointing it at the ground.", \ + "\blue You draw \the [holstered], pointing it at the ground.") + usr.put_in_hands(holstered) + holstered = null /obj/item/clothing/tie/holster/armpit name = "shoulder holster" @@ -169,12 +202,6 @@ icon_state = "holster" _color = "holster" -/obj/item/clothing/tie/holster/waist - name = "shoulder holster" - desc = "A handgun holster. Made of expensive leather." - icon_state = "holster" - _color = "holster_low" - /obj/item/clothing/tie/storage name = "load bearing equipment" desc = "Used to hold things when you don't have enough hands for that." @@ -182,19 +209,20 @@ _color = "webbing" var/slots = 3 var/obj/item/weapon/storage/pockets/hold + icon_action_button = "action_storage" /obj/item/clothing/tie/storage/New() hold = new /obj/item/weapon/storage/pockets(src) hold.master_item = src hold.storage_slots = slots + /obj/item/clothing/tie/storage/attack_self(mob/user as mob) - user << "You empty [src]." - var/turf/T = get_turf(src) - hold.hide_from(usr) - for(var/obj/item/I in hold.contents) - hold.remove_from_storage(I, T) - src.add_fingerprint(user) + if (!istype(hold)) + return + + hold.loc = user + hold.attack_hand(user) /obj/item/clothing/tie/storage/attackby(obj/item/weapon/W as obj, mob/user as mob) hold.attackby(W,user) @@ -335,14 +363,3 @@ ..() new /obj/item/weapon/hatchet/unathiknife(hold) new /obj/item/weapon/hatchet/unathiknife(hold) - - -///////////////// -//Miscellaneous// -///////////////// - -/obj/item/clothing/tie/accessory/gunholster - name = "gun holster" - desc = "When you just HAVE to show off your guns" - icon_state = "gunhulster" - _color = "gunhulster" \ No newline at end of file diff --git a/icons/mob/screen1_action.dmi b/icons/mob/screen1_action.dmi index ac3232918eb37117325e006dd90fbc86511ddc40..e051125fd01b63f5852f35300eb2a5c3b5255816 100644 GIT binary patch literal 3789 zcmV;;4l?nHP)V=-0C=30jXMg%Fc3s*>lBOKhx}SK!6vw{uV6OTTB}5ng0#ffPvI^QP`Vj- zZ>E7uckM@LhhDuYWfuczIPdnVTAdLF4X2~3n4D$VN){9X4K>c$r~5!pZHWPaP(OymEu`qLQB8!2D-6@ zcIedyTY!VXIOuu0000f(Nkl4ItGFYs;(3C4`Nbb64RKbiH;w9h#yEWX^bDJLfViZ>QFbat}Rnn6-;TSwrNw+ z)FvV1qt2I|*l}{4)Q;`_xVbmi_PzG?M`9cM`D5R6-gBOF&pGe;@OfV!=E8*wC?IoC zWV!(Pjy1xEg9i`Ktp@3d6Q7ibh36wb!wo?P4<4Q~nbxibKOBy+s7lCJ{xuQ;nw20n znbt1Ik;^Cks0MI2#xy#e4o0InOgI<}CQPVMEKe~`=cLBr7}Lb7gly%1r2Y!2+fa@_ zpV>fTrQhGs#mmXz7u5ijO1&^MGn3Ryi$S4KK&4VI0Fc$QvW>s5?j3S@t{mtALZ)f5 zx&L>fjnG&34!J5K7mHuC0m{nC()RKk6bc2VrW~?lvx)zT=@?-&v?ZjS9Da`w3K&AI6+CttfA{r& zkml`AQGo6FT==xT3yXquYwTSpuihcZFG+q04VasY*fdKtz;a&V{8>K-T)6O8(%ycA za-Z$(N2o!s!=QgJ(UP?&F5e18zy)K~MmX^`px$kAZ=g%*^jiRC^0Dw~24WDluuN`|Id?Ntx2gEmUcI80=yd6lCUuq5j zfTy2%8k!xf2FS`w1X-&A+?c-{>gOvT00Mz#6se8@0Q&m+02tv91fesSVXWDSNZ2la zB)gp4`xmK|M7nC(rD!}0ib0^ z6CggK$wp0eHLiB`NXBQa25{gsVfP-;i(fy^4?}^#7bsG_k7tk6p>w1aUOI+ioe{Rn zAE9FHws79DZ?Qr3CGD5_V;sjnFfdF}F15gvhk=1%8fz7nl^SsIo3BV?_19m_76Ta7Q8o;fFcJBcl^zTimSEjNL*fsqY?F0y;VOt`!FpUGn$Dz?z^Sj}i z>S`Rga~vn9o`+I1!prTNev9JAvJc=^L&BY~?EF&T2Y`C_?`g}9CUV|a!^koV$v1vc4UlU;vr@<>enx1Vn~$b}ndWB-*3p?o!8$s_C^SHZQD}e+Bho)0 z)?OxUIC0_=(FJ*4Pr?Te9uBRteSBCW6#N4s1XcoaUohYO1F&Qt9~Pbl`+PVYV{scH zTm1u8ieJh<04rdhFIzs_`~y~!KPUYIJRYa$iI`4jl>FH`Tm2Jq%0D0o9|3?vhYmrn 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 l%KRJg0c(s6@8~tg{{iW+