diff --git a/baystation12.dme b/baystation12.dme index 9aded600eac..9f7330d6847 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1002,6 +1002,7 @@ #include "code\modules\power\engine.dm" #include "code\modules\power\generator.dm" #include "code\modules\power\generator_type2.dm" +#include "code\modules\power\gravitygenerator.dm" #include "code\modules\power\lighting.dm" #include "code\modules\power\port_gen.dm" #include "code\modules\power\power.dm" diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm new file mode 100644 index 00000000000..4c34fdaf7e8 --- /dev/null +++ b/code/modules/power/gravitygenerator.dm @@ -0,0 +1,144 @@ +// It.. uses a lot of power. Everything under power is engineering stuff, at least. + +/obj/machinery/computer/gravity_control_computer + name = "Gravity Generator Control" + desc = "A computer to control a local gravity generator. Qualified personnel only." + icon = 'computer.dmi' + icon_state = "airtunnel0e" + anchored = 1 + density = 1 + var/obj/machinery/gravity_generator = null + + +/obj/machinery/gravity_generator/ + name = "Gravitational Generator" + desc = "A device which produces a gravaton field when set up." + icon = 'singularity.dmi' + icon_state = "TheSingGen" + anchored = 1 + density = 1 + use_power = 1 + idle_power_usage = 200 + active_power_usage = 1000 + var/on = 1 + var/list/localareas = list() + var/effectiverange = 25 + + // Borrows code from cloning computer +/obj/machinery/computer/gravity_control_computer/New() + ..() + spawn(5) + updatemodules() + return + return + +/obj/machinery/gravity_generator/New() + ..() + spawn(5) + locatelocalareas() + return + return + + + +/obj/machinery/computer/gravity_control_computer/proc/updatemodules() + src.gravity_generator = findgenerator() + + + +/obj/machinery/gravity_generator/proc/locatelocalareas() + for(var/area/A in range(src,effectiverange)) + if(A.name == "Space") + continue // No (de)gravitizing space. + if(A.master && !( A.master in localareas) ) + localareas += A.master + +/obj/machinery/computer/gravity_control_computer/proc/findgenerator() + var/obj/machinery/gravity_generator/foundgenerator = null + for(dir in list(NORTH,EAST,SOUTH,WEST)) + //world << "SEARCHING IN [dir]" + foundgenerator = locate(/obj/machinery/gravity_generator/, get_step(src, dir)) + if (!isnull(foundgenerator)) + //world << "FOUND" + break + return foundgenerator + + +/obj/machinery/computer/gravity_control_computer/attack_paw(mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer/gravity_control_computer/attack_ai(mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer/gravity_control_computer/attack_hand(mob/user as mob) + user.machine = src + add_fingerprint(user) + + if(stat & (BROKEN|NOPOWER)) + return + + updatemodules() + + var/dat = "