diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index a1bf8c120ee..c271a972378 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -130,11 +130,9 @@ datum/mind
text = uppertext(text)
text = "[text]: "
if (assigned_role in command_positions)
- text += "HEAD|officer|employee|headrev|rev"
- else if (assigned_role in list("Security Officer", "Detective", "Warden"))
- text += "head|OFFICER|employee|headre|rev"
+ text += "HEAD|loyal|employee|headrev|rev"
else if (src in ticker.mode.head_revolutionaries)
- text = "head|officer|employee|HEADREV|rev"
+ text = "head|loyal|employee|HEADREV|rev"
text += "
Flash: give"
var/list/L = current.get_contents()
@@ -150,10 +148,12 @@ datum/mind
text += " Reequip (gives traitor uplink)."
if (objectives.len==0)
text += "
Objectives are empty! Set to kill all heads."
+ else if(isloyal(current))
+ text += "head|LOYAL|employee|headrev|rev"
else if (src in ticker.mode.revolutionaries)
- text += "head|officer|employee|headrev|REV"
+ text += "head|loyal|employee|headrev|REV"
else
- text += "head|officer|EMPLOYEE|headrev|rev"
+ text += "head|loyal|EMPLOYEE|headrev|rev"
sections["revolution"] = text
/** CULT ***/
@@ -161,19 +161,17 @@ datum/mind
if (ticker.mode.config_tag=="cult")
text = uppertext(text)
text = "[text]: "
- if (assigned_role in command_positions)
- text += "HEAD|officer|employee|cultist"
- else if (assigned_role in list("Security Officer", "Detective", "Warden"))
- text += "head|OFFICER|employee|cultist"
- else if (src in ticker.mode.cult)
- text += "head|officer|employee|CULTIST"
+ if (src in ticker.mode.cult)
+ text += "loyal|employee|CULTIST"
text += "
Give tome|amulet."
/*
if (objectives.len==0)
text += "
Objectives are empty! Set to sacrifice and escape or summon."
*/
+ else if(isloyal(current))
+ text += "LOYAL|employee|cultist"
else
- text += "head|officer|EMPLOYEE|cultist"
+ text += "loyal|EMPLOYEE|cultist"
sections["cult"] = text
/** WIZARD ***/
@@ -472,18 +470,25 @@ datum/mind
if (objective)
objectives -= objective
objectives.Insert(objective_pos, new_objective)
+ message_admins("[key_name_admin(usr)] edited [current]'s objective to [new_objective.explanation_text]")
+ log_admin("[key_name(usr)] edited [current]'s objective to [new_objective.explanation_text]")
else
objectives += new_objective
+ message_admins("[key_name_admin(usr)] added a new objective for [current]: [new_objective.explanation_text]")
+ log_admin("[key_name(usr)] added a new objective for [current]: [new_objective.explanation_text]")
else if (href_list["obj_delete"])
var/datum/objective/objective = locate(href_list["obj_delete"])
if(!istype(objective)) return
objectives -= objective
+ message_admins("[key_name_admin(usr)] removed an objective for [current]: [objective.explanation_text]")
+ log_admin("[key_name(usr)] removed an objective for [current]: [objective.explanation_text]")
else if(href_list["obj_completed"])
var/datum/objective/objective = locate(href_list["obj_completed"])
if(!istype(objective)) return
objective.completed = !objective.completed
+ log_admin("[key_name(usr)] toggled the win state for [current]'s objective: [objective.explanation_text]")
else if (href_list["revolution"])
switch(href_list["revolution"])
@@ -498,6 +503,7 @@ datum/mind
current << "\red You have been brainwashed! You are no longer a head revolutionary!"
ticker.mode.update_rev_icons_removed(src)
special_role = null
+ message_admins("[key_name_admin(usr)] has de-rev'ed [current].")
log_admin("[key_name_admin(usr)] has de-rev'ed [current].")
if("rev")
@@ -512,7 +518,8 @@ datum/mind
ticker.mode.revolutionaries += src
ticker.mode.update_rev_icons_added(src)
special_role = "Revolutionary"
- log_admin("[key_name(usr)] has rev'ed [current].")
+ message_admins("[key_name_admin(usr)] has rev'ed [current].")
+ log_admin("[key_name_admin(usr)] has rev'ed [current].")
if("headrev")
if(src in ticker.mode.revolutionaries)
@@ -520,7 +527,7 @@ datum/mind
ticker.mode.update_rev_icons_removed(src)
current << "\red You have proved your devotion to revoltion! Yea are a head revolutionary now!"
else if(!(src in ticker.mode.head_revolutionaries))
- current << "\blue You are a member of the revolutionaries' leadership now!"
+ current << "\red You are a member of the revolutionaries' leadership now!"
else
return
if (ticker.mode.head_revolutionaries.len>0)
@@ -537,6 +544,7 @@ datum/mind
ticker.mode.head_revolutionaries += src
ticker.mode.update_rev_icons_added(src)
special_role = "Head Revolutionary"
+ message_admins("[key_name_admin(usr)] has head-rev'ed [current].")
log_admin("[key_name_admin(usr)] has head-rev'ed [current].")
if("autoobjectives")
@@ -586,6 +594,7 @@ datum/mind
cult.memoize_cult_objectives(src)
current << "\red You have been brainwashed! You are no longer a cultist!"
memory = ""
+ message_admins("[key_name_admin(usr)] has de-cult'ed [current].")
log_admin("[key_name_admin(usr)] has de-cult'ed [current].")
if("cultist")
if(!(src in ticker.mode.cult))
@@ -597,6 +606,7 @@ datum/mind
var/datum/game_mode/cult/cult = ticker.mode
if (istype(cult))
cult.memoize_cult_objectives(src)
+ message_admins("[key_name_admin(usr)] has de-cult'ed [current].")
log_admin("[key_name_admin(usr)] has cult'ed [current].")
if("tome")
var/mob/living/carbon/human/H = current
@@ -635,6 +645,7 @@ datum/mind
special_role = "Wizard"
//ticker.mode.learn_basic_spells(current)
current << "\red You are the Space Wizard!"
+ message_admins("[key_name_admin(usr)] has wizard'ed [current].")
log_admin("[key_name_admin(usr)] has wizard'ed [current].")
if("lair")
current.loc = pick(wizardstart)
@@ -656,6 +667,7 @@ datum/mind
current.verbs -= /datum/changeling/proc/EvolutionMenu
if(changeling) del(changeling)
current << "You grow weak and lose your powers! You are no longer a changeling and are stuck in your current form!"
+ message_admins("[key_name_admin(usr)] has de-changeling'ed [current].")
log_admin("[key_name_admin(usr)] has de-changeling'ed [current].")
if("changeling")
if(!(src in ticker.mode.changelings))
@@ -663,6 +675,7 @@ datum/mind
current.make_changeling()
special_role = "Changeling"
current << "Your powers are awoken. A flash of memory returns to us...we are a changeling!"
+ message_admins("[key_name_admin(usr)] has changeling'ed [current].")
log_admin("[key_name_admin(usr)] has changeling'ed [current].")
if("autoobjectives")
ticker.mode.forge_changeling_objectives(src)
@@ -688,6 +701,7 @@ datum/mind
for (var/datum/objective/nuclear/O in objectives)
objectives-=O
current << "\red You have been brainwashed! You are no longer a syndicate operative!"
+ message_admins("[key_name_admin(usr)] has de-nuke op'ed [current].")
log_admin("[key_name_admin(usr)] has de-nuke op'ed [current].")
if("nuclear")
if(!(src in ticker.mode.syndicates))
@@ -701,6 +715,7 @@ datum/mind
current << "\blue You are a [syndicate_name()] agent!"
ticker.mode.forge_syndicate_objectives(src)
ticker.mode.greet_syndicate(src)
+ message_admins("[key_name_admin(usr)] has nuke op'ed [current].")
log_admin("[key_name_admin(usr)] has nuke op'ed [current].")
if("lair")
current.loc = get_turf(locate("landmark*Syndicate-Spawn"))
@@ -737,6 +752,7 @@ datum/mind
ticker.mode.traitors -= src
special_role = null
current << "\red You have been brainwashed! You are no longer a traitor!"
+ message_admins("[key_name_admin(usr)] has de-traitor'ed [current].")
log_admin("[key_name_admin(usr)] has de-traitor'ed [current].")
if(isAI(current))
var/mob/living/silicon/ai/A = current
@@ -749,6 +765,7 @@ datum/mind
ticker.mode.traitors += src
special_role = "traitor"
current << "\red You are a traitor!"
+ message_admins("[key_name_admin(usr)] has traitor'ed [current].")
log_admin("[key_name_admin(usr)] has traitor'ed [current].")
if(isAI(current))
var/mob/living/silicon/ai/A = current
@@ -830,10 +847,12 @@ datum/mind
current.icon_state = "ai"
current << "\red You have been patched! You are no longer malfunctioning!"
+ message_admins("[key_name_admin(usr)] has de-malf'ed [current].")
log_admin("[key_name_admin(usr)] has de-malf'ed [current].")
if("malf")
make_AI_Malf()
+ message_admins("[key_name_admin(usr)] has malf'ed [current].")
log_admin("[key_name_admin(usr)] has malf'ed [current].")
if("unemag")
@@ -851,6 +870,7 @@ datum/mind
else if(R.module_state_3 == R.module.emag)
R.module_state_3 = null
R.contents -= R.module.emag
+ message_admins("[key_name_admin(usr)] has unemag'ed [R].")
log_admin("[key_name_admin(usr)] has unemag'ed [R].")
if("unemagcyborgs")
@@ -870,6 +890,7 @@ datum/mind
else if(R.module_state_3 == R.module.emag)
R.module_state_3 = null
R.contents -= R.module.emag
+ message_admins("[key_name_admin(usr)] has unemag'ed [ai]'s Cyborgs.")
log_admin("[key_name_admin(usr)] has unemag'ed [ai]'s Cyborgs.")
else if (href_list["common"])
@@ -880,6 +901,7 @@ datum/mind
if("takeuplink")
take_uplink()
memory = null//Remove any memory they may have had.
+ log_admin("[key_name_admin(usr)] removed [current]'s uplink.")
if("crystals")
if (usr.client.holder.rights & R_FUN)
var/obj/item/device/uplink/hidden/suplink = find_syndicate_uplink()
@@ -890,9 +912,11 @@ datum/mind
if (!isnull(crystals))
if (suplink)
suplink.uses = crystals
+ log_admin("[key_name_admin(usr)] changed [current]'s telecrystal count to [crystals].")
if("uplink")
if (!ticker.mode.equip_traitor(current, !(src in ticker.mode.traitors)))
usr << "\red Equipping a syndicate failed!"
+ log_admin("[key_name_admin(usr)] attempted to give [current] an uplink.")
else if (href_list["obj_announce"])
var/obj_count = 1
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index a39c1436ab6..d5689da140d 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -11,9 +11,8 @@
/proc/is_convertable_to_cult(datum/mind/mind)
if(!istype(mind)) return 0
if(istype(mind.current, /mob/living/carbon/human) && (mind.assigned_role in list("Captain", "Chaplain"))) return 0
- for(var/obj/item/weapon/implant/loyalty/L in mind.current)
- if(L && (L.imp_in == mind.current))//Checks to see if the person contains an implant, then checks that the implant is actually inside of them
- return 0
+ if(isloyal(mind.current))
+ return 0
return 1
diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm
index a20af99a62b..1bb1da6bb8c 100644
--- a/code/game/gamemodes/revolution/revolution.dm
+++ b/code/game/gamemodes/revolution/revolution.dm
@@ -118,7 +118,7 @@
/datum/game_mode/proc/greet_revolutionary(var/datum/mind/rev_mind, var/you_are=1)
var/obj_count = 1
if (you_are)
- rev_mind.current << "\blue You are a member of the revolutionaries' leadership!"
+ rev_mind.current << "\red You are a member of the revolutionaries' leadership!"
for(var/datum/objective/objective in rev_mind.objectives)
rev_mind.current << "Objective #[obj_count]: [objective.explanation_text]"
rev_mind.special_role = "Head Revolutionary"
@@ -185,9 +185,8 @@
if(rev_mind.assigned_role in command_positions)
return 0
var/mob/living/carbon/human/H = rev_mind.current//Check to see if the potential rev is implanted
- for(var/obj/item/weapon/implant/loyalty/L in H)//Checking that there is a loyalty implant in the contents
- if(L.imp_in == H)//Checking that it's actually implanted
- return 0
+ if(isloyal(H))
+ return 0
if((rev_mind in revolutionaries) || (rev_mind in head_revolutionaries))
return 0
revolutionaries += rev_mind
diff --git a/code/game/gamemodes/traitor/double_agents.dm b/code/game/gamemodes/traitor/double_agents.dm
index 6e859f04a8f..8ba61f1aff9 100644
--- a/code/game/gamemodes/traitor/double_agents.dm
+++ b/code/game/gamemodes/traitor/double_agents.dm
@@ -39,5 +39,5 @@
traitor.objectives += escape_objective
return
-/datum/game_mode/traitor/dobule_agents/make_antag_chance(var/mob/living/carbon/human/character)
+/datum/game_mode/traitor/double_agents/make_antag_chance(var/mob/living/carbon/human/character)
return // TODO: Have late joining double agents.
\ No newline at end of file
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index c060ac12986..4da16251c50 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -75,10 +75,8 @@
if(M.client)
if(M.stat == CONSCIOUS)
var/revsafe = 0
- for(var/obj/item/weapon/implant/loyalty/L in M)
- if(L && L.implanted)
- revsafe = 1
- break
+ if(isloyal(M))
+ revsafe = 1
M.mind_initialize() //give them a mind datum if they don't have one.
// if(M.mind.has_been_rev)
// revsafe = 2
diff --git a/code/game/verbs/atom_verbs.dm b/code/game/verbs/atom_verbs.dm
index 08183ef0c17..459ada21724 100644
--- a/code/game/verbs/atom_verbs.dm
+++ b/code/game/verbs/atom_verbs.dm
@@ -24,8 +24,9 @@
if (!tile)
return
- var/P = new /obj/effect/decal/point(tile)
+ var/obj/P = new /obj/effect/decal/point(tile)
spawn (20)
- if(P) del(P)
+ if(P)
+ P.loc = null
usr.visible_message("[usr] points to [this]")
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 971eb370f70..3a6b2bcbd68 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -9,42 +9,52 @@
if(href_list["makeAntag"])
switch(href_list["makeAntag"])
if("1")
- log_admin("[key_name(usr)] has spawned a traitor.")
+ message_admins("[key_name_admin(usr)] created traitors.")
+ log_admin("[key_name(usr)] created traitors.")
if(!src.makeTraitors())
usr << "\red Unfortunatly there were no candidates available"
if("2")
- log_admin("[key_name(usr)] has spawned a changeling.")
+ message_admins("[key_name(usr)] created changelings.")
+ log_admin("[key_name(usr)] created changelings.")
if(!src.makeChanglings())
usr << "\red Unfortunatly there were no candidates available"
if("3")
- log_admin("[key_name(usr)] has spawned revolutionaries.")
+ message_admins("[key_name(usr)] started a revolution.")
+ log_admin("[key_name(usr)] started a revolution.")
if(!src.makeRevs())
usr << "\red Unfortunatly there were no candidates available"
if("4")
- log_admin("[key_name(usr)] has spawned a cultists.")
+ message_admins("[key_name(usr)] created cultists.")
+ log_admin("[key_name(usr)] created cultists.")
if(!src.makeCult())
usr << "\red Unfortunatly there were no candidates available"
if("5")
- log_admin("[key_name(usr)] has spawned a malf AI.")
+ message_admins("[key_name(usr)] caused an AI to malfunction.")
+ log_admin("[key_name(usr)] caused an AI to malfunction.")
if(!src.makeMalfAImode())
usr << "\red Unfortunatly there were no candidates available"
if("6")
- log_admin("[key_name(usr)] has spawned a wizard.")
+ message_admins("[key_name(usr)] created a wizard.")
+ log_admin("[key_name(usr)] created a wizard.")
if(!src.makeWizard())
usr << "\red Unfortunatly there were no candidates available"
if("7")
- log_admin("[key_name(usr)] has spawned a nuke team.")
+ message_admins("[key_name(usr)] created a nuke team.")
+ log_admin("[key_name(usr)] created a nuke team.")
if(!src.makeNukeTeam())
usr << "\red Unfortunatly there were no candidates available"
if("8")
- log_admin("[key_name(usr)] has spawned a ninja.")
+ message_admins("[key_name(usr)] spawned a ninja.")
+ log_admin("[key_name(usr)] spawned a ninja.")
src.makeSpaceNinja()
if("9")
- log_admin("[key_name(usr)] has spawned aliens.")
+ message_admins("[key_name(usr)] started an alien infestation.")
+ log_admin("[key_name(usr)] started an alien infestation.")
src.makeAliens()
/* DEATH SQUADS
if("10")
- log_admin("[key_name(usr)] has spawned a death squad.")
+ message_admins("[key_name(usr)] created a death squad.")
+ log_admin("[key_name(usr)] created a death squad.")
if(!src.makeDeathsquad())
usr << "\red Unfortunatly there were no candidates available"
*/
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 2198c13a243..5963da7068f 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -123,6 +123,11 @@ proc/isorgan(A)
/proc/hsl2rgb(h, s, l)
return
+/proc/isloyal(A) //Checks to see if the person contains a loyalty implant, then checks that the implant is actually inside of them
+ for(var/obj/item/weapon/implant/loyalty/L in A)
+ if(L && L.implanted)
+ return 1
+ return 0
/proc/check_zone(zone)
if(!zone) return "chest"