mirror of
https://github.com/evennia/evennia.git
synced 2026-03-29 03:57:17 +02:00
Add move/move_here lock check to tel` command. Resolve #1579
This commit is contained in:
parent
2993fb8121
commit
e959e7a78f
2 changed files with 19 additions and 1 deletions
|
|
@ -106,6 +106,8 @@ Up requirements to Django 3.2+, Twisted 21+
|
|||
- Change `settings.COMMAND_DEFAULT_ARG_REGEX` default from `None` to a regex meaning that
|
||||
a space or `/` must separate the cmdname and args. This better fits common expectations.
|
||||
- Add confirmation question to `ban`/`unban` commands.
|
||||
- Add `move` and `move_here` to `tel` command to optionally allow to limit
|
||||
teleportation of an object or to a specific destination.
|
||||
|
||||
|
||||
### Evennia 0.9.5 (2019-2020)
|
||||
|
|
|
|||
|
|
@ -3356,6 +3356,13 @@ class CmdTeleport(COMMAND_DEFAULT_CLASS):
|
|||
|
||||
Teleports an object somewhere. If no object is given, you yourself are
|
||||
teleported to the target location.
|
||||
|
||||
To lock an object from being teleported, set its `move` lock, it will be
|
||||
checked with the caller. To block
|
||||
a destination from being teleported to, set the destination's `move_here`
|
||||
lock - it will be checked with the thing being teleported. Admins and
|
||||
higher permissions can always teleport.
|
||||
|
||||
"""
|
||||
|
||||
key = "tel"
|
||||
|
|
@ -3437,6 +3444,16 @@ class CmdTeleport(COMMAND_DEFAULT_CLASS):
|
|||
caller.msg("%s is already at %s." % (obj_to_teleport, destination))
|
||||
return
|
||||
|
||||
# check any move-locks
|
||||
if not (caller.permissions.check("Admin") or obj_to_teleport.access(caller, "move")):
|
||||
caller.msg(f"{obj_to_teleport} 'move'-lock blocks you from teleporting it anywhere.")
|
||||
return
|
||||
|
||||
if not (caller.permissions.check("Admin")
|
||||
or destination.access(obj_to_teleport, "move_here")):
|
||||
caller.msg(f"{destination} 'move_to'-lock blocks {obj_to_teleport} from moving there.")
|
||||
return
|
||||
|
||||
# try the teleport
|
||||
if not obj_to_teleport.location:
|
||||
# teleporting from none-location
|
||||
|
|
@ -3454,7 +3471,6 @@ class CmdTeleport(COMMAND_DEFAULT_CLASS):
|
|||
caller.msg("Teleportation failed.")
|
||||
|
||||
|
||||
|
||||
class CmdTag(COMMAND_DEFAULT_CLASS):
|
||||
"""
|
||||
handles the tags of an object
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue