mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-18 10:33:30 +01:00
Buckshot whee!
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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)"
|
||||
|
||||
@@ -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 @@
|
||||
"<span class='warning'>You fire [src][reflex ? "by reflex":""]!</span>", \
|
||||
"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"])
|
||||
|
||||
@@ -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 << "<span class='notice'>You load a new magazine into \the [src]!</span>"
|
||||
user << "<span class='notice'>You load a new magazine into \the [src].</span>"
|
||||
chamber_round()
|
||||
A.update_icon()
|
||||
update_icon()
|
||||
|
||||
@@ -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 << "<span class='notice'>[src]'s cover is closed! You can't insert a new mag!</span>"
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 << "<span class='danger'>[src] blows up in your face.</span>"
|
||||
M << "<span class='danger'>[src] blows up in your face!</span>"
|
||||
M.take_organ_damage(0,20)
|
||||
M.drop_item()
|
||||
del(src)
|
||||
@@ -140,7 +139,7 @@
|
||||
user << "<span class='notice'>You can't modify it!</span>"
|
||||
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 << "<span class='warning'>You reinforce the barrel of [src]! Now it will fire .357 rounds.</span>"
|
||||
else
|
||||
user << "<span class='notice'>You begin to revert the modifications to [src].</span>"
|
||||
@@ -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("<span class='warning'>[user] loads a single bullet into the revolver and spins the chamber.</span>", "<span class='warning'>You load a single bullet into the chamber and spin it.</span>")
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] spins the chamber of the revolver.</span>", "<span class='warning'>You spin the revolver's chamber.</span>")
|
||||
..()
|
||||
user.visible_message("<span class='warning'>[user] spins the chamber of the revolver.</span>", "<span class='warning'>You spin the revolver's chamber.</span>")
|
||||
if(get_ammo() > 0)
|
||||
Spin()
|
||||
update_icon()
|
||||
@@ -219,26 +200,19 @@
|
||||
user.visible_message("<span class='warning'>[user] spins the chamber of the revolver.</span>", "<span class='warning'>You spin the revolver's chamber.</span>")
|
||||
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 << "<span class = 'notice'>You unload [num_unloaded] shell\s from [src]!</span>"
|
||||
else
|
||||
user << "<span class='notice'>[src] is empty.</span>"
|
||||
..()
|
||||
|
||||
|
||||
/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
|
||||
|
||||
|
||||
@@ -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 << "<span class='notice'>You begin to shorten the barrel of \the [src].</span>"
|
||||
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("<span class='danger'>The shotgun goes off!</span>", "<span class='danger'>The shotgun goes off in your face!</span>")
|
||||
user.visible_message("<span class='danger'>\The [src] goes off!</span>", "<span class='danger'>\The [src] goes off in your face!</span>")
|
||||
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 << "<span class = 'notice'>You break open \the [src] and unload [num_unloaded] shell\s.</span>"
|
||||
else
|
||||
user << "<span class='notice'>[src] is empty.</span>"
|
||||
user << "<span class = 'notice'>You break open \the [src].</span>"
|
||||
..()
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user