mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-21 15:51:31 +00:00
140 lines
4.1 KiB
Plaintext
140 lines
4.1 KiB
Plaintext
/obj/machinery/computer/mecha
|
|
name = "exosuit control console"
|
|
icon = 'icons/obj/computer.dmi'
|
|
icon_keyboard = "rd_key"
|
|
icon_screen = "mecha"
|
|
light_color = LIGHT_COLOR_FADEDPURPLE
|
|
req_access = list(access_robotics)
|
|
circuit = /obj/item/weapon/circuitboard/mecha_control
|
|
var/list/located = list()
|
|
var/screen = 0
|
|
var/stored_data
|
|
|
|
/obj/machinery/computer/mecha/attack_ai(var/mob/user as mob)
|
|
return attack_hand(user)
|
|
|
|
/obj/machinery/computer/mecha/attack_hand(var/mob/user as mob)
|
|
ui_interact(user)
|
|
|
|
/obj/machinery/computer/mecha/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
|
var/data[0]
|
|
data["screen"] = screen
|
|
if(screen == 0)
|
|
var/list/mechas[0]
|
|
for(var/obj/item/mecha_parts/mecha_tracking/TR in world)
|
|
var/answer = TR.get_mecha_info()
|
|
if(answer)
|
|
mechas[++mechas.len] = answer
|
|
data["mechas"] = mechas
|
|
if(screen == 1)
|
|
data["log"] = stored_data
|
|
|
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
|
|
|
if(!ui)
|
|
ui = new(user, src, ui_key, "exosuit_control.tmpl", "Exosuit Control Console", 420, 500)
|
|
ui.set_initial_data(data)
|
|
ui.open()
|
|
ui.set_auto_update(1)
|
|
|
|
/obj/machinery/computer/mecha/Topic(href, href_list)
|
|
if(..())
|
|
return 1
|
|
|
|
var/datum/topic_input/filter = new /datum/topic_input(href,href_list)
|
|
if(href_list["send_message"])
|
|
var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("send_message")
|
|
var/message = strip_html_simple(input(usr,"Input message","Transmit message") as text)
|
|
if(!trim(message) || ..())
|
|
return 1
|
|
var/obj/mecha/M = MT.in_mecha()
|
|
if(M)
|
|
M.occupant_message(message)
|
|
|
|
if(href_list["shock"])
|
|
var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("shock")
|
|
MT.shock()
|
|
|
|
if(href_list["get_log"])
|
|
var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("get_log")
|
|
stored_data = MT.get_mecha_log()
|
|
screen = 1
|
|
|
|
if(href_list["return"])
|
|
screen = 0
|
|
|
|
nanomanager.update_uis(src)
|
|
return
|
|
|
|
/obj/item/mecha_parts/mecha_tracking
|
|
name = "Exosuit tracking beacon"
|
|
desc = "Device used to transmit exosuit data."
|
|
icon = 'icons/obj/device.dmi'
|
|
icon_state = "motion2"
|
|
w_class = 2
|
|
origin_tech = "programming=2;magnets=2"
|
|
|
|
/obj/item/mecha_parts/mecha_tracking/proc/get_mecha_info()
|
|
if(!in_mecha())
|
|
return 0
|
|
var/obj/mecha/M = src.loc
|
|
var/list/answer[0]
|
|
answer["reference"] = "\ref[src]"
|
|
answer["name"] = sanitize(replacetext(M.name,"\"","'")) // Double apostrophes break JSON
|
|
if(M.cell)
|
|
answer["cell"] = 1
|
|
answer["cell_capacity"] = M.cell.maxcharge
|
|
answer["cell_current"] = M.get_charge()
|
|
answer["cell_percentage"] = round(M.cell.percent())
|
|
else
|
|
answer["cell"] = 0
|
|
answer["integrity"] = M.health/initial(M.health)*100
|
|
answer["airtank"] = M.return_pressure()
|
|
answer["pilot"] = "[M.occupant||"None"]"
|
|
var/area/area = get_area(M)
|
|
answer["location"] = "[sanitize(area.name)||"Unknown"]"
|
|
answer["equipment"] = "[M.selected||"None"]"
|
|
if(istype(M, /obj/mecha/working/ripley))
|
|
var/obj/mecha/working/ripley/RM = M
|
|
answer["hascargo"] = 1
|
|
answer["cargo"] = RM.cargo.len/RM.cargo_capacity*100
|
|
|
|
return answer
|
|
|
|
/obj/item/mecha_parts/mecha_tracking/emp_act()
|
|
qdel(src)
|
|
return
|
|
|
|
/obj/item/mecha_parts/mecha_tracking/ex_act()
|
|
qdel(src)
|
|
return
|
|
|
|
/obj/item/mecha_parts/mecha_tracking/proc/in_mecha()
|
|
if(istype(src.loc, /obj/mecha))
|
|
return src.loc
|
|
return 0
|
|
|
|
/obj/item/mecha_parts/mecha_tracking/proc/shock()
|
|
var/obj/mecha/M = in_mecha()
|
|
if(M)
|
|
M.emp_act(2)
|
|
qdel(src)
|
|
|
|
/obj/item/mecha_parts/mecha_tracking/proc/get_mecha_log()
|
|
if(!src.in_mecha())
|
|
return 0
|
|
var/obj/mecha/M = src.loc
|
|
return M.get_log_html()
|
|
|
|
/obj/item/weapon/storage/box/mechabeacons
|
|
name = "Exosuit Tracking Beacons"
|
|
New()
|
|
..()
|
|
new /obj/item/mecha_parts/mecha_tracking(src)
|
|
new /obj/item/mecha_parts/mecha_tracking(src)
|
|
new /obj/item/mecha_parts/mecha_tracking(src)
|
|
new /obj/item/mecha_parts/mecha_tracking(src)
|
|
new /obj/item/mecha_parts/mecha_tracking(src)
|
|
new /obj/item/mecha_parts/mecha_tracking(src)
|
|
new /obj/item/mecha_parts/mecha_tracking(src)
|