Mecha spark system runtime on destruction. Fixes mecha draining infinite powercells (#69038)

* Mecha spark system runtime on destruction. Fixes mecha draining infinite powercells
This commit is contained in:
ShizCalev
2022-08-14 23:15:08 -04:00
committed by GitHub
parent a555c22bbe
commit 86ed47259d
2 changed files with 21 additions and 26 deletions
+20
View File
@@ -287,13 +287,33 @@
return ..()
/obj/vehicle/sealed/mecha/atom_destruction()
spark_system?.start()
loc.assume_air(cabin_air)
var/mob/living/silicon/ai/unlucky_ais
for(var/mob/living/occupant as anything in occupants)
if(isAI(occupant))
unlucky_ais = occupant
occupant.gib() //No wreck, no AI to recover
continue
mob_exit(occupant, FALSE, TRUE)
occupant.SetSleeping(destruction_sleep_duration)
if(wreckage)
var/obj/structure/mecha_wreckage/WR = new wreckage(loc, unlucky_ais)
for(var/obj/item/mecha_parts/mecha_equipment/E in flat_equipment)
if(E.detachable && prob(30))
WR.crowbar_salvage += E
E.detach(WR) //detaches from src into WR
E.activated = TRUE
else
E.detach(loc)
qdel(E)
if(cell)
WR.crowbar_salvage += cell
cell.forceMove(WR)
cell.use(rand(0, cell.charge), TRUE)
cell = null
return ..()
+1 -26
View File
@@ -41,7 +41,7 @@
if(damage_taken <= 0 || atom_integrity < 0)
return damage_taken
spark_system.start()
spark_system?.start()
try_deal_internal_damage(damage_taken)
if(damage_taken >= 5 || prob(33))
to_chat(occupants, "[icon2html(src, occupants)][span_userdanger("Taking damage!")]")
@@ -371,31 +371,6 @@
visual_effect_icon = ATTACK_EFFECT_MECHTOXIN
..()
/obj/vehicle/sealed/mecha/atom_destruction()
if(wreckage)
var/mob/living/silicon/ai/AI
for(var/crew in occupants)
if(isAI(crew))
if(AI)
var/mob/living/silicon/ai/unlucky_ais = crew
unlucky_ais.gib()
continue
AI = crew
var/obj/structure/mecha_wreckage/WR = new wreckage(loc, AI)
for(var/obj/item/mecha_parts/mecha_equipment/E in flat_equipment)
if(E.detachable && prob(30))
WR.crowbar_salvage += E
E.detach(WR) //detaches from src into WR
E.activated = TRUE
else
E.detach(loc)
qdel(E)
if(cell)
WR.crowbar_salvage += cell
cell.forceMove(WR)
cell.charge = rand(0, cell.charge)
cell = null
. = ..()
/obj/vehicle/sealed/mecha/proc/ammo_resupply(obj/item/mecha_ammo/A, mob/user,fail_chat_override = FALSE)
if(!A.rounds)