- Fixed vaccines not giving resistance if mob isn't infected.

- Added control interface for atmo mixer and pumps.
- Atmo meters now also show gas temperature
- Mecha logs.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@741 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
panurgomatic
2010-12-31 03:32:22 +00:00
parent f459d7b55b
commit 9793842a0e
11 changed files with 235 additions and 66 deletions
@@ -22,9 +22,11 @@ obj/machinery/atmospherics/binary/pump
var/on = 0
var/target_pressure = ONE_ATMOSPHERE
/*
attack_hand(mob/user)
on = !on
update_icon()
*/
update_icon()
if(node1&&node2)
@@ -123,6 +125,39 @@ obj/machinery/atmospherics/binary/pump
target_pressure = number
if(signal.data["tag"])
spawn(5) broadcast_status()
update_icon()
broadcast_status()
update_icon()
return
attack_hand(user as mob)
if(..())
return
src.add_fingerprint(usr)
if(!src.allowed(user))
user << "\red Access denied."
return
usr.machine = src
var/dat = {"<b>Power: </b><a href='?src=\ref[src];power=1'>[on?"On":"Off"]</a><br>
<b>Desirable output pressure: </b>
<a href='?src=\ref[src];out_press=-100'><b>-</b></a>
<a href='?src=\ref[src];out_press=-10'><b>-</b></a>
<a href='?src=\ref[src];out_press=-1'>-</a>
[round(target_pressure,0.1)]kPa
<a href='?src=\ref[src];out_press=1'>+</a>
<a href='?src=\ref[src];out_press=10'><b>+</b></a>
<a href='?src=\ref[src];out_press=100'><b>+</b></a>
"}
user << browse("<HEAD><TITLE>[src.name] control</TITLE></HEAD><TT>[dat]</TT>", "window=atmo_pump")
onclose(user, "atmo_pump")
return
Topic(href,href_list)
if(href_list["power"])
on = !on
if(href_list["out_press"])
src.target_pressure = max(0, min(4500, src.target_pressure + text2num(href_list["out_press"])))
src.update_icon()
src.updateUsrDialog()
return
+14 -4
View File
@@ -336,7 +336,9 @@ obj/machinery/atmospherics/filter/attack_hand(user as mob) // -- TLE
else
current_filter_type = "ERROR - Report this bug to the admin, please!"
dat += {"<b>Filtering: </b>[current_filter_type]<br><HR>
dat += {"
<b>Power: </b><a href='?src=\ref[src];power=1'>[on?"On":"Off"]</a><br>
<b>Filtering: </b>[current_filter_type]<br><HR>
<h4>Set Filter Type:</h4>
<A href='?src=\ref[src];filterset=0'>Carbon Molecules</A><BR>
<A href='?src=\ref[src];filterset=1'>Oxygen</A><BR>
@@ -344,12 +346,15 @@ obj/machinery/atmospherics/filter/attack_hand(user as mob) // -- TLE
<A href='?src=\ref[src];filterset=3'>Carbon Dioxide</A><BR>
<A href='?src=\ref[src];filterset=4'>Nitrous Oxide</A><BR>
<A href='?src=\ref[src];filterset=-1'>Nothing</A><BR>
<HR><B>Desirible output pressure:</B>
<HR><B>Desirable output pressure:</B>
<a href='?src=\ref[src];out_press=-100'><b>-</b></a>
<a href='?src=\ref[src];out_press=-10'><b>-</b></a>
<a href='?src=\ref[src];out_press=-1'>-</a>
[src.target_pressure]
<a href='?src=\ref[src];out_press=1'>+</a>
<a href='?src=\ref[src];out_press=10'><b>+</b></a>"}
<a href='?src=\ref[src];out_press=10'><b>+</b></a>
<a href='?src=\ref[src];out_press=100'><b>+</b></a>
"}
/*
user << browse("<HEAD><TITLE>[src.name] control</TITLE></HEAD>[dat]","window=atmo_filter")
onclose(user, "atmo_filter")
@@ -375,8 +380,13 @@ obj/machinery/atmospherics/filter/Topic(href, href_list) // -- TLE
src.temp = null
if(href_list["out_press"])
src.target_pressure = max(0, min(4000, src.target_pressure + text2num(href_list["out_press"])))
if(href_list["power"])
on=!on
src.update_icon()
src.updateUsrDialog()
/*
for(var/mob/M in viewers(1, src))
if ((M.client && M.machine == src))
src.attack_hand(M)
*/
return
+57 -1
View File
@@ -7,6 +7,7 @@ obj/machinery/atmospherics/mixer
dir = SOUTH
initialize_directions = SOUTH|NORTH|WEST
req_access = list(access_atmospherics)
var/on = 0
@@ -246,4 +247,59 @@ obj/machinery/atmospherics/mixer
del(network_out)
node_out = null
return null
return null
attack_hand(user as mob)
if(..())
return
src.add_fingerprint(usr)
if(!src.allowed(user))
user << "\red Access denied."
return
usr.machine = src
var/dat = {"<b>Power: </b><a href='?src=\ref[src];power=1'>[on?"On":"Off"]</a><br>
<b>Desirable output pressure: </b>
<a href='?src=\ref[src];out_press=-100'><b>-</b></a>
<a href='?src=\ref[src];out_press=-10'><b>-</b></a>
<a href='?src=\ref[src];out_press=-1'>-</a>
[target_pressure]kPa
<a href='?src=\ref[src];out_press=1'>+</a>
<a href='?src=\ref[src];out_press=10'><b>+</b></a>
<a href='?src=\ref[src];out_press=100'><b>+</b></a>
<br>
<b>Node 1 Concentration:</b>
<a href='?src=\ref[src];node1_c=-0.1'><b>-</b></a>
<a href='?src=\ref[src];node1_c=-0.01'>-</a>
[node1_concentration]([node1_concentration*100]%)
<a href='?src=\ref[src];node1_c=0.01'><b>+</b></a>
<a href='?src=\ref[src];node1_c=0.1'>+</a>
<br>
<b>Node 2 Concentration:</b>
<a href='?src=\ref[src];node2_c=-0.1'><b>-</b></a>
<a href='?src=\ref[src];node2_c=-0.01'>-</a>
[node2_concentration]([node2_concentration*100]%)
<a href='?src=\ref[src];node2_c=0.01'><b>+</b></a>
<a href='?src=\ref[src];node2_c=0.1'>+</a>
"}
user << browse("<HEAD><TITLE>[src.name] control</TITLE></HEAD><TT>[dat]</TT>", "window=atmo_mixer")
onclose(user, "atmo_mixer")
return
Topic(href,href_list)
if(href_list["power"])
on = !on
if(href_list["out_press"])
src.target_pressure = max(0, min(4500, src.target_pressure + text2num(href_list["out_press"])))
if(href_list["node1_c"])
var/value = text2num(href_list["node1_c"])
src.node1_concentration = max(0, min(1, src.node1_concentration + value))
src.node2_concentration = max(0, min(1, src.node2_concentration - value))
if(href_list["node2_c"])
var/value = text2num(href_list["node2_c"])
src.node2_concentration = max(0, min(1, src.node2_concentration + value))
src.node1_concentration = max(0, min(1, src.node1_concentration - value))
src.update_icon()
src.updateUsrDialog()
return
@@ -154,6 +154,8 @@ datum
if(self.data&&method == INGEST)
if(M.virus && M.virus.type == self.data)
M.virus.cure()
else if(!(self.data in M.resistances))
M.resistances += self.data
return
+34 -35
View File
@@ -22,50 +22,49 @@
usr << "\blue You deactivate the GPS"
proc/work()
if(!active) return
if(!beacon)
for(var/obj/ship_landing_beacon/B in world)
if(B.name == "Beacon - SS13")
beacon = B
break
while(active)
if(!beacon)
usr << "\red Unable to detect beacon signal."
for(var/obj/ship_landing_beacon/B in world)
if(B.name == "Beacon - SS13")
beacon = B
break
if(!beacon)
usr << "\red Unable to detect beacon signal."
active = 0
icon_state = "pinonnull"
return
if(!istype(src.loc, /turf) && !istype(src.loc, /mob))
usr << "\red Too much interference. Please hold the device in hand or place it on belt."
active = 0
icon_state = "pinonnull"
return
if(!istype(src.loc, /turf) && !istype(src.loc, /mob))
usr << "\red Too much interference. Please hold the device in hand or place it on belt."
active = 0
icon_state = "pinonnull"
return
src.icon_state = "pinonfar"
src.icon_state = "pinonfar"
var/atom/cur_loc = src.loc
var/atom/cur_loc = src.loc
if(cur_loc.z == beacon.z)
src.dir = get_dir(cur_loc,beacon)
else
var/list/beacon_global_loc = beacon.get_global_map_pos()
var/list/src_global_loc = cur_loc.get_global_map_pos()
if(beacon_global_loc && src_global_loc)
var/hor_dir = 0
var/ver_dir = 0
if(beacon_global_loc["x"]>src_global_loc["x"])
hor_dir = EAST
else if(beacon_global_loc["x"]<src_global_loc["x"])
hor_dir = WEST
if(cur_loc.z == beacon.z)
src.dir = get_dir(cur_loc,beacon)
else
var/list/beacon_global_loc = beacon.get_global_map_pos()
var/list/src_global_loc = cur_loc.get_global_map_pos()
if(beacon_global_loc && src_global_loc)
var/hor_dir = 0
var/ver_dir = 0
if(beacon_global_loc["x"]>src_global_loc["x"])
hor_dir = EAST
else if(beacon_global_loc["x"]<src_global_loc["x"])
hor_dir = WEST
if(beacon_global_loc["y"]>src_global_loc["y"])
ver_dir = NORTH
else if(beacon_global_loc["y"]<src_global_loc["y"])
ver_dir = SOUTH
if(beacon_global_loc["y"]>src_global_loc["y"])
ver_dir = NORTH
else if(beacon_global_loc["y"]<src_global_loc["y"])
ver_dir = SOUTH
src.dir = hor_dir|ver_dir
spawn(5) .()
src.dir = hor_dir|ver_dir
sleep(5)
/obj/item/weapon/storage/explorers_box
+2 -2
View File
@@ -58,7 +58,7 @@
if (src.target)
var/datum/gas_mixture/environment = target.return_air()
if(environment)
t += text("The pressure gauge reads [] kPa", round(environment.return_pressure(), 0.1))
t += "The pressure gauge reads [round(environment.return_pressure(), 0.01)] kPa; [round(environment.temperature,0.01)]&deg;K ([round(environment.temperature-T0C,0.01)]&deg;C)"
else
t += "The sensor error light is blinking."
else
@@ -78,7 +78,7 @@
if (src.target)
var/datum/gas_mixture/environment = target.return_air()
if(environment)
t = text("<B>Pressure:</B> [] kPa", round(environment.return_pressure(), 0.1))
t = "<B>Pressure:</B> [round(environment.return_pressure(), 0.01)] kPa; <B>Temperature:</B> [round(environment.temperature,0.01)]&deg;K ([round(environment.temperature-T0C,0.01)]&deg;C)"
else
t = "\red <B>Results: Sensor Error!</B>"
else
+2
View File
@@ -191,6 +191,7 @@
src.Move(src.loc)
if(usr.client)
usr.client.mouse_pointer_icon = file("icons/misc/mecha_mouse.dmi")
src.log_message("[usr] moved in as pilot.")
return
/obj/mecha/combat/go_out()
@@ -209,6 +210,7 @@
weapons -= destr_weapon
destr_weapon.destroy()
src.occupant_message("<font color='red'>The [destr_weapon] is destroyed!</font>")
src.log_append_to_last("[destr_weapon] is destoyed.",1)
return
+10 -3
View File
@@ -10,6 +10,7 @@
if(!istype(mecha, /obj/mecha/combat))
return
src.chassis = mecha
chassis.log_append_to_last("[src.name] initialized.")
return
/datum/mecha_weapon/proc/destroy()
@@ -55,6 +56,7 @@
missiles--
spawn(weapon_cooldown)
weapon_ready = 1
chassis.log_message("Fired from [src.name], targeting [target].",1)
return
proc/rearm()
@@ -64,6 +66,7 @@
missiles++
missiles_to_add--
chassis.cell.charge -= missile_energy_cost
chassis.log_message("Rearmed [src.name].")
return
get_weapon_info()
@@ -108,6 +111,7 @@
F.prime()
spawn(weapon_cooldown)
weapon_ready = 1
chassis.log_message("Fired from [src.name], targeting [target].")
return
/datum/mecha_weapon/laser
@@ -136,7 +140,7 @@
A.process()
spawn(weapon_cooldown)
weapon_ready = 1
chassis.log_message("Fired from [src.name], targeting [target].")
return
@@ -144,6 +148,7 @@
weapon_cooldown = 50
name = "eZ-13 mk2 Heavy pulse rifle"
energy_drain = 60
var/num_penetrations = 2
fire(target)
if(!fire_checks(target)) return
@@ -157,6 +162,7 @@
playsound(chassis, 'marauder.ogg', 50, 1)
var/obj/beam/a_laser/A = new /obj/beam/a_laser/pulse_laser(curloc)
A.life = num_penetrations
A.current = curloc
A.yo = targloc.y - curloc.y
A.xo = targloc.x - curloc.x
@@ -166,7 +172,7 @@
A.process()
spawn(weapon_cooldown)
weapon_ready = 1
chassis.log_message("Fired from [src.name], targeting [target].")
return
@@ -174,6 +180,7 @@
weapon_cooldown = 10
name = "PBT \"Pacifier\" Mounted Taser"
energy_drain = 20
weapon_cooldown = 7
fire(target)
if(!fire_checks(target)) return
@@ -196,7 +203,7 @@
A.process()
spawn(weapon_cooldown)
weapon_ready = 1
chassis.log_message("Fired from [src.name], targeting [target].")
return
+71 -15
View File
@@ -22,6 +22,7 @@
var/deflect_chance = 2 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act.
var/obj/item/weapon/cell/cell = new
var/state = 0
var/list/log = new
var/datum/effects/system/spark_spread/spark_system = new
var/lights = 0
@@ -48,6 +49,7 @@
var/datum/global_iterator/pr_location_temp_check //processes location temperature damage
var/datum/global_iterator/pr_internal_damage //processes internal damage
/obj/mecha/New()
..()
src.air_contents.volume = gas_tank_volume //liters
@@ -64,8 +66,10 @@
pr_inertial_movement = new /datum/global_iterator/mecha_intertial_movement(null,0)
pr_location_temp_check = new /datum/global_iterator/mecha_location_temp_check(list(src))
pr_internal_damage = new /datum/global_iterator/mecha_internal_damage(list(src),0)
src.verbs -= /obj/mecha/verb/disconnect_from_port
src.verbs -= /atom/movable/verb/pull
src.log_message("[src.name] created.")
return
/obj/mecha/Del()
@@ -140,6 +144,7 @@
if(istype(src.loc, /turf/space))
if(!src.check_for_support())
src.pr_inertial_movement.start(list(src,direction))
src.log_message("Movement control lost. Inertial movement started.")
return 1
return 0
@@ -192,6 +197,7 @@
if("fire")
src.health -= amount*1.2
src.update_health()
src.log_append_to_last("Took [amount] points of damage. Damage type: \"[type]\".",1)
return
/obj/mecha/proc/check_for_internal_damage(var/list/possible_int_damage,var/ignore_threshold=null)//TODO
@@ -206,6 +212,7 @@
if(int_dam_flag)
internal_damage |= int_dam_flag
pr_internal_damage.start()
src.log_append_to_last("Internal damage of type [int_dam_flag].[ignore_threshold?"Ignoring damage threshold.":null]",1)
return
@@ -217,6 +224,7 @@
return
/obj/mecha/attack_hand(mob/user as mob)
src.log_message("Attack by hand/paw. Attacker - [user].",1)
if (user.mutations & 8 && !prob(src.deflect_chance))
src.take_damage(15)
src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
@@ -225,6 +233,7 @@
else
src.visible_message("<font color='red'><b>[user] hits [src.name]. Nothing happens</b></font>")
user << "<font color='red'><b>You hit [src.name] with no visible effect.</b></font>"
src.log_append_to_last("Armor saved.")
return
/obj/mecha/attack_paw(mob/user as mob)
@@ -232,6 +241,7 @@
/obj/mecha/attack_alien(mob/user as mob)
src.log_message("Attack by alien. Attacker - [user].",1)
if(!prob(src.deflect_chance))
src.take_damage(15)
src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
@@ -241,6 +251,7 @@
if(V.client && !(V.blinded))
V.show_message("\red The [user] slashes at [src.name]'s armor!", 1)
else
src.log_append_to_last("Armor saved.")
playsound(src.loc, 'slash.ogg', 50, 1, -1)
user << "\green Your claws had no effect!"
src.occupant_message("\blue The [user]'s claws are stopped by the armor.")
@@ -251,8 +262,10 @@
/obj/mecha/hitby(A as mob|obj)
src.log_message("Hit by [A].",1)
if(prob(src.deflect_chance) || istype(A, /mob))
src.occupant_message("\blue The [A] bounces off the armor.")
src.log_append_to_last("Armor saved.")
for (var/mob/V in viewers(src))
if(V.client && !(V.blinded))
V.show_message("The [A] bounces off the [src.name] armor", 1)
@@ -260,22 +273,34 @@
var/mob/M = A
M.bruteloss += 10
M.updatehealth()
return
else if(istype(A, /obj))
var/obj/O = A
if(O.throwforce)
src.take_damage(O.throwforce)
src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
return
return
/obj/mecha/bullet_act(flag)
var/dam_type
switch(dam_type)
if(PROJECTILE_PULSE)
dam_type = "Pulse"
if(PROJECTILE_LASER)
dam_type = "Laser"
if(PROJECTILE_TASER)
dam_type = "Taser"
else
dam_type = "Default"
src.log_message("Hit by projectile. Type: [dam_type]([flag]).",1)
if(prob(src.deflect_chance))
src.occupant_message("\blue The armor deflects the incoming projectile.")
for (var/mob/V in viewers(src))
if(V.client && !(V.blinded))
V.show_message("The [src.name] armor deflects the projectile", 1)
src.log_append_to_last("Armor saved.")
else
var/damage
var/ignore_threshold
@@ -309,8 +334,10 @@
return
/obj/mecha/ex_act(severity)
src.log_message("Affected by explosion of severity: [severity].",1)
if(prob(src.deflect_chance))
severity++
src.log_append_to_last("Armor saved, changing severity to [severity].")
switch(severity)
if(1.0)
src.destroy()
@@ -328,17 +355,6 @@
src.check_for_internal_damage(list(MECHA_INT_FIRE, MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST),1)
return
/obj/mecha/proc/check_location_temp()
spawn while(src)
if(istype(src.loc, /turf/simulated/))
var/turf/simulated/T = src.loc
if(T.air)
if(T.air.temperature > src.max_temperature)
src.take_damage(10)
sleep(10)
return
/////////////////////////////////////
//////// Atmospheric stuff ////////
/////////////////////////////////////
@@ -387,7 +403,7 @@
var/datum/pipe_network/network = connected_port.return_network(src)
if(network && !network.gases.Find(air_contents))
network.gases += air_contents
src.log_message("Connected to gas port.")
return 1
/obj/mecha/proc/disconnect()
@@ -400,7 +416,7 @@
connected_port.connected_device = null
connected_port = null
src.log_message("Disconnected from gas port.")
return 1
@@ -455,6 +471,8 @@
src.sd_SetLuminosity(src.luminosity + src.lights_power)
else
src.sd_SetLuminosity(src.luminosity - src.lights_power)
src.log_message("Toggled lights.")
return
/obj/mecha/verb/move_inside()
set name = "Move Inside"
@@ -462,8 +480,10 @@
if (usr.stat != 0 || !istype(usr, /mob/living/carbon/human))
return
src.log_message("[usr] tries to move in.")
if (src.occupant)
usr << "\blue <B>The [src.name] is already occupied!</B>"
src.log_append_to_last("Permission denied.")
return
/*
if (usr.abiotic())
@@ -472,6 +492,7 @@
*/
if(!src.operation_allowed(usr))
usr << "\red Access denied"
src.log_append_to_last("Permission denied.")
return
usr << "You start climbing into [src.name]"
spawn(20)
@@ -483,6 +504,7 @@
src.add_fingerprint(usr)
src.Entered(usr)
src.Move(src.loc)
src.log_append_to_last("[usr] moved in as pilot.")
return
@@ -509,6 +531,7 @@
/obj/mecha/proc/go_out()
if(!src.occupant) return
if(src.occupant.Move(src.loc))
src.log_message("[src.occupant] moved out.")
src.Exited(src.occupant)
if (src.occupant.client)
src.occupant.client.eye = src.occupant.client.mob
@@ -516,6 +539,7 @@
src.occupant << browse(null, "window=exosuit")
src.occupant = null
src.pr_update_stats.stop()
return
////// Misc
@@ -526,6 +550,26 @@
src.occupant << "[message]"
return
/obj/mecha/proc/log_message(message as text,red=null)
log.len++
log[log.len] = list("time"=world.timeofday,"message"="[red?"<font color='red'>":null][message][red?"</font>":null]")
return log.len
/obj/mecha/proc/log_append_to_last(message as text,red=null)
var/list/last_entry = src.log[src.log.len]
last_entry["message"] += "<br>[red?"<font color='red'>":null][message][red?"</font>":null]"
return
/obj/mecha/proc/get_log_html()
var/output = "<html><head><title>[src.name] Log</title></head><body style='font: 13px 'Courier', monospace;'>"
for(var/list/entry in log)
output += {"<div style='font-weight: bold;'>[time2text(entry["time"],"DDD MMM DD hh:mm:ss")]</div>
<div style='margin-left:15px; margin-bottom:10px;'>[entry["message"]]</div>
"}
output += "</body></html>"
return output
/obj/mecha/proc/operation_allowed(mob/living/carbon/human/H)
//check if it doesn't require any access at all
if(src.check_operational_access(null))
@@ -573,6 +617,7 @@
/obj/mecha/attackby(obj/item/weapon/W as obj, mob/user as mob)
src.log_message("Attacked by [W].")
if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if(src.internals_access_allowed(usr))
if(state==0)
@@ -609,6 +654,7 @@
src.cell = null
state = 4
user << "You unscrew and pry out the powercell."
src.log_message("Powercell removed")
else if(state==4 && src.cell)
state=3
user << "You screw the cell in place"
@@ -621,6 +667,7 @@
user.drop_item()
W.loc = src
src.cell = W
src.log_message("Powercell installed")
else
user << "There's already a powercell installed."
return
@@ -644,6 +691,7 @@
else
if(prob(src.deflect_chance))
user << "\red The [W] bounces off [src.name] armor."
src.log_append_to_last("Armor saved.")
/*
for (var/mob/V in viewers(src))
if(V.client && !(V.blinded))
@@ -684,6 +732,7 @@
var/output = {"<a href='?src=\ref[src];toggle_lights=1'>Toggle Lights</a><br>
[(/obj/mecha/verb/disconnect_from_port in src.verbs)?"<a href='?src=\ref[src];port_disconnect=1'>Disconnect from port</a><br>":null]
[(/obj/mecha/verb/connect_to_port in src.verbs)?"<a href='?src=\ref[src];port_connect=1'>Connect to port</a><br>":null]
<a href='?src=\ref[src];view_log=1'>View internal log</a><br>
<a href='?src=\ref[src];eject=1'>Eject</a><br>
"}
return output
@@ -705,15 +754,22 @@
if (href_list["eject"])
src.eject()
return
if (href_list["view_log"])
src.occupant << browse(src.get_log_html(), "window=exosuit_log")
onclose(occupant, "exosuit_log")
return
if (href_list["repair_int_control_lost"])
src.occupant_message("Recalibrating coordination system.")
src.log_message("Recalibration of coordination system started.")
var/T = src.loc
spawn(100)
if(T == src.loc)
src.internal_damage &= ~MECHA_INT_CONTROL_LOST
src.occupant_message("<font color='blue'>Recalibration successful.</font>")
src.log_message("Recalibration of coordination system finished with 0 errors.")
else
src.occupant_message("<font color='red'>Recalibration failed.</font>")
src.log_message("Recalibration of coordination system failed with 1 error.",1)
return
+3
View File
@@ -10,6 +10,7 @@
if(!istype(mecha, /obj/mecha/working))
return
src.chassis = mecha
chassis.log_append_to_last("[src.name] initialized.")
return
@@ -75,6 +76,7 @@
O.loc = chassis
O.anchored = 0
chassis.occupant_message("<font color='blue'>[target] succesfully loaded.</font>")
chassis.log_message("Loaded [O]. Cargo compartment capacity: [chassis.cargo_capacity - chassis.cargo.len]")
else
chassis.occupant_message("<font color='red'>You must hold still while handling objects.</font>")
tool_ready = 1
@@ -123,6 +125,7 @@
if(istype(target, /turf/simulated/wall/r_wall))
chassis.occupant_message("\red The [target] is too durable to drill through.")
else
chassis.log_message("Drilled through [target]")
target.ex_act(2)
tool_ready = 1
return
+2 -3
View File
@@ -33,13 +33,11 @@
var/turf/T = get_turf(O.loc)
if(T)
T.Entered(O)
return
src.log_message("Unloaded [O]. Cargo compartment capacity: [cargo_capacity - src.cargo.len]")
if (href_list["select_tool"])
var/tool = locate(href_list["select_tool"])
if(tool)
src.selected_tool = tool
return
return
/obj/mecha/working/get_stats_part()
@@ -70,4 +68,5 @@
tools -= destr_tool
destr_tool.destroy()
src.occupant_message("<font color='red'>The [destr_tool] is destroyed!</font>")
src.log_append_to_last("[destr_tool] is destroyed.")
return