mirror of
https://github.com/goonstation/goonstation-2016.git
synced 2026-08-28 08:26:13 +01:00
Initial Commit
This commit is contained in:
@@ -0,0 +1,298 @@
|
||||
//This might just be the file that finally breaks angriestibm.
|
||||
//I just nilly willy directly use the cruiser object instead of sending packets.
|
||||
|
||||
/datum/computer/file/terminal_program/cruiser
|
||||
name = "Cruiser"
|
||||
size = 32
|
||||
|
||||
disposing()
|
||||
..()
|
||||
|
||||
initialize()
|
||||
src.print_text("Cruiser Control Assistant<br>Type \"help\" for commands.")
|
||||
|
||||
input_text(text)
|
||||
if(..())
|
||||
return
|
||||
|
||||
var/list/command_list = parse_string(text)
|
||||
var/command = command_list[1]
|
||||
command_list -= command_list[1] //Remove the command we are now processing.
|
||||
|
||||
var/obj/item/peripheral/cruiser/adapter = find_peripheral("SHIP_ADAPTER")
|
||||
|
||||
switch(lowertext(command))
|
||||
if ("help")
|
||||
src.print_text("Command List:<br> read_power - Gets power usage<br>power_ratios - Displays sub-system power ratios.<br>damage - Lists damaged systems<br>set_power (thrusters/weapons/shields) (percentage) - Adjusts how much power subsystems recieve.<br>reboot (turret_l/turret_r/engine/life_support/pod_weapons/pod_navigation/pod_defense) - Restores basic functions of the given system while degrading the ship.")
|
||||
return
|
||||
|
||||
if ("reboot")
|
||||
if(command_list.len >= 1)
|
||||
//for(var/t in command_list)
|
||||
// command_list -= t
|
||||
var/t = command_list[1]
|
||||
if(lowertext(t) in list("turret_l","turret_r","engine","life_support","pod_weapons","pod_navigation","pod_defense"))
|
||||
var/datum/signal/newsignal = get_free_signal()
|
||||
newsignal.data["system"] = lowertext(t)
|
||||
print_text("Rebooting [lowertext(t)]. Please wait ...")
|
||||
src.peripheral_command("reboot", newsignal, "\ref[adapter]")
|
||||
else
|
||||
print_text("Unknown system: [lowertext(t)]")
|
||||
|
||||
if ("set_power","spwr")
|
||||
if(command_list.len == 2)
|
||||
var/system = command_list[1]
|
||||
var/percentage = command_list[2]
|
||||
|
||||
if(lowertext(system) != "thrusters" && lowertext(system) != "weapons" && lowertext(system) != "shields")
|
||||
print_text("Unknown sub-system: [system]")
|
||||
return
|
||||
if(!text2num(percentage))
|
||||
print_text("Invalid setting: [percentage]")
|
||||
return
|
||||
var/datum/signal/newsignal = get_free_signal()
|
||||
newsignal.data["system"] = system
|
||||
newsignal.data["percentage"] = percentage
|
||||
|
||||
src.peripheral_command("set_power", newsignal, "\ref[adapter]")
|
||||
else
|
||||
print_text("Usage: set_power (thrusters/weapons/shields) (percentage)")
|
||||
|
||||
if ("power_ratios", "p%", "pwrr")
|
||||
src.peripheral_command("power_ratios", null, "\ref[adapter]")
|
||||
|
||||
if ("read_power", "power", "pwr")
|
||||
src.peripheral_command("read_power", null, "\ref[adapter]")
|
||||
|
||||
if ("damage", "dmg")
|
||||
src.peripheral_command("get_damage", null, "\ref[adapter]")
|
||||
|
||||
if ("quit","exit")
|
||||
src.master.temp = ""
|
||||
print_text("Now quitting...")
|
||||
src.master.unload_program(src)
|
||||
return
|
||||
|
||||
else
|
||||
src.print_text("Unknown command.")
|
||||
|
||||
receive_command(obj/source, command, datum/signal/signal)
|
||||
if ((..()) || (!signal))
|
||||
return
|
||||
if (command == "read_power")
|
||||
var/list/recieved = params2list(signal.data["usage_breakdown"])
|
||||
src.print_text("Power: [signal.data["used_last"]]Pu / [signal.data["prod_last"]]Pu")
|
||||
for(var/X in recieved)
|
||||
src.print_text("--[X]: [recieved[X]]")
|
||||
src.print_text("<br>")
|
||||
return
|
||||
|
||||
else if (command == "get_damage")
|
||||
src.print_text("Number of damaged systems: [signal.data["damage_num"]]")
|
||||
src.print_text("Total damage: [signal.data["damage_total"]]")
|
||||
src.print_text("Ship degradation: [signal.data["degradation"]]%")
|
||||
if(signal.data["damage_breakdown"])
|
||||
src.print_text(signal.data["damage_breakdown"])
|
||||
return
|
||||
|
||||
else if (command == "power_ratios")
|
||||
src.print_text("Thrusters power: [signal.data["ratio_movement"]]%")
|
||||
src.print_text("Weapons power: [signal.data["ratio_offense"]]%")
|
||||
src.print_text("Shields power: [signal.data["ratio_defense"]]%")
|
||||
return
|
||||
else if (command == "set_power")
|
||||
src.print_text("[signal.data["info"]]")
|
||||
return
|
||||
else if (command == "reboot")
|
||||
src.print_text("[signal.data["info"]]")
|
||||
return
|
||||
|
||||
/obj/machinery/computer3/generic/cruiser
|
||||
name = "cruiser console"
|
||||
icon_state = "cruiser"
|
||||
base_icon_state = "cruiser"
|
||||
setup_drive_size = 64
|
||||
setup_frame_type = /obj/computer3frame/terminal
|
||||
setup_starting_os = /datum/computer/file/terminal_program/os/main_os/no_login
|
||||
setup_starting_peripheral1 = /obj/item/peripheral/cruiser
|
||||
setup_starting_program = /datum/computer/file/terminal_program/cruiser
|
||||
setup_idscan_path = null
|
||||
|
||||
power_change()
|
||||
if(stat & BROKEN)
|
||||
icon_state = src.base_icon_state
|
||||
src.icon_state += "b"
|
||||
light.disable()
|
||||
else
|
||||
icon_state = src.base_icon_state
|
||||
stat &= ~NOPOWER
|
||||
light.enable()
|
||||
|
||||
|
||||
/obj/item/peripheral/cruiser
|
||||
name = "cruiser interface module"
|
||||
desc = "A computer interface card designed to interface with a small starcraft's main bus."
|
||||
icon_state = "power_mod"
|
||||
func_tag = "SHIP_ADAPTER"
|
||||
var/obj/machinery/cruiser/cruiser
|
||||
|
||||
installed(var/obj/machinery/computer3/newhost)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
check_cruiser()
|
||||
|
||||
return 0
|
||||
|
||||
uninstalled()
|
||||
src.cruiser = null
|
||||
return 0
|
||||
|
||||
disposing()
|
||||
uninstalled()
|
||||
|
||||
..()
|
||||
receive_command(obj/source, command, datum/signal/signal)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
if(!src.check_cruiser())
|
||||
return 1
|
||||
|
||||
switch (command)
|
||||
if ("read_power")
|
||||
var/datum/signal/newsignal = get_free_signal()
|
||||
newsignal.data["used_last"] = cruiser.power_used_last
|
||||
newsignal.data["prod_last"] = cruiser.power_produced_last
|
||||
|
||||
var/usage_count_builder = ""
|
||||
for(var/X in cruiser.powerUse)
|
||||
var/decodeList = params2list(cruiser.powerUse[X])
|
||||
|
||||
usage_count_builder += "[X]=[decodeList[1]];"
|
||||
|
||||
if (usage_count_builder)
|
||||
newsignal.data["usage_breakdown"] = usage_count_builder
|
||||
|
||||
spawn(4)
|
||||
send_command("read_power", newsignal)
|
||||
|
||||
return newsignal
|
||||
|
||||
if ("get_damage")
|
||||
var/datum/signal/newsignal = get_free_signal()
|
||||
var/dmg_total = 0
|
||||
var/dmg_count = 0
|
||||
|
||||
var/damage_builder = ""
|
||||
|
||||
for(var/obj/machinery/cruiser_destroyable/D in cruiser.interior_area)
|
||||
if(D.ignore || D.health == D.health_max) continue
|
||||
damage_builder += "--[D.name]: [D.health]/[D.health_max]<br>"
|
||||
dmg_count++
|
||||
dmg_total += (D.health_max - D.health)
|
||||
|
||||
if (damage_builder)
|
||||
newsignal.data["damage_breakdown"] = damage_builder
|
||||
|
||||
newsignal.data["damage_total"] = dmg_total
|
||||
newsignal.data["damage_num"] = dmg_count
|
||||
newsignal.data["degradation"] = cruiser.degradation
|
||||
|
||||
spawn(4)
|
||||
send_command("get_damage", newsignal)
|
||||
|
||||
if ("power_ratios")
|
||||
var/datum/signal/newsignal = get_free_signal()
|
||||
|
||||
newsignal.data["ratio_movement"] = cruiser.power_movement
|
||||
newsignal.data["ratio_defense"] = cruiser.power_defense
|
||||
newsignal.data["ratio_offense"] = cruiser.power_offense
|
||||
|
||||
spawn(4)
|
||||
send_command("power_ratios", newsignal)
|
||||
|
||||
return newsignal
|
||||
|
||||
if ("reboot")
|
||||
var/system = signal.data["system"]
|
||||
var/datum/signal/newsignal = get_free_signal()
|
||||
switch(system)
|
||||
if("turret_l")
|
||||
if(cruiser.interior_area)
|
||||
var/obj/machinery/cruiser_destroyable/cruiser_component_slot/weapon/left/P = (locate(/obj/machinery/cruiser_destroyable/cruiser_component_slot/weapon/left) in cruiser.interior_area)
|
||||
if(istype(P))
|
||||
newsignal.data["info"] = P.reboot()
|
||||
cruiser.degradation = min(cruiser.degradation + 5, 100)
|
||||
if("turret_r")
|
||||
if(cruiser.interior_area)
|
||||
var/obj/machinery/cruiser_destroyable/cruiser_component_slot/weapon/right/P = (locate(/obj/machinery/cruiser_destroyable/cruiser_component_slot/weapon/right) in cruiser.interior_area)
|
||||
if(istype(P))
|
||||
newsignal.data["info"] = P.reboot()
|
||||
cruiser.degradation = min(cruiser.degradation + 5, 100)
|
||||
if("engine")
|
||||
if(cruiser.interior_area)
|
||||
var/obj/machinery/cruiser_destroyable/cruiser_component_slot/engine/P = (locate(/obj/machinery/cruiser_destroyable/cruiser_component_slot/engine) in cruiser.interior_area)
|
||||
if(istype(P))
|
||||
newsignal.data["info"] = P.reboot()
|
||||
cruiser.degradation = min(cruiser.degradation + 5, 100)
|
||||
if("life_support")
|
||||
if(cruiser.interior_area)
|
||||
var/obj/machinery/cruiser_destroyable/cruiser_component_slot/life_support/P = (locate(/obj/machinery/cruiser_destroyable/cruiser_component_slot/life_support) in cruiser.interior_area)
|
||||
if(istype(P))
|
||||
newsignal.data["info"] = P.reboot()
|
||||
cruiser.degradation = min(cruiser.degradation + 5, 100)
|
||||
if("pod_weapons")
|
||||
if(cruiser.interior_area)
|
||||
var/obj/machinery/cruiser_destroyable/cruiser_pod/security/P = (locate(/obj/machinery/cruiser_destroyable/cruiser_pod/security) in cruiser.interior_area)
|
||||
if(istype(P))
|
||||
newsignal.data["info"] = P.reboot()
|
||||
cruiser.degradation = min(cruiser.degradation + 5, 100)
|
||||
if("pod_navigation")
|
||||
if(cruiser.interior_area)
|
||||
var/obj/machinery/cruiser_destroyable/cruiser_pod/movement/P = (locate(/obj/machinery/cruiser_destroyable/cruiser_pod/movement) in cruiser.interior_area)
|
||||
if(istype(P))
|
||||
newsignal.data["info"] = P.reboot()
|
||||
cruiser.degradation = min(cruiser.degradation + 5, 100)
|
||||
if("pod_defense")
|
||||
if(cruiser.interior_area)
|
||||
var/obj/machinery/cruiser_destroyable/cruiser_pod/engineering/P = (locate(/obj/machinery/cruiser_destroyable/cruiser_pod/engineering) in cruiser.interior_area)
|
||||
if(istype(P))
|
||||
newsignal.data["info"] = P.reboot()
|
||||
cruiser.degradation = min(cruiser.degradation + 5, 100)
|
||||
else
|
||||
newsignal.data["info"] = "INTERNAL ERROR. UNKNOWN SYSTEM"
|
||||
spawn(4)
|
||||
send_command("reboot", newsignal)
|
||||
return
|
||||
|
||||
if ("set_power")
|
||||
var/percentage = text2num(signal.data["percentage"])
|
||||
if(!percentage)
|
||||
return
|
||||
var/datum/signal/newsignal = get_free_signal()
|
||||
|
||||
percentage = min(max(percentage, 1), 500)
|
||||
|
||||
switch(lowertext(signal.data["system"]))
|
||||
if("thrusters")
|
||||
cruiser.power_movement = percentage
|
||||
if("weapons")
|
||||
cruiser.power_offense = percentage
|
||||
if("shields")
|
||||
cruiser.power_defense = percentage
|
||||
|
||||
newsignal.data["info"] = "Set [signal.data["system"]] to [percentage]%"
|
||||
spawn(4)
|
||||
send_command("set_power", newsignal)
|
||||
|
||||
else
|
||||
return "Valid commands: read_power get_damage power_ratios set_power reboot"
|
||||
|
||||
//Return true if cruiser is valid/found.
|
||||
proc/check_cruiser()
|
||||
var/area/ship_interior/A = get_area(src.host)
|
||||
if(istype(A))
|
||||
cruiser = A.ship
|
||||
return 1
|
||||
return 0
|
||||
Reference in New Issue
Block a user