28.01.2013, 21:52
29.01.2013, 01:15
Ну, заклы-то он вполне может учить (хотя достоверно этого не знаю). Я видел чуть-чуть код боя ИИ-ИИ, и он там вполне конкретно выбирает заклинания для колдовства по их value, учитывая сферу запрещения и т. п.
29.01.2013, 03:39
ИИ-ИИ от зоркости выигрывает. А ИИ-нейтралы бой не проводит. Это не значит, что не нужно повышать значимость зоркости. Достаточно герою нейтралов давать случайные слабые заклинания и расти в зависимости от размера карты.
Командир не подходит, так как ИИ должен играть как за героя, в том числе использовать магию (активно) и навыки (пассивно).
Командир не подходит, так как ИИ должен играть как за героя, в том числе использовать магию (активно) и навыки (пассивно).
29.01.2013, 03:59
Berserker Wrote:ИИ-ИИ от зоркости выигрывает. А ИИ-нейтралы бой не проводит.Так там же один и тот же механизм - бой не проводится нигде, но его эмуляция не столь уж примитивна и содержит колдовство заклинаний.
Вот в HD ИИ-ИИ - реальный бой.
29.01.2013, 11:06
(29.01.2013 03:39)Berserker Wrote: [ -> ]ИИ-ИИ от зоркости выигрывает. А ИИ-нейтралы бой не проводит. Это не значит, что не нужно повышать значимость зоркости. Достаточно герою нейтралов давать случайные слабые заклинания и расти в зависимости от размера карты.Да, да, да-да-да! Именно так
29.01.2013, 14:36
Algor Wrote:...Зоркость, насколько я понимаю, для ИИ все равно бесполезный навык в описанном выше случае?
Berserker Wrote:ИИ-ИИ от зоркости выигрывает. А ИИ-нейтралы бой не проводит.Т.е. в ИИ-ИИ бою комп реально может получить заклинание при помощи Зоркости (не в HD-моде!)? Если это действительно так, тогда можно и допилить нейтральных героев.
29.01.2013, 16:47
Если бы это было не так, значит создатели сделали навык, которым ИИ и не должен был пользоваться. Тут нужно Сава больше спросить.
29.01.2013, 18:39
Да, всё-таки ИИ использует орлиный глаз в виртуальных битвах. Вот только в специальности по нему нет никакого толку: ИИ просто учит все заклинания побеждённого врага, на которые хватает зоркости и мудрости. 
Но, думаю, очевидно, что на ИИ-бой не действуют никакие триггеры, поэтому, чтобы оно хоть как-то работало, нужно заменять нейтралов на героя нужно ещё до самого нападения.

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);
}
Но, думаю, очевидно, что на ИИ-бой не действуют никакие триггеры, поэтому, чтобы оно хоть как-то работало, нужно заменять нейтралов на героя нужно ещё до самого нападения.
29.01.2013, 18:56
Спасибо.
Ну ИИ и так читерит, как видно. А нейтральному герою будет достаточно заклинаний до 2-3 уровней. Главное их массовость со временем.
Ну ИИ и так читерит, как видно. А нейтральному герою будет достаточно заклинаний до 2-3 уровней. Главное их массовость со временем.
30.01.2013, 16:32
(28.01.2013 18:16)Ivor Wrote: [ -> ]Маленькая идейка, уже отраженная в документе, но тем не менее, достойная упоминания: Сильвии, как одному из самых бесполезных героев Замка, Лидерство меняется на Логистику. Тем самым сохраняется её индивидуальность, как одной из немногих спецов по Навигации, и она переходит из разряда полного отстоя в разряд крепких середнячков.Дошёл до болотников. С Вой ситуация аналогичная Сильвии, но при этом настолько же эффективного решения не придумывается. Разве что заменить Мудрость - на Имущество, но ИМХО, это смотрится странновато.
Пожалуй, обменяю им стартовые навыки:
Сильвия - Навигация и Имущество
Вой - Навигация и Логистика
01.02.2013, 21:44
Любопытный эффект спуска заклинаний вызова элементалей на 2..5 уровни: исчезла необходимость в уравниловке элементалей!
Теперь можно спокойно резать hp воздушникам до 15, остальные параметры - соответственно, а землякам - поднимать hp на 10.
Теперь можно спокойно резать hp воздушникам до 15, остальные параметры - соответственно, а землякам - поднимать hp на 10.
01.02.2013, 22:41
Неплохо.
13.02.2013, 00:54
Очередной кусочек, стартовые армии героев.
Меняется принцип формирования стартовых армий. Обычно в армии героя есть отряды 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-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). Очень, очень хочется сделать его улучшеным, чтобы порадовать инферналов и болотников.
Есть баги: у Торосара вместо двух стеков гремлинов и одного - големов, но без баллисты - два стека гремлинов и баллиста
У Шакти только один стек троглов и один - бехов
13.02.2013, 13:22
А так не лучше?
не спец: (1-2-3)
спец 1 : (1-1upg-1upg)
спец 2 : (1-2-2upg)
спец 3 : (1-2-3upg)
спец 4 : (1-2-4upg)
спец 5 : (1-2-5upg)
Ты окончательно остановился на bin-варианте? Если нет, могу в свой добавить настройку боевых машин для героев.
не спец: (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, 15:05
(13.02.2013 13:22)Algor Wrote: [ -> ]А так не лучше?Мне не нравится одновременное наличие улученных и неулучшенных войск первых 1-3 уровней, сложнее сделать ударный кулак.
не спец: (1-2-3)
спец 1 : (1-1upg-1upg)
спец 2 : (1-2-2upg)
спец 3 : (1-2-3upg)
спец 4 : (1-2-4upg)
спец 5 : (1-2-5upg)
Против улучшенных войск 4го и 5го уровней ничего не имею, по поводу 5ого - только ЗА! Смущают только спецы по вампирам и рокам - не будут ли имбой
(13.02.2013 13:22)Algor Wrote: [ -> ]Ты окончательно остановился на bin-варианте? Если нет, могу в свой добавить настройку боевых машин для героев.Думаю, да. Вариант лишь немногим сложнее для модифицирования, чем скриптовый, но занимает меньше места. Для исправления пропадания стеков попробую поковырять ТЕ, там вроде исправляли