The 3rd Age

BFME 2: Arcade Edition

BFME 2: Arcade Edition

Throws out all the conventional rules of a RTS game and opens the game up like a playable cheat code

Button for The 3rd AgeButton for RevoraButton for The Dwarf HoldsButton for The Elven AllianceButton for Helm's Deep Last HopeButton for The Four AgesButton for Lord of the Rings FileFrontButton for Middle Earth CenterButton for BFME Game ReplaysButton for HDR HeadquartersButton for moddbButton for CNC3.NetButton for RTS CommunityButton for OpenWar ProjectButton for Victory Engine

Become an affiliate!

   

Quick Lists

Top Rated Popular New Updated Last Comments Users

Register and log in to move these advertisements down

Toggle Formations

Article for Battle for Middle-earth BFME, Battle for Middle-earth II BFME 2, Battle for Middle-earth II: Rise of the Witch-king ROTWK

Avatar of Kwen

Kwen

Category: Code
Level: Intermediate
Created: Wednesday August 26, 2009 - 20:41
Updated: Wednesday August 26, 2009 - 20:47
Views: 1275
Summary: Explains how to add toggling formations to your hordes.

Rating

Staff says

3.0

Members say

3.8

Average

3.6/5.0

5 votes

Formations are very common throughout bfme. They allow for differing positions of your units to give them a tactical advantage in certain situations.
Of course you know how these work if you play the game at all. But coding them in can be a trick.

In this tutorial I will explain how to add the porcupine formation to MordorPikeman (A new unit I added. Basically just a re-named Uruk Pikeman.) This is assuming you know the basics and be fully able to code in a functional Unit and Horde.

To do so you will have to edit the following files:

CommandSet.ini
MordorPikemanHorde.ini

The first thing you'll have to do is make absolutely sure your horde works to its fullest prior to doing this.

Then open evilfactionhordes.ini, Find IsengardPikemanHorde.

At the bottom of the horde you'll find this:

              
Code

ChildObject IsengardPikemanHordePorcupine IsengardPikemanHorde
    ; Note - for alternate formations, all info outside of the Contain Behavior module is ignored.
    ; Any modifications need to be done via the Attribute Modifiers in the contain module.
    Behavior = HordeContain ModuleTag_HordeContain
        ObjectStatusOfContained =
        InitialPayload = IsengardPikeman 10
        Slots = 10
        PassengerFilter = NONE +INFANTRY
        ShowPips = No

        ThisFormationIsTheMainFormation = No    ;Used to determine which armorset to use (and anything else we want!)
        
        ; Banner Carrier info        
        ;BannerCarriersAllowed    = IsengardBannerOrc                                        ; types of units that are allowed as banner carriers
        ;BannerCarrierPosition    = UnitType:IsengardPikeman        Pos:X:15.0 Y:0.0        ; (DEFAULT) position of banner carrier for fighter horde
        
    BannerCarriersAllowed    = IsengardBannerOrc            ; types of units that are allowed as banner carriers
    BannerCarrierPosition    = UnitType:IsengardBannerOrc    Pos:X:27.0 Y:5.0    ; (DEFAULT) position of banner carrier for fighter horde
            
    RankInfo = RankNumber:1 UnitType:IsengardPikeman Position:X:22 Y:-32    Position:X:22 Y:-10    Position:X:22 Y:10    Position:X:22 Y:32    
    RankInfo = RankNumber:2 UnitType:IsengardPikeman Position:X:2 Y:-32    Position:X:2 Y:-10    Position:X:2 Y:10    Position:X:2 Y:32    
    RankInfo = RankNumber:3 UnitType:IsengardPikeman             Position:X:-22 Y:-10    Position:X:-22 Y:10        

    ComboHorde = Target:IsengardFighterHorde Result:IsengardFighterPikemanComboHorde InitiateVoice:UrukPikemanVoiceJoinAnybody
    ComboHorde = Target:IsengardFighterHordeBlock Result:IsengardFighterPikemanComboHorde InitiateVoice:UrukPikemanVoiceJoinAnybody
    ComboHorde = Target:IsengardUrukCrossbowHorde Result:IsengardCrossbowPikemanComboHorde InitiateVoice:UrukPikemanVoiceJoinAnybody
    ComboHorde = Target:IsengardUrukCrossbowHordeWedgeFormation Result:IsengardCrossbowPikemanComboHorde InitiateVoice:UrukPikemanVoiceJoinAnybody

        AlternateFormation = IsengardPikemanHorde
        AttributeModifiers = IsengardPikemanHordePorcupineBonus
        UsePorcupineBody = Yes
        UseSlowHordeMovement = Yes
    End
End



This is a childobject of the original horde, but in a different arrangement, with a different speed, and with different stats. The rest is the same.

Copy this and put it at the bottom of MordorPikemanHorde.

Now, a lot of name changing. Use a find/replace to change all IsengardPikeman to MordorPikeman
(Do not change "AttributeModifiers = IsengardPikemanHordePorcupineBonus" unless you plan to make the bonus different.)

Essentially in the childobject, change all Isengard to Mordor. It should now look like:

              
Code

ChildObject MordorPikemanHordePorcupine MordorPikemanHorde ;(Must be the name of the original Horde.)
    ; Note - for alternate formations, all info outside of the Contain Behavior module is ignored.
    ; Any modifications need to be done via the Attribute Modifiers in the contain module.
    Behavior = HordeContain ModuleTag_HordeContain
        ObjectStatusOfContained =
        InitialPayload = MordorPikeman 10
        Slots = 10
        PassengerFilter = NONE +INFANTRY
        ShowPips = No

        ThisFormationIsTheMainFormation = No    ;Used to determine which armorset to use (and anything else we want!)
        
        ; Banner Carrier info        
        ;BannerCarriersAllowed    = MordorBannerOrc                                        ; types of units that are allowed as banner carriers
        ;BannerCarrierPosition    = UnitType:MordorPikeman        Pos:X:15.0 Y:0.0        ; (DEFAULT) position of banner carrier for fighter horde
        
    BannerCarriersAllowed    = MordorBannerOrc            ; types of units that are allowed as banner carriers
    BannerCarrierPosition    = UnitType:MordorBannerOrc    Pos:X:27.0 Y:5.0    ; (DEFAULT) position of banner carrier for fighter horde
            
    RankInfo = RankNumber:1 UnitType:MordorPikeman Position:X:22 Y:-32    Position:X:22 Y:-10    Position:X:22 Y:10    Position:X:22 Y:32    
    RankInfo = RankNumber:2 UnitType:MordorPikeman Position:X:2 Y:-32    Position:X:2 Y:-10    Position:X:2 Y:10    Position:X:2 Y:32    
    RankInfo = RankNumber:3 UnitType:MordorPikeman             Position:X:-22 Y:-10    Position:X:-22 Y:10        

;(Comment these out. They define combo-hordes.)

;    ComboHorde = Target:IsengardFighterHorde Result:IsengardFighterPikemanComboHorde InitiateVoice:UrukPikemanVoiceJoinAnybody
;    ComboHorde = Target:IsengardFighterHordeBlock Result:IsengardFighterPikemanComboHorde InitiateVoice:UrukPikemanVoiceJoinAnybody
;    ComboHorde = Target:IsengardUrukCrossbowHorde Result:IsengardCrossbowPikemanComboHorde InitiateVoice:UrukPikemanVoiceJoinAnybody
;    ComboHorde = Target:IsengardUrukCrossbowHordeWedgeFormation Result:IsengardCrossbowPikemanComboHorde InitiateVoice:UrukPikemanVoiceJoinAnybody

        AlternateFormation = MordorPikemanHorde
        AttributeModifiers = IsengardPikemanHordePorcupineBonus
        UsePorcupineBody = Yes
        UseSlowHordeMovement = Yes
    End
End


Make sure this line states: "AlternateFormation = MordorPikemanHorde"
Now, in the MordorPikemanHorde make sure the alternate formation states: "AlternateFormation = MordorPikemanHordePorcupine"
This is important so the code will recognize that the two are interchangeable.

Now. The coding in the Horde code is done.

Open up CommandSet.ini

Find CommandSet IsengardPikemanHordeCommandSet
Copy the line     2 = Command_ToggleFormationPikeman

Add it to MordorPikemanHordeCommandSet.

Now, test.

There you go. Your Unit should now be able to toggle formation.

Go to top

 

"One site to rule them all, one site to find them,
one site to host them all, and on the network bind them."

 
7:52:26