Benefits (How this will benefit the server and game as a whole):
It would add (As I perceive it) alot of enjoyment to the round and take the 'boringness' out of being a Bridge Officer.
Details (Description of how you think this would work, the benefits, etc):
Benefits: (How this will benefit the server and game as a whole)
Details (description of how you think this would work, the benefits, etc):
^They're very much the same.
So, to put it simply, overwatch officers are given the ability to run various commands to assist marines during their mission, including but not limited to placing notification markers to alert undirectional marines of where they're required to go, the ability to place blueprints to quickly and easily design and build fortifications or what not, etc..Anyway, actual details!
Construction:
As an overwatch officer, you'll be able to place various blueprints of objects such as walls, tables, windows, so on so forth with which your marines are able to construct using various resources, depending on what you decide to build.
Camera:
As an overwatch officer, you'll no longer be limited to the SL's camera, but look around the environment surrounding the squads as though you were an AI, and the members were your cameras. (SL's leader's helmet acts as the link, of course, and the other cameras go out of range after ~14 tiles)
Representation:
As an overwatch officer, a holographic image of your body will be projected from the SL's helmet, allowing your presence to be felt and confirmed among surrounding marines. (Like an AI hologram)
Waypoints:
As an overwatch officer, you'll be able to place waypoints with attached notifications to help guide and transport your squad to required locations.
Intergration:
As an overwatch officer, you'll no longer be able to view and disconnect from your console at will. It will take time to connect to the interface, and it will take time to disconnect.
Measurements:
As an overwatch officer, you'll have constant access to various reading about your squad such as their vital signs, coordinates, ammunition(?), so on so forth.
Implementation (Optional, if you have an idea how to implement it):
I'm perfectly happy to code it myself;
There's a shitty example of how someone might use the construction side of it. (Yeah, the icons are kinda ugly. Someone else should make new ones for me)
Aand then here's most of the code for the building. Which is the only thing I've done. Yay.
Code: Select all
/obj/structure/blueprint
icon = 'icons/obj/blueprint.dmi'
icon_state = "wall"
name = "Undefined"
density = 0
layer = 5.1 // Above things like chairs.
var/list/resources = list(/obj/item/stack/material/steel = 20)
var/list/resources_left = list()
var/list/tools = list()
var/list/tools_left = list()
var/turner = MATERIALS
var/list/path = list(/turf/simulated/wall)
New()
..()
resources_left = resources
tools_left = tools
attackby(var/obj/item/O, var/mob/user)
if(turner == MATERIALS)
if(!resources_left.len)
turner = TOOLS
return
for(var/i=1,i<=resources_left.len,i++)
if(islist(resources_left[i]))
if(is_type_in_list(O, resources_left[i]))
if(istype(O, /obj/item))
var/obj/item/stack/material/M = O
if(!M.use())
user << "\red You don't have enough!"
else
resources_left.Cut(i, i+1)
if(tools_left.len)
turner = TOOLS
else
if(is_type_in_list(O, resources_left))
if(istype(O, /obj/item))
var/obj/item/stack/material/M = O
if(!M.use())
user << "\red You don't have enough!"
else
resources_left.Cut(resources_left.Find(O), (resources_left.Find(O) + 1))
if(tools_left.len)
turner = TOOLS
else if(turner == TOOLS)
if(!tools_left.len)
turner = MATERIALS
return
if(O.type == tools_left[1])
user << "You begin to[(tools_left[tools_left[1]])] on \the [src]!"
if(!do_after(user, rand(75, 200))) return
user << "You successfully [(tools_left[tools_left[1]])] on \the [src]!"
tools_left.Cut(1, 2)
turner = MATERIALS
if(!resources_left.len && !tools_left.len)
complete_blueprint()
user << "\blue You complete \the [src]!"
attack_hand(var/mob/user)
usr << "You clear \the [src]!"
qdel(src)
proc/complete_blueprint()
for(var/i=1;i<=path.len;i++) // For everything we need to make:
if(islist(path[i])) // Check whether it's a list
var/list/L = path[i]
var/obj/O = new path[i][1]
O.loc = get_turf(src) // Create an object of the first element of said list
for(var/pi=2,pi<=L.len,pi++) // Loop through the rest of the indexes in that list
O.vars[path[pi]] = path[path[pi]] // Set the object's variable (pi) to the value it's set to in the list
else
var/obj/O = new path[i]
O.loc = get_turf(src) // Otherwise just make a standard object
world << "[O] created" // Announce it for debugging
sleep(1) // Leave a slight delay.
qdel(src)
metal_wall
name = "Metal Wall"
table
name = "table"
path = list(/obj/structure/table)
resources = list(/obj/item/stack/material/steel = 3)
tools = list(/obj/item/weapon/wrench = "secure the bolts")
icon_state = "table"
window
name = "Full Window"
path = list(/obj/structure/grille, /obj/structure/window/basic)
resources = list(list(/obj/item/stack/material/steel = 2, /obj/item/stack/rods = 4), /obj/item/stack/material/glass = 5)
icon_state = "window"
reinforced
name = "Reinforced Window"
path = list(list(/obj/structure/grille, health = 25), /obj/structure/window/reinforced)
resources = list(list(/obj/item/stack/material/steel = 7, /obj/item/stack/rods = 14), /obj/item/stack/material/glass = 10)
icon_state = "rwindow"
rack
name = "Rack"
path = list(/obj/structure/table/rack)
resources = list(list(/obj/item/stack/material/steel = 3, /obj/item/stack/rods = 4))
icon_state = "rack"
disassembly
name = "Disassemble"
path = list()
resources = list()
icon_state = "disassemble"
attackby(var/obj/O, var/mob/user)
return attack_hand(user)