For those of you who need a refresher on the MWIF phases and subphases, here is the current Pascal code:
Code: Select all
// ****************************************************************************
// Phases and subphases.
// ****************************************************************************
TPhase = (
pSetup, // RAW 24.
pReinforcement, // RAC 4 - phase module exists.
pLending, // RAC 5 - phase module exists.
pInitiative, // RAC 6. - phase module exists
pWeather, // RAC 8.
pDeclareWar, // RAC 9 - phase module exists.
pChooseAction, // RAC 10 - phase module exists.
pPortAttack, // RAC 11.2 - phase module exists.
pNavalAir, // RAC 11.3 - phase module exists.
pNavalMovement, // RAC 11.4 - phase module exists.
// ****************************************************************************
// RAC 11.4.6; pNavalInterception was replaced with digNavalInterception, which
// is called when moving naval units during:
// (1) phases: pNavalMovement, pReturnToBaseA, pReturnToBaseD,
// (2) digressions: digOverrun, digReturnToBase, digNavalCombatAbort.
//
// RAC 11.5.2; pNavalCombatI was replaced with code that executes only as an
// outcome of digNavalInterception.
// ****************************************************************************
pNavalCombatA, // RAC 11.5 - phase module exists.
pNavalCombatD, // RAC 11.6 - phase module exists.
pStrategicBombardment, // RAC 11.7 - phase module exists.
pCarpetBombing, // RAC 11.8 - phase module exists.
pGroundStrike, // RAC 11.9 - phase module exists.
pRailMovement, // RAC 11.10 - phase module exists.
pLandMovement, // RAC 11.11 - phase module exists.
pAirTransport, // RAC 11.12 - phase module exists.
pUnloadLandUnits, // RAC 11.13 - phase module exists.
pInvasion, // RAC 11.14 - phase module exists.
pParadrop, // RAC 11.15 - phase module exists.
pLandCombatDeclaration, // RAC 11.16.1. - phase module exists
pIgnoreNotional, // RAC 11.14 - phase module exists.
pEmergencyHQSupply, // RAC 2.4.3 - phase module exists.
pShoreBombardmentD, // RAC 11.16.2 - phase module exists.
pShoreBombardmentA, // RAC 11.16.2 - phase module exists.
pHQSupportD, // RAC 11.16.3 - phase module exists.
pHQSupportA, // RAC 11.16.3 - phase module exists.
pGroundSupport, // RAC 11.16.4 - phase module exists.
pLandCombatResolution, // RAC 11.16.5 & 11.16.6 - phase module exists.
pAirRebase, // RAC 11.17 - phase module exists.
pAirSupply, // RAC 11.18.1 - phase module exists.
pHQReorganization, // RAC 11.18.2 - phase module exists.
pTRSSupply, // RAC 11.18.3 - phase module exists.
pEndOfAction, // RAC 12 - phase module exists.
pPartisan, // RAC 13.1 - phase module exists.
pEntry, // RAC 13.2 - phase module exists.
pUSEntry, // RAC 13.3 - phase module exists.
pProductionPlanning, // RAC 13.6.1 & 13.6.2 - phase module exists.
pStayAtSeaA, // RAC 13.4 - phase module exists.
pStayAtSeaD, // RAC 13.4 - phase module exists.
pReturnToBaseA, // RAC 13.4 - phase module exists.
pReturnToBaseD, // RAC 13.4 - phase module exists.
pUseOil, // RAC 13.5.1 - phase module exists.
pFinalReorganization, // RAC 13.5 - phase module exists.
pBreakDown, // RAC 22.4.1 - phase module exists.
pNavalRepair, // RAC 13.6.5 - phase module exists.
pProduction, // RAC 13.6.3 -> 13.6.9 - phase module exists.
pReform, // RAC 22.4.1 - phase module exists.
pIntelligence, // RAC 22.1 - phase module exists.
pUkraine, // RAC 19.12 - phase module exists.
pConquest, // RAC 13.7.1 - phase module exists.
pMinorSupport, // RAC 13.7.2 - phase module exists.
pMutualPeace, // RAC 13.7.3 - phase module exists.
pVichy, // RAC 13.7.4 - phase module exists.
pLiberation, // RAC 13.7.5 - phase module exists.
pSurrender, // RAC 13.7.6 - phase module exists.
pFactoryDestruction, // RAC 22.2 - phase module exists.
pVictory, // RAC 13.8 - phase module exists.
pGameEnd, // RAC 13.8 & RAW 30 - phase module exists.
pDestroyUnits, {remove once Overstacked & FTC are cleaned up}
pOverstacked, {replace with digression called multiple times}
pCollapseVichy, {change to digression}
pQuit, pNone);
TPhaseSet = set of TPhase;
TSubPhaseType = (sptReinforce, sptDOW, sptAir, sptNC, sptLCR, sptVichy);
// ****************************************************************************
// Reinforcement SubPhases.
// ****************************************************************************
TReinforceSubPhase = (
RspAnnualAdds, // RAC 4.1.1 & 4.1.2.
RspScrap, // RAC 4.1.3.
RspReplacements, // RAC 4.1.4.
RspAirReserve, // RAC 14.6.1.
RspPlaceUnits, // RAC 4.2.
RspRemoveAir, // RAC 14.6.1.
RspDone, RspWait);
// ****************************************************************************
// DOW SubPhases.
// ****************************************************************************
TDOWSubPhase = (
DspDOWMajor, // RAC 9.2 & 9.3.
DspDOWMinor, // RAC 9.2, 9.3, 9.10, & 13.3.2 (#7 & #44).
DspUSEntry, // RAC 9.4.
DspNeutralityPacts, // RAC 9.5.
DspReserves, // RAC 9.6.
DspChooseAligner, // RAC 9.7.
DspSetupAttackedMinor, // RAC 9.7.
DspAlignMinor, // RAC 9.8.
DspSetupAlignedMinor, // RAC 9.8.
DspDone, DspWait);
// ****************************************************************************
// Air subphases are for air missions; some air missions do not use all
// subphases.
// ****************************************************************************
TAirSubPhase = (
AspCAP, // RAC 14.2.1.
AspFlyA, // RAC 14.2.2, 14.2.3, & 14.2.1.
AspFlyD, // RAC 14.2.2, 14.2.3, & 14.2.1.
AspInterceptD, // RAC 14.2.1.
AspInterceptA, // RAC 14.2.1.
AspSurprise, // RAC 11.5.6.
AspAirAir, // RAC 14.3.
AspAntiAirD, // RAC 11.5.9.
AspAntiAirA, // RAC 11.5.9.
AspAttack, // RAC 11.5.9, 11.7, 11.8, 11.9, 11.12, 11.15,
// 11.16.4, & 11.8.1.
AspReturnA, // RAC 14.2.
AspReturnD, // RAC 14.2.
AspNone, AspDone);
// ****************************************************************************
// Air-to-air combat sub-subphases.
// ****************************************************************************
TA2ASubSubPhase = (
sspLocation, // RAC 14.3.
sspArrange, // RAC 14.3.1.
sspRollDef, // RAC 14.3.2.
ssp1stUnit, // RAC 14.3.3.
ssp1stDisposition, // RAC 14.3.3.
sspRollAtt, // RAC 14.3.2.
ssp2ndUnit, // RAC 14.3.3.
ssp2ndDisposition, // RAC 14.3.3.
sspAttAbortStay, // RAC 14.3.2.
sspDefAbortStay, // RAC 14.3.2.
sspBothStaying // RAC 14.3.2.
);
// ****************************************************************************
// Naval Movement Occasions.
// 1 - Most naval movement occurs during regular game phases. If a naval
// interception occurs to one of these naval moves, then after the digression is
// over, the program restores the deciding major powers to what they were
// previously, restores the MovingStack for each player to what it was before
// the naval interception, enables the end of phase button (if the local major
// power is deciding), and then calls CentralControlOn. This should restore the
// game state to what it was before the naval interception occurred.
// 2 - Some naval movement is caused by forced rebases due to 'overruns'. When
// these naval interception digressions are completed, the program performs the
// same steps as for #1 above and also restores the working variables for the
// Overrun digression.
// 3 - Lastly, some naval movement is caused by naval units aborting from a
// naval combat, due to either a voluntary abort at the end of a naval combat
// round or an adverse combat result. On these occasions, once the naval
// interception digression is over, the program performs the same steps as for
// overruns (see #2) except it is the working variables for the CombatAbort
// digression that are restored.
// 4 - Note that the only other time naval units move is during the Vichy
// subphase vspMoveFrenchAtSea, but those naval moves can not be intercepted.
// ****************************************************************************
TNavalMovementOccasions = (NMOCurrentPhase, NMOOverrun, NMONavalCombatAbort);
// ****************************************************************************
// Naval combat subphases.
// ****************************************************************************
TNavalCombatSubPhase = (
NCspChooseSeaArea, // RAC 11.5.2.
NCspNavalAirSupportA, // RAC 11.5.3.
NCspNavalAirSupportD, // RAC 11.5.3.
NCspCommit, // RAC 11.5.4.
NCspSearch, // RAC 11.5.5.
NCspSurprise, // RAC 11.5.6.
NCspIncludeSeaBoxes, // RAC 11.5.5.
NCspIncludeUSUnits, // RAC 13.3.2, US Entry Option #32.
NCspChooseType, // RAC 11.5.7 & 11.5.6.
NCspAirAir, // RAC 11.5.9 & 11.5.6.
NCspAntiAirD, // RAC 11.5.9 & 11.5.6.
NCspNavalAirA, // RAC 11.5.9 & 11.5.6.
NCspAntiAirA, // RAC 11.5.9 & 11.5.6.
NCspNavalAirD, // RAC 11.5.9 & 11.5.6.
NCspSurfaceA, // RAC 11.5.8 & 11.5.6.
NCspSurfaceD, // RAC 11.5.8 & 11.5.6.
NCspASWD, // RAC 11.5.10, 22.4.19, & 11.5.6.
NCspSubA, // RAC 11.5.10 & 11.5.6.
NCspASWA, // RAC 11.5.10, 22.4.19, & 11.5.6.
NCspSubD, // RAC 11.5.10 & 11.5.6.
NCspEndRound, // RAC 11.5.11.
NCspAbortA, // RAC 11.5.11 (voluntary abort by attacker).
NCspAbortD, // RAC 11.5.11 (voluntary abort by defender).
NCspNextRound // RAC 11.5.11.
);
// ****************************************************************************
// Land combat resolution subphases.
// ****************************************************************************
TLandCombatResSubPhase = (
LCRspLandCombatSelection, // RAC 11.16.5.
LCRspDefSnowUnits, // RAC 8.2.7.
LCRspAttSnowUnits, // RAC 8.2.7.
LCRspChooseCombatType, // RAC 11.16.5 & 11.16.6.
LCRspLandCombatResolution, // RAC 11.16.5 & 11.16.6.
LCRspConvertShattered,
LCRspAssignLosses, // RAC 11.16.5.
LCRspHexControl, // RAC 11.11.6 (overruns)
LCRspRetreats, // RAC 11.16.5.
LCRspAdvanceAfterCombat // RAC 11.16.5.
);