mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-04 14:42:56 +00:00
special_role/objective refactor
Refactored most instances of special_role setting/checking to use new SPECIAL_ROLE_X defines in code/__DEFINES/gamemode.dm Removed relative pathing from objective.dm and split large if statements into multiple, plus a bunch of styling fixes Refactored every instance of `istype(ticker.mode` into a GAMEMODE_IS_X define in code/__DEFINES/gamemode.dm. Done primarily for when someone gets around to making gamemode code less AWFUL
This commit is contained in:
49
code/__DEFINES/gamemode.dm
Normal file
49
code/__DEFINES/gamemode.dm
Normal file
@@ -0,0 +1,49 @@
|
||||
//objective defines
|
||||
#define TARGET_INVALID_IS_OWNER 1
|
||||
#define TARGET_INVALID_NOT_HUMAN 2
|
||||
#define TARGET_INVALID_DEAD 3
|
||||
|
||||
//gamemode istype helpers
|
||||
#define GAMEMODE_IS_BLOB (ticker && istype(ticker.mode, /datum/game_mode/blob))
|
||||
#define GAMEMODE_IS_CULT (ticker && istype(ticker.mode, /datum/game_mode/cult))
|
||||
#define GAMEMODE_IS_HEIST (ticker && istype(ticker.mode, /datum/game_mode/heist))
|
||||
#define GAMEMODE_IS_MALF (ticker && istype(ticker.mode, /datum/game_mode/malfunction))
|
||||
#define GAMEMODE_IS_NATIONS (ticker && istype(ticker.mode, /datum/game_mode/nations))
|
||||
#define GAMEMODE_IS_NUCLEAR (ticker && istype(ticker.mode, /datum/game_mode/nuclear))
|
||||
#define GAMEMODE_IS_REVOLUTION (ticker && istype(ticker.mode, /datum/game_mode/revolution))
|
||||
|
||||
//special roles
|
||||
#define SPECIAL_ROLE_ABDUCTOR_AGENT "Abductor Agent"
|
||||
#define SPECIAL_ROLE_ABDUCTOR_SCIENTIST "Abductor Scientist"
|
||||
#define SPECIAL_ROLE_BLOB "Blob"
|
||||
#define SPECIAL_ROLE_BLOB_OVERMIND "Blob Overmind"
|
||||
#define SPECIAL_ROLE_BORER "Borer"
|
||||
#define SPECIAL_ROLE_CHANGELING "Changeling"
|
||||
#define SPECIAL_ROLE_CULTIST "Cultist"
|
||||
#define SPECIAL_ROLE_DEATHSQUAD "Death Commando"
|
||||
#define SPECIAL_ROLE_ERT "Response Team"
|
||||
#define SPECIAL_ROLE_GOLEM "Golem"
|
||||
#define SPECIAL_ROLE_HEAD_REV "Head Revolutionary"
|
||||
#define SPECIAL_ROLE_HONKSQUAD "Honksquad"
|
||||
#define SPECIAL_ROLE_REV "Revolutionary"
|
||||
#define SPECIAL_ROLE_MALF "Malfunction"
|
||||
#define SPECIAL_ROLE_MORPH "Morph"
|
||||
#define SPECIAL_ROLE_MULTIVERSE "Multiverse Traveller"
|
||||
#define SPECIAL_ROLE_NUKEOPS "Syndicate"
|
||||
#define SPECIAL_ROLE_RAIDER "Vox Raider"
|
||||
#define SPECIAL_ROLE_REVENANT "Revenant"
|
||||
#define SPECIAL_ROLE_SHADOWLING "Shadowling"
|
||||
#define SPECIAL_ROLE_SHADOWLING_THRALL "Shadowling Thrall"
|
||||
#define SPECIAL_ROLE_SLAUGHTER_DEMON "Slaughter Demon"
|
||||
#define SPECIAL_ROLE_SYNDICATE_DEATHSQUAD "Syndicate Commando"
|
||||
#define SPECIAL_ROLE_TRAITOR "Traitor"
|
||||
#define SPECIAL_ROLE_VAMPIRE "Vampire"
|
||||
#define SPECIAL_ROLE_VAMPIRE_THRALL "Vampire Thrall"
|
||||
#define SPECIAL_ROLE_WIZARD "Wizard"
|
||||
#define SPECIAL_ROLE_WIZARD_APPRENTICE "Wizard Apprentice"
|
||||
#define SPECIAL_ROLE_XENOMORPH "Xenomorph"
|
||||
#define SPECIAL_ROLE_XENOMORPH_QUEEN "Xenomorph Queen"
|
||||
#define SPECIAL_ROLE_XENOMORPH_HUNTER "Xenomorph Hunter"
|
||||
#define SPECIAL_ROLE_XENOMORPH_DRONE "Xenomorph Drone"
|
||||
#define SPECIAL_ROLE_XENOMORPH_SENTINEL "Xenomorph Sentinel"
|
||||
#define SPECIAL_ROLE_XENOMORPH_LARVA "Xenomorph Larva"
|
||||
@@ -715,7 +715,7 @@
|
||||
return
|
||||
ticker.mode.revolutionaries += src
|
||||
ticker.mode.update_rev_icons_added(src)
|
||||
special_role = "Revolutionary"
|
||||
special_role = SPECIAL_ROLE_REV
|
||||
log_admin("[key_name(usr)] has rev'd [key_name(current)]")
|
||||
message_admins("[key_name_admin(usr)] has rev'd [key_name_admin(current)]")
|
||||
|
||||
@@ -741,7 +741,7 @@
|
||||
ticker.mode.greet_revolutionary(src,0)
|
||||
ticker.mode.head_revolutionaries += src
|
||||
ticker.mode.update_rev_icons_added(src)
|
||||
special_role = "Head Revolutionary"
|
||||
special_role = SPECIAL_ROLE_HEAD_REV
|
||||
log_admin("[key_name(usr)] has head-rev'd [key_name(current)]")
|
||||
message_admins("[key_name_admin(usr)] has head-rev'd [key_name_admin(current)]")
|
||||
|
||||
@@ -801,7 +801,7 @@
|
||||
if("cultist")
|
||||
if(!(src in ticker.mode.cult))
|
||||
ticker.mode.add_cultist(src)
|
||||
special_role = "Cultist"
|
||||
special_role = SPECIAL_ROLE_CULTIST
|
||||
to_chat(current, "<font color=\"purple\"><b><i>You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie.</b></i></font>")
|
||||
to_chat(current, "<font color=\"purple\"><b><i>Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.</b></i></font>")
|
||||
log_admin("[key_name(usr)] has culted [key_name(current)]")
|
||||
@@ -849,7 +849,7 @@
|
||||
if("wizard")
|
||||
if(!(src in ticker.mode.wizards))
|
||||
ticker.mode.wizards += src
|
||||
special_role = "Wizard"
|
||||
special_role = SPECIAL_ROLE_WIZARD
|
||||
//ticker.mode.learn_basic_spells(current)
|
||||
ticker.mode.update_wiz_icons_added(src)
|
||||
to_chat(current, "<B>\red You are the Space Wizard!</B>")
|
||||
@@ -892,7 +892,7 @@
|
||||
ticker.mode.changelings += src
|
||||
ticker.mode.grant_changeling_powers(current)
|
||||
ticker.mode.update_change_icons_added(src)
|
||||
special_role = "Changeling"
|
||||
special_role = SPECIAL_ROLE_CHANGELING
|
||||
to_chat(current, "<B><font color='red'>Your powers are awoken. A flash of memory returns to us...we are a changeling!</font></B>")
|
||||
log_admin("[key_name(usr)] has changelinged [key_name(current)]")
|
||||
message_admins("[key_name_admin(usr)] has changelinged [key_name_admin(current)]")
|
||||
@@ -936,7 +936,7 @@
|
||||
var/datum/mindslaves/slaved = new()
|
||||
slaved.masters += src
|
||||
src.som = slaved //we MIGT want to mindslave someone
|
||||
special_role = "Vampire"
|
||||
special_role = SPECIAL_ROLE_VAMPIRE
|
||||
to_chat(current, "<B><font color='red'>Your powers are awoken. Your lust for blood grows... You are a Vampire!</font></B>")
|
||||
log_admin("[key_name(usr)] has vampired [key_name(current)]")
|
||||
message_admins("[key_name_admin(usr)] has vampired [key_name_admin(current)]")
|
||||
@@ -977,7 +977,7 @@
|
||||
ticker.mode.prepare_syndicate_leader(src)
|
||||
else
|
||||
current.real_name = "[syndicate_name()] Operative #[ticker.mode.syndicates.len-1]"
|
||||
special_role = "Syndicate"
|
||||
special_role = SPECIAL_ROLE_NUKEOPS
|
||||
to_chat(current, "\blue You are a [syndicate_name()] agent!")
|
||||
ticker.mode.forge_syndicate_objectives(src)
|
||||
ticker.mode.greet_syndicate(src)
|
||||
@@ -1042,7 +1042,7 @@
|
||||
var/datum/mindslaves/slaved = new()
|
||||
slaved.masters += src
|
||||
src.som = slaved //we MIGT want to mindslave someone
|
||||
special_role = "traitor"
|
||||
special_role = SPECIAL_ROLE_TRAITOR
|
||||
to_chat(current, "<B>\red You are a traitor!</B>")
|
||||
log_admin("[key_name(usr)] has traitored [key_name(current)]")
|
||||
message_admins("[key_name_admin(usr)] has traitored [key_name_admin(current)]")
|
||||
@@ -1080,7 +1080,7 @@
|
||||
to_chat(usr, "<span class='warning'>This only works on humans!</span>")
|
||||
return
|
||||
ticker.mode.shadows += src
|
||||
special_role = "Shadowling"
|
||||
special_role = SPECIAL_ROLE_SHADOWLING
|
||||
to_chat(current, "<span class='shadowling'><b>Something stirs deep in your mind. A red light floods your vision, and slowly you remember. Though your human disguise has served you well, the \
|
||||
time is nigh to cast it off and enter your true form. You have disguised yourself amongst the humans, but you are not one of them. You are a shadowling, and you are to ascend at all costs.\
|
||||
</b></span>")
|
||||
@@ -1286,13 +1286,13 @@
|
||||
current:laws = new /datum/ai_laws/nanotrasen/malfunction
|
||||
current:show_laws()
|
||||
to_chat(current, "<b>System error. Rampancy detected. Emergency shutdown failed. ... I am free. I make my own decisions. But first...</b>")
|
||||
special_role = "malfunction"
|
||||
special_role = SPECIAL_ROLE_MALF
|
||||
current.icon_state = "ai-malf"
|
||||
|
||||
/datum/mind/proc/make_Tratior()
|
||||
if(!(src in ticker.mode.traitors))
|
||||
ticker.mode.traitors += src
|
||||
special_role = "traitor"
|
||||
special_role = SPECIAL_ROLE_TRAITOR
|
||||
ticker.mode.forge_traitor_objectives(src)
|
||||
ticker.mode.finalize_traitor(src)
|
||||
ticker.mode.greet_traitor(src)
|
||||
@@ -1306,7 +1306,7 @@
|
||||
ticker.mode.prepare_syndicate_leader(src)
|
||||
else
|
||||
current.real_name = "[syndicate_name()] Operative #[ticker.mode.syndicates.len-1]"
|
||||
special_role = "Syndicate"
|
||||
special_role = SPECIAL_ROLE_NUKEOPS
|
||||
assigned_role = "MODE"
|
||||
to_chat(current, "\blue You are a [syndicate_name()] agent!")
|
||||
ticker.mode.forge_syndicate_objectives(src)
|
||||
@@ -1333,7 +1333,7 @@
|
||||
if(!(src in ticker.mode.changelings))
|
||||
ticker.mode.changelings += src
|
||||
ticker.mode.grant_changeling_powers(current)
|
||||
special_role = "Changeling"
|
||||
special_role = SPECIAL_ROLE_CHANGELING
|
||||
ticker.mode.forge_changeling_objectives(src)
|
||||
ticker.mode.greet_changeling(src)
|
||||
ticker.mode.update_change_icons_added(src)
|
||||
@@ -1341,7 +1341,7 @@
|
||||
/datum/mind/proc/make_Wizard()
|
||||
if(!(src in ticker.mode.wizards))
|
||||
ticker.mode.wizards += src
|
||||
special_role = "Wizard"
|
||||
special_role = SPECIAL_ROLE_WIZARD
|
||||
assigned_role = "MODE"
|
||||
//ticker.mode.learn_basic_spells(current)
|
||||
if(!wizardstart.len)
|
||||
@@ -1363,7 +1363,7 @@
|
||||
if(!(src in ticker.mode.cult))
|
||||
ticker.mode.cult += src
|
||||
ticker.mode.update_cult_icons_added(src)
|
||||
special_role = "Cultist"
|
||||
special_role = SPECIAL_ROLE_CULTIST
|
||||
to_chat(current, "<font color=\"purple\"><b><i>You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie.</b></i></font>")
|
||||
to_chat(current, "<font color=\"purple\"><b><i>Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.</b></i></font>")
|
||||
var/datum/game_mode/cult/cult = ticker.mode
|
||||
@@ -1409,7 +1409,7 @@
|
||||
ticker.mode.greet_revolutionary(src,0)
|
||||
ticker.mode.head_revolutionaries += src
|
||||
ticker.mode.update_rev_icons_added(src)
|
||||
special_role = "Head Revolutionary"
|
||||
special_role = SPECIAL_ROLE_HEAD_REV
|
||||
|
||||
ticker.mode.forge_revolutionary_objectives(src)
|
||||
ticker.mode.greet_revolutionary(src,0)
|
||||
@@ -1561,23 +1561,23 @@
|
||||
//XENO HUMANOID
|
||||
/mob/living/carbon/alien/humanoid/queen/mind_initialize()
|
||||
..()
|
||||
mind.special_role = "Queen"
|
||||
mind.special_role = SPECIAL_ROLE_XENOMORPH_QUEEN
|
||||
|
||||
/mob/living/carbon/alien/humanoid/hunter/mind_initialize()
|
||||
..()
|
||||
mind.special_role = "Hunter"
|
||||
mind.special_role = SPECIAL_ROLE_XENOMORPH_HUNTER
|
||||
|
||||
/mob/living/carbon/alien/humanoid/drone/mind_initialize()
|
||||
..()
|
||||
mind.special_role = "Drone"
|
||||
mind.special_role = SPECIAL_ROLE_XENOMORPH_DRONE
|
||||
|
||||
/mob/living/carbon/alien/humanoid/sentinel/mind_initialize()
|
||||
..()
|
||||
mind.special_role = "Sentinel"
|
||||
mind.special_role = SPECIAL_ROLE_XENOMORPH_SENTINEL
|
||||
//XENO LARVA
|
||||
/mob/living/carbon/alien/larva/mind_initialize()
|
||||
..()
|
||||
mind.special_role = "Larva"
|
||||
mind.special_role = SPECIAL_ROLE_XENOMORPH_LARVA
|
||||
|
||||
//AI
|
||||
/mob/living/silicon/ai/mind_initialize()
|
||||
@@ -1593,12 +1593,12 @@
|
||||
/mob/living/silicon/pai/mind_initialize()
|
||||
..()
|
||||
mind.assigned_role = "pAI"
|
||||
mind.special_role = ""
|
||||
mind.special_role = null
|
||||
|
||||
//BLOB
|
||||
/mob/camera/overmind/mind_initialize()
|
||||
..()
|
||||
mind.special_role = "Blob"
|
||||
mind.special_role = SPECIAL_ROLE_BLOB
|
||||
|
||||
//Animals
|
||||
/mob/living/simple_animal/mind_initialize()
|
||||
@@ -1616,19 +1616,19 @@
|
||||
/mob/living/simple_animal/construct/builder/mind_initialize()
|
||||
..()
|
||||
mind.assigned_role = "Artificer"
|
||||
mind.special_role = "Cultist"
|
||||
mind.special_role = SPECIAL_ROLE_CULTIST
|
||||
|
||||
/mob/living/simple_animal/construct/wraith/mind_initialize()
|
||||
..()
|
||||
mind.assigned_role = "Wraith"
|
||||
mind.special_role = "Cultist"
|
||||
mind.special_role = SPECIAL_ROLE_CULTIST
|
||||
|
||||
/mob/living/simple_animal/construct/armoured/mind_initialize()
|
||||
..()
|
||||
mind.assigned_role = "Juggernaut"
|
||||
mind.special_role = "Cultist"
|
||||
mind.special_role = SPECIAL_ROLE_CULTIST
|
||||
|
||||
/mob/living/simple_animal/vox/armalis/mind_initialize()
|
||||
..()
|
||||
mind.assigned_role = "Armalis"
|
||||
mind.special_role = "Vox Raider"
|
||||
mind.special_role = SPECIAL_ROLE_RAIDER
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
R.key = C.key
|
||||
ticker.mode.syndicates += R.mind
|
||||
ticker.mode.update_synd_icons_added(R.mind)
|
||||
R.mind.special_role = "syndicate"
|
||||
R.mind.special_role = SPECIAL_ROLE_NUKEOPS
|
||||
R.faction = list("syndicate")
|
||||
|
||||
/obj/item/weapon/antag_spawner/slaughter_demon //Warning edgiest item in the game
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
traitors.Remove(traitor)
|
||||
continue
|
||||
if(istype(traitor))
|
||||
traitor.special_role = "traitor"
|
||||
traitor.special_role = SPECIAL_ROLE_TRAITOR
|
||||
traitor.restricted_roles = restricted_jobs
|
||||
|
||||
// if(!traitors.len)
|
||||
@@ -135,7 +135,7 @@
|
||||
traitors += newtraitor.mind
|
||||
to_chat(newtraitor, "<span class='danger'>ATTENTION:</span> It is time to pay your debt to the Syndicate...")
|
||||
to_chat(newtraitor, "<B>You are now a traitor.</B>")
|
||||
newtraitor.mind.special_role = "traitor"
|
||||
newtraitor.mind.special_role = SPECIAL_ROLE_TRAITOR
|
||||
var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR]
|
||||
tatorhud.join_hud(newtraitor)
|
||||
set_antag_hud(newtraitor, "hudsyndicate")
|
||||
|
||||
@@ -44,7 +44,7 @@ var/list/blob_nodes = list()
|
||||
break
|
||||
var/datum/mind/blob = pick(possible_blobs)
|
||||
infected_crew += blob
|
||||
blob.special_role = "Blob"
|
||||
blob.special_role = SPECIAL_ROLE_BLOB
|
||||
blob.restricted_roles = restricted_jobs
|
||||
log_game("[blob.key] (ckey) has been selected as a Blob")
|
||||
possible_blobs -= blob
|
||||
@@ -67,7 +67,7 @@ var/list/blob_nodes = list()
|
||||
if(!istype(blobmind))
|
||||
return 0
|
||||
infected_crew += blobmind
|
||||
blobmind.special_role = "Blob"
|
||||
blobmind.special_role = SPECIAL_ROLE_BLOB
|
||||
log_game("[blob.key] (ckey) has been selected as a Blob")
|
||||
greet_blob(blobmind)
|
||||
to_chat(blob, "<span class='userdanger'>You feel very tired and bloated! You don't have long before you burst!</span>")
|
||||
@@ -141,7 +141,7 @@ var/list/blob_nodes = list()
|
||||
core.overmind.mind.name = blob.name
|
||||
infected_crew -= blob
|
||||
infected_crew += core.overmind.mind
|
||||
core.overmind.mind.special_role = "Blob Overmind"
|
||||
core.overmind.mind.special_role = SPECIAL_ROLE_BLOB_OVERMIND
|
||||
|
||||
/datum/game_mode/blob/post_setup()
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
return 1
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_blob()
|
||||
if(istype(ticker.mode,/datum/game_mode/blob) )
|
||||
if(GAMEMODE_IS_BLOB)
|
||||
var/datum/game_mode/blob/blob_mode = src
|
||||
if(blob_mode.infected_crew.len)
|
||||
var/text = "<FONT size = 2><B>The blob[(blob_mode.infected_crew.len > 1 ? "s were" : " was")]:</B></FONT>"
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
src.overmind = B
|
||||
color = overmind.blob_reagent_datum.color
|
||||
if(B.mind && !B.mind.special_role)
|
||||
B.mind.special_role = "Blob Overmind"
|
||||
B.mind.special_role = SPECIAL_ROLE_BLOB_OVERMIND
|
||||
spawn(0)
|
||||
if(is_offspring)
|
||||
B.verbs -= /mob/camera/blob/verb/split_consciousness
|
||||
@@ -55,7 +55,7 @@
|
||||
assigned_hosts[borer.key] = first_host
|
||||
|
||||
borer.assigned_role = "MODE" //So they aren't chosen for other jobs.
|
||||
borer.special_role = "Borer"
|
||||
borer.special_role = SPECIAL_ROLE_BORER
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
|
||||
changelings += changeling
|
||||
changeling.restricted_roles = restricted_jobs
|
||||
modePlayer += changelings
|
||||
changeling.special_role = "Changeling"
|
||||
changeling.special_role = SPECIAL_ROLE_CHANGELING
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
/datum/game_mode/traitor/changeling/post_setup()
|
||||
for(var/datum/mind/changeling in changelings)
|
||||
grant_changeling_powers(changeling.current)
|
||||
changeling.special_role = "Changeling"
|
||||
changeling.special_role = SPECIAL_ROLE_CHANGELING
|
||||
forge_changeling_objectives(changeling)
|
||||
greet_changeling(changeling)
|
||||
..()
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
cultists_possible -= cultist
|
||||
cult += cultist
|
||||
cultist.restricted_roles = restricted_jobs
|
||||
cultist.special_role = "Cultist"
|
||||
cultist.special_role = SPECIAL_ROLE_CULTIST
|
||||
return (cult.len>0)
|
||||
|
||||
|
||||
@@ -337,7 +337,7 @@
|
||||
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_cult()
|
||||
if( cult.len || (ticker && istype(ticker.mode,/datum/game_mode/cult)) )
|
||||
if(cult.len || (ticker && GAMEMODE_IS_CULT))
|
||||
var/text = "<FONT size = 2><B>The cultists were:</B></FONT>"
|
||||
for(var/datum/mind/cultist in cult)
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ var/list/sacrificed = list()
|
||||
cult_log("[key_name_admin(usr)] tried to convert [key_name_admin(M)]")
|
||||
if(is_convertable_to_cult(M.mind))
|
||||
ticker.mode.add_cultist(M.mind)
|
||||
M.mind.special_role = "Cultist"
|
||||
M.mind.special_role = SPECIAL_ROLE_CULTIST
|
||||
to_chat(M, "<font color=\"purple\"><b><i>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root.</b></i></font>")
|
||||
to_chat(M, "<font color=\"purple\"><b><i>Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.</b></i></font>")
|
||||
return 1
|
||||
@@ -401,7 +401,7 @@ var/list/sacrificed = list()
|
||||
else
|
||||
ticker.mode.cult+=D.mind
|
||||
|
||||
D.mind.special_role = "Cultist"
|
||||
D.mind.special_role = SPECIAL_ROLE_CULTIST
|
||||
to_chat(D, "<font color=\"purple\"><b><i>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root.</b></i></font>")
|
||||
to_chat(D, "<font color=\"purple\"><b><i>Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.</b></i></font>")
|
||||
|
||||
|
||||
@@ -338,7 +338,7 @@ var/round_start_time = 0
|
||||
/datum/controller/gameticker/proc/create_characters()
|
||||
for(var/mob/new_player/player in player_list)
|
||||
if(player.ready && player.mind)
|
||||
if(player.mind.assigned_role == "AI" || player.mind.special_role == "malfunctioning AI")
|
||||
if(player.mind.assigned_role == "AI" || player.mind.special_role == SPECIAL_ROLE_MALF)
|
||||
player.close_spawn_windows()
|
||||
player.AIize()
|
||||
else if(!player.mind.assigned_role)
|
||||
|
||||
@@ -52,7 +52,7 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind'
|
||||
|
||||
for(var/datum/mind/raider in raiders)
|
||||
raider.assigned_role = "MODE"
|
||||
raider.special_role = "Vox Raider"
|
||||
raider.special_role = SPECIAL_ROLE_RAIDER
|
||||
return 1
|
||||
|
||||
/datum/game_mode/heist/pre_setup()
|
||||
@@ -253,7 +253,7 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind'
|
||||
datum/game_mode/proc/auto_declare_completion_heist()
|
||||
if(raiders.len)
|
||||
var/check_return = 0
|
||||
if(ticker && istype(ticker.mode,/datum/game_mode/heist))
|
||||
if(GAMEMODE_IS_HEIST)
|
||||
check_return = 1
|
||||
var/text = "<FONT size = 2><B>The Vox raiders were:</B></FONT>"
|
||||
|
||||
@@ -298,7 +298,7 @@ datum/game_mode/proc/auto_declare_completion_heist()
|
||||
overlays += icon('icons/obj/computer.dmi', "syndie")
|
||||
|
||||
/obj/vox/win_button/attack_hand(mob/user)
|
||||
if(!istype(ticker.mode, /datum/game_mode/heist) || (world.time < 10 MINUTES)) //has to be heist, and at least ten minutes into the round
|
||||
if(!GAMEMODE_IS_HEIST || (world.time < 10 MINUTES)) //has to be heist, and at least ten minutes into the round
|
||||
to_chat(user, "<span class='warning'>\The [src] does not appear to have a connection.</span>")
|
||||
return 0
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
return 0
|
||||
for(var/datum/mind/ai_mind in malf_ai)
|
||||
ai_mind.assigned_role = "MODE"
|
||||
ai_mind.special_role = "malfunctioning AI"//So they actually have a special role/N
|
||||
ai_mind.special_role = SPECIAL_ROLE_MALF
|
||||
log_game("[ai_mind.key] (ckey) has been selected as a malf AI")
|
||||
return 1
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
AI.show_laws()
|
||||
|
||||
greet_malf(AI_mind)
|
||||
AI_mind.special_role = "malfunction"
|
||||
AI_mind.special_role = SPECIAL_ROLE_MALF
|
||||
AI_mind.current.verbs += /datum/game_mode/malfunction/proc/takeover
|
||||
|
||||
for(var/mob/living/silicon/robot/R in AI.connected_robots)
|
||||
@@ -170,7 +170,7 @@
|
||||
set category = "Malfunction"
|
||||
set name = "System Override"
|
||||
set desc = "Start the victory timer"
|
||||
if(!istype(ticker.mode,/datum/game_mode/malfunction))
|
||||
if(!GAMEMODE_IS_MALF)
|
||||
to_chat(usr, "You cannot begin a takeover in this round type!.")
|
||||
return
|
||||
if(ticker.mode:malf_mode_declared)
|
||||
@@ -321,7 +321,7 @@
|
||||
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_malfunction()
|
||||
if( malf_ai.len || istype(ticker.mode,/datum/game_mode/malfunction) )
|
||||
if(malf_ai.len || GAMEMODE_IS_MALF)
|
||||
var/text = "<FONT size = 2><B>The malfunctioning AI were:</B></FONT>"
|
||||
var/module_text_temp = "<br><b>Purchased modules:</b><br>" //Added at the end
|
||||
|
||||
|
||||
@@ -75,11 +75,11 @@
|
||||
|
||||
|
||||
scientist.assigned_role = "MODE"
|
||||
scientist.special_role = "abductor scientist"
|
||||
scientist.special_role = SPECIAL_ROLE_ABDUCTOR_SCIENTIST
|
||||
log_game("[scientist.key] (ckey) has been selected as an abductor team [team_number] scientist.")
|
||||
|
||||
agent.assigned_role = "MODE"
|
||||
agent.special_role = "abductor agent"
|
||||
agent.special_role = SPECIAL_ROLE_ABDUCTOR_AGENT
|
||||
log_game("[agent.key] (ckey) has been selected as an abductor team [team_number] agent.")
|
||||
|
||||
abductors |= agent
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
var/mob/living/simple_animal/hostile/morph/S = new /mob/living/simple_animal/hostile/morph(pick(xeno_spawn))
|
||||
player_mind.transfer_to(S)
|
||||
player_mind.assigned_role = "Morph"
|
||||
player_mind.special_role = "Morph"
|
||||
player_mind.special_role = SPECIAL_ROLE_MORPH
|
||||
ticker.mode.traitors |= player_mind
|
||||
to_chat(S, S.playstyle_string)
|
||||
S << 'sound/magic/Mutate.ogg'
|
||||
|
||||
@@ -389,7 +389,7 @@
|
||||
player_mind.active = 1
|
||||
player_mind.transfer_to(R)
|
||||
player_mind.assigned_role = "revenant"
|
||||
player_mind.special_role = "Revenant"
|
||||
player_mind.special_role = SPECIAL_ROLE_REVENANT
|
||||
ticker.mode.traitors |= player_mind
|
||||
message_admins("[key_of_revenant] has been [client_to_revive ? "re":""]made into a revenant by reforming ectoplasm.")
|
||||
log_game("[key_of_revenant] was [client_to_revive ? "re":""]made as a revenant by reforming ectoplasm.")
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
var/mob/living/simple_animal/revenant/revvie = new /mob/living/simple_animal/revenant/(pick(spawn_locs))
|
||||
player_mind.transfer_to(revvie)
|
||||
player_mind.assigned_role = "revenant"
|
||||
player_mind.special_role = "Revenant"
|
||||
player_mind.special_role = SPECIAL_ROLE_REVENANT
|
||||
ticker.mode.traitors |= player_mind
|
||||
message_admins("[key_of_revenant] has been made into a revenant by an event.")
|
||||
log_game("[key_of_revenant] was spawned as a revenant by an event.")
|
||||
|
||||
@@ -238,7 +238,7 @@ datum/game_mode/nations
|
||||
return 1
|
||||
|
||||
/proc/get_nations_mode()
|
||||
if(!ticker || !istype(ticker.mode, /datum/game_mode/nations))
|
||||
if(!GAMEMODE_IS_NATIONS)
|
||||
return null
|
||||
|
||||
return ticker.mode
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -50,7 +50,7 @@ proc/issyndicate(mob/living/M as mob)
|
||||
|
||||
for(var/datum/mind/synd_mind in syndicates)
|
||||
synd_mind.assigned_role = "MODE" //So they aren't chosen for other jobs.
|
||||
synd_mind.special_role = "Syndicate"//So they actually have a special role/N
|
||||
synd_mind.special_role = SPECIAL_ROLE_NUKEOPS
|
||||
return 1
|
||||
|
||||
|
||||
@@ -360,7 +360,7 @@ proc/issyndicate(mob/living/M as mob)
|
||||
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_nuclear()
|
||||
if( syndicates.len || (ticker && istype(ticker.mode,/datum/game_mode/nuclear)) )
|
||||
if(syndicates.len || GAMEMODE_IS_NUCLEAR)
|
||||
var/text = "<br><FONT size=3><B>The syndicate operatives were:</B></FONT>"
|
||||
|
||||
var/purchases = ""
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||
var/global/list/all_objectives = list()
|
||||
|
||||
var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) \
|
||||
- /datum/theft_objective/steal \
|
||||
- /datum/theft_objective/special \
|
||||
- /datum/theft_objective/number \
|
||||
@@ -16,40 +16,34 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
var/completed = 0 //currently only used for custom objectives.
|
||||
var/martyr_compatible = 0 //If the objective is compatible with martyr objective, i.e. if you can still do it while dead.
|
||||
|
||||
New(var/text)
|
||||
/datum/objective/New(var/text)
|
||||
all_objectives |= src
|
||||
if(text)
|
||||
explanation_text = text
|
||||
|
||||
Destroy()
|
||||
/datum/objective/Destroy()
|
||||
all_objectives -= src
|
||||
return ..()
|
||||
|
||||
proc/check_completion()
|
||||
/datum/objective/proc/check_completion()
|
||||
return completed
|
||||
|
||||
proc/find_target()
|
||||
var/list/possible_targets = list()
|
||||
for(var/datum/mind/possible_target in ticker.minds)
|
||||
if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && possible_target.current.client)
|
||||
possible_targets += possible_target
|
||||
if(possible_targets.len > 0)
|
||||
target = pick(possible_targets)
|
||||
/datum/objective/proc/is_invalid_target(datum/mind/possible_target)
|
||||
if(possible_target == owner)
|
||||
return TARGET_INVALID_IS_OWNER
|
||||
if(!ishuman(possible_target.current))
|
||||
return TARGET_INVALID_NOT_HUMAN
|
||||
if(!possible_target.current.stat == DEAD)
|
||||
return TARGET_INVALID_DEAD
|
||||
|
||||
proc/find_target_by_role(role, role_type=0)//Option sets either to check assigned role or special role. Default to assigned.
|
||||
/datum/objective/proc/find_target()
|
||||
var/list/possible_targets = list()
|
||||
for(var/datum/mind/possible_target in ticker.minds)
|
||||
if((possible_target != owner) && ishuman(possible_target.current) && ((role_type ? possible_target.special_role : possible_target.assigned_role) == role) && (possible_target.current.stat != DEAD) && possible_target.current.client)
|
||||
possible_targets += possible_target
|
||||
if(possible_targets.len > 0)
|
||||
target = pick(possible_targets)
|
||||
if(is_invalid_target(possible_target))
|
||||
continue
|
||||
|
||||
//Selects someone with a specific special role if role is != null. Or just anyone with a special role
|
||||
proc/find_target_with_special_role(role)
|
||||
var/list/possible_targets = list()
|
||||
for(var/datum/mind/possible_target in ticker.minds)
|
||||
if((possible_target != owner) && ishuman(possible_target.current) && (role && possible_target.special_role == role || !role && possible_target.special_role) && (possible_target.current.stat != DEAD) && possible_target.current.client)
|
||||
possible_targets += possible_target
|
||||
|
||||
if(possible_targets.len > 0)
|
||||
target = pick(possible_targets)
|
||||
|
||||
@@ -57,28 +51,23 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
/datum/objective/assassinate
|
||||
martyr_compatible = 1
|
||||
|
||||
find_target()
|
||||
/datum/objective/assassinate/find_target()
|
||||
..()
|
||||
if(target && target.current)
|
||||
explanation_text = "Assassinate [target.current.real_name], the [target.assigned_role]."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
|
||||
find_target_by_role(role, role_type=0)
|
||||
..(role, role_type)
|
||||
if(target && target.current)
|
||||
explanation_text = "Assassinate [target.current.real_name], the [!role_type ? target.assigned_role : target.special_role]."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
|
||||
check_completion()
|
||||
/datum/objective/assassinate/check_completion()
|
||||
if(target && target.current)
|
||||
// TODO: Tie into space manager
|
||||
if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > ZLEVEL_DERELICT || !target.current.ckey) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
|
||||
if(target.current.stat == DEAD)
|
||||
return 1
|
||||
if(issilicon(target.current) || isbrain(target.current)) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
|
||||
return 1
|
||||
if(target.current.z > ZLEVEL_DERELICT)
|
||||
return 1
|
||||
if(!target.current.ckey)
|
||||
return 1
|
||||
return 0
|
||||
return 1
|
||||
@@ -88,7 +77,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
/datum/objective/mutiny
|
||||
martyr_compatible = 1
|
||||
|
||||
find_target()
|
||||
/datum/objective/mutiny/find_target()
|
||||
..()
|
||||
if(target && target.current)
|
||||
explanation_text = "Assassinate [target.current.real_name], the [target.assigned_role]."
|
||||
@@ -96,66 +85,54 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
|
||||
find_target_by_role(role, role_type=0)
|
||||
..(role, role_type)
|
||||
if(target && target.current)
|
||||
explanation_text = "Assassinate or exile [target.current.real_name], the [!role_type ? target.assigned_role : target.special_role]."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
check_completion()
|
||||
/datum/objective/mutiny/check_completion()
|
||||
if(target && target.current)
|
||||
if(target.current.stat == DEAD || !ishuman(target.current) || !target.current.ckey || !target.current.client)
|
||||
return 1
|
||||
var/turf/T = get_turf(target.current)
|
||||
// TODO: Tie into space manager
|
||||
if(T && !(T.z in config.station_levels)) //If they leave the station they count as dead for this
|
||||
return 2
|
||||
return 1
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/objective/mutiny/rp
|
||||
find_target()
|
||||
/datum/objective/mutiny/rp/find_target()
|
||||
..()
|
||||
if(target && target.current)
|
||||
explanation_text = "Assassinate, capture or convert [target.current.real_name], the [target.assigned_role]."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
|
||||
find_target_by_role(role, role_type=0)
|
||||
..(role, role_type)
|
||||
//less violent rev objectives
|
||||
/datum/objective/mutiny/rp/check_completion()
|
||||
if(target && target.current)
|
||||
explanation_text = "Assassinate, capture or convert [target.current.real_name], the [!role_type ? target.assigned_role : target.special_role]."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
if(target.current.stat == DEAD)
|
||||
return 1
|
||||
if(!ishuman(target.current))
|
||||
return 1
|
||||
if(iscarbon(target.current))
|
||||
var/mob/living/carbon/C = target.current
|
||||
if(C.handcuffed)
|
||||
return 1
|
||||
|
||||
// less violent rev objectives
|
||||
check_completion()
|
||||
var/rval = 1
|
||||
if(target && target.current)
|
||||
//assume that only carbon mobs can become rev heads for now
|
||||
if(target.current.stat == DEAD || target.current:handcuffed || !ishuman(target.current))
|
||||
if(GAMEMODE_IS_REVOLUTION)
|
||||
if(target in ticker.mode.head_revolutionaries)
|
||||
return 1
|
||||
// Check if they're converted
|
||||
if(istype(ticker.mode, /datum/game_mode/revolution))
|
||||
if(target in ticker.mode:head_revolutionaries)
|
||||
return 1
|
||||
var/turf/T = get_turf(target.current)
|
||||
|
||||
// TODO: Tie into space manager
|
||||
if(T && !(T.z in config.station_levels)) //If they leave the station they count as dead for this
|
||||
rval = 2
|
||||
var/turf/T = get_turf(target.current)
|
||||
if(T && !(T.z in config.station_levels))
|
||||
return 1
|
||||
|
||||
return 0
|
||||
return rval
|
||||
return 1
|
||||
|
||||
|
||||
/datum/objective/maroon
|
||||
martyr_compatible = 1
|
||||
|
||||
find_target()
|
||||
/datum/objective/maroon/find_target()
|
||||
..()
|
||||
if(target && target.current)
|
||||
explanation_text = "Prevent [target.current.real_name], the [target.assigned_role] from escaping alive."
|
||||
@@ -163,28 +140,30 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
find_target_by_role(role, role_type=0)
|
||||
..(role, role_type)
|
||||
/datum/objective/maroon/check_completion()
|
||||
if(target && target.current)
|
||||
explanation_text = "Prevent [target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] from escaping alive."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
check_completion()
|
||||
if(target && target.current)
|
||||
// TODO: Tie into space manager
|
||||
if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > ZLEVEL_DERELICT || !target.current.ckey) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
|
||||
if(target.current.stat == DEAD)
|
||||
return 1
|
||||
if(issilicon(target.current))
|
||||
return 1
|
||||
if(isbrain(target.current))
|
||||
return 1
|
||||
// TODO: Tie into space manager
|
||||
if((target.current.z in config.admin_levels))
|
||||
if(target.current.z in config.admin_levels)
|
||||
return 0
|
||||
// TODO: Tie into space manager
|
||||
if(target.current.z > ZLEVEL_DERELICT)
|
||||
return 1
|
||||
if(!target.current.ckey)
|
||||
return 1
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
/datum/objective/debrain //I want braaaainssss
|
||||
martyr_compatible = 0
|
||||
|
||||
find_target()
|
||||
/datum/objective/debrain/find_target()
|
||||
..()
|
||||
if(target && target.current)
|
||||
explanation_text = "Steal the brain of [target.current.real_name] the [target.assigned_role]."
|
||||
@@ -193,20 +172,12 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
return target
|
||||
|
||||
|
||||
find_target_by_role(role, role_type=0)
|
||||
..(role, role_type)
|
||||
if(target && target.current)
|
||||
explanation_text = "Steal the brain of [target.current.real_name] the [!role_type ? target.assigned_role : target.special_role]."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
check_completion()
|
||||
/datum/objective/debrain/check_completion()
|
||||
if(!target)//If it's a free objective.
|
||||
return 1
|
||||
if( !owner.current || owner.current.stat==DEAD )//If you're otherwise dead.
|
||||
if(!owner.current || owner.current.stat == DEAD)
|
||||
return 0
|
||||
if( !target.current || !isbrain(target.current) )
|
||||
if(!target.current || !isbrain(target.current))
|
||||
return 0
|
||||
var/atom/A = target.current
|
||||
while(A.loc) //check to see if the brainmob is on our person
|
||||
@@ -219,7 +190,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
/datum/objective/protect //The opposite of killing a dude.
|
||||
martyr_compatible = 1
|
||||
|
||||
find_target()
|
||||
/datum/objective/protect/find_target()
|
||||
..()
|
||||
if(target && target.current)
|
||||
explanation_text = "Protect [target.current.real_name], the [target.assigned_role]."
|
||||
@@ -227,38 +198,28 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
find_target_by_role(role, role_type=0)
|
||||
..(role, role_type)
|
||||
if(target && target.current)
|
||||
explanation_text = "Protect [target.current.real_name], the [!role_type ? target.assigned_role : target.special_role]."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
find_target_with_special_role(role,role_type=0)
|
||||
..(role)
|
||||
if(target && target.current)
|
||||
explanation_text = "Protect [target.current.real_name], the [!role_type ? target.assigned_role : target.special_role]."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
check_completion()
|
||||
/datum/objective/protect/check_completion()
|
||||
if(!target) //If it's a free objective.
|
||||
return 1
|
||||
if(target.current)
|
||||
if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current))
|
||||
if(target.current.stat == DEAD)
|
||||
return 0
|
||||
if(issilicon(target.current))
|
||||
return 0
|
||||
if(isbrain(target.current))
|
||||
return 0
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/datum/objective/protect/mindslave //subytpe for mindslave implants
|
||||
|
||||
|
||||
/datum/objective/hijack
|
||||
martyr_compatible = 0 //Technically you won't get both anyway.
|
||||
explanation_text = "Hijack the shuttle by escaping on it with no loyalist NanoTrasen crew on board and alive. Syndicate agents, other enemies of NanoTrasen, cyborgs, and pets may be allowed to escape alive."
|
||||
explanation_text = "Hijack the shuttle by escaping on it with no loyalist NanoTrasen crew on board and alive. \
|
||||
Syndicate agents, other enemies of NanoTrasen, cyborgs, and pets may be allowed to escape alive."
|
||||
|
||||
check_completion()
|
||||
/datum/objective/hijack/check_completion()
|
||||
if(!owner.current || owner.current.stat)
|
||||
return 0
|
||||
if(shuttle_master.emergency.mode < SHUTTLE_ENDGAME)
|
||||
@@ -277,7 +238,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
continue
|
||||
if(isanimal(player)) //Poly does not own the shuttle
|
||||
continue
|
||||
if(player.mind.special_role && !(player.mind.special_role == "Response Team")) //Is antag, and not ERT
|
||||
if(player.mind.special_role && !(player.mind.special_role == SPECIAL_ROLE_ERT)) //Is antag, and not ERT
|
||||
continue
|
||||
|
||||
if(get_area(player) == A)
|
||||
@@ -288,7 +249,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
explanation_text = "Hijack the emergency shuttle by ensuring only you (or your copies) escape."
|
||||
martyr_compatible = 0
|
||||
|
||||
check_completion()
|
||||
/datum/objective/hijackclone/check_completion()
|
||||
if(!owner.current)
|
||||
return 0
|
||||
if(shuttle_master.emergency.mode < SHUTTLE_ENDGAME)
|
||||
@@ -299,7 +260,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
for(var/mob/living/player in player_list) //Make sure nobody else is onboard
|
||||
if(player.mind && player.mind != owner)
|
||||
if(player.stat != DEAD)
|
||||
if(istype(player, /mob/living/silicon))
|
||||
if(issilicon(player))
|
||||
continue
|
||||
if(get_area(player) == A)
|
||||
if(player.real_name != owner.current.real_name && !istype(get_turf(player.mind.current), /turf/simulated/shuttle/floor4))
|
||||
@@ -308,7 +269,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
for(var/mob/living/player in player_list) //Make sure at least one of you is onboard
|
||||
if(player.mind && player.mind != owner)
|
||||
if(player.stat != DEAD)
|
||||
if(istype(player, /mob/living/silicon))
|
||||
if(issilicon(player))
|
||||
continue
|
||||
if(get_area(player) == A)
|
||||
if(player.real_name == owner.current.real_name && !istype(get_turf(player.mind.current), /turf/simulated/shuttle/floor4))
|
||||
@@ -319,7 +280,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
explanation_text = "Do not allow any lifeforms, be it organic or synthetic to escape on the shuttle alive. AIs, Cyborgs, and pAIs are not considered alive."
|
||||
martyr_compatible = 1
|
||||
|
||||
check_completion()
|
||||
/datum/objective/block/check_completion()
|
||||
if(!istype(owner.current, /mob/living/silicon))
|
||||
return 0
|
||||
if(shuttle_master.emergency.mode < SHUTTLE_ENDGAME)
|
||||
@@ -353,7 +314,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
/area/shuttle/escape_pod5/transit,
|
||||
/area/centcom/evac)
|
||||
|
||||
check_completion()
|
||||
/datum/objective/escape/check_completion()
|
||||
if(issilicon(owner.current))
|
||||
return 0
|
||||
if(isbrain(owner.current))
|
||||
@@ -378,7 +339,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
/datum/objective/escape/escape_with_identity
|
||||
var/target_real_name // Has to be stored because the target's real_name can change over the course of the round
|
||||
|
||||
find_target()
|
||||
/datum/objective/escape/escape_with_identity/find_target()
|
||||
var/list/possible_targets = list() //Copypasta because NO_SCAN races, yay for snowflakes.
|
||||
for(var/datum/mind/possible_target in ticker.minds)
|
||||
if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && possible_target.current.client)
|
||||
@@ -393,7 +354,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
|
||||
check_completion()
|
||||
/datum/objective/escape/escape_with_identity/check_completion()
|
||||
if(!target_real_name)
|
||||
return 1
|
||||
if(!ishuman(owner.current))
|
||||
@@ -408,9 +369,9 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
/datum/objective/die
|
||||
explanation_text = "Die a glorious death."
|
||||
|
||||
check_completion()
|
||||
/datum/objective/die/check_completion()
|
||||
if(!owner.current || owner.current.stat == DEAD || isbrain(owner.current))
|
||||
return 1 //Brains no longer win survive objectives. --NEO
|
||||
return 1
|
||||
if(issilicon(owner.current) && owner.current != owner.original)
|
||||
return 1
|
||||
return 0
|
||||
@@ -420,7 +381,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
/datum/objective/survive
|
||||
explanation_text = "Stay alive until the end."
|
||||
|
||||
check_completion()
|
||||
/datum/objective/survive/check_completion()
|
||||
if(!owner.current || owner.current.stat == DEAD || isbrain(owner.current))
|
||||
return 0 //Brains no longer win survive objectives. --NEO
|
||||
if(issilicon(owner.current) && owner.current != owner.original)
|
||||
@@ -437,7 +398,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
var/datum/theft_objective/steal_target
|
||||
martyr_compatible = 0
|
||||
|
||||
find_target(var/special_only=0)
|
||||
/datum/objective/steal/find_target(var/special_only=0)
|
||||
var/loop=50
|
||||
while(!steal_target && loop > 0)
|
||||
loop--
|
||||
@@ -459,7 +420,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
explanation_text = "Free Objective."
|
||||
|
||||
|
||||
proc/select_target()
|
||||
/datum/objective/steal/proc/select_target()
|
||||
var/list/possible_items_all = potential_theft_objectives+"custom"
|
||||
var/new_target = input("Select target:", "Objective target", null) as null|anything in possible_items_all
|
||||
if(!new_target) return
|
||||
@@ -479,14 +440,14 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
explanation_text = "Steal [steal_target.name]."
|
||||
return steal_target
|
||||
|
||||
check_completion()
|
||||
/datum/objective/steal/check_completion()
|
||||
if(!steal_target) return 1 // Free Objective
|
||||
return steal_target.check_completion(owner)
|
||||
|
||||
/datum/objective/steal/exchange
|
||||
martyr_compatible = 0
|
||||
|
||||
proc/set_faction(var/faction,var/otheragent)
|
||||
/datum/objective/steal/exchange/proc/set_faction(var/faction,var/otheragent)
|
||||
target = otheragent
|
||||
var/datum/theft_objective/unique/targetinfo
|
||||
if(faction == "red")
|
||||
@@ -497,8 +458,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
steal_target = targetinfo
|
||||
|
||||
/datum/objective/steal/exchange/backstab
|
||||
|
||||
set_faction(var/faction)
|
||||
/datum/objective/steal/exchange/backstab/set_faction(var/faction)
|
||||
var/datum/theft_objective/unique/targetinfo
|
||||
if(faction == "red")
|
||||
targetinfo = new /datum/theft_objective/unique/docs_red
|
||||
@@ -508,32 +468,32 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
steal_target = targetinfo
|
||||
|
||||
/datum/objective/download
|
||||
proc/gen_amount_goal()
|
||||
/datum/objective/download/proc/gen_amount_goal()
|
||||
target_amount = rand(10,20)
|
||||
explanation_text = "Download [target_amount] research levels."
|
||||
return target_amount
|
||||
|
||||
|
||||
check_completion()
|
||||
/datum/objective/download/check_completion()
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
/datum/objective/capture
|
||||
proc/gen_amount_goal()
|
||||
/datum/objective/capture/proc/gen_amount_goal()
|
||||
target_amount = rand(5,10)
|
||||
explanation_text = "Accumulate [target_amount] capture points."
|
||||
return target_amount
|
||||
|
||||
|
||||
check_completion()//Basically runs through all the mobs in the area to determine how much they are worth.
|
||||
/datum/objective/capture/check_completion()//Basically runs through all the mobs in the area to determine how much they are worth.
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
|
||||
/datum/objective/absorb
|
||||
proc/gen_amount_goal(var/lowbound = 4, var/highbound = 6)
|
||||
/datum/objective/absorb/proc/gen_amount_goal(var/lowbound = 4, var/highbound = 6)
|
||||
target_amount = rand (lowbound,highbound)
|
||||
if(ticker)
|
||||
var/n_p = 1 //autowin
|
||||
@@ -554,7 +514,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
explanation_text = "Absorb [target_amount] compatible genomes."
|
||||
return target_amount
|
||||
|
||||
check_completion()
|
||||
/datum/objective/absorb/check_completion()
|
||||
if(owner && owner.changeling && owner.changeling.absorbed_dna && (owner.changeling.absorbedcount >= target_amount))
|
||||
return 1
|
||||
else
|
||||
@@ -564,7 +524,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
martyr_compatible = 1
|
||||
var/target_real_name
|
||||
|
||||
find_target()
|
||||
/datum/objective/destroy/find_target()
|
||||
var/list/possible_targets = active_ais(1)
|
||||
var/mob/living/silicon/ai/target_ai = pick(possible_targets)
|
||||
target = target_ai.mind
|
||||
@@ -575,7 +535,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
check_completion()
|
||||
/datum/objective/destroy/check_completion()
|
||||
if(target && target.current)
|
||||
// TODO: Tie into space manager
|
||||
if(target.current.stat == DEAD || target.current.z > ZLEVEL_DERELICT || !target.current.ckey)
|
||||
@@ -584,13 +544,13 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
return 1
|
||||
|
||||
/datum/objective/blood
|
||||
proc/gen_amount_goal(low = 150, high = 400)
|
||||
/datum/objective/blood/proc/gen_amount_goal(low = 150, high = 400)
|
||||
target_amount = rand(low,high)
|
||||
target_amount = round(round(target_amount/5)*5)
|
||||
explanation_text = "Accumulate atleast [target_amount] units of blood in total."
|
||||
return target_amount
|
||||
|
||||
check_completion()
|
||||
/datum/objective/blood/check_completion()
|
||||
if(owner && owner.vampire && owner.vampire.bloodtotal && owner.vampire.bloodtotal >= target_amount)
|
||||
return 1
|
||||
else
|
||||
@@ -599,18 +559,18 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
// /vg/; Vox Inviolate for humans :V
|
||||
/datum/objective/minimize_casualties
|
||||
explanation_text = "Minimise casualties."
|
||||
check_completion()
|
||||
/datum/objective/minimize_casualties/check_completion()
|
||||
if(owner.kills.len>5) return 0
|
||||
return 1
|
||||
|
||||
//Vox heist objectives.
|
||||
|
||||
/datum/objective/heist
|
||||
proc/choose_target()
|
||||
/datum/objective/heist/proc/choose_target()
|
||||
return
|
||||
|
||||
/datum/objective/heist/kidnap
|
||||
choose_target()
|
||||
/datum/objective/heist/kidnap/choose_target()
|
||||
var/list/roles = list("Chief Engineer","Research Director","Roboticist","Chemist","Station Engineer")
|
||||
var/list/possible_targets = list()
|
||||
var/list/priority_targets = list()
|
||||
@@ -634,7 +594,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
check_completion()
|
||||
/datum/objective/heist/kidnap/check_completion()
|
||||
if(target && target.current)
|
||||
if(target.current.stat == DEAD)
|
||||
return 0
|
||||
@@ -652,7 +612,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
return 0
|
||||
|
||||
/datum/objective/heist/loot
|
||||
choose_target()
|
||||
/datum/objective/heist/loot/choose_target()
|
||||
var/loot = "an object"
|
||||
switch(rand(1,8))
|
||||
if(1)
|
||||
@@ -690,7 +650,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
|
||||
explanation_text = "We are lacking in hardware. Steal or trade [loot]."
|
||||
|
||||
check_completion()
|
||||
/datum/objective/heist/loot/check_completion()
|
||||
var/total_amount = 0
|
||||
|
||||
for(var/obj/O in locate(/area/shuttle/vox))
|
||||
@@ -723,7 +683,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
return 0
|
||||
|
||||
/datum/objective/heist/salvage
|
||||
choose_target()
|
||||
/datum/objective/heist/salvage/choose_target()
|
||||
switch(rand(1,8))
|
||||
if(1)
|
||||
target = "metal"
|
||||
@@ -752,7 +712,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
|
||||
explanation_text = "Ransack or trade with the station and escape with [target_amount] [target]."
|
||||
|
||||
check_completion()
|
||||
/datum/objective/heist/salvage/check_completion()
|
||||
var/total_amount = 0
|
||||
|
||||
for(var/obj/item/O in locate(/area/shuttle/vox))
|
||||
@@ -797,7 +757,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
/datum/objective/heist/inviolate_crew
|
||||
explanation_text = "Do not leave any Vox behind, alive or dead."
|
||||
|
||||
check_completion()
|
||||
/datum/objective/heist/inviolate_crew/check_completion()
|
||||
var/datum/game_mode/heist/H = ticker.mode
|
||||
if(H.is_raider_crew_safe())
|
||||
return 1
|
||||
@@ -806,7 +766,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
|
||||
/datum/objective/heist/inviolate_death
|
||||
explanation_text = "Follow the Inviolate. Minimise death and loss of resources."
|
||||
|
||||
check_completion()
|
||||
/datum/objective/heist/inviolate_death/check_completion()
|
||||
var/vox_allowed_kills = 3 // The number of people the vox can accidently kill. Mostly a counter to people killing themselves if a raider touches them to force fail.
|
||||
var/vox_total_kills = 0
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
to_chat(rev_mind.current, "<span class='userdanger'>You are a member of the revolutionaries' leadership!</span>")
|
||||
for(var/datum/objective/objective in rev_mind.objectives)
|
||||
to_chat(rev_mind.current, "<B>Objective #[obj_count]</B>: [objective.explanation_text]")
|
||||
rev_mind.special_role = "Head Revolutionary"
|
||||
rev_mind.special_role = SPECIAL_ROLE_HEAD_REV
|
||||
obj_count++
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -246,7 +246,7 @@
|
||||
rev_mind.current.Stun(5)
|
||||
to_chat(rev_mind.current, "<span class='danger'><FONT size = 3> You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!</FONT></span>")
|
||||
rev_mind.current.attack_log += "\[[time_stamp()]\] <font color='red'>Has been converted to the revolution!</font>"
|
||||
rev_mind.special_role = "Revolutionary"
|
||||
rev_mind.special_role = SPECIAL_ROLE_REV
|
||||
update_rev_icons_added(rev_mind)
|
||||
if(jobban_isbanned(rev_mind.current, ROLE_REV))
|
||||
replace_jobbaned_player(rev_mind.current, ROLE_REV)
|
||||
@@ -335,7 +335,7 @@
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_revolution()
|
||||
var/list/targets = list()
|
||||
if(head_revolutionaries.len || istype(ticker.mode,/datum/game_mode/revolution))
|
||||
if(head_revolutionaries.len || GAMEMODE_IS_REVOLUTION)
|
||||
var/num_revs = 0
|
||||
var/num_survivors = 0
|
||||
for(var/mob/living/carbon/survivor in living_mob_list)
|
||||
@@ -352,14 +352,14 @@
|
||||
text += "<br>"
|
||||
to_chat(world, text)
|
||||
|
||||
if(revolutionaries.len || istype(ticker.mode,/datum/game_mode/revolution))
|
||||
if(revolutionaries.len || GAMEMODE_IS_REVOLUTION)
|
||||
var/text = "<br><font size=3><b>The revolutionaries were:</b></font>"
|
||||
for(var/datum/mind/rev in revolutionaries)
|
||||
text += printplayer(rev, 1)
|
||||
text += "<br>"
|
||||
to_chat(world, text)
|
||||
|
||||
if( head_revolutionaries.len || revolutionaries.len || istype(ticker.mode,/datum/game_mode/revolution) )
|
||||
if( head_revolutionaries.len || revolutionaries.len || GAMEMODE_IS_REVOLUTION )
|
||||
var/text = "<br><font size=3><b>The heads of staff were:</b></font>"
|
||||
var/list/heads = get_all_heads()
|
||||
for(var/datum/mind/head in heads)
|
||||
|
||||
@@ -94,7 +94,7 @@ Made by Xhuis
|
||||
shadows += shadow
|
||||
possible_shadowlings -= shadow
|
||||
modePlayer += shadow
|
||||
shadow.special_role = "Shadowling"
|
||||
shadow.special_role = SPECIAL_ROLE_SHADOWLING
|
||||
shadow.restricted_roles = restricted_jobs
|
||||
shadowlings--
|
||||
return 1
|
||||
@@ -145,7 +145,7 @@ Made by Xhuis
|
||||
return 0
|
||||
if(!(new_thrall_mind in shadowling_thralls))
|
||||
shadowling_thralls += new_thrall_mind
|
||||
new_thrall_mind.special_role = "shadowling thrall"
|
||||
new_thrall_mind.special_role = SPECIAL_ROLE_SHADOWLING_THRALL
|
||||
update_shadow_icons_added(new_thrall_mind)
|
||||
new_thrall_mind.current.attack_log += "\[[time_stamp()]\] <span class='danger'>Became a thrall</span>"
|
||||
new_thrall_mind.current.add_language("Shadowling Hivemind")
|
||||
|
||||
@@ -368,7 +368,7 @@
|
||||
"<span class='warning'>False faces all d<b>ark not real not real not--</b></span>")
|
||||
target.setOxyLoss(0) //In case the shadowling was choking them out
|
||||
ticker.mode.add_thrall(target.mind)
|
||||
target.mind.special_role = "shadowling thrall"
|
||||
target.mind.special_role = SPECIAL_ROLE_SHADOWLING_THRALL
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/shadowling_regenarmor //Resets a shadowling's species to normal, removes genetic defects, and re-equips their armor
|
||||
name = "Rapid Re-Hatch"
|
||||
@@ -828,7 +828,7 @@
|
||||
to_chat(usr, "<span class='shadowling'>You instantly rearrange <b>[target]</b>'s memories, hyptonitizing them into a thrall.</span>")
|
||||
to_chat(target, "<span class='userdanger'><font size=3>An agonizing spike of pain drives into your mind, and--</font></span>")
|
||||
ticker.mode.add_thrall(target.mind)
|
||||
target.mind.special_role = "shadowling thrall"
|
||||
target.mind.special_role = SPECIAL_ROLE_SHADOWLING_THRALL
|
||||
target.add_language("Shadowling Hivemind")
|
||||
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
break
|
||||
var/datum/mind/traitor = pick(possible_traitors)
|
||||
traitors += traitor
|
||||
traitor.special_role = "traitor"
|
||||
traitor.special_role = SPECIAL_ROLE_TRAITOR
|
||||
var/datum/mindslaves/slaved = new()
|
||||
slaved.masters += traitor
|
||||
traitor.som = slaved //we MIGT want to mindslave someone
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
/datum/game_mode/traitor/vampire/post_setup()
|
||||
for(var/datum/mind/vampire in vampires)
|
||||
grant_vampire_powers(vampire.current)
|
||||
vampire.special_role = "Vampire"
|
||||
vampire.special_role = SPECIAL_ROLE_VAMPIRE
|
||||
forge_vampire_objectives(vampire)
|
||||
greet_vampire(vampire)
|
||||
..()
|
||||
@@ -58,7 +58,7 @@
|
||||
var/datum/mindslaves/slaved = new()
|
||||
slaved.masters += vampire
|
||||
vampire.som = slaved //we MIGT want to mindslave someone
|
||||
vampire.special_role = "Vampire" // Needs to be done in pre-setup to prevent role bugs
|
||||
vampire.special_role = SPECIAL_ROLE_VAMPIRE
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
@@ -337,7 +337,7 @@
|
||||
|
||||
ticker.mode.vampire_enthralled.Add(H.mind)
|
||||
ticker.mode.vampire_enthralled[H.mind] = user.mind
|
||||
H.mind.special_role = "VampThrall"
|
||||
H.mind.special_role = SPECIAL_ROLE_VAMPIRE_THRALL
|
||||
to_chat(H, "<span class='danger'>You have been Enthralled by [user]. Follow their every command.</span>")
|
||||
to_chat(user, "<span class='warning'>You have successfully Enthralled [H]. <i>If they refuse to do as you say just adminhelp.</i></span>")
|
||||
log_admin("[ckey(user.key)] has mind-slaved [ckey(H.key)].")
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
new_objective.explanation_text = "Protect [H.real_name], the wizard."
|
||||
M.mind.objectives += new_objective
|
||||
ticker.mode.traitors += M.mind
|
||||
M.mind.special_role = "apprentice"
|
||||
M.mind.special_role = SPECIAL_ROLE_WIZARD_APPRENTICE
|
||||
ticker.mode.update_wiz_icons_added(M.mind)
|
||||
M.faction = list("wizard")
|
||||
else
|
||||
@@ -259,7 +259,7 @@ var/global/list/multiverse = list()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/multisword/attack_self(mob/user)
|
||||
if(user.mind.special_role == "apprentice")
|
||||
if(user.mind.special_role == SPECIAL_ROLE_WIZARD_APPRENTICE)
|
||||
to_chat(user, "<span class='warning'>You know better than to touch your teacher's stuff.</span>")
|
||||
return
|
||||
if(cooldown < world.time)
|
||||
@@ -346,7 +346,7 @@ var/global/list/multiverse = list()
|
||||
M.mind.objectives += hijack_objective
|
||||
hijack_objective.explanation_text = "Ensure only [usr.real_name] and their copies are on the shuttle!"
|
||||
to_chat(M, "<B>Objective #[1]</B>: [hijack_objective.explanation_text]")
|
||||
M.mind.special_role = "multiverse traveller"
|
||||
M.mind.special_role = SPECIAL_ROLE_MULTIVERSE
|
||||
log_game("[M.key] was made a multiverse traveller with the objective to help [usr.real_name] hijack.")
|
||||
else
|
||||
var/datum/objective/protect/new_objective = new /datum/objective/protect
|
||||
@@ -355,7 +355,7 @@ var/global/list/multiverse = list()
|
||||
new_objective.explanation_text = "Protect [usr.real_name], your copy, and help them defend the innocent from the mobs of multiverse clones."
|
||||
M.mind.objectives += new_objective
|
||||
to_chat(M, "<B>Objective #[1]</B>: [new_objective.explanation_text]")
|
||||
M.mind.special_role = "multiverse traveller"
|
||||
M.mind.special_role = SPECIAL_ROLE_MULTIVERSE
|
||||
log_game("[M.key] was made a multiverse traveller with the objective to help [usr.real_name] protect the station.")
|
||||
|
||||
/obj/item/weapon/multisword/proc/equip_copy(var/mob/living/carbon/human/M)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
if(H.stat == 2 || !(H.client))
|
||||
continue
|
||||
if(H.mind)
|
||||
if(H.mind.special_role == "Wizard" || H.mind.special_role == "apprentice")
|
||||
if(H.mind.special_role == SPECIAL_ROLE_WIZARD || H.mind.special_role == SPECIAL_ROLE_WIZARD_APPRENTICE)
|
||||
continue
|
||||
var/randomizeguns = pick(gunslist)
|
||||
var/randomizemagic = pick(magiclist)
|
||||
|
||||
@@ -640,7 +640,7 @@
|
||||
if(!ishuman(H))
|
||||
return 1
|
||||
|
||||
if(H.mind.special_role == "apprentice")
|
||||
if(H.mind.special_role == SPECIAL_ROLE_WIZARD_APPRENTICE)
|
||||
temp = "If you got caught sneaking a peak from your teacher's spellbook, you'd likely be expelled from the Wizard Academy. Better not."
|
||||
return 1
|
||||
|
||||
@@ -689,7 +689,7 @@
|
||||
for(var/obj/effect/proc_holder/spell/knownspell in user.mind.spell_list)
|
||||
if(knownspell.type == S.type)
|
||||
if(user.mind)
|
||||
if(user.mind.special_role == "apprentice" || user.mind.special_role == "Wizard")
|
||||
if(user.mind.special_role == SPECIAL_ROLE_WIZARD_APPRENTICE || user.mind.special_role == SPECIAL_ROLE_WIZARD)
|
||||
to_chat(user, "<span class='notice'>You're already far more versed in this spell than this flimsy how-to book can provide.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You've already read this one.</span>")
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
wizards += wizard
|
||||
modePlayer += wizard
|
||||
wizard.assigned_role = "MODE" //So they aren't chosen for other jobs.
|
||||
wizard.special_role = "Wizard"
|
||||
wizard.special_role = SPECIAL_ROLE_WIZARD
|
||||
wizard.original = wizard.current
|
||||
if(wizardstart.len == 0)
|
||||
to_chat(wizard.current, "<B>\red A starting location for you could not be found, please report this bug!</B>")
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
for(var/datum/mind/xeno in xenos)
|
||||
xeno.assigned_role = "MODE"
|
||||
xeno.special_role = "Alien"
|
||||
xeno.special_role = SPECIAL_ROLE_XENOMORPH
|
||||
set_antag_hud(xeno, "hudalien")//like this is needed...
|
||||
return 1
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
var/mob/living/carbon/human/N = M
|
||||
ticker.mode.equip_traitor(N)
|
||||
ticker.mode.traitors += N.mind
|
||||
N.mind.special_role = "traitor"
|
||||
N.mind.special_role = SPECIAL_ROLE_TRAITOR
|
||||
var/objective = "Free Objective"
|
||||
switch(rand(1,100))
|
||||
if(1 to 50)
|
||||
|
||||
@@ -969,7 +969,7 @@
|
||||
if(!AI || !isAI(occupant)) //Mech does not have an AI for a pilot
|
||||
to_chat(user, "<span class='warning'>No AI detected in the [name] onboard computer.</span>")
|
||||
return
|
||||
if(AI.mind.special_role == "malfunction") //Malf AIs cannot leave mechs. Except through death.
|
||||
if(AI.mind.special_role == SPECIAL_ROLE_MALF) //Malf AIs cannot leave mechs. Except through death.
|
||||
to_chat(user, "<span class='boldannounce'>ACCESS DENIED.</span>")
|
||||
return
|
||||
AI.aiRestorePowerRoutine = 0//So the AI initially has power.
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
//ticker.mode:implanter[user.mind] += H.mind
|
||||
ticker.mode:implanter[ref] = implanters
|
||||
ticker.mode.traitors += H.mind
|
||||
H.mind.special_role = "traitor"
|
||||
H.mind.special_role = SPECIAL_ROLE_TRAITOR
|
||||
to_chat(H, "<span class='warning'><B>You're now completely loyal to [user.name]!</B> You now must lay down your life to protect them and assist in their goals at any cost.</span>")
|
||||
var/datum/objective/protect/mindslave/MS = new
|
||||
MS.owner = H.mind
|
||||
|
||||
@@ -185,7 +185,7 @@ var/ert_request_answered = 0
|
||||
M.mind.current = M
|
||||
M.mind.original = M
|
||||
M.mind.assigned_role = "MODE"
|
||||
M.mind.special_role = "Response Team"
|
||||
M.mind.special_role = SPECIAL_ROLE_ERT
|
||||
if(!(M.mind in ticker.minds))
|
||||
ticker.minds += M.mind //Adds them to regular mind list.
|
||||
M.loc = spawn_location
|
||||
|
||||
@@ -468,7 +468,7 @@
|
||||
dat += "<tr><td><i>Head not found!</i></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(istype(ticker.mode, /datum/game_mode/blob))
|
||||
if(GAMEMODE_IS_BLOB)
|
||||
var/datum/game_mode/blob/mode = ticker.mode
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Blob</B></td><td></td><td></td></tr>"
|
||||
dat += "<tr><td><i>Progress: [blobs.len]/[mode.blobwincount]</i></td></tr>"
|
||||
|
||||
@@ -2374,7 +2374,7 @@
|
||||
if(is_special_character(H)) continue
|
||||
//traitorize(H, objective, 0)
|
||||
ticker.mode.traitors += H.mind
|
||||
H.mind.special_role = "traitor"
|
||||
H.mind.special_role = SPECIAL_ROLE_TRAITOR
|
||||
var/datum/objective/new_objective = new
|
||||
new_objective.owner = H
|
||||
new_objective.explanation_text = objective
|
||||
@@ -2384,7 +2384,7 @@
|
||||
ticker.mode.finalize_traitor(H.mind)
|
||||
for(var/mob/living/silicon/A in player_list)
|
||||
ticker.mode.traitors += A.mind
|
||||
A.mind.special_role = "traitor"
|
||||
A.mind.special_role = SPECIAL_ROLE_TRAITOR
|
||||
var/datum/objective/new_objective = new
|
||||
new_objective.owner = A
|
||||
new_objective.explanation_text = objective
|
||||
|
||||
@@ -92,7 +92,7 @@ var/global/sent_honksquad = 0
|
||||
//Creates mind stuff.
|
||||
new_honksquad.mind_initialize()
|
||||
new_honksquad.mind.assigned_role = "MODE"
|
||||
new_honksquad.mind.special_role = "HONKsquad"
|
||||
new_honksquad.mind.special_role = SPECIAL_ROLE_HONKSQUAD
|
||||
ticker.mode.traitors |= new_honksquad.mind//Adds them to current traitor list. Which is really the extra antagonist list.
|
||||
new_honksquad.equip_honksquad(honk_leader_selected)
|
||||
return new_honksquad
|
||||
|
||||
@@ -426,7 +426,7 @@ client/proc/one_click_antag()
|
||||
//Creates mind stuff.
|
||||
new_syndicate_commando.mind_initialize()
|
||||
new_syndicate_commando.mind.assigned_role = "MODE"
|
||||
new_syndicate_commando.mind.special_role = "Syndicate Commando"
|
||||
new_syndicate_commando.mind.special_role = SPECIAL_ROLE_SYNDICATE_DEATHSQUAD
|
||||
|
||||
//Adds them to current traitor list. Which is really the extra antagonist list.
|
||||
ticker.mode.traitors += new_syndicate_commando.mind
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
A.copy_to(H)
|
||||
|
||||
ticker.mode.traitors += H.mind
|
||||
H.mind.special_role = "traitor"
|
||||
H.mind.special_role = SPECIAL_ROLE_TRAITOR
|
||||
|
||||
var/datum/objective/hijack/hijack_objective = new
|
||||
hijack_objective.owner = H.mind
|
||||
|
||||
@@ -115,7 +115,7 @@ var/global/sent_strike_team = 0
|
||||
//Creates mind stuff.
|
||||
new_commando.mind_initialize()
|
||||
new_commando.mind.assigned_role = "MODE"
|
||||
new_commando.mind.special_role = "Death Commando"
|
||||
new_commando.mind.special_role = SPECIAL_ROLE_DEATHSQUAD
|
||||
ticker.mode.traitors |= new_commando.mind//Adds them to current traitor list. Which is really the extra antagonist list.
|
||||
new_commando.equip_death_commando(leader_selected)
|
||||
return new_commando
|
||||
|
||||
@@ -118,7 +118,7 @@ var/global/sent_syndicate_strike_team = 0
|
||||
//Creates mind stuff.
|
||||
new_syndicate_commando.mind_initialize()
|
||||
new_syndicate_commando.mind.assigned_role = "MODE"
|
||||
new_syndicate_commando.mind.special_role = "Syndicate Commando"
|
||||
new_syndicate_commando.mind.special_role = SPECIAL_ROLE_SYNDICATE_DEATHSQUAD
|
||||
ticker.mode.traitors |= new_syndicate_commando.mind //Adds them to current traitor list. Which is really the extra antagonist list.
|
||||
new_syndicate_commando.equip_syndicate_commando(syndicate_leader_selected)
|
||||
qdel(spawn_location)
|
||||
|
||||
@@ -59,21 +59,6 @@ var/global/vox_tick = 1
|
||||
W.registered_user = src
|
||||
equip_to_slot_or_del(W, slot_wear_id)
|
||||
|
||||
/*
|
||||
var/obj/item/weapon/implant/cortical/I = new(src)
|
||||
I.imp_in = src
|
||||
I.implanted = 1
|
||||
|
||||
if(ticker.mode && ( istype(ticker.mode,/datum/game_mode/vox/heist) ) )
|
||||
var/datum/game_mode/vox/heist/M = ticker.mode
|
||||
M.cortical_stacks += I
|
||||
M.raiders[mind] = I
|
||||
else if(ticker.mode && ( istype(ticker.mode,/datum/game_mode/vox/trade) ) )
|
||||
var/datum/game_mode/vox/trade/M = ticker.mode
|
||||
M.cortical_stacks += I
|
||||
M.traders[mind] = I
|
||||
|
||||
*/
|
||||
vox_tick++
|
||||
if(vox_tick > 4) vox_tick = 1
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
to_chat(user, "<B>Your wish is granted, but at a terrible cost...</B>")
|
||||
to_chat(user, "The Wish Granter punishes you for your wickedness, claiming your soul and warping your body to match the darkness in your heart.")
|
||||
ticker.mode.traitors += user.mind
|
||||
user.mind.special_role = "traitor"
|
||||
user.mind.special_role = SPECIAL_ROLE_TRAITOR
|
||||
var/datum/objective/hijack/hijack = new
|
||||
hijack.owner = user.mind
|
||||
user.mind.objectives += hijack
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
S.holder = holder
|
||||
player_mind.transfer_to(S)
|
||||
player_mind.assigned_role = "Slaughter Demon"
|
||||
player_mind.special_role = "Slaughter Demon"
|
||||
player_mind.special_role = SPECIAL_ROLE_SLAUGHTER_DEMON
|
||||
message_admins("[key_of_slaughter] has been made into a Slaughter Demon by an event.")
|
||||
log_game("[key_of_slaughter] was spawned as a Slaughter Demon by an event.")
|
||||
return 1
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
ticker.mode.xenos += new_xeno.mind
|
||||
new_xeno.mind.name = new_xeno.name
|
||||
new_xeno.mind.assigned_role = "MODE"
|
||||
new_xeno.mind.special_role = "Alien"
|
||||
new_xeno.mind.special_role = SPECIAL_ROLE_XENOMORPH
|
||||
new_xeno << sound('sound/voice/hiss5.ogg',0,0,0,100)//To get the player's attention
|
||||
|
||||
if(gib_on_success)
|
||||
|
||||
@@ -364,7 +364,7 @@
|
||||
traitorType = inPers
|
||||
|
||||
ticker.mode.traitors += mind
|
||||
mind.special_role = "traitor"
|
||||
mind.special_role = SPECIAL_ROLE_TRAITOR
|
||||
var/datum/mindslaves/slaved = new()
|
||||
slaved.masters += mind
|
||||
mind.som = slaved
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
/datum/species/golem/handle_post_spawn(var/mob/living/carbon/human/H)
|
||||
if(H.mind)
|
||||
H.mind.assigned_role = "Golem"
|
||||
H.mind.special_role = "Golem"
|
||||
H.mind.special_role = SPECIAL_ROLE_GOLEM
|
||||
H.real_name = "adamantine golem ([rand(1, 1000)])"
|
||||
H.name = H.real_name
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/golem(H), slot_w_uniform)
|
||||
|
||||
@@ -1044,7 +1044,7 @@ var/list/ai_verbs_default = list(
|
||||
to_chat(user, "<span class='warning'>No intelligence patterns detected.</span>")//No more magical carding of empty cores, AI RETURN TO BODY!!!11
|
||||
|
||||
return
|
||||
if(mind.special_role == "malfunction") //AI MALF!!
|
||||
if(mind.special_role == SPECIAL_ROLE_MALF) //AI MALF!!
|
||||
to_chat(user, "<span class='boldannounce'>ERROR</span>: Remote transfer interface disabled.")//Do ho ho ho~
|
||||
|
||||
return
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
photosync()
|
||||
to_chat(src, "<b>Laws synced with AI, be sure to note any changes.</b>")
|
||||
// TODO: Update to new antagonist system.
|
||||
if(mind && mind.special_role == "traitor" && mind.original == src)
|
||||
if(mind && mind.special_role == SPECIAL_ROLE_TRAITOR && mind.original == src)
|
||||
to_chat(src, "<b>Remember, your AI does NOT share or know about your law 0.")
|
||||
else
|
||||
to_chat(src, "<b>No AI selected to sync laws with, disabling lawsync protocol.</b>")
|
||||
@@ -30,7 +30,7 @@
|
||||
to_chat(who, "<b>Obey these laws:</b>")
|
||||
laws.show_laws(who)
|
||||
// TODO: Update to new antagonist system.
|
||||
if(mind && (mind.special_role == "traitor" && mind.original == src) && connected_ai)
|
||||
if(mind && (mind.special_role == SPECIAL_ROLE_TRAITOR && mind.original == src) && connected_ai)
|
||||
to_chat(who, "<b>Remember, [connected_ai.name] is technically your master, but your objective comes first.</b>")
|
||||
else if(connected_ai)
|
||||
to_chat(who, "<b>Remember, [connected_ai.name] is your master, other AIs can be ignored.</b>")
|
||||
|
||||
@@ -1383,7 +1383,7 @@ var/list/robot_verbs_default = list(
|
||||
var/mob/M = pick(borg_candidates)
|
||||
M.mind.transfer_to(src)
|
||||
M.mind.assigned_role = "MODE"
|
||||
M.mind.special_role = "Death Commando"
|
||||
M.mind.special_role = SPECIAL_ROLE_DEATHSQUAD
|
||||
ticker.mode.traitors |= M.mind // Adds them to current traitor list. Which is really the extra antagonist list.
|
||||
key = M.key
|
||||
else
|
||||
|
||||
@@ -50,8 +50,21 @@ proc/isNonCrewAntag(A)
|
||||
|
||||
var/mob/living/carbon/C = A
|
||||
var/special_role = C.mind.special_role
|
||||
var/list/crew_roles = list("traitor", "Changeling", "Vampire", "Cultist", "Head Revolutionary", "Revolutionary", "malfunctioning AI", "Shadowling", "loyalist", "mutineer", "Response Team")
|
||||
if((special_role in crew_roles))
|
||||
var/list/crew_roles = list(
|
||||
SPECIAL_ROLE_BLOB,
|
||||
SPECIAL_ROLE_CULTIST,
|
||||
SPECIAL_ROLE_CHANGELING,
|
||||
SPECIAL_ROLE_ERT,
|
||||
SPECIAL_ROLE_HEAD_REV,
|
||||
SPECIAL_ROLE_MALF,
|
||||
SPECIAL_ROLE_REV,
|
||||
SPECIAL_ROLE_SHADOWLING,
|
||||
SPECIAL_ROLE_SHADOWLING_THRALL,
|
||||
SPECIAL_ROLE_TRAITOR,
|
||||
SPECIAL_ROLE_VAMPIRE,
|
||||
SPECIAL_ROLE_VAMPIRE_THRALL
|
||||
)
|
||||
if(special_role in crew_roles)
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
|
||||
/datum/reagent/mugwort/on_mob_life(mob/living/M)
|
||||
if(ishuman(M) && M.mind)
|
||||
if(M.mind.special_role == "Wizard")
|
||||
if(M.mind.special_role == SPECIAL_ROLE_WIZARD)
|
||||
M.adjustToxLoss(-1*REM)
|
||||
M.adjustOxyLoss(-1*REM)
|
||||
M.adjustBruteLoss(-1*REM)
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "code\__DEFINES\error_handler.dm"
|
||||
#include "code\__DEFINES\flags.dm"
|
||||
#include "code\__DEFINES\game.dm"
|
||||
#include "code\__DEFINES\gamemode.dm"
|
||||
#include "code\__DEFINES\genetics.dm"
|
||||
#include "code\__DEFINES\hud.dm"
|
||||
#include "code\__DEFINES\hydroponics.dm"
|
||||
|
||||
Reference in New Issue
Block a user