From b3075f07042be591527ac05484dbaec00dba0b43 Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 13 Jan 2015 17:33:46 +0100 Subject: [PATCH 1/2] Simplify and cleanup IPC/defib revival after messy fixes --- code/game/objects/items/weapons/defib.dm | 5 +--- .../mob/living/carbon/human/human_damage.dm | 30 ++++++++----------- maps/cyberiad.dmm | 4 +-- 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index aeb5ab87ce0..5813139b69d 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -330,13 +330,10 @@ user.visible_message("[defib] pings: Resuscitation successful.") playsound(get_turf(src), 'sound/machines/ping.ogg', 50, 0) H.stat = 1 - if(H in dead_mob_list) - dead_mob_list -= H - living_mob_list += H + H.revive() H.emote("gasp") if(tplus > tloss) H.setBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100)))) - H.updatehealth() defib.deductcharge(revivecost) add_logs(user, M, "revived", object="defibrillator") else diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 60b7f58c605..4016ad7bb13 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -16,26 +16,20 @@ if (species.flags & IS_SYNTHETIC) var/datum/organ/external/H = organs_by_name["head"] if (!H.amputated) - if ((health >= (config.health_threshold_dead/100*75)) && stat == DEAD) //need to get them 25% away from death point before reviving them - living_mob_list -= src - mob_list -= src - dead_mob_list -= src - living_mob_list += src - mob_list += src - stat = CONSCIOUS - ear_deaf = 0 - tod = 0 - timeofdeath = 0 + if ((health >= (config.health_threshold_dead/100*75)) && stat == DEAD) //need to get them 25% away from death point before reviving synthetics + revive() if (stat == CONSCIOUS && (src in dead_mob_list)) //Defib fix - living_mob_list -= src - mob_list -= src - dead_mob_list -= src - living_mob_list += src - mob_list += src - ear_deaf = 0 - tod = 0 - timeofdeath = 0 + revive() return + +/mob/living/carbon/human/revive() // handles revival through other means that cloning (defib, IPC repair) + stat = CONSCIOUS + dead_mob_list -= src + living_mob_list |= src + mob_list |= src + ear_deaf = 0 + tod = 0 + timeofdeath = 0 /mob/living/carbon/human/getBrainLoss() if(species && species.flags & NO_INTORGANS) return diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index db31e273a09..a05e8168026 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -3943,6 +3943,7 @@ "bxQ" = (/obj/machinery/computer/ordercomp,/turf/simulated/floor,/area/quartermaster/office) "bxR" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor,/area/quartermaster/office) "bxS" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/firealarm{pixel_y = 27},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor,/area/quartermaster/office) +"bxT" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/engine/reactor_core) "bxU" = (/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/sw) "bxV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/primary/central/sw) "bxW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/central/sw) @@ -6786,7 +6787,6 @@ "cAE" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.5; name = "Engineering Firelock"},/obj/machinery/door/airlock/maintenance_hatch{name = "Supermatter SMES"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/reactor_core) "cAF" = (/obj/machinery/alarm{pixel_x = 0; pixel_y = 24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/reactor_core) "cAG" = (/obj/machinery/light{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/camera{c_tag = "Engineering Supermatter Hallway"; network = list("SS13")},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/engine/reactor_core) -"cAH" = (/obj/machinery/atmospherics/unary/vent_scrubber,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/engine/reactor_core) "cAI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/reactor_core) "cAJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/reactor_core) "cAK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/engine/reactor_core) @@ -12689,7 +12689,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoZcoZcoZcoZcoZcoZcoZcoZcoZaaaaaaaaaactaaaaabaaaaabaabcxdaabaaaaabcxdaabaaaaabcxdaabaaaaaaaaaaaaaaaaaaaaaaaacuObChcxecxfcxgcxhaaicxibYscxjcuVcuVcuVcuVcuVcuVcxkaaicxlcxmcxncxocxpcxqcxrcxscxtcxucxvcxwcxxcxycxzcxAcxBctTctUcxCcxDctXctXcxEclCcxFcxGcvhcxHcsVcxIaaqcxJcxKcxLcxMcxNcxOcxNcxPaabctgctgctgctgctgaabaabaabcqycxQcvtcwPaaqcxRcxScxTcxUcxVabtabYabYcxWabYcxXaAzaaqabnaaaaaaaaicoRcoRcoRcvDcxYcxZcyacqNcybctwctwctwcyccydcyecyfaaaaaacqPaabctActBctBctBctBctCctDctEctFctFctFctFcygaabcqPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoZcoZcoZcoZcoZcoZcoZcoZcoZaaaaaaaaaactactafgaabaabcqccyhcqeaaacqccyhcqeaaacqccyhcqeaabaaaaaaaaaaaaaaaaaaaaaaabaabcyiaaiaaiaaiaaiaaicfEcyjbYscykbYsbYsbYscylcymcyncyocypcypcyqcyrcyscytcyucyvcywcyxcyycyzcyAcyBcyCcyDcyEcyFcyGcyHcyIcyJcyKcyLcyMcwCcyNcyOcyPcyQcyRcyScyTcyUcyVcyWcyXcyYcyZcuncuoczaczbczbctgaaaaaaaabafbczccvtczdaaqczeczfczfczgaaqczhcziczjczkczlczmcznczkcswaaacusaaiaaqaaqaaqaaqczocoVczpcnUczqcnUczrcnUczscnUcztczuaaaaaacqPaabcuMcuMcuMcuMcuMaaacsFaabcuMcuMcuMcuMcuMaaacqPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoZcoZcoZcoZcoZcoZcoZcoZcoZaaaaaaaaaaaaaaaaaaaaaaaacqccyhcqeaabcqccyhcqeaaacqccyhcqeaaaaaaaaaaabaaaaaaaaaaabaabaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiczvaaiczwcxncxncxnczxczyczzczAczBaaiczCczDcwrczEczFaaiczGctXczHczIczJczKcyJczLczMczNczOczPczQczRczSczTczUczVczWcvhczXczYczZcvoaabcvpcAacAbcAcctgaaaaaaaaaafbaaqcAdaolaaqcAecAfcAgcAhcAicvtcAjcAkczkcAlcAmcAncAocApaabaaaaaaaaaaaaaaaaaicAqcArcAscAtcAucAvcAwcAxcAucAvcAyaaiaaaaabcobaaaaabaaaaabaaaaabaaacAzaaaaabaaaaabaabaabaabcqPaaaaaaaaaaaaaaaaaaaaaaaacAAaaaaaaaaacAAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMVaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoZcoZcoZcoZcoZcoZcoZcoZcoZaaaaaaaaaaaaaaaaaaafgaabcqccyhcqeaaacqccyhcqeaaacqccyhcqeaabaaaaaaaaaaaaaaaaaaaabaabaaicABcACcADcAEcADcADcADcAFcAGcAHcADcAIcAJcAJcAKcALcAMcAMcAMcAMcAMcANcxncxncxnaaicAOcAPcAQcARcASceqanYcATcercAUcAVcAWcdjaubcAXcAYcAZcBacxHcsVcBbcBccBdcBecBfcvhczXcBgcBhcBicwMcuocBjczbczbctgaabaaaaaacqycBkcBlcBmcBncBocBpcBocBocBqcBrcBscBtcBtcBucBvcBwcBxcByaabaabaaaaaaaaaaaaaaicBzcBAcBBaaqcBCcBDcBEaaqcBFcBGcBHaaiaaaaaacqPaaacsEcsEcsEcsEcsEaabcqQaabcsEcsEcsEcsEcsEaabcqPaaaaaaaaaaaaaaaaaaaaaaaacAAcAAcAAcAAcAAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoZcoZcoZcoZcoZcoZcoZcoZcoZaaaaaaaaaaaaaaaaaaafgaabcqccyhcqeaaacqccyhcqeaaacqccyhcqeaabaaaaaaaaaaaaaaaaaaaabaabaaicABcACcADcAEcADcADcADcAFcAGbxTcADcAIcAJcAJcAKcALcAMcAMcAMcAMcAMcANcxncxncxnaaicAOcAPcAQcARcASceqanYcATcercAUcAVcAWcdjaubcAXcAYcAZcBacxHcsVcBbcBccBdcBecBfcvhczXcBgcBhcBicwMcuocBjczbczbctgaabaaaaaacqycBkcBlcBmcBncBocBpcBocBocBqcBrcBscBtcBtcBucBvcBwcBxcByaabaabaaaaaaaaaaaaaaicBzcBAcBBaaqcBCcBDcBEaaqcBFcBGcBHaaiaaaaaacqPaaacsEcsEcsEcsEcsEaabcqQaabcsEcsEcsEcsEcsEaabcqPaaaaaaaaaaaaaaaaaaaaaaaacAAcAAcAAcAAcAAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoZcoZcoZcoZcoZcoZcoZcoZcoZaaaaaaaaaaaaaaaaaaafgaabcqccyhcqeaaacqccyhcqeaabcqccyhcqeaabaabaabaaaaaaaaaaaaaabaaaaaicBIcBJcBKaaicBLcBMcBNcBNcBNcBOcBNcBNcBNcBNcBPacFcBQcBRcBScBTcBUcBVcBWcBXcBXcBXcBYcBZcxncxncxncCacCbcCcaaqcCdcCecCfcCgcChaaiaaiaaicCicxHcsVcCjcCkcClcCmcCncvhcCocCpcCqcCrcCsctgctgctgctgctgaaaaaaaaaafbcCtcCucCvcCwcCxcCycCxcCxcCzcCAcCBcCCcBxcCDcCEcAnczkcCFaabaabaaaaaaaaaaaaaaicCGcoRcoRaaqcCHcoRcoRaaqcCHcoRcoRaaiaaaaaacqPaabctActBctBctBctBcCIcCJcCIctFctFctFctFcygaabcqPaaacAAaaaaaacAAaaaaaacAAcAAcAAcAAcAAcAAcAAaaaaaacAAaaaaaacAAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoZcoZcoZcoZcoZcoZcoZcoZcoZaaaaaaaaaaaaaaaaaaafOaabcqccCKcqeaaacqccCKcqeaaacqccCKcqeaabafgaabaabaaaaaaaaaaaaaaaaaicCLcBJcCMaaiaaicCNaaiaaiaaicCOaaiaaiaaiaaiaubaaiaaiaaiaaicCPcCQcCRcCScAMcAMcAMcCTcCUcCVcAMcAMcAMcCUcCWcCXcCYcCecCZcDacChcDbcDcacFcDdcDecDfcDgcDhcBfcDicDjcDkcDlcDmcDncyZcDocuocDpcDqcDqctgaaaaaaaaaafbcDrcDscDtcDucDvcDwcDxczkcDycDzcDAcDBcDCcDDcDEcDFcDGcDHaaaaaaaaaaaaaaaaaaaaicDIcoRcoRaaqcDJcoRcoRaaqcDJcoRcoRaaiaaaaaacqPaabcuMcuMcuMcuMcuMaaacqQaaacuMcuMcuMcuMcuMaaacqPaaacAAcAAcAAcAAaaacAAcAAcAAcAAcAAcAAcAAcAAcAAaaacAAcAAcAAcAAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoZcoZcoZcoZcoZcoZcoZcoZcoZaaaaaaaaaaaaaaaaaaafgaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaafgaabaabaaaaaaaaaaaaaaaaaicDKcBJcCMaaicDLcDMcDNcDOcDPcDQcDRcDSaaicDTcDUcDVcDWcDXaaicDYcDZcEacEbcxncxncEccEdcEecEfcEgcEhcEicEjaaicEkcCYcCecElcEmcChaaicEnaaicEocEpcvhcDgcDhcEqcvhcDjcDkczXczYcErcvocEscvpcEtcEucEvctgaaaaaaaaabgLcEwcExcExcEyacgacgarncEzcEAcEBcEBcEBcECaaiaaiabnaveaaiaaaaaaaaaaaaaaaaaaaaicoRcoRcoRaaqcEDcoRcoRaaqcEDcoRcoRaaiaaaaabcqPaaaaaaaabaabaabaaaaaacqQaabaaaaaaaabaabaaaaaacqPaaacAAcAAcAAcAAaaacAAcAAcAAcAAcAAcAAcAAcAAcAAaaacAAcAAcAAcAAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From bde14e78b3c6b2f9fe58492cbe00b9b99fc12b48 Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 13 Jan 2015 18:51:41 +0100 Subject: [PATCH 2/2] Atmos console emag fix --- code/WorkInProgress/Mini/atmos_control.dm | 2 +- code/game/machinery/alarm.dm | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/WorkInProgress/Mini/atmos_control.dm b/code/WorkInProgress/Mini/atmos_control.dm index e0bb07369b6..df9a3cbef9e 100644 --- a/code/WorkInProgress/Mini/atmos_control.dm +++ b/code/WorkInProgress/Mini/atmos_control.dm @@ -54,7 +54,7 @@ var/list/data[0] data["alarm"]=null if(current) - data += current.get_nano_data(user,TRUE) + data += current.get_nano_data(user,1,emagged) data["alarm"] = "\ref[current]" var/list/alarms=list() diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 75b33bf83fe..b30205339de 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -615,7 +615,7 @@ data["danger"]=danger return data -/obj/machinery/alarm/proc/get_nano_data(mob/user, fromAtmosConsole=0) +/obj/machinery/alarm/proc/get_nano_data(mob/user, fromAtmosConsole=0, AtmosConsoleEmagged=0) var/data[0] data["air"]=ui_air_status() @@ -626,7 +626,7 @@ // Not sent from atmos console AND // Not silicon AND locked. data["locked"]=!fromAtmosConsole && (!(istype(user, /mob/living/silicon)) && locked) - if(fromAtmosConsole && remote_control < 2) + if(fromAtmosConsole && (remote_control < 2 && !AtmosConsoleEmagged)) data["locked"] = 1 data["rcon"]=rcon_setting data["target_temp"] = target_temperature - T0C