- Another batch of runtime errors fixed.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1537 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
panurgomatic
2011-05-06 00:32:55 +00:00
parent 66be17746b
commit 2a1023b594
10 changed files with 121 additions and 109 deletions

View File

@@ -15,9 +15,10 @@
var/range = MELEE //bitflags
/obj/item/mecha_parts/mecha_equipment/proc/do_after_cooldown()
/obj/item/mecha_parts/mecha_equipment/proc/do_after_cooldown(target=1)
sleep(equip_cooldown)
if(src && chassis)
set_ready_state(1)
if(target && chassis)
return 1
return 0

View File

@@ -30,7 +30,7 @@
chassis.cell.use(energy_drain)
O.anchored = 1
var/T = chassis.loc
if(do_after_cooldown())
if(do_after_cooldown(target))
if(T == chassis.loc && src == chassis.selected)
cargo_holder.cargo += O
O.loc = chassis
@@ -40,8 +40,6 @@
else
chassis.occupant_message("<font color='red'>You must hold still while handling objects.</font>")
O.anchored = initial(O.anchored)
set_ready_state(1)
else
chassis.occupant_message("<font color='red'>Not enough room in cargo compartment.</font>")
else
@@ -62,8 +60,7 @@
chassis.visible_message("[chassis] pushes [target] out of the way.")
set_ready_state(0)
chassis.cell.use(energy_drain)
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return 1
/obj/item/mecha_parts/mecha_equipment/tool/drill
@@ -81,7 +78,7 @@
chassis.occupant_message("<font color='red'><b>You start to drill [target]</b></font>")
chassis.cell.use(energy_drain)
var/T = chassis.loc
if(do_after_cooldown())
if(do_after_cooldown(target))
if(T == chassis.loc && src == chassis.selected)
if(istype(target, /turf/simulated/wall/r_wall))
chassis.occupant_message("<font color='red'>[target] is too durable to drill through.</font>")
@@ -99,7 +96,6 @@
else
chassis.log_message("Drilled through [target]")
target.ex_act(2)
set_ready_state(1)
return 1
@@ -121,45 +117,44 @@
if(!action_checks(target) || get_dist(chassis, target)>3) return
if(get_dist(chassis, target)>2) return
set_ready_state(0)
if(do_after_cooldown())
set_ready_state(1)
if(istype(target, /obj/reagent_dispensers/watertank) && get_dist(chassis,target) <= 1)
var/obj/o = target
o.reagents.trans_to(src, 200)
chassis.occupant_message("\blue Extinguisher refilled")
playsound(chassis, 'refill.ogg', 50, 1, -6)
else
if(src.reagents.total_volume > 0)
playsound(chassis, 'extinguish.ogg', 75, 1, -3)
var/direction = get_dir(chassis,target)
var/turf/T = get_turf(target)
var/turf/T1 = get_step(T,turn(direction, 90))
var/turf/T2 = get_step(T,turn(direction, -90))
if(do_after_cooldown(target))
if(istype(target, /obj/reagent_dispensers/watertank) && get_dist(chassis,target) <= 1)
var/obj/o = target
o.reagents.trans_to(src, 200)
chassis.occupant_message("\blue Extinguisher refilled")
playsound(chassis, 'refill.ogg', 50, 1, -6)
else
if(src.reagents.total_volume > 0)
playsound(chassis, 'extinguish.ogg', 75, 1, -3)
var/direction = get_dir(chassis,target)
var/turf/T = get_turf(target)
var/turf/T1 = get_step(T,turn(direction, 90))
var/turf/T2 = get_step(T,turn(direction, -90))
var/list/the_targets = list(T,T1,T2)
for(var/a=0, a<5, a++)
var/list/the_targets = list(T,T1,T2)
spawn(0)
var/obj/effects/water/W = new /obj/effects/water(get_turf(chassis))
if(!W)
return
var/turf/my_target = pick(the_targets)
var/datum/reagents/R = new/datum/reagents(5)
W.reagents = R
R.my_atom = W
src.reagents.trans_to(W,1)
for(var/b=0, b<4, b++)
for(var/a=0, a<5, a++)
var/obj/effects/water/W = new /obj/effects/water(get_turf(chassis))
if(!W)
return
step_towards(W,my_target)
if(!W)
return
var/turf/W_turf = get_turf(W)
W.reagents.reaction(W_turf)
for(var/atom/atm in W_turf)
W.reagents.reaction(atm)
if(W.loc == my_target)
break
sleep(2)
var/turf/my_target = pick(the_targets)
var/datum/reagents/R = new/datum/reagents(5)
W.reagents = R
R.my_atom = W
src.reagents.trans_to(W,1)
for(var/b=0, b<4, b++)
if(!W)
return
step_towards(W,my_target)
if(!W)
return
var/turf/W_turf = get_turf(W)
W.reagents.reaction(W_turf)
for(var/atom/atm in W_turf)
W.reagents.reaction(atm)
if(W.loc == my_target)
break
sleep(2)
return 1
get_equip_info()
@@ -191,66 +186,60 @@
if (istype(target, /turf/simulated/wall))
chassis.occupant_message("Deconstructing [target]...")
set_ready_state(0)
if(do_after_cooldown())
if(do_after_cooldown(target))
if(disabled) return
chassis.spark_system.start()
target:ReplaceWithFloor()
playsound(target, 'Deconstruct.ogg', 50, 1)
set_ready_state(1)
chassis.cell.give(energy_drain)
else if (istype(target, /turf/simulated/floor))
chassis.occupant_message("Deconstructing [target]...")
set_ready_state(0)
if(do_after_cooldown())
if(do_after_cooldown(target))
if(disabled) return
chassis.spark_system.start()
target:ReplaceWithSpace()
playsound(target, 'Deconstruct.ogg', 50, 1)
set_ready_state(1)
chassis.cell.give(energy_drain)
else if (istype(target, /obj/machinery/door/airlock))
chassis.occupant_message("Deconstructing [target]...")
set_ready_state(0)
if(do_after_cooldown())
if(do_after_cooldown(target))
if(disabled) return
chassis.spark_system.start()
del(target)
playsound(target, 'Deconstruct.ogg', 50, 1)
set_ready_state(1)
chassis.cell.give(energy_drain)
if(1)
if(istype(target, /turf/space))
chassis.occupant_message("Building Floor...")
set_ready_state(0)
if(do_after_cooldown())
if(do_after_cooldown(target))
if(disabled) return
target:ReplaceWithFloor()
playsound(target, 'Deconstruct.ogg', 50, 1)
chassis.spark_system.start()
set_ready_state(1)
chassis.cell.use(energy_drain*3)
else if(istype(target, /turf/simulated/floor))
chassis.occupant_message("Building Wall...")
set_ready_state(0)
if(do_after_cooldown())
if(do_after_cooldown(target))
if(disabled) return
target:ReplaceWithWall()
playsound(target, 'Deconstruct.ogg', 50, 1)
chassis.spark_system.start()
set_ready_state(1)
chassis.cell.use(energy_drain*3)
if(2)
if(istype(target, /turf/simulated/floor))
chassis.occupant_message("Building Airlock...")
set_ready_state(0)
if(do_after_cooldown())
if(do_after_cooldown(target))
if(disabled) return
chassis.spark_system.start()
var/obj/machinery/door/airlock/T = new /obj/machinery/door/airlock(target)
T.autoclose = 1
playsound(target, 'Deconstruct.ogg', 50, 1)
playsound(target, 'sparks2.ogg', 50, 1)
set_ready_state(1)
chassis.cell.use(energy_drain*3)
return
@@ -290,8 +279,7 @@
set_ready_state(0)
chassis.cell.use(energy_drain)
do_teleport(chassis, T, 4)
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return
@@ -338,8 +326,7 @@
P.failchance = 0
P.icon_state = "anom"
P.name = "wormhole"
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
src = null
spawn(rand(150,300))
del(P)
@@ -374,8 +361,7 @@
locked = null
set_ready_state(0)
chassis.cell.use(energy_drain)
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
else
chassis.occupant_message("Lock on [locked] disengaged.")
locked = null
@@ -395,8 +381,7 @@
sleep(2)
set_ready_state(0)
chassis.cell.use(energy_drain)
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return
get_equip_info()
@@ -452,8 +437,7 @@
chassis.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
set_ready_state(0)
chassis.cell.use(energy_drain)
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return
@@ -510,8 +494,7 @@
chassis.check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
set_ready_state(0)
chassis.cell.use(energy_drain)
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return
proc/dynhitby(atom/movable/A)
@@ -531,8 +514,7 @@
chassis.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
set_ready_state(0)
chassis.cell.use(energy_drain)
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return

View File

@@ -33,8 +33,7 @@
chassis.cell.use(energy_drain)
A.process()
chassis.log_message("Fired from [src.name], targeting [target].")
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return
@@ -64,8 +63,7 @@
chassis.cell.use(energy_drain)
A.process()
chassis.log_message("Fired from [src.name], targeting [target].")
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return
@@ -105,8 +103,7 @@
spawn()
A.process()
chassis.log_message("Fired from [src.name], targeting [target].")
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return
/obj/item/mecha_parts/mecha_equipment/weapon/honker
@@ -162,8 +159,7 @@
*/
chassis.cell.use(energy_drain)
chassis.log_message("Honked from [src.name]. HONK!")
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic
@@ -229,8 +225,7 @@
set_ready_state(0)
A.process()
chassis.log_message("Fired from [src.name], targeting [target].")
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return
@@ -269,8 +264,7 @@
sleep(2)
set_ready_state(0)
chassis.log_message("Fired from [src.name], targeting [target].")
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack
@@ -291,8 +285,7 @@
M.throw_at(target, missile_range, missile_speed)
projectiles--
chassis.log_message("Fired from [src.name], targeting [target].")
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return
@@ -329,8 +322,7 @@
chassis.log_message("Fired from [src.name], targeting [target].")
spawn(det_time)
F.prime()
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return
@@ -358,8 +350,7 @@
B.throw_at(target, missile_range, missile_speed)
projectiles--
chassis.log_message("Bananed from [src.name], targeting [target]. HONK!")
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return
@@ -388,6 +379,5 @@
M.throw_at(target, missile_range, missile_speed)
projectiles--
chassis.log_message("Launched a mouse-trap from [src.name], targeting [target]. HONK!")
if(do_after_cooldown())
set_ready_state(1)
do_after_cooldown()
return

View File

@@ -803,6 +803,18 @@
/obj/mecha/examine()
set src in view()
..()
var/integrity = health/initial(health)*100
switch(integrity)
if(85 to 100)
usr << "It's fully intact."
if(65 to 85)
usr << "It's slightly damaged."
if(45 to 65)
usr << "It's badly damaged."
if(25 to 45)
usr << "It's heavily damaged."
else
usr << "It's falling apart."
if(equipment && equipment.len)
usr << "It's equipped with:"
for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment)

View File

@@ -128,30 +128,32 @@
user << "\blue You need to attach a flash to it first!"
if(istype(W, /obj/item/device/mmi))
var/obj/item/device/mmi/mmi = W
if(src.check_completion())
if(!istype(src.loc,/turf))
user << "\red You can't put the MMI in, the frame has to be standing on the ground to be perfectly precise."
return
if(!W:brain)
if(!mmi.brain)
user << "\red Sticking an empty MMI into the frame would sort of defeat the purpose."
return
if(W:brain.brainmob.stat == 2)
if(mmi.brain.brainmob.stat == 2)
user << "\red Sticking a dead brain into the frame would sort of defeat the purpose."
return
user.drop_item()
W.loc = src
src.brain = W
mmi.loc = src
src.brain = mmi
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(src.loc))
if(!O) return
//O.start = 1
O.invisibility = 0
O.name = src.created_name
O.real_name = src.created_name
if (W:brain.brainmob)
W:brain.brainmob.mind.transfer_to(O)
if (mmi.brain.brainmob && mmi.brain.brainmob.mind)
mmi.brain.brainmob.mind.transfer_to(O)
else
for(var/mob/dead/observer/G in world)
if(G.corpse == W:brain.brainmob && G.client)
if(G.corpse == mmi.brain.brainmob && G.client && G.corpse.mind)
G.corpse.mind.transfer_to(O)
del(G)
break
@@ -169,7 +171,7 @@
O.cell = src.chest.cell
O.cell.loc = O
O.brain = W
O.brain = mmi
del(src)
else

View File

@@ -88,7 +88,8 @@ Speaker: <A href='byond://?src=\ref[src];ch_name=[chan_name];listen=[!list]'>[li
if (href_list["track"])
var/mob/target = locate(href_list["track"])
var/mob/living/silicon/ai/A = locate(href_list["track2"])
A.ai_actual_track(target)
if(A && target)
A.ai_actual_track(target)
return
else if (href_list["freq"])
var/new_frequency = (frequency + text2num(href_list["freq"]))

View File

@@ -135,11 +135,17 @@
src << "Connection verified. Searching for APC in power network."
sleep(50)
var/obj/machinery/power/apc/theAPC = null
/*
for (var/something in loc)
if (istype(something, /obj/machinery/power/apc))
if (!(something:stat & BROKEN))
theAPC = something
break
*/
for (var/obj/machinery/power/apc/APC in loc)
if (!(APC.stat & BROKEN))
theAPC = APC
break
if (theAPC==null)
src << "Unable to locate APC!"
src:aiRestorePowerRoutine = 2
@@ -152,11 +158,17 @@
src << "APC located. Optimizing route to APC to avoid needless power waste."
sleep(50)
theAPC = null
/*
for (var/something in loc)
if (istype(something, /obj/machinery/power/apc))
if (!(something:stat & BROKEN))
theAPC = something
break
*/
for (var/obj/machinery/power/apc/APC in loc)
if (!(APC.stat & BROKEN))
theAPC = APC
break
if (theAPC==null)
src << "APC connection lost!"
src:aiRestorePowerRoutine = 2
@@ -169,11 +181,17 @@
src << "Best route identified. Hacking offline APC power port."
sleep(50)
theAPC = null
/*
for (var/something in loc)
if (istype(something, /obj/machinery/power/apc))
if (!(something:stat & BROKEN))
theAPC = something
break
*/
for (var/obj/machinery/power/apc/APC in loc)
if (!(APC.stat & BROKEN))
theAPC = APC
break
if (theAPC==null)
src << "APC connection lost!"
src:aiRestorePowerRoutine = 2
@@ -186,11 +204,17 @@
src << "Power port upload access confirmed. Loading control program into APC power port software."
sleep(50)
theAPC = null
/*
for (var/something in loc)
if (istype(something, /obj/machinery/power/apc))
if (!(something:stat & BROKEN))
theAPC = something
break
*/
for (var/obj/machinery/power/apc/APC in loc)
if (!(APC.stat & BROKEN))
theAPC = APC
break
if (theAPC==null)
src << "APC connection lost!"
src:aiRestorePowerRoutine = 2

View File

@@ -1508,12 +1508,11 @@
if(src.muted)
src << "You are muted have a nice day"
return
if (!( ismob(M) ))
if (!ismob(M))
return
var/t = input("Message:", text("Private message to [M.key]")) as text|null
if (!( t ))
if (!t || !usr || !M)
return
if (!usr) return
if (usr.client && usr.client.holder)
M << "\red Admin PM from-<b>[key_name(usr, M, 0)]</b>: [t]"
usr << "\blue Admin PM to-<b>[key_name(M, usr, 1)]</b>: [t]"

View File

@@ -169,12 +169,13 @@
src.invisibility = 101
for(var/t in src.organs)
del(src.organs[text("[t]")])
//src.client.screen -= main_hud1.contents
src.client.screen -= src.hud_used.contents
src.client.screen -= src.hud_used.adding
src.client.screen -= src.hud_used.mon_blo
src.client.screen -= list( src.oxygen, src.throw_icon, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach )
src.client.screen -= list( src.zone_sel, src.oxygen, src.throw_icon, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach )
if(src.client)
//src.client.screen -= main_hud1.contents
src.client.screen -= src.hud_used.contents
src.client.screen -= src.hud_used.adding
src.client.screen -= src.hud_used.mon_blo
src.client.screen -= list( src.oxygen, src.throw_icon, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach )
src.client.screen -= list( src.zone_sel, src.oxygen, src.throw_icon, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach )
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( src.loc )
// cyborgs produced by Robotize get an automatic power cell

View File

@@ -206,7 +206,7 @@
src.health -= value
if(src.health>0)
src.spark_system.start()
world << "[src] health is [health]"
// world << "[src] health is [health]"
else
src.ex_act(1)
return