Merge pull request #8788 from Atermonera/nerf_mech_armor

Nerfs mech armor
This commit is contained in:
Atermonera
2022-11-10 21:59:42 -08:00
committed by GitHub
2 changed files with 26 additions and 92 deletions

View File

@@ -1,24 +1,16 @@
/obj/item/mecha_parts/component/armor
name = "mecha plating"
icon = 'icons/mecha/mech_component.dmi'
icon_state = "armor"
w_class = ITEMSIZE_HUGE
origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 2)
component_type = MECH_ARMOR
start_damaged = FALSE
emp_resistance = 4
required_type = null // List, if it exists. Exosuits meant to use the component.
integrity_danger_mod = 0.4 // Multiplier for comparison to max_integrity before problems start.
max_integrity = 120
internal_damage_flag = MECHA_INT_TEMP_CONTROL
step_delay = 1
var/deflect_chance = 10
@@ -33,53 +25,42 @@
"rad"= 1
)
var/damage_minimum = 10
var/minimum_penetration = 0
var/fail_penetration_value = 0.66
/obj/item/mecha_parts/component/armor/mining
name = "blast-resistant mecha plating"
step_delay = 2
max_integrity = 80
damage_absorption = list(
"brute"=0.8,
"fire"=0.8,
"bullet"=1.2,
"laser"=1.2,
"energy"=1,
"bomb"=0.5,
"bio"=1,
"rad"=1
)
"brute"=0.8,
"fire"=0.8,
"bullet"=1.2,
"laser"=1.2,
"energy"=1,
"bomb"=0.5,
"bio"=1,
"rad"=1
)
/obj/item/mecha_parts/component/armor/lightweight
name = "lightweight mecha plating"
max_integrity = 50
step_delay = 0
damage_absorption = list(
"brute"=1,
"fire"=1.4,
"bullet"=1.1,
"laser"=1.2,
"energy"=1,
"bomb"=1,
"bio"=1,
"rad"=1
)
"brute"=1,
"fire"=1.4,
"bullet"=1.1,
"laser"=1.2,
"energy"=1,
"bomb"=1,
"bio"=1,
"rad"=1
)
/obj/item/mecha_parts/component/armor/reinforced
name = "reinforced mecha plating"
step_delay = 4
max_integrity = 80
minimum_penetration = 10
damage_absorption = list(
"brute"=0.7,
"fire"=1,
@@ -91,18 +72,10 @@
/obj/item/mecha_parts/component/armor/military
name = "military grade mecha plating"
step_delay = 4
step_delay = 6
max_integrity = 100
emp_resistance = 2
required_type = list(/obj/mecha/combat)
damage_minimum = 15
minimum_penetration = 25
damage_absorption = list(
"brute"=0.5,
"fire"=1.1,
@@ -127,19 +100,11 @@
/obj/item/mecha_parts/component/armor/marshal
name = "marshal mecha plating"
step_delay = 3
max_integrity = 100
emp_resistance = 3
deflect_chance = 15
minimum_penetration = 10
required_type = list(/obj/mecha/combat)
damage_absorption = list(
"brute"=0.75,
"fire"=1,
@@ -164,9 +129,7 @@
/obj/item/mecha_parts/component/armor/marshal/reinforced
name = "blackops mecha plating"
step_delay = 5
damage_absorption = list(
"brute"=0.6,
"fire"=0.8,
@@ -178,19 +141,11 @@
/obj/item/mecha_parts/component/armor/military/marauder
name = "cutting edge mecha plating"
step_delay = 4
max_integrity = 150
emp_resistance = 3
required_type = list(/obj/mecha/combat/marauder)
deflect_chance = 25
damage_minimum = 30
minimum_penetration = 25
damage_absorption = list(
"brute"=0.5,
"fire"=0.7,

View File

@@ -1132,20 +1132,14 @@
var/obj/item/mecha_parts/component/armor/ArmC = internal_components[MECH_ARMOR]
var/temp_deflect_chance = deflect_chance
var/temp_damage_minimum = damage_minimum
var/temp_minimum_penetration = minimum_penetration
var/temp_fail_penetration_value = fail_penetration_value
if(!ArmC)
temp_deflect_chance = 0
temp_damage_minimum = 0
temp_minimum_penetration = 0
temp_fail_penetration_value = 1
else
temp_deflect_chance = round(ArmC.get_efficiency() * ArmC.deflect_chance + (defence_mode ? 25 : 0))
temp_damage_minimum = round(ArmC.get_efficiency() * ArmC.damage_minimum)
temp_minimum_penetration = round(ArmC.get_efficiency() * ArmC.minimum_penetration)
temp_fail_penetration_value = round(ArmC.get_efficiency() * ArmC.fail_penetration_value)
if(istype(A, /obj/item/mecha_parts/mecha_tracking))
@@ -1165,12 +1159,12 @@
var/pass_damage = O.throwforce
var/pass_damage_reduc_mod
if(pass_damage <= temp_damage_minimum)//Too little to go through.
if(pass_damage <= damage_minimum)//Too little to go through.
src.occupant_message("<span class='notice'>\The [A] bounces off the armor.</span>")
src.visible_message("\The [A] bounces off \the [src] armor")
return
else if(O.armor_penetration < temp_minimum_penetration) //If you don't have enough pen, you won't do full damage
else if(O.armor_penetration < minimum_penetration) //If you don't have enough pen, you won't do full damage
src.occupant_message("<span class='notice'>\The [A] struggles to bypass \the [src] armor.</span>")
src.visible_message("\The [A] struggles to bypass \the [src] armor")
pass_damage_reduc_mod = temp_fail_penetration_value //This will apply to reduce damage to 2/3 or 66% by default
@@ -1206,20 +1200,14 @@
var/obj/item/mecha_parts/component/armor/ArmC = internal_components[MECH_ARMOR]
var/temp_deflect_chance = deflect_chance
var/temp_damage_minimum = damage_minimum
var/temp_minimum_penetration = minimum_penetration
var/temp_fail_penetration_value = fail_penetration_value
if(!ArmC)
temp_deflect_chance = 0
temp_damage_minimum = 0
temp_minimum_penetration = 0
temp_fail_penetration_value = 1
else
temp_deflect_chance = round(ArmC.get_efficiency() * ArmC.deflect_chance + (defence_mode ? 25 : 0))
temp_damage_minimum = round(ArmC.get_efficiency() * ArmC.damage_minimum)
temp_minimum_penetration = round(ArmC.get_efficiency() * ArmC.minimum_penetration)
temp_fail_penetration_value = round(ArmC.get_efficiency() * ArmC.fail_penetration_value)
if(prob(temp_deflect_chance))
@@ -1241,12 +1229,12 @@
for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment)
pass_damage = ME.handle_projectile_contact(Proj, pass_damage)
if(pass_damage < temp_damage_minimum)//too pathetic to really damage you.
if(pass_damage < damage_minimum)//too pathetic to really damage you.
src.occupant_message("<span class='notice'>The armor deflects incoming projectile.</span>")
src.visible_message("The [src.name] armor deflects\the [Proj]")
return
else if(Proj.armor_penetration < temp_minimum_penetration) //If you don't have enough pen, you won't do full damage
else if(Proj.armor_penetration < minimum_penetration) //If you don't have enough pen, you won't do full damage
src.occupant_message("<span class='notice'>\The [Proj] struggles to pierce \the [src] armor.</span>")
src.visible_message("\The [Proj] struggles to pierce \the [src] armor")
pass_damage_reduc_mod = temp_fail_penetration_value //This will apply to reduce damage to 2/3 or 66% by default
@@ -1362,20 +1350,14 @@
var/obj/item/mecha_parts/component/armor/ArmC = internal_components[MECH_ARMOR]
var/temp_deflect_chance = deflect_chance
var/temp_damage_minimum = damage_minimum
var/temp_minimum_penetration = minimum_penetration
var/temp_fail_penetration_value = fail_penetration_value
if(!ArmC)
temp_deflect_chance = 0
temp_damage_minimum = 0
temp_minimum_penetration = 0
temp_fail_penetration_value = 1
else
temp_deflect_chance = round(ArmC.get_efficiency() * ArmC.deflect_chance + (defence_mode ? 25 : 0))
temp_damage_minimum = round(ArmC.get_efficiency() * ArmC.damage_minimum)
temp_minimum_penetration = round(ArmC.get_efficiency() * ArmC.minimum_penetration)
temp_fail_penetration_value = round(ArmC.get_efficiency() * ArmC.fail_penetration_value)
if(prob(temp_deflect_chance)) //Does your attack get deflected outright.
@@ -1383,12 +1365,12 @@
to_chat(user, "<span class='danger'>\The [W] bounces off [src.name].</span>")
src.log_append_to_last("Armor saved.")
else if(W.force < temp_damage_minimum) //Is your attack too PATHETIC to do anything. 3 damage to a person shouldn't do anything to a mech.
else if(W.force < damage_minimum) //Is your attack too PATHETIC to do anything. 3 damage to a person shouldn't do anything to a mech.
src.occupant_message("<span class='notice'>\The [W] bounces off the armor.</span>")
src.visible_message("\The [W] bounces off \the [src] armor")
return
else if(W.armor_penetration < temp_minimum_penetration) //If you don't have enough pen, you won't do full damage
else if(W.armor_penetration < minimum_penetration) //If you don't have enough pen, you won't do full damage
src.occupant_message("<span class='notice'>\The [W] struggles to bypass \the [src] armor.</span>")
src.visible_message("\The [W] struggles to bypass \the [src] armor")
pass_damage_reduc_mod = temp_fail_penetration_value //This will apply to reduce damage to 2/3 or 66% by default
@@ -2762,15 +2744,12 @@
var/obj/item/mecha_parts/component/armor/ArmC = internal_components[MECH_ARMOR]
var/temp_deflect_chance = deflect_chance
var/temp_damage_minimum = damage_minimum
if(!ArmC)
temp_deflect_chance = 1
temp_damage_minimum = 0
else
temp_deflect_chance = round(ArmC.get_efficiency() * ArmC.deflect_chance + (defence_mode ? 25 : 0))
temp_damage_minimum = round(ArmC.get_efficiency() * ArmC.damage_minimum)
user.setClickCooldown(user.get_attack_speed())
if(!damage)
@@ -2786,7 +2765,7 @@
user.attack_log += text("\[[time_stamp()]\] <font color='red'>attacked [src.name]</font>")
playsound(src, 'sound/weapons/slash.ogg', 50, 1, -1)
else if(damage < temp_damage_minimum)//Pathetic damage levels just don't harm MECH.
else if(damage < damage_minimum)//Pathetic damage levels just don't harm MECH.
src.occupant_message("<span class='notice'>\The [user]'s doesn't dent \the [src] paint.</span>")
src.visible_message("\The [user]'s attack doesn't dent \the [src] armor")
src.log_append_to_last("Armor saved.")