diff --git a/code/game/verbs/sound.dm b/code/game/verbs/sound.dm
index 2e64eabf73b..0ba65de787d 100644
--- a/code/game/verbs/sound.dm
+++ b/code/game/verbs/sound.dm
@@ -15,6 +15,7 @@
return
/* why is something that only is usable in the lobby a mob verb?
+
/mob/verb/toggletitlemusic()
set category = "Special Verbs"
set name = "Toggle Pregame Music"
@@ -27,4 +28,4 @@
M << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // stop the jamsz
return
-*/
+*/
\ No newline at end of file
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index f4ddf4d83bb..cbbb5505e8d 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -214,6 +214,8 @@
observer.real_name = observer.name
observer.original_name = observer.name //Original name is only used in ghost chat! It is not to be edited by anything!
+ preferences.copy_to_observer(observer)
+
del(src)
return 1
diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm
index 07c5f9436fa..01ff30befdc 100644
--- a/code/modules/mob/new_player/preferences.dm
+++ b/code/modules/mob/new_player/preferences.dm
@@ -300,15 +300,21 @@ datum/preferences
dat += "[copytext(flavor_text, 1, 37)]..."
dat += "
"
- if(!jobban_isbanned(user, "Syndicate"))
+ if(jobban_isbanned(user, "Syndicate"))
+ dat += "You are banned from antagonist roles."
+ src.be_special = 0
+ else
var/n = 0
for (var/i in special_roles)
if(special_roles[i]) //if mode is available on the server
- dat += "Be [i]: [src.be_special&(1<
"
+ if(jobban_isbanned(user, i))
+ dat += "Be [i]: \[BANNED]
"
+ else if(i == "pai candidate")
+ if(jobban_isbanned(user, "pAI"))
+ dat += "Be [i]: \[BANNED]
"
+ else
+ dat += "Be [i]: [src.be_special&(1<
"
n++
- else
- dat += "You are banned from being Syndicate."
- src.be_special = 0
dat += "
"
// slot options
@@ -599,12 +605,23 @@ datum/preferences
switch(link_tags["real_name"])
if("input")
new_name = input(user, "Please select a name:", "Character Generation") as text
- var/list/bad_characters = list("_", "'", "\"", "<", ">", ";", "[", "]", "{", "}", "|", "\\")
+ var/list/bad_characters = list("_", "'", "\"", "<", ">", ";", "\[", "\]", "{", "}", "|", "\\","0","1","2","3","4","5","6","7","8","9")
for(var/c in bad_characters)
new_name = dd_replacetext(new_name, c, "")
if(!new_name || (new_name == "Unknown") || (new_name == "floor") || (new_name == "wall") || (new_name == "r-wall"))
- alert("Don't do this")
+ alert("Invalid name. Don't do that!")
return
+ if(length(new_name) >= 26)
+ alert("That name is too long.")
+ return
+
+ //Carn: To fix BYOND text-parsing errors caused by people using dumb capitalisation in their names.
+ var/tempname
+ for(var/N in dd_text2list(new_name, " "))
+ if(N && tempname) //if both aren't null strings
+ tempname += " "
+ tempname += capitalize(lowertext(N))
+ new_name = tempname
if("random")
randomize_name()
@@ -617,9 +634,9 @@ datum/preferences
if(link_tags["age"])
switch(link_tags["age"])
if("input")
- var/new_age = input(user, "Please select type in age: 20-45", "Character Generation") as num
+ var/new_age = input(user, "Please select type in age: 15-45", "Character Generation") as num
if(new_age)
- age = max(min(round(text2num(new_age)), 45), 20)
+ age = max(min(round(text2num(new_age)), 45), 15)
if("random")
age = rand (20, 45)
@@ -761,7 +778,8 @@ datum/preferences
UI = UI_OLD
if(link_tags["midis"])
- midis = (midis+1)%2
+ midis = !midis
+
if(link_tags["ghost_ears"])
ghost_ears = !ghost_ears
@@ -947,8 +965,6 @@ datum/preferences
backbag = 1 //Same as above
character.backbag = backbag
- character.underwear = underwear == 1 ? pick(1,2,3,4,5) : 0
-
character.used_skillpoints = used_skillpoints
character.skill_specialization = skill_specialization
character.skills = skills
@@ -959,11 +975,21 @@ datum/preferences
if(!safety)//To prevent run-time errors due to null datum when using randomize_appearance_for()
spawn(10)
if(character&&character.client)
- character.client.midis = midis
- character.client.ooccolor = ooccolor
- character.client.be_alien = be_special&BE_ALIEN
- character.client.be_pai = be_special&BE_PAI
- character.client.be_syndicate = be_special
+ setup_client(character.client)
+
+ proc/copy_to_observer(mob/dead/observer/character)
+ spawn(10)
+ if(character && character.client)
+ setup_client(character.client)
+
+ proc/setup_client(var/client/C)
+ if(C)
+ C.midis = src.midis
+ C.ooccolor = src.ooccolor
+ C.be_alien = be_special & BE_ALIEN
+ C.be_pai = be_special & BE_PAI
+ if(isnull(src.ghost_ears)) src.ghost_ears = 1 //There were problems where the default was null before someone saved their profile.
+ C.ghost_ears = src.ghost_ears
proc/copydisabilities(mob/living/carbon/human/character)
if(disabilities & 1)