Hallo MU,
ich dachte mir, dass es nichts schadet mal was reinzustellen. Darum fang ich mal damit an der Elbenfestung ein Upgrade für Silberdornpfeile zu geben, da ich erstens finde, dass es sinn macht dieser Festung ebenfalls ein Upgrade für Pfeile zur Verfügungs zu stellen und ich zweites damit gleich mal diese Frage kläre:
1000 Dank euch beiden, ihr habt mir wirklich sehr weiter geholfen.
Mal eine andere Frage. Lässt sich von den Elben die Festung selbst und die Erweiterungs-Wachtürme mit Silberdornpfeilen bestücken? Falls ja, welche ini und was müsste man genau umschreiben?
Was brauche ich für dieses Tutorial?Als erstes benennen wir das Big-Archiv aus dem Download um in __mod.big.
Dann Erstellen wir die Upgrades, die wir später verwenden werden. Dazu gehen wir in unserer __mod.big in die Datei 'data\ini\mod\upgrade.inc' und fügen den folgenden Code ein:
Upgrade Upgrade_ElvenFortressSilverthornMunitions
Type = OBJECT
End
Upgrade Upgrade_ElvenFortressSilverthornMunitionsTrigger
Type = OBJECT
BuildCost = 1500 ; Die Kosten für das Upgrade in der Festung
BuildTime = 30 ; Die Zeit, die benötigt wird um das Upgrade zu erforschen
ResearchSound = UpgradeSilverThornArrows ; der Sound der abgespielt wird denn das Upgrade erforscht wurde. Ich habe hier das von den Elbeneinheiten genommen.
DisplayName = UPGRADE:ElvenSilverthornArrows ; der Name vom Upgrade (ebenfalls von den Einheiten übernommen)
SkirmishAIHeuristic = AI_UPGRADEHEURISTIC_FORTRESS ; Wie wichtig ist es für die AI? (Übernommen von den Feuerpfeilupgrade der Menschenfestung)
End
Danach fangen wir mit den Veränderungen in der ini der Elbenfestung an.
Dazu schauen wir uns 'data\ini\object\goodfaction\structures\elven\elvenfortress.ini' (ini.big) an und kopieren diese Datei auch gleich mal in unsere __mod.big.
Dann implementieren wir die neuen Behavior. Dazu suchen wir in der kopierten Datei nach "ModuleTag_AI" und fügen darüber den folgenden Code ein.
;// Neues Upgrade für Silberdornpfeile
Behavior = CastleUpgrade ModuleTag_PassOutSilverthornMunitionsUpgrade
TriggeredBy = Upgrade_ElvenFortressSilverthornMunitionsTrigger
Upgrade = Upgrade_ElvenFortressSilverthornMunitions
End
Behavior = StatusBitsUpgrade ModuleTag_FakeOut ; I need to react to the upgrade, so I can have it for when new construction asks me for all the upgrades
TriggeredBy = Upgrade_ElvenFortressSilverthornMunitions
End
Zusätzlich müssen wir noch das Weaponset der Festung ändern. Dazu suchen wir in der ini der Festung nach "WeaponSet" und ändern es so ab:
WeaponSet
Weapon = PRIMARY ElvenFortressArrowTowerBow
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
End
Als nächstes erstellen wir unsere Weapons für die Festung. Dazu gehen wir in die 'data\ini\mod\weapon.inc' und fügen den folgenden Code ein:
Weapon ElvenFortressArrowTowerBow ; eine Kopie der orginalen Festungswaffe
AttackRange = KEEP_ARCHER_RANGE
WeaponSpeed = 321 ; dist/sec
MinWeaponSpeed = 241
MaxWeaponSpeed = 481 ; dist/sec Upper limit on scaling, when attacking past nominal "max" range
FireFX = FX_RohanArcherBowWeapon
ScaleWeaponSpeed = Yes ; Used for lob weapons, scales speed proportional to range
HitPercentage = 100 ;When this weapon is used it will hit exactly 50% of the time.
ScatterRadius = 16.0 ;When this weapon misses it can randomly miss by as much as this distance.
DelayBetweenShots = Min:KEEP_BOW_DELAYBETWEENSHOTS_MIN Max:KEEP_BOW_DELAYBETWEENSHOTS_MAX
PreAttackDelay = KEEP_BOW_PREATTACKDELAY ; 1467 is the prep time for archer.
PreAttackType = PER_SHOT ; Do the delay each time we attack a new target
FiringDuration = KEEP_BOW_DELAYBETWEENSHOTS_MAX ; Duration of the archer firing shot is 500ms.
IsAimingWeapon = Yes
AntiAirborneVehicle = Yes
AntiAirborneMonster = Yes
HitPassengerPercentage = 20%
AcceptableAimDelta = 180.0 ; We want to be able to shoot all round, as we canit move.
CanBeDodged = Yes ; Will check for a DodgePercent on the target to have a second chance at failing HitPercent
ProjectileNugget ; Default arrow
ProjectileTemplateName = GoodFactionArrow
WarheadTemplateName = FortressArrowTowerBowWarhead
ForbiddenUpgradeNames = Upgrade_ElvenFortressSilverthornMunitions
End
ProjectileNugget ; Upgraded arrow (neu)
ProjectileTemplateName = MirkwoodArcherSilverthornProjectile
WarheadTemplateName = ElvenFortressArrowTowerBowUpgradedWarhead ; Der neue Warhead (siehe unten)
RequiredUpgradeNames = Upgrade_ElvenFortressSilverthornMunitions ; das Upgrade, welches den neuen Warhead aktiviert.
End
End
; Der neue Warhead für die Projektile
; Es ist im Prinzip eine Kopie des MirkwoodWarheads mit Silberdornpfeilen
Weapon ElvenFortressArrowTowerBowUpgradedWarhead
ProjectileCollidesWith = ENEMIES NEUTRAL STRUCTURES WALLS
RadiusDamageAffects = ENEMIES NEUTRALS NOT_SIMILAR ;ALLIES
HitStoredTarget = Yes ; Always hits initial target.
DamageNugget ; A basic Nugget that just does damage
Damage = ELVEN_MIRKWOOD_ARCHER_DAMAGE_UPGRADE_PIERCE
Radius = 0.0 ; HitStoredTarget means we hurt the person we launched at. And nobody else. So a miss hurts nobody.
DelayTime = 0
DamageType = PIERCE
DamageFXType = GOOD_ARROW_PIERCE
DeathType = EXPLODED
End
; Damage to everything else is increased
DamageNugget
;SpecialObjectFilter = ALL -STRUCTURE
Damage = ELVEN_MIRKWOOD_ARCHER_DAMAGE_UPGRADE_MAGIC
Radius = 0.0
DelayTime = 0
DamageType = MAGIC
DamageFXType = MAGIC
DeathType = EXPLODED
DamageScalar = 25% NONE +STRUCTURE
End
; ..and meta impact damage on infantry
MetaImpactNugget
SpecialObjectFilter = NONE +INFANTRY
ShockWaveAmount = 50.0
ShockWaveRadius = 10.0
ShockWaveArc = 90 ; in degrees to each side 180 is full circle
ShockWaveTaperOff = 1.0
ShockWaveSpeed = 0.0
ShockWaveZMult = 1.0
OnlyWhenJustDied = Yes
End
End
Als nächstes legen wir das neue Commandset der Festung an:
; Eigentlich das gleiche Commandset der orginalen Festung nur mit unserem neuen Commandbutton (zu dem wir gleich kommen)
CommandSet ModElvenFortressCommandSet
InitialVisible = 6
//Main Menu
1 = Command_ConstructElvenPorter
; 2 = Command_ConstructNoldorWarriorHorde ; Added for BFME2 Expansion
2 = Command_SelectRevivablesElvenFortress
3 = Command_SelectUpgradesElvenFortress
4 = Command_PurchaseNewEagle
6 = Command_Sell
//Improvements
7 = Command_PurchaseUpgradeElvenFortressEnchantedAnvil
8 = Command_PurchaseUpgradeElvenFortressBlessedMist
9 = Command_PurchaseUpgradeElvenFortressCrystalMoat
10 = Command_PurchaseUpgradeElvenFortressSilverthornMunitions ; der neue Commandbutton für die Silberdornpfeile
11 = Command_PurchaseUpgradeElvenFortressMysticFountains
12 = Command_PurchaseUpgradeElvenFortressEncasingVines
13 = Command_PurchaseUpgradeElvenFortressEaglesNest
14 = Command_RadialBack
//Heroes
15 = Command_RingHeroReviveSlot
16 = Command_CreateAHeroReviveSlot // Note we also need an extra slot for the Create A Hero
17 = Command_GenericReviveSlot1 //Revives any hero. Use Slot1-Slot8 and keep them UNIQUE within the same commandset!
18 = Command_GenericReviveSlot2
19 = Command_GenericReviveSlot3
20 = Command_GenericReviveSlot4
21 = Command_GenericReviveSlot5
22 = Command_GenericReviveSlot6
23 = Command_GenericReviveSlot7
24 = Command_RadialBack
End
Nun also den neuen Button für die 'data\ini\mod\commandbutton.inc':
CommandButton Command_PurchaseUpgradeElvenFortressSilverthornMunitions
Command = OBJECT_UPGRADE
Upgrade = Upgrade_ElvenFortressSilverthornMunitionsTrigger ; das Upgrade mit den Kosten usw...
Options = CANCELABLE
TextLabel = CONTROLBAR:ElvenFortressSilverthornMinitions ; unser Buttonname (dazu kommen wir gleich ;D)
ButtonImage = BEEregionForge_SilverthornArrows ; Das Icon des Buttons (das selbe wie in der Elbenschmiede)
ButtonBorderType = UPGRADE
DescriptLabel = CONTROLBAR:ToolTipElvenFortressSilverthornMinitions ; unser Buttontooltip (dazu kommen wir gleich ;D)
Radial = Yes
InPalantir = No
End
und die Veränderung an den bereits vorhandenen Menüknöpfen in der 'data\ini\commandbutton.ini':
CommandButton Command_SelectRevivablesElvenFortress
Command = PUSH_VISIBLE_COMMAND_RANGE
TextLabel = CONTROLBAR:SelectRevivablesElvenFortress
ButtonImage = UCCommon_GoodHeroes
ButtonBorderType = SYSTEM
DescriptLabel = CONTROLBAR:ToolTipCommandSelectRevivablesElvenFortress
Radial = Yes
CommandRangeStart = 14 ; erhöht auf 14
CommandRangeCount = 10
End
und:
CommandButton Command_SelectUpgradesElvenFortress
Command = PUSH_VISIBLE_COMMAND_RANGE
TextLabel = CONTROLBAR:SelectUpgradesElvenFortress
ButtonImage = UCCommon_UpgradeStructureNew
ButtonBorderType = SYSTEM
DescriptLabel = CONTROLBAR:ToolTipCommandSelectUpgradesElvenFortress
Radial = Yes
CommandRangeStart = 6
CommandRangeCount = 8 ; Erhöht auf 8
End
Als letztes Fügen wir noch die folgenden Einträge in die lotr.str ein:
CONTROLBAR:ElvenFortressSilverthornMinitions
"Silberdornpfeile kaufen (&W)"
End
CONTROLBAR:ToolTipElvenFortressSilverthornMinitions
"Rüstet die Festung und alle angeschlossenen Türme mit Silberdornpfeilen aus."
End
Damit wären wir soweit fertig!
Ich hoffe ich konnte helfen.