mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Mech update:
- Mechs cannot interact with objects if not facing them. This includes firing a weapon. - It takes some time to switch mech movement direction. - Air for mech pilot breathing can be taken from air tank or environment. - Zoom mode added to Marauder. Marauder cannot move or turn while in zoom mode. - Some mech_fabricator helper procs. Atmos update: - Tired of clicking + and - to set various devices output pressure? Replaced with simple inputbox. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1004 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -98,15 +98,7 @@ obj/machinery/atmospherics/binary/pump
|
||||
interact(mob/user as mob)
|
||||
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=-1000'><b>-</b></a>
|
||||
<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>
|
||||
<a href='?src=\ref[src];out_press=1000'><b>+</b></a>
|
||||
[round(target_pressure,0.1)]kPa | <a href='?src=\ref[src];set_press=1'>Change</a>
|
||||
"}
|
||||
|
||||
user << browse("<HEAD><TITLE>[src.name] control</TITLE></HEAD><TT>[dat]</TT>", "window=atmo_pump")
|
||||
@@ -160,8 +152,9 @@ obj/machinery/atmospherics/binary/pump
|
||||
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["set_press"])
|
||||
var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",src.target_pressure) as num
|
||||
src.target_pressure = max(0, min(4500, new_pressure))
|
||||
usr.machine = src
|
||||
src.update_icon()
|
||||
src.updateUsrDialog()
|
||||
|
||||
@@ -347,15 +347,7 @@ obj/machinery/atmospherics/filter/attack_hand(user as mob) // -- TLE
|
||||
<A href='?src=\ref[src];filterset=4'>Nitrous Oxide</A><BR>
|
||||
<A href='?src=\ref[src];filterset=-1'>Nothing</A><BR>
|
||||
<HR><B>Desirable output pressure:</B>
|
||||
<a href='?src=\ref[src];out_press=-1000'><b>-</b></a>
|
||||
<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=100'><b>+</b></a>
|
||||
<a href='?src=\ref[src];out_press=1000'><b>+</b></a>
|
||||
[src.target_pressure] | <a href='?src=\ref[src];set_press=1'>Change</a>
|
||||
"}
|
||||
/*
|
||||
user << browse("<HEAD><TITLE>[src.name] control</TITLE></HEAD>[dat]","window=atmo_filter")
|
||||
@@ -380,8 +372,9 @@ obj/machinery/atmospherics/filter/Topic(href, href_list) // -- TLE
|
||||
src.filter_type = text2num(href_list["filterset"])
|
||||
if (href_list["temp"])
|
||||
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["set_press"])
|
||||
var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",src.target_pressure) as num
|
||||
src.target_pressure = max(0, min(4500, new_pressure))
|
||||
if(href_list["power"])
|
||||
on=!on
|
||||
src.update_icon()
|
||||
|
||||
@@ -261,13 +261,7 @@ obj/machinery/atmospherics/mixer
|
||||
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>
|
||||
[target_pressure]kPa | <a href='?src=\ref[src];set_press=1'>Change</a>
|
||||
<br>
|
||||
<b>Node 1 Concentration:</b>
|
||||
<a href='?src=\ref[src];node1_c=-0.1'><b>-</b></a>
|
||||
@@ -291,8 +285,9 @@ obj/machinery/atmospherics/mixer
|
||||
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["set_press"])
|
||||
var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",src.target_pressure) as num
|
||||
src.target_pressure = max(0, min(4500, new_pressure))
|
||||
if(href_list["node1_c"])
|
||||
var/value = text2num(href_list["node1_c"])
|
||||
src.node1_concentration = max(0, min(1, src.node1_concentration + value))
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
deflect_chance = 25
|
||||
max_temperature = 5000
|
||||
infra_luminosity = 3
|
||||
var/zoom = 0
|
||||
var/thrusters = 0
|
||||
var/smoke = 5
|
||||
var/smoke_ready = 1
|
||||
@@ -28,6 +29,9 @@
|
||||
/obj/mecha/combat/marauder/relaymove(mob/user,direction)
|
||||
if(!can_move)
|
||||
return 0
|
||||
if(zoom)
|
||||
src.occupant_message("Unable to move while in zoom mode.")
|
||||
return 0
|
||||
if(connected_port)
|
||||
src.occupant_message("Unable to move while connected to the air system port")
|
||||
return 0
|
||||
@@ -40,6 +44,9 @@
|
||||
var/move_result = 0
|
||||
if(internal_damage&MECHA_INT_CONTROL_LOST)
|
||||
move_result = step_rand(src)
|
||||
else if(src.dir!=direction)
|
||||
src.dir=direction
|
||||
move_result = 1
|
||||
else
|
||||
move_result = step(src,direction)
|
||||
if(move_result)
|
||||
@@ -66,7 +73,7 @@
|
||||
if(src.occupant)
|
||||
if(cell.charge > 0)
|
||||
thrusters = !thrusters
|
||||
src.occupant << "\blue Thrusters [thrusters?"en":"dis"]abled."
|
||||
src.occupant_message("\blue Thrusters [thrusters?"en":"dis"]abled.")
|
||||
return
|
||||
|
||||
|
||||
@@ -84,6 +91,29 @@
|
||||
smoke_ready = 1
|
||||
return
|
||||
|
||||
/obj/mecha/combat/marauder/verb/zoom()
|
||||
set category = "Exosuit Interface"
|
||||
set name = "Zoom"
|
||||
set src in view(0)
|
||||
if(usr!=src.occupant)
|
||||
return
|
||||
if(src.occupant.client)
|
||||
src.zoom = !src.zoom
|
||||
src.log_message("Toggled zoom mode.")
|
||||
src.occupant_message("\blue Zoom mode [zoom?"en":"dis"]abled.")
|
||||
if(zoom)
|
||||
src.occupant.client.view = 12
|
||||
else
|
||||
src.occupant.client.view = world.view//world.view - default mob view size
|
||||
return
|
||||
|
||||
|
||||
/obj/mecha/combat/marauder/go_out()
|
||||
src.occupant.client.view = world.view
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/mecha/combat/marauder/get_stats_part()
|
||||
var/output = ..()
|
||||
output += {"<b>Smoke:</b> [smoke]
|
||||
@@ -95,7 +125,9 @@
|
||||
|
||||
/obj/mecha/combat/marauder/get_commands()
|
||||
var/output = {"<a href='?src=\ref[src];toggle_thrusters=1'>Toggle thrusters</a><br>
|
||||
<a href='?src=\ref[src];smoke=1'>Smoke</a><br>
|
||||
<a href='?src=\ref[src];toggle_zoom=1'>Toggle zoom mode</a><br>
|
||||
<a href='?src=\ref[src];smoke=1'>Smoke</a><br>
|
||||
<hr>
|
||||
"}
|
||||
output += ..()
|
||||
return output
|
||||
@@ -106,4 +138,6 @@
|
||||
src.toggle_thrusters()
|
||||
if (href_list["smoke"])
|
||||
src.smoke()
|
||||
if (href_list["toggle_zoom"])
|
||||
src.zoom()
|
||||
return
|
||||
@@ -24,7 +24,7 @@
|
||||
var/res_max_amount = 200000
|
||||
var/part_set
|
||||
var/obj/being_built
|
||||
var/list/part_sets = list(
|
||||
var/list/part_sets = list( //set names must be unique
|
||||
"Ripley"=list(
|
||||
list("result"="/obj/mecha_chassis/ripley","time"=100,"metal"=20000),
|
||||
list("result"="/obj/item/mecha_parts/part/ripley_torso","time"=300,"metal"=40000,"glass"=15000),
|
||||
@@ -33,6 +33,17 @@
|
||||
list("result"="/obj/item/mecha_parts/part/ripley_left_leg","time"=200,"metal"=30000),
|
||||
list("result"="/obj/item/mecha_parts/part/ripley_right_leg","time"=200,"metal"=30000)
|
||||
),
|
||||
/*
|
||||
"Ripley-on-Fire"=list(
|
||||
list("result"="/obj/mecha_chassis/firefighter","time"=150,"metal"=20000),
|
||||
list("result"="/obj/item/mecha_parts/part/firefighter_torso","time"=300,"metal"=45000,"glass"=20000),
|
||||
list("result"="/obj/item/mecha_parts/part/firefighter_left_arm","time"=200,"metal"=25000),
|
||||
list("result"="/obj/item/mecha_parts/part/firefighter_right_arm","time"=200,"metal"=25000),
|
||||
list("result"="/obj/item/mecha_parts/part/firefighter_left_leg","time"=200,"metal"=30000),
|
||||
list("result"="/obj/item/mecha_parts/part/firefighter_right_leg","time"=200,"metal"=30000)
|
||||
),
|
||||
*/
|
||||
|
||||
"Gygax"=list(
|
||||
list("result"="/obj/mecha_chassis/gygax","time"=100,"metal"=25000),
|
||||
list("result"="/obj/item/mecha_parts/part/gygax_torso","time"=300,"metal"=50000,"glass"=20000),
|
||||
@@ -45,6 +56,51 @@
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
proc/add_part_set(set_name,parts=null)
|
||||
if(set_name in part_sets)//attempt to create duplicate set
|
||||
return 0
|
||||
if(isnull(parts))
|
||||
part_sets[set_name] = list()
|
||||
else
|
||||
part_sets[set_name] = parts
|
||||
return 1
|
||||
|
||||
proc/add_part_to_set(set_name,part)
|
||||
src.add_part_set(set_name)//if no "set_name" set exists, create
|
||||
var/list/part_set = part_sets[set_name]
|
||||
part_set[++part_set.len] = part
|
||||
return
|
||||
|
||||
proc/remove_part_set(set_name)
|
||||
for(var/i=1,i<=part_sets.len,i++)
|
||||
if(part_sets[i]==set_name)
|
||||
part_sets.Cut(i,++i)
|
||||
return
|
||||
|
||||
proc/sanity_check()
|
||||
for(var/p in resources)
|
||||
var/index = resources.Find(p)
|
||||
index = resources.Find(p, index)
|
||||
if(index) //duplicate resource
|
||||
world << "Duplicate resource definition for [src](\ref[src])"
|
||||
return 0
|
||||
for(var/set_name in part_sets)
|
||||
var/index = part_sets.Find(set_name)
|
||||
index = part_sets.Find(set_name, index)
|
||||
if(index) //duplicate part set
|
||||
world << "Duplicate part set definition for [src](\ref[src])"
|
||||
return 0
|
||||
return 1
|
||||
/*
|
||||
New()
|
||||
..()
|
||||
src.add_part_to_set("Test",list("result"="/obj/item/mecha_parts/part/gygax_armour","time"=600,"metal"=75000,"diamond"=10000))
|
||||
src.add_part_to_set("Test",list("result"="/obj/item/mecha_parts/part/ripley_left_arm","time"=200,"metal"=25000))
|
||||
src.remove_part_set("Gygax")
|
||||
return
|
||||
*/
|
||||
|
||||
proc/output_parts_list(set_name)
|
||||
var/output = ""
|
||||
if(set_name in part_sets)
|
||||
@@ -176,6 +232,10 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
if(src.being_built)
|
||||
user << "The fabricator is currently processing. Please wait until completion."
|
||||
return
|
||||
|
||||
var/name = "[W.name]"
|
||||
if(src.resources[material] < res_max_amount)
|
||||
var/count = 0
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
//var/inertia_dir = null //for open space travel.
|
||||
|
||||
//inner atmos machinery. Air tank mostly
|
||||
var/use_internal_tank = 0
|
||||
var/datum/gas_mixture/air_contents = new
|
||||
var/obj/machinery/atmospherics/portables_connector/connected_port = null //filling the air tanks
|
||||
var/filled = 0.5
|
||||
@@ -105,6 +106,8 @@
|
||||
if(!src.occupant) return
|
||||
if(state || !cell || cell.charge<=0) return
|
||||
if(src == target) return
|
||||
if(!(get_dir(src,target) & src.dir))//wrong direction
|
||||
return
|
||||
if(get_dist(src,target)<=1)
|
||||
src.melee_action(target)
|
||||
else
|
||||
@@ -147,6 +150,9 @@
|
||||
var/move_result = 0
|
||||
if(internal_damage&MECHA_INT_CONTROL_LOST)
|
||||
move_result = step_rand(src)
|
||||
else if(src.dir!=direction)
|
||||
src.dir=direction
|
||||
move_result = 1
|
||||
else
|
||||
move_result = step(src,direction)
|
||||
if(move_result)
|
||||
@@ -376,18 +382,28 @@
|
||||
/obj/mecha/meteorhit()
|
||||
return ex_act(rand(1,3))//should do for now
|
||||
|
||||
/obj/mecha/emp_act()
|
||||
cell.use(rand(cell.maxcharge/2, cell.maxcharge))
|
||||
src.check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_CONTROL_LOST),1)
|
||||
return
|
||||
|
||||
/////////////////////////////////////
|
||||
//////// Atmospheric stuff ////////
|
||||
/////////////////////////////////////
|
||||
|
||||
/* //standard for /obj class
|
||||
/*
|
||||
//standard for /obj class
|
||||
/obj/mecha/handle_internal_lifeform(lifeform, volume)
|
||||
..()
|
||||
world << "Handling occupant breathing"
|
||||
world << "Handling [lifeform] breathing. Requested [volume]"
|
||||
*/
|
||||
|
||||
/obj/mecha/remove_air(amount)
|
||||
return src.air_contents.remove(amount)
|
||||
if(src.use_internal_tank)
|
||||
return src.air_contents.remove(amount)
|
||||
else
|
||||
var/turf/T = get_turf(src)
|
||||
return T.remove_air(amount)
|
||||
|
||||
/obj/mecha/return_air()
|
||||
return src.air_contents
|
||||
@@ -496,6 +512,18 @@
|
||||
src.log_message("Toggled lights.")
|
||||
return
|
||||
|
||||
|
||||
/obj/mecha/verb/toggle_internal_tank()
|
||||
set name = "Toggle internal airtank usage."
|
||||
set category = "Exosuit Interface"
|
||||
set src in view(0)
|
||||
if(usr!=src.occupant)
|
||||
return
|
||||
use_internal_tank = !use_internal_tank
|
||||
src.log_message("Now taking air from [use_internal_tank?"internal airtank":"environment"].")
|
||||
return
|
||||
|
||||
|
||||
/obj/mecha/verb/move_inside()
|
||||
set name = "Move Inside"
|
||||
set src in oview(1)
|
||||
@@ -757,6 +785,7 @@
|
||||
[integrity<30?"<font color='red'><b>DAMAGE LEVEL CRITICAL</b></font>":null]
|
||||
<b>Integrity: </b> [integrity]%<br>
|
||||
<b>Powercell charge: </b>[cell.charge/cell.maxcharge*100]%<br>
|
||||
<b>Air source: </b>[use_internal_tank?"Internal Airtank":"Environment"]<br>
|
||||
<b>Airtank pressure: </b>[src.return_pressure()]kPa<br>
|
||||
<b>Internal temperature: </b> [src.air_contents.temperature]°K|[src.air_contents.temperature - T0C]°C<br>
|
||||
<b>Lights: </b>[lights?"on":"off"]<br>
|
||||
@@ -765,6 +794,7 @@
|
||||
|
||||
/obj/mecha/proc/get_commands()
|
||||
var/output = {"<a href='?src=\ref[src];toggle_lights=1'>Toggle Lights</a><br>
|
||||
<a href='?src=\ref[src];toggle_airtank=1'>Toggle Internal Airtank Usage</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>
|
||||
@@ -780,6 +810,9 @@
|
||||
if (href_list["toggle_lights"])
|
||||
src.toggle_lights()
|
||||
return
|
||||
if (href_list["toggle_airtank"])
|
||||
src.toggle_internal_tank()
|
||||
return
|
||||
if (href_list["port_disconnect"])
|
||||
src.disconnect_from_port()
|
||||
return
|
||||
@@ -945,4 +978,4 @@
|
||||
if(mecha.air_contents.temperature > 0 && pressure_delta > 0)
|
||||
transfer_moles = pressure_delta*environment.volume/(mecha.air_contents.temperature * R_IDEAL_GAS_EQUATION)
|
||||
mecha.loc.assume_air(mecha.air_contents.remove(transfer_moles))
|
||||
return
|
||||
return
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
var/datum/construction/construct
|
||||
flags = FPRINT | CONDUCT
|
||||
|
||||
|
||||
|
||||
//////// Ripley chassis
|
||||
/obj/mecha_chassis/ripley
|
||||
name = "Ripley Chassis Frame"
|
||||
|
||||
@@ -37,7 +40,7 @@
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/////// Gygax chasis
|
||||
/obj/mecha_chassis/gygax
|
||||
name = "Gygax Chassis Frame"
|
||||
|
||||
@@ -66,6 +69,36 @@
|
||||
..()
|
||||
return
|
||||
|
||||
/////// Firefighter chassis
|
||||
/obj/mecha_chassis/firefighter
|
||||
name = "Ripley-on-Fire Chassis Frame"
|
||||
|
||||
New()
|
||||
..()
|
||||
construct = new /datum/construction/mecha/firefighter_chassis(src)
|
||||
|
||||
attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/mecha_parts))
|
||||
if(construct)
|
||||
construct.check_all_steps(W, user)
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/mecha_chassis/firefighter_full
|
||||
name = "Ripley-on-Fire Chassis"
|
||||
icon_state = "ripley_chassis"
|
||||
|
||||
New()
|
||||
..()
|
||||
construct = new /datum/construction/mecha/firefighter(src)
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(!construct || !construct.check_step(W, user))
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/////////////////////////
|
||||
////// Mecha Parts //////
|
||||
/////////////////////////
|
||||
@@ -130,6 +163,28 @@
|
||||
name="Gygax Armour Plates"
|
||||
icon_state = "gygax_armour"
|
||||
|
||||
////////// Firefighter
|
||||
|
||||
/obj/item/mecha_parts/part/firefighter_torso
|
||||
name="Ripley-on-Fire Torso"
|
||||
icon_state = "ripley_harness"
|
||||
|
||||
/obj/item/mecha_parts/part/firefighter_left_arm
|
||||
name="Ripley-on-Fire Left Arm"
|
||||
icon_state = "ripley_l_arm"
|
||||
|
||||
/obj/item/mecha_parts/part/firefighter_right_arm
|
||||
name="Ripley-on-Fire Right Arm"
|
||||
icon_state = "ripley_r_arm"
|
||||
|
||||
/obj/item/mecha_parts/part/firefighter_left_leg
|
||||
name="Ripley-on-Fire Left Leg"
|
||||
icon_state = "ripley_l_leg"
|
||||
|
||||
/obj/item/mecha_parts/part/firefighter_right_leg
|
||||
name="Ripley-on-Fire Right Leg"
|
||||
icon_state = "ripley_r_leg"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -165,6 +220,10 @@
|
||||
name = "Circuit board (Gygax Central Control module)"
|
||||
icon_state = "mainboard"
|
||||
|
||||
firefighter/peripherals
|
||||
name = "Circuit board (Ripley-on-Fire Peripherals Control module)"
|
||||
icon_state = "mcontroller"
|
||||
|
||||
////////////////////////////////
|
||||
///// Construction datums //////
|
||||
////////////////////////////////
|
||||
@@ -378,6 +437,79 @@
|
||||
return 1
|
||||
|
||||
|
||||
/datum/construction/mecha/firefighter_chassis
|
||||
result = "/obj/mecha_chassis/firefighter_full"
|
||||
steps = list(list("key"="/obj/item/mecha_parts/part/firefighter_torso"),//1
|
||||
list("key"="/obj/item/mecha_parts/part/firefighter_left_arm"),//2
|
||||
list("key"="/obj/item/mecha_parts/part/firefighter_right_arm"),//3
|
||||
list("key"="/obj/item/mecha_parts/part/firefighter_left_leg"),//4
|
||||
list("key"="/obj/item/mecha_parts/part/firefighter_right_leg")//5
|
||||
)
|
||||
|
||||
custom_action(step, atom/used_atom, mob/user)
|
||||
user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
|
||||
holder.overlays += used_atom.icon_state+"+o"
|
||||
del used_atom
|
||||
return 1
|
||||
|
||||
|
||||
/datum/construction/mecha/firefighter
|
||||
result = "/obj/mecha/working/firefighter"
|
||||
steps = list(list("key"="/obj/item/weapon/weldingtool"),//1
|
||||
list("key"="/obj/item/weapon/wrench"),//2
|
||||
list("key"="/obj/item/stack/sheet/r_metal"),//3
|
||||
list("key"="/obj/item/weapon/weldingtool"),//4
|
||||
list("key"="/obj/item/weapon/wrench"),//5
|
||||
list("key"="/obj/item/stack/sheet/metal"),//6
|
||||
list("key"="/obj/item/weapon/screwdriver"),//7
|
||||
list("key"="/obj/item/mecha_parts/circuitboard/firefighter/peripherals"),//8
|
||||
list("key"="/obj/item/weapon/screwdriver"),//9
|
||||
list("key"="/obj/item/mecha_parts/circuitboard/ripley/main"),//10
|
||||
list("key"="/obj/item/weapon/wirecutters"),//11
|
||||
list("key"="/obj/item/weapon/cable_coil"),//12
|
||||
list("key"="/obj/item/weapon/screwdriver"),//13
|
||||
list("key"="/obj/item/weapon/wrench")//14
|
||||
)
|
||||
|
||||
custom_action(step, atom/used_atom, mob/user)
|
||||
if(!..())
|
||||
return 0
|
||||
|
||||
//TODO: better messages.
|
||||
switch(step)
|
||||
if(14)
|
||||
user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
|
||||
if(13)
|
||||
user.visible_message("[user] adjusts [holder] hydraulic systems.", "You adjust [holder] hydraulic systems.")
|
||||
if(12)
|
||||
user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
|
||||
if(11)
|
||||
user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
|
||||
if(10)
|
||||
user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].")
|
||||
del used_atom
|
||||
if(9)
|
||||
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
|
||||
if(8)
|
||||
user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
|
||||
del used_atom
|
||||
if(7)
|
||||
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
|
||||
if(6)
|
||||
user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].")
|
||||
if(5)
|
||||
user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
|
||||
if(4)
|
||||
user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
|
||||
if(3)
|
||||
user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
|
||||
if(2)
|
||||
user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
|
||||
if(1)
|
||||
user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].")
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
////////////////// misc ////////////////
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
output += "</div>"
|
||||
return output
|
||||
|
||||
/obj/mecha/working/ripley/destroy()
|
||||
/obj/mecha/working/ripley/Del()
|
||||
for(var/obj/O in cargo)
|
||||
if(rand(0,1))
|
||||
cargo -= O
|
||||
|
||||
Reference in New Issue
Block a user