Files
CatsinHD 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

568 lines
17 KiB
Plaintext

/obj/item/ammo_casing/a357
desc = "A .357 bullet casing."
caliber = "357"
projectile_type = /obj/projectile/bullet/pistol/revolver
/obj/item/ammo_casing/a454
desc = "A .454 bullet casing."
caliber = "454"
projectile_type = /obj/projectile/bullet/pistol/strong
/obj/item/ammo_casing/a50
desc = "A .50AE bullet casing."
caliber = ".50"
projectile_type = /obj/projectile/bullet/pistol/strong
/obj/item/ammo_casing/a75
desc = "A 20mm bullet casing."
caliber = "75"
projectile_type = /obj/projectile/bullet/gyro
/obj/item/ammo_casing/c38
desc = "A .38 bullet casing."
caliber = "38"
projectile_type = /obj/projectile/bullet/pistol
max_stack = 6
/obj/item/ammo_casing/c38/rubber
desc = "A .38 rubber bullet casing."
projectile_type = /obj/projectile/bullet/pistol/rubber
icon_state = "r-casing"
spent_icon = "r-casing-spent"
/obj/item/ammo_casing/c38/emp
name = ".38 haywire round"
desc = "A .38 bullet casing fitted with a single-use ion pulse generator."
projectile_type = /obj/projectile/ion/small
icon_state = "empcasing"
matter = list(DEFAULT_WALL_MATERIAL = 130, MATERIAL_URANIUM = 100)
/obj/item/ammo_casing/c38/spent/Initialize()
. = ..()
expend()
/obj/item/ammo_casing/trod
desc = "hyperdense tungsten rod residue."
icon_state = "trod"
caliber = "trod"
projectile_type = /obj/projectile/bullet/trod
/obj/item/ammo_casing/c9mm/polymer
desc = "A 9mm polymer bullet casing."
caliber = "9mm"
projectile_type = /obj/projectile/bullet/pistol/polymer
max_stack = 15
/obj/item/ammo_casing/c9mm
desc = "A 9mm bullet casing."
caliber = "9mm"
projectile_type = /obj/projectile/bullet/pistol
max_stack = 15
/obj/item/ammo_casing/c9mm/flash
desc = "A 9mm flash shell casing."
projectile_type = /obj/projectile/energy/flash
/obj/item/ammo_casing/c45/revolver
desc = "A .45 revolver bullet casing."
max_stack = 6
projectile_type = /obj/projectile/bullet/pistol/revolver
/obj/item/ammo_casing/c9mm/rubber
desc = "A 9mm rubber bullet casing."
projectile_type = /obj/projectile/bullet/pistol/rubber
icon_state = "r-casing"
spent_icon = "r-casing-spent"
/obj/item/ammo_casing/c9mm/practice
desc = "A 9mm practice bullet casing."
projectile_type = /obj/projectile/bullet/pistol/practice
/obj/item/ammo_casing/c10mm
desc = "A 10mm bullet casing."
caliber = "10mm"
projectile_type = /obj/projectile/bullet/pistol
max_stack = 10
/obj/item/ammo_casing/c10mm/rubber
desc = "A 10mm rubber bullet casing."
projectile_type = /obj/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/c45
desc = "A .45 bullet casing."
caliber = ".45"
projectile_type = /obj/projectile/bullet/pistol/medium
max_stack = 10
/obj/item/ammo_casing/c45/practice
desc = "A .45 practice bullet casing."
projectile_type = /obj/projectile/bullet/pistol/practice
/obj/item/ammo_casing/c45/rubber
desc = "A .45 rubber bullet casing."
projectile_type = /obj/projectile/bullet/pistol/rubber
icon_state = "r-casing"
spent_icon = "r-casing-spent"
/obj/item/ammo_casing/c45/flash
desc = "A .45 flash shell casing."
projectile_type = /obj/projectile/energy/flash
/obj/item/ammo_casing/a12mm
desc = "A 12mm bullet casing."
caliber = "12mm"
projectile_type = /obj/projectile/bullet/pistol/medium
max_stack = 7
/obj/item/ammo_casing/smg10mm
desc = "A 10mm bullet casing."
caliber = "10mm"
projectile_type = /obj/projectile/bullet/pistol
/obj/item/ammo_casing/c46mm
desc = "A 4.6mm bullet casing."
caliber = "4.6mm"
projectile_type = /obj/projectile/bullet/pistol
max_stack = 15
/obj/item/ammo_casing/shotgun
name = "shotgun slug"
desc = "A 12-gauge slug."
icon_state = "slshell"
spent_icon = "slshell-spent"
caliber = "shotgun"
projectile_type = /obj/projectile/bullet/shotgun
matter = list(DEFAULT_WALL_MATERIAL = 360)
reload_sound = SFX_RELOAD_SHOTGUN
drop_sound = SFX_CASING_DROP_SHOTGUN
max_stack = 8
/obj/item/ammo_casing/shotgun/used/Initialize()
. = ..()
expend()
pixel_x = rand(-10, 10)
pixel_y = rand(-10, 10)
/obj/item/ammo_casing/shotgun/pellet
name = "shotgun shell"
desc = "A 12-gauge shell."
icon_state = "gshell"
spent_icon = "gshell-spent"
projectile_type = /obj/projectile/bullet/pellet/shotgun
matter = list(DEFAULT_WALL_MATERIAL = 360)
/obj/item/ammo_casing/shotgun/pellet/used/Initialize()
. = ..()
expend()
pixel_x = rand(-10, 10)
pixel_y = rand(-10, 10)
/obj/item/ammo_casing/shotgun/blank
name = "shotgun shell"
desc = "A 12-gauge blank shell."
icon_state = "blshell"
spent_icon = "blshell-spent"
projectile_type = /obj/projectile/bullet/blank
matter = list(DEFAULT_WALL_MATERIAL = 90)
/obj/item/ammo_casing/shotgun/practice
name = "shotgun shell"
desc = "A 12-gauge practice shell."
icon_state = "pshell"
spent_icon = "pshell-spent"
projectile_type = /obj/projectile/bullet/shotgun/practice
matter = list(MATERIAL_STEEL = 90)
/obj/item/ammo_casing/shotgun/beanbag
name = "beanbag shell"
desc = "A 12-gauge beanbag shell."
icon_state = "bshell"
spent_icon = "bshell-spent"
projectile_type = /obj/projectile/bullet/shotgun/beanbag
matter = list(DEFAULT_WALL_MATERIAL = 180)
//Can stun in one hit if aimed at the head, but
//is blocked by clothing that stops tasers and is vulnerable to EMP
/obj/item/ammo_casing/shotgun/stunshell
name = "stun shell"
desc = "A 12-gauge taser cartridge."
icon_state = "stunshell"
spent_icon = "stunshell-spent"
projectile_type = /obj/projectile/energy/electrode/stunshot
matter = list(DEFAULT_WALL_MATERIAL = 360, MATERIAL_GLASS = 720)
reload_sound = 'sound/weapons/reload_shell_emp.ogg'
/obj/item/ammo_casing/shotgun/stunshell/emp_act(severity)
. = ..()
if(prob(100/severity))
BB = null
update_icon()
//Does not stun, only blinds, but has area of effect.
/obj/item/ammo_casing/shotgun/flash
name = "flash shell"
desc = "A 12-gauge chemical shell used to signal distress or provide illumination."
icon_state = "fshell"
spent_icon = "fshell-spent"
projectile_type = /obj/projectile/energy/flash/flare
matter = list(DEFAULT_WALL_MATERIAL = 90, MATERIAL_GLASS = 90)
reload_sound = 'sound/weapons/reload_shell_emp.ogg'
/obj/item/ammo_casing/shotgun/incendiary
name = "incendiary shell"
desc = "A 12-gauge incendiary shell."
icon_state = "ishell"
spent_icon = "ishell-spent"
projectile_type = /obj/projectile/bullet/shotgun/incendiary
matter = list(DEFAULT_WALL_MATERIAL = 450)
/obj/item/ammo_casing/shotgun/emp
name = "haywire slug"
desc = "A 12-gauge shotgun slug fitted with a single-use ion pulse generator."
icon_state = "empshell"
spent_icon = "empshell-spent"
projectile_type = /obj/projectile/ion
matter = list(DEFAULT_WALL_MATERIAL = 260, MATERIAL_URANIUM = 200)
reload_sound = 'sound/weapons/reload_shell_emp.ogg'
/obj/item/ammo_casing/shotgun/tracking
name = "tracking slug"
desc = "A 12-gauge shotgun slug fitted with a tracking implant, set to activate upon embedding flesh."
icon_state = "trackingshell"
spent_icon = "trackingshell-spent"
projectile_type = /obj/projectile/bullet/tracking
/obj/item/ammo_casing/shotgun/moghes
name = "wall shell"
desc = "The appropriately-named wall shell, made specifically for the Moghesian wall gun."
desc_extended = "This complicated and expensive shotgun shell fires both a solid slug and a hail of shots at the same time, making it a destructive and dangerous ammunition at all ranges, assuming the user can point in the target's general direction. Somehow it seems to somewhat fit in other shotgun type weaponry too."
icon_state = "moghes_shell"
spent_icon = "moghes_shell_spent"
projectile_type = /obj/projectile/bullet/shotgun/moghes
/obj/item/ammo_casing/tranq
name = "Plastic-Gas Shell"
desc = "A Plastic-Gas Shell (PGS) casing, for air powered weapons."
icon_state = "ishell"
spent_icon = "ishell-spent"
caliber = "PGS"
projectile_type = /obj/projectile/bullet/rifle/tranq
max_stack = 6
/obj/item/ammo_casing/a762
desc = "A 7.62mm bullet casing."
caliber = "a762"
projectile_type = /obj/projectile/bullet/rifle/a762
icon_state = "rifle-casing"
spent_icon = "rifle-casing-spent"
max_stack = 2
/obj/item/ammo_casing/a762/spent/Initialize()
. = ..()
expend()
/obj/item/ammo_casing/a68
desc = "A Z33 Tamparii bullet casing."
caliber = "6.8mm"
projectile_type = /obj/projectile/bullet/rifle/a68
icon_state = "rifle-casing"
spent_icon = "rifle-casing-spent"
max_stack = 5
/obj/item/ammo_casing/a68/spent/Initialize()
. = ..()
expend()
/obj/item/ammo_casing/a68/ap
desc = "A Z33r Tamparii bullet casing."
projectile_type = /obj/projectile/bullet/rifle/a68/ap
max_stack = 5
/obj/item/ammo_casing/a68/blank
desc = "A Z33t Tamparii blank casing."
projectile_type = /obj/projectile/bullet/blank
/obj/item/ammo_casing/a762/blank
desc = "A 7.62mm blank casing."
projectile_type = /obj/projectile/bullet/blank
/obj/item/ammo_casing/a145
name = "shell casing"
desc = "A 14.5mm shell."
caliber = "14.5mm"
projectile_type = /obj/projectile/bullet/rifle/a145
matter = list(DEFAULT_WALL_MATERIAL = 1250)
icon_state = "lcasing"
spent_icon = "lcasing-spent"
max_stack = 2
/obj/item/ammo_casing/a556
desc = "A 5.56mm bullet casing."
caliber = "a556"
projectile_type = /obj/projectile/bullet/rifle/a556
icon_state = "rifle-casing"
spent_icon = "rifle-casing-spent"
max_stack = 7
/obj/item/ammo_casing/a556/ap
desc = "A 5.56mm armor piercing round."
projectile_type = /obj/projectile/bullet/rifle/a556/ap
/obj/item/ammo_casing/a556/practice
desc = "A 5.56mm practice bullet casing."
projectile_type = /obj/projectile/bullet/rifle/a556/practice
/obj/item/ammo_casing/a556/polymer
desc = "A 5.56mm polymer bullet casing."
projectile_type = /obj/projectile/bullet/rifle/a556/polymer
/obj/item/ammo_casing/a556/blank
desc = "A 5.56mm blank casing."
projectile_type = /obj/projectile/bullet/blank
/obj/item/ammo_casing/a556/spent/Initialize()
. = ..()
expend()
/obj/item/ammo_casing/a65
desc = "A 6.5mm bullet casing."
desc_extended = "Designed by de Namur not long after the interstellar war, the 6.5mmx40mm cartridge, designed to fit the needs of Xanu's military while going away from the legacy rounds used by the Sol Alliance. This cartridge has been wildly successful, and has been adopted by the majority of the Coalition of Colonies and beyond."
caliber = "a65"
projectile_type = /obj/projectile/bullet/rifle/a65
icon_state = "rifle-casing"
spent_icon = "rifle-casing-spent"
max_stack = 7
/obj/item/ammo_casing/rocket
name = "rocket shell"
desc = "A high explosive designed to be fired from a launcher."
icon_state = "rocketshell"
projectile_type = /obj/item/missile
caliber = "rocket"
max_stack = 1
/obj/item/ammo_casing/rocket/konyang
icon_state = "kgm_rocket"
/obj/item/ammo_casing/chameleon
name = "chameleon bullets"
desc = "A set of bullets for the Chameleon Gun."
projectile_type = /obj/projectile/bullet/chameleon
caliber = ".45"
/obj/item/ammo_casing/cap
name = "cap"
desc = "A cap for children toys."
caliber = "caps"
color = "#FF0000"
projectile_type = /obj/projectile/bullet/pistol/cap
max_stack = 6
/obj/item/ammo_casing/flechette
desc = "A flechette casing."
icon = 'icons/obj/terminator.dmi'
icon_state = "flechette_casing"
caliber = "flechette"
projectile_type = /obj/projectile/bullet/flechette
max_stack = 4
/obj/item/ammo_casing/flechette/explosive
projectile_type = /obj/projectile/bullet/flechette/explosive
/obj/item/ammo_casing/vintage
projectile_type = /obj/projectile/bullet/rifle/vintage
desc = "A .30-06 Government bullet casing. It looks old, and you can barely understand the writing stamped on it."
caliber = "30-06 govt"
icon_state = "lcasing"
spent_icon = "lcasing-spent"
max_stack = 6
/obj/item/ammo_casing/vintage/spent/Initialize()
. = ..()
expend()
/obj/item/ammo_casing/govt
projectile_type = /obj/projectile/bullet/rifle/govt
desc = "A .45-70 Government bullet casing."
caliber = "45-70 govt"
icon_state = "gcasing"
spent_icon = "gcasing-spent"
max_stack = 4
/obj/item/ammo_casing/slugger
projectile_type = /obj/projectile/bullet/rifle/slugger
caliber = "slugger"
icon_state = "slugger-sharp"
spent_icon = "slugger-spent"
max_stack = 2
/obj/item/ammo_casing/gauss
name = "tungsten slug"
desc = "A heavy tungsten gauss slug."
caliber = "gauss"
icon_state = "tungstenslug"
spent_icon = "tungstenslug-spent"
projectile_type = /obj/projectile/bullet/gauss
max_stack = 2
/obj/item/ammo_casing/gauss/carbine
name = "compact tungsten slug"
desc = "A heavy tungsten gauss slug. This one has a casing adapated for carbine models."
projectile_type = /obj/projectile/bullet/gauss/carbine
/obj/item/ammo_casing/gauss/emp
name = "ion slug"
desc = "A heavy ion gauss slug."
icon_state = "empslug"
projectile_type = /obj/projectile/ion/gauss
reload_sound = 'sound/weapons/reload_shell_emp.ogg'
/obj/item/ammo_casing/plasma_slug
name = "plasma slug"
desc = "A plasma slug."
icon_state = "plasmaslug"
caliber = "plasma slug"
projectile_type = /obj/projectile/plasma
max_stack = 2
/obj/item/ammo_casing/plasma_bolt
name = "plasma bolt"
desc = "A plasma bolt."
icon_state = "plasmabolt"
caliber = "plasma bolt"
projectile_type = /obj/projectile/plasma/light
max_stack = 4
/obj/item/ammo_casing/cannon
name = "cannonball"
desc = "A solid metal projectile."
icon_state = "cannonball"
caliber = "cannon"
projectile_type = /obj/projectile/bullet/cannonball
matter = list(DEFAULT_WALL_MATERIAL = 800)
w_class = WEIGHT_CLASS_NORMAL
slot_flags = null
max_stack = 1
reload_sound = 'sound/weapons/reloads/shotgun_pump.ogg'
drop_sound = SFX_DROP
/obj/item/ammo_casing/cannon/explosive
name = "explosive cannonball"
desc = "A solid metal projectile loaded with an explosive charge."
icon_state = "cannonball_explosive"
projectile_type = /obj/projectile/bullet/cannonball/explosive
/obj/item/ammo_casing/cannon/canister
name = "canister shot"
desc = "A solid projectile filled with deadly shrapnel."
projectile_type = /obj/projectile/bullet/pellet/shotgun/canister
/obj/item/ammo_casing/nuke
name = "miniaturized nuclear warhead"
icon_state = "nuke"
caliber = "nuke"
w_class = WEIGHT_CLASS_NORMAL
slot_flags = null
desc = "A miniaturized version of a nuclear bomb."
projectile_type = /obj/projectile/bullet/nuke
drop_sound = SFX_DROP
max_stack = 2
/obj/item/ammo_casing/musket
name = "musket ball"
desc = "A solid ball made of lead."
icon_state = "musketball"
caliber = "musket"
projectile_type = /obj/projectile/bullet/pistol/strong
reload_sound = 'sound/weapons/reloads/shotgun_pump.ogg'
/obj/item/ammo_casing/recoilless_rifle
name = "anti-tank warhead"
icon_state = "missile"
caliber = "recoilless_rifle"
w_class = WEIGHT_CLASS_NORMAL
slot_flags = null
projectile_type = /obj/projectile/bullet/recoilless_rifle
reload_sound = 'sound/weapons/reloads/shotgun_pump.ogg'
max_stack = 1
/obj/item/ammo_casing/peac
name = "anti-materiel AP cannon cartridge"
icon_state = "peac"
spent_icon = "peac-spent"
caliber = "peac"
w_class = WEIGHT_CLASS_NORMAL
slot_flags = null
projectile_type = /obj/projectile/bullet/peac
drop_sound = 'sound/items/drop/shell_drop.ogg'
pickup_sound = 'sound/items/pickup/weldingtool.ogg'
reload_sound = 'sound/weapons/railgun_insert_emp.ogg'
max_stack = 1
/obj/item/ammo_casing/peac/he
name = "anti-materiel HE cannon cartridge"
projectile_type = /obj/projectile/bullet/peac/he
/obj/item/ammo_casing/peac/shrapnel
name = "anti-materiel FRAG cannon cartridge"
projectile_type = /obj/projectile/bullet/peac/shrapnel
/obj/item/ammo_casing/peac/attack(mob/living/target_mob, mob/living/user, target_zone)
if(!istype(target_mob, /mob/living/carbon/human))
return ..()
var/mob/living/carbon/human/H = target_mob
if(!user.Adjacent(H))
return ..()
var/obj/item/gun/projectile/peac/G = null
var/obj/item/I = H.get_active_hand()
if(istype(I, /obj/item/gun/projectile/peac))
G = I
else
I = H.get_inactive_hand()
if(istype(I, /obj/item/gun/projectile/peac)) //we check the other hand as well so the wield error message can get sent despite what hand it is in, to avoid confusion
G = I
if(G && !G.wielded)
to_chat(H, SPAN_WARNING("You need to wield [G] before it can be loaded!"))
to_chat(user, SPAN_WARNING("[H] needs to wield [G] before you can load it!"))
return TRUE
if(G && G.get_ammo() <= 0 && G.loaded.len < G.max_shells && G.caliber == caliber && src.loc == user)
if(!do_after(user, 0.5 SECONDS, G))
return TRUE
G.load_ammo(src, user, TRUE)
return TRUE
..()
/obj/item/ammo_casing/kumar_super
name =".599 kumar super casing"
icon_state = "rifle-casing"
spent_icon = "rifle-casing-spent"
caliber = ".599 Kumar Super"
projectile_type = /obj/projectile/bullet
max_stack = 5
/obj/item/ammo_casing/c6mm
desc = "A 6mm bullet casing."
caliber = "6mm"
projectile_type = /obj/projectile/bullet/pistol/assassin
max_stack = 15
/obj/item/ammo_casing/moghes_pistol
desc = "A Moghesian pistol casing."
icon_state = "moghes_casing_p"
spent_icon = "moghes_casing_p_spent"
caliber = "11.6mm"
projectile_type = /obj/projectile/bullet/pistol/medium/ap
max_stack = 15
/obj/item/ammo_casing/moghes_rifle
desc = "A Moghesian rifle casing."
icon_state = "moghes_casing"
spent_icon = "moghes_casing_spent"
caliber = "5.8mm"
projectile_type = /obj/projectile/bullet/rifle/a556
max_stack = 7