Okay Fehlinformation gestern Abend. Habe mich gerade durch die Strategic Mines.c gekämpft.
Wenn ich es richtig gelesen und verstanden habe läuft es folgendermaßen ab:
Am Anfang jedes Spiels werden die Minen angelegt und dabei auch schon festgelegt welche ausläuft.
Hierzu wird erstmal für jede Mine eine Minimumproduktion festgelegt:
Code: Alles auswählen
UINT32 guiMinimumMineProduction[]={
0, // SAN MONA
1000, // DRASSEN
1500, // ALMA
1500, // CAMBRIA
500, // CHITZENA
2000, // GRUMM
};
Anschließend wird ein Zufallsgenerator bemüht, der zwischen 20-25 Mal (je nach Schwierigkeitsgrad) folgendes macht:
Eine beliebige Mine nehmen und die uiMaxRemovalRate um 20% erhöhen.
(Im ersten Durchlauf ist die uiMaxRemovalRate = guiMinimumMineProduction).
Dann wird ausgewürfelt welche Mine den Geist aufgeben wird. Diese kann nicht San Mona oder Alma sein:
Code: Alles auswählen
// choose which mine will run out of production. This will never be the Alma mine or an empty mine (San Mona)...
do
{
ubDepletedMineIndex = ( UINT8 ) Random(MAX_NUMBER_OF_MINES);
// Alma mine can't run out for quest-related reasons (see Ian)
} while (gMineStatus[ubDepletedMineIndex].fEmpty || (ubDepletedMineIndex == MINE_ALMA));
Der hierbei ausgewählten Mine wird jetzt ihr vorhandenes Erz zugewiesen:
Code: Alles auswählen
pMineStatus->uiRemainingOreSupply = ubMinDaysBeforeDepletion * (MINE_PRODUCTION_NUMBER_OF_PERIODS * pMineStatus->uiMaxRemovalRate);
MINE_PRODUCTION_NUMBER_OF_PERIODS ist 4.
uiMaxRemovalRate wurde durch das Erhöhungsverfahren ermittel.
ubMinDaysBeforeDepletion = 20 für Drassen, sonst 10
Alle anderen Minen erhalten 999.999.999 Erz, d.h. auch sie müssten rein theoretisch irgendwann auslaufen. (Im allerungünstigsten Fall Grumm frühestens am Tag 1310).
Die Warnung, dass die Mine auslaufen wird erfolgt sobald nur noch 25% des Anfangsbestandes vorhanden sind.