mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Mecha + misc. Destroy() because I had already begun.
This commit is contained in:
@@ -14,6 +14,9 @@
|
||||
var/obj/master = null //A reference to the object in the slot. Grabs or items, generally.
|
||||
var/gun_click_time = -100 //I'm lazy.
|
||||
|
||||
/obj/screen/Destroy()
|
||||
master = null
|
||||
..()
|
||||
|
||||
/obj/screen/text
|
||||
icon = null
|
||||
|
||||
@@ -151,4 +151,8 @@ Data storage vars:
|
||||
start()
|
||||
return active()
|
||||
|
||||
|
||||
/datum/global_iterator/Destroy()
|
||||
tag = null
|
||||
arg_list.Cut()
|
||||
stop()
|
||||
//Do not call ..()
|
||||
|
||||
@@ -76,6 +76,10 @@
|
||||
ME.attach(src)
|
||||
return
|
||||
|
||||
/obj/mecha/combat/marauder/Destroy()
|
||||
qdel(smoke_system)
|
||||
..()
|
||||
|
||||
/obj/mecha/combat/marauder/relaymove(mob/user,direction)
|
||||
if(user != src.occupant) //While not "realistic", this piece is player friendly.
|
||||
user.loc = get_turf(src)
|
||||
|
||||
@@ -21,6 +21,10 @@
|
||||
pr_mech_sleeper.set_delay(equip_cooldown)
|
||||
return
|
||||
|
||||
Destroy()
|
||||
qdel(pr_mech_sleeper)
|
||||
..()
|
||||
|
||||
allow_drop()
|
||||
return 0
|
||||
|
||||
|
||||
@@ -637,6 +637,11 @@
|
||||
pr_repair_droid.set_delay(equip_cooldown)
|
||||
return
|
||||
|
||||
Destroy()
|
||||
qdel(pr_repair_droid)
|
||||
pr_repair_droid = null
|
||||
..()
|
||||
|
||||
attach(obj/mecha/M as obj)
|
||||
..()
|
||||
droid_overlay = new(src.icon, icon_state = "repair_droid")
|
||||
@@ -726,6 +731,11 @@
|
||||
pr_energy_relay.set_delay(equip_cooldown)
|
||||
return
|
||||
|
||||
Destroy()
|
||||
qdel(pr_energy_relay)
|
||||
pr_energy_relay = null
|
||||
..()
|
||||
|
||||
detach()
|
||||
pr_energy_relay.stop()
|
||||
// chassis.proc_res["dynusepower"] = null
|
||||
@@ -842,6 +852,11 @@
|
||||
init()
|
||||
return
|
||||
|
||||
Destroy()
|
||||
qdel(pr_mech_generator)
|
||||
pr_mech_generator = null
|
||||
..()
|
||||
|
||||
proc/init()
|
||||
fuel = new /obj/item/stack/sheet/mineral/phoron(src)
|
||||
fuel.amount = 0
|
||||
|
||||
@@ -82,6 +82,7 @@
|
||||
/obj/mecha/New()
|
||||
..()
|
||||
events = new
|
||||
|
||||
icon_state += "-open"
|
||||
add_radio()
|
||||
add_cabin()
|
||||
@@ -98,11 +99,60 @@
|
||||
mechas_list += src //global mech list
|
||||
return
|
||||
|
||||
/obj/mecha/Del()
|
||||
/obj/mecha/Destroy()
|
||||
src.go_out()
|
||||
for(var/mob/M in src) //Let's just be ultra sure
|
||||
M.Move(loc)
|
||||
|
||||
if(loc)
|
||||
loc.Exited(src)
|
||||
loc = null
|
||||
|
||||
if(prob(30))
|
||||
explosion(get_turf(loc), 0, 0, 1, 3)
|
||||
|
||||
if(wreckage)
|
||||
var/obj/effect/decal/mecha_wreckage/WR = new wreckage(loc)
|
||||
for(var/obj/item/mecha_parts/mecha_equipment/E in equipment)
|
||||
if(E.salvageable && prob(30))
|
||||
WR.crowbar_salvage += E
|
||||
E.forceMove(WR)
|
||||
E.equip_ready = 1
|
||||
E.reliability = round(rand(E.reliability/3,E.reliability))
|
||||
else
|
||||
E.forceMove(loc)
|
||||
E.destroy()
|
||||
if(cell)
|
||||
WR.crowbar_salvage += cell
|
||||
cell.forceMove(WR)
|
||||
cell.charge = rand(0, cell.charge)
|
||||
if(internal_tank)
|
||||
WR.crowbar_salvage += internal_tank
|
||||
internal_tank.forceMove(WR)
|
||||
else
|
||||
for(var/obj/item/mecha_parts/mecha_equipment/E in equipment)
|
||||
E.detach(loc)
|
||||
E.destroy()
|
||||
if(cell)
|
||||
qdel(cell)
|
||||
if(internal_tank)
|
||||
qdel(internal_tank)
|
||||
equipment.Cut()
|
||||
cell = null
|
||||
internal_tank = null
|
||||
|
||||
qdel(pr_int_temp_processor)
|
||||
qdel(pr_inertial_movement)
|
||||
qdel(pr_give_air)
|
||||
qdel(pr_internal_damage)
|
||||
qdel(spark_system)
|
||||
pr_int_temp_processor = null
|
||||
pr_give_air = null
|
||||
pr_internal_damage = null
|
||||
spark_system = null
|
||||
|
||||
mechas_list -= src //global mech list
|
||||
..()
|
||||
return
|
||||
|
||||
////////////////////////
|
||||
////// Helpers /////////
|
||||
@@ -452,7 +502,7 @@
|
||||
if(src.health > 0)
|
||||
src.spark_system.start()
|
||||
else
|
||||
src.destroy()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/mecha/attack_hand(mob/user as mob)
|
||||
@@ -555,52 +605,6 @@
|
||||
Proj.on_hit(src)
|
||||
return
|
||||
|
||||
/obj/mecha/proc/destroy()
|
||||
spawn()
|
||||
go_out()
|
||||
var/turf/T = get_turf(src)
|
||||
tag = "\ref[src]" //better safe then sorry
|
||||
if(loc)
|
||||
loc.Exited(src)
|
||||
loc = null
|
||||
if(T)
|
||||
if(istype(src, /obj/mecha/working/ripley/))
|
||||
var/obj/mecha/working/ripley/R = src
|
||||
if(R.cargo)
|
||||
for(var/obj/O in R.cargo) //Dump contents of stored cargo
|
||||
O.loc = T
|
||||
R.cargo -= O
|
||||
T.Entered(O)
|
||||
|
||||
if(prob(30))
|
||||
explosion(T, 0, 0, 1, 3)
|
||||
spawn(0)
|
||||
if(wreckage)
|
||||
var/obj/effect/decal/mecha_wreckage/WR = new wreckage(T)
|
||||
for(var/obj/item/mecha_parts/mecha_equipment/E in equipment)
|
||||
if(E.salvageable && prob(30))
|
||||
WR.crowbar_salvage += E
|
||||
E.forceMove(WR)
|
||||
E.equip_ready = 1
|
||||
E.reliability = round(rand(E.reliability/3,E.reliability))
|
||||
else
|
||||
E.forceMove(T)
|
||||
E.destroy()
|
||||
if(cell)
|
||||
WR.crowbar_salvage += cell
|
||||
cell.forceMove(WR)
|
||||
cell.charge = rand(0, cell.charge)
|
||||
if(internal_tank)
|
||||
WR.crowbar_salvage += internal_tank
|
||||
internal_tank.forceMove(WR)
|
||||
else
|
||||
for(var/obj/item/mecha_parts/mecha_equipment/E in equipment)
|
||||
E.forceMove(T)
|
||||
E.destroy()
|
||||
spawn(0)
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/mecha/ex_act(severity)
|
||||
src.log_message("Affected by explosion of severity: [severity].",1)
|
||||
if(prob(src.deflect_chance))
|
||||
@@ -608,16 +612,16 @@
|
||||
src.log_append_to_last("Armor saved, changing severity to [severity].")
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
src.destroy()
|
||||
qdel(src)
|
||||
if(2.0)
|
||||
if (prob(30))
|
||||
src.destroy()
|
||||
qdel(src)
|
||||
else
|
||||
src.take_damage(initial(src.health)/2)
|
||||
src.check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1)
|
||||
if(3.0)
|
||||
if (prob(5))
|
||||
src.destroy()
|
||||
qdel(src)
|
||||
else
|
||||
src.take_damage(initial(src.health)/5)
|
||||
src.check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1)
|
||||
|
||||
@@ -9,6 +9,16 @@
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/ripley
|
||||
cargo_capacity = 10
|
||||
|
||||
/obj/mecha/working/ripley/Destroy()
|
||||
for(var/atom/movable/A in src.cargo)
|
||||
A.loc = loc
|
||||
var/turf/T = loc
|
||||
if(istype(T))
|
||||
T.Entered(A)
|
||||
step_rand(A)
|
||||
cargo.Cut()
|
||||
..()
|
||||
|
||||
/obj/mecha/working/ripley/firefighter
|
||||
desc = "Standart APLU chassis was refitted with additional thermal protection and cistern."
|
||||
name = "APLU \"Firefighter\""
|
||||
|
||||
Reference in New Issue
Block a user