Пример #1
0
        private float OnMaxAttackRange(void *pCreature, uint oidTarget, int bBaseValue, int bPassiveRange)
        {
            CNWSCreature creature     = CNWSCreature.FromPointer(pCreature);
            CNWSItem     equippedItem = creature.m_pInventory.GetItemInSlot((uint)EquipmentSlot.RightHand);

            if (equippedItem != null)
            {
                uint        baseItemType = equippedItem.m_nBaseItem;
                CNWBaseItem baseItem     = NWNXLib.Rules().m_pBaseItemArray.GetBaseItem((int)baseItemType);
                if (baseItem != null && baseItem.m_nWeaponRanged > 0 && maxRangedAttackDistanceOverrideMap.TryGetValue(baseItemType, out MaxRangedAttackDistanceOverride distanceOverride))
                {
                    return(bPassiveRange.ToBool() ? distanceOverride.MaxRangedPassiveAttackDistance : distanceOverride.MaxRangedAttackDistance);
                }
            }

            return(creature.DesiredAttackRange(oidTarget, bBaseValue) + 1.5f);
        }