Files
BatrachophrenoandGitHub 1c8c0c2221 Bugfix pile (#22823)
Fixes several runtimes from the past few weeks, some additional material
repath regressions, and the fact that if I shoot you with a stream of
ionized deuterium particles, it doesn't riddle you with cancer.

changes:
- bugfix: "Fixes emergency shields runtiming when hit by thrown
objects."
  - bugfix: "Fixes several stale global list runtimes."
- bugfix: "Fixes several health percentage checks that could use unset
initial health values."
  - bugfix: "Fixes additional materials regressions in INDRA code."
  - bugfix: "Fixes invalid fuel injector depletion math."
- bugfix: "Makes accelerated particles apply radiation damage to living
mobs they pass through."
2026-07-12 18:06:28 +00:00

237 lines
9.9 KiB
Plaintext

/obj/item/gun/energy/blaster
name = "NT-62P blaster pistol"
desc = "A NanoTrasen Corporation-designed energy handgun that fires ionised bolts of phoron. Often seen among the Tau Ceti Armed Forces."
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(MATERIAL_STEEL = 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 = "NT-1000X rapidfire blaster"
desc = "An exosuit-mounted blaster cannon that fires bursts of ionised phoron bolts."
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/revolver
name = "NT-62R blaster revolver"
desc = "A NanoTrasen Corporation-designed energy handgun that fires ionised bolts of phoron. Often seen among the Tau Ceti Armed Forces. This one appears to have a revolver-like design."
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 = "NT-62C blaster carbine"
desc = "A NanoTrasen Corporation-designed short-barreled blaster carbine meant for easy handling and comfort when in close-quarters combat. Often seen among the Tau Ceti Armed Forces."
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 = "NT-62M bolt slinger"
desc = "A NanoTrasen Corporation-designed blaster rifle that fires powerful bolts of ionised phoron. Often used by markspeople of the Tau Ceti Armed Forces."
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/guardian
name = "\improper NT-67 Guardian blaster rifle"
desc = "An improvement of older blaster weapon models. The Guardian makes use of various upgrades to fire more impactful, faster bolts of ionised phoron. The go-to service weapon of the Tau Ceti Armed Forces."
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)
)