Изменения для билдеров — Мир Неронис

Изменения для билдеров

Материал из Мир Неронис

Перейти к: навигация, поиск

Содержание

15 декабря 2011

  • Добавлены группы флагов:
    • DAM_XXX - типы повреждений. Например: DAM_FIRE
    • SAVES_XXX - виды сейвов. Например, SAVES_REFLEX
    • IS_XXX - константы IS_NORMAL IS_IMMUNE IS_RESISTANT IS_VULNERABLE. Один из этих флагов вернет функция check_immune().
  • Добавлены функции:
    • saves_spell(@level, @char, @damtype, @savestype). Возвращает не 0, если сейвы сработали.
      • @level - уровень воздействия
      • @char - кого тестируем на савы
      • @damtype - тип урона (например, DAM_COLD). Полный перечень - в коде в merc.h
      • @savestype - тип сейвов для проверки. Одно из значений SAVES_FORTITUDE SAVES_REFLEX SAVES_WILL.
    • check_immune(@ch, @damtype) Возвращает один из IS_XXX флагов
  • Открыты переменные моб-даты: ->saves_fortitude, ->saves_reflex, ->saves_will. Не рекомендуется использовать сейвы там, где можно использовать saves_spell. Обе добавленные функции полностью повторяют функционал кода. Используйте именно их.

12 декабря 2011

  • Для рум и зон добавлены флаги ROOM_THROUGH_RECALL и AREA_THROUGH_RECALL в которых проверка на континенты при реколле игнорируется.
  • В continentedit добавлены списки "дефолтных" реколлов каждого божества для данного континента. Туда реколлит персонажа, находящегося на несвоем континенте из обычной румы.
recall <божество> <внум реколла>

10 декабря 2011

  • Добавлен тег #get_skill. Использование аналогично тегу #skill.
  • Добавлена функция count_charmed(@ch, vnum) - возвращает не ноль, если чар может контролировать моба указанного внума.

4 декабря 2011

  • В скрипты добавлены константы STAT_STR, STAT_DEX, STAT_INT, STAT_WIX, STAT_CON, STAT_MAX.
  • В скрипты добавлены функции get_stat(@ch, STAT_XXX) и get_max_stat(@ch, STAT_XXX).
  • В aedit добавлена команда rlist, показывающая список комнат в редактируемой зоне.
  • Для объектов добавлено поле @obj->made_of. Содержит внум моба, из которого был сделан труп или скелет.
  • Добавлена функция string(@obj, "field", "str data"). Функционал аналогичен команде string. Функция требует 59 секьюра. Не может добавлять экстрадески. Если нужно - можно будет доделать.

20 января 2011

Расширена работа функций gain_glory и gain_faith. Им добавлен третий необязательный параметр - флаговое поле. Поле может быть комбинаций следующих битовых констант:

  • GAIN_DOUBLE - при начислении учитывать удвоение/утроение славы/веры
  • GAIN_CLAN - при начислении славы производить отчисления клану
  • GAIN_ECHO - выводить эхи о начислении. При этом, функция gain_faith требует четвертый параметр - строку "за что" чару даруют веру. Например, "за убийство крутого моба".
  • GAIN_DEPENDENT - при начислении славы вызывает функцию пересчета той новой славы, что делал Дариф.
  • GAIN_STATS - при начислении славы добавит начисленное в статистику чару.

8 января 2011

  • Два новых слота: лицо(face) и аура(aura).
  • При изменении в оедите флагов: armor_flags, extra_flags, improve_flags, wear_flags, weapon_flags все обжи данного внума, у которых это поле не изменено в сравнении с прототипом, также поменяются.

26 сентября 2010

  • Функция в скриптах get_random_char(@room, @viewer). Возвращает рандомного игрока в комнате @room. Если указан моб/чар @viewer, то выбор будет сделать лишь из тех, кого @viewer может видеть.
  • Новый триггер LOOK_IN для обжей. Срабатывает при попытке посмотреть в обж. Вешать можно на совершенно любые обжи, даже на те, в которые смотреть нельзя. Аргумент триггера - вероятность срабатывания. Чтобы после выполнения триггера чар все-таки продолжил смотреть внутрь обжа, необходимо вернуть не ноль.

24 сентября 2010

  • Новая функция count_set(@victim, 'название сета').
  • Новый экстра-флаг EXTRA_NOREPAIR - не дает чинить вещь.
  • Расы: high elf --> highelf (важно для скриптов)
  • Для двери новый флаг BASHPROOF - защищает от выбивания. PICKPROOF и NOPASS от выбивания более не защищают.

18 июля 2010

Дополнена функция damage: Если при исполнении функции чар умирает, а третьим аргументом функции указан он сам, то ему защитается смерть в ловушке.

Новые функции can_be_bashed и can_be_blinded. Применяются совершенно одинаково:

can_be_bashed(@ch, @victim, @q).

Здесь:

  • @victim - тот, кого мы думаем сбашить
  • @ch - тот, от чьего имени выполняется проверка и кому прийдет эха о невозможности сбашить/послепить: у виктима нет ног или что враг уже лежит, например. Может быть NULL.
  • @q - при ненулевом значении эхи @ch выводиться не будут.

16 июля 2010

is_nokill(@mob) - возвращает 1, если моба нельзя убить смертному (акты соответствующие либо моб с сервисом).

4 июля 2010

Добавились новые поля, куда можно применять значения в эффектах:

APPLY_MAX_STR, APPLY_MAX_INT, APPLY_MAX_WIS, APPLY_MAX_DEX, APPLY_MAX_CON

Увеличивает максимальное значение стата, которое можно одеть вещами.

24 июня 2010

Флаговое поле с флагами брони переехало из ->v4 в ->armor_flags. Старое обращение все еще работает, но не рекомендуется к использованию, как и в случае с флагами оружия/зарядов (->weapon_flags).

20 июня 2010

В медите добавлено поле, позволяющее заменить стандартную эху "Боги не позволяют этого." при нападении на нокилл-мобов. Строка должна быть в формате команды: act("строка", ch, NULL, victim, TO_CHAR).

12 июня 2010

В класседите появились падежи. Доступ из скриптов: @victim->classnime.

24 мая 2010

Новая функция sn_name(@sn, @string).

  • @sn - это sn умения/заклинания.
  • @string - если "rus", то вернет русское название. Иначе - английское.

23 мая 2010

У зон новое поле - Nwhere. Используется для отображения местоположения. В скриптах 2 новых поля у зоны: @area->locart и @area->nwhere. Пример:

echoat(@victim, "Ты находишься $s %s.", @area->locart, @area->nwhere).

22 мая 2010

Операция -> доведена до ума. Теперь можно использовать конструкции вида:

@x := mobhere(1000)->hit.
echo("Уровень: $s", @arr[@victim->name]->level).

Приоритет у -> выше всех остальных операций, кроме взятия индекса массива.

13 мая 2010

Новая функция apply_affect(victim, array). Подробное описание в справке.

5 мая 2010

Добавлени функция num_str(инт, стр, стр, стр). Пример использования:

echoat(@victim, "Ты получаешь $s очк$s славы.", @num, num_str(@num, "о", "а", "ов")).

1 марта 2010

Новая функция dismount_char(@victim). Если чар был наездником или "лошадью" - расседлывает его. Без эх. Эхи надо выводить самому.

22 февраля 2010

Новая функция wait_add(@victim, @value), где @victim - персонаж, а @value - значение, на которое изменить ->wait персонажу. Может быть отрицательным. Результат всегда не меньше нуля. Возвращает значение @victim->wait.

Пользуйтесь с осторожностью, так как неадекватные значения лага могут сильно испортить жизнь игрокам.

21 февраля 2010

Новая функция obj_bonus(@obj, apply_xxx), где apply_xxx может быть одним из (см. apply_flags):

apply_strength, apply_dexterity, apply_intelligence, apply_wisdom, apply_constitution,
apply_sex, apply_class, apply_level, apply_age, apply_height, apply_weight,
apply_mana, apply_hp, apply_move, apply_ac, apply_hitroll, apply_damroll,
apply_saves, apply_saves_fortitude, apply_saves_reflex, apply_saves_will,
apply_savingspell, apply_size, apply_ac_pierce, apply_ac_bash, apply_ac_slash,
apply_ac_exotic, apply_initiative

Возвращает значение типа integer: значение изменения. Если попытаться получить значение поля, являющегося частью составного поля (например, спасброски на волю являются частью спасбросков, а броня от рубки является частью брони), то в полученном результате будут также учтены изменения общего поля. Например, на предмете есть эффект, дающий 10 брони и эффект, дающий 5 брони от рубки. При получении брони от рубки, мы получим результат 15.

Часть указанных полей не используются (apply_class, apply_level, apply_age, apply_height, apply_weight).

5 февраля 2010

Добавлен флаг item_wear_hooves (это флаг, который указывается в слотах обжа). Обжи, одеваемые в слот feet не одеваются на чаров, у которых есть PART_HOOVES. Подковы же наоборот, одеваются только на копыта. Таким образом подковы смогут носить не только кентавры, а любые мобы с правильными слотами.

1 февраля 2010

Добавлены константы с именами триггеров, начинающиеся с rtrig_ mtrig_ и otrig_. Например, rtrig_rest.

Во все триггера добавлена регистрация переменной @trigger. Она содержит числовое значение типа вызвавшего данный скрипт триггера. Его можно сравнивать с описанными выше константами.

Например:

if (@trigger == otrig_get) then ....

30 января 2010

Имена слотов в экипе и просмотре другого чара теперь перенесены в raedit. Доступны командой "экип" либо "equip". Выбор текста для слота идет в следующем порядке:

  • Если чар под плащом - из его расы, вторая колонка (которая для плаща).
  • Если строка еще не выбрала - из расы.
  • Если все еще строка пуста и под плащом - из расы unique, вторая колонка (для плаща).
  • Если все еще пустая строка - просто из расы unique.

Таким образом раса unique содержит строки-умолчания, которые можно переопределить в настройках определенной расы.

18 января 2010

Добавился wear-флаг ITEM_WEAR_LIGHT для обжей. Теперь чтобы одеть свет в слот свет, необходимо указать в canwear этот флаг. Все старые обжи исправлены автоматически. Также теперь обж типа свет можно одевать в любой другой слот, однако освещать комнату он при этом не будет. Т.е. просто поведение обжей типа свет приведено к общему виду.

8 января 2010

Для триггеров (в [м/о/ре/а/р]едите) добавлено поле Flags. Пока существует только один флаг charm, имеющий смысл только для моб-скриптов. Триггера с таким флагом будут срабатывать под чармом также (если надо только под чармом - это легко проверить в самом скрипте).

Полностью переписана работа с триггерами в тех же едитах. Теперь во всех едитах есть команда trigger, которая делает все что раньше делали, например, addoprog и deloprog и немного такого, чего они не умели. Старые команды оставлены для удобства, функционал такой же.

3 января 2010

Добавлен параметр "слоты" в медит. По умолчанию значение берется из раедита для указанной расы.

Добавлен флаг ACT_CAN_EQUIP - петам с таким флагом можно давать по одной шмотки. Они будут пытаться их одеть. После чего весь инвентарь бросают (чтобы не залипало чего).

Расширена функциональность функции get_equip(@victim, @slot). Теперь @slot может быть не только строкой, но и числом (int и int64 - константы, начинающиеся с WEAR_. Добавлена константа WEAR_MAX. Пример использования:

@i := 0.
while(@i<WEAR_MAX) do
  echo("$s", get_equip(@victim, @i++)).
endwhile

27 декабря 2009

Инициатива в скриптах - @victim->init

26 ноября 2009

У прототипов мобов появился список эффектов, применяемых к содаваемому мобу с данным внумом. Раньше если было необходимо дать мобу опеку богов или спешку, вы просто добавляли флаг в поле affects. Теперь необходимо создавать полноценный эффект командой addapply в medit'е. Костыли по созданию эффектов из кода убраны, а значит если вы просто добавите флаг в поле, изгнать такой эффект с моба будет невозможно. Все существующие мобы преобразованы автоматически. С новыми необходимо поступать по-новому. Пример:

Необходимо добавить опеку мобу. Строка будет такой:

addapply aff none 0 sanctuary none опека
1        2   3    4 5         6    7

Объяснения:

1 - команда

2 - к какому полю применяем флаг (например: aff, res, vuln ....)

3 - что меняем (силу, ловкость, сейвы) - в нашем случае ничего не меняем

4 - насколько меняем - в нашем случае 0

5 - какой флаг добавляем - флаг sanctuary

6 - флаги эффектов. Обычно none, но вы можете указать нужные вам, если знаете что делаете :)

7 - Тип эффекта. Здесь необходимо указать, каким скиллом/спеллом эффект был наложен. Это важно, так как от скилла зависит, будет ли эффект считаться негативным и лечиться отменой, или будет сбиваться изгнанием магии. В случае опеки это заклинание опека богов

12 июля 2009

Добавлена поддердка скриптов в реедит.

Реедит и оедит теперь показывают совмещенный список, при этом внумы рецептов выделены зеленым.

Расширена функциональность команды oedit список. Добавлен необязательный параметр пустые: оедит список пустые

24 июня 2009

Оператор сравнения == и != теперь могут выполнять сравнение строк и чисел с 64-битными числами.

Добавлены операторы строгого сравнения === и !==. Результат будет истинным если тип и значение сравниваемых данных равны.

Т.е. 4 == "4" будет истина. а 4 === "4" будет ложь.

22 июня 2009

Введены локальные переменные на обжах/мобах/румах. Для работы с ними добавлены 3 функции:

del_var(@room|@obj|@mob, name).
get_var(@room|@obj|@mob, name).
set_var(@room|@obj|@mob, name, data).

Переменные в пфайлы не сохраняются. Данные могут быть любого типа.

19 июня 2009

Новая функция check_race_enemy'(@victim->race, @ch->race) - проверяет, является ли @victim расовым врагом для @ch (т.е. будет ли @ch бить @victimа)

17 июня 2009

Добавлена функция is_mist(@victim). Возвращает 1 если @victim имеет FORM_MIST и при этом не материализован.

15 июня 2009

Доделана работа с переменными типа AREA. В зону добавлены падежи и склонение

Добавлен параметр race_control в зону и комнату. У комнаты приоритет. Указывает какая пц-раса контролирует данную комнату.

В скрипты функция check_enemy(раса1, раса2) - проверяет, будет ли раса1 бить расу2.

2 июня 2009

Теперь калькулятор выполняет битовые операции с 64-битными данными. Если операнд будет обычным числом - оно приводится к 64 битам. Результат всегда 64-битный. Таким образом, можно вместо

is_set_flag(@room->flags, room_no_recall) || is_set_flag(@room->flags, room_prison)

писать:

is_set_flag(@room->flags, room_no_recall|room_prison)

31 мая 2009

Добавлены extra-флаг и флаг для эффектов keep_death. Вещи и эффекты с такими флагами остаются у чара (не у моба) после смерти. Однако, если вещь с таким флагом лежит не в инвентаре, а, например, в контейнере, она обработается как обычная (не имеющая такого флага).

30 апреля 2009

Добавлено свойство @mob->wait в скриптах.

Добавлена возможность применять команду removeaff на обжи.

15 февраля 2009

Добавлен флаг aggr_align - мобы с таким флагом агрят всех не своей натуры.

Новая функция в скриптах parse_string(@str) - заменяет в строке @var@ на значение @var как в обычных моб-командах.

9 февраля 2009

Флаг nosac у обжей переехал из wear-флагов в extra.

31 января 2009

Изменилась обработка эффектов, накладываемых на комнату. Убрано поле room->affected_by, а все эффекты с AFF_ROOM_XXX перенесены на ROOM_XXX (таким образом их можно ставить на комнату прямо в редите). Комнатам добавлено поле room->room_flags_orig, именно с ним вы работаете в редите, и именно оно сохраняется в файл. Поле room->room_flags является теперь рабочим, никуда не сохраняется и пересчитывается исходя из оригинальных флагов и наложенных на руму эффектов/заклинаний.

В румфлаги таким образом добавлились: плодородная земля, все дымы, облако огня, кольцо огня и печати мстителя.

27 января 2009

Новая функция make_pet(@master, @pet).

  • @master - чар дата (обязательно PC) будущего хозяина
  • @pet - чар дата (обязательно NPC) пета. При этом у мастера не должно быть пета, а пет не должен быть чьим-то петом.

После выполнения функции пет будет следовать за мастером, быть в его группе и будет его петом.

1 января 2009

Добавились 2 флага - update_always на обжах и румах. Обжи и румы с такими флагами исполняют триггера на рандом даже если зона, где они находятся, пуста.