diff --git a/code/defines/obj/storage.dm b/code/defines/obj/storage.dm
index 508d42050b2..a5b2ce2cd12 100644
--- a/code/defines/obj/storage.dm
+++ b/code/defines/obj/storage.dm
@@ -192,6 +192,7 @@
w_class = 3.0
flags = FPRINT | TABLEPASS
var/mob/affecting = null
+ var/deity_name = "Christ"
/obj/item/weapon/storage/bible/booze
name = "bible"
diff --git a/code/game/jobs/jobprocs.dm b/code/game/jobs/jobprocs.dm
index 8f7c4dfba50..644e3817f0b 100644
--- a/code/game/jobs/jobprocs.dm
+++ b/code/game/jobs/jobprocs.dm
@@ -272,12 +272,39 @@
switch(rank)
if ("Chaplain")
- src.equip_if_possible(new /obj/item/weapon/storage/bible/booze(src), slot_l_hand)
+ var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible(src)
+ src.equip_if_possible(B, slot_l_hand)
src.equip_if_possible(new /obj/item/device/pda/chaplain(src), slot_belt)
src.equip_if_possible(new /obj/item/clothing/under/rank/chaplain(src), slot_w_uniform)
src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
//if(prob(15))
// src.see_invisible = 15 -- Doesn't work as see_invisible is reset every world cycle. -- Skie
+ //The two procs below allow the Chaplain to choose their religion. All it really does is change their bible.
+ spawn(0)
+ var/religion_name = "[religion_name()]"
+ var/new_religion = input(src, "You are the Chaplain. Would you like to change your religion?", "Name change", religion_name)
+
+ if (length(new_religion) == 0)
+ new_religion = religion_name
+
+ if (new_religion)
+ if (length(new_religion) >= 26)
+ new_religion = copytext(new_religion, 1, 26)
+ new_religion = dd_replacetext(new_religion, ">", "'")
+ B.name = "The Holy Book of [new_religion]"
+
+ spawn(1)
+ var/deity_name = "Christ"
+ var/new_deity = input(src, "Would you like to change your deity? Default is Christ.", "Name change", deity_name)
+
+ if ( (length(new_deity) == 0) || (new_deity == "Christ") )
+ new_deity = deity_name
+
+ if(new_deity)
+ if (length(new_deity) >= 26)
+ new_deity = copytext(new_deity, 1, 26)
+ new_deity = dd_replacetext(new_deity, ">", "'")
+ B.deity_name = new_deity
if ("Geneticist")
src.equip_if_possible(new /obj/item/device/radio/headset/headset_med (src), slot_ears) // -- TLE
diff --git a/code/game/objects/storage/bible.dm b/code/game/objects/storage/bible.dm
index 200c08a7e28..5f2f543a476 100644
--- a/code/game/objects/storage/bible.dm
+++ b/code/game/objects/storage/bible.dm
@@ -52,7 +52,7 @@
if ((istype(M, /mob/living/carbon/human) && prob(60)))
bless(M)
for(var/mob/O in viewers(M, null))
- O.show_message(text("\red [] heals [] with the power of Christ!", user, M), 1)
+ O.show_message(text("\red [] heals [] with the power of [src.deity_name]!", user, M), 1)
M << "\red May the power of Christ compel you to be healed!"
playsound(src.loc, "punch", 25, 1, -1)
else
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 788391fa3d7..2285bcebced 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -291,6 +291,8 @@ 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 if they didn't have one.
+Traitors and the like can also be revived with the previous role mostly intact.
+TO DO: actually integrate random appearance and player preference save.
/N */
/client/proc/respawn_character()
set category = "Special Verbs"
@@ -322,71 +324,65 @@ Works kind of like entering the game with a new character. Character receives a
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 = 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
-// var/datum/preferences/preferences
-// new_character.preferences.randomize_name(new_character)
-// new_character.preferences = new
-// new_character.preferences.randomize_name = new_character
-// new_character.name = preferences.real_name
-// new_character.real_name = new_character.name
-// randomize_name(new_character)
-// randomize_skin_tone()
-// new_character.preferences.randomize_hair_color(var/target = "hair")
-// new_character.preferences.randomize_eyes_color(new_character)
-// new_character.preferences.update_preview_icon(new_character)
+// if( !( call(/datum/preferences/proc/savefile_load)(G_found, 0) ) )Run time errors.
+// call(/datum/preferences/proc/copy_to)(new_character)
+
+ 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"
new_character.loc = spawn_here
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.
-
- if(G.mind)
+ if(G_found.mind)
new_character.mind = G_found.mind
new_character.mind.current = new_character
new_character.mind.assigned_role = RANK
+ new_character.mind.memory = ""//Memory erased so it doesn't get clunkered up with useless info.
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
+ //These procs function with the assumption that the mob is already a traitor based on their mind.
+ //So all they do is re-equip the mob with powers and/or items. Or not, if they have no special role.
switch(new_character.mind.special_role)
if("Changeling")
- var/datum/game_mode/changeling.grant_changeling_powers(new_character)
+ new_character.Equip_Rank(RANK, joined_late=1)
+ new_character.make_changeling()
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)
+ new_character.Equip_Rank(RANK, joined_late=1)
+ ticker.mode.equip_traitor(new_character)
+ if("Wizard","Fake Wizard")
+ new_character.loc = pick(wizardstart)
+ new_character.spellremove(new_character)//to properly clear their special verbs in mind.
+ ticker.mode.equip_wizard(new_character)
if("Syndicate")
- var/datum/game_mode/nuclear.equip_syndicate(new_character)*/
+ var/obj/landmark/synd_spawn = locate("landmark*Syndicate-Spawn")
+ if(synd_spawn)
+ new_character.loc = get_turf(synd_spawn)
+ ticker.mode:equip_syndicate(new_character)
+ else
+ new_character.Equip_Rank(RANK, joined_late=1)
+
+ //Announces the character on all the systems.
+ if(alert("Should this character be added to various databases, such as medical records? Click yes only if the character was observing prior. Wizards and nuke operatives will not be added.",,"No","Yes")=="Yes")
+ call(/mob/new_player/proc/ManifestLateSpawn)(new_character)
+
+ new_character.key = GKEY
+ new_character << "You have been respawned. Enjoy the game."
+ del(G_found)
+
+ message_admins("\blue [key_name_admin(src)] has respawned [GKEY] as [new_character.name].", 1)
/client/proc/cmd_admin_add_freeform_ai_law()
set category = "Fun"
diff --git a/config/names/wizardfirst.txt b/config/names/wizardfirst.txt
index 00ed4677d10..408ae3b447e 100644
--- a/config/names/wizardfirst.txt
+++ b/config/names/wizardfirst.txt
@@ -31,4 +31,6 @@ Radagast
Kreol
Kaschei
Lina
-Morgan
\ No newline at end of file
+Morgan
+Alatar
+Palando
\ No newline at end of file
diff --git a/config/names/wizardsecond.txt b/config/names/wizardsecond.txt
index 35244f2ba5c..d1e2e734862 100644
--- a/config/names/wizardsecond.txt
+++ b/config/names/wizardsecond.txt
@@ -33,4 +33,7 @@ Honko
the Bandit Killer
the Dragon Spooker
Inverse
-le Fay
\ No newline at end of file
+le Fay
+the Blue
+the Red
+the Benevolent
\ No newline at end of file