Files
Bubberstation/code/modules/events/operative.dm
Jack Edge 0ce5f8582c Lone Operative event now works
Fixes #17556.

Also, a bug where the lone op would spawn with the combat mode on the
sapce helmet has been fixed.
2016-05-21 15:18:52 +01:00

60 lines
1.7 KiB
Plaintext

/datum/round_event_control/operative
name = "Lone Operative"
typepath = /datum/round_event/ghost_role/operative
weight = 0 //Admin only
max_occurrences = 1
/datum/round_event/ghost_role/operative
minimum_required = 1
role_name = "lone operative"
/datum/round_event/ghost_role/operative/spawn_role()
var/list/candidates = get_candidates("operative", null, ROLE_OPERATIVE)
if(!candidates.len)
return NOT_ENOUGH_PLAYERS
var/mob/dead/selected = popleft(candidates)
var/list/spawn_locs = list()
for(var/obj/effect/landmark/L in landmarks_list)
if(L.name in list("ninjaspawn","carpspawn"))
spawn_locs += L.loc
if(!spawn_locs.len)
return MAP_ERROR
var/mob/living/carbon/human/operative = new(pick(spawn_locs))
var/datum/preferences/A = new
A.copy_to(operative)
operative.dna.update_dna_identity()
operative.equipOutfit(/datum/outfit/syndicate/full)
var/datum/mind/Mind = new /datum/mind(selected.key)
Mind.assigned_role = "Lone Operative"
Mind.special_role = "Lone Operative"
ticker.mode.traitors |= Mind
Mind.active = 1
var/obj/machinery/nuclearbomb/selfdestruct/nuke = locate() in machines
if(nuke)
var/nuke_code
if(!nuke.r_code || nuke.r_code == "ADMIN")
nuke_code = "[rand(10000, 99999)]"
nuke.r_code = nuke_code
else
nuke_code = nuke.r_code
Mind.store_memory("<B>Station Self-Destruct Device Code</B>: [nuke_code]", 0, 0)
Mind.current << "The nuclear authorization code is: <B>[nuke_code]</B>"
var/datum/objective/nuclear/O = new()
O.owner = Mind
Mind.objectives += O
Mind.transfer_to(operative)
message_admins("[operative.key] has been made into lone operative by an event.")
log_game("[operative.key] was spawned as a lone operative by an event.")
spawned_mobs += operative
return SUCCESSFUL_SPAWN