Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: HoMM III. Справочник. Руководство на русском языке
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
Леголегс
Привык? А где-то ещё так? Я только два места на шёл в физмиге, копипаст этого фрагмента. Больше нигде ни в физмиге, ни в доках ,ни на форумах не видел формул с N-1
Etoprostoya
ZNPC00.txt
Сманивает часть нейтральный монстров перед битвой.
Формула: 5%+(Уровень Командира-1)/2 но не более чем 20% Может творить Огненный Щит [Продолжительность = Сила]
и др.

А вообще я имел в виду, что я привык к формулам.
AmberSoler
Цитата(Леголегс @ 02 Jun 2010, 16:28)
Два числа сложить не сложно, а вот путаница с форулами "эн минус один" и "просто эн" - поле для ошибок. В вообще, чем короче, тем проще.
Я потому и обратил внимание, что "споткнулся" на этих формулах.
Формула носит структурный характер и показывает, что первый Дракон в стеке несет урон, который отличается от добавочного урона всех последующих юнитов в стеке. Возможно, что сходу она кажется не изящной, зато информативна. )) И не настолько она сложная, чтобы ее упрощать - хватает выкладок более тяжеловесных.
MasterOfPuppets
facepalm.gif
1. Игра - именно классическая, никаких воговских штук и правок текстовиков.
2.
Цитата
один юнит

У тебя имя существа во мн. числе - а, значит, он не один.
feanor
Цитата
В рукопашном бою при атаке может с вероятностью в 20 % наложить на противника заклинание Curse.

На самом деле, вероятность наложения заклинания - 25% для всех трех существ (и конников, и мумий). Проверено в экзешнике.
Haart of the Abyss
Обнаружена ранее неизвестная (по крайней мере, в FizMiG v1.15 я ни разу не встречал её описания) недокументированная особенность или баг игры. Просьба добавить её описание в следующую версию ФизМиГа.

Суть: золотые драконы (Оплот, уровень 7, улучшенные) и их трупы не могут быть воскрешены при помощи заклинания "Жертва". Отряд золотых драконов или их труп невозможно выделить в качестве первой (воскрешаемой) цели для заклинания. С принесением их самих в жертву всё нормально.
Пруфпик.
Обстоятельства обнаружения: мультиплеер, рандомная карта, финалка, в которую я специально потащил жирную пачку кентавров, дабы пожертвовать ими в пользу золотых драконов, и в результате жестоко обломался.
Версии, в которых замечена недокументированная особенность или баг: SoD 3.2 русский (впервые замечено), SoD 3.1 русский (проверено и подтверждено в условиях, приближенных к идеальным).
Дополнительная информация: носитель Сферы уязвимости получает возможность воскрешать своих золотых драконов "Жертвой", противник носителя Сферы уязвимости такой возможности не получает (стандартное поведение).
Дикое и необоснованное предположение по поводу природы недокументированной особенности: подозреваю, что, поскольку "Жертва" в отношении воскрешаемого отряда во всём подобна "Воскрешению" (Resurrect) (которое находится на четвёртом уровне), игра расценивает "воскрешающую" часть "Жертвы" как заклинание четвёртого, а не пятого уровня со всеми вытекающими (которых очень немного, ибо золотые драконы — единственные существа в игре, невосприимчивые к магии четвёртого уровня, но восприимчивые к магии пятого уровня).

P. S. Неплохо было бы также однажды увидеть в ФизМиГе упоминание о том, что, как я когда-то выяснил экспериментальным путём (о чём сообщил где-то на этом форуме), продолжительность заклинания "Берсерк" и "привязки к месту" дендроидов не бесконечна (если их не снять, спустя очень большое количество ходов — предположительно 1024 хода — они спадают сами).
SAG19330184
Цитата(Лорд Хаарт @ 31 Jan 2011, 01:36) *
Обнаружена ранее неизвестная (по крайней мере, в FizMiG v1.15 я ни разу не встречал её описания) недокументированная особенность или баг игры.

неужто нет в физмиге? давно известная фича. воскресительная часть работает как уровень 4, а убийственная - как уровень 5
SAG19330184
перечитал ФизМиг и думаю что надо кой чего дополнить:
стр 62 "Следственно, после продажи дорогого артефакта игрок имеет возможность сознательно продать дешевые арты по завышенной цене." SAG: продавать сначала дорогой арт необязательно, можно сразу продавать дешевый
стр 62. думаю, раз уж раздел багов есть, то нужно описать один из самых известных багов - "Герой-призрак". Если у героя вообще нет армии, то он получает максимально возможное кол-во мувпоинтов после ночевки (2000). Этого можно добиться например в экране обмена армии - если у обоих героев осталось только по 1 юниту, то попытка "передать" его второму герою будет успешной. В мультиплеере использование этого бага обычно считается читом.
стр 10. Хижина Ведьмы. Примечание: на случайных картах в Хижине отключены следующие навыки: Armorer, Artillery, Earth Magic, First Aid, Intelligence, Learning, Navigation, Necromancy, Offence, Resistance, Scholar, Sorcery, Tactics, Water Magic
стр 2. Разрушающий луч. Примечание: единственное заклинание которое действует после смерти стека. Я тестировал с Sacrifice, думаю что аналогично будет и с Воскрешением и Animate Dead. Возможно яд действует аналогично, но вряд ли (не проверял).
стр.17 было бы полезно добавить чем снимается эффект заклинания.
например: Яд, Замедление, Корни - чем снимается: антимагией, диспелом, лечением, ускорением? Таблицу постараюсь прислать дополнительно.
стр 17. дополнение по заклинанию Thunderbolt: работает в антимагическом гарнизоне, с красной орбой и с плащом, но не работает на земле проклятых (источник: Rainalcar).
стр 27. SAG: если бой на земле, которая граничит с водой, то независимо от типа этой земли бой будет на Песке и бонусов родной земли не будет ни у одной из сторон. (к Песку вроде нет родных существ?)
стр 27. утверждение "В зависимости от вида грунта и типа (расы), к которому принадлежит герой, а также в зависимости от происхождения армии, которой обладает герой, определяется будет ли герой иметь штраф логистики при передвижении по этой почве. " - не совсем верно. Влияет только тип армии и тип земли.
SerAlexandr
Цитата(SAG19330184 @ 25 Jul 2011, 20:01) *
(к Песку вроде нет родных существ?)

А что там с кочевниками lupa.gif Я уж не помню, на самом-то деле...
feanor
Цитата
А что там с кочевниками

Кочевники дают снятие штрафа ходьбы по песку, но, как нейтралы, не имеют родной земли.
Haart of the Abyss
Да, кстати, дфач же поднялся, значит, можно запостить сюда обнаруженную мной в то время, когда форум был недоступен, недокументированную в ФизМиГе особенность игры.

Цитата
Произошла одно из тех событий, ради которых я и играю в мультиплеер: я узнал что-то новое. Как я заметил, убивая закаменённых василисками медуз и бехолдеров оппонента, двукратное уменьшение окаменением урона, наносимого атаками окаменевшему существу, имеет то же свойство, что и Воздушный Щит: вместо уменьшения урона башен увеличивает его вдвое.



Комментарий к скриншоту: нормальный урон центральной башни вдвое больше, чем боковых. Центральная башня стреляла по каменным медузам, боковые уже по раскаменённым.


P. S. ФизМиГ вообще обновлять собирается кто? А то со времени выхода прошлой версии прошло не меньше двух лет.
Etoprostoya
Буквально вчера автор ФизМига тут ходил, но, видно, в эту тему не заглядывал.
Sav
Вот 2 последние страницы. Если кто-нибудь подскажет лёгкий способ копирования из них непосредственно текста сообщения, вставлю в виде постов.

http://df2.ucoz.ru/2012/02/05/464697356-1328460199.txt
http://df2.ucoz.ru/2012/02/05/988880723-1328460218.txt

Переименовались в txt зачем-то...
magoth
Цитата(Sav @ 05 Feb 2012, 20:45) *
Вот 2 последние страницы. Если кто-нибудь подскажет лёгкий способ копирования из них непосредственно текста сообщения, вставлю в виде постов.

Собрал в нормальный вид, пользуйся... smile.gif
http://df2.ucoz.ru/2012/02/05/265675127-1328461854.rar

CRC32: C9B2D264
MD5: F33AC53990330BFB6B24B23F43331687
SHA-1: E9C8321E85E527F97AFD0BB33FC36BD24B7D86A6
Sav
Пользоваться-то я и htm`ками могу, они просто при заливке переименовались в txt. А вот чтобы переотпостить, мне нужно получить тексты сообщений в виде тегов, понимаемых форумом; как это сделать, я не знаю.
magoth
Sav,
Ни как не сделать, только ручками дублировать, ибо все теги в виде нтмл-кода...
magoth
Вот собсно перенес первую страницу, думаю нормально?!


Цитата("Berserker")
Так поиск пути же. Формируется массив из клеток, по которым пойдёт отряд. Длина массива и есть расстояние. Поэтому - расстояние и есть кол-во шагов. Берсерк не смотрел, в функцию расчёта урона передаётся уже кол-во шагов.


Цитата("AlexSpl")
Для пеших понятно. А для летающих?


Цитата("Sav")
А какая разница? Летающие же ничем принципиально не отличаются.


Цитата("AlexSpl")
Цитата
А какая разница? Летающие же ничем принципиально не отличаются.


Под "Берсерком" летающие отряды очень странно вычисляют расстояния:
Berserk 1

И особенно:
Berserk 2


Цитата("Berserker")
Реализация Берсерка, на мой взгляд, содержит баги и всего-то.


Цитата("phdoc")
Наконец-то собрался написать про формулу расчета урона в части вклада в неё компонента "Удача".
Итак, формула из FizMiG, реализующая алгоритм вычисления урона:
Код
D(sum) = [D(bas)+MD(bas)+M(of)+M(luck)] * [1-M(def)]

где
M(luck)=D(bas)
D(bas) - базовый урон юнита, выбираемый из интервала [Dmin;Dmax]

При реализации алгоритма у себя, столкнулся с нюансом, описанным здесь: http://forum.heroesland.com/viewtopic.php?f=7&t=193
Если коротко про суть проблемы, то заключение о том, что "...в случае срабатывания удачи во время нанесения удара, юнит наносит дополнительно урон равный базовому урону D(bas), определенному для этого раунда боя" (© FizMiG) - не совсем верно. Очень похоже на то, при удаче просто удваивается результирующий "безудачный" урон D(sum).



Цитата("Sav")
Насчёт новых недель и месяцев.

При генерации новой недели в 25% случаев происходит +5 единиц монстра и 75% - ничего (всякие там муравьеды не стоят наравне с монстрами и генерируются отдельно при выпадении этих 75%).
Монстры могут выпасть только принадлежащие городу и только имеющие неотрицательный уровень. При этом в картах RoE (не уверен на 100%, но по всей видимости) не выпадают монстры сопряжения. Шансы всех монстров равны.

При генерации нового месяца в 50% случаев ничего не происходит (всякие дождевые черви и т. п.), в 40% генерируется монстр и в 10% - чума.
Уровень сложности никак не влияет. Единственное - в обучении месяцев монстров и чумы не может быть вообще.

Монстры действительно берутся из указанных в ФизМиГе 12-ти. Шансы выпадения каждого равны.
Количество монстров = (случайное число от минимального количества монстра на карте в начале игры до максимального количества монстра на карте в начале игры) * 2, если оно больше 4095, оно приравнивается к 4095.
Минимальные и максимальные количества легко проверить через erm. Они общие для всех городских существ одинаковых уровней. К примеру, 1-й дегрейд: 20-50, 1-й грейд 20-30, 7-й грейд: 3-8.
Агрессивность появляющихся монстров случайная - от 1 до 10 с равными шансами, эти монстры всегда могут увеличиваться в количестве и убегать.

Количество появляющихся монстров не определено, у каждой доступной (без воды и т. п.) клетки карты есть 0.5% шанса, что на ней появится монстр. То есть теоретически монстры могут появиться сразу на всех клетках или ни на одной.

Всё выяснено по коду. Могу привести доказательства - декомпилированные участки.

Тут была картинка, она умерла. sad.gif


Цитата("Shurup")
Хотелось бы по уточнений по поводу "случайноси" месяца кого-то. Иногда неделя чумы "лечится" загрузкой автосейва, а иногда нет.

В принципе "случайности" чего-то в героях вообще нужно отдельную статью посвещать.


Цитата("Sav")
Случайные числа, управляющее срабатыванием недели/месяца, так же как и случайные числа, управляющие номером выпавшего монстра генерируются прямо при наступлении новой недели/месяца.

Так что теоретически они "лечиться" должны. Но поскольку, они, скорее всего, основываются на seed'е, то при одинаковом количестве срабатываний ГСЧ при ходе ИИ seed окажется таким же (а значит, таким же будет и результат рандома). Измениться он может либо при какой-нибудь переинициализации (например установки текущего времени в качестве нового seed), либо при неодинаковом количестве срабатывания ГСЧ (что может быть либо от изменённых действий игрока, либо если количеством действий, требующих генерации случайного числа, где-то у ИИ выступило сгенерированное по времени число).
Думаю, как-то так.


Цитата("Berserker")
Приведи декомпилированные участки в псевдокоде 4GL уровня с подсветкой и комментариями.
Ноториально заверенные скриншоты тоже баллов накинут.


Цитата("Sav")
Ну, что есть - то есть.

Код
__int16 __thiscall A0_Town_GrowCreaturesCount_sub_5C01D0(void *this, int SpecCreature1, int SpecCreature2, int SpecAddCount)
{
  int MonsterLevel_v4; // ebx@1
  int MonsterLevel_v5; // edi@1
  int this_v6; // esi@1
  int Growth_v7; // eax@2
  int CrearureType_v8; // ecx@3
  int v10; // [sp+Ch] [bp-4h]@1

  this_v6 = this;
  MonsterLevel_v5 = 0;
  MonsterLevel_v4 = 0;
  v10 = (this + 22);
  do
  {
    LOWORD(Growth_v7) = A0_Get_Town_Creature_Growth_sub_5BFF60(this_v6, MonsterLevel_v5);
    if ( Growth_v7 > 0 )
    {
      CrearureType_v8 = Town_Monsters_dword_6747B4[MonsterLevel_v4 + 14 * *(this_v6 + 4)];
      if ( CrearureType_v8 == SpecCreature1 || CrearureType_v8 == SpecCreature2 )
        Growth_v7 += SpecAddCount;
      if ( *(this_v6 + 1) == -1 )
        LOWORD(Growth_v7) = Growth_v7 / 2;
      *v10 += Growth_v7;
    }
    ++MonsterLevel_v5;
    ++MonsterLevel_v4;
    v10 += 2;
  }
  while ( MonsterLevel_v5 < 14 );
  return Growth_v7;
}


Код
SpecCreature1_v71 = -1;
  SpecCreature2_v64 = -1;
  dword_6977A0 = 0;
  NewWeek_Monster_dword_69844C = RandInt_sub_50C7C0(0, 14);
  SpecAddCount_v68 = 5;                         // + 5 единиц
  if ( *(this_v1 + 64288) != 4 )                // Не новый месяц
  {
    if ( RandInt_sub_50C7C0(1, 4) == 1 )
    {
      dword_6977A0 = 1;
      Monster_type_v3 = *(this_v1 + 32166) != 0 ? 144 : 117;// В зависимотсти от типа карты: если RoE, то 117
      if ( (*(this_v1 + 32166) != 0 ? 0x1B : 0) != -118 )
      {
        Monste_info_v4 = &(*off_6747B0)[29 * Monster_type_v3];// Информация о монстре
        do
        {
          if ( *(this_v1 + 32166)
            || Monster_type_v3 != 112 && Monster_type_v3 != 113 && Monster_type_v3 != 114 && Monster_type_v3 != 115 )// Воздушный, земляной, огненныи и водный элементали
          {
            if ( *Monste_info_v4 != -1 )        // Если монстр - из города
            {
              if ( Monste_info_v4[1] >= 0 )     // Если монстр имеет уровень >= 0
                ++v2;                           // Учитываем его в количестве монстров
            }
          }
          Monster_Type_Check_v5 = Monster_type_v3--;
          Monste_info_v4 -= 29;
        }
        while ( Monster_Type_Check_v5 );
      }
      v8 = *(this_v1 + 32166);
      v7 = Rand_sub_61842C() % v2;
      v6 = v8 != 0 ? 144 : 117;
      if ( (v8 != 0 ? 0x1B : 0) != -118 )
      {
        v9 = &(*off_6747B0)[29 * v6];
        do
        {
          if ( v8 || v6 != 112 && v6 != 113 && v6 != 114 && v6 != 115 )
          {
            if ( *v9 != -1 )
            {
              if ( v9[1] >= 0 )
              {
                if ( v8 || v6 == 112 || v6 == 113 || v6 == 114 || v6 == 115 || *v9 != 8 )
                {
                  v10 = v7--;
                  if ( v10 <= 0 )
                    break;
                }
              }
            }
          }
          v11 = v6--;
          v9 -= 29;
        }
        while ( v11 );
      }
      NewWeek_Monster_dword_69844C = v6;
      SpecCreature1_v71 = v6;
    }
  }
  v14 = 0;
  v12 = 0;
  v13 = *(this_v74 + 34181);
  while ( v13 )
  {
    v15 = (*(this_v74 + 34182) - v13 + ((-1240768329i64 * (*(this_v74 + 34182) - v13)) >> 32)) >> 8;
    if ( v14 >= (v15 >> 31) + v15 )
      break;
    v16 = *(this_v74 + 34181) + v12;
    if ( *(v16 + 4) == 3 && qword_66CE68 & *(v16 + 336) )
    {
      dword_6977A0 = 2;
      SpecCreature2_v64 = 43;                   // Чёрт.
      SpecCreature1_v71 = 42;                   // Бес.
      SpecAddCount_v68 = (*off_6747B0)[1235];
      NewWeek_Monster_dword_69844C = 42;
      break;
    }
    ++v14;
    v12 += 360;
  }
  v18 = 0;
  for ( i = 0;; i += 360 )
  {
    v19 = *(this_v74 + 34181);
    if ( !v19 )
      break;
    if ( v18 >= (*(this_v74 + 34182) - v19) / 360 )
      break;
    A0_Town_GrowCreaturesCount_sub_5C01D0(
      (i + *(this_v74 + 34181)),
      SpecCreature1_v71,
      SpecCreature2_v64,
      SpecAddCount_v68);
    ++v18;
  }


Код
v1 = RandInt_sub_50C7C0(1, 10);
  if ( dword_6977A0 != 2 )                      // Нет бога огня (недели бесов)
  {
    if ( v1 <= 5 || *(this_v2 + 128669) )       // Если это обучение, то никаких монстров не появляется
                                                // Если это не обучение - появляется в 50% случаев
    {
      dword_698884 = 0;
      v3 = RandInt_sub_50C7C0(0, 9);
    }
    else
    {
      if ( v1 > 9 )
      {
        dword_698884 = 2;                       // Неделя чумы
        goto LABEL_10;
      }
      dword_698884 = 1;
      v3 = New_Month_Creatures_byte_63E678[RandInt_sub_50C7C0(0, 11)];
    }
    dword_697798 = v3;                          // Тип существа
    goto LABEL_10;
  }
  dword_698884 = 1;
  dword_697798 = 42;                            // Бес
LABEL_10:
  v4 = 0;
  v17 = 0;
LABEL_11:
  v5 = *(this_v2 + 34181);
  if ( v5 )
  {
    v6 = (*(this_v2 + 34182) - v5 + ((-1240768329i64 * (*(this_v2 + 34182) - v5)) >> 32)) >> 8;
    if ( v4 < (v6 >> 31) + v6 )
    {
      Creature_Level_v19 = 0;
      CreaturesInTow_Count_Offset_v7 = 22;
      while ( 1 )
      {
        if ( v4 == -1 )
          Town_Info_v8 = 0;
        else
          Town_Info_v8 = *(this_v2 + 34181) + 360 * v4;
        if ( A0_Get_Town_Creature_Growth_sub_5BFF60(Town_Info_v8, Creature_Level_v19) > 0 )// Если прирост > 0
        {
          if ( dword_698884 != 1 )
            goto LABEL_23;
          if ( dword_6977A0 != 2                // Нет бога огня (недели бесов)
            && Town_Monsters_dword_6747B4[Creature_Level_v19 + 14 * *(Town_Info_v8 + 4)] == dword_697798 )// Существа соответствуют существам месяца
          {
            *(CreaturesInTow_Count_Offset_v7 + Town_Info_v8) *= 2;// Удваиваем количество
LABEL_23:
            if ( dword_698884 == 2 )            // Неделя чумы
            {
              *(CreaturesInTow_Count_Offset_v7 + Town_Info_v8) -= A0_Get_Town_Creature_Growth_sub_5BFF60(
                                                                    Town_Info_v8
,
                                                                    Creature_Lev
el_v19);// Отнимаем прирост (который был дан за новую неделю)
              if ( *(CreaturesInTow_Count_Offset_v7 + Town_Info_v8) < 0 )// Избегаем отрицательного количества
                *(CreaturesInTow_Count_Offset_v7 + Town_Info_v8) = 0;
              *(CreaturesInTow_Count_Offset_v7 + Town_Info_v8) >>= 1;// Уменьшаем оставшееся колчество вдвое
            }
            goto LABEL_27;
          }
        }
LABEL_27:
        CreaturesInTow_Count_Offset_v7 += 2;    // Переходим к следующему существу города
        ++Creature_Level_v19;
        if ( CreaturesInTow_Count_Offset_v7 > 50 )// Если существа в городе закончились, переходим к следующему городу
        {
          ++v17;
          v4 = v17;
          goto LABEL_11;
        }
        v4 = v17;
      }
    }
  }
  if ( dword_698884 == 1 )                      // Если неделя с удвоением существ...
  {
    for ( i = 0; i < *(this_v2 + 130120) + 1; ++i )
    {
      v18 = 0;
      if ( dword_6783C8 > 0 )
      {
        v9 = dword_6783CC;
        do
        {
          v10 = 0;
          if ( v9 > 0 )
          {
            do
            {
              v12 = *(this_v2 + 32528) + 38 * (v10 + *(this_v2 + 32529) * (v18 + i * *(this_v2 + 32529)));
              v11 = *(v12 + 12);
              if ( !(HIBYTE(v11) & 0x10) )
              {
                if ( v11 & 0x40 )
                {
                  v13 = *(v12 + 4) & 0xFF;
                  if ( v13 != 8 )
                  {
                    if ( v13 != 9 )
                    {
                      if ( *(v12 + 30) != 26 )
                      {
                        if ( RandInt_sub_50C7C0(1, 200) == 1 )
                        {
                          A0_Place_Object_sub_4C9550(this_v2, v10, v18, i, 71, dword_697798, 0);
                          *v12 ^= (*v12 ^ (2
                                         * RandInt_sub_50C7C0(
                                             (*off_6747B0)[29 * dword_697798 + 27],
                                             (*off_6747B0)[29 * dword_697798 + 28]))) & 0xFFF;// Случайное число: от минимального стартового значения на карте до максимального
                          *v12 = *v12 & 0xFFFE0FFF | ((RandInt_sub_50C7C0(1, 10) & 0x1F) << 12);// Агрессивность от 1 до 10, может убегать и увеличиваться
                        }
                      }
                    }
                  }
                }
              }
              v9 = dword_6783CC;
              ++v10;
            }
            while ( v10 < dword_6783CC );
          }
          v15 = __SETO__(v18 + 1, dword_6783C8);
          v14 = v18++ + 1 - dword_6783C8 < 0;
        }
        while ( v14 ^ v15 );
      }
    }
    sub_4CA0D0(this_v2);
  }



Цитата("Berserker")
Сав, с тобой, я смотрю, шутки плохи )))


Цитата("Adept")
Цитата
(Sav @ 28 Dec 2011, 18:22) Ну, что есть - то есть.

Я в кодах не разбираюсь, но было у меня такое впечатление (основанное сугубо на практике), что генерирующиеся монстры принадлежат только к тем городам, которые есть на карте. То есть, если на карте скажем Некрополис и Замок, плюс пара нейтральных Оплотов и Башен, то недели импов/гоблинов/гноллов не будет.

Это и подразумевалось под «монстр из города» или нет и у меня ошибочное представление?


Цитата("Sav")
Нет, просто при составлении выборки подходящих монстров для случайного выбора проверяется тип города монстра, и если он равен -1 (т. е. не принадлежит никакому городу вообще, у него на фоне при промотре нет форта города), то монстр не попадает в выборку.
Правда, есть отдельная проверка на монстров сопряжения - они не могут выпасть на картах RoE.

В месяце же монстра может выпасть любой из 12, независимо вообще ни от чего (он просто выбирается из специального списка монстров месяца, безо всяких проверок).


Цитата("Sav")
Шансы выпадения у сказочного дракона того или иного закла:
  • Ледяная молния: 16/153
  • Удар молнии: 17/153
  • Огненный шар: 21/153
  • Волшебная стрела: 15/153
  • Кольцо холода: 20/153
  • Цепная молния: 19/153
  • Метеоритный дождь: 23/153
  • Инферно: 22/153


Генерируются при получении хода на основе специальной таблицы; шанс = (номер заклинания)/(сумма номеров всех доступных для выпадения заклинаний).


Цитата("Sav")
Хм, сейчас подумал, - вышеописанная ситуация, скорее всего, является багом. Дело в том, что на самом деле таблица с заклинаниями для дракона содержит 16, а не 8 значений. Но используются они через одно, начиная с первого, остальные не используются вообще. Видимо, вторые значения - это шансы (о чём говорит так же их преимущественная круглость), вместо которых по ошибке используются номера. Завтра приведу здесь всю таблицу.


Цитата("Crodo")
А на сказочных драконах, случайно, нет постоянного волшебного зеркала?


Цитата("Sav")
Есть, но не как заклинание, а как свойство (т. е. не снимается и, возможно, имеет другие проценты и механику).


Цитата("Adept")
Цитата
(Sav @ 28 Dec 2011, 03:11) ... поскольку, они, скорее всего, основываются на seed'е..

А что что это самое «seed»? И что ещё от него зависит? Ну либо где про него можно почитать подробнее.


Цитата("Sav")
Обычно случайные числа генерируются по какому-нибудь сложному математическому алгоритму, который принимает на вход какое-то число и возвращает непредсказуемый результат (для бытового понимания, понятно что на самом деле любой математический алгоритм даёт предсказуемый результат). При этом результат сначала возвращается в виде какого-то большого числа, которое потом при помощи, например, взятия остатка от деления по нужному делителю, преобразуется в число из нужного диапазона.
Результат (имеется ввиду "большое" число до преобразования) является текущим seed'ом и используется как входное число при следующей генерации. При этом, т. к. это математический алгоритм, при одинаковых входных данных он будет возвращать одинаковые результаты. Поэтому, если в какие-то моменты времени seed'ы будут одинаковыми, то и последовательности случайных чисел будут одинаковыми.
Иногда (как минимум - при запуске игры или карты - надо же брать откуда-то входные данные для первой генерации) в качестве seed берётся текущее время, что нарушает одинаковость последовательностей и делает числа действительно случайными.

Чтобы где-то об этом было хорошо написано, я не знаю, возможно, гугл по ГСЧ или ГПСЧ выведет куда-нибудь.


Sav
Спасибо.
Docent Picolan
magoth
а не поможешь с хотовским разделом похожим образом посты выложить? очень было бы полезно.

я как раз только что там объяву на этот счет повесил. и после прочтения этой темы ещё и ссылку сюда в качестве примера дал)
magoth
Добавил вторую... smile.gif


Цитата("tolich")


Цитата("Sav")
Там как-то слишком расплывчато написано для конкретного вопроса про seed.


Цитата("tolich")
А что про seed можно сказать конкретно? Это же русский раздел, там вообще слова seed быть не должно. Конкретно говоря, seed - текущее значение псевдослучайной последовательности.


Цитата("Sav")
Слово "seed", как и "зерно", в статье встречается ровно один раз.
В общем, я предпочёл попытаться объяснить своими словами.


Цитата("Adept")
То есть когда говорят «при битве с ограми у них выпадает мораль в одном и том же месте, при той же последовательности действий, сколько бы я не перезагружался! что делать!!11» либо «да фигня ваши рандомы, я вот перезагрузился и при той же последовательности действий мораль уже не сработала» то в этом виновато именно вот это вот «seed»?

Просто до этого мне встречалось только одно объяснение этих расхождений — дескать якобы дело в винде.


Цитата("SerAlexandr")
Он виноват, родимый. Запилил бы кто-нибудь из гуру реверсинга мод, сохраняющий зерно ГСЧ при передаче хода (и восстанавливающий при получении, конечно), было бы весело. Наверно.


Цитата("Sav")
MoP вроде что-то делал с рандомом. Правда, насколько я понял, он seed стандартного не трогал, а сделал свой алгоритм.

Так-то я знаю, где находится функция рандома, можно попробовать разобрать и понять, где хранится seed. Тем более, что в Хоте рандом поломался и его всё равно придётся чинить...


Цитата("SerAlexandr")
А насколько я помню, он генерил 1000 чисел и хранил их в сейве. Перезапустили - последовательность та же самая.


Цитата("Sav")
Вот какие шансы, видимо, предполагались для сказочного дракона:
  • Ледяная молния: 22%
  • Удар молнии: 22%
  • Огненный шар: 21%
  • Волшебная стрела: 10%
  • Кольцо холода: 10%
  • Цепная молния: 5%
  • Метеоритный дождь: 5%
  • Инферно: 5%



По-моему, очень похоже на правду.
Напомню на всякий случай - это не реальные шансы, а основанное на данных игры предположение о том, какими они должны были бы быть. Реальные шансы - на прошлой странице.




Docent Picolan
Цитата
а не поможешь с хотовским разделом похожим образом посты выложить? очень было бы полезно.

Можно попробовать. smile.gif


Зы, И еще вопрос. Тебе как, каждый пост отдельно или одну страницу на один пост ?!
J2K
В ФизМиге про сферу подавления написано, что она запрещает ипользование любой магии. Это не совсем правда. В самой игре написано, что она предотвращает использование любых заклинаний во время сражения. Ну это тоже не правда. Суть в том, что если выдать герою альянс ангелов (ну ладно, ангельский альянс), то он скастует молитву даже со сферой у героя. Тот же эффект и с доспехом проклятого.
Etoprostoya
Цитата(J2K @ 05 Apr 2012, 11:46) *
В ФизМиге про сферу подавления написано, что она запрещает ипользование любой магии. Это не совсем правда. В самой игре написано, что она предотвращает использование любых заклинаний во время сражения. Ну это тоже не правда. Суть в том, что если выдать герою альянс ангелов (ну ладно, ангельский альянс), то он скастует молитву даже со сферой у героя. Тот же эффект и с доспехом проклятого.

Альянс Ангелов и Доспехи Проклятого кастуют до сражения.
А вот рыцари смерти, виверны-монархи и кое-кто ещё спокойно кастуют свои "встроенные" заклинания во время атаки, невзирая на сферу подавления и антимагические гарнизоны. По крайней мере с гарнизонами точно.
Sav
Цитата(etoprostoya)
Альянс Ангелов и Доспехи Проклятого кастуют до сражения.

Неправда, они кастуют перед первым ходом первого стека владельца.


Вообще, я когда-то смотрел (чисто визуально) действие резистов на заклинания существ, и сфера как-то хитро на них действует. По-разному на разных. Ну и со сказочным драконом получаются просто глюки.
Marmot
Цитата
Альянс Ангелов и Доспехи Проклятого кастуют... перед первым ходом

Да, они работают, невзирая на Сферу запрещения и даже в антимагических гарнизонах!
Цитата
А вот рыцари смерти...

А при атаках существ запрет на магию игра просто не проверяет (недоделка, скорее всего). sad.gif
Цитата
виверны-монархи и кое-кто ещё

Яд виверн, окаменение от взгляда медуз и василисков - это не магия, поэтому здесь "всё законно!" smile.gif
Sav
Цитата(Marmot)
А при атаках существ запрет на магию игра просто не проверяет (недоделка, скорее всего)

Не всё так просто, на самом деле проверяет, но как-то хитро. У стрекоз, например, 100% видел вызов функции для проверки возможности наложения слабости.
hippocamus
"Если не можешь победить мафию - её нужно возглавить!"
Таким образом, стоит определиться, что конкретно из способностей существ и артефактов должно работать при полном резисте - и соответственно к этому подогнать реальность smile.gif

Мне кажется, что все пассивные касты (Слабость стрекоз, Болезнь зомби) - должны работать, они в данном случае - не заклинания. Это действие секрета насекомого или бактерий. О яде и окаменении тем более речь не идёт. Можно подумать только насчёт проклятия Мумий - всё-таки это трудно свести к физиологии... Старость Драконов-призраков - тоже под вопросом. Нарезка демонов работать должна. Как и свойства привидений, вампиров, рыцарей смерти и могучих горгон.
Сказочный дракон обречён просто кусаться. Параметры у него неплохие. Ну и - Архангелы, джинны, элементали, огры-маги - должны быть лишены своих способностей.
Сборники, думаю, работать НЕ должны (может, кроме Грохота Титанов?)
А ещё хотелось бы предложить возможность специалистам по заклинаниям ТВОРИТЬ профильное заклинание. Где бы то ни было. Хоть в антимагическом гарнизоне, хоть на Проклятой земле, хоть с Плащом отречения, хоть со сферой запрещения. Может даже вплоть до пробивания Антимагии. Это немного компенсирует их лоханутость в конце игры.
tolich
> проклятия Мумий трудно свести к физиологии...
ты воспринимаешь слово "проклятие" с точки зрения профессии, а это всего лишь ещё один вид болезни

> Старость Драконов-призраков
люди седеют от страха

> возможность специалистам по заклинаниям
не нужно, хотя бы ради Луны
AmberSoler
Цитата(J2K @ 05 Apr 2012, 11:46) *
В ФизМиге про сферу подавления написано, что она запрещает ипользование любой магии. Это не совсем правда. В самой игре написано, что она предотвращает использование любых заклинаний во время сражения. Ну это тоже не правда. Суть в том, что если выдать герою альянс ангелов (ну ладно, ангельский альянс), то он скастует молитву даже со сферой у героя. Тот же эффект и с доспехом проклятого.

В справочнике есть статья "Юниты - маги. Заклинания, доступные монстрам." (стр. 64)
Там указаны многие моменты взаимодействия Сферы подавления с абилками юнитов (все проверялось вручную).
tolich
Мда, только она называется на этой странице "Сфера запрещения", а не "подавления", да и ссылки в Содержании, вроде бы, нет.
AmberSoler
Цитата(tolich @ 09 Apr 2012, 16:24) *
Мда, только она называется на этой странице "Сфера запрещения", а не "подавления", да и ссылки в Содержании, вроде бы, нет.

А как правильно?

Ссылка в содержании есть - на общее название статьи, а изложить в названии все моменты, которые содержатся в самой статье невозможно по некоторым, вполне понятным причинам.
tolich
>> А как правильно?
'Inhibition' — это и подавление, и запрещение, и ингибирование (химический термин), так что все варианты, вроде бы, допустимы. Речь о том, чтобы одинаково называлось, а то в одном месте так называется, в другом иначе.
AmberSoler
Цитата(tolich @ 10 Apr 2012, 10:15) *
>> А как правильно?
'Inhibition' — это и подавление, и запрещение, и ингибирование (химический термин), так что все варианты, вроде бы, допустимы. Речь о том, чтобы одинаково называлось, а то в одном месте так называется, в другом иначе.
Так и не понял суть вашего вопроса, если честно...

"Сфера запрещения" - этот термин используется в Справочнике.

"Сфера подавления" - термин, который использует автор вопроса:
Цитата(J2K @ 05 Apr 2012, 11:46) *
В ФизМиге про сферу подавления написано, что она запрещает...


Мой ответ на вопрос звучал "на языке" автора самого вопроса, дабы не вносить дополнительной сложности в суть конкретного диалога. А самый лучший вариант - это использовать термин 'Inhibition' - полностью согласен. Но увы, люди используют термины различных переводов, потому накладки неизбежны...

J2K
Цитата(AmberSoler @ 11 Apr 2012, 10:00) *
Мой ответ на вопрос звучал "на языке" автора самого вопроса, дабы не вносить дополнительной сложности в суть конкретного диалога. А самый лучший вариант - это использовать термин 'Inhibition' - полностью согласен. Но увы, люди используют термины различных переводов, потому накладки неизбежны...




Я задавал вопрос по тому, как написано в ФизМиге именно для того, чтобы не было накладок:



А в статье про Юнитов-магов, она "Сфера запрещения".

AmberSoler
Цитата(J2K @ 11 Apr 2012, 11:25) *
Я задавал вопрос по тому, как написано в ФизМиге именно для того, чтобы не было накладок:

Вот где собака зарыта оказывается. )) К сожалению, вынужден признать, что по тексту справочника много мест, где не наблюдается унификация терминов. Увы, этот вопрос на сегодня вряд ли может быть решен, ибо потребует очень много времени на оптимизацию. В любом случае, благодарю за напоминание.
Berserker
Не знаю, указано ли это в справочнике или нет, но такая тупость выходит, что максимальный бонус к стрелковой атаке = 350% от базового урона. 300% - это предел превышения параметра Атака над параметром Защита. +50% за экспертную стрельбу. Все остальные артефакты на стрельбу идут лесом. Это печально, но предел есть предел.
Marmot
Цитата
Все остальные артефакты на стрельбу идут лесом. Это печально, но предел есть предел.

Вообще, жаль, но не забывайте: артефакты на стрельбу - это ведь еще и Золотой лук, и Лук снайпера, а они значат больше, чем простое увеличение урона, особенно ЛС: стельба на любое расстояние без штрафов и возможность стрелять в любой ситуации, когда вражеский стек встал вплотную!
Sav
Цитата(Berserker)
Не знаю, указано ли это в справочнике или нет, но такая тупость выходит, что максимальный бонус к стрелковой атаке = 350% от базового урона. 300% - это предел превышения параметра Атака над параметром Защита. +50% за экспертную стрельбу. Все остальные артефакты на стрельбу идут лесом. Это печально, но предел есть предел.

Где ты такое увидел? В коде я не видел ограничения на бонусы, сейчас попробовал в Эре (дал снайперу атаку и урон 100), герою дал экспертную стрельбу и 1 снайпера - без артов наносит 450 урона, с 3 артами - 480.
Berserker
Без понятия, как вышло в прошлом сохранении, но похоже, что я не прав. Перепроверил в новом.

Без артов (Атака: 125, если что, под чашей):
http://www.imagepost.ru/images/s/av/sav1.jpg
A[0] D[26] DM = (1065 + 350.0% (3727) + 0) * 0.50 = 2396; ID[TRUE] DI[18: 1-151] TH[TRUE]; @@

С артами: (стрелы из перьев и тетива)
http://www.imagepost.ru/images/s/av/sav2.jpg
A[0] D[26] DM = (1065 + 374.9% (3993) + 0) * 0.50 = 2529; ID[TRUE] DI[18: 1-151] TH[TRUE]; @@
SAG19330184
Цитата(Berserker @ 17 May 2012, 14:52) *
Без понятия, как вышло в прошлом сохранении, но похоже, что я не прав.

вот так рождаются нездоровые сенсации (С) Стругацкие
Sav
Порядок проверки гексов при вызове клона (проверяются гексы в порядке возрастания номеров, на первый свободный ставится клон).

Для одноклеточного:
https://www.dropbox.com/s/45dxj8e8geudsm2/clone1.jpg

Для 2-клеточного (клетки с цифрами - задняя часть вызываемого клона):
https://www.dropbox.com/s/dl8cxnvm3xl9427/clone2.jpg

Если стек повёрнут в другую сторону, чем стрелка, схема отражается по-горизонтали.

Если на все отмеченные гексы поставить клон нельзя, он не вызывается вообще (и показывается соответствующее сообщение).

При этом у двуклеточного такие особенности, являющиеся багом игры:
Если гекс 11 на схеме свободен, то при проверка 11, а так же промежуточные проверки между 21 и 22; 31 и 32; 41 и 42; 51 и 52; 61 и 62; 71 и 72; 81 и 82; 91 и 92 проходят и клон "вызывается" на клетку 11 (частично накладываясь на клонируемый стек). При этом сам клон не видим и не интерактивен, в бою не участвует, а клонируемый стек становится невидимым до первого действия.
Независимо от занятых гексов, если проверка доходит до 28, 38, 48, 58, 68, 78, 88 или 98, то клон сразу пытается вызваться на клетку клонируемого стека, при этом он не вызывется, но клонируемый стек исчезнет по истечении длительности заклинания или после боя.
Berserker
Мда.
Marmot
Я уже писАл где-то: у меня не раз были неприятности с клонированием архангелов (насчет других 2-гексовых юнитов не помню), выражавшиеся в вышеназванном глюке с превращением стека в невидимку, а через пару ходов вообще происходил вылет игры. Это было досадно, потому что бои были нелегкие, а приходилось повторять их сначала; особенно обидно, когда всё идет, как надо, и победа уже близка, и тут такой облом! sad.gif

Мое собственное наблюдение: нигде не сказано, но стек, погибший на мосту или на гексе прямо перед мостом со стороны замка, не воскрешается! Заклинание просто как будто "в упор не видит" лежащий там труп... sad.gif

Еще заметил: силовое поле не хочет накладываться так, чтобы не дать врагам пройти по разрушенному мосту.
AmberSoler
Цитата(Marmot @ 02 Jul 2012, 22:16) *
Еще заметил: силовое поле не хочет накладываться так, чтобы не дать врагам пройти по разрушенному мосту.
Вот это не совсем понятно... Враги - в замке или снаружи? Силовое поле спокойно закрывает ворота, если ставить его изнутри замка (на эксперте, поле - на три гекса). Если ставить его снаружи замка, то по моему, одногексовый юнит проходит мимо поля, двухгексовый полагаю не пройдет.

Цитата(Marmot @ 02 Jul 2012, 22:16) *
Мое собственное наблюдение: нигде не сказано, но стек, погибший на мосту или на гексе прямо перед мостом со стороны замка, не воскрешается!
Проверил, все нормально воскрешается (я нападал на замок, не оборонялся).
Marmot
Даже так?
С силовым полем ситуация была только раз: больше я его перед мостом применять не пытался. Точнее, вроде дело было не так: я поле установил, но наглый вражеский стек (1-гексовый) прошел сквозь него!
Что же до воскрешения, то невозможность воскресить погибших на мосту и перед ним встречалась мне, по крайней мере, дважды. Во всяком случае, мне это не приснилось. Юниты, если что, были живые (не нежить, не элементали, не големы и не гаргульи). Доказать будет трудновато: смоделировать бой, записать видео, выложить... Поставим вопрос так: кто-нибудь еще сталкивался с этим? Добавлю: воскрешением я пользуюсь постоянно, и на других обычных клетках игрового поля такой проблемы никогда не возникало.
Вспомнил еще: кажется, воскрешение не удавалось из-за того, что на те гексы накладывались трупы вражеских отрядов - по крайней мере, таким было мое предположение. И еще, кажется, мои погибшие стеки были 2-гексовыми (королевские грифоны, архангелы).
AmberSoler
Цитата(Marmot @ 04 Jul 2012, 19:33) *
Вспомнил еще: кажется, воскрешение не удавалось из-за того, что на те гексы накладывались трупы вражеских отрядов - по крайней мере, таким было мое предположение.
Наверное, в таком разе воскресить действительно не удастся...
Bes
помнится присылал AmberSoler'у схему очерёдности появления стэка клона на поле боя, относительно целевого отряда, но решил напомнить более наглядным способом - видео:
демо клона
Sav
Для двуклеточного существа такой метод демонстрации не очень хорош. Например, если бы задняя клетка первого клона была бы занята, то первым бы вызвался тот клон, который на видео был вторым, а вторым вызвался бы клон задней клеткой на ту клетку, где у первого клона на видео передняя.
Sav
Насчёт колдовства мастер-джиннами и чародеями.

Мастер-джинн выбирает заклинание из всех существующих длительных заклинаний, предназначенных для наложения на дружественный стек, + лечение (флаг 0x00000008). При этом не учитываются заклинания, которые колдовать нельзя (вообще или из-за иммунитета стека), которые уже наложены на стек, а так же те, которые джинн не считает правильным колдовать (об этом ниже). Из всех учитывающихся заклинание выбирается случайно, с равными шансами для каждого. ИИ при этом для наложения заклинания считает среднюю полезность по всем тем, которые могут быть наколдованы. Колдует на продвинутом уровне с 6 колдовской силой.

Чародей выбирает заклинание из следующего списка с указанными шансами, исключая из него предварительно те, которые колдовать нельзя или по его мнению (такому же, как и у мастер-джинна) бесполезно ни на один стек.
Ускорение: 15
Воздушный Щит: 10
Медлительность: 10
Каменная Кожа: 15
Жажда Крови: 5
Благословение: 15
Лечение: 10
Слабость: 4
Указанные значения шансов - это не проценты, а показатели. Считать шанс так: (показатель заклинания)/(сумма показателей всех возможных для колдовства заклинаний). Например, шанс Ускорения при доступных всех заклинаниях будет равен 15/84.
Колдует с силой 3 на экспертном уровне.


Теперь по поводу определения уместности колдовства:
Защиты от стихий, анти-магия и волшебное зеркало: только если у врага есть герой, а у него - книга заклинаний.
Лечение: только если у цели есть потерянное здоровье.
Молитва: только если цель ещё не ходила в этом раунде.
Палач: только если у врага есть существа, подверженные базовому Палачу (в т. ч. уже мёртвые).
Щит и Огненный щит: только если у врага есть стеки, которые не убиты, не ослеплены, не окаменены, не парализованы и сейчас не могут стрелять (заблокированные и т. п. стрелки тоже считаются).
Воздушный щит: только если у врага есть стеки, которые не убиты, не ослеплены, не окаменены, не парализованы и сейчас могут стрелять (заблокированные и т. п. стрелки не считаются).
Точность: только если целевой стек сейчас может стрелять (заблокированный или т. п. стрелок не считается).
Жажда крови: только если целевой стек сейчас не может стрелять (заблокированный или т. п. стрелок тоже считается).
Остальные заклинания (в т. ч. все заклинания, накладывающиеся на противника, для чародеев, а так же ускорение) по мнению существ-магов накладывать имеет смысл всегда, если они ещё не наложены на стек и могут быть вообще на него наколдованы.


***

Кстати, оказывается, в справочнике есть очень серьёзная ошибка: Жажда крови на самом деле повышает атаку только для ближнего боя, а не вообще. Чтобы повысить атаку вообще, нужно наложить и жажду крови, и точность.
AmberSoler
Цитата(Sav @ 24 Jul 2012, 21:25) *
Кстати, оказывается, в справочнике есть очень серьёзная ошибка: Жажда крови на самом деле повышает атаку только для ближнего боя, а не вообще. Чтобы повысить атаку вообще, нужно наложить и жажду крови, и точность.
На самом деле - атака повышается согласно правилам (+3 или +6 к навыку добавляется). Но у стрелков этот элемент не влияет на наносимый противнику урон. Для них существует аналог жажды крови - Точность (при атаке на расстоянии), Жажда крови оказывает влияние на стрелков только если им приходится втсупать в рукопашную схватку. Надо будет добавить это примечание.
Sav
В функции расчёта атаки стека с бонусами жажда крови учитывается только для ближнего удара, а точность только для стрельбы. Возможно просто в окне информации о стеке считается атака с бонусами всегда для ближнего удара, поэтому жажда крови там отображается, тогда это неверное отображение - баг игры. Я проверю.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.