From 26becb39371857c2da6f74887eb9fad6c42da40d Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Mon, 17 Jun 2013 22:39:32 -0600 Subject: [PATCH 1/3] Traitor Panel Improvements -Added logging for admins editing objectives -Added logging for admins adding new antagonists -Changed the antag role assignment buttons to something more appropriate for the game modes. Will now tell you if someone is loyal (implanted). -Added a isloyal() proc to check if a mob is loyalty implanted. -Made the headrev message more noticeable --- code/datums/mind.dm | 54 ++++++++++++++------ code/game/gamemodes/cult/cult.dm | 5 +- code/game/gamemodes/revolution/revolution.dm | 7 ++- code/game/objects/items/devices/flash.dm | 6 +-- code/modules/admin/topic.dm | 30 +++++++---- code/modules/mob/mob_helpers.dm | 5 ++ 6 files changed, 71 insertions(+), 36 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index a30866ccc60..a519df5f7b3 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 415aa0d786d..fc47f776141 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/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/modules/admin/topic.dm b/code/modules/admin/topic.dm index 34b0026ff8a..6fcb856d201 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.makeTratiors()) 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" From 72b33bc909a119cb3ca4d81bccb754b0f3779d70 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Wed, 19 Jun 2013 22:58:43 +0100 Subject: [PATCH 2/3] * Makes the "point to" verb garbage collect the pointers instead of deleting them. --- code/game/verbs/atom_verbs.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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]") From 00c709d7b792e54a46b822d04c31e840c621acaa Mon Sep 17 00:00:00 2001 From: Giacomand Date: Thu, 20 Jun 2013 03:32:12 +0100 Subject: [PATCH 3/3] * Fixed a typo causing double agents to late join with no objectives. --- code/game/gamemodes/traitor/double_agents.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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