Big Fat Emission PR (#18124)

* amogus

* Revert "amogus"

This reverts commit ebaa99c77b.

* Part 1

* rest of the airlocks

holy shit that took a long time

* part 2

* part 3

finale

* conflict resolution

* fixes warnings

* fixes paneloen airlock emissives

* adds back changes from #18145

* #18085 sprites

* SteelSlayer Review

readded process in status_display, idk why I removed it, it broke some functionality

* future proofing firedoors

Talked with the contributor who added emissive appearances to the codebase. As of now they wont block them unless they spawn as closed, but with future PR merges this code will work.

* solar panel PR conflict resolve

* pain

* small fix

* farie82 suggestions

Co-authored-by: Farie82 <farie82@users.noreply.github.com>

* farie82 suggestions part 2

* farie82 suggestions part 3

* finalle

pog champ ers 2000

* farie82 suggestions the sequel

Co-authored-by: Farie82 <farie82@users.noreply.github.com>

* SteelSlayer Suggestions

Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>

Co-authored-by: Farie82 <farie82@users.noreply.github.com>
Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>
This commit is contained in:
Kugamo
2022-07-23 11:31:20 -05:00
committed by GitHub
parent ad7d3b443f
commit 38f335e8b9
58 changed files with 622 additions and 199 deletions
@@ -392,6 +392,15 @@
if(ATMOS_ALARM_DANGER)
icon_state = "alarm1"
/obj/machinery/alarm/update_overlays()
. = ..()
underlays.Cut()
if(stat & NOPOWER || buildstage != AIR_ALARM_READY || wiresexposed || shorted)
return
underlays += emissive_appearance(icon, "alarm_lightmask")
/obj/machinery/alarm/proc/register_env_machine(m_id, device_type)
var/new_name
if(device_type=="AVP")
@@ -994,7 +1003,7 @@
coil.use(5)
buildstage = 2
update_icon(UPDATE_ICON_STATE)
update_icon(UPDATE_ICON_STATE | UPDATE_OVERLAYS)
first_run()
return
if(0)
@@ -1039,7 +1048,7 @@
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
wiresexposed = !wiresexposed
update_icon(UPDATE_ICON_STATE)
update_icon(UPDATE_ICON_STATE | UPDATE_OVERLAYS)
if(wiresexposed)
SCREWDRIVER_OPEN_PANEL_MESSAGE
else
@@ -1072,13 +1081,15 @@
/obj/machinery/alarm/power_change()
if(powered(power_channel))
stat &= ~NOPOWER
set_light(1, LIGHTING_MINIMUM_POWER)
else
stat |= NOPOWER
update_icon(UPDATE_ICON_STATE)
set_light(0)
update_icon(UPDATE_ICON_STATE | UPDATE_OVERLAYS)
/obj/machinery/alarm/obj_break(damage_flag)
..()
update_icon(UPDATE_ICON_STATE)
update_icon(UPDATE_ICON_STATE | UPDATE_OVERLAYS)
/obj/machinery/alarm/deconstruct(disassembled = TRUE)
if(!(flags & NODECONSTRUCT))
@@ -1099,7 +1110,7 @@
/obj/machinery/alarm/proc/unshort_callback()
if(shorted)
shorted = FALSE
update_icon(UPDATE_ICON_STATE)
update_icon(UPDATE_ICON_STATE | UPDATE_OVERLAYS)
/obj/machinery/alarm/proc/enable_ai_control_callback()
if(aidisabled)
+26
View File
@@ -40,6 +40,32 @@ log transactions
. = ..()
machine_id = "[station_name()] RT #[GLOB.num_financial_terminals++]"
reconnect_database()
update_icon()
/obj/machinery/atm/update_icon_state()
. = ..()
if(stat & NOPOWER)
icon_state = "atm_off"
else
icon_state = "atm"
/obj/machinery/atm/update_overlays()
. = ..()
underlays.Cut()
if(stat & NOPOWER)
return
underlays += emissive_appearance(icon, "atm_lightmask")
/obj/machinery/atm/power_change()
..()
if(stat & NOPOWER)
set_light(0)
else
set_light(1, LIGHTING_MINIMUM_POWER)
update_icon()
/obj/machinery/atm/process()
if(stat & NOPOWER)
+1
View File
@@ -933,6 +933,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
if(istype(M, /obj/machinery/ai_status_display))
var/obj/machinery/ai_status_display/AISD = M
AISD.emotion = emote
AISD.update_icon()
//if Friend Computer, change ALL displays
else if(istype(M, /obj/machinery/status_display))
+13 -4
View File
@@ -102,6 +102,11 @@
/obj/machinery/newscaster/update_overlays()
. = ..()
underlays.Cut()
if(!(stat & NOPOWER))
underlays += emissive_appearance(icon, "newscaster_lightmask")
if(!GLOB.news_network.wanted_issue && alert) //wanted icon state, there can be no overlays on it as it's a priority message
. += "newscaster_alert"
var/hp_percent = obj_integrity * 100 / max_integrity
@@ -117,6 +122,10 @@
/obj/machinery/newscaster/power_change()
..()
if(stat & NOPOWER)
set_light(0)
else
set_light(1, LIGHTING_MINIMUM_POWER)
update_icon()
/obj/machinery/newscaster/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = TRUE, attack_dir)
@@ -422,6 +431,8 @@
return
GLOB.news_network.wanted_issue = null
set_temp("Wanted notice cleared.", update_now = TRUE)
for(var/obj/machinery/newscaster/NC as anything in GLOB.allNewscasters)
NC.update_icon()
return FALSE
if("toggle_mute")
is_silent = !is_silent
@@ -533,8 +544,7 @@
SSblackbox.record_feedback("amount", "newscaster_stories", 1)
var/announcement = FC.get_announce_text(title)
// Announce it
for(var/nc in GLOB.allNewscasters)
var/obj/machinery/newscaster/NC = nc
for(var/obj/machinery/newscaster/NC as anything in GLOB.allNewscasters)
NC.alert_news(announcement)
// Redirect and eject photo
LAZYINITLIST(last_views[user_name])
@@ -567,8 +577,7 @@
WN.admin_locked = usr.can_admin_interact() && admin_locked
WN.publish_time = world.time
// Announce it and eject photo
for(var/nc in GLOB.allNewscasters)
var/obj/machinery/newscaster/NC = nc
for(var/obj/machinery/newscaster/NC as anything in GLOB.allNewscasters)
NC.alert_news(wanted_notice = TRUE)
eject_photo(usr)
set_temp("Wanted notice distributed.", "good")
+23 -6
View File
@@ -247,6 +247,8 @@
make_terminal()
set_light(1, LIGHTING_MINIMUM_POWER)
addtimer(CALLBACK(src, .proc/update), 5)
/obj/machinery/power/apc/examine(mob/user)
@@ -330,7 +332,7 @@
if(force_update || update & 1) // Updating the icon state
..(UPDATE_ICON_STATE)
if(!(update_state & UPSTATE_ALLGOOD))
if(managed_overlays)
..(UPDATE_OVERLAYS)
@@ -360,16 +362,31 @@
/obj/machinery/power/apc/update_overlays()
. = ..()
underlays.Cut()
if(update_state & UPSTATE_BLUESCREEN)
underlays += emissive_appearance(icon, "emit_apcemag")
return
if(!(update_state & UPSTATE_ALLGOOD))
return
if(!(stat & (BROKEN|MAINT)) && update_state & UPSTATE_ALLGOOD)
. += status_overlays_lock[locked+1]
. += status_overlays_charging[charging+1]
var/image/statover_lock = status_overlays_lock[locked + 1]
var/image/statover_charg = status_overlays_charging[charging + 1]
. += statover_lock
. += statover_charg
underlays += emissive_appearance(icon, statover_lock.icon_state)
underlays += emissive_appearance(icon, statover_charg.icon_state)
if(operating)
. += status_overlays_equipment[equipment+1]
. += status_overlays_lighting[lighting+1]
. += status_overlays_environ[environ+1]
var/image/statover_equip = status_overlays_equipment[equipment + 1]
var/image/statover_light = status_overlays_lighting[lighting + 1]
var/image/statover_envir = status_overlays_environ[environ + 1]
. += statover_equip
. += statover_light
. += statover_envir
underlays += emissive_appearance(icon, statover_equip.icon_state)
underlays += emissive_appearance(icon, statover_light.icon_state)
underlays += emissive_appearance(icon, statover_envir.icon_state)
/obj/machinery/power/apc/proc/check_updates()
+15 -2
View File
@@ -282,7 +282,7 @@
/obj/machinery/light/update_icon_state()
switch(status) // set icon_states
if(LIGHT_OK)
if(emergency_mode)
if(emergency_mode || fire_mode)
icon_state = "[base_state]_emergency"
else
icon_state = "[base_state][on]"
@@ -296,6 +296,17 @@
icon_state = "[base_state]-broken"
on = FALSE
/obj/machinery/light/update_overlays()
. = ..()
underlays.Cut()
if(status != LIGHT_OK || !on || !turning_on)
return
if(nightshift_enabled || emergency_mode || fire_mode)
underlays += emissive_appearance(icon, "[base_state]_emergency_lightmask")
else
underlays += emissive_appearance(icon, "[base_state]_lightmask")
/**
* Updates the light's 'on' state and power consumption based on [/obj/machinery/light/var/on].
*
@@ -367,7 +378,6 @@
return // Nothing's changed here
switchcount++
update_icon()
if(trigger && (status == LIGHT_OK))
if(rigged)
log_admin("LOG: Rigged light explosion, last touched by [fingerprintslast].")
@@ -381,6 +391,7 @@
return
use_power = ACTIVE_POWER_USE
update_icon()
set_light(BR, PO, CO)
if(play_sound)
playsound(src, 'sound/machines/light_on.ogg', 60, TRUE)
@@ -572,9 +583,11 @@
return
if(fire_mode)
set_light(nightshift_light_range, nightshift_light_power, bulb_emergency_colour)
update_icon(UPDATE_ICON_STATE | UPDATE_OVERLAYS)
return
emergency_mode = TRUE
set_light(3, 1.7, bulb_emergency_colour)
update_icon(UPDATE_ICON_STATE | UPDATE_OVERLAYS)
RegisterSignal(current_area, COMSIG_AREA_POWER_CHANGE, .proc/update, override = TRUE)
/obj/machinery/light/proc/emergency_lights_off(area/current_area, obj/machinery/power/apc/current_apc)
+34 -12
View File
@@ -145,6 +145,7 @@
else if(mode==-1)
mode=0
to_chat(user, "You [mode ? "unfasten": "fasten"] the screws around the power connection.")
update()
/obj/machinery/disposal/welder_act(mob/user, obj/item/I)
if(mode != required_mode_to_deconstruct)
@@ -315,30 +316,47 @@
// update the icon & overlays to reflect mode & status
/obj/machinery/disposal/proc/update()
overlays.Cut()
if(stat & BROKEN)
icon_state = "disposal-broken"
mode = 0
flush = 0
update_icon()
/obj/machinery/disposal/update_icon_state()
. = ..()
if(stat & BROKEN)
icon_state = "disposal-broken"
return
// flush handle
if(flush)
overlays += image('icons/obj/pipes/disposal.dmi', "dispover-handle")
icon_state = initial(icon_state)
// only handle is shown if no power
if(stat & NOPOWER || mode == -1)
/obj/machinery/disposal/update_overlays()
. = ..()
underlays.Cut()
if(flush)
. += "dispover-handle"
if(stat & (NOPOWER|BROKEN) || mode == -1)
return
// check for items in disposal - occupied light
if(contents.len > 0)
overlays += image('icons/obj/pipes/disposal.dmi', "dispover-full")
. += "dispover-full"
underlays += emissive_appearance(icon, "dispover-full")
// charging and ready light
if(mode == 1)
overlays += image('icons/obj/pipes/disposal.dmi', "dispover-charge")
else if(mode == 2)
overlays += image('icons/obj/pipes/disposal.dmi', "dispover-ready")
switch(mode)
if(-1)
. += "dispover-unscrewed"
if(1)
. += "dispover-charge"
. += "dispover-panel"
underlays += emissive_appearance(icon, "dispover-charge")
if(2)
. += "dispover-ready"
underlays += emissive_appearance(icon, "dispover-ready")
// timed process
// charge the gas reservoir and perform flush if ready
@@ -436,6 +454,10 @@
/obj/machinery/disposal/power_change()
..() // do default setting/reset of stat NOPOWER bit
update() // update icon
if(stat & NOPOWER)
set_light(0)
else
set_light(1, LIGHTING_MINIMUM_POWER)
return
@@ -25,6 +25,22 @@
req_access = list(ACCESS_KEYCARD_AUTH)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
/obj/machinery/keycard_auth/update_icon_state()
. = ..()
if(event_triggered_by || event_source)
icon_state = "auth_on"
else
icon_state = "auth_off"
/obj/machinery/keycard_auth/update_overlays()
. = ..()
underlays.Cut()
if(event_triggered_by || event_source)
underlays += emissive_appearance(icon, "auth_lightmask")
/obj/machinery/keycard_auth/attack_ai(mob/user as mob)
to_chat(user, "<span class='warning'>The station AI is not to interact with these devices.</span>")
return
@@ -57,9 +73,9 @@
/obj/machinery/keycard_auth/power_change()
if(powered(ENVIRON))
stat &= ~NOPOWER
icon_state = "auth_off"
else
stat |= NOPOWER
update_icon()
/obj/machinery/keycard_auth/attack_ghost(mob/user)
ui_interact(user)
@@ -115,12 +131,14 @@
swiping = FALSE
confirmed = FALSE
event_source = null
icon_state = "auth_off"
event_triggered_by = null
event_confirmed_by = null
set_light(0)
update_icon()
/obj/machinery/keycard_auth/proc/broadcast_request()
icon_state = "auth_on"
update_icon()
set_light(1, LIGHTING_MINIMUM_POWER)
for(var/obj/machinery/keycard_auth/KA in GLOB.machines)
if(KA == src) continue
KA.reset()
@@ -138,19 +156,24 @@
/obj/machinery/keycard_auth/proc/receive_request(obj/machinery/keycard_auth/source)
if(stat & (BROKEN|NOPOWER))
return
set_light(1, LIGHTING_MINIMUM_POWER)
event_source = source
busy = TRUE
active = TRUE
SStgui.update_uis(src)
icon_state = "auth_on"
update_icon()
sleep(confirm_delay)
event_source = null
icon_state = "auth_off"
update_icon()
active = FALSE
busy = FALSE
set_light(0)
/obj/machinery/keycard_auth/proc/trigger_event()
switch(event)
if("Red Alert")
@@ -123,6 +123,7 @@ GLOBAL_DATUM_INIT(security_announcement_down, /datum/announcement/priority/secur
for(var/obj/machinery/firealarm/FA in GLOB.machines)
if(is_station_contact(FA.z))
FA.update_icon()
FA.update_fire_light()
/proc/num2seclevel(num)
switch(num)