mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-02 21:42:41 +00:00
Added dual wielding. Firing a gun while another is in the off-hand will fire that one as well, at the cost of lost accuracy. You must be on harm intent to do this.
287 lines
9.9 KiB
Plaintext
287 lines
9.9 KiB
Plaintext
/obj/item/gun/projectile/revolver
|
|
name = "revolver"
|
|
desc = "The revised Mark II Zavodskoi Interstellar revolver, chambering .357 rounds and utilizing a robust firing mechanism to deliver deadly rounds downrange. This is a monster of a hand cannon with a beautiful cedar grip and a transparent plastic cover so as to not splinter your hands while firing."
|
|
icon = 'icons/obj/guns/revolver.dmi'
|
|
icon_state = "revolver"
|
|
item_state = "revolver"
|
|
accuracy = 1
|
|
offhand_accuracy = 1
|
|
caliber = "357"
|
|
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
|
handle_casings = CYCLE_CASINGS
|
|
max_shells = 8
|
|
ammo_type = /obj/item/ammo_casing/a357
|
|
magazine_type = /obj/item/ammo_magazine/a357
|
|
fire_sound = 'sound/weapons/gunshot/gunshot_revolver.ogg'
|
|
var/chamber_offset = 0 //how many empty chambers in the cylinder until you hit a round
|
|
|
|
/obj/item/gun/projectile/revolver/verb/spin_cylinder()
|
|
set name = "Spin cylinder"
|
|
set desc = "Fun when you're bored out of your skull."
|
|
set category = "Object"
|
|
|
|
chamber_offset = 0
|
|
usr.visible_message("<span class='warning'>\The [usr] spins the cylinder of \the [src]!</span>", "<span class='warning'>You spin the cylinder of \the [src]!</span>", "<span class='notice'>You hear something metallic spin and click.</span>")
|
|
playsound(src.loc, 'sound/weapons/revolver_spin.ogg', 100, 1)
|
|
loaded = shuffle(loaded)
|
|
if(rand(1,max_shells) > loaded.len)
|
|
chamber_offset = rand(0,max_shells - loaded.len)
|
|
|
|
/obj/item/gun/projectile/revolver/consume_next_projectile()
|
|
if(chamber_offset)
|
|
chamber_offset--
|
|
return
|
|
return ..()
|
|
|
|
/obj/item/gun/projectile/revolver/load_ammo(var/obj/item/A, mob/user)
|
|
chamber_offset = 0
|
|
return ..()
|
|
|
|
/obj/item/gun/projectile/revolver/mateba
|
|
name = "automatic revolver"
|
|
desc = "The Hammerhead .454 autorevolver, a very rare weapon typical of special ops teams and mercenary teams. It packs quite the punch."
|
|
icon = 'icons/obj/guns/autorevolver.dmi'
|
|
icon_state = "autorevolver"
|
|
item_state = "autorevolver"
|
|
max_shells = 7
|
|
accuracy = 2
|
|
caliber = "454"
|
|
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
|
fire_sound = 'sound/weapons/gunshot/gunshot_mateba.ogg'
|
|
ammo_type = /obj/item/ammo_casing/a454
|
|
magazine_type = /obj/item/ammo_magazine/a454
|
|
|
|
/obj/item/gun/projectile/revolver/detective
|
|
name = "revolver"
|
|
desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds."
|
|
icon = 'icons/obj/guns/detective.dmi'
|
|
icon_state = "detective"
|
|
item_state = "detective"
|
|
max_shells = 6
|
|
accuracy = 1
|
|
caliber = "38"
|
|
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
|
fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg'
|
|
ammo_type = /obj/item/ammo_casing/c38
|
|
magazine_type = /obj/item/ammo_magazine/c38
|
|
|
|
/obj/item/gun/projectile/revolver/detective/verb/rename_gun()
|
|
set name = "Name Gun"
|
|
set category = "Object"
|
|
set desc = "Click to rename your gun. If you're the detective."
|
|
|
|
var/mob/M = usr
|
|
if(!M.mind) return 0
|
|
if(!M.mind.assigned_role == "Detective")
|
|
to_chat(M, "<span class='notice'>You don't feel cool enough to name this gun, chump.</span>")
|
|
return 0
|
|
|
|
var/input = sanitizeSafe(input("What do you want to name the gun?", ,""), MAX_NAME_LEN)
|
|
|
|
if(src && input && !M.stat && in_range(M,src))
|
|
name = input
|
|
to_chat(M, "You name the gun [input]. Say hello to your new friend.")
|
|
return 1
|
|
|
|
// Blade Runner pistol.
|
|
/obj/item/gun/projectile/revolver/deckard
|
|
name = "\improper Deckard .44"
|
|
desc = "A custom-built revolver, based off the semi-popular Detective Special model."
|
|
max_shells = 6
|
|
accuracy = 2
|
|
icon = 'icons/obj/guns/deckard.dmi'
|
|
icon_state = "deckard-empty"
|
|
item_state = "deckard"
|
|
caliber = "38"
|
|
ammo_type = /obj/item/ammo_casing/c38
|
|
magazine_type = null
|
|
fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg'
|
|
|
|
/obj/item/gun/projectile/revolver/deckard/update_icon()
|
|
..()
|
|
if(loaded.len)
|
|
icon_state = "deckard-loaded"
|
|
else
|
|
icon_state = "deckard-empty"
|
|
|
|
/obj/item/gun/projectile/revolver/deckard/load_ammo(var/obj/item/A, mob/user)
|
|
if(istype(A, /obj/item/ammo_magazine))
|
|
flick("deckard-reload",src)
|
|
..()
|
|
|
|
/obj/item/gun/projectile/revolver/deckard/emp
|
|
ammo_type = /obj/item/ammo_casing/c38/emp
|
|
|
|
/obj/item/gun/projectile/revolver/derringer
|
|
name = "derringer"
|
|
desc = "A small pocket pistol, easily concealed. Uses .357 rounds."
|
|
icon = 'icons/obj/guns/derringer.dmi'
|
|
icon_state = "derringer"
|
|
item_state = "derringer"
|
|
accuracy = -1
|
|
w_class = ITEMSIZE_SMALL
|
|
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 3)
|
|
handle_casings = CYCLE_CASINGS
|
|
load_method = SINGLE_CASING
|
|
max_shells = 2
|
|
ammo_type = /obj/item/ammo_casing/a357
|
|
magazine_type = null
|
|
|
|
/obj/item/gun/projectile/revolver/capgun
|
|
name = "cap gun"
|
|
desc = "Looks almost like the real thing! Ages 8 and up."
|
|
icon = 'icons/obj/guns/capgun.dmi'
|
|
icon_state = "capgun"
|
|
item_state = "capgun"
|
|
caliber = "caps"
|
|
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
|
handle_casings = CYCLE_CASINGS
|
|
max_shells = 7
|
|
ammo_type = /obj/item/ammo_casing/cap
|
|
needspin = FALSE
|
|
|
|
/obj/item/gun/projectile/revolver/capgun/attackby(obj/item/W, mob/user)
|
|
if(!W.iswirecutter() || icon_state == "revolver")
|
|
return ..()
|
|
to_chat(user, "<span class='notice'>You snip off the toy markings off the [src].</span>")
|
|
icon = 'icons/obj/guns/revolver.dmi'
|
|
name = "revolver"
|
|
icon_state = "revolver"
|
|
item_state = "revolvers"
|
|
desc += " Someone snipped off the barrel's toy mark. How dastardly."
|
|
return 1
|
|
|
|
/obj/item/gun/projectile/revolver/lemat
|
|
name = "grapeshot revolver"
|
|
desc = "A six shot revolver with a secondary firing barrel loading shotgun shells. Uses .38-Special and 12g rounds depending on the barrel."
|
|
icon = 'icons/obj/guns/lemat.dmi'
|
|
icon_state = "lemat"
|
|
item_state = "lemat"
|
|
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
|
handle_casings = CYCLE_CASINGS
|
|
max_shells = 6
|
|
caliber = "38"
|
|
fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg'
|
|
ammo_type = /obj/item/ammo_casing/c38
|
|
magazine_type = /obj/item/ammo_magazine/c38
|
|
var/secondary_max_shells = 1
|
|
var/secondary_caliber = "shotgun"
|
|
var/secondary_ammo_type = /obj/item/ammo_casing/shotgun/pellet
|
|
var/flipped_firing = 0
|
|
var/list/secondary_loaded = list()
|
|
var/list/tertiary_loaded = list()
|
|
|
|
|
|
/obj/item/gun/projectile/revolver/lemat/Initialize()
|
|
. = ..()
|
|
for(var/i in 1 to secondary_max_shells)
|
|
secondary_loaded += new secondary_ammo_type(src)
|
|
|
|
/obj/item/gun/projectile/revolver/lemat/verb/swap_firingmode()
|
|
set name = "Swap Firing Mode"
|
|
set category = "Object"
|
|
set desc = "Click to swap from one method of firing to another."
|
|
|
|
var/mob/living/carbon/human/M = usr
|
|
if(!M.mind)
|
|
return 0
|
|
|
|
to_chat(M, "<span class='notice'>You change the firing mode on \the [src].</span>")
|
|
if(!flipped_firing)
|
|
if(max_shells && secondary_max_shells)
|
|
max_shells = secondary_max_shells
|
|
|
|
if(caliber && secondary_caliber)
|
|
caliber = secondary_caliber
|
|
fire_sound = 'sound/weapons/gunshot/gunshot_shotgun2.ogg'
|
|
|
|
if(ammo_type && secondary_ammo_type)
|
|
ammo_type = secondary_ammo_type
|
|
|
|
if(secondary_loaded)
|
|
tertiary_loaded = loaded.Copy()
|
|
loaded = secondary_loaded
|
|
|
|
flipped_firing = 1
|
|
|
|
else
|
|
if(max_shells)
|
|
max_shells = initial(max_shells)
|
|
|
|
if(caliber && secondary_caliber)
|
|
caliber = initial(caliber)
|
|
fire_sound = initial(fire_sound)
|
|
|
|
if(ammo_type && secondary_ammo_type)
|
|
ammo_type = initial(ammo_type)
|
|
|
|
if(tertiary_loaded)
|
|
secondary_loaded = loaded.Copy()
|
|
loaded = tertiary_loaded
|
|
|
|
flipped_firing = 0
|
|
|
|
/obj/item/gun/projectile/revolver/lemat/spin_cylinder()
|
|
set name = "Spin cylinder"
|
|
set desc = "Fun when you're bored out of your skull."
|
|
set category = "Object"
|
|
|
|
chamber_offset = 0
|
|
visible_message("<span class='warning'>\The [usr] spins the cylinder of \the [src]!</span>", \
|
|
"<span class='notice'>You hear something metallic spin and click.</span>")
|
|
playsound(src.loc, 'sound/weapons/revolver_spin.ogg', 100, 1)
|
|
if(!flipped_firing)
|
|
loaded = shuffle(loaded)
|
|
if(rand(1,max_shells) > loaded.len)
|
|
chamber_offset = rand(0,max_shells - loaded.len)
|
|
|
|
/obj/item/gun/projectile/revolver/lemat/examine(mob/user)
|
|
..()
|
|
if(secondary_loaded)
|
|
var/to_print
|
|
for(var/round in secondary_loaded)
|
|
to_print += round
|
|
to_chat(user, "\The [src] has a secondary barrel loaded with \a [to_print]")
|
|
else
|
|
to_chat(user, "\The [src] has a secondary barrel that is empty.")
|
|
|
|
/obj/item/gun/projectile/revolver/adhomian
|
|
name = "adhomian service revolver"
|
|
desc = "The Royal Firearms Service Revolver is a simple and reliable design, favored by the nobility of the New Kingdom of Adhomai."
|
|
icon = 'icons/obj/guns/adhomian_revolver.dmi'
|
|
icon_state = "adhomian_revolver"
|
|
item_state = "adhomian_revolver"
|
|
caliber = "38"
|
|
max_shells = 7
|
|
load_method = SINGLE_CASING
|
|
fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg'
|
|
ammo_type = /obj/item/ammo_casing/c38
|
|
magazine_type = null
|
|
|
|
desc_fluff = "A simple and reliable double action revolver, favored by the nobility, officers and law enforcement. The design is known for having an outdated reloading \
|
|
mechanism, with the need to manually eject each of the used cartridges, and reload one cartridge at a time through a loading gate. However, their cheap manufacturing cost has \
|
|
allowed countless copies to flood the Kingdom's markets."
|
|
|
|
/obj/item/gun/projectile/revolver/knife
|
|
name = "knife-revolver"
|
|
desc = "An adhomian revolver with a blade attached to its barrel."
|
|
icon = 'icons/obj/guns/knifegun.dmi'
|
|
icon_state = "knifegun"
|
|
item_state = "knifegun"
|
|
max_shells = 6
|
|
caliber = "38"
|
|
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
|
fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg'
|
|
ammo_type = /obj/item/ammo_casing/c38
|
|
magazine_type = /obj/item/ammo_magazine/c38
|
|
force = 15
|
|
sharp = TRUE
|
|
edge = TRUE
|
|
|
|
/obj/item/gun/projectile/revolver/knife/handle_shield(mob/user, var/on_back, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
|
if(default_parry_check(user, attacker, damage_source) && prob(20))
|
|
user.visible_message(SPAN_DANGER("\The [user] parries [attack_text] with \the [src]!"))
|
|
playsound(user.loc, "punchmiss", 50, 1)
|
|
return TRUE
|
|
return FALSE
|