ACR_CreatureBehavior.CreatureObject._EquipWeapon C# (CSharp) Method

_EquipWeapon() private method

private _EquipWeapon ( bool meleeWeapon = true ) : void
meleeWeapon bool
return void
        private void _EquipWeapon(bool meleeWeapon = true)
        {
            uint item = Script.GetItemInSlot(CLRScriptBase.INVENTORY_SLOT_RIGHTHAND, ObjectId);
            if ((Script.GetWeaponRanged(item) == CLRScriptBase.FALSE && !meleeWeapon) ||
                (Script.GetWeaponRanged(item) == CLRScriptBase.TRUE && meleeWeapon))
            {
                uint weapon = Script.GetItemInSlot(CLRScriptBase.INVENTORY_SLOT_RIGHTHAND, this.ObjectId);
                int weaponValue = 0;
                if(Script.GetIsObjectValid(weapon) == CLRScriptBase.TRUE) weaponValue = Script.GetGoldPieceValue(weapon);

                uint shield = Script.GetItemInSlot(CLRScriptBase.INVENTORY_SLOT_LEFTHAND, this.ObjectId);
                int shieldValue = 0;
                if(Script.GetIsObjectValid(shield) == CLRScriptBase.TRUE) shieldValue = Script.GetGoldPieceValue(shield);

                foreach (uint bagItem in Script.GetItemsInInventory(ObjectId))
                {
                    if(meleeWeapon && _GetIsMeleeWeapon(Script.GetBaseItemType(bagItem)))
                    {
                        if(_GetIsProficient(Script, bagItem) &&
                            weaponValue < Script.GetGoldPieceValue(bagItem))
                        {
                            weapon = bagItem;
                            weaponValue = Script.GetGoldPieceValue(bagItem);
                        }
                        if(Script.GetBaseItemType(bagItem) == CLRScriptBase.BASE_ITEM_SMALLSHIELD ||
                            Script.GetBaseItemType(bagItem) == CLRScriptBase.BASE_ITEM_LARGESHIELD ||
                            Script.GetBaseItemType(bagItem) == CLRScriptBase.BASE_ITEM_TOWERSHIELD)
                        {
                            if(shieldValue < Script.GetGoldPieceValue(bagItem))
                            {
                                shield = bagItem;
                                shieldValue = Script.GetGoldPieceValue(bagItem);
                            }
                        }
                    }
                    if (!meleeWeapon && Script.GetWeaponRanged(bagItem) == CLRScriptBase.TRUE)
                    {
                        if (_GetIsProficient(Script, bagItem) &&
                            weaponValue < Script.GetGoldPieceValue(bagItem))
                        {
                            weapon = bagItem;
                            weaponValue = Script.GetGoldPieceValue(bagItem);
                        }
                    }
                }
                if (Script.GetIsObjectValid(weapon) == CLRScriptBase.TRUE)
                {
                    Script.ActionEquipItem(weapon, CLRScriptBase.INVENTORY_SLOT_RIGHTHAND);
                    
                    if(_GetIsMeleeWeapon(Script.GetBaseItemType(weapon)))
                    {
                        int weaponSize = ALFA.Shared.Modules.InfoStore.BaseItems[Script.GetBaseItemType(weapon)].WeaponSize;
                        int creatureSize = Script.GetCreatureSize(this.ObjectId);
                        if(creatureSize > weaponSize)
                        {
                            if(Script.GetHasFeat(CLRScriptBase.FEAT_SHIELD_PROFICIENCY, this.ObjectId, CLRScriptBase.TRUE) == CLRScriptBase.TRUE)
                            {
                                Script.ActionEquipItem(shield, CLRScriptBase.INVENTORY_SLOT_LEFTHAND);
                            }
                        }
                    }
                }
            }
        }