Wake of Gods Forum | Форум Во Имя Богов

Full Version: Иные Герои
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
ИИ вообще бои не проводит.
Ну, заклы-то он вполне может учить (хотя достоверно этого не знаю). Я видел чуть-чуть код боя ИИ-ИИ, и он там вполне конкретно выбирает заклинания для колдовства по их value, учитывая сферу запрещения и т. п.
ИИ-ИИ от зоркости выигрывает. А ИИ-нейтралы бой не проводит. Это не значит, что не нужно повышать значимость зоркости. Достаточно герою нейтралов давать случайные слабые заклинания и расти в зависимости от размера карты.

Командир не подходит, так как ИИ должен играть как за героя, в том числе использовать магию (активно) и навыки (пассивно).
Berserker Wrote:ИИ-ИИ от зоркости выигрывает. А ИИ-нейтралы бой не проводит.
Так там же один и тот же механизм - бой не проводится нигде, но его эмуляция не столь уж примитивна и содержит колдовство заклинаний.
Вот в HD ИИ-ИИ - реальный бой.
(29.01.2013 03:39)Berserker Wrote: [ -> ]ИИ-ИИ от зоркости выигрывает. А ИИ-нейтралы бой не проводит. Это не значит, что не нужно повышать значимость зоркости. Достаточно герою нейтралов давать случайные слабые заклинания и расти в зависимости от размера карты.
Да, да, да-да-да! Именно так
Algor Wrote:...Зоркость, насколько я понимаю, для ИИ все равно бесполезный навык в описанном выше случае?
Berserker Wrote:ИИ-ИИ от зоркости выигрывает. А ИИ-нейтралы бой не проводит.
Т.е. в ИИ-ИИ бою комп реально может получить заклинание при помощи Зоркости (не в HD-моде!)? Если это действительно так, тогда можно и допилить нейтральных героев.
Если бы это было не так, значит создатели сделали навык, которым ИИ и не должен был пользоваться. Тут нужно Сава больше спросить.
Да, всё-таки ИИ использует орлиный глаз в виртуальных битвах. Вот только в специальности по нему нет никакого толку: ИИ просто учит все заклинания побеждённого врага, на которые хватает зоркости и мудрости. Sm

PHP Code:
void __thiscall A0_AI_VirtualBattle_Finish_sub_426EE0(_AICalcBattleSide_ *this, _AICalcBattleSide_ *looser, _Town_ *town)
{
  
_Hero_ *winner_hero_v3; // eax@1
  
_Hero_ *looser_hero_v4; // ebx@1
  
_AICalcBattleSide_ *looser_v5; // edi@1
  
_AICalcBattleSide_ *this_v6; // esi@1
  
float exp_v7; // ST20_4@11
  
double result_exp_v8; // st7@11
  
_Hero_ *winner_hero_v9; // ecx@18
  
_Hero_ *hero_v10; // ecx@21
  
_Hero_ *hero_v11; // edi@23
  
int curr_spell_v12; // edx@25
  
_Spell_ *spell_v13; // eax@28
  
int spell_level_v14; // ecx@28
  
_Hero_ *hero_v15; // ecx@35
  
_Army_ *looser_army_v14; // [sp-8h] [bp-20h]@9
  
_Hero_ *looser_hero_v15; // [sp-4h] [bp-1Ch]@9
  
_Hero_ *looser_hero_v16; // [sp+Ch] [bp-Ch]@1
  
char looser_escaped_v17; // [sp+17h] [bp-1h]@1
  
_Army_ *looser_army_v18; // [sp+20h] [bp+8h]@1

  
looser_v5 = looser;
  
this_v6 = this;
  
looser_escaped_v17 = 0;
  
looser_hero_v4 = looser->hero_dword24;
  
looser_army_v18 = looser->army_dword28;
  
winner_hero_v3 = this->hero_dword24;
  
looser_hero_v16 = looser_hero_v4;
  if ( 
winner_hero_v3 )
    
winner_hero_v3->spell_points = LOWORD(this->spell_points_dword14);// Уменьшаем очки заклинаний
  
if ( looser_hero_v4 )
    
looser_hero_v4->spell_points = LOWORD(looser_v5->spell_points_dword14);// Уменьшаем очки заклинаний
  
if ( this->army_value_dword1C <= 0 )          // Победитель тоже проиграл
  
{
    
winner_hero_v9 = this->hero_dword24;
    if ( 
winner_hero_v9 )
      
A0_Hero_DeleteArt_sub_4E3040(winner_hero_v9, 2);// Удаляем у победителя (защищающегося) грааль
  
}
  else                                          
// Победитель на самом деле победил
  
{
    if ( 
this->hero_dword24 )                   // У победителя есть герой
    
{
      if ( 
looser_hero_v4 && A0_Rand_Int_sub_50C7C0(0, 100) < 60 )
      {
        
looser_hero_v15 = 0;                    // Враг "бежал"
        
looser_escaped_v17 = 1;
        
looser_army_v14 = looser_army_v18;
      }
      else
      {
        
looser_hero_v15 = looser_hero_v4;       // Враг проиграл
        
looser_army_v14 = looser_army_v18;
      }
      
exp_v7 = A0_AI_VirtualBattle_GetArmyExp_sub_4CA070(looser_army_v14, looser_hero_v15);
      
result_exp_v8 = A0_Hero_Get_LearningSecSkill_Modif_sub_4E4AB0(this_v6->hero_dword24) * exp_v7;
      
A0_Hero_Give_Experience_sub_4E3620(this_v6->hero_dword24, result_exp_v8, 1, 1);// Даём опыт герою-победителю
      
if ( looser_hero_v4 )
        
A0_Hero_DeleteArt_sub_4E3040(looser_hero_v4, 2);// Удаляем у проигравшего грааль
      
if ( !looser_escaped_v17 )
      {
        if ( 
looser_hero_v4 )                   // Баг: проигравший берёт арты победителя
          
A0_AI_Hero_TakeAllArts_sub_4E2640(looser_hero_v4, this_v6->hero_dword24);
      }
      if ( 
town )                               // Захватываем город
        
A0_Capture_Town_sub_4C5EA0(A0_GameMgr_dword_699538, town->id, this_v6->hero_dword24->owner_id, 0, 1);
    }
  }
  
A0_AI_AICalcBattleSide_Hero_AfterBattle_ReturnArmyOrDefeat_sub_424880(this_v6, 1);
  
A0_AI_AICalcBattleSide_Hero_AfterBattle_ReturnArmyOrDefeat_sub_424880(looser_v5, 1);
  if ( 
this_v6->army_value_dword1C > 0 )        // Победитель победил
  
{
    
hero_v10 = this_v6->hero_dword24;
    if ( 
hero_v10 )
    {
      
A0_AI_VirtualBattle_Necromacy_AddCreatures_sub_426DF0(hero_v10, looser_army_v18, this_v6->army_dword28);
      if ( 
looser_hero_v4 )
      {
        
hero_v11 = this_v6->hero_dword24;
        if ( 
hero_v11->second_skill[11] > 0 )   // Есть орлиный глаз
        
{
          if ( 
A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(hero_v11, 0) )// Есть книга
          
{
            
curr_spell_v12 = 0;
            do
            {
              if ( 
looser_hero_v4->spell_level[curr_spell_v12] && !hero_v11->spell_level[curr_spell_v12] )// Закл есть у врага, но его нет у победившего
              
{
                
spell_v13 = &A0_Spells_off_687FA8[curr_spell_v12];
                
spell_level_v14 = spell_v13->level;// Изучаем все возможные заклы глазом орла
                
if ( hero_v11->second_skill[11] + 1 >= spell_level_v14
                  
&& spell_v13->flags & 1
                  
&& spell_level_v14 <= hero_v11->second_skill[7] + 2 )
                {
                  
A0_Hero_Learn_Spell_sub_4D95A0(hero_v11, curr_spell_v12);
                  
looser_hero_v4 = looser_hero_v16;
                  break;
                }
                
looser_hero_v4 = looser_hero_v16;
              }
              ++
curr_spell_v12;
            }
            while ( 
curr_spell_v12 < 70 );
          }
        }
      }
    }
  }
  
hero_v15 = this_v6->hero_dword24;
  if ( 
hero_v15 )
    
A0_Hero_Reset_TempModifs_AfterBattle_sub_4DA780(hero_v15);
  if ( 
looser_hero_v4 )
    
A0_Hero_Reset_TempModifs_AfterBattleLoose_sub_4DA780(looser_hero_v4);
} 

Но, думаю, очевидно, что на ИИ-бой не действуют никакие триггеры, поэтому, чтобы оно хоть как-то работало, нужно заменять нейтралов на героя нужно ещё до самого нападения.
Спасибо.
Ну ИИ и так читерит, как видно. А нейтральному герою будет достаточно заклинаний до 2-3 уровней. Главное их массовость со временем.
(28.01.2013 18:16)Ivor Wrote: [ -> ]Маленькая идейка, уже отраженная в документе, но тем не менее, достойная упоминания: Сильвии, как одному из самых бесполезных героев Замка, Лидерство меняется на Логистику. Тем самым сохраняется её индивидуальность, как одной из немногих спецов по Навигации, и она переходит из разряда полного отстоя в разряд крепких середнячков.
Дошёл до болотников. С Вой ситуация аналогичная Сильвии, но при этом настолько же эффективного решения не придумывается. Разве что заменить Мудрость - на Имущество, но ИМХО, это смотрится странновато.
Пожалуй, обменяю им стартовые навыки:
Сильвия - Навигация и Имущество
Вой - Навигация и Логистика
Любопытный эффект спуска заклинаний вызова элементалей на 2..5 уровни: исчезла необходимость в уравниловке элементалей!
Теперь можно спокойно резать hp воздушникам до 15, остальные параметры - соответственно, а землякам - поднимать hp на 10.
Неплохо.
Очередной кусочек, стартовые армии героев.

Меняется принцип формирования стартовых армий. Обычно в армии героя есть отряды 1го, 2го и 3го уровней (1-2-3).
У спецов по 1-му уровню армия выглядит как (1-1-2), у спеца по 2ому уровню как (1-2-2), у 3го - как (1-3-3).
У спецов по 4-му уровню отряд 3го уровня заменяется на 2 профильных монстров (1-2-4),
у спецов по 5-му уровню отряд 3го уровня заменяется на 1 профильного монстра (1-2-5). Очень, очень хочется сделать его улучшеным, чтобы порадовать инферналов и болотников.

Есть баги: у Торосара вместо двух стеков гремлинов и одного - големов, но без баллисты - два стека гремлинов и баллиста
У Шакти только один стек троглов и один - бехов
А так не лучше?
не спец: (1-2-3)
спец 1 : (1-1upg-1upg)
спец 2 : (1-2-2upg)
спец 3 : (1-2-3upg)
спец 4 : (1-2-4upg)
спец 5 : (1-2-5upg)

Ты окончательно остановился на bin-варианте? Если нет, могу в свой добавить настройку боевых машин для героев.
(13.02.2013 13:22)Algor Wrote: [ -> ]А так не лучше?
не спец: (1-2-3)
спец 1 : (1-1upg-1upg)
спец 2 : (1-2-2upg)
спец 3 : (1-2-3upg)
спец 4 : (1-2-4upg)
спец 5 : (1-2-5upg)
Мне не нравится одновременное наличие улученных и неулучшенных войск первых 1-3 уровней, сложнее сделать ударный кулак.

Против улучшенных войск 4го и 5го уровней ничего не имею, по поводу 5ого - только ЗА! Смущают только спецы по вампирам и рокам - не будут ли имбой

(13.02.2013 13:22)Algor Wrote: [ -> ]Ты окончательно остановился на bin-варианте? Если нет, могу в свой добавить настройку боевых машин для героев.
Думаю, да. Вариант лишь немногим сложнее для модифицирования, чем скриптовый, но занимает меньше места. Для исправления пропадания стеков попробую поковырять ТЕ, там вроде исправляли
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Reference URL's