Изменения для билдеров
Материал из Мир Неронис
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_spell(@level, @char, @damtype, @savestype). Возвращает не 0, если сейвы сработали.
- Открыты переменные моб-даты: ->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 на обжах и румах. Обжи и румы с такими флагами исполняют триггера на рандом даже если зона, где они находятся, пуста.
