Ejemplo n.º 1
0
        private CNWSItem?GetEquippedWeapon(CNWSCreature creature, bool offHand)
        {
            CNWSItem weapon;

            if (offHand)
            {
                weapon = creature.m_pInventory.GetItemInSlot((uint)EquipmentSlot.LeftHand);
                if (weapon == null)
                {
                    CNWSItem main = creature.m_pInventory.GetItemInSlot((uint)EquipmentSlot.RightHand);
                    if (main != null)
                    {
                        CNWBaseItem baseWeapon = NWNXLib.Rules().m_pBaseItemArray.GetBaseItem((int)main.m_nBaseItem);
                        if (baseWeapon != null && baseWeapon.m_nWeaponWield == 8)
                        {
                            weapon = main;
                        }
                    }
                }
            }
            else
            {
                weapon = creature.m_pInventory.GetItemInSlot((uint)EquipmentSlot.RightHand);
            }

            return(weapon);
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
 internal NwBaseItem(uint baseItemId, CNWBaseItem baseItemInfo)
 {
     Id           = baseItemId;
     BaseItemInfo = baseItemInfo;
 }