Merge pull request #14971 from Arturlang/nanite_updates
Ports update appearance
This commit is contained in:
@@ -61,7 +61,7 @@
|
||||
active_mind_control = TRUE
|
||||
message_admins("[key_name(user)] sent an abductor mind control message to [key_name(owner)]: [command]")
|
||||
update_gland_hud()
|
||||
var/obj/screen/alert/mind_control/mind_alert = owner.throw_alert("mind_control", /obj/screen/alert/mind_control)
|
||||
var/atom/movable/screen/alert/mind_control/mind_alert = owner.throw_alert("mind_control", /atom/movable/screen/alert/mind_control)
|
||||
mind_alert.command = command
|
||||
addtimer(CALLBACK(src, .proc/clear_mind_control), mind_control_duration)
|
||||
return TRUE
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
message_admins("[key_name(user)] broadcasted an abductor mind control message from [key_name(owner)] to [key_name(H)]: [command]")
|
||||
|
||||
var/obj/screen/alert/mind_control/mind_alert = H.throw_alert("mind_control", /obj/screen/alert/mind_control)
|
||||
var/atom/movable/screen/alert/mind_control/mind_alert = H.throw_alert("mind_control", /atom/movable/screen/alert/mind_control)
|
||||
mind_alert.command = command
|
||||
|
||||
if(LAZYLEN(broadcasted_mobs))
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
if(entangled_mob && ishuman(entangled_mob) && (entangled_mob.stat < DEAD))
|
||||
to_chat(entangled_mob, "<span class='userdanger'>You suddenly feel an irresistible compulsion to follow an order...</span>")
|
||||
to_chat(entangled_mob, "<span class='mind_control'>[command]</span>")
|
||||
var/obj/screen/alert/mind_control/mind_alert = entangled_mob.throw_alert("mind_control", /obj/screen/alert/mind_control)
|
||||
var/atom/movable/screen/alert/mind_control/mind_alert = entangled_mob.throw_alert("mind_control", /atom/movable/screen/alert/mind_control)
|
||||
mind_alert.command = command
|
||||
message_admins("[key_name(owner)] mirrored an abductor mind control message to [key_name(entangled_mob)]: [command]")
|
||||
update_gland_hud()
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
if(naut)
|
||||
naut.factory = null
|
||||
to_chat(naut, "<span class='userdanger'>Your factory was destroyed! You feel yourself dying!</span>")
|
||||
naut.throw_alert("nofactory", /obj/screen/alert/nofactory)
|
||||
naut.throw_alert("nofactory", /atom/movable/screen/alert/nofactory)
|
||||
spores = null
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -670,9 +670,9 @@
|
||||
#define ui_vamprank_display "WEST:6,CENTER-2:-5" // 2 tiles down
|
||||
|
||||
/datum/hud
|
||||
var/obj/screen/bloodsucker/blood_counter/blood_display
|
||||
var/obj/screen/bloodsucker/rank_counter/vamprank_display
|
||||
var/obj/screen/bloodsucker/sunlight_counter/sunlight_display
|
||||
var/atom/movable/screen/bloodsucker/blood_counter/blood_display
|
||||
var/atom/movable/screen/bloodsucker/rank_counter/vamprank_display
|
||||
var/atom/movable/screen/bloodsucker/sunlight_counter/sunlight_display
|
||||
|
||||
/datum/antagonist/bloodsucker/proc/add_hud()
|
||||
return
|
||||
@@ -708,36 +708,36 @@
|
||||
owner.current.hud_used.vamprank_display.icon_state = (bloodsucker_level_unspent > 0) ? "rank_up" : "rank"
|
||||
|
||||
|
||||
/obj/screen/bloodsucker
|
||||
/atom/movable/screen/bloodsucker
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
|
||||
/obj/screen/bloodsucker/proc/clear()
|
||||
/atom/movable/screen/bloodsucker/proc/clear()
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
|
||||
/obj/screen/bloodsucker/proc/update_counter(value, valuecolor)
|
||||
/atom/movable/screen/bloodsucker/proc/update_counter(value, valuecolor)
|
||||
invisibility = 0
|
||||
|
||||
/obj/screen/bloodsucker/blood_counter
|
||||
/atom/movable/screen/bloodsucker/blood_counter
|
||||
icon = 'icons/mob/actions/bloodsucker.dmi'
|
||||
name = "Blood Consumed"
|
||||
icon_state = "blood_display"
|
||||
screen_loc = ui_blood_display
|
||||
|
||||
/obj/screen/bloodsucker/blood_counter/update_counter(value, valuecolor)
|
||||
/atom/movable/screen/bloodsucker/blood_counter/update_counter(value, valuecolor)
|
||||
..()
|
||||
maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'><font color='[valuecolor]'>[round(value,1)]</font></div>"
|
||||
|
||||
/obj/screen/bloodsucker/rank_counter
|
||||
/atom/movable/screen/bloodsucker/rank_counter
|
||||
name = "Bloodsucker Rank"
|
||||
icon = 'icons/mob/actions/bloodsucker.dmi'
|
||||
icon_state = "rank"
|
||||
screen_loc = ui_vamprank_display
|
||||
|
||||
/obj/screen/bloodsucker/rank_counter/update_counter(value, valuecolor)
|
||||
/atom/movable/screen/bloodsucker/rank_counter/update_counter(value, valuecolor)
|
||||
..()
|
||||
maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'><font color='[valuecolor]'>[round(value,1)]</font></div>"
|
||||
|
||||
/obj/screen/bloodsucker/sunlight_counter
|
||||
/atom/movable/screen/bloodsucker/sunlight_counter
|
||||
icon = 'icons/mob/actions/bloodsucker.dmi'
|
||||
name = "Solar Flare Timer"
|
||||
icon_state = "sunlight_night"
|
||||
@@ -761,7 +761,7 @@
|
||||
owner.current.hud_used.sunlight_display.icon_state = "sunlight_" + (amDay ? "day":"night")
|
||||
|
||||
|
||||
/obj/screen/bloodsucker/sunlight_counter/update_counter(value, valuecolor)
|
||||
/atom/movable/screen/bloodsucker/sunlight_counter/update_counter(value, valuecolor)
|
||||
..()
|
||||
maptext = "<div align='center' valign='bottom' style='position:relative; top:0px; left:6px'><font color='[valuecolor]'>[value]</font></div>"
|
||||
|
||||
|
||||
@@ -109,13 +109,13 @@
|
||||
|
||||
|
||||
/datum/status_effect/agent_pinpointer/hunter_edition
|
||||
alert_type = /obj/screen/alert/status_effect/agent_pinpointer/hunter_edition
|
||||
alert_type = /atom/movable/screen/alert/status_effect/agent_pinpointer/hunter_edition
|
||||
minimum_range = HUNTER_SCAN_MIN_DISTANCE
|
||||
tick_interval = HUNTER_SCAN_PING_TIME
|
||||
duration = 160 // Lasts 10s
|
||||
range_fuzz_factor = 5//PINPOINTER_EXTRA_RANDOM_RANGE
|
||||
|
||||
/obj/screen/alert/status_effect/agent_pinpointer/hunter_edition
|
||||
/atom/movable/screen/alert/status_effect/agent_pinpointer/hunter_edition
|
||||
name = "Monster Tracking"
|
||||
desc = "You always know where the hellspawn are."
|
||||
|
||||
|
||||
@@ -110,13 +110,13 @@
|
||||
|
||||
/datum/status_effect/agent_pinpointer/vassal_edition
|
||||
id = "agent_pinpointer"
|
||||
alert_type = /obj/screen/alert/status_effect/agent_pinpointer/vassal_edition
|
||||
alert_type = /atom/movable/screen/alert/status_effect/agent_pinpointer/vassal_edition
|
||||
minimum_range = VASSAL_SCAN_MIN_DISTANCE
|
||||
tick_interval = VASSAL_SCAN_PING_TIME
|
||||
duration = -1 // runs out fast
|
||||
range_fuzz_factor = 0
|
||||
|
||||
/obj/screen/alert/status_effect/agent_pinpointer/vassal_edition
|
||||
/atom/movable/screen/alert/status_effect/agent_pinpointer/vassal_edition
|
||||
name = "Blood Bond"
|
||||
desc = "You always know where your master is."
|
||||
//icon = 'icons/obj/device.dmi'
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
//Modified IA pinpointer - Points to the NEAREST changeling, but will only get you within a few tiles of the target.
|
||||
//You'll still have to rely on intuition and observation to make the identification. Lings can 'hide' in public places.
|
||||
/datum/status_effect/agent_pinpointer/changeling
|
||||
alert_type = /obj/screen/alert/status_effect/agent_pinpointer/changeling
|
||||
alert_type = /atom/movable/screen/alert/status_effect/agent_pinpointer/changeling
|
||||
minimum_range = CHANGELING_PHEROMONE_MIN_DISTANCE
|
||||
tick_interval = CHANGELING_PHEROMONE_PING_TIME
|
||||
range_fuzz_factor = 0
|
||||
@@ -55,6 +55,6 @@
|
||||
scan_target = null
|
||||
|
||||
|
||||
/obj/screen/alert/status_effect/agent_pinpointer/changeling
|
||||
/atom/movable/screen/alert/status_effect/agent_pinpointer/changeling
|
||||
name = "Pheromone Scent"
|
||||
desc = "The nose always knows."
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
do_sparks(5, TRUE, AM)
|
||||
if(isliving(AM))
|
||||
var/mob/living/L = AM
|
||||
L.overlay_fullscreen("flash", /obj/screen/fullscreen/flash/static)
|
||||
L.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash/static)
|
||||
L.clear_fullscreen("flash", 5)
|
||||
var/obj/item/transfer_valve/TTV = locate() in L.GetAllContents()
|
||||
if(TTV)
|
||||
|
||||
@@ -97,18 +97,18 @@
|
||||
id = "wraith_spectacles"
|
||||
duration = -1 //remains until eye damage done reaches 0 while the glasses are not worn
|
||||
tick_interval = 20
|
||||
alert_type = /obj/screen/alert/status_effect/wraith_spectacles
|
||||
alert_type = /atom/movable/screen/alert/status_effect/wraith_spectacles
|
||||
var/eye_damage_done = 0
|
||||
var/nearsight_breakpoint = 30
|
||||
var/blind_breakpoint = 45
|
||||
|
||||
/obj/screen/alert/status_effect/wraith_spectacles
|
||||
/atom/movable/screen/alert/status_effect/wraith_spectacles
|
||||
name = "Wraith Spectacles"
|
||||
desc = "You shouldn't actually see this, as it should be procedurally generated."
|
||||
icon_state = "wraithspecs"
|
||||
alerttooltipstyle = "clockcult"
|
||||
|
||||
/obj/screen/alert/status_effect/wraith_spectacles/MouseEntered(location,control,params)
|
||||
/atom/movable/screen/alert/status_effect/wraith_spectacles/MouseEntered(location,control,params)
|
||||
var/mob/living/carbon/human/L = usr
|
||||
if(istype(L)) //this is probably more safety than actually needed
|
||||
var/datum/status_effect/wraith_spectacles/W = attached_effect
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
if(isliving(M.current) && M.current.stat != DEAD)
|
||||
var/turf/t_turf = isAI(M.current) ? get_step(get_step(src, NORTH),NORTH) : get_turf(src) // AI too fat, must make sure it always ends up a 2 tiles north instead of on the ark.
|
||||
do_teleport(M.current, t_turf, channel = TELEPORT_CHANNEL_CULT, forced = TRUE)
|
||||
M.current.overlay_fullscreen("flash", /obj/screen/fullscreen/flash)
|
||||
M.current.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash)
|
||||
M.current.clear_fullscreen("flash", 5)
|
||||
playsound(src, 'sound/magic/clockwork/invoke_general.ogg', 50, FALSE)
|
||||
recalls_remaining--
|
||||
@@ -311,7 +311,7 @@
|
||||
var/turf/T = get_turf(M)
|
||||
if(is_servant_of_ratvar(M) && (!T || T.z != z))
|
||||
M.forceMove(get_step(src, SOUTH))
|
||||
M.overlay_fullscreen("flash", /obj/screen/fullscreen/flash)
|
||||
M.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash)
|
||||
M.clear_fullscreen("flash", 5)
|
||||
progress_in_seconds += GATEWAY_SUMMON_RATE
|
||||
switch(progress_in_seconds)
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
hierophant_network.span_for_name = "nezbere"
|
||||
hierophant_network.span_for_message = "brass"
|
||||
hierophant_network.Grant(current)
|
||||
current.throw_alert("clockinfo", /obj/screen/alert/clockwork/infodump)
|
||||
current.throw_alert("clockinfo", /atom/movable/screen/alert/clockwork/infodump)
|
||||
var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar
|
||||
if(G && G.active && ishuman(current))
|
||||
current.add_overlay(mutable_appearance('icons/effects/genetics.dmi', "servitude", -ANTAG_LAYER))
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
communion.Grant(current)
|
||||
if(ishuman(current))
|
||||
magic.Grant(current)
|
||||
current.throw_alert("bloodsense", /obj/screen/alert/bloodsense)
|
||||
current.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense)
|
||||
if(cult_team?.cult_risen)
|
||||
cult_team.rise(current)
|
||||
if(cult_team.cult_ascendent)
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
/mob/living/carbon/true_devil/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null)
|
||||
return 666
|
||||
|
||||
/mob/living/carbon/true_devil/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash, override_protection = 0)
|
||||
/mob/living/carbon/true_devil/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, override_protection = 0)
|
||||
if(mind && has_bane(BANE_LIGHT))
|
||||
mind.disrupt_spells(-500)
|
||||
return ..() //flashes don't stop devils UNLESS it's their bane.
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
var/atom/movable/form = null
|
||||
var/morph_time = 0
|
||||
var/static/list/blacklist_typecache = typecacheof(list(
|
||||
/obj/screen,
|
||||
/atom/movable/screen,
|
||||
/obj/singularity,
|
||||
/mob/living/simple_animal/hostile/morph,
|
||||
/obj/effect,
|
||||
|
||||
@@ -42,12 +42,12 @@
|
||||
id = "agent_pinpointer"
|
||||
duration = -1
|
||||
tick_interval = PINPOINTER_PING_TIME
|
||||
alert_type = /obj/screen/alert/status_effect/agent_pinpointer
|
||||
alert_type = /atom/movable/screen/alert/status_effect/agent_pinpointer
|
||||
var/minimum_range = PINPOINTER_MINIMUM_RANGE
|
||||
var/range_fuzz_factor = PINPOINTER_EXTRA_RANDOM_RANGE
|
||||
var/mob/scan_target = null
|
||||
|
||||
/obj/screen/alert/status_effect/agent_pinpointer
|
||||
/atom/movable/screen/alert/status_effect/agent_pinpointer
|
||||
name = "Internal Affairs Integrated Pinpointer"
|
||||
desc = "Even stealthier than a normal implant."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
|
||||
@@ -224,7 +224,7 @@
|
||||
if(target.type == /mob/living/simple_animal/hostile/construct/shade) //Make sure we remember which body belonged to the shade
|
||||
var/mob/living/simple_animal/hostile/construct/shade/shade = target
|
||||
newstruct.original_mind = shade.original_mind
|
||||
var/obj/screen/alert/bloodsense/BS
|
||||
var/atom/movable/screen/alert/bloodsense/BS
|
||||
if(newstruct.mind && ((stoner && iscultist(stoner)) || cultoverride) && SSticker?.mode)
|
||||
SSticker.mode.add_cultist(newstruct.mind, 0)
|
||||
if(iscultist(stoner) || cultoverride)
|
||||
@@ -232,7 +232,7 @@
|
||||
else if(stoner)
|
||||
to_chat(newstruct, "<b>You are still bound to serve your creator, [stoner], follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.</b>")
|
||||
newstruct.clear_alert("bloodsense")
|
||||
BS = newstruct.throw_alert("bloodsense", /obj/screen/alert/bloodsense)
|
||||
BS = newstruct.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense)
|
||||
if(BS)
|
||||
BS.Cviewer = newstruct
|
||||
newstruct.cancel_camera()
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
/obj/item/organ/genital/proc/update_size()
|
||||
return
|
||||
|
||||
/obj/item/organ/genital/proc/update_appearance()
|
||||
/obj/item/organ/genital/proc/update_appearance_genitals()
|
||||
if(!owner || owner.stat == DEAD)
|
||||
aroused_state = FALSE
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
. = ..()
|
||||
if(.)
|
||||
update()
|
||||
RegisterSignal(owner, COMSIG_MOB_DEATH, .proc/update_appearance)
|
||||
RegisterSignal(owner, COMSIG_MOB_DEATH, .proc/update_appearance_genitals)
|
||||
if(genital_flags & GENITAL_THROUGH_CLOTHES)
|
||||
owner.exposed_genitals += src
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
var/is_knotted = FALSE
|
||||
//Lists moved to _cit_helpers.dm as globals so they're not instanced individually
|
||||
|
||||
/obj/item/dildo/proc/update_appearance()
|
||||
/obj/item/dildo/update_appearance()
|
||||
icon_state = "[dildo_type]_[dildo_shape]_[dildo_size]"
|
||||
var/sizeword = ""
|
||||
switch(dildo_size)
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
var/list/products = null
|
||||
var/danger_reagent = null
|
||||
var/low_alert_category = "not_enough_oxy"
|
||||
var/low_alert_datum = /obj/screen/alert/not_enough_oxy
|
||||
var/low_alert_datum = /atom/movable/screen/alert/not_enough_oxy
|
||||
var/high_alert_category = "too_much_oxy"
|
||||
var/high_alert_datum = /obj/screen/alert/too_much_oxy
|
||||
var/high_alert_datum = /atom/movable/screen/alert/too_much_oxy
|
||||
|
||||
/datum/breathing_class/oxygen
|
||||
gases = list(
|
||||
@@ -32,6 +32,6 @@
|
||||
GAS_CO2 = 1
|
||||
)
|
||||
low_alert_category = "not_enough_tox"
|
||||
low_alert_datum = /obj/screen/alert/not_enough_tox
|
||||
low_alert_datum = /atom/movable/screen/alert/not_enough_tox
|
||||
high_alert_category = "too_much_tox"
|
||||
high_alert_datum = /obj/screen/alert/too_much_tox
|
||||
high_alert_datum = /atom/movable/screen/alert/too_much_tox
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
breath_alert_info = list(
|
||||
not_enough_alert = list(
|
||||
alert_category = "not_enough_nitro",
|
||||
alert_type = /obj/screen/alert/not_enough_nitro
|
||||
alert_type = /atom/movable/screen/alert/not_enough_nitro
|
||||
),
|
||||
too_much_alert = list(
|
||||
alert_category = "too_much_nitro",
|
||||
alert_type = /obj/screen/alert/too_much_nitro
|
||||
alert_type = /atom/movable/screen/alert/too_much_nitro
|
||||
)
|
||||
)
|
||||
name = "Nitrogen"
|
||||
@@ -27,11 +27,11 @@
|
||||
breath_alert_info = list(
|
||||
not_enough_alert = list(
|
||||
alert_category = "not_enough_co2",
|
||||
alert_type = /obj/screen/alert/not_enough_co2
|
||||
alert_type = /atom/movable/screen/alert/not_enough_co2
|
||||
),
|
||||
too_much_alert = list(
|
||||
alert_category = "too_much_co2",
|
||||
alert_type = /obj/screen/alert/too_much_co2
|
||||
alert_type = /atom/movable/screen/alert/too_much_co2
|
||||
)
|
||||
)
|
||||
fusion_power = 3
|
||||
@@ -138,11 +138,11 @@
|
||||
breath_alert_info = list(
|
||||
not_enough_alert = list(
|
||||
alert_category = "not_enough_ch4",
|
||||
alert_type = /obj/screen/alert/not_enough_ch4
|
||||
alert_type = /atom/movable/screen/alert/not_enough_ch4
|
||||
),
|
||||
too_much_alert = list(
|
||||
alert_category = "too_much_ch4",
|
||||
alert_type = /obj/screen/alert/too_much_ch4
|
||||
alert_type = /atom/movable/screen/alert/too_much_ch4
|
||||
)
|
||||
)
|
||||
fire_energy_released = FIRE_CARBON_ENERGY_RELEASED
|
||||
@@ -156,11 +156,11 @@
|
||||
breath_alert_info = list(
|
||||
not_enough_alert = list(
|
||||
alert_category = "not_enough_ch3br",
|
||||
alert_type = /obj/screen/alert/not_enough_ch3br
|
||||
alert_type = /atom/movable/screen/alert/not_enough_ch3br
|
||||
),
|
||||
too_much_alert = list(
|
||||
alert_category = "too_much_ch3br",
|
||||
alert_type = /obj/screen/alert/too_much_ch3br
|
||||
alert_type = /atom/movable/screen/alert/too_much_ch3br
|
||||
)
|
||||
)
|
||||
fire_products = list(GAS_CO2 = 1, GAS_H2O = 1.5, GAS_BZ = 0.5)
|
||||
|
||||
@@ -439,7 +439,7 @@
|
||||
return // we don't see the pipe network while inside cryo.
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/get_remote_view_fullscreens(mob/user)
|
||||
user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1)
|
||||
user.overlay_fullscreen("remote_view", /atom/movable/screen/fullscreen/impaired, 1)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/can_crawl_through()
|
||||
return // can't ventcrawl in or out of cryo.
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
var/switch_state = BM_SWITCHSTATE_NONE
|
||||
var/switch_width = 5
|
||||
// modeswitch UI
|
||||
var/obj/screen/buildmode/mode/modebutton
|
||||
var/atom/movable/screen/buildmode/mode/modebutton
|
||||
var/list/modeswitch_buttons = list()
|
||||
// dirswitch UI
|
||||
var/obj/screen/buildmode/bdir/dirbutton
|
||||
var/atom/movable/screen/buildmode/bdir/dirbutton
|
||||
var/list/dirswitch_buttons = list()
|
||||
|
||||
/datum/buildmode/New(client/c)
|
||||
@@ -34,7 +34,7 @@
|
||||
holder.screen += buttons
|
||||
holder.click_intercept = src
|
||||
mode.enter_mode(src)
|
||||
|
||||
|
||||
/datum/buildmode/proc/quit()
|
||||
mode.exit_mode(src)
|
||||
holder.screen -= buttons
|
||||
@@ -63,16 +63,16 @@
|
||||
|
||||
/datum/buildmode/proc/create_buttons()
|
||||
// keep a reference so we can update it upon mode switch
|
||||
modebutton = new /obj/screen/buildmode/mode(src)
|
||||
modebutton = new /atom/movable/screen/buildmode/mode(src)
|
||||
buttons += modebutton
|
||||
buttons += new /obj/screen/buildmode/help(src)
|
||||
buttons += new /atom/movable/screen/buildmode/help(src)
|
||||
// keep a reference so we can update it upon dir switch
|
||||
dirbutton = new /obj/screen/buildmode/bdir(src)
|
||||
dirbutton = new /atom/movable/screen/buildmode/bdir(src)
|
||||
buttons += dirbutton
|
||||
buttons += new /obj/screen/buildmode/quit(src)
|
||||
buttons += new /atom/movable/screen/buildmode/quit(src)
|
||||
// build the lists of switching buttons
|
||||
build_options_grid(subtypesof(/datum/buildmode_mode), modeswitch_buttons, /obj/screen/buildmode/modeswitch)
|
||||
build_options_grid(list(SOUTH,EAST,WEST,NORTH,NORTHWEST), dirswitch_buttons, /obj/screen/buildmode/dirswitch)
|
||||
build_options_grid(subtypesof(/datum/buildmode_mode), modeswitch_buttons, /atom/movable/screen/buildmode/modeswitch)
|
||||
build_options_grid(list(SOUTH,EAST,WEST,NORTH,NORTHWEST), dirswitch_buttons, /atom/movable/screen/buildmode/dirswitch)
|
||||
|
||||
// this creates a nice offset grid for choosing between buildmode options,
|
||||
// because going "click click click ah hell" sucks.
|
||||
@@ -81,7 +81,7 @@
|
||||
for(var/thing in elements)
|
||||
var/x = pos_idx % switch_width
|
||||
var/y = FLOOR(pos_idx / switch_width, 1)
|
||||
var/obj/screen/buildmode/B = new buttontype(src, thing)
|
||||
var/atom/movable/screen/buildmode/B = new buttontype(src, thing)
|
||||
// extra .5 for a nice offset look
|
||||
B.screen_loc = "NORTH-[(1 + 0.5 + y*1.5)],WEST+[0.5 + x*1.5]"
|
||||
buttonslist += B
|
||||
@@ -100,7 +100,7 @@
|
||||
else
|
||||
close_switchstates()
|
||||
open_modeswitch()
|
||||
|
||||
|
||||
/datum/buildmode/proc/open_modeswitch()
|
||||
switch_state = BM_SWITCHSTATE_MODE
|
||||
holder.screen += modeswitch_buttons
|
||||
@@ -115,7 +115,7 @@
|
||||
else
|
||||
close_switchstates()
|
||||
open_dirswitch()
|
||||
|
||||
|
||||
/datum/buildmode/proc/open_dirswitch()
|
||||
switch_state = BM_SWITCHSTATE_DIR
|
||||
holder.screen += dirswitch_buttons
|
||||
@@ -155,7 +155,7 @@
|
||||
new /datum/buildmode(M.client)
|
||||
message_admins("[key_name_admin(usr)] has entered build mode.")
|
||||
log_admin("[key_name(usr)] has entered build mode.")
|
||||
|
||||
|
||||
#undef BM_SWITCHSTATE_NONE
|
||||
#undef BM_SWITCHSTATE_MODE
|
||||
#undef BM_SWITCHSTATE_DIR
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
/obj/screen/buildmode
|
||||
/atom/movable/screen/buildmode
|
||||
icon = 'icons/misc/buildmode.dmi'
|
||||
var/datum/buildmode/bd
|
||||
// If we don't do this, we get occluded by item action buttons
|
||||
layer = ABOVE_HUD_LAYER
|
||||
|
||||
/obj/screen/buildmode/New(bld)
|
||||
/atom/movable/screen/buildmode/New(bld)
|
||||
bd = bld
|
||||
return ..()
|
||||
|
||||
/obj/screen/buildmode/Destroy()
|
||||
/atom/movable/screen/buildmode/Destroy()
|
||||
bd = null
|
||||
return ..()
|
||||
|
||||
/obj/screen/buildmode/mode
|
||||
/atom/movable/screen/buildmode/mode
|
||||
name = "Toggle Mode"
|
||||
icon_state = "buildmode_basic"
|
||||
screen_loc = "NORTH,WEST"
|
||||
|
||||
/obj/screen/buildmode/mode/Click(location, control, params)
|
||||
/atom/movable/screen/buildmode/mode/Click(location, control, params)
|
||||
var/list/pa = params2list(params)
|
||||
|
||||
if(pa.Find("left"))
|
||||
@@ -27,63 +27,63 @@
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
/obj/screen/buildmode/mode/update_icon_state()
|
||||
/atom/movable/screen/buildmode/mode/update_icon_state()
|
||||
icon_state = bd.mode.get_button_iconstate()
|
||||
|
||||
/obj/screen/buildmode/help
|
||||
/atom/movable/screen/buildmode/help
|
||||
icon_state = "buildhelp"
|
||||
screen_loc = "NORTH,WEST+1"
|
||||
name = "Buildmode Help"
|
||||
|
||||
/obj/screen/buildmode/help/Click(location, control, params)
|
||||
/atom/movable/screen/buildmode/help/Click(location, control, params)
|
||||
bd.mode.show_help(usr.client)
|
||||
return 1
|
||||
|
||||
/obj/screen/buildmode/bdir
|
||||
/atom/movable/screen/buildmode/bdir
|
||||
icon_state = "build"
|
||||
screen_loc = "NORTH,WEST+2"
|
||||
name = "Change Dir"
|
||||
|
||||
/obj/screen/buildmode/bdir/update_icon_state()
|
||||
/atom/movable/screen/buildmode/bdir/update_icon_state()
|
||||
dir = bd.build_dir
|
||||
|
||||
/obj/screen/buildmode/bdir/Click()
|
||||
/atom/movable/screen/buildmode/bdir/Click()
|
||||
bd.toggle_dirswitch()
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
// used to switch between modes
|
||||
/obj/screen/buildmode/modeswitch
|
||||
/atom/movable/screen/buildmode/modeswitch
|
||||
var/datum/buildmode_mode/modetype
|
||||
|
||||
/obj/screen/buildmode/modeswitch/New(bld, mt)
|
||||
/atom/movable/screen/buildmode/modeswitch/New(bld, mt)
|
||||
modetype = mt
|
||||
icon_state = "buildmode_[initial(modetype.key)]"
|
||||
name = initial(modetype.key)
|
||||
return ..(bld)
|
||||
|
||||
/obj/screen/buildmode/modeswitch/Click()
|
||||
/atom/movable/screen/buildmode/modeswitch/Click()
|
||||
bd.change_mode(modetype)
|
||||
return 1
|
||||
|
||||
// used to switch between dirs
|
||||
/obj/screen/buildmode/dirswitch
|
||||
/atom/movable/screen/buildmode/dirswitch
|
||||
icon_state = "build"
|
||||
|
||||
/obj/screen/buildmode/dirswitch/New(bld, dir)
|
||||
/atom/movable/screen/buildmode/dirswitch/New(bld, dir)
|
||||
src.dir = dir
|
||||
name = dir2text(dir)
|
||||
return ..(bld)
|
||||
|
||||
/obj/screen/buildmode/dirswitch/Click()
|
||||
/atom/movable/screen/buildmode/dirswitch/Click()
|
||||
bd.change_dir(dir)
|
||||
return 1
|
||||
|
||||
/obj/screen/buildmode/quit
|
||||
/atom/movable/screen/buildmode/quit
|
||||
icon_state = "buildquit"
|
||||
screen_loc = "NORTH,WEST+3"
|
||||
name = "Quit Buildmode"
|
||||
|
||||
/obj/screen/buildmode/quit/Click()
|
||||
/atom/movable/screen/buildmode/quit/Click()
|
||||
bd.quit()
|
||||
return 1
|
||||
|
||||
@@ -51,9 +51,9 @@
|
||||
var/obj/structure/closet/supplypod/centcompod/temp_pod //The temporary pod that is modified by this datum, then cloned. The buildObject() clone of this pod is what is launched
|
||||
// Stuff needed to render the map
|
||||
var/map_name
|
||||
var/obj/screen/map_view/cam_screen
|
||||
var/atom/movable/screen/map_view/cam_screen
|
||||
var/list/cam_plane_masters
|
||||
var/obj/screen/background/cam_background
|
||||
var/atom/movable/screen/background/cam_background
|
||||
var/tabIndex = 1
|
||||
var/renderLighting = FALSE
|
||||
|
||||
@@ -92,8 +92,8 @@
|
||||
cam_screen.del_on_map_removal = TRUE
|
||||
cam_screen.screen_loc = "[map_name]:1,1"
|
||||
cam_plane_masters = list()
|
||||
for(var/plane in subtypesof(/obj/screen/plane_master))
|
||||
var/obj/screen/instance = new plane()
|
||||
for(var/plane in subtypesof(/atom/movable/screen/plane_master))
|
||||
var/atom/movable/screen/instance = new plane()
|
||||
if (!renderLighting && instance.plane == LIGHTING_PLANE)
|
||||
instance.alpha = 100
|
||||
instance.assigned_map = map_name
|
||||
@@ -581,7 +581,7 @@
|
||||
var/left_click = pa.Find("left")
|
||||
if (launcherActivated)
|
||||
//Clicking on UI elements shouldn't launch a pod
|
||||
if(istype(target,/obj/screen))
|
||||
if(istype(target,/atom/movable/screen))
|
||||
return FALSE
|
||||
|
||||
. = TRUE
|
||||
@@ -616,7 +616,7 @@
|
||||
sleep(rand()*2) //looks cooler than them all appearing at once. Gives the impression of burst fire.
|
||||
else if (picking_dropoff_turf)
|
||||
//Clicking on UI elements shouldn't pick a dropoff turf
|
||||
if(istype(target,/obj/screen))
|
||||
if(istype(target,/atom/movable/screen))
|
||||
return FALSE
|
||||
|
||||
. = TRUE
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
preload_rsc = PRELOAD_RSC
|
||||
|
||||
var/obj/screen/click_catcher/void
|
||||
var/atom/movable/screen/click_catcher/void
|
||||
|
||||
//These two vars are used to make a special mouse cursor, with a unique icon for clicking
|
||||
var/mouse_up_icon = null
|
||||
@@ -88,7 +88,7 @@
|
||||
|
||||
var/datum/player_details/player_details //these persist between logins/logouts during the same round.
|
||||
|
||||
var/list/char_render_holders //Should only be a key-value list of north/south/east/west = obj/screen.
|
||||
var/list/char_render_holders //Should only be a key-value list of north/south/east/west = atom/movable/screen.
|
||||
|
||||
/// Last time they used fix macros
|
||||
var/last_macro_fix = 0
|
||||
@@ -168,7 +168,7 @@
|
||||
* Assoc list with all the active maps - when a screen obj is added to
|
||||
* a map, it's put in here as well.
|
||||
*
|
||||
* Format: list(<mapname> = list(/obj/screen))
|
||||
* Format: list(<mapname> = list(/atom/movable/screen))
|
||||
*/
|
||||
var/list/screen_maps = list()
|
||||
|
||||
|
||||
@@ -1029,7 +1029,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
|
||||
var/pos = 0
|
||||
for(var/D in GLOB.cardinals)
|
||||
pos++
|
||||
var/obj/screen/O = LAZYACCESS(char_render_holders, "[D]")
|
||||
var/atom/movable/screen/O = LAZYACCESS(char_render_holders, "[D]")
|
||||
if(!O)
|
||||
O = new
|
||||
LAZYSET(char_render_holders, "[D]", O)
|
||||
@@ -1040,7 +1040,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
|
||||
|
||||
/client/proc/clear_character_previews()
|
||||
for(var/index in char_render_holders)
|
||||
var/obj/screen/S = char_render_holders[index]
|
||||
var/atom/movable/screen/S = char_render_holders[index]
|
||||
screen -= S
|
||||
qdel(S)
|
||||
char_render_holders = null
|
||||
|
||||
@@ -2840,9 +2840,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if("ambientocclusion")
|
||||
ambientocclusion = !ambientocclusion
|
||||
if(parent && parent.screen && parent.screen.len)
|
||||
var/obj/screen/plane_master/game_world/G = parent.mob.hud_used.plane_masters["[GAME_PLANE]"]
|
||||
var/obj/screen/plane_master/above_wall/A = parent.mob.hud_used.plane_masters["[ABOVE_WALL_PLANE]"]
|
||||
var/obj/screen/plane_master/wall/W = parent.mob.hud_used.plane_masters["[WALL_PLANE]"]
|
||||
var/atom/movable/screen/plane_master/game_world/G = parent.mob.hud_used.plane_masters["[GAME_PLANE]"]
|
||||
var/atom/movable/screen/plane_master/above_wall/A = parent.mob.hud_used.plane_masters["[ABOVE_WALL_PLANE]"]
|
||||
var/atom/movable/screen/plane_master/wall/W = parent.mob.hud_used.plane_masters["[WALL_PLANE]"]
|
||||
G.backdrop(parent.mob)
|
||||
A.backdrop(parent.mob)
|
||||
W.backdrop(parent.mob)
|
||||
|
||||
@@ -79,8 +79,8 @@
|
||||
if(ismecha(M.loc)) // stops inventory actions in a mech
|
||||
return
|
||||
|
||||
if(!. && !M.incapacitated() && loc == M && istype(over_object, /obj/screen/inventory/hand))
|
||||
var/obj/screen/inventory/hand/H = over_object
|
||||
if(!. && !M.incapacitated() && loc == M && istype(over_object, /atom/movable/screen/inventory/hand))
|
||||
var/atom/movable/screen/inventory/hand/H = over_object
|
||||
if(M.putItemFromInventoryInHandIfPossible(src, H.held_index))
|
||||
add_fingerprint(usr)
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
///How long it takes to lace/unlace these shoes
|
||||
var/lace_time = 5 SECONDS
|
||||
///any alerts we have active
|
||||
var/obj/screen/alert/our_alert
|
||||
var/atom/movable/screen/alert/our_alert
|
||||
|
||||
/obj/item/clothing/shoes/ComponentInitialize()
|
||||
. = ..()
|
||||
@@ -93,7 +93,7 @@
|
||||
user.update_inv_shoes()
|
||||
equipped_before_drop = TRUE
|
||||
if(can_be_tied && tied == SHOES_UNTIED)
|
||||
our_alert = user.throw_alert("shoealert", /obj/screen/alert/shoes/untied)
|
||||
our_alert = user.throw_alert("shoealert", /atom/movable/screen/alert/shoes/untied)
|
||||
RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, .proc/check_trip, override=TRUE)
|
||||
|
||||
/obj/item/clothing/shoes/proc/restore_offsets(mob/user)
|
||||
@@ -150,7 +150,7 @@
|
||||
UnregisterSignal(src, COMSIG_SHOES_STEP_ACTION)
|
||||
else
|
||||
if(tied == SHOES_UNTIED && our_guy && user == our_guy)
|
||||
our_alert = our_guy.throw_alert("shoealert", /obj/screen/alert/shoes/untied) // if we're the ones unknotting our own laces, of course we know they're untied
|
||||
our_alert = our_guy.throw_alert("shoealert", /atom/movable/screen/alert/shoes/untied) // if we're the ones unknotting our own laces, of course we know they're untied
|
||||
RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, .proc/check_trip, override=TRUE)
|
||||
|
||||
/**
|
||||
@@ -233,7 +233,7 @@
|
||||
our_guy.Knockdown(10)
|
||||
our_guy.visible_message("<span class='danger'>[our_guy] trips on [our_guy.p_their()] knotted shoelaces and falls! What a klutz!</span>", "<span class='userdanger'>You trip on your knotted shoelaces and fall over!</span>")
|
||||
SEND_SIGNAL(our_guy, COMSIG_ADD_MOOD_EVENT, "trip", /datum/mood_event/tripped) // well we realized they're knotted now!
|
||||
our_alert = our_guy.throw_alert("shoealert", /obj/screen/alert/shoes/knotted)
|
||||
our_alert = our_guy.throw_alert("shoealert", /atom/movable/screen/alert/shoes/knotted)
|
||||
|
||||
else if(tied == SHOES_UNTIED)
|
||||
var/wiser = TRUE // did we stumble and realize our laces are undone?
|
||||
@@ -263,7 +263,7 @@
|
||||
wiser = FALSE
|
||||
if(wiser)
|
||||
SEND_SIGNAL(our_guy, COMSIG_ADD_MOOD_EVENT, "untied", /datum/mood_event/untied) // well we realized they're untied now!
|
||||
our_alert = our_guy.throw_alert("shoealert", /obj/screen/alert/shoes/untied)
|
||||
our_alert = our_guy.throw_alert("shoealert", /atom/movable/screen/alert/shoes/untied)
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/on_attack_hand(mob/living/user, act_intent, unarmed_attack_flags)
|
||||
|
||||
@@ -238,7 +238,7 @@
|
||||
var/mob/holder = null
|
||||
var/phase_time = 0
|
||||
var/phase_time_length = 3
|
||||
var/obj/screen/chronos_target/target_ui = null
|
||||
var/atom/movable/screen/chronos_target/target_ui = null
|
||||
var/obj/item/clothing/suit/space/chronos/chronosuit
|
||||
|
||||
/obj/effect/chronos_cam/singularity_act()
|
||||
@@ -299,13 +299,13 @@
|
||||
holder.unset_machine()
|
||||
return ..()
|
||||
|
||||
/obj/screen/chronos_target
|
||||
/atom/movable/screen/chronos_target
|
||||
name = "target display"
|
||||
screen_loc = "CENTER,CENTER"
|
||||
color = "#ff3311"
|
||||
blend_mode = BLEND_SUBTRACT
|
||||
|
||||
/obj/screen/chronos_target/New(loc, var/mob/living/carbon/human/user)
|
||||
/atom/movable/screen/chronos_target/New(loc, var/mob/living/carbon/human/user)
|
||||
if(user)
|
||||
var/icon/user_icon = getFlatIcon(user)
|
||||
icon = user_icon
|
||||
|
||||
@@ -933,46 +933,46 @@ GLOBAL_LIST_INIT(hallucination_list, list(
|
||||
feedback_details += "Type: [alert_type]"
|
||||
switch(alert_type)
|
||||
if("not_enough_oxy")
|
||||
target.throw_alert(alert_type, /obj/screen/alert/not_enough_oxy, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/not_enough_oxy, override = TRUE)
|
||||
if("not_enough_tox")
|
||||
target.throw_alert(alert_type, /obj/screen/alert/not_enough_tox, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/not_enough_tox, override = TRUE)
|
||||
if("not_enough_co2")
|
||||
target.throw_alert(alert_type, /obj/screen/alert/not_enough_co2, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/not_enough_co2, override = TRUE)
|
||||
if("too_much_oxy")
|
||||
target.throw_alert(alert_type, /obj/screen/alert/too_much_oxy, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/too_much_oxy, override = TRUE)
|
||||
if("too_much_co2")
|
||||
target.throw_alert(alert_type, /obj/screen/alert/too_much_co2, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/too_much_co2, override = TRUE)
|
||||
if("too_much_tox")
|
||||
target.throw_alert(alert_type, /obj/screen/alert/too_much_tox, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/too_much_tox, override = TRUE)
|
||||
if("nutrition")
|
||||
if(prob(50))
|
||||
target.throw_alert(alert_type, /obj/screen/alert/fat, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/fat, override = TRUE)
|
||||
else
|
||||
target.throw_alert(alert_type, /obj/screen/alert/starving, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/starving, override = TRUE)
|
||||
if("gravity")
|
||||
target.throw_alert(alert_type, /obj/screen/alert/weightless, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/weightless, override = TRUE)
|
||||
if("fire")
|
||||
target.throw_alert(alert_type, /obj/screen/alert/fire, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/fire, override = TRUE)
|
||||
if("temphot")
|
||||
alert_type = "temp"
|
||||
target.throw_alert(alert_type, /obj/screen/alert/hot, 3, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/hot, 3, override = TRUE)
|
||||
if("tempcold")
|
||||
alert_type = "temp"
|
||||
target.throw_alert(alert_type, /obj/screen/alert/cold, 3, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/cold, 3, override = TRUE)
|
||||
if("pressure")
|
||||
if(prob(50))
|
||||
target.throw_alert(alert_type, /obj/screen/alert/highpressure, 2, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/highpressure, 2, override = TRUE)
|
||||
else
|
||||
target.throw_alert(alert_type, /obj/screen/alert/lowpressure, 2, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/lowpressure, 2, override = TRUE)
|
||||
//BEEP BOOP I AM A ROBOT
|
||||
if("newlaw")
|
||||
target.throw_alert(alert_type, /obj/screen/alert/newlaw, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/newlaw, override = TRUE)
|
||||
if("locked")
|
||||
target.throw_alert(alert_type, /obj/screen/alert/locked, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/locked, override = TRUE)
|
||||
if("hacked")
|
||||
target.throw_alert(alert_type, /obj/screen/alert/hacked, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/hacked, override = TRUE)
|
||||
if("charge")
|
||||
target.throw_alert(alert_type, /obj/screen/alert/emptycell, override = TRUE)
|
||||
target.throw_alert(alert_type, /atom/movable/screen/alert/emptycell, override = TRUE)
|
||||
sleep(duration)
|
||||
target.clear_alert(alert_type, clear_override = TRUE)
|
||||
qdel(src)
|
||||
@@ -1181,7 +1181,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
|
||||
if(target.client)
|
||||
target.client.images += fire_overlay
|
||||
to_chat(target, "<span class='userdanger'>You're set on fire!</span>")
|
||||
target.throw_alert("fire", /obj/screen/alert/fire, override = TRUE)
|
||||
target.throw_alert("fire", /atom/movable/screen/alert/fire, override = TRUE)
|
||||
sleep(20)
|
||||
for(var/i in 1 to 3)
|
||||
if(target.fire_stacks <= 0)
|
||||
@@ -1203,7 +1203,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
|
||||
target.clear_alert("temp", clear_override = TRUE)
|
||||
else
|
||||
target.clear_alert("temp", clear_override = TRUE)
|
||||
target.throw_alert("temp", /obj/screen/alert/hot, stage, override = TRUE)
|
||||
target.throw_alert("temp", /atom/movable/screen/alert/hot, stage, override = TRUE)
|
||||
|
||||
/datum/hallucination/fire/proc/clear_fire()
|
||||
if(!active)
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
. = ..()
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/customizable/proc/update_name(obj/item/reagent_containers/food/snacks/S)
|
||||
/obj/item/reagent_containers/food/snacks/customizable/update_name(obj/item/reagent_containers/food/snacks/S)
|
||||
for(var/obj/item/I in ingredients)
|
||||
if(!istype(S, I.type))
|
||||
customname = "custom"
|
||||
|
||||
@@ -59,6 +59,10 @@
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-off"
|
||||
|
||||
/obj/machinery/smartfridge/update_overlays()
|
||||
. = ..()
|
||||
if(!stat)
|
||||
. += emissive_appearance(icon, "smartfridge-light-mask", alpha = src.alpha)
|
||||
|
||||
|
||||
/*******************
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
/obj/mafia_game_board,
|
||||
/obj/docking_port,
|
||||
/obj/shapeshift_holder,
|
||||
/obj/screen
|
||||
/atom/movable/screen
|
||||
))
|
||||
|
||||
/mob/living/simple_animal/jacq/Initialize()
|
||||
|
||||
@@ -430,7 +430,7 @@
|
||||
src.pixel_x = rand(-5, 5)
|
||||
src.pixel_y = rand(-5, 5)
|
||||
|
||||
/obj/item/disk/plantgene/proc/update_name()
|
||||
/obj/item/disk/plantgene/update_name()
|
||||
if(gene)
|
||||
name = "[gene.get_name()] (plant data disk)"
|
||||
else
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
* almost guaranteed to be doing something wrong.
|
||||
*/
|
||||
/atom/movable/emissive_blocker
|
||||
name = ""
|
||||
plane = EMISSIVE_BLOCKER_PLANE
|
||||
layer = EMISSIVE_BLOCKER_LAYER
|
||||
name = "emissive blocker"
|
||||
plane = EMISSIVE_PLANE
|
||||
layer = FLOAT_LAYER
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
rad_flags = RAD_NO_CONTAMINATE | RAD_PROTECT_CONTENTS
|
||||
//Why?
|
||||
@@ -23,6 +23,8 @@
|
||||
verbs.Cut() //Cargo culting from lighting object, this maybe affects memory usage?
|
||||
|
||||
render_source = source
|
||||
color = GLOB.em_block_color
|
||||
|
||||
|
||||
/atom/movable/emissive_blocker/ex_act(severity)
|
||||
return FALSE
|
||||
|
||||
@@ -132,3 +132,54 @@
|
||||
/mob/living/proc/mob_light(_color, _range, _power, _duration)
|
||||
var/obj/effect/dummy/lighting_obj/moblight/mob_light_obj = new (src, _color, _range, _power, _duration)
|
||||
return mob_light_obj
|
||||
|
||||
// Setter for the light power of this atom.
|
||||
/atom/proc/set_light_power(new_power)
|
||||
if(new_power == light_power)
|
||||
return
|
||||
if(SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_POWER, new_power) & COMPONENT_BLOCK_LIGHT_UPDATE)
|
||||
return
|
||||
. = light_power
|
||||
light_power = new_power
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_LIGHT_POWER, .)
|
||||
|
||||
/// Setter for the light range of this atom.
|
||||
/atom/proc/set_light_range(new_range)
|
||||
if(new_range == light_range)
|
||||
return
|
||||
if(SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_RANGE, new_range) & COMPONENT_BLOCK_LIGHT_UPDATE)
|
||||
return
|
||||
. = light_range
|
||||
light_range = new_range
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_LIGHT_RANGE, .)
|
||||
|
||||
/// Setter for the light color of this atom.
|
||||
/atom/proc/set_light_color(new_color)
|
||||
if(new_color == light_color)
|
||||
return
|
||||
if(SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_COLOR, new_color) & COMPONENT_BLOCK_LIGHT_UPDATE)
|
||||
return
|
||||
. = light_color
|
||||
light_color = new_color
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_LIGHT_COLOR, .)
|
||||
/*
|
||||
/// Setter for whether or not this atom's light is on.
|
||||
/atom/proc/set_light_on(new_value)
|
||||
if(new_value == )
|
||||
return
|
||||
if(SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_ON, new_value) & COMPONENT_BLOCK_LIGHT_UPDATE)
|
||||
return
|
||||
. = light_on
|
||||
light_on = new_value
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_LIGHT_ON, .)
|
||||
|
||||
/// Setter for the light flags of this atom.
|
||||
/atom/proc/set_light_flags(new_value)
|
||||
if(new_value == light_flags)
|
||||
return
|
||||
if(SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_FLAGS, new_value) & COMPONENT_BLOCK_LIGHT_UPDATE)
|
||||
return
|
||||
. = light_flags
|
||||
light_flags = new_value
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_LIGHT_FLAGS, .)
|
||||
*/
|
||||
|
||||
@@ -91,7 +91,7 @@ INITIALIZE_IMMEDIATE(/mob/dead)
|
||||
|
||||
var/client/C = client
|
||||
to_chat(C, "<span class='notice'>Sending you to [pick].</span>")
|
||||
new /obj/screen/splash(C)
|
||||
new /atom/movable/screen/splash(C)
|
||||
|
||||
mob_transforming = TRUE
|
||||
sleep(29) //let the animation play
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
/mob/dead/new_player/Initialize()
|
||||
if(client && SSticker.state == GAME_STATE_STARTUP)
|
||||
var/obj/screen/splash/S = new(client, TRUE, TRUE)
|
||||
var/atom/movable/screen/splash/S = new(client, TRUE, TRUE)
|
||||
S.Fade(TRUE)
|
||||
|
||||
if(length(GLOB.newplayer_start))
|
||||
@@ -567,7 +567,7 @@
|
||||
if(job && !job.override_latejoin_spawn(character))
|
||||
SSjob.SendToLateJoin(character)
|
||||
if(!arrivals_docked)
|
||||
var/obj/screen/splash/Spl = new(character.client, TRUE)
|
||||
var/atom/movable/screen/splash/Spl = new(character.client, TRUE)
|
||||
Spl.Fade(TRUE)
|
||||
character.playsound_local(get_turf(character), 'sound/voice/ApproachingTG.ogg', 25)
|
||||
|
||||
|
||||
@@ -447,7 +447,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
if(message)
|
||||
to_chat(src, "<span class='ghostalert'>[message]</span>")
|
||||
if(source)
|
||||
var/obj/screen/alert/A = throw_alert("[REF(source)]_notify_cloning", /obj/screen/alert/notify_cloning)
|
||||
var/atom/movable/screen/alert/A = throw_alert("[REF(source)]_notify_cloning", /atom/movable/screen/alert/notify_cloning)
|
||||
if(A)
|
||||
if(client && client.prefs && client.prefs.UI_style)
|
||||
A.icon = ui_style2icon(client.prefs.UI_style)
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT)
|
||||
//Body temperature is too hot.
|
||||
throw_alert("alien_fire", /obj/screen/alert/alien_fire)
|
||||
throw_alert("alien_fire", /atom/movable/screen/alert/alien_fire)
|
||||
switch(bodytemperature)
|
||||
if(360 to 400)
|
||||
apply_damage(HEAT_DAMAGE_LEVEL_1, BURN)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
meleeKnockdownPower = 75
|
||||
meleeSlashHumanPower = 20
|
||||
meleeSlashSAPower = 45
|
||||
var/obj/screen/leap_icon = null
|
||||
var/atom/movable/screen/leap_icon = null
|
||||
|
||||
/mob/living/carbon/alien/humanoid/hunter/create_internal_organs()
|
||||
internal_organs += new /obj/item/organ/alien/plasmavessel/small
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
if(Toxins_pp > tox_detect_threshold) // Detect toxins in air
|
||||
adjustPlasma(breath.get_moles(GAS_PLASMA)*250)
|
||||
throw_alert("alien_tox", /obj/screen/alert/alien_tox)
|
||||
throw_alert("alien_tox", /atom/movable/screen/alert/alien_tox)
|
||||
|
||||
toxins_used = breath.get_moles(GAS_PLASMA)
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
owner.stuttering += 30
|
||||
|
||||
recent_queen_death = 1
|
||||
owner.throw_alert("alien_noqueen", /obj/screen/alert/alien_vulnerable)
|
||||
owner.throw_alert("alien_noqueen", /atom/movable/screen/alert/alien_vulnerable)
|
||||
addtimer(CALLBACK(src, .proc/clear_queen_death), QUEEN_DEATH_DEBUFF_DURATION)
|
||||
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
var/oindex = active_hand_index
|
||||
active_hand_index = held_index
|
||||
if(hud_used)
|
||||
var/obj/screen/inventory/hand/H
|
||||
var/atom/movable/screen/inventory/hand/H
|
||||
H = hud_used.hand_slots["[oindex]"]
|
||||
if(H)
|
||||
H.update_icon()
|
||||
@@ -158,7 +158,7 @@
|
||||
throw_mode_off()
|
||||
if(!target || !isturf(loc))
|
||||
return
|
||||
if(istype(target, /obj/screen))
|
||||
if(istype(target, /atom/movable/screen))
|
||||
return
|
||||
|
||||
//CIT CHANGES - makes it impossible to throw while in stamina softcrit
|
||||
@@ -699,7 +699,7 @@
|
||||
become_blind(EYES_COVERED)
|
||||
else if(tinttotal >= TINT_DARKENED)
|
||||
cure_blind(EYES_COVERED)
|
||||
overlay_fullscreen("tint", /obj/screen/fullscreen/impaired, 2)
|
||||
overlay_fullscreen("tint", /atom/movable/screen/fullscreen/impaired, 2)
|
||||
else
|
||||
cure_blind(EYES_COVERED)
|
||||
clear_fullscreen("tint", 0)
|
||||
@@ -775,10 +775,10 @@
|
||||
visionseverity = 9
|
||||
if(-INFINITY to -24)
|
||||
visionseverity = 10
|
||||
overlay_fullscreen("critvision", /obj/screen/fullscreen/crit/vision, visionseverity)
|
||||
overlay_fullscreen("critvision", /atom/movable/screen/fullscreen/crit/vision, visionseverity)
|
||||
else
|
||||
clear_fullscreen("critvision")
|
||||
overlay_fullscreen("crit", /obj/screen/fullscreen/crit, severity)
|
||||
overlay_fullscreen("crit", /atom/movable/screen/fullscreen/crit, severity)
|
||||
else
|
||||
clear_fullscreen("crit")
|
||||
clear_fullscreen("critvision")
|
||||
@@ -802,7 +802,7 @@
|
||||
severity = 6
|
||||
if(45 to INFINITY)
|
||||
severity = 7
|
||||
overlay_fullscreen("oxy", /obj/screen/fullscreen/oxy, severity)
|
||||
overlay_fullscreen("oxy", /atom/movable/screen/fullscreen/oxy, severity)
|
||||
else
|
||||
clear_fullscreen("oxy")
|
||||
|
||||
@@ -823,7 +823,7 @@
|
||||
severity = 5
|
||||
if(85 to INFINITY)
|
||||
severity = 6
|
||||
overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity)
|
||||
overlay_fullscreen("brute", /atom/movable/screen/fullscreen/brute, severity)
|
||||
else
|
||||
clear_fullscreen("brute")
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
if(handcuffed)
|
||||
drop_all_held_items()
|
||||
stop_pulling()
|
||||
throw_alert("handcuffed", /obj/screen/alert/restrained/handcuffed, new_master = src.handcuffed)
|
||||
throw_alert("handcuffed", /atom/movable/screen/alert/restrained/handcuffed, new_master = src.handcuffed)
|
||||
if(handcuffed.demoralize_criminals)
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "handcuffed", /datum/mood_event/handcuffed)
|
||||
else
|
||||
|
||||
@@ -361,7 +361,7 @@
|
||||
|
||||
return embeds
|
||||
|
||||
/mob/living/carbon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash, override_protection = 0)
|
||||
/mob/living/carbon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, override_protection = 0)
|
||||
. = ..()
|
||||
|
||||
var/damage = override_protection ? intensity : intensity - get_eye_protection()
|
||||
|
||||
@@ -209,7 +209,7 @@
|
||||
update_tint()
|
||||
if(G.vision_correction)
|
||||
if(HAS_TRAIT(src, TRAIT_NEARSIGHT))
|
||||
overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1)
|
||||
overlay_fullscreen("nearsighted", /atom/movable/screen/fullscreen/impaired, 1)
|
||||
if(G.vision_flags || G.darkness_view || G.invis_override || G.invis_view || !isnull(G.lighting_alpha))
|
||||
update_sight()
|
||||
if(!QDELETED(src))
|
||||
|
||||
@@ -89,15 +89,15 @@
|
||||
var/datum/species/S = dna.species
|
||||
|
||||
if(S.breathid == "o2")
|
||||
throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy)
|
||||
throw_alert("not_enough_oxy", /atom/movable/screen/alert/not_enough_oxy)
|
||||
else if(S.breathid == "tox")
|
||||
throw_alert("not_enough_tox", /obj/screen/alert/not_enough_tox)
|
||||
throw_alert("not_enough_tox", /atom/movable/screen/alert/not_enough_tox)
|
||||
else if(S.breathid == "co2")
|
||||
throw_alert("not_enough_co2", /obj/screen/alert/not_enough_co2)
|
||||
throw_alert("not_enough_co2", /atom/movable/screen/alert/not_enough_co2)
|
||||
else if(S.breathid == "n2")
|
||||
throw_alert("not_enough_nitro", /obj/screen/alert/not_enough_nitro)
|
||||
throw_alert("not_enough_nitro", /atom/movable/screen/alert/not_enough_nitro)
|
||||
else if(S.breathid == "ch3br")
|
||||
throw_alert("not_enough_ch3br", /obj/screen/alert/not_enough_ch3br)
|
||||
throw_alert("not_enough_ch3br", /atom/movable/screen/alert/not_enough_ch3br)
|
||||
|
||||
return FALSE
|
||||
else
|
||||
|
||||
@@ -1459,13 +1459,13 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
|
||||
switch(H.nutrition)
|
||||
if(NUTRITION_LEVEL_FULL to INFINITY)
|
||||
H.throw_alert("nutrition", /obj/screen/alert/fat)
|
||||
H.throw_alert("nutrition", /atom/movable/screen/alert/fat)
|
||||
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FULL)
|
||||
H.clear_alert("nutrition")
|
||||
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
|
||||
H.throw_alert("nutrition", /obj/screen/alert/hungry)
|
||||
H.throw_alert("nutrition", /atom/movable/screen/alert/hungry)
|
||||
if(0 to NUTRITION_LEVEL_STARVING)
|
||||
H.throw_alert("nutrition", /obj/screen/alert/starving)
|
||||
H.throw_alert("nutrition", /atom/movable/screen/alert/starving)
|
||||
|
||||
/datum/species/proc/update_health_hud(mob/living/carbon/human/H)
|
||||
return 0
|
||||
@@ -2169,19 +2169,19 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
H.adjust_bodytemperature(natural*(1/(thermal_protection+1)) + min(thermal_protection * (loc_temp - H.bodytemperature) / BODYTEMP_HEAT_DIVISOR, BODYTEMP_HEATING_MAX))
|
||||
switch((loc_temp - H.bodytemperature)*thermal_protection)
|
||||
if(-INFINITY to -50)
|
||||
H.throw_alert("tempfeel", /obj/screen/alert/cold, 3)
|
||||
H.throw_alert("tempfeel", /atom/movable/screen/alert/cold, 3)
|
||||
if(-50 to -35)
|
||||
H.throw_alert("tempfeel", /obj/screen/alert/cold, 2)
|
||||
H.throw_alert("tempfeel", /atom/movable/screen/alert/cold, 2)
|
||||
if(-35 to -20)
|
||||
H.throw_alert("tempfeel", /obj/screen/alert/cold, 1)
|
||||
H.throw_alert("tempfeel", /atom/movable/screen/alert/cold, 1)
|
||||
if(-20 to 0) //This is the sweet spot where air is considered normal
|
||||
H.clear_alert("tempfeel")
|
||||
if(0 to 15) //When the air around you matches your body's temperature, you'll start to feel warm.
|
||||
H.throw_alert("tempfeel", /obj/screen/alert/hot, 1)
|
||||
H.throw_alert("tempfeel", /atom/movable/screen/alert/hot, 1)
|
||||
if(15 to 30)
|
||||
H.throw_alert("tempfeel", /obj/screen/alert/hot, 2)
|
||||
H.throw_alert("tempfeel", /atom/movable/screen/alert/hot, 2)
|
||||
if(30 to INFINITY)
|
||||
H.throw_alert("tempfeel", /obj/screen/alert/hot, 3)
|
||||
H.throw_alert("tempfeel", /atom/movable/screen/alert/hot, 3)
|
||||
|
||||
// +/- 50 degrees from 310K is the 'safe' zone, where no damage is dealt.
|
||||
if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !HAS_TRAIT(H, TRAIT_RESISTHEAT))
|
||||
@@ -2202,11 +2202,11 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
if (burn_damage)
|
||||
switch(burn_damage)
|
||||
if(0 to 2)
|
||||
H.throw_alert("temp", /obj/screen/alert/sweat, 1)
|
||||
H.throw_alert("temp", /atom/movable/screen/alert/sweat, 1)
|
||||
if(2 to 4)
|
||||
H.throw_alert("temp", /obj/screen/alert/sweat, 2)
|
||||
H.throw_alert("temp", /atom/movable/screen/alert/sweat, 2)
|
||||
else
|
||||
H.throw_alert("temp", /obj/screen/alert/sweat, 3)
|
||||
H.throw_alert("temp", /atom/movable/screen/alert/sweat, 3)
|
||||
burn_damage = burn_damage * heatmod * H.physiology.heat_mod
|
||||
if (H.stat < UNCONSCIOUS && (prob(burn_damage) * 10) / 4) //40% for level 3 damage on humans
|
||||
H.emote("scream")
|
||||
@@ -2219,13 +2219,13 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/cold, multiplicative_slowdown = ((BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR))
|
||||
switch(H.bodytemperature)
|
||||
if(200 to BODYTEMP_COLD_DAMAGE_LIMIT)
|
||||
H.throw_alert("temp", /obj/screen/alert/shiver, 1)
|
||||
H.throw_alert("temp", /atom/movable/screen/alert/shiver, 1)
|
||||
H.apply_damage(COLD_DAMAGE_LEVEL_1*coldmod*H.physiology.cold_mod, BURN)
|
||||
if(120 to 200)
|
||||
H.throw_alert("temp", /obj/screen/alert/shiver, 2)
|
||||
H.throw_alert("temp", /atom/movable/screen/alert/shiver, 2)
|
||||
H.apply_damage(COLD_DAMAGE_LEVEL_2*coldmod*H.physiology.cold_mod, BURN)
|
||||
else
|
||||
H.throw_alert("temp", /obj/screen/alert/shiver, 3)
|
||||
H.throw_alert("temp", /atom/movable/screen/alert/shiver, 3)
|
||||
H.apply_damage(COLD_DAMAGE_LEVEL_3*coldmod*H.physiology.cold_mod, BURN)
|
||||
|
||||
else
|
||||
@@ -2240,21 +2240,21 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
if(HAZARD_HIGH_PRESSURE to INFINITY)
|
||||
if(!HAS_TRAIT(H, TRAIT_RESISTHIGHPRESSURE))
|
||||
H.adjustBruteLoss(min(((adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 ) * PRESSURE_DAMAGE_COEFFICIENT, MAX_HIGH_PRESSURE_DAMAGE) * H.physiology.pressure_mod)
|
||||
H.throw_alert("pressure", /obj/screen/alert/highpressure, 2)
|
||||
H.throw_alert("pressure", /atom/movable/screen/alert/highpressure, 2)
|
||||
else
|
||||
H.clear_alert("pressure")
|
||||
if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE)
|
||||
H.throw_alert("pressure", /obj/screen/alert/highpressure, 1)
|
||||
H.throw_alert("pressure", /atom/movable/screen/alert/highpressure, 1)
|
||||
if(WARNING_LOW_PRESSURE to WARNING_HIGH_PRESSURE)
|
||||
H.clear_alert("pressure")
|
||||
if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE)
|
||||
H.throw_alert("pressure", /obj/screen/alert/lowpressure, 1)
|
||||
H.throw_alert("pressure", /atom/movable/screen/alert/lowpressure, 1)
|
||||
else
|
||||
if(HAS_TRAIT(H, TRAIT_RESISTLOWPRESSURE))
|
||||
H.clear_alert("pressure")
|
||||
else
|
||||
H.adjustBruteLoss(LOW_PRESSURE_DAMAGE * H.physiology.pressure_mod)
|
||||
H.throw_alert("pressure", /obj/screen/alert/lowpressure, 2)
|
||||
H.throw_alert("pressure", /atom/movable/screen/alert/lowpressure, 2)
|
||||
|
||||
//////////
|
||||
// FIRE //
|
||||
|
||||
@@ -124,21 +124,21 @@
|
||||
brutemod = 1.25
|
||||
switch(get_charge(H))
|
||||
if(ETHEREAL_CHARGE_NONE)
|
||||
H.throw_alert("ethereal_charge", /obj/screen/alert/etherealcharge, 3)
|
||||
H.throw_alert("ethereal_charge", /atom/movable/screen/alert/etherealcharge, 3)
|
||||
if(ETHEREAL_CHARGE_NONE to ETHEREAL_CHARGE_LOWPOWER)
|
||||
H.throw_alert("ethereal_charge", /obj/screen/alert/etherealcharge, 2)
|
||||
H.throw_alert("ethereal_charge", /atom/movable/screen/alert/etherealcharge, 2)
|
||||
if(H.health > 10.5)
|
||||
apply_damage(0.65, TOX, null, null, H)
|
||||
brutemod = 1.75
|
||||
if(ETHEREAL_CHARGE_LOWPOWER to ETHEREAL_CHARGE_NORMAL)
|
||||
H.throw_alert("ethereal_charge", /obj/screen/alert/etherealcharge, 1)
|
||||
H.throw_alert("ethereal_charge", /atom/movable/screen/alert/etherealcharge, 1)
|
||||
brutemod = 1.5
|
||||
if(ETHEREAL_CHARGE_FULL to ETHEREAL_CHARGE_OVERLOAD)
|
||||
H.throw_alert("ethereal_overcharge", /obj/screen/alert/ethereal_overcharge, 1)
|
||||
H.throw_alert("ethereal_overcharge", /atom/movable/screen/alert/ethereal_overcharge, 1)
|
||||
apply_damage(0.2, TOX, null, null, H)
|
||||
brutemod = 1.5
|
||||
if(ETHEREAL_CHARGE_OVERLOAD to ETHEREAL_CHARGE_DANGEROUS)
|
||||
H.throw_alert("ethereal_overcharge", /obj/screen/alert/ethereal_overcharge, 2)
|
||||
H.throw_alert("ethereal_overcharge", /atom/movable/screen/alert/ethereal_overcharge, 2)
|
||||
apply_damage(0.65, TOX, null, null, H)
|
||||
brutemod = 1.75
|
||||
if(prob(10)) //10% each tick for ethereals to explosively release excess energy if it reaches dangerous levels
|
||||
|
||||
@@ -505,7 +505,7 @@
|
||||
button_icon_state = "slimeeject"
|
||||
..()
|
||||
|
||||
/datum/action/innate/integrate_extract/ApplyIcon(obj/screen/movable/action_button/current_button, force)
|
||||
/datum/action/innate/integrate_extract/ApplyIcon(atom/movable/screen/movable/action_button/current_button, force)
|
||||
..(current_button, TRUE)
|
||||
if(species && species.current_extract)
|
||||
current_button.add_overlay(mutable_appearance(species.current_extract.icon, species.current_extract.icon_state))
|
||||
@@ -559,7 +559,7 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/action/innate/use_extract/ApplyIcon(obj/screen/movable/action_button/current_button, force)
|
||||
/datum/action/innate/use_extract/ApplyIcon(atom/movable/screen/movable/action_button/current_button, force)
|
||||
..(current_button, TRUE)
|
||||
if(species && species.current_extract)
|
||||
current_button.add_overlay(mutable_appearance(species.current_extract.icon, species.current_extract.icon_state))
|
||||
|
||||
@@ -128,7 +128,7 @@ There are several things that need to be remembered:
|
||||
remove_overlay(UNIFORM_LAYER)
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_W_UNIFORM]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_W_UNIFORM]
|
||||
inv.update_icon()
|
||||
|
||||
if(istype(w_uniform, /obj/item/clothing/under))
|
||||
@@ -180,7 +180,7 @@ There are several things that need to be remembered:
|
||||
remove_overlay(ID_LAYER)
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_ID]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_ID]
|
||||
inv.update_icon()
|
||||
|
||||
var/mutable_appearance/id_overlay = overlays_standing[ID_LAYER]
|
||||
@@ -205,7 +205,7 @@ There are several things that need to be remembered:
|
||||
remove_overlay(GLOVES_LAYER)
|
||||
|
||||
if(client && hud_used && hud_used.inv_slots[SLOT_GLOVES])
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_GLOVES]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_GLOVES]
|
||||
inv.update_icon()
|
||||
|
||||
if(!gloves && bloody_hands)
|
||||
@@ -242,7 +242,7 @@ There are several things that need to be remembered:
|
||||
return
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_GLASSES]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_GLASSES]
|
||||
inv.update_icon()
|
||||
|
||||
if(glasses)
|
||||
@@ -269,7 +269,7 @@ There are several things that need to be remembered:
|
||||
return
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_EARS]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_EARS]
|
||||
inv.update_icon()
|
||||
|
||||
if(ears)
|
||||
@@ -295,7 +295,7 @@ There are several things that need to be remembered:
|
||||
return
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES]
|
||||
inv.update_icon()
|
||||
|
||||
if(dna.species.mutant_bodyparts["taur"])
|
||||
@@ -330,7 +330,7 @@ There are several things that need to be remembered:
|
||||
remove_overlay(SUIT_STORE_LAYER)
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_S_STORE]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_S_STORE]
|
||||
inv.update_icon()
|
||||
|
||||
if(s_store)
|
||||
@@ -357,7 +357,7 @@ There are several things that need to be remembered:
|
||||
return
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD]
|
||||
inv.update_icon()
|
||||
|
||||
if(head)
|
||||
@@ -394,7 +394,7 @@ There are several things that need to be remembered:
|
||||
remove_overlay(BELT_LAYER)
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_BELT]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_BELT]
|
||||
inv.update_icon()
|
||||
|
||||
if(belt)
|
||||
@@ -416,7 +416,7 @@ There are several things that need to be remembered:
|
||||
remove_overlay(SUIT_LAYER)
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_SUIT]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_SUIT]
|
||||
inv.update_icon()
|
||||
|
||||
if(wear_suit)
|
||||
@@ -477,7 +477,7 @@ There are several things that need to be remembered:
|
||||
|
||||
/mob/living/carbon/human/update_inv_pockets()
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv
|
||||
var/atom/movable/screen/inventory/inv
|
||||
|
||||
inv = hud_used.inv_slots[SLOT_L_STORE]
|
||||
inv.update_icon()
|
||||
@@ -506,7 +506,7 @@ There are several things that need to be remembered:
|
||||
return
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
|
||||
inv.update_icon()
|
||||
|
||||
if(wear_mask)
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
if(!targets)
|
||||
return
|
||||
for(var/mob/living/carbon/C in targets)
|
||||
var/obj/screen/alert/give/G = C.throw_alert("[src]", /obj/screen/alert/give)
|
||||
var/atom/movable/screen/alert/give/G = C.throw_alert("[src]", /atom/movable/screen/alert/give)
|
||||
if(!G)
|
||||
return
|
||||
G.setup(C, src, receiving)
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
adjustOxyLoss(1)
|
||||
|
||||
failed_last_breath = 1
|
||||
throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy)
|
||||
throw_alert("not_enough_oxy", /atom/movable/screen/alert/not_enough_oxy)
|
||||
return 0
|
||||
|
||||
var/safe_oxy_min = 16
|
||||
@@ -183,7 +183,7 @@
|
||||
adjustOxyLoss(8)
|
||||
if(prob(20))
|
||||
emote("cough")
|
||||
throw_alert("too_much_oxy", /obj/screen/alert/too_much_oxy)
|
||||
throw_alert("too_much_oxy", /atom/movable/screen/alert/too_much_oxy)
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation)
|
||||
|
||||
if(O2_partialpressure < safe_oxy_min) //Not enough oxygen
|
||||
@@ -197,7 +197,7 @@
|
||||
else
|
||||
adjustOxyLoss(3)
|
||||
failed_last_breath = 1
|
||||
throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy)
|
||||
throw_alert("not_enough_oxy", /atom/movable/screen/alert/not_enough_oxy)
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation)
|
||||
|
||||
else //Enough oxygen
|
||||
@@ -231,7 +231,7 @@
|
||||
if(Toxins_partialpressure > safe_tox_max)
|
||||
var/ratio = (breath.get_moles(GAS_PLASMA)/safe_tox_max) * 10
|
||||
adjustToxLoss(clamp(ratio, MIN_TOXIC_GAS_DAMAGE, MAX_TOXIC_GAS_DAMAGE))
|
||||
throw_alert("too_much_tox", /obj/screen/alert/too_much_tox)
|
||||
throw_alert("too_much_tox", /atom/movable/screen/alert/too_much_tox)
|
||||
else
|
||||
clear_alert("too_much_tox")
|
||||
|
||||
|
||||
@@ -80,13 +80,13 @@
|
||||
if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !HAS_TRAIT(src, TRAIT_RESISTHEAT))
|
||||
switch(bodytemperature)
|
||||
if(360 to 400)
|
||||
throw_alert("temp", /obj/screen/alert/hot, 1)
|
||||
throw_alert("temp", /atom/movable/screen/alert/hot, 1)
|
||||
apply_damage(HEAT_DAMAGE_LEVEL_1, BURN)
|
||||
if(400 to 460)
|
||||
throw_alert("temp", /obj/screen/alert/hot, 2)
|
||||
throw_alert("temp", /atom/movable/screen/alert/hot, 2)
|
||||
apply_damage(HEAT_DAMAGE_LEVEL_2, BURN)
|
||||
if(460 to INFINITY)
|
||||
throw_alert("temp", /obj/screen/alert/hot, 3)
|
||||
throw_alert("temp", /atom/movable/screen/alert/hot, 3)
|
||||
if(on_fire)
|
||||
apply_damage(HEAT_DAMAGE_LEVEL_3, BURN)
|
||||
else
|
||||
@@ -96,13 +96,13 @@
|
||||
if(!istype(loc, /obj/machinery/atmospherics/components/unary/cryo_cell))
|
||||
switch(bodytemperature)
|
||||
if(200 to 260)
|
||||
throw_alert("temp", /obj/screen/alert/cold, 1)
|
||||
throw_alert("temp", /atom/movable/screen/alert/cold, 1)
|
||||
apply_damage(COLD_DAMAGE_LEVEL_1, BURN)
|
||||
if(120 to 200)
|
||||
throw_alert("temp", /obj/screen/alert/cold, 2)
|
||||
throw_alert("temp", /atom/movable/screen/alert/cold, 2)
|
||||
apply_damage(COLD_DAMAGE_LEVEL_2, BURN)
|
||||
if(-INFINITY to 120)
|
||||
throw_alert("temp", /obj/screen/alert/cold, 3)
|
||||
throw_alert("temp", /atom/movable/screen/alert/cold, 3)
|
||||
apply_damage(COLD_DAMAGE_LEVEL_3, BURN)
|
||||
else
|
||||
clear_alert("temp")
|
||||
@@ -117,16 +117,16 @@
|
||||
switch(adjusted_pressure)
|
||||
if(HAZARD_HIGH_PRESSURE to INFINITY)
|
||||
adjustBruteLoss( min( ( (adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) )
|
||||
throw_alert("pressure", /obj/screen/alert/highpressure, 2)
|
||||
throw_alert("pressure", /atom/movable/screen/alert/highpressure, 2)
|
||||
if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE)
|
||||
throw_alert("pressure", /obj/screen/alert/highpressure, 1)
|
||||
throw_alert("pressure", /atom/movable/screen/alert/highpressure, 1)
|
||||
if(WARNING_LOW_PRESSURE to WARNING_HIGH_PRESSURE)
|
||||
clear_alert("pressure")
|
||||
if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE)
|
||||
throw_alert("pressure", /obj/screen/alert/lowpressure, 1)
|
||||
throw_alert("pressure", /atom/movable/screen/alert/lowpressure, 1)
|
||||
else
|
||||
adjustBruteLoss( LOW_PRESSURE_DAMAGE )
|
||||
throw_alert("pressure", /obj/screen/alert/lowpressure, 2)
|
||||
throw_alert("pressure", /atom/movable/screen/alert/lowpressure, 2)
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
overlays_standing[HANDCUFF_LAYER] = legcuffs
|
||||
apply_overlay(LEGCUFF_LAYER)
|
||||
throw_alert("legcuffed", /obj/screen/alert/restrained/legcuffed, new_master = legcuffed)
|
||||
throw_alert("legcuffed", /atom/movable/screen/alert/restrained/legcuffed, new_master = legcuffed)
|
||||
|
||||
//monkey HUD updates for items in our inventory
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
/mob/living/carbon/adjust_drugginess(amount)
|
||||
druggy = max(druggy+amount, 0)
|
||||
if(druggy)
|
||||
overlay_fullscreen("high", /obj/screen/fullscreen/high)
|
||||
throw_alert("high", /obj/screen/alert/high)
|
||||
overlay_fullscreen("high", /atom/movable/screen/fullscreen/high)
|
||||
throw_alert("high", /atom/movable/screen/alert/high)
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "high", /datum/mood_event/high)
|
||||
sound_environment_override = SOUND_ENVIRONMENT_DRUGGED
|
||||
else
|
||||
@@ -18,8 +18,8 @@
|
||||
/mob/living/carbon/set_drugginess(amount)
|
||||
druggy = max(amount, 0)
|
||||
if(druggy)
|
||||
overlay_fullscreen("high", /obj/screen/fullscreen/high)
|
||||
throw_alert("high", /obj/screen/alert/high)
|
||||
overlay_fullscreen("high", /atom/movable/screen/fullscreen/high)
|
||||
throw_alert("high", /atom/movable/screen/alert/high)
|
||||
else
|
||||
clear_fullscreen("high")
|
||||
clear_alert("high")
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
return
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
|
||||
inv?.update_icon()
|
||||
|
||||
if(wear_mask)
|
||||
@@ -105,7 +105,7 @@
|
||||
remove_overlay(NECK_LAYER)
|
||||
|
||||
if(client && hud_used && hud_used.inv_slots[SLOT_NECK])
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_NECK]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_NECK]
|
||||
inv.update_icon()
|
||||
|
||||
if(wear_neck)
|
||||
@@ -119,7 +119,7 @@
|
||||
remove_overlay(BACK_LAYER)
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_BACK]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_BACK]
|
||||
inv?.update_icon()
|
||||
|
||||
if(back)
|
||||
@@ -135,7 +135,7 @@
|
||||
return
|
||||
|
||||
if(client && hud_used)
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD]
|
||||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD]
|
||||
inv?.update_icon()
|
||||
|
||||
if(head)
|
||||
@@ -163,7 +163,7 @@
|
||||
|
||||
overlays_standing[LEGCUFF_LAYER] = legcuffs
|
||||
apply_overlay(LEGCUFF_LAYER)
|
||||
throw_alert("legcuffed", /obj/screen/alert/restrained/legcuffed, new_master = legcuffed)
|
||||
throw_alert("legcuffed", /atom/movable/screen/alert/restrained/legcuffed, new_master = legcuffed)
|
||||
|
||||
//mob HUD updates for items in our inventory
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
/mob/living/carbon/proc/update_hud_handcuffed()
|
||||
if(hud_used)
|
||||
for(var/hand in hud_used.hand_slots)
|
||||
var/obj/screen/inventory/hand/H = hud_used.hand_slots[hand]
|
||||
var/atom/movable/screen/inventory/hand/H = hud_used.hand_slots[hand]
|
||||
if(H)
|
||||
H.update_icon()
|
||||
|
||||
|
||||
@@ -548,7 +548,7 @@
|
||||
var/severity = 0
|
||||
var/healthpercent = (health/maxHealth) * 100
|
||||
if(hud_used?.healthdoll) //to really put you in the boots of a simplemob
|
||||
var/obj/screen/healthdoll/living/livingdoll = hud_used.healthdoll
|
||||
var/atom/movable/screen/healthdoll/living/livingdoll = hud_used.healthdoll
|
||||
switch(healthpercent)
|
||||
if(100 to INFINITY)
|
||||
livingdoll.icon_state = "living0"
|
||||
@@ -579,7 +579,7 @@
|
||||
UNLINT(livingdoll.filters += filter(type="alpha", icon = mob_mask))
|
||||
livingdoll.filters += filter(type="drop_shadow", size = -1)
|
||||
if(severity > 0)
|
||||
overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity)
|
||||
overlay_fullscreen("brute", /atom/movable/screen/fullscreen/brute, severity)
|
||||
else
|
||||
clear_fullscreen("brute")
|
||||
|
||||
@@ -869,11 +869,11 @@
|
||||
clear_alert("gravity")
|
||||
else
|
||||
if(has_gravity >= GRAVITY_DAMAGE_TRESHOLD)
|
||||
throw_alert("gravity", /obj/screen/alert/veryhighgravity)
|
||||
throw_alert("gravity", /atom/movable/screen/alert/veryhighgravity)
|
||||
else
|
||||
throw_alert("gravity", /obj/screen/alert/highgravity)
|
||||
throw_alert("gravity", /atom/movable/screen/alert/highgravity)
|
||||
else
|
||||
throw_alert("gravity", /obj/screen/alert/weightless)
|
||||
throw_alert("gravity", /atom/movable/screen/alert/weightless)
|
||||
if(!override && !is_flying())
|
||||
INVOKE_ASYNC(src, /atom/movable.proc/float, !has_gravity)
|
||||
|
||||
@@ -1159,7 +1159,7 @@
|
||||
visible_message("<span class='warning'>[src] catches fire!</span>", \
|
||||
"<span class='userdanger'>You're set on fire!</span>")
|
||||
new/obj/effect/dummy/lighting_obj/moblight/fire(src)
|
||||
throw_alert("fire", /obj/screen/alert/fire)
|
||||
throw_alert("fire", /atom/movable/screen/alert/fire)
|
||||
update_fire()
|
||||
SEND_SIGNAL(src, COMSIG_LIVING_IGNITED,src)
|
||||
return TRUE
|
||||
|
||||
@@ -539,7 +539,7 @@
|
||||
|
||||
|
||||
//called when the mob receives a bright flash
|
||||
/mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash, override_protection = 0)
|
||||
/mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, override_protection = 0)
|
||||
if((override_protection || get_eye_protection() < intensity) && (override_blindness_check || !(HAS_TRAIT(src, TRAIT_BLIND))))
|
||||
overlay_fullscreen("flash", type)
|
||||
addtimer(CALLBACK(src, .proc/clear_fullscreen, "flash", 25), 25)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
RegisterSignal(src, SIGNAL_TRAIT(TRAIT_SPRINT_LOCKED), .proc/update_sprint_lock)
|
||||
|
||||
/mob/living/proc/update_sprint_icon()
|
||||
var/obj/screen/sprintbutton/S = locate() in hud_used?.static_inventory
|
||||
var/atom/movable/screen/sprintbutton/S = locate() in hud_used?.static_inventory
|
||||
S?.update_icon()
|
||||
|
||||
/mob/living/proc/update_hud_sprint_bar()
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
|
||||
var/multicam_on = FALSE
|
||||
var/obj/screen/movable/pic_in_pic/ai/master_multicam
|
||||
var/atom/movable/screen/movable/pic_in_pic/ai/master_multicam
|
||||
var/list/multicam_screens = list()
|
||||
var/list/all_eyes = list()
|
||||
var/max_multicams = 6
|
||||
|
||||
@@ -1,34 +1,34 @@
|
||||
//Picture in picture
|
||||
|
||||
/obj/screen/movable/pic_in_pic/ai
|
||||
/atom/movable/screen/movable/pic_in_pic/ai
|
||||
var/mob/living/silicon/ai/ai
|
||||
var/mutable_appearance/highlighted_background
|
||||
var/highlighted = FALSE
|
||||
var/mob/camera/aiEye/pic_in_pic/aiEye
|
||||
|
||||
/obj/screen/movable/pic_in_pic/ai/Initialize()
|
||||
/atom/movable/screen/movable/pic_in_pic/ai/Initialize()
|
||||
. = ..()
|
||||
aiEye = new /mob/camera/aiEye/pic_in_pic()
|
||||
aiEye.screen = src
|
||||
|
||||
/obj/screen/movable/pic_in_pic/ai/Destroy()
|
||||
/atom/movable/screen/movable/pic_in_pic/ai/Destroy()
|
||||
set_ai(null)
|
||||
QDEL_NULL(aiEye)
|
||||
return ..()
|
||||
|
||||
/obj/screen/movable/pic_in_pic/ai/Click()
|
||||
/atom/movable/screen/movable/pic_in_pic/ai/Click()
|
||||
..()
|
||||
if(ai)
|
||||
ai.select_main_multicam_window(src)
|
||||
|
||||
/obj/screen/movable/pic_in_pic/ai/make_backgrounds()
|
||||
/atom/movable/screen/movable/pic_in_pic/ai/make_backgrounds()
|
||||
..()
|
||||
highlighted_background = new /mutable_appearance()
|
||||
highlighted_background.icon = 'icons/misc/pic_in_pic.dmi'
|
||||
highlighted_background.icon_state = "background_highlight"
|
||||
highlighted_background.layer = SPACE_LAYER
|
||||
|
||||
/obj/screen/movable/pic_in_pic/ai/add_background()
|
||||
/atom/movable/screen/movable/pic_in_pic/ai/add_background()
|
||||
if((width > 0) && (height > 0))
|
||||
var/matrix/M = matrix()
|
||||
M.Scale(width + 0.5, height + 0.5)
|
||||
@@ -37,35 +37,35 @@
|
||||
standard_background.transform = M
|
||||
add_overlay(highlighted ? highlighted_background : standard_background)
|
||||
|
||||
/obj/screen/movable/pic_in_pic/ai/set_view_size(width, height, do_refresh = TRUE)
|
||||
/atom/movable/screen/movable/pic_in_pic/ai/set_view_size(width, height, do_refresh = TRUE)
|
||||
aiEye.static_visibility_range = (round(max(width, height) / 2) + 1)
|
||||
if(ai)
|
||||
ai.camera_visibility(aiEye)
|
||||
..()
|
||||
|
||||
/obj/screen/movable/pic_in_pic/ai/set_view_center(atom/target, do_refresh = TRUE)
|
||||
/atom/movable/screen/movable/pic_in_pic/ai/set_view_center(atom/target, do_refresh = TRUE)
|
||||
..()
|
||||
aiEye.setLoc(get_turf(target))
|
||||
|
||||
/obj/screen/movable/pic_in_pic/ai/refresh_view()
|
||||
/atom/movable/screen/movable/pic_in_pic/ai/refresh_view()
|
||||
..()
|
||||
aiEye.setLoc(get_turf(center))
|
||||
|
||||
/obj/screen/movable/pic_in_pic/ai/proc/highlight()
|
||||
/atom/movable/screen/movable/pic_in_pic/ai/proc/highlight()
|
||||
if(highlighted)
|
||||
return
|
||||
highlighted = TRUE
|
||||
cut_overlay(standard_background)
|
||||
add_overlay(highlighted_background)
|
||||
|
||||
/obj/screen/movable/pic_in_pic/ai/proc/unhighlight()
|
||||
/atom/movable/screen/movable/pic_in_pic/ai/proc/unhighlight()
|
||||
if(!highlighted)
|
||||
return
|
||||
highlighted = FALSE
|
||||
cut_overlay(highlighted_background)
|
||||
add_overlay(standard_background)
|
||||
|
||||
/obj/screen/movable/pic_in_pic/ai/proc/set_ai(mob/living/silicon/ai/new_ai)
|
||||
/atom/movable/screen/movable/pic_in_pic/ai/proc/set_ai(mob/living/silicon/ai/new_ai)
|
||||
if(ai)
|
||||
ai.multicam_screens -= src
|
||||
ai.all_eyes -= aiEye
|
||||
@@ -120,7 +120,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room)
|
||||
invisibility = INVISIBILITY_OBSERVER
|
||||
mouse_opacity = MOUSE_OPACITY_ICON
|
||||
icon_state = "ai_pip_camera"
|
||||
var/obj/screen/movable/pic_in_pic/ai/screen
|
||||
var/atom/movable/screen/movable/pic_in_pic/ai/screen
|
||||
var/list/cameras_telegraphed = list()
|
||||
var/telegraph_cameras = TRUE
|
||||
var/telegraph_range = 7
|
||||
@@ -204,7 +204,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room)
|
||||
if(!silent)
|
||||
to_chat(src, "<span class='warning'>Cannot place more than [max_multicams] multicamera windows.</span>")
|
||||
return
|
||||
var/obj/screen/movable/pic_in_pic/ai/C = new /obj/screen/movable/pic_in_pic/ai()
|
||||
var/atom/movable/screen/movable/pic_in_pic/ai/C = new /atom/movable/screen/movable/pic_in_pic/ai()
|
||||
C.set_view_size(3, 3, FALSE)
|
||||
C.set_view_center(get_turf(eyeobj))
|
||||
C.set_ai(src)
|
||||
@@ -235,7 +235,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room)
|
||||
reset_perspective(GLOB.ai_camera_room_landmark)
|
||||
if(client)
|
||||
for(var/V in multicam_screens)
|
||||
var/obj/screen/movable/pic_in_pic/P = V
|
||||
var/atom/movable/screen/movable/pic_in_pic/P = V
|
||||
P.show_to(client)
|
||||
|
||||
/mob/living/silicon/ai/proc/end_multicam()
|
||||
@@ -245,13 +245,13 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room)
|
||||
select_main_multicam_window(null)
|
||||
if(client)
|
||||
for(var/V in multicam_screens)
|
||||
var/obj/screen/movable/pic_in_pic/P = V
|
||||
var/atom/movable/screen/movable/pic_in_pic/P = V
|
||||
P.unshow_to(client)
|
||||
reset_perspective()
|
||||
to_chat(src, "<span class='notice'>Multiple-camera viewing mode deactivated.</span>")
|
||||
|
||||
|
||||
/mob/living/silicon/ai/proc/select_main_multicam_window(obj/screen/movable/pic_in_pic/ai/P)
|
||||
/mob/living/silicon/ai/proc/select_main_multicam_window(atom/movable/screen/movable/pic_in_pic/ai/P)
|
||||
if(master_multicam == P)
|
||||
return
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
make_laws()
|
||||
|
||||
/mob/living/silicon/proc/post_lawchange(announce = TRUE)
|
||||
throw_alert("newlaw", /obj/screen/alert/newlaw)
|
||||
throw_alert("newlaw", /atom/movable/screen/alert/newlaw)
|
||||
if(announce && last_lawchange_announce != world.time)
|
||||
to_chat(src, "<b>Your laws have been changed.</b>")
|
||||
addtimer(CALLBACK(src, .proc/show_laws), 0)
|
||||
|
||||
@@ -58,15 +58,15 @@
|
||||
if(0.75 to INFINITY)
|
||||
clear_alert("charge")
|
||||
if(0.5 to 0.75)
|
||||
throw_alert("charge", /obj/screen/alert/lowcell, 1)
|
||||
throw_alert("charge", /atom/movable/screen/alert/lowcell, 1)
|
||||
if(0.25 to 0.5)
|
||||
throw_alert("charge", /obj/screen/alert/lowcell, 2)
|
||||
throw_alert("charge", /atom/movable/screen/alert/lowcell, 2)
|
||||
if(0.01 to 0.25)
|
||||
throw_alert("charge", /obj/screen/alert/lowcell, 3)
|
||||
throw_alert("charge", /atom/movable/screen/alert/lowcell, 3)
|
||||
else
|
||||
throw_alert("charge", /obj/screen/alert/emptycell)
|
||||
throw_alert("charge", /atom/movable/screen/alert/emptycell)
|
||||
else
|
||||
throw_alert("charge", /obj/screen/alert/nocell)
|
||||
throw_alert("charge", /atom/movable/screen/alert/nocell)
|
||||
|
||||
//Robots on fire
|
||||
/mob/living/silicon/robot/handle_fire()
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
robot_modules_background.layer = HUD_LAYER //Objects that appear on screen are on layer ABOVE_HUD_LAYER, UI should be just below it.
|
||||
robot_modules_background.plane = HUD_PLANE
|
||||
|
||||
inv1 = new /obj/screen/robot/module1()
|
||||
inv2 = new /obj/screen/robot/module2()
|
||||
inv3 = new /obj/screen/robot/module3()
|
||||
inv1 = new /atom/movable/screen/robot/module1()
|
||||
inv2 = new /atom/movable/screen/robot/module2()
|
||||
inv3 = new /atom/movable/screen/robot/module3()
|
||||
|
||||
previous_health = health
|
||||
|
||||
@@ -598,7 +598,7 @@
|
||||
if(wires.is_cut(WIRE_LOCKDOWN))
|
||||
state = TRUE
|
||||
if(state)
|
||||
throw_alert("locked", /obj/screen/alert/locked)
|
||||
throw_alert("locked", /atom/movable/screen/alert/locked)
|
||||
else
|
||||
clear_alert("locked")
|
||||
locked_down = state
|
||||
@@ -611,7 +611,7 @@
|
||||
module.rebuild_modules()
|
||||
update_icons()
|
||||
if(emagged)
|
||||
throw_alert("hacked", /obj/screen/alert/hacked)
|
||||
throw_alert("hacked", /atom/movable/screen/alert/hacked)
|
||||
else
|
||||
clear_alert("hacked")
|
||||
|
||||
|
||||
@@ -26,15 +26,15 @@
|
||||
var/previous_health
|
||||
//Hud stuff
|
||||
|
||||
var/obj/screen/inv1 = null
|
||||
var/obj/screen/inv2 = null
|
||||
var/obj/screen/inv3 = null
|
||||
var/obj/screen/lamp_button = null
|
||||
var/obj/screen/thruster_button = null
|
||||
var/obj/screen/hands = null
|
||||
var/atom/movable/screen/inv1 = null
|
||||
var/atom/movable/screen/inv2 = null
|
||||
var/atom/movable/screen/inv3 = null
|
||||
var/atom/movable/screen/lamp_button = null
|
||||
var/atom/movable/screen/thruster_button = null
|
||||
var/atom/movable/screen/hands = null
|
||||
|
||||
var/shown_robot_modules = 0 //Used to determine whether they have the module menu shown or not
|
||||
var/obj/screen/robot_modules_background
|
||||
var/atom/movable/screen/robot_modules_background
|
||||
|
||||
//3 Modules can be activated at any one time.
|
||||
var/obj/item/robot_module/module = null
|
||||
@@ -90,14 +90,14 @@
|
||||
///Lamp brightness. Starts at 3, but can be 1 - 5.
|
||||
var/lamp_intensity = 3
|
||||
///Lamp button reference
|
||||
var/obj/screen/robot/lamp/lampButton
|
||||
var/atom/movable/screen/robot/lamp/lampButton
|
||||
|
||||
var/sight_mode = 0
|
||||
hud_possible = list(ANTAG_HUD, DIAG_STAT_HUD, DIAG_HUD, DIAG_BATT_HUD, DIAG_TRACK_HUD)
|
||||
|
||||
///The reference to the built-in tablet that borgs carry.
|
||||
var/obj/item/modular_computer/tablet/integrated/modularInterface
|
||||
var/obj/screen/robot/modPC/interfaceButton
|
||||
var/atom/movable/screen/robot/modPC/interfaceButton
|
||||
|
||||
var/list/upgrades = list()
|
||||
|
||||
|
||||
@@ -144,6 +144,6 @@
|
||||
P.on_hit(src, 0, def_zone)
|
||||
return BULLET_ACT_HIT
|
||||
|
||||
/mob/living/silicon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash/static)
|
||||
/mob/living/silicon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash/static)
|
||||
if(affect_silicon)
|
||||
return ..()
|
||||
|
||||
@@ -55,7 +55,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
|
||||
var/cooldown = 0
|
||||
var/mob/living/carbon/summoner
|
||||
var/range = 13 //how far from the user the spirit can be
|
||||
var/toggle_button_type = /obj/screen/guardian/ToggleMode/Inactive //what sort of toggle button the hud uses
|
||||
var/toggle_button_type = /atom/movable/screen/guardian/ToggleMode/Inactive //what sort of toggle button the hud uses
|
||||
var/playstyle_string = "<span class='holoparasite bold'>You are a standard Guardian. You shouldn't exist!</span>"
|
||||
var/magic_fluff_string = "<span class='holoparasite'>You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!</span>"
|
||||
var/tech_fluff_string = "<span class='holoparasite'>BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!</span>"
|
||||
|
||||
@@ -11,11 +11,11 @@
|
||||
tech_fluff_string = "<span class='holoparasite'>Boot sequence complete. Assassin modules loaded. Holoparasite swarm online.</span>"
|
||||
carp_fluff_string = "<span class='holoparasite'>CARP CARP CARP! Caught one! It's an assassin carp! Just when you thought it was safe to go back to the water... which is unhelpful, because we're in space.</span>"
|
||||
|
||||
toggle_button_type = /obj/screen/guardian/ToggleMode/Assassin
|
||||
toggle_button_type = /atom/movable/screen/guardian/ToggleMode/Assassin
|
||||
var/toggle = FALSE
|
||||
var/stealthcooldown = 100
|
||||
var/obj/screen/alert/canstealthalert
|
||||
var/obj/screen/alert/instealthalert
|
||||
var/atom/movable/screen/alert/canstealthalert
|
||||
var/atom/movable/screen/alert/instealthalert
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/assassin/Initialize()
|
||||
. = ..()
|
||||
@@ -86,12 +86,12 @@
|
||||
if(stealthcooldown <= world.time)
|
||||
if(toggle)
|
||||
if(!instealthalert)
|
||||
instealthalert = throw_alert("instealth", /obj/screen/alert/instealth)
|
||||
instealthalert = throw_alert("instealth", /atom/movable/screen/alert/instealth)
|
||||
clear_alert("canstealth")
|
||||
canstealthalert = null
|
||||
else
|
||||
if(!canstealthalert)
|
||||
canstealthalert = throw_alert("canstealth", /obj/screen/alert/canstealth)
|
||||
canstealthalert = throw_alert("canstealth", /atom/movable/screen/alert/canstealth)
|
||||
clear_alert("instealth")
|
||||
instealthalert = null
|
||||
else
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
tech_fluff_string = "<span class='holoparasite'>Boot sequence complete. Charge modules loaded. Holoparasite swarm online.</span>"
|
||||
carp_fluff_string = "<span class='holoparasite'>CARP CARP CARP! Caught one! It's a charger carp, that likes running at people. But it doesn't have any legs...</span>"
|
||||
var/charging = 0
|
||||
var/obj/screen/alert/chargealert
|
||||
var/atom/movable/screen/alert/chargealert
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/charger/BiologicalLife(seconds, times_fired)
|
||||
if(!(. = ..()))
|
||||
return
|
||||
if(ranged_cooldown <= world.time)
|
||||
if(!chargealert)
|
||||
chargealert = throw_alert("charge", /obj/screen/alert/cancharge)
|
||||
chargealert = throw_alert("charge", /atom/movable/screen/alert/cancharge)
|
||||
else
|
||||
clear_alert("charge")
|
||||
chargealert = null
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
magic_fluff_string = "<span class='holoparasite'>..And draw the Guardian, a stalwart protector that never leaves the side of its charge.</span>"
|
||||
tech_fluff_string = "<span class='holoparasite'>Boot sequence complete. Protector modules loaded. Holoparasite swarm online.</span>"
|
||||
carp_fluff_string = "<span class='holoparasite'>CARP CARP CARP! You caught one! Wait, no... it caught you! The fisher has become the fishy.</span>"
|
||||
toggle_button_type = /obj/screen/guardian/ToggleMode
|
||||
toggle_button_type = /atom/movable/screen/guardian/ToggleMode
|
||||
var/toggle = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/protector/ex_act(severity)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
carp_fluff_string = "<span class='holoparasite'>CARP CARP CARP! Caught one, it's a ranged carp. This fishy can watch people pee in the ocean.</span>"
|
||||
see_invisible = SEE_INVISIBLE_LIVING
|
||||
see_in_dark = 8
|
||||
toggle_button_type = /obj/screen/guardian/ToggleMode
|
||||
toggle_button_type = /atom/movable/screen/guardian/ToggleMode
|
||||
var/list/snares = list()
|
||||
var/toggle = FALSE
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
magic_fluff_string = "<span class='holoparasite'>..And draw the CMO, a potent force of life... and death.</span>"
|
||||
carp_fluff_string = "<span class='holoparasite'>CARP CARP CARP! You caught a support carp. It's a kleptocarp!</span>"
|
||||
tech_fluff_string = "<span class='holoparasite'>Boot sequence complete. Support modules active. Holoparasite swarm online.</span>"
|
||||
toggle_button_type = /obj/screen/guardian/ToggleMode
|
||||
toggle_button_type = /atom/movable/screen/guardian/ToggleMode
|
||||
var/obj/structure/receiving_pad/beacon
|
||||
var/beacon_cooldown = 0
|
||||
var/toggle = FALSE
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
status_type = STATUS_EFFECT_MULTIPLE
|
||||
alert_type = null
|
||||
tick_interval = 1
|
||||
var/obj/screen/seedling/seedling_screen_object
|
||||
var/atom/movable/screen/seedling/seedling_screen_object
|
||||
var/atom/target
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
|
||||
/datum/status_effect/seedling_beam_indicator/on_apply()
|
||||
if(owner.client)
|
||||
seedling_screen_object = new /obj/screen/seedling()
|
||||
seedling_screen_object = new /atom/movable/screen/seedling()
|
||||
owner.client.screen += seedling_screen_object
|
||||
tick()
|
||||
return ..()
|
||||
@@ -98,7 +98,7 @@
|
||||
final.Turn(target_angle)
|
||||
seedling_screen_object.transform = final
|
||||
|
||||
/obj/screen/seedling
|
||||
/atom/movable/screen/seedling
|
||||
icon = 'icons/mob/jungle/arachnid.dmi'
|
||||
icon_state = "seedling_beam_indicator"
|
||||
screen_loc = "CENTER:-16,CENTER:-16"
|
||||
|
||||
@@ -339,11 +339,11 @@ Difficulty: Extremely Hard
|
||||
id = "ice_block_talisman"
|
||||
duration = 25
|
||||
status_type = STATUS_EFFECT_REFRESH
|
||||
alert_type = /obj/screen/alert/status_effect/ice_block_talisman
|
||||
alert_type = /atom/movable/screen/alert/status_effect/ice_block_talisman
|
||||
/// Stored icon overlay for the hit mob, removed when effect is removed
|
||||
var/icon/cube
|
||||
|
||||
/obj/screen/alert/status_effect/ice_block_talisman
|
||||
/atom/movable/screen/alert/status_effect/ice_block_talisman
|
||||
name = "Frozen Solid"
|
||||
desc = "You're frozen inside an ice cube, and cannot move!"
|
||||
icon_state = "frozen"
|
||||
|
||||
@@ -113,7 +113,7 @@ While using this makes the system rely on OnFire, it still gives options for tim
|
||||
severity = 7
|
||||
hud_used.healths.icon_state = "elite_health[severity]"
|
||||
if(severity > 0)
|
||||
overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity)
|
||||
overlay_fullscreen("brute", /atom/movable/screen/fullscreen/brute, severity)
|
||||
else
|
||||
clear_fullscreen("brute")
|
||||
|
||||
|
||||
@@ -45,10 +45,10 @@
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/handle_temperature_damage()
|
||||
if(bodytemperature < minbodytemp)
|
||||
adjustBruteLoss(10)
|
||||
throw_alert("temp", /obj/screen/alert/cold, 2)
|
||||
throw_alert("temp", /atom/movable/screen/alert/cold, 2)
|
||||
else if(bodytemperature > maxbodytemp)
|
||||
adjustBruteLoss(15)
|
||||
throw_alert("temp", /obj/screen/alert/hot, 3)
|
||||
throw_alert("temp", /atom/movable/screen/alert/hot, 3)
|
||||
else
|
||||
clear_alert("temp")
|
||||
|
||||
|
||||
@@ -554,7 +554,7 @@
|
||||
var/oindex = active_hand_index
|
||||
active_hand_index = hand_index
|
||||
if(hud_used)
|
||||
var/obj/screen/inventory/hand/H
|
||||
var/atom/movable/screen/inventory/hand/H
|
||||
H = hud_used.hand_slots["[hand_index]"]
|
||||
if(H)
|
||||
H.update_icon()
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
coretype = text2path("/obj/item/slime_extract/[sanitizedcolour]")
|
||||
regenerate_icons()
|
||||
|
||||
/mob/living/simple_animal/slime/proc/update_name()
|
||||
/mob/living/simple_animal/slime/update_name()
|
||||
if(slime_name_regex.Find(name))
|
||||
number = rand(1, 1000)
|
||||
name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])"
|
||||
|
||||
@@ -599,7 +599,7 @@
|
||||
|
||||
/mob/living/proc/become_nearsighted(source)
|
||||
if(!HAS_TRAIT(src, TRAIT_NEARSIGHT))
|
||||
overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1)
|
||||
overlay_fullscreen("nearsighted", /atom/movable/screen/fullscreen/impaired, 1)
|
||||
ADD_TRAIT(src, TRAIT_NEARSIGHT, source)
|
||||
|
||||
/mob/living/proc/cure_husk(source)
|
||||
|
||||
@@ -884,7 +884,7 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0)
|
||||
|
||||
/mob/proc/sync_lighting_plane_alpha()
|
||||
if(hud_used)
|
||||
var/obj/screen/plane_master/lighting/L = hud_used.plane_masters["[LIGHTING_PLANE]"]
|
||||
var/atom/movable/screen/plane_master/lighting/L = hud_used.plane_masters["[LIGHTING_PLANE]"]
|
||||
if (L)
|
||||
L.alpha = lighting_alpha
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
|
||||
var/registered_z
|
||||
|
||||
var/list/alerts = list() // contains /obj/screen/alert only // On /mob so clientless mobs will throw alerts properly
|
||||
var/list/alerts = list() // contains /atom/movable/screen/alert only // On /mob so clientless mobs will throw alerts properly
|
||||
var/list/screens = list()
|
||||
var/list/client_colours = list()
|
||||
var/hud_type = /datum/hud
|
||||
|
||||
@@ -362,7 +362,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
|
||||
if(flashwindow)
|
||||
window_flash(O.client)
|
||||
if(source)
|
||||
var/obj/screen/alert/notify_action/A = O.throw_alert("[REF(source)]_notify_action", /obj/screen/alert/notify_action)
|
||||
var/atom/movable/screen/alert/notify_action/A = O.throw_alert("[REF(source)]_notify_action", /atom/movable/screen/alert/notify_action)
|
||||
if(A)
|
||||
if(O.client.prefs && O.client.prefs.UI_style)
|
||||
A.icon = ui_style2icon(O.client.prefs.UI_style)
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
//1: r-leg 2: groin 3: l-leg
|
||||
|
||||
/client/proc/check_has_body_select()
|
||||
return mob && mob.hud_used && mob.hud_used.zone_select && istype(mob.hud_used.zone_select, /obj/screen/zone_sel)
|
||||
return mob && mob.hud_used && mob.hud_used.zone_select && istype(mob.hud_used.zone_select, /atom/movable/screen/zone_sel)
|
||||
|
||||
/client/verb/body_toggle_head()
|
||||
set name = "body-toggle-head"
|
||||
@@ -285,7 +285,7 @@
|
||||
else
|
||||
next_in_line = BODY_ZONE_HEAD
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone(next_in_line, mob)
|
||||
|
||||
/client/verb/body_r_arm()
|
||||
@@ -295,7 +295,7 @@
|
||||
if(!check_has_body_select())
|
||||
return
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone(BODY_ZONE_R_ARM, mob)
|
||||
|
||||
/client/verb/body_chest()
|
||||
@@ -305,7 +305,7 @@
|
||||
if(!check_has_body_select())
|
||||
return
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone(BODY_ZONE_CHEST, mob)
|
||||
|
||||
/client/verb/body_l_arm()
|
||||
@@ -315,7 +315,7 @@
|
||||
if(!check_has_body_select())
|
||||
return
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone(BODY_ZONE_L_ARM, mob)
|
||||
|
||||
/client/verb/body_r_leg()
|
||||
@@ -325,7 +325,7 @@
|
||||
if(!check_has_body_select())
|
||||
return
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone(BODY_ZONE_R_LEG, mob)
|
||||
|
||||
/client/verb/body_groin()
|
||||
@@ -335,7 +335,7 @@
|
||||
if(!check_has_body_select())
|
||||
return
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone(BODY_ZONE_PRECISE_GROIN, mob)
|
||||
|
||||
/client/verb/body_l_leg()
|
||||
@@ -345,7 +345,7 @@
|
||||
if(!check_has_body_select())
|
||||
return
|
||||
|
||||
var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
|
||||
selector.set_selected_zone(BODY_ZONE_L_LEG, mob)
|
||||
|
||||
/client/verb/toggle_walk_run()
|
||||
@@ -364,7 +364,7 @@
|
||||
return FALSE
|
||||
m_intent = MOVE_INTENT_RUN
|
||||
if(hud_used && hud_used.static_inventory)
|
||||
for(var/obj/screen/mov_intent/selector in hud_used.static_inventory)
|
||||
for(var/atom/movable/screen/mov_intent/selector in hud_used.static_inventory)
|
||||
selector.update_icon()
|
||||
|
||||
/mob/verb/up()
|
||||
|
||||
@@ -52,8 +52,8 @@
|
||||
/mob/proc/update_blindness()
|
||||
if(eye_blind) // UNCONSCIOUS or has blind trait, or has temporary blindness
|
||||
if(stat == CONSCIOUS || stat == SOFT_CRIT)
|
||||
throw_alert("blind", /obj/screen/alert/blind)
|
||||
overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
|
||||
throw_alert("blind", /atom/movable/screen/alert/blind)
|
||||
overlay_fullscreen("blind", /atom/movable/screen/fullscreen/blind)
|
||||
// You are blind why should you be able to make out details like color, only shapes near you
|
||||
// add_client_colour(/datum/client_colour/monochrome/blind)
|
||||
else // CONSCIOUS no blind trait, no blindness
|
||||
@@ -91,7 +91,7 @@
|
||||
var/list/screens = list(hud_used.plane_masters["[GAME_PLANE]"], hud_used.plane_masters["[FLOOR_PLANE]"],
|
||||
hud_used.plane_masters["[WALL_PLANE]"], hud_used.plane_masters["[ABOVE_WALL_PLANE]"])
|
||||
for(var/A in screens)
|
||||
var/obj/screen/plane_master/P = A
|
||||
var/atom/movable/screen/plane_master/P = A
|
||||
P.add_filter("blurry_eyes", 2, EYE_BLUR(clamp(eye_blurry*0.1,0.6,3)))
|
||||
|
||||
/mob/proc/remove_eyeblur()
|
||||
@@ -100,7 +100,7 @@
|
||||
var/list/screens = list(hud_used.plane_masters["[GAME_PLANE]"], hud_used.plane_masters["[FLOOR_PLANE]"],
|
||||
hud_used.plane_masters["[WALL_PLANE]"], hud_used.plane_masters["[ABOVE_WALL_PLANE]"])
|
||||
for(var/A in screens)
|
||||
var/obj/screen/plane_master/P = A
|
||||
var/atom/movable/screen/plane_master/P = A
|
||||
P.remove_filter("blurry_eyes")
|
||||
|
||||
///Adjust the drugginess of a mob
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
|
||||
/obj/item/modular_computer/MouseDrop(obj/over_object, src_location, over_location)
|
||||
var/mob/M = usr
|
||||
if((!istype(over_object, /obj/screen)) && usr.canUseTopic(src, BE_CLOSE))
|
||||
if((!istype(over_object, /atom/movable/screen)) && usr.canUseTopic(src, BE_CLOSE))
|
||||
return attack_self(M)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -68,11 +68,11 @@
|
||||
try_toggle_open(usr)
|
||||
|
||||
/obj/item/modular_computer/laptop/MouseDrop(obj/over_object, src_location, over_location)
|
||||
if(istype(over_object, /obj/screen/inventory/hand) || over_object == usr)
|
||||
var/obj/screen/inventory/hand/H = over_object
|
||||
if(istype(over_object, /atom/movable/screen/inventory/hand) || over_object == usr)
|
||||
var/atom/movable/screen/inventory/hand/H = over_object
|
||||
var/mob/M = usr
|
||||
|
||||
if(!istype(over_object, /obj/screen/inventory/hand))
|
||||
if(!istype(over_object, /atom/movable/screen/inventory/hand))
|
||||
M.put_in_active_hand(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -21,10 +21,10 @@
|
||||
|
||||
// Stuff needed to render the map
|
||||
var/map_name
|
||||
var/obj/screen/map_view/cam_screen
|
||||
var/atom/movable/screen/map_view/cam_screen
|
||||
/// All the plane masters that need to be applied.
|
||||
var/list/cam_plane_masters
|
||||
var/obj/screen/background/cam_background
|
||||
var/atom/movable/screen/background/cam_background
|
||||
|
||||
/datum/computer_file/program/secureye/New()
|
||||
. = ..()
|
||||
@@ -42,8 +42,8 @@
|
||||
cam_screen.del_on_map_removal = FALSE
|
||||
cam_screen.screen_loc = "[map_name]:1,1"
|
||||
cam_plane_masters = list()
|
||||
for(var/plane in subtypesof(/obj/screen/plane_master))
|
||||
var/obj/screen/instance = new plane()
|
||||
for(var/plane in subtypesof(/atom/movable/screen/plane_master))
|
||||
var/atom/movable/screen/instance = new plane()
|
||||
instance.assigned_map = map_name
|
||||
instance.del_on_map_removal = FALSE
|
||||
instance.screen_loc = "[map_name]:CENTER"
|
||||
|
||||
@@ -101,8 +101,8 @@
|
||||
if(over_object == M)
|
||||
M.put_in_hands(src)
|
||||
|
||||
else if(istype(over_object, /obj/screen/inventory/hand))
|
||||
var/obj/screen/inventory/hand/H = over_object
|
||||
else if(istype(over_object, /atom/movable/screen/inventory/hand))
|
||||
var/atom/movable/screen/inventory/hand/H = over_object
|
||||
M.putItemFromInventoryInHandIfPossible(src, H.held_index)
|
||||
add_fingerprint(M)
|
||||
|
||||
|
||||
@@ -52,8 +52,8 @@
|
||||
if(over_object == M)
|
||||
M.put_in_hands(src)
|
||||
|
||||
else if(istype(over_object, /obj/screen/inventory/hand))
|
||||
var/obj/screen/inventory/hand/H = over_object
|
||||
else if(istype(over_object, /atom/movable/screen/inventory/hand))
|
||||
var/atom/movable/screen/inventory/hand/H = over_object
|
||||
M.putItemFromInventoryInHandIfPossible(src, H.held_index)
|
||||
|
||||
add_fingerprint(M)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -32,7 +32,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/gravity_generator/ex_act(severity, target)
|
||||
if(severity == 1) // Very sturdy.
|
||||
if(severity >= EXPLODE_DEVASTATE) // Very sturdy.
|
||||
set_broken()
|
||||
|
||||
/obj/machinery/gravity_generator/blob_act(obj/structure/blob/B)
|
||||
@@ -40,12 +40,13 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
set_broken()
|
||||
|
||||
/obj/machinery/gravity_generator/zap_act(power, zap_flags)
|
||||
..()
|
||||
. = ..()
|
||||
if(zap_flags & ZAP_MACHINE_EXPLOSIVE)
|
||||
qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over
|
||||
|
||||
/obj/machinery/gravity_generator/update_icon_state()
|
||||
icon_state = "[get_status()]_[sprite_number]"
|
||||
return ..()
|
||||
|
||||
/obj/machinery/gravity_generator/proc/get_status()
|
||||
return "off"
|
||||
@@ -80,14 +81,19 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
/obj/machinery/gravity_generator/part/get_status()
|
||||
return main_part?.get_status()
|
||||
|
||||
/obj/machinery/gravity_generator/part/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
|
||||
return main_part.attack_hand(user)
|
||||
/obj/machinery/gravity_generator/part/attack_hand(mob/user, list/modifiers)
|
||||
return main_part.attack_hand(user, modifiers)
|
||||
|
||||
/obj/machinery/gravity_generator/part/set_broken()
|
||||
..()
|
||||
if(main_part && !(main_part.stat & BROKEN))
|
||||
main_part.set_broken()
|
||||
|
||||
/// Used to eat args
|
||||
/obj/machinery/gravity_generator/part/proc/on_update_icon(obj/machinery/gravity_generator/source, updates, updated)
|
||||
SIGNAL_HANDLER
|
||||
return update_appearance(updates)
|
||||
|
||||
//
|
||||
// Generator which spawns with the station.
|
||||
//
|
||||
@@ -124,7 +130,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
var/charge_count = 100
|
||||
var/current_overlay = null
|
||||
var/broken_state = 0
|
||||
var/setting = 1 //Gravity value when on
|
||||
var/setting = 1 //Gravity value when on
|
||||
|
||||
/obj/machinery/gravity_generator/main/Destroy() // If we somehow get deleted, remove all of our other parts.
|
||||
investigate_log("was destroyed!", INVESTIGATE_GRAVITY)
|
||||
@@ -149,13 +155,13 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
if(count == 5) // Middle
|
||||
middle = part
|
||||
if(count <= 3) // Their sprite is the top part of the generator
|
||||
part.density = FALSE
|
||||
part.density= 0
|
||||
part.layer = WALL_OBJ_LAYER
|
||||
part.sprite_number = count
|
||||
part.main_part = src
|
||||
parts += part
|
||||
part.update_icon()
|
||||
part.RegisterSignal(src, COMSIG_ATOM_UPDATED_ICON, /atom/proc/update_icon)
|
||||
part.update_appearance()
|
||||
part.RegisterSignal(src, COMSIG_ATOM_UPDATED_ICON, /obj/machinery/gravity_generator/part/proc/on_update_icon)
|
||||
|
||||
/obj/machinery/gravity_generator/main/proc/connected_parts()
|
||||
return parts.len == 8
|
||||
@@ -178,7 +184,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
if(M.stat & BROKEN)
|
||||
M.set_fix()
|
||||
broken_state = FALSE
|
||||
update_icon()
|
||||
update_appearance()
|
||||
set_power()
|
||||
|
||||
// Interaction
|
||||
@@ -188,33 +194,33 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
switch(broken_state)
|
||||
if(GRAV_NEEDS_SCREWDRIVER)
|
||||
if(I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
to_chat(user, "<span class='notice'>You secure the screws of the framework.</span>")
|
||||
to_chat(user, span_notice("You secure the screws of the framework."))
|
||||
I.play_tool_sound(src)
|
||||
broken_state++
|
||||
update_icon()
|
||||
update_appearance()
|
||||
return
|
||||
if(GRAV_NEEDS_WELDING)
|
||||
if(I.tool_behaviour == TOOL_WELDER)
|
||||
if(I.use_tool(src, user, 0, volume=50, amount=1))
|
||||
to_chat(user, "<span class='notice'>You mend the damaged framework.</span>")
|
||||
to_chat(user, span_notice("You mend the damaged framework."))
|
||||
broken_state++
|
||||
update_icon()
|
||||
update_appearance()
|
||||
return
|
||||
if(GRAV_NEEDS_PLASTEEL)
|
||||
if(istype(I, /obj/item/stack/sheet/plasteel))
|
||||
var/obj/item/stack/sheet/plasteel/PS = I
|
||||
if(PS.get_amount() >= 10)
|
||||
PS.use(10)
|
||||
to_chat(user, "<span class='notice'>You add the plating to the framework.</span>")
|
||||
to_chat(user, span_notice("You add the plating to the framework."))
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 75, TRUE)
|
||||
broken_state++
|
||||
update_icon()
|
||||
update_appearance()
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need 10 sheets of plasteel!</span>")
|
||||
to_chat(user, span_warning("You need 10 sheets of plasteel!"))
|
||||
return
|
||||
if(GRAV_NEEDS_WRENCH)
|
||||
if(I.tool_behaviour == TOOL_WRENCH)
|
||||
to_chat(user, "<span class='notice'>You secure the plating to the framework.</span>")
|
||||
to_chat(user, span_notice("You secure the plating to the framework."))
|
||||
I.play_tool_sound(src)
|
||||
set_fix()
|
||||
return
|
||||
@@ -238,7 +244,8 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
return data
|
||||
|
||||
/obj/machinery/gravity_generator/main/ui_act(action, params)
|
||||
if(..())
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
switch(action)
|
||||
@@ -270,7 +277,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
|
||||
charging_state = new_state ? POWER_UP : POWER_DOWN // Startup sequence animation.
|
||||
investigate_log("is now [charging_state == POWER_UP ? "charging" : "discharging"].", INVESTIGATE_GRAVITY)
|
||||
update_icon()
|
||||
update_appearance()
|
||||
|
||||
// Set the state of the gravity.
|
||||
/obj/machinery/gravity_generator/main/proc/set_state(new_state)
|
||||
@@ -291,7 +298,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
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)]")
|
||||
|
||||
update_icon()
|
||||
update_appearance()
|
||||
update_list()
|
||||
src.updateUsrDialog()
|
||||
if(alert)
|
||||
@@ -391,13 +398,16 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
// Misc
|
||||
|
||||
/obj/item/paper/guides/jobs/engi/gravity_gen
|
||||
info = {"
|
||||
# Gravity Generator Instructions For Dummies
|
||||
Surprisingly, gravity isn't that hard to make! All you have to do is inject deadly radioactive minerals into a ball of energy and you have yourself gravity! You can turn the machine on or off when required but you must remember that the generator will EMIT RADIATION when charging or discharging, you can tell it is charging or discharging by the noise it makes, so please WEAR PROTECTIVE CLOTHING.</p>
|
||||
### It blew up!
|
||||
Don't panic! The gravity generator was designed to be easily repaired. If, somehow, the sturdy framework did not survive then please proceed to panic; otherwise follow these steps.
|
||||
1. Secure the screws of the framework with a screwdriver.
|
||||
2. Mend the damaged framework with a welding tool.
|
||||
3. Add additional plasteel plating.
|
||||
4. Secure the additional plating with a wrench.
|
||||
"}
|
||||
name = "paper- 'Generate your own gravity!'"
|
||||
info = {"<h1>Gravity Generator Instructions For Dummies</h1>
|
||||
<p>Surprisingly, gravity isn't that hard to make! All you have to do is inject deadly radioactive minerals into a ball of
|
||||
energy and you have yourself gravity! You can turn the machine on or off when required but you must remember that the generator
|
||||
will EMIT RADIATION when charging or discharging, you can tell it is charging or discharging by the noise it makes, so please WEAR PROTECTIVE CLOTHING.</p>
|
||||
<br>
|
||||
<h3>It blew up!</h3>
|
||||
<p>Don't panic! The gravity generator was designed to be easily repaired. If, somehow, the sturdy framework did not survive then
|
||||
please proceed to panic; otherwise follow these steps.</p><ol>
|
||||
<li>Secure the screws of the framework with a screwdriver.</li>
|
||||
<li>Mend the damaged framework with a welding tool.</li>
|
||||
<li>Add additional plasteel plating.</li>
|
||||
<li>Secure the additional plating with a wrench.</li></ol>"}
|
||||
|
||||
@@ -104,15 +104,23 @@
|
||||
/obj/machinery/proc/removeStaticPower(value, powerchannel)
|
||||
addStaticPower(-value, powerchannel)
|
||||
|
||||
/obj/machinery/proc/power_change() // called whenever the power settings of the containing area change
|
||||
// by default, check equipment channel & set flag
|
||||
// can override if needed
|
||||
if(powered(power_channel))
|
||||
stat &= ~NOPOWER
|
||||
else
|
||||
/obj/machinery/proc/power_change()
|
||||
//SIGNAL_HANDLER
|
||||
//SHOULD_CALL_PARENT(TRUE)
|
||||
|
||||
stat |= NOPOWER
|
||||
return
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
if(powered(power_channel))
|
||||
if(stat & NOPOWER)
|
||||
SEND_SIGNAL(src, COMSIG_MACHINERY_POWER_RESTORED)
|
||||
. = TRUE
|
||||
set_machine_stat(stat & ~NOPOWER)
|
||||
else
|
||||
if(!(stat & NOPOWER))
|
||||
SEND_SIGNAL(src, COMSIG_MACHINERY_POWER_LOST)
|
||||
. = TRUE
|
||||
set_machine_stat(stat | NOPOWER)
|
||||
update_appearance()
|
||||
|
||||
// connect the machine to a powernet if a node cable is present on the turf
|
||||
/obj/machinery/power/proc/connect_to_network()
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
assembly = S
|
||||
assembly.glass_type.on_solar_construction(src)
|
||||
obj_integrity = max_integrity
|
||||
update_icon()
|
||||
update_appearance()
|
||||
|
||||
/obj/machinery/power/solar/crowbar_act(mob/user, obj/item/I)
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE)
|
||||
@@ -86,11 +86,10 @@
|
||||
|
||||
|
||||
/obj/machinery/power/solar/obj_break(damage_flag)
|
||||
if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1))
|
||||
. = ..()
|
||||
if(.)
|
||||
playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE)
|
||||
stat |= BROKEN
|
||||
unset_control()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/power/solar/deconstruct(disassembled = TRUE)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
@@ -99,7 +98,7 @@
|
||||
assembly.forceMove(loc)
|
||||
assembly.give_glass(stat & BROKEN)
|
||||
else
|
||||
playsound(src, "shatter", 70, 1)
|
||||
playsound(src, "shatter", 70, TRUE)
|
||||
var/shard = assembly?.glass_type ? assembly.glass_type.shard_type : /obj/item/shard
|
||||
new shard(loc)
|
||||
new shard(loc)
|
||||
@@ -110,16 +109,15 @@
|
||||
var/matrix/turner = matrix()
|
||||
turner.Turn(azimuth_current)
|
||||
panel.transform = turner
|
||||
if(stat & BROKEN)
|
||||
panel.icon_state = "solar_panel-b"
|
||||
else
|
||||
panel.icon_state = "solar_panel"
|
||||
panel.icon_state = "solar_panel[(stat & BROKEN) ? "-b" : null]"
|
||||
|
||||
/obj/machinery/power/solar/proc/queue_turn(azimuth)
|
||||
needs_to_turn = TRUE
|
||||
azimuth_target = azimuth
|
||||
|
||||
/obj/machinery/power/solar/proc/queue_update_solar_exposure()
|
||||
SIGNAL_HANDLER
|
||||
|
||||
needs_to_update_solar_exposure = TRUE //updating right away would be wasteful if we're also turning later
|
||||
|
||||
/obj/machinery/power/solar/proc/update_turn()
|
||||
@@ -127,7 +125,7 @@
|
||||
if(azimuth_current != azimuth_target)
|
||||
azimuth_current = azimuth_target
|
||||
occlusion_setup()
|
||||
update_icon()
|
||||
update_appearance()
|
||||
needs_to_update_solar_exposure = TRUE
|
||||
|
||||
///trace towards sun to see if we're in shadow
|
||||
@@ -173,7 +171,7 @@
|
||||
control.gen += sgen
|
||||
|
||||
//Bit of a hack but this whole type is a hack
|
||||
/obj/machinery/power/solar/fake/Initialize(turf/loc, obj/item/solar_assembly/S)
|
||||
/obj/machinery/power/solar/fake/Initialize(mapload, obj/item/solar_assembly/S)
|
||||
. = ..()
|
||||
UnregisterSignal(SSsun, COMSIG_SUN_MOVED)
|
||||
|
||||
@@ -199,6 +197,16 @@
|
||||
var/static/list/allowed_sheets = typecacheof(list(/obj/item/stack/sheet/glass, /obj/item/stack/sheet/rglass,
|
||||
/obj/item/stack/sheet/plasmaglass, /obj/item/stack/sheet/plasmarglass,
|
||||
/obj/item/stack/sheet/titaniumglass, /obj/item/stack/sheet/plastitaniumglass))
|
||||
var/random_offset = 6 //amount in pixels an unanchored assembly may be offset by
|
||||
|
||||
/obj/item/solar_assembly/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!anchored && !pixel_x && !pixel_y)
|
||||
randomise_offset(random_offset)
|
||||
|
||||
/obj/item/solar_assembly/proc/randomise_offset(amount)
|
||||
pixel_x = rand(-amount, amount)
|
||||
pixel_y = rand(-amount, amount)
|
||||
|
||||
// Give back the glass type we were supplied with
|
||||
/obj/item/solar_assembly/proc/give_glass(device_broken)
|
||||
@@ -212,20 +220,21 @@
|
||||
glass_type.forceMove(Tsec)
|
||||
glass_type = null
|
||||
|
||||
/obj/item/solar_assembly/set_anchored(anchorvalue)
|
||||
. = ..()
|
||||
if(isnull(.))
|
||||
return
|
||||
randomise_offset(anchored ? 0 : random_offset)
|
||||
|
||||
/obj/item/solar_assembly/attackby(obj/item/W, mob/user, params)
|
||||
if(W.tool_behaviour == TOOL_WRENCH && isturf(loc))
|
||||
if(isinspace())
|
||||
to_chat(user, "<span class='warning'>You can't secure [src] here.</span>")
|
||||
return
|
||||
anchored = !anchored
|
||||
if(anchored)
|
||||
user.visible_message("[user] wrenches the solar assembly into place.", "<span class='notice'>You wrench the solar assembly into place.</span>")
|
||||
W.play_tool_sound(src, 75)
|
||||
else
|
||||
user.visible_message("[user] unwrenches the solar assembly from its place.", "<span class='notice'>You unwrench the solar assembly from its place.</span>")
|
||||
W.play_tool_sound(src, 75)
|
||||
return 1
|
||||
set_anchored(!anchored)
|
||||
user.visible_message("[user] [anchored ? null : "un"]wrenches the solar assembly into place.", "You [anchored ? null : "un"]wrench the solar assembly into place.")
|
||||
W.play_tool_sound(src, 75)
|
||||
return TRUE
|
||||
|
||||
if(is_type_in_typecache(W, allowed_sheets))
|
||||
if(!anchored)
|
||||
@@ -249,16 +258,16 @@
|
||||
if(istype(W, /obj/item/electronics/tracker))
|
||||
if(!user.temporarilyRemoveItemFromInventory(W))
|
||||
return
|
||||
tracker = 1
|
||||
tracker = TRUE
|
||||
qdel(W)
|
||||
user.visible_message("[user] inserts the electronics into the solar assembly.", "<span class='notice'>You insert the electronics into the solar assembly.</span>")
|
||||
return 1
|
||||
else
|
||||
if(W.tool_behaviour == TOOL_CROWBAR)
|
||||
new /obj/item/electronics/tracker(src.loc)
|
||||
tracker = 0
|
||||
tracker = FALSE
|
||||
user.visible_message("[user] takes out the electronics from the solar assembly.", "<span class='notice'>You take out the electronics from the solar assembly.</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
//
|
||||
@@ -322,11 +331,12 @@
|
||||
if(stat & NOPOWER)
|
||||
. += mutable_appearance(icon, "[icon_keyboard]_off")
|
||||
return
|
||||
|
||||
. += mutable_appearance(icon, icon_keyboard)
|
||||
if(stat & BROKEN)
|
||||
. += mutable_appearance(icon, "[icon_state]_broken")
|
||||
else
|
||||
. += mutable_appearance(icon, icon_screen)
|
||||
return
|
||||
. += mutable_appearance(icon, icon_screen)
|
||||
|
||||
/obj/machinery/power/solar_control/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
@@ -347,7 +357,8 @@
|
||||
return data
|
||||
|
||||
/obj/machinery/power/solar_control/ui_act(action, params)
|
||||
if(..())
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
if(action == "azimuth")
|
||||
var/adjust = text2num(params["adjust"])
|
||||
@@ -381,10 +392,10 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/power/solar_control/attackby(obj/item/I, mob/user, params)
|
||||
/obj/machinery/power/solar_control/attackby(obj/item/I, mob/living/user, params)
|
||||
if(I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
if(I.use_tool(src, user, 20, volume = 50))
|
||||
if(src.stat & BROKEN)
|
||||
if(I.use_tool(src, user, 20, volume=50))
|
||||
if (src.stat & BROKEN)
|
||||
to_chat(user, "<span class='notice'>The broken glass falls out.</span>")
|
||||
var/obj/structure/frame/computer/A = new /obj/structure/frame/computer( src.loc )
|
||||
new /obj/item/shard( src.loc )
|
||||
@@ -394,7 +405,7 @@
|
||||
A.circuit = M
|
||||
A.state = 3
|
||||
A.icon_state = "3"
|
||||
A.anchored = TRUE
|
||||
A.set_anchored(TRUE)
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You disconnect the monitor.</span>")
|
||||
@@ -405,7 +416,7 @@
|
||||
A.circuit = M
|
||||
A.state = 4
|
||||
A.icon_state = "4"
|
||||
A.anchored = TRUE
|
||||
A.set_anchored(TRUE)
|
||||
qdel(src)
|
||||
else if(user.a_intent != INTENT_HARM && !(I.item_flags & NOBLUDGEON))
|
||||
attack_hand(user)
|
||||
@@ -423,10 +434,9 @@
|
||||
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
|
||||
|
||||
/obj/machinery/power/solar_control/obj_break(damage_flag)
|
||||
if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1))
|
||||
. = ..()
|
||||
if(.)
|
||||
playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE)
|
||||
stat |= BROKEN
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/power/solar_control/process()
|
||||
lastgen = gen
|
||||
@@ -437,6 +447,8 @@
|
||||
|
||||
///Ran every time the sun updates.
|
||||
/obj/machinery/power/solar_control/proc/timed_track()
|
||||
SIGNAL_HANDLER
|
||||
|
||||
if(track == SOLAR_TRACK_TIMED)
|
||||
azimuth_target += azimuth_rate
|
||||
set_panels(azimuth_target)
|
||||
@@ -453,20 +465,12 @@
|
||||
for(var/obj/machinery/power/solar/S in connected_panels)
|
||||
S.queue_turn(azimuth)
|
||||
|
||||
/obj/machinery/power/solar_control/power_change()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
//
|
||||
// MISC
|
||||
//
|
||||
|
||||
/obj/item/paper/guides/jobs/engi/solars
|
||||
info = {"
|
||||
# Welcome!
|
||||
At greencorps we love the environment, and space. With this package you are able to help mother nature and produce energy without any usage of fossil fuel or plasma! Singularity energy is dangerous while solar energy is safe, which is why it's better. Now here is how you setup your own solar array.
|
||||
You can make a solar panel by wrenching the solar assembly onto a cable node. Adding a glass panel, reinforced or regular glass will do, will finish the construction of your solar panel. It is that easy!</p><p>Now after setting up 19 more of these solar panels you will want to create a solar tracker to keep track of our mother nature's gift, the sun. These are the same steps as before except you insert the tracker equipment circuit into the assembly before performing the final step of adding the glass. You now have a tracker! Now the last step is to add a computer to calculate the sun's movements and to send commands to the solar panels to change direction with the sun. Setting up the solar computer is the same as setting up any computer, so you should have no trouble in doing that. You do need to put a wire node under the computer, and the wire needs to be connected to the tracker.
|
||||
Congratulations, you should have a working solar array. If you are having trouble, here are some tips. Make sure all solar equipment are on a cable node, even the computer. You can always deconstruct your creations if you make a mistake.</p><p>That's all to it, be safe, be green!
|
||||
"}
|
||||
name = "paper- 'Going green! Setup your own solar array instructions.'"
|
||||
info = "<h1>Welcome</h1><p>At greencorps we love the environment, and space. With this package you are able to help mother nature and produce energy without any usage of fossil fuel or plasma! Singularity energy is dangerous while solar energy is safe, which is why it's better. Now here is how you setup your own solar array.</p><p>You can make a solar panel by wrenching the solar assembly onto a cable node. Adding a glass panel, reinforced or regular glass will do, will finish the construction of your solar panel. It is that easy!</p><p>Now after setting up 19 more of these solar panels you will want to create a solar tracker to keep track of our mother nature's gift, the sun. These are the same steps as before except you insert the tracker equipment circuit into the assembly before performing the final step of adding the glass. You now have a tracker! Now the last step is to add a computer to calculate the sun's movements and to send commands to the solar panels to change direction with the sun. Setting up the solar computer is the same as setting up any computer, so you should have no trouble in doing that. You do need to put a wire node under the computer, and the wire needs to be connected to the tracker.</p><p>Congratulations, you should have a working solar array. If you are having trouble, here are some tips. Make sure all solar equipment are on a cable node, even the computer. You can always deconstruct your creations if you make a mistake.</p><p>That's all to it, be safe, be green!</p>"
|
||||
|
||||
#undef SOLAR_GEN_RATE
|
||||
|
||||
@@ -116,7 +116,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
///The portion of the gasmix we're on that we should remove
|
||||
var/gasefficency = 0.15
|
||||
///Used for changing icon states for diff base sprites
|
||||
var/base_icon_state = "darkmatter"
|
||||
base_icon_state = "darkmatter"
|
||||
|
||||
///Are we exploding?
|
||||
var/final_countdown = FALSE
|
||||
|
||||
@@ -68,8 +68,8 @@
|
||||
|
||||
if(!M.incapacitated())
|
||||
|
||||
if(istype(over_object, /obj/screen/inventory/hand))
|
||||
var/obj/screen/inventory/hand/H = over_object
|
||||
if(istype(over_object, /atom/movable/screen/inventory/hand))
|
||||
var/atom/movable/screen/inventory/hand/H = over_object
|
||||
M.putItemFromInventoryInHandIfPossible(src, H.held_index)
|
||||
|
||||
/obj/item/minigunpack/update_icon_state()
|
||||
|
||||
@@ -280,7 +280,7 @@
|
||||
/obj/item/gun/energy/beam_rifle/onMouseDown(object, location, params, mob/mob)
|
||||
if(istype(mob))
|
||||
set_user(mob)
|
||||
if(istype(object, /obj/screen) && !istype(object, /obj/screen/click_catcher))
|
||||
if(istype(object, /atom/movable/screen) && !istype(object, /atom/movable/screen/click_catcher))
|
||||
return
|
||||
if((object in mob.contents) || (object == mob))
|
||||
return
|
||||
@@ -288,7 +288,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/gun/energy/beam_rifle/onMouseUp(object, location, params, mob/M)
|
||||
if(istype(object, /obj/screen) && !istype(object, /obj/screen/click_catcher))
|
||||
if(istype(object, /atom/movable/screen) && !istype(object, /atom/movable/screen/click_catcher))
|
||||
return
|
||||
process_aim()
|
||||
if(fire_check() && can_trigger_gun(M))
|
||||
|
||||
@@ -827,7 +827,7 @@
|
||||
|
||||
if(prob(33)) // 1/3rd of the time, let's make it stack with the previous matrix! Mwhahahaha!
|
||||
for(var/whole_screen in screens)
|
||||
var/obj/screen/plane_master/PM = whole_screen
|
||||
var/atom/movable/screen/plane_master/PM = whole_screen
|
||||
newmatrix = skew * PM.transform
|
||||
|
||||
for(var/whole_screen in screens)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user