По багам слива, если интересно.
Да, по Героям 1-2 мне все интересно.
Завтра посмотрю внимательнее то, что вы написали. Покажу то, что исправлял в своем "TE" для Героев 2 (опять же, посмотрю завтра, зачем я это наисправлял и правильно ли это):
- Код: Выделить всё
int philAI_QuickCombat(armyGroup* armyGroupA, hero* heroA, armyGroup* armyGroupD, hero* heroD,
int isSiegeBattle, int castleIndex, float* casualtiesA, float* casualtiesD)
{
int experienceValueForDefender = game_ExperienceValueOfStack(armyGroupA, heroA);
if (isSiegeBattle)
experienceValueForDefender += 500; // баг - это нужно добавлять в experienceValueForAttacker
int experienceValueForAttacker = game_ExperienceValueOfStack(armyGroupD, heroD);
experienceValueForDefender = ((float)(gpGame->difficulty * 0.12 + 1.0) * (float)experienceValueForDefender);
experienceValueForAttacker = ((float)(gpGame->difficulty * 0.12 + 1.0) * (float)experienceValueForAttacker);
int isAttackerWin = false;
armyGroup* armyWinner = 0;
int ownerD;
if(heroD)
ownerD = heroD->ownerIdx;
else
ownerD = -1;
float probWinnerA;
int probableApproxCasualtiesA;
int probableApproxCasualtiesD;
int probablePreciseCasualtiesA;
int probablePreciseCasualtiesD;
int adjustedProfitA;
philAI_ProbableOutcomeOfBattle(armyGroupA, heroA, armyGroupD, heroD, 0, isSiegeBattle, castleIndex,
ownerD, &probWinnerA, &probableApproxCasualtiesA, &probableApproxCasualtiesD,
&probablePreciseCasualtiesA, &probablePreciseCasualtiesD, &adjustedProfitA);
float probWinnerD = (float)Random(0, 100) / 100.0;
То есть я исправил Random(0, 100) на Random(0, 99) в функции
philAI_QuickCombat.
Недавно попалась на глаза функция
advManager::AutoResolveCombat. Там есть такое:
- Код: Выделить всё
switch ( gpCombatManager->winningSide + 1 )
{
case 1:
if ( !gbRetreatWin )
advManager::TransferArtifacts(a6, a3);
advManager::HeroLoses((int)thisa, a6);
break;
case 2:
if ( !gbRetreatWin )
advManager::TransferArtifacts(a3, a6);
advManager::HeroLoses((int)thisa, a3);
break;
case 0:
advManager::HeroLoses((int)thisa, a3);
advManager::HeroLoses((int)thisa, a6);
break;
case 4:
break;
}
Это значит, что одновременные сливы были предусмотрены разработчиками ? Насколько это корректно вписывается в игру ??