Mandatory gun update (#1685)

-added new sprites for rubber and rifles casings
-made bullets path less dumb
-added some new gun sprites, like the large crossbow and zipguns
-added a new tatical sprite mask, with support for unathi, tajaran and vox
-added back sprites for some items like bats and scythes
-fixed being able to saw off sawn-off shotguns forever and ever
-fixed a typo on the custom loadout
-nerfed the brain damage of the mind flayer, since brain damage is lethal now
This commit is contained in:
Alberyk
2017-02-03 20:11:34 -02:00
committed by skull132
parent 2165054918
commit 2c280c8341
23 changed files with 70 additions and 58 deletions

View File

@@ -12,7 +12,7 @@
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 - make it so that the projectiles are created only when needed?
var/spent_icon = null
var/spent_icon = "s-casing-spent"
/obj/item/ammo_casing/New()
..()
@@ -25,7 +25,7 @@
/obj/item/ammo_casing/proc/expend()
. = BB
BB = null
set_dir(pick(cardinal)) //spin spent casings
set_dir(pick(alldirs)) //spin spent casings
update_icon()
/obj/item/ammo_casing/attackby(obj/item/weapon/W as obj, mob/user as mob)
@@ -112,7 +112,7 @@
user << "<span class='warning'>[src] is full!</span>"
return
user.remove_from_mob(C)
C.loc = src
C.forceMove(src)
stored_ammo.Insert(1, C) //add to the head of the list
update_icon()
@@ -122,8 +122,8 @@
return
user << "<span class='notice'>You empty [src].</span>"
for(var/obj/item/ammo_casing/C in stored_ammo)
C.loc = user.loc
C.set_dir(pick(cardinal))
C.forceMove(user.loc)
C.set_dir(pick(alldirs))
stored_ammo.Cut()
update_icon()

View File

@@ -21,7 +21,7 @@
/obj/item/ammo_magazine/c38/rubber
name = "speed loader (.38 rubber)"
ammo_type = /obj/item/ammo_casing/c38r
ammo_type = /obj/item/ammo_casing/c38/rubber
/obj/item/ammo_magazine/c45
name = "ammunition Box (.45)"
@@ -58,15 +58,15 @@
/obj/item/ammo_magazine/c45m/rubber
name = "magazine (.45 rubber)"
ammo_type = /obj/item/ammo_casing/c45r
ammo_type = /obj/item/ammo_casing/c45/rubber
/obj/item/ammo_magazine/c45m/practice
name = "magazine (.45 practice)"
ammo_type = /obj/item/ammo_casing/c45p
ammo_type = /obj/item/ammo_casing/c45/practice
/obj/item/ammo_magazine/c45m/flash
name = "magazine (.45 flash)"
ammo_type = "/obj/item/ammo_casing/c45f"
ammo_type = /obj/item/ammo_casing/c45/flash
/obj/item/ammo_magazine/t40
name = "magazine (10mm)"
@@ -83,7 +83,7 @@
/obj/item/ammo_magazine/t40/rubber
name = "magazine (10mm rubber)"
ammo_type = /obj/item/ammo_casing/t40r
ammo_type = /obj/item/ammo_casing/t40/rubber
/obj/item/ammo_magazine/mc9mm
name = "magazine (9mm)"
@@ -100,7 +100,7 @@
initial_ammo = 0
/obj/item/ammo_magazine/mc9mm/flash
ammo_type = /obj/item/ammo_casing/c9mmf
ammo_type = /obj/item/ammo_casing/c9mm/flash
/obj/item/ammo_magazine/c9mm
name = "ammunition Box (9mm)"
@@ -129,11 +129,11 @@
/obj/item/ammo_magazine/mc9mmt/rubber
name = "top mounted magazine (9mm rubber)"
ammo_type = /obj/item/ammo_casing/c9mmr
ammo_type = /obj/item/ammo_casing/c9mm/rubber
/obj/item/ammo_magazine/mc9mmt/practice
name = "top mounted magazine (9mm practice)"
ammo_type = /obj/item/ammo_casing/c9mmp
ammo_type = /obj/item/ammo_casing/c9mm/practice
/obj/item/ammo_magazine/c45
name = "ammunition Box (.45)"
@@ -177,7 +177,7 @@
/obj/item/ammo_magazine/a556/practice
name = "magazine (5.56mm practice)"
ammo_type = /obj/item/ammo_casing/a556p
ammo_type = /obj/item/ammo_casing/a556/practice
/obj/item/ammo_magazine/a556/ap
name = "magazine (5.56mm AP)"

View File

@@ -18,61 +18,54 @@
caliber = "38"
projectile_type = /obj/item/projectile/bullet/pistol
/obj/item/ammo_casing/c38/rubber
desc = "A .38 rubber bullet casing."
projectile_type = /obj/item/projectile/bullet/pistol/rubber
icon_state = "r-casing"
spent_icon = "r-casing-spent"
/obj/item/ammo_casing/trod
desc = "hyperdense tungsten rod residue."
icon_state = "trod"
caliber = "trod"
projectile_type = /obj/item/projectile/bullet/trod
/obj/item/ammo_casing/c38r
desc = "A .38 rubber bullet casing."
caliber = "38"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/c9mm
desc = "A 9mm bullet casing."
caliber = "9mm"
projectile_type = /obj/item/projectile/bullet/pistol
/obj/item/ammo_casing/a556/ap
desc = "A 5.56mm armor piercing round."
caliber = "a556"
projectile_type = /obj/item/projectile/bullet/rifle/a556/ap
/obj/item/ammo_casing/c9mmf
/obj/item/ammo_casing/c9mm/flash
desc = "A 9mm flash shell casing."
caliber = "9mm"
projectile_type = /obj/item/projectile/energy/flash
/obj/item/ammo_casing/c9mmr
/obj/item/ammo_casing/c9mm/rubber
desc = "A 9mm rubber bullet casing."
caliber = "9mm"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
icon_state = "r-casing"
spent_icon = "r-casing-spent"
/obj/item/ammo_casing/c9mmp
/obj/item/ammo_casing/c9mm/practice
desc = "A 9mm practice bullet casing."
caliber = "9mm"
projectile_type = /obj/item/projectile/bullet/pistol/practice
/obj/item/ammo_casing/c45
desc = "A .45 bullet casing."
caliber = ".45"
projectile_type = /obj/item/projectile/bullet/pistol/medium
/obj/item/ammo_casing/c45p
/obj/item/ammo_casing/c45/practice
desc = "A .45 practice bullet casing."
caliber = ".45"
projectile_type = /obj/item/projectile/bullet/pistol/practice
/obj/item/ammo_casing/c45r
/obj/item/ammo_casing/c45/rubber
desc = "A .45 rubber bullet casing."
caliber = ".45"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
icon_state = "r-casing"
spent_icon = "r-casing-spent"
/obj/item/ammo_casing/c45f
/obj/item/ammo_casing/c45/flash
desc = "A .45 flash shell casing."
caliber = ".45"
projectile_type = /obj/item/projectile/energy/flash
/obj/item/ammo_casing/t40
@@ -80,9 +73,8 @@
caliber = "10mm"
projectile_type = /obj/item/projectile/bullet/pistol
/obj/item/ammo_casing/t40r
/obj/item/ammo_casing/t40/rubber
desc = "A 10mm rubber bullet casing."
caliber = "10mm"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/a12mm
@@ -119,7 +111,7 @@
name = "shotgun shell"
desc = "A practice shell."
icon_state = "pshell"
spent_icon = "pshell"
spent_icon = "pshell-spent"
projectile_type = /obj/item/projectile/bullet/shotgun/practice
matter = list("metal" = 90)
@@ -150,7 +142,7 @@
name = "flash shell"
desc = "A chemical shell used to signal distress or provide illumination."
icon_state = "fshell"
spent_icon = "fshell"
spent_icon = "fshell-spent"
projectile_type = /obj/item/projectile/energy/flash/flare
matter = list(DEFAULT_WALL_MATERIAL = 90, "glass" = 90)
@@ -174,24 +166,31 @@
desc = "A 7.62mm bullet casing."
caliber = "a762"
projectile_type = /obj/item/projectile/bullet/rifle/a762
icon_state = "rifle-casing"
spent_icon = "rifle-casing-spent"
/obj/item/ammo_casing/a145
name = "shell casing"
desc = "A 14.5mm shell."
icon_state = "lcasing"
spent_icon = "lcasing-spent"
caliber = "14.5mm"
projectile_type = /obj/item/projectile/bullet/rifle/a145
matter = list(DEFAULT_WALL_MATERIAL = 1250)
icon_state = "lcasing"
spent_icon = "lcasing-spent"
/obj/item/ammo_casing/a556
desc = "A 5.56mm bullet casing."
caliber = "a556"
projectile_type = /obj/item/projectile/bullet/rifle/a556
icon_state = "rifle-casing"
spent_icon = "rifle-casing-spent"
/obj/item/ammo_casing/a556p
/obj/item/ammo_casing/a556/ap
desc = "A 5.56mm armor piercing round."
projectile_type = /obj/item/projectile/bullet/rifle/a556/ap
/obj/item/ammo_casing/a556/practice
desc = "A 5.56mm practice bullet casing."
caliber = "a556"
projectile_type = /obj/item/projectile/bullet/rifle/a556/practice
/obj/item/ammo_casing/rocket

View File

@@ -54,5 +54,8 @@
desc = "A weapon favored by mercenary infiltration teams."
w_class = 4
force = 10
icon_state = "crossbowlarge"
item_state = "crossbow"
matter = list(DEFAULT_WALL_MATERIAL = 200000)
projectile_type = /obj/item/projectile/energy/bolt/large

View File

@@ -5,7 +5,8 @@
desc = "An improvised pipe assembly that can fire shotgun shells."
icon = 'icons/obj/improvised.dmi'
icon_state = "ishotgun"
item_state = "dshotgun"
item_state = "ishotgun"
contained_sprite = 1
max_shells = 2
w_class = 4.0
force = 5
@@ -29,12 +30,11 @@
/obj/item/weapon/gun/projectile/shotgun/improvised/attackby(var/obj/item/A as obj, mob/user as mob)
if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter))
if(w_class > 3 && (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(loaded.len)
for(var/i in 1 to max_shells)
afterattack(user, user) //will this work? //it will. we call it twice, for twice the FUN
playsound(user, fire_sound, 50, 1)
Fire(user, user) //will this work? //it will. we call it twice, for twice the FUN
user.visible_message("<span class='danger'>The shotgun goes off!</span>", "<span class='danger'>The shotgun goes off in your face!</span>")
return
if(do_after(user, 30))
@@ -53,7 +53,8 @@
name = "sawn-off improvised shotgun"
desc = "An improvised pipe assembly that can fire shotgun shells."
icon_state = "ishotgunsawn"
item_state = "sawnshotgun"
item_state = "ishotgunsawn"
contained_sprite = 1
slot_flags = SLOT_BELT|SLOT_HOLSTER
w_class = 3
force = 5

View File

@@ -215,7 +215,7 @@
/obj/item/weapon/gun/projectile/pirate
name = "zip gun"
desc = "Little more than a barrel, handle, and firing mechanism, cheap makeshift firearms like this one are not uncommon in frontier systems."
icon_state = "sawnshotgun"
icon_state = "zipgun"
item_state = "sawnshotgun"
handle_casings = CYCLE_CASINGS //player has to take the old casing out manually before reloading
load_method = SINGLE_CASING

View File

@@ -105,12 +105,11 @@
//this is largely hacky and bad :( -Pete
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/attackby(var/obj/item/A as obj, mob/user as mob)
if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter))
if(w_class > 3 && (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(loaded.len)
for(var/i in 1 to max_shells)
afterattack(user, user) //will this work? //it will. we call it twice, for twice the FUN
playsound(user, fire_sound, 50, 1)
Fire(user, user) //will this work? //it will. we call it twice, for twice the FUN
user.visible_message("<span class='danger'>The shotgun goes off!</span>", "<span class='danger'>The shotgun goes off in your face!</span>")
return
if(do_after(user, 30)) //SHIT IS STEALTHY EYYYYY
@@ -126,6 +125,7 @@
else
..()
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/sawn
name = "sawn-off shotgun"
desc = "Omar's coming!"

View File

@@ -148,7 +148,7 @@
on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
M.adjustBrainLoss(20)
M.adjustBrainLoss(5)
M.hallucination += 20
/obj/item/projectile/bullet/trod