mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-22 03:27:46 +01:00
Refactors ghost query to not use sleep (#17267)
* Refactors ghost query to not use sleeep * Update ghost_query.dm * don't need this anymore
This commit is contained in:
@@ -180,6 +180,7 @@
|
||||
locked = 0
|
||||
mecha = null//This does not appear to be used outside of reference in mecha.dm.
|
||||
var/ghost_query_type = null
|
||||
var/datum/ghost_query/Q //This is used so we can unregister ourself.
|
||||
|
||||
/obj/item/mmi/digital/New()
|
||||
src.brainmob = new(src)
|
||||
@@ -245,13 +246,18 @@
|
||||
return
|
||||
searching = 1
|
||||
|
||||
var/datum/ghost_query/Q = new ghost_query_type()
|
||||
var/list/winner = Q.query()
|
||||
if(winner.len)
|
||||
var/mob/observer/dead/D = winner[1]
|
||||
Q = new ghost_query_type()
|
||||
RegisterSignal(Q, COMSIG_GHOST_QUERY_COMPLETE, PROC_REF(get_winner))
|
||||
Q.query()
|
||||
|
||||
/obj/item/mmi/digital/proc/get_winner()
|
||||
if(Q && Q.candidates.len) //Q should NEVER get deleted but...whatever, sanity.
|
||||
var/mob/observer/dead/D = Q.candidates[1]
|
||||
transfer_personality(D)
|
||||
else
|
||||
reset_search()
|
||||
UnregisterSignal(Q, COMSIG_GHOST_QUERY_COMPLETE)
|
||||
qdel_null(Q) //get rid of the query
|
||||
|
||||
/obj/item/mmi/digital/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer.
|
||||
if(src.brainmob && src.brainmob.key)
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
|
||||
var/has_reproduced = FALSE
|
||||
var/used_dominate // world.time when the dominate power was last used.
|
||||
var/datum/ghost_query/Q // Used to unregister our signal
|
||||
|
||||
/mob/living/simple_mob/animal/borer/roundstart
|
||||
roundstart = TRUE
|
||||
@@ -180,11 +181,16 @@
|
||||
host = null
|
||||
|
||||
/mob/living/simple_mob/animal/borer/proc/request_player()
|
||||
var/datum/ghost_query/Q = new /datum/ghost_query/borer()
|
||||
var/list/winner = Q.query() // This will sleep the proc for awhile.
|
||||
if(winner.len)
|
||||
var/mob/observer/dead/D = winner[1]
|
||||
Q = new /datum/ghost_query/borer()
|
||||
RegisterSignal(Q, COMSIG_GHOST_QUERY_COMPLETE, PROC_REF(get_winner))
|
||||
Q.query() // This will sleep the proc for awhile.
|
||||
|
||||
/mob/living/simple_mob/animal/borer/proc/get_winner()
|
||||
if(Q && Q.candidates.len) //Q should NEVER get deleted but...whatever, sanity.
|
||||
var/mob/observer/dead/D = Q.candidates[1]
|
||||
transfer_personality(D)
|
||||
UnregisterSignal(Q, COMSIG_GHOST_QUERY_COMPLETE)
|
||||
qdel_null(Q) //get rid of the query
|
||||
|
||||
/mob/living/simple_mob/animal/borer/proc/transfer_personality(mob/candidate)
|
||||
if(!candidate || !candidate.mind)
|
||||
|
||||
Reference in New Issue
Block a user