Adds pranks, jukes, and anal retentive bolt action rifles (#3664)

This commit is contained in:
WrongEnd
2017-11-10 23:53:01 -06:00
committed by Lohikar
parent 629da0f9c5
commit 73a10d20e2
15 changed files with 300 additions and 7 deletions
+8 -3
View File
@@ -22,7 +22,7 @@
/obj/item/ammo_magazine/c38/rubber
name = "speed loader (.38 rubber)"
ammo_type = /obj/item/ammo_casing/c38/rubber
/obj/item/ammo_magazine/c38/emp
name = "speed loader (.38 haywire)"
ammo_type = /obj/item/ammo_casing/c38/emp
@@ -72,7 +72,7 @@
/obj/item/ammo_magazine/c45m/flash
name = "magazine (.45 flash)"
ammo_type = /obj/item/ammo_casing/c45/flash
/obj/item/ammo_magazine/t40
name = "magazine (10mm)"
icon_state = "5.56"
@@ -118,7 +118,7 @@
/obj/item/ammo_magazine/c9mm/empty
initial_ammo = 0
/obj/item/ammo_magazine/mc9mmt
name = "top mounted magazine (9mm)"
icon_state = "9mmt"
@@ -274,6 +274,11 @@
max_ammo = 5
multiple_sprites = 1
/obj/item/ammo_magazine/boltaction/vintage
name = "vintage stripper clip"
ammo_type = /obj/item/ammo_casing/vintage
caliber = "vintage"
/obj/item/ammo_magazine/c45uzi
name = "stick magazine (.45)"
icon_state = "uzi45"
@@ -249,3 +249,10 @@
/obj/item/ammo_casing/flechette/explosive
projectile_type = /obj/item/projectile/bullet/flechette/explosive
/obj/item/ammo_casing/vintage
projectile_type = /obj/item/projectile/bullet/rifle/vintage
desc = "Some vintage shell casing. It looks old, and you can't understand the writing stamped on it."
caliber = "vintage"
icon_state = "lcasing"
spent_icon = "lcasing-spent"
+46
View File
@@ -0,0 +1,46 @@
/obj/item/weapon/gun/bang
name = "some shitty-ass gun"
desc = "This is a gun. Neat!"
icon_state = "revolver"
item_state = "revolver"
fire_sound = 'sound/misc/sadtrombone.ogg'
var/image/bang_flag
var/fired_gun = 0
var/pixel_offset_x = -2
var/pixel_offset_y = 13
/obj/item/weapon/gun/bang/Initialize()
. = ..()
bang_flag = image('icons/obj/bang_flag.dmi', "bang_flag")
bang_flag.pixel_x = pixel_offset_x
bang_flag.pixel_y = pixel_offset_y
/obj/item/weapon/gun/bang/handle_click_empty(mob/user)
if (user)
user.visible_message("<span class='danger'>The flag is already out!</span>")
/obj/item/weapon/gun/bang/Fire(atom/target, mob/living/user, clickparams, pointblank=0, reflex=0)
if(!user || !target) return
if(fired_gun)
handle_click_empty(user)
return
add_fingerprint(user)
if (user)
user.visible_message("<span class='danger'>A flag pops out of the barrel!</span>")
else
src.visible_message("<span class='danger'>A flag pops out of the barrel of \the [src.name]'s barrel!</span>")
playsound(src, fire_sound, 20, 1)
src.add_overlay(bang_flag)
fired_gun = 1
/obj/item/weapon/gun/bang/attack_hand(mob/user as mob)
if(user.get_inactive_hand() == src && fired_gun)
src.cut_overlay(bang_flag)
user.visible_message("<span class='notice'>You push the flag back into the barrel of \the [src.name].</span>")
fired_gun = 0
else
return ..()
@@ -0,0 +1,77 @@
/obj/item/weapon/gun/bang/colt
name = "vintage .45 pistol"
desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 rounds."
icon_state = "colt"
pixel_offset_x = 30
pixel_offset_y = 18
/obj/item/weapon/gun/bang/sec
name = ".45 pistol"
desc = "A NanoTrasen designed sidearm, found pretty much everywhere humans are. Uses .45 rounds."
icon_state = "secguncomp"
pixel_offset_x = 28
pixel_offset_y = 14
/obj/item/weapon/gun/bang/sec/flash
name = ".45 signal pistol"
/obj/item/weapon/gun/bang/sec/wood
desc = "A Nanotrasen designed sidearm, this one has a sweet wooden grip. Uses .45 rounds."
name = "custom .45 Pistol"
icon_state = "secgundark"
/obj/item/weapon/gun/bang/x9
name = "automatic .45 pistol"
desc = "The x9 tactical pistol is a lightweight fast firing handgun. Uses .45 rounds."
icon_state = "x9tactical"
pixel_offset_x = 28
pixel_offset_y = 13
/obj/item/weapon/gun/bang/tanto
desc = "A Necropolis Industries Tanto .40, designed to compete with the NT Mk58. Uses 10mm rounds."
name = "10mm pistol"
icon_state = "c05r"
pixel_offset_x = 31
pixel_offset_y = 14
/obj/item/weapon/gun/bang/silenced
name = "silenced pistol"
desc = "A small, quiet, easily concealable gun. Uses .45 rounds."
icon_state = "silenced_pistol"
pixel_offset_x = -4
pixel_offset_y = 15
obj/item/weapon/gun/bang/deagle
name = ".50 magnum pistol"
desc = "A robust handgun that uses .50 AE ammo."
icon_state = "deagle"
pixel_offset_x = -4
pixel_offset_y = 16
/obj/item/weapon/gun/bang/deagle/gold
desc = "A gold plated gun folded over a million times by superior martian gunsmiths. Uses .50 AE ammo."
icon_state = "deagleg"
item_state = "deagleg"
/obj/item/weapon/gun/bang/deagle/camo
desc = "A Deagle brand Deagle for operators operating operationally. Uses .50 AE ammo."
icon_state = "deaglecamo"
/obj/item/weapon/gun/bang/pistol
name = "9mm pistol"
desc = "500 years since its creation and the Stechkin automatic pistol is still a common sight throughout the Frontier."
icon_state = "pistol"
item_state = null
pixel_offset_x = 26
pixel_offset_y = 14
/obj/item/weapon/gun/bang/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 = "zipgun"
item_state = "sawnshotgun"
pixel_offset_x = 0
pixel_offset_y = 12
@@ -0,0 +1,3 @@
/obj/item/weapon/gun/bang/revolver
name = "revolver"
desc = "The classic Necropolis Industries .357 revolver, for when you only want to shoot once."
@@ -140,4 +140,109 @@
if(!retracted_bolt)
to_chat(user, "<span class='notice'>You can't load \the [src] without cycling the bolt.</span>")
return
..()
/obj/item/weapon/gun/projectile/boltaction/vintage
name = "\improper vintage bolt action rifle"
desc = "An extremely old-looking rifle. Words you can't read are stamped on the gun. Doesn't look like it'll take any modern rounds."
icon_state = "springfield"
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 3)
fire_sound = 'sound/weapons/rifleshot.ogg'
slot_flags = SLOT_BACK
load_method = SINGLE_CASING|SPEEDLOADER
handle_casings = HOLD_CASINGS
caliber = "vintage"
ammo_type = /obj/item/ammo_casing/vintage
var/open_bolt = 0
var/obj/item/ammo_magazine/boltaction/vintage/has_clip
action_button_name = "Wield rifle"
/obj/item/weapon/gun/projectile/boltaction/vintage/attack_self(mob/living/user as mob)
if(wielded)
if(world.time >= recentpump + 10)
pump(user)
recentpump = world.time
return
else
if(open_bolt && has_clip)
if(has_clip.stored_ammo.len > 0)
load_ammo(has_clip, user)
src.cut_overlays()
if(!has_clip.stored_ammo.len)
src.add_overlay(image('icons/obj/gun.dmi', "springfield-clip-empty"))
else if(has_clip.stored_ammo.len <= 3)
src.add_overlay(image('icons/obj/gun.dmi', "springfield-clip-half"))
else
src.add_overlay(image('icons/obj/gun.dmi', "springfield-clip-full"))
else
user << "<span class='warning'>There is no ammo in \the [has_clip.name]!</span>"
else if(!open_bolt)
user << "<span class='warning'>The bolt on \the [src.name] is closed!</span>"
else
user << "<span class='warning'>There is no clip in \the [src.name]!</span>"
/obj/item/weapon/gun/projectile/boltaction/vintage/pump(mob/M as mob)
if(!wielded)
M << "<span class='warning'>You cannot work \the [src.name]'s bolt without gripping it with both hands!</span>"
return
if(!open_bolt)
open_bolt = 1
icon_state = "springfield-openbolt"
playsound(M, 'sound/weapons/riflebolt.ogg', 60, 1)
update_icon()
return
open_bolt = 0
icon_state = "springfield"
playsound(M, 'sound/weapons/riflebolt.ogg', 60, 1)
if(has_clip)
has_clip.forceMove(get_turf(src))
has_clip = null
src.cut_overlays()
if(chambered)//We have a shell in the chamber
chambered.loc = get_turf(src)//Eject casing
chambered = null
if(loaded.len)
var/obj/item/ammo_casing/AC = loaded[1] //load next casing.
loaded -= AC //Remove casing from loaded list.
chambered = AC
update_icon()
/obj/item/weapon/gun/projectile/boltaction/vintage/attackby(var/obj/item/A as obj, mob/user as mob)
if(istype(A, /obj/item/ammo_magazine/boltaction/vintage))
if(!open_bolt)
user << "<span class='notice'>You need to open the bolt of \the [src] first.</span>"
return
if(!has_clip)
user.drop_from_inventory(A)
A.forceMove(src)
has_clip = A
user << "<span class='notice'>You load the clip into \the [src].</span>"
if(!has_clip.stored_ammo.len)
src.add_overlay(image('icons/obj/gun.dmi', "springfield-clip-empty"))
else if(has_clip.stored_ammo.len <= 3)
src.add_overlay(image('icons/obj/gun.dmi', "springfield-clip-half"))
else
src.add_overlay(image('icons/obj/gun.dmi', "springfield-clip-full"))
else
user << "<span class='notice'>There's already a clip in \the [src].</span>"
else
..()
/obj/item/weapon/gun/projectile/boltaction/vintage/load_ammo(var/obj/item/A, mob/user)
if(!open_bolt)
user << "<span class='warning'>The bolt is closed on \the [src.name]!</span>"
return
..()
/obj/item/weapon/gun/projectile/boltaction/vintage/Fire(atom/target, mob/living/user, clickparams, pointblank=0, reflex=0)
if(open_bolt)
user << "<span class='warning'>The bolt is open on \the [src.name]!</span>"
return
..()
@@ -200,6 +200,11 @@
armor_penetration = 80
hitscan = 1 //so the PTR isn't useless as a sniper weapon
/obj/item/projectile/bullet/rifle/vintage
name = "vintage bullet"
damage = 50
weaken = 1
/obj/item/projectile/bullet/rifle/tranq
name = "dart"
icon_state = "dart"
@@ -313,4 +318,6 @@
/obj/item/projectile/bullet/flechette/explosive
shrapnel_type = /obj/item/weapon/material/shard/shrapnel/flechette
penetrating = 0
damage = 10
damage = 10