From 639c00fb66ccef3332487ce2eaa49c384f15ecb2 Mon Sep 17 00:00:00 2001 From: caelaislinn Date: Sun, 24 Jun 2012 11:45:51 +1000 Subject: [PATCH 1/5] fix for "the floor emits a pulse of energy" Signed-off-by: caelaislinn --- code/modules/research/artifact_effect.dm | 5 +++-- code/modules/research/artifacts.dm | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/research/artifact_effect.dm b/code/modules/research/artifact_effect.dm index 867bf030187..19291af9b04 100644 --- a/code/modules/research/artifact_effect.dm +++ b/code/modules/research/artifact_effect.dm @@ -72,8 +72,8 @@ H.update_body() H.update_face() H.UpdateDamageIcon() - return 1 - // + return 1 + // if (istype(user, /mob/living/carbon/monkey/)) user << "\blue You feel a soothing energy invigorate you." user.adjustOxyLoss(-25) @@ -81,6 +81,7 @@ user.adjustBruteLoss(-25) user.adjustFireLoss(-25) user.adjustBrainLoss(-25) + return 1 else user << "Nothing happens." if("injure") if (istype(user, /mob/living/carbon/)) diff --git a/code/modules/research/artifacts.dm b/code/modules/research/artifacts.dm index d79222b3f21..83f85dee1c1 100644 --- a/code/modules/research/artifacts.dm +++ b/code/modules/research/artifacts.dm @@ -179,7 +179,7 @@ my_effect.UpdateEffect(src.loc) //activate - if(src.charged && my_effect.DoEffect(src.loc)) + if(src.charged && my_effect.DoEffect(src)) src.charged = 0 src.chargetime = src.recharge @@ -207,7 +207,7 @@ else if (my_effect.trigger != "touch" && !src.activated) user << "Nothing happens." if (my_effect.effectmode == "contact" && src.activated && src.charged) - my_effect.DoEffect(src.loc) + my_effect.DoEffect(src) src.charged = 0 src.chargetime = src.recharge From 37e76d7436ce2d07418e14fb75ed6f863f4641d8 Mon Sep 17 00:00:00 2001 From: caelaislinn Date: Sun, 24 Jun 2012 11:57:32 +1000 Subject: [PATCH 2/5] artifact machinery now uses power Signed-off-by: caelaislinn --- code/modules/research/artifact_analysis.dm | 10 ++++++++++ code/modules/research/artifact_harvester.dm | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/code/modules/research/artifact_analysis.dm b/code/modules/research/artifact_analysis.dm index 16b4c0c1568..fea65bbb6d7 100644 --- a/code/modules/research/artifact_analysis.dm +++ b/code/modules/research/artifact_analysis.dm @@ -61,6 +61,8 @@ owned_pad = locate() in orange(1, src) /obj/machinery/artifact_analyser/attack_hand(var/mob/user as mob) + if(stat & (NOPOWER|BROKEN)) + return user.machine = src var/dat = "Artifact Analyser
" dat += "

" @@ -87,6 +89,10 @@ onclose(user, "artanalyser") /obj/machinery/artifact_analyser/process() + if(stat & (NOPOWER|BROKEN)) + return + use_power(350) + // if(!owned_pad) for(var/obj/machinery/analyser_pad/pad in range(1)) owned_pad = pad @@ -229,6 +235,7 @@ time *= 10 var/message = "[src] states, \"Commencing analysis.\"" src.visible_message(message, message) + use_power(500) spawn(time) src.working = 0 icon_state = "analyser" @@ -239,6 +246,7 @@ scan_num++ message = "[src] states, \"Analysis complete.\"" src.visible_message(message, message) + use_power(500) else if (findarti > 1) var/message = "[src] states, \"Cannot analyse. Too many artifacts on pad.\"" src.visible_message(message, message) @@ -267,6 +275,7 @@ CA.effecttype = aeffect1 + " ([accuE1]%)" CA.effectmode = aeffect2 + " ([accuE2]%)" DB.catalogued_artifacts.Add(CA) + use_power(100) if(href_list["print"]) var/r = "Artifact Analysis Report (Scan #[scan_num])
" @@ -280,6 +289,7 @@ P.info = r for(var/mob/O in hearers(src, null)) O.show_message("\icon[src] \blue The [src.name] prints a sheet of paper", 3) + use_power(10) if(href_list["close"]) usr << browse(null, "window=artanalyser") diff --git a/code/modules/research/artifact_harvester.dm b/code/modules/research/artifact_harvester.dm index 84839dfb768..16c0a4e6ce5 100644 --- a/code/modules/research/artifact_harvester.dm +++ b/code/modules/research/artifact_harvester.dm @@ -36,8 +36,12 @@ interact(user) /obj/machinery/artifact_harvester/process() + if(stat & (NOPOWER|BROKEN)) + return + use_power(350) if(harvesting) + use_power(250) inserted_battery.stored_charge += 10 if(inserted_battery.stored_charge >= inserted_battery.capacity) inserted_battery.stored_charge = inserted_battery.capacity @@ -49,6 +53,8 @@ return /obj/machinery/artifact_harvester/proc/interact(var/mob/user as mob) + if(stat & (NOPOWER|BROKEN)) + return user.machine = src var/dat = "Artifact Power Harvester
" dat += "

" @@ -140,6 +146,7 @@ src.inserted_battery = null if (href_list["drainbattery"]) + use_power(100) src.inserted_battery.battery_effect.artifact_id = "" src.inserted_battery.stored_charge = 0 var/message = "[src] states, \"Battery drained of all charge.\"" From 2237e3f658ace5b198462c56a195031326c4a80f Mon Sep 17 00:00:00 2001 From: caelaislinn Date: Sun, 24 Jun 2012 19:58:21 +1000 Subject: [PATCH 3/5] talking crystal can be heard with ghost ears Signed-off-by: caelaislinn --- code/modules/research/artifact_archaeo.dm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/code/modules/research/artifact_archaeo.dm b/code/modules/research/artifact_archaeo.dm index f3b047d3ecb..68d16696a5d 100644 --- a/code/modules/research/artifact_archaeo.dm +++ b/code/modules/research/artifact_archaeo.dm @@ -196,7 +196,17 @@ msg+="." else msg+="!" - for(var/mob/M in viewers(src)) + + var/list/listening = viewers(src) + for(var/mob/M in world) + if (!M.client) + continue //skip monkeys and leavers + if (istype(M, /mob/new_player)) + continue + if(M.stat == 2 && M.client.ghost_ears) + listening|=M + + for(var/mob/M in listening) M << "The crystal says, \"[msg]\"" lastsaid = world.timeofday + rand(300,800) From a240dc71bac338b650f6eab8a1596b8165d33454 Mon Sep 17 00:00:00 2001 From: caelaislinn Date: Mon, 25 Jun 2012 01:48:55 +1000 Subject: [PATCH 4/5] added acid_act() proc, works similarly to proc on luna code, fixed some anomaly bugs Signed-off-by: caelaislinn --- code/modules/chemical/Chemistry-Reagents.dm | 9 ++++ code/modules/research/artifact_analysis.dm | 4 +- code/modules/research/artifact_archaeo.dm | 47 +++++++++++++-------- code/modules/research/artifact_harvester.dm | 19 ++++----- 4 files changed, 49 insertions(+), 30 deletions(-) diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index d86f77622fe..753fafc8d94 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -702,6 +702,8 @@ datum reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) if(!istype(M, /mob/living)) return + if(M.acid_act(src)) + return if(method == TOUCH) if(istype(M, /mob/living/carbon/human)) if(M:wear_mask) @@ -734,6 +736,8 @@ datum M.take_organ_damage(min(15, volume * 2)) reaction_obj(var/obj/O, var/volume) + if(O.acid_act(src)) + return if(istype(O, /obj/effect/blob)) var/obj/effect/blob/B = O if(B.weakness == "acid") @@ -772,6 +776,9 @@ datum reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) if(!istype(M, /mob/living)) return //wooo more runtime fixin + //cael - added the option for things splashed with acid to handle it themselves (for xenoarch) + if(M.acid_act(src)) + return if(method == TOUCH) if(istype(M, /mob/living/carbon/human)) if(M:wear_mask) @@ -815,6 +822,8 @@ datum M.take_organ_damage(min(15, volume * 4)) reaction_obj(var/obj/O, var/volume) + if(O.acid_act(src)) + return if(istype(O, /obj/effect/blob)) var/obj/effect/blob/B = O if(B.weakness == "acid") diff --git a/code/modules/research/artifact_analysis.dm b/code/modules/research/artifact_analysis.dm index fea65bbb6d7..3089e9cd655 100644 --- a/code/modules/research/artifact_analysis.dm +++ b/code/modules/research/artifact_analysis.dm @@ -248,10 +248,10 @@ src.visible_message(message, message) use_power(500) else if (findarti > 1) - var/message = "[src] states, \"Cannot analyse. Too many artifacts on pad.\"" + var/message = "[src] states, \"Cannot analyse. Error isolating energy signature.\"" src.visible_message(message, message) else - var/message = "[src] states, \"Cannot analyse. No artifact found.\"" + var/message = "[src] states, \"Cannot analyse. No noteworthy energy signature isolated.\"" src.visible_message(message, message) if(href_list["upload"] && cur_id != "") diff --git a/code/modules/research/artifact_archaeo.dm b/code/modules/research/artifact_archaeo.dm index 68d16696a5d..9ad7179b705 100644 --- a/code/modules/research/artifact_archaeo.dm +++ b/code/modules/research/artifact_archaeo.dm @@ -31,24 +31,31 @@ else for(var/mob/M in viewers(world.view, user)) M.show_message("\blue A few sparks fly off the rock, but otherwise nothing else happens.",1) - else if(istype(W, /obj/item/weapon/reagent_containers/)) - var/obj/item/weapon/reagent_containers/R = W - if(R.reagents.has_reagent("pacid", 1)) - if(src.method) - if(inside) - var/obj/A = new src.inside(get_turf(src)) - for(var/mob/M in viewers(world.view, get_turf(src))) - M.show_message("\blue The rock fizzes away revealing a [A.name].",1) - else - for(var/mob/M in viewers(world.view, get_turf(src))) - M.show_message("\blue The rock fizzes away into nothing.",1) - del src - else - for(var/mob/M in viewers(world.view, get_turf(src))) - M.show_message("\blue The acid splashes harmlessly off the rock, nothing else interesting happens.",1) +/obj/item/weapon/ore/strangerock/acid_act(var/datum/reagent/R) + if(src.method) + if(inside) + var/obj/A = new src.inside(get_turf(src)) + for(var/mob/M in viewers(world.view, get_turf(src))) + M.show_message("\blue The rock fizzes away revealing a [A.name].",1) + else + for(var/mob/M in viewers(world.view, get_turf(src))) + M.show_message("\blue The rock fizzes away into nothing.",1) + del src + else + for(var/mob/M in viewers(world.view, get_turf(src))) + M.show_message("\blue The acid splashes harmlessly off the rock, nothing else interesting happens.",1) + return 1 +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//this should probably be elsewhere, but oh well +/atom/proc/acid_act(var/datum/reagent/R) + return 0 +/*/obj/proc/acid_act(var/datum/reagent/R) + return 0 +/mob/proc/acid_act(var/datum/reagent/R) + return 0*/ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -124,7 +131,11 @@ /obj/item/weapon/talkingcrystal/proc/catchMessage(var/msg, var/mob/source) var/list/seperate = list() - if(findtext(msg," ")==0) + if(findtext(msg,"((")) + return + else if(findtext(msg,"))")) + return + else if(findtext(msg," ")==0) return else /*var/l = lentext(msg) @@ -167,7 +178,7 @@ if(!word) text = "[pick(words)]" else - text = word + text = pick(stringsplit(word)) if(lentext(text)==1) text=uppertext(text) else @@ -207,7 +218,7 @@ listening|=M for(var/mob/M in listening) - M << "The crystal says, \"[msg]\"" + M << "The crystal reverberates, \blue\"[msg]\"" lastsaid = world.timeofday + rand(300,800) /obj/item/weapon/talkingcrystal/process() diff --git a/code/modules/research/artifact_harvester.dm b/code/modules/research/artifact_harvester.dm index 16c0a4e6ce5..b01bdbf4d0d 100644 --- a/code/modules/research/artifact_harvester.dm +++ b/code/modules/research/artifact_harvester.dm @@ -94,20 +94,19 @@ var/mundane = 0 for(var/obj/O in get_turf(owned_pad)) - mundane++ - break + if(!istype(O, /obj/machinery/artifact)) + mundane++ + break for(var/mob/O in get_turf(owned_pad)) - mundane++ - break + if(!istype(O, /obj/machinery/artifact)) + mundane++ + break - if(articount > 1) - var/message = "[src] states, \"Cannot harvest. Too many artifacts on pad.\"" - src.visible_message(message, message) - else if(mundane) - var/message = "[src] states, \"No noteworthy energy signatures detected.\"" + if(articount > 1 || mundane) + var/message = "[src] states, \"Cannot harvest. Error isolating energy signature.\"" src.visible_message(message, message) else if(!articount) - var/message = "[src] states, \"Cannot harvest. No artifact found.\"" + var/message = "[src] states, \"Cannot harvest. No noteworthy energy signature isolated.\"" src.visible_message(message, message) else if (cur_artifact.being_used) var/message = "[src] states, \"Cannot harvest. Too much interferance from energy scan.\"" From 156f1349c2d3918fb63a6a90c61348288ae7514e Mon Sep 17 00:00:00 2001 From: Albert Iordache Date: Sun, 24 Jun 2012 19:13:51 +0300 Subject: [PATCH 5/5] Fixed compilation error and moved acid_act() --- code/game/machinery/computer/cloning.dm | 2 +- code/game/objects/weapons.dm | 7 +++++++ code/modules/research/artifact_archaeo.dm | 11 ----------- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 382ab89c367..00e45b009b9 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -186,7 +186,7 @@ if(scantemp == "Scanner unoccupied") scantemp = "" // Stupid check to remove the text // Make sure we can't scan a headless person. It breaks the cloner permanently. - var/datum/organ/external/temp = organs["head"] + var/datum/organ/external/temp = src.scanner.occupant.organs["head"] if(temp && !(temp.status & DESTROYED)) dat += "Scan - [src.scanner.occupant]
" else diff --git a/code/game/objects/weapons.dm b/code/game/objects/weapons.dm index c0d479c17cf..f667ec390a4 100644 --- a/code/game/objects/weapons.dm +++ b/code/game/objects/weapons.dm @@ -95,6 +95,13 @@ /atom/proc/blob_act() return +/atom/proc/acid_act(var/datum/reagent/R) + return 0 +/*/obj/proc/acid_act(var/datum/reagent/R) + return 0 +/mob/proc/acid_act(var/datum/reagent/R) + return 0*/ + // bullet_act called when anything is hit buy a projectile (bullet, tazer shot, laser, etc.) // flag is projectile type, can be: //PROJECTILE_TASER = 1 taser gun diff --git a/code/modules/research/artifact_archaeo.dm b/code/modules/research/artifact_archaeo.dm index 9ad7179b705..cc03ad685d6 100644 --- a/code/modules/research/artifact_archaeo.dm +++ b/code/modules/research/artifact_archaeo.dm @@ -47,17 +47,6 @@ M.show_message("\blue The acid splashes harmlessly off the rock, nothing else interesting happens.",1) return 1 -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -//this should probably be elsewhere, but oh well -/atom/proc/acid_act(var/datum/reagent/R) - return 0 -/*/obj/proc/acid_act(var/datum/reagent/R) - return 0 -/mob/proc/acid_act(var/datum/reagent/R) - return 0*/ - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /obj/item/weapon/crystal name = "Crystal"