diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index c2c93594036..b0e8984f050 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -349,6 +349,16 @@
pickup_sound = 'sound/items/pickup/ammobox.ogg'
starts_with = list(/obj/item/ammo_casing/shotgun/tracking = 4)
+/obj/item/storage/box/wallgunammo
+ name = "box of wall gun slugs"
+ desc = "It has a picture of a shotgun shell and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death."
+ icon_state = "shellbox"
+ item_state = "shellbox"
+ illustration = "lethalslug"
+ drop_sound = 'sound/items/drop/ammobox.ogg'
+ pickup_sound = 'sound/items/pickup/ammobox.ogg'
+ starts_with = list(/obj/item/ammo_casing/shotgun/moghes = 8)
+
/obj/item/storage/box/sniperammo
name = "box of 14.5mm shells"
desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death."
diff --git a/code/game/objects/random/weapon.dm b/code/game/objects/random/weapon.dm
index ae762b325b8..9ccd5262cd7 100644
--- a/code/game/objects/random/weapon.dm
+++ b/code/game/objects/random/weapon.dm
@@ -189,7 +189,7 @@
/obj/item/gun/projectile/automatic/rifle/carbine/civcarbine,
/obj/item/gun/projectile/automatic/tommygun,
/obj/item/gun/projectile/shotgun/pump/rifle,
- /obj/item/gun/projectile/shotgun/pump/rifle/pipegun,
+ /obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/pipegun,
/obj/item/gun/projectile/shotgun/pump/rifle/obrez,
/obj/item/gun/projectile/contender,
/obj/item/gun/projectile/shotgun/pump/rifle/vintage,
diff --git a/code/game/objects/structures/crates_lockers/crates/gear_loadout.dm b/code/game/objects/structures/crates_lockers/crates/gear_loadout.dm
index 422e3e76bea..405120a54ff 100644
--- a/code/game/objects/structures/crates_lockers/crates/gear_loadout.dm
+++ b/code/game/objects/structures/crates_lockers/crates/gear_loadout.dm
@@ -686,23 +686,24 @@
new /obj/item/melee/energy/sword/pirate(src)
new /obj/item/melee/energy/sword/pirate(src)
new /obj/item/melee/energy/sword/pirate(src)
- new /obj/item/gun/projectile/shotgun/pump/combat(src)
- new /obj/item/gun/projectile/automatic/rifle/sts35(src)
- new /obj/item/gun/energy/rifle/hegemony(src)
+ new /obj/item/gun/energy/pistol/hegemony(src)
+ new /obj/item/gun/projectile/pistol/spitter(src)
+ new /obj/item/gun/projectile/pistol/spitter(src)
+ new /obj/item/gun/projectile/pistol/spitter(src)
+ new /obj/item/gun/projectile/pistol/spitter(src)
+ new /obj/item/ammo_magazine/spitterpistol(src)
+ new /obj/item/ammo_magazine/spitterpistol(src)
+ new /obj/item/ammo_magazine/spitterpistol(src)
+ new /obj/item/ammo_magazine/spitterpistol(src)
+ new /obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/crackrifle(src)
+ new /obj/item/ammo_magazine/crackrifle(src)
+ new /obj/item/ammo_magazine/crackrifle(src)
+ new /obj/item/gun/projectile/automatic/rifle/shorty(src)
+ new /obj/item/ammo_magazine/c762(src)
+ new /obj/item/ammo_magazine/c762(src)
new /obj/item/gun/projectile/automatic/rifle/dpra/gold(src)
new /obj/item/ammo_magazine/c762/dpra(src)
new /obj/item/ammo_magazine/c762/dpra(src)
- new /obj/item/ammo_magazine/c762(src)
- new /obj/item/ammo_magazine/c762(src)
- new /obj/item/storage/box/shotgunshells(src)
- new /obj/item/storage/box/shotgunshells(src)
- new /obj/item/gun/energy/pistol/hegemony(src)
- new /obj/item/gun/projectile/colt/super(src)
- new /obj/item/gun/projectile/revolver/lemat(src)
- new /obj/item/ammo_magazine/c38(src)
- new /obj/item/ammo_magazine/c38(src)
- new /obj/item/ammo_magazine/c45m(src)
- new /obj/item/ammo_magazine/c45m(src)
new /obj/item/storage/box/unathi_pirate(src)
new /obj/item/voidsuit_modkit_multi/unathi_pirate/captain(src)
@@ -712,12 +713,12 @@
new /obj/item/clothing/suit/space/void/unathi_pirate(src)
new /obj/item/melee/energy/sword/pirate(src)
new /obj/item/clothing/glasses/eyepatch(src)
- new /obj/item/gun/projectile/revolver/lemat(src)
- new /obj/item/gun/projectile/shotgun/pump/combat(src)
- new /obj/item/ammo_magazine/c38(src)
- new /obj/item/ammo_magazine/c38(src)
- new /obj/item/storage/box/shotgunshells(src)
- new /obj/item/storage/box/shotgunshells(src)
+ new /obj/item/gun/projectile/pistol/spitter(src)
+ new /obj/item/ammo_magazine/spitterpistol(src)
+ new /obj/item/ammo_magazine/spitterpistol(src)
+ new /obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/crackrifle(src)
+ new /obj/item/ammo_magazine/crackrifle(src)
+ new /obj/item/ammo_magazine/crackrifle(src)
new /obj/item/voidsuit_modkit_multi/unathi_pirate(src)
/obj/structure/closet/crate/secure/gear_loadout/pvsm/fill()
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 65725f26b76..6e0c864f459 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -345,7 +345,7 @@
/obj/item/clothing/head/helmet/unathi
name = "unathi helmet"
- desc = "An outdated helmet designated to be worn by an Unathi, it was commonly used by the Hegemony Levies."
+ desc = "An outdated ceramic-metal helmet of Unathi design. Commonly seen on Moghes during the days of the Contact War, and now commonplace in the hands of raiders and pirates."
icon = 'icons/obj/unathi_items.dmi'
icon_state = "unathi_helmet"
item_state = "unathi_helmet"
@@ -353,22 +353,22 @@
species_restricted = list(BODYTYPE_UNATHI)
armor = list(
melee = ARMOR_MELEE_MAJOR,
- bullet = ARMOR_BALLISTIC_SMALL,
- laser = ARMOR_LASER_PISTOL,
- energy = ARMOR_ENERGY_MINOR,
+ bullet = ARMOR_BALLISTIC_PISTOL,
+ laser = ARMOR_LASER_KEVLAR,
+ energy = ARMOR_ENERGY_SMALL,
bomb = ARMOR_BOMB_PADDED
)
siemens_coefficient = 0.35
/obj/item/clothing/head/helmet/unathi/hegemony
name = "hegemony helmet"
- desc = "A highly armored helmet designated to be worn by an Unathi, a newer variant commonly worn by the Hegemony Levies."
+ desc = "A highly armored ceramic-metal composite helmet fitted for an Unathi. Commonly used by the military forces of the Izweski Hegemony."
icon_state = "hegemony_helmet"
item_state = "hegemony_helmet"
armor = list(
melee = ARMOR_MELEE_VERY_HIGH,
bullet = ARMOR_BALLISTIC_MEDIUM,
- laser = ARMOR_LASER_PISTOL,
+ laser = ARMOR_LASER_RIFLE,
energy = ARMOR_ENERGY_MINOR,
bomb = ARMOR_BOMB_PADDED,
rad = ARMOR_RAD_MINOR
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index c576a244471..795e4dee288 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -456,7 +456,7 @@
/obj/item/clothing/suit/armor/unathi
name = "unathi body armor"
- desc = "An outdated armored chestplate designated to be worn by an Unathi, it was commonly used by the Hegemony Levies."
+ desc = "An outdated set of ceramic-metal body armor of Unathi design. Commonly seen on Moghes during the days of the Contact War, and now commonplace in the hands of raiders and pirates."
icon = 'icons/obj/unathi_items.dmi'
icon_state = "unathi_armor"
item_state = "unathi_armor"
@@ -464,45 +464,46 @@
species_restricted = list(BODYTYPE_UNATHI)
armor = list(
melee = ARMOR_MELEE_MAJOR,
- bullet = ARMOR_BALLISTIC_SMALL,
- laser = ARMOR_LASER_SMALL,
- energy = ARMOR_ENERGY_MINOR,
+ bullet = ARMOR_BALLISTIC_PISTOL,
+ laser = ARMOR_LASER_KEVLAR,
+ energy = ARMOR_ENERGY_SMALL,
bomb = ARMOR_BOMB_PADDED
)
siemens_coefficient = 0.35
/obj/item/clothing/suit/armor/unathi/hegemony
name = "hegemony body armor"
- desc = "A highly armored chestplate designated to be worn by an Unathi, a newer variant commonly worn by the Hegemony Levies."
+ desc = "A highly armored ceramic-metal composite chestplate fitted for an Unathi. Commonly used by the military forces of the Izweski Hegemony."
icon_state = "hegemony_armor"
item_state = "hegemony_armor"
armor = list(
melee = ARMOR_MELEE_VERY_HIGH,
- bullet = ARMOR_BALLISTIC_PISTOL,
+ bullet = ARMOR_BALLISTIC_MEDIUM,
laser = ARMOR_LASER_RIFLE,
energy = ARMOR_ENERGY_MINOR,
- bomb = ARMOR_BOMB_PADDED
+ bomb = ARMOR_BOMB_PADDED,
+ rad = ARMOR_RAD_MINOR
)
// Vaurca version of Unathi armor
/obj/item/clothing/suit/armor/unathi/klax
name = "klaxan warrior body armor"
- desc = "An armored chestplate designated to be worn by a K'lax warrior. The retrofit is only a bit shoddy."
+ desc = "A highly armored ceramic-metal composite chestplate fitted for a Vaurca Warrior. Commonly used by the military forces of the Izweski Hegemony."
icon = 'icons/obj/vaurca_items.dmi'
icon_state = "klax_hopeful"
item_state = "klax_hopeful"
contained_sprite = TRUE
species_restricted = list(BODYTYPE_VAURCA)
- allowed = list(/obj/item/gun/projectile, /obj/item/gun/energy, /obj/item/gun/launcher, /obj/item/melee, /obj/item/reagent_containers/spray/pepper, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/handcuffs, /obj/item/device/flashlight)
- siemens_coefficient = 0.35
armor = list(
melee = ARMOR_MELEE_VERY_HIGH,
- bullet = ARMOR_BALLISTIC_PISTOL,
+ bullet = ARMOR_BALLISTIC_MEDIUM,
laser = ARMOR_LASER_RIFLE,
energy = ARMOR_ENERGY_MINOR,
bomb = ARMOR_BOMB_PADDED,
- rad = ARMOR_RAD_RESISTANT
+ rad = ARMOR_RAD_MINOR
)
+ allowed = list(/obj/item/gun/projectile, /obj/item/gun/energy, /obj/item/gun/launcher, /obj/item/melee, /obj/item/reagent_containers/spray/pepper, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/handcuffs, /obj/item/device/flashlight)
+ siemens_coefficient = 0.35
/obj/item/clothing/suit/storage/vest/legion
name = "foreign legion armored suit"
diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm
index cf88685d342..5009c9837e2 100644
--- a/code/modules/projectiles/ammunition/boxes.dm
+++ b/code/modules/projectiles/ammunition/boxes.dm
@@ -715,3 +715,35 @@
ammo_type = /obj/item/ammo_casing/shotgun
max_ammo = 9
multiple_sprites = 1
+
+/obj/item/ammo_magazine/spitterpistol
+ name = "spitter pistol magazine"
+ icon_state = "spitterpistol_mag"
+ caliber = "11.6mm"
+ mag_type = MAGAZINE
+ ammo_type = /obj/item/ammo_casing/moghes_pistol
+ max_ammo = 8
+
+/obj/item/ammo_magazine/hookmg
+ name = "hook machinegun magazine"
+ icon_state = "hookmg_ammobox"
+ caliber = "5.8mm"
+ mag_type = MAGAZINE
+ ammo_type = /obj/item/ammo_casing/moghes_rifle
+ max_ammo = 50
+
+/obj/item/ammo_magazine/crackrifle
+ name = "crack rifle magazine"
+ icon_state = "crackrifle_mag"
+ caliber = "5.8mm"
+ mag_type = MAGAZINE
+ ammo_type = /obj/item/ammo_casing/moghes_rifle
+ max_ammo = 33
+
+/obj/item/ammo_magazine/tempestsmg
+ name = "tempest smg magazine"
+ icon_state = "tempestsmg_mag"
+ caliber = "11.6mm"
+ mag_type = MAGAZINE
+ ammo_type = /obj/item/ammo_casing/moghes_pistol
+ max_ammo = 20
diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm
index 0c1de3a9b0a..45be00064af 100644
--- a/code/modules/projectiles/ammunition/bullets.dm
+++ b/code/modules/projectiles/ammunition/bullets.dm
@@ -224,6 +224,14 @@
spent_icon = "trackingshell-spent"
projectile_type = /obj/item/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/item/projectile/bullet/shotgun/moghes
+
/obj/item/ammo_casing/tranq
name = "PPS shell"
desc = "A .50 cal PPS bullet casing."
@@ -480,3 +488,19 @@
caliber = "6mm"
projectile_type = /obj/item/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/item/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/item/projectile/bullet/rifle/a556
+ max_stack = 7
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 1887d11a1ae..4aaed7b5c3c 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -916,3 +916,51 @@
..()
icon_state = (ammo_magazine)? "mshotgun" : "mshotgun-empty"
+/obj/item/gun/projectile/automatic/rifle/hook_mg
+ name = "unathi hook machine gun"
+ desc = "A ballistic machine gun of Unathi manufacture, often used by the forces of the Traditionalist Coalition during the Contact War."
+ desc_extended = "The Hook Machinegun is a heavy automatic machinegun of Moghesian manufacture. Though the name of the creators of this weapon was lost to the destruction of the nuclear exchange, the Hook was known to be found in the hands of some of the better-equipped forces of the Traditionalist Coalition during the Contact War. \
+ This machine gun is carried on one's shoulder and thus can be used with a single hand. Though it can fire heavy cartridges, it is quite lacking in accuracy."
+ icon = 'icons/obj/guns/unathi_ballistics.dmi'
+ icon_state = "hookmg"
+ item_state = "hookmg"
+ caliber = "5.8mm"
+ magazine_type = /obj/item/ammo_magazine/hookmg
+ allowed_magazines = list(/obj/item/ammo_magazine/hookmg)
+ firemodes = list(
+ list(mode_name="short bursts", burst=5, burst_accuracy = list(1,0,0,-1,-1), dispersion = list(3, 6, 9)),
+ list(mode_name="long bursts", burst=8, burst_accuracy = list(1,0,0,-1,-1,-1,-2,-2), dispersion = list(8)),
+ list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=5, fire_delay_wielded=2, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25))
+ )
+ slot_flags = null
+ w_class = ITEMSIZE_LARGE
+ accuracy = -2
+ accuracy_wielded = 0
+
+/obj/item/gun/projectile/automatic/rifle/hook_mg/update_icon()
+ ..()
+ icon_state = (ammo_magazine)? "hookmg" : "hookmg-empty"
+
+/obj/item/gun/projectile/automatic/tempestsmg
+ name = "tempest submachine gun"
+ desc = "The tempest sub-machine gun is a Hegemonic design dating back to the 2350s, though still produced in ample numbers to this day. While rather large and heavy for a weapon of its class, its simplicity and reliability have made it a popular weapon among Unathi for over a century, and the aging weapon was even used as the basis for future designs."
+ magazine_type = /obj/item/ammo_magazine/tempestsmg
+ allowed_magazines = list(/obj/item/ammo_magazine/tempestsmg)
+ icon = 'icons/obj/guns/unathi_ballistics.dmi'
+ icon_state = "tempestsmg"
+ item_state = "tempestsmg"
+ caliber = "11.6mm"
+ origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
+ fire_sound = 'sound/weapons/gunshot/gunshot_light.ogg'
+ load_method = MAGAZINE
+ slot_flags = SLOT_BELT|SLOT_BACK|SLOT_S_STORE
+ suppressed = FALSE
+ is_wieldable = TRUE
+ accuracy_wielded = 2
+ can_suppress = TRUE
+ suppressor_x_offset = 10
+ suppressor_y_offset = 1
+
+/obj/item/gun/projectile/automatic/tempestsmg/update_icon()
+ ..()
+ icon_state = (ammo_magazine)? "tempestsmg" : "tempestsmg-empty"
diff --git a/code/modules/projectiles/guns/projectile/improvised.dm b/code/modules/projectiles/guns/projectile/improvised.dm
index 82d11626832..74931a02b03 100644
--- a/code/modules/projectiles/guns/projectile/improvised.dm
+++ b/code/modules/projectiles/guns/projectile/improvised.dm
@@ -131,7 +131,7 @@
if(buildstate == 3)
if(C.use(10))
to_chat(user, "You tie the lengths of cable to the pipegun, making a sling.")
- new /obj/item/gun/projectile/shotgun/pump/rifle/pipegun(get_turf(src))
+ new /obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/pipegun(get_turf(src))
qdel(src)
else
to_chat(user, "You need at least ten lengths of cable if you want to make a sling!")
diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm
index bb909b67def..f28d5ff5b0e 100644
--- a/code/modules/projectiles/guns/projectile/pistol.dm
+++ b/code/modules/projectiles/guns/projectile/pistol.dm
@@ -553,3 +553,25 @@
icon_state = "dom_pistol"
else
icon_state = "dom_pistol-e"
+
+/obj/item/gun/projectile/pistol/spitter
+ name = "unathi spitter pistol"
+ desc = "The venerable 'spitter' pistol is an Unathi design nearly three centuries old. Though no longer in use by the Hegemony's forces, these guns are still commonplace in the hands of criminals, Wastelanders, and former Traditionalists."
+ desc_extended = "The Relzi-5 pistol, colloquially referred to as the 'spitter' was a common Unathi sidearm for centuries, though the design was already being phased out of Izweski use by the start of the Contact War due to superior-quality energy weapons becoming available.\
+ In the modern day, they are no longer produced, but the sheer volume of them in service means they can be found all over Moghes, and even in the wider Orion Spur."
+ magazine_type = /obj/item/ammo_magazine/spitterpistol
+ allowed_magazines = list(/obj/item/ammo_magazine/spitterpistol)
+ icon = 'icons/obj/guns/unathi_ballistics.dmi'
+ icon_state = "spitterpistol"
+ item_state = "spitterpistol"
+ caliber = "11.6mm"
+ fire_sound = 'sound/weapons/gunshot/gunshot_pistol.ogg'
+ load_method = MAGAZINE
+ fire_delay = ROF_PISTOL
+
+/obj/item/gun/projectile/pistol/spitter/update_icon()
+ ..()
+ if(length(ammo_magazine?.stored_ammo))
+ icon_state = "spitterpistol"
+ else
+ icon_state = "spitterpistol-empty"
diff --git a/code/modules/projectiles/guns/projectile/rifle.dm b/code/modules/projectiles/guns/projectile/rifle.dm
index 0bf3b25d8ec..ade044e8907 100644
--- a/code/modules/projectiles/guns/projectile/rifle.dm
+++ b/code/modules/projectiles/guns/projectile/rifle.dm
@@ -21,6 +21,20 @@
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/a762/blank
@@ -70,7 +84,7 @@
slot_flags = SLOT_BELT|SLOT_HOLSTER
can_bayonet = FALSE
-/obj/item/gun/projectile/shotgun/pump/rifle/pipegun
+/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'
@@ -91,15 +105,7 @@
jam_chance = -10
-/obj/item/gun/projectile/shotgun/pump/rifle/pipegun/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/pipegun/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
+/obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/pipegun/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
switch(jam_chance)
if(10 to 20)
@@ -111,7 +117,7 @@
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/pipegun/attackby(obj/item/attacking_item, mob/user)
+/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]."))
@@ -123,7 +129,7 @@
return
return ..()
-/obj/item/gun/projectile/shotgun/pump/rifle/pipegun/handle_post_fire(mob/user)
+/obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/pipegun/handle_post_fire(mob/user)
. = ..()
jam_chance = min(jam_chance + 5, 100)
@@ -418,3 +424,17 @@
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
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index c97e20dd72b..1e3ac84525c 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -278,3 +278,70 @@
. = ..()
if(distance <= 1)
. += SPAN_NOTICE("Upon closer inspection, this is not a camera at all, but a 9mm firearm concealed inside the shell of one, which can be deployed by pressing a button.")
+
+/obj/item/gun/projectile/shotgun/wallgun
+ name = "wall gun"
+ desc = "A small yet powerful shotgun of Unathi make."
+ desc_extended = "The Moghesian wall gun, a classic Hegemonic weapon that saw plenty of service before and during the Contact War. This small-sized, break-action shotgun manages to pack a serious punch despite being barely larger than a pistol, however, it comes at the cost of extremely limited capacity. The wall gun is still produced and distributed nowadays, generally given to vehicle and ship crews and law enforcers."
+ icon = 'icons/obj/guns/unathi_ballistics.dmi'
+ icon_state = "wallgun"
+ item_state = "wallgun"
+ accuracy = 0
+ is_wieldable = TRUE
+ slot_flags = SLOT_BELT
+ ammo_type = /obj/item/ammo_casing/shotgun/moghes
+ load_method = SINGLE_CASING|SPEEDLOADER
+ w_class = ITEMSIZE_NORMAL
+ fire_delay = ROF_INTERMEDIATE
+ force = 5
+ max_shells = 1
+ caliber = "shotgun"
+ fire_sound = 'sound/weapons/gunshot/gunshot_shotgun2.ogg'
+ handle_casings = HOLD_CASINGS
+ ///Whether the shotgun's chamber is open
+ var/open = FALSE
+
+/obj/item/gun/projectile/shotgun/wallgun/update_icon()
+ if(open)
+ icon_state = "wallgun-open"
+ else
+ icon_state = "wallgun"
+ ..()
+/obj/item/gun/projectile/shotgun/wallgun/unique_action(mob/user)
+ if(!open)
+ open = TRUE
+ update_icon()
+ unload_ammo(user, TRUE)
+ else
+ open = FALSE
+ update_icon()
+
+/obj/item/gun/projectile/shotgun/wallgun/unload_ammo(user, allow_dump)
+ if(open)
+ ..(user, allow_dump=1)
+
+/obj/item/gun/projectile/shotgun/wallgun/load_ammo(obj/item/A, mob/user)
+ if(!open)
+ to_chat(user, SPAN_WARNING("You need to open the cover to load \the[src]."))
+ return
+ ..()
+
+/obj/item/gun/projectile/shotgun/wallgun/handle_post_fire(mob/user)
+ ..()
+ if(wielded)
+ return
+ else
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if(H.mob_size <10)
+ H.visible_message(SPAN_WARNING("\The [src] flies 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, GLOB.reverse_dir[H.dir]), 4, 4)
+
+ var/obj/item/organ/external/LH = H.get_organ(BP_L_HAND)
+ var/obj/item/organ/external/RH = H.get_organ(BP_R_HAND)
+
+ if(H.hand)
+ LH.take_damage(30)
+ else
+ RH.take_damage(30)
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 2534b9ca7c6..c573a539793 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -102,6 +102,9 @@
var/iff // identify friend or foe. will check mob's IDs to see if they match, if they do, won't hit
+ ///If the projectile launches a secondary projectile in addition to itself.
+ var/secondary_projectile
+
/obj/item/projectile/CanPass()
return TRUE
@@ -167,6 +170,10 @@
if(get_turf(target) == get_turf(src))
direct_target = target
+ if(ispath(secondary_projectile))
+ var/obj/item/projectile/BB = new secondary_projectile(src)
+ BB.launch_projectile(target, target_zone, user, params, angle_override, forced_spread)
+
preparePixelProjectile(target, user? user : get_turf(src), params, forced_spread)
return fire(angle_override, direct_target)
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index b455b0e5dd3..05da6d366be 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -266,6 +266,10 @@
T.part = organ
LAZYADD(organ.implants, T)
+/obj/item/projectile/bullet/shotgun/moghes
+ name = "wall shot"
+ secondary_projectile = /obj/item/projectile/bullet/pellet/shotgun/canister
+
//Should do about 80 damage at 1 tile distance (adjacent), and 50 damage at 3 tiles distance.
//Overall less damage than slugs in exchange for more damage at very close range and more embedding
/obj/item/projectile/bullet/pellet/shotgun
diff --git a/html/changelogs/RustingWithYou - reptileguns.yml b/html/changelogs/RustingWithYou - reptileguns.yml
new file mode 100644
index 00000000000..55cad3c5eed
--- /dev/null
+++ b/html/changelogs/RustingWithYou - reptileguns.yml
@@ -0,0 +1,42 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+# balance
+# admin
+# backend
+# security
+# refactor
+#################################
+
+# Your name.
+author: RustingWithYou
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Adds several pre-contact Unathi ballistic guns."
+ - tweak: "Resprites, restats, and refluffs the generic Unathi armor."
diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi
index a4245ec16ff..751ba3cb99f 100644
Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ
diff --git a/icons/obj/guns/unathi_ballistics.dmi b/icons/obj/guns/unathi_ballistics.dmi
new file mode 100644
index 00000000000..1fc7b7e3dce
Binary files /dev/null and b/icons/obj/guns/unathi_ballistics.dmi differ
diff --git a/icons/obj/unathi_items.dmi b/icons/obj/unathi_items.dmi
index b8c2134e963..b8938a9cc37 100644
Binary files a/icons/obj/unathi_items.dmi and b/icons/obj/unathi_items.dmi differ
diff --git a/maps/away/ships/unathi_pirate/hiskyn/unathi_pirate_hiskyn.dmm b/maps/away/ships/unathi_pirate/hiskyn/unathi_pirate_hiskyn.dmm
index cfda5f748c5..1bb973d3422 100644
--- a/maps/away/ships/unathi_pirate/hiskyn/unathi_pirate_hiskyn.dmm
+++ b/maps/away/ships/unathi_pirate/hiskyn/unathi_pirate_hiskyn.dmm
@@ -4324,14 +4324,18 @@
req_access = list(210)
},
/obj/random/civgun,
-/obj/random/civgun,
/obj/item/gun/projectile/pistol/dominia,
/obj/item/gun/projectile/pistol/dominia,
/obj/item/ammo_magazine/c45m/dominia,
/obj/item/ammo_magazine/c45m/dominia,
/obj/item/ammo_magazine/c45m/dominia,
/obj/item/ammo_magazine/c45m/dominia,
-/obj/random/civgun,
+/obj/item/gun/projectile/pistol/spitter,
+/obj/item/gun/projectile/pistol/spitter,
+/obj/item/ammo_magazine/spitterpistol,
+/obj/item/ammo_magazine/spitterpistol,
+/obj/item/ammo_magazine/spitterpistol,
+/obj/item/ammo_magazine/spitterpistol,
/turf/simulated/floor/tiled/dark,
/area/hiskyn_ship/armory)
"mrq" = (
@@ -5413,6 +5417,9 @@
/obj/item/gun/projectile/automatic/rifle/dominia,
/obj/item/ammo_magazine/a556,
/obj/item/ammo_magazine/a556,
+/obj/item/gun/projectile/automatic/tempestsmg,
+/obj/item/ammo_magazine/tempestsmg,
+/obj/item/ammo_magazine/tempestsmg,
/turf/simulated/floor/tiled/dark,
/area/hiskyn_ship/armory)
"tjg" = (
diff --git a/maps/away/ships/unathi_pirate/izharshan/unathi_pirate_izharshan.dmm b/maps/away/ships/unathi_pirate/izharshan/unathi_pirate_izharshan.dmm
index d75e0716104..2bf62ee0ef1 100644
--- a/maps/away/ships/unathi_pirate/izharshan/unathi_pirate_izharshan.dmm
+++ b/maps/away/ships/unathi_pirate/izharshan/unathi_pirate_izharshan.dmm
@@ -1505,22 +1505,22 @@
dir = 4
},
/obj/item/storage/box/shotgunshells,
-/obj/item/ammo_magazine/boltaction,
-/obj/item/ammo_magazine/boltaction,
-/obj/item/ammo_magazine/boltaction,
-/obj/item/ammo_magazine/boltaction,
/obj/machinery/light{
dir = 4
},
/obj/item/clothing/gloves/ballistic,
-/obj/item/gun/projectile/shotgun/pump/rifle,
/obj/item/gun/projectile/pistol/super_heavy,
/obj/item/ammo_magazine/super_heavy,
/obj/item/gun/projectile/shotgun/pump/combat,
/obj/random/civgun/rifle,
/obj/random/civgun,
-/obj/random/civgun,
-/obj/random/civgun,
+/obj/item/gun/projectile/pistol/spitter,
+/obj/item/gun/projectile/pistol/spitter,
+/obj/item/ammo_magazine/spitterpistol,
+/obj/item/ammo_magazine/spitterpistol,
+/obj/item/ammo_magazine/spitterpistol,
+/obj/item/ammo_magazine/crackrifle,
+/obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/crackrifle,
/turf/simulated/floor/tiled/dark,
/area/shuttle/unathi_pirate_izharshan/dorms)
"XV" = (
diff --git a/maps/away/ships/unathi_pirate/izharshan/unathi_pirate_izharshan_ghostroles.dm b/maps/away/ships/unathi_pirate/izharshan/unathi_pirate_izharshan_ghostroles.dm
index 2746edfcf96..0796890337c 100644
--- a/maps/away/ships/unathi_pirate/izharshan/unathi_pirate_izharshan_ghostroles.dm
+++ b/maps/away/ships/unathi_pirate/izharshan/unathi_pirate_izharshan_ghostroles.dm
@@ -67,11 +67,12 @@
suit = /obj/item/clothing/suit/storage/toggle/asymmetriccoat/izharshan
gloves = /obj/item/clothing/gloves/orange/unathi
accessory = /obj/item/clothing/accessory/holster/thigh
- accessory_contents = list(/obj/item/gun/energy/pistol/hegemony = 1)
+ accessory_contents = list(/obj/item/gun/projectile/pistol/spitter = 1)
head = /obj/item/clothing/head/bandana/pirate
backpack_contents = list(
/obj/item/storage/box/survival = 1,
/obj/item/clothing/suit/space/void/unathi_pirate/captain = 1, //the best way to make sure only the captain takes his suit
- /obj/item/clothing/head/helmet/space/void/unathi_pirate/captain = 1
+ /obj/item/clothing/head/helmet/space/void/unathi_pirate/captain = 1,
+ /obj/item/ammo_magazine/spitterpistol = 2
)
diff --git a/maps/away/ships/unathi_pirate/tarwa/unathi_pirate_tarwa.dmm b/maps/away/ships/unathi_pirate/tarwa/unathi_pirate_tarwa.dmm
index c051c3c7348..ffeaea75d5a 100644
--- a/maps/away/ships/unathi_pirate/tarwa/unathi_pirate_tarwa.dmm
+++ b/maps/away/ships/unathi_pirate/tarwa/unathi_pirate_tarwa.dmm
@@ -332,7 +332,8 @@
/obj/structure/table/rack,
/obj/item/clothing/suit/armor/unathi,
/obj/random/civgun/rifle,
-/obj/random/civgun/rifle,
+/obj/item/gun/projectile/shotgun/pump/rifle/magazine_fed/crackrifle,
+/obj/item/ammo_magazine/crackrifle,
/turf/simulated/floor/diona,
/area/tarwa_ship/armory)
"dG" = (
@@ -3874,6 +3875,11 @@
},
/obj/random/civgun,
/obj/random/civgun,
+/obj/item/gun/projectile/pistol/spitter,
+/obj/item/gun/projectile/pistol/spitter,
+/obj/item/ammo_magazine/spitterpistol,
+/obj/item/ammo_magazine/spitterpistol,
+/obj/item/ammo_magazine/spitterpistol,
/turf/simulated/floor/diona,
/area/tarwa_ship/armory)
"ZY" = (