mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-21 12:02:31 +01:00
Resprites 3 Tajaran rifles, expanding them to use a 48x32 canvas, and brings them in-line with lore as written in terms of weapon design history. Additionally, adds 6.8mm in the form of the Tajaran Z33 Tamparii cartridge to further separate Tajara and Human history and arms development. All weapon sprites are made by me, except the ba and ss sling which was borrowed from the Dominian rifle sprites. Special thanks to Elorg for help in making these not look awful. <details><summary>Z33 Tamparii</summary> <p> <img width="331" height="332" alt="image" src="https://github.com/user-attachments/assets/f9892dc8-9c6d-45c6-8779-3ad3e39abaed" /> An old caliber that continues to show its usefulness. The compromise between weight and firepower, as well as room to change the powder load has seen the cartridge remain in service across Adhomai. </p> </details> <details><summary>Tsarrayut Rifle (PRA)</summary> <p> <img width="572" height="387" alt="image" src="https://github.com/user-attachments/assets/53327f3b-4b87-415e-8215-b1c2ccc08c9c" /> Redesigned to a general magazine-fed rifle. Not meant to be flashy or cool, simply easy to mass-produce and train conscripts. Additionally, still takes old bolt action rifle clips. </p> </details> <details><summary>Hotaki Marksman Rifle (ALA)</summary> <p> <img width="586" height="400" alt="image" src="https://github.com/user-attachments/assets/c08986ec-1134-4869-8dc2-36b981a211f9" /> Carries many of the same lines and design from the Tsarrayut, especially in the receiver. However, it was modified to be a bullpup for a longer barrel. Higher bullet velocity for a similar overall length; perfect for a marksman harassing down an enemy. </p> </details> <details><summary>Mrrazhak Assault Rifle (ALA)</summary> <p> <img width="483" height="332" alt="image" src="https://github.com/user-attachments/assets/3f0a2885-49bb-418b-b956-4d2f89a60b40" /> Pretty much a shortened Hotaki. Intended to have a similar barrel length to the Tsarrayut, but a shorter overall gun. </p> </details> WIP for the following items: - [x] Golden Mrrazhak - [x] Cartridge balancing - [x] Addition/clean-up with uplink items - [x] Addition/clean-up with ghost roles --------- Signed-off-by: CatsinHD <31459154+CatsinHD@users.noreply.github.com> Signed-off-by: Wildkins <john.wildkins@gmail.com> Co-authored-by: Wildkins <john.wildkins@gmail.com>
435 lines
15 KiB
Plaintext
435 lines
15 KiB
Plaintext
/obj/item/gun/projectile/shotgun/pump/rifle
|
|
name = "bolt action rifle"
|
|
desc = "A cheap ballistic rifle, often found in the hands of Tajaran conscripts."
|
|
icon = 'icons/obj/guns/moistnugget.dmi'
|
|
icon_state = "moistnugget"
|
|
item_state = "moistnugget"
|
|
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
|
fire_sound = 'sound/weapons/gunshot/gunshot_rifle.ogg'
|
|
caliber = "6.8mm"
|
|
ammo_type = /obj/item/ammo_casing/a68
|
|
magazine_type = /obj/item/ammo_magazine/boltaction/adhomai
|
|
max_shells = 5
|
|
|
|
rack_sound = 'sound/weapons/riflebolt.ogg'
|
|
rack_verb = "pull back the bolt on"
|
|
cycle_anim = FALSE
|
|
|
|
can_bayonet = TRUE
|
|
knife_x_offset = 23
|
|
knife_y_offset = 13
|
|
can_sawoff = TRUE
|
|
sawnoff_workmsg = "shorten the barrel and stock"
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed
|
|
name = "strange rifle"
|
|
desc = DESC_PARENT
|
|
can_sawoff = FALSE
|
|
load_method = MAGAZINE
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/handle_pump_loading()
|
|
if(ammo_magazine && length(ammo_magazine.stored_ammo))
|
|
var/obj/item/ammo_casing/AC = ammo_magazine.stored_ammo[1] //load next casing.
|
|
if(AC)
|
|
AC.forceMove(src)
|
|
ammo_magazine.stored_ammo -= AC
|
|
chambered = AC
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/blank
|
|
desc = "A replica of a traditional Adhomian bolt action rifle. It has the seal of the Grand Romanovich Casino on its stock."
|
|
ammo_type = /obj/item/ammo_casing/a68/blank
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/scope
|
|
name = "sniper bolt action rifle"
|
|
desc = "A cheap ballistic rifle, often found in the hands of Tajaran conscripts. This one has a telescopic sight attached to it."
|
|
icon = 'icons/obj/guns/bolt_scope.dmi'
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/scope/verb/scope()
|
|
set category = "Object.Held"
|
|
set name = "Use Scope"
|
|
set src in usr
|
|
|
|
if(wielded)
|
|
toggle_scope(2.0, usr)
|
|
else
|
|
to_chat(usr, SPAN_WARNING ("You can't look through the scope without stabilizing the rifle!"))
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/saw_off(mob/user, obj/item/tool)
|
|
icon = 'icons/obj/guns/obrez.dmi'
|
|
icon_state = "obrez"
|
|
item_state = "obrez"
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
recoil = 2
|
|
accuracy = -2
|
|
slot_flags &= ~SLOT_BACK
|
|
slot_flags |= (SLOT_BELT|SLOT_HOLSTER)
|
|
can_bayonet = FALSE
|
|
if(bayonet)
|
|
qdel(bayonet)
|
|
bayonet = null
|
|
update_icon()
|
|
name = "sawn-off bolt action rifle"
|
|
desc = "A shortened bolt action rifle, not really acurate."
|
|
to_chat(user, SPAN_WARNING("You shorten the barrel and stock of the rifle!"))
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/obrez
|
|
name = "sawn-off bolt action rifle"
|
|
desc = "A shortened bolt action rifle, not really accurate."
|
|
icon = 'icons/obj/guns/obrez.dmi'
|
|
icon_state = "obrez"
|
|
item_state = "obrez"
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
recoil = 2
|
|
accuracy = -2
|
|
slot_flags = SLOT_BELT|SLOT_HOLSTER
|
|
can_bayonet = FALSE
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/pipegun
|
|
name = "pipegun"
|
|
desc = "An excellent weapon for flushing out tunnel rats and enemy assistants, but its rifling leaves much to be desired."
|
|
icon = 'icons/obj/guns/pipegun.dmi'
|
|
icon_state = "pipegun"
|
|
item_state = "pipegun"
|
|
caliber = "a556"
|
|
ammo_type = null
|
|
magazine_type = null
|
|
allowed_magazines = list(/obj/item/ammo_magazine/a556/makeshift)
|
|
load_method = MAGAZINE
|
|
max_shells = 7
|
|
can_sawoff = FALSE
|
|
|
|
needspin = FALSE
|
|
has_safety = FALSE
|
|
|
|
slot_flags = SLOT_BACK|SLOT_S_STORE // can be stored in suit slot due to built in sling
|
|
|
|
jam_chance = -10
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/pipegun/condition_hints(mob/user, distance, is_adjacent, infix, suffix)
|
|
. = list()
|
|
. += ..()
|
|
switch(jam_chance)
|
|
if(10 to 20)
|
|
. += SPAN_NOTICE("\The [src] is starting to accumulate fouling. Might want to grab a rag.")
|
|
if(20 to 40)
|
|
. += SPAN_WARNING("\The [src] looks reasonably fouled up. Maybe you should clean it with a rag.")
|
|
if(40 to 80)
|
|
. += SPAN_WARNING("\The [src] is starting to look quite gunked up. You should clean it with a rag.")
|
|
if(80 to INFINITY)
|
|
. += SPAN_DANGER("\The [src] is completely fouled. You're going to be extremely lucky to get a shot off. Clean it with a rag.")
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/pipegun/attackby(obj/item/attacking_item, mob/user)
|
|
if(istype(attacking_item, /obj/item/reagent_containers/glass/rag))
|
|
if(!jam_chance || jam_chance == initial(jam_chance))
|
|
to_chat(user, SPAN_WARNING("There's no fouling present on \the [src]."))
|
|
return
|
|
user.visible_message("<b>[user]</b> starts cleaning \the [src] with \the [attacking_item].", SPAN_NOTICE("You start cleaning \the [src] with \the [attacking_item]."))
|
|
if(do_after(user, jam_chance * 5))
|
|
to_chat(user, SPAN_WARNING("You completely clean \the [src]."))
|
|
jam_chance = initial(jam_chance)
|
|
return
|
|
return ..()
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/pipegun/handle_post_fire(mob/user)
|
|
. = ..()
|
|
jam_chance = min(jam_chance + 5, 100)
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/dominia
|
|
name = "dominian sniper rifle"
|
|
desc = "A precision rifle used by snipers and sharpshooters of the Imperial Army. One of the few modern military-grade weapons to use a bolt for its action."
|
|
desc_extended = "The MPMR-08/2 is a precisely machined and meticulously designed rifle which prioritizes accuracy and precision over rate of fire. \
|
|
Outside of the Imperial Army, it is commonly seen in the hands of competition shooters."
|
|
icon = 'icons/obj/guns/dominia_bolt_action.dmi'
|
|
icon_state = "dom_bolt_action"
|
|
item_state = "dom_bolt_action"
|
|
caliber = "a762"
|
|
ammo_type = /obj/item/ammo_casing/a762
|
|
magazine_type = /obj/item/ammo_magazine/boltaction
|
|
load_method = SPEEDLOADER
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/dominia/verb/scope()
|
|
set category = "Object.Held"
|
|
set name = "Use Scope"
|
|
set src in usr
|
|
|
|
if(wielded)
|
|
toggle_scope(2.0, usr)
|
|
else
|
|
to_chat(usr, SPAN_WARNING("You can't look through the scope without stabilizing the rifle!"))
|
|
|
|
/obj/item/gun/projectile/contender
|
|
name = "pocket rifle"
|
|
desc = "A perfect, pristine replica of an ancient one-shot hand-cannon. This one has been modified to work almost like a bolt-action."
|
|
icon = 'icons/obj/guns/pockrifle.dmi'
|
|
icon_state = "pockrifle"
|
|
item_state = "pockrifle"
|
|
caliber = "a556"
|
|
handle_casings = HOLD_CASINGS
|
|
max_shells = 1
|
|
ammo_type = /obj/item/ammo_casing/a556
|
|
magazine_type = /obj/item/ammo_magazine/a556
|
|
slot_flags = SLOT_BELT|SLOT_HOLSTER
|
|
load_method = SINGLE_CASING
|
|
fire_sound = 'sound/weapons/gunshot/gunshot3.ogg'
|
|
var/retracted_bolt = 0
|
|
var/icon_retracted = "pockrifle-empty"
|
|
|
|
/obj/item/gun/projectile/contender/special_check(mob/user)
|
|
if(retracted_bolt)
|
|
to_chat(user, SPAN_WARNING("You can't fire \the [src] while the bolt is open!"))
|
|
return 0
|
|
return ..()
|
|
|
|
/obj/item/gun/projectile/contender/unique_action(mob/user as mob)
|
|
if(chambered)
|
|
chambered.forceMove(get_turf(src))
|
|
chambered = null
|
|
var/obj/item/ammo_casing/C = loaded[1]
|
|
loaded -= C
|
|
|
|
if(!retracted_bolt)
|
|
to_chat(user, SPAN_NOTICE("You cycle back the bolt on \the [src], ejecting the casing and allowing you to reload."))
|
|
playsound(user, 'sound/weapons/riflebolt.ogg', 60, 1)
|
|
icon_state = icon_retracted
|
|
item_state = icon_retracted
|
|
retracted_bolt = 1
|
|
user.update_inv_l_hand()
|
|
user.update_inv_r_hand()
|
|
return 1
|
|
|
|
else if(retracted_bolt && loaded.len)
|
|
to_chat(user, SPAN_NOTICE("You cycle the loaded round into the chamber, allowing you to fire."))
|
|
|
|
else
|
|
to_chat(user, SPAN_NOTICE("You cycle the bolt back into position, leaving the gun empty."))
|
|
|
|
icon_state = initial(icon_state)
|
|
item_state = initial(item_state)
|
|
|
|
user.update_inv_l_hand()
|
|
user.update_inv_r_hand()
|
|
|
|
retracted_bolt = 0
|
|
|
|
/obj/item/gun/projectile/contender/load_ammo(var/obj/item/A, mob/user)
|
|
if(!retracted_bolt)
|
|
to_chat(user, SPAN_NOTICE("You can't load \the [src] without cycling the bolt."))
|
|
return
|
|
..()
|
|
|
|
/obj/item/gun/projectile/contender/unload_ammo(mob/user, allow_dump = TRUE, drop_mag = FALSE)
|
|
if(!retracted_bolt)
|
|
to_chat(user, SPAN_NOTICE("You can't unload \the [src] without cycling the bolt."))
|
|
return
|
|
..()
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/vintage
|
|
name = "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 = 'icons/obj/guns/springfield.dmi'
|
|
icon_state = "springfield"
|
|
item_state = "springfield"
|
|
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 3)
|
|
fire_sound = 'sound/weapons/gunshot/gunshot_rifle.ogg'
|
|
slot_flags = SLOT_BACK
|
|
load_method = SINGLE_CASING|SPEEDLOADER
|
|
handle_casings = HOLD_CASINGS
|
|
caliber = "30-06 govt"
|
|
ammo_type = /obj/item/ammo_casing/vintage
|
|
magazine_type = /obj/item/ammo_magazine/boltaction/vintage
|
|
can_bayonet = TRUE
|
|
var/open_bolt = 0
|
|
var/obj/item/ammo_magazine/boltaction/vintage/has_clip
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/vintage/unique_action(mob/living/user as mob)
|
|
if(wielded)
|
|
pump(user)
|
|
if(open_bolt && has_clip)
|
|
if(has_clip.stored_ammo.len > 0)
|
|
load_ammo(has_clip, user)
|
|
src.ClearOverlays()
|
|
if(!has_clip.stored_ammo.len)
|
|
AddOverlays("springfield-clip-empty")
|
|
else if(has_clip.stored_ammo.len <= 3)
|
|
AddOverlays("springfield-clip-half")
|
|
else
|
|
AddOverlays("springfield-clip-full")
|
|
else
|
|
to_chat(user, SPAN_WARNING("There is no ammo in \the [has_clip.name]!"))
|
|
else if(!open_bolt)
|
|
to_chat(user, SPAN_WARNING("The bolt on \the [src.name] is closed! You'll have to grip it with both hands to rack it."))
|
|
else
|
|
to_chat(user, SPAN_WARNING("There is no clip in \the [src.name]!"))
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/vintage/pump(mob/M as mob)
|
|
if(!open_bolt)
|
|
open_bolt = 1
|
|
icon_state = "springfield-openbolt"
|
|
playsound(M, rack_sound, 60, 1)
|
|
update_icon()
|
|
return
|
|
open_bolt = 0
|
|
icon_state = "springfield"
|
|
playsound(M, rack_sound, 60, 1)
|
|
if(has_clip)
|
|
has_clip.forceMove(get_turf(src))
|
|
has_clip = null
|
|
ClearOverlays()
|
|
|
|
if(chambered)//We have a shell in the chamber
|
|
chambered.forceMove(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/gun/projectile/shotgun/pump/rifle/vintage/attackby(obj/item/attacking_item, mob/user)
|
|
if(istype(attacking_item, /obj/item/ammo_magazine/boltaction/vintage))
|
|
if(!open_bolt)
|
|
to_chat(user, SPAN_NOTICE("You need to open the bolt of \the [src] first."))
|
|
return
|
|
if(!has_clip)
|
|
user.drop_from_inventory(attacking_item, src)
|
|
has_clip = attacking_item
|
|
to_chat(user, SPAN_NOTICE("You load the clip into \the [src]."))
|
|
if(!has_clip.stored_ammo.len)
|
|
AddOverlays("springfield-clip-empty")
|
|
else if(has_clip.stored_ammo.len <= 3)
|
|
AddOverlays("springfield-clip-half")
|
|
else
|
|
AddOverlays("springfield-clip-full")
|
|
else
|
|
to_chat(user, SPAN_NOTICE("There's already a clip in \the [src]."))
|
|
|
|
else
|
|
..()
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/vintage/load_ammo(var/obj/item/A, mob/user)
|
|
if(!open_bolt)
|
|
to_chat(user, SPAN_WARNING("The bolt is closed on \the [src]!"))
|
|
return
|
|
..()
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/vintage/Fire(atom/target, mob/living/user, clickparams, pointblank=0, reflex=0)
|
|
if(open_bolt)
|
|
to_chat(user, SPAN_WARNING("The bolt is open on \the [src]!"))
|
|
return
|
|
..()
|
|
|
|
/obj/item/gun/projectile/gauss
|
|
name = "gauss thumper"
|
|
desc = "An outdated gauss weapon which sees sparing use in modern times."
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
slot_flags = SLOT_BACK
|
|
magazine_type = /obj/item/ammo_magazine/gauss
|
|
allowed_magazines = list(/obj/item/ammo_magazine/gauss)
|
|
icon = 'icons/obj/guns/gauss_thumper.dmi'
|
|
icon_state = "gauss_thumper"
|
|
item_state = "gauss_thumper"
|
|
caliber = "gauss"
|
|
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
|
|
fire_sound = SFX_SHOOT_GAUSS
|
|
load_method = MAGAZINE
|
|
handle_casings = DELETE_CASINGS
|
|
|
|
force = 15
|
|
can_bayonet = TRUE
|
|
knife_x_offset = 23
|
|
knife_y_offset = 13
|
|
|
|
fire_delay = ROF_UNWIELDY
|
|
accuracy = -1
|
|
|
|
fire_delay_wielded = ROF_HEAVY
|
|
accuracy_wielded = 2
|
|
|
|
is_wieldable = TRUE
|
|
|
|
/obj/item/gun/projectile/gauss/update_icon()
|
|
..()
|
|
icon_state = (ammo_magazine)? "gauss_thumper" : "gauss_thumper-e"
|
|
|
|
/obj/item/gun/energy/gauss/mounted/mech
|
|
name = "heavy gauss cannon"
|
|
desc = "An outdated and power hungry gauss cannon, modified to deliver high explosive rounds at high velocities."
|
|
icon = 'icons/obj/guns/gauss_thumper.dmi'
|
|
icon_state = "gauss_thumper"
|
|
fire_sound = SFX_SHOOT_GAUSS
|
|
fire_delay = ROF_UNWIELDY
|
|
charge_meter = 0
|
|
max_shots = 3
|
|
charge_cost = 500
|
|
projectile_type = /obj/projectile/bullet/gauss/highex
|
|
self_recharge = TRUE
|
|
use_external_power = TRUE
|
|
recharge_time = 12
|
|
needspin = FALSE
|
|
|
|
/obj/item/gun/projectile/gauss/carbine
|
|
name = "gauss carbine"
|
|
desc = "A simple gun utilizing the gauss technology. It is still reliable and cheap despite being outdated."
|
|
icon = 'icons/obj/guns/gauss_carbine.dmi'
|
|
icon_state = "gauss_carbine"
|
|
item_state = "gauss_carbine"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
slot_flags = SLOT_BACK
|
|
ammo_type = /obj/item/ammo_casing/gauss/carbine
|
|
load_method = SINGLE_CASING
|
|
handle_casings = HOLD_CASINGS
|
|
max_shells = 1
|
|
|
|
fire_delay_wielded = ROF_INTERMEDIATE
|
|
accuracy_wielded = 1
|
|
|
|
/obj/item/gun/projectile/gauss/carbine/update_icon()
|
|
..()
|
|
if(loaded.len)
|
|
icon_state = "gauss_carbine"
|
|
else
|
|
icon_state = "gauss_carbine-e"
|
|
|
|
/obj/item/gun/projectile/gauss/carbine/special_check(mob/user)
|
|
if(!wielded)
|
|
to_chat(user, SPAN_WARNING("You can't fire without stabilizing \the [src]!"))
|
|
return 0
|
|
return ..()
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/lever_action
|
|
name = "lever action rifle"
|
|
desc = "A lever action rifle with a side-loading port, these are still popular with frontiersmen for hunting and self-defense purposes."
|
|
icon = 'icons/obj/guns/leveraction.dmi'
|
|
icon_state = "leveraction"
|
|
item_state = "leveraction"
|
|
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
|
fire_sound = 'sound/weapons/gunshot/gunshot_rifle.ogg'
|
|
caliber = "45-70 govt"
|
|
ammo_type = /obj/item/ammo_casing/govt
|
|
max_shells = 4
|
|
load_method = SINGLE_CASING
|
|
handle_casings = HOLD_CASINGS
|
|
|
|
cycle_anim = TRUE
|
|
|
|
rack_sound = 'sound/weapons/reloads/lever_action_cock1.ogg'
|
|
rack_verb = "work the lever on"
|
|
can_bayonet = FALSE
|
|
can_sawoff = FALSE
|
|
|
|
/obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/crackrifle
|
|
name = "crack rifle"
|
|
desc = "A heavy bolt-action rifle of Moghesian manufacture."
|
|
desc_extended = "Manufactured by the Azarak Kingdom in 2350, the Azarak-96 'Crack Rifle' is a bolt-action rifle of Moghesian manufacture, easily recognizable by its long bayonet and large magazine wrapped around its trigger guard.\
|
|
This heavy but powerful weapon is mostly known for its use by the common warrior of the Traditionalist Coalition during the Contact War.\
|
|
Many of these rifles survived the ravages of the Contact War, a testament to their reliability."
|
|
icon = 'icons/obj/guns/unathi_ballistics.dmi'
|
|
icon_state = "crackrifle"
|
|
item_state = "crackrifle"
|
|
caliber = "5.8mm"
|
|
magazine_type = /obj/item/ammo_magazine/crackrifle
|
|
allowed_magazines = list(/obj/item/ammo_magazine/crackrifle)
|
|
load_method = MAGAZINE
|