From bca54aae9eb618a8ef658f512dcc9b783ac67e9e Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 4 Mar 2016 08:31:32 -0500 Subject: [PATCH] Experimentor Fixes --- code/modules/research/experimentor.dm | 79 ++++++++++++++------------- 1 file changed, 40 insertions(+), 39 deletions(-) diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index d5f3d72e01e..62784d8c8ca 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -170,28 +170,25 @@ if(!linked_console) dat += "Scan for R&D Console
" if(loaded_item) - if(recentlyExperimented) - dat += "The [src] is still resetting!" - else - dat += "Loaded Item: [loaded_item]
" - dat += "Technology:
" - var/list/D = ConvertReqString2List(loaded_item.origin_tech) - for(var/T in D) - dat += "[T]
" - dat += "

Available tests:" - dat += "
Poke" - dat += "
Irradiate" - dat += "
Gas" - dat += "
Burn" - dat += "
Freeze" - dat += "
Destroy
" - if(istype(loaded_item,/obj/item/weapon/relic)) - dat += "
Discover
" - dat += "
Eject" + dat += "Loaded Item: [loaded_item]
" + dat += "Technology:
" + var/list/D = ConvertReqString2List(loaded_item.origin_tech) + for(var/T in D) + dat += "[T]
" + dat += "

Available tests:" + dat += "
Poke" + dat += "
Irradiate" + dat += "
Gas" + dat += "
Burn" + dat += "
Freeze" + dat += "
Destroy
" + if(istype(loaded_item,/obj/item/weapon/relic)) + dat += "
Discover
" + dat += "
Eject" else dat += "Nothing loaded." dat += "
Refresh
" - dat += "
Close
" + dat += "
Close
" var/datum/browser/popup = new(user, "experimentor","Experimentor", 700, 400, src) popup.set_content(dat) popup.open() @@ -460,27 +457,23 @@ visible_message("[src]'s crusher goes way too many levels too high, crushing right through space-time!") playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3) investigate_log("Experimentor has triggered the 'throw things' reaction.", "experimentor") - var/list/throwAt = list() - for(var/i in oview(7,src)) - if(istype(i,/obj/item) || istype(i,/mob/living)) - throwAt.Add(i) - var/counter - for(counter = 1, counter < throwAt.len, ++counter) - var/cast = throwAt[counter] - cast:throw_at(src,10,1) + for(var/atom/movable/AM in oview(7,src)) + if(!AM.anchored) + spawn(0) + AM.throw_at(src,10,1) + if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src]'s crusher goes one level too high, crushing right into space-time!") playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3) investigate_log("Experimentor has triggered the 'minor throw things' reaction.", "experimentor") - var/list/oViewStuff = oview(7,src) var/list/throwAt = list() - for(var/i in oViewStuff) - if(istype(i,/obj/item) || istype(i,/mob/living)) - throwAt.Add(i) - var/counter - for(counter = 1, counter < throwAt.len, ++counter) - var/cast = throwAt[counter] - cast:throw_at(pick(throwAt),10,1) + for(var/atom/movable/AM in oview(7,src)) + if(!AM.anchored) + throwAt.Add(AM) + for(var/counter = 1, counter < throwAt.len, ++counter) + var/atom/movable/cast = throwAt[counter] + spawn(0) + cast.throw_at(pick(throwAt),10,1) ejectItem(TRUE) //////////////////////////////////////////////////////////////////////////////////////////////// if(exp == FAIL) @@ -553,8 +546,9 @@ var/scantype = href_list["function"] var/obj/item/process = locate(href_list["item"]) in src - if(scantype == "close") + if(href_list["close"]) usr << browse(null, "window=experimentor") + return else if(scantype == "search") var/obj/machinery/computer/rdconsole/D = locate(/obj/machinery/computer/rdconsole) in oview(3,src) if(D) @@ -567,6 +561,14 @@ if(recentlyExperimented) usr << "[src] has been used too recently!" return + else if(!loaded_item) + updateUsrDialog() //Set the interface to unloaded mode + usr << "[src] is not currently loaded!" + return + else if(!process || process != loaded_item) //Interface exploit protection (such as hrefs or swapping items with interface set to old item) + updateUsrDialog() //Refresh interface to update interface hrefs + usr << "Interface failure detected in [src]. Please try again." + return var/dotype if(text2num(scantype) == SCANTYPE_DISCOVER) dotype = SCANTYPE_DISCOVER @@ -579,9 +581,8 @@ var/list/temp_tech = ConvertReqString2List(process.origin_tech) for(var/T in temp_tech) linked_console.files.UpdateTech(T, temp_tech[T]) - linked_console.files.UpdateDesigns(process,process.type) - if(scantype != "close") - src.updateUsrDialog() + linked_console.files.UpdateDesigns(process,temp_tech) + src.updateUsrDialog() return //~~~~~~~~Admin logging proc, aka the Powergamer Alarm~~~~~~~~