From f57c93c2a033f0e2ca76b31d410620d8a70df2e4 Mon Sep 17 00:00:00 2001 From: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com> Date: Wed, 14 May 2025 14:11:12 +0300 Subject: [PATCH] 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 :cl: 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. /:cl: --- code/modules/cargo/packs/security.dm | 12 ++++ .../mecha/equipment/weapons/weapons.dm | 59 ++++++++++++++++++ icons/obj/devices/mecha_equipment.dmi | Bin 29452 -> 30575 bytes 3 files changed, 71 insertions(+) diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm index 2dd6dfb4630..5374bb1f384 100644 --- a/code/modules/cargo/packs/security.dm +++ b/code/modules/cargo/packs/security.dm @@ -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" diff --git a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm index d0ba719b646..4c1fef88f5c 100644 --- a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm +++ b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm @@ -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" diff --git a/icons/obj/devices/mecha_equipment.dmi b/icons/obj/devices/mecha_equipment.dmi index e600e2caaa6bff99f347ca5159aa54f4dc55b9db..9499c6cda178a826f127e0e23778d6b3816abfb5 100644 GIT binary patch delta 11576 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