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"