Hallo Modding Union,
da es ja mit meinen Submods, die ich so vor mich hin programmiere, offenbar nicht so gut aussieht, habe ich mir überlegt, einige der vielleicht komplexeren Systeme hier etwas zu verläutern. Vermutlich werden sich praktisch alle, die hier noch aktiv modden, diese Systeme auch selbst überlegen können, weil ich nun leider nicht der erfahrenste Modder bin, aber möglicherweise tritt der "Ei-des-Kolumbus"-Effekt ja doch ein und es hilft einigen Leuten vielleicht beim Schreiben ihrer Mods/Submods.
Die Idee:Angenommen, wir wollen die Lebenspunkte einer Einheit nach ihrer Rekrutierung ändern. Bis zu einem gewissen Grad ist dies über Upgrades problemlos möglich, indem man verschiedene Modifier vergibt, aber evtl. möchte man ein "nach oben offenes" System, d.h. die Veränderung der Lebenspunkte soll in beide Richtungen beschränkt sein.
Wo ich dieses System verwende, ist meine Kastellanüberarbeitung, wo diese, je häufiger "Schleichende Verderbnis" eingesetzt wurde, umso mehr Lebenspunkte erhalten.
Unsere Ziele sind also:
- beliebig viele Modifikationen der HP
- Möglichkeit, hierbei eine Form von Schranke einzubauen (!)
Der 2. Punkt ist der nicht-triviale, ansonsten lässt sich der Effekt natürlich mit wiederholtem Auftragen von Modifiern der Form
ModifierList BonuslebenKastellanModifier
Category = WEAPON
Modifier = HEALTH 100
Duration = 300 ;endliche Dauer (!!!)
End
lösen.
Das System:Wir öffnen zunächst mit FinalBig die INI einer Einheit, die wir verändern wollen (hier werden es stets Mordors Kastellane sein). Wir fügen nun insgesamt folgende Einträge hinzu:
Behavior = MaxHealthUpgrade ModuleTag_KastellanBonusleben
TriggeredBy = Upgrade_RoyalguardMount
AddMaxHealth = 100
ChangeType = SAME_CURRENTHEALTH
Permanent = Yes
End
Behavior = ObjectCreationUpgrade MakeTheFreeTrebq2e
TriggeredBy = Upgrade_RoyalguardMount
Delay = 9.0 ;möglichst klein, aber ungleich null
RemoveUpgrade = Upgrade_RoyalguardMount
End
Wann immer unsere Einheit also das Upgrade Upgrade_RoyalguardMount erhält, erhöhen sich ihre max. HP um 100. Ferner wird dieses Upgrade sofort wieder entfernt, um den Vorgang wiederholen zu können. Grundsätzlich brauchen wir jetzt also nur noch eine Modifierquelle, die dieses Upgrade immer wieder auf die Einheit draufschmeißt, dann können wir immerhin schon die max. HP immer weiter erhöhen.
Traditionell wird man dies über eine wiederholt feuernde Weapon, die nur unser gewünschtes Object trifft, lösen, beim Modifier ist nur wichtig, dass er endliche Dauer hat (vorzugsweise kurze, endliche Dauer), um neu aufgetragen zu werden:
Weapon BonuslebenKastellanWeapon2
RadiusDamageAffects = ALLIES SELF
AttackRange = 99999999
DelayBetweenShots = 85000
PreAttackType = PER_SHOT
AttributeModifierNugget
AttributeModifier = BonuslebenKastellanUpgrade
Radius = 999999999
SpecialObjectFilter = NONE +MordorKastellan
End
End
ModifierList BonuslebenKastellanUpgrade
Category = SPELL
Upgrade = Upgrade_RoyalguardMount Delay: 3
Duration = 3
End
So. Der 1. Punkt ist damit umgesetzt, wie erwähnt zu kompliziert, denn es ginge viel einfacher (s.o.). Wie können wir diesen Lebensgewinn nun stoppen? In der MS wird dies erreicht, indem Kastellane nach einiger Zeit ein Upgrade erhalten, durch das ein neues Module aktiviert wird (wieder in der INI der Kastellane):
Behavior = MaxHealthUpgrade ModuleTag_KastellanBonuslebenEnde
TriggeredBy = Upgrade_RoyalguardMount Upgrade_HasDragonNestFireDrake
RequiresAllTriggers = Yes
AddMaxHealth = -100
ChangeType = SAME_CURRENTHEALTH
Permanent = Yes
End
Besitzt das Object beide Upgrades, gleichen sich die Änderungen also wieder aus, es passiert als nichts beobachtbares.
Wir haben also jetzt eine Möglichkeit, die Lebenspunkte einer Einheit zu erhöhen und diesen Gewinn irgendwann abzubrechen. Wichtig ist, dass das System natürlich auch in die andere Richtung funktioniert: Wenn man wiederholt die max. HP senken möchte, benötigt man lediglich ein MaxHealthUpgrade, das negative HP hinzufügt.
Wichtig: Hierfür ist eine Abbruchbedingung unverzichtbar!!! Objecte, die formal unter 0 max. HP haben, bringen das Spiel zum Absturz!
Es hat sich ferner bei mir gezeigt, dass die ständigen auf das Object wirkenden Weapons ihr natürliches Heilverhalten abbrechen (außer man gibt der Einheit auch Heilung im Kampf). Da aufgrund der evtl. massiv variierenden max. HP die Heilkraft mitskalieren muss, kann eine prozentuale Heilung durchaus in Betracht gezogen werden.
Als letztes noch ein Praxistipp: Das Spiel bekommt Probleme, wenn man die Modifier zu eng taktet (d.h. innerhalb weniger Sekunden mehrmals das Upgrade hinzufügt, welches die max. HP verändert). Die Triggerbedigungen müssen also chronologisch weit genug auseinander liegen (bei mir benötigen Kastellane 2 Minuten, bis die Lebenszuwachsblockade greift und sie ihre max. HP somit erreichen). Dies mag als Richtwert dienen.
Mit diesen Änderungen läuft das System dann aber in der Praxis ohne Probleme, ich habe mit diesen Einträgen bestenfalls Abweichungen von 100 HP (also einer unterschlagenen / doppelt hinzugefügten Lebensvergabe) festgestellt und das in längeren Spielen, wo "Schleichende Verderbnis" bestimmt 20-mal gewirkt wurde.
Damit endet mein kleiner Beitrag zum SuM-Modding für heute erst einmal; ich hoffe, es hat einigen geholfen und wenn nicht, schiebt es auf die Hybris des Größten der Ainur, das dieses Tutorial existiert!
![;)](https://modding-union.com/Smileys/mu/wink.gif)
Für Fragen oder Kommentare bin ich durchaus offen und wenn mir jemand verrät, dass das System völliger Blödsinn ist, weil es viel einfacher ginge: Auch gut!
Als letztes noch ein Dank an Prinz von Dol Amroth, von dem ich die Grundzüge des Herumspielens mit dem MaxHealthUpgrade gelernt habe, und auf dessen Basis das System funktioniert!
![:)](https://modding-union.com/Smileys/mu/smilie.gif)
Gruß
Melkor Bauglir