From 127787aec57024ba306d34062de8c225794c3cee Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Fri, 15 Apr 2016 12:55:28 -0400 Subject: [PATCH] Cleans up special role jobbans --- code/__DEFINES/role_preferences.dm | 2 + code/__DEFINES/rolebans.dm | 31 +++++ .../game/gamemodes/autotraitor/autotraitor.dm | 4 +- code/game/gamemodes/cult/runes.dm | 2 +- code/game/gamemodes/miniantags/borer/borer.dm | 2 +- code/game/objects/items/weapons/explosives.dm | 14 +- code/game/response_team.dm | 2 +- code/modules/admin/DB ban/functions.dm | 8 +- code/modules/admin/topic.dm | 129 ++++-------------- code/modules/client/preferences.dm | 7 +- .../modules/mob/living/silicon/pai/recruit.dm | 2 +- .../mob/living/simple_animal/bot/bot.dm | 5 +- code/modules/mob/mob.dm | 4 +- code/modules/mob/transform_procs.dm | 4 +- paradise.dme | 1 + 15 files changed, 86 insertions(+), 131 deletions(-) create mode 100644 code/__DEFINES/rolebans.dm diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index 4136771eef5..9cd251fb6df 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -36,6 +36,8 @@ #define ROLE_POSIBRAIN "positronic brain" #define ROLE_GUARDIAN "guardian" #define ROLE_MORPH "morph" +#define ROLE_ERT "emergency response team" +#define ROLE_NYMPH "Dionaea" //Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR. diff --git a/code/__DEFINES/rolebans.dm b/code/__DEFINES/rolebans.dm new file mode 100644 index 00000000000..9668721d063 --- /dev/null +++ b/code/__DEFINES/rolebans.dm @@ -0,0 +1,31 @@ +// Bannable antag roles +var/global/list/antag_roles = list( + ROLE_TRAITOR, + ROLE_OPERATIVE, + ROLE_CHANGELING, + ROLE_WIZARD, + ROLE_MALF, + ROLE_REV, + ROLE_ALIEN, + ROLE_CULTIST, + ROLE_BLOB, + ROLE_NINJA, + ROLE_SHADOWLING, + ROLE_RAIDER, + ROLE_VAMPIRE, + ROLE_MUTINEER, + ROLE_BORER, + ROLE_DEMON, + ROLE_REVENANT, + ROLE_GUARDIAN, + ROLE_MORPH, +) + +// Bannable other roles +var/global/list/other_roles = list( + ROLE_SENTIENT, + ROLE_NYMPH, + ROLE_ERT, + "AntagHUD", + "Records" +) \ No newline at end of file diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm index 5e79f387aea..a41dcb8d583 100644 --- a/code/game/gamemodes/autotraitor/autotraitor.dm +++ b/code/game/gamemodes/autotraitor/autotraitor.dm @@ -82,7 +82,7 @@ traitorcount += 1 if (player.client && player.mind && !player.mind.special_role && player.stat != DEAD) if (ishuman(player) || isrobot(player) || isAI(player)) - if (player.client && (ROLE_TRAITOR in player.client.prefs.be_special) && !jobban_isbanned(player, "traitor") && !jobban_isbanned(player, "Syndicate")) + if (player.client && (ROLE_TRAITOR in player.client.prefs.be_special) && !jobban_isbanned(player, ROLE_TRAITOR) && !jobban_isbanned(player, "Syndicate")) possible_traitors += player.mind for(var/datum/mind/player in possible_traitors) for(var/job in restricted_jobs) @@ -159,7 +159,7 @@ if(shuttle_master.emergency.mode >= SHUTTLE_ESCAPE) return //message_admins("Late Join Check") - if(character.client && (ROLE_TRAITOR in character.client.prefs.be_special) && !jobban_isbanned(character, "traitor") && !jobban_isbanned(character, "Syndicate")) + if(character.client && (ROLE_TRAITOR in character.client.prefs.be_special) && !jobban_isbanned(character, ROLE_TRAITOR) && !jobban_isbanned(character, "Syndicate")) //message_admins("Late Joiner has Be Syndicate") //message_admins("Checking number of players") var/playercount = 0 diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index c409449dbe4..c38656f6764 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -373,7 +373,7 @@ var/list/sacrificed = list() break if(!ghost) return this_rune.fizzle() - if(jobban_isbanned(ghost, "cultist") || jobban_isbanned(ghost,"Syndicate")) + if(jobban_isbanned(ghost, ROLE_CULTIST) || jobban_isbanned(ghost,"Syndicate")) return this_rune.fizzle() usr.say("Gal'h'rfikk harfrandid mud[pick("'","`")]gib!") diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index 11111cdfc69..51a661ea430 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -625,7 +625,7 @@ if(jobban_isbanned(O, "Syndicate")) continue if(O.client) - if((ROLE_BORER in O.client.prefs.be_special) && !jobban_isbanned(O, "alien")) + if((ROLE_BORER in O.client.prefs.be_special) && !jobban_isbanned(O, ROLE_BORER)) question(O.client) /mob/living/simple_animal/borer/proc/question(var/client/C) diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index afff3a01fd3..5444110aa30 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -30,19 +30,19 @@ if(user.mind) if(user.mind.special_role) var/role = lowertext(user.mind.special_role) - if(role == "traitor" || role == "syndicate" || role == "syndicate commando") + if(role == ROLE_TRAITOR || role == "syndicate" || role == "syndicate commando") message_say = "FOR THE SYNDICATE!" - else if(role == "changeling") + else if(role == ROLE_CHANGELING) message_say = "FOR THE HIVE!" - else if(role == "cultist") + else if(role == ROLE_CULTIST) message_say = "FOR NARSIE!" - else if(role == "ninja") + else if(role == ROLE_NINJA) message_say = "FOR THE CLAN!" - else if(role == "wizard") + else if(role == ROLE_WIZARD) message_say = "FOR THE FEDERATION!" - else if(role =="revolutionary" || role == "head revolutionary") + else if(role == ROLE_REV || role == "head revolutionary") message_say = "FOR THE REVOLOUTION!" - else if(role == "death commando" || role == "emergency response team") + else if(role == "death commando" || role == ROLE_ERT) message_say = "FOR NANOTRASEN!" user.say(message_say) diff --git a/code/game/response_team.dm b/code/game/response_team.dm index 89e968c23b8..14bf44ff7b5 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -83,7 +83,7 @@ var/send_emergency_team to_chat(usr, "No emergency response team is currently being sent.") return - if(jobban_isbanned(usr, "Emergency Response Team")) + if(jobban_isbanned(usr, ROLE_ERT)) to_chat(usr, "You are jobbanned from the emergency reponse team!") return diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm index dbf88292f3a..1c5365a6b96 100644 --- a/code/modules/admin/DB ban/functions.dm +++ b/code/modules/admin/DB ban/functions.dm @@ -90,7 +90,7 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = a_ckey = src.owner:ckey a_computerid = src.owner:computer_id a_ip = src.owner:address - + if(blockselfban) if(a_ckey == ckey) to_chat(usr, "You cannot apply this ban type on yourself.") @@ -111,7 +111,7 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = adminwho += ", [C]" reason = sql_sanitize_text(reason) - + if(maxadminbancheck) var/DBQuery/adm_query = dbcon.NewQuery("SELECT count(id) AS num FROM [format_table_name("ban")] WHERE (a_ckey = '[a_ckey]') AND (bantype = 'ADMIN_PERMABAN' OR (bantype = 'ADMIN_TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned)") adm_query.Execute() @@ -362,11 +362,11 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) output += "" for(var/j in nonhuman_positions) output += "" - for(var/j in list("Dionaea","NPC","AntagHUD","Emergency Response Team")) + for(var/j in other_roles) output += "" for(var/j in list("commanddept","securitydept","engineeringdept","medicaldept","sciencedept","supportdept","nonhumandept")) output += "" - for(var/j in list("Syndicate","traitor","changeling","operative","revolutionary","cultist","wizard","alien","ninja","raider","mutineer","blob")) + for(var/j in list("Syndicate") + antag_roles) output += "" output += "" output += "Reason:

" diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 60e196c7982..8fb07455627 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -650,120 +650,37 @@ jobs += "" jobs += "" - //Traitor - if(jobban_isbanned(M, "traitor") || isbanned_dept) - jobs += "" - else - jobs += "" - - //Changeling - if(jobban_isbanned(M, "changeling") || isbanned_dept) - jobs += "" - else - jobs += "" - - //Nuclear Operative - if(jobban_isbanned(M, "operative") || isbanned_dept) - jobs += "" - else - jobs += "" - - //Revolutionary - if(jobban_isbanned(M, "revolutionary") || isbanned_dept) - jobs += "" - else - jobs += "" - - //Cultist - if(jobban_isbanned(M, "cultist") || isbanned_dept) - jobs += "" - else - jobs += "" - - //Shadowling - if(jobban_isbanned(M, "shadowling") || isbanned_dept) - jobs += "" - else - jobs += "" - - //Wizard - if(jobban_isbanned(M, "wizard") || isbanned_dept) - jobs += "" - else - jobs += "" - - jobs += "" //Breaking it up so it fits nicer on the screen every 5 entries - - //Malfunctioning AI - if(jobban_isbanned(M, "malf AI") || isbanned_dept) - jobs += "" - else - jobs += "" - - //Alien - if(jobban_isbanned(M, "alien") || isbanned_dept) - jobs += "" - else - jobs += "" - - //Ninja - if(jobban_isbanned(M, "ninja") || isbanned_dept) - jobs += "" - else - jobs += "" - - //Raider - if(jobban_isbanned(M, "raider") || isbanned_dept) - jobs += "" - else - jobs += "" - - //Mutineer - if(jobban_isbanned(M, "mutineer") || isbanned_dept) - jobs += "" - else - jobs += "" - - //Blob - if(jobban_isbanned(M, "blob") || isbanned_dept) - jobs += "" - else - jobs += "" + counter = 0 + for(var/role in antag_roles) + if(jobban_isbanned(M, role) || isbanned_dept) + jobs += "" + else + jobs += "" + counter++ + if(counter >= 5) //So things dont get squiiiiished! + jobs += "" + counter = 0 jobs += "
Antagonist Positions
[replacetext("Traitor", " ", " ")][replacetext("Traitor", " ", " ")][replacetext("Changeling", " ", " ")][replacetext("Changeling", " ", " ")][replacetext("Nuclear Operative", " ", " ")][replacetext("Nuclear Operative", " ", " ")][replacetext("Revolutionary", " ", " ")][replacetext("Revolutionary", " ", " ")][replacetext("Cultist", " ", " ")][replacetext("Cultist", " ", " ")][replacetext("Shadowling", " ", " ")][replacetext("Shadowling", " ", " ")][replacetext("Wizard", " ", " ")][replacetext("Wizard", " ", " ")]
[replacetext("Malf AI", " ", " ")][replacetext("Malf AI", " ", " ")][replacetext("Alien", " ", " ")][replacetext("Alien", " ", " ")][replacetext("Ninja", " ", " ")][replacetext("Ninja", " ", " ")][replacetext("Raider", " ", " ")][replacetext("Raider", " ", " ")][replacetext("Mutineer", " ", " ")][replacetext("Mutineer", " ", " ")][replacetext("Blob", " ", " ")][replacetext("Blob", " ", " ")][replacetext(role, " ", " ")][replacetext(role, " ", " ")]
" - - //Other races (BLUE, because I have no idea what other color to make this) + //Other races (BLUE, because I have no idea what other color to make this) jobs += "" - jobs += "" + jobs += "" - //NYMPH - if(jobban_isbanned(M, "Dionaea")) - jobs += "" - else - jobs += "" - - //NPC - if(jobban_isbanned(M, "NPC")) - jobs += "" - else - jobs += "" - - //ANTAG HUD - if(jobban_isbanned(M, "AntagHUD")) - jobs += "" - else - jobs += "" - - //ERT - if(jobban_isbanned(M, "Emergency Response Team") || isbanned_dept) - jobs += "" - else - jobs += "" + counter = 0 + for(var/role in other_roles) + if(jobban_isbanned(M, role) || isbanned_dept) + jobs += "" + else + jobs += "" + counter++ + if(counter >= 5) //So things dont get squiiiiished! + jobs += "" + counter = 0 jobs += "
Other
Other
Dionaea NymphDionaea NymphNPCNPCAntagHUDAntagHUDEmergency Response TeamEmergency Response Team[replacetext(role, " ", " ")][replacetext(role, " ", " ")]
" - //Support (Grey) + //Whitelisted positions counter = 0 jobs += "" jobs += "" diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index ccd7eda05e5..8d019257af4 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1665,9 +1665,10 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts character.name = character.real_name character.flavor_text = flavor_text - character.med_record = med_record - character.sec_record = sec_record - character.gen_record = gen_record + if(character.ckey && !jobban_isbanned(character, "Records")) + character.med_record = med_record + character.sec_record = sec_record + character.gen_record = gen_record character.change_gender(gender) character.age = age diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm index 980e1bb09ee..949c946a6c8 100644 --- a/code/modules/mob/living/silicon/pai/recruit.dm +++ b/code/modules/mob/living/silicon/pai/recruit.dm @@ -354,7 +354,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates to_chat(O, "\blue A pAI card is looking for personalities. (Teleport | Sign Up)") //question(O.client) proc/check_recruit(var/mob/dead/observer/O) - if(jobban_isbanned(O, "pAI") || jobban_isbanned(O,"nonhumandept")) + if(jobban_isbanned(O, ROLE_PAI) || jobban_isbanned(O,"nonhumandept")) return 0 if(!player_old_enough_antag(O.client,ROLE_PAI)) return 0 diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index b9bf9046482..4e1c6197017 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -300,6 +300,9 @@ if(!locked && !open) var/obj/item/device/paicard/card = W if(card.pai && card.pai.mind) + if(!card.pai.ckey || jobban_isbanned(card.pai, ROLE_SENTIENT)) + to_chat(user, "[W] is unable to establish a connection to [src].") + return if(!user.drop_item()) return W.forceMove(src) @@ -316,7 +319,7 @@ else to_chat(user, "The personality slot is locked.") else - to_chat(user, "[src] is not compatible with [W]") + to_chat(user, "[src] is not compatible with [W].") else if(istype(W, /obj/item/weapon/hemostat) && paicard) if(open) to_chat(user, "Close the access panel before manipulating the personality slot!") diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 4e5e6c9b21c..c42225506b8 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1269,8 +1269,8 @@ mob/proc/yank_out_object() set name = "Respawn as NPC" set category = "Ghost" - if(jobban_isbanned(usr, "NPC")) - to_chat(usr, "You are banned from playing as NPC's.") + if(jobban_isbanned(usr, ROLE_SENTIENT)) + to_chat(usr, "You are banned from playing as sentient animals.") return if(!ticker || ticker.current_state < 3) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 5e3641803ff..ac3dd8af716 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -346,10 +346,10 @@ if(ispath(MP, /mob/living/simple_animal/butterfly)) return 1 - if(ispath(MP, /mob/living/simple_animal/borer) && !jobban_isbanned(src, "alien") && !jobban_isbanned(src, "Syndicate")) + if(ispath(MP, /mob/living/simple_animal/borer) && !jobban_isbanned(src, ROLE_BORER) && !jobban_isbanned(src, "Syndicate")) return 1 - if(ispath(MP, /mob/living/simple_animal/diona) && !jobban_isbanned(src, "Dionaea")) + if(ispath(MP, /mob/living/simple_animal/diona) && !jobban_isbanned(src, ROLE_NYMPH)) return 1 return 0 diff --git a/paradise.dme b/paradise.dme index deaf7fd35f4..91d942f80d3 100644 --- a/paradise.dme +++ b/paradise.dme @@ -37,6 +37,7 @@ #include "code\__DEFINES\process_scheduler.dm" #include "code\__DEFINES\qdel.dm" #include "code\__DEFINES\role_preferences.dm" +#include "code\__DEFINES\rolebans.dm" #include "code\__DEFINES\sight.dm" #include "code\__DEFINES\snpc.dm" #include "code\__DEFINES\stat.dm"
Whitelisted Positions