AlexSpl писал(а):
Герой с Драконами ни в коем случае не понесет потерь в битве с Гоблинами, потому что коэффициент победы будет 1 и сработает код, приводящий к нулевым потерям:
- Код: Выделить всё
if(winningDegree > 0.96 && (1.0 - winningDegree) / 2.0 < casualties)
casualties = (1.0 - winningDegree) / 2.0;
Но для этого действительно нужно не выпиливать то что я хотел выпилить, а наоборот симметрично добавить для подстраховки:
Цитата:
{
if(*(float*)(*(float**)(c->ebp + 0x28)) >= (float)0.92)
*(float*)(*(float**)(c->ebp + 0x28)) = (float)1.0;
else
if(*(float*)(*(float**)(c->ebp + 0x28)) >= (float)0.88)
*(float*)(*(float**)(c->ebp + 0x28)) += (float)0.07;
else
if(*(float*)(*(float**)(c->ebp + 0x28)) >= (float)0.80)
*(float*)(*(float**)(c->ebp + 0x28)) += (float)0.05;
else
if(*(float*)(*(float**)(c->ebp + 0x28)) >= (float)0.70)
*(float*)(*(float**)(c->ebp + 0x28)) += (float)0.04;
else
if(*(float*)(*(float**)(c->ebp + 0x28)) >= (float)0.60)
*(float*)(*(float**)(c->ebp + 0x28)) += (float)0.02;
return EXEC_DEFAULT;
}
Ну и возвращаясь к обсуждению мю-функции - это в идеале тоже должно быть приведено в порядок, иначе и впрямь могут быть потери Драконов на Гоблинах. То есть нужно будет выпилить мю(N) и подкорректировать рейтинги. Если понадобится помощь - нарисую вам нормальные рейтинги существ для Героев 1 (они будут очень похожими на оригинальные, только лишены прибавки, связанной с гипотетической степенной функцией).
AlexSpl писал(а):
Ну я бы не стал этого делать, но это ваше дело, конечно. А вообще, я все-таки боюсь что у вас получиться довольно читерская система с неправдоподобно низкими потерями у ИИ в битвах.
Я также посмотрю еще повнимательнее какие в среднем потери победителю дает эта система в сравнении с тем, на что рассчитывает комп, прежде чем ввязаться в драку (не должно быть большого расхождения). Вроде норм, по первым прикидкам.
- Код: Выделить всё
*probableApproxCasualtiesA = (1.0 - *probWinnerA) * simpleStrengthA;
*probableApproxCasualtiesD = *probWinnerA * simpleStrengthD;
*probablePreciseCasualtiesA = (1.0 - *probWinnerA * *probWinnerA) * simpleStrengthA;
*probablePreciseCasualtiesD = (1.0 - (1 - *probWinnerA)*(1 - *probWinnerA)) * simpleStrengthD;
(это из philAI_ProbableOutcomeOfBattle)