MSFD Кастование заклинаний
Cast, SpellID, "TargetID"
Object_ID->Cast, "flame", Player
Функция Cast заставляет вызывающий объект кастовать заклинание "SpellID" в цель "TargetID", и на цель будут влиять положительные или отрицательные эффекты заклинания.
Примечание: Считается, что функция Cast работает только для игрока.
По крайней мере, с Трибуналом (не уверен насчет ранних версий), вы можете использовать Cast для того, чтобы «метать» заклинание с активатора на актера – возможно, другие комбинации также работают.
Пример: Функция Cast может использоваться для ловушек, как в следующем скрипте, прикрепленном к Контейнеру.
Учтите, что здесь есть однократное условие, так что эффект не будет накладываться на игрока постоянно.
Begin Trap_script
short done
if ( OnActivate == 1 )
if ( done == 1 ) ;однократное условие
Activate
return
else
Cast, "flame", Player ;повредить игрока
set done to 1
Activate
endif
endif
End trap_script
Следующий пример использует функцию AddSpell:
begin Item_Cast
short OnPCEquip
short CurseAdded
float Timer
if ( CurseAdded )
set Timer to ( Timer + GetSecondsPassed )
if ( Timer >= 25 ) ; по прошествии 25 сек удалить заклинание. 25 очков здоровья снято.
set Timer to 0
Player->RemoveSpell "ItemFlame"
set CurseAdded to 0
endif
endif
if ( OnPCEquip ); когда предмет надет
if ( MenuMode )
return
elseif ( CurseAdded == 0 )
Player->AddSpell "ItemFlame" ; заклинание типа «проклятье»!
;заклинание, наносящее одни пункт повреждения огнем в секунду
set Timer to 0
set CurseAdded to 1
elseif ( CurseAdded ) ; Добавить заклинание только раз
Player->RemoveSpell "ItemFlame"
set CurseAdded to 0
endif
end Item_Cast
(скрипт от Patrin, отредактированный)
Добавленное заклинание — это самодельное проклятье, поражающее огнем на одно очко здоровья каждую секунду.
Заметьте, что здесь снова есть условие do once, встроенное в скрипт.
Если условия do once не будет, то это может привести к краху игры!
Также, похоже, что существо, убитое заклинанием типа проклятие, добавит ко всем таким существам это проклятие.
Этого можно избежать, вызывая RemoveSpell в секции OnDeath На самом деле AddSpell добавляет заклинание (в том числе и проклятья) всем копиям объекта, но пока вы не сменили ячейку, показываться заклинание будет только на одной (на той самой, которой вы добавили заклинание). RemoveSpell убирает заклинание также со всех копий. (Прим. Gwathlobal). (Информация с форумов / Argent)
Некоторая информация по различным типам заклинаний: Характеристика, отнимающая здоровье, повреждает МАКСИМАЛЬНОЕ здоровье, а Проклятие нет.
Это, похоже, не относится к увеличивающим и уменьшающим эффектам (Информация с форумов / ManaUser).