From 4d58019d69af8dde0f2995a6763a68046384e094 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 7 Apr 2016 08:45:44 -0400 Subject: [PATCH] Traitor Vamp --- code/datums/mind.dm | 14 ++++-- .../game/gamemodes/changeling/traitor_chan.dm | 9 ++-- code/game/gamemodes/vampire/traitor_vamp.dm | 45 +++++++++++++++++++ config/example/config.txt | 1 + paradise.dme | 1 + 5 files changed, 62 insertions(+), 8 deletions(-) create mode 100644 code/game/gamemodes/vampire/traitor_vamp.dm diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 9cde57e2b35..f5023e820a2 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -139,7 +139,7 @@ "cult", "wizard", "changeling", - "vampire", + "vampire", // "traitorvamp", "nuclear", "traitor", // "traitorchan", "malfunction", @@ -257,7 +257,7 @@ /** VAMPIRE ***/ text = "vampire" - if (ticker.mode.config_tag=="vampire") + if (ticker.mode.config_tag=="vampire" || ticker.mode.config_tag=="traitorvamp") text = uppertext(text) text = "[text]: " if (src in ticker.mode.vampires) @@ -305,7 +305,7 @@ /** TRAITOR ***/ text = "traitor" - if (ticker.mode.config_tag=="traitor" || ticker.mode.config_tag=="traitorchan") + if (ticker.mode.config_tag=="traitor" || ticker.mode.config_tag=="traitorchan" || ticker.mode.config_tag=="traitorvamp") text = uppertext(text) text = "[text]: " if (isloyal(H)) @@ -375,6 +375,14 @@ out += sections["changeling"]+"
" sections -= "traitor" sections -= "changeling" + + if (ticker.mode.config_tag == "traitorvamp") + if (sections["traitor"]) + out += sections["traitor"]+"
" + if (sections["vampire"]) + out += sections["vampire"]+"
" + sections -= "traitor" + sections -= "vampire" else if (sections[ticker.mode.config_tag]) out += sections[ticker.mode.config_tag]+"
" diff --git a/code/game/gamemodes/changeling/traitor_chan.dm b/code/game/gamemodes/changeling/traitor_chan.dm index 06a296fcf81..24c95431686 100644 --- a/code/game/gamemodes/changeling/traitor_chan.dm +++ b/code/game/gamemodes/changeling/traitor_chan.dm @@ -3,9 +3,9 @@ config_tag = "traitorchan" traitors_possible = 3 //hard limit on traitors if scaling is turned off restricted_jobs = list("AI", "Cyborg") - required_players = 3 - required_players_secret = 10 - required_enemies = 2 + required_players = 0 + required_players_secret = 0 + required_enemies = 1 // how many of each type are required recommended_enemies = 3 var/protected_species_changeling = list("Machine", "Slime People") @@ -24,9 +24,8 @@ if((player.mind in possible_changelings) && (player.client.prefs.species in protected_species_changeling)) possible_changelings -= player.mind - if(possible_changelings.len>0) + if(possible_changelings.len > 0) var/datum/mind/changeling = pick(possible_changelings) - //possible_changelings-=changeling changelings += changeling modePlayer += changelings changeling.restricted_roles = restricted_jobs diff --git a/code/game/gamemodes/vampire/traitor_vamp.dm b/code/game/gamemodes/vampire/traitor_vamp.dm new file mode 100644 index 00000000000..4a8f269adc0 --- /dev/null +++ b/code/game/gamemodes/vampire/traitor_vamp.dm @@ -0,0 +1,45 @@ +/datum/game_mode/traitor/vampire + name = "traitor+vampire" + config_tag = "traitorvamp" + traitors_possible = 3 //hard limit on traitors if scaling is turned off + restricted_jobs = list("AI", "Cyborg") + required_players = 0 + required_players_secret = 0 + required_enemies = 1 // how many of each type are required + recommended_enemies = 3 + var/protected_species_vampire = list("Machine") + +/datum/game_mode/traitor/vampire/announce() + to_chat(world, "The current game mode is - Traitor+Vampire!") + to_chat(world, "There is a Vampire from Space Transylvania on the station along with some syndicate operatives out for their own gain! Do not let the vampire and the traitors succeed!") + + +/datum/game_mode/traitor/vampire/pre_setup() + if(config.protect_roles_from_antagonist) + restricted_jobs += protected_jobs + + var/list/datum/mind/possible_vampires = get_players_for_role(ROLE_VAMPIRE) + + for(var/mob/new_player/player in player_list) + if((player.mind in possible_vampires) && (player.client.prefs.species in protected_species_vampire)) + possible_vampires -= player.mind + + if(possible_vampires.len > 0) + var/datum/mind/vampire = pick(possible_vampires) + vampires += vampire + modePlayer += vampires + var/datum/mindslaves/slaved = new() + slaved.masters += vampire + vampire.som = slaved //we MIGT want to mindslave someone + vampire.restricted_roles = restricted_jobs + return ..() + else + return 0 + +/datum/game_mode/traitor/vampire/post_setup() + for(var/datum/mind/vampire in vampires) + grant_vampire_powers(vampire.current) + vampire.special_role = "Vampire" + forge_vampire_objectives(vampire) + greet_vampire(vampire) + ..() \ No newline at end of file diff --git a/config/example/config.txt b/config/example/config.txt index e2061b48652..1af839d039e 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -77,6 +77,7 @@ PROBABILITY CHANGELING 3 PROBABILITY CULT 4 PROBABILITY EXTEND-A-TRAITORMONGOUS 5 PROBABILITY TRAITORCHAN 4 +PROBABILITY TRAITORVAMP 4 PROBABILITY BLOB 2 PROBABILITY REVOLUTION 0 PROBABILITY HEIST 1 diff --git a/paradise.dme b/paradise.dme index 75cdb9919c3..bc05fdbbf54 100644 --- a/paradise.dme +++ b/paradise.dme @@ -437,6 +437,7 @@ #include "code\game\gamemodes\shadowling\special_shadowling_abilities.dm" #include "code\game\gamemodes\traitor\traitor.dm" #include "code\game\gamemodes\vampire\hud.dm" +#include "code\game\gamemodes\vampire\traitor_vamp.dm" #include "code\game\gamemodes\vampire\vampire.dm" #include "code\game\gamemodes\vampire\vampire_powers.dm" #include "code\game\gamemodes\wizard\artefact.dm"