mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 20:43:10 +01:00
adds some new coalition weapons (#18812)
 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:
@@ -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."
|
||||
|
||||
Reference in New Issue
Block a user