Files
a1e55d0958 Right Arms of the Broken World - Tajara Gun Resprites (#21743)
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>
2026-02-17 16:30:22 +00:00

282 lines
9.2 KiB
Plaintext

/obj/item/gun/projectile/heavysniper
name = "anti-materiel rifle"
desc = "The PTR-7 is man-portable anti-armor rifle fitted with a high-powered scope, capable of penetrating through most windows, airlocks, and non-reinforced walls with ease."
desc_extended = "A single-shot, bolt-action anachronism in an age of energy weapons, the PTR-7 was originally developed to combat exosuits, either by disabling critical systems \
or killing the pilot. Firing a high-velocity 14.5mm cartridge designed to defeat heavy armor, the PTR-7 boasts penetrative power unmatched by most in its class, though recent advancements \
in composites have rendered the weapon less effective at its intended purpose. Nonetheless, it still sees use among some groups as a general-purpose anti-materiel rifle."
icon = 'icons/obj/guns/heavysniper.dmi'
icon_state = "heavysniper"
item_state = "heavysniper"
w_class = WEIGHT_CLASS_BULKY
force = 15
slot_flags = SLOT_BACK
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
caliber = "14.5mm"
recoil = 4 //extra kickback
handle_casings = HOLD_CASINGS
load_method = SINGLE_CASING
max_shells = 1
ammo_type = /obj/item/ammo_casing/a145
//+2 accuracy over the LWAP because only one shot
accuracy = -3
offhand_accuracy = -1
scoped_accuracy = 4
var/bolt_open = 0
var/has_scope = TRUE
is_wieldable = TRUE
fire_sound = 'sound/weapons/gunshot/gunshot_dmr.ogg'
recoil_wielded = 2
accuracy_wielded = -1
/obj/item/gun/projectile/heavysniper/get_ammo()
var/ammo_count = 0
for(var/thing in loaded)
var/obj/item/ammo_casing/AC = thing
if(AC.BB) // my favourite band - geeves
ammo_count++
return ammo_count
/obj/item/gun/projectile/heavysniper/update_icon()
..()
if(bolt_open)
icon_state = "heavysniper-open"
else
icon_state = "heavysniper"
/obj/item/gun/projectile/heavysniper/unique_action(mob/user as mob)
bolt_open = !bolt_open
if(bolt_open)
playsound(src.loc, 'sound/weapons/blade_open.ogg', 50, 1)
if(chambered)
to_chat(user, SPAN_NOTICE("You work the bolt open, ejecting [chambered]!"))
chambered.forceMove(get_turf(src))
loaded -= chambered
chambered = null
else
to_chat(user, SPAN_NOTICE("You work the bolt open."))
else
to_chat(user, SPAN_NOTICE("You work the bolt closed."))
playsound(src.loc, 'sound/weapons/blade_close.ogg', 50, 1)
bolt_open = 0
add_fingerprint(user)
update_icon()
/obj/item/gun/projectile/heavysniper/special_check(mob/user)
if(bolt_open)
to_chat(user, SPAN_WARNING("You can't fire [src] while the bolt is open!"))
return 0
if(!wielded)
to_chat(user, SPAN_WARNING("You can't fire without stabilizing the rifle!"))
return 0
return ..()
/obj/item/gun/projectile/heavysniper/load_ammo(var/obj/item/A, mob/user)
if(!bolt_open)
return
..()
/obj/item/gun/projectile/heavysniper/unload_ammo(mob/user, allow_dump = TRUE, drop_mag = FALSE)
if(!bolt_open)
return
..()
/obj/item/gun/projectile/heavysniper/verb/scope()
set category = "Object.Held"
set name = "Use Scope"
set src in usr
if(!has_scope)
to_chat(usr, SPAN_WARNING("\The [src] doesn't have a scope!"))
return
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/heavysniper/unathi
name = "hegemony slugger"
desc = "An incredibly large firearm, produced by an Ouerean Guild. Uses custom slugger rounds."
icon = 'icons/obj/guns/unathi_slugger.dmi'
icon_state = "slugger"
item_state = "slugger"
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 4)
w_class = WEIGHT_CLASS_HUGE
fire_sound = 'sound/effects/Explosion1.ogg'
caliber = "slugger"
ammo_type = /obj/item/ammo_casing/slugger
magazine_type = null
has_scope = FALSE
fire_delay = ROF_UNWIELDY
/obj/item/gun/projectile/heavysniper/unathi/update_icon()
..()
if(bolt_open && length(loaded))
icon_state = "slugger-open-loaded"
else if(bolt_open && !length(loaded))
icon_state = "slugger-open"
else
icon_state = "slugger"
/obj/item/gun/projectile/heavysniper/unathi/handle_post_fire(mob/user)
..()
if(ishuman(user))
var/mob/living/carbon/human/H = user
var/has_online_rig = H.wearing_rig && !H.wearing_rig.offline
if(H.mob_size < 10 && !has_online_rig) // smaller than an unathi
H.visible_message(SPAN_WARNING("\The [src] goes flying out of \the [H]'s hand!"), SPAN_WARNING("\The [src] flies out of your hand!"))
H.drop_item(src)
src.throw_at(get_edge_target_turf(src, REVERSE_DIR(H.dir)), 3, 3)
var/obj/item/organ/external/LH = H.get_organ(BP_L_HAND)
var/obj/item/organ/external/RH = H.get_organ(BP_R_HAND)
var/active_hand = H.hand
if(active_hand)
LH.take_damage(30)
else
RH.take_damage(30)
/obj/item/gun/projectile/heavysniper/tranq
name = "tranquilizer rifle"
desc = "A scoped tranquilizer dart gun, with a torpor educing payload."
desc_extended = "Designed and sold by Zeng-Hu Pharmaceuticals and produced on contract by Zavodskoi's Kumar Arms subsidiary, the rifle has quietly become ubiquitous among xenobiological researchers. \
While the weapon platform itself is expensive for a dart gun, users have come to adore it thanks to the benefit of its conditionally cheap ammo. Pricey off the shelf, facilities often pay a fraction \
of the cost thanks to rebates and bulk order discounts."
icon = 'icons/obj/guns/tranqsniper.dmi'
icon_state = "tranqsniper"
item_state = "tranqsniper"
w_class = WEIGHT_CLASS_BULKY
force = 15
slot_flags = SLOT_BACK
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 2)
caliber = "PGS"
recoil = 1
suppressed = TRUE
can_unsuppress = FALSE
fire_sound = 'sound/weapons/gunshot/gunshot_light.ogg'
max_shells = 4
ammo_type = null
accuracy = -3
scoped_accuracy = 4
bolt_open = 0
muzzle_flash = 1
recoil_wielded = 1
accuracy_wielded = 2
/obj/item/gun/projectile/heavysniper/tranq/update_icon()
..()
if(bolt_open)
icon_state = "tranqsniper-open"
else
icon_state = "tranqsniper"
/obj/item/gun/projectile/dragunov
name = "adhomian marksman rifle"
desc = "A semi-automatic marksman rifle."
icon = 'icons/obj/guns/dragunov.dmi'
icon_state = "dragunov"
item_state = "dragunov"
desc_extended = "The Ho'taki Marksman Rifle was created by the Shastar Technical University, created through the reverse engineering of captured Tsarrayut'yan rifle. \
The rifle is commonly issued to the feared Das'nrra Marksmen."
w_class = WEIGHT_CLASS_BULKY
force = 15
slot_flags = SLOT_BACK
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 5)
caliber = "6.8mm"
recoil = 2
fire_sound = 'sound/weapons/gunshot/gunshot_svd.ogg'
load_method = MAGAZINE
max_shells = 10
worn_x_dimension = 48 //Uses 48x32 gun sprite
magazine_type = /obj/item/ammo_magazine/a68/hotaki
allowed_magazines = list(/obj/item/ammo_magazine/a68/hotaki)
accuracy = -4
scoped_accuracy = 3
is_wieldable = TRUE
recoil_wielded = 1
accuracy_wielded = 1
fire_delay = ROF_SUPERHEAVY
/obj/item/gun/projectile/dragunov/update_icon()
item_state = (ammo_magazine)? "dragunov" : "dragunov_nomag"
..() //Placed here so in-hand sprite reflects no magazine properly.
icon_state = (ammo_magazine)? "dragunov" : "dragunov_nomag"
/obj/item/gun/projectile/dragunov/special_check(mob/user)
if(!wielded)
to_chat(user, SPAN_WARNING("You can't fire without stabilizing the rifle!"))
return 0
return ..()
/obj/item/gun/projectile/dragunov/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/automatic/rifle/w556
name = "scout rifle"
desc = "The ZI Greyhound, the designated marksman rifle variant of Zavodskoi's ZI Bulldog carbine. Features a longer, heavier barrel \
with a low-power fixed-magnification optic. A vertical grip has been attached under the forend, to help offset the change in balance \
and improve handling."
icon = 'icons/obj/guns/w556.dmi'
icon_state = "w556rifle"
item_state = "w556rifle"
w_class = WEIGHT_CLASS_BULKY
force = 15
slot_flags = SLOT_BACK
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3)
caliber = "a556"
recoil = 4
load_method = MAGAZINE
fire_sound = 'sound/weapons/gunshot/gunshot_dmr.ogg'
max_shells = 10
ammo_type = /obj/item/ammo_casing/a556/ap
magazine_type = /obj/item/ammo_magazine/a556/ap
allowed_magazines = list(/obj/item/ammo_magazine/a556, /obj/item/ammo_magazine/a556/ap)
accuracy = -4
scoped_accuracy = 3
recoil_wielded = 2
accuracy_wielded = 1
multi_aim = 0 //Definitely a fuck no. Being able to target one person at this range is plenty.
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=ROF_SUPERHEAVY, fire_delay_wielded=ROF_HEAVY),
list(mode_name="2-round bursts", burst=2, burst_accuracy=list(0,-1,-1), dispersion=list(0, 8))
)
/obj/item/gun/projectile/automatic/rifle/w556/update_icon()
..()
if(ammo_magazine)
icon_state = "w556rifle"
else
icon_state = "w556rifle-empty"
/obj/item/gun/projectile/automatic/rifle/w556/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!"))