diff --git a/baystation12.dme b/baystation12.dme
index 2518938c8c..1cafe41b56 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -39,6 +39,7 @@
#define FILE_DIR "sound/AI"
#define FILE_DIR "sound/ambience"
#define FILE_DIR "sound/effects"
+#define FILE_DIR "sound/effects/turret"
#define FILE_DIR "sound/effects/wind"
#define FILE_DIR "sound/hallucinations"
#define FILE_DIR "sound/items"
@@ -1216,9 +1217,9 @@
#include "code\WorkInProgress\Cael_Aislinn\Rust\virtual_particle_catcher.dm"
#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\circuits_and_designs.dm"
#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\energy_field.dm"
-#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\external_shield_gen.dm"
#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_capacitor.dm"
#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_gen.dm"
+#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_gen_external.dm"
#include "code\WorkInProgress\Cael_Aislinn\Supermatter\LaserComputer.dm"
#include "code\WorkInProgress\Cael_Aislinn\Supermatter\SuperMatter.dm"
#include "code\WorkInProgress\Cael_Aislinn\Supermatter\ZeroPointLaser.dm"
diff --git a/code/WorkInProgress/Cael_Aislinn/ShieldGen/energy_field.dm b/code/WorkInProgress/Cael_Aislinn/ShieldGen/energy_field.dm
index dee4c063fb..653de8ca4d 100644
--- a/code/WorkInProgress/Cael_Aislinn/ShieldGen/energy_field.dm
+++ b/code/WorkInProgress/Cael_Aislinn/ShieldGen/energy_field.dm
@@ -9,38 +9,41 @@
anchored = 1
layer = 2.1
density = 0
- invisibility = 2
+ invisibility = 101
var/strength = 0
- var/obj/machinery/shield_gen/parent
- var/stress = 0
/obj/effect/energy_field/ex_act(var/severity)
Stress(0.5 + severity)
/obj/effect/energy_field/bullet_act(var/obj/item/projectile/Proj)
- Stress(1 + 1 * (Proj.damage / 100))
-
+ Stress(Proj.damage / 10)
/obj/effect/energy_field/meteorhit(obj/effect/meteor/M as obj)
if(M)
walk(M,0)
+ Stress(2)
/obj/effect/energy_field/proc/Stress(var/severity)
strength -= severity
- stress += severity
//if we take too much damage, drop out - the generator will bring us back up if we have enough power
if(strength < 1)
- invisibility = 2
+ invisibility = 101
density = 0
+ else if(strength >= 1)
+ invisibility = 0
+ density = 1
/obj/effect/energy_field/proc/Strengthen(var/severity)
strength += severity
//if we take too much damage, drop out - the generator will bring us back up if we have enough power
- if(strength > 1)
+ if(strength >= 1)
invisibility = 0
density = 1
+ else if(strength < 1)
+ invisibility = 101
+ density = 0
/obj/effect/energy_field/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0)
//Purpose: Determines if the object (or airflow) can pass this atom.
@@ -49,4 +52,4 @@
//Outputs: Boolean if can pass.
//return (!density || !height || air_group)
- return density
+ return !density
diff --git a/code/WorkInProgress/Cael_Aislinn/ShieldGen/shield_capacitor.dm b/code/WorkInProgress/Cael_Aislinn/ShieldGen/shield_capacitor.dm
index cf78443b41..9ea07f119b 100644
--- a/code/WorkInProgress/Cael_Aislinn/ShieldGen/shield_capacitor.dm
+++ b/code/WorkInProgress/Cael_Aislinn/ShieldGen/shield_capacitor.dm
@@ -10,7 +10,6 @@
var/active = 1
density = 1
anchored = 1
- var/obj/machinery/shield_gen/target_generator
var/stored_charge = 0
var/time_since_fail = 100
var/max_charge = 1000000
@@ -29,39 +28,84 @@
spawn(10)
for(var/obj/machinery/shield_gen/possible_gen in range(1, src))
if(get_dir(src, possible_gen) == src.dir)
- target_generator = possible_gen
possible_gen.owned_capacitor = src
break
..()
-/obj/machinery/shield_capacitor/verb/rotate()
- set name = "Rotate Clockwise"
- set category = "Object"
- set src in oview(1)
+/obj/machinery/shield_capacitor/attackby(obj/item/W, mob/user)
- if (src.anchored || usr:stat)
- usr << "It is fastened to the floor!"
- return 0
- src.dir = turn(src.dir, 270)
- target_generator = locate() in get_step(src,dir)
- if(target_generator && !target_generator.owned_capacitor)
- target_generator.owned_capacitor = src
- return 1
-
-/obj/machinery/shield_capacitor/power_change()
- if(stat & BROKEN)
- icon_state = "broke"
- else
- if( powered() )
- if (src.active)
- icon_state = "capacitor"
- else
- icon_state = "capacitor"
- stat &= ~NOPOWER
+ if(istype(W, /obj/item/weapon/card/id))
+ var/obj/item/weapon/card/id/C = W
+ if(access_captain in C.access || access_security in C.access || access_engine in C.access)
+ src.locked = !src.locked
+ user << "Controls are now [src.locked ? "locked." : "unlocked."]"
+ updateDialog()
else
- spawn(rand(0, 15))
- src.icon_state = "capacitor"
- stat |= NOPOWER
+ user << "\red Access denied."
+ else if(istype(W, /obj/item/weapon/card/emag))
+ if(prob(75))
+ src.locked = !src.locked
+ user << "Controls are now [src.locked ? "locked." : "unlocked."]"
+ updateDialog()
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(5, 1, src)
+ s.start()
+
+ else if(istype(W, /obj/item/weapon/wrench))
+ src.anchored = !src.anchored
+ src.visible_message("\blue \icon[src] [src] has been [anchored ? "bolted to the floor" : "unbolted from the floor"] by [user].")
+
+ spawn(0)
+ for(var/obj/machinery/shield_gen/gen in range(1, src))
+ if(get_dir(src, gen) == src.dir)
+ if(!src.anchored && gen.owned_capacitor == src)
+ gen.owned_capacitor = null
+ break
+ else if(src.anchored && !gen.owned_capacitor)
+ gen.owned_capacitor = src
+ break
+ gen.updateDialog()
+ updateDialog()
+ else
+ ..()
+
+/obj/machinery/shield_capacitor/attack_paw(user as mob)
+ return src.attack_hand(user)
+
+/obj/machinery/shield_capacitor/attack_ai(user as mob)
+ return src.attack_hand(user)
+
+/obj/machinery/shield_capacitor/attack_hand(mob/user)
+ if(stat & (NOPOWER|BROKEN))
+ return
+ interact(user)
+
+/obj/machinery/shield_capacitor/interact(mob/user)
+ if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) )
+ if (!istype(user, /mob/living/silicon))
+ user.unset_machine()
+ user << browse(null, "window=shield_capacitor")
+ return
+ var/t = "Shield Capacitor Control Console
"
+ if(locked)
+ t += "Swipe your ID card to begin."
+ else
+ t += "This capacitor is: [active ? "Online" : "Offline" ] [active ? "\[Deactivate\]" : "\[Activate\]"]
"
+ t += "[time_since_fail > 2 ? "Charging stable." : "Warning, low charge!"]
"
+ t += "Charge: [stored_charge] Watts ([100 * stored_charge/max_charge]%)
"
+ t += "Charge rate: \
+ \[min\] \
+ \[--\] \
+ \[-\][charge_rate] Watts/sec \
+ \[+\] \
+ \[++\] \
+ \[max\]
"
+ t += "
"
+ t += "Refresh "
+ t += "Close
"
+
+ user << browse(t, "window=shield_capacitor;size=500x800")
+ user.set_machine(src)
/obj/machinery/shield_capacitor/process()
//
@@ -78,52 +122,12 @@
time_since_fail++
if(stored_charge < active_power_usage * 1.5)
time_since_fail = 0
- //
- updateDialog()
-
-/obj/machinery/shield_capacitor/attackby(obj/item/W, mob/user)
- /*if(istype(W, /obj/item/weapon/wrench))
- if(active)
- user << "Turn off the field generator first."
- return
-
- else if(state == 0)
- state = 1
- playsound(src.loc, 'Ratchet.ogg', 75, 1)
- user << "You secure the external reinforcing bolts to the floor."
- src.anchored = 1
- return
-
- else if(state == 1)
- state = 0
- playsound(src.loc, 'Ratchet.ogg', 75, 1)
- user << "You undo the external reinforcing bolts."
- src.anchored = 0
- return*/
-
- if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
- if (src.allowed(user))
- src.locked = !src.locked
- user << "Controls are now [src.locked ? "locked." : "unlocked."]"
- else
- user << "\red Access denied."
-
- else if(istype(W, /obj/item/weapon/wrench))
- src.anchored = !src.anchored
- src.visible_message("\blue \icon[src] [src] has been [anchored ? "bolted to the floor" : "unbolted from the floor"] by [user].")
-
- else
- src.add_fingerprint(user)
- user << "\red You hit the [src.name] with your [W.name]!"
- for(var/mob/M in viewers(src))
- if(M == user) continue
- M.show_message("\red The [src.name] has been hit with the [W.name] by [user.name]!")
/obj/machinery/shield_capacitor/Topic(href, href_list[])
..()
if( href_list["close"] )
usr << browse(null, "window=shield_capacitor")
- usr.machine = null
+ usr.unset_machine()
return
if( href_list["toggle"] )
active = !active
@@ -140,20 +144,28 @@
//
updateDialog()
-/obj/machinery/shield_capacitor/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=shield_capacitor")
- return
- var/t = "Shield Capacitor Control Console
"
- t += "[target_generator ? "Shield generator connected." : "Unable to locate shield generator!"]
"
- t += "This capacitor is: [active ? "Online" : "Offline" ] [active ? "\[Deactivate\]" : "\[Activate\]"]
"
- t += "[time_since_fail > 2 ? "Charging stable." : "Warning, low charge!"]
"
- t += "Capacitor charge: [stored_charge] Watts ([100 * stored_charge/max_charge]%)
"
- t += "Capacitor charge rate (approx): \[min\] \[--\] \[-\][charge_rate] Watts/sec \[+\] \[++\] \[max\]
"
- t += "
"
- t += "Close
"
+/obj/machinery/shield_capacitor/power_change()
+ if(stat & BROKEN)
+ icon_state = "broke"
+ else
+ if( powered() )
+ if (src.active)
+ icon_state = "capacitor"
+ else
+ icon_state = "capacitor"
+ stat &= ~NOPOWER
+ else
+ spawn(rand(0, 15))
+ src.icon_state = "capacitor"
+ stat |= NOPOWER
- user << browse(t, "window=shield_capacitor;size=500x800")
- user.machine = src
+/obj/machinery/shield_capacitor/verb/rotate()
+ set name = "Rotate capacitor clockwise"
+ set category = "Object"
+ set src in oview(1)
+
+ if (src.anchored)
+ usr << "It is fastened to the floor!"
+ return
+ src.dir = turn(src.dir, 270)
+ return
diff --git a/code/WorkInProgress/Cael_Aislinn/ShieldGen/shield_gen.dm b/code/WorkInProgress/Cael_Aislinn/ShieldGen/shield_gen.dm
index c87fb4aab9..1b0512dfb6 100644
--- a/code/WorkInProgress/Cael_Aislinn/ShieldGen/shield_gen.dm
+++ b/code/WorkInProgress/Cael_Aislinn/ShieldGen/shield_gen.dm
@@ -25,7 +25,6 @@
var/max_field_strength = 10
var/time_since_fail = 100
var/energy_conversion_rate = 0.01 //how many renwicks per watt?
- var/flicker_shield_glitch = 1 //shield is slightly faulty and flickers - don't think this is working as intended
//
use_power = 1 //0 use nothing
//1 use idle power
@@ -38,14 +37,191 @@
for(var/obj/machinery/shield_capacitor/possible_cap in range(1, src))
if(get_dir(possible_cap, src) == possible_cap.dir)
owned_capacitor = possible_cap
- possible_cap.target_generator = src
break
field = new/list()
..()
-//copied from a copypaste. DRY, right?
+/obj/machinery/shield_gen/attackby(obj/item/W, mob/user)
+ if(istype(W, /obj/item/weapon/card/id))
+ var/obj/item/weapon/card/id/C = W
+ if(access_captain in C.access || access_security in C.access || access_engine in C.access)
+ src.locked = !src.locked
+ user << "Controls are now [src.locked ? "locked." : "unlocked."]"
+ updateDialog()
+ else
+ user << "\red Access denied."
+ else if(istype(W, /obj/item/weapon/card/emag))
+ if(prob(75))
+ src.locked = !src.locked
+ user << "Controls are now [src.locked ? "locked." : "unlocked."]"
+ updateDialog()
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(5, 1, src)
+ s.start()
+
+ else if(istype(W, /obj/item/weapon/wrench))
+ src.anchored = !src.anchored
+ src.visible_message("\blue \icon[src] [src] has been [anchored?"bolted to the floor":"unbolted from the floor"] by [user].")
+
+ spawn(0)
+ for(var/obj/machinery/shield_gen/gen in range(1, src))
+ if(get_dir(src, gen) == src.dir)
+ if(!src.anchored && gen.owned_capacitor == src)
+ gen.owned_capacitor = null
+ break
+ else if(src.anchored && !gen.owned_capacitor)
+ gen.owned_capacitor = src
+ break
+ gen.updateDialog()
+ updateDialog()
+ else
+ ..()
+
+/obj/machinery/shield_gen/attack_paw(user as mob)
+ return src.attack_hand(user)
+
+/obj/machinery/shield_gen/attack_ai(user as mob)
+ return src.attack_hand(user)
+
+/obj/machinery/shield_gen/attack_hand(mob/user)
+ if(stat & (NOPOWER|BROKEN))
+ return
+ interact(user)
+
+/obj/machinery/shield_gen/interact(mob/user)
+ if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) )
+ if (!istype(user, /mob/living/silicon))
+ user.unset_machine()
+ user << browse(null, "window=shield_generator")
+ return
+ var/t = "Shield Generator Control Console
"
+ if(locked)
+ t += "Swipe your ID card to begin."
+ else
+ t += "[owned_capacitor ? "Charge capacitor connected." : "Unable to locate charge capacitor!"]
"
+ t += "This generator is: [active ? "Online" : "Offline" ] [active ? "\[Deactivate\]" : "\[Activate\]"]
"
+ t += "[time_since_fail > 2 ? "Field is stable." : "Warning, field is unstable!"]
"
+ t += "Coverage radius (restart required): \
+ -- \
+ - \
+ [field_radius * 2]m \
+ + \
+ ++
"
+ t += "Overall field strength: [average_field_strength] Renwicks ([max_field_strength ? 100 * average_field_strength / max_field_strength : "NA"]%)
"
+ t += "Charge rate: -- \
+ - \
+ [strengthen_rate] Renwicks/sec \
+ + \
+ ++
"
+ t += "Upkeep energy: [field.len * average_field_strength / energy_conversion_rate] Watts/sec
"
+ t += "Additional energy required to charge: [field.len * strengthen_rate / energy_conversion_rate] Watts/sec
"
+ t += "Maximum field strength: \
+ \[min\] \
+ -- \
+ - \
+ [max_field_strength] Renwicks \
+ + \
+ ++ \
+ \[max\]
"
+ t += "
"
+ t += "Refresh "
+ t += "Close
"
+ user << browse(t, "window=shield_generator;size=500x800")
+ user.set_machine(src)
+
+/obj/machinery/shield_gen/process()
+
+ if(active && field.len)
+ var/stored_renwicks = 0
+ var/target_field_strength = min(strengthen_rate + max(average_field_strength, 0), max_field_strength)
+ if(owned_capacitor)
+ var/required_energy = field.len * target_field_strength / energy_conversion_rate
+ var/assumed_charge = min(owned_capacitor.stored_charge, required_energy)
+ stored_renwicks = assumed_charge * energy_conversion_rate
+ owned_capacitor.stored_charge -= assumed_charge
+
+ time_since_fail++
+
+ average_field_strength = 0
+ target_field_strength = stored_renwicks / field.len
+
+ for(var/obj/effect/energy_field/E in field)
+ if(stored_renwicks)
+ var/strength_change = target_field_strength - E.strength
+ if(strength_change > stored_renwicks)
+ strength_change = stored_renwicks
+ if(E.strength >= 1)
+ E.Strengthen(strength_change)
+ else if(E.strength < 0)
+ E.strength = 0
+ E.Strengthen(0.1)
+
+ stored_renwicks -= strength_change
+
+ average_field_strength += E.strength
+ else
+ E.Strengthen(-E.strength)
+
+ average_field_strength /= field.len
+ if(average_field_strength < 0)
+ time_since_fail = 0
+ else
+ average_field_strength = 0
+
+/obj/machinery/shield_gen/Topic(href, href_list[])
+ ..()
+ if( href_list["close"] )
+ usr << browse(null, "window=shield_generator")
+ usr.unset_machine()
+ return
+ else if( href_list["toggle"] )
+ toggle()
+ else if( href_list["change_radius"] )
+ field_radius += text2num(href_list["change_radius"])
+ if(field_radius > 200)
+ field_radius = 200
+ else if(field_radius < 0)
+ field_radius = 0
+ else if( href_list["strengthen_rate"] )
+ strengthen_rate += text2num(href_list["strengthen_rate"])
+ if(strengthen_rate > 0.2)
+ strengthen_rate = 0.2
+ else if(strengthen_rate < 0)
+ strengthen_rate = 0
+ else if( href_list["max_field_strength"] )
+ max_field_strength += text2num(href_list["max_field_strength"])
+ if(max_field_strength > 1000)
+ max_field_strength = 1000
+ else if(max_field_strength < 0)
+ max_field_strength = 0
+ //
+ updateDialog()
+
+/obj/machinery/shield_gen/power_change()
+ if(stat & BROKEN)
+ icon_state = "broke"
+ else
+ if( powered() )
+ if (src.active)
+ icon_state = "generator1"
+ else
+ icon_state = "generator0"
+ stat &= ~NOPOWER
+ else
+ spawn(rand(0, 15))
+ src.icon_state = "generator0"
+ stat |= NOPOWER
+ if (src.active)
+ toggle()
+
+/obj/machinery/shield_gen/ex_act(var/severity)
+
+ if(active)
+ toggle()
+ return ..()
+
+/*
/obj/machinery/shield_gen/proc/check_powered()
- /*
check_powered = 1
if(!anchored)
powered = 0
@@ -76,122 +252,14 @@
PN.newload += shieldload //uses powernet power.
*/
-/obj/machinery/shield_gen/process()
-
- if(active && field.len)
- var/stored_renwicks = 0
- var/target_field_strength = min(average_field_strength + strengthen_rate, max_field_strength)
- if(owned_capacitor)
- var/assumed_charge = min(owned_capacitor.stored_charge, (target_field_strength / energy_conversion_rate) * field.len)
- stored_renwicks = assumed_charge * energy_conversion_rate
- owned_capacitor.stored_charge -= assumed_charge
-
- time_since_fail++
-
- average_field_strength = 0
- target_field_strength = stored_renwicks / field.len
-
- if(!flicker_shield_glitch)
- for(var/obj/effect/energy_field/E in field)
- //check to see if the shield is strengthening or failing
- if(E.strength > target_field_strength)
- E.strength = target_field_strength
- else if(E.strength + strengthen_rate > target_field_strength)
- E.strength = target_field_strength
- else
- E.strength += strengthen_rate
-
- if(stored_renwicks - E.strength < 0)
- E.strength = stored_renwicks
- stored_renwicks -= E.strength
-
- average_field_strength += E.strength
- //check if the current shield tile has enough energy to maintain itself
- if(E.strength >= 1)
- E.density = 1
- E.invisibility = 0
- else
- E.density = 0
- E.invisibility = 2
- else
- //the flicker shield glitch is an intersting quirk in 'older' and/or faulty shielding models
- //basically, it strengthens the shields continuously until it can no longer sustain them... then it drops out for a few seconds and starts again
- //this makes the shield 'flicker' every now and then until it stabilises
- //when this glitch is fixed, shields will only be charged as much as is sustainable
- for(var/obj/effect/energy_field/E in field)
- //check to see if the shield is strengthening or failing
- if(E.strength < target_field_strength)
- E.strength += strengthen_rate
-
- if(stored_renwicks - E.strength < 0)
- E.strength = stored_renwicks
- stored_renwicks -= E.strength
-
- average_field_strength += E.strength
- //check if the current shield tile has enough energy to maintain itself
- if(E.strength >= 1)
- E.density = 1
- E.invisibility = 0
- else
- E.density = 0
- E.invisibility = 2
-
- //add any leftover charge back to the capacitor
- if(owned_capacitor && stored_renwicks >= 0)
- owned_capacitor.stored_charge += stored_renwicks / energy_conversion_rate
-
- average_field_strength /= field.len
- if(average_field_strength < 0)
- time_since_fail = 0
- else
- average_field_strength = 0
- //
- updateDialog()
-
-/obj/machinery/shield_gen/attackby(obj/item/W, mob/user)
-
- if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
- if (src.allowed(user))
- src.locked = !src.locked
- user << "Controls are now [src.locked ? "locked." : "unlocked."]"
- else
- user << "\red Access denied."
-
- else if(istype(W, /obj/item/weapon/wrench))
- src.anchored = !src.anchored
- src.visible_message("\blue \icon[src] [src] has been [anchored?"bolted to the floor":"unbolted from the floor"] by [user].")
-
- else
- src.add_fingerprint(user)
- user << "\red You hit the [src.name] with your [W.name]!"
- for(var/mob/M in viewers(src))
- if(M == user) continue
- M.show_message("\red The [src.name] has been hit with the [W.name] by [user.name]!")
-
-/obj/machinery/shield_gen/power_change()
- if(stat & BROKEN)
- icon_state = "broke"
- else
- if( powered() )
- if (src.active)
- icon_state = "generator1"
- else
- icon_state = "generator0"
- stat &= ~NOPOWER
- else
- spawn(rand(0, 15))
- src.icon_state = "generator0"
- stat |= NOPOWER
- if (src.active)
- toggle()
-
/obj/machinery/shield_gen/proc/toggle()
active = !active
power_change()
if(active)
var/list/covered_turfs = get_shielded_turfs()
- if(get_turf(src) in covered_turfs)
- covered_turfs.Remove(get_turf(src))
+ var/turf/T = get_turf(src)
+ if(T in covered_turfs)
+ covered_turfs.Remove(T)
for(var/turf/O in covered_turfs)
var/obj/effect/energy_field/E = new(O)
field.Add(E)
@@ -207,60 +275,10 @@
for(var/mob/M in view(5,src))
M << "\icon[src] You hear heavy droning fade out."
-/obj/machinery/shield_gen/Topic(href, href_list[])
- ..()
- if( href_list["close"] )
- usr << browse(null, "window=shield_generator")
- usr.machine = null
- return
- else if( href_list["toggle"] )
- toggle()
- else if( href_list["change_radius"] )
- field_radius += text2num(href_list["change_radius"])
- if(field_radius > 200)
- field_radius = 200
- else if(field_radius < 0)
- field_radius = 0
- else if( href_list["strengthen_rate"] )
- strengthen_rate += text2num(href_list["strengthen_rate"])
- if(strengthen_rate > 0.2)
- strengthen_rate = 0.2
- else if(strengthen_rate < 0)
- strengthen_rate = 0
- else if( href_list["max_field_strength"] )
- max_field_strength += text2num(href_list["max_field_strength"])
- if(max_field_strength > 1000)
- max_field_strength = 1000
- else if(max_field_strength < 0)
- max_field_strength = 0
- //
- updateDialog()
-
-/obj/machinery/shield_gen/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=shield_generator")
- return
- var/t = "Shield Generator Control Console
"
- t += "[owned_capacitor ? "Charge capacitor connected." : "Unable to locate charge capacitor!"]
"
- t += "This generator is: [active ? "Online" : "Offline" ] [active ? "\[Deactivate\]" : "\[Activate\]"]
"
- t += "[time_since_fail > 2 ? "Field is stable." : "Warning, field is unstable!"]
"
- t += "Coverage radius (generator will need a restart to take effect): -- - [field_radius * 2]m + ++
"
- t += "Overall field strength: [average_field_strength] Renwicks ([100 * average_field_strength / max_field_strength]%)
"
- t += "Charge consumption: [( (min(average_field_strength + strengthen_rate, max_field_strength)) / energy_conversion_rate) * field.len] Watts/sec
"
- t += "Field charge rate (approx): -- -[strengthen_rate] Renwicks/sec + ++
"
- t += "Maximum field strength (avg across field): \[min\] -- -[max_field_strength] Renwicks + ++ \[max\]
"
- t += "
"
- t += "Close
"
- user << browse(t, "window=shield_generator;size=500x800")
- user.machine = src
-
+//grab the border tiles in a circle around this machine
/obj/machinery/shield_gen/proc/get_shielded_turfs()
- return list()
-
-/obj/machinery/shield_gen/ex_act(var/severity)
-
- if(active)
- toggle()
- return ..()
+ var/list/out = list()
+ for(var/turf/T in range(field_radius, src))
+ if(get_dist(src,T) == field_radius)
+ out.Add(T)
+ return out
diff --git a/code/WorkInProgress/Cael_Aislinn/ShieldGen/external_shield_gen.dm b/code/WorkInProgress/Cael_Aislinn/ShieldGen/shield_gen_external.dm
similarity index 65%
rename from code/WorkInProgress/Cael_Aislinn/ShieldGen/external_shield_gen.dm
rename to code/WorkInProgress/Cael_Aislinn/ShieldGen/shield_gen_external.dm
index 08352989eb..f239dc9dac 100644
--- a/code/WorkInProgress/Cael_Aislinn/ShieldGen/external_shield_gen.dm
+++ b/code/WorkInProgress/Cael_Aislinn/ShieldGen/shield_gen_external.dm
@@ -21,12 +21,18 @@
for(var/turf/simulated/G in orange(1, O))
add_this_turf = 1
break
- for(var/obj/structure/S in orange(1, O))
- add_this_turf = 1
- break
- for(var/obj/structure/S in O)
- add_this_turf = 0
- break
+
+ //uncomment this for structures (but not lattices) to be surrounded by shield as well
+ /*if(!add_this_turf)
+ for(var/obj/structure/S in orange(1, O))
+ if(!istype(S, /obj/structure/lattice))
+ add_this_turf = 1
+ break
+ if(add_this_turf)
+ for(var/obj/structure/S in O)
+ if(!istype(S, /obj/structure/lattice))
+ add_this_turf = 0
+ break*/
if(add_this_turf && !(O in open) && !(O in closed))
open += O