Nächste Frage 
Ich fülle eine Struktur struct CombatDetails mit den einzelnen Kampfwerten. Diese Struktur wird in der CyStructInterface1.cpp irgendwie für Python aufbereitet:
	Code:
	    python::class_<CombatDetails>("CombatDetails")
        .def_readwrite("iExtraCombatPercent", &CombatDetails::iExtraCombatPercent)
        .def_readwrite("iNativeCombatModifierTB", &CombatDetails::iNativeCombatModifierTB)
        .def_readwrite("iNativeCombatModifierAB", &CombatDetails::iNativeCombatModifierAB)
...
 In der CvUtil.py werden diese Werte verwendet. 
	Code:
	def combatDetailMessageBuilder(cdUnit, ePlayer, iChange):
    if (cdUnit.iExtraCombatPercent != 0):
        msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_EXTRA_COMBAT_PERCENT",(cdUnit.iExtraCombatPercent * iChange,))
        CyInterface().addCombatMessage(ePlayer,msg)
...
def combatMessageBuilder(cdAttacker, cdDefender, iCombatOdds):
    if (cdAttacker.eVisualOwner != PlayerTypes.UNKNOWN_PLAYER):
        combatMessage = "%s's %s (%.2f)" %(gc.getPlayer(cdAttacker.eVisualOwner).getName(),cdAttacker.sUnitName,cdAttacker.iCurrCombatStr/100.0,)
....
 Wo genau geschieht die "Übersetzung" von &CombatDetails::iExtraCombatPercent in cdUnit.iExtraCombatPercent?
Und wo geschieht die Aufteilung zwischen cdUnit, cdAttacker und cdDefender? 
Ich suche mir hier einen Wolf und sehe es nicht. 
Nachtrag:
Ich sehe, dass es in der CvDLLPython.cpp eine Funktion DllExport void DLLPublishToPython() gibt:
	Code:
	DllExport void DLLPublishToPython()
{
...
    CyStructsPythonInterface1();
...
 Bedeutet das, dass alles, was in der oben gezeigten  python::class_<CombatDetails>("CombatDetails") definiert wurde, automatisch von CvUtil.py übernommen wird? 
Dann bliebe nur noch die Frage, wo Python den Unterschied zwischen cdUnit, cdAttacker und cdDefender ableitet?