diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index 43c2dcc6fe..bc9f946415 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -2076,9 +2076,10 @@ class DefaultCharacter(DefaultObject): try: # Check to make sure account does not have too many chars - if len(account.characters) >= settings.MAX_NR_CHARACTERS: - errors.append("There are too many characters associated with this account.") - return obj, errors + if account: + if len(account.characters) >= settings.MAX_NR_CHARACTERS: + errors.append("There are too many characters associated with this account.") + return obj, errors # Create the Character obj = create.create_object(**kwargs) diff --git a/evennia/objects/tests.py b/evennia/objects/tests.py index 1f84466686..29bb292c8f 100644 --- a/evennia/objects/tests.py +++ b/evennia/objects/tests.py @@ -32,6 +32,14 @@ class DefaultObjectTest(EvenniaTest): self.assertEqual(description, obj.db.desc) self.assertEqual(obj.db.creator_ip, self.ip) self.assertEqual(obj.db_home, self.room1) + + def test_character_create_noaccount(self): + obj, errors = DefaultCharacter.create( + "oscar", None, home=self.room1.dbref + ) + self.assertTrue(obj, errors) + self.assertFalse(errors, errors) + self.assertEqual(obj.db_home, self.room1) def test_room_create(self): description = "A dimly-lit alley behind the local Chinese restaurant."