The 3rd Age

The Horse Lords

The Horse Lords

A mod intended to enhance The Rise of the Witch King and add a new campaign

Button for The 3rd AgeButton for The Dwarf HoldsButton for The Elven AllianceButton for Helm's Deep Last HopeButton for GothmogtheOrcButton for BFME+Button for The Four AgesButton for HDR HeadquartersButton for Middle Earth CenterButton for Project Perfect Mod

Become an affiliate!

   

Quick Lists

Top Rated Popular New Updated Last Comments Users

Register and log in to move these advertisements down

Ultimate beginner's guide. New hero, many topics

Avatar of malvack

malvack

Category: Code
Level: Beginner
Created: Saturday March 5, 2016 - 6:37
Updated: Tuesday October 11, 2016 - 6:19
Views: 16180
Summary: Guide to make new hero based on CaH and many other topics

Rating

Staff says

-

Members say

5.0

Average

5.0/5.0

2 votes

Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
The second thing we will do is change the models of your hero, so open malvack.ini (or however the ini of your hero is named) and delete everything between "SelectPortrait/ButtonImage" and "#include ..\..\..\includes\StunDrawModuleSmall.inc" /"; ***DESIGN parameters *** "/"Side = Angmar". Now, in the blank space paste this:

              
Code

    DescriptionStrategic     = CONTROLBAR:LW_ToolTip_Gimli

    Draw = W3DScriptedModelDraw ModuleTag_01

        StaticModelLODMode         = yes //Will    append M or    L to the skin name depending on    GameLOD

;        RandomTexture = upelven_transport.tga 0 char_el_00.tga
        OkToChangeModelColor     = Yes

        ExtraPublicBone             = arrow

        ExtraPublicBone             = PASSENGERBONE

        DependencySharedModelFlags = TURN_LEFT_HIGH_SPEED TURN_RIGHT_HIGH_SPEED    MOVING ACCELERATE DECELERATE TURN_LEFT TURN_RIGHT ATTACKING    BACKING_UP

        //====================== MODELS ================================================================

        //--------------------------------------------------------------------------------------------------------------------------------------
        // DWARF Sage Upgrade_CreateAHero_ClassDwarf_SubClass_1
        ;ModelConditionState    = CREATE_A_HERO_22
        DefaultModelConditionState
            Model                 = #(MODEL)_U_SKN // Change
            Skeleton             = #(MODEL)_U_SKL
            WeaponLaunchBone    = PRIMARY Axe02                ; Needed for the WeaponFireSpecialAbility version as primary slot is used.
            WeaponLaunchBone    = TERTIARY Axe02
        End

        //================== ANIMATIONS =================================================================

        //------------------ DYING -------------------------------------------------------------
        AnimationState = STUNNED_FLAILING
            StateName = STATE_Sword
            Animation
                AnimationName = #(MODEL)_U_FLYA
                AnimationMode = LOOP
            End
            Flags = RANDOMSTART
        End

        AnimationState = DYING SPLATTED
            StateName = STATE_Sword
            Animation
                AnimationName = #(MODEL)_U_LNDA
                AnimationMode = ONCE
            End
        End

        AnimationState = DYING
            StateName = STATE_Sword
            Animation
                AnimationName = #(MODEL)_U_DIEA
                AnimationMode = ONCE
            End
            Animation = GUHero_DIEB
                AnimationName = #(MODEL)_U_DIEB
                AnimationMode = ONCE
            End
        End

        // --- Stunned anims
        AnimationState = STUNNED_STANDING_UP
            StateName = STATE_Sword
            Animation
                AnimationName = #(MODEL)_U_GTPA
                AnimationMode = ONCE
                AnimationSpeedFactorRange = 1.5 1.5
            End
        End

        AnimationState = STUNNED
            StateName = STATE_Sword
            Animation = GUHero_LNDA
                AnimationName = #(MODEL)_U_LNDA
                AnimationMode = ONCE
            End
        End                

        //------------------ SPECIAL POWER ANIMS ---------------------

        // DOMINATE SPECIAL POWER //
        AnimationState                = PACKING_TYPE_1
            StateName                = Curse
            Animation
                AnimationName        = #(MODEL)_U_LVLA
                AnimationMode        = ONCE
            End
        End

        // TELEPORT SPECIAL POWER //
        AnimationState                = PACKING_TYPE_3
            StateName                = Curse
            Animation
                AnimationName        = #(MODEL)_U_SPCA
                AnimationMode        = ONCE
            End
        End

        //--------------------- Wound Arrow anim
        AnimationState = SPECIAL_WEAPON_TWO
            StateName = STATE_Bow
            Animation
                AnimationName = #(MODEL)_U_SPCL #(MODEL)_U_ATKC
                AnimationMode = ONCE
            End
            FrameForPristineBonePositions = 59
            BeginScript
                CurDrawableShowSubObject("arrow")
            EndScript
        End
        
//------------------ MOVING -------------------------------------------------------------
        AnimationState = MOVING USER_4 // Moving slaughter
            StateName = Slaughter
            Flags = RANDOMSTART
            //ParticleSysBone = None InfantryDustTrails
            Animation = GUHero_ATKE
                AnimationName = #(MODEL)_U_ATKE
                AnimationMode = LOOP
            End
            StateName = NoSword
            BeginScript
                Prev = CurDrawablePrevAnimationState()
                if Prev == "Sword" then CurDrawableSetTransitionAnimState("TRANS_SwordToBow") end
            EndScript
        End

        //--- Running with sword
        AnimationState            = MOVING
            StateName = STATE_RunningSword
            Flags = RANDOMSTART
            //ParticleSysBone = None InfantryDustTrails
            Animation
                AnimationName = #(MODEL)_U_RUNA
                AnimationSpeedFactorRange = 0.85 0.85
            End
            BeginScript
                Prev = CurDrawablePrevAnimationState()
                if Prev == "STATE_Bow" then CurDrawableSetTransitionAnimState("TRANS_BowToSword") end
                if Prev == "STATE_RunningBow" then CurDrawableSetTransitionAnimState("TRANS_BowToSword_Running") end
                if Prev == "STATE_Rappelling" then CurDrawableSetTransitionAnimState("Trans_RappellingToRunning") return end
            EndScript
        End

        //---------------------------------------------------
        AnimationState                = FIRING_OR_PREATTACK_A // Melee attack.
            Animation
                AnimationName        = #(MODEL)_U_ATKA1 #(MODEL)_U_ATKA #(MODEL)_U_ATKB
                AnimationMode        = ONCE
                UseWeaponTiming        = Yes
            End
        End
        
//-------------------- HIT REACTIONS -----------------------------------------------------------

// this hit animation attack stance
        AnimationState = HIT_REACTION
            Animation = Sword_HITA
                AnimationName = #(MODEL)_U_HITA
                AnimationMode = ONCE
            End
            Animation = Sword_HITB
                AnimationName = #(MODEL)_U_HITB
                AnimationMode = ONCE
            End

            BeginScript
                PrevAnim = CurDrawablePrevAnimation()
                if PrevAnim == "Foot_IDLB"
                then
                    return "Sword_HITB"
                else
                    return "Swort_HITA"
                end
            EndScript
        End

//------------ SPECIAL POWERS ------------------------------------------------------------------        

        AnimationState         =    THROWN_PROJECTILE
            Animation
                AnimationName =    #(MODEL)_U_LEP2
                AnimationMode =    LOOP
            End
        End

        AnimationState         =    ABOUT_TO_HIT
            Animation
                AnimationName =    #(MODEL)_U_LEP3
                AnimationMode =    ONCE
            End
        End

        AnimationState                = SPECIAL_POWER_1                            ; Aragorn shouting Elendil anim
            StateName                = STATE_ready
            Animation
                AnimationName        = #(MODEL)_U_SPCA
                AnimationMode        = ONCE
            End
            ParticleSysBone            = B_SWORDBONE ElendilFlare FollowBone:yes
            ParticleSysBone            = B_SWORDBONE ElendilSwordFlare FollowBone:yes
        End

        // WORD OF POWER ANIMS ON FOOT //
        AnimationState         =    SPECIAL_WEAPON_ONE
            StateName         =    Attacking
            Animation
                AnimationName =    #(MODEL)_U_SPCA
                AnimationMode =    ONCE
            End
            //FXEvent             =    Frame:5    Name:FX_GandalfPreAttackBlast
        End

        //    WIZARD BLAST ANIMS MOUNTED //
        AnimationState         =    SPECIAL_WEAPON_TWO MOUNTED
            StateName         =    Attacking
            Animation
                AnimationName =    #(MODEL)_U_SPLD #(MODEL)_U_ATKA
                AnimationMode =    ONCE
            End
        End
    
        //    WIZARD BLAST ANIMS ON FOOT //
        AnimationState         =    SPECIAL_WEAPON_TWO
            StateName         =    Attacking
            Animation
                AnimationName =    #(MODEL)_U_SPCB #(MODEL)_U_ATKA
                AnimationMode =    ONCE
            End
        End

        //    ISTARI LIGHT STAFF WEAPON MOUNTED //
        AnimationState         =    SPECIAL_WEAPON_THREE MOUNTED    // FIRING_OR_PREATTACK_C
            StateName         =    Attacking
            Animation         =    StaffLaser
                AnimationName =    #(MODEL)_U_SPCD #(MODEL)_U_ATKA
                AnimationMode =    ONCE
            End
            FXEvent             =    Frame:30 Name:FX_GandalfStaffFlare
        End

        //    ISTARI LIGHT STAFF WEAPON ON FOOT //
        AnimationState         =    SPECIAL_WEAPON_THREE // FIRING_OR_PREATTACK_C
            StateName         =    Attacking
            Animation         =    StaffLaser
                AnimationName =    #(MODEL)_U_SPCE #(MODEL)_U_ATKA//    isitari's light?
                AnimationMode =    ONCE
            End
            FXEvent             =    Frame:30 Name:FX_GandalfStaffFlare
        End
        
        ; Throwing and cripple strike
        AnimationState         =    SPECIAL_WEAPON_FOUR
            StateName         =    Attacking
            Animation
                AnimationName =    #(MODEL)_U_SPCD
                AnimationMode =    ONCE
            End
            FrameForPristineBonePositions    = 44
        End

        AnimationState         =    SPECIAL_WEAPON_FIVE
            StateName         =    Attacking
            Animation
                AnimationName =    #(MODEL)_U_SPCE
                AnimationMode =    ONCE
            End
        End

        AnimationState         =    SPECIAL_WEAPON_SIX
            StateName         =    Attacking
            Animation
                AnimationName =    #(MODEL)_U_SPCF
                AnimationMode =    ONCE
            End
        End

        //    Special Power 1
        AnimationState         =    PACKING_TYPE_1 UNPACKING
            StateName         =    Attacking
            Animation         =    LightningSwordStart
                AnimationName =    #(MODEL)_U_SPCC #(MODEL)_U_ATKA
                AnimationMode =    ONCE
            End
            FXEvent             =    Frame:14 Name:FX_CreateAHeroLightningCharge
            FXEvent             =    Frame:14 Name:FX_GandalfLightningSword    FrameStop:70
        End
    
        AnimationState         =    PACKING_TYPE_1 PREPARING
            StateName         =    Attacking
            Animation         =    LightningSwordLoop
                AnimationName =    #(MODEL)_U_SPCA #(MODEL)_U_ATKA
                AnimationMode =    LOOP
            End
        End

        AnimationState         =    PACKING_TYPE_1 PACKING
            StateName         =    Attacking
            Animation         =    LightningSwordPutAway
                AnimationName =    #(MODEL)_U_SPCB #(MODEL)_U_ATKA
                AnimationMode =    ONCE
            End
        End

        // (specific) dwarf train allies.
        AnimationState         =    PACKING_TYPE_2 CREATE_A_HERO_20 CREATE_A_HERO_21
            Animation
                AnimationName =    #(MODEL)_U_SPCC
                AnimationMode =    LOOP
            End
        End

        //    Special Power 2
        AnimationState         =    PACKING_TYPE_2 UNPACKING
            StateName         =    Attacking
            Animation         =    LightningSwordStart
                AnimationName =    #(MODEL)_U_SPCC #(MODEL)_U_ATKA
                AnimationMode =    ONCE
            End
            FXEvent             =    Frame:14 Name:FX_CreateAHeroLightningCharge
            FXEvent             =    Frame:14 Name:FX_GandalfLightningSword    FrameStop:70
        End
    
        AnimationState         =    PACKING_TYPE_2 PREPARING
            StateName         =    Attacking
            Animation         =    LightningSwordLoop
                AnimationName =    #(MODEL)_U_SPCA #(MODEL)_U_ATKA
                AnimationMode =    LOOP
            End
        End

        AnimationState         =    PACKING_TYPE_2 PACKING
            StateName         =    Attacking
            Animation         =    LightningSwordPutAway
                AnimationName =    #(MODEL)_U_SPCB #(MODEL)_U_ATKA
                AnimationMode =    ONCE
            End
        End
        
//----------- Captain of Gondor - Sword --------------------------------------------
        AnimationState = PACKING_TYPE_2 WEAPONSET_TOGGLE_1
            StateName         =    CaptainPower
            Animation = GUHero_CHRC
                AnimationName = #(MODEL)_U_CHRC
                AnimationMode = ONCE
                AnimationSpeedFactorRange = 1.2 1.2
            End
        End

//----------- Captain of Gondor - Bow -----------------------------------------------
        AnimationState = PACKING_TYPE_2
            StateName         =    STATE_CaptainBow
            Animation = GUHero_CHRD
                AnimationName = #(MODEL)_U_SPCE #(MODEL)_U_SPCA #(MODEL)_U_CHRD
                AnimationMode = ONCE
            End
        End

        //    Special Power 3
        AnimationState         =    PACKING_TYPE_3 UNPACKING
            StateName         =    Attacking
            Animation         =    LightningSwordStart
                AnimationName =    #(MODEL)_U_SPCC #(MODEL)_U_ATKA
                AnimationMode =    ONCE
            End
            FXEvent             =    Frame:14 Name:FX_CreateAHeroLightningCharge
            FXEvent             =    Frame:14 Name:FX_GandalfLightningSword    FrameStop:70
        End
    
        AnimationState         =    PACKING_TYPE_3 PREPARING
            StateName         =    Attacking
            Animation         =    LightningSwordLoop
                AnimationName =    #(MODEL)_U_SPCA #(MODEL)_U_ATKA
                AnimationMode =    LOOP
            End
        End

        AnimationState         =    PACKING_TYPE_3 PACKING
            StateName         =    Attacking
            Animation         =    LightningSwordPutAway
                AnimationName =    #(MODEL)_U_SPCB #(MODEL)_U_ATKA
                AnimationMode =    ONCE
            End
        End
        
        //    Special Power 4
        AnimationState         =    PACKING_TYPE_4 UNPACKING    
            Animation        
                AnimationName =    #(MODEL)_U_SPCA
                AnimationMode =    ONCE
            End
        End
    
        AnimationState         =    PACKING_TYPE_4 PREPARING
            Animation        
                AnimationName =    #(MODEL)_U_SPCA
                AnimationMode =    ONCE
            End
        End

        AnimationState         =    PACKING_TYPE_4 PACKING
            Animation        
                AnimationName =    #(MODEL)_U_SPCA
                AnimationMode =    ONCE
            End
        End

        AnimationState         =    PACKING_TYPE_5 PACKING
            Animation        
                AnimationName =    #(MODEL)_U_SPCB
                AnimationMode =    ONCE
            End
        End

        AnimationState         =    PACKING_TYPE_6 PACKING
            Animation        
                AnimationName =    #(MODEL)_U_SPCD
                AnimationMode =    ONCE
            End
        End

//====== LEVELED
        AnimationState                = LEVELED                         // This state clears itself in 3 seconds
            Animation                = LevelUp
                AnimationName        = #(MODEL)_U_CHRA #(MODEL)_U_LVLA
                AnimationMode        = ONCE
            End
        End

//---------------------- EMOTIONS ---------------------------------------------------------------
        // cheer, on foot
        AnimationState                =    EMOTION_CELEBRATING
            Animation CHRA
                AnimationName        =    #(MODEL)_U_CHRA #(MODEL)_U_TNTA
                AnimationMode        =    ONCE
            End
            Animation CHRB
                AnimationName        =    #(MODEL)_U_CHRB #(MODEL)_U_CHRA #(MODEL)_U_TNTA
                AnimationMode        =    ONCE
            End
            Flags                    =    RESTART_ANIM_WHEN_COMPLETE
        End

        // cheer, on foot
        AnimationState                =    RAISING_FLAG
            Animation CHRA
                AnimationName        =    #(MODEL)_U_CHRA #(MODEL)_U_TNTA
                AnimationMode        =    ONCE
            End
            Animation CHRB
                AnimationName        =    #(MODEL)_U_CHRB #(MODEL)_U_CHRA #(MODEL)_U_TNTA
                AnimationMode        =    ONCE
            End
            Flags                    =    RESTART_ANIM_WHEN_COMPLETE
        End

        // taunt, on foot
        AnimationState                =    EMOTION_TAUNTING
            Animation CHRA
                AnimationName        =    #(MODEL)_U_TNTA
                AnimationMode        =    ONCE
            End
            Animation CHRB
                AnimationName        =    #(MODEL)_U_TNTB #(MODEL)_U_TNTA
                AnimationMode        =    ONCE
            End
            Flags                    =    RESTART_ANIM_WHEN_COMPLETE
        End

//====== ENGAGED
        AnimationState                = ENGAGED
            StateName                = STATE_ready
            Animation
                AnimationName        = #(MODEL)_U_IDLA
                AnimationMode        = ONCE
            End
        End

        AnimationState                = BETWEEN_FIRING_SHOTS_A
            StateName                = STATE_ready
            Animation
                AnimationName        = #(MODEL)_U_IDLA
                AnimationMode        = ONCE
            End
        End
        
// --- Idle Toggled
        AnimationState = SELECTED
            StateName                = STATE_Selected_Sword
            Animation                = Selected_Loop
                AnimationName        = #(MODEL)_U_ATNB
                AnimationMode        = LOOP
                AnimationBlendTime    = 10
            End
            BeginScript
                Prev = CurDrawablePrevAnimationState()
                if Prev == "STATE_Idle_Sword" then CurDrawableSetTransitionAnimState("TRANS_BoredToSelectedSword") end
            EndScript
            Flags = RESTART_ANIM_WHEN_COMPLETE
        End

        IdleAnimationState
            StateName                    = STATE_Idle_Sword    
            Animation = Foot_IDLB // Bored Idle
                AnimationName = #(MODEL)_U_IDLB
                AnimationMode = ONCE
                AnimationPriority = 20
            End
            Animation = Foot_IDLC // Bored Fidget
                AnimationName = #(MODEL)_U_IBFA
                AnimationMode = ONCE
                AnimationPriority = 2
            End

            BeginScript
                CurDrawableHideSubObject("arrow")
                Prev = CurDrawablePrevAnimationState()
                if Prev == "STATE_Selected_Sword" then CurDrawableSetTransitionAnimState("TRANS_SelectedToBoredSword") end
                if Prev == "STATE_Idle_Bow" then CurDrawableSetTransitionAnimState("TRANS_BowToSword") end
            EndScript
        End
        
    //---transitions--------------------------------------------

        TransitionState = TRANS_BoredToSelectedSword
        // Once we have proper animations for enter -> idle -> exit, fix this properly.
            Animation = ANTD
                AnimationName    = #(MODEL)_U_ATNA #(MODEL)_U_ATND #(MODEL)_U_IDLA
                AnimationMode    = ONCE
            End        
        End
        
        TransitionState = TRANS_SelectedToBoredSword
            Animation            = ATNF
                AnimationName    = #(MODEL)_U_ATNC #(MODEL)_U_ATNF #(MODEL)_U_ATNE
                AnimationMode    = ONCE
            End        
        End    

        TransitionState = TRANS_BoredToSelectedBow
            Animation = ATNC
                AnimationName        = #(MODEL)_U_ATNF #(MODEL)_U_ATNE
                AnimationMode        = ONCE
            End        
        End
        
        TransitionState = TRANS_CaptainBowToSelectedBow
            Animation = ATNC
                AnimationName        = #(MODEL)_U_ATNF
                AnimationMode        = ONCE
                AnimationBlendTime    = 10
                AnimationSpeedFactorRange = 1.5 1.5
            End        
        End
        
        TransitionState = TRANS_SelectedToBoredBow
            Animation            = ATNA
                AnimationName    = #(MODEL)_U_ATNF
                AnimationMode    = ONCE
            End        
        End    

        TransitionState = TRANS_SwordToBow
            Animation = CUHero_STHB
                AnimationName = #(MODEL)_U_STHA
                AnimationMode = ONCE
            End
        End    
        
        TransitionState         = TRANS_SwordToBow_Running
            Animation     = DrawBow
                AnimationName = #(MODEL)_U_STHB
                AnimationMode = ONCE
            End
        End        

    End

    Draw = W3DScriptedModelDraw DustEffects
        DefaultModelConditionState
            Model = None
        End

        IdleAnimationState
        End

        AnimationState = MOUNTED MOVING WADING
            ParticleSysBone = None FootstepSlash
        End

        AnimationState = MOUNTED MOVING ACCELERATE
            ParticleSysBone = None GenericSiegeTrailDust
        End

        AnimationState = MOUNTED MOVING ACCELERATE
            ParticleSysBone = None GenericSiegeTrailDust
        End

        AnimationState = MOUNTED MOVING
        End
    End

    ;Extra Shield
;    Draw = W3DScriptedModelDraw HeroOfTheWestShield
;        DefaultModelConditionState
;            Model = CH_Shield01
;        End
;        AttachToBoneInAnotherModule = B_HAND_L
;    End

    ;Dwarven Glow
;    Draw = W3DScriptedModelDraw Icon
;        ModelConditionState = NONE
;            Model                    = Icon02
;        End
;    End


The last 2 modules can be uncommented to have an extra effect.

Notice that in the code appears a lot the phrase #(MODEL), we will need to change this in order to make it work. Remember the createaheromodels.inc file? Well, in it every CaH type has this part that reads "ModelAnimationPrefix" we need to copy the prefix of the CaH hero that we want and use it to overwrite #(MODEL) in the above code.

If you run the game now, you'll find out that your hero is equipped with everything, and I do mean everything. He will have all the shoulder protections, all the swords, shields, boots, and so on. All of these things are known as Subobjects; in order to choose what subobjects we want to see, we have to know which ones we don't want to see. To do this, we need the following line of code:

              
Code

Behavior = SubObjectsUpgrade ModuleTag_ShowTheHero
    TriggeredBy        = Upgrade_ObjectLevel1
     HideSubObjects =
End


With this we tell the game what SubObjects to hide when our hero reaches the Upgrade_ObjectLevel1 (spoiler alert: he will achieve it as soon as he is recruited thanks to the experiecelevel.ini entry that we added a few steps ago). Now we need a list of subobjects, to know the names we will put in the HideSubObjects part. From createaheroweaponupgrades.inc I made the following list:

Dwarves:

AXE02
AXE_01
AXE_02
AXE_03
BOOT_01
BOOT_02
BOOT_03
BOOT_04
GNLT_01
GNLT_02
GNLT_03
GNLT_04
HLMT_01
HLMT_02
HLMT_03
HLMT_04
HLMT_05
HLMT_06
HMR_01
SLDR_01
SLDR_02
SLDR_03
SLDR_04
SLDR_05
SLDR_06

Wizard:

WizardStaff01
WizStaff01_FX01
WizStaff01_FX2
WizStaff01_FX3
WizStaff01_FX4
WizardStaff02
WizStaff02_FX1
WizardStaff03
WizStaff03_FX01
WizStaff03_FX02
WizardStaff04
WizStaff04_FX01
WizStaff04_FX02
WizStaff04_FX03
WizStaff04_FX04
WizStaff04_FX05
WizStaff04_FX06
WizStaff04_FX07
STFF_05
STFF_06
HLMT_01
HLMT_02
HLMT_03
HLMT_04
HLMT_05
HLMT_06
HLMT_07
HLMT_08 ;Beard
SLDR_01
SLDR_02

Elf:

MithlondBow
WestronSword    ;From toggle weapon
BOW_03
BOW_04
BOW_05
BOW_07
SLDR_01
SLDR_02
SLDR_03
SLDR_04
HLMT_01
HLMT_02
HLMT_03
GNLT_01
GNLT_02
GNLT_03
GNLT_04
BOOT_01
BOOT_02
BOOT_03

Female Elven Archer:

BOW_03
BOW_04
BOW_07
SLDR_01
SLDR_02
SLDR_03
SLDR_04
SLDR_05
SLDR_06
HLMT_01
HLMT_02
HLMT_03
HLMT_04
HLMT_05
GNLT_01
GNLT_02
GNLT_03
GNLT_04
GNLT_05
GNLT_07
BOOT_01
BOOT_02
BOOT_03
BOOT_04
BOOT_05
BOOT_06

Troll:

TrollBane
TrollMace
TrollSword    
TrollHammer
TrollTree
CLUB_01
HMR_02
HMR_04
PAXE_01
SWRD_03 SWD_03
SLDR_01
SLDR_02
SLDR_03
SLDR_04
SLDR_05
SLDR_06
HLMT_01
HLMT_02
HLMT_03
HLMT_04
HLMT_05
HLMT_06
HLMT_07
HLMT_08
GNLT_01
GNLT_02
GNLT_03
GNLT_04
GNLT_05
GNLT_06
GNLT_07
GNLT_08
GNLT_09
GNLT_10

Uruk:

Uruk_Sword_01
Belthronding
Uruk_Sword_02
Uruk_Sword_03
SLDR_01
SLDR_02
SLDR_03
HLMT_01
HLMT_02
HLMT_03
HLMT_04
HLMT_08
HAIR_01
GNLT_01
GNLT_02
GNLT_03
Shield_1OG
Shield_2OG
SHLD_01
SHLD_02
BOOT_01
BOOT_02
BOOT_03


Corrupted Man:

CLUB_03
HMR_03
SWRD_03 SWD_03
SWRD_04 SWD_04
SWRD_05
CMSword01
CMSword02
SLDR_01
SLDR_02
SLDR_03
CHEST_01
CHEST_02
HLMT_01
HLMT_02
HLMT_03
HLMT_04
HLMT_05
HLMT_08 HLMT_09
BOOT_01
BOOT_02
BOOT_03
GNLT_01
GNLT_02
GNLT_03


Hero of the West:

AXE_01
SWRD_05
FireBrand
FireBrand_FX01
SLDR_01
SLDR_02
SLDR_04
SLDR_05
HAIR_00
HLMT_01
HLMT_02
HLMT_05
HLMT_06
Shld_01
Shld_02
Shld_03
Shld_04
BOOT_00
BOOT_01
BOOT_02
BOOT_04
BOOT_05
GNLT_00
GNLT_01
GNLT_02
GNLT_04
GNLT_05

Shield Maiden

SLDR_00
SLDR_01
SLDR_02
SLDR_04
SLDR_05
HLMT_00
HLMT_01
HLMT_02
HLMT_05
GNLT_00
GNLT_01
GNLT_02
GNLT_04
GNLT_05
BOOT_00
BOOT_01
BOOT_02
BOOT_04
BOOT_05

Orc:

SLDR_04
SLDR_05
HLMT_05
HLMT_07
GNLT_04
GNLT_05
BOOT_04
BOOT_05
BOOT_06

Others

Belthronding    ;Sword
Gurthang     ;Sword
WestronSword     ;Sword

-----------------------------------------------------------------------------------------

Based on that list, I created these entries in malvack.ini in order to hide everything but the things that I actually want to show up.

              
Code

Behavior = SubObjectsUpgrade ModuleTag_ShowTheHero
    TriggeredBy        = Upgrade_ObjectLevel1
     HideSubObjects = AXE_01
     HideSubObjects = SWRD_05
     HideSubObjects = FireBrand
     HideSubObjects = FireBrand_FX01
     HideSubObjects = SLDR_01
     HideSubObjects = SLDR_02
     HideSubObjects = SLDR_04
     HideSubObjects = SLDR_05
     HideSubObjects = HAIR_00
     HideSubObjects = HLMT_01
     HideSubObjects = HLMT_02
     HideSubObjects = HLMT_05
     HideSubObjects = HLMT_06
     HideSubObjects = Shld_01
;     HideSubObjects = Shld_02
     HideSubObjects = Shld_03
     HideSubObjects = Shld_04
     HideSubObjects = BOOT_00
     HideSubObjects = BOOT_01
     HideSubObjects = BOOT_02
     HideSubObjects = BOOT_04
     HideSubObjects = BOOT_05
     HideSubObjects = GNLT_00
     HideSubObjects = GNLT_01
     HideSubObjects = GNLT_02
     HideSubObjects = GNLT_04
     HideSubObjects = GNLT_05
     HideSubObjects = Belthronding
     HideSubObjects = Gurthang
;     HideSubObjects = WestronSword
     HideSubObjects = TrollBane
End


Notice how I commented a couple of entries, that is because I want my hero to show up with both the WestronSword and Shld_02. If this list isn't enough (a.k.a. your hero still shows up with unwanted subobjects) here's a huge list of CaH subobjects taken from some LUA script. Read it carefully:


ObjectHideSubObjectPermanently( self, "SWORD", true )
ObjectHideSubObjectPermanently( self, "BOW", true )
ObjectHideSubObjectPermanently( self, "BOW_03", true )
ObjectHideSubObjectPermanently( self, "BOW_04", true )
ObjectHideSubObjectPermanently( self, "BOW_05", true )
ObjectHideSubObjectPermanently( self, "TRUNK01", true )
ObjectHideSubObjectPermanently( self, "STAFF_LIGHT", true )
ObjectHideSubObjectPermanently( self, "OBJECT01", true )

ObjectHideSubObjectPermanently( self, "SHIELD01", true )
ObjectHideSubObjectPermanently( self, "SHIELD_01", true )
ObjectHideSubObjectPermanently( self, "SPEAR", true )
ObjectHideSubObjectPermanently( self, "SHIELD_B", true )
ObjectHideSubObjectPermanently( self, "SHIELD_C", true )
ObjectHideSubObjectPermanently( self, "SHIELD_D", true )
ObjectHideSubObjectPermanently( self, "B_SHIELD", true )
ObjectHideSubObjectPermanently( self, "WEAPON_A", true )
ObjectHideSubObjectPermanently( self, "WEAPON_B", true )
ObjectHideSubObjectPermanently( self, "WEAPON_C", true )
ObjectHideSubObjectPermanently( self, "WEAPON_D", true )

ObjectHideSubObjectPermanently( self, "AXE02", true )

ObjectHideSubObjectPermanently( self, "AxeWeapon", true )
ObjectHideSubObjectPermanently( self, "Belthronding", true )
-- ObjectHideSubObjectPermanently( self, "Mithlondrecurve", true )
ObjectHideSubObjectPermanently( self, "Dwarf_Axe01", true )
ObjectHideSubObjectPermanently( self, "FireBrand", true )
ObjectHideSubObjectPermanently( self, "FireBrand_SM", true )
ObjectHideSubObjectPermanently( self, "FireBrand_FX01", true )
ObjectHideSubObjectPermanently( self, "FireBrand_FX02", true )
ObjectHideSubObjectPermanently( self, "Gurthang", true )
ObjectHideSubObjectPermanently( self, "Gurthang_SM", true )
ObjectHideSubObjectPermanently( self, "HeroOfTheWestShield", true )
ObjectHideSubObjectPermanently( self, "HeroOfTheWestShield_SM", true )
ObjectHideSubObjectPermanently( self, "MithlondBow", true )
ObjectHideSubObjectPermanently( self, "TrollBane", true )
ObjectHideSubObjectPermanently( self, "TrollBane_SM", true )
ObjectHideSubObjectPermanently( self, "TrollBane_FX01", true )
ObjectHideSubObjectPermanently( self, "TrollBane_FX02", true )
ObjectHideSubObjectPermanently( self, "TrollMace", true )
ObjectHideSubObjectPermanently( self, "TrollSword", true )
ObjectHideSubObjectPermanently( self, "WestronSword", true )
ObjectHideSubObjectPermanently( self, "WestronSword", true )
ObjectHideSubObjectPermanently( self, "WestronSword_SM", true )
ObjectHideSubObjectPermanently( self, "WizardStaff01", true )
ObjectHideSubObjectPermanently( self, "WizStaff01_FX01", true )
ObjectHideSubObjectPermanently( self, "WizStaff01_FX2", true )
ObjectHideSubObjectPermanently( self, "WizStaff01_FX3", true )
ObjectHideSubObjectPermanently( self, "WizStaff01_FX4", true )
ObjectHideSubObjectPermanently( self, "WizardStaff02", true )
ObjectHideSubObjectPermanently( self, "WizStaff02_FX1", true )
ObjectHideSubObjectPermanently( self, "WizardStaff03", true )
ObjectHideSubObjectPermanently( self, "WizStaff03_FX01", true )
ObjectHideSubObjectPermanently( self, "WizStaff03_FX02", true )
ObjectHideSubObjectPermanently( self, "WizardStaff04", true )
ObjectHideSubObjectPermanently( self, "WizStaff04_FX01", true )
ObjectHideSubObjectPermanently( self, "WizStaff04_FX02", true )
ObjectHideSubObjectPermanently( self, "WizStaff04_FX03", true )
ObjectHideSubObjectPermanently( self, "WizStaff04_FX04", true )
ObjectHideSubObjectPermanently( self, "WizStaff04_FX05", true )
ObjectHideSubObjectPermanently( self, "WizStaff04_FX06", true )
ObjectHideSubObjectPermanently( self, "WizStaff04_FX07", true )
ObjectHideSubObjectPermanently( self, "WizardSword", true )
ObjectHideSubObjectPermanently( self, "CMSword01", true )
ObjectHideSubObjectPermanently( self, "CMSword02", true )
ObjectHideSubObjectPermanently( self, "CHEST_00", true )    
ObjectHideSubObjectPermanently( self, "CHEST_01", true )    
ObjectHideSubObjectPermanently( self, "CHEST_02", true )    
ObjectHideSubObjectPermanently( self, "BOOT_00", true )
ObjectHideSubObjectPermanently( self, "BOOT_01", true )
ObjectHideSubObjectPermanently( self, "BOOT_02", true )
ObjectHideSubObjectPermanently( self, "BOOT_03", true )
ObjectHideSubObjectPermanently( self, "BOOT_04", true )
ObjectHideSubObjectPermanently( self, "BOOT_05", true )
ObjectHideSubObjectPermanently( self, "BOOT_06", true )
ObjectHideSubObjectPermanently( self, "SHLD_00", true )
ObjectHideSubObjectPermanently( self, "SHLD_01", true )
ObjectHideSubObjectPermanently( self, "SHLD_02", true )
ObjectHideSubObjectPermanently( self, "SHLD_03", true )
ObjectHideSubObjectPermanently( self, "SHLD_04", true )
ObjectHideSubObjectPermanently( self, "SLDR_00", true )
ObjectHideSubObjectPermanently( self, "SLDR_01", true )
ObjectHideSubObjectPermanently( self, "SLDR_02", true )
ObjectHideSubObjectPermanently( self, "SLDR_03", true )
ObjectHideSubObjectPermanently( self, "SLDR_04", true )
ObjectHideSubObjectPermanently( self, "SLDR_05", true )
ObjectHideSubObjectPermanently( self, "SLDR_06", true )
ObjectHideSubObjectPermanently( self, "Shield_1OG", true )
ObjectHideSubObjectPermanently( self, "Shield_2OG", true )
ObjectHideSubObjectPermanently( self, "HAIR_00", true )
ObjectHideSubObjectPermanently( self, "HAIR_01", true )
ObjectHideSubObjectPermanently( self, "HLMT_00", true )
ObjectHideSubObjectPermanently( self, "HLMT_01", true )
ObjectHideSubObjectPermanently( self, "HLMT_02", true )
ObjectHideSubObjectPermanently( self, "HLMT_03", true )
ObjectHideSubObjectPermanently( self, "HLMT_04", true )
ObjectHideSubObjectPermanently( self, "HLMT_05", true )
ObjectHideSubObjectPermanently( self, "HLMT_06", true )
ObjectHideSubObjectPermanently( self, "HLMT_07", true )
ObjectHideSubObjectPermanently( self, "HLMT_07_LOD1", true )
ObjectHideSubObjectPermanently( self, "HLMT_08", true )
ObjectHideSubObjectPermanently( self, "HLMT_09", true )
ObjectHideSubObjectPermanently( self, "GNLT_00", true )
ObjectHideSubObjectPermanently( self, "GNLT_01", true )
ObjectHideSubObjectPermanently( self, "GNLT_02", true )
ObjectHideSubObjectPermanently( self, "GNLT_03", true )
ObjectHideSubObjectPermanently( self, "GNLT_04", true )
ObjectHideSubObjectPermanently( self, "GNLT_05", true )
ObjectHideSubObjectPermanently( self, "GNLT_06", true )
ObjectHideSubObjectPermanently( self, "GNLT_07", true )
ObjectHideSubObjectPermanently( self, "GNLT_08", true )
ObjectHideSubObjectPermanently( self, "GHLT_08", true )
ObjectHideSubObjectPermanently( self, "GNLT_09", true )
ObjectHideSubObjectPermanently( self, "GNLT_09_LOD1", true )
ObjectHideSubObjectPermanently( self, "GNLT_10", true )
ObjectHideSubObjectPermanently( self, "SPR_01", true )
ObjectHideSubObjectPermanently( self, "PAXE_01", true )
ObjectHideSubObjectPermanently( self, "PAXE_01_LOD1", true )
ObjectHideSubObjectPermanently( self, "SWRD_01", true )
ObjectHideSubObjectPermanently( self, "SWRD_02", true )
ObjectHideSubObjectPermanently( self, "SWRD_03", true )
ObjectHideSubObjectPermanently( self, "SWRD_04", true )
ObjectHideSubObjectPermanently( self, "SWRD_05", true )
ObjectHideSubObjectPermanently( self, "SWD_01", true )
ObjectHideSubObjectPermanently( self, "SWD_02", true )
ObjectHideSubObjectPermanently( self, "SWD_03", true )
ObjectHideSubObjectPermanently( self, "SWD_04", true )
ObjectHideSubObjectPermanently( self, "STFF_05", true )
ObjectHideSubObjectPermanently( self, "STFF_06", true )
ObjectHideSubObjectPermanently( self, "objSLDR_01", true )
ObjectHideSubObjectPermanently( self, "objSLDR_02", true )
ObjectHideSubObjectPermanently( self, "objSLDR_03", true )
ObjectHideSubObjectPermanently( self, "objHLMT_01", true )
ObjectHideSubObjectPermanently( self, "objHLMT_02", true )
ObjectHideSubObjectPermanently( self, "objHLMT_03", true )
ObjectHideSubObjectPermanently( self, "objHLMT_04", true )    
ObjectHideSubObjectPermanently( self, "Uruk_Sword_01", true )
ObjectHideSubObjectPermanently( self, "Uruk_Sword_02", true )
ObjectHideSubObjectPermanently( self, "Uruk_Sword_03", true )
ObjectHideSubObjectPermanently( self, "TrollTree", true )
ObjectHideSubObjectPermanently( self, "TrollHammer", true )
ObjectHideSubObjectPermanently( self, "CLUB_01", true )
ObjectHideSubObjectPermanently( self, "CLUB_02", true )
ObjectHideSubObjectPermanently( self, "CLUB_03", true )
ObjectHideSubObjectPermanently( self, "HMR_01", true )
ObjectHideSubObjectPermanently( self, "HMR_02", true )
ObjectHideSubObjectPermanently( self, "HMR_03", true )
ObjectHideSubObjectPermanently( self, "HMR_04", true )
ObjectHideSubObjectPermanently( self, "AXE_01", true )
ObjectHideSubObjectPermanently( self, "AXE_02", true )
ObjectHideSubObjectPermanently( self, "AXE_03", true )
ObjectHideSubObjectPermanently( self, "BARREL", true )
ObjectHideSubObjectPermanently( self, "OBJECT02", true )    -- Barrel on the Orc Raider
ObjectHideSubObjectPermanently( self, "ARROW", true )
ObjectHideSubObjectPermanently( self, "PLANE02", true )    

Links / Downloads

 HitsAdded
WinXPSoundRecorder1340March 6, 2016 - 6:03
FinalBigEditor1684March 5, 2016 - 7:29

Comments

Display order: Newest first

Amonrath - Monday August 14, 2017 - 2:16

Hello! I'm trying to do the but in the bfme I. Is there any different steps? I created a folder with my own mod... I then just edit the values that I want and I save them... I have also added the -mod in the end of the "Path" as well as done the lotr.srt extraction. Could anyone help? Thanks =D

--------

Hello! I'm trying to do the but in the bfme I. Is there any different steps? I created a folder with my own mod... I then just edit the values that I want and I save them... I have also added the -mod in the end of the "Path" as well as done the lotr.srt extraction. Could anyone help? Thanks =D

BouncyKnight - Tuesday April 25, 2017 - 22:08

Amazing step-by-step, very detailed and explanatory tutorial on how to create your custom heroes! Thank you sir, you're great!

Gabriel Oak - Tuesday December 13, 2016 - 11:19

I created this account only to thank you, sir. This tutorial is really, really useful.

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."

 
4:44:34