public override bool FireEvent(Event E)
        {
            if (E.ID == "BeforeDie")
            {
                if (LastCat == null)
                {
                    return(true);
                }
                ParentObject.DirectMoveTo(LastCat, 0, true);
                GameObject Cat = GameObject.findById(LastCatID);
                if (Cat != null)
                {
                    ParentObject.DirectMoveTo(Cat.pPhysics.CurrentCell.GetFirstEmptyAdjacentCell(), 0, true);
                    Popup.Show("Right before your life begins to fade, you suddenly feel spirited away and find yourself before a feline friend ... at a cost.");
                }
                else
                {
                    LastCat = null;
                    Popup.Show("As you feel your life dwindle, your soul drifts towards where its astral tether once existed. But the feline is gone, and now, so are you.");
                    return(true);
                }
                ParentObject.SpatialDistortionBlip();
                if (ParentObject.HasStat("Hitpoints"))
                {
                    ParentObject.Statistics["Hitpoints"].Penalty = 0;
                    //AddPlayerMessage("You died.");
                }
                if (Level <= 1)
                {
                    if (Cat != null)
                    {
                        Cat.pBrain.GetAngryAt(ParentObject, -400);
                    }
                    ParentObject.GetPart <Mutations>().RemoveMutation(this);
                    Popup.Show("{{red|Your strange connection with cats has been severed.}}");
                }
                else
                {
                    Level = Level - 1;
                }

                return(false);
            }
            return(base.FireEvent(E));
        }