diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm
index 16b94310c64..fb2e1f00ebe 100644
--- a/code/game/gamemodes/antag_spawner.dm
+++ b/code/game/gamemodes/antag_spawner.dm
@@ -17,18 +17,36 @@
icon = 'icons/obj/device.dmi'
icon_state = "locator"
var/TC_cost = 0
+ var/checking = 0
/obj/item/weapon/antag_spawner/borg_tele/attack_self(mob/user as mob)
if(used)
user << "The teleporter is out of power."
return
- var/list/borg_candicates = get_candidates(BE_OPERATIVE)
- if(borg_candicates.len > 0)
- used = 1
- var/client/C = pick(borg_candicates)
- spawn_antag(C, get_turf(src.loc), "syndieborg")
+ if(!checking)
+ checking = 1
+ user << "The device is now checking for possible candidates."
+ get_candidate_answer(user, get_candidates(BE_OPERATIVE))
else
+ user << "The device is already checking for possible candidates."
+ return
+
+/obj/item/weapon/antag_spawner/borg_tele/proc/get_candidate_answer(mob/user as mob, var/list/possiblecandidates = list())
+ if(possiblecandidates.len <= 0)
+ checking = 0
user << "Unable to connect to Syndicate Command. Please wait and try again later or use the teleporter on your uplink to get your points refunded."
+ return
+ else
+ var/possibleborg = pick(possiblecandidates)
+ var/input = alert(possibleborg,"Do you want to spawn in as a cyborg for the Syndicate operatives?","Syndicate Cyborg","No","Yes")
+ if(input == "Yes" && used == 0)
+ possiblecandidates -= possibleborg
+ used = 1
+ checking = 0
+ spawn_antag(possibleborg, get_turf(src.loc), "syndieborg")
+ else
+ possiblecandidates -= possibleborg
+ get_candidate_answer(user, possiblecandidates)
/obj/item/weapon/antag_spawner/borg_tele/spawn_antag(var/client/C, var/turf/T, var/type = "")
var/datum/effect/effect/system/spark_spread/S = new /datum/effect/effect/system/spark_spread
@@ -39,4 +57,4 @@
ticker.mode.syndicates += R.mind
ticker.mode.update_synd_icons_added(R.mind)
R.mind.special_role = "syndicate"
- R.faction = list("syndicate")
\ No newline at end of file
+ R.faction = list("syndicate")
diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm
index 17552882d66..d83c1b56ede 100644
--- a/code/game/objects/items/devices/uplinks.dm
+++ b/code/game/objects/items/devices/uplinks.dm
@@ -254,22 +254,22 @@ var/list/world_uplinks = list()
/obj/item/device/radio/headset/syndicate/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/antag_spawner/borg_tele))
var/obj/item/weapon/antag_spawner/borg_tele/S = W
- if(!S.used)
+ if(!S.used && !S.checking)
hidden_uplink.uses += S.TC_cost
qdel(S)
user << "Teleporter refunded."
else
- user << "This teleporter is already used."
+ user << "This teleporter is already used, or is currently being used."
/obj/item/device/radio/uplink/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/antag_spawner/borg_tele))
var/obj/item/weapon/antag_spawner/borg_tele/S = W
- if(!S.used)
+ if(!S.used && !S.checking)
hidden_uplink.uses += S.TC_cost
qdel(S)
user << "Teleporter refunded."
else
- user << "This teleporter is already used."
+ user << "This teleporter is already used, or is currently being used."
// PRESET UPLINKS
// A collection of preset uplinks.