diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index 97b5849224..4b4fed4ad1 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -1476,14 +1476,19 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): method is used. return_string (bool): If `True`, return only the singular form if count is 0,1 or the plural form otherwise. If `False` (default), return both forms as a tuple. + no_article (bool): If `True`, do not return an article if `count` is 1. Returns: tuple: This is a tuple `(str, str)` with the singular and plural forms of the key including the count. Examples: - :: - obj.get_numbered_name(3, looker, key="foo") -> ("a foo", "three foos") + :: + - obj.get_numbered_name(3, looker, key="foo") -> ("a foo", "three foos") + - obj.get_numbered_name(1, looker, key="Foobert", return_string=True) + -> "a Foobert" + - obj.get_numbered_name(1, looker, key="Foobert", return_string=True, no_article=True) + -> "Foobert" """ plural_category = "plural_key" @@ -1505,6 +1510,11 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): # look at 'an egg'. self.aliases.add(singular, category=plural_category) + if kwargs.get("no_article") and count == 1: + if kwargs.get("return_string"): + return key + return key, key + if kwargs.get("return_string"): return singular if count==1 else plural diff --git a/evennia/objects/tests.py b/evennia/objects/tests.py index a77b348d02..abc2adecdb 100644 --- a/evennia/objects/tests.py +++ b/evennia/objects/tests.py @@ -185,6 +185,11 @@ class DefaultObjectTest(BaseEvenniaTest): pattern, ) + def test_get_name_without_article(self): + self.assertEqual(self.obj1.get_numbered_name(1, self.char1, return_string=True), "an Obj") + self.assertEqual( + self.obj1.get_numbered_name(1, self.char1, return_string=True, no_article=True), "Obj" + ) class TestObjectManager(BaseEvenniaTest): "Test object manager methods"