diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm
index 8421beed3d8..031575b15db 100644
--- a/code/datums/outfits/outfit_admin.dm
+++ b/code/datums/outfits/outfit_admin.dm
@@ -259,6 +259,57 @@
if(istype(I))
apply_to_card(I, H, get_centcom_access("Nanotrasen Navy Representative"), "Nanotrasen Diplomat")
+
+/datum/outfit/admin/nt_undercover
+ name = "NT Undercover Operative"
+ // Disguised NT special forces, sent to quietly eliminate mutinous people in high positions (e.g: captain)
+
+ uniform = /obj/item/clothing/under/chameleon
+ back = /obj/item/weapon/storage/backpack
+ belt = /obj/item/weapon/storage/belt/utility/full/multitool
+ gloves = /obj/item/clothing/gloves/combat
+ shoes = /obj/item/clothing/shoes/syndigaloshes
+ l_ear = /obj/item/device/radio/headset/heads/captain
+ id = /obj/item/weapon/card/id/syndicate
+ pda = /obj/item/device/pda
+ backpack_contents = list(
+ /obj/item/weapon/storage/box/engineer = 1,
+ /obj/item/device/flashlight = 1,
+ /obj/item/weapon/gun/projectile/automatic/proto = 1, // NT saber SMG
+ /obj/item/weapon/suppressor = 1, // silencer for SMG
+ /obj/item/ammo_box/magazine/smgm9mm = 3, // SMG ammo
+ /obj/item/weapon/door_remote/omni = 1,
+ /obj/item/weapon/implanter/mindshield = 1, // not implanted by default, as that would make them suspicious
+ /obj/item/weapon/implanter/storage = 1 // do not auto-implant this, that causes a bug
+ )
+ implants = list(
+ /obj/item/weapon/implant/dust
+ )
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/eyes/hud/security,
+ /obj/item/organ/internal/cyberimp/eyes/xray,
+ /obj/item/organ/internal/cyberimp/brain/anti_drop,
+ /obj/item/organ/internal/cyberimp/brain/anti_stun,
+ /obj/item/organ/internal/cyberimp/chest/nutriment/plus
+ )
+
+/datum/outfit/admin/nt_undercover/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ . = ..()
+ if(visualsOnly)
+ return
+
+ var/obj/item/weapon/card/id/I = H.wear_id
+ if(istype(I))
+ apply_to_card(I, H, get_all_accesses(), "Civilian")
+ I.icon_state = "deathsquad"
+
+
+ var/obj/item/device/radio/R = H.l_ear
+ if(istype(R))
+ R.name = "radio headset"
+ R.icon_state = "headset"
+
+
/datum/outfit/admin/death_commando
name = "NT Death Commando"
@@ -723,6 +774,7 @@
name = "Wizard Hardsuit"
suit = /obj/item/clothing/suit/space/hardsuit/wizard
head = /obj/item/clothing/head/helmet/space/hardsuit/wizard
+ shoes = /obj/item/clothing/shoes/magboots
/datum/outfit/admin/hardsuit/medical
name = "Medical Hardsuit"
@@ -938,7 +990,7 @@
/obj/item/weapon/suppressor = 1,
/obj/item/weapon/card/emag = 1,
/obj/item/device/flashlight = 1,
- /obj/item/weapon/implanter/storage = 1 // do not auto-implant this, it causes a bug
+ /obj/item/weapon/implanter/storage = 1 // do not auto-implant this, that causes a bug
)
implants = list(
/obj/item/weapon/implant/dust
@@ -993,6 +1045,46 @@
if(istype(I))
apply_to_card(I, H, get_all_accesses(), "Dark Lord", "syndie")
+
+/datum/outfit/admin/ancient_vampire
+ name = "Ancient Vampire"
+ // Vampire with tons of blood, and ability to convert others into vampires.
+
+ uniform = /obj/item/clothing/under/color/black
+ suit = /obj/item/clothing/suit/hooded/chaplain_hoodie
+ back = /obj/item/weapon/storage/backpack
+ gloves = /obj/item/clothing/gloves/color/black
+ shoes = /obj/item/clothing/shoes/black
+ l_ear = /obj/item/device/radio/headset/syndicate
+ id = /obj/item/weapon/card/id/syndicate
+ backpack_contents = list(
+ /obj/item/weapon/storage/box/survival = 1,
+ /obj/item/device/flashlight = 1,
+ )
+
+/datum/outfit/admin/ancient_vampire/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ . = ..()
+ if(visualsOnly)
+ return
+
+ var/obj/item/clothing/suit/hooded/chaplain_hoodie/C = H.wear_suit
+ if(istype(C))
+ C.name = "ancient robes"
+ C.hood.name = "ancient hood"
+
+ var/obj/item/weapon/card/id/I = H.wear_id
+ if(istype(I))
+ apply_to_card(I, H, get_all_accesses(), "Ancient", "syndie")
+
+ H.make_vampire()
+ if(H.mind && H.mind.vampire)
+ H.mind.vampire.bloodtotal = 2500
+ H.mind.vampire.bloodusable = 2500
+ H.mind.vampire.add_ability(/obj/effect/proc_holder/spell/vampire/targetted/sire)
+ H.mind.vampire.check_vampire_upgrade()
+
+
+
/datum/outfit/admin/wizard
uniform = /obj/item/clothing/under/color/lightpurple
suit = /obj/item/clothing/suit/wizrobe
@@ -1034,6 +1126,38 @@
shoes = /obj/item/clothing/shoes/sandal/marisa
head = /obj/item/clothing/head/wizard/marisa
+/datum/outfit/admin/wizard/arch
+ name = "Arch Wizard"
+
+ suit = /obj/item/clothing/suit/wizrobe/magusred
+ head = /obj/item/clothing/head/wizard/magus
+ belt = /obj/item/weapon/storage/belt/wands/full
+ l_hand = null
+ backpack_contents = list(
+ /obj/item/weapon/storage/box/engineer = 1,
+ /obj/item/clothing/suit/space/hardsuit/wizard = 1,
+ /obj/item/clothing/head/helmet/space/hardsuit/wizard = 1,
+ /obj/item/clothing/shoes/magboots = 1,
+ /obj/item/weapon/kitchen/knife/ritual = 1,
+ /obj/item/clothing/suit/wizrobe/red = 1,
+ /obj/item/clothing/head/wizard/red = 1
+ )
+
+/datum/outfit/admin/wizard/arch/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ . = ..()
+ if(visualsOnly)
+ return
+ //if(H.mind)
+ // H.mind.make_wizard()
+ var/obj/item/weapon/spellbook/B = H.r_hand
+ if(istype(B))
+ B.owner = H // force-bind it so it can never be stolen, no matter what.
+ B.name = "Archwizard Spellbook"
+ B.uses = 50
+ var/obj/item/weapon/card/id/I = H.wear_id
+ if(istype(I))
+ apply_to_card(I, H, get_all_accesses(), "Arch Wizard")
+
/datum/outfit/admin/dark_priest
name = "Dark Priest"
diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm
index c78cc55676f..d54addd0b1d 100644
--- a/code/game/gamemodes/vampire/vampire_powers.dm
+++ b/code/game/gamemodes/vampire/vampire_powers.dm
@@ -349,6 +349,63 @@
to_chat(user, "You have successfully Enthralled [H]. If they refuse to do as you say just adminhelp.")
add_logs(user, H, "vampire-thralled")
+
+/obj/effect/proc_holder/spell/vampire/targetted/sire
+ name = "Sire (300)"
+ desc = "You infect the mind of a human with one of your own kind, creating a new vampire."
+ gain_desc = "You have gained the sire ability which allows you to create new vampires."
+ action_icon_state = "vampire_enthrall"
+ required_blood = 300
+
+/obj/effect/proc_holder/spell/vampire/targetted/sire/cast(list/targets, mob/user = usr)
+ for(var/mob/living/target in targets)
+ user.visible_message("[user] bites [target]'s neck!", "You bite [target]'s neck and begin the flow of power.")
+ to_chat(target, "You feel the tendrils of evil invade your mind.")
+ if(!ishuman(target))
+ to_chat(user, "You can only sire humans.")
+ break
+ if(do_mob(user, target, 50))
+ if(can_sire(user, target))
+ handle_sire(user, target)
+ else
+ revert_cast(user)
+ to_chat(user, "You or your target either moved or you dont have enough usable blood.")
+
+/obj/effect/proc_holder/spell/vampire/targetted/sire/proc/can_sire(mob/living/user, mob/living/carbon/C)
+ // Unlike can_enthrall, this proc allows usage on mindshielded and traitor targets. Deletes mindshield on use.
+ if(!C)
+ log_runtime(EXCEPTION("something bad happened on sireing a mob, attacker is [user] [user.key] \ref[user]"), user)
+ return 0
+ if(!C.mind)
+ to_chat(user, "[C.name]'s mind is not there for you to sire.")
+ return 0
+ if( ( C.mind in ticker.mode.vampires )||( C.mind.vampire )||( C.mind in ticker.mode.vampire_enthralled ))
+ C.visible_message("[C] seems to resist the takeover!", "You feel a familiar sensation in your skull that quickly dissipates.")
+ return 0
+ if(!affects(C))
+ C.visible_message("[C] seems to resist the takeover!", "Your faith of [ticker.Bible_deity_name] has kept your mind clear of all evil.")
+ return 0
+ if(!ishuman(C))
+ to_chat(user, "You can only sire humans!")
+ return 0
+ return 1
+
+/obj/effect/proc_holder/spell/vampire/targetted/sire/proc/handle_sire(mob/living/user, mob/living/carbon/human/H as mob)
+ if(!istype(H))
+ return 0
+ for(var/obj/item/weapon/implant/mindshield/L in H)
+ if(L && L.implanted)
+ to_chat(H, "Your mental protection implant unexpectedly falters, dims, dies.")
+ qdel(L)
+ H.make_vampire()
+ ticker.mode.forge_vampire_objectives(H.mind)
+ ticker.mode.greet_vampire(H.mind)
+ ticker.mode.update_vampire_icons_added(H.mind)
+ to_chat(H, "You have been sireed by [user]. Follow their every command.")
+ to_chat(user, "You have successfully sireed [H].")
+ add_logs(user, H, "vampire-sired")
+
+
/obj/effect/proc_holder/spell/vampire/self/cloak
name = "Cloak of Darkness"
desc = "Toggles whether you are currently cloaking yourself in darkness."