Mal angenommen, ich habe einen Einheiten-Typ peasant und einen Gebäude-Typ townhall, die beide in Script-Packages definiert werden zu Spielbeginn. Dabei soll townhall zur Liste der baubaren Gebäude-Typen von peasant hinzugefügt werden und peasant zur Liste der ausbildbaren Einheiten von townhall. Das heißt, keiner der beiden Initializers dürfte autonom voll durchlaufen. Es müssten zuerst beide Objekte erzeugt werden und in einer zweiten Stufe hinterher die Attribute gesetzt.

Nun könnte es weiterhin sein, dass die Objekte auch die Attribute des anderen referenzieren, wie es beispielsweise bei Tooltips mit Tags der Fall ist, wodurch die Tooltips erst als Letztes gesetzt werden dürfen bzw. eben ein weiteres Mal evaluiert werden müssen. Damit kann es also vorkommen, dass die Inits immer weiter aufgesplittet werden, wenn nicht sogar Rekursionen entstehen. Oder aber man fragt ab, ob die nötigen Sachen schon initialisiert sind. Falls nicht, reiht man die aktuelle Zeile wieder am Ende einer Queue ein.

Das während der Laufzeit in Wc3 zu lösen, wäre natürlich schlecht, zumal man da den sprachlichen Restriktionen unterliegt. Deswegen würde ich gerne wissen, ob man es gut in Compile-Zeit lösen kann. Und da stoße ich auf verschiedene Probleme. Man darf dann ja quasi keine dynamischen Funktionen aufrufen, weil das so nicht auswertbar wäre, es sei denn, man simuliert den gesamten Code. Deshalb bräuchte man statische Varianten bzw. müsste diese Funktionen extra so auslegen und absondern. Hätte man die statischen Werte dann allerdings, könnte man sie überall inlinen für maximale ingame-Performanz.