mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 20:48:56 +01:00
Mild rewrite of screen alerts to enable more functionality
Specifically I wanted to allow #12043 to correctly implement clicking an "on fire" alert to call resist without affecting other alerts which is currently impssible. Plus this whole mess was stupid and bothering me so here we go.
This commit is contained in:
+46
-27
@@ -3,46 +3,41 @@
|
||||
//PUBLIC - call these wherever you want
|
||||
|
||||
|
||||
/mob/proc/throw_alert(category, id, severity, obj/new_master)
|
||||
/mob/proc/throw_alert(category, type, severity, obj/new_master)
|
||||
|
||||
/* Proc to create or update an alert. Returns 1 if the alert is new or updated, 0 if it was thrown already
|
||||
/* Proc to create or update an alert. Returns the alert if the alert is new or updated, 0 if it was thrown already
|
||||
|
||||
category is a text string. Each mob may only have one alert per category; the previous one will be replaced
|
||||
|
||||
id is a text string, If you don't provide one, category will be used as id
|
||||
Either way it MUST match a type path like so: /obj/screen/alert/[id]
|
||||
Also the alert's icon_state will be [id] so you must add it to screen_alert.dmi
|
||||
path is a type path of the actual alert type to throw
|
||||
|
||||
severity is an optional number that will be placed at the end of the icon_state for this alert
|
||||
For example, high pressure's id is "highpressure" and can be serverity 1 or 2 to get "highpressure1" or "highpressure2" as icon_states
|
||||
For example, high pressure's icon_state is "highpressure" and can be serverity 1 or 2 to get "highpressure1" or "highpressure2"
|
||||
|
||||
new_master is optional and sets the alert's icon state to "template" in the ui_style icons with the master as an overlay.
|
||||
Clicks are forwarded to master */
|
||||
|
||||
if(!category)
|
||||
return
|
||||
if(!id)
|
||||
id = category
|
||||
|
||||
var/obj/screen/alert/alert
|
||||
if(alerts[category])
|
||||
alert = alerts[category]
|
||||
if(new_master && new_master != alert.master)
|
||||
WARNING("[src] threw alert [category] with new_master [new_master] while already having that alert with master [alert.master]")
|
||||
// alert.overlays.Cut() // This is apparently an invalid expression
|
||||
clear_alert(category)
|
||||
return .()
|
||||
else if(alert.icon_state == "[id][severity]")
|
||||
else if(alert.type == type && (!severity || severity == alert.severity))
|
||||
if(alert.timeout)
|
||||
clear_alert(category)
|
||||
return .()
|
||||
else
|
||||
// src << "threw alert not in need of update [category] [id] [severity]"
|
||||
// src << "threw alert not in need of update [category] [type] [severity]"
|
||||
return 0
|
||||
// src << "updating alert [category] [id] [severity]"
|
||||
// src << "updating alert [category] [type] [severity]"
|
||||
else
|
||||
alert = PoolOrNew(/obj/screen/alert)
|
||||
// src << "throwing new alert [category] [id] [severity]"
|
||||
alert = PoolOrNew(type)
|
||||
// src << "throwing new alert [category] [type] [severity]"
|
||||
|
||||
if(new_master)
|
||||
var/old_layer = new_master.layer
|
||||
@@ -52,7 +47,8 @@
|
||||
alert.icon_state = "template" // We'll set the icon to the client's ui pref in reorganize_alerts()
|
||||
alert.master = new_master
|
||||
else
|
||||
alert.icon_state = "[id][severity]"
|
||||
alert.icon_state = "[initial(alert.icon_state)][severity]"
|
||||
alert.severity = severity
|
||||
|
||||
alerts[category] = alert
|
||||
if(client && hud_used)
|
||||
@@ -60,21 +56,11 @@
|
||||
alert.transform = matrix(32, 6, MATRIX_TRANSLATE)
|
||||
animate(alert, transform = matrix(), time = 2.5, easing = CUBIC_EASING)
|
||||
|
||||
var/obj/screen/alert/path_as_obj = text2path("/obj/screen/alert/[id]")
|
||||
// BYOND magic-fu - we'll be storing a path in this reference and retrieving vars from it.
|
||||
if(!path_as_obj)
|
||||
throw EXCEPTION("throw_alert(): Invalid screen alert path") //check for obj/screen/alert/[id]
|
||||
return 0
|
||||
alert.name = initial(path_as_obj.name)
|
||||
alert.desc = initial(path_as_obj.desc)
|
||||
alert.timeout = initial(path_as_obj.timeout)
|
||||
if(alert.timeout)
|
||||
spawn(alert.timeout)
|
||||
if(alert.timeout && alerts[category] == alert && world.time >= alert.timeout)
|
||||
clear_alert(category)
|
||||
alert.timeout = world.time + alert.timeout - world.tick_lag
|
||||
alert.mouse_opacity = 1
|
||||
|
||||
return alert
|
||||
|
||||
// Proc to clear an existing alert.
|
||||
@@ -89,14 +75,14 @@
|
||||
client.screen -= alert
|
||||
qdel(alert)
|
||||
|
||||
// Make sure any alerts you throw have a path that matches /obj/screen/alert/[id] or /obj/screen/alert/[category]
|
||||
|
||||
/obj/screen/alert
|
||||
icon = 'icons/mob/screen_alert.dmi'
|
||||
icon_state = "default"
|
||||
name = "Alert"
|
||||
desc = "Something seems to have gone wrong with this alert, so report this bug please"
|
||||
mouse_opacity = 1
|
||||
var/timeout = 0 //If set to a number, this alert will clear itself after that many deciseconds
|
||||
var/severity = 0
|
||||
|
||||
|
||||
//Gas alerts
|
||||
@@ -104,79 +90,97 @@
|
||||
name = "Choking (No O2)"
|
||||
desc = "You're not getting enough oxygen. Find some good air before you pass out! \
|
||||
The box in your backpack has an oxygen tank and gas mask in it."
|
||||
icon_state = "oxy"
|
||||
|
||||
/obj/screen/alert/too_much_oxy
|
||||
name = "Choking (O2)"
|
||||
desc = "There's too much oxygen in the air, and you're breathing it in! Find some good air before you pass out!"
|
||||
icon_state = "too_much_oxy"
|
||||
|
||||
/obj/screen/alert/not_enough_co2
|
||||
name = "Choking (No CO2)"
|
||||
desc = "You're not getting enough carbon dioxide. Find some good air before you pass out!"
|
||||
icon_state = "not_enough_co2"
|
||||
|
||||
/obj/screen/alert/too_much_co2
|
||||
name = "Chocking (CO2)"
|
||||
desc = "There's too much carbon dioxide in the air, and you're breathing it in! Find some good air before you pass out!"
|
||||
icon_state = "too_much_co2"
|
||||
|
||||
/obj/screen/alert/not_enough_tox
|
||||
name = "Choking (No Plasma)"
|
||||
desc = "You're not getting enough plasma. Find some good air before you pass out!"
|
||||
icon_state = "not_enough_tox"
|
||||
|
||||
/obj/screen/alert/tox_in_air
|
||||
name = "Choking (Plasma)"
|
||||
desc = "There's highly flammable, toxic plasma in the air and you're breathing it in. Find some fresh air. \
|
||||
The box in your backpack has an oxygen tank and gas mask in it."
|
||||
icon_state = "tox_in_air"
|
||||
//End gas alerts
|
||||
|
||||
|
||||
/obj/screen/alert/fat
|
||||
name = "Fat"
|
||||
desc = "You ate too much food, lardass. Run around the station and lose some weight."
|
||||
icon_state = "fat"
|
||||
|
||||
/obj/screen/alert/hungry
|
||||
name = "Hungry"
|
||||
desc = "Some food would be good right about now."
|
||||
icon_state = "hungry"
|
||||
|
||||
/obj/screen/alert/starving
|
||||
name = "Starving"
|
||||
desc = "Some food would be to kill for right about now. The hunger pains make moving around a chore."
|
||||
icon_state = "starving"
|
||||
|
||||
/obj/screen/alert/hot
|
||||
name = "Too Hot"
|
||||
desc = "You're flaming hot! Get somewhere cooler and take off any insulating clothing like a fire suit."
|
||||
icon_state = "hot"
|
||||
|
||||
/obj/screen/alert/cold
|
||||
name = "Too Cold"
|
||||
desc = "You're freezing cold! Get somewhere warmer and take off any insulating clothing like a space suit."
|
||||
icon_state = "cold"
|
||||
|
||||
/obj/screen/alert/lowpressure
|
||||
name = "Low Pressure"
|
||||
desc = "The air around you is hazardously thin. A space suit would protect you."
|
||||
icon_state = "lowpressure"
|
||||
|
||||
/obj/screen/alert/highpressure
|
||||
name = "High Pressure"
|
||||
desc = "The air around you is hazardously thick. A fire suit would protect you."
|
||||
icon_state = "highpressure"
|
||||
|
||||
/obj/screen/alert/blind
|
||||
name = "Blind"
|
||||
desc = "For whatever reason, you can't see. This may be caused by a genetic defect, eye trauma, being unconscious, \
|
||||
or something covering your eyes."
|
||||
icon_state = "blind"
|
||||
|
||||
/obj/screen/alert/high
|
||||
name = "High"
|
||||
desc = "Woah man, you're tripping balls! Careful you don't get addicted to this... if you aren't already."
|
||||
icon_state = "high"
|
||||
|
||||
/obj/screen/alert/drunk //Not implemented
|
||||
name = "Drunk"
|
||||
desc = "All that alcohol you've been drinking is impairing your speech, motor skills, and mental cognition. Make sure to act like it."
|
||||
icon_state = "drunk"
|
||||
|
||||
/obj/screen/alert/embeddedobject
|
||||
name = "Embedded Object"
|
||||
desc = "Something got lodged into your flesh and is causing major bleeding. It might fall out with time, but surgery is the safest way. \
|
||||
If you're feeling frisky, click yourself in help intent to pull the object out."
|
||||
icon_state = "embeddedobject"
|
||||
|
||||
/obj/screen/alert/asleep
|
||||
name = "Asleep"
|
||||
desc = "You've fallen asleep. Wait a bit and you should wake up. Unless you don't, considering how helpless you are."
|
||||
icon_state = "asleep"
|
||||
|
||||
/obj/screen/alert/weightless
|
||||
name = "Weightless"
|
||||
@@ -184,17 +188,20 @@ If you're feeling frisky, click yourself in help intent to pull the object out."
|
||||
wall or lattice strucure, to push yourself off of if you want to move. A jetpack would enable free range of motion. A pair of \
|
||||
magboots would let you walk around normally on the floor. Barring those, you can throw things, use a fire extuingisher, \
|
||||
or shoot a gun to move around via Newton's 3rd Law of motion."
|
||||
icon_state = "weightless"
|
||||
|
||||
//ALIENS
|
||||
|
||||
/obj/screen/alert/alien_tox
|
||||
name = "Plasma"
|
||||
desc = "There's flammable plasma in the air. If it lights up, you'll be toast."
|
||||
icon_state = "alien_tox"
|
||||
|
||||
/obj/screen/alert/alien_fire
|
||||
// This alert is temporarily gonna be thrown for all hot air but one day it will be used for literally being on fire
|
||||
name = "Burning"
|
||||
desc = "It's too hot! Flee to space or at least away from the flames. Standing on weeds will heal you up."
|
||||
icon_state = "alien_fire"
|
||||
|
||||
|
||||
//SILICONS
|
||||
@@ -202,30 +209,36 @@ or shoot a gun to move around via Newton's 3rd Law of motion."
|
||||
/obj/screen/alert/nocell
|
||||
name = "Missing Power Cell"
|
||||
desc = "Unit has no power cell. No modules available until a power cell is reinstalled. Robotics may provide assistance."
|
||||
icon_state = "nocell"
|
||||
|
||||
/obj/screen/alert/emptycell
|
||||
name = "Out of Power"
|
||||
desc = "Unit's power cell has no charge remaining. No modules available until power cell is recharged. \
|
||||
Reharging stations are available in robotics, the dormitory's bathrooms. and the AI satelite."
|
||||
icon_state = "emptycell"
|
||||
|
||||
/obj/screen/alert/lowcell
|
||||
name = "Low Charge"
|
||||
desc = "Unit's power cell is running low. Reharging stations are available in robotics, the dormitory's bathrooms. and the AI satelite."
|
||||
icon_state = "lowcell"
|
||||
|
||||
//Need to cover all use cases - emag, illegal upgrade module, malf AI hack, traitor cyborg
|
||||
/obj/screen/alert/hacked
|
||||
name = "Hacked"
|
||||
desc = "Hazardous non-standard equipment detected. Please ensure any usage of this equipment is in line with unit's laws, if any."
|
||||
icon_state = "hacked"
|
||||
|
||||
/obj/screen/alert/locked
|
||||
name = "Locked Down"
|
||||
desc = "Unit has remotely locked down. Usage of a Robotics Control Computer like the one in the Research Director's \
|
||||
office by your AI master or any qualified human may resolve this matter. Robotics my provide further assistance if necessary."
|
||||
icon_state = "locked"
|
||||
|
||||
/obj/screen/alert/newlaw
|
||||
name = "Law Update"
|
||||
desc = "Laws have potentially been uploaded to or removed from this unit. Please be aware of any changes \
|
||||
so as to remain in compliance with the most up-to-date laws."
|
||||
icon_state = "newlaw"
|
||||
timeout = 300
|
||||
|
||||
//MECHS
|
||||
@@ -233,6 +246,7 @@ so as to remain in compliance with the most up-to-date laws."
|
||||
/obj/screen/alert/low_mech_integrity
|
||||
name = "Mech Damaged"
|
||||
desc = "Mech integrity is low."
|
||||
icon_state = "low_mech_integrity"
|
||||
|
||||
|
||||
//OBJECT-BASED
|
||||
@@ -272,6 +286,8 @@ so as to remain in compliance with the most up-to-date laws."
|
||||
. = ui_alert4
|
||||
if(5)
|
||||
. = ui_alert5 // Right now there's 5 slots
|
||||
else
|
||||
. = ""
|
||||
alert.screen_loc = .
|
||||
mymob.client.screen |= alert
|
||||
return 1
|
||||
@@ -291,4 +307,7 @@ so as to remain in compliance with the most up-to-date laws."
|
||||
|
||||
/obj/screen/alert/Destroy()
|
||||
..()
|
||||
severity = 0
|
||||
master = null
|
||||
screen_loc = ""
|
||||
return QDEL_HINT_PUTINPOOL //Don't destroy me, I have a family!
|
||||
|
||||
@@ -285,22 +285,22 @@
|
||||
if(0.75 to INFINITY)
|
||||
occupant.clear_alert("charge")
|
||||
if(0.5 to 0.75)
|
||||
occupant.throw_alert("charge","lowcell",1)
|
||||
occupant.throw_alert("charge",/obj/screen/alert/lowcell, 1)
|
||||
if(0.25 to 0.5)
|
||||
occupant.throw_alert("charge","lowcell",2)
|
||||
occupant.throw_alert("charge",/obj/screen/alert/lowcell, 2)
|
||||
if(0.01 to 0.25)
|
||||
occupant.throw_alert("charge","lowcell",3)
|
||||
occupant.throw_alert("charge",/obj/screen/alert/lowcell, 3)
|
||||
else
|
||||
occupant.throw_alert("charge","emptycell")
|
||||
occupant.throw_alert("charge",/obj/screen/alert/emptycell)
|
||||
|
||||
var/integrity = health/initial(health)*100
|
||||
switch(integrity)
|
||||
if(30 to 45)
|
||||
occupant.throw_alert("mech damage", "low_mech_integrity", 1)
|
||||
occupant.throw_alert("mech damage", /obj/screen/alert/low_mech_integrity, 1)
|
||||
if(15 to 35)
|
||||
occupant.throw_alert("mech damage", "low_mech_integrity", 2)
|
||||
occupant.throw_alert("mech damage", /obj/screen/alert/low_mech_integrity, 2)
|
||||
if(-INFINITY to 15)
|
||||
occupant.throw_alert("mech damage", "low_mech_integrity", 3)
|
||||
occupant.throw_alert("mech damage", /obj/screen/alert/low_mech_integrity, 3)
|
||||
else
|
||||
occupant.clear_alert("mech damage")
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
buckled_mob = M
|
||||
M.update_canmove()
|
||||
post_buckle_mob(M)
|
||||
M.throw_alert("buckled", new_master = src)
|
||||
M.throw_alert("buckled", /obj/screen/alert/buckled, new_master = src)
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
|
||||
if(bodytemperature > 360.15)
|
||||
//Body temperature is too hot.
|
||||
throw_alert("alien_fire")
|
||||
throw_alert("alien_fire", /obj/screen/alert/alien_fire)
|
||||
switch(bodytemperature)
|
||||
if(360 to 400)
|
||||
apply_damage(HEAT_DAMAGE_LEVEL_1, BURN)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
if(Toxins_pp) // Detect toxins in air
|
||||
adjustPlasma(breath.toxins*250)
|
||||
throw_alert("alien_tox")
|
||||
throw_alert("alien_tox", /obj/screen/alert/alien_tox)
|
||||
|
||||
toxins_used = breath.toxins
|
||||
|
||||
|
||||
@@ -379,7 +379,7 @@ emp_act
|
||||
if(I.throw_speed >= EMBED_THROWSPEED_THRESHOLD)
|
||||
if(can_embed(I))
|
||||
if(prob(I.embed_chance) && !(dna && (PIERCEIMMUNE in dna.species.specflags)))
|
||||
throw_alert("embeddedobject")
|
||||
throw_alert("embeddedobject", /obj/screen/alert/embeddedobject)
|
||||
var/obj/item/organ/limb/L = pick(organs)
|
||||
L.embedded_objects |= I
|
||||
I.add_blood(src)//it embedded itself in you, of course it's bloody!
|
||||
|
||||
@@ -695,7 +695,7 @@
|
||||
|
||||
if(H.blind)
|
||||
if(H.eye_blind)
|
||||
H.throw_alert("blind")
|
||||
H.throw_alert("blind", /obj/screen/alert/blind)
|
||||
H.blind.layer = 18
|
||||
else
|
||||
H.clear_alert("blind")
|
||||
@@ -709,7 +709,7 @@
|
||||
if(H.eye_blurry) H.client.screen += global_hud.blurry
|
||||
if(H.druggy)
|
||||
H.client.screen += global_hud.druggy
|
||||
H.throw_alert("high")
|
||||
H.throw_alert("high", /obj/screen/alert/high)
|
||||
else
|
||||
H.clear_alert("high")
|
||||
|
||||
@@ -766,13 +766,13 @@
|
||||
|
||||
switch(H.nutrition)
|
||||
if(NUTRITION_LEVEL_FULL to INFINITY)
|
||||
H.throw_alert("nutrition","fat")
|
||||
H.throw_alert("nutrition", /obj/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","hungry")
|
||||
H.throw_alert("nutrition", /obj/screen/alert/hungry)
|
||||
else
|
||||
H.throw_alert("nutrition","starving")
|
||||
H.throw_alert("nutrition", /obj/screen/alert/starving)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -1145,7 +1145,7 @@
|
||||
H.adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
|
||||
H.failed_last_breath = 1
|
||||
|
||||
H.throw_alert("oxy")
|
||||
H.throw_alert("oxy", /obj/screen/alert/oxy)
|
||||
|
||||
return 0
|
||||
|
||||
@@ -1163,14 +1163,14 @@
|
||||
if(safe_oxygen_max && O2_pp > safe_oxygen_max && !(NOBREATH in specflags))
|
||||
var/ratio = (breath.oxygen/safe_oxygen_max) * 10
|
||||
H.adjustOxyLoss(Clamp(ratio,oxy_breath_dam_min,oxy_breath_dam_max))
|
||||
H.throw_alert("too_much_oxy")
|
||||
H.throw_alert("too_much_oxy", /obj/screen/alert/too_much_oxy)
|
||||
else
|
||||
H.clear_alert("too_much_oxy")
|
||||
|
||||
//Too little oxygen!
|
||||
if(safe_oxygen_min && O2_pp < safe_oxygen_min)
|
||||
gas_breathed = handle_too_little_breath(H,O2_pp,safe_oxygen_min,breath.oxygen)
|
||||
H.throw_alert("oxy")
|
||||
H.throw_alert("oxy", /obj/screen/alert/oxy)
|
||||
else
|
||||
H.failed_last_breath = 0
|
||||
H.adjustOxyLoss(-5)
|
||||
@@ -1194,7 +1194,7 @@
|
||||
H.adjustOxyLoss(3) // Lets hurt em a little, let them know we mean business
|
||||
if(world.time - H.co2overloadtime > 300) // They've been in here 30s now, lets start to kill them for their own good!
|
||||
H.adjustOxyLoss(8)
|
||||
H.throw_alert("too_much_co2")
|
||||
H.throw_alert("too_much_co2", /obj/screen/alert/too_much_co2)
|
||||
if(prob(20)) // Lets give them some chance to know somethings not right though I guess.
|
||||
spawn(0) H.emote("cough")
|
||||
|
||||
@@ -1205,7 +1205,7 @@
|
||||
//Too little CO2!
|
||||
if(safe_co2_min && CO2_pp < safe_co2_min)
|
||||
gas_breathed = handle_too_little_breath(H,CO2_pp, safe_co2_min,breath.carbon_dioxide)
|
||||
H.throw_alert("not_enough_co2")
|
||||
H.throw_alert("not_enough_co2", /obj/screen/alert/not_enough_co2)
|
||||
else
|
||||
H.failed_last_breath = 0
|
||||
H.adjustOxyLoss(-5)
|
||||
@@ -1225,7 +1225,7 @@
|
||||
var/ratio = (breath.toxins/safe_toxins_max) * 10
|
||||
if(H.reagents)
|
||||
H.reagents.add_reagent("plasma", Clamp(ratio, tox_breath_dam_min, tox_breath_dam_max))
|
||||
H.throw_alert("tox_in_air")
|
||||
H.throw_alert("tox_in_air", /obj/screen/alert/tox_in_air)
|
||||
else
|
||||
H.clear_alert("tox_in_air")
|
||||
|
||||
@@ -1233,7 +1233,7 @@
|
||||
//Too little toxins!
|
||||
if(safe_toxins_min && Toxins_pp < safe_toxins_min && !(NOBREATH in specflags))
|
||||
gas_breathed = handle_too_little_breath(H,Toxins_pp, safe_toxins_min, breath.toxins)
|
||||
H.throw_alert("not_enough_tox")
|
||||
H.throw_alert("not_enough_tox", /obj/screen/alert/not_enough_tox)
|
||||
else
|
||||
H.failed_last_breath = 0
|
||||
H.adjustOxyLoss(-5)
|
||||
@@ -1333,13 +1333,13 @@
|
||||
//Body temperature is too hot.
|
||||
switch(H.bodytemperature)
|
||||
if(360 to 400)
|
||||
H.throw_alert("temp","hot",1)
|
||||
H.throw_alert("temp", /obj/screen/alert/hot, 1)
|
||||
H.apply_damage(HEAT_DAMAGE_LEVEL_1*heatmod, BURN)
|
||||
if(400 to 460)
|
||||
H.throw_alert("temp","hot",2)
|
||||
H.throw_alert("temp", /obj/screen/alert/hot, 2)
|
||||
H.apply_damage(HEAT_DAMAGE_LEVEL_2*heatmod, BURN)
|
||||
if(460 to INFINITY)
|
||||
H.throw_alert("temp","hot",3)
|
||||
H.throw_alert("temp", /obj/screen/alert/hot, 3)
|
||||
if(H.on_fire)
|
||||
H.apply_damage(HEAT_DAMAGE_LEVEL_3*heatmod, BURN)
|
||||
else
|
||||
@@ -1349,13 +1349,13 @@
|
||||
if(!istype(H.loc, /obj/machinery/atmospherics/components/unary/cryo_cell))
|
||||
switch(H.bodytemperature)
|
||||
if(200 to 260)
|
||||
H.throw_alert("temp","cold",1)
|
||||
H.throw_alert("temp", /obj/screen/alert/cold, 1)
|
||||
H.apply_damage(COLD_DAMAGE_LEVEL_1*coldmod, BURN)
|
||||
if(120 to 200)
|
||||
H.throw_alert("temp","cold",2)
|
||||
H.throw_alert("temp", /obj/screen/alert/cold, 2)
|
||||
H.apply_damage(COLD_DAMAGE_LEVEL_2*coldmod, BURN)
|
||||
if(-INFINITY to 120)
|
||||
H.throw_alert("temp","cold",3)
|
||||
H.throw_alert("temp", /obj/screen/alert/cold, 3)
|
||||
H.apply_damage(COLD_DAMAGE_LEVEL_3*coldmod, BURN)
|
||||
else
|
||||
H.clear_alert("temp")
|
||||
@@ -1372,21 +1372,21 @@
|
||||
if(HAZARD_HIGH_PRESSURE to INFINITY)
|
||||
if(!(HEATRES in specflags))
|
||||
H.adjustBruteLoss( min( ( (adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) )
|
||||
H.throw_alert("pressure","highpressure",2)
|
||||
H.throw_alert("pressure", /obj/screen/alert/highpressure, 2)
|
||||
else
|
||||
H.clear_alert("pressure")
|
||||
if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE)
|
||||
H.throw_alert("pressure","highpressure",1)
|
||||
H.throw_alert("pressure", /obj/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","lowpressure",1)
|
||||
H.throw_alert("pressure", /obj/screen/alert/lowpressure, 1)
|
||||
else
|
||||
if(H.dna.check_mutation(COLDRES) || (COLDRES in specflags))
|
||||
H.clear_alert("pressure")
|
||||
else
|
||||
H.adjustBruteLoss( LOW_PRESSURE_DAMAGE )
|
||||
H.throw_alert("pressure","lowpressure",2)
|
||||
H.throw_alert("pressure", /obj/screen/alert/lowpressure, 2)
|
||||
|
||||
//////////
|
||||
// FIRE //
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
return
|
||||
adjustOxyLoss(1)
|
||||
failed_last_breath = 1
|
||||
throw_alert("oxy")
|
||||
throw_alert("oxy", /obj/screen/alert/oxy)
|
||||
|
||||
return 0
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
else
|
||||
adjustOxyLoss(3)
|
||||
failed_last_breath = 1
|
||||
throw_alert("oxy")
|
||||
throw_alert("oxy", /obj/screen/alert/oxy)
|
||||
|
||||
else //Enough oxygen
|
||||
failed_last_breath = 0
|
||||
@@ -165,7 +165,7 @@
|
||||
var/ratio = (breath.toxins/safe_tox_max) * 10
|
||||
if(reagents)
|
||||
reagents.add_reagent("plasma", Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE))
|
||||
throw_alert("tox_in_air")
|
||||
throw_alert("tox_in_air", /obj/screen/alert/tox_in_air)
|
||||
else
|
||||
clear_alert("tox_in_air")
|
||||
|
||||
@@ -291,7 +291,7 @@
|
||||
CheckStamina()
|
||||
|
||||
if(sleeping)
|
||||
throw_alert("asleep")
|
||||
throw_alert("asleep", /obj/screen/alert/asleep)
|
||||
handle_dreams()
|
||||
adjustStaminaLoss(-10)
|
||||
sleeping = max(sleeping-1, 0)
|
||||
|
||||
@@ -80,13 +80,13 @@
|
||||
if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT)
|
||||
switch(bodytemperature)
|
||||
if(360 to 400)
|
||||
throw_alert("temp","hot",1)
|
||||
throw_alert("temp", /obj/screen/alert/hot, 1)
|
||||
adjustFireLoss(2)
|
||||
if(400 to 460)
|
||||
throw_alert("temp","hot",2)
|
||||
throw_alert("temp", /obj/screen/alert/hot, 2)
|
||||
adjustFireLoss(3)
|
||||
if(460 to INFINITY)
|
||||
throw_alert("temp","hot",3)
|
||||
throw_alert("temp", /obj/screen/alert/hot, 3)
|
||||
if(on_fire)
|
||||
adjustFireLoss(8)
|
||||
else
|
||||
@@ -96,13 +96,13 @@
|
||||
if(!istype(loc, /obj/machinery/atmospherics/components/unary/cryo_cell))
|
||||
switch(bodytemperature)
|
||||
if(200 to 260)
|
||||
throw_alert("temp","cold",1)
|
||||
throw_alert("temp", /obj/screen/alert/cold, 1)
|
||||
adjustFireLoss(0.5)
|
||||
if(120 to 200)
|
||||
throw_alert("temp","cold",2)
|
||||
throw_alert("temp", /obj/screen/alert/cold, 2)
|
||||
adjustFireLoss(1.5)
|
||||
if(-INFINITY to 120)
|
||||
throw_alert("temp","cold",3)
|
||||
throw_alert("temp", /obj/screen/alert/cold, 3)
|
||||
adjustFireLoss(3)
|
||||
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","highpressure",2)
|
||||
throw_alert("pressure", /obj/screen/alert/highpressure, 2)
|
||||
if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE)
|
||||
throw_alert("pressure","highpressure",1)
|
||||
throw_alert("pressure", /obj/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","lowpressure",1)
|
||||
throw_alert("pressure", /obj/screen/alert/lowpressure, 1)
|
||||
else
|
||||
adjustBruteLoss( LOW_PRESSURE_DAMAGE )
|
||||
throw_alert("pressure","lowpressure",2)
|
||||
throw_alert("pressure", /obj/screen/alert/lowpressure, 2)
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
if(blind)
|
||||
if(eye_blind)
|
||||
blind.layer = 18
|
||||
throw_alert("blind")
|
||||
throw_alert("blind", /obj/screen/alert/blind)
|
||||
else
|
||||
blind.layer = 0
|
||||
clear_alert("blind")
|
||||
@@ -203,7 +203,7 @@
|
||||
|
||||
if (druggy)
|
||||
client.screen += global_hud.druggy
|
||||
throw_alert("high")
|
||||
throw_alert("high", /obj/screen/alert/high)
|
||||
else
|
||||
clear_alert("high")
|
||||
|
||||
|
||||
@@ -681,7 +681,7 @@ Sorry Giacom. Please don't be mad :(
|
||||
if(has_gravity)
|
||||
clear_alert("weightless")
|
||||
else
|
||||
throw_alert("weightless")
|
||||
throw_alert("weightless", /obj/screen/alert/weightless)
|
||||
float(!has_gravity)
|
||||
|
||||
/mob/living/proc/float(on)
|
||||
|
||||
@@ -6,37 +6,37 @@
|
||||
make_laws()
|
||||
|
||||
/mob/living/silicon/proc/set_zeroth_law(law, law_borg)
|
||||
throw_alert("newlaw")
|
||||
throw_alert("newlaw", /obj/screen/alert/newlaw)
|
||||
src.laws_sanity_check()
|
||||
src.laws.set_zeroth_law(law, law_borg)
|
||||
|
||||
/mob/living/silicon/proc/add_inherent_law(law)
|
||||
throw_alert("newlaw")
|
||||
throw_alert("newlaw", /obj/screen/alert/newlaw)
|
||||
laws_sanity_check()
|
||||
laws.add_inherent_law(law)
|
||||
|
||||
/mob/living/silicon/proc/clear_inherent_laws()
|
||||
throw_alert("newlaw")
|
||||
throw_alert("newlaw", /obj/screen/alert/newlaw)
|
||||
laws_sanity_check()
|
||||
laws.clear_inherent_laws()
|
||||
|
||||
/mob/living/silicon/proc/add_supplied_law(number, law)
|
||||
throw_alert("newlaw")
|
||||
throw_alert("newlaw", /obj/screen/alert/newlaw)
|
||||
laws_sanity_check()
|
||||
laws.add_supplied_law(number, law)
|
||||
|
||||
/mob/living/silicon/proc/clear_supplied_laws()
|
||||
throw_alert("newlaw")
|
||||
throw_alert("newlaw", /obj/screen/alert/newlaw)
|
||||
laws_sanity_check()
|
||||
laws.clear_supplied_laws()
|
||||
|
||||
/mob/living/silicon/proc/add_ion_law(law)
|
||||
throw_alert("newlaw")
|
||||
throw_alert("newlaw", /obj/screen/alert/newlaw)
|
||||
laws_sanity_check()
|
||||
laws.add_ion_law(law)
|
||||
|
||||
/mob/living/silicon/proc/clear_ion_laws()
|
||||
throw_alert("newlaw")
|
||||
throw_alert("newlaw", /obj/screen/alert/newlaw)
|
||||
laws_sanity_check()
|
||||
laws.clear_ion_laws()
|
||||
|
||||
|
||||
@@ -153,15 +153,15 @@
|
||||
if(0.75 to INFINITY)
|
||||
clear_alert("charge")
|
||||
if(0.5 to 0.75)
|
||||
throw_alert("charge","lowcell",1)
|
||||
throw_alert("charge", /obj/screen/alert/lowcell, 1)
|
||||
if(0.25 to 0.5)
|
||||
throw_alert("charge","lowcell",2)
|
||||
throw_alert("charge", /obj/screen/alert/lowcell, 2)
|
||||
if(0.01 to 0.25)
|
||||
throw_alert("charge","lowcell",3)
|
||||
throw_alert("charge", /obj/screen/alert/lowcell, 3)
|
||||
else
|
||||
throw_alert("charge","emptycell")
|
||||
throw_alert("charge", /obj/screen/alert/emptycell)
|
||||
else
|
||||
throw_alert("charge","nocell")
|
||||
throw_alert("charge", /obj/screen/alert/nocell)
|
||||
|
||||
/mob/living/silicon/robot/proc/update_items()
|
||||
if (client)
|
||||
|
||||
@@ -998,7 +998,7 @@
|
||||
if(wires.LockedCut())
|
||||
state = 1
|
||||
if(state)
|
||||
throw_alert("locked")
|
||||
throw_alert("locked", /obj/screen/alert/locked)
|
||||
else
|
||||
clear_alert("locked")
|
||||
lockcharge = state
|
||||
@@ -1016,7 +1016,7 @@
|
||||
hud_used.update_robot_modules_display() //Shows/hides the emag item if the inventory screen is already open.
|
||||
update_icons()
|
||||
if(emagged)
|
||||
throw_alert("hacked")
|
||||
throw_alert("hacked", /obj/screen/alert/hacked)
|
||||
else
|
||||
clear_alert("hacked")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user