From d4055a89af2a7ecb034ca5917ed936ed9f36297b Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 12 Dec 2013 22:10:33 -0500 Subject: [PATCH] Buckshot whee! --- code/__HELPERS/maths.dm | 28 ++++++++- code/game/mecha/equipment/weapons/weapons.dm | 2 +- .../admin/verbs/striketeam_syndicate.dm | 2 +- .../living/simple_animal/hostile/syndicate.dm | 2 +- code/modules/projectiles/ammunition.dm | 16 ++++-- code/modules/projectiles/ammunition/boxes.dm | 28 ++++++++- .../modules/projectiles/ammunition/bullets.dm | 31 ++++++---- .../projectiles/ammunition/magazines.dm | 22 ++++--- code/modules/projectiles/gun.dm | 37 ++++++++++++ code/modules/projectiles/guns/projectile.dm | 5 +- .../projectiles/guns/projectile/automatic.dm | 14 +---- .../projectiles/guns/projectile/pistol.dm | 31 +++------- .../projectiles/guns/projectile/revolver.dm | 54 +++++------------- .../projectiles/guns/projectile/shotgun.dm | 26 ++------- code/modules/projectiles/projectile.dm | 4 ++ .../modules/projectiles/projectile/bullets.dm | 26 ++++++++- icons/obj/ammo.dmi | Bin 5606 -> 5678 bytes icons/obj/gun.dmi | Bin 41163 -> 42077 bytes 18 files changed, 192 insertions(+), 136 deletions(-) diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm index b174147d583..6be724fbd99 100644 --- a/code/__HELPERS/maths.dm +++ b/code/__HELPERS/maths.dm @@ -111,4 +111,30 @@ var/const/Sqrt2 = 1.41421356 /proc/Wrap(val, min, max) var/d = max - min var/t = Floor((val - min) / d) - return val - (t * d) \ No newline at end of file + return val - (t * d) + +//converts a uniform distributed random number into a normal distributed one +//since this method produces two random numbers, one is saved for subsequent calls +//(making the cost negligble for every second call) +//This will return +/- decimals, situated about mean with standard deviation stddev +//68% chance that the number is within 1stddev +//95% chance that the number is within 2stddev +//98% chance that the number is within 3stddev...etc +var/gaussian_next +#define ACCURACY 10000 +/proc/gaussian(mean, stddev) + var/R1;var/R2;var/working + if(gaussian_next != null) + R1 = gaussian_next + gaussian_next = null + else + do + R1 = rand(-ACCURACY,ACCURACY)/ACCURACY + R2 = rand(-ACCURACY,ACCURACY)/ACCURACY + working = R1*R1 + R2*R2 + while(working >= 1 || working==0) + working = sqrt(-2 * log(working) / working) + R1 *= working + gaussian_next = R2 * working + return (mean + stddev * R1) +#undef ACCURACY \ No newline at end of file diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 120eb234870..69adf858b14 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -197,7 +197,7 @@ name = "LBX AC 10 \"Scattershot\"" icon_state = "mecha_scatter" equip_cooldown = 20 - projectile = /obj/item/projectile/bullet/midbullet + projectile = /obj/item/projectile/bullet/midbullet10 fire_sound = 'sound/weapons/Gunshot.ogg' projectiles = 40 projectile_energy_cost = 25 diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm index e71fe284608..5cff60f1e93 100644 --- a/code/modules/admin/verbs/striketeam_syndicate.dm +++ b/code/modules/admin/verbs/striketeam_syndicate.dm @@ -162,7 +162,7 @@ var/global/sent_syndicate_strike_team = 0 equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(src), slot_l_store) equip_to_slot_or_del(new /obj/item/weapon/grenade/empgrenade(src), slot_r_store) equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen(src), slot_s_store) - equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/silenced(src), slot_belt) + equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/m2411(src), slot_belt) equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle(src), slot_r_hand) //Will change to something different at a later time -- Superxpdude diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 520c5016f09..aa62cfa6a30 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -108,7 +108,7 @@ icon_living = "syndicateranged" casingtype = /obj/item/ammo_casing/a12mm projectilesound = 'sound/weapons/Gunshot_smg.ogg' - projectiletype = /obj/item/projectile/bullet/midbullet2 + projectiletype = /obj/item/projectile/bullet/midbullet12 weapon1 = /obj/item/weapon/gun/projectile/automatic/c20r diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 8d08a7abab1..eddf50c510d 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -10,6 +10,9 @@ var/caliber = "" //Which kind of guns it can be loaded into var/projectile_type = ""//The bullet type to create when New() is called var/obj/item/projectile/BB = null //The loaded bullet + var/buck = 0 + var/deviation = 0 + /obj/item/ammo_casing/New() ..() @@ -30,8 +33,8 @@ //Boxes of ammo /obj/item/ammo_box - name = "ammo box (.357)" - desc = "A box of ammo" + name = "ammo box (generic)" + desc = "A box of ammo?" icon_state = "357" icon = 'icons/obj/ammo.dmi' flags = FPRINT | TABLEPASS | CONDUCT @@ -43,11 +46,11 @@ throw_speed = 4 throw_range = 10 var/list/stored_ammo = list() - var/ammo_type = "/obj/item/ammo_casing" + var/obj/item/ammo_casing/ammo_type var/max_ammo = 7 var/multiple_sprites = 0 var/caliber = "" - + var/multiload = 1 /obj/item/ammo_box/New() for(var/i = 1, i <= max_ammo, i++) stored_ammo += new ammo_type(src) @@ -77,10 +80,11 @@ if(istype(A, /obj/item/ammo_box)) var/obj/item/ammo_box/AM = A for(var/obj/item/ammo_casing/AC in AM.stored_ammo) - if(give_round(AC)) + var/didload = give_round(AC) + if(didload) AM.stored_ammo -= AC num_loaded++ - else + if(!multiload || !didload) break if(istype(A, /obj/item/ammo_casing)) var/obj/item/ammo_casing/AC = A diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index 89ac19ed71b..f10cb786e25 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -37,7 +37,7 @@ icon_state = "9mm" origin_tech = "combat=2" ammo_type = "/obj/item/ammo_casing/c9mm" - max_ammo = 30 + max_ammo = 36 @@ -46,7 +46,7 @@ icon_state = "9mm" origin_tech = "combat=2" ammo_type = "/obj/item/ammo_casing/c45" - max_ammo = 30 + max_ammo = 32 @@ -55,4 +55,26 @@ icon_state = "9mm" origin_tech = "combat=2" ammo_type = "/obj/item/ammo_casing/a12mm" - max_ammo = 30 + max_ammo = 40 + +/obj/item/ammo_box/shotgun + name = "Ammunition Box (slug)" + icon_state = "9mm" + origin_tech = "combat=2" + ammo_type = /obj/item/ammo_casing/shotgun + max_ammo = 8 + m_amt = 100000 + +/obj/item/ammo_box/shotgun/buck + name = "Ammunition Box (buckshot)" + ammo_type = /obj/item/ammo_casing/shotgun/buck + +/obj/item/ammo_box/shotgun/stun + name = "Ammunition Box (stun shells)" + ammo_type = /obj/item/ammo_casing/shotgun/stunshell + m_amt = 20000 + +/obj/item/ammo_box/shotgun/beanbag + name = "Ammunition Box (beanbag shells)" + ammo_type = /obj/item/ammo_casing/shotgun/beanbag + m_amt = 4000 \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index 87083bf1920..61ea69a79ad 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -29,45 +29,54 @@ /obj/item/ammo_casing/c38 desc = "A .38 bullet casing." caliber = "38" - projectile_type = "/obj/item/projectile/bullet/weakbullet" + projectile_type = "/obj/item/projectile/bullet/rubberbullet" /obj/item/ammo_casing/c9mm desc = "A 9mm bullet casing." caliber = "9mm" - projectile_type = "/obj/item/projectile/bullet/midbullet2" + projectile_type = "/obj/item/projectile/bullet/midbullet9" /obj/item/ammo_casing/c45 desc = "A .45 bullet casing." caliber = ".45" - projectile_type = "/obj/item/projectile/bullet/midbullet" + projectile_type = "/obj/item/projectile/bullet/midbullet45" /obj/item/ammo_casing/c10mm desc = "A 10mm bullet casing." caliber = "10mm" - projectile_type = "obj/item/projectile/bullet/midbullet2" + projectile_type = "obj/item/projectile/bullet/midbullet10" /obj/item/ammo_casing/a12mm desc = "A 12mm bullet casing." caliber = "12mm" - projectile_type = "/obj/item/projectile/bullet/midbullet2" + projectile_type = "/obj/item/projectile/bullet/midbullet12" /obj/item/ammo_casing/shotgun name = "shotgun shell" desc = "A 12 gauge shell." - icon_state = "gshell" + icon_state = "slshell" caliber = "shotgun" - projectile_type = "/obj/item/projectile/bullet" + projectile_type = "/obj/item/projectile/bullet/slug" m_amt = 12500 +/obj/item/ammo_casing/shotgun/buck + name = "buckshot shell" + desc = "A 12 gauge buckshot shell." + icon_state = "gshell" + projectile_type = /obj/item/projectile/bullet/buck + buck = 4 + deviation = 1 /obj/item/ammo_casing/shotgun/birdshot - name = "shotgun shell" + name = "birdshot shell" desc = "A shotgun shell full of birdshot." icon_state = "blshell" - projectile_type = "/obj/item/projectile/bullet/midbullet" + projectile_type = "/obj/item/projectile/bullet/rubberbullet" + buck = 4 + deviation = 1 m_amt = 6000 @@ -75,14 +84,14 @@ name = "beanbag shell" desc = "A weak beanbag shell." icon_state = "bshell" - projectile_type = "/obj/item/projectile/bullet/weakbullet" + projectile_type = "/obj/item/projectile/bullet/rubberbullet" m_amt = 500 /obj/item/ammo_casing/shotgun/fakebeanbag name = "beanbag shell" desc = "A weak beanbag shell." icon_state = "bshell" - projectile_type = "/obj/item/projectile/bullet/weakbullet/booze" + projectile_type = "/obj/item/projectile/bullet/rubberbullet/booze" m_amt = 12500 /obj/item/ammo_casing/shotgun/stunshell diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 919c48b0bda..728cf66a00f 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -6,6 +6,7 @@ caliber = "357" max_ammo = 7 + /obj/item/ammo_box/magazine/internal/cylinder/ammo_count(var/countempties = 1) if (!countempties) var/boolets = 0 @@ -23,7 +24,7 @@ ammo_type = "/obj/item/ammo_casing/a357" caliber = "357" max_ammo = 6 - + multiload = 0 /obj/item/ammo_box/magazine/internal/cylinder/rus357/New() stored_ammo += new ammo_type(src) @@ -40,21 +41,21 @@ ammo_type = "/obj/item/ammo_casing/shotgun/beanbag" caliber = "shotgun" max_ammo = 4 - + multiload = 0 /obj/item/ammo_box/magazine/internal/shotcom name = "combat shotgun internal magazine" desc = "Oh god, this shouldn't be here" - ammo_type = "/obj/item/ammo_casing/shotgun" + ammo_type = "/obj/item/ammo_casing/shotgun/buck" caliber = "shotgun" max_ammo = 8 - + multiload = 0 /obj/item/ammo_box/magazine/internal/cylinder/dualshot name = "double-barrel shotgun internal magazine" desc = "This doesn't even exist" ammo_type = "/obj/item/ammo_casing/shotgun/beanbag" caliber = "shotgun" max_ammo = 2 - + multiload = 0 ///////////EXTERNAL MAGAZINES//////////////// /obj/item/ammo_box/magazine/m9mm name = "magazine (9mm)" @@ -97,16 +98,13 @@ ..() icon_state = "[initial(icon_state)]-[round(ammo_count(),2)]" -/obj/item/ammo_box/magazine/sm45 +/obj/item/ammo_box/magazine/m45 name = "magazine (.45)" - icon_state = "9x19p" + icon_state = "45" ammo_type = "/obj/item/ammo_casing/c45" caliber = ".45" - max_ammo = 12 - -/obj/item/ammo_box/magazine/sm45/update_icon() - ..() - icon_state = "[initial(icon_state)]-[ammo_count() ? "8" : "0"]" + max_ammo = 8 + multiple_sprites = 1 /obj/item/ammo_box/magazine/uzim45 name = "Uzi magazine (.45)" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 75f0388981c..7df0bfee5a0 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -20,6 +20,7 @@ var/silenced = 0 var/recoil = 0 var/clumsy_check = 1 + var/obj/item/ammo_casing/chambered = null // The round (not bullet) that is in the chamber. THIS MISPLACED ITEM BROUGHT TO YOU BY HACKY BUCKSHOT. var/tmp/list/mob/living/target //List of who yer targeting. var/tmp/lock_time = -100 var/tmp/mouthshoot = 0 ///To stop people from suiciding twice... >.> @@ -48,6 +49,11 @@ for(var/obj/O in contents) O.emp_act(severity) + proc/prepare_shot(var/obj/item/projectile/proj) //Transfer properties from the gun to the bullet + proj.shot_from = src + proj.silenced = silenced + return + /obj/item/weapon/gun/afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) if(flag) return //we're placing gun on a table or in backpack if(istype(target, /obj/machinery/recharger) && istype(src, /obj/item/weapon/gun/energy)) return//Shouldnt flag take care of this? @@ -125,6 +131,12 @@ "You fire [src][reflex ? "by reflex":""]!", \ "You hear a [istype(in_chamber, /obj/item/projectile/beam) ? "laser blast" : "gunshot"]!") + if (istype(in_chamber, /obj/item/projectile/bullet/blank)) // A hacky way of making blank shotgun shells work again. Honk. + in_chamber.delete() + in_chamber = null + return + + in_chamber.original = target in_chamber.loc = get_turf(user) in_chamber.starting = get_turf(user) @@ -144,6 +156,31 @@ in_chamber.xo += rand(-1,1) + if(chambered) // Beep boop buckshot + var/target_x = targloc.x + var/target_y = targloc.y + var/target_z = targloc.z + if(in_chamber) + in_chamber.process() + while(chambered.buck > 0) + var/dx = round(gaussian(0,chambered.deviation),1) + var/dy = round(gaussian(0,chambered.deviation),1) + targloc = locate(target_x+dx, target_y+dy, target_z) + if(!targloc || targloc == curloc) + break + in_chamber = new chambered.projectile_type() + prepare_shot(in_chamber) + in_chamber.original = target + in_chamber.loc = get_turf(user) + in_chamber.starting = get_turf(user) + in_chamber.current = curloc + in_chamber.yo = targloc.y - curloc.y + in_chamber.xo = targloc.x - curloc.x + if(in_chamber) + in_chamber.process() + chambered.buck-- + + if(params) var/list/mouse_control = params2list(params) if(mouse_control["icon-x"]) diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index bf0f08676c6..e0ae69404bd 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -10,10 +10,9 @@ w_class = 3.0 m_amt = 1000 recoil = 1 - var/ammo_type = "/obj/item/ammo_casing/c10mm" var/mag_type = "/obj/item/ammo_box/magazine/m10mm" //Removes the need for max_ammo and caliber info var/obj/item/ammo_box/magazine/magazine - var/obj/item/ammo_casing/chambered = null // The round (not bullet) that is in the chamber. +// var/obj/item/ammo_casing/chambered = null // The round (not bullet) that is in the chamber. @@ -59,7 +58,7 @@ user.remove_from_mob(AM) magazine = AM magazine.loc = src - user << "You load a new magazine into \the [src]!" + user << "You load a new magazine into \the [src]." chamber_round() A.update_icon() update_icon() diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 1d3e576584e..442fbf6625d 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -4,7 +4,6 @@ icon_state = "saber" //ugly w_class = 3.0 origin_tech = "combat=4;materials=2" - ammo_type = "/obj/item/ammo_casing/c9mm" automatic = 1 mag_type = "/obj/item/ammo_box/magazine/msmg9mm" var/alarmed = 0 @@ -30,7 +29,6 @@ w_class = 3.0 origin_tech = "combat=5;materials=2;syndicate=8" - ammo_type = "/obj/item/ammo_casing/c45" mag_type = "/obj/item/ammo_box/magazine/uzim45" isHandgun() @@ -44,20 +42,13 @@ item_state = "c20r" w_class = 3.0 origin_tech = "combat=5;materials=2;syndicate=8" - ammo_type = "/obj/item/ammo_casing/a12mm" mag_type = "/obj/item/ammo_box/magazine/m12mm" fire_sound = 'sound/weapons/Gunshot_smg.ogg' -/obj/item/weapon/gun/projectile/automatic/c20r/New() - ..() - update_icon() - return - /obj/item/weapon/gun/projectile/automatic/c20r/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) ..() if(!chambered && !get_ammo() && !alarmed) playsound(user, 'sound/weapons/smg_empty_alarm.ogg', 40, 1) - update_icon() alarmed = 1 return @@ -69,13 +60,12 @@ /obj/item/weapon/gun/projectile/automatic/l6_saw name = "\improper L6 SAW" - desc = "A rather traditionally made light machine gun with a pleasantly lacquered wooden pistol grip. Has 'Aussec Armoury- 2531' engraved on the reciever" + desc = "A rather traditionally made medium machine gun with a pleasantly lacquered wooden pistol grip. Has 'Aussec Armoury- 2531' engraved on the reciever" icon_state = "l6closed100" item_state = "l6closedmag" w_class = 4 slot_flags = 0 origin_tech = "combat=5;materials=1;syndicate=2" - ammo_type = "/obj/item/ammo_casing/a762" mag_type = "/obj/item/ammo_box/magazine/m762" fire_sound = 'sound/weapons/Gunshot_smg.ogg' @@ -118,7 +108,7 @@ /obj/item/weapon/gun/projectile/automatic/l6_saw/attackby(var/obj/item/A as obj, mob/user as mob) - if(!cover_open) + if(!cover_open && istype(A, mag_type)) user << "[src]'s cover is closed! You can't insert a new mag!" return ..() diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index b6100ebe84c..7b2825214ae 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -1,16 +1,15 @@ -/obj/item/weapon/gun/projectile/automatic/silenced - name = "silenced pistol" - desc = "A small, quiet, easily concealable gun. Uses .45 rounds." - icon_state = "silenced_pistol" +/obj/item/weapon/gun/projectile/automatic/m2411 + name = "M2411" + desc = "John Browning's classic updated for the modern day. Uses .45 rounds. Has 'VADS' engraved on the grip." + icon_state = "m2411" w_class = 3.0 - silenced = 1 - origin_tech = "combat=2;materials=2;syndicate=8" - ammo_type = "/obj/item/ammo_casing/c45" - mag_type = "/obj/item/ammo_box/magazine/sm45" + origin_tech = "combat=3;materials=2" + mag_type = /obj/item/ammo_box/magazine/m45 -/obj/item/weapon/gun/projectile/automatic/silenced/update_icon() + +/obj/item/weapon/gun/projectile/automatic/m2411/update_icon() ..() - icon_state = "[initial(icon_state)]" + icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" return @@ -20,7 +19,6 @@ desc = "A robust handgun that uses .50 AE ammo" icon_state = "deagle" force = 14.0 - ammo_type = "/obj/item/ammo_casing/a50" mag_type = "/obj/item/ammo_box/magazine/m50" /obj/item/weapon/gun/projectile/automatic/deagle/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) @@ -55,7 +53,6 @@ icon_state = "gyropistol" fire_sound = 'sound/effects/Explosion1.ogg' origin_tech = "combat=3" - ammo_type = "/obj/item/ammo_casing/a75" mag_type = "/obj/item/ammo_box/magazine/m75" /obj/item/weapon/gun/projectile/automatic/gyropistol/New() @@ -83,18 +80,8 @@ w_class = 2 silenced = 0 origin_tech = "combat=2;materials=2;syndicate=2" - ammo_type = "/obj/item/ammo_casing/c9mm" mag_type = "/obj/item/ammo_box/magazine/m10mm" -/obj/item/weapon/gun/projectile/automatic/pistol/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) - ..() - if(magazine) - if(!chambered && !magazine.ammo_count()) - magazine.update_icon() - magazine.loc = get_turf(src.loc) - magazine = null - return - /obj/item/weapon/gun/projectile/automatic/pistol/attack_hand(mob/user as mob) if(loc == user) if(silenced) diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 5a9d9d8f7b8..aaa60b2f024 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -2,7 +2,6 @@ desc = "A classic revolver. Uses 357 ammo" name = "revolver" icon_state = "revolver" - ammo_type = "/obj/item/ammo_casing/a357" mag_type = "/obj/item/ammo_box/magazine/internal/cylinder" /obj/item/weapon/gun/projectile/revolver/chamber_round() @@ -31,10 +30,11 @@ if(istype(A, /obj/item/ammo_box)) var/obj/item/ammo_box/AM = A for(var/obj/item/ammo_casing/AC in AM.stored_ammo) - if(magazine.give_round(AC)) + var/didload = magazine.give_round(AC) + if(didload) AM.stored_ammo -= AC num_loaded++ - else + if(!didload || !magazine.multiload) break if(istype(A, /obj/item/ammo_casing)) var/obj/item/ammo_casing/AC = A @@ -79,7 +79,6 @@ name = "revolver" icon_state = "detective" origin_tech = "combat=2;materials=2" - ammo_type = "/obj/item/ammo_casing/c38" mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/rev38" @@ -87,7 +86,7 @@ if(magazine.caliber == initial(magazine.caliber)) return 1 if(prob(70 - (magazine.ammo_count() * 10))) //minimum probability of 10, maximum of 60 - M << "[src] blows up in your face." + M << "[src] blows up in your face!" M.take_organ_damage(0,20) M.drop_item() del(src) @@ -140,7 +139,7 @@ user << "You can't modify it!" return magazine.caliber = "357" - desc = "The barrel and chamber assembly seems to have been modified." + desc = "[initial(desc)] The barrel and chamber assembly seems to have been modified." user << "You reinforce the barrel of [src]! Now it will fire .357 rounds." else user << "You begin to revert the modifications to [src]." @@ -170,7 +169,7 @@ /obj/item/weapon/gun/projectile/revolver/russian name = "Russian Revolver" - desc = "A Russian made revolver. Uses .357 ammo. It has a single slot in it's chamber for a bullet." + desc = "A Russian made revolver. Uses .357 ammo." origin_tech = "combat=2;materials=2" mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/rus357" var/spun = 0 @@ -188,26 +187,8 @@ spun = 1 /obj/item/weapon/gun/projectile/revolver/russian/attackby(var/obj/item/A as obj, mob/user as mob) - var/num_loaded = 0 - if(istype(A, /obj/item/ammo_box)) - var/obj/item/ammo_box/AM = A - for(var/obj/item/ammo_casing/AC in AM.stored_ammo) - if(get_ammo() <= 1) - if(magazine.give_round(AC)) - AM.stored_ammo -= AC - num_loaded++ - break - if(istype(A, /obj/item/ammo_casing)) - var/obj/item/ammo_casing/AC = A - if(get_ammo() <= 1) - magazine.give_round(AC) - user.drop_item() - AC.loc = src - num_loaded++ - if(num_loaded) - user.visible_message("[user] loads a single bullet into the revolver and spins the chamber.", "You load a single bullet into the chamber and spin it.") - else - user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.") + ..() + user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.") if(get_ammo() > 0) Spin() update_icon() @@ -219,26 +200,19 @@ user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.") Spin() else - var/num_unloaded = 0 - while (get_ammo() > 0) - var/obj/item/ammo_casing/CB - CB = magazine.get_round() - chambered = null - CB.loc = get_turf(src.loc) - CB.update_icon() - num_unloaded++ - if (num_unloaded) - user << "You unload [num_unloaded] shell\s from [src]!" - else - user << "[src] is empty." + ..() + /obj/item/weapon/gun/projectile/revolver/russian/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) + if (!spun) + Spin() + return ..() spun = 0 /obj/item/weapon/gun/projectile/revolver/russian/attack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj) - if(!chambered) + if(!chambered && target == user) user.visible_message("\red *click*", "\red *click*") return diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index b457657d013..54c7583d68a 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -8,7 +8,6 @@ flags = FPRINT | TABLEPASS | CONDUCT slot_flags = SLOT_BACK origin_tech = "combat=4;materials=2" - ammo_type = /obj/item/ammo_casing/shotgun/beanbag var/recentpump = 0 // to prevent spammage var/pumped = 0 @@ -18,10 +17,11 @@ if(istype(A, /obj/item/ammo_box)) var/obj/item/ammo_box/AM = A for(var/obj/item/ammo_casing/AC in AM.stored_ammo) - if(magazine && magazine.give_round(AC)) + var/didload = magazine.give_round(AC) + if(didload) AM.stored_ammo -= AC num_loaded++ - else + if(!didload || !magazine.multiload) break if(istype(A, /obj/item/ammo_casing)) var/obj/item/ammo_casing/AC = A @@ -84,7 +84,6 @@ name = "combat shotgun" icon_state = "cshotgun" origin_tech = "combat=5;materials=2" - ammo_type = "/obj/item/ammo_casing/shotgun" mag_type = "/obj/item/ammo_box/magazine/internal/shotcom" w_class = 5 @@ -98,20 +97,17 @@ flags = FPRINT | TABLEPASS | CONDUCT slot_flags = SLOT_BACK origin_tech = "combat=3;materials=1" - ammo_type = "/obj/item/ammo_casing/shotgun/beanbag" mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/dualshot" /obj/item/weapon/gun/projectile/revolver/doublebarrel/attackby(var/obj/item/A as obj, mob/user as mob) ..() - if (istype(A,/obj/item/ammo_box) || istype(A,/obj/item/ammo_casing)) - chamber_round() if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter)) user << "You begin to shorten the barrel of \the [src]." if(get_ammo()) afterattack(user, user) //will this work? afterattack(user, user) //it will. we call it twice, for twice the FUN playsound(user, fire_sound, 50, 1) - user.visible_message("The shotgun goes off!", "The shotgun goes off in your face!") + user.visible_message("\The [src] goes off!", "\The [src] goes off in your face!") return if(do_after(user, 30)) //SHIT IS STEALTHY EYYYYY icon_state = "sawnshotgun" @@ -124,15 +120,5 @@ desc = "Omar's coming!" /obj/item/weapon/gun/projectile/revolver/doublebarrel/attack_self(mob/living/user as mob) - var/num_unloaded = 0 - while (get_ammo() > 0) - var/obj/item/ammo_casing/CB - CB = magazine.get_round(0) - chambered = null - CB.loc = get_turf(src.loc) - CB.update_icon() - num_unloaded++ - if (num_unloaded) - user << "You break open \the [src] and unload [num_unloaded] shell\s." - else - user << "[src] is empty." \ No newline at end of file + user << "You break open \the [src]." + ..() \ No newline at end of file diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index dada9ac9491..bea343a6d7e 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -51,6 +51,10 @@ var/agony = 0 var/embed = 0 // whether or not the projectile can embed itself in the mob + proc/delete() + // Garbage collect the projectiles + loc = null + proc/on_hit(var/atom/target, var/blocked = 0) if(blocked >= 2) return 0//Full block if(!isliving(target)) return 0 diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 25316e55f24..138e2bb6ced 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -14,7 +14,11 @@ return 1 return 0 -/obj/item/projectile/bullet/weakbullet +/obj/item/projectile/bullet/slug + name = "slug" + + +/obj/item/projectile/bullet/rubberbullet damage = 10 stun = 5 weaken = 5 @@ -40,15 +44,31 @@ A.volume += 5 //Because we can -/obj/item/projectile/bullet/midbullet +/obj/item/projectile/bullet/midbullet12 damage = 20 stun = 5 weaken = 5 embed = 0 -/obj/item/projectile/bullet/midbullet2 +/obj/item/projectile/bullet/midbullet9 damage = 25 +/obj/item/projectile/bullet/midbullet45 + damage = 25 + stun = 1 + weaken = 1 + +/obj/item/projectile/bullet/midbullet10 //Only used with the Stechkin Pistol - RobRichards + damage = 30 + +/obj/item/projectile/bullet/buck + name = "pellet" + damage = 15 + +/obj/item/projectile/bullet/blank + name = "blankshot" + nodamage = 1 + /obj/item/projectile/bullet/suffocationbullet//How does this even work? name = "co bullet" damage = 20 diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index e54f9327b811db37498e4dabd208bc4120409dc8..b5ece3cd4e13708bb83a541445397a029c82b62e 100644 GIT binary patch delta 5235 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 Umx*6a?e8Eg&27ypO+4cN3nHsMsQ>@~ delta 5139 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 diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 540f7be103b79ef3764a26d2f186cbfa406e3245..27f0895247c128a1db65ad1869b37cf7fccef4c8 100644 GIT binary patch delta 22253 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 JUZiRj@;@$yrWF7H delta 21353 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