Чтобы было понятно, что происходит. Существуют 2 стрелы - страх и погибель. Диспел и Брича.
1) Брича без проверок снимает несколько эффектов по списку:
Greater spell mantle
Premonition
Spell mantle
Shadow shield
Greater stoneskin
Ethereal visage
Globe of invulnerability
Energy buffer
Greater sanctuary
Minor globe of invulnerability
Spell resistance
Stoneskin
Lesser spell mantle
Mestil's acid sheath
Mind blank
Elemental shield
Protection from spells
Protection from elements
Resist elements
Death armor
Ghostly visage
Endure elements
Shadow conjuration (mage armor)
Negative energy protection
Sanctuary
Mage armor
Stone bones
Shield
Shield of faith
Lesser mind blank
Ironguts
Resistance
Она не снимает те спеллы, которые не входят в этот список. Например зеленка, клара, фое, трусиинг - бричами никак не снять.
2) Диспелл
На страхе вальдера диспел, который работает по формуле [20 + (лвл арканарчера или лвл ренджера-10)] против [12 + кастерлвл мага].
Возьмем, например, рейнджера 35-4-1. 20+25=45, не диспелит кастеров с 33+ лвлкастера!
Или арканарчер 29-10-1. 20+29=49, не диспелит 37+ лвлкастера!
С другой стороны, SpellsDispelMagic имеет параметр int bAll = TRUE (по умолчанию), который не задан, а значит If bAll is TRUE then EffectDispelMagicBest is called and will dispel the highest level spell effect (up to two spells) on them up to nCasterLevel.
Открываем EffectDispelMagicBest - Dispel magic Best checks are meant to be 20 + nCasterLevel - кубик сразу 20! Выходит 35 рейнджера никак не задевает 33 кастерлвевел, но с 32 кастерлевела снимает по 2 спелла со стрелы!
Итого, предлагаю, во-первых, поставить bAll = FALSE, во вторых, к nCasterLevel в case 17: spellsDispelMagic(oTarget, nCasterLevel, eVis, eImpact); добавлять, например, по пятерику, и посмотреть, что получится!
*Все данные из открытых источников -
http://www.nwnlexicon.com/index.php?title=Main_Page и Арена & Тест для Сиалы v57 full version.mod