mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-19 20:06:28 +01:00
Explosion Performance (#13988)
This commit is contained in:
@@ -9,8 +9,9 @@
|
||||
else if(damage)
|
||||
to_chat(user, SPAN_WARNING("It is damaged."))
|
||||
|
||||
/obj/item/modular_computer/proc/break_apart()
|
||||
visible_message(SPAN_WARNING("\The [src] breaks apart!"))
|
||||
/obj/item/modular_computer/proc/break_apart(msg = TRUE)
|
||||
if(msg)
|
||||
visible_message(SPAN_WARNING("\The [src] breaks apart!"))
|
||||
new /obj/item/stack/material/steel(get_turf(src), round(steel_sheet_cost/2))
|
||||
for(var/obj/item/computer_hardware/H in get_all_components())
|
||||
uninstall_component(null, H)
|
||||
@@ -19,7 +20,7 @@
|
||||
H.take_damage(rand(10, 30))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/modular_computer/proc/take_damage(var/amount, var/component_probability, var/damage_casing = TRUE, var/randomize = TRUE)
|
||||
/obj/item/modular_computer/proc/take_damage(var/amount, var/component_probability, var/damage_casing = TRUE, var/randomize = TRUE, msg=TRUE)
|
||||
if(randomize)
|
||||
// 75%-125%, rand() works with integers, apparently.
|
||||
amount *= (rand(75, 125) / 100.0)
|
||||
@@ -34,13 +35,13 @@
|
||||
H.take_damage(round(amount / 2))
|
||||
|
||||
if(damage >= max_damage)
|
||||
break_apart()
|
||||
break_apart(msg)
|
||||
update_icon()
|
||||
|
||||
// Stronger explosions cause serious damage to internal components
|
||||
// Minor explosions are mostly mitigitated by casing.
|
||||
/obj/item/modular_computer/ex_act(var/severity)
|
||||
take_damage(rand(125, 200) / severity, 30 / severity)
|
||||
take_damage(rand(125, 200) / severity, 30 / severity, msg = FALSE)
|
||||
|
||||
// EMPs are similar to explosions, but don't cause physical damage to the casing. Instead they screw up the components
|
||||
/obj/item/modular_computer/emp_act(var/severity)
|
||||
@@ -56,4 +57,4 @@
|
||||
if(PAIN)
|
||||
take_damage(Proj.damage, Proj.damage / 3, 0)
|
||||
if(BURN)
|
||||
take_damage(Proj.damage, Proj.damage / 1.5)
|
||||
take_damage(Proj.damage, Proj.damage / 1.5)
|
||||
|
||||
Reference in New Issue
Block a user