jsiq/games/warlock-p2/SpellAPI

Предпоследний шедевр мага

Структура описания заклинания (adnd_spell_definition)

  • name: название, текст - используется для
  • type: тип спелла (?)
  • action: 'std'/'daily'
  • target: 'self'/'enemy'/'friendly'/'anyone' (?)
  • keywords: ключевые слова, не используется
  • used: было ли заклинание использовано
  • descText: текстовое описание заклинания
  • IsCanBeUsedOn: необязательная функциия используется для проверки возможности использования заклинания персонажем by на персонаже on, определяется так (пример):
    function(by, on)
    {
      return ((by == on) && !this.used);
    }
    
  • spell_affection: {} свойства этого объекта копируются объекту "наложенное заклинание" при наложении заклинания
  • spell_effects: [] массив функций создаюших новые экземпляры модификаторов (эффектов), при этом, каждой функции при вызове передаётся объект-заклинания, благодаря которому можно обратиться (и/или привязаться) к объекту character кастовавшему заклинание
  • spell_notices: {} объект содержащий обработчики событий, формат (пример) такой:
    {
      'название_события': function(params)
      {
        // структура params (объект) зависит от конкретного события
        // ключевое слово this указывает на объект "наложенное заклинание"
        // какието действия
      }
    }
    
  • onCastedOn: необязательная функция, вызываемая разово при накладывании заклинания, параметр - цель заклинания. Возвращаемое значение определяет, будут ли накладываться эффекты заклинания (описанные в spell_effects). Пример:
    function(target)
    {
      return true;
    }
    

Структура наложенного заклинания (adnd_spell_affected)

  • character: указывает на персонажа на которого наложено это заклинание
  • spell: указывает на описание заклинания (adnd_spell_definition)
  • все свойства объекта adnd_spell_definition.spell_affection
  • notices: указывает на adnd_spell_definition.spell_notices
  • effects: номера "зарегистрированных" эффектов (модификаторов), необходим для удаления "своих" эффектов
  • f: removeEffects(): удаляет все наложенные эффекты