public override bool FireEvent(Event E)
        {
            if (E.ID == "MutationAdded")
            {
                Body pBody = ParentObject.GetPart("Body") as Body;
                if (pBody != null)
                {
                    BodyPart Part = pBody.GetPartByManager(AdditionsManagerID);
                    if (Part != null)
                    {
                        ParentObject.FireEvent(Event.New("CommandForceUnequipObject", "BodyPart", Part));
                        if (BaseTail == null)
                        {
                            BaseTail = GameObject.create("BaseThickTail");
                        }

                        Armor armor = BaseTail.GetPart("Armor") as Armor;
                        armor.WornOn = Part.Type;
                        Event @event = Event.New("CommandForceEquipObject");
                        @event.SetParameter("Object", BaseTail);
                        @event.SetParameter("BodyPart", Part);
                        @event.SetSilent(Silent: true);
                        ParentObject.FireEvent(@event);
                    }
                }
                if (ParentObject.HasObjectInInventory("BaseThickTail"))
                {
                    ParentObject.FindObjectInInventory("BaseThickTail").Destroy(null, true, false);
                }
            }
            return(base.FireEvent(E));
        }
        public void DismissPsiWeapon()
        {
            Zone ParentsCurrentZone = ParentObject.CurrentZone;

            if (ParentsCurrentZone.findObjectById(PsiWeaponsID) != null && !ParentObject.HasObjectInInventory(PsiWeaponsID) || !ParentObject.HasEquippedObject(PsiWeaponsID))
            {
                // AddPlayerMessage("Dismissing Weapon");
                GameObject PsiWeaponInZone = ParentsCurrentZone.findObjectById(PsiWeaponsID);

                // AddPlayerMessage("Finding: " + PsiWeaponsID);

                var ParentsInventory = ParentObject.Inventory;
                var WeaponInInvo     = ParentsInventory.GetObjects();
                var ParentsBodySlots = ParentObject.Body.GetBody();
                var ParentsHands     = ParentsBodySlots.GetPartByName("Hand");

                ParentObject.FireEvent(Event.New("CommandForceUnequipObject", "BodyPart", ParentsHands));

                if (ParentsBodySlots.IsItemEquippedOnLimbType(PsiWeaponInZone, "Hand"))
                {
                    // AddPlayerMessage("Dismissing getting Obj in Hands for: " + PsiWeaponInZone);
                    PsiWeaponInZone.ForceUnequipAndRemove(true);

                    ParentsInventory.RemoveObject(PsiWeaponInZone);

                    XDidY(PsiWeaponInZone, "disappear", null, null, null, null);
                    if (WeaponCounter > 0)
                    {
                        --WeaponCounter;
                    }
                }
                else if (ParentsInventory.HasObject(PsiWeaponInZone))
                {
                    ParentsInventory.RemoveObject(PsiWeaponInZone);
                    // AddPlayerMessage("Dismissing getting Obj in inv for: " + PsiWeaponInZone);
                    if (WeaponCounter > 0)
                    {
                        --WeaponCounter;
                    }
                }
                else if (ParentsCurrentZone.findObjectById(PsiWeaponsID) != null)
                {
                    if (PsiWeaponInZone.CurrentCell != null)
                    {
                        DidX("disappear", null, null, null, null, PsiWeaponInZone);
                        PsiWeaponInZone.CurrentCell.Splash("{{M|*}}");
                        PsiWeaponInZone.Destroy();
                        if (WeaponCounter > 0)
                        {
                            --WeaponCounter;
                        }
                    }
                }
                else
                {
                    AddPlayerMessage("There are no weapons to dismiss.");
                }
            }
            else
            {
                AddPlayerMessage("There are no weapons to dismiss.");
            }
        }