Esempio n. 1
0
        private int OnGetUseMonkAttackTables(void *pStats, int bForceUnarmed)
        {
            CNWSCreatureStats stats    = CNWSCreatureStats.FromPointer(pStats);
            CNWSCreature      creature = stats.m_pBaseCreature;

            int monkLevels = GetLevelByClass(stats, (uint)ClassType.Monk);

            if (monkLevels < 1 || !creature.GetUseMonkAbilities().ToBool())
            {
                return(false.ToInt());
            }

            CNWSItem mainWeapon = creature.m_pInventory.GetItemInSlot((uint)EquipmentSlot.RightHand);

            if (mainWeapon == null)
            {
                return(true.ToInt());
            }

            if (bForceUnarmed.ToBool())
            {
                return(false.ToInt());
            }

            uint mainWeaponType = mainWeapon.m_nBaseItem;

            if (mainWeaponType != (uint)BaseItem.Kama && !monkWeaponSet.Contains(mainWeapon.m_nBaseItem))
            {
                return(false.ToInt());
            }

            CNWSItem secondWeapon = creature.m_pInventory.GetItemInSlot((uint)EquipmentSlot.LeftHand);

            if (secondWeapon == null)
            {
                return(true.ToInt());
            }

            uint secondWeaponType = secondWeapon.m_nBaseItem;

            return((secondWeaponType is (uint)BaseItem.Kama or(uint) BaseItem.Torch || monkWeaponSet.Contains(secondWeaponType)).ToInt());
        }