mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Redid the power use code, should be working better now. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@999 316c924e-a436-60f5-8080-3fe189b3f50e
177 lines
4.1 KiB
Plaintext
177 lines
4.1 KiB
Plaintext
/obj/machinery/particle_accelerator/control_box
|
|
name = "Particle Accelerator Control Box"
|
|
desc = "Part of a Particle Accelerator."
|
|
icon = 'particle_accelerator.dmi'
|
|
icon_state = "control_box"
|
|
anchored = 0
|
|
density = 1
|
|
use_power = 0
|
|
idle_power_usage = 500
|
|
active_power_usage = 10000
|
|
construction_state = 0
|
|
active = 0
|
|
var
|
|
list/obj/particle_accelerator/connected_parts
|
|
assembled = 0
|
|
strength = 0
|
|
|
|
|
|
New()
|
|
connected_parts = list()
|
|
..()
|
|
|
|
|
|
attack_hand(mob/user as mob)
|
|
if(construction_state >= 3)
|
|
interact(user)
|
|
|
|
|
|
update_state()
|
|
if(construction_state < 3)
|
|
use_power = 0
|
|
assembled = 0
|
|
active = 0
|
|
connected_parts = list()
|
|
return
|
|
if(!part_scan())
|
|
assembled = 0
|
|
return
|
|
|
|
|
|
Topic(href, href_list)
|
|
..()
|
|
if( href_list["close"] )
|
|
usr << browse(null, "window=pacontrol")
|
|
usr.machine = null
|
|
return
|
|
if(href_list["togglep"])
|
|
src.toggle_power()
|
|
if(href_list["scan"])
|
|
src.part_scan()
|
|
if(href_list["strengthup"])
|
|
src.strength++
|
|
if(src.strength > 2)
|
|
src.strength = 2
|
|
if(href_list["strengthdown"])
|
|
src.strength--
|
|
if(src.strength < 0)
|
|
src.strength = 0
|
|
src.updateDialog()
|
|
|
|
|
|
process()
|
|
if(src.active)
|
|
for(var/obj/particle_accelerator/particle_emitter/PE in connected_parts)
|
|
if(PE)
|
|
PE.emit_particle(src.strength)
|
|
// for(var/obj/particle_accelerator/fuel_chamber/PF in connected_parts)
|
|
// PF.doshit()
|
|
// for(var/obj/particle_accelerator/power_box/PB in connected_parts)
|
|
// PB.doshit()
|
|
//finish up putting the fuel run and power use things in here
|
|
return
|
|
|
|
|
|
proc
|
|
part_scan()
|
|
connected_parts = list()
|
|
var/tally = 0
|
|
var/ldir = 0
|
|
var/rdir = 0
|
|
var/odir = 0
|
|
switch(src.dir)
|
|
if(1)
|
|
ldir = 4
|
|
rdir = 8
|
|
odir = 2
|
|
if(2)
|
|
ldir = 8
|
|
rdir = 4
|
|
odir = 1
|
|
if(4)
|
|
ldir = 1
|
|
rdir = 2
|
|
odir = 8
|
|
if(8)
|
|
ldir = 2
|
|
rdir = 1
|
|
odir = 4
|
|
var/turf/T = src.loc
|
|
T = get_step(T,rdir)
|
|
if(check_part(T,/obj/particle_accelerator/fuel_chamber))
|
|
tally++
|
|
T = get_step(T,odir)
|
|
if(check_part(T,/obj/particle_accelerator/end_cap))
|
|
tally++
|
|
T = get_step(T,dir)
|
|
T = get_step(T,dir)
|
|
if(check_part(T,/obj/particle_accelerator/power_box))
|
|
tally++
|
|
T = get_step(T,dir)
|
|
if(check_part(T,/obj/particle_accelerator/particle_emitter/center))
|
|
tally++
|
|
T = get_step(T,ldir)
|
|
if(check_part(T,/obj/particle_accelerator/particle_emitter/left))
|
|
tally++
|
|
T = get_step(T,rdir)
|
|
T = get_step(T,rdir)
|
|
if(check_part(T,/obj/particle_accelerator/particle_emitter/right))
|
|
tally++
|
|
if(tally >= 6)
|
|
assembled = 1
|
|
return 1
|
|
else
|
|
assembled = 0
|
|
return 0
|
|
|
|
|
|
check_part(var/turf/T, var/type)
|
|
if(!(T)||!(type))
|
|
return 0
|
|
var/obj/particle_accelerator/PA = locate(/obj/particle_accelerator) in T
|
|
if(istype(PA, type))
|
|
if(PA.connect_master(src))
|
|
if(PA.report_ready(src))
|
|
src.connected_parts.Add(PA)
|
|
return 1
|
|
return 0
|
|
|
|
|
|
toggle_power()
|
|
src.active = !src.active
|
|
if(src.active)
|
|
src.use_power = 2
|
|
else
|
|
src.use_power = 1
|
|
return 1
|
|
|
|
|
|
interact(mob/user)
|
|
if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) )
|
|
if (!istype(user, /mob/living/silicon))
|
|
user.machine = null
|
|
user << browse(null, "window=pacontrol")
|
|
return
|
|
user.machine = src
|
|
|
|
var/dat = ""
|
|
dat += "Particle Accelerator Control Panel<BR>"
|
|
dat += "<A href='?src=\ref[src];close=1'>Close</A><BR><BR>"
|
|
dat += "Status:<BR>"
|
|
if(!assembled)
|
|
dat += "Unable to detect all parts!<BR>"
|
|
dat += "<A href='?src=\ref[src];scan=1'>Run Scan</A><BR><BR>"
|
|
else
|
|
dat += "All parts in place.<BR><BR>"
|
|
dat += "Power:"
|
|
if(active)
|
|
dat += "On<BR>"
|
|
else
|
|
dat += "Off <BR>"
|
|
dat += "<A href='?src=\ref[src];togglep=1'>Toggle Power</A><BR><BR>"
|
|
dat += "Particle Strength: [src.strength]"
|
|
dat += "<A href='?src=\ref[src];strengthdown=1'>--</A>|<A href='?src=\ref[src];strengthup=1'>++</A><BR><BR>"
|
|
|
|
user << browse(dat, "window=pacontrol;size=420x500")
|
|
onclose(user, "pacontrol")
|