Add teleport: and teleport_here: default locks to in-game entities. Resolve #3029

This commit is contained in:
Griatch 2023-02-25 19:58:12 +01:00
parent 2ad58051bb
commit a6df975624
5 changed files with 99 additions and 27 deletions

View file

@ -3,6 +3,9 @@
## Main ## Main
- Bug fix: Evtable options showed spurious empty lines if set without desc - Bug fix: Evtable options showed spurious empty lines if set without desc
- Usage fix: The `teleport:` and `teleport_here:` locks where checked in
`CmdTeleport`, but not actually set on any entities. These locks are now
set with defaults on all objects,characters,rooms and exits.
## Evennia 1.2.0 ## Evennia 1.2.0

View file

@ -1,5 +1,12 @@
# Changelog # Changelog
## Main
- Bug fix: Evtable options showed spurious empty lines if set without desc
- Usage fix: The `teleport:` and `teleport_here:` locks where checked in
`CmdTeleport`, but not actually set on any entities. These locks are now
set with defaults on all objects,characters,rooms and exits.
## Evennia 1.2.0 ## Evennia 1.2.0
- Bug fix: `TagHandler.get` did not consistently cast to string (aMiss-aWry) - Bug fix: `TagHandler.get` did not consistently cast to string (aMiss-aWry)

View file

@ -6,7 +6,6 @@ import re
from django.conf import settings from django.conf import settings
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.db.models import Max, Min, Q from django.db.models import Max, Min, Q
from evennia import InterruptCommand from evennia import InterruptCommand
from evennia.commands.cmdhandler import get_and_merge_cmdsets from evennia.commands.cmdhandler import get_and_merge_cmdsets
from evennia.locks.lockhandler import LockException from evennia.locks.lockhandler import LockException

View file

@ -13,7 +13,6 @@ from collections import defaultdict
import inflect import inflect
from django.conf import settings from django.conf import settings
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
from evennia.commands import cmdset from evennia.commands import cmdset
from evennia.commands.cmdsethandler import CmdSetHandler from evennia.commands.cmdsethandler import CmdSetHandler
from evennia.objects.manager import ObjectManager from evennia.objects.manager import ObjectManager
@ -1546,6 +1545,8 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase):
"call:true()", # allow to call commands on this object "call:true()", # allow to call commands on this object
"tell:perm(Admin)", # allow emits to this object "tell:perm(Admin)", # allow emits to this object
"puppet:pperm(Developer)", "puppet:pperm(Developer)",
"teleport:true()",
"teleport_here:true()",
] ]
) )
) # lock down puppeting only to staff by default ) # lock down puppeting only to staff by default
@ -2635,7 +2636,14 @@ class DefaultCharacter(DefaultObject):
""" """
super().basetype_setup() super().basetype_setup()
self.locks.add( self.locks.add(
";".join(["get:false()", "call:false()"]) # noone can pick up the character ";".join(
[
"get:false()",
"call:false()",
"teleport:perm(Admin)",
"teleport_here:perm(Admin)",
]
) # noone can pick up the character
) # no commands can be called on character from outside ) # no commands can be called on character from outside
# add the default cmdset # add the default cmdset
self.cmdset.add_default(settings.CMDSET_CHARACTER, persistent=True) self.cmdset.add_default(settings.CMDSET_CHARACTER, persistent=True)
@ -2862,7 +2870,7 @@ class DefaultRoom(DefaultObject):
super().basetype_setup() super().basetype_setup()
self.locks.add( self.locks.add(
";".join(["get:false()", "puppet:false()"]) ";".join(["get:false()", "puppet:false()", "teleport:false()", "teleport_here:true()"])
) # would be weird to puppet a room ... ) # would be weird to puppet a room ...
self.location = None self.location = None
@ -3078,6 +3086,8 @@ class DefaultExit(DefaultObject):
"puppet:false()", # would be weird to puppet an exit ... "puppet:false()", # would be weird to puppet an exit ...
"traverse:all()", # who can pass through exit by default "traverse:all()", # who can pass through exit by default
"get:false()", # noone can pick up the exit "get:false()", # noone can pick up the exit
"teleport:false()",
"teleport_here:false()",
] ]
) )
) )

View file

@ -10,7 +10,6 @@ from time import time
import mock import mock
from anything import Something from anything import Something
from django.test.utils import override_settings from django.test.utils import override_settings
from evennia.prototypes import menus as olc_menus from evennia.prototypes import menus as olc_menus
from evennia.prototypes import protfuncs as protofuncs from evennia.prototypes import protfuncs as protofuncs
from evennia.prototypes import prototypes as protlib from evennia.prototypes import prototypes as protlib
@ -116,6 +115,8 @@ class TestUtils(BaseEvenniaTest):
"examine:perm(Builder)", "examine:perm(Builder)",
"get:all()", "get:all()",
"puppet:pperm(Developer)", "puppet:pperm(Developer)",
"teleport:true()",
"teleport_here:true()",
"tell:perm(Admin)", "tell:perm(Admin)",
"view:all()", "view:all()",
] ]
@ -170,11 +171,21 @@ class TestUtils(BaseEvenniaTest):
"key": "Obj", "key": "Obj",
"home": Something, "home": Something,
"location": Something, "location": Something,
"locks": ( "locks": ";".join(
"call:true();control:perm(Developer);delete:perm(Admin);" [
"drop:holds();" "call:true()",
"edit:perm(Admin);examine:perm(Builder);get:all();" "control:perm(Developer)",
"puppet:pperm(Developer);tell:perm(Admin);view:all()" "delete:perm(Admin)",
"drop:holds()",
"edit:perm(Admin)",
"examine:perm(Builder)",
"get:all()",
"puppet:pperm(Developer)",
"teleport:true()",
"teleport_here:true()",
"tell:perm(Admin)",
"view:all()",
]
), ),
"prototype_desc": "Built from Obj", "prototype_desc": "Built from Obj",
"prototype_key": Something, "prototype_key": Something,
@ -192,11 +203,21 @@ class TestUtils(BaseEvenniaTest):
"home": Something, "home": Something,
"key": "Obj", "key": "Obj",
"location": Something, "location": Something,
"locks": ( "locks": ";".join(
"call:true();control:perm(Developer);delete:perm(Admin);" [
"drop:holds();" "call:true()",
"edit:perm(Admin);examine:perm(Builder);get:all();" "control:perm(Developer)",
"puppet:pperm(Developer);tell:perm(Admin);view:all()" "delete:perm(Admin)",
"drop:holds()",
"edit:perm(Admin)",
"examine:perm(Builder)",
"get:all()",
"puppet:pperm(Developer)",
"teleport:true()",
"teleport_here:true()",
"tell:perm(Admin)",
"view:all()",
]
), ),
"new": "new_val", "new": "new_val",
"permissions": ["Builder"], "permissions": ["Builder"],
@ -217,12 +238,38 @@ class TestUtils(BaseEvenniaTest):
"prototype_key": (Something, Something, "UPDATE"), "prototype_key": (Something, Something, "UPDATE"),
"location": (Something, Something, "KEEP"), "location": (Something, Something, "KEEP"),
"locks": ( "locks": (
"call:true();control:perm(Developer);delete:perm(Admin);" ";".join(
"drop:holds();edit:perm(Admin);examine:perm(Builder);" [
"get:all();puppet:pperm(Developer);tell:perm(Admin);view:all()", "call:true()",
"call:true();control:perm(Developer);delete:perm(Admin);drop:holds();" "control:perm(Developer)",
"edit:perm(Admin);examine:perm(Builder);get:all();" "delete:perm(Admin)",
"puppet:pperm(Developer);tell:perm(Admin);view:all()", "drop:holds()",
"edit:perm(Admin)",
"examine:perm(Builder)",
"get:all()",
"puppet:pperm(Developer)",
"teleport:true()",
"teleport_here:true()",
"tell:perm(Admin)",
"view:all()",
]
),
";".join(
[
"call:true()",
"control:perm(Developer)",
"delete:perm(Admin)",
"drop:holds()",
"edit:perm(Admin)",
"examine:perm(Builder)",
"get:all()",
"puppet:pperm(Developer)",
"teleport:true()",
"teleport_here:true()",
"tell:perm(Admin)",
"view:all()",
]
),
"KEEP", "KEEP",
), ),
"prototype_tags": (None, None, "KEEP"), "prototype_tags": (None, None, "KEEP"),
@ -303,6 +350,8 @@ class TestUtils(BaseEvenniaTest):
"examine:perm(Builder)", "examine:perm(Builder)",
"get:all()", "get:all()",
"puppet:pperm(Developer)", "puppet:pperm(Developer)",
"teleport:true()",
"teleport_here:true()",
"tell:perm(Admin)", "tell:perm(Admin)",
"view:all()", "view:all()",
] ]
@ -700,12 +749,16 @@ class TestMenuModule(BaseEvenniaTest):
"home": ("#2", "#2", "KEEP"), "home": ("#2", "#2", "KEEP"),
"key": ("TestChar", "TestChar", "KEEP"), "key": ("TestChar", "TestChar", "KEEP"),
"locks": ( "locks": (
(
"boot:false();call:false();control:perm(Developer);delete:false();" "boot:false();call:false();control:perm(Developer);delete:false();"
"edit:false();examine:perm(Developer);get:false();msg:all();" "edit:false();examine:perm(Developer);get:false();msg:all();"
"puppet:false();tell:perm(Admin);view:all()", "puppet:false();tell:perm(Admin);view:all()"
),
(
"boot:false();call:false();control:perm(Developer);delete:false();" "boot:false();call:false();control:perm(Developer);delete:false();"
"edit:false();examine:perm(Developer);get:false();msg:all();" "edit:false();examine:perm(Developer);get:false();msg:all();"
"puppet:false();tell:perm(Admin);view:all()", "puppet:false();tell:perm(Admin);view:all()"
),
"KEEP", "KEEP",
), ),
"permissions": {"developer": ("developer", "developer", "KEEP")}, "permissions": {"developer": ("developer", "developer", "KEEP")},