public static void AddWeapon(BaseItem.WeaponModelType model, GameObject go, Vector3 offset, Vector3 rotation, Vector3 tip, float Scale)
        {
            try
            {
                prefabs.Add((int)model, go);
                go.transform.localRotation = new Quaternion(0.4f, -0.6f, -0.6f, 0.4f);
                go.transform.localPosition = new Vector3(0.0f, 0.0f, -0.8f);
                go.transform.Rotate(rotation, Space.Self);
                go.transform.localPosition += offset;
                go.transform.localScale     = Vector3.one * Scale;
                if (CustomWeapon.trailMaterial == null)
                {
                    CustomWeapon.trailMaterial = new Material(Shader.Find("Unlit/Transparent"))
                    {
                        color       = new Color(1, 0.5f, 0.25f, 0.4f),
                        mainTexture = Texture2D.whiteTexture
                    };
                }

                prefabDatas.Add((int)model, new CustomWeaponPrefabData(model, offset, rotation, tip, Scale, go));
                go.SetActive(false);
            }
            catch (System.Exception e)
            {
                ModAPI.Console.Write("adding weapon error\n" + e.ToString());
            }
        }
        public static void AddWeapon(BaseItem.WeaponModelType model, int mesh, Material material, Vector3 offset, Vector3 rotation, Vector3 tip, float Scale)
        {
            try
            {
                GameObject go = new GameObject();
                prefabs.Add((int)model, go);
                Renderer renderer = go.AddComponent <MeshRenderer>();
                renderer.material = material;
                go.AddComponent <MeshFilter>().mesh = Res.ResourceLoader.instance.LoadedMeshes[mesh];
                go.transform.localRotation          = new Quaternion(0.4f, -0.6f, -0.6f, 0.4f);
                go.transform.localPosition          = new Vector3(0.0f, 0.0f, -0.8f);//+ new Vector3(-0.26f, 1.4f, -1.255f);
                go.transform.Rotate(rotation, Space.Self);
                go.transform.localPosition += offset;
                go.transform.localScale     = Vector3.one * Scale;
                if (CustomWeapon.trailMaterial == null)
                {
                    CustomWeapon.trailMaterial = new Material(Shader.Find("Unlit/Transparent"))
                    {
                        color       = new Color(1, 0.5f, 0.25f, 0.4f),
                        mainTexture = Texture2D.whiteTexture
                    };
                }

                prefabDatas.Add((int)model, new CustomWeaponPrefabData(model, offset, rotation, tip, Scale, go));
                go.SetActive(false);
            }
            catch (System.Exception e)
            {
                ModAPI.Console.Write("adding weapon error\n" + e.ToString());
            }
        }
 public CustomWeaponPrefabData(BaseItem.WeaponModelType model, Vector3 offset, Vector3 rotation, Vector3 tip, float scale, GameObject g)
 {
     this.model    = model;
     this.offset   = offset;
     this.rotation = rotation;
     this.tip      = tip;
     Scale         = scale;
     this.obj      = g;
 }
Example #4
0
 public CustomWeapon(BaseItem.WeaponModelType model, GameObject obj, TrailRenderer trail, Vector3 offset, Vector3 rotation, float scale = 1)
 {
     this.damage          = 6;
     this.swingspeed      = 1;
     this.tiredswingspeed = 1;
     this.smashDamage     = 15;
     this.treeDamage      = 0;
     this.staminaDrain    = 8;
     this.blockTreeCut    = false;
     this.offset          = offset;
     this.rotation        = rotation;
     ColliderScale        = 1;
     Scale      = scale;
     this.obj   = obj;
     this.trail = trail;
     InitializeCustomWeapon();
     PlayerInventoryMod.customWeapons.Add(model, this);
 }
Example #5
0
 public CustomWeapon(BaseItem.WeaponModelType model, GameObject obj, Vector3 offset, Vector3 rotation, float scale = 1)
 {
     this.damage          = 6;
     this.swingspeed      = 1;
     this.tiredswingspeed = 1;
     this.smashDamage     = 15;
     this.treeDamage      = 0;
     this.staminaDrain    = 8;
     this.blockTreeCut    = false;
     this.offset          = offset;
     this.rotation        = rotation;
     ColliderScale        = 1;
     Scale    = scale;
     this.obj = obj;
     obj.transform.localRotation = Quaternion.identity;
     obj.transform.Rotate(rotation, Space.Self);
     obj.transform.localPosition = offset;
     obj.transform.localScale    = Vector3.one * Scale;
     PlayerInventoryMod.customWeapons.Add(model, this);
 }
Example #6
0
 public CustomWeapon(BaseItem.WeaponModelType model, int mesh, Material material, Vector3 offset, Vector3 rotation, Vector3 tip, float scale = 1)
 {
     this.damage          = 6;
     this.swingspeed      = 1;
     this.tiredswingspeed = 1;
     this.smashDamage     = 15;
     this.treeDamage      = 0;
     this.staminaDrain    = 8;
     this.blockTreeCut    = false;
     this.mesh            = Res.ResourceLoader.instance.LoadedMeshes[mesh];
     this.offset          = offset;
     this.rotation        = rotation;
     this.material        = material;
     this.tipPosition     = tip;
     ColliderScale        = 1;
     Scale = scale;
     CreateGameObject();
     InitializeCustomWeapon();
     PlayerInventoryMod.customWeapons.Add(model, this);
 }
 public CustomWeapon(BaseItem.WeaponModelType model, int mesh, Material material, Vector3 offset, Vector3 rotation, Vector3 tip, float colliderScale = 1, float scale = 1, float damage = 5, float smashDamage = 15, float swingspeed = 1, float triedswingspeed = 1, float staminaDrain = 6, bool noTreeCut = false, float treeDamage = 1)
 {
     this.damage          = damage;
     this.swingspeed      = swingspeed;
     this.tiredswingspeed = triedswingspeed;
     this.smashDamage     = smashDamage;
     this.treeDamage      = treeDamage;
     this.staminaDrain    = staminaDrain;
     this.canChopTrees    = noTreeCut;
     this.mesh            = Res.ResourceLoader.instance.LoadedMeshes[mesh];
     this.offset          = offset;
     this.rotation        = rotation;
     this.material        = material;
     this.tipPosition     = tip;
     ColliderScale        = colliderScale;
     Scale = scale;
     CreateGameObject();
     InitializeCustomWeapon();
     PlayerInventoryMod.customWeapons.Add(model, this);
 }
        protected override bool Equip(InventoryItemView itemView, bool pickedUpFromWorld)
        {
            if (itemView != null)
            {
                EquippedModel = BaseItem.WeaponModelType.None;
                if (itemView._heldWeaponInfo.transform.parent.name == "AxePlaneHeld")
                {
                    if (!SetupComplete)
                    {
                        try
                        {
                            if (instance == null)
                            {
                                instance = this;
                            }

                            //ModAPI.Log.Write("SETUP: Custom weapons");
                            //ModAPI.Log.Write("small axe: " + itemView._heldWeaponInfo.smallAxe);
                            //ModAPI.Log.Write("allowBodyCut: " + itemView._heldWeaponInfo.allowBodyCut);
                            //ModAPI.Log.Write("animSpeed: " + itemView._heldWeaponInfo.animSpeed);
                            //ModAPI.Log.Write("animTiredSpeed: " + itemView._heldWeaponInfo.animTiredSpeed);
                            //ModAPI.Log.Write("blockDamagePercent: " + itemView._heldWeaponInfo.blockDamagePercent);
                            //ModAPI.Log.Write("blockStaminaDrain: " + itemView._heldWeaponInfo.blockStaminaDrain);
                            //ModAPI.Log.Write("chainSaw: " + itemView._heldWeaponInfo.chainSaw);
                            //ModAPI.Log.Write("canDoGroundAxeChop: " + itemView._heldWeaponInfo.canDoGroundAxeChop);
                            //ModAPI.Log.Write("doSingleArmBlock: " + itemView._heldWeaponInfo.doSingleArmBlock);
                            //ModAPI.Log.Write("fireStick: " + itemView._heldWeaponInfo.fireStick);
                            //ModAPI.Log.Write("machete: " + itemView._heldWeaponInfo.machete);
                            //ModAPI.Log.Write("noBodyCut: " + itemView._heldWeaponInfo.noBodyCut);
                            //ModAPI.Log.Write("noTreeCut: " + itemView._heldWeaponInfo.noTreeCut);
                            //ModAPI.Log.Write("pushForce: " + itemView._heldWeaponInfo.pushForce);
                            //ModAPI.Log.Write("repairTool: " + itemView._heldWeaponInfo.repairTool);
                            //ModAPI.Log.Write("rock: " + itemView._heldWeaponInfo.rock);
                            //ModAPI.Log.Write("shell: " + itemView._heldWeaponInfo.shell);
                            //ModAPI.Log.Write("soundDetectRange: " + itemView._heldWeaponInfo.soundDetectRange);
                            //ModAPI.Log.Write("spear: " + itemView._heldWeaponInfo.spear);
                            //ModAPI.Log.Write("staminaDrain: " + itemView._heldWeaponInfo.staminaDrain);
                            //ModAPI.Log.Write("stick: " + itemView._heldWeaponInfo.stick);
                            //ModAPI.Log.Write("tiredSpeed: " + itemView._heldWeaponInfo.tiredSpeed);
                            //ModAPI.Log.Write("treeDamage: " + itemView._heldWeaponInfo.treeDamage);
                            //ModAPI.Log.Write("weaponDamage: " + itemView._heldWeaponInfo.weaponDamage);
                            //ModAPI.Log.Write("weaponRange: " + itemView._heldWeaponInfo.weaponRange);
                            //ModAPI.Log.Write("weaponSpeed: " + itemView._heldWeaponInfo.weaponSpeed);
                            //ModAPI.Log.Write("weaponAudio name: " + itemView._heldWeaponInfo.weaponAudio.name);


                            //item id is 80 for plane axe
                            //collider dimensions:
                            //(3.1, 1.6, 0.5) size
                            //(1.1, 0.4, 0.0) center

                            SetupComplete = true;
                            customWeapons.Clear();
                            originalPlaneAxe      = itemView;
                            originalPlaneAxeModel = itemView._heldWeaponInfo.transform.parent.GetChild(2).gameObject;
                            originalRotation      = originalPlaneAxeModel.transform.localRotation;
                            OriginalOffset        = originalPlaneAxeModel.transform.localPosition;
                            originalParrent       = originalPlaneAxeModel.transform.parent;
                            OriginalTreeDmg       = itemView._heldWeaponInfo.treeDamage;
                            originalMesh          = originalPlaneAxeModel.GetComponent <MeshFilter>().mesh;
                            noMesh = new Mesh();

                            //Creating custom weapons---------
                            CreateCustomWeapons();
                        }
                        catch (System.Exception eee)
                        {
                            ModAPI.Log.Write("Error with setting up custom weaponry " + eee.ToString());
                        }
                    }
                    if (ToEquipWeaponType != BaseItem.WeaponModelType.None)
                    {
                        //ModAPI.Console.Write("Equipping custom weapon " + CustomEquipModel.ToString());
                        EquippedModel = ToEquipWeaponType;
                        try
                        {
                            foreach (CustomWeapon item in customWeapons.Values)
                            {
                                item.obj.SetActive(false);
                            }
                            CustomWeapon cw = customWeapons[ToEquipWeaponType];
                            cw.obj.SetActive(true);
                            itemView._heldWeaponInfo.weaponSpeed                   = itemView._heldWeaponInfo.baseWeaponSpeed * cw.swingspeed;
                            itemView._heldWeaponInfo.tiredSpeed                    = itemView._heldWeaponInfo.baseTiredSpeed * cw.triedswingspeed;
                            itemView._heldWeaponInfo.smashDamage                   = cw.smashDamage;
                            itemView._heldWeaponInfo.weaponDamage                  = cw.damage;
                            itemView._heldWeaponInfo.treeDamage                    = cw.treeDamage;
                            itemView._heldWeaponInfo.weaponRange                   = cw.ColliderScale * 3;
                            itemView._heldWeaponInfo.staminaDrain                  = cw.staminaDrain;
                            itemView._heldWeaponInfo.noTreeCut                     = cw.canChopTrees;
                            itemView._heldWeaponInfo.transform.localScale          = Vector3.one * cw.ColliderScale;
                            originalPlaneAxeModel.GetComponent <MeshFilter>().mesh = noMesh;
                        }
                        catch (System.Exception exc)
                        {
                            ModAPI.Log.Write("Error with EQUIPPING custom weaponry " + exc.ToString());
                        }
                    }
                    else
                    {
                        //ModAPI.Console.Write("EQUIPPING normal plane axe");

                        itemView._heldWeaponInfo.transform.parent.GetChild(2).gameObject.SetActive(true);
                        foreach (CustomWeapon item in customWeapons.Values)
                        {
                            item.obj.SetActive(false);
                        }
                        itemView._heldWeaponInfo.weaponSpeed  = itemView._heldWeaponInfo.baseWeaponSpeed;
                        itemView._heldWeaponInfo.tiredSpeed   = itemView._heldWeaponInfo.baseTiredSpeed;
                        itemView._heldWeaponInfo.smashDamage  = itemView._heldWeaponInfo.baseSmashDamage;
                        itemView._heldWeaponInfo.weaponDamage = itemView._heldWeaponInfo.baseWeaponDamage;
                        itemView._heldWeaponInfo.treeDamage   = OriginalTreeDmg;
                        itemView._heldWeaponInfo.weaponRange  = itemView._heldWeaponInfo.baseWeaponRange;
                        itemView._heldWeaponInfo.staminaDrain = itemView._heldWeaponInfo.baseStaminaDrain;
                        itemView._heldWeaponInfo.noTreeCut    = false;

                        itemView._heldWeaponInfo.transform.localScale          = Vector3.one * 0.6f;
                        originalPlaneAxeModel.GetComponent <MeshFilter>().mesh = originalMesh;
                    }
                }
            }

            return(base.Equip(itemView, pickedUpFromWorld));
        }
Example #9
0
        protected override bool Equip(InventoryItemView itemView, bool pickedUpFromWorld)
        {
            if (!ModSettings.IsDedicated)
            {
                if (itemView != null)
                {
                    EquippedModel = BaseItem.WeaponModelType.None;
                    if (itemView._heldWeaponInfo.transform.parent.name == "AxePlaneHeld")
                    {
                        if (ModReferences.rightHandTransform == null)
                        {
                            try
                            {
                                ModReferences.rightHandTransform = itemView._heldWeaponInfo.transform.parent.gameObject.transform.parent.transform;

                                Debug.LogWarning(ModReferences.rightHandTransform.name);
                            }
                            catch (System.Exception e)
                            {
                                Debug.LogWarning(e.ToString());
                            }
                        }



                        if (!SetupComplete)
                        {
                            try
                            {
                                if (instance == null)
                                {
                                    instance = this;
                                }
                                SetupComplete = true;
                                customWeapons.Clear();
                                originalPlaneAxe      = itemView;
                                originalPlaneAxeModel = itemView._heldWeaponInfo.transform.parent.GetChild(2).gameObject;
                                originalRotation      = originalPlaneAxeModel.transform.localRotation;
                                OriginalOffset        = originalPlaneAxeModel.transform.localPosition;
                                originalParrent       = originalPlaneAxeModel.transform.parent;
                                OriginalTreeDmg       = itemView._heldWeaponInfo.treeDamage;
                                originalMesh          = originalPlaneAxeModel.GetComponent <MeshFilter>().mesh;
                                noMesh = new Mesh();

                                //Creating custom weapons---------
                                CreateCustomWeapons();
                            }
                            catch (System.Exception eee)
                            {
                                ModAPI.Log.Write("Error with setting up custom weaponry " + eee.ToString());
                            }
                        }
                        if (ToEquipWeaponType != BaseItem.WeaponModelType.None)
                        {
                            EquippedModel = ToEquipWeaponType;
                            try
                            {
                                foreach (CustomWeapon item in customWeapons.Values)
                                {
                                    item.obj.SetActive(false);
                                }
                                CustomWeapon cw = customWeapons[ToEquipWeaponType];
                                cw.obj.SetActive(true);
                                itemView._heldWeaponInfo.weaponSpeed                   = itemView._heldWeaponInfo.baseWeaponSpeed * cw.swingspeed;
                                itemView._heldWeaponInfo.tiredSpeed                    = itemView._heldWeaponInfo.baseTiredSpeed * cw.tiredswingspeed;
                                itemView._heldWeaponInfo.smashDamage                   = cw.smashDamage;
                                itemView._heldWeaponInfo.weaponDamage                  = cw.damage;
                                itemView._heldWeaponInfo.treeDamage                    = cw.treeDamage;
                                itemView._heldWeaponInfo.weaponRange                   = cw.ColliderScale * 3;
                                itemView._heldWeaponInfo.staminaDrain                  = cw.staminaDrain;
                                itemView._heldWeaponInfo.noTreeCut                     = cw.canChopTrees;
                                itemView._heldWeaponInfo.transform.localScale          = Vector3.one * cw.ColliderScale;
                                originalPlaneAxeModel.GetComponent <MeshFilter>().mesh = noMesh;
                            }
                            catch (System.Exception exc)
                            {
                                ModAPI.Log.Write("Error with EQUIPPING custom weaponry " + exc.ToString());
                            }
                        }
                        else
                        {
                            itemView._heldWeaponInfo.transform.parent.GetChild(2).gameObject.SetActive(true);
                            foreach (CustomWeapon item in customWeapons.Values)
                            {
                                item.obj.SetActive(false);
                            }
                            itemView._heldWeaponInfo.weaponSpeed  = itemView._heldWeaponInfo.baseWeaponSpeed;
                            itemView._heldWeaponInfo.tiredSpeed   = itemView._heldWeaponInfo.baseTiredSpeed;
                            itemView._heldWeaponInfo.smashDamage  = itemView._heldWeaponInfo.baseSmashDamage;
                            itemView._heldWeaponInfo.weaponDamage = itemView._heldWeaponInfo.baseWeaponDamage;
                            itemView._heldWeaponInfo.treeDamage   = OriginalTreeDmg;
                            itemView._heldWeaponInfo.weaponRange  = itemView._heldWeaponInfo.baseWeaponRange;
                            itemView._heldWeaponInfo.staminaDrain = itemView._heldWeaponInfo.baseStaminaDrain;
                            itemView._heldWeaponInfo.noTreeCut    = false;

                            itemView._heldWeaponInfo.transform.localScale          = Vector3.one * 0.6f;
                            originalPlaneAxeModel.GetComponent <MeshFilter>().mesh = originalMesh;
                        }
                    }
                }
            }
            return(base.Equip(itemView, pickedUpFromWorld));
        }
Example #10
0
        protected override bool Equip(InventoryItemView itemView, bool pickedUpFromWorld)
        {
            if (!ModSettings.IsDedicated)
            {
                if (GreatBow.instance != null)
                {
                    GreatBow.instance.SetActive(false);
                }
                if (itemView != null)
                {
                    EquippedModel = BaseItem.WeaponModelType.None;
                    if (itemView._heldWeaponInfo.transform.parent.name == "AxePlaneHeld")
                    {
                        if (BoltNetwork.isRunning)
                        {
                            using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream())
                            {
                                using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream))
                                {
                                    w.Write(28);
                                    w.Write(ModReferences.ThisPlayerID);
                                    w.Write((int)PlayerInventoryMod.ToEquipWeaponType);
                                    w.Close();
                                }
                                ChampionsOfForest.Network.NetworkManager.SendLine(answerStream.ToArray(), ChampionsOfForest.Network.NetworkManager.Target.Others);
                                answerStream.Close();
                            }
                        }


                        if (ModReferences.rightHandTransform == null)
                        {
                            try
                            {
                                ModReferences.rightHandTransform = itemView._heldWeaponInfo.transform.parent.gameObject.transform.parent.transform;
                            }
                            catch (System.Exception)
                            {
                            }
                        }



                        if (!SetupComplete)
                        {
                            try
                            {
                                if (instance == null)
                                {
                                    instance = this;
                                }
                                SetupComplete = true;
                                customWeapons.Clear();
                                originalPlaneAxe      = itemView;
                                originalPlaneAxeModel = itemView._heldWeaponInfo.transform.parent.GetChild(2).gameObject;
                                originalRotation      = originalPlaneAxeModel.transform.localRotation;
                                OriginalOffset        = originalPlaneAxeModel.transform.localPosition;
                                originalParrent       = originalPlaneAxeModel.transform.parent;
                                OriginalTreeDmg       = itemView._heldWeaponInfo.treeDamage;
                                originalMesh          = originalPlaneAxeModel.GetComponent <MeshFilter>().mesh;
                                noMesh = new Mesh();


                                //Creating custom weapons---------
                                CreateCustomWeapons();
                            }
                            catch (System.Exception eee)
                            {
                                ModAPI.Log.Write("Error with setting up custom weaponry " + eee.ToString());
                            }
                        }
                        if (ToEquipWeaponType != BaseItem.WeaponModelType.None)
                        {
                            EquippedModel = ToEquipWeaponType;
                            try
                            {
                                foreach (CustomWeapon item in customWeapons.Values)
                                {
                                    item.obj.SetActive(false);
                                }
                                CustomWeapon cw = customWeapons[ToEquipWeaponType];
                                cw.obj.SetActive(true);
                                itemView._heldWeaponInfo.weaponSpeed                   = itemView._heldWeaponInfo.baseWeaponSpeed * cw.swingspeed;
                                itemView._heldWeaponInfo.tiredSpeed                    = itemView._heldWeaponInfo.baseTiredSpeed * cw.tiredswingspeed;
                                itemView._heldWeaponInfo.smashDamage                   = cw.smashDamage;
                                itemView._heldWeaponInfo.weaponDamage                  = cw.damage;
                                itemView._heldWeaponInfo.treeDamage                    = cw.treeDamage;
                                itemView._heldWeaponInfo.weaponRange                   = cw.ColliderScale * 3;
                                itemView._heldWeaponInfo.staminaDrain                  = cw.staminaDrain;
                                itemView._heldWeaponInfo.noTreeCut                     = cw.blockTreeCut;
                                itemView._heldWeaponInfo.transform.localScale          = Vector3.one * cw.ColliderScale;
                                originalPlaneAxeModel.GetComponent <MeshFilter>().mesh = noMesh;
                            }
                            catch (System.Exception exc)
                            {
                                ModAPI.Log.Write("Error with EQUIPPING custom weaponry " + exc.ToString());
                            }
                        }
                        else
                        {
                            itemView._heldWeaponInfo.transform.parent.GetChild(2).gameObject.SetActive(true);
                            foreach (CustomWeapon item in customWeapons.Values)
                            {
                                item.obj.SetActive(false);
                            }
                            itemView._heldWeaponInfo.weaponSpeed  = itemView._heldWeaponInfo.baseWeaponSpeed;
                            itemView._heldWeaponInfo.tiredSpeed   = itemView._heldWeaponInfo.baseTiredSpeed;
                            itemView._heldWeaponInfo.smashDamage  = itemView._heldWeaponInfo.baseSmashDamage;
                            itemView._heldWeaponInfo.weaponDamage = itemView._heldWeaponInfo.baseWeaponDamage;
                            itemView._heldWeaponInfo.treeDamage   = OriginalTreeDmg;
                            itemView._heldWeaponInfo.weaponRange  = itemView._heldWeaponInfo.baseWeaponRange;
                            itemView._heldWeaponInfo.staminaDrain = itemView._heldWeaponInfo.baseStaminaDrain;
                            itemView._heldWeaponInfo.noTreeCut    = false;

                            itemView._heldWeaponInfo.transform.localScale          = Vector3.one * 0.6f;
                            originalPlaneAxeModel.GetComponent <MeshFilter>().mesh = originalMesh;
                        }
                    }
                    else if (BoltNetwork.isRunning)
                    {
                        using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream())
                        {
                            using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream))
                            {
                                w.Write(28);
                                w.Write(ModReferences.ThisPlayerID);
                                w.Write(0);
                                w.Close();
                            }
                            ChampionsOfForest.Network.NetworkManager.SendLine(answerStream.ToArray(), ChampionsOfForest.Network.NetworkManager.Target.Others);
                            answerStream.Close();
                        }
                    }
                }
            }
            return(base.Equip(itemView, pickedUpFromWorld));
        }
        protected override bool Equip(InventoryItemView itemView, bool pickedUpFromWorld)
        {
            COTFEvents.Instance.OnWeaponEquip.Invoke();
            Spells.ActiveSpellManager.Instance.OnWeaponEquipped();
            if (!ModSettings.IsDedicated)
            {
                if (GreatBow.instance != null)
                {
                    GreatBow.instance.SetActive(false);
                }
                if (ToEquipWeaponType == BaseItem.WeaponModelType.None)
                {
                    foreach (CustomWeapon item in customWeapons.Values)
                    {
                        item.obj.SetActive(false);
                        item.objectToHide?.SetActive(true);
                    }
                }
                if (itemView != null)
                {
                    if (EquippedModel != BaseItem.WeaponModelType.None)
                    {
                        customWeapons[EquippedModel].objectToHide?.SetActive(true);
                    }

                    EquippedModel = BaseItem.WeaponModelType.None;

                    //Send network event to display a custom weapon for other players
                    if (BoltNetwork.isRunning && ToEquipWeaponType != BaseItem.WeaponModelType.None)
                    {
                        using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream())
                        {
                            using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream))
                            {
                                w.Write(28);
                                w.Write(ModReferences.ThisPlayerID);
                                w.Write((int)ToEquipWeaponType);
                                w.Close();
                            }
                            Network.NetworkManager.SendLine(answerStream.ToArray(), Network.NetworkManager.Target.Others);
                            answerStream.Close();
                        }
                    }


                    if (itemView.gameObject.name == "axePlane_Inv")
                    {
                        if (ToEquipWeaponType != BaseItem.WeaponModelType.None)
                        {
                            try
                            {
                                foreach (CustomWeapon item in customWeapons.Values)
                                {
                                    item.obj.SetActive(false);
                                }
                                CustomWeapon cw = customWeapons[ToEquipWeaponType];
                                cw.obj.SetActive(true);
                                itemView._heldWeaponInfo.weaponSpeed          = itemView._heldWeaponInfo.baseWeaponSpeed * cw.swingspeed;
                                itemView._heldWeaponInfo.tiredSpeed           = itemView._heldWeaponInfo.baseTiredSpeed * cw.tiredswingspeed;
                                itemView._heldWeaponInfo.smashDamage          = cw.smashDamage;
                                itemView._heldWeaponInfo.weaponDamage         = cw.damage;
                                itemView._heldWeaponInfo.treeDamage           = cw.treeDamage;
                                itemView._heldWeaponInfo.weaponRange          = cw.ColliderScale * 3;
                                itemView._heldWeaponInfo.staminaDrain         = cw.staminaDrain;
                                itemView._heldWeaponInfo.noTreeCut            = cw.blockTreeCut;
                                itemView._heldWeaponInfo.spear                = cw.spearType;
                                itemView._heldWeaponInfo.transform.localScale = Vector3.one * cw.ColliderScale;
                                cw.objectToHide?.SetActive(false);
                                originalPlaneAxeModel.GetComponent <MeshFilter>().mesh = noMesh;
                            }
                            catch (System.Exception exc)
                            {
                                ModAPI.Log.Write("Error with EQUIPPING custom weaponry " + exc.ToString());
                            }
                            EquippedModel = ToEquipWeaponType;
                        }
                        else
                        //equip the base plane axe
                        {
                            itemView._heldWeaponInfo.transform.parent.GetChild(2).gameObject.SetActive(true);
                            foreach (CustomWeapon item in customWeapons.Values)
                            {
                                item.obj.SetActive(false);
                            }
                            itemView._heldWeaponInfo.weaponSpeed                   = itemView._heldWeaponInfo.baseWeaponSpeed;
                            itemView._heldWeaponInfo.tiredSpeed                    = itemView._heldWeaponInfo.baseTiredSpeed;
                            itemView._heldWeaponInfo.smashDamage                   = itemView._heldWeaponInfo.baseSmashDamage;
                            itemView._heldWeaponInfo.weaponDamage                  = itemView._heldWeaponInfo.baseWeaponDamage;
                            itemView._heldWeaponInfo.treeDamage                    = 1;
                            itemView._heldWeaponInfo.weaponRange                   = itemView._heldWeaponInfo.baseWeaponRange;
                            itemView._heldWeaponInfo.staminaDrain                  = itemView._heldWeaponInfo.baseStaminaDrain;
                            itemView._heldWeaponInfo.noTreeCut                     = false;
                            itemView._heldWeaponInfo.transform.localScale          = Vector3.one * 0.6f;
                            originalPlaneAxeModel.GetComponent <MeshFilter>().mesh = originalMesh;
                        }
                    }
                    else if (itemView == _itemViews[158])                       //spear
                    {
                        if (ToEquipWeaponType == BaseItem.WeaponModelType.Polearm)
                        {
                            EquippedModel = ToEquipWeaponType;
                            try
                            {
                                foreach (CustomWeapon item in customWeapons.Values)
                                {
                                    item.obj.SetActive(false);
                                }
                                CustomWeapon cw = customWeapons[ToEquipWeaponType];
                                cw.obj.SetActive(true);
                                itemView._heldWeaponInfo.weaponSpeed              = itemView._heldWeaponInfo.baseWeaponSpeed * cw.swingspeed;
                                itemView._heldWeaponInfo.tiredSpeed               = itemView._heldWeaponInfo.baseTiredSpeed * cw.tiredswingspeed;
                                itemView._heldWeaponInfo.smashDamage              = cw.smashDamage;
                                itemView._heldWeaponInfo.weaponDamage             = cw.damage;
                                itemView._heldWeaponInfo.treeDamage               = cw.treeDamage;
                                itemView._heldWeaponInfo.weaponRange              = cw.ColliderScale * 3;
                                itemView._heldWeaponInfo.staminaDrain             = cw.staminaDrain;
                                itemView._heldWeaponInfo.noTreeCut                = cw.blockTreeCut;
                                itemView._heldWeaponInfo.spear                    = cw.spearType;
                                cw.objectToHide.GetComponent <Renderer>().enabled = false;
                            }
                            catch (System.Exception exc)
                            {
                                ModAPI.Log.Write("Error with EQUIPPING custom weaponry " + exc.ToString());
                            }
                        }
                        else
                        {
                            foreach (CustomWeapon item in customWeapons.Values)
                            {
                                item.obj.SetActive(false);
                            }
                            itemView._heldWeaponInfo.weaponSpeed  = itemView._heldWeaponInfo.baseWeaponSpeed;
                            itemView._heldWeaponInfo.tiredSpeed   = itemView._heldWeaponInfo.baseTiredSpeed;
                            itemView._heldWeaponInfo.smashDamage  = itemView._heldWeaponInfo.baseSmashDamage;
                            itemView._heldWeaponInfo.weaponDamage = itemView._heldWeaponInfo.baseWeaponDamage;
                            itemView._heldWeaponInfo.weaponRange  = itemView._heldWeaponInfo.baseWeaponRange;
                            itemView._heldWeaponInfo.staminaDrain = itemView._heldWeaponInfo.baseStaminaDrain;
                            itemView._heldWeaponInfo.noTreeCut    = false;
                            itemView._heldWeaponInfo.spear        = true;
                            customWeapons[BaseItem.WeaponModelType.Polearm].objectToHide.GetComponent <Renderer>().enabled = true;
                        }
                    }
                }
            }
            return(base.Equip(itemView, pickedUpFromWorld));
        }