MSFD Управление и тестирование заклинаний
GetSpell, "Spell_ID" (returns Boolean/short)
If ( Player->GetSpell, "heal companion" == 1 )
Возвращает «истину», если у объекта есть Spell_ID в инвентаре.
Тем не менее, это, похоже, работает не для всех типов заклинаний.
Способности и другие заклинания, относящиеся к расе/знаку рождения, не регистрируются этой функцией, а только те, что располагаются в главной части окна заклинаний.
Пример смотри ниже.
GetSpellEffects, "Spell_ID" (returns Boolean/short) Существует также функция RemoveSpellEffects “Spell_ID”, которая удаляет все эффекты принадлежащие заклинанию Spell_ID. При этом, даже если вы вызвали эту функцию, эффекты останутся висеть на объекте до начала следующего фрейма, то есть скрипт, следующий за тем, где RemoveSpellEffects была вызвана, все равно обнаружит заклинание Spell_ID с помощью GetSpellEffects. Кроме того, если вы удалите характеристику с помощью RemoveSpellEffects, то добавить ее снова уже не получиться. Так что для это цели используйте RemoveSpell (Прим. Gwathlobal)
if ( Player->GetSpellEffects, "flame" == 1 )
Возвращает «истину», если Spell_ID наложен на вызывающий объект.
Следующее может быть добавлено в скрипт "trap_script", обсуждавшийся в главе "Кастование заклинаний" выше:
if ( Player->GetSpellEffects, "flame" == 1 )
MessageBox "Вас подожгли."
endif
Это любимая возможность добавлять новые эффекты ("spell effects").
Создается простенькое заклинание, дающее минимальный эффект, например поднимающее удачу на 1 пункт в секунду.
Функция GetSpellEffects используется, чтобы определить, наложено ли заклинание на игрока, и скрипт берет на себя все остальное.