Automatischer INI-Switch per Upgrade

Mit diesem Tutorial könnt ihr eine Einheit ab einem bestimmten Level "wachsen" lassen oder ihr neue Systeme zuordnen. Es handelt sich hierbei um ein einfaches System, bei dem wir uns einiger Behaviour einzelner Einheit aus dem Spiel bedienen. Voraussetzung für das Funktionieren dieses Tutorials sind zwei richtig gecodete Einheiten.inis:
Die Start.ini und die ini, in die geswitcht werden soll per Upgrade

Ich erkläre das System anhand des Feuerdrachens, den wir wachsen lassen wollen.
Ihr benötigt folgende inis dafür:
Commandset.ini
Commandbutton.ini
Experiencelevels.ini
Specialpower.ini
Start.ini (Einheit)

Wir starten in der ini vom Feuerdrachen und coden diesen Parameter ein:

    Behavior = SpecialPowerModule ModuleTag_SwitchStarter                      
         SpecialPowerTemplate           = SpecialAbilityFiredrakeSwitch
         UpdateModuleStartsAttack       = Yes
         StartsPaused                   = No
    End

    Behavior = ToggleMountedSpecialAbilityUpdate ModuleTag_Switch
         SpecialPowerTemplate           = SpecialAbilityFiredrakeSwitch
         MountedTemplate                = (Objectname des neuen Drachens, zu dem geswitcht werden soll)
         SynchronizeTimerOnSpecialPower = SpecialAbilityFireDrakeInferno
         UnpackTime                     = 2000
         PreparationTime                = 0            ; none, cause we hop onto our mount in no time at all :)
         PackTime                       = 0         ; none, cause we hop onto our mount in no time at all :)
         OpacityTarget                  = .0        ; How see-thru to be at peak of change
         AwardXPForTriggering           = 0
         IgnoreFacingCheck              = Yes
    End

WICHTIG:
  ----->       MountedTemplate                = (Objectname des neuen Drachens, zu dem geswitcht werden soll)

Diese Stelle ist wichtig, bei dieser gebt ihr dne Objectnamen des ausgewachsenen Drachens an.
ALs nächstes gehen wir in die Specialpower.ini und fügen dies ein:
SpecialPower SpecialAbilityFiredrakeSwitch
    Enum            = SPECIAL_TOGGLE_MOUNTED
    ReloadTime      = 1000
End

Jetzt gehen wir in die Experiencelevels.ini und suchen den Eintrag des Feuerdrachen (Wen ihr dies nicht für den Standarddrachen haben wollt, sondern hierbei ein neues Object behandelt, müsst ihr natürlich hierbei als TargetName den Objectnamen eures Drachens angeben und alles spezifisch für diesen einstellen)

ExperienceLevel	FortressFireDrakeLevel5
	TargetNames				  		=	WildFortressFireDrake
	RequiredExperience		  		=	1
	ExperienceAward					=	30
	AttributeModifiers				=	EvilMonsterBonusRank5
	Rank							=	5
	SelectionDecal
		Texture						=	decal_I_level1
		Texture2					=	decal_evil_CO ;decal_hero_evil ;
		Style						=	SHADOW_MERGE_DECAL
		OpacityMin					=	80%
		OpacityMax					=	100%
		MinRadius			  		=	70
		MaxRadius					=	200
		MaxSelectedUnits	  		=	40
	End	
END

Ihr seht jetzt, dass nur ein Eintrag für den Feuerdrachen angegeben ist, also müssen wir insgesamt 9 weitere erstellen, damit er auch leveln kann.
Einfach mal bei den Helden nachschauen, wie das funktioniert, ist keine schwere Sache. Das Upgrade, welches der Drache im 10ten Rang erhält:
zb das hier, welches er auf Level10 erhalten soll (Nehmt einfach eines, oder erstellt ein neues):
ExperienceLevel	FortressFireDrakeLevel10
	TargetNames				  		=	WildFortressFireDrake
	RequiredExperience		  		=	1
	ExperienceAward					=	30
	AttributeModifiers				=	EvilMonsterBonusRank5
	Rank							=	10
	Upgrades				= Upgrade_ArwenFloodTrigger
	SelectionDecal
		Texture						=	decal_I_level1
		Texture2					=	decal_evil_CO ;decal_hero_evil ;
		Style						=	SHADOW_MERGE_DECAL
		OpacityMin					=	80%
		OpacityMax					=	100%
		MinRadius			  		=	70
		MaxRadius					=	200
		MaxSelectedUnits	  		=	40
	End	
END

Dieses Upgrade kopiert ihr jetzt in die Feuerdrachen ini, doch zuerst müssen wir noch diesen Behaviour in dessen ini reinfügen:
    Behavior = DoCommandUpgrade Module_DoCommandUpgrade    
        TriggeredBy                     = Upgrade_ArwenFloodTrigger
        RequiresAllTriggers             = Yes
        GetUpgradeCommandButtonName     = Command_SpecialAbilityFiredrakeSwitch
    End

Dies besagt jetzt: Sobald der Feuerdrache das Upgrade auf Rang10 erhält, wird dieser Button ausgelöst. An den Button ist die Fähigkeit des INI-Switches geknüpft.
Wir müssen also nur noch den Button erstellen und diesen in das Commandset des Feuerdrachen einfügen:

CommandButton Command_SpecialAbilityFiredrakeSwitch
  Command               = SPECIAL_POWER
  SpecialPower          = SpecialAbilityFiredrakeSwitch
  TextLabel             = CONTROLBAR:SpecialAbilityFiredrakeSwitch
  Options               = TOGGLE_IMAGE_ON_WEAPONSET ON_GROUND_ONLY
  FlagsUsedForToggle    = MOUNTED
  ButtonImage           = HSSpecialAbilityFiredrakeSwitch
  ButtonBorderType      = ACTION
  DescriptLabel         = CONTROLBAR:ToolTipSpecialAbilityFiredrakeSwitch
  InPalantir            = Yes  
End

Beschreibungen und Icon könnt ihr coden wie ihr wollt, das werde ich jetzt nicht nochmal extra ausführen.
Den Button jetzt ins Commandset des Drachen und fertig ist das System

Ealendril der Dunkle

www.modding-union.com

PS für Jaegita: LIFETIME Behaviour aus der ini des neuen Drachen löschen, damit dieser nicht nach einer gewissen Zeit verschwindet ;)