Diesmal ein Tutorial welches sich damit beschäftigt, daß man bestimmte Söldner nur durch spezielle Generäle anwerben kann. Also, daß z.B. nur ein ein bestimmter General der eigen Fraktion ganz bestimmte Söldner anwerben kann, während andere Generäle der Fraktion dies nicht können.
Grundlage der Idee war mit ein Tutorial von Konny in der Zone (wer kennt sie noch?) welches sich mit dem dynamischen Rekrutieren von Einheiten befasste. Dieses Tutorial funktioniert ähnlich nur ist dieses eben speziell für Söldner. Ist aber auch auf reguläre Einheitenrekrutierung übertragbar. Zumindest mit viel Geduld.
Es gibt mehrere Wege ein ähnliches Ziel zu erreichen. Jeder hat seine Vor- und Nachteile. Anhand von Zweien werd ich verszuchen aufzuzeigen wie es geht und welches die Vor- und Nachteile sind.
Ob und wenn, welches dann jemand benutzen will, hängt dann von einem selbst ab.
Benötigte Dateien:
campaign_script im Ordner data/world/maps/campaign/imperial_campaign
descr_mercenaries im Ordner data/world/maps/campaign/imperial_campaign
export_descr_character_traits im Ordner data
wahlweise
export_descr_vnvs_enums im Ordner data
export_vnvs im Ordner data/text
Letztere, für den Fall, daß man sich Neue Traits machen will. Dafür einfach in ein entsprechendes Tutorial schauen. Ich bin zu faul dafür.
Ok, fangen wir an.
Ich mache zuerst einmal meine Methode, die speziell für den Spieler ist und nicht für die KI funktioniert. Zumindest nicht so einfach. Sie sollte aber auch für nen Hotseat funktionieren. Gleichzeitig schicke ich voraus, daß die Dateien und die Daten auf meiner eigenen Mod (Choceur) beruhen und dort in dieser oder ähnlicher Form getestet wurden. Wenn also einer sich fragt, warum etwas nicht 100% so aussieht wie bei ihm, dann liegt das daran.
Unser Ziel ist es erstmal, daß nur ein bestimmter Charakter mit einem bestimmten Trait bestimmte Söldner rekrutieren kann.
Aus Vereinfachungsgründen werde ich es so machen, daß ich den bereits vorhandenen Trait der Erben (Factionheir) nehme. Dieser und nur dieser soll jederzeit in der Lage sein, in Schottland und Irland Kreuzritter anwerben können.
Es währen auch möglich es von einem anderen Trait abhänig zu machen z.B. dem des Anführers oder eines Trinkers. Auch von welchen die man selbst erst noch macht. Es ginge auch es von einem Anc. abhänig zu machen, wenn man das wollte. Aber bleiben wir erstmal beim Trait der Erben.
In der export_descr_character_traits suchen wir uns das entsprechende Trait, welches wir verwenden möchten.
Wie oben erwähnt das des Erben: Factionheir
Mit diesen müssen wir nun in der campaign_script etwas basteln, was dafür sorgt, daß nur ein bestimmter General (Erbe) die von uns bestimmten Söldner anwerben kann.
Ich bin dabei auf das durchaus nützliche 'CharacterSelected' gestoßen. Was dafür sorgt, daß ein Monitor nur dann startet, wenn man nen Charakter auswählt/anklickt.
Unser Monitor sollte dann etwa so aussehen:
monitor_event CharacterSelected Trait Factionheir = 1
and CharacterIsLocal
and IsRegionOneOf 21 Dublin_Province 15 Edinburgh_Province 11 Inverness_Province
set_event_counter erbeschottland 1
end_monitor
Was bewirkt jetzt der Monitor genau?
Das 'CharacterSelected Trait Factionheir = 1' sorgt wie bereits erwähnt dafür, daß der Monitor nur gestartet wird, wenn man einen Charakter auswählt und dieser der Seitenerbe ist.
Zusätzlich sorgt das 'CharacterIsLocal' dafür, daß es auch nur beim eigenen Charakter funktioniert. Das ist vielleicht nicht ganz so wichtig, da man wohl eher selten den Erben einer anderen Seite anklickt und dieser sich dann auch noch am richtigen Ort befindet. Aber egal.
Über das 'IsRegionOneOf' in Verbindung mit dem Namen der Provinz wird dann bestimmt wo der Erbe sein muß. Soll ja nach neusten Erkenntnissen auch ohne Nummer funktionieren. Hier ist sie noch drin, weil es so getestet wurde. Verklagt mich.
Haben wir dies gemacht, schalten wir einen counter. In dem Fall 'set_event_counter erbeschottland 1'
Dieser counter wird also aus 1 gesetzt, wenn wir unseren Erben in Schottland oder Irland 'anklicken'.
Problem ist, daß der counter auf 1 bleiben würde und so immer aktiv währe. So könnte jeder Hanswurst dort nun die Kreuzritter anwerben. Aber dass soll ja nur für unseren Erben gehen.
Daher brauchen wir einen weiteren Monitor. Dieser soll sich abschalten wenn der Erbe nicht in Schottland ist. Oder noch besser, um zu verhindern, daß einige auf die Idee kommen mit nem anderen General die Kreuzritter anzuwerben, während unser Erbe dort ist. Daherwerden wir den counter abschalten wenn wir nen anderen Charakter anklicken.
monitor_event CharacterSelected Trait Factionheir = 0
set_event_counter erbeschottland 0
end_monitor
Damit wird der counter dann auf 0 geschaltet, wenn man nen Charakter 'anklickt', welcher nicht der Erbe ist.
Aber was bringt das? Bisher haben wir ja nur nen dummen counter der sich an und abschalten läßt.
Diesen counter müssen wir nun in die descr_mercenaries übertragen.
Diese Datei ist für die Söldner der verschiedenen Regionen zuständig. Grob, welche Söldner gibt es wo.
Wenn man sich die Datei ansieht, erkennt man, daß es dort 5 grobe Einteilungen gibt.
start_year = ab welchem Jahr werden bestimmte Söldner anwerbbar
end_year = ab welchem Jahr sind bestimmte Söldner nicht mehr anwerbbar
religions = welchen Glauben muß die Fraktion haben um die Söldner anzuwerben
crusading = Söldner die es nur während eines Kreuzzugs oder Jihads gibt
events = Söldner die durch ein bestimmtest Event freigeschaltet werden z.B. Schießpulver
Diese 5 Dinge kann man wild kombinieren und damit bestimmen welche Söldner es wann und zu welchen Bedingungen geben soll.
Für uns ist das Letzte am interessantesten.
Durch den eventcounter 'erbeschottland' haben wir nämlich ein 'Event' mit dem wir hier arbeiten können.
Also müssen wir nur noch die Entsprechenden Provinzen suchen, die wir als Kondition in unserem Monitor hatten. Währe ja etwas blödsinnig wenn wir im Monitor sagen, der Erbe muß in den Provinzen Schottlands sein und schalten dann die Söldner im Kaukasus frei.
Wir suchen also entsprechenden Pool für 'Dublin_Province', 'Edinburgh_Province' und Inverness_Province. Dabei stellen wir fest, daß diese 3 Provinzen schon zu einem Pool gehören. Welch ein Zufall.
Dort soll es nun unserem Erben möglich sein immer, auch außerhalb von Kreuzzügen, die Söldnereinheit Kreuzritter anzuwerben.
Wir suchen uns also den Eintrag für die Kreuzritter.
unit Crusader Knights exp 0 cost 1380 replenish 0.15 - 0.35 max 3 initial 1 start_year 1100 end_year 1300 religions { catholic } crusading
Bisher währen diese in den Jahren 1100 - 1300 von Fraktionen der Religion Katholisch und nur während Kreuzzügen anzuwerben.
Wir wollen aber, daß unser Erbe sie immer anwerben kann.
Also verändern wir den Eintrag. Weg mit den Jahren, weg mit der Religion und weg mit den Kreuzzügen. Dafür aber der Eintrag für unseren eventcounter/Event. Herraus kommt folgendes:
pool Scotland_Ireland
regions Dublin_Province Edinburgh_Province Inverness_Province
unit Crusader Knights exp 0 cost 1380 replenish 0.15 - 0.35 max 3 initial 1 events { erbeschottland }
Das heißt soviel, daß immer wenn das Event 'erbeschottland' stattgefunden hat, man Kreuzritter anwerben kann. Also immer wenn in unseren Monitoren im campaign_script der counter auf 1 geschaltet wird. Sprich, wenn wir unseren Erben in einer der obigen Provinzen 'angeklickt' haben.
Sobald wir etwas anderes machen bzw. einen anderen Charakter 'anklicken' ist der conter wieder aus 0 und die Söldner können nicht mehr angeworben werden.
Das ganze kann man nun für alle möglichen Provinzen in allen möglichen Kombinationen für alle möglichen Charaktere (Traits ect.) machen. Der Erbe ist ja nur ein Beispiel. Da hat jeder freie Hand.
So könnte der Erbe andere Söldner anwerben als der Anführer. Der Fürst oder Gouverneur einer Provinz andere als der einer anderen.
Neue Traits oder neue Kombinationen der Provinzen währen kein Problem. Die Provinzen der Monitore in der campaign_script und die Angaben in der descr_mercenaries sollten allerding aufeinander abgestimmt werden.
Auch sollten in weiteren Monitoren, um Söldner für bestimmte weitere Gebiete zu schalten, immer verschiedene counter benutzt werder und die Ungenutzten auf dann am Besten immer auch gleich auf 0 gesetzt werden.
Da könnte z.B. so aussehen:
monitor_event CharacterSelected Trait Factionheir = 1
and IsRegionOneOf 41 London_Province 29 Nottingham_Province 23 York_Province 27 Caernarvon_Province 43 Exeter_Province
and CharacterIsLocal
set_event_counter erbeschotten 0
set_event_counter erbeengland 1
set_event_counter erbeskandinavien 0
set_event_counter erberussia 0
set_event_counter erbeniederlande 0
set_event_counter erbenorddeutsch 0
set_event_counter erbesuddeutsch 0
set_event_counter erbepolen 0
set_event_counter erbefrance 0
set_event_counter erbeburgund 0
set_event_counter erbebalkan 0
set_event_counter erbespanien 0
set_event_counter erbespaniena 0
set_event_counter erbenorditaly 0
set_event_counter erbesizilien 0
set_event_counter erbegreek 0
set_event_counter erbeanatolien 0
set_event_counter erbearmenien 0
set_event_counter erbelevante 0
end_monitor
Alles anzeigen
Um zu verhindern, daß es eventuell zu Problemen kommt, weil der counter noch geschaltet ist und so bestimmte Söldner auch für andere Fraktionen rekrutierbar währen, könnte man auch am Ende des eigenen Zugs alle diese counter auf 0 setzen.
monitor_event FactionTurnEnd FactionIsLocal
set_event_counter erbeschotten 0
set_event_counter erbeengland 0
set_event_counter erbeskandinavien 0
set_event_counter erberussia 0
set_event_counter erbeniederlande 0
set_event_counter erbenorddeutsch 0
set_event_counter erbesuddeutsch 0
set_event_counter erbepolen 0
set_event_counter erbefrance 0
set_event_counter erbeburgund 0
set_event_counter erbebalkan 0
set_event_counter erbespanien 0
set_event_counter erbespaniena 0
set_event_counter erbenorditaly 0
set_event_counter erbesizilien 0
set_event_counter erbegreek 0
set_event_counter erbeanatolien 0
set_event_counter erbearmenien 0
set_event_counter erbelevante 0
end_monitor
Alles anzeigen
Dank an gigantus, der mich darauf hingewiesen hat, daß der entsprechende Eintrag verloren gegangen ist.
Hier, im Spoiler, auch ein Beispiel, was man damit machen kann:
[M2TW] Choceur - Diskussionsthread - Seite 6 - Modding RTW / M2TW - Totalwar-Forum.de
So. Das währe die eine Möglichkeit und es gibt bestimmt massig Varianten wie man da etwas daraus machen könnte. Viel Spaß am Probieren.
Es sei aber noch erwähnt, daß diese Möglichkeit des aktiven Söldneranwerbens, wie oben bereits erwähnt, Vor- und Nachteile hat.
Die Vorteile sind die Möglichkeiten für jeden Charakter des Spielers das Anwerben von Söldnern individuell zu gestallten. Womöglich abhänig von Rängen, Titeln, Zeit, Ereignis, Ort usw. Da kann man einiges machen.
Nachteil ist, daß es sich "nur" für den Spieler machen läßt. Für die KI funktioniert das Ganze nicht. Da die KI aber eh immer etwas Probleme beim Anwerben von Söldner hat, ist dies vielleicht auch zu vernachlässigen. Man könnte aber auch, am Rundenende der eigenen Fraktion auch einfach alle counter auf 1 schalten und so der KI das Anwerben erlauben und am eigenen Rundenbeginn dann wieder alle auf 0 setzen. Einfach mal probieren
Ab und an kann auch ein Doppelklick notwendig sein, um den counter zu schalten. Aber das sollte noch jeder hinbekommen.
Auch kann, wenn man zuletzt den entsprechenden Charakter genutzt hat, der conter noch aktiv sein und so auch der KI bzw. dem ersten Charakter/General der einem zu beginn der nächsten Runde zugewiesn wird, das Anwerben ermöglichen. Da währen obige Monitore welche am Rundenende ab bzw. anschalten wieder ne Möglichkeit.
Glaub das war alles zu diese Version.
Die Tage schreib ich vielleicht noch eines welches so ähnlich funktioniert, dann aber für alle Fraktionen gilt. Auch für die der KI.
Vielleicht fällt mir bis dahin auch nen besserer Titel ein.
Hoffe es war verständlich. viel Spaß damit.