Kollateralschaden wird immer gegen die Grundstärke des Ziels gerechnet anders als normaler Schaden. Die angreifende Einheit mit Kollateralschaden hat eine Kollateralstärke, bei Katas ist die 5 genau wie die Kampfstärke, bei Chokos aber offenbar nur 3. Das Spiel rechnet dann einen Stärkefaktor aus (iStrengthFactor im Code oben). Bei Katas gegen Ritter ist der (5+10+1)/2 = 8.
Der Kollateralschaden wiederum ist 10 * (5 + 8)/(10 + 8) abgerundet, also 7. Das ist die Zeile
Code:
iCollateralDamage = (GC.getDefineINT("COLLATERAL_COMBAT_DAMAGE") * (iCollateralStrength + iStrengthFactor)) / (iTheirStrength + iStrengthFactor);
Die Ritter sollten also immer 7 TP Schaden kriegen, wenn sie getroffen werden. Hier bin ich mir nicht 100% sicher.
Die entscheidende Zeile für den maximalen Kollateralschaden ist:
Code:
int iMaxDamage = std::min(collateralDamageLimit(), (collateralDamageLimit() * (iCollateralStrength + iStrengthFactor)) / (iTheirStrength + iStrengthFactor));
Der erste Teil ist das normale Maximum, sollte 50 TP sein bei Katas. Der zweite Teil ist das Maximum skaliert mit dem Stärkeverhältnis. Im Beispiel 50*(5 + 8)/(10 + 8) abgerundet also 36 TP. Der Effekt des Minimums ist, dass Einheiten mit höherer Kollateralstärke (die Ari in deinem Test) ihr theoretisches Schadensmaximum erreichen, aber Kollateraleinheiten, die schwächer sind als das Ziel (an der Grundstärke gemessen) erreichen nur den skalierten Maximalschaden. Je schwächer die angreifende Einheit, desto geringer ist auch das Schadensmaximum.