diff --git a/code/game/dna.dm b/code/game/dna.dm
index 59ebdfd69d3..1ede0cf37e9 100644
--- a/code/game/dna.dm
+++ b/code/game/dna.dm
@@ -902,7 +902,7 @@
return
if(!istype(usr.loc, /turf))
return
- if(!src || !src.connected || !src.connected.occupant || !src.connected.occupant.dna)
+ if(!src || !src.connected)
return
if ((usr.contents.Find(src) || in_range(src, usr) && istype(src.loc, /turf)) || (istype(usr, /mob/living/silicon)))
usr.machine = src
@@ -911,6 +911,10 @@
src.connected.locked = !( src.connected.locked )
////////////////////////////////////////////////////////
if (href_list["genpulse"])
+ if(!src.connected.occupant || !src.connected.occupant.dna)//Makes sure someone is in there (And valid) before trying anything
+ src.temphtml = text("No viable occupant detected.")//More than anything, this just acts as a sanity check in case the option DOES appear for whatever reason
+ usr << browse(temphtml, "window=scannernew;size=550x650")
+ onclose(usr, "scannernew")
src.delete = 1
src.temphtml = text("Working ... Please wait ([] Seconds)", src.radduration)
usr << browse(temphtml, "window=scannernew;size=550x650")
@@ -943,11 +947,19 @@
src.temphtml += text("-- Intesity ++
", src, src)
src.delete = 0
if (href_list["radleplus"])
+ if(!src.connected.occupant || !src.connected.occupant.dna)
+ src.temphtml = text("No viable occupant detected.")
+ usr << browse(temphtml, "window=scannernew;size=550x650")
+ onclose(usr, "scannernew")
if (src.radduration < 20)
src.radduration++
src.radduration++
dopage(src,"radset")
if (href_list["radleminus"])
+ if(!src.connected.occupant || !src.connected.occupant.dna)
+ src.temphtml = text("No viable occupant detected.")
+ usr << browse(temphtml, "window=scannernew;size=550x650")
+ onclose(usr, "scannernew")
if (src.radduration > 2)
src.radduration--
src.radduration--
@@ -962,6 +974,10 @@
dopage(src,"radset")
////////////////////////////////////////////////////////
if (href_list["unimenu"])
+ if(!src.connected.occupant || !src.connected.occupant.dna)
+ src.temphtml = text("No viable occupant detected.")
+ usr << browse(temphtml, "window=scannernew;size=550x650")
+ onclose(usr, "scannernew")
//src.temphtml = text("Unique Identifier: []
", src.connected.occupant.dna.uni_identity)
//src.temphtml = text("Unique Identifier: [getleftblocks(src.connected.occupant.dna.uni_identity,uniblock,3)][src.subblock == 1 ? ""+getblock(getblock(src.connected.occupant.dna.uni_identity,src.uniblock,3),1,1)+"" : getblock(getblock(src.connected.occupant.dna.uni_identity,src.uniblock,3),1,1)][src.subblock == 2 ? ""+getblock(getblock(src.connected.occupant.dna.uni_identity,src.uniblock,3),2,1)+"" : getblock(getblock(src.connected.occupant.dna.uni_identity,src.uniblock,3),2,1)][src.subblock == 3 ? ""+getblock(getblock(src.connected.occupant.dna.uni_identity,src.uniblock,3),3,1)+"" : getblock(getblock(src.connected.occupant.dna.uni_identity,src.uniblock,3),3,1)][getrightblocks(src.connected.occupant.dna.uni_identity,uniblock,3)]
")
@@ -1090,6 +1106,10 @@
src.delete = 0
////////////////////////////////////////////////////////
if (href_list["rejuv"])
+ if(!src.connected.occupant || !src.connected.occupant.dna)
+ src.temphtml = text("No viable occupant detected.")
+ usr << browse(temphtml, "window=scannernew;size=550x650")
+ onclose(usr, "scannernew")
var/mob/living/carbon/human/H = src.connected.occupant
if(H)
if (H.reagents.get_reagent_amount("inaprovaline") < 60)
diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm
index a874ec9805a..bf7aac9c92f 100644
--- a/code/game/mecha/combat/honker.dm
+++ b/code/game/mecha/combat/honker.dm
@@ -35,29 +35,39 @@
return
/obj/mecha/combat/honker/get_stats_part()
+ var/integrity = health/initial(health)*100
var/cell_charge = get_charge()
- var/output = {"[internal_damage&MECHA_INT_FIRE?"INTERNAL FIRE
":null]
+ var/tank_pressure = internal_tank ? round(internal_tank.return_pressure(),0.01) : "None"
+ var/tank_temperature = internal_tank ? internal_tank.return_temperature() : "Unknown"
+ var/cabin_pressure = round(return_pressure(),0.01)
+ var/output = {"[report_internal_damage()]
+ [integrity<30?"DAMAGE LEVEL CRITICAL
":null]
[internal_damage&MECHA_INT_TEMP_CONTROL?"CLOWN SUPPORT SYSTEM MALFUNCTION
":null]
[internal_damage&MECHA_INT_TANK_BREACH?"GAS TANK HONK
":null]
[internal_damage&MECHA_INT_CONTROL_LOST?"HONK-A-DOODLE - Recalibrate
":null]
- IntegriHONK: [health/initial(health)*100] %)
- PowerHONK charge: [isnull(cell_charge)?"Someone HONKed powerHonk!!!":"[cell.percent()]%"])
- Air source: [use_internal_tank?"Internal AirHONK":"EnvironHONK"]
- AirHONK pressure: [src.return_pressure()]HoNKs
- Internal HONKature: [src.return_temperature()]°honK|[src.return_temperature() - T0C]°honCk
+ IntegriHONK: [integrity]%
+ PowerHONK charge: [isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]
+ Air source: [use_internal_tank?"Internal Airtank":"Environment"]
+ AirHONK pressure: [tank_pressure]kPa
+ AirHONK temperature: [tank_temperature]°K|[tank_temperature - T0C]°C
+ HONK pressure: [cabin_pressure>WARNING_HIGH_PRESSURE ? "[cabin_pressure]": cabin_pressure]kPa
+ HONK temperature: [return_temperature()]°K|[return_temperature() - T0C]°C
Lights: [lights?"on":"off"]
+ [src.dna?"DNA-locked:
[src.dna] \[Reset\]
":null]
"}
return output
-
/obj/mecha/combat/honker/get_stats_html()
var/output = {"