Horden-Sekundär-Weapon

In diesem Tutorial beschäftige ich mich mit dem Thema einer Horde die Möglichkeit zu bieten über ein gewisses Zeitspektrum eine sekundäre Waffe zu aktivieren, sprich zeitbegrenzt ein Waffenswitch oder eine anders gestaltete Weapon. Das System basiert auf dem Module von Legolas Waffenswitch. Da normale HeroMode Behaviout nicht mit Horden funktionieren und ein Charge-ENUM keinen Weaponswitch ermöglicht, müssen wir diesen manuel betätigen.
Voraussetzung für dieses Tutorial sind Grundkenntnisse im Bereich des Codings.
Für das Tutorial benötigt ihr folgende INIs:
-Einheiten.ini und die dazugehörige Horden.ini
-Specialpower.ini
-Weapon.ini
-Commandbutton.ini
-Commandset.ini
-Attributemodifier.ini

Begebt euch als erstes in die ini eurer gewünschten Einheit und fügt diesen Code unten ein:

    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_Enabler
        SpecialPowerTemplate = SpecialAbilityEaTurialFähigkeit
        TriggeredBy          = Upgrade_ObjectLevel2 ;(Hier muss das Upgrade hingeschrieben, welches die Einheit bei einem gewünschten Level erhält: Experienceeintrag überprüfen/modifizieren/nicht vergessen!)
    End

    Behavior = WeaponModeSpecialPowerUpdate ModuleTag_PowerUpdate
        SpecialPowerTemplate = SpecialAbilityEaTurialFähigkeit
        Duration             = 20000 ;(Zeitraum kann selbst bestimmt werden, aber Vorsicht: Der Attributemoifier muss daran angepasst sein!)
        AttributeModifier    = EaTutorialFähigkeitBonus
        LockWeaponSlot       = SECONDARY ;(Unser Weaponslot)
        StartsPaused         = No
    End

Begebt euch nun in die Specialpower.ini und fügt folgendes ein:

SpecialPower SpecialAbilityEaTurialFähigkeit
	Enum			= SPECIAL_HERO_MODE
	ReloadTime		= 140000
End

Als nächstes geht ihr in die Attributemodifier.ini und fügt eure gewünschten Auswirkungen ein:

ModifierList EaTutorialFähigkeitBonus
	Category  = BUFF
            Modifier    = ARMOR 25%            // Additive. Sum of these are subtracted from all entries in armor.ini
            Modifier    = DAMAGE_MULT 125%    // Multiplicative.  Should make you do less damage
	Duration   = 20000 				// specified in the weaponmode power.
	FX	   = FX_CAHBerserkerRage20
End

Als nächstes geht ihr wieder in die Einheiten.ini und sucht die Weaponslots, sie sollten folgendermaßen aussehen:

    WeaponSet
        Conditions            = None 
        Weapon                = PRIMARY      DwarvenHammerträgerWeapon
        Weapon                = SECONDARY    DwarvenHammerträgerWeaponHeroMode
        AutoChooseSources     = SECONDARY NONE
        ShareWeaponReloadTime = Yes
    End

Die Weapon muss in diesem Muster angelegt sein, sprich SECONDARY hat keinen Autochoose, sprich sie wird nicht zufällig ausgelöst, sondern nur, wenn der Slot aktiviert wird.
Hier bleibt es nun euch überlassen, in wie weit ihr die zweite Weapon gestaltet, das kann ganz nach euren Wünschen ablaufen. Hierbei können Flächenschaden eingebaut werden, Lebensentzug, Projectile zum werfen etc etc.

Nun fehlt noch der Bereich der Animationen, denn wenn dies nicht beachtet wird, besitzen die Einheiten ingame keine Angriffsani. Sucht hierbei also folgenden Eintrag:

FIRING_OR_PREATTACK_A

Nun müsstet ihr in ungefährem Muster ein solches Animationssystem vorfinden:
        AnimationState        =  FIRING_OR_PREATTACK_A
            Animation           = ATKA
                AnimationName     = DUGloin_ATKA
                AnimationMode     = ONCE
                UseWeaponTiming        = Yes
            End
            Animation           = ATKB
                AnimationName     = DUGloin_ATKB
                AnimationMode     = ONCE
                UseWeaponTiming        = Yes
            End        
        End

Diesen Eintrag kopiert ihr jetzt und schreibt ihn folgendermaßen:
        AnimationState        =  FIRING_OR_PREATTACK_B
            Animation           = ATKA
                AnimationName     = DUGloin_ATKA
                AnimationMode     = ONCE
                UseWeaponTiming        = Yes
            End
            Animation           = ATKB
                AnimationName     = DUGloin_ATKB
                AnimationMode     = ONCE
                UseWeaponTiming        = Yes
            End        
        End

Ihr seht es hat sich einzig und alleine das "B" geändert, denn diese Parameter beziehen sich durch diesen Buchstaben nun auf SECONDARY.
Codet ihr ein weiteres System bei dieser Einheit müsst ihr das nun dementsprechend fortsetzen (bei weiteren Fragen zu dem Thema, lest bitte mein letztes Tutorial zum Thema: Randome Weapons).
Hierbei könnt ihr natürlich anch ganz belieben die Animationen anpassen, es müssen nicht die gleichen Angriffsanimationen, wie in der primären Weapon sein.
Als letztes fehlen uns noch der Button und der Commandset-Eintrag.
Legt hier einen Button in diesem Schema an:

CommandButton Command_SpecialAbilityEaTurialFähigkeit
    Command              = SPECIAL_POWER 
    Options                 = OK_FOR_MULTI_SELECT OK_FOR_MULTI_EXECUTE
    SpecialPower         = SpecialAbilityEaTurialFähigkeit
    TextLabel               = CONTROLBAR:SpecialAbilityHammerschläge
    ButtonImage           = HSGloinSlam
    ButtonBorderType   = ACTION 
    DescriptLabel         = CONTROLBAR:ToolTipSpecialAbilityHammerschläge
    UnitSpecificSound  = AragornBladeMaster
    InPalantir               = Yes
    AutoAbility             = Yes
End

Selbstverständlich könnt ihr die Strings euren Wünschen anpassen, sowie Sound und Bild.
Als letztes fehlt uns nur noch der Commandset-Eintrag.
Erstellt hierbei einfach ein eigenes Commandset für die Einheit und codet den Button rein: Command_SpecialAbilityEaTurialFähigkeit

Zum Abschluss dürft ihr nicht vergessen das Ganze auch für die Horde zu vollziehen. Kopiert hierbei den Eintrag der Fähigkeit in die Horde und passt das Commandset mit dem Button an.
Beachtet hierbei noch die Weapon, die folgendermaßen aussehen sollte:

    WeaponSet
        Conditions = None 
        Weapon = PRIMARY     NormalMeleeHordeRangefinder
        Weapon = SECONDARY   NormalMeleeHordeRangefinder ;(Wenn es eine Fernkampf-Weapon ist, dementsprechend hier anpassen)
        AutoChooseSources     = SECONDARY NONE
        ShareWeaponReloadTime = Yes
    End

Das wars auch schon meinerseits ;) Wie immer gelten die gleichen Regeln beim Benutzen dieses Tutorials:
Ich bitte um ein Dankeschön und um einen Readme-Eintrag, wenn ihr dieses Schema nutzt.
Ea