Files
Aurora.3/code/modules/projectiles/guns/energy/blaster.dm
Cody BrittainandGitHub 23789d4113 Sorts out existing projectile weapons (#22059)
This PR is intended to sort out our existing guns into something
resembling organization. In addition, ancient decrepit guns are removed,
and abstract paths are labeled as such.

In addition, all guns are now standardized to refer to their model.
Considering the huge number of weapons we have, a `pistol` is not
descriptive enough.

NOTE: At over 200 files touched, this is being split. Not everything was
sorted, but this is already a monster to sort through. The rest can
wait.
2026-03-25 15:37:50 +00:00

245 lines
10 KiB
Plaintext

/obj/item/gun/energy/blaster
name = "blaster pistol"
desc = "A tiny energy pistol converted to fire off energy bolts rather than lasers beams."
icon = 'icons/obj/guns/faction/nanotrasen_corporation/blaster_pistol.dmi'
icon_state = "blaster_pistol"
item_state = "blaster_pistol"
has_item_ratio = FALSE
fire_sound = 'sound/weapons/laser1.ogg'
slot_flags = SLOT_BELT|SLOT_HOLSTER
w_class = WEIGHT_CLASS_SMALL
force = 11
origin_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 2)
matter = list(DEFAULT_WALL_MATERIAL = 2000)
offhand_accuracy = 1
projectile_type = /obj/projectile/energy/blaster
max_shots = 12
burst_delay = 2
sel_mode = 1
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="2-round bursts", burst=2, fire_delay=null, move_delay=2, burst_accuracy=list(1,0,0), dispersion=list(0, 10, 15))
)
/obj/item/gun/energy/blaster/mounted/mech
name = "rapidfire blaster"
desc = "An aged but reliable rapidfire blaster tuned to expel projectiles at high fire rates."
fire_sound = 'sound/weapons/laserstrong.ogg'
projectile_type = /obj/projectile/energy/blaster/heavy
burst = 5
burst_delay = 3
max_shots = 30
charge_cost = 100
use_external_power = TRUE
self_recharge = TRUE
recharge_time = 1.5
dispersion = list(3,6,9,12)
firemodes = list()
/obj/item/gun/energy/blaster/pilot_special
name = "pilot's sidearm"
desc = "A robust, low in maintenance blaster pistol. Customized for peak performance and perfect for self-defense purposes."
max_shots = 12
accuracy = 2 // Likely to get nothing else, so they gotta know how to make it count.
offhand_accuracy = 2
/obj/item/gun/energy/blaster/revolver
name = "blaster revolver"
desc = "A robust eight-shot blaster."
icon = 'icons/obj/guns/faction/nanotrasen_corporation/blaster_revolver.dmi'
icon_state = "blaster_revolver"
item_state = "blaster_revolver"
fire_sound = 'sound/weapons/laserstrong.ogg'
projectile_type = /obj/projectile/energy/blaster
max_shots = 8
w_class = WEIGHT_CLASS_SMALL
/obj/item/gun/energy/blaster/revolver/unique_action(mob/living/user)
user.visible_message(SPAN_WARNING("\The [user] spins the cylinder of \the [src]!"), SPAN_WARNING("You spin the cylinder of \the [src]!"), SPAN_NOTICE("You hear something metallic spin and click."))
playsound(src.loc, 'sound/weapons/revolver_spin.ogg', 100, 1)
/obj/item/gun/energy/blaster/carbine
name = "blaster carbine"
desc = "A short-barreled blaster carbine meant for easy handling and comfort when in combat."
icon = 'icons/obj/guns/faction/nanotrasen_corporation/blaster_carbine.dmi'
icon_state = "blaster_carbine"
item_state = "blaster_carbine"
max_shots = 16
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
offhand_accuracy = 0
projectile_type = /obj/projectile/energy/blaster
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_NORMAL
/obj/item/gun/energy/blaster/rifle
name = "bolt slinger"
desc = "A blaster rifle which seems to work by accelerating particles and flinging them out in destructive bolts."
icon = 'icons/obj/guns/faction/nanotrasen_corporation/blaster_rifle.dmi'
icon_state = "blaster_rifle"
item_state = "blaster_rifle"
max_shots = 20
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 3)
offhand_accuracy = 0
projectile_type = /obj/projectile/energy/blaster/heavy
force = 15
slot_flags = SLOT_BACK
w_class = WEIGHT_CLASS_BULKY
can_bayonet = TRUE
knife_x_offset = 23
knife_y_offset = 13
fire_delay = 25
accuracy = -3
scoped_accuracy = 4
fire_delay_wielded = 10
accuracy_wielded = 1
is_wieldable = TRUE
/obj/item/gun/energy/blaster/rifle/verb/scope()
set category = "Object.Held"
set name = "Use Scope"
set src in usr
if(wielded)
toggle_scope(2.0, usr)
else
to_chat(usr, SPAN_WARNING("You can't look through the scope without stabilizing the rifle!"))
/obj/item/gun/energy/blaster/tcaf
name = "\improper Guardian blaster rifle"
desc = "Developed by Zavodskoi Interstellar, the Guardian is a burst-fire blaster rifle designed for the armed forces of the Republic of Biesel. Cheap, reliable and easy to mass-produce, these weapons can be seen across the branches of the TCAF."
desc_extended = "Released in early 2464, the Guardian is a modernisation of the outdated blasters previously used by the TCFL developed in conjunction with the Zo'ra Hive. Since its release, it has been widely adopted by Biesel, leading to a slight fall in NanoTrasen market share as Zavodskoi took their place as the main arms supplier of the TCAF."
icon = 'icons/obj/guns/faction/zavodskoi_interstellar/blaster_ar.dmi'
icon_state = "blaster_ar"
item_state = "blaster_ar"
max_shots = 24
projectile_type = /obj/projectile/energy/blaster/heavy
fire_sound = 'sound/weapons/laserstrong.ogg'
slot_flags = SLOT_BACK
w_class = WEIGHT_CLASS_BULKY
is_wieldable = TRUE
can_bayonet = TRUE
knife_x_offset = 23
knife_y_offset = 13
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, TECH_PHORON = 2)
firemodes = list(
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 = "\improper Type-11 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/faction/himeo_free_consortium/himeo_blaster.dmi'
icon_state = "himeoblaster"
item_state = "himeoblaster"
projectile_type = /obj/projectile/energy/blaster/heavy
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 = WEIGHT_CLASS_BULKY
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/mechanics_hints(mob/user, distance, is_adjacent)
. += ..()
. += "When fully drained, this weapon will automatically eject the empty energy cell, allowing for rapid reload."
/obj/item/gun/energy/blaster/himeo/feedback_hints(mob/user, distance, is_adjacent)
. += ..()
if(is_adjacent)
if(power_supply)
. += SPAN_NOTICE("It has a <b>[capitalize_first_letters(power_supply.name)]</b> in the cell mount.")
else
. += SPAN_WARNING("It has no cell installed.")
/obj/item/gun/energy/blaster/himeo/attackby(obj/item/attacking_item, mob/user)
if(attacking_item.tool_behaviour == TOOL_SCREWDRIVER)
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_NOTICE("[power_supply] pops out of \the [src] and clatters on the floor!")
)
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 = "\improper Type-45 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/faction/himeo_free_consortium/himeo_pistol.dmi'
icon_state = "himeopistol"
item_state = "himeopistol"
projectile_type = /obj/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 = WEIGHT_CLASS_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)
)