The XenoMechMed PR (#21318)

This PR is something me and NobleRow have been cooking behind the scenes
with the goal of adding new Xenoarch content that fits two objectives.

1. Providing cross-department cooperation opportunities (Machinists and
Medical)
2. Making use of content entirely unique to Aurora, such as our recently
refactored organs.

So I've added several new and exciting xenoarch "finds" that relate to
Medical and Machinists, as well as several new parts for Machinists to
work with. On the xenoarch side of things, we have the new "anomalous"
heart and lung items, which you can study by calling over a surgeon to
implant into your free choice of a monkey, or a particularly
enthusiastic human volunteer. There are also two new "anomalous" mech
components, one of them an anomalous drone bay, and the other an
anomalous power core. To study them, call a machinist over and have them
make a mech for you to experiment with.

The new xenoarch "finds" each feature heavily rng stat modifiers that
are unique to the objects in question, and make use of a very large
number of variables that I had previously worked to unhardcode.

I had a batch of sprites done by NobleRow, and I was adding new mech
equipment in this PR, so while we were at it, I've added a new LTL
variant of the mech submachine gun, as well as a new light variant of
the mech-mounted KA, which was highly requested by both miners and
xenoarch players on account of the 9 tile blast radius KA being "Not
always good to have".

All of the sprites in this PR were made by @NobleRow
This commit is contained in:
VMSolidus
2025-09-10 19:04:57 +00:00
committed by GitHub
parent 6732f714dc
commit e2b00ebe46
16 changed files with 169 additions and 5 deletions
+8
View File
@@ -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
@@ -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
@@ -145,6 +145,34 @@
"It <b>cannot</b> heal the dead. It also <b>cannot</b> 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
+13 -1
View File
@@ -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(
"<b>Left Click:</b> Fire a kinetic blast in the target direction.",
"<b>WARNING: This weapon produces a mining blast one tile in radius.</b>",
"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(
"<b>Left Click:</b> Fire a kinetic blast in the target direction.",
"<b>WARNING: This weapon produces a mining blast eight tiles in radius.</b>",
+1 -1
View File
@@ -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
+44
View File
@@ -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)
+30
View File
@@ -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)
@@ -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"
@@ -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)