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 <= )          // Победитель тоже проиграл
  
{
    
winner_hero_v9 this->hero_dword24;
    if ( 
winner_hero_v9 )
      
A0_Hero_DeleteArt_sub_4E3040(winner_hero_v92);// Удаляем у победителя (защищающегося) грааль
  
}
  else                                          
// Победитель на самом деле победил
  
{
    if ( 
this->hero_dword24 )                   // У победителя есть герой
    
{
      if ( 
looser_hero_v4 && A0_Rand_Int_sub_50C7C0(0100) < 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_v14looser_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_dword24result_exp_v811);// Даём опыт герою-победителю
      
if ( looser_hero_v4 )
        
A0_Hero_DeleteArt_sub_4E3040(looser_hero_v42);// Удаляем у проигравшего грааль
      
if ( !looser_escaped_v17 )
      {
        if ( 
looser_hero_v4 )                   // Баг: проигравший берёт арты победителя
          
A0_AI_Hero_TakeAllArts_sub_4E2640(looser_hero_v4this_v6->hero_dword24);
      }
      if ( 
town )                               // Захватываем город
        
A0_Capture_Town_sub_4C5EA0(A0_GameMgr_dword_699538town->idthis_v6->hero_dword24->owner_id01);
    }
  }
  
A0_AI_AICalcBattleSide_Hero_AfterBattle_ReturnArmyOrDefeat_sub_424880(this_v61);
  
A0_AI_AICalcBattleSide_Hero_AfterBattle_ReturnArmyOrDefeat_sub_424880(looser_v51);
  if ( 
this_v6->army_value_dword1C )        // Победитель победил
  
{
    
hero_v10 this_v6->hero_dword24;
    if ( 
hero_v10 )
    {
      
A0_AI_VirtualBattle_Necromacy_AddCreatures_sub_426DF0(hero_v10looser_army_v18this_v6->army_dword28);
      if ( 
looser_hero_v4 )
      {
        
hero_v11 this_v6->hero_dword24;
        if ( 
hero_v11->second_skill[11] > )   // Есть орлиный глаз
        
{
          if ( 
A0_Hero_Check_Has_Artifact_Weared_sub_4D9460(hero_v110) )// Есть книга
          
{
            
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] + >= spell_level_v14
                  
&& spell_v13->flags 1
                  
&& spell_level_v14 <= hero_v11->second_skill[7] + )
                {
                  
A0_Hero_Learn_Spell_sub_4D95A0(hero_v11curr_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