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);
}
}
}
}
}
}