Wie bereits von einigen Spielern erkannt wurde, ist mein Mod Pie's Antikes Europa mit einer Fernangriffsmöglichkeit für alle Fernwaffen-Units ausgestattet. In einigen Mods oder Threads wurde diese Möglichkeit wieder verworfen, da es nicht richtig funzte, weil es scheinbar nicht richtig implementiert wurde.
Da dies kein Geheimnis sein und bleiben soll, möchte ich euch diese Möglichkeit hier zum SELBERMACHEN bereitstellen. Es ist aber nur eine Möglichkeit, wie ich sie zu implementieren versucht habe. Meiner Meinung nach scheint es zu funktionieren aber trotzdem: Alle Angaben ohne Gewähr
Ich freue mich natürlich, wenn ich dafür als Credit belohnt werde, sofern jemand dies wie folgt umsetzen möchte.
Ich möchte niemanden langweilen, aber mir ist wichtig, dass ihr jeden Schritt zur Tat kennenlernt. Vielleicht hilft es euch für andere Projekte oder auch für andere Probleme, so auf die Lösung zu kommen.
FERNANGRIFF / FERNKAMPF
Wie bin ich auf die Idee gekommen?
Ganz klar: Kamikazekatapulte... brrrr
Was hat mich auf die Idee gebracht, dass es umsetzbar sein muss?
Bomber (können Einheiten bombardieren). Das checkt auch die KI!
Jetzt ist es so, dass wenn man Fernangriff reinmodded, oft die KI nicht damit umgehen kann! Das war dann die große Herausforderung für mich, einen Bogenschützen mit einem Bomber zu verschmelzen....
----- Kurzer Sicherheitshinweis -----
BITTE: bevor ihr anfängt etwas zu modden, kopiert die zu ändernden Dateien in ein eigens erstelltes Mod.
Wer zum ersten Mal modded, bitte hier informieren: http://www.civforum.de/showpost.php?...39&postcount=2
Da ist kurz und bündig beschrieben was man tun kann, bevor man loslegt.
Falls jemand trotzdem ein Beispiel möchte, kann ich das gern posten.
-------------------------------------
Welche Script/Programmiersprache wird verwendet:
-) XML
Was für Dateien werden bearbeitet:
-) Assets/XML/Units/CIV4UnitInfos.xml
Nehmen wir als Beispiel den Bogenschützen:
Zu finden unter
PHP-Code:
<Class>UNITCLASS_ARCHER</Class>
Schritt 1: Richten wir ihm einen Fernkampfradius ein
In diesem Fall 1 Feld (Standard ist 0). Bei 2 wären es 2 Felder, etc.
Der Bomber hat 8.
PHP-Code:
<iAirRange>1</iAirRange>
Schritt 2: Wie stark soll die Einheit im Fernkampf sein.
In diesem Fall ganz schwach, bekommt bei mir ne 1.
Ein Jet hat 12, Bomber 16, etc.
PHP-Code:
<iAirCombat>1</iAirCombat>
Schritt 3: Wieviel Maximalschaden darf die Einheit verursachen?
Das steht gleich unter AirCombat. Bei mir 50%.
Auch Jet und Bomber haben 50%.
PHP-Code:
<iAirCombatLimit>50</iAirCombatLimit>
Setzt man iAirCombatLimit auf 100% dann kann die Einheit über Fernangriff getötet werden.
Bei einer Stärke (iAirCombat) von 1 dauert es ewig. Beim Bomber (Fernangriffstärke von 16) reichen meist 2 Fernangriffe.
So. Fast fertig. Jetzt können wir schon mal brav Fernangriff durchführen, aber was ist mit der KI?
(Ich weiß nicht, ob folgendes bei anderen Mods berücksichtigt wurde. Ich habe da experimentiert und bin auf folgendes Ergebnis gestoßen.)
Schritt 4: Der KI sagen, dass der Bogi nen Fernangriff durchführen kann.
Das verschlang einige Experimental-Zeit! Da der Bomber für den Bogi keinen wirklich sinnhaften UNITAI-Typ besaß, versuchte ich es mit einem anderen UNITAI. Da fiel mir dieses UNITAI_COLLATERAL vom Katapult auf und testete es. Siehe da, UNITAI_COLLATERAL war scheinbar nicht nur für Kollateralzwecke tauglich, sondern auch für nen ganz normalen Fernangriff.
Man gehe wieder ein bisschen hinauf zu den UnitAIs
Original:
PHP-Code:
<UnitAIs>
<UnitAI>
<UnitAIType>UNITAI_ATTACK</UnitAIType>
<bUnitAI>1</bUnitAI>
</UnitAI>
<UnitAI>
<UnitAIType>UNITAI_CITY_DEFENSE</UnitAIType>
<bUnitAI>1</bUnitAI>
</UnitAI>
</UnitAIs>
und ändert es auf (bezogen auf den Bogenschützen)
PHP-Code:
<UnitAIs>
<UnitAI>
<UnitAIType>UNITAI_COLLATERAL</UnitAIType>
<bUnitAI>1</bUnitAI>
</UnitAI>
<UnitAI>
<UnitAIType>UNITAI_CITY_DEFENSE</UnitAIType>
<bUnitAI>1</bUnitAI>
</UnitAI>
<UnitAI>
<UnitAIType>UNITAI_CITY_COUNTER</UnitAIType>
<bUnitAI>1</bUnitAI>
</UnitAI>
<UnitAI>
<UnitAIType>UNITAI_ATTACK</UnitAIType>
<bUnitAI>1</bUnitAI>
</UnitAI>
<UnitAI>
<UnitAIType>UNITAI_ATTACK_CITY</UnitAIType>
<bUnitAI>1</bUnitAI>
</UnitAI>
</UnitAIs>
ACHTUNG: Diese Reihenfolge einhalten!
Habe Collateral an die 2te Stelle gestellt und der Bogi war ziemlich fernangriffsfaul!
Meiner Meinung nach erfolgt diese Reihenfolge der primären Aufgabe für die KI.
Steht der UnitAIType übergeordneter, ist die Wahrscheinlichkeit größer, dass dies eintreffen wird.
Wenn ich mich irre, nehm ich das wieder raus.
Zum Original hat sich da einiges getan:
UNITAI_COLLATERAL hab ich dem Katapult entnommen und soll bewirken, dass er die Einheit für Kollateralschadenszwecke verwenden soll.
UNITAI_CITY_DEFENSE kommt bei mir an 2ter Stelle und bewirkt, dass sich die Einheit in ner Stadt verschanzt.
UNITAI_CITY_COUNTER: ja zurückschlagen auf das belagernde Stack ist natürlich auch erlaubt
UNITAI_ATTACK: Auch normal angreifen sollst du noch. Bringt ja nix, wenn du nur Pfeile verschießt.
UNITAI_ATTACK_CITY kommt bei mir auch in Frage, aber an letzter Stelle natürlich.
So. Das waren mal die wichtigsten Punkte. Jetzt kommt noch ein Zusatz, den ich eingebaut habe, der es macht, dass auch andere Einheiten durch die herumirrenden Pfeile getroffen werden bzw. Kollateralschaden nehmen.
Schritt 5: Kollateralschaden auf mehrere Einheiten
Das steht alles zum Glück untereinander:
Standardmäßig ist das alles auf 0.
PHP-Code:
<iCollateralDamage>100</iCollateralDamage>
<iCollateralDamageLimit>60</iCollateralDamageLimit>
<iCollateralDamageMaxUnits>3</iCollateralDamageMaxUnits>
iCollateralDamage müsste bedeuten, dass eine Chance besteht, überhaupt Kollateralschaden anzurichten.
Bei mir natürlich 100%. Ich habe beobachtet, dass der Schaden die Hälfte vom Schaden des Hauptverteidigers ist.
iCollateralDamageLimit sollte der Maximalschaden bei den Nebenverteidigern sein (entspräche iAirCombatLimit)
iCollateralDamageMaxUnits sind die Einheiten die zusätzlich neben dem Hauptverteidiger getroffen werden.
In Summe wurde nun der Original-Bogenschütze eine Mischung zwischen Bogenschütze, Katapult und Bomber. hehe...
So. Viel Spass mit dem Fernkampf nach Pie'schem Prinzip.