public override bool FireEvent(Event E)
        {
            if (E.ID == "WeaponAfterAttack" || E.ID == "WeaponAfterAttackMissed")
            {
                if (ParentObject.EquippedProperlyBy() != OriginalOwner)
                {
                    SwingsRemaining--;
                    if (SwingsRemaining <= 0)
                    {
                        var ParentsPsiMar = PsiHolder().GetPart <Psychomateriartis>();

                        GameObject equipped = ParentObject.Equipped;
                        DidX("disappear", null, null, null, null, equipped);
                        ParentObject.ForceUnequipRemoveAndRemoveContents(Silent: true);
                        ParentObject.Destroy();
                        ParentsPsiMar.WeaponCounter -= 1;
                        if (equipped != null && equipped.IsValid() && !equipped.IsPlayer() && equipped.pBrain != null)
                        {
                            equipped.pBrain.PerformReequip();
                        }
                    }
                }
            }
            else if ((E.ID == "SyncMutationLevels" || E.ID == "AfterLevelGainedEarly"))
            {
                // AddPlayerMessage("Sync Mutation or Level Gained early, Psionics Props update fire");
                UpdatePsionicProperties();
            }
            else if (E.ID == "PsionicWeaponManifestedEvent")
            {
                var ParentsPsiMar = PsiHolder().GetPart <Psychomateriartis>();

                // var ColorSelected = E.GetStringParameter("ColorChoice");
                var WeaponManifested = E.GetGameObjectParameter("ManifestedWeapon");

                string newName = Popup.AskString("Give your bonded-weapon a name.", "", 99);
                if (!String.IsNullOrEmpty(newName))
                {
                    WeaponManifested.DisplayName = "{{psionic|psionic}} " + newName;
                    WeaponManifested.SetIntProperty("ProperNoun", 1);
                    ParentObject.id = ParentsPsiMar.PsiWeaponsID;
                }

                // WeaponManifested.pRender.TileColor = ParentsPsiMar.GetWeaponTileColor($"&{ColorSelected}");
                // WeaponManifested.pRender.ColorString = ParentsPsiMar.GetWeaponTileColor($"&{ColorSelected}");
            }
            else if (E.ID == "EndTurn")
            {
                // AddPlayerMessage("EndTurnCheck, current weapons ID: " + ParentObject.id);
            }

            return(base.FireEvent(E));
        }