diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 9cde57e2b35..b07df07d935 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)
@@ -267,13 +267,14 @@
else
text += "yes|NO"
+ /** Enthralled ***/
+ text += "
enthralled"
+ text = "[text]: "
if(src in ticker.mode.vampire_enthralled)
text += "YES|no"
else
text += "yes|NO"
- /** Enthralled ***/
- text += "
enthralled"
sections["vampire"] = text
@@ -305,7 +306,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 +376,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..b27494ebee6 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 = 10
required_players_secret = 10
- required_enemies = 2
+ 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/miniantags/guardian/guardian.dm b/code/game/gamemodes/miniantags/guardian/guardian.dm
index 0a3cfaee0c2..b987f2eb6f6 100644
--- a/code/game/gamemodes/miniantags/guardian/guardian.dm
+++ b/code/game/gamemodes/miniantags/guardian/guardian.dm
@@ -681,7 +681,7 @@
if (G.summoner == user)
to_chat(user, "You already have a [mob_name]!")
return
- if(user.mind && user.mind.changeling)
+ if(user.mind && (user.mind.changeling || user.mind.vampire))
to_chat(user, "[ling_failure]")
return
if(used == TRUE)
diff --git a/code/game/gamemodes/vampire/traitor_vamp.dm b/code/game/gamemodes/vampire/traitor_vamp.dm
new file mode 100644
index 00000000000..e063fb43f0c
--- /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 = 10
+ required_players_secret = 10
+ 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 c0eacf96797..9736e6d070c 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -438,6 +438,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"