mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-24 05:23:22 +01:00
This PR adds some new "Damage Feedback" interactions to mechs, which I'm adding in response to what I think is player perception of mechs being invincible. Previously mech manipulators and torsos had no actual mechanics for damage states, and having 0 damage on a mechs arms was functionally the same thing as having 100 damage, so long as the arm wasn't completely destroyed. This PR changes that by making it so that mech manipulators have a chance to fail (loudly and visibly) on use with a probability that varies based on how much damage the arms have taken. Additionally, there's also now a mechanic for mech ejections and hatch opening to fail if the torso has taken sufficient damage, with chances that also vary based on how much damage said torso has taken. In both cases, the mech plays audible and visual effects to indicate to the players involved that it is being hindered by damage. https://github.com/user-attachments/assets/934e4561-1fda-4c47-9770-438960834aa9 Yes this does mean that you can smash someone's hatch closed, to a point you'll need a welder to get them out. <img width="772" height="181" alt="image" src="https://github.com/user-attachments/assets/75f98060-7c4c-468b-bd31-e6c4ec4c0be2" />
192 lines
6.4 KiB
Plaintext
192 lines
6.4 KiB
Plaintext
/mob/living/heavy_vehicle/premade/ripley
|
|
name = "power loader"
|
|
desc = "An ancient but well-liked cargo handling exosuit."
|
|
|
|
e_head = /obj/item/mech_component/sensors/ripley
|
|
e_body = /obj/item/mech_component/chassis/ripley/cell
|
|
e_arms = /obj/item/mech_component/manipulators/ripley
|
|
e_legs = /obj/item/mech_component/propulsion/ripley
|
|
e_color = COLOR_RIPLEY
|
|
|
|
h_l_hand = /obj/item/mecha_equipment/drill
|
|
h_r_hand = /obj/item/mecha_equipment/clamp
|
|
|
|
/mob/living/heavy_vehicle/premade/ripley/cargo
|
|
h_back = /obj/item/mecha_equipment/autolathe
|
|
|
|
/mob/living/heavy_vehicle/premade/ripley/loader
|
|
h_l_hand = /obj/item/mecha_equipment/clamp
|
|
|
|
/mob/living/heavy_vehicle/premade/ripley/loader/sol
|
|
name = "solarian powerloader"
|
|
e_color = COLOR_DARK_GREEN_GRAY
|
|
|
|
/mob/living/heavy_vehicle/premade/ripley/loader/sol/damaged
|
|
name = "damaged solarian powerloader"
|
|
h_l_hand = null
|
|
|
|
/mob/living/heavy_vehicle/premade/ripley/loader/tcaf
|
|
name = "TCAF powerloader"
|
|
e_color = COLOR_TCFL
|
|
|
|
/mob/living/heavy_vehicle/premade/ripley/janitorial
|
|
name = "janitorial power loader"
|
|
desc = "A standard cargo-handling power loader converted into a cleaning machine."
|
|
|
|
e_color = COLOR_PURPLE
|
|
h_l_hand = /obj/item/mecha_equipment/clamp
|
|
h_l_shoulder = /obj/item/mecha_equipment/mounted_system/grenadecleaner
|
|
h_r_shoulder = /obj/item/mecha_equipment/mounted_system/grenadecleaner
|
|
h_back = /obj/item/mecha_equipment/quick_enter
|
|
|
|
/obj/item/mech_component/manipulators/ripley
|
|
name = "exosuit arms"
|
|
exosuit_desc_string = "heavy-duty industrial lifters"
|
|
max_damage = 225
|
|
power_use = 1000
|
|
melee_damage = 40
|
|
desc = "The Xion Manufacturing Group Digital Interaction Manifolds allow you poke untold dangers from the relative safety of your cockpit."
|
|
punch_sound = 'sound/mecha/mech_punch_slow.ogg'
|
|
|
|
/obj/item/mech_component/propulsion/ripley
|
|
name = "exosuit legs"
|
|
exosuit_desc_string = "reinforced hydraulic legs"
|
|
desc = "Wide and stable but not particularly fast."
|
|
max_damage = 150
|
|
move_delay = 4
|
|
turn_delay = 4
|
|
power_use = 1000
|
|
trample_damage = 10
|
|
|
|
/obj/item/mech_component/sensors/ripley
|
|
name = "exosuit sensors"
|
|
gender = PLURAL
|
|
exosuit_desc_string = "simple collision detection sensors"
|
|
desc = "A primitive set of sensors designed to work in tandem with most MKI Eyeball platforms."
|
|
max_damage = 200
|
|
power_use = 0
|
|
|
|
/obj/item/mech_component/sensors/ripley/prebuild()
|
|
..()
|
|
software = new(src)
|
|
software.installed_software = list(MECH_SOFTWARE_UTILITY, MECH_SOFTWARE_ENGINEERING)
|
|
|
|
/obj/item/mech_component/chassis/ripley
|
|
name = "open exosuit chassis"
|
|
hatch_descriptor = "roll cage"
|
|
pilot_coverage = 40
|
|
exosuit_desc_string = "an industrial rollcage"
|
|
desc = "A Xion industrial brand roll cage. Technically OSHA compliant. Technically. This variant has an extra compartment for a copilot, but has no sealed atmosphere."
|
|
max_damage = 200
|
|
power_use = 500
|
|
|
|
/obj/item/mech_component/chassis/ripley/prebuild()
|
|
. = ..()
|
|
mech_armor = new /obj/item/robot_parts/robot_component/armor/mech(src)
|
|
|
|
/obj/item/mech_component/chassis/ripley/cell
|
|
cell_type = /obj/item/cell/mecha
|
|
|
|
/obj/item/mech_component/chassis/ripley/nuclear
|
|
cell_type = /obj/item/cell/mecha/nuclear
|
|
|
|
/obj/item/mech_component/chassis/ripley/Initialize()
|
|
pilot_positions = list(
|
|
list(
|
|
"[NORTH]" = list("x" = 8, "y" = 8),
|
|
"[SOUTH]" = list("x" = 8, "y" = 8),
|
|
"[EAST]" = list("x" = 8, "y" = 8),
|
|
"[WEST]" = list("x" = 8, "y" = 8)
|
|
),
|
|
list(
|
|
"[NORTH]" = list("x" = 8, "y" = 16),
|
|
"[SOUTH]" = list("x" = 8, "y" = 16),
|
|
"[EAST]" = list("x" = 0, "y" = 16),
|
|
"[WEST]" = list("x" = 16, "y" = 16)
|
|
)
|
|
)
|
|
. = ..()
|
|
|
|
/mob/living/heavy_vehicle/premade/firefighter
|
|
name = "firefighting exosuit"
|
|
desc = "A mix and match of industrial parts designed to withstand fires."
|
|
icon_state = "firefighter"
|
|
|
|
e_head = /obj/item/mech_component/sensors/ripley
|
|
e_body = /obj/item/mech_component/chassis/ripley/cell
|
|
e_arms = /obj/item/mech_component/manipulators/ripley
|
|
e_legs = /obj/item/mech_component/propulsion/ripley
|
|
e_color = "#385b3c"
|
|
|
|
h_l_hand = /obj/item/mecha_equipment/drill
|
|
h_r_hand = /obj/item/mecha_equipment/mounted_system/extinguisher
|
|
|
|
/mob/living/heavy_vehicle/premade/firefighter/Initialize()
|
|
. = ..()
|
|
material = SSmaterials.get_material_by_name(MATERIAL_PLASTEEL)
|
|
|
|
/obj/item/mech_component/sensors/firefighter/prebuild()
|
|
..()
|
|
software = new(src)
|
|
software.installed_software = list(MECH_SOFTWARE_UTILITY, MECH_SOFTWARE_ENGINEERING)
|
|
|
|
/mob/living/heavy_vehicle/premade/firefighter/sol
|
|
name = "solarian firefighting exosuit"
|
|
e_color = COLOR_DARK_GREEN_GRAY
|
|
|
|
/mob/living/heavy_vehicle/premade/combatripley
|
|
name = "combat APLU \"Ripley\""
|
|
desc = "A large APLU unit fitted with specialized composite armor and fancy, though old targeting systems."
|
|
icon_state = "combatripley"
|
|
decal = "ripley_legion"
|
|
|
|
e_head = /obj/item/mech_component/sensors/combatripley
|
|
e_body = /obj/item/mech_component/chassis/ripley/nuclear
|
|
e_arms = /obj/item/mech_component/manipulators/ripley
|
|
e_legs = /obj/item/mech_component/propulsion/ripley
|
|
e_color = COLOR_TCFL
|
|
|
|
h_l_shoulder = /obj/item/mecha_equipment/mounted_system/combat/grenadesmoke
|
|
h_r_shoulder = /obj/item/mecha_equipment/mounted_system/flarelauncher
|
|
h_l_hand = /obj/item/mecha_equipment/mounted_system/combat/blaster
|
|
h_r_hand = /obj/item/mecha_equipment/mounted_system/combat/gauss
|
|
|
|
/mob/living/heavy_vehicle/premade/combatripley/Initialize()
|
|
. = ..()
|
|
body.mech_armor = new /obj/item/robot_parts/robot_component/armor/mech/combat(body)
|
|
|
|
/obj/item/mech_component/sensors/combatripley
|
|
name = "exosuit sensors"
|
|
gender = PLURAL
|
|
power_use = 50000
|
|
vision_flags = SEE_MOBS
|
|
lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE
|
|
|
|
/obj/item/mech_component/sensors/combatripley/prebuild()
|
|
..()
|
|
software = new(src)
|
|
software.installed_software = list(MECH_SOFTWARE_UTILITY, MECH_SOFTWARE_WEAPONS)
|
|
|
|
/mob/living/heavy_vehicle/premade/ripley/remote
|
|
name = "remote power loader"
|
|
dummy_colour = "#ffc44f"
|
|
remote_network = REMOTE_GENERIC_MECH
|
|
does_hardpoint_lock = FALSE
|
|
|
|
/mob/living/heavy_vehicle/premade/ripley/remote_prison
|
|
name = "penal power loader"
|
|
dummy_colour = "#302e2b"
|
|
remote_network = REMOTE_PRISON_MECH
|
|
remote_type = /obj/item/remote_mecha/penal
|
|
|
|
/mob/living/heavy_vehicle/premade/ripley/remote_ai
|
|
name = "stationbound power loader"
|
|
e_color = COLOR_GREEN_GRAY
|
|
dummy_colour = COLOR_GREEN_GRAY
|
|
dummy_type = /mob/living/simple_animal/spiderbot/ai
|
|
remote_network = REMOTE_AI_MECH
|
|
remote_type = /obj/item/remote_mecha/ai
|
|
does_hardpoint_lock = FALSE
|
|
|
|
h_l_hand = /obj/item/mecha_equipment/toolset
|