mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-24 05:23:22 +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:
@@ -1258,6 +1258,7 @@
|
||||
#include "code\game\objects\items\weapons\implants\implants\emp.dm"
|
||||
#include "code\game\objects\items\weapons\implants\implants\explosive.dm"
|
||||
#include "code\game\objects\items\weapons\implants\implants\freedom.dm"
|
||||
#include "code\game\objects\items\weapons\implants\implants\galatean.dm"
|
||||
#include "code\game\objects\items\weapons\implants\implants\health_tracker.dm"
|
||||
#include "code\game\objects\items\weapons\implants\implants\loyalty.dm"
|
||||
#include "code\game\objects\items\weapons\implants\implants\mindshield.dm"
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
// GALATEAN BIOAUGMENTATIONS
|
||||
// the weird, uncomfortable places where meat meets metal
|
||||
|
||||
/obj/item/implant/export_lasgun
|
||||
name = "bioelectrical conduit"
|
||||
desc = "A Galatean bioaugmentation that channels the innate bioelectricity of the human nervous system. Use of this augment against the terms of its packaging are a violation of Galatean law."
|
||||
icon_state = "implant_excel"
|
||||
implant_icon = "excel"
|
||||
implant_color = "#ffd079"
|
||||
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 2, TECH_ILLEGAL = 3)
|
||||
default_action_type = null
|
||||
known = TRUE
|
||||
|
||||
/obj/item/implant/export_lasgun/get_data()
|
||||
. = {"
|
||||
<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Planetary Weapons Development Bureau Bioelectricity Conduit, Export-Model <BR>
|
||||
<b>Life:</b> Six years.<BR>
|
||||
<b>Important Notes:</b> Personnel injected with this device can operate certain approved models of laser weapon without side effects..<BR>
|
||||
<HR>
|
||||
<b>Implant Details:</b><BR>
|
||||
<b>Function:</b> Conducts the body's electricity into usable forms of electricity for Galatean export-model weaponry.<BR>
|
||||
<b>Integrity:</b> Implant will last for a period of six standard years, after which it will degrade and require removal."}
|
||||
|
||||
/obj/item/implant/export_lasgun/implanted(mob/M)
|
||||
to_chat(M, SPAN_GOOD("Static dances across your skin."))
|
||||
if(ishuman(M))
|
||||
return TRUE
|
||||
|
||||
/obj/item/implantcase/export_lasgun
|
||||
name = "glass case - 'bioconduit'"
|
||||
imp = /obj/item/implant/export_lasgun
|
||||
|
||||
/obj/item/implanter/export_lasgun
|
||||
name = "implanter-bioconductor"
|
||||
imp = /obj/item/implant/export_lasgun
|
||||
@@ -211,3 +211,14 @@
|
||||
. = ..()
|
||||
charge = 0
|
||||
update_icon()
|
||||
|
||||
/obj/item/cell/hydrogen
|
||||
name = "hydrogen blaster canister"
|
||||
desc = "An industrial-grade hydrogen power cell, used in various blaster weapons- or blaster-adjacent power tools- in place of expensive phoron."
|
||||
icon_state = "hycell"
|
||||
maxcharge = 10000 // hydrogen is actually used today in electric cars
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 70)
|
||||
w_class = ITEMSIZE_SMALL
|
||||
drop_sound = 'sound/items/drop/gascan.ogg'
|
||||
pickup_sound = 'sound/items/pickup/gascan.ogg'
|
||||
origin_tech = list(TECH_POWER = 4)
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
################################
|
||||
# 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: crunchypretzels
|
||||
|
||||
# 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: "Added several new Coalition weapons, along with the necessary equipment to use them."
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 3.2 KiB |
Reference in New Issue
Block a user