Mecha + misc. Destroy() because I had already begun.

This commit is contained in:
PsiOmega
2015-04-17 09:55:59 +02:00
parent 4b040d93ba
commit a6a428af6a
7 changed files with 99 additions and 55 deletions

View File

@@ -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

View File

@@ -151,4 +151,8 @@ Data storage vars:
start()
return active()
/datum/global_iterator/Destroy()
tag = null
arg_list.Cut()
stop()
//Do not call ..()

View File

@@ -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)

View File

@@ -21,6 +21,10 @@
pr_mech_sleeper.set_delay(equip_cooldown)
return
Destroy()
qdel(pr_mech_sleeper)
..()
allow_drop()
return 0

View File

@@ -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

View File

@@ -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)

View File

@@ -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\""