Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit265
This commit is contained in:
@@ -118,7 +118,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
use_power = IDLE_POWER_USE
|
||||
interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OFFLINE
|
||||
var/on = TRUE
|
||||
var/breaker = 1
|
||||
var/breaker = TRUE
|
||||
var/list/parts = list()
|
||||
var/obj/middle = null
|
||||
var/charging_state = POWER_IDLE
|
||||
@@ -167,7 +167,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
M.set_broken()
|
||||
middle.cut_overlays()
|
||||
charge_count = 0
|
||||
breaker = 0
|
||||
breaker = FALSE
|
||||
set_power()
|
||||
set_state(0)
|
||||
investigate_log("has broken down.", INVESTIGATE_GRAVITY)
|
||||
@@ -177,7 +177,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
for(var/obj/machinery/gravity_generator/M in parts)
|
||||
if(M.stat & BROKEN)
|
||||
M.set_fix()
|
||||
broken_state = 0
|
||||
broken_state = FALSE
|
||||
update_icon()
|
||||
set_power()
|
||||
|
||||
@@ -274,11 +274,11 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
|
||||
// Set the charging state based on power/breaker.
|
||||
/obj/machinery/gravity_generator/main/proc/set_power()
|
||||
var/new_state = 0
|
||||
var/new_state = FALSE
|
||||
if(stat & (NOPOWER|BROKEN) || !breaker)
|
||||
new_state = 0
|
||||
new_state = FALSE
|
||||
else if(breaker)
|
||||
new_state = 1
|
||||
new_state = TRUE
|
||||
|
||||
charging_state = new_state ? POWER_UP : POWER_DOWN // Startup sequence animation.
|
||||
investigate_log("is now [charging_state == POWER_UP ? "charging" : "discharging"].", INVESTIGATE_GRAVITY)
|
||||
@@ -293,13 +293,13 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
var/alert = FALSE
|
||||
if(SSticker.IsRoundInProgress())
|
||||
if(on) // If we turned on and the game is live.
|
||||
if(gravity_in_level() == 0)
|
||||
alert = 1
|
||||
if(gravity_in_level() == FALSE)
|
||||
alert = TRUE
|
||||
investigate_log("was brought online and is now producing gravity for this level.", INVESTIGATE_GRAVITY)
|
||||
message_admins("The gravity generator was brought online [ADMIN_VERBOSEJMP(src)]")
|
||||
else
|
||||
if(gravity_in_level() == 1)
|
||||
alert = 1
|
||||
if(gravity_in_level() == TRUE)
|
||||
alert = TRUE
|
||||
investigate_log("was brought offline and there is now no gravity for this level.", INVESTIGATE_GRAVITY)
|
||||
message_admins("The gravity generator was brought offline with no backup generator. [ADMIN_VERBOSEJMP(src)]")
|
||||
|
||||
@@ -362,7 +362,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
var/sound/alert_sound = sound('sound/effects/alert.ogg')
|
||||
for(var/i in GLOB.mob_list)
|
||||
var/mob/M = i
|
||||
if(M.z != z)
|
||||
if(M.z != z && !(SSmapping.level_trait(z, ZTRAITS_STATION) && SSmapping.level_trait(M.z, ZTRAITS_STATION)))
|
||||
continue
|
||||
M.update_gravity(M.mob_has_gravity())
|
||||
if(M.client)
|
||||
@@ -372,20 +372,28 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
/obj/machinery/gravity_generator/main/proc/gravity_in_level()
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T)
|
||||
return 0
|
||||
return FALSE
|
||||
if(GLOB.gravity_generators["[T.z]"])
|
||||
return length(GLOB.gravity_generators["[T.z]"])
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/gravity_generator/main/proc/update_list()
|
||||
var/turf/T = get_turf(src.loc)
|
||||
if(T)
|
||||
if(!GLOB.gravity_generators["[T.z]"])
|
||||
GLOB.gravity_generators["[T.z]"] = list()
|
||||
if(on)
|
||||
GLOB.gravity_generators["[T.z]"] |= src
|
||||
var/list/z_list = list()
|
||||
// Multi-Z, station gravity generator generates gravity on all ZTRAIT_STATION z-levels.
|
||||
if(SSmapping.level_trait(T.z, ZTRAIT_STATION))
|
||||
for(var/z in SSmapping.levels_by_trait(ZTRAIT_STATION))
|
||||
z_list += z
|
||||
else
|
||||
GLOB.gravity_generators["[T.z]"] -= src
|
||||
z_list += T.z
|
||||
for(var/z in z_list)
|
||||
if(!GLOB.gravity_generators["[z]"])
|
||||
GLOB.gravity_generators["[z]"] = list()
|
||||
if(on)
|
||||
GLOB.gravity_generators["[z]"] |= src
|
||||
else
|
||||
GLOB.gravity_generators["[z]"] -= src
|
||||
|
||||
/obj/machinery/gravity_generator/main/proc/change_setting(value)
|
||||
if(value != setting)
|
||||
|
||||
@@ -177,8 +177,6 @@
|
||||
fixture_type = "bulb"
|
||||
sheets_refunded = 1
|
||||
|
||||
|
||||
|
||||
// the standard tube light fixture
|
||||
/obj/machinery/light
|
||||
name = "light fixture"
|
||||
@@ -197,8 +195,8 @@
|
||||
var/on_gs = FALSE
|
||||
var/static_power_used = 0
|
||||
var/brightness = 8 // luminosity when on, also used in power calculation
|
||||
var/bulb_power = 1 // basically the alpha of the emitted light source
|
||||
var/bulb_colour = "#FFFFFF" // befault colour of the light.
|
||||
var/bulb_power = 0.75 // basically the alpha of the emitted light source
|
||||
var/bulb_colour = "#FFEEDD" // befault colour of the light.
|
||||
var/status = LIGHT_OK // LIGHT_OK, _EMPTY, _BURNED or _BROKEN
|
||||
var/flickering = FALSE
|
||||
var/light_type = /obj/item/light/tube // the type of light item
|
||||
@@ -235,6 +233,7 @@
|
||||
base_state = "bulb"
|
||||
fitting = "bulb"
|
||||
brightness = 4
|
||||
bulb_colour = "#FFDDBB"
|
||||
desc = "A small lighting fixture."
|
||||
light_type = /obj/item/light/bulb
|
||||
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
/obj/machinery/power/deck_relay //This bridges powernets
|
||||
name = "Multi-deck power adapter"
|
||||
desc = "A huge bundle of double insulated cabling which seems to run up into the ceiling."
|
||||
icon = 'icons/obj/power.dmi'
|
||||
icon_state = "cablerelay-off"
|
||||
var/obj/machinery/power/deck_relay/below ///The relay that's below us (for bridging powernets)
|
||||
var/obj/machinery/power/deck_relay/above ///The relay that's above us (for bridging powernets)
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
|
||||
/obj/machinery/power/deck_relay/attackby(obj/item/I,mob/user)
|
||||
if(default_unfasten_wrench(user, I))
|
||||
return FALSE
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/power/deck_relay/process()
|
||||
if(!anchored)
|
||||
icon_state = "cablerelay-off"
|
||||
if(above) //Lose connections
|
||||
above.below = null
|
||||
if(below)
|
||||
below.above = null
|
||||
return
|
||||
refresh() //Sometimes the powernets get lost, so we need to keep checking.
|
||||
if(powernet && (powernet.avail <= 0)) // is it powered?
|
||||
icon_state = "cablerelay-off"
|
||||
else
|
||||
icon_state = "cablerelay-on"
|
||||
if(!below || QDELETED(below) || !above || QDELETED(above))
|
||||
icon_state = "cablerelay-off"
|
||||
find_relays()
|
||||
|
||||
///Allows you to scan the relay with a multitool to see stats.
|
||||
/obj/machinery/power/deck_relay/multitool_act(mob/user, obj/item/I)
|
||||
if(powernet && (powernet.avail > 0)) // is it powered?
|
||||
to_chat(user, "<span class='danger'>Total power: [DisplayPower(powernet.avail)]\nLoad: [DisplayPower(powernet.load)]\nExcess power: [DisplayPower(surplus())]</span>")
|
||||
if(!powernet || below.powernet != powernet)
|
||||
icon_state = "cablerelay-off"
|
||||
to_chat(user, "<span class='danger'>Powernet connection lost. Attempting to re-establish. Ensure the relays below this one are connected too.</span>")
|
||||
find_relays()
|
||||
addtimer(CALLBACK(src, .proc/refresh), 20) //Wait a bit so we can find the one below, then get powering
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/power/deck_relay/Initialize()
|
||||
. = ..()
|
||||
addtimer(CALLBACK(src, .proc/find_relays), 30)
|
||||
addtimer(CALLBACK(src, .proc/refresh), 50) //Wait a bit so we can find the one below, then get powering
|
||||
|
||||
///Handles re-acquiring + merging powernets found by find_relays()
|
||||
/obj/machinery/power/deck_relay/proc/refresh()
|
||||
if(above)
|
||||
above.merge(src)
|
||||
if(below)
|
||||
below.merge(src)
|
||||
|
||||
/obj/machinery/power/deck_relay/proc/merge(var/obj/machinery/power/deck_relay/DR)
|
||||
if(!DR)
|
||||
return
|
||||
var/turf/merge_from = get_turf(DR)
|
||||
var/turf/merge_to = get_turf(src)
|
||||
var/obj/structure/cable/C = merge_from.get_cable_node()
|
||||
var/obj/structure/cable/XR = merge_to.get_cable_node()
|
||||
if(C && XR)
|
||||
merge_powernets(XR.powernet,C.powernet)//Bridge the powernets.
|
||||
|
||||
///Locates relays that are above and below this object
|
||||
/obj/machinery/power/deck_relay/proc/find_relays()
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T || !istype(T))
|
||||
return FALSE
|
||||
below = null //in case we're re-establishing
|
||||
var/obj/structure/cable/C = T.get_cable_node() //check if we have a node cable on the machine turf, the first found is picked
|
||||
if(C && C.powernet)
|
||||
C.powernet.add_machine(src) //Nice we're in.
|
||||
powernet = C.powernet
|
||||
below = locate(/obj/machinery/power/deck_relay) in(SSmapping.get_turf_below(T))
|
||||
above = locate(/obj/machinery/power/deck_relay) in(SSmapping.get_turf_above(T))
|
||||
if(below || above)
|
||||
icon_state = "cablerelay-on"
|
||||
return TRUE
|
||||
@@ -87,10 +87,9 @@
|
||||
var/mob/living/carbon/C = user
|
||||
log_game("[key_name(C)] has been disintegrated by attempting to telekenetically grab a singularity.</span>")
|
||||
C.visible_message("<span class='danger'>[C]'s head begins to collapse in on itself!</span>", "<span class='userdanger'>Your head feels like it's collapsing in on itself! This was really not a good idea!</span>", "<span class='italics'>You hear something crack and explode in gore.</span>")
|
||||
var/turf/T = get_turf(C)
|
||||
for(var/i in 1 to 3)
|
||||
C.apply_damage(30, BRUTE, BODY_ZONE_HEAD)
|
||||
new /obj/effect/gibspawner/generic(T)
|
||||
C.spawn_gibs()
|
||||
sleep(1)
|
||||
var/obj/item/bodypart/head/rip_u = C.get_bodypart(BODY_ZONE_HEAD)
|
||||
rip_u.dismember(BURN) //nice try jedi
|
||||
|
||||
@@ -313,7 +313,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
playsound(T, 'sound/effects/supermatter.ogg', 50, 1)
|
||||
T.visible_message("<span class='danger'>[T] smacks into [src] and rapidly flashes to ash.</span>",\
|
||||
"<span class='italics'>You hear a loud crack as you are washed with a wave of heat.</span>")
|
||||
T.CalculateAdjacentTurfs()
|
||||
CALCULATE_ADJACENT_TURFS(T)
|
||||
|
||||
/obj/machinery/power/supermatter_crystal/process_atmos()
|
||||
var/turf/T = loc
|
||||
@@ -650,6 +650,11 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
|
||||
Consume(AM)
|
||||
|
||||
/obj/machinery/power/supermatter_crystal/intercept_zImpact(atom/movable/AM, levels)
|
||||
. = ..()
|
||||
Bumped(AM)
|
||||
. |= FALL_STOP_INTERCEPTING | FALL_INTERCEPTED
|
||||
|
||||
/obj/machinery/power/supermatter_crystal/proc/Consume(atom/movable/AM)
|
||||
if(isliving(AM))
|
||||
var/mob/living/user = AM
|
||||
|
||||
Reference in New Issue
Block a user