adds some new coalition weapons (#18812)

![image](https://github.com/Aurorastation/Aurora.3/assets/70682905/55b43203-b627-49c2-af2d-db5bc6d87892)

Adds four new weapons from the United Syndicates and the Federal
Technocracy.

Himeo has received two new guns based on the plasma cutter; the Guthrie
assault blaster and the Sabo-Tabby heavy blaster pistol. Both use a
hydrogen cell 'magazine' to mimic the more advanced, more accurate
Zavodskoi blasters on the market.

Galatea, likewise, has received the O61-B laser rifle pack set, an
export model of their own O61 Infantry Laser Rifle, and a gauss 'nitro
express' rifle, which fires tungsten slugs. Attempting to fire the O61
without a Galatean implant will result in consequences.

All sprites are my own handiwork, and all credit for the laser pack goes
to Alberyk for his work on the gatling gun. Matt and Schwann also
provided a great deal of help.
This commit is contained in:
juniper
2024-05-05 13:56:57 +00:00
committed by GitHub
parent 6c079c4e1b
commit 0cf56bb126
12 changed files with 382 additions and 0 deletions
@@ -136,3 +136,106 @@
list(mode_name="semiauto", burst=1, fire_delay=ROF_INTERMEDIATE),
list(mode_name="3-round bursts", burst=3, burst_accuracy=list(2,1,1), dispersion=list(0, 7.5))
)
/obj/item/gun/energy/blaster/himeo
name = "himean assault blaster"
desc = "The standard infantry blaster of the Himean Planetary Guard. 'TO RESIST EVIL BY FORCE' is stamped on the side."
desc_extended = "Originally developed in 2351, the Type-11 \"Guthrie\" is a descendant of the first Himean-made weapons; haphazardly overcharged mining equipment. If it ain't broke, don't fix it; variants \
of this rifle have served in the United Syndicates' arsenal for generations, although none have matched modern improvements 'borrowed' from Zavodskoi Interstellar. Waterproof, spaceproof, idiot-proof; it's here to stay, even as advanced Xanan ballistics \
creep their way into the market. Ironically, lend-lease aid to the now-defunct League of Independent Corporate-Free Systems have seen a great deal of these end up in the hands of pirates."
icon = 'icons/obj/guns/himeo_blaster.dmi'
icon_state = "himeoblaster"
item_state = "himeoblaster"
projectile_type = /obj/item/projectile/energy/blaster
usesound = 'sound/weapons/plasma_cutter.ogg'
fire_sound = 'sound/weapons/gunshot/slammer.ogg'
cell_type = /obj/item/cell/hydrogen
needspin = FALSE // can't remove the cell if it has a pin
charge_cost = 500 // 20 mag
slot_flags = SLOT_BACK
w_class = ITEMSIZE_LARGE
is_wieldable = TRUE
can_bayonet = FALSE
sharp = FALSE
edge = FALSE
accuracy = -1
fire_delay = ROF_RIFLE
fire_delay_wielded = 5
burst_delay = 4
accuracy_wielded = 2
origin_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 3)
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=ROF_INTERMEDIATE),
list(mode_name="2-round bursts", burst=2, burst_accuracy=list(2,1,1), dispersion=list(0, 7.5)),
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)) //same as the assault rifle
)
/obj/item/gun/energy/blaster/himeo/get_examine_text(mob/user, distance, is_adjacent, infix, suffix) //stolen from the plasma cutter
. = ..()
if(is_adjacent)
if(power_supply)
. += FONT_SMALL(SPAN_NOTICE("It has a <b>[capitalize_first_letters(power_supply.name)]</b> in the cell mount."))
else
. += FONT_SMALL(SPAN_WARNING("It has no cell installed."))
/obj/item/gun/energy/blaster/himeo/attackby(obj/item/attacking_item, mob/user)
if(attacking_item.isscrewdriver())
if(power_supply)
playsound(user, 'sound/machines/compbeep1.ogg', 40, FALSE)
to_chat(user, SPAN_NOTICE("You uninstall \the [power_supply]."))
power_supply.forceMove(get_turf(src))
if(ishuman(user))
var/mob/living/carbon/human/H = user
H.put_in_hands(power_supply)
power_supply = null
update_icon()
else
to_chat(user, SPAN_WARNING("\The [src] doesn't have a cell installed!"))
else if(istype(attacking_item, /obj/item/cell/hydrogen))
if(power_supply)
to_chat(user, SPAN_WARNING("\The [src] already has a cell in the chamber!"))
else
playsound(user, 'sound/weapons/kinetic_reload.ogg', 40, FALSE)
to_chat(user, SPAN_NOTICE("You install \the [attacking_item] into \the [src]."))
user.drop_from_inventory(attacking_item, src)
power_supply = attacking_item
update_icon()
else
..()
/obj/item/gun/energy/blaster/himeo/afterattack(atom/A, mob/living/user) // if the cell is drained, eject it so we're not fumbling for a screwdriver mid-shootout
..()
if(power_supply.charge == 0)
power_supply.forceMove(get_turf(src.loc))
user.visible_message(
"[power_supply] pops out of the cell mount!",
"<span class='notice'>[power_supply] pops out of \the [src] and clatters on the floor!</span>"
)
power_supply.update_icon()
power_supply = null
playsound(user, 'sound/machines/rig/rig_retract.ogg', 40, FALSE)
update_icon()
/obj/item/gun/energy/blaster/himeo/pistol
name = "himean heavy blaster pistol"
desc = "The standard sidearm of the Himean Planetary Guard. For those revolutions you cannot fight with fists."
desc_extended = "A plasma cutter gave its life for the first Type-45 \"Sabo-Tabby\" pistol. Powered by the same hydrogen cells as the Type-11 \"Guthrie\" rifle, this robust model has earned the nickname of \
the 'One Big Handgun' in those foreign markets it has cropped up. What was initially seen as a flaw in the power converter led to its 'magnum'-sized blaster bolts."
icon = 'icons/obj/guns/himeo_pistol.dmi'
icon_state = "himeopistol"
item_state = "himeopistol"
projectile_type = /obj/item/projectile/energy/blaster/heavy
usesound = 'sound/weapons/plasma_cutter.ogg'
fire_sound = 'sound/weapons/laserstrong.ogg'
charge_cost = 1250 // leaky but lethal
slot_flags = SLOT_BELT|SLOT_HOLSTER
w_class = ITEMSIZE_SMALL
force = 11
is_wieldable = FALSE
can_bayonet = FALSE
sharp = FALSE
edge = FALSE
origin_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 3)
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=ROF_INTERMEDIATE)
)
@@ -509,3 +509,166 @@
fire_delay = 20
accuracy = 40
muzzle_flash = 10
/obj/item/laserpack
name = "galatean bioelectrical reactor backpack"
desc = "An ominously-thrumming backpack-mounted machine, powering an O61 Infantry Laser Rifle."
icon = 'icons/obj/guns/galatea_laser.dmi'
icon_state = "laserpack_holstered"
item_state = "laserpack_holstered"
contained_sprite = 1
w_class = ITEMSIZE_LARGE
slot_flags = SLOT_BACK
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_ILLEGAL = 7)
action_button_name = "Deploy the Laser Rifle"
var/obj/item/gun/energy/galatea/gun
var/armed = FALSE
/obj/item/laserpack/update_icon() // all credit to alb for minigun code, which this is
..()
if(armed)
icon_state = "laserpack"
item_state = "laserpack"
else
icon_state = "laserpack_holstered"
item_state = "laserpack_holstered"
/obj/item/laserpack/Initialize() // add a gun to the pack
. = ..()
gun = make_gun()
gun.source = src
gun.forceMove(src)
/obj/item/laserpack/proc/make_gun()
return new /obj/item/gun/energy/galatea()
/obj/item/laserpack/ui_action_click()
if(src in usr)
toggle_lasergun()
/obj/item/laserpack/verb/toggle_lasergun() // ui button and a verb
set name = "Deploy the Laser Rifle"
set category = "Object"
var/mob/living/carbon/human/user
if(ishuman(user))
user = usr
else
return
if(!user)
return
if (user.back!= src)
to_chat(user, SPAN_WARNING("\The [src] must be worn to deploy \the [gun]!"))
return
if(use_check_and_message(user))
return
if(!gun)
to_chat(user, SPAN_WARNING("There is no weapon attached to the \the [src]!"))
if(armed)
to_chat(user, SPAN_WARNING("\The [src] has been already deployed!"))
else
if(!user.put_in_hands(gun))
to_chat(user, SPAN_WARNING("You need a free hand to hold \the [gun]!"))
return
armed = TRUE
update_icon()
user.update_inv_back()
/obj/item/laserpack/equipped(mob/user, slot)
..()
if(slot != slot_back) // if we're not wearing it, remove it
remove_gun()
user.update_inv_back()
/obj/item/laserpack/proc/remove_gun()
if(!gun)
return
if(ismob(gun.loc))
var/mob/M = gun.loc
if(M.drop_from_inventory(gun, src))
update_icon()
else
gun.forceMove(src)
update_icon()
armed = FALSE
return
/obj/item/laserpack/Destroy()
if(gun)
QDEL_NULL(gun)
return ..()
/obj/item/laserpack/attackby(obj/item/attacking_item, mob/user, params) // if you hit the pack with the gun, "stow" it
if(use_check_and_message(user) && attacking_item == gun)
remove_gun()
update_icon()
user.update_inv_back()
return TRUE
else
return ..()
/obj/item/gun/energy/galatea
name = "galatean laser rifle"
desc = "The Galatean O61-B, an export model of their advanced Mark 61 Infantry Rifle."
desc_extended = "Galatean soldiers are heavily bioaugmented, combining soldier and weapon into a cohesive unit. The Mark 61 Infantry Rifle is one such example, drawing on the bioelectricity of the human body \
through an implant with which to power the gun. Unaugmented users complained of headaches, lethargy, and impossible dreams; The O61B has integrated the bioaugments into the firing mechanism, preventing 'baselines' \
from even using it. Luckily, this is an export version, the O61-B, which allows foreign users a taste of advanced Technocracy weaponry for the low price of a single bioaugment."
icon = 'icons/obj/guns/galatea_laser.dmi'
icon_state = "galatealaser"
item_state = "galatealaser"
slot_flags = 0
has_icon_ratio = FALSE
has_item_ratio = FALSE
fire_sound = 'sound/weapons/laser3.ogg'
needspin = FALSE
origin_tech = null
charge_meter = FALSE
projectile_type = /obj/item/projectile/beam/xray // can't wear a hardsuit, and it's only 15 damage with a lot of AP
charge_cost = 100
max_shots = 20
self_recharge = 1 // bioreactor in the backpack; not entirely defenseless against EMPs
fire_delay = 35
burst_delay = 2
can_turret = 0
is_wieldable = TRUE
fire_delay_wielded = 10
accuracy_wielded = 0
var/obj/item/laserpack/source
/obj/item/gun/energy/galatea/dropped(mob/user) // the gun is part of the backpack; prevent weirdness
..()
if(source)
to_chat(user, SPAN_NOTICE("\The [src] snaps back onto \the [source]"))
INVOKE_ASYNC(source, TYPE_PROC_REF(/obj/item/laserpack, remove_gun))
source.update_icon()
user.update_inv_back()
/obj/item/gun/energy/galatea/Move()
..()
if(loc != source.loc)
INVOKE_ASYNC(source, TYPE_PROC_REF(/obj/item/laserpack, remove_gun)) // prevent even weirder shit
/obj/item/gun/energy/galatea/special_check(var/mob/user) // if you don't have the implant, you get one shot before you get floored (thanks matt)
var/obj/item/implant/export_lasgun/E = locate() in user
if(E)
return TRUE
else
var/pain_message = pick("All the energy leaves your body with a sickening 'crack'!",
"You collapse, like a puppet with its strings cut!",
"You're forced to your knees, vision swimming!")
to_chat(user, SPAN_WARNING("[pain_message]"))
user.Weaken(10)
return TRUE
@@ -211,6 +211,33 @@
w_class = ITEMSIZE_NORMAL
force = 11
/obj/item/gun/projectile/shotgun/doublebarrel/nitro
name = "gauss express rifle"
desc = "A Galatean nitro express rifle. Loaded with tungsten slugs."
desc_extended = "While Galatea almost universally uses lasers for their weapons, gauss weapons see some use in the hands of expeditionary forces and military specialist units. The Pattern Nine is a single-barrel, double-shot \
rifle designed for intermediate range anti-infantry specialists just as much as it is for Tsukuyomian game wardens."
icon = 'icons/obj/guns/galatea_nitro.dmi'
icon_state = "nitrorifle"
item_state = "nitrorifle"
//SPEEDLOADER because rapid unloading.
//In principle someone could make a speedloader for it, so it makes sense.
load_method = SINGLE_CASING|SPEEDLOADER
handle_casings = CYCLE_CASINGS
max_shells = 2
w_class = ITEMSIZE_LARGE
force = 10
obj_flags = OBJ_FLAG_CONDUCTABLE
is_wieldable = TRUE
has_wield_state = TRUE
slot_flags = SLOT_BACK
caliber = "gauss"
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 1)
ammo_type = /obj/item/ammo_casing/gauss
fire_sound = /singleton/sound_category/gauss_fire_sound
fire_delay = ROF_INTERMEDIATE
can_sawoff = FALSE
/obj/item/gun/projectile/shotgun/foldable
name = "foldable shotgun"
desc = "A single-shot shotgun that can be folded for easy concealment."