From e7de2de63bf96810cc54718a815caa74f0cb40a6 Mon Sep 17 00:00:00 2001 From: delizin Date: Sun, 9 Feb 2014 00:00:13 -0500 Subject: [PATCH] Delete char from player list upon obj deletion --- src/objects/models.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/objects/models.py b/src/objects/models.py index 0586d9168e..5f6e47803d 100644 --- a/src/objects/models.py +++ b/src/objects/models.py @@ -21,6 +21,7 @@ from django.conf import settings from src.typeclasses.models import (TypedObject, TagHandler, NickHandler, AliasHandler, AttributeHandler) from src.objects.manager import ObjectManager +from ev import managers from src.players.models import PlayerDB from src.commands.cmdsethandler import CmdSetHandler from src.commands import cmdhandler @@ -714,6 +715,18 @@ class ObjectDB(TypedObject): self.delete_iter += 1 + # If this is a character, delete it from the player's playable characters list + if _GA(self, 'locks').get("puppet"): + # Extract Player id + try: + pid = _GA(self, "locks").get("puppet") + pid = pid[pid.find("pid(")+4:] + pid = int(pid[:pid.find(")")]) + except ValueError: + return False + player = managers.players.get_id(pid) + player.db._playable_characters.remove(self) + # See if we need to kick the player off. for session in _GA(self, "sessions"):