Der relevante Codeteil (Combat.cpp) ist:
Code: Alles auswählen
// Wir brauchen um den Bonus für viele verschiedene Schiffstypen zu bekommen eine bestimmte Anzahl von jedem
// Schiffstyp. Dieser Wert beträgt "Anzahl Schiffstypen" - 1 von jedem Typ. Schaffen wir diesen Wert nicht, dann
// bekommen wir den Bonus nur für "minimalen Wert + 1".
int mod = 0;
int nSmallest = INT_MAX;
int nDifferentTypes = mShipTypes.size();
// Schiffstypen durchgehen
for (std::map<BYTE, int>::const_iterator types = mShipTypes.begin(); types != mShipTypes.end(); ++types)
nSmallest = min(nSmallest, types->second);
// Schaffen wir den Wert nicht
if ((nDifferentTypes - 1) > nSmallest)
// dann ist der maximale Bonus smallest + 1
mod = nSmallest + 1;
else if (nDifferentTypes > 1 && nSmallest > 1)
mod = nDifferentTypes;
else if (nDifferentTypes > 1)
mod = 1;
nDifferentTypes wird wohl einfach die Anzahl verschiedener Typen sein (1-8).
nSmallest macht mir Schwierigkeiten, es ist vermutlich die kleinste Anzahl der Schiffe je Typ, aber die genaue Berechnung verstehe ich offensichtlich nicht.
Kann mir jemand erklären wie nSmallest berechnet wird? Vielleicht komme ich dann weiter.
Bei all meinen Annahmen erscheint das Bonussystem sehr unpraktisch, bei gleicher Schiffszahl kann es bis zu 40% Bonus geben, fällt ein Schiffstyp aus der Reihe, hat also zu wenig Schiffe, Fällt die ganze Flotte auf bis zu 10% zurück. Das kann so nicht stimmen.
Hat man also z.B. 5 Typen mit je 4 Schiffen hat man 25% Bonus, kommt ein weiterer Typ mit einem Schiff dazu, fällt der Bonus auf 10%. Das wäre ja wie das negative Stimmgewicht bei der Bundestagswahl.
Man will seine Flotte verstärken und schwächt sie stattdessen. Ich hoffe wirklich, dass ich das alles nur falsch verstanden habe.