diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm
index 942d33797d..5695a8c480 100644
--- a/code/modules/antagonists/_common/antag_spawner.dm
+++ b/code/modules/antagonists/_common/antag_spawner.dm
@@ -1,271 +1,3 @@
-<<<<<<< HEAD
-/obj/item/antag_spawner
- throw_speed = 1
- throw_range = 5
- w_class = WEIGHT_CLASS_TINY
- var/used = FALSE
-
-/obj/item/antag_spawner/proc/spawn_antag(client/C, turf/T, kind = "", datum/mind/user)
- return
-
-/obj/item/antag_spawner/proc/equip_antag(mob/target)
- return
-
-
-///////////WIZARD
-
-/obj/item/antag_spawner/contract
- name = "contract"
- desc = "A magic contract previously signed by an apprentice. In exchange for instruction in the magical arts, they are bound to answer your call for aid."
- icon = 'icons/obj/wizard.dmi'
- icon_state ="scroll2"
-
-/obj/item/antag_spawner/contract/attack_self(mob/user)
- user.set_machine(src)
- var/dat
- if(used)
- dat = "You have already summoned your apprentice.
"
- else
- dat = "Contract of Apprenticeship:
"
- dat += "Using this contract, you may summon an apprentice to aid you on your mission.
"
- dat += "If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.
"
- dat += "Which school of magic is your apprentice studying?:
"
- dat += "Destruction
"
- dat += "Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.
"
- dat += "Bluespace Manipulation
"
- dat += "Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.
"
- dat += "Healing
"
- dat += "Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.
"
- dat += "Robeless
"
- dat += "Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.
"
- user << browse(dat, "window=radio")
- onclose(user, "radio")
- return
-
-/obj/item/antag_spawner/contract/Topic(href, href_list)
- ..()
- var/mob/living/carbon/human/H = usr
-
- if(H.stat || H.restrained())
- return
- if(!ishuman(H))
- return 1
-
- if(loc == H || (in_range(src, H) && isturf(loc)))
- H.set_machine(src)
- if(href_list["school"])
- if(used)
- to_chat(H, "You already used this contract!")
- return
- var/list/candidates = pollCandidatesForMob("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, null, ROLE_WIZARD, 150, src)
- if(LAZYLEN(candidates))
- if(used)
- to_chat(H, "You already used this contract!")
- return
- used = TRUE
- var/client/C = pick(candidates)
- spawn_antag(C, get_turf(src), href_list["school"],H.mind)
- else
- to_chat(H, "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later.")
-
-/obj/item/antag_spawner/contract/spawn_antag(client/C, turf/T, kind ,datum/mind/user)
- new /obj/effect/particle_effect/smoke(T)
- var/mob/living/carbon/human/M = new/mob/living/carbon/human(T)
- C.prefs.copy_to(M)
- M.key = C.key
- var/datum/mind/app_mind = M.mind
-
- var/datum/antagonist/wizard/apprentice/app = new()
- app.master = user
- app.school = kind
-
- var/datum/antagonist/wizard/master_wizard = user.has_antag_datum(/datum/antagonist/wizard)
- if(master_wizard)
- if(!master_wizard.wiz_team)
- master_wizard.create_wiz_team()
- app.wiz_team = master_wizard.wiz_team
- master_wizard.wiz_team.add_member(app_mind)
- app_mind.add_antag_datum(app)
- //TODO Kill these if possible
- app_mind.assigned_role = "Apprentice"
- app_mind.special_role = "apprentice"
- //
- SEND_SOUND(M, sound('sound/effects/magic.ogg'))
-
-///////////BORGS AND OPERATIVES
-
-
-/obj/item/antag_spawner/nuke_ops
- name = "syndicate operative teleporter"
- desc = "A single-use teleporter designed to quickly reinforce operatives in the field."
- icon = 'icons/obj/device.dmi'
- icon_state = "locator"
- var/borg_to_spawn
-
-/obj/item/antag_spawner/nuke_ops/proc/check_usability(mob/user)
- if(used)
- to_chat(user, "[src] is out of power!")
- return FALSE
- if(!user.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE))
- to_chat(user, "AUTHENTICATION FAILURE. ACCESS DENIED.")
- return FALSE
- if(!user.onSyndieBase())
- to_chat(user, "[src] is out of range! It can only be used at your base!")
- return FALSE
- return TRUE
-
-
-/obj/item/antag_spawner/nuke_ops/attack_self(mob/user)
- if(!(check_usability(user)))
- return
-
- to_chat(user, "You activate [src] and wait for confirmation.")
- var/list/nuke_candidates = pollGhostCandidates("Do you want to play as a syndicate [borg_to_spawn ? "[lowertext(borg_to_spawn)] cyborg":"operative"]?", ROLE_OPERATIVE, null, ROLE_OPERATIVE, 150, POLL_IGNORE_SYNDICATE)
- if(LAZYLEN(nuke_candidates))
- if(!(check_usability(user)))
- return
- used = TRUE
- var/client/C = pick(nuke_candidates)
- spawn_antag(C, get_turf(src), "syndieborg", user.mind)
- do_sparks(4, TRUE, src)
- qdel(src)
- else
- to_chat(user, "Unable to connect to Syndicate command. Please wait and try again later or use the teleporter on your uplink to get your points refunded.")
-
-/obj/item/antag_spawner/nuke_ops/spawn_antag(client/C, turf/T, kind, datum/mind/user)
- var/mob/living/carbon/human/M = new/mob/living/carbon/human(T)
- C.prefs.copy_to(M)
- M.key = C.key
-
- var/datum/antagonist/nukeop/new_op = new()
- new_op.send_to_spawnpoint = FALSE
- new_op.nukeop_outfit = /datum/outfit/syndicate/no_crystals
-
- var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE)
- if(creator_op)
- M.mind.add_antag_datum(new_op,creator_op.nuke_team)
- M.mind.special_role = "Nuclear Operative"
-
-//////SYNDICATE BORG
-/obj/item/antag_spawner/nuke_ops/borg_tele
- name = "syndicate cyborg teleporter"
- desc = "A single-use teleporter designed to quickly reinforce operatives in the field.."
- icon = 'icons/obj/device.dmi'
- icon_state = "locator"
-
-/obj/item/antag_spawner/nuke_ops/borg_tele/assault
- name = "syndicate assault cyborg teleporter"
- borg_to_spawn = "Assault"
-
-/obj/item/antag_spawner/nuke_ops/borg_tele/medical
- name = "syndicate medical teleporter"
- borg_to_spawn = "Medical"
-
-/obj/item/antag_spawner/nuke_ops/borg_tele/spawn_antag(client/C, turf/T, kind, datum/mind/user)
- var/mob/living/silicon/robot/R
- var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE)
- if(!creator_op)
- return
-
- switch(borg_to_spawn)
- if("Medical")
- R = new /mob/living/silicon/robot/modules/syndicate/medical(T)
- else
- R = new /mob/living/silicon/robot/modules/syndicate(T) //Assault borg by default
-
- var/brainfirstname = pick(GLOB.first_names_male)
- if(prob(50))
- brainfirstname = pick(GLOB.first_names_female)
- var/brainopslastname = pick(GLOB.last_names)
- if(creator_op.nuke_team.syndicate_name) //the brain inside the syndiborg has the same last name as the other ops.
- brainopslastname = creator_op.nuke_team.syndicate_name
- var/brainopsname = "[brainfirstname] [brainopslastname]"
-
- R.mmi.name = "Man-Machine Interface: [brainopsname]"
- R.mmi.brain.name = "[brainopsname]'s brain"
- R.mmi.brainmob.real_name = brainopsname
- R.mmi.brainmob.name = brainopsname
- R.real_name = R.name
-
- R.key = C.key
-
- var/datum/antagonist/nukeop/new_borg = new()
- new_borg.send_to_spawnpoint = FALSE
- R.mind.add_antag_datum(new_borg,creator_op.nuke_team)
- R.mind.special_role = "Syndicate Cyborg"
-
-///////////SLAUGHTER DEMON
-
-/obj/item/antag_spawner/slaughter_demon //Warning edgiest item in the game
- name = "vial of blood"
- desc = "A magically infused bottle of blood, distilled from countless murder victims. Used in unholy rituals to attract horrifying creatures."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "vial"
-
- var/shatter_msg = "You shatter the bottle, no turning back now!"
- var/veil_msg = "You sense a dark presence lurking just beyond the veil..."
- var/objective_verb = "Kill"
- var/mob/living/demon_type = /mob/living/simple_animal/slaughter
-
-
-/obj/item/antag_spawner/slaughter_demon/attack_self(mob/user)
- if(!is_station_level(user.z))
- to_chat(user, "You should probably wait until you reach the station.")
- return
- if(used)
- return
- var/list/candidates = pollCandidatesForMob("Do you want to play as a [initial(demon_type.name)]?", ROLE_ALIEN, null, ROLE_ALIEN, 50, src)
- if(LAZYLEN(candidates))
- if(used)
- return
- used = TRUE
- var/client/C = pick(candidates)
- spawn_antag(C, get_turf(src), initial(demon_type.name),user.mind)
- to_chat(user, shatter_msg)
- to_chat(user, veil_msg)
- playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1)
- qdel(src)
- else
- to_chat(user, "You can't seem to work up the nerve to shatter the bottle. Perhaps you should try again later.")
-
-
-/obj/item/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, kind = "", datum/mind/user)
- var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T)
- var/mob/living/simple_animal/slaughter/S = new demon_type(holder)
- S.holder = holder
- S.key = C.key
- S.mind.assigned_role = S.name
- S.mind.special_role = S.name
- var/datum/objective/assassinate/new_objective
- if(user)
- new_objective = new /datum/objective/assassinate
- new_objective.owner = S.mind
- new_objective.target = user
- new_objective.explanation_text = "[objective_verb] [user.name], the one who summoned you."
- S.mind.objectives += new_objective
- var/datum/objective/new_objective2 = new /datum/objective
- new_objective2.owner = S.mind
- new_objective2.explanation_text = "[objective_verb] everyone[user ? " else while you're at it":""]."
- S.mind.objectives += new_objective2
- S.mind.add_antag_datum(/datum/antagonist/auto_custom)
- to_chat(S, S.playstyle_string)
- to_chat(S, "You are currently not currently in the same plane of existence as the station. \
- Ctrl+Click a blood pool to manifest.")
- if(new_objective)
- to_chat(S, "Objective #[1]: [new_objective.explanation_text]")
- to_chat(S, "Objective #[new_objective ? "[2]":"[1]"]: [new_objective2.explanation_text]")
-
-/obj/item/antag_spawner/slaughter_demon/laughter
- name = "vial of tickles"
- desc = "A magically infused bottle of clown love, distilled from countless hugging attacks. Used in funny rituals to attract adorable creatures."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "vial"
- color = "#FF69B4" // HOT PINK
-
- veil_msg = "You sense an adorable presence lurking just beyond the veil..."
- objective_verb = "Hug and Tickle"
- demon_type = /mob/living/simple_animal/slaughter/laughter
-=======
/obj/item/antag_spawner
throw_speed = 1
throw_range = 5
@@ -518,4 +250,3 @@
veil_msg = "You sense an adorable presence lurking just beyond the veil..."
demon_type = /mob/living/simple_animal/slaughter/laughter
antag_type = /datum/antagonist/slaughter/laughter
->>>>>>> 126a544... Slaughter demon, Morph, ERT / Deathsquad antag datums. (#35156)