diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 2c0cbeef058..7d53c4ffa3e 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -96,17 +96,17 @@ datum/mind
if (cantoggle)
if(src in current_mode.traitors)
- if (special_role == "fake wizard")
+ if (special_role == "Fake Wizard")
out += "Traitor "
- out += "Fake wizard "
- srole = "Fake wizard"
+ out += "Fake Wizard "
+ srole = "Fake Wizard"
else
out += "Traitor "
- out += "Fake wizard "
+ out += "Fake Wizard "
srole = "Traitor"
else
out += "Traitor "
- out += "Fake wizard "
+ out += "Fake Wizard "
if (srole)
out += "Civilian "
@@ -344,10 +344,10 @@ datum/mind
current_mode.equip_wizard(current)
current << "\red You are the Space Wizard!"
current.loc = pick(wizardstart)
- special_role = "fake wizard"
+ special_role = "Fake Wizard"
if ("changeling")
- if (alert("Old changeling would lost his memory. Are you sure?", , "Yes", "No") != "Yes") return
+ if (alert("Old changeling would lose their memory. Are you sure?", , "Yes", "No") != "Yes") return
if (changeling)
changeling.clear_memory()
current_mode:changelings -= changeling
@@ -400,17 +400,8 @@ datum/mind
del(t)
// remove wizards spells
- current.verbs -= /client/proc/jaunt
- current.verbs -= /client/proc/magicmissile
- current.verbs -= /client/proc/fireball
- current.verbs -= /mob/proc/kill
- current.verbs -= /mob/proc/tech
- current.verbs -= /client/proc/smokecloud
- current.verbs -= /client/proc/blind
- current.verbs -= /client/proc/forcewall
- current.verbs -= /mob/proc/teleport
- current.verbs -= /client/proc/mutate
- current.verbs -= /client/proc/knock
+ //If there are more special powers that need removal, they can be procced into here./N
+ current.spellremove(current)
// clear memory
memory = ""
@@ -420,7 +411,7 @@ datum/mind
if (src in current_mode.traitors)
current_mode.traitors -= src
if (!silent)
- if (special_role == "fake wizard")
+ if (special_role == "Fake Wizard")
src.current << "\red You have been brainwashed! You are no longer a wizard!"
else
src.current << "\red You have been brainwashed! You are no longer a traitor!"
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index 0ba1dd0cf12..3a80afd7927 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -81,6 +81,7 @@
cult_mind.memory += "Objective #[obj_count]: [explanation]
"
cult_mind.current << "The convert rune is join blood self"
cult_mind.memory += "The convert rune is join blood self
"
+ cult_mind.special_role = "Cultist"
spawn (rand(waittime_l, waittime_h))
send_intercept()
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index d6496384d09..413989bd603 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -42,6 +42,7 @@
for(var/datum/mind/synd_mind in syndicates)
synd_mind.assigned_role = "MODE" //So they aren't chosen for other jobs.
+ synd_mind.special_role = "Syndicate"//So they actually have a special role/N
return 1
diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm
index dc21e2d730a..75c8d188dff 100644
--- a/code/game/gamemodes/revolution/revolution.dm
+++ b/code/game/gamemodes/revolution/revolution.dm
@@ -66,6 +66,7 @@
rev_mind.current << "\blue You are a member of the revolutionaries' leadership!"
for(var/datum/objective/objective in rev_mind.objectives)
rev_mind.current << "Objective #[obj_count]: [objective.explanation_text]"
+ rev_mind.special_role = "Head Revolutionary"
obj_count++
spawn (rand(waittime_l, waittime_h))
@@ -205,6 +206,7 @@
if(!(rev_mind in revolutionaries) && !(rev_mind in head_revolutionaries) && !(rev_mind in uncons))
revolutionaries += rev_mind
rev_mind.current << "\red You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!"
+ rev_mind.special_role = "Revolutionary"
update_rev_icons_added(rev_mind)
//////////////////////////////////////////////////////////////////////////////
diff --git a/code/game/gamemodes/wizard/spells.dm b/code/game/gamemodes/wizard/spells.dm
index bf7a8f8c2ce..de3d992a451 100644
--- a/code/game/gamemodes/wizard/spells.dm
+++ b/code/game/gamemodes/wizard/spells.dm
@@ -4,6 +4,9 @@
set category = "Spells"
set name = "Blind"
set desc = "This spell temporarly blinds a single person and does not require wizard garb."
+ if(usr.stat)
+ src << "Not when you are incapacitated."
+ return
// if(!usr.casting()) return
usr.verbs -= /client/proc/blind
spawn(300)
@@ -37,6 +40,9 @@
set category = "Spells"
set name = "Magic missile"
set desc = "This spell fires several, slow moving, magic projectiles at nearby targets."
+ if(usr.stat)
+ src << "Not when you are incapacitated."
+ return
if(!usr.casting()) return
usr.say("FORTI GY AMA")
@@ -82,6 +88,9 @@
set category = "Spells"
set name = "Smoke"
set desc = "This spell spawns a cloud of choking smoke at your location and does not require wizard garb."
+ if(usr.stat)
+ src << "Not when you are incapacitated."
+ return
// if(!usr.casting()) return
usr.verbs -= /client/proc/smokecloud
spawn(120)
@@ -107,7 +116,9 @@
set category = "Spells"
set name = "Forcewall"
set desc = "This spell creates an unbreakable wall that lasts for 30 seconds and does not need wizard garb."
-
+ if(usr.stat)
+ src << "Not when you are incapacitated."
+ return
// if(!usr.casting()) return
usr.verbs -= /client/proc/forcewall
@@ -129,6 +140,9 @@
set category = "Spells"
set name = "Fireball"
set desc = "This spell fires a fireball at a target and does not require wizard garb."
+ if(usr.stat)
+ src << "Not when you are incapacitated."
+ return
// if(!usr.casting()) return
usr.verbs -= /client/proc/fireball
@@ -164,6 +178,9 @@
set category = "Spells"
set name = "Knock"
set desc = "This spell opens nearby doors and does not require wizard garb."
+ if(usr.stat)
+ src << "Not when you are incapacitated."
+ return
// if(!usr.casting()) return
usr.verbs -= /client/proc/knock
spawn(100)
@@ -183,6 +200,9 @@
set category = "Spells"
set name = "Disintegrate"
set desc = "This spell instantly kills somebody adjacent to you with the vilest of magick."
+ if(usr.stat)
+ src << "Not when you are incapacitated."
+ return
if(!usr.casting()) return
usr.verbs -= /mob/proc/kill
spawn(600)
@@ -203,6 +223,9 @@
set category = "Spells"
set name = "Disable Technology"
set desc = "This spell disables all weapons, cameras and most other technology in range."
+ if(usr.stat)
+ src << "Not when you are incapacitated."
+ return
if(!usr.casting()) return
usr.verbs -= /mob/proc/tech
spawn(400)
@@ -393,6 +416,9 @@
set category = "Spells"
set name = "Blink"
set desc = "This spell randomly teleports you a short distance."
+ if(usr.stat)
+ src << "Not when you are incapacitated."
+ return
if(!usr.casting()) return
var/list/turfs = new/list()
for(var/turf/T in orange(6))
@@ -418,6 +444,9 @@
set category = "Spells"
set name = "Teleport"
set desc = "This spell teleports you to a type of area of your selection."
+ if(usr.stat)
+ src << "Not when you are incapacitated."
+ return
if(!usr.casting()) return
var/A
usr.verbs -= /mob/proc/teleport
@@ -463,7 +492,7 @@
/mob/proc/teleportscroll()
if(usr.stat)
- usr << "Not when you're incapicated."
+ usr << "Not when you are incapacitated."
return
var/A
@@ -495,6 +524,9 @@
set category = "Spells"
set name = "Ethereal Jaunt"
set desc = "This spell creates your ethereal form, temporarily making you invisible and able to pass through walls."
+ if(usr.stat)
+ src << "Not when you are incapacitated."
+ return
if(!usr.casting()) return
usr.verbs -= /client/proc/jaunt
spawn(300)
@@ -580,6 +612,9 @@
set category = "Spells"
set name = "Mutate"
set desc = "This spell causes you to turn into a hulk and gain telekinesis for a short while."
+ if(usr.stat)
+ src << "Not when you are incapacitated."
+ return
if(!usr.casting()) return
usr.verbs -= /client/proc/mutate
spawn(400)
@@ -604,9 +639,12 @@
set category = "Spells"
set name = "Mind Transfer"
set desc = "This spell allows the user to switch bodies with a target."
+ if(usr.stat)
+ src << "Not when you are incapacitated."
+ return
if(M.client && M.mind)
- if(M.mind.special_role != "Wizard" || "Changeling" || "Cultist")//Wizards, changelings, and cultists are protected.
+ if(M.mind.special_role != "Wizard" || "Fake Wizard" || "Changeling" || "Cultist")//Wizards, changelings, and cultists are protected.
if( (istype(M, /mob/living/carbon/human)) || (istype(M, /mob/living/carbon/monkey)) && M.stat != 2)
var/mob/living/carbon/human/H = M //so it does not freak out when looking at the variables.
var/mob/living/carbon/human/U = src
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index b738f0b9568..f4c43dc0253 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -64,7 +64,7 @@
if(istype(wizard))
wizard.assigned_role = "MODE" //So they aren't chosen for other jobs.
- wizard.special_role = "wizard"
+ wizard.special_role = "Wizard"
if(wizardstart.len == 0)
wizard.current << "\red A starting location for you could not be found, please report this bug!"
@@ -120,6 +120,22 @@
equip_wizard(wizard.current)
+ spawn(0)//Allows the wizard to choose a custom name or go with a random one. Spawn 0 so it does not lag the round starting.
+ var/wizard_name_first = pick(wizard_first)
+ var/wizard_name_second = pick(wizard_second)
+ var/randomname = "[wizard_name_first] [wizard_name_second]"
+ var/newname = input(wizard.current, "You are the Space Wizard. Would you like to change your name to something else?", "Name change", randomname)
+
+ if (length(newname) == 0)
+ newname = randomname
+
+ if (newname)
+ if (length(newname) >= 26)
+ newname = copytext(newname, 1, 26)
+ newname = dd_replacetext(newname, ">", "'")
+ wizard.current.real_name = newname
+ wizard.current.name = newname
+
wizards += wizard.current
wizard.current << "\red You are the Space Wizard!"
@@ -157,6 +173,14 @@
wizard_mob.verbs += /client/proc/jaunt
wizard_mob.mind.special_verbs += /client/proc/jaunt
+ //So zards properly get their items when they are admin-made.
+ del(wizard_mob.wear_suit)
+ del(wizard_mob.head)
+ del(wizard_mob.shoes)
+ del(wizard_mob.r_hand)
+ del(wizard_mob.r_store)
+ del(wizard_mob.l_store)
+
wizard_mob.equip_if_possible(new /obj/item/device/radio/headset(wizard_mob), wizard_mob.slot_ears)
wizard_mob.equip_if_possible(new /obj/item/clothing/under/lightpurple(wizard_mob), wizard_mob.slot_w_uniform)
wizard_mob.equip_if_possible(new /obj/item/clothing/shoes/sandal(wizard_mob), wizard_mob.slot_shoes)
@@ -281,6 +305,7 @@
dat += "Ethereal Jaunt (60)
"
dat += "Knock (10)
"
dat += "
"
+ dat += "Re-memorize Spells
"
user << browse(dat, "window=radio")
onclose(user, "radio")
return
@@ -372,6 +397,16 @@
usr.verbs += /client/proc/knock
usr.mind.special_verbs += /client/proc/knock
src.temp = "This spell opens nearby doors and does not require wizard garb."
+ if ("14")
+ for(var/area/wizard_station/A in world)
+ if(usr in A.contents)
+ src.uses = 5
+ usr.spellremove(usr)
+ src.temp = "All spells have been removed. You may now memorize a new set of spells."
+ break
+ else
+ src.temp = "You may only re-memorize spells whilst located inside the wizard sanctuary."
+ break
else
if (href_list["temp"])
src.temp = null
@@ -557,12 +592,42 @@
del(src)
return
+//OTHER PROCS
+
+//To batch-remove wizard spells. Linked to mind.dm.
+/mob/proc/spellremove(var/mob/M as mob)
+// ..()
+ if(M.verbs.len)
+ M.verbs -= /client/proc/jaunt
+ M.verbs -= /client/proc/magicmissile
+ M.verbs -= /client/proc/fireball
+ M.verbs -= /mob/proc/kill
+ M.verbs -= /mob/proc/tech
+ M.verbs -= /client/proc/smokecloud
+ M.verbs -= /client/proc/blind
+ M.verbs -= /client/proc/forcewall
+ M.verbs -= /mob/proc/teleport
+ M.verbs -= /client/proc/mutate
+ M.verbs -= /client/proc/knock
+ M.verbs -= /mob/proc/swap
+ if(M.mind && M.mind.special_verbs.len)
+ M.mind.special_verbs -= /client/proc/jaunt
+ M.mind.special_verbs -= /client/proc/magicmissile
+ M.mind.special_verbs -= /client/proc/fireball
+ M.mind.special_verbs -= /mob/proc/kill
+ M.mind.special_verbs -= /mob/proc/tech
+ M.mind.special_verbs -= /client/proc/smokecloud
+ M.mind.special_verbs -= /client/proc/blind
+ M.mind.special_verbs -= /client/proc/forcewall
+ M.mind.special_verbs -= /mob/proc/teleport
+ M.mind.special_verbs -= /client/proc/mutate
+ M.mind.special_verbs -= /client/proc/knock
+ M.mind.special_verbs -= /mob/proc/swap
+
/*Checks if the wizard can cast spells.
Made a proc so this is not repeated 14 (or more) times.*/
/mob/proc/casting()
- if(usr.stat)
- usr << "Not when you're incapicated."
- return 0
+//Removed the stat check because not all spells require clothing now.
if(!istype(usr:wear_suit, /obj/item/clothing/suit/wizrobe))
usr << "I don't feel strong enough without my robe."
return 0
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 5badaf6f083..992f301bb59 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -1326,44 +1326,6 @@
explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range)
message_admins("\blue [src.ckey] creating an admin explosion at [epicenter.loc].")
-/client/proc/make_cultist(var/mob/M in world) // -- TLE, modified by Urist
- set category = "Admin"
- set name = "Make Cultist"
- set desc = "Makes target a cultist"
- if(!wordtravel)
- runerandom()
- if(M)
- if(cultists.Find(M))
- return
- else
- if(alert("Spawn that person a tome?",,"Yes","No")=="Yes")
- M << "\red You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie. A tome, a message from your new master, appears on the ground."
- new /obj/item/weapon/tome(M.loc)
- else
- M << "\red You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie."
- var/glimpse=pick("1","2","3","4","5","6","7","8")
- switch(glimpse)
- if("1")
- M << "\red You remembered one thing from the glimpse... [wordtravel] is travel..."
- if("2")
- M << "\red You remembered one thing from the glimpse... [wordblood] is blood..."
- if("3")
- M << "\red You remembered one thing from the glimpse... [wordjoin] is join..."
- if("4")
- M << "\red You remembered one thing from the glimpse... [wordhell] is Hell..."
- if("5")
- M << "\red You remembered one thing from the glimpse... [worddestr] is destroy..."
- if("6")
- M << "\red You remembered one thing from the glimpse... [wordtech] is technology..."
- if("7")
- M << "\red You remembered one thing from the glimpse... [wordself] is self..."
- if("8")
- M << "\red You remembered one thing from the glimpse... [wordsee] is see..."
- cultists.Add(M)
- src << "Made [M] a cultist."
- if(ticker.mode.name == "cult")
- ticker.mode:cult += M.mind
-
/client/proc/check_words() // -- Urist
set category = "Special Verbs"
set name = "Check Rune Words"
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 7dd4d897a5b..44132bdf444 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -114,10 +114,6 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
returnval = call(procname)(arglist(lst)) // Pass the lst as an argument list to the proc
usr << "\blue Proc returned: [returnval ? returnval : "null"]"
-
-
-
-
/client/proc/Cell()
set category = "Debug"
set name = "Air Status in Location"
@@ -153,7 +149,6 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
else
alert("Invalid mob")
-
/client/proc/cmd_admin_alienize(var/mob/M in world)
set category = "Admin"
set name = "Make Alien"
@@ -195,6 +190,8 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
spawn(10)
M.absorbed_dna[M.real_name] = M.dna
M.make_changeling()
+ if(M.mind)
+ M.mind.special_role = "Changeling"
else
alert("Invalid mob")
@@ -214,6 +211,46 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.make_abomination()
*/
+/client/proc/make_cultist(var/mob/M in world) // -- TLE, modified by Urist
+ set category = "Admin"
+ set name = "Make Cultist"
+ set desc = "Makes target a cultist"
+ if(!wordtravel)
+ runerandom()
+ if(M)
+ if(cultists.Find(M))
+ return
+ else
+ if(alert("Spawn that person a tome?",,"Yes","No")=="Yes")
+ M << "\red You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie. A tome, a message from your new master, appears on the ground."
+ new /obj/item/weapon/tome(M.loc)
+ else
+ M << "\red You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie."
+ var/glimpse=pick("1","2","3","4","5","6","7","8")
+ switch(glimpse)
+ if("1")
+ M << "\red You remembered one thing from the glimpse... [wordtravel] is travel..."
+ if("2")
+ M << "\red You remembered one thing from the glimpse... [wordblood] is blood..."
+ if("3")
+ M << "\red You remembered one thing from the glimpse... [wordjoin] is join..."
+ if("4")
+ M << "\red You remembered one thing from the glimpse... [wordhell] is Hell..."
+ if("5")
+ M << "\red You remembered one thing from the glimpse... [worddestr] is destroy..."
+ if("6")
+ M << "\red You remembered one thing from the glimpse... [wordtech] is technology..."
+ if("7")
+ M << "\red You remembered one thing from the glimpse... [wordself] is self..."
+ if("8")
+ M << "\red You remembered one thing from the glimpse... [wordsee] is see..."
+ cultists.Add(M)
+ if(M.mind)
+ M.mind.special_role = "Cultist"
+ src << "Made [M] a cultist."
+ if(ticker.mode.name == "cult")
+ ticker.mode:cult += M.mind
+
/client/proc/cmd_debug_del_all()
set category = "Debug"
set name = "Del-All"
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 67b14da9054..788391fa3d7 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -290,8 +290,7 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
/*
If a guy was gibbed and you want to revive him, this is a good way to do so.
-Works kind of like entering the game with a new character. Character receives a new mind.
-Since gibbed traitors retain their mind through their ghost, I might add some functionality to bring them back.
+Works kind of like entering the game with a new character. Character receives a new mind if they didn't have one.
/N */
/client/proc/respawn_character()
set category = "Special Verbs"
@@ -303,18 +302,18 @@ Since gibbed traitors retain their mind through their ghost, I might add some fu
var/input = input(src, "Please specify which key will be respawned. Make sure their key is properly capitalized. That person will not retain their traitor/other status when respawned.", "Key", "")
if(!input)
return
- var/GNAME //To auto-copy the mob's name.
- var/GDEL //To properly delete the mob later on.
+
+ var/mob/dead/observer/G
+ var/mob/G_found
+
var/GKEY = "null"//To later check if a person was found or not.
- for(var/mob/dead/observer/G in world)
+
+ for(G in world)
if(G.client)
if(G.key==input)
- GNAME = G.real_name
- GDEL = G
+ G_found = G
GKEY = input
- goto NEXT//Stops processing once it finds a match.
-
- NEXT
+ break
if(GKEY == "null")
alert("There is no active key like that in the game or the person is not currently a ghost. Aborting command.")
@@ -322,31 +321,20 @@ Since gibbed traitors retain their mind through their ghost, I might add some fu
var/mob/living/carbon/human/new_character = new(src)
var/new_character_gender = MALE //to determine character's gender for few of the other lines.
+
// if(!preferences.preferences.savefile_load(GDEL, 0))
// if(alert("Please specify the character's gender.",,"Male","Female")=="Female")
// new_character_gender = FEMALE
if(alert("Please specify the character's gender.",,"Male","Female")=="Female")
new_character_gender = FEMALE
+
// else
// GDEL.preferences.preferences.savefile_load()
// GDEL.preferences.preferences.copy_to(new_character)
- var/RANK
- var/list/JOBLIST
- JOBLIST = list("Virologist","Chief Medical Officer","Research Director","Chief Engineer","Chief Engineer","Cargo Technician","Quartermaster","Lawyer","Librarian","Botanist","Roboticist","Chef","Barman","Atmospheric Technician","Head of Personnel","Head of Security","Scientist","Warden","Security Officer","Captain","Medical Doctor","Detective","Assistant","Station Engineer","Mime","Clown","Janitor","Chemist","Geneticist","Chaplain")
-
- TRYAGAIN
-
- var/input2 = input(src, "Please specify which job the character will be respawned as. Start with a capital, such as Assistant or Research Director. Leaving the box as blank will default to Assistant.", "Rank", "")
- if(!input2)
- RANK = "Assistant"
- else
- if(JOBLIST.Find(input2)==0)
- src << "That job is not valid. Check your spelling or leave the box as blank."
- goto TRYAGAIN
- else
- RANK = input2
+ var/RANK = input("Please specify which job the character will be respawned as.", "Assigned role") as null|anything in get_all_jobs()
+ if (!RANK) RANK = "Assistant"
var/spawn_here = pick(latejoin)//"JoinLate" is a landmark which is deleted on round start. So, latejoin has to be used instead.
new_character.gender = new_character_gender
@@ -364,19 +352,41 @@ Since gibbed traitors retain their mind through their ghost, I might add some fu
// new_character.preferences.update_preview_icon(new_character)
new_character.loc = spawn_here
- new_character.real_name = GNAME
+ new_character.real_name = G_found.name
+ new_character.name = G_found.name
message_admins("\blue [key_name_admin(usr)] has respawned [GKEY] as [new_character.name].", 1) //Here so it doesn't null client if an admin re-spawns themselves.
new_character.key = GKEY
-// preferences.copy_to(new_character)//Can't copy preferences as they are created on round start. Or loaded.
- new_character.dna.ready_dna(new_character)
-// new_character:ManifestLateSpawn()//That announces the character on all the systems.
- new_character.mind = new
- new_character.mind.key = GKEY
- new_character.mind.current = new_character
- new_character.mind.assigned_role = RANK
- new_character.Equip_Rank(RANK, joined_late=1)
- del(GDEL)
+// preferences.copy_to(new_character)//Can't copy preferences as they are created on round start. Or loaded.
+
+ new_character.dna.ready_dna(new_character)
+
+// new_character:ManifestLateSpawn()//That announces the character on all the systems.
+
+ if(G.mind)
+ new_character.mind = G_found.mind
+ new_character.mind.current = new_character
+ new_character.mind.assigned_role = RANK
+ else
+ new_character.mind = new
+ new_character.mind.key = GKEY
+ new_character.mind.current = new_character
+ new_character.mind.assigned_role = RANK
+
+ new_character.Equip_Rank(RANK, joined_late=1)
+ del(G)
+
+/* var/datum/game_mode/current_mode = ticker.mode
+ switch(new_character.mind.special_role)
+ if("Changeling")
+ var/datum/game_mode/changeling.grant_changeling_powers(new_character)
+ if("traitor")
+ var/datum/game_mode/traitor.equip_traitor(new_character)
+ if("Wizard"||"Fake Wizard")
+ var/datum/game_mode/new_character.loc = pick(wizardstart)
+ wizard.equip_wizard(new_character)
+ if("Syndicate")
+ var/datum/game_mode/nuclear.equip_syndicate(new_character)*/
/client/proc/cmd_admin_add_freeform_ai_law()
set category = "Fun"
diff --git a/code/names.dm b/code/names.dm
index 76f197b0705..5a92178a626 100644
--- a/code/names.dm
+++ b/code/names.dm
@@ -1,4 +1,6 @@
var/list/ai_names = dd_file2list("config/names/ai.txt")
+var/list/wizard_first = dd_file2list("config/names/wizardfirst.txt")
+var/list/wizard_second = dd_file2list("config/names/wizardsecond.txt")
var/list/commando_names = dd_file2list("config/names/death_commando.txt")
var/list/first_names_male = dd_file2list("config/names/first_male.txt")
var/list/first_names_female = dd_file2list("config/names/first_female.txt")
diff --git a/config/names/wizardfirst.txt b/config/names/wizardfirst.txt
new file mode 100644
index 00000000000..00ed4677d10
--- /dev/null
+++ b/config/names/wizardfirst.txt
@@ -0,0 +1,34 @@
+Jim
+Gulstaff
+Gandalf
+Grimm
+Mordenkainen
+Elminister
+Saruman
+Vaarsuvius
+Yoda
+Zul
+Nihilus
+Vecna
+Mogan
+Circe
+Prospero
+Raistlin
+Rasputin
+Tzeentch
+Khelben
+Dumbledor
+Houdini
+Terefi
+Urza
+Tenser
+Zagyg
+Mystryl
+Boccob
+Merlin
+Archchancellor
+Radagast
+Kreol
+Kaschei
+Lina
+Morgan
\ No newline at end of file
diff --git a/config/names/wizardsecond.txt b/config/names/wizardsecond.txt
new file mode 100644
index 00000000000..35244f2ba5c
--- /dev/null
+++ b/config/names/wizardsecond.txt
@@ -0,0 +1,36 @@
+the Powerful
+the Great
+the Magician
+the Wise
+the Seething
+the Amazing
+the Spiral King
+Darkmagic
+the White
+the Gray
+Shado
+the Sorcelator
+the Raven
+the Emperor
+the Brown
+Weatherwax
+the Destroyer
+the Deathless
+Yagg
+the Remorseful
+the Weeping
+the Unending
+the All Knowing
+Dark
+Smith
+the Conquerer
+the Unstoppable
+Gray
+of Void
+Unseen
+Darko
+Honko
+the Bandit Killer
+the Dragon Spooker
+Inverse
+le Fay
\ No newline at end of file