Aufgrund mehrer Anfragen wie das nun funktioniert mit dem Erschaffen und wieder Auflösen meiner Gildemiliztruppen in Choceur hier ein Tutorial dazu.
Ich mache es hier so, wie ich es auch in meinem Script gemacht habe. Also auch mit einem Gebäude (assassins_guild) in der Stadt welches vorhanden sein muss. Das Gebäude ist natürlich beliebig auswechselbar.
Wichtig bei dem Script, man sollte mindesten eine Einheit nur für dieses Script bereitstellen. Heißt, zwar für alle Fraktionen in der EDU bereitstellen aber nicht in der EDB rekrutierbar machen. Währe nämlich etwas dämlich wenn die rekrutierten Einheiten ständig aufgelöst werden.
Zuerst muss man mal feststellen, dass das Gebäude auch vorhanden/gebaut ist.
Dafür erstmal einen Counter für das Gebäude Gilde für jeder Stadt machen, für die das Script laufen soll. Ich mach es hier nur für eine Stadt, nämlich Acre.
Das müsste etwa so aussehen:
declare_counter Acre_Gilde
monitor_event SettlementTurnStart SettlementName Acre
and SettlementBuildingExists >= assassins_guild
set_counter Acre_Gilde 1
end_monitor
monitor_event SettlementTurnStart SettlementName Acre
and not SettlementBuildingExists >= assassins_guild
set_counter Acre_Gilde 0
end_monitor
Alles anzeigen
Im Einzelnen.
Wir fragen im Ersten Monitor ab, ob am Ende der Runde in der Stadt Acre das Gebäude assassins_guild oder höher steht. Ist dies der Fall wird der counter dafür auf 1 gesetzt. (set_counter Acre_Gilde 1)
Mit dem 2. Monitor wird der counter auf 0 gesetzt, sollte das Gebäude nicht vorhanden sein. Das ist deshalb wichtig, für den Fall, dass das Gebäude abgerissen wird. Kein Gebäude keine Truppen .
Aber weiter.
declare_counter Acre_belagert
monitor_event SettlementTurnStart SettlementName Acre
and not I_SettlementUnderSiege Acre
set_counter Acre_belagert 0
end_monitor
monitor_conditions I_SettlementUnderSiege Acre
and I_CompareCounter Acre_belagert = 0
and I_CompareCounter Acre_Gilde = 1
create_unit Acre, gildenmiliz, num 2, exp 0, arm 0, wep 0
set_counter Acre_belagert 1
end_monitor
Alles anzeigen
Mit dem 1. Monitor wird geprüft, ob die Stadt nicht belagert wird und setzt den counter sollte die Stadt eben nicht belagert werden auf 0. Den Monitor müssen wir uns merken, denn der Monitor wird gleich noch mal erwähnt.
Im 2. Monitor wird, wenn die Siedlung belagert wird und das Gebäude in der Stadt vorhanden ist (Acre_Gilde = 1), automatisch 2 Einheiten gildenmiliz in der Stadt erschaffen, sowie ein counter geschaltet, mit dem man später prüft, ob die Stadt noch immer belagert wird (set_counter Acre_belagert 1)
Jetzt wird es lustig.
Denn nun müssen für alle Fraktionen Monitoren gemacht werden, welche die eben erschaffenen Einheiten auflösen und auch wieder erschaffen, sollte die entsprechende Siedlung doch noch belagert werden. Eben, damit die Einheiten nicht behalten werden können und womöglich auf einen Feldzug mitgenommen werden.
Hier für die Fraktion Slave:
monitor_event FactionTurnEnd FactionType slave
destroy_units slave gildenmiliz
end_monitor
monitor_event FactionTurnEnd FactionType slave
and I_CompareCounter Acre_belagert = 1
and I_SettlementOwner Acre = slave
and I_CompareCounter Acre_Gilde = 1
create_unit Acre, gildenmiliz, num 2, exp 0, arm 0, wep 0
end_monitor
Alles anzeigen
Da es die Runde der Slave ist, sollen auch nur deren Einheiten zerstört werden bzw. auch nur in deren Städten wieder die Einheiten erschaffen werden, wenn sie noch immer belagert werden.
Da spielt auch wieder der Monitor mit, den wir uns merken sollten.
Den dieser prüft ja, immer beim Start jeder Runde jeder Fraktion ob die Siedlung noch belagert wird und setzt entsprechend den counter auf 0 wenn es nicht mehr der Fall sein sollte. Darum werden also nach einem möglichen erfolgreichen Ausfall in der Runde slave im eigenen Zug dann die Einheiten aufgelöst und keine neuen erschaffen. Ist klar.
Diese Letzten Beiden Monitore muss man jetzt nur noch für alle Fraktionen des Spiels wiederholen.
Wenn man alles richtig gemacht hat, werden im Falle einer Belagerung der Stadt Acre 2 Einheiten gildenmiliz in der Stadt erschaffen und auch wieder nach Beendigung derselbigen wieder aufgelöst.
Für mehr Städte das Ganze einfach für die entsprechenden Städte wiederholen.
Man kann es natürlich um einige Sonderfunktionen erweitern. So könnte man z.B. je nach Region in welcher sich die Stadt befindet andere Einheiten in der Stadt erschaffen. Oder auch für verschiedene Zeiträume. Auch kann man ein Entscheidungsfenster einbauen, um ähnlich wie bei Garnisonsscripten abzufragen, ob man überhaupt mit so etwas spielen will.
Ist eine elendige Fusselarbeit die ewig dauert!
Nur damit man weiß auf auf was man sich einläßt. Es dauerte etwa 1/4 Jahr bis es richig lief und im Einbau über 2 Wochen. Dieses Script hat bei Choceur mit etwa 160 Städten 76.000 Zeilen benötigt.
Da liegt auch das große Problem. Es ist nämlich so, daß dieses Script sehr auf die Rundenberechnungszeit geht. Wer Choceur angespielt hat, wir wissen was ich meine. Es müssen nun mal ständig bei jeder Fraktion die ganzen counter geschaltet werden. Das dauert nun mal.
Für je mehr Regionen man es macht, umso höher wird die Berechnungszeit. Es ist also eher etwas für kleinere Mods die nicht bis zum Limit mit den Provinzen gehen und auch nicht die maximale Anzahl an Fraktionen haben.
Auch haben Verluste durch Belagerungen auf diese Einheiten faktisch keine Auswirkung, da sie ja ständig wieder erschaffen werden. Sie behalten also eigentlich immer ihre maximale Stärke.
Aber es ist mal was anderes als die ganzen Garnisionsscripte die es in anderen Mods gibt.
Diskussionen hierzu bitte im entsprechenden Thread!