mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-26 14:31:59 +01:00
Reduces damage to pilots from shots penetrating the cockpit (#23033)
I mistakenly assumed mech armour was good. Only combat armour reduces the damage of any rifle round, all other mech armour is worthless against actual weapons.
This commit is contained in:
@@ -30,6 +30,13 @@
|
||||
var/pilot_coverage = 100
|
||||
var/transparent_cabin = FALSE
|
||||
var/hide_pilot = TRUE
|
||||
///Percentage chance for a projectile to hit the pilot if the hatch is open or penetrated. 100% means the pilot will always be hit, 0% means the pilot will never be hit. Side hits divide this value by 4.
|
||||
var/cockpit_hatch_size = 80
|
||||
///Multiplier for damage dealt to the pilot when hit by projectiles that penetrate the mech's cockpit.
|
||||
var/cockpit_pilot_damage_multiplier = 0.5
|
||||
///Multiplier for armour piercing value of a hit to the pilot when hit by projectiles that penetrate the mech's cockpit.
|
||||
var/cockpit_pilot_armour_piercing_multiplier = 0.5
|
||||
|
||||
has_hardpoints = list(HARDPOINT_BACK, HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER)
|
||||
|
||||
/**
|
||||
@@ -70,6 +77,12 @@
|
||||
QDEL_NULL(air_supply)
|
||||
. = ..()
|
||||
|
||||
/obj/item/mech_component/chassis/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. = ..()
|
||||
. += SPAN_NOTICE("This chasis covers <b>[pilot_coverage]%</b> of the pilot's body.")
|
||||
. += SPAN_NOTICE("When open or destroyed the cockpit hatch will allow <b>[cockpit_hatch_size]%</b> of incoming attacks to hit the pilot.")
|
||||
. += SPAN_NOTICE("When closed but destroyed the cockpit hatch will reduce damage to the pilot by <b>[round((1 - cockpit_pilot_damage_multiplier) * 100, 0.1)]%</b>.")
|
||||
|
||||
/obj/item/mech_component/chassis/get_missing_parts_text()
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
if(!hatch_closed) //Open hatches only expose the pilot to attacks from the front and a little bit from the sides.
|
||||
if(incoming_attack_direction)
|
||||
if (dir & incoming_attack_direction)
|
||||
if(prob(80)) //80% chance to hit the pilot from the front if the hatch is open. If this is 100% turrets will shoot mechs with open hatches forever.
|
||||
if(prob(body.cockpit_hatch_size)) //80% chance to hit the pilot from the front if the hatch is open. If this is 100% turrets will shoot mechs with open hatches forever.
|
||||
return TRUE
|
||||
if ((turn(dir, 90) & incoming_attack_direction) || (turn(dir, -90) & incoming_attack_direction))
|
||||
if(prob(20)) //20% chance to hit the pilot from the sides if the hatch is open.
|
||||
if(prob(body.cockpit_hatch_size / 4)) //20% chance to hit the pilot from the sides if the hatch is open.
|
||||
return TRUE
|
||||
|
||||
return FALSE
|
||||
@@ -120,8 +120,9 @@
|
||||
if(target == body && body.damage_state == MECH_COMPONENT_DAMAGE_DAMAGED_TOTAL) //If the cockpit is destroyed, subsequent damage is applied to the pilot, modified by the mech's armour.
|
||||
if(body && LAZYLEN(pilots))
|
||||
var/mob/living/pilot = pick(pilots)
|
||||
visible_message(SPAN_DANGER("\The [used_weapon] pierces the mangled cockpit of \the [src], striking the pilot inside!"))
|
||||
pilot.apply_damage(damage, damagetype, def_zone, used_weapon, damage_flags, armor_pen, silent = FALSE)
|
||||
if(prob(body.cockpit_hatch_size))
|
||||
visible_message(SPAN_DANGER("\The [used_weapon] pierces the mangled cockpit of \the [src], striking the pilot inside!"))
|
||||
pilot.apply_damage(damage * body.cockpit_pilot_damage_multiplier, damagetype, def_zone, used_weapon, damage_flags, armor_pen * body.cockpit_pilot_armour_piercing_multiplier, silent = FALSE)
|
||||
|
||||
//Only 2 types of damage concern mechs and vehicles
|
||||
switch(damagetype)
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
name = "sealed exosuit chassis"
|
||||
hatch_descriptor = "canopy"
|
||||
pilot_coverage = 100
|
||||
cockpit_hatch_size = 60
|
||||
cockpit_pilot_damage_multiplier = 0.4
|
||||
exosuit_desc_string = "an armored chassis"
|
||||
desc = "A lightweight composite frame keeps the armor of this chassis respectable, but the interior spacious."
|
||||
icon_state = "combat_body"
|
||||
|
||||
@@ -61,6 +61,8 @@
|
||||
desc = "Despite its looks, this protective chassis provides supreme comfort to its pilot during their conquest."
|
||||
hatch_descriptor = "bloodied ribcage"
|
||||
pilot_coverage = 100
|
||||
cockpit_hatch_size = 60
|
||||
cockpit_pilot_damage_multiplier = 0.4
|
||||
exosuit_desc_string = "a bloodied chassis"
|
||||
icon_state = "cult_body"
|
||||
max_damage = 150
|
||||
|
||||
@@ -53,6 +53,8 @@
|
||||
hatch_descriptor = "hatch"
|
||||
desc = "The HI-Koloss chassis is a veritable juggernaut, capable of protecting a pilot even in the most hostile of environments. It handles like a battlecruiser, however."
|
||||
pilot_coverage = 100
|
||||
cockpit_hatch_size = 70
|
||||
cockpit_pilot_damage_multiplier = 0.3
|
||||
exosuit_desc_string = "a heavily armored chassis"
|
||||
icon_state = "heavy_body"
|
||||
max_damage = 300
|
||||
|
||||
@@ -53,6 +53,8 @@
|
||||
/obj/item/mech_component/chassis/light
|
||||
name = "light exosuit chassis"
|
||||
pilot_coverage = 100
|
||||
cockpit_hatch_size = 50
|
||||
cockpit_pilot_damage_multiplier = 0.8
|
||||
transparent_cabin = TRUE
|
||||
hatch_descriptor = "canopy"
|
||||
exosuit_desc_string = "an open and light chassis"
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
hatch_descriptor = "hatch"
|
||||
desc = "A cramped compartment and a senseless amount of armor is all this steel coffin contains."
|
||||
pilot_coverage = 100
|
||||
cockpit_hatch_size = 60
|
||||
cockpit_pilot_damage_multiplier = 0.2
|
||||
exosuit_desc_string = "a heavily armored chassis"
|
||||
icon_state = "strider_body"
|
||||
max_damage = 750
|
||||
|
||||
@@ -75,6 +75,8 @@
|
||||
name = "open exosuit chassis"
|
||||
hatch_descriptor = "roll cage"
|
||||
pilot_coverage = 40
|
||||
cockpit_hatch_size = 90
|
||||
cockpit_pilot_damage_multiplier = 0.6 ///The hatch is thick, but the pilot coverage is poor.
|
||||
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
|
||||
|
||||
@@ -54,6 +54,8 @@
|
||||
name = "\improper P'kus-3 chassis"
|
||||
hatch_descriptor = "canopy"
|
||||
pilot_coverage = 100
|
||||
cockpit_hatch_size = 70
|
||||
cockpit_pilot_damage_multiplier = 0.8
|
||||
exosuit_desc_string = "a light armored chassis"
|
||||
desc = "A lightweight composite frame keeps the armor of this chassis respectable, but the interior spacious."
|
||||
icon_state = "egg_body"
|
||||
@@ -97,6 +99,8 @@
|
||||
icon_state = "strong_egg_body"
|
||||
max_damage = 150
|
||||
power_use = 250
|
||||
cockpit_hatch_size = 40
|
||||
cockpit_pilot_damage_multiplier = 0.5
|
||||
|
||||
cell_type = /obj/item/cell/mecha/nuclear
|
||||
|
||||
|
||||
Reference in New Issue
Block a user