From f14e6b1d7bfb9cfcb349f0474e0b4281dee38080 Mon Sep 17 00:00:00 2001 From: "uhangi@gmail.com" Date: Tue, 28 Sep 2010 00:18:56 +0000 Subject: [PATCH] Barman's shotgun update. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@195 316c924e-a436-60f5-8080-3fe189b3f50e --- code/defines/obj/weapon.dm | 19 + code/game/jobs/jobprocs.dm | 4 + code/game/machinery/autolathe.dm | 2 + code/game/objects/items/weapons/guns_ammo.dm | 141 +- code/modules/mob/living/carbon/human/human.dm | 53 + icons/obj/ammo.dmi | Bin 1198 -> 1450 bytes icons/obj/gun.dmi | Bin 6479 -> 8191 bytes maps/trunkmap.dmm | 8891 +++++++++-------- 8 files changed, 4646 insertions(+), 4464 deletions(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index df78c4fbcf0..6372651cadd 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -98,6 +98,16 @@ icon_state = "357-7" amount_left = 7.0 +/obj/item/weapon/ammo/bshell + desc = "A weak beanbag shell." + name = "beanbag shell" + icon_state = "bshell" + +/obj/item/weapon/ammo/gshell + desc = "A 12gauge shell." + name = "12 gauge shell" + icon_state = "gshell" + /obj/item/weapon/ammo/a38 desc = "A speedloader that contains 7 .38 Special rounds." name = "38-Special ammo" @@ -483,6 +493,15 @@ throw_speed = 4 throw_range = 10 +/obj/item/weapon/gun/shotgun + name = "shotgun" + icon_state = "shotgun" + w_class = 4.0 + force = 7.0 + var/pumped = 0.0 + var/s1 = 0.0 + var/s2 = 0.0 + /obj/item/weapon/gun/energy name = "energy" var/charges = 10.0 diff --git a/code/game/jobs/jobprocs.dm b/code/game/jobs/jobprocs.dm index 7fcd7499616..c2849303697 100644 --- a/code/game/jobs/jobprocs.dm +++ b/code/game/jobs/jobprocs.dm @@ -417,6 +417,10 @@ src.equip_if_possible(new /obj/item/clothing/under/bartender(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit) + src.equip_if_possible(new /obj/item/weapon/ammo/bshell(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/ammo/bshell(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/ammo/bshell(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/ammo/bshell(src), slot_in_backpack) if ("Chef") src.equip_if_possible(new /obj/item/clothing/under/chef(src), slot_w_uniform) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 11af6f90664..0195a56a035 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -182,7 +182,9 @@ src.LL += new /obj/item/device/infra_sensor(src) src.LL += new /obj/item/weapon/handcuffs(src) src.LL += new /obj/item/weapon/ammo/a357(src) + src.LL += new /obj/item/weapon/ammo/gshell(src) src.LL += new /obj/item/weapon/ammo/a38(src) + src.LL += new /obj/item/weapon/ammo/bshell(src) // src.LL += new /obj/item/weapon/shield/riot(src) src.wires["Light Red"] = 0 src.wires["Dark Red"] = 0 diff --git a/code/game/objects/items/weapons/guns_ammo.dm b/code/game/objects/items/weapons/guns_ammo.dm index d4b6580973d..e68d351c735 100644 --- a/code/game/objects/items/weapons/guns_ammo.dm +++ b/code/game/objects/items/weapons/guns_ammo.dm @@ -4,6 +4,8 @@ PROJECTILE DEFINES PULSE RIFLE 357 AMMO 38 AMMO +SHOTGUN SHELLS +SHOTGUN REVOLVER DETECTIVES REVOLVER LASER GUN @@ -134,8 +136,6 @@ TELEPORT GUN - - // REVOLVER /obj/item/weapon/gun/revolver/examine() @@ -213,16 +213,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us if ((istype(H, /mob/living/carbon/human) && istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80))) M << "\red The helmet protects you from being hit hard in the head!" return - if ((user.a_intent == "hurt" && src.bullets > 0)) - if (!istype(H:r_hand, /obj/item/weapon/shield/riot) && prob(20)) - for(var/mob/O in viewers(M, null)) - if (O.client) O.show_message(text("\red [] has blocked []'s point-blank shot with the riot shield!", M, user), 1, "\red You hear a cracking sound", 2) - return - if (!istype(H:l_hand, /obj/item/weapon/shield/riot) && prob(20)) - for(var/mob/O in viewers(M, null)) - if (O.client) O.show_message(text("\red [] has blocked []'s point-blank shot with the riot shield!", M, user), 1, "\red You hear a cracking sound", 2) - return if (prob(20)) if (M.paralysis < 10) M.paralysis = 10 @@ -237,14 +228,6 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us for(var/mob/O in viewers(M, null)) if(O.client) O.show_message(text("\red [] has been shot point-blank by []!", M, user), 1, "\red You hear someone fall", 2) else - if (!istype(H:r_hand, /obj/item/weapon/shield/riot) && prob(40)) - for(var/mob/O in viewers(M, null)) - if (O.client) O.show_message(text("\red [] has blocked []'s pistolwhip with the riot shield!", M, user), 1, "\red You hear a cracking sound", 2) - return - if (!istype(H:l_hand, /obj/item/weapon/shield/riot) && prob(40)) - for(var/mob/O in viewers(M, null)) - if (O.client) O.show_message(text("\red [] has blocked []'s pistolwhip with the riot shield!", M, user), 1, "\red You hear a cracking sound", 2) - return if (prob(50)) if (M.paralysis < 60) M.paralysis = 60 @@ -261,6 +244,126 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us +// SHOTGUN + +/obj/item/weapon/gun/shotgun/examine() + set src in usr + + if (src.s1 >= 1 && src.s2 >= 1) + src.desc = "There are 2 shells left!" + if (src.s1 >= 1 && src.s2 == 0) + src.desc = "There are 1 shells left!" + if (src.s1 == 0 && src.s2 == 0) + src.desc = "There are 0 shells left!" + ..() + return + +// if s1 is 0, not loaded. 1 is beanbag, 2 is 12gauge. same as s2. + +/obj/item/weapon/gun/shotgun/attackby(obj/item/weapon/A as obj, mob/user as mob) + + if (istype(A, /obj/item/weapon/ammo/bshell)) + //var/obj/item/weapon/ammo/bshell/A = B + if ((src.s1 + src.s2) >= 2) + user << "\blue It's already fully loaded!" + return 1 + else + user << "\blue You load the shell into the shotgun." + if (src.s1 == 0) + del(A) + src.s1 = 1 + return 1 + else if (src.s2 == 0) + del(A) + src.s2 = 1 + return 1 + return 1 + return 1 + + else if (istype(A, /obj/item/weapon/ammo/gshell)) + //var/obj/item/weapon/ammo/gshell/A = B + if ((src.s1 + src.s2) >= 2) + user << "\blue It's already fully loaded!" + return 1 + else + user << "\blue You load the shell into the shotgun." + if (src.s1 == 0) + del(A) + src.s1 = 2 + return 1 + else if (src.s2 == 0) + del(A) + src.s2 = 2 + return 1 + return 1 + return 1 + return 1 + + +/obj/item/weapon/gun/shotgun/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) + if (flag) + return + if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") + usr << "\red You don't have the dexterity to do this!" + return + if (src.pumped == 0) + for(var/mob/O in viewers(user, null)) + O.show_message(text("\red [] pumps the shotgun!", user), 1, "\red You hear pumping", 2) + playsound(user, 'shotgunpump.ogg', 100, 1) + src.pumped++ + return + src.add_fingerprint(user) + if ((src.s1 + src.s2) < 1) + user.show_message("\red *click* *click*", 2) + return + playsound(user, 'Gunshot.ogg', 100, 1) + for(var/mob/O in viewers(user, null)) + O.show_message(text("\red [] fires a shotgun at []!", user, target), 1, "\red You hear a gunshot", 2) + var/turf/T = user.loc + var/turf/U = (istype(target, /atom/movable) ? target.loc : target) + if ((!( U ) || !( T ))) + return + while(!( istype(U, /turf) )) + U = U.loc + if (!( istype(T, /turf) )) + return + if (U == T) + if (src.s1 == 1) + user.bullet_act(PROJECTILE_WEAKBULLET) + else if (src.s1 == 2) + user.bullet_act(PROJECTILE_BULLET) + return + if (src.s1 == 1) + var/obj/bullet/A = new /obj/bullet/weakbullet( user.loc ) + src.pumped-- + src.s1 = src.s2 + src.s2 = 0 + A.current = U + A.yo = U.y - T.y + A.xo = U.x - T.x + user.next_move = world.time + 4 + spawn( 0 ) + A.process() + if (!istype(U, /turf)) + del(A) + return + else if (src.s1 == 2) + var/obj/bullet/A = new /obj/bullet( user.loc ) + src.pumped-- + src.s1 = src.s2 + src.s2 = 0 + A.current = U + A.yo = U.y - T.y + A.xo = U.x - T.x + user.next_move = world.time + 4 + spawn( 0 ) + A.process() + if (!istype(U, /turf)) + del(A) + return + return + + // DETECTIVE REVOLVER diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index cfe375ae658..7d96b291419 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -343,6 +343,59 @@ src.updatehealth() src.stuttering += 5 src.drowsyness += 5 + else if(flag == PROJECTILE_WEAKBULLET) + var/d = 14 + if (istype(src.wear_suit, /obj/item/clothing/suit/armor)) + if (prob(70)) + show_message("\red Your armor absorbs the hit!", 4) + return + else + if (prob(40)) + show_message("\red Your armor only softens the hit!", 4) + if (prob(20)) + d = d / 2 + d = d / 4 + else + if (istype(src.wear_suit, /obj/item/clothing/suit/swat_suit)) + if (prob(90)) + show_message("\red Your armor absorbs the blow!", 4) + return + else + if (prob(90)) + show_message("\red Your armor only softens the blow!", 4) + if (prob(60)) + d = d / 2 + d = d / 5 + if (istype(src.r_hand, /obj/item/weapon/shield/riot)) + if (prob(90)) + show_message("\red Your shield absorbs the blow!", 4) + return + else + if (prob(40)) + show_message("\red Your shield only softens the blow!", 4) + if (prob(60)) + d = d / 2 + d = d / 5 + else + if (istype(src.l_hand, /obj/item/weapon/shield/riot)) + if (prob(90)) + show_message("\red Your shield absorbs the blow!", 4) + return + else + if (prob(40)) + show_message("\red Your shield only softens the blow!", 4) + if (prob(60)) + d = d / 2 + d = d / 5 + if (src.stat != 2) + var/organ = src.organs[ran_zone("chest")] + if (istype(organ, /datum/organ/external)) + var/datum/organ/external/temp = organ + temp.take_damage(d, 0) + src.UpdateDamageIcon() + src.updatehealth() + if(src.weakened <= 5) src.weakened = 5 + return return /mob/living/carbon/human/ex_act(severity) diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 10ad956a0446fa76e39e2d457658d67f0e1d2e66..df5c553f2ef46d70398ced1a6bb44571717b88ed 100644 GIT binary patch delta 1449 zcmV;a1y=g5391W!iBL{Q4GJ0x0000DNk~Le0002M0001>2m=5B0B!b@ZvX%QW>8F2 zMZmzo00030nKMmIP5;a@06qX7X#+El5*T|108sz{HvoV@0Dy%u*WX}#T@$vC4uAjv znIR!YBLE^OD>ywsCu(#fUuiRXj!slqe#g^>jgcQxS{OqmNpd(XWJ?FIZcBoUGQhyV z{fQSs00001bW%=J06^y0W&i*H(2=1Of7DG6f*>5n@iV*%re~W^C6_Ku*F5A~Xcqs( zP16CZ_3pDgb&1~%*k@yWVT9sP9qUGvr%wU!SV~aUkFC z)R7rd>zgbS^&>sV#3#6PY=+djJOj`kh!yD4(H?dBXa%9VFp#4?5N~(tSdVV{cm<)l z9D(=1t>ZoVt{{~|j~)>3QH&nkw?`3raOWN^(Sx)-TA&AsdqklJVLc+ye}ljtsbi3h z-x6u--7!G+uGICLM|@*QTW>dZtJdY-b=^9F$J;=iVHk#4i~?doJ-GfIKv^uN2iLzZ zN{C`1J%WKf*yCa$-C)iJL`(otETtRu&B^D*1f`>Zq`FbxoP1tRU}F}LQa9_Hk9}?xpaNVA)*7(fZ_m9^mv zoA7-8-f%w8FbwlBxHcN8_2BwB-w)C!a?Z{_CAtAZ`MyW}+0X%_bS=1Cx(Sl5@d@X^+aCdHKrEm3yESmRwg%|r z`2M*P8)7e^(LwNItKIpt^V+FuiJj&gy`%guV^v`MZkXNAh_!1l7gMrHj{` z4j2Y5%7B)?YY{w{&uc>vy&Zz<;$<6<9q?a5-APO+-*&+b|23mQRPzk30}2J{wLPt8)Ltt+7XedwQ{-VcQGci;o4>6%j@f4{X* zHISqZ8@O5ne@1n1g2=i)W~9E6{N1g?Esm?(*CD3?yG3IV=-0C=2@l+OynFbs#!?NgNPtn9DL#fxmn z4(=6X*yswI8*Nd1d#5{jko|5+_#osNGvi(DRkn?!cpB}yIY|>K zIySe?FNyQ5=Q#}0yx0_*vDbkV+E_Q&Vkxe+9e9a<$Q?}PFqy$*3X=&;#xNOu$QVPh z*4QYR8ca2|I_wl6s#vA$WnI6Um~}t4n(di~$-mZn6QY+8yM)Lk#4RCe2{B9m#fGYC z%I_<911n|_R;6m9u>b%ABuPX;RCt{2o6&lrFc3zKNLIFN*|oM-x+{JEr`#kU1TvWz z6^Y55PkYgmi<<8rW-xTMA_#&Y2!bF8f*=TjAP9mWi06huB;*MKgRKEFmW(F|47Onz z1WUwwlJoqB#Q6PoTPS|U>C=U6HsB1x67hcIoP!mT=Pxg1%dZ%H2S>IhRxbhs!BX*l zq+KBV6;BwiBJ?6anIm9PdoRR*#o-}K8&LqCZ^QTQA&bBMMk|C@6`H{3^fEvuQ^&EbK?u=Rm!_2L61qJ}RU_WWJmpNob&c>3}ZnHFj@;opl4d0c#kt z_WKL{G@v1RV91($KF&pbAU%YOgt@lK&up;ri>>$ul+J>d!2mUGGookWv3w)G5uh-`v*yBgx zxB7wkdq{9SrVG$%!ZcvfdM{LfvHZ;A#{~j;{G9Jrum6Q}_mJRvOdFt6(-hxDPt!Ex zfW_;*usvxqx5u9pnT$v?c#Y+I$b)-KAE5HPD0`Zd5wJ+TA2~LmC*W5B^pHpQ7zSQp zhXBRy2~WCfIJX~3hwdwld$J)P0l;M1& M07*qoM6N<$g2K)uSpWb4 diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index aa71a5d4cc5cb1aa909b8667fb5a3381809cbf47..176d0a465e9fb85f33653584c992b29bb7f43a96 100644 GIT binary patch literal 8191 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 literal 6479 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