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
@@ -13,7 +13,7 @@
|
||||
lipsticks["lipstick, red"] = /obj/item/weapon/lipstick
|
||||
lipsticks["lipstick, purple"] = /obj/item/weapon/lipstick/purple
|
||||
lipsticks["lipstick, jade"] = /obj/item/weapon/lipstick/jade
|
||||
lipsticks["lipstick, back"] = /obj/item/weapon/lipstick/black
|
||||
lipsticks["lipstick, black"] = /obj/item/weapon/lipstick/black
|
||||
gear_tweaks += new/datum/gear_tweak/path(lipsticks)
|
||||
|
||||
/datum/gear/cosmetic/mirror
|
||||
|
||||
@@ -106,10 +106,10 @@
|
||||
/obj/item/clothing/mask/gas/tactical
|
||||
name = "tactical mask"
|
||||
desc = "A compact carbon-fiber respirator covering the mouth and nose to protect against the inhalation of smoke and other harmful gasses. "
|
||||
icon_state = "tactigas"
|
||||
icon_state = "fullgas"
|
||||
item_state = "fullgas"
|
||||
item_flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT
|
||||
flags_inv = HIDEFACE
|
||||
body_parts_covered = FACE
|
||||
w_class = 2.0
|
||||
item_state = "tactigas"
|
||||
armor = list(melee = 25, bullet = 10, laser = 25, energy = 25, bomb = 0, bio = 50, rad = 15)
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
siemens_coefficient = 0.6
|
||||
item_flags = STOPPRESSUREDAMAGE
|
||||
flags_inv = null
|
||||
species_restricted = list("Vox","Vox Armalis")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/head.dmi',
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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)"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
author: Alberyk
|
||||
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- imageadd: "Added new sprites for regular, rubber and rifle casings."
|
||||
- imageadd: "Changed some gun sprites."
|
||||
- imageadd: "Changed the tactical mask sprite."
|
||||
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 4.7 KiB |