ID:2305993
 
Code:
mob/Login()
..()
var/species_type = input("Options:(Terran, Icelandic, Molten, Cat, or Human)", "Species") as text
if(src.client.mob == species_type)
return
var/char_name = input("Enter a name for your character.", "Name") as text
name = "<b>([species_type])</b> [char_name]"
icon = 'icons/skins.dmi'
switch(species_type)
if("Human")
icon_state = "human"
src.client.mob = new /mob/species/human
if("Terran")
icon_state = "terran_spider"
src.client.mob = new /mob/species/terran_spider
if("Icelandic")
icon_state = "ice_spider"
if("Molten")
icon_state = "lava_spider"
if("Cat")
icon_state = "cat"

turf/floor
icon = 'icons/flooring.dmi'
icon_state = "floor"

world
turf = /turf/floor


Problem description: Every time the game switches the client's mob to the new mob, it REDOES the login process. (I'm switching to new mobs because each mob has different verbs depending on their species.)

..() that means to continue try removing that.
In response to Zanoroku
Already tried that.
I already solved this problem for you in the last thread.

The reason I set world.mob to /mob/character_creation is so that /mob/character_creation's Login() proc wouldn't be inherited by the /mob children we set up for your playable races.

See this post for details on how to fix your problem:

http://www.byond.com/forum/?post=2305046#comment23407632

Ask questions if you don't understand something.
In response to Ter13
Went with what you said, got this--

world
mob = /mob/char_creation
turf = /turf/floor

turf/floor
icon = 'icons/flooring.dmi'
icon_state = "floor"

var
list/species_types = list("Terran"=/mob/species/terran_spider, "Human"=/mob/species/human)

mob/char_creation/Login()
var/char_species = input("Options:(Terran, Icelandic, Molten, Cat, or Human)", "Species") as anything in global.species_types
var/char_name = input("Enter a name for your character.", "Name") as text
var/mob/creating = new global.species_types[char_species]
creating.name = "<b>([species_types])</b> [char_name]"
icon = 'icons/skins.dmi'
creating.key = key


But when I run, and pick species/character name, I get this in the text box of the game--

runtime error: Cannot create objects of type /list.
proc name: Login (/mob/char_creation/Login)
usr: (src)
src: MisterLayne (/mob/char_creation)
src.loc: null
call stack:
MisterLayne (/mob/char_creation): Login()
mob/char_creation/Login()
var/char_species = input("Options:(Terran, Icelandic, Molten, Cat, or Human)", "Species") as anything in global.species_types
var/char_name = input("Enter a name for your character.", "Name") as text
var/mob/creating = global.species_types[char_species]
creating = new creating()
creating.name = "<b>([char_species])</b> [char_name]"
icon = 'icons/skins.dmi'
creating.key = key


Give that a shot.

Unfortunately BYOND's new() syntax is kinda shitty sometimes.
In response to Ter13
Worked perfectly, thanks! I'm doing this as a project for school-- If you see any errors in the code, please post it on the issues on my github for the code! GitHubCode