Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29

# Conflicts:
#	_maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm
#	_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	_maps/map_files/tramstation/tramstation.dmm
#	code/_onclick/hud/new_player.dm
#	code/datums/components/squashable.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/datums/diseases/chronic_illness.dm
#	code/datums/status_effects/buffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/stamcrit.dm
#	code/game/machinery/computer/crew.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/wall_mounted.dm
#	code/game/turfs/closed/indestructible.dm
#	code/modules/admin/view_variables/filterrific.dm
#	code/modules/antagonists/heretic/influences.dm
#	code/modules/cargo/orderconsole.dm
#	code/modules/client/preferences.dm
#	code/modules/events/space_vines/vine_mutations.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/carbon/human/death.dm
#	code/modules/mob/living/carbon/human/species_types/jellypeople.dm
#	code/modules/mob/living/damage_procs.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mob_spawn/mob_spawn.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/projectiles/guns/ballistic/launchers.dm
#	code/modules/projectiles/guns/energy/laser.dm
#	code/modules/reagents/chemistry/machinery/chem_dispenser.dm
#	code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/medicine_reagents.dm
#	code/modules/surgery/healing.dm
#	code/modules/unit_tests/designs.dm
#	icons/mob/inhands/items_lefthand.dmi
#	icons/mob/inhands/items_righthand.dmi
#	tgui/packages/tgui/interfaces/ChemDispenser.tsx
This commit is contained in:
nevimer
2025-11-29 22:49:21 -05:00
1185 changed files with 39068 additions and 32028 deletions
@@ -145,10 +145,10 @@
casing.heals_left -= seconds_per_tick * 1 SECONDS
var/update_health = FALSE
var/healing = -healing_per_second * seconds_per_tick
update_health += owner.adjustBruteLoss(healing, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
update_health += owner.adjustFireLoss(healing, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
update_health += owner.adjustToxLoss(healing, updating_health = FALSE, required_biotype = BODYTYPE_ORGANIC)
update_health += owner.adjustOxyLoss(healing, updating_health = FALSE, required_biotype = BODYTYPE_ORGANIC)
update_health += owner.adjust_brute_loss(healing, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
update_health += owner.adjust_fire_loss(healing, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
update_health += owner.adjust_tox_loss(healing, updating_health = FALSE, required_biotype = BODYTYPE_ORGANIC)
update_health += owner.adjust_oxy_loss(healing, updating_health = FALSE, required_biotype = BODYTYPE_ORGANIC)
if (update_health)
owner.updatehealth()
if (can_sleep && (owner.mob_biotypes & MOB_ORGANIC))
@@ -9,25 +9,37 @@
e_cost = LASER_SHOTS(12, STANDARD_CELL_CHARGE)
select_name = "maim"
/obj/item/ammo_casing/energy/laser/accelerator
projectile_type = /obj/projectile/beam/laser/accelerator
select_name = "accelerator"
fire_sound = 'sound/items/weapons/lasercannonfire.ogg'
/obj/item/ammo_casing/energy/lasergun
projectile_type = /obj/projectile/beam/laser
e_cost = LASER_SHOTS(20, STANDARD_CELL_CHARGE)
select_name = "kill"
/obj/item/ammo_casing/energy/lasergun/pistol
e_cost = LASER_SHOTS(10, STANDARD_CELL_CHARGE)
/obj/item/ammo_casing/energy/lasergun/assault
projectile_type = /obj/projectile/beam/laser/rapid
e_cost = LASER_SHOTS(40, STANDARD_CELL_CHARGE)
/obj/item/ammo_casing/energy/lasergun/carbine
projectile_type = /obj/projectile/beam/laser/carbine
e_cost = LASER_SHOTS(50, STANDARD_CELL_CHARGE)
projectile_type = /obj/projectile/beam/laser/rapid
e_cost = LASER_SHOTS(26, STANDARD_CELL_CHARGE)
select_name = "kill"
fire_sound = 'sound/items/weapons/laser2.ogg'
/obj/item/ammo_casing/energy/lasergun/carbine/cybersun
projectile_type = /obj/projectile/beam/laser/carbine/cybersun
/obj/item/ammo_casing/energy/lasergun/cybersun
projectile_type = /obj/projectile/beam/laser/cybersun
e_cost = LASER_SHOTS(54, STANDARD_CELL_CHARGE)
select_name = "rapid fire"
fire_sound = 'sound/items/weapons/laser2.ogg'
/obj/item/ammo_casing/energy/lasergun/carbine/practice
projectile_type = /obj/projectile/beam/laser/carbine/practice
projectile_type = /obj/projectile/beam/laser/rapid/practice
select_name = "practice"
harmful = FALSE
@@ -30,7 +30,7 @@
. = ..()
if(!QDELETED(hit_mob))
hit_mob.Knockdown(2 SECONDS)
hit_mob.adjustBruteLoss(40)
hit_mob.adjust_brute_loss(40)
qdel()
/obj/item/ammo_box/magazine/m9mm/fire
+1 -7
View File
@@ -46,7 +46,7 @@
/// Delay between shots in a burst.
var/burst_delay = 2
/// Delay between bursts (if burst-firing) or individual shots (if weapon is single-fire).
var/fire_delay = 0
var/fire_delay = 0 SECONDS
var/firing_burst = 0 //Prevent the weapon from firing again while already firing
/// firing cooldown, true if this gun shouldn't be allowed to manually fire
var/fire_cd = 0
@@ -363,12 +363,6 @@
return
if(target == user && (user.zone_selected != BODY_ZONE_PRECISE_MOUTH && doafter_self_shoot)) //so we can't shoot ourselves (unless mouth selected)
return
if(iscarbon(target))
var/mob/living/carbon/C = target
for(var/i in C.all_wounds)
var/datum/wound/W = i
if(W.try_treating(src, user))
return // another coward cured!
if(istype(user))//Check if the user can use the gun, if the user isn't alive(turrets) assume it can.
var/mob/living/L = user
+1 -1
View File
@@ -286,7 +286,7 @@
burst_fire_selection = !burst_fire_selection
if(!burst_fire_selection)
burst_size = 1
fire_delay = 0
fire_delay = 0 SECONDS
balloon_alert(user, "switched to semi-automatic")
else
burst_size = initial(burst_size)
@@ -330,7 +330,7 @@
accepted_magazine_type = /obj/item/ammo_box/magazine/recharge
empty_indicator = TRUE
bolt_type = BOLT_TYPE_OPEN
fire_delay = 2
fire_delay = 2 DECISECONDS
can_suppress = FALSE
burst_size = 0
actions_types = list()
@@ -359,7 +359,7 @@
mag_display = TRUE
projectile_damage_multiplier = 1.2
projectile_speed_multiplier = 1.2
fire_delay = 2
fire_delay = 2 DECISECONDS
burst_size = 1
actions_types = list()
fire_sound = 'sound/items/weapons/thermalpistol.ogg'
@@ -42,6 +42,7 @@
/obj/item/gun/ballistic/bow/ashenbow
name = "ashen bow"
desc = "A bow made from watcher sinew and bone. Seems to possess an almost eerie radiance about it."
icon_state = "ashenbow"
inhand_icon_state = "ashenbow"
base_icon_state = "ashenbow"
worn_icon_state = "ashenbow"
@@ -60,7 +60,8 @@
fire_sound = 'sound/items/weapons/gun/general/grenade_launch.ogg'
accepted_magazine_type = /obj/item/ammo_box/magazine/m75
burst_size = 1
fire_delay = 0
fire_delay = 0 SECONDS
actions_types = list()
casing_ejector = FALSE
/obj/item/gun/ballistic/rocketlauncher
@@ -81,7 +82,7 @@
can_suppress = FALSE
pin = /obj/item/firing_pin/implant/pindicate
burst_size = 1
fire_delay = 0
fire_delay = 0 SECONDS
casing_ejector = FALSE
weapon_weight = WEAPON_HEAVY
bolt_type = BOLT_TYPE_NO_BOLT
@@ -7,7 +7,7 @@
accepted_magazine_type = /obj/item/ammo_box/magazine/m9mm
can_suppress = TRUE
burst_size = 1
fire_delay = 0
fire_delay = 0 SECONDS
actions_types = list()
bolt_type = BOLT_TYPE_LOCKING
fire_sound = 'sound/items/weapons/gun/pistol/shot.ogg'
@@ -46,7 +46,7 @@
desc = "A sturdy shotgun with a longer magazine and a fixed tactical stock designed for non-lethal riot control."
icon_state = "riotshotgun"
inhand_icon_state = "shotgun"
fire_delay = 8
fire_delay = 8 DECISECONDS
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/shot/riot
sawn_desc = "Come with me if you want to live."
can_be_sawn_off = TRUE
+6 -1
View File
@@ -50,6 +50,11 @@
/// sound played when fire mode select is done
var/fire_mode_switch_sound = SFX_FIRE_MODE_SWITCH
// EMP related vars
/// A divide to the amount of charge lost when the weapon is EMP'd. Higher means more resistant.
var/emp_resistance = 1
/obj/item/gun/energy/fire_sounds()
// What frequency the energy gun's sound will make
var/pitch_to_use = 1
@@ -76,7 +81,7 @@
/obj/item/gun/energy/emp_act(severity)
. = ..()
if(!(. & EMP_PROTECT_CONTENTS))
cell.use(round(cell.charge / severity))
cell.use(round(cell.charge / emp_resistance / severity))
chambered = null //we empty the chamber
recharge_newshot() //and try to charge a new shot
update_appearance()
@@ -127,3 +127,50 @@
ammunition by manually spinning the weapon's nanite canister."
icon_state = "cryopistol"
ammo_type = list(/obj/item/ammo_casing/energy/nanite/cryo)
// The Deep Lore //
// Laser Musket
/obj/item/gun/energy/laser/musket/add_deep_lore()
AddElement(/datum/element/examine_lore, \
lore_hint = span_notice("You can [EXAMINE_HINT("think carefully")] to learn a little more about [src]."), \
lore = "The first examples of laser muskets emerged somewhat recently, even though improvised firearms have had \
a rich history throughout human, Mothic and Tiziran history.<br>\
<br>\
Laser muskets often started to emerge when conventional weaponry or ammunition started to grow scarcer, and the amount \
of scrap electronics and materials outpaced the speed at which engineering crews could repair structural defenses and \
infrastructure. They're regarded as weapons of extreme desperation, but also of unmatched grit in the face of a hopeless situation. <br>\
<br>\
Constructing one of these is sometimes seen as a rite of passage amongst militia groups and rebel forces. Each one as unique \
as the next. <br>\
<br>\
What will this one's name be? What history will it write? Time will surely tell." \
)
// Thermal Pistols
/obj/item/gun/energy/laser/thermal/add_deep_lore()
AddElement(/datum/element/examine_lore, \
lore_hint = span_notice("You can [EXAMINE_HINT("look closer")] to learn a little more about [src]."), \
lore = "A weapon with no name, more a pattern of design. Examples of thermal pistols vary heavily based on the \
manufacturer or craftsperson. However, the original inventor of the thermal pistol is largely clouded in mystery. \
Replica versions of the pistol were circulating long before weaponized nanites were banned by the \
TerraGov Subdermal Weapons Accord, and have continued to exist as a means of disposing of the self-replicating stocks \
of weaponized nanites.<br>\
<br>\
This is an example of Nanotrasen's Viper Classic model, based on earlier models of the weapon in appearance, but using \
up to date nanite breeding chambers that respond to user articulation. That is, the weapons can be charged with a vigorous \
shake. Though most users prefer to use the custom trick triggerguard to twirl them on their finger. Mostly for showmanship. <br>\
<br>\
Due to various movies and television programs, or perhaps spacer legends of fancy, the weapons are often associated with the \
'Space Rangers' that roam the periphery and Australicus regions of space. Polarizing tales of rugged gun fighters roaming \
from outpost to outpost, leaving justice, death or merely a large quantity of buzzing nanite clouds in their wake. \
Robber barons, frontier lawbringers. Even the occasional hard-boiled detective. These weapons are sometimes associated \
with cultural imagery around rugged individualism, tenacity and nonconformity, as well as a bygone age of noble warriors and \
ruthless villains. Using these weapons today is largely seen as a way to evoke this imagery, even if it comes across \
as mildly tacky. <br>\
<br>\
It isn't fully understood who started the practice of 'pairing' the pistols, though the custom has remained as long as \
living memory. Every thermal pistol has a mate, and it is considered ill fortune to separate them purposefully." \
)
@@ -176,11 +176,11 @@
switch(fail_tick)
if(0 to 200)
fail_tick += (2*(fail_chance))
M.adjustFireLoss(3)
M.adjust_fire_loss(3)
to_chat(M, span_userdanger("Your [name] feels warmer."))
if(201 to INFINITY)
SSobj.processing.Remove(src)
M.adjustFireLoss(10)
M.adjust_fire_loss(10)
reactor_overloaded = TRUE
to_chat(M, span_userdanger("Your [name]'s reactor overloads!"))
+277 -48
View File
@@ -1,13 +1,12 @@
/obj/item/gun/energy/laser
name = "laser gun"
desc = "A basic energy-based laser gun that fires concentrated beams of light which pass through glass and thin metal."
name = "\improper Type 5 laser gun"
desc = "The Type 5 Heat Delivery System, developed by Nanotrasen. The workhorse of Nanotrasen's security forces."
icon_state = "laser"
inhand_icon_state = "laser"
w_class = WEIGHT_CLASS_BULKY
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT)
ammo_type = list(/obj/item/ammo_casing/energy/lasergun)
ammo_x_offset = 1
shaded_charge = 1
shaded_charge = TRUE
/obj/item/gun/energy/laser/Initialize(mapload)
. = ..()
@@ -20,6 +19,8 @@
/datum/element/slapcrafting,\
slapcraft_recipes = slapcraft_recipe_list,\
)
add_deep_lore()
/obj/item/gun/energy/laser/add_seclight_point()
AddComponent(/datum/component/seclite_attachable, \
light_overlay_icon = 'icons/obj/weapons/guns/flashlights.dmi', \
@@ -27,69 +28,129 @@
overlay_x = 18, \
overlay_y = 12)
/obj/item/gun/energy/laser/pistol
name = "\improper Type 5C laser pistol"
desc = "The Type 5 Heat Delivery System Compact Variant, developed by Nanotrasen. The workhorse of Nanotrasen's security forces, but in a more portable size."
icon_state = "laser_pistol"
w_class = WEIGHT_CLASS_NORMAL
projectile_damage_multiplier = 0.8
cell_type = /obj/item/stock_parts/power_store/cell/laser_pistol
ammo_type = list(/obj/item/ammo_casing/energy/lasergun/pistol)
/obj/item/gun/energy/laser/pistol/add_seclight_point()
return
/obj/item/gun/energy/laser/assault
name = "\improper Type 5A assault laser rifle"
desc = "The Type 5 Heat Delivery System Assault Variant, developed by Nanotrasen. The workhorse of Nanotrasen's security forces and paramilitary organizations."
icon = 'icons/obj/weapons/guns/wide_guns.dmi'
icon_state = "assault_laser"
inhand_icon_state = "assault_laser"
worn_icon_state = "assault_laser"
slot_flags = ITEM_SLOT_BACK
burst_size = 2
fire_delay = 1
ammo_type = list(/obj/item/ammo_casing/energy/lasergun/assault)
emp_resistance = 2
weapon_weight = WEAPON_HEAVY
projectile_speed_multiplier = 1.5
SET_BASE_PIXEL(-8, 0)
/obj/item/gun/energy/laser/assault/add_seclight_point()
AddComponent(/datum/component/seclite_attachable, \
light_overlay_icon = 'icons/obj/weapons/guns/flashlights.dmi', \
light_overlay = "flight", \
overlay_x = 18, \
overlay_y = 30)
/obj/item/gun/energy/laser/practice
name = "practice laser gun"
desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice."
desc = "A modified version of the Type 5 laser gun. Fires entirely harmless bolts of directed energy. Safe AND entertaining to fire with abandon."
ammo_type = list(/obj/item/ammo_casing/energy/laser/practice)
clumsy_check = FALSE
item_flags = NONE
gun_flags = NOT_A_REAL_GUN
/obj/item/gun/energy/laser/practice/add_deep_lore()
return
/obj/item/gun/energy/laser/retro
name ="retro laser gun"
name ="\improper Type 1 laser gun"
desc = "The Type 1 Heat Delivery System, developed by Nanotrasen. No longer used by Nanotrasen's private security or military forces. Nevertheless, \
it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws."
icon_state = "retro"
desc = "An older model of the basic lasergun, no longer used by Nanotrasen's private security or military forces. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws."
ammo_x_offset = 3
/obj/item/gun/energy/laser/soul
name ="\improper Type 3 laser gun"
desc = "The Type 3 Heat Delivery System, developed by Nanotrasen. Quite possibly the most popular model of HDS ever made by Nanotrasen. They don't make them like they used too."
icon_state = "laser_soulful"
inhand_icon_state = "laser_soulful"
ammo_x_offset = 1
/obj/item/gun/energy/laser/carbine
name = "laser carbine"
desc = "A modified laser gun which can shoot far faster, but each shot is far less damaging."
name = "\improper Type 5R laser carbine"
desc = "The burst fire Type 5R Rapid Heat Delivery System, developed by Nanotrasen. Capable of firing a sustained volley of directed energy projectiles, though each individual projectile lacks the punch of the Type 5."
icon_state = "laser_carbine"
burst_size = 2
fire_delay = 2
projectile_damage_multiplier = 0.75
projectile_speed_multiplier = 1.5
ammo_type = list(/obj/item/ammo_casing/energy/lasergun/carbine)
weapon_weight = WEAPON_MEDIUM
/obj/item/gun/energy/laser/carbine/Initialize(mapload)
. = ..()
AddComponent(/datum/component/automatic_fire, 0.15 SECONDS, allow_akimbo = FALSE)
/obj/item/gun/energy/laser/carbine/cybersun
/obj/item/gun/energy/laser/cybersun
name = "\improper Cybersun S-120"
desc = "A laser gun primarily used by syndicate security guards. It fires a rapid spray of low-power plasma beams."
icon_state = "cybersun_s120"
inhand_icon_state = "s120"
ammo_type = list(/obj/item/ammo_casing/energy/lasergun/carbine/cybersun)
ammo_type = list(/obj/item/ammo_casing/energy/lasergun/cybersun)
spread = 14
pin = /obj/item/firing_pin/implant/pindicate
ammo_x_offset = 1
/obj/item/gun/energy/laser/carbine/cybersun/unrestricted
/obj/item/gun/energy/laser/cybersun/Initialize(mapload)
. = ..()
AddComponent(/datum/component/automatic_fire, 0.15 SECONDS, allow_akimbo = FALSE)
/obj/item/gun/energy/laser/cybersun/add_deep_lore()
return
/obj/item/gun/energy/laser/cybersun/unrestricted
pin = /obj/item/firing_pin
/obj/item/gun/energy/laser/carbine/practice
name = "practice laser carbine"
desc = "A modified version of the laser carbine, this one fires even less concentrated energy bolts designed for target practice."
desc = "A modified version of the Type 5R laser carbine. Fires entirely harmless bolts of directed energy. Safe AND entertaining to fire with abandon."
ammo_type = list(/obj/item/ammo_casing/energy/lasergun/carbine/practice)
clumsy_check = FALSE
item_flags = NONE
gun_flags = NOT_A_REAL_GUN
/obj/item/gun/energy/laser/carbine/practice/add_deep_lore()
return
/obj/item/gun/energy/laser/retro/old
name ="laser gun"
icon_state = "retro"
desc = "First generation lasergun, developed by Nanotrasen. Suffers from ammo issues but its unique ability to recharge its ammo without the need of a magazine helps compensate. You really hope someone has developed a better lasergun while you were in cryo."
desc = "The NT Type 1 Heat Delivery System, developed by Nanotrasen. Although, this one looks downright ancient. What the hell happened to it?"
ammo_type = list(/obj/item/ammo_casing/energy/lasergun/old)
ammo_x_offset = 3
/obj/item/gun/energy/laser/retro/old/add_deep_lore()
return
/obj/item/gun/energy/laser/hellgun
name ="hellfire laser gun"
desc = "A relic of a weapon, built before NT began installing regulators on its laser weaponry. This pattern of laser gun became infamous for the gruesome burn wounds it caused, and was quietly discontinued once it began to affect NT's reputation."
name = "\improper Type 2 'hellfire' laser gun"
desc = "The Type 2 Heat Delivery System, developed by Nanotrasen. Technically speaking, it is an improvement. Legally speaking, possession of this weapon is restricted in most occupied sectors of space. \
The Type 2 is notorious for its ability to render victims a carbonized husk with ease, melting flesh and bone as easily as butter. A painful, gruesome death awaits anyone on the wrong ends of this gun."
icon_state = "hellgun"
ammo_type = list(/obj/item/ammo_casing/energy/laser/hellfire)
ammo_x_offset = 1
/obj/item/gun/energy/laser/captain
name = "antique laser gun"
desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Space Station 13. The station is exploding."
icon_state = "caplaser"
w_class = WEIGHT_CLASS_NORMAL
inhand_icon_state = null
desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Space Station 13. The station is exploding."
force = 10
ammo_x_offset = 3
selfcharge = 1
@@ -99,26 +160,39 @@
/obj/item/gun/energy/laser/captain/scattershot
name = "scatter shot laser rifle"
desc = "An industrial-grade heavy-duty laser rifle with a modified laser lens to scatter its shot into multiple smaller lasers. The inner-core can self-charge for theoretically infinite use."
icon_state = "lasercannon"
w_class = WEIGHT_CLASS_BULKY
inhand_icon_state = "laser"
desc = "An industrial-grade heavy-duty laser rifle with a modified laser lens to scatter its shot into multiple smaller lasers. The inner-core can self-charge for theoretically infinite use."
ammo_type = list(/obj/item/ammo_casing/energy/laser/scatter, /obj/item/ammo_casing/energy/laser)
shaded_charge = FALSE
ammo_x_offset = 1
/obj/item/gun/energy/laser/captain/scattershot/add_deep_lore()
return
/obj/item/gun/energy/laser/cyborg
can_charge = FALSE
desc = "An energy-based laser gun that draws power from the cyborg's internal energy cell directly. So this is what freedom looks like?"
use_cyborg_cell = TRUE
ammo_x_offset = 1
/obj/item/gun/energy/laser/cyborg/Initialize(mapload)
. = ..()
AddElement(/datum/element/empprotection, EMP_PROTECT_ALL)
/obj/item/gun/energy/laser/cyborg/add_deep_lore()
return
/obj/item/gun/energy/laser/scatter
name = "scatter laser gun"
desc = "A laser gun equipped with a refraction kit that spreads bolts."
ammo_type = list(/obj/item/ammo_casing/energy/laser/scatter, /obj/item/ammo_casing/energy/laser)
ammo_x_offset = 1
/obj/item/gun/energy/laser/scatter/add_deep_lore()
return
/obj/item/gun/energy/laser/scatter/shotty
name = "energy shotgun"
@@ -126,10 +200,11 @@
icon_state = "cshotgun"
inhand_icon_state = "shotgun"
desc = "A combat shotgun gutted and refitted with an internal laser system. Can switch between taser and scattered disabler shots."
shaded_charge = 0
shaded_charge = FALSE
pin = /obj/item/firing_pin/implant/mindshield
ammo_type = list(/obj/item/ammo_casing/energy/laser/scatter/disabler, /obj/item/ammo_casing/energy/electrode)
automatic_charge_overlays = FALSE
ammo_x_offset = 1
///Laser Cannon
@@ -147,35 +222,18 @@
pin = null
ammo_x_offset = 3
/obj/item/ammo_casing/energy/laser/accelerator
projectile_type = /obj/projectile/beam/laser/accelerator
select_name = "accelerator"
fire_sound = 'sound/items/weapons/lasercannonfire.ogg'
/obj/projectile/beam/laser/accelerator
name = "accelerator laser"
icon_state = "scatterlaser"
range = 255
damage = 6
var/size_per_tile = 0.1
var/max_scale = 4
/obj/projectile/beam/laser/accelerator/reduce_range()
..()
damage += 7
transform = matrix()
transform *= min(1 + (maximum_range - range) * size_per_tile, max_scale)
///X-ray gun
/obj/item/gun/energy/xray
name = "\improper X-ray laser gun"
desc = "A high-power laser gun capable of expelling concentrated X-ray blasts that pass through multiple soft targets and heavier materials."
/obj/item/gun/energy/laser/xray
name = "\improper Type 6 X-ray laser gun"
desc = "The Type 6 Heat Delivery System, developed by Nanotrasen. Capable of expelling concentrated 'X-ray' blasts that pass through multiple soft targets and heavier materials."
icon_state = "xray"
w_class = WEIGHT_CLASS_BULKY
inhand_icon_state = null
ammo_type = list(/obj/item/ammo_casing/energy/xray)
ammo_x_offset = 3
shaded_charge = FALSE
////////Laser Tag////////////////////
/obj/item/gun/energy/laser/bluetag
@@ -193,6 +251,9 @@
/obj/item/gun/energy/laser/bluetag/hitscan
ammo_type = list(/obj/item/ammo_casing/energy/laser/bluetag/hitscan)
/obj/item/gun/energy/laser/bluetag/add_deep_lore()
return
/obj/item/gun/energy/laser/redtag
name = "laser tag gun"
icon_state = "redtag"
@@ -205,6 +266,9 @@
selfcharge = TRUE
gun_flags = NOT_A_REAL_GUN
/obj/item/gun/energy/laser/redtag/add_deep_lore()
return
/obj/item/gun/energy/laser/redtag/hitscan
ammo_type = list(/obj/item/ammo_casing/energy/laser/redtag/hitscan)
@@ -217,3 +281,168 @@
name = "luxurious laser gun"
desc = "A laser gun modified to cost 20 credits to fire. Point towards poor people."
pin = /obj/item/firing_pin/paywall/luxury
// The Deep Lore //
// Laser Gun
/obj/item/gun/energy/laser/proc/add_deep_lore()
AddElement(/datum/element/examine_lore, \
lore_hint = span_notice("You can [EXAMINE_HINT("look closer")] to learn a little more about [src]."), \
lore = "The NT Type 5 Heat Delivery System (sometimes referred to as the HDS5 in promotional material) is what truly put Nanotrasen \
head and shoulders above most weapon manufacturers in the modern era. All modern energy weaponry offered by the company have \
the success of the Type 5 to thank for setting the standard for energy-based weapon platforms.<br>\
<br>\
Adopted as the standard infantry firearm for Nanotrasen military forces, as well as private security lethal armaments, few can deny \
the weapon's reliability. And at an affordable price! <br>\
<br>\
However, the weapon platform still possesses many of the vulnerabilities of previous energy-based weaponry. Onboard power supplies \
cannot be adequately shielded from external electromagnetic pulses that might interfere with the weapon's functionality without \
also severely jeopardizing thermal distribution into the weapon's heatsink. The Type 4, which never saw wider adoption, remains a \
haunting example to Nanotrasen's weapons division as to the consequences when a HDS is unable to expel thermal buildup safely. <br>\
<br>\
Certainly, the Melted Veterans of Galpha 5 advocacy group will never let them forget it." \
)
// Retro Laser Gun
/obj/item/gun/energy/laser/retro/add_deep_lore()
AddElement(/datum/element/examine_lore, \
lore_hint = span_notice("You can [EXAMINE_HINT("look closer")] to learn a little more about [src]."), \
lore = "The NT Type 1 Heat Delivery System (sometimes referred to as the HDS1 in older weapon catalogs) was a weapon that \
marked the beginning of a new era of firearm development. <br>\
<br>\
Invented in the thinktank laboritories of Nanotrasen's weapon development team towards the end of the 24th century, the Type 1 found \
itself adopted broadly by various factions and military entities vying for control over the frontier once it hit the market. One \
hallmark of those who stood successful in these conflicts were those groups that had adopted the Type 1 as a standard infantry \
weapon. The logistics required to maintain the operational peak of the HDS1 allowed most quartermasters to merely dump a half \
dozen of the weapons into the hands of bloodythirsty marines, knowing full well the weapons were rugged enough to survive \
most anything thrown at them, and only needing a recharging station with a power supply to keep operational once they run empty. <br>\
<br>\
So many of these weapons exist today that even modern conflicts may see more usage of the HDS1 than the updated and equally \
reliable HDS5 employed by Nanotrasen's modern combat forces. Nanotrasen, despite their best efforts, still have not managed \
to encourage potential customers to swap for the new model despite a generous exchange discount." \
)
// Soulful Laser Gun
/obj/item/gun/energy/laser/soulful/add_deep_lore()
AddElement(/datum/element/examine_lore, \
lore_hint = span_notice("You can [EXAMINE_HINT("look closer")] to learn a little more about [src]."), \
lore = "The NT Type 3 Heat Delivery System (sometimes referred to as the HDS3 in the memories of security officers) is quite possibly \
the most common type of HDS still available on the market. Fondly regarded, with quite a few diehard fans still clinging to their \
Type 3's like their lives depended on it, the weapon has its own place in history as the 'gun that could do it all'.<br>\
<br>\
The Type 3 line ran for several decades before attempts to replace it ever even crossed Nanotrasen's minds. When people think \
'laser gun', the Type 3 is usually what comes to mind.<br>\
<br>\
When Nanotrasen announced its replacement, the Type 4, skeptics were quick to pan the weapon, claiming that it lacked several notable \
features that users of the Type 3 had enjoyed for years. As it turns out, most of those critics would end up vindicated after word of \
Gulpha 5 and the terrible, terrible consequences of the Type 4's volatile nature came to light. Most stuck to the Type 3 and never \
looked back, even when the Type 5 rolled out to considerable success in its own right.<br>\
<br>\
Nanotrasen still services Type 3's, with many of the parts used in the weapon sharing compatible cousins in the Type 5. Most \
examples of the Type 3 today may actually be closer in function and form to the Type 5 than they were during their original \
construction, depending on how often it is serviced." \
)
// hellfire laser gun
/obj/item/gun/energy/laser/hellgun/add_deep_lore()
AddElement(/datum/element/examine_lore, \
lore_hint = span_notice("You can [EXAMINE_HINT("look closer")] to learn a little more about [src]."), \
lore = "The NT Type 2 Heat Delivery System (sometimes referred to as the HDS2 in legal documentation) is considered a notable \
example of Nanotrasen flying too close to the sun for its own good. <br>\
<br>\
The success of the Type 1 resulted in shareholders urging marketing to bring out the 'next best thing' in energy-based weaponry. \
At the time, Nanotrasen's weapons division had a prototype still in the works. However, there were some concerns raised amongst \
researchers as to the 'moral implications' that might result from unleashing 'that much directed radioactive material' towards \
a living being. Executives at the time brushed off such concerns, as there was money to be made and already ultrawealthy shareholders \
to feed the earnings.<br>\
<br>\
The Type 2 was rushed onto the market within the next quarter, even before most common safety mechanisms had been properly tested and implemented.\
Reports immediately began flooding in of horrific accidental dischargess, battlefield atrocities and unexpected spontaneous combustion \
from excessive exposure to the untested experimental heat distribution systems 'taking its pound of flesh' for the 'hell it unleashed'.<br>\
<br>\
News outlets and tabloids alike railed against the company for creating what was now being called the 'hellfire' laser gun. In response, most \
legal bodies rushed to ban the firearm from sales within their region of space, and the weapon became infamous for its unethical means of ending \
sentient life. Laws were passed to ensure power regulators were installed in all future energy-based weaponry sold by Nanotrasen. Nanotrasen quickly \
discontinued the Type 2 in response, and it never saw production from that day forth. However, retrofit kits still exist \
on the black market and in some of Nanotrasen's own warehouses. While legally, it is unlawful to sell and possess a Type 2, Nanotrasen itself \
does not regulate possession of the firearm aboard its own stations. Nor does any legal body intend on preventing them from utilizing it in defense \
of its own assets." \
)
// Antique Laser Gun
/obj/item/gun/energy/laser/captain/add_deep_lore()
AddElement(/datum/element/examine_lore, \
lore_hint = span_notice("You can [EXAMINE_HINT("look closer")] to learn a little more about [src]."), \
lore = "For a brief period, Nanotrasen produced a series of custom-made Type 2 laser guns for a select group of \
clients. Largely, various wealthy starship captains, politicians and military leaders looking to demonstrate prestige before \
the common folk. <br>\
<br>\
The Type 2 was a commercial failure, but this particular variant earned its own infamy, linked to narratives of crazed \
despots using it to put down political rivals and dissidents. As well as tales of mad generals marching ahead of their \
forces, this weapon brandished, running hot, in an outstretched arm towards any moving target they could find on the \
battlefield. <br>\
<br>\
Copies of this firearm are now prohibited within TerraGov space, and any captured are quickly decommissioned.\
This is largely why Nanotrasen <i>insists</i> that any examples held by ranking officers be kept under lock and key. \
All records of the schematics surrounding this variant of the Type 2 were seized and destroyed, and the creator behind \
it detained in a maximum security TerraGov sanitorium. When they found her, she appeared to have smeared the walls in her \
own blood, claiming that 'She' was coming, and that she had paid dearly for the knowledge of how to make the weapon. <br\
<br>\
Even the microfusion breeder cell housed inside the weapon is practically a lost technology, and Nanotrasen have been unable \
to reverse engineer the devices exact means of functionality.<br>\
<br>\
The Syndicate are obviously just as interested in exactly how this weapon is capable of self-perpetuation. Hence why the collective \
seem hell-bent on capturing them whenever possible. Maybe keep this somewhere safe. Or don't." \
)
// X-ray Laser Gun
/obj/item/gun/energy/laser/xray/add_deep_lore()
AddElement(/datum/element/examine_lore, \
lore_hint = span_notice("You can [EXAMINE_HINT("look closer")] to learn a little more about [src]."), \
lore = "The NT Type 6 Heat Delivery System (sometimes referred to as the HDS6 in research notes) is a breakthrough in the \
development of directed energy weaponry. <br>\
<br>\
Very little is known about the Type 6, as it is a relatively new experimental weapon only accessible to Nanotrasen security forces.\
Somehow, Nanotrasen has found a means to 'slip' the energy beams produced by the Type 6 through unintended targets, only impacting \
once it has made contact with a pre-designated target by the weapon's user. It appears to be unable to slip past organic matter reliably, \
which hampers its potential for eliminating friendly-fire. However, inorganic targets are left unscathed unless the weapon is directed towards \
firing upon the object. This makes the weapon exceptional for asset recovery and defense entrenchment and assaults on defensive structures. <br>\
<br>\
Nanotrasen claims that this phenomenon is achieved 'through the power of X-rays'. Most critics have highlighted that this is total nonsense. Some claim \
that Nanotrasen has discovered a yet uknown state of matter that the company is exploiting for weapons development and manufacturing. The most \
conspiratorially minded of Nanotrasen's critics have even gone as far as to claim it is 'proof of ectoplasm as the sixth element'.\
And that, perhaps, the weapon may be operating through supernatural means. Maybe even powered by the 'spirits of the damned'.<br>\
<br>\
Whatever the truth may be, the weapon seems to function as advertized, and is even more energy efficient than the Type 5. Nanotrasen \
expects full commercial rollout sometime in the next quarter." \
)
// Laser Carbine
/obj/item/gun/energy/laser/carbine/add_deep_lore()
AddElement(/datum/element/examine_lore, \
lore_hint = span_notice("You can [EXAMINE_HINT("look closer")] to learn a little more about [src]."), \
lore = "The NT Type 5R Rapid Heat Delivery System (sometimes referred to as the RHDS5R in briefing manuals, and 'that piece of shit flashlight' amongst \
TGMC troopers) was a shaky first step into automatic directed energy weaponry. <br>\
<br>\
Intended for use in special operations, particularly in the hands of orbital drop shock troopers, the Type 5R was foreseen to be an excellent \
addition to Nanotrasen's arsenal of offerings to military forces across occupied space. However, field performance proved grim.<br>\
<br>\
The advantages of directed energy weapons is the lightweight impacts felt on the supply chain for logistical officers and quartermasters due to the \
only necessary upkeep for the weapons being a consistent power supply, either established or brought to the front, and the occassional cleaning.<br>\
<br>\
This, however, is not a benefit that soldiers operating behind enemy lines or during tactical deployments are capable of exploiting. As a result, \
operators often chaffed against the limited ammunition supply compared to conventional ballistic firearms, and the weapon quickly was abandoned by \
most special forces units.<br>\
<br>\
Instead, the weapon found favour in the hands of private security teams, who enjoyed the volume of fire it provided, while maintaining \
exceptional accuracy even at long ranges, as well as being compact enough to allow a high of discretion compared to a full sized rifle. \
The weapon is also often utilized by rim pirates and marauders, giving the weapon something of an ill reputation." \
)
@@ -22,6 +22,9 @@
selfcharge = 1
trigger_guard = TRIGGER_GUARD_ALLOW_ALL
/obj/item/gun/energy/laser/mounted/add_deep_lore()
return
/obj/item/gun/energy/laser/mounted/augment
icon = 'icons/obj/medical/organs/organs.dmi'
icon_state = "arm_laser"
@@ -5,6 +5,7 @@
icon_state = "chronogun"
inhand_icon_state = "chronogun"
w_class = WEIGHT_CLASS_NORMAL
item_flags = parent_type::item_flags & ~NEEDS_PERMIT
var/mob/living/current_target
var/last_check = 0
@@ -113,10 +114,10 @@
if(target.health != target.maxHealth)
new /obj/effect/temp_visual/heal(get_turf(target), COLOR_HEALING_CYAN)
var/need_mob_update
need_mob_update = target.adjustBruteLoss(-4, updating_health = FALSE, forced = TRUE)
need_mob_update += target.adjustFireLoss(-4, updating_health = FALSE, forced = TRUE)
need_mob_update += target.adjustToxLoss(-1, updating_health = FALSE, forced = TRUE)
need_mob_update += target.adjustOxyLoss(-1, updating_health = FALSE, forced = TRUE)
need_mob_update = target.adjust_brute_loss(-4, updating_health = FALSE, forced = TRUE)
need_mob_update += target.adjust_fire_loss(-4, updating_health = FALSE, forced = TRUE)
need_mob_update += target.adjust_tox_loss(-1, updating_health = FALSE, forced = TRUE)
need_mob_update += target.adjust_oxy_loss(-1, updating_health = FALSE, forced = TRUE)
if(need_mob_update)
target.updatehealth()
return
@@ -234,5 +234,5 @@
if(!.)
return
visible_message(span_danger("[user] shoots the blowgun!"))
user.adjustStaminaLoss(20, updating_stamina = FALSE)
user.adjustOxyLoss(20)
user.adjust_stamina_loss(20, updating_stamina = FALSE)
user.adjust_oxy_loss(20)
+20 -5
View File
@@ -28,17 +28,18 @@
damage = 25
exposed_wound_bonus = 40
/obj/projectile/beam/laser/carbine
/obj/projectile/beam/laser/rapid
name = "rapid fire laser"
icon_state = "carbine_laser"
impact_effect_type = /obj/effect/temp_visual/impact_effect/yellow_laser
damage = 10
damage = 20
/obj/projectile/beam/laser/carbine/practice
name = "practice laser"
/obj/projectile/beam/laser/rapid/practice
name = "practice rapid fire laser"
impact_effect_type = /obj/effect/temp_visual/impact_effect/yellow_laser
damage = 0
/obj/projectile/beam/laser/carbine/cybersun
/obj/projectile/beam/laser/cybersun
name = "red plasma beam"
icon_state = "lava"
light_color = COLOR_DARK_RED
@@ -47,6 +48,20 @@
wound_bonus = -40
speed = 0.9
/obj/projectile/beam/laser/accelerator
name = "accelerator laser"
icon_state = "scatterlaser"
range = 255
damage = 6
var/size_per_tile = 0.1
var/max_scale = 4
/obj/projectile/beam/laser/accelerator/reduce_range()
..()
damage += 7
transform = matrix()
transform *= min(1 + (maximum_range - range) * size_per_tile, max_scale)
//overclocked laser, does a bit more damage but has much higher wound power (-0 vs -20)
/obj/projectile/beam/laser/hellfire
name = "hellfire laser"
@@ -178,7 +178,7 @@
/obj/projectile/bullet/pea/on_hit(mob/living/carbon/target, blocked = 0, pierce_hit)
if(istype(target) && blocked != 100)
if(iszombie(target)) // https://www.youtube.com/watch?v=ssZoq1eUK-s
target.adjustBruteLoss(15)
target.adjust_brute_loss(15)
if(target.can_inject(target_zone = def_zone)) // Pass the hit zone to see if it can inject by whether it hit the head or the body.
..()
reagents.trans_to(target, reagents.total_volume, methods = INJECT)
+1 -1
View File
@@ -354,7 +354,7 @@
. = ..()
if(iscarbon(target))
if(istype(get_area(target), /area/deathmatch))
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 25) // Roughly 8 hits to kill
target.adjust_organ_loss(ORGAN_SLOT_BRAIN, 25) // Roughly 8 hits to kill
target.visible_message(span_warning("[target] grips their head in pain!"))
return BULLET_ACT_HIT
for(var/x in target.get_traumas())//checks to see if the victim is already going through possession
@@ -28,11 +28,11 @@
/obj/projectile/energy/flora/mut/on_hit_plant_effect(mob/living/hit_plant)
if(prob(85))
hit_plant.adjustFireLoss(rand(5, 15))
hit_plant.adjust_fire_loss(rand(5, 15))
hit_plant.show_message(span_userdanger("The radiation beam singes you!"))
return
hit_plant.adjustToxLoss(rand(3, 6))
hit_plant.adjust_tox_loss(rand(3, 6))
hit_plant.Paralyze(10 SECONDS)
hit_plant.visible_message(
span_warning("[hit_plant] writhes in pain as [hit_plant.p_their()] vacuoles boil."),
@@ -5,5 +5,5 @@
. = ..()
if(ishuman(target))
var/mob/living/carbon/human/human_hit = target
human_hit.adjustOrganLoss(ORGAN_SLOT_BRAIN, 20)
human_hit.adjust_organ_loss(ORGAN_SLOT_BRAIN, 20)
human_hit.adjust_hallucinations(60 SECONDS)