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