главная турниры статьи wiki карта сайта логин

Автор Тема: Эра "Серебряный Век Веснота"  (Прочитано 29288 раз)

0 Пользователей и 1 Гость просматривают эту тему.

z5x1

  • Модератор
  • level 4
  • *****
  • Сообщений: 557
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Chrome 46.0.2490.80 Chrome 46.0.2490.80
    • Просмотр профиля
  • Раса: Орк
Re: Эра "Серебряный Век Веснота"
« Ответ #30 : Октябрь 30, 2015, 17:49:15 »
Это для кампании в тени смерти, ее дв обновлять будет, новые лоялы, новая нежить и все такое
Нам не страшен паладин, 40 нас, а он один =)

z5x1

  • Модератор
  • level 4
  • *****
  • Сообщений: 557
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Chrome 46.0.2490.80 Chrome 46.0.2490.80
    • Просмотр профиля
  • Раса: Орк
Re: Эра "Серебряный Век Веснота"
« Ответ #31 : Октябрь 31, 2015, 18:08:46 »
Лвл2  качнется в кирасира, как написано где-то выше
Нам не страшен паладин, 40 нас, а он один =)

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1284
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 38.0 Firefox 38.0
    • Просмотр профиля
  • Раса: Мертвец
Re: Эра "Серебряный Век Веснота"
« Ответ #32 : Ноябрь 03, 2015, 18:36:19 »
По просьбе читателей делюсь макросами (кодом) абилок - тех из них, которые я уже смастерил.
Начну с банального - то, что заработало с помощью стандартных тегов абилок.
Сопротивления:
Магический щит (у паладинов) в защите сопротивление бойца к огню, холоду и мистике на 25% выше.
Примечание - в общем-то, это будет равно хорошо работать и против атак не вполне имеющих отношение к магии - дыханию драконов или огненных стрел. То есть проверка только на тип урона без более подробного рассмотрения.
    [resistance]
        id=magical shield
        add=25
max_value=100
apply_to=fire,cold,arcane
        affect_self=yes
        active_on=defense
    [/resistance]
Защита (у щитоносцев) - боец увеличивает сопротивления в защите у всех стоящих поблизости союзников на 20% (от всех типов атак). Не получают защиты кавалеристы, тяжеловооруженные бойцы и бойцы, превосходящие человека размером (тролли, великаны, дрейки и т.п.)
Примечание - решил не мучатся с фильтром на тип передвижения или какие то еще сочетания характеристик, которые однозначно изобличат всадника великана и тяжпеха - просто сделал фильтр по типу юнита. {IS_SHIELDED} содержит список всех бойцов эры, не подлежащих защите щитоносцем.
    [resistance]
        id=protection
        add=20
max_value=100
        affect_self=no
        active_on=defense
        [affect_adjacent]
            [filter]
[not]
    {IS_SHIELDED}
[/not]
            [/filter]
        [/affect_adjacent]
    [/resistance]
Аура доблести (у рыцарских капитанов) - возрастают сопротивления самого юнита и всех окружающих союзников на 10% к трем типам атак - рубящим, крущащим и мистическим. Действует на всех, кроме нежити (фильтр по расе).
        id=aura of valor
        add=10
  apply_to=arcane,blade,impact
max_value=100
        affect_self=yes
        [affect_adjacent]
            [filter]
[not]
    race=undead
[/not]
            [/filter]
        [/affect_adjacent]
Неуловимости:
Тут все очень-очень плохо, потому что большинство фильтров попросту не работает. все, что, как мне в итоге кажется, можно сделать - это проверить самого обладателя способности, тип территории под ним, любых юнитов вокруг него и типы территорий под ними. Тем не менее, смастерил две способности:
Прорыв (у кирасиров) - боец может прорывать строй существ 1го уровня игнорируя их зоны контроля.
Примечание - как это на самом деле работает: Проводится проверка - если рядом с бойцом есть хоть один вражеский боец 1го уровня, то он может совершить ход, игнорируя зоны контроля всех врагов. После того, как он пройдет одну клетку, снова проверка - если рядом больше нет врагов 1го уровня, зато есть враги других уровней, боец ездит по всем правилам, останавливаясь в зонах контроля. Иначе - снова одну клетку без зон контроля. То есть ездит-то боец как обычно - вам дают область досягаемости и вы можете пойти сразу на всю длину хода, но рассчитывается это область досягаемости по выше описанному принципу. Итог - враги 1го уровня не только сами "упускают" кирасира из своих зон контроля, но и своим старшим товарищам мешают его ловить. В конечном счете, мне показалось, что это весьма реалистично - один недисциплинированный отряд губит весь строй, так что я прекратил бесплодные попытки наладить работу этой способности как-то иначе.
   [skirmisher]
        id=penetration
        affect_self=yes
[filter_self]
    [filter_adjacent]
        is_enemy=yes
                level=1     
            [/filter_adjacent]
[/filter_self]
    [/skirmisher]
Штурм (у штурмовых пехотинцев) - боец игнорирует зоны контроля при осаде замков.
Примечание - все, сказанное выше о прорыве, верно и здесь. Реальный принцип работы - если одна из соседних клеток - замок любого типа, персонаж игнорирует зоны контроля и так до тех пор, пока не уйдет прочь от замковых стен. Это позволяет беспрепятственно проникать в замки мимо врагов и, в большинстве случаев - беспрепятственно покидать их.
    [skirmisher]
        id=assault
        affect_self=yes
[filter_self]
    [filter_location]
                [filter_adjacent_location]
                   terrain=C*
                [/filter_adjacent_location] 
            [/filter_location]
[/filter_self]
    [/skirmisher]

Ну, хватит для первой порции. Продолжение следуют - у меня их еще полно)
Возглавляет силы зла

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1284
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 38.0 Firefox 38.0
    • Просмотр профиля
  • Раса: Мертвец
Re: Эра "Серебряный Век Веснота"
« Ответ #33 : Ноябрь 04, 2015, 08:38:36 »
Вторая порция макросов. Поговорим о лидерстве - в отличие от неуловимостей, они отлично фильтруются и можно выбрать практически любые параметры усиляемых юнитов. Увы, улучшать им можно только урон...
Лидерство обычное - в эре присутствует трех разных уровней. Даю сразу третий уровень, а второй и первый отличаются количеством тегов и величиной value. Приведенный ниже код создает лидерство, повышающее урон соседствующих союзников 3го уровня на 25%, 2го - на 50% и 1го - на 100%, при этом отфильтровывает всех магов, шаманов и им подобных (они в эре не получают преимуществ от лидерства офицеров) с помощью простого списка.
    [leadership]
        id=leadership
        value=100
        cumulative=no
        affect_self=no
        [affect_adjacent]
            [filter]
                level=1
[not]
    {IS_MAGE}
[/not]
            [/filter]
        [/affect_adjacent]
    [/leadership]
    [leadership]
        id=leadership
        value=50
        cumulative=no
        affect_self=no
        [affect_adjacent]
            [filter]
                level=2
[not]
    {IS_MAGE}
[/not]
            [/filter]
        [/affect_adjacent]
    [/leadership]
    [leadership]
        id=leadership
        value=25
        cumulative=no
        affect_self=no
        [affect_adjacent]
            [filter]
                level=3
[not]
    {IS_MAGE}
[/not]
            [/filter]
        [/affect_adjacent]
    [/leadership]
Знамя - пока существует только знамя Королевской Армии но в будущем планируется сделать разные типы знамен. Суть знамени проста - соседние союзники той же фракции, что и знаменосец, получают +20% к наносимому урону, невзирая на их уровень. Маги фракции, как правило, в список получающих бонус не входят. С другой стороны, сам знаменосец тоже получает бонус от знамени, которое несет.
   [leadership]
        id=banner_royal
        value=20
        cumulative=no
        affect_self=yes
        [affect_adjacent]
            [filter]
{IS_ROYAL_MAN}
            [/filter]
        [/affect_adjacent]
    [/leadership]
К тому же типу способностей относится красота веснотских магичек. Однако, тут все несколько отличается механикой. Во-первых, имеется trait - индивидуальная особенность, которая может выпасть магу лоялов женского пола, а может и не выпасть. Трейты - это истинная благодать, потому что они могут давать своему счастливому обладателю практически все, что в игре вообще можно учинить над юнитом - измененные характеристики, новые атаки, новые анимации атак, новые абилки - в общем, все, что угодно.
В данном случае способность, даваемая трейтом, остается невидимой - я не пишу ей description и игрок видит только трейт. Приведенный ниже код дает обладателю трейта своебразное лидерство, повышающее на 10% урон всех союзников мужского пола, стоящих поблизости - и на этот раз даже магам. Красота - страшная сила.
Примечание - у разных типов лидерства есть недостаток - друг с другом они не складываются и работает просто наиболее сильная из воздействующих на юнита способностей. (то есть если бы существовала женщина-офицер-красавица-знаменосец, ей было бы не слишком много смысла об этого - на большинство союзников работало бы более сильное в плане value лидерство, на юнитов более высокого или равного уровня - знамя, а на магов, на которых не работает остальное - красота. круто конечно, но не так круто, как если бы все это воздействовало на всех). 
    [trait]
        id=beautiful
        [effect]
            apply_to=new_ability
    [abilities]
  [leadership]
            id=beauty
                    value=10
                    cumulative=no
                    affect_self=no
                    [affect_adjacent]
                       [filter]
                           gender=male
                       [/filter]
                    [/affect_adjacent]
  [/leadership]
    [/abilities]
        [/effect]
    [/trait]

Теперь отойдем на время от темы абилок и обратимся к особенностям оружия - штукам, ничуть не менее интересным. К сожалению, как и в случае с абилками, набор доступных тегов ограничен, более того - абилки и особенности оружия влияют на разные параметры и нельзя абилкой повышать окружающим число атак, а особенностью оружия - снижать врагу резист (в смысле, нельзя сделать это фабричными средствами и нужно писать механизм вручную).
Посмотрим на особенности оружия, использующие стандартные теги. Вот, например, тег [attacks] влияющий на число атак.

Очень длинное - оружие с данной особенностью наносит в обороне на один удар меньше (логика - враг подбегает в упор, и драться с ним пятиметровой пикой становится неудобно), а в атаке - враг наносит на один ответный удар меньше (логика - пока враг подберется к атакующему пикинеру на дистанцию удара, пикинер уже успеет поколоть его сколько надо раз и выйти из поедника). Смотрим:
    [attacks]
        id=very long1
        sub=1
        active_on=offense
        apply_to=opponent
[filter_opponent]
    [filter_weapon]
[not]
    special=unrivaled
  [/not]
    [/filter_weapon]
[/filter_opponent]
    [/attacks]
    [attacks]
        id=very long2
        sub=1
        active_on=defense
    [/attacks]
Выше вы видите внутри фильтра что-то непонятное. Это - фильтр оружия противника, которым он отвечает на вашу атаку и проверка установлена на наличие особенности unrivaled. Собственно, вот она:
Несравненный - если противник наносит больше ударов, чем боец с особенностью, то количество ударов противника уменьшается до количества ударов бойца. С другой стороны, количество ударов оружия с этой особенностью не может быть снижено (потому-то проверка на особенность и стоит повсюду, где речь идет о снижении числа ударов).
Примечание - к сожалению, я не нашел возможности "спросить" у особенности оружия, сколько именно ударов сейчас у ее обладателя, так что это особенность с передаваемым параметром:
#define WEAPON_SPECIAL_UNRIVALED NUMBER
    [attacks]
        id=unrivaled
        name= _ "unrivaled"
        name_inactive= _ "unrivaled"
value={NUMBER}
apply_to=opponent
        [filter_base_value]
      greater_than={NUMBER}
        [/filter_base_value]
[filter_opponent]
    [filter_weapon]
[not]
    special=unrivaled
[/not]
    [/filter_weapon]
[/filter_opponent]
    [/attacks]
#enddef
Подготовка - атаки, требующие подготовки, работают лишь в нападении. Реализовано это очень просто - в защите число ударов уменьшается до 0, и атаки не происходит.
    [attacks]
        id=preparation
value=0
active_on=defense
    [/attacks]
Ну и последнее на сегодня, что (внезапно) оказалось очень трудно реализовать -
Ливень стрел - если противник не может отвечать на атаку, число атак возрастает в полтора раза (то есть стрелок нагло пользуется своей безнаказанностью). Тут обнаружилась неожиданная проблема - я не смог обнаружить методов установления факта отсуствия у противника "встречной" атаки. При этом опыты показали, что установить ее наличие - можно (и нет, то же условие внутри тегов [not] желаемого результата не принесло). В итоге я смирился с несовершенством вмла, как языка программирования и себя - как программиста и просто сделал наоборот - способность всегда повышает число выстрелов бойца в нападении, и снижает его обратно до базовго значения, если врагу есть, чем ответить (отдельный фильтр проверяет, чтобы враг, у которого единственная стрелковая атака имеет "подготовку" получил по полной - атака-то у него есть, но ответить ею он не может). Плод моих страданий - ниже:
    [attacks]
        id=rain of arrows1
divide=1.5
active_on=offense
        [filter_opponent]
            [filter_weapon]
type=pierce,fire,cold,blade,impact,arcane
[not]
    special=preparation
[/not]
    [/filter_weapon]
        [/filter_opponent]
    [/attacks]
    [attacks]
        id=rain of arrows2
multiply=1.5
active_on=offense
    [/attacks]
Возглавляет силы зла

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1284
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 38.0 Firefox 38.0
    • Просмотр профиля
  • Раса: Мертвец
Re: Эра "Серебряный Век Веснота"
« Ответ #34 : Ноябрь 05, 2015, 08:35:44 »
Третья порция макросов. Сегодя поговорим о первых выстрелах и модификаторах меткости.
Собственно, с первым выстрелом все просто - существуют теги, которые дают бойцу первую атаку в защите. никаких особенных вариаций или изменяемых значений нет (можно, впрочем ставить фильтры на себя и противника). Сама способность первого выстрела ничем не отличается технически от первого удара и существует просто для того, чтобы пользователь видел у стрелковых атак другое название способности.
    [firststrike]
        id=firstshoot
    [/firststrike]
Теперь забудем уже об этом и посмотрим на изменение точности. Тут у кодера есть достаточно богатые возможности - можно влиять на точность атаки самого бойца, точность встречной атаки врага и еще и фильтровать в каких случаях способность будет срабатывать. Следующие способности достаточно неплохо демонстрируют возможности тегов [chance_to_hit]:
Дальнобойность - свойство некоторых дальних атак. суть в том, что обладающий дальнобойным оружием боец, атакуя, может подойти на расстояние своего выстрела и остановится, оставаясь вне зоны эффективного поражения противника, Таким образом, когда дальнобойные бойцы атакуют, точность встречной атаки противника будет на 10% ниже положенной... если он сам не обладает дальнобойным оружием. Код:
    [chance_to_hit]
        id=long range
        sub=10
        active_on=offense
        apply_to=opponent
[filter_opponent]
    [filter_weapon]
[not]
     special=long range
[/not]
     [/filter_weapon]
[/filter_opponent]
    [/chance_to_hit]
P.S. Для умников, которые будут пытатся использовать эту способность в своих проектах, сменив название - вы хоть убедитесь, что id способности совпадает с тем, который проверяется в фильтре, иначе фильтр ничего не отфильтрует но и ошибки вам никакой не выдаст. То же касается описанной в прошлом посте способности unrivaled.

Вспышка - улучшенная в плане характеристик и более простая в плане кода версия того, что выше. При атаке боец ослепляет врага вспышкой, в результате чего точность встречной атаки будет ниже на 20%. Работает и в нападении и в защите. И да - точность магов снижается до с 70% до 50%, так что эта вспышка - эффективное защитное средство.
    [chance_to_hit]
        id=flash
        sub=20
        apply_to=opponent
    [/chance_to_hit]

Осада - при атаке оружием с данной особенностью по деревне или замку, точность атаки не будет ниже 50% (то есть выше она быть может, если противник в силу собственных свойств обладает меньшим уворотом на этих территориях).
    [chance_to_hit]
        id=siege
        value=50
        cumulative=yes
        [filter_opponent]
            [filter_location]
                terrain=*^V*, C*
            [/filter_location]
        [/filter_opponent]
    [/chance_to_hit]

Быстрый - быстрая атака в обычных условиях ничем не отличается, зато если жертва была предварительно замедлена или отвлечена (про отвлечение расскажу вам в следующий раз), то есть на ней висит соответствующий статус (статусы типа "отравлен", "замедлен", "окаменел" и любые, какие вы сами добавите в свой аддон, можно фильтровать, и это очень удобно), точность атаки внезапно возрастает до 90% - обескураженный враг просто не успевает реагировать на атаки и единственный шанс на спасение предоставляется ему возможной криворукостью самого атакующего.
[chance_to_hit]
        id=swift
        name= _ "swift"
        name_inactive= _ "swift"
        value=90
        [filter_opponent]
          [filter_wml]
        [status]
                    slowed=yes
          [/status]
        [/filter_wml]
    [or]
[filter_wml]
            [status]
                    distracted=yes
              [/status]
        [/filter_wml]
    [/or]
        [/filter_opponent]   
[/chance_to_hit]
Ну вот и все способности, использующие стандартные теги, которые на данный момент вошли в эру. Способности, написанные посредством добавления специальных ивентов, я вам покажу когда-нибудь в другой раз. Отдыхайте.
Возглавляет силы зла

z5x1

  • Модератор
  • level 4
  • *****
  • Сообщений: 557
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Chrome 46.0.2490.80 Chrome 46.0.2490.80
    • Просмотр профиля
  • Раса: Орк
Re: Эра "Серебряный Век Веснота"
« Ответ #35 : Ноябрь 08, 2015, 09:54:27 »
Рейтар (финальник) и арбалетчик лвл2. Дальше переделаю рыцаря (он вообще рисовался как пример доспехов эпохи возрождения, а не юнит )   и знаменосца . А в линейке кавалерии остался только кирасир
« Последнее редактирование: Ноябрь 08, 2015, 10:01:24 от z5x1 »
Нам не страшен паладин, 40 нас, а он один =)

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1284
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 38.0 Firefox 38.0
    • Просмотр профиля
  • Раса: Мертвец
Re: Эра "Серебряный Век Веснота"
« Ответ #36 : Ноябрь 08, 2015, 14:33:45 »
в честь того, что зеха нарисовал рейтара, я расскажу вам, как работает его способность - одна их тех, которые пришлось частично делать в ручную.
Итак, рейтар обладает ближней атаке, аналогичной атаке обычного драгуна, но помимо этого у него имеется арбалет с уроном 16-1 (то есть офигенно эффективный при условии что будет попадать в цель), обладающий обычным для арбалета первым выстрелом и вдобавок, способностью маневры.
Эта способность во первых снижает количество ответных выстрелов врага до единицы - рейтар стреляет один раз и отезжает, за это время противник успевает также выстрелить лишь раз. Не имеет значения при этом, атакует рейтар или обороняется. Таким образом, убить его стрелковой атакой достаточно сложно и наилучшими шансами в этой области обладают атаки гномов-мушкетеров и арбалетчиков - у них мало выстрелов в атаке а значит они меньше всех теряют.
Кроме того, по предложению зехи, когда рейтар проделывает этот маневр в атаке, он восстанавливает одну единицу хода и может отъехать не только в воображении игрока, но и реально на карте (а на освободившуюся клетку может встать для атаки дружественный юнит, что очень удобно). При этом, атаковать второй раз за ход рейтар не может - он получает единицу хода но не единицу атаки. так же стоит учитывать, что на некоторых территориях единицы хода недостаточно чтобы куда-то уехать. Итак, код.
Половина первая - уменшение атак противника - написана обычными методами. Проверки на то, что у врага ваще были атаки (чтобы не добавлять ударов тому, у кого их нет) и на то. что он не обладает "несравненностью", дающей неуязвимость к похищению ударов.
    [attacks]
        id=maneuvering
        value=1
        apply_to=opponent
        [filter_base_value]
      greater_than=0
        [/filter_base_value]
[filter_opponent]
    [filter_weapon]
[not]
    special=unrivaled
[/not]
    [/filter_weapon]
[/filter_opponent]
    [/attacks]
Половина вторая - имени зехи. Ивенты, активирующиеся по несколько раз - а именно при каждом событии типа "атака закончена", с фильтром на наличие у атаковавшего способности "маневры". Атаковавший получает одну единицу хода.
[event]
id=maneuvering_event
        name=attack end
        first_time_only=no

        [filter_attack]
            special=maneuvering
        [/filter_attack]

        [unstore_unit]
            variable=unit
            {COLOR_HEAL}
            text= _ "+1"
            find_vacant=no
        [/unstore_unit]

[modify_unit]
            [filter]
    x,y=$x1,$y1
      [/filter]
            moves=1
[/modify_unit]
[/event]

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

z5x1

  • Модератор
  • level 4
  • *****
  • Сообщений: 557
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Chrome 46.0.2490.86 Chrome 46.0.2490.86
    • Просмотр профиля
  • Раса: Орк
Re: Эра "Серебряный Век Веснота"
« Ответ #37 : Ноябрь 22, 2015, 10:02:44 »
Лвл3 сами понимаете какой линейки
Нам не страшен паладин, 40 нас, а он один =)

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1284
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 38.0 Firefox 38.0
    • Просмотр профиля
  • Раса: Мертвец
Re: Эра "Серебряный Век Веснота"
« Ответ #38 : Ноябрь 22, 2015, 10:55:53 »
так, ну зеха нарисовал парочку юнитов с полутораручными мечами, а именно латника и гвардейца, стало быть пора рассказать вам про их способность. ну, вначале о тривиальном.
    [trait]
        id=loyal
        male_name= _ "loyal"
        female_name= _ "female^loyal"
        description= _ "Zero upkeep"
availability=musthave
        [effect]
            apply_to=loyal
        [/effect]
    [/trait]
вот такой трейт вставляете в код юнита (напрямую или через define) и все экземпляры этого юнита больше не требуют денег за содержание. причем неважно, был ли юнит нанят или улучшен из юнита, у которого такого трейта нет - все равно трейт появится. в нашей эре такой особенностью обладают гвардеец и королевский стрелок (гвардейский арбалетчик).
Теперь о более интересном. И латник и гвардеец имеют две разных атаки одним оружием - атаку в которой больше ударов, потому что меч держится одной рукой и атаку в которой меньше ударов, но они сильнее, потому что боец использует двуручный хват. При попадании двуручная атака может дать критический удар - а именно, это случается, если атака достигла цели и нанесенный урон равен 15 или более (то есть юниту с высоким резистом нанести такой удар труднее, но могут помочь время суток и лидерство). Если критический удар происходит, вражеский боец с этого момента перестает наносить удары до конца стычки (оправляется от привалившего урона). Написать эту абилку было сложно, игра сильно упрямилась и действовать в итоге пришлось весьма грубыми методами. Тем не менее, как мне кажется, я все-таки смог заставить это работать избежав возможных потерь информации о юните, который подвергся критическому удару. смотрим:
    [attacks]
        id=critical hit
        multiply=1
    [/attacks]
сама абилка ничего не делает - это просто фасад, чтобы способность отображалась в описании атаки и в списке способностей. всю работу делают ивенты:
[event]
    id=critical_begin
    name=attack
    first_time_only=no
    [filter_attack]
special=critical hit
    [/filter_attack]
    [store_unit]
[filter]
    x=$x2
    y=$y2
        [/filter]
kill=no
variable=critical_wounded
    [/store_unit]
[/event]
ивент первый - срабатывает если юнит атакует другого юнита и у атакующего есть способность критического удара. обороняющийся при этом сохраняется, чтобы восстановить его атаки после стычки.
[event]
    id=critical_event
    name=attacker hits
    first_time_only=no
    [filter_attack]
special=critical hit
    [/filter_attack]
    [if]
    [variable]
name=damage_inflicted
greater_than=14
    [/variable]
    [then]
    [command]
    [unstore_unit]
       variable=second_unit
       {COLOR_HARM}
       text= _ "CRITICAL HIT!"
       find_vacant=no
    [/unstore_unit]
    [object]
        silent=yes
        duration=forever
[filter]
    x=$x2
    y=$y2
        [/filter]
[effect]
    apply_to=remove_attacks
[/effect]
    [/object]
    [/command]
    [/then]
    [/if]
[/event]
ивент второй - срабатывает если атака с критическим ударом достигла цели (может и не сработать вовсе, в отличие от предыдущего). проводится проверка количества нанесенного урона. если его недостаточно много, ничего не происходит. Если урона достаточно, оброняющийся юнит получает эффект, который отнимает у него все его атаки. После этого он немедленно перестает сопротивлятся (спасибо игра хотя бы не запоминает характеристики атак перед стычкой, иначе бы это не помогло). Проблема эффектов накладываемых с помощью тегов [object][/object] в том, что их потом фиг удалишь - они могут быть наложены навечно или до конца сценария или до конца хода, но нет кнопки "прекратить действие объекта Х сейчас". Поэтому для возвращения потерпевшему его атак используется достаточно грубое вмешательство:
[event]
    id=critical_end
    name=attack end
    first_time_only=no
    [filter_attack]
special=critical hit
    [/filter_attack]
    [store_unit]
[filter]
    x=$x2
    y=$y2
        [/filter]
kill=yes
variable=critical_wounded2
    [/store_unit]
    {CLEAR_VARIABLE critical_wounded2.modifications.object}
    [set_variables]
        name=critical_wounded2.modifications.object
        to_variable=critical_wounded.modifications.object
    [/set_variables]
    [unstore_unit]
variable=critical_wounded2
    [/unstore_unit]
    {CLEAR_VARIABLE critical_wounded}
    {CLEAR_VARIABLE critical_wounded2}
[/event]
данный ивент срабатывает всегда когда закончилась стычка в которой у атакующего есть оружие с критическим ударом, даже если предыдущий и не срабатывал (вреда от этого быть не должно). при этом все модификации обороняющегося типа "объект" откатываются к состанию до начала стычки (помните, мы их сохраняли?). В итоге раненый возвращает свои атаки, если те были отняты в процессе боя. Теперь подумаем, чему это может повредить. в целом, модификации типа "объект" используются в игре для создания эффектов подбираемых предметов (типа святых амулетов из Нашестия с Востока) или индивидуальных особенностей юнита (много разных примеров можно найти в коде в моей кампании про тень смерти). То есть мультиплеер вовсе не должен пострадать от работы критического удара, даже если тот по ошибке затрет какие то объекты которые затирать не надо. Ну и в целом это должно затронуть только те модификации, которые возникли уже в процессе стычки (я таких ни разу ни в одной кампании не видел, кроме собственно вот этого критического удара, который сам и придумал), но если использовать эту абилку вместе с какими-то вашими собственным разработками, то да - ваши разработки могут пострадать.

Примечание - в обороне критический удар не работает. чтобы сделать его работающим и в атаке и в обороне, вам нужно ввести ивенты, срабатывающие когда оружие с критическим ударом есть у обороняющегося - [filter_second_attack] вам в помощь, перед стычкой сохранить атакующего юнита в отдельную переменную (так как может возникнуть ситуация когда сражаются два юнита с критическими ударами и перед боем не скажешь заранее кто из них пострадает), а после нее восстановить модификации обоих участников боя из тех переменных, куда вы их сохраняли. В общем, улучшение и расширение этой абилки рекомендуются только тем мододелам, которые освоили работу с переменными в вмл, иначе налом дров обсепечен.
« Последнее редактирование: Ноябрь 22, 2015, 11:12:01 от DV »
Возглавляет силы зла

z5x1

  • Модератор
  • level 4
  • *****
  • Сообщений: 557
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Chrome 46.0.2490.86 Chrome 46.0.2490.86
    • Просмотр профиля
  • Раса: Орк
Re: Эра "Серебряный Век Веснота"
« Ответ #39 : Ноябрь 24, 2015, 19:59:42 »
щитоносец лвл2
Нам не страшен паладин, 40 нас, а он один =)

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1284
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 38.0 Firefox 38.0
    • Просмотр профиля
  • Раса: Мертвец
Re: Эра "Серебряный Век Веснота"
« Ответ #40 : Ноябрь 24, 2015, 20:13:51 »
так как наш художник сподобился нарисовать всю линейку тяжелой пехоты, порадуем вас скрином где присутствуют все эти юниты.

Возглавляет силы зла

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1284
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 38.0 Firefox 38.0
    • Просмотр профиля
  • Раса: Мертвец
Re: Эра "Серебряный Век Веснота"
« Ответ #41 : Ноябрь 24, 2015, 21:04:37 »
ты о чем? это плюмажи, я полагаю.
Возглавляет силы зла

z5x1

  • Модератор
  • level 4
  • *****
  • Сообщений: 557
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Chrome 46.0.2490.86 Chrome 46.0.2490.86
    • Просмотр профиля
  • Раса: Орк
Re: Эра "Серебряный Век Веснота"
« Ответ #42 : Ноябрь 25, 2015, 15:16:47 »
Кавалерия забита завершена
« Последнее редактирование: Ноябрь 25, 2015, 15:18:48 от z5x1 »
Нам не страшен паладин, 40 нас, а он один =)

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1284
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 38.0 Firefox 38.0
    • Просмотр профиля
  • Раса: Мертвец
Re: Эра "Серебряный Век Веснота"
« Ответ #43 : Ноябрь 26, 2015, 13:52:27 »
Две новости сегодня у меня для вас.
Первое - эффект критического удара был несколько модифицирован (в целях логики, а не баланса). Отныне, юнит получивший критический удар, не только перестает отбиватся, но и уклонятся толком не может, что приводит к снижению его уворота до 10% - до конца данной стычки. Новый код абилки приведен ниже:
[event]
    id=critical_begin
    name=attack
    first_time_only=no
    [filter_attack]
special=critical hit
    [/filter_attack]
    [store_unit]
[filter]
    x=$x2
    y=$y2
        [/filter]
kill=no
variable=critical_wounded
    [/store_unit]
[/event]
[event]
    id=critical_event
    name=attacker hits
    first_time_only=no
    [filter_attack]
special=critical hit
    [/filter_attack]
    [if]
    [variable]
name=damage_inflicted
greater_than=14
    [/variable]
    [then]
    [command]
    [unstore_unit]
       variable=second_unit
       {COLOR_HARM}
       text= _ "CRITICAL HIT!"
       find_vacant=no
    [/unstore_unit]
    [object]
        silent=yes
        duration=forever
[filter]
    x=$x2
    y=$y2
        [/filter]
[effect]
    apply_to=remove_attacks
[/effect]
[effect]
    apply_to=defense
    replace=yes
            [defense]
               shallow_water=90
               reef=90
               swamp_water=90
               flat=90
               sand=90
               forest=90
               hills=90
               mountains=90
               village=90
               castle=90
               cave=90
               frozen=90
               fungus=90
            [/defense]
[/effect]
    [/object]
    [/command]
    [/then]
    [/if]
[/event]
[event]
    id=critical_end
    name=attack end
    first_time_only=no
    [filter_attack]
special=critical hit
    [/filter_attack]
    [store_unit]
[filter]
    x=$x2
    y=$y2
        [/filter]
kill=yes
variable=critical_wounded2
    [/store_unit]
    {CLEAR_VARIABLE critical_wounded2.modifications.object}
    [set_variables]
        name=critical_wounded2.modifications.object
        to_variable=critical_wounded.modifications.object
    [/set_variables]
    [set_variables]
        name=critical_wounded2.defense
        to_variable=critical_wounded.defense
    [/set_variables]
    [unstore_unit]
variable=critical_wounded2
    [/unstore_unit]
    {CLEAR_VARIABLE critical_wounded}
    {CLEAR_VARIABLE critical_wounded2}
[/event]
Все это еще более повышает ценность критического удара нанесенного в начале боя и почти ничего не меняет для попадания со второй или третьей попытки - какой смысл от повышения точности, если бить больше нельзя.

Второе - я не поленился и нарисовал большое и даже немного красивое древо юнитов, чтобы вы все могли наблюдать на нем за прогрессом работы (или за отсутствием оного):
« Последнее редактирование: Декабрь 07, 2015, 10:26:51 от DV »
Возглавляет силы зла

z5x1

  • Модератор
  • level 4
  • *****
  • Сообщений: 557
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Chrome 46.0.2490.86 Chrome 46.0.2490.86
    • Просмотр профиля
  • Раса: Орк
Re: Эра "Серебряный Век Веснота"
« Ответ #44 : Ноябрь 30, 2015, 12:41:44 »
2 лвл 3 завершающих линейку пикинера
Нам не страшен паладин, 40 нас, а он один =)