Moved much of @ic functionality into puppet_object.
This commit is contained in:
parent
27d2b1ac42
commit
e25d8569bb
3 changed files with 11 additions and 30 deletions
|
|
@ -249,30 +249,6 @@ class CmdIC(MuxPlayerCommand):
|
||||||
else:
|
else:
|
||||||
self.msg("That is not a valid character choice.")
|
self.msg("That is not a valid character choice.")
|
||||||
return
|
return
|
||||||
# permission checks
|
|
||||||
if player.get_puppet(sessid) == new_character:
|
|
||||||
self.msg("{RYou already act as {c%s{n." % new_character.name)
|
|
||||||
return
|
|
||||||
if new_character.player:
|
|
||||||
# may not puppet an already puppeted character
|
|
||||||
if new_character.sessid.count() and new_character.player == player:
|
|
||||||
# as a safeguard we allow "taking over" chars from your own sessions.
|
|
||||||
if MULTISESSION_MODE in (1, 3):
|
|
||||||
txt = "{c%s{n{G is now shared from another of your sessions.{n"
|
|
||||||
txt2 = "Sharing {c%s{n with another of your sessions."
|
|
||||||
else:
|
|
||||||
txt = "{c%s{n{R is now acted from another of your sessions.{n"
|
|
||||||
txt2 = "Taking over {c%s{n from another of your sessions."
|
|
||||||
player.unpuppet_object(new_character.sessid.get())
|
|
||||||
player.msg(txt % (new_character.name), sessid=new_character.sessid.get())
|
|
||||||
self.msg(txt2 % new_character.name)
|
|
||||||
elif new_character.player != player and new_character.player.is_connected:
|
|
||||||
self.msg("{c%s{r is already acted by another player.{n" % new_character.name)
|
|
||||||
return
|
|
||||||
if not new_character.access(player, "puppet"):
|
|
||||||
# main acccess check
|
|
||||||
self.msg("{rYou may not become %s.{n" % new_character.name)
|
|
||||||
return
|
|
||||||
if player.puppet_object(sessid, new_character):
|
if player.puppet_object(sessid, new_character):
|
||||||
player.db._last_puppet = new_character
|
player.db._last_puppet = new_character
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -182,12 +182,15 @@ class DefaultPlayer(PlayerDB):
|
||||||
if self.get_puppet(sessid) == obj:
|
if self.get_puppet(sessid) == obj:
|
||||||
# already puppeting this object
|
# already puppeting this object
|
||||||
return
|
return
|
||||||
if obj.player:
|
if not obj.access(self, 'puppet'):
|
||||||
|
# no access
|
||||||
|
self.msg("You don't have permission to puppet '%s'." % obj.key)
|
||||||
|
return
|
||||||
|
if normal_mode and obj.player:
|
||||||
# object already puppeted
|
# object already puppeted
|
||||||
if obj.player == self:
|
if obj.player == self:
|
||||||
if obj.sessid.count():
|
if obj.sessid.count():
|
||||||
# we may take over another of our sessions
|
# we may take over another of our sessions
|
||||||
self.unpuppet_object(obj.sessid.get())
|
|
||||||
# output messages to the affected sessions
|
# output messages to the affected sessions
|
||||||
if _MULTISESSION_MODE in (1, 3):
|
if _MULTISESSION_MODE in (1, 3):
|
||||||
txt1 = "{c%s{n{G is now shared from another of your sessions.{n"
|
txt1 = "{c%s{n{G is now shared from another of your sessions.{n"
|
||||||
|
|
@ -197,12 +200,11 @@ class DefaultPlayer(PlayerDB):
|
||||||
txt2 = "Taking over {c%s{n from another of your sessions."
|
txt2 = "Taking over {c%s{n from another of your sessions."
|
||||||
self.msg(txt1 % obj.name, sessid=obj.sessid.get())
|
self.msg(txt1 % obj.name, sessid=obj.sessid.get())
|
||||||
self.msg(txt2 % obj.name, sessid=sessid)
|
self.msg(txt2 % obj.name, sessid=sessid)
|
||||||
|
self.unpuppet_object(obj.sessid.get())
|
||||||
elif obj.player.is_connected:
|
elif obj.player.is_connected:
|
||||||
# controlled by another player
|
# controlled by another player
|
||||||
|
self.msg("{R{c%s{R is already puppeted by another Player.")
|
||||||
return
|
return
|
||||||
if not obj.access(self, 'puppet'):
|
|
||||||
# no access
|
|
||||||
return
|
|
||||||
|
|
||||||
# do the puppeting
|
# do the puppeting
|
||||||
if normal_mode and session.puppet:
|
if normal_mode and session.puppet:
|
||||||
|
|
@ -238,7 +240,10 @@ class DefaultPlayer(PlayerDB):
|
||||||
session = self.get_session(sessid)
|
session = self.get_session(sessid)
|
||||||
if not session:
|
if not session:
|
||||||
return False
|
return False
|
||||||
|
session = make_iter(session)[0]
|
||||||
|
print "unpuppet, session:", session, session.puppet
|
||||||
obj = hasattr(session, "puppet") and session.puppet or None
|
obj = hasattr(session, "puppet") and session.puppet or None
|
||||||
|
print "unpuppet, obj:", obj
|
||||||
if not obj:
|
if not obj:
|
||||||
return False
|
return False
|
||||||
# do the disconnect, but only if we are the last session to puppet
|
# do the disconnect, but only if we are the last session to puppet
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ from datetime import datetime
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
#from evennia.scripts.models import ScriptDB
|
#from evennia.scripts.models import ScriptDB
|
||||||
from evennia.comms.models import ChannelDB
|
from evennia.comms.models import ChannelDB
|
||||||
from evennia.utils import logger, utils
|
from evennia.utils import logger
|
||||||
from evennia.utils.inlinefunc import parse_inlinefunc
|
from evennia.utils.inlinefunc import parse_inlinefunc
|
||||||
from evennia.utils.utils import make_iter
|
from evennia.utils.utils import make_iter
|
||||||
from evennia.commands.cmdhandler import cmdhandler
|
from evennia.commands.cmdhandler import cmdhandler
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue