Mech thermal guns (#90928)

## About The Pull Request

PR adds new unique weapons for mechs - thermal cannons. You can only buy
them in cargo in the "armory" category for 5k, which adds cooperation
between cargo and science (maybe even security, since you need their
access to open the crate).
Thermal guns only work better in pairs, allowing them to reload faster.
You can't have 2 of the same thermal guns (not that you could use them
anyway even if you could install the same ones)

Sprites by: https://github.com/sylvia-from-fulp-station


https://github.com/user-attachments/assets/d78504b9-90b8-4f8b-b850-fa96dd8ef554

## Why It's Good For The Game

Mechs don't need buffs, but a greater variety of weapons. Thermals will
be a good example of combining both energy weapons and ballistic weapons
(which mechs lack so much, since all we have from ballistics is Hades,
which does not damage at all). It will also be, in my opinion, the first
interesting weapon that not only shoots, but also gives some bonuses
when used correctly.

## Changelog


🆑
add: Added heavy thermal guns for mechs. Works on the principle of
regular hand guns. Can only be purchased in cargo, as they are
experimental.
/🆑
This commit is contained in:
Aliceee2ch
2025-05-14 14:11:12 +03:00
committed by Roxy
parent 094b3b27c3
commit f57c93c2a0
3 changed files with 71 additions and 0 deletions
+12
View File
@@ -379,3 +379,15 @@
access_view = ACCESS_SECURITY
contains = list(/obj/item/clothing/glasses/sunglasses = 1)
crate_name = "sunglasses crate"
/datum/supply_pack/security/armory/mechthermal
name = "Heavy Thermal Guns Crate"
desc = "Contains two experimental thermal cannons for use by mechs. \
When used simultaneously, their excess power used to heat and cool the opposing weapon, \
increasing the reload speed."
cost = CARGO_CRATE_VALUE * 25
contains = list(
/obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/cryo,
/obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/inferno,
)
crate_name = "thermal cannons crate"
@@ -165,6 +165,65 @@
harmful = TRUE
mech_flags = EXOSUIT_MODULE_COMBAT | EXOSUIT_MODULE_WORKING
///Exosuit thermal guns
/obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal
equip_cooldown = 20
name = "\improper Prototype -I 'Thermal Cannon'"
desc = "A special prototype of a heavy thermal weapon designed for use on exosuits. This one is debug-chambered."
icon_state = "mecha_laser"
energy_drain = 50
projectile = /obj/item/ammo_casing/energy/nanite
fire_sound = 'sound/items/weapons/thermalpistol.ogg'
harmful = TRUE
/obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/cryo
name = "\improper Prototype I 'Cryo Thermal Cannon'"
desc = "A special prototype of a heavy thermal weapon designed for use on exosuits. This one is cryo-chambered."
icon_state = "mecha_cryogun"
projectile = /obj/projectile/energy/cryo
/obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/inferno
name = "\improper Prototype II 'Pyro Thermal Cannon'"
desc = "A special prototype of a heavy thermal weapon designed for use on exosuits. This one is molten-chambered."
icon_state = "mecha_pyrogun"
projectile = /obj/projectile/energy/inferno
/obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/cryo/try_attach_part(mob/user, obj/vehicle/sealed/mecha/themech, attach_right)
var/has_molten = FALSE
for (var/obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/thegun in themech.flat_equipment)
if (istype(thegun, /obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/cryo))
to_chat(user, span_warning("[themech] already has [thegun] installed!"))
return FALSE
if (istype(thegun, /obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/inferno))
has_molten = TRUE
if (has_molten)
for (var/obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/thegun in themech.flat_equipment)
if (istype(thegun, /obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/inferno))
thegun.equip_cooldown = 8
equip_cooldown = 8
return ..()
/obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/inferno/try_attach_part(mob/user, obj/vehicle/sealed/mecha/themech, attach_right)
var/has_cryo = FALSE
for (var/obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/thegun in themech.flat_equipment)
if (istype(thegun, /obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/inferno))
to_chat(user, span_warning("[themech] already has [thegun] installed!"))
return FALSE
if (istype(thegun, /obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/cryo))
has_cryo = TRUE
if (has_cryo)
for (var/obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/thegun in themech.flat_equipment)
if (istype(thegun, /obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/cryo))
thegun.equip_cooldown = 8
equip_cooldown = 8
return ..()
/obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/detach(atom/moveto)
for (var/obj/item/mecha_parts/mecha_equipment/weapon/energy/thermal/thermal_gun in chassis.flat_equipment)
thermal_gun.equip_cooldown = 20
. = ..()
//Exosuit-mounted kinetic accelerator
/obj/item/mecha_parts/mecha_equipment/weapon/energy/mecha_kineticgun
name = "Exosuit Proto-kinetic Accelerator"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 30 KiB