mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 11:13:16 +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)
|
interact(mob/user as mob)
|
||||||
var/dat = {"<b>Power: </b><a href='?src=\ref[src];power=1'>[on?"On":"Off"]</a><br>
|
var/dat = {"<b>Power: </b><a href='?src=\ref[src];power=1'>[on?"On":"Off"]</a><br>
|
||||||
<b>Desirable output pressure: </b>
|
<b>Desirable output pressure: </b>
|
||||||
<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>
|
||||||
<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>
|
|
||||||
"}
|
"}
|
||||||
|
|
||||||
user << browse("<HEAD><TITLE>[src.name] control</TITLE></HEAD><TT>[dat]</TT>", "window=atmo_pump")
|
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)
|
Topic(href,href_list)
|
||||||
if(href_list["power"])
|
if(href_list["power"])
|
||||||
on = !on
|
on = !on
|
||||||
if(href_list["out_press"])
|
if(href_list["set_press"])
|
||||||
src.target_pressure = max(0, min(4500, src.target_pressure + text2num(href_list["out_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
|
usr.machine = src
|
||||||
src.update_icon()
|
src.update_icon()
|
||||||
src.updateUsrDialog()
|
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=4'>Nitrous Oxide</A><BR>
|
||||||
<A href='?src=\ref[src];filterset=-1'>Nothing</A><BR>
|
<A href='?src=\ref[src];filterset=-1'>Nothing</A><BR>
|
||||||
<HR><B>Desirable output pressure:</B>
|
<HR><B>Desirable output pressure:</B>
|
||||||
<a href='?src=\ref[src];out_press=-1000'><b>-</b></a>
|
[src.target_pressure] | <a href='?src=\ref[src];set_press=1'>Change</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>
|
|
||||||
"}
|
"}
|
||||||
/*
|
/*
|
||||||
user << browse("<HEAD><TITLE>[src.name] control</TITLE></HEAD>[dat]","window=atmo_filter")
|
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"])
|
src.filter_type = text2num(href_list["filterset"])
|
||||||
if (href_list["temp"])
|
if (href_list["temp"])
|
||||||
src.temp = null
|
src.temp = null
|
||||||
if(href_list["out_press"])
|
if(href_list["set_press"])
|
||||||
src.target_pressure = max(0, min(4000, src.target_pressure + text2num(href_list["out_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"])
|
if(href_list["power"])
|
||||||
on=!on
|
on=!on
|
||||||
src.update_icon()
|
src.update_icon()
|
||||||
|
|||||||
@@ -261,13 +261,7 @@ obj/machinery/atmospherics/mixer
|
|||||||
usr.machine = src
|
usr.machine = src
|
||||||
var/dat = {"<b>Power: </b><a href='?src=\ref[src];power=1'>[on?"On":"Off"]</a><br>
|
var/dat = {"<b>Power: </b><a href='?src=\ref[src];power=1'>[on?"On":"Off"]</a><br>
|
||||||
<b>Desirable output pressure: </b>
|
<b>Desirable output pressure: </b>
|
||||||
<a href='?src=\ref[src];out_press=-100'><b>-</b></a>
|
[target_pressure]kPa | <a href='?src=\ref[src];set_press=1'>Change</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>
|
<br>
|
||||||
<b>Node 1 Concentration:</b>
|
<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.1'><b>-</b></a>
|
||||||
@@ -291,8 +285,9 @@ obj/machinery/atmospherics/mixer
|
|||||||
Topic(href,href_list)
|
Topic(href,href_list)
|
||||||
if(href_list["power"])
|
if(href_list["power"])
|
||||||
on = !on
|
on = !on
|
||||||
if(href_list["out_press"])
|
if(href_list["set_press"])
|
||||||
src.target_pressure = max(0, min(4500, src.target_pressure + text2num(href_list["out_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"])
|
if(href_list["node1_c"])
|
||||||
var/value = text2num(href_list["node1_c"])
|
var/value = text2num(href_list["node1_c"])
|
||||||
src.node1_concentration = max(0, min(1, src.node1_concentration + value))
|
src.node1_concentration = max(0, min(1, src.node1_concentration + value))
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
deflect_chance = 25
|
deflect_chance = 25
|
||||||
max_temperature = 5000
|
max_temperature = 5000
|
||||||
infra_luminosity = 3
|
infra_luminosity = 3
|
||||||
|
var/zoom = 0
|
||||||
var/thrusters = 0
|
var/thrusters = 0
|
||||||
var/smoke = 5
|
var/smoke = 5
|
||||||
var/smoke_ready = 1
|
var/smoke_ready = 1
|
||||||
@@ -28,6 +29,9 @@
|
|||||||
/obj/mecha/combat/marauder/relaymove(mob/user,direction)
|
/obj/mecha/combat/marauder/relaymove(mob/user,direction)
|
||||||
if(!can_move)
|
if(!can_move)
|
||||||
return 0
|
return 0
|
||||||
|
if(zoom)
|
||||||
|
src.occupant_message("Unable to move while in zoom mode.")
|
||||||
|
return 0
|
||||||
if(connected_port)
|
if(connected_port)
|
||||||
src.occupant_message("Unable to move while connected to the air system port")
|
src.occupant_message("Unable to move while connected to the air system port")
|
||||||
return 0
|
return 0
|
||||||
@@ -40,6 +44,9 @@
|
|||||||
var/move_result = 0
|
var/move_result = 0
|
||||||
if(internal_damage&MECHA_INT_CONTROL_LOST)
|
if(internal_damage&MECHA_INT_CONTROL_LOST)
|
||||||
move_result = step_rand(src)
|
move_result = step_rand(src)
|
||||||
|
else if(src.dir!=direction)
|
||||||
|
src.dir=direction
|
||||||
|
move_result = 1
|
||||||
else
|
else
|
||||||
move_result = step(src,direction)
|
move_result = step(src,direction)
|
||||||
if(move_result)
|
if(move_result)
|
||||||
@@ -66,7 +73,7 @@
|
|||||||
if(src.occupant)
|
if(src.occupant)
|
||||||
if(cell.charge > 0)
|
if(cell.charge > 0)
|
||||||
thrusters = !thrusters
|
thrusters = !thrusters
|
||||||
src.occupant << "\blue Thrusters [thrusters?"en":"dis"]abled."
|
src.occupant_message("\blue Thrusters [thrusters?"en":"dis"]abled.")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
@@ -84,6 +91,29 @@
|
|||||||
smoke_ready = 1
|
smoke_ready = 1
|
||||||
return
|
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()
|
/obj/mecha/combat/marauder/get_stats_part()
|
||||||
var/output = ..()
|
var/output = ..()
|
||||||
output += {"<b>Smoke:</b> [smoke]
|
output += {"<b>Smoke:</b> [smoke]
|
||||||
@@ -95,7 +125,9 @@
|
|||||||
|
|
||||||
/obj/mecha/combat/marauder/get_commands()
|
/obj/mecha/combat/marauder/get_commands()
|
||||||
var/output = {"<a href='?src=\ref[src];toggle_thrusters=1'>Toggle thrusters</a><br>
|
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 += ..()
|
output += ..()
|
||||||
return output
|
return output
|
||||||
@@ -106,4 +138,6 @@
|
|||||||
src.toggle_thrusters()
|
src.toggle_thrusters()
|
||||||
if (href_list["smoke"])
|
if (href_list["smoke"])
|
||||||
src.smoke()
|
src.smoke()
|
||||||
|
if (href_list["toggle_zoom"])
|
||||||
|
src.zoom()
|
||||||
return
|
return
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
var/res_max_amount = 200000
|
var/res_max_amount = 200000
|
||||||
var/part_set
|
var/part_set
|
||||||
var/obj/being_built
|
var/obj/being_built
|
||||||
var/list/part_sets = list(
|
var/list/part_sets = list( //set names must be unique
|
||||||
"Ripley"=list(
|
"Ripley"=list(
|
||||||
list("result"="/obj/mecha_chassis/ripley","time"=100,"metal"=20000),
|
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),
|
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_left_leg","time"=200,"metal"=30000),
|
||||||
list("result"="/obj/item/mecha_parts/part/ripley_right_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(
|
"Gygax"=list(
|
||||||
list("result"="/obj/mecha_chassis/gygax","time"=100,"metal"=25000),
|
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),
|
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)
|
proc/output_parts_list(set_name)
|
||||||
var/output = ""
|
var/output = ""
|
||||||
if(set_name in part_sets)
|
if(set_name in part_sets)
|
||||||
@@ -176,6 +232,10 @@
|
|||||||
else
|
else
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
if(src.being_built)
|
||||||
|
user << "The fabricator is currently processing. Please wait until completion."
|
||||||
|
return
|
||||||
|
|
||||||
var/name = "[W.name]"
|
var/name = "[W.name]"
|
||||||
if(src.resources[material] < res_max_amount)
|
if(src.resources[material] < res_max_amount)
|
||||||
var/count = 0
|
var/count = 0
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
//var/inertia_dir = null //for open space travel.
|
//var/inertia_dir = null //for open space travel.
|
||||||
|
|
||||||
//inner atmos machinery. Air tank mostly
|
//inner atmos machinery. Air tank mostly
|
||||||
|
var/use_internal_tank = 0
|
||||||
var/datum/gas_mixture/air_contents = new
|
var/datum/gas_mixture/air_contents = new
|
||||||
var/obj/machinery/atmospherics/portables_connector/connected_port = null //filling the air tanks
|
var/obj/machinery/atmospherics/portables_connector/connected_port = null //filling the air tanks
|
||||||
var/filled = 0.5
|
var/filled = 0.5
|
||||||
@@ -105,6 +106,8 @@
|
|||||||
if(!src.occupant) return
|
if(!src.occupant) return
|
||||||
if(state || !cell || cell.charge<=0) return
|
if(state || !cell || cell.charge<=0) return
|
||||||
if(src == target) return
|
if(src == target) return
|
||||||
|
if(!(get_dir(src,target) & src.dir))//wrong direction
|
||||||
|
return
|
||||||
if(get_dist(src,target)<=1)
|
if(get_dist(src,target)<=1)
|
||||||
src.melee_action(target)
|
src.melee_action(target)
|
||||||
else
|
else
|
||||||
@@ -147,6 +150,9 @@
|
|||||||
var/move_result = 0
|
var/move_result = 0
|
||||||
if(internal_damage&MECHA_INT_CONTROL_LOST)
|
if(internal_damage&MECHA_INT_CONTROL_LOST)
|
||||||
move_result = step_rand(src)
|
move_result = step_rand(src)
|
||||||
|
else if(src.dir!=direction)
|
||||||
|
src.dir=direction
|
||||||
|
move_result = 1
|
||||||
else
|
else
|
||||||
move_result = step(src,direction)
|
move_result = step(src,direction)
|
||||||
if(move_result)
|
if(move_result)
|
||||||
@@ -376,18 +382,28 @@
|
|||||||
/obj/mecha/meteorhit()
|
/obj/mecha/meteorhit()
|
||||||
return ex_act(rand(1,3))//should do for now
|
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 ////////
|
//////// Atmospheric stuff ////////
|
||||||
/////////////////////////////////////
|
/////////////////////////////////////
|
||||||
|
|
||||||
/* //standard for /obj class
|
/*
|
||||||
|
//standard for /obj class
|
||||||
/obj/mecha/handle_internal_lifeform(lifeform, volume)
|
/obj/mecha/handle_internal_lifeform(lifeform, volume)
|
||||||
..()
|
..()
|
||||||
world << "Handling occupant breathing"
|
world << "Handling [lifeform] breathing. Requested [volume]"
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/obj/mecha/remove_air(amount)
|
/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()
|
/obj/mecha/return_air()
|
||||||
return src.air_contents
|
return src.air_contents
|
||||||
@@ -496,6 +512,18 @@
|
|||||||
src.log_message("Toggled lights.")
|
src.log_message("Toggled lights.")
|
||||||
return
|
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()
|
/obj/mecha/verb/move_inside()
|
||||||
set name = "Move Inside"
|
set name = "Move Inside"
|
||||||
set src in oview(1)
|
set src in oview(1)
|
||||||
@@ -757,6 +785,7 @@
|
|||||||
[integrity<30?"<font color='red'><b>DAMAGE LEVEL CRITICAL</b></font>":null]
|
[integrity<30?"<font color='red'><b>DAMAGE LEVEL CRITICAL</b></font>":null]
|
||||||
<b>Integrity: </b> [integrity]%<br>
|
<b>Integrity: </b> [integrity]%<br>
|
||||||
<b>Powercell charge: </b>[cell.charge/cell.maxcharge*100]%<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>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>Internal temperature: </b> [src.air_contents.temperature]°K|[src.air_contents.temperature - T0C]°C<br>
|
||||||
<b>Lights: </b>[lights?"on":"off"]<br>
|
<b>Lights: </b>[lights?"on":"off"]<br>
|
||||||
@@ -765,6 +794,7 @@
|
|||||||
|
|
||||||
/obj/mecha/proc/get_commands()
|
/obj/mecha/proc/get_commands()
|
||||||
var/output = {"<a href='?src=\ref[src];toggle_lights=1'>Toggle Lights</a><br>
|
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/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]
|
[(/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];view_log=1'>View internal log</a><br>
|
||||||
@@ -780,6 +810,9 @@
|
|||||||
if (href_list["toggle_lights"])
|
if (href_list["toggle_lights"])
|
||||||
src.toggle_lights()
|
src.toggle_lights()
|
||||||
return
|
return
|
||||||
|
if (href_list["toggle_airtank"])
|
||||||
|
src.toggle_internal_tank()
|
||||||
|
return
|
||||||
if (href_list["port_disconnect"])
|
if (href_list["port_disconnect"])
|
||||||
src.disconnect_from_port()
|
src.disconnect_from_port()
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -9,6 +9,9 @@
|
|||||||
var/datum/construction/construct
|
var/datum/construction/construct
|
||||||
flags = FPRINT | CONDUCT
|
flags = FPRINT | CONDUCT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//////// Ripley chassis
|
||||||
/obj/mecha_chassis/ripley
|
/obj/mecha_chassis/ripley
|
||||||
name = "Ripley Chassis Frame"
|
name = "Ripley Chassis Frame"
|
||||||
|
|
||||||
@@ -37,7 +40,7 @@
|
|||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/////// Gygax chasis
|
||||||
/obj/mecha_chassis/gygax
|
/obj/mecha_chassis/gygax
|
||||||
name = "Gygax Chassis Frame"
|
name = "Gygax Chassis Frame"
|
||||||
|
|
||||||
@@ -66,6 +69,36 @@
|
|||||||
..()
|
..()
|
||||||
return
|
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 //////
|
////// Mecha Parts //////
|
||||||
/////////////////////////
|
/////////////////////////
|
||||||
@@ -130,6 +163,28 @@
|
|||||||
name="Gygax Armour Plates"
|
name="Gygax Armour Plates"
|
||||||
icon_state = "gygax_armour"
|
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)"
|
name = "Circuit board (Gygax Central Control module)"
|
||||||
icon_state = "mainboard"
|
icon_state = "mainboard"
|
||||||
|
|
||||||
|
firefighter/peripherals
|
||||||
|
name = "Circuit board (Ripley-on-Fire Peripherals Control module)"
|
||||||
|
icon_state = "mcontroller"
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
///// Construction datums //////
|
///// Construction datums //////
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
@@ -378,6 +437,79 @@
|
|||||||
return 1
|
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 ////////////////
|
////////////////// misc ////////////////
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
output += "</div>"
|
output += "</div>"
|
||||||
return output
|
return output
|
||||||
|
|
||||||
/obj/mecha/working/ripley/destroy()
|
/obj/mecha/working/ripley/Del()
|
||||||
for(var/obj/O in cargo)
|
for(var/obj/O in cargo)
|
||||||
if(rand(0,1))
|
if(rand(0,1))
|
||||||
cargo -= O
|
cargo -= O
|
||||||
|
|||||||
Reference in New Issue
Block a user