Schon länger in Planung, jetzt ist es endlich da: Ein Scripting-Tutorial zur Umsetzung eines Feldkostenscripts, dem eine Ja/Nein-Entscheidung vorrausgeht.
An dieser Stelle möchte ich mich auch bei repman bedanken, der mir freundlicherweise die Erlaubniss gab, am Beispiel vom DLV-Feldkostenscript die Sache zu veranschaulichen und deutlich zu machen. Ich denke nämlich, dass dort die Sache sehr gut umgesetzt ist.
Kurz zur Erklärung was ein Feldkostenscript überhaupt ist: Dieses Script sorgt dafür, dass dem Spieler ein bestimmter, festlegbarer Geldbetrag abgezogen wird pro Runde, für Armeen die sich nicht in Städten/Burgen befinden.
Dabei gibt es noch die Unterscheidung ob sie sich im eigenen Land oder im feindlichen befinden. Sowie einige weitere Dinge.
Dabei ist das Script eigentlich relativ simpel, und im Prinzip einfaches Copy + Paste. Man kann es sich aber auch schwer machen und es einfach alles selbst schreiben.
Zudem gibt es bei DLV noch das nützliche Feature, dass man sich den genauen Kostenaufwand anzeigen lassen kann.
Mit ein Grund warum ich genau dass von DLV als Beispiel nehme.
Hinweis: Das Tutorial ist so angelegt, dass man das Script hier, einfach in sein eigenes kopieren kann.
Nun aber gehts endlich los mit dem eigentlichen Tutorial:
----------------------------------------------------------------
Was wird benötigt:
campaign_script.txt ---> ([...]\Medieval II Total War\mods\[...]\data\world\maps\campaign\imperial_campaign)
historic_events.txt ---> ([...]\Medieval II Total War\mods\[...]\data\text)
Modfolder, eigene Mod oder Retrofit , entpacktes Vanilla
----------------------------------------------------------------
Zuerst zum Entscheidungsevent, dies ist relativ einfach:
monitor_event PreFactionTurnStart FactionIsLocal
historic_event field_costs true
terminate_monitor
end_monitor
Der Spieler bekommt hier, in der allersten Runde, direkt beim Start einer Kampagne die abfrage, ob er die Feldkosten aktivieren möchte oder nicht.
Dies kommt ins campaign_script, in die historic_events kommt hierfür:
{FIELD_COSTS_BODY}\n\nSie können sich nun entscheiden ob sie sich Sie gerne für sich die Kampagnenschwierigkeit etwas erhöhen wollen, bei Annehmen kommen zusätzliche Kosten auf sie zu:\n\nFür Armeen belaufen sich ihre Kosten auf: 200 Goldmünzen im eigenen Land, 500 in feindlichen Landen und 2000 bei Belagerungen.\nFür Agenten belaufen sich die Kosten auf:\n\nSpion 500 Goldmünzen, Attentäter 500 Goldmünzen, Priester 100 Goldmünzen, Diplomaten 100 Goldmünzen.\n\nWenn sie den Kostenaufwand für die Feldkosten erfahren wollen, können sie 1 mal Pro Runde auf ihre Finanzübersicht klicken, dann erscheint ein Fenster in dem sie über die Kosten informiert werden.\n\n
{FIELD_COSTS_TITLE}Feldkosten
Der enthaltende Text ist nur ein Beispieltext.
----------------------------------------------------------------
Dann zu den Kosten selbst, zuerst für Truppen:
Die Kosten wenn sie in feindlichen Landen sind:
[spoil]
monitor_event CharacterTurnEnd FactionIsLocal
and I_EventCounter field_costs_accepted = 1
and not EndedInSettlement
and not IsBesieging
and not AgentType = admiral
and not AgentType = spy
and not AgentType = diplomat
and not AgentType = assassin
and not AgentType = priest
and not AgentType = princess
and not AgentType = merchant
and InEnemyLands
console_command add_money -500
inc_counter field_cost 500
end_monitor
Alles anzeigen
[/spoil]
Wenn die Armee im eigenen Land ist:
[spoil]
monitor_event CharacterTurnEnd FactionIsLocal
and I_EventCounter field_costs_accepted = 1
and not EndedInSettlement
and not AgentType = admiral
and not AgentType = spy
and not AgentType = diplomat
and not AgentType = assassin
and not AgentType = priest
and not AgentType = princess
and not AgentType = merchant
and not InEnemyLands
console_command add_money -200
inc_counter field_cost 200
end_monitor
Alles anzeigen
[/spoil]
Und für den Fall, dass sie eine feindliche Siedlung belagert:
[spoil]
monitor_event CharacterTurnEnd FactionIsLocal
and I_EventCounter field_costs_accepted = 1
and not EndedInSettlement
and IsBesieging
and not AgentType = admiral
and not AgentType = spy
and not AgentType = diplomat
and not AgentType = assassin
and not AgentType = priest
and not AgentType = princess
and not AgentType = merchant
and InEnemyLands
console_command add_money -2000
inc_counter field_cost 2000
end_monitor
Alles anzeigen
[/spoil]
----------------------------------------------------------------
Die meisten Sachen sollten eigentlich relativ einleuchtend sein.
and not AgentType = XYZ schließt die Agentypen aus, and [not] InEnemyLands definiert den Standort, and [not] IsBesieging definiert, ob die Armee gerade eine Siedlung belagert, oder nicht.
Die Kosten können/werden hier angepasst.
console_command add_money -2000
inc_counter field_cost 2000
--->
Die abgezogenen Kosten aus dem Staatsäckel.
Darauf gehe ich später nochmal ein, hat was mit der möglichkeit zu tun, sich anzeigen zu lassen wie hoch die Kosten sind.
----------------------------------------------------------------
Kommen wir zu den Agenten, hier habe ich als Grundeinstellung, dass man nur Geld abgezogen bekommt, wenn sie in feindlichen Landen sind.
Hier kann man genau so, wie bei den Armeen, die Kosten anpassen. Nicht vergessen: Der counter-Wert muss auch angepasst werden, sonst stimmen nachher die angegebenen Werte nicht mehr.
[spoil]
;------------------------------------------- Spione ------------------------
monitor_event CharacterTurnEnd FactionIsLocal
and I_EventCounter field_costs_accepted = 1
and AgentType = spy
and InEnemyLands
console_command add_money -500
inc_counter field_cost 500
end_monitor
;------------------------------------------- Attentäter ------------------------
monitor_event CharacterTurnEnd FactionIsLocal
and I_EventCounter field_costs_accepted = 1
and AgentType = assassin
and InEnemyLands
console_command add_money -500
inc_counter field_cost 500
end_monitor
;------------------------------------------- Priester ------------------------
monitor_event CharacterTurnEnd FactionIsLocal
and I_EventCounter field_costs_accepted = 1
and AgentType = priest
and InEnemyLands
console_command add_money -100
inc_counter field_cost 100
end_monitor
;------------------------------------------- Diplomat ------------------------
monitor_event CharacterTurnEnd FactionIsLocal
and I_EventCounter field_costs_accepted = 1
and AgentType = diplomat
and InEnemyLands
console_command add_money -100
inc_counter field_cost 100
end_monitor
;------------------------------------------- Händler ------------------------
monitor_event CharacterTurnEnd FactionIsLocal
and I_EventCounter field_costs_accepted = 1
and AgentType = merchant
and InEnemyLands
console_command add_money -100
inc_counter field_cost 100
end_monitor
Alles anzeigen
[/spoil]
Ich denke hier sind keine weiteren Erklärungen nötig, die einzelnen Werte/Befehle/Bedingungen sollten mitlerweile verständlich sein.
Man kann natürlich bestimmte Kosten weglassen, zB. den Händler, oder den Diplomaten. Dann einfach den gesamten Eintrag entfernen der dazugehört.
----------------------------------------------------------------
Das waren auch schon die eigentlichen Kosten.
Damit wir nun aber Ingame auch wissen, was uns der ganze Spaß immer kostet, gibt es bei DLV das Feature das man einmal (Pro Runde) auf die Finanzübersicht (Geldtopf rechts unten) klicken kann, sogleich öffnet sich eine historische Nachricht in der der Spieler informiert wird, wie hoch die kosten sind.
Fortsetzung siehe 2ten Post!