diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm
index b2166a1844e..f70ed825858 100644
--- a/code/game/objects/items/weapons/power_cells.dm
+++ b/code/game/objects/items/weapons/power_cells.dm
@@ -237,3 +237,14 @@
/// Phoron mecha cores recharges 10% every one minute
self_charge_percentage = 10
+
+/obj/item/cell/mecha/phoron/alien
+ name = "anomalous power core"
+ origin_tech = list(TECH_POWER = 9, TECH_MATERIAL = 9)
+ icon_state = "alien_power_cell"
+ desc = "A mercurial gem gleaming with anomalous white light. Pale, cold flames dance along its surface, which crackle with static charge upon touching any object."
+
+/obj/item/cell/mecha/phoron/alien/Initialize()
+ . = ..()
+ maxcharge *= rand(0.75, 1.25)
+ self_charge_percentage *= rand(0.75, 1.25)
diff --git a/code/modules/custom_ka/frames.dm b/code/modules/custom_ka/frames.dm
index 77dc3dc845f..7f4acac52b5 100644
--- a/code/modules/custom_ka/frames.dm
+++ b/code/modules/custom_ka/frames.dm
@@ -92,6 +92,14 @@
installed_cell = /obj/item/custom_ka_upgrade/cells/exosuit
installed_barrel = /obj/item/custom_ka_upgrade/barrels/barrel04
+ installed_upgrade_chip = /obj/item/custom_ka_upgrade/upgrade_chips/focusing
+
+/obj/item/gun/custom_ka/exosuit/heavy
+ name = "exosuit heavy kinetic accelerator"
+ build_name = "exosuit compatible"
+ icon_state = "frame_cyborg"
+ desc = "A heavy kinetic accelerator frame meant for exosuits. Uses an exosuit's internal charge as power."
+ installed_barrel = /obj/item/custom_ka_upgrade/barrels/barrel04
installed_upgrade_chip = /obj/item/custom_ka_upgrade/upgrade_chips/explosive/exosuit
/obj/item/gun/custom_ka/frameA
diff --git a/code/modules/heavy_vehicle/equipment/combat.dm b/code/modules/heavy_vehicle/equipment/combat.dm
index a4a1ec56cab..526956a520a 100644
--- a/code/modules/heavy_vehicle/equipment/combat.dm
+++ b/code/modules/heavy_vehicle/equipment/combat.dm
@@ -45,6 +45,12 @@
icon_state = "mecha_ballistic"
holding_type = /obj/item/gun/energy/mountedsmg/mech
+/obj/item/mecha_equipment/mounted_system/combat/smg_ltl
+ name = "mounted riot submachinegun"
+ desc = "An exosuit-mounted automatic weapon that has been modified to fire rubber ammunition for riot control. Handle with care."
+ icon_state = "mecha_ballistic_ltl"
+ holding_type = /obj/item/gun/energy/mountedsmg/mech
+
/obj/item/mecha_equipment/mounted_system/combat/smg/attack_self(mob/user)
if(owner && istype(holding, /obj/item/gun/energy/mountedsmg/mech))
var/obj/item/gun/energy/mountedsmg/mech/R = holding
diff --git a/code/modules/heavy_vehicle/equipment/medical.dm b/code/modules/heavy_vehicle/equipment/medical.dm
index 396d1499a2b..4c10081adfe 100644
--- a/code/modules/heavy_vehicle/equipment/medical.dm
+++ b/code/modules/heavy_vehicle/equipment/medical.dm
@@ -145,6 +145,34 @@
"It cannot heal the dead. It also cannot mend broken bones.",
)
+/obj/item/mecha_equipment/crisis_drone/alien
+ name = "anomalous dronebay"
+ desc = "A small shoulder-mounted dronebay containing a drone made seemingly from mercury."
+ icon_state = "alien_drone"
+ origin_tech = list(TECH_PHORON = 9, TECH_MAGNET = 9, TECH_BIO = 9, TECH_DATA = 9)
+ restricted_hardpoints = list(HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER)
+
+/obj/item/mecha_equipment/crisis_drone/alien/Initialize()
+ . = ..()
+ max_distance = rand(1, 5)
+ passive_power_use *= rand(0.8, 1.2)
+ damcap *= rand(0.8, 1.2)
+ heal_dead = prob(50)
+
+ // 5% chance to be a "Harming drone" instead of a healing drone. All healing is inverted to damage. Have fun with that.
+ var/harming_drone = 1
+ if(prob(5))
+ harming_drone = -1
+
+ brute_heal = rand(1, 5) * harming_drone
+ burn_heal = rand(1, 5) * harming_drone
+ tox_heal = rand(1, 5) * harming_drone
+ oxy_heal = rand(1, 5) * harming_drone
+ rad_heal = rand(1, 5) * harming_drone
+ clone_heal = rand(1, 5) * harming_drone
+ hal_heal = rand(1, 5) * harming_drone
+ bone_heal = rand(0, 499) / 5
+
/obj/item/mecha_equipment/crisis_drone/Destroy()
Target = null
MyBeam = null
diff --git a/code/modules/heavy_vehicle/equipment/mining.dm b/code/modules/heavy_vehicle/equipment/mining.dm
index 46ad6e97bb9..354fb4aa36a 100644
--- a/code/modules/heavy_vehicle/equipment/mining.dm
+++ b/code/modules/heavy_vehicle/equipment/mining.dm
@@ -103,10 +103,22 @@ ABSTRACT_TYPE(/obj/item/mecha_equipment/mounted_system/mining)
restricted_software = list(MECH_SOFTWARE_UTILITY)
/obj/item/mecha_equipment/mounted_system/mining/kinetic_accelerator
+ name = "mounted kinetic accelerator"
+ desc = "A kinetic accelerator designed to be mounted on an exosuit."
+ icon_state = "mecha_taser" // would be too difficult to get a proper sprite for this, would rather just get it in
+ holding_type = /obj/item/gun/custom_ka/exosuit
+ module_hints = list(
+ "Left Click: Fire a kinetic blast in the target direction.",
+ "WARNING: This weapon produces a mining blast one tile in radius.",
+ "A mech can only fire within a 90 degree arc in the direction it is currently facing.",
+ "This weapon passively regenerates its ammunition using the mech's power supply.",
+ )
+
+/obj/item/mecha_equipment/mounted_system/mining/kinetic_accelerator/heavy
name = "mounted heavy kinetic accelerator"
desc = "A heavy-duty kinetic accelerator designed to be mounted on an exosuit."
icon_state = "mecha_taser" // would be too difficult to get a proper sprite for this, would rather just get it in
- holding_type = /obj/item/gun/custom_ka/exosuit
+ holding_type = /obj/item/gun/custom_ka/exosuit/heavy
module_hints = list(
"Left Click: Fire a kinetic blast in the target direction.",
"WARNING: This weapon produces a mining blast eight tiles in radius.",
diff --git a/code/modules/heavy_vehicle/premade/miner.dm b/code/modules/heavy_vehicle/premade/miner.dm
index d1818ba36a7..51873e8ae54 100644
--- a/code/modules/heavy_vehicle/premade/miner.dm
+++ b/code/modules/heavy_vehicle/premade/miner.dm
@@ -10,7 +10,7 @@
h_l_hand = /obj/item/mecha_equipment/drill
h_r_hand = /obj/item/mecha_equipment/clamp
- h_l_shoulder = /obj/item/mecha_equipment/mounted_system/mining/kinetic_accelerator
+ h_l_shoulder = /obj/item/mecha_equipment/mounted_system/mining/kinetic_accelerator/heavy
h_back = /obj/item/mecha_equipment/ore_summoner
/mob/living/heavy_vehicle/premade/miner/remote
diff --git a/code/modules/organs/internal/heart.dm b/code/modules/organs/internal/heart.dm
index ae6455dfa7e..ff1be01e848 100644
--- a/code/modules/organs/internal/heart.dm
+++ b/code/modules/organs/internal/heart.dm
@@ -383,3 +383,47 @@
thready_pump_modifier = 1.5
damage_from_chemicals = 0.7
blood_spray_distance = 1
+
+/obj/item/organ/internal/heart/alien_heart
+ name = "anomalous mercurial flesh"
+ desc = "A slab of flesh made seemingly from mercury, yet with a recognizably organic shape. It is soft to the touch, pliable like skin, yet is as tough as steel."
+ icon = 'icons/obj/organs/bioaugs.dmi'
+ icon_state = "alien_heart"
+ max_damage = 200
+ min_bruised_damage = 150
+ min_broken_damage = 175
+
+/obj/item/organ/internal/heart/alien_heart/Initialize()
+ . = ..()
+ // RANDOMIZE EVERYTHING.
+ // DEAR READER, I HOPE YOU HAVE FUN IF YOU MAKE THE MISTAKE OF PUTTING THIS IN A HUMAN.
+ // BECAUSE YOU ARE NOT GUARANTEED IT CAN SUSTAIN LIFE.
+ heart_fibrillation_damage *= rand(0.5, 2)
+ heart_tachycardia_damage *= rand(0.5, 2)
+ fibrillation_stop_risk = rand(1, 99)
+ shock_stage_for_fibrillation *= rand(0.5, 2)
+ shock_risk_from_pain = rand(1, 99)
+ first_shock_stage *= rand(0.75, 1.33)
+ second_shock_stage *= rand(0.75, 1.33)
+ blood_regen_modifier *= rand(0.5, 2)
+ base_arterial_bloodloss_modifier *= rand(0.5, 2)
+ base_cut_bloodloss_modifier *= rand(0.5, 2)
+ nutrition_cost_per_blood_regen *= rand(0.5, 2)
+ hydration_cost_per_blood_regen *= rand(0.5, 2)
+ minimum_temperature_to_pump_blood *= rand(0.75, 1.33)
+ time_between_arterial_sprays *= rand(0.5, 2)
+ bleed_drip_modifier *= rand(0.5, 2)
+ palpitations_threshold *= rand(0.5, 2)
+ slow_bleeding_modifier *= rand(0.75, 1.33)
+ fast_bleeding_modifier *= rand(0.75, 1.33)
+ thready_bleeding_modifier *= rand(0.75, 1.33)
+ base_pump_rate *= rand(0.75, 1.33)
+ none_pump_modifier *= rand(0.75, 1.33)
+ slow_pump_modifier *= rand(0.75, 1.33)
+ fast_pump_modifier *= rand(0.75, 1.33)
+ too_fast_pump_modifier *= rand(0.75, 1.33)
+ thready_pump_modifier *= rand(0.75, 1.33)
+ if(prob(50))
+ fake_pulse = TRUE
+ damage_from_chemicals *= rand(0.75, 1.33)
+ blood_spray_distance = rand(1, 9)
diff --git a/code/modules/organs/internal/liver.dm b/code/modules/organs/internal/liver.dm
index 1dc2669a98e..35fa0de4d67 100644
--- a/code/modules/organs/internal/liver.dm
+++ b/code/modules/organs/internal/liver.dm
@@ -170,3 +170,33 @@
toxin_critical_mass = 90
booze_filtering_modifier = 0.5 // "Impossible to get drunk", this should make it impossible. :)
blackout_booze_filtering_modifier = 0.25
+
+/obj/item/organ/internal/liver/alien_liver
+ name = "anomalous mercurial flesh"
+ desc = "A slab of flesh made seemingly from mercury, yet with a recognizably organic shape. It is soft to the touch, pliable like skin, yet is as tough as steel."
+ icon = 'icons/obj/organs/bioaugs.dmi'
+ icon_state = "alien_liver"
+ max_damage = 200
+ min_bruised_damage = 150
+ min_broken_damage = 175
+
+/obj/item/organ/internal/liver/alien_liver/Initialize()
+ . = ..()
+ base_filter_strength *= rand(0.5, 2)
+ base_filter_effect *= rand(0.5, 2)
+ // That negative bound is intentional.
+ // A negative filter effect value means dylovene will decrease the liver effectiveness.
+ filter_effect_from_dylovene *= rand(-2, 2)
+ intox_filter_bruised *= rand(0.5, 2)
+ intox_filter_broken *= rand(0.5, 2)
+ base_toxin_healing_rate *= rand(0.5, 2)
+ toxin_critical_mass *= rand(0.5, 2)
+ filter_effect_from_critical_toxin *= rand(0.5, 2)
+ booze_filtering_modifier *= rand(0, 10)
+ filter_effect_from_bruise *= rand(0.5, 2)
+ filter_effect_from_broken *= rand(0.5, 2)
+ blackout_booze_filtering_modifier *= rand(0, 10)
+ infection_level_one_warning = "Uncountable tiny metal scarabs dig into your flesh."
+ liver_regeneration_normal *= rand(0, 2)
+ liver_regeneration_bruised *= rand(0, 2)
+ liver_regeneration_broken = rand(0, 12)
diff --git a/code/modules/research/designs/mechfab/mechs/designs_exosuit_equipment.dm b/code/modules/research/designs/mechfab/mechs/designs_exosuit_equipment.dm
index 4e75234ed54..8c55d31be25 100644
--- a/code/modules/research/designs/mechfab/mechs/designs_exosuit_equipment.dm
+++ b/code/modules/research/designs/mechfab/mechs/designs_exosuit_equipment.dm
@@ -21,10 +21,15 @@
build_path = /obj/item/mecha_equipment/mounted_system/combat/taser
/datum/design/item/mechfab/exosuit_equipment/uac
- name = "Mounted Automatic Weapon"
+ name = "Mounted Submachine Gun"
req_tech = list(TECH_COMBAT = 4)
build_path = /obj/item/mecha_equipment/mounted_system/combat/smg
+/datum/design/item/mechfab/exosuit_equipment/uac_ltl
+ name = "Mounted Riot Submachine Gun"
+ req_tech = list(TECH_COMBAT = 2)
+ build_path = /obj/item/mecha_equipment/mounted_system/combat/smg_ltl
+
/datum/design/item/mechfab/exosuit_equipment/plasma
name = "Mounted Plasma Cutter"
materials = list(DEFAULT_WALL_MATERIAL = 2000, MATERIAL_GLASS = 1000, MATERIAL_GOLD = 1000, MATERIAL_PHORON = 1000)
@@ -162,10 +167,16 @@
desc += " It needs an anomaly core to function, however."
/datum/design/item/mechfab/exosuit_equipment/kinetic_accelerator
+ name = "Mounted Kinetic Accelerator"
+ materials = list(MATERIAL_STEEL = 5000, MATERIAL_ALUMINIUM = 5000, MATERIAL_GLASS = 2500)
+ req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_POWER = 3)
+ build_path = /obj/item/mecha_equipment/mounted_system/mining/kinetic_accelerator
+
+/datum/design/item/mechfab/exosuit_equipment/kinetic_accelerator_heavy
name = "Mounted Heavy Kinetic Accelerator"
materials = list(MATERIAL_STEEL = 25000, MATERIAL_GLASS = 5000)
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_POWER = 3)
- build_path = /obj/item/mecha_equipment/mounted_system/mining/kinetic_accelerator
+ build_path = /obj/item/mecha_equipment/mounted_system/mining/kinetic_accelerator/heavy
/datum/design/item/mechfab/exosuit_equipment/ore_summoner
name = "Mounted Ore Summoner"
diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm
index c9d3f3fc0e1..9027860d04d 100644
--- a/code/modules/research/xenoarchaeology/finds/finds.dm
+++ b/code/modules/research/xenoarchaeology/finds/finds.dm
@@ -90,7 +90,7 @@
if(new_item_type)
find_type = new_item_type
else
- find_type = rand(1,36) //update this when you add new find types
+ find_type = rand(1,40) //update this when you add new find types
var/item_type = "object"
icon_state = "unknown[rand(1,4)]"
@@ -495,6 +495,14 @@
new_item = new /obj/item/clothing/mask/gas(src.loc)
if(36)
new_item = new /obj/item/sarcophagus_key(src.loc)
+ if(37)
+ new_item = new /obj/item/cell/mecha/phoron/alien
+ if(38)
+ new_item = new /obj/item/mecha_equipment/crisis_drone/alien
+ if(39)
+ new_item = new /obj/item/organ/internal/heart/alien_heart
+ if(40)
+ new_item = new /obj/item/organ/internal/liver/alien_liver
var/decorations = ""
if(apply_material_decorations)
diff --git a/html/changelogs/hellfirejag-xenomech-expansion.yml b/html/changelogs/hellfirejag-xenomech-expansion.yml
new file mode 100644
index 00000000000..a4256daca45
--- /dev/null
+++ b/html/changelogs/hellfirejag-xenomech-expansion.yml
@@ -0,0 +1,6 @@
+author: Hellfirejag
+delete-after: True
+changes:
+ - rscadd: "Added a new Nonlethal variant of the mech submachine gun."
+ - rscadd: "Split mech-mounted KAs into Standard and Heavy KAs. Heavy KAs work like the original mining mechs, with a 9 tile blast radius. Standard mech KAs are for more precise work with a 1 tile blast radius. Standard mech KAs are a lot cheaper."
+ - rscadd: "Added four new cross-department cooperation 'Finds' for Xenoarcheology. This changelog won't spoil the surprise of what they are, find out in game!"
diff --git a/icons/mecha/mech_equipment.dmi b/icons/mecha/mech_equipment.dmi
index f40cc23e795..16e3f1b4c5e 100644
Binary files a/icons/mecha/mech_equipment.dmi and b/icons/mecha/mech_equipment.dmi differ
diff --git a/icons/mecha/mech_part_items.dmi b/icons/mecha/mech_part_items.dmi
index 66a5f36cba4..1c558a40d67 100644
Binary files a/icons/mecha/mech_part_items.dmi and b/icons/mecha/mech_part_items.dmi differ
diff --git a/icons/mecha/mecha_weapon_overlays.dmi b/icons/mecha/mecha_weapon_overlays.dmi
index bcbbe8a1f15..5802e928508 100644
Binary files a/icons/mecha/mecha_weapon_overlays.dmi and b/icons/mecha/mecha_weapon_overlays.dmi differ
diff --git a/icons/obj/machinery/cell_charger.dmi b/icons/obj/machinery/cell_charger.dmi
index 228d3e4bfdb..e8f6da95631 100644
Binary files a/icons/obj/machinery/cell_charger.dmi and b/icons/obj/machinery/cell_charger.dmi differ
diff --git a/icons/obj/organs/bioaugs.dmi b/icons/obj/organs/bioaugs.dmi
index 0adf8115965..c5e36d06151 100644
Binary files a/icons/obj/organs/bioaugs.dmi and b/icons/obj/organs/bioaugs.dmi differ