From 4eacb7ae39e7d8b2b162bd8b7ed41f42bbcceeac Mon Sep 17 00:00:00 2001 From: "cagerrin@gmail.com" Date: Tue, 1 Mar 2011 08:29:43 +0000 Subject: [PATCH] Added code for C96 and P08, since Uhangi is lazy. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1147 316c924e-a436-60f5-8080-3fe189b3f50e --- code/defines/obj/weapon.dm | 58 +++++- code/game/objects/items/weapons/guns_ammo.dm | 201 ++++++++++++++++++- icons/obj/ammo.dmi | Bin 1773 -> 1882 bytes icons/obj/gun.dmi | Bin 22883 -> 22935 bytes 4 files changed, 237 insertions(+), 22 deletions(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 0d05bd0112c..767beb163e0 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -104,19 +104,31 @@ throw_range = 20 /obj/item/weapon/ammo/a357 - desc = "There are 7 bullets left!" + desc = "There are 7 rounds left!" name = "ammo-357" icon_state = "357-7" amount_left = 7.0 /obj/item/weapon/ammo/a45 - desc = "There are 10 bullets left!" + desc = "There are 10 rounds left!" name = "ammo-45" icon_state = "45-10" amount_left = 10.0 +/obj/item/weapon/ammo/a763m + desc = "There are 9 rounds left!" + name = "ammo-7.63x25" + icon_state = "7.63x25m-9" + amount_left = 9.0 + +/obj/item/weapon/ammo/a9x19p + desc = "There are 8 rounds left!" + name = "ammo-9x19" + icon_state = "9x19p-8" + amount_left = 8.0 + /obj/item/weapon/ammo/assaultmag - desc = "There are 30 bullets left!" + desc = "There are 30 rounds left!" name = "5.56x45mm NATO" icon_state = "5.56" amount_left = 30.0 @@ -685,8 +697,32 @@ icon_state = "mateba" origin_tech = "combat=3;materials=2" +/obj/item/weapon/gun/c96 + desc = "There are 0 rounds left. Uses 7.63x25 Mauser" + name = "c96" + icon_state = "c96" + var/obj/item/weapon/ammo/a763m/magazine + w_class = 3.0 + throw_speed = 2 + throw_range = 10 + force = 12.0 + m_amt = 2000 +// origin_tech = "combat=2;materials=2" + +/obj/item/weapon/gun/p08 + desc = "There are 0 rounds left. Uses 9x19 Parabellum" + name = "p08" + icon_state = "p08empty" + var/obj/item/weapon/ammo/a9x19p/magazine + w_class = 3.0 + throw_speed = 2 + throw_range = 10 + force = 16.0 + m_amt = 2000 +// origin_tech = "combat=2;materials=2" + /obj/item/weapon/gun/glock - desc = "There are 0 bullets left. Uses .45 ACP" + desc = "There are 0 rounds left. Uses .45 ACP" name = "glock" icon_state = "glock" var/obj/item/weapon/ammo/a45/magazine @@ -695,10 +731,10 @@ throw_range = 10 force = 6.0 m_amt = 2000 -// origin_tech = "combat=3;materials=2" +// origin_tech = "combat=2;materials=2" /obj/item/weapon/gun/m1911 - desc = "There are 0 bullets left. Uses .45 ACP" + desc = "There are 0 rounds left. Uses .45 ACP" name = "m1911" icon_state = "m1911" var/obj/item/weapon/ammo/a45/magazine @@ -707,10 +743,10 @@ throw_range = 10 force = 14.0 m_amt = 2000 -// origin_tech = "combat=3;materials=2" +// origin_tech = "combat=2;materials=2" /obj/item/weapon/gun/carbine - desc = "There are 0 bullets left. Uses 5.56x45mm NATO" + desc = "There are 0 rounds left. Uses 5.56x45mm NATO" name = "carbine" icon_state = "carbinenomag" var/obj/item/weapon/ammo/assaultmag/magazine @@ -720,10 +756,10 @@ throw_range = 10 force = 6.0 m_amt = 2000 -// origin_tech = "combat=3;materials=2" +// origin_tech = "combat=2;materials=2" /obj/item/weapon/gun/ak331 - desc = "There are 0 bullets left. Uses 5.56x45mm NATO" + desc = "There are 0 rounds left. Uses 5.56x45mm NATO" name = "ak331" icon_state = "ak331nomag" var/obj/item/weapon/ammo/assaultmag/magazine @@ -733,7 +769,7 @@ throw_range = 10 force = 18.0 m_amt = 2000 -// origin_tech = "combat=3;materials=2" +// origin_tech = "combat=2;materials=2" /obj/item/weapon/gun/detectiverevolver desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds." diff --git a/code/game/objects/items/weapons/guns_ammo.dm b/code/game/objects/items/weapons/guns_ammo.dm index 2d9affff796..3931517067d 100644 --- a/code/game/objects/items/weapons/guns_ammo.dm +++ b/code/game/objects/items/weapons/guns_ammo.dm @@ -1152,16 +1152,195 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us -//GLOCK +//Mauser C96 + +/obj/item/weapon/gun/c96/examine() + set src in usr + if (src.magazine) + if (istype(src.magazine, /obj/item/weapon/ammo/a763m)) + src.desc = text("There are [] round\s left! Uses 7.63x25 Mauser", src.magazine.amount_left) + else + src.desc = text("There are 0 rounds left! Uses 7.63x25 Mauser") + ..() + return + +/obj/item/weapon/gun/c96/verb/eject() + set src in usr + if (src.magazine) + if (istype(src.magazine, /obj/item/weapon/ammo/a763m)) + if (istype(src.loc, /mob)) + var/obj/item/W = src.loc:equipped() + var/emptyHand = (W == null) + if(emptyHand) + src.magazine.DblClick() + if(!istype(src.magazine.loc, /obj/item/weapon/gun/c96)) + src.magazine = null + else + src.magazine.loc = src.loc + src.magazine = null + ..() + return + +/obj/item/weapon/ammo/a763m/examine() + set src in usr + src.desc = text("There are [] round\s left!", src.amount_left) + ..() + return + +/obj/item/weapon/gun/c96/attackby(obj/item/weapon/ammo/a763m/A as obj, mob/user as mob) + ..() + + if (istype(A, /obj/item/weapon/ammo/a763m)) + if (src.magazine) + user << "\blue There is already a magazine in!" + return 1 + user.drop_item() + A.loc = src + flick("c96load",src) + src.magazine = A + return 1 + return + +/obj/item/weapon/gun/c96/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) + + if (flag) + return + if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") + usr << "\red You don't have the dexterity to do this!" + return + src.add_fingerprint(user) + if (src.magazine.amount_left < 1) + user.show_message("\red *click* *click*", 2) + return + playsound(user, 'Gunshot.ogg', 100, 1) + src.magazine.amount_left-- + for(var/mob/O in viewers(user, null)) + O.show_message(text("\red [] fires the c96 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) + user.bullet_act(PROJECTILE_BULLET) + return + var/obj/bullet/weakbullet/A = new /obj/bullet/weakbullet( user.loc ) + if (!istype(U, /turf)) + del(A) + return + 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() + return + return + + +//Luger P08 + + +/obj/item/weapon/gun/p08/examine() + set src in usr + if (src.magazine) + if (istype(src.magazine, /obj/item/weapon/ammo/a9x19p)) + src.desc = text("There are [] round\s left! Uses 9x19 Parabellum", src.magazine.amount_left) + else + src.desc = text("There are 0 rounds left! Uses 9x19 Parabellum") + ..() + return + +/obj/item/weapon/gun/p08/verb/eject() + set src in usr + if (src.magazine) + if (istype(src.magazine, /obj/item/weapon/ammo/a9x19p)) + if (istype(src.loc, /mob)) + var/obj/item/W = src.loc:equipped() + var/emptyHand = (W == null) + if(emptyHand) + src.magazine.DblClick() + if(!istype(src.magazine.loc, /obj/item/weapon/gun/p08)) + src.magazine = null + else + src.magazine.loc = src.loc + src.magazine = null + ..() + return + +/obj/item/weapon/ammo/a9x19p/examine() + set src in usr + src.desc = text("There are [] round\s left!", src.amount_left) + ..() + return + +/obj/item/weapon/gun/p08/attackby(obj/item/weapon/ammo/a9x19p/A as obj, mob/user as mob) + ..() + + if (istype(A, /obj/item/weapon/ammo/a9x19p)) + if (src.magazine) + user << "\blue There is already a magazine in!" + return 1 + user.drop_item() + A.loc = src + src.magazine = A + icon_state = "p08" + return 1 + return + +/obj/item/weapon/gun/p08/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) + + if (flag) + return + if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") + usr << "\red You don't have the dexterity to do this!" + return + src.add_fingerprint(user) + if (src.magazine.amount_left < 1) + user.show_message("\red *click* *click*", 2) + return + playsound(user, 'Gunshot.ogg', 100, 1) + src.magazine.amount_left-- + for(var/mob/O in viewers(user, null)) + O.show_message(text("\red [] fires the p08 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) + user.bullet_act(PROJECTILE_BULLET) + return + var/obj/bullet/weakbullet/A = new /obj/bullet/weakbullet( user.loc ) + if (!istype(U, /turf)) + del(A) + return + 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() + return + return + + +//GLOCK G21 /obj/item/weapon/gun/glock/examine() set src in usr if (src.magazine) if (istype(src.magazine, /obj/item/weapon/ammo/a45)) - src.desc = text("There are [] bullet\s left! Uses .45 ACP", src.magazine.amount_left) + src.desc = text("There are [] round\s left! Uses .45 ACP", src.magazine.amount_left) else - src.desc = "There are 0 bullets left! Uses .45 ACP" + src.desc = "There are 0 rounds left! Uses .45 ACP" ..() return @@ -1184,13 +1363,13 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us /obj/item/weapon/ammo/a45/examine() set src in usr - src.desc = text("There are [] bullet\s left!", src.amount_left) + src.desc = text("There are [] round\s left!", src.amount_left) ..() return /obj/item/weapon/ammo/assaultmag/examine() set src in usr - src.desc = text("There are [] bullet\s left!", src.amount_left) + src.desc = text("There are [] round\s left!", src.amount_left) ..() return @@ -1250,9 +1429,9 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us set src in usr if (src.magazine) if (istype(src.magazine, /obj/item/weapon/ammo/a45)) - src.desc = text("There are [] bullet\s left! Uses .45 ACP", src.magazine.amount_left) + src.desc = text("There are [] round\s left! Uses .45 ACP", src.magazine.amount_left) else - src.desc = "There are 0 bullets left! Uses .45 ACP" + src.desc = "There are 0 rounds left! Uses .45 ACP" ..() return @@ -1329,9 +1508,9 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us set src in usr if (src.magazine) if (istype(src.magazine, /obj/item/weapon/ammo/assaultmag)) - src.desc = text("There are [] bullet\s left! Uses 5.56x45mm NATO", src.magazine.amount_left) + src.desc = text("There are [] round\s left! Uses 5.56x45mm NATO", src.magazine.amount_left) else - src.desc = "There are 0 bullets left! Uses 5.56x45mm NATO" + src.desc = "There are 0 rounds left! Uses 5.56x45mm NATO" ..() return @@ -1411,9 +1590,9 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us set src in usr if (src.magazine) if (istype(src.magazine, /obj/item/weapon/ammo/assaultmag)) - src.desc = text("There are [] bullet\s left! Uses 5.56x45mm NATO", src.magazine.amount_left) + src.desc = text("There are [] round\s left! Uses 5.56x45mm NATO", src.magazine.amount_left) else - src.desc = "There are 0 bullets left! Uses 5.56x45mm NATO" + src.desc = "There are 0 rounds left! Uses 5.56x45mm NATO" ..() return diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index ee870ccb681937c86c58146a56ac367c6572f35d..17750059b4f88a3c620a2bb9c72b458c4b687bbe 100644 GIT binary patch delta 1761 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 qZ%Rr-p!RfgE$c)n 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