

			********************************
			**                            **
			**    UNIT UPDATER2 FOR THE   **
			**  SUPER APOLYTON PACK v2.0  **
			**                            **
			********************************


The Updater2 for the SAP2 is a new version by Peter Triggs of its original Unit Updater designed for the Cradle Mod.


I - INSTALLATION
    ------------


1) Copy the following files in the C:\Program Files\Activision\Call To Power2\ctp2_data\default\gamedata (you should back up the original files):

APOL_main.slc (if you don't want to replace this file, because you have already modified it for example, just add the line #include "APOL_updater2.slc"at the end)
APOL_Units.txt
APOL_updater2


2) The following file must be copied in the language folder you use (C:\Program Files\Activision\Call To Power 2\ctp2_data\###language###\gamedata):

APOL_main_str.txt (either the french or the english one)

WARNING: if you play with a german version of the Apolyton Pack, don't replace this file, just copy the following lines (in french or in english but not both) at the end:



########################################
### Unit Updater2 strings
########################################

NEXT "NEXT =>"
BACK "<= BACK"
NEXT_TYPE "Next type"

ObsUnitsFirstM  "Great news, Sire! Our recent discovery will allow us to re-train and re-equip some of our military units. We have already switched production to the new units but we have some old units in use. Shall I proceed?"

ObsUnitsCostOKandOneUnitM "We have {NUM_OBS_UNITS} {OBS_UNIT_ARRAY[0].name} unit who is pleading for more modern equipment. It will cost {TOTAL_COST} gold to provide them with it and we have enough gold in the treasury. Shall we re-train and re-equip them?"
ObsUnitsCostOKandOneUnitButMoreTypesM  "We have {NUM_OBS_UNITS} {OBS_UNIT_ARRAY[0].name} unit who is pleading for more modern equipment. It will cost {TOTAL_COST} gold to provide them with it and we have enough gold in the treasury. Shall we retrain and re-equip all of them?
\n I must remind you that we have {OTHER_TYPES} other type(s) of unit who are also demanding new equipment"

ObsUnitsCostOKM  "We have {NUM_OBS_UNITS} {OBS_UNIT_ARRAY[0].name} units who are pleading for more modern equipment. It will cost {TOTAL_COST} gold to provide them with it and we have enough gold in the treasury. Shall we retrain and re-equip all of them?"
ObsUnitsCostOKandMoreTypesM  "We have {NUM_OBS_UNITS} {OBS_UNIT_ARRAY[0].name} units who are pleading for more modern equipment. It will cost {TOTAL_COST} gold to provide them with it and we have enough gold in the treasury. Shall we retrain and re-equip all of them?
\n I must remind you that we have {OTHER_TYPES} other type(s) of unit who are also demanding new equipment"

SOME "Not all. Show me them."

PartialUpdateM "Shall we modernize this unit? \n\n It will cost us {PER_UNIT_UPDATE_COST[UPDATE_TYPES_ARRAY[UPDATE_TYPES_INDEX]]} gold and it's unit number {OBS_UNIT_INDEX_PLUS} of {NUM_OBS_UNITS} of this type.\n\n Caution: Updating the last unit of this type will end this update cycle."
ObsUnitsCostNotEnoughGoldM "We have {NUM_OBS_UNITS} {OBS_UNIT_ARRAY[0].name} units who are pleading for more modern equipment. It would cost {TOTAL_COST} gold to modernize those units but we don't have enough gold in the treasury. Shall we retrain and re-equip some of them?"
ObsUnitsCostNotEnoughGoldandMoreTypesM "We have {NUM_OBS_UNITS} {OBS_UNIT_ARRAY[0].name} units who are pleading for more modern equipment. It would cost {TOTAL_COST} gold to modernize those units but we don't have enough gold in the treasury. Shall we retrain and re-equip some of them?
\n I must remind you that we have {OTHER_TYPES} other type(s) of unit who are also demanding new equipment"

NoMoreGoldM "Sire, I regret to inform you that the treasury is bare."

UpdateUnitMTxt "Do you want to update this unit?"

AutoUnitUpdateQtxt"Do you want to automate that procedure?
    \n\n Choosing 'Yes' means that whenever you press the 'Sentinel' ('Sleep') button, if it's possible to update the unit then it will be done without asking you if you want to do it."



########################################
### Unit Updater2 strings
########################################

NEXT "Suivante >"
BACK "< Prcdente"
NEXT_TYPE "Type d'unit suivant"

ObsUnitsFirstM  "Grandes nouvelles, Sire! Nos rcentes dcouvertes nous permettent de rentraner et rquiper certaines de nos units militaires. Nous avons dj rorient notre production vers ces nouvelles units mais nous utilisons des units dsormais obsloltes. Devons-nous les moderniser ?"

ObsUnitsCostOKandOneUnitM "{NUM_OBS_UNITS} {OBS_UNIT_ARRAY[0].name} demande un quipement plus moderne. Satisfaire  sa requte nous coterait {TOTAL_COST} Or et nos rserves de trsorerie sont suffisantes. Devons nous fournir un nouvel entranement et un nouvel quipement  cette unit ?"
ObsUnitsCostOKandOneUnitButMoreTypesM  "{NUM_OBS_UNITS} {OBS_UNIT_ARRAY[0].name} demande un quipement plus moderne. Satisfaire  sa requte nous coterait {TOTAL_COST} Or et nos rserves de trsorerie sont suffisantes. Devons nous fournir un nouvel entranement et un nouvel quipement  cette unit ?
\n Je vous rappelle cependant que nous avons {OTHER_TYPES} autre(s) type(s) d'units qui ont besoin d'un quipement moderne."

ObsUnitsCostOKM  "{NUM_OBS_UNITS} {OBS_UNIT_ARRAY[0].name} demandent un quipement plus moderne. Satisfaire  leur requte nous coterait {TOTAL_COST} Or et nos rserves de trsorerie sont suffisantes. Devons-nous fournir un nouvel entranement et un nouvel quipement  toutes ces units ?"
ObsUnitsCostOKandMoreTypesM  "{NUM_OBS_UNITS} {OBS_UNIT_ARRAY[0].name} demandent un quipement plus moderne. Satisfaire  leur requte nous coterait {TOTAL_COST} Or et nos rserves de trsorerie sont suffisantes. Devons-nous fournir un nouvel entranement et un nouvel quipement  toutes ces units ?
\n Je vous rappelle cependant que nous avons {OTHER_TYPES} autre(s) type(s) d'units qui ont besoin d'un quipement moderne."

SOME "Pas toutes. Montrez-les moi."

PartialUpdateM "Devons-nous moderniser cette unit ? \n\n Cela nous cotera {PER_UNIT_UPDATE_COST[UPDATE_TYPES_ARRAY[UPDATE_TYPES_INDEX]]} Or et il s'agit de l'unit numro {OBS_UNIT_INDEX_PLUS} parmi {NUM_OBS_UNITS} units de ce type.\n\n Attention : moderniser la dernire unit de ce type mettra fin  ce cycle de modernisation."
ObsUnitsCostNotEnoughGoldM "{NUM_OBS_UNITS} {OBS_UNIT_ARRAY[0].name} demandent un quipement plus moderne. Moderniser ces units nous coterait {TOTAL_COST} Or mais notre trsorerie est insuffisante. Devons-nous nous contenter de n'entraner et rquiper qu'une partie seulement de ces units ?"
ObsUnitsCostNotEnoughGoldandMoreTypesM "{NUM_OBS_UNITS} {OBS_UNIT_ARRAY[0].name} demandent un quipement plus moderne. Moderniser ces units nous coterait {TOTAL_COST} Or mais notre trsorerie est insuffisante. Devons-nous nous contenter de n'entraner et rquiper qu'une partie seulement de ces units ?
\n Je vous rappelle cependant que nous avons {OTHER_TYPES} autre(s) type(s) d'units qui ont besoin d'un quipement moderne."

NoMoreGoldM "Sire, j'ai le regret de vous informer que notre trsorerie est vide."

UpdateUnitMTxt "Voulez-vous moderniser cette unit ?"

AutoUnitUpdateQtxt "Voulez-vous automatiser cette procdure ?
    \n\n 'Oui' signifie que lorsque vous cliquerez sur l'icne 'Sentinelle' ('Rendre Inactive') et qu'il sera possible de moderniser cette unit cela se fera sans qu'il vous soit demand si vous voulez le faire ou non."



II - HOW TO USE THE UPDATER2
     -----------------------

Using the updater is very easy:

1 - When your great nation discovers a new advance allowing you to update your units a message is displayed, just follow the instructions in the message boxes. To be updated, a unit must be in a City or a Fortification.

2 - In the turns following this discovery you can still update your units individually, provided they are in a City or a Fortification, by clicking on the sleep button. Select your unit (if the units to update are part of an army, ungroup them all in order to select them one by one and don't forget to group them again as soon as you have finished). A self explanatory message is then displayed...



III - ADAPTING THE UPDATER2
      ---------------------

I have included in this zip the two worksheets I have used to prepare the conversion, this will ease your task if you want to adapt the APOL_updater to another mod or change the update paths if they don't suit your taste or your needs (or both).

Changing an update path is really easy, edit the APOL_updater.slc and change the DATA ARRAYS. If you add a new update path, be careful to give your arrays numbers which are not used by another one (as the number 3 and 4 in the example).

If you want to change an update path, suppress an array if you don't agree with an update path or a part of the said update path :


Example :

In the following update path (Machine Gunner>Marine>Hover Infantry), suppress the four lines of the array number 4 if you don't want the Marine to upgrade to the Hover Infantry

enadv[3]=AdvanceDB(ADVANCE_ADV_INFANTRY_TACTICS); 
OLD_UNIT_TYPE[3]=UnitDB(UNIT_MACHINE_GUNNER);
NEW_UNIT_TYPE[3]=UnitDB(UNIT_MARINE);
PER_UNIT_UPDATE_COST[3]=1000;

enadv[4]=AdvanceDB(ADVANCE_CHAOS_THEORY); 
OLD_UNIT_TYPE[4]=UnitDB(UNIT_MARINE);
NEW_UNIT_TYPE[4]=UnitDB(UNIT_HOVER_INFANTRY);
PER_UNIT_UPDATE_COST[4]=2500;


If you prefer the Machine Gunner to be updated to the Paratrooper, change the number 3 array like this:

enadv[3]=AdvanceDB(ADVANCE_ADV_INFANTRY_TACTICS); 
OLD_UNIT_TYPE[3]=UnitDB(UNIT_MACHINE_GUNNER);
NEW_UNIT_TYPE[3]=UnitDB(UNIT_PARATROOPER);
PER_UNIT_UPDATE_COST[3]=1400;

Remember to change the name of the new unit, the name of the advance triggering the update (which is not useful in our case as Paratrooper and Marine are both available with the same technology) and the cost of the update.


The Upgrade Paths I have chosen are detailed in the Apolyton_UpdatePathWorksheet.txt file included in this zip (the "Dead End" units are the units which have not been included into an update path because of their specificity or their lack of similarity with another family of units).

You can find all the units along with their cost, their code name and the code name of the advance enabling them in the file named Apolyton_UnitWorksheet.txt in this zip.




Have fun!

Tamerlin