One more thing, whenever i buy Rohan Fighters, that selection shadow at the bottom does not appear.
Like when you buy a Gondor Soldier and you click on him, there is kinda like a circle at the bottom that is like a shadow, that does not appear on the Rohan Fighters.
Here is the code from rohanfighter.ini:
// Moved from MenInfantry.INI Aug 24 2005 // aka Man at Arms, GondorManatArms, FighterGondor GondorFighter GondorSoldier GondorSwordman Object RohanFighter // *** ART Parameters *** SelectPortrait = UPGondor_Soldier ButtonImage = WOR_GondorSoldier Draw = W3DHordeModelDraw ModuleTag_01 OkToChangeModelColor = Yes StaticModelLODMode = Yes // specify options for static LODs LodOptions = LOW AllowMultipleModels = ALLOW_MULTIPLE_MODELS_LOW MaxRandomTextures = MAX_RANDOM_TEXTURES_LOW MaxRandomAnimations = MAX_RANDOM_ANIMATIONS_LOW MaxAnimFrameDelta = MAX_ANIM_FRAME_DELTA_LOW End LodOptions = MEDIUM AllowMultipleModels = ALLOW_MULTIPLE_MODELS_MED MaxRandomTextures = MAX_RANDOM_TEXTURES_MED MaxRandomAnimations = MAX_RANDOM_ANIMATIONS_MED MaxAnimFrameDelta = MAX_ANIM_FRAME_DELTA_MED End LodOptions = HIGH AllowMultipleModels = ALLOW_MULTIPLE_MODELS_HIGH MaxRandomTextures = MAX_RANDOM_TEXTURES_HIGH MaxRandomAnimations = MAX_RANDOM_ANIMATIONS_HIGH MaxAnimFrameDelta = MAX_ANIM_FRAME_DELTA_HIGH End WadingParticleSys = WaterRipplesTrail // used when the unit is wading in shallow water. //================ MODELS ================================================================= DefaultModelConditionState Model = ruwarrior_SKN Skeleton = GUMAArms_SKL End ModelConditionState WEAPONSET_PLAYER_UPGRADE Model = ruwarrior_SKN Skeleton = GUMAArms_SKL End ModelConditionState = USER_4 // This state is used in cinematics to get the old style armor Model = ruwarrior_SKN Skeleton = GUMAArms_SKL End //=============== ANIMATIONS =============================================================== //======= FALLING & FLYING AnimationState = PASSENGER Animation = Grabbed AnimationName = GUMAArms_FLLA AnimationMode = LOOP End End AnimationState = THROWN_PROJECTILE Animation = FlyA AnimationName = GUMAARMS_FLYA AnimationMode = LOOP End Animation = FlyB AnimationName = GUMAARMS_FLYB AnimationMode = LOOP End Animation = FlyC AnimationName = GUMAARMS_FLYC AnimationMode = LOOP End Animation = FlyD AnimationName = GUMAARMS_FLYD AnimationMode = LOOP End Flags = RANDOMSTART End AnimationState = FREEFALL Animation = Falling AnimationName = GUMAArms_FLYD AnimationMode = LOOP AnimationBlendTime = 10 End Animation = Falling AnimationName = GUMAArms_FLYC AnimationMode = LOOP AnimationBlendTime = 10 AnimationSpeedFactorRange = 0.5 0.5 End End AnimationState = STUNNED_FLAILING Animation = FlyA AnimationName = GUMAARMS_FLYA AnimationMode = LOOP AnimationSpeedFactorRange = 0.4 0.6 End Animation = FlyB AnimationName = GUMAARMS_FLYB AnimationMode = LOOP AnimationSpeedFactorRange = 0.4 0.6 End Animation = FlyC AnimationName = GUMAARMS_FLYC AnimationMode = LOOP AnimationSpeedFactorRange = 0.4 0.6 End Animation = FlyD AnimationName = GUMAARMS_FLYD AnimationMode = LOOP AnimationSpeedFactorRange = 0.4 0.6 End Flags = RANDOMSTART End AnimationState = DYING BURNINGDEATH Animation AnimationName = GUManMocap_DIEB AnimationMode = ONCE AnimationBlendTime = 10 End Animation AnimationName = GUManMocap_DIEC AnimationMode = ONCE AnimationBlendTime = 10 End Animation AnimationName = GUManMocap_DIED AnimationMode = ONCE AnimationBlendTime = 10 End Animation AnimationName = GUManMocap_DIEE AnimationMode = ONCE AnimationBlendTime = 10 End End AnimationState = DYING SPLATTED Animation = Splatted_On_Ground AnimationName = GUMAARMS_LNDA AnimationMode = ONCE End EnteringStateFX = FX_OrcHitGround End AnimationState = DYING AFLAME Animation = MFDA AnimationName = GUManMocap_MFDA AnimationMode = LOOP End End AnimationState = DYING //Animation = DIEA // AnimationName = GUManMocap_DIEA // AnimationMode = ONCE //End Animation = DIEB AnimationName = GUManMocap_DIEB AnimationMode = ONCE End Animation = DIEC AnimationName = GUManMocap_DIEC AnimationMode = ONCE End Animation = DIED AnimationName = GUManMocap_DIED AnimationMode = ONCE End Animation = DIEE AnimationName = GUManMocap_DIEE AnimationMode = ONCE End End AnimationState = BURNINGDEATH Animation AnimationName = GUManMocap_MFDA AnimationMode = LOOP Distance = 50 End End AnimationState = PARALYZED Animation AnimationName = GUManMocap_IDLB AnimationMode = LOOP End End //======= LANDING & STANDING AnimationState = STUNNED_STANDING_UP Animation = GTPA AnimationName = GUMAArms_GTPA AnimationMode = ONCE AnimationSpeedFactorRange = 2.0 2.0 End Animation = GTPB AnimationName = GUMAArms_GTPD AnimationMode = ONCE AnimationSpeedFactorRange = 2.0 2.0 End End AnimationState = STUNNED Animation = Slatted_On_Ground AnimationName = GUMAARMS_LNDA AnimationMode = ONCE End EnteringStateFX = FX_OrcHitGround End AnimationState = MOVING FIRING_OR_PREATTACK_A ShareAnimation = Yes Animation = RunAndFire AnimationName = GUManMocap_ATRA AnimationMode = LOOP End Flags = RANDOMSTART End //====== TERROR AnimationState = MOVING EMOTION_TERROR EMOTION_LOOK_TO_SKY //@@@KM Add distance Animation = TerrorFromTheSky AnimationName = GUManMocap_RUND AnimationMode = LOOP End Animation = TerrorFromTheSky AnimationName = GUManMocap_RUNE AnimationMode = LOOP End Flags = RANDOMSTART End AnimationState = MOVING EMOTION_TERROR //@@@KM Add distance Animation = TerrorFromTheSky AnimationName = GUManMocap_RUND AnimationMode = ONCE End Animation = TerrorFromTheSky AnimationName = GUManMocap_RUNE AnimationMode = ONCE End Flags = RESTART_ANIM_WHEN_COMPLETE End //======= BACK UP AnimationState = MOVING BACKING_UP //@@@KM Add distance Animation = BAKA AnimationName = GUManMocap_BAKA AnimationMode = LOOP End Animation = BAKB AnimationName = GUManMocap_BAKB AnimationMode = LOOP End Animation = BAKC AnimationName = GUManMocap_BAKC AnimationMode = LOOP End Flags = RANDOMSTART End AnimationState = MOVING PANICKING //@@@KM - Add Distance Animation = MFDA AnimationName = GUManMocap_MFDA AnimationMode = LOOP End Flags = RANDOMSTART //ParticleSysBone = None InfantryDustTrails End AnimationState = MOVING ATTACKING ShareAnimation = Yes// Animation = RUNA AnimationName = GUManMocap_RUNA AnimationMode = LOOP Distance = 25 End Flags = RANDOMSTART //ParticleSysBone = None InfantryDustTrails End AnimationState = MOVING ALTERNATE_FORMATION Animation AnimationName = GUMAArms_SPCA AnimationMode = LOOP Distance = 20 End Flags = RANDOMSTART End AnimationState = MOVING //@@@KM - Add Distance ShareAnimation = Yes// Animation = RUNB AnimationName = GUManMocap_RUNB AnimationMode = LOOP Distance = 30 End Animation = RUNC AnimationName = GUManMocap_RUNC AnimationMode = LOOP Distance = 30 End Flags = RANDOMSTART //ParticleSysBone = None InfantryDustTrails End //======= UNCONTROLLABLY AFRAID // This is before Attacking so it overrides it. Normal fear is below so you don't go to little-fear in between swings. AnimationState = EMOTION_UNCONTROLLABLY_AFRAID Animation = FERA AnimationName = GUManMocap_FERA AnimationMode = LOOP End Animation = FERB AnimationName = GUManMocap_FERB AnimationMode = LOOP End Animation = FERC AnimationName = GUManMocap_FERC AnimationMode = LOOP End Animation = FERD AnimationName = GUManMocap_FERD AnimationMode = LOOP End Animation = FERE AnimationName = GUManMocap_FERE AnimationMode = LOOP End Animation = FERF AnimationName = GUManMocap_FERF AnimationMode = LOOP End End //---------------------- ATTACKING ---------------------------------------------------------------- AnimationState = FIRING_OR_PREATTACK_A Animation = ATA1 AnimationName = GUManMocap_ATKA AnimationMode = ONCE UseWeaponTiming = Yes End //ParticleSysBone = None MeleeDust End ;AnimationState = ATTACKING ; Animation = ALERT_1 ; AnimationName = GUManMocap_IDLA ; AnimationMode = LOOP ; End ;End //----------------- HIT REACTIONS ------------------------------------------------------------------------- ; AnimationState = HIT_REACTION //Animation = HITA // AnimationName = GUManMocap_HITA // AnimationMode = ONCE //End ; Animation = HITB ; AnimationName = GUManMocap_HITB ; AnimationMode = ONCE ; End ; End //----------------- EMOTIONS ---------------------------------------------------------------- //======= APPREHENSIVE AnimationState = EMOTION_ALERT EMOTION_AFRAID Animation = APPA AnimationName = GUManMocap_APPA AnimationMode = ONCE End Animation = APPB AnimationName = GUManMocap_APPB AnimationMode = ONCE End Flags = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE End //======= AFRAID AnimationState = EMOTION_AFRAID Animation = FERA AnimationName = GUManMocap_FERA AnimationMode = LOOP End Animation = FERB AnimationName = GUManMocap_FERB AnimationMode = LOOP End Animation = FERC AnimationName = GUManMocap_FERC AnimationMode = LOOP End Animation = FERD AnimationName = GUManMocap_FERD AnimationMode = LOOP End Animation = FERE AnimationName = GUManMocap_FERE AnimationMode = LOOP End Animation = FERF AnimationName = GUManMocap_FERF AnimationMode = LOOP End Flags = RANDOMSTART End //======== POINTING AnimationState = EMOTION_POINTING Animation = Pointing1 AnimationName = GUManMocap_RCTA AnimationMode = LOOP End Flags = RANDOMSTART End //======= TAUNTING AnimationState = EMOTION_TAUNTING Animation = Taunting1 AnimationName = GUManMocap_TNTA AnimationMode = ONCE End Animation = Taunting2 AnimationName = GUManMocap_TNTB AnimationMode = ONCE End Animation = Taunting3 AnimationName = GUManMocap_TNTC AnimationMode = ONCE End Animation = Taunting4 AnimationName = GUManMocap_IDLC AnimationMode = ONCE End Animation = Taunting5 AnimationName = GUManMocap_IDLA AnimationMode = ONCE End Animation = Taunting6 AnimationName = GUManMocap_IDLH AnimationMode = ONCE End Flags = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE End //======= CELEBRATING AnimationState = EMOTION_CELEBRATING Animation = CHRB AnimationName = GUManMocap_CHRB AnimationMode = ONCE End Animation = CHRC AnimationName = GUManMocap_CHRC AnimationMode = ONCE End Animation = IDLD AnimationName = GUManMocap_IDLD AnimationMode = ONCE End Flags = RESTART_ANIM_WHEN_COMPLETE End //----------------- ALERT STATE --------------------------------------------------------------------------- AnimationState = ATTACKING Animation = ALERT_1 AnimationName = GUManMocap_IDLA AnimationMode = LOOP End End AnimationState = EMOTION_ALERT Animation = ALERT_1 AnimationName = GUManMocap_IDLA AnimationMode = LOOP//ONCE AnimationPriority = 10 End Flags = RESTART_ANIM_WHEN_COMPLETE // acts like an idle animation & keeps running the animations. End AnimationState = RAISING_FLAG Animation = CHRB AnimationName = GUManMocap_CHRB AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = CHRC AnimationName = GUManMocap_CHRC AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Flags = RESTART_ANIM_WHEN_COMPLETE End //----------------- SELECTED STATES ----------------------------------------------------------------------- AnimationState = SELECTED StateName = STATE_Selected Animation = ATNB AnimationName = GUManMocap_ATNB AnimationMode = LOOP End BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Idle" then CurDrawableSetTransitionAnimState("TRANS_IdleToSelected") end if CurDrawableModelcondition("ATTACKING") then return "IDLA" else return "ATNA" end EndScript BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Idle" then CurDrawableSetTransitionAnimState("TRANS_IdleToSelected") end EndScript End //----------------- IDLE STATES --------------------------------------------------------------------------- AnimationState = WEAPONSET_PLAYER_UPGRADE StateName = STATE_Idle Animation = IDLI AnimationName = GUManMocap_IDLH AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = IDLD AnimationName = GUManMocap_IDLD AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = IDLH AnimationName = GUManMocap_IDLH AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = CHRB AnimationName = GUManMocap_CHRB AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Animation = CHRC AnimationName = GUManMocap_CHRC AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.1 End Flags = RESTART_ANIM_WHEN_COMPLETE BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Selected" then CurDrawableSetTransitionAnimState("TRANS_SelectedToIdle") end EndScript End AnimationState = USER_3 StateName = STATE_User_3 Animation = GUARD_STANCE AnimationName = GUManMocap_IDLA AnimationMode = LOOP End End IdleAnimationState StateName = STATE_Idle Animation = IDLB AnimationName = GUManMocap_IDLB AnimationMode = ONCE AnimationPriority = 20 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLF AnimationName = GUManMocap_IDLF AnimationMode = ONCE AnimationPriority = 1 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLG AnimationName = GUManMocap_IDLG AnimationMode = ONCE AnimationPriority = 1 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLJ AnimationName = GUManMocap_IDLJ AnimationMode = ONCE AnimationPriority = 1 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLK AnimationName = GUManMocap_IDLK AnimationMode = ONCE AnimationPriority = 1 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLL AnimationName = GUManMocap_IDLL AnimationMode = ONCE AnimationPriority = 1 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLN AnimationName = GUManMocap_IDLN AnimationMode = ONCE AnimationPriority = 1 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLO AnimationName = GUManMocap_IDLO AnimationMode = ONCE AnimationPriority = 1 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End Animation = IDLP AnimationName = GUManMocap_IDLP AnimationMode = ONCE AnimationPriority = 1 AnimationSpeedFactorRange = 0.9 1.1 AnimationBlendTime = 15 End BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_Selected" then CurDrawableSetTransitionAnimState("TRANS_SelectedToIdle") end EndScript End //--------------- TRANSITIONS --------------------------------------------------------------------------- TransitionState = TRANS_TO_USER_1 Animation AnimationName = GUManMocap_RCTA AnimationMode = ONCE End End TransitionState = TRANS_IdleToSelected Animation = ATNA AnimationName = GUManMocap_ATNA AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.0 End End TransitionState = TRANS_SelectedToIdle Animation = ATND AnimationName = GUManMocap_ATND AnimationMode = ONCE AnimationSpeedFactorRange = 0.9 1.0 End End //----------------------------------------------------------------------------------------------------------- End #include "..\..\..\includes\StunDrawModuleSmall.inc" // ***DESIGN parameters *** Side = Rohan EditorSorting = UNIT ThreatLevel = 1.0 ThingClass = HORDE_UNIT CommandPoints = 4 BountyValue = GONDOR_SOLDIER_BOUNTY_VALUE EmotionRange = 240 // Make sure this value is greater than the fear distribution range. TransportSlotCount = TRANSPORTSLOTCOUNT_UNIT //// WEAPON SETS //// WeaponSet Conditions = None Weapon = PRIMARY GondorSword AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI End WeaponSet Conditions = PLAYER_UPGRADE Weapon = PRIMARY GondorSwordUpgraded AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI End //// ARMOUR SETS //// ArmorSet Conditions = None Armor = SoldierArmor DamageFX = NormalDamageFX End ArmorSet Conditions = PLAYER_UPGRADE Armor = SoldierHeavyArmor DamageFX = NormalDamageFX End ShroudClearingRange = SHROUD_CLEAR_STANDARD VisionRange = GONDOR_SOLDIER_VISION_RANGE VisionSide = 35% VisionRear = 25% MaxVisionBonusPercent = 300% VisionBonusTestRadius = 200 VisionBonusPercentPerFoot = 2.0% DisplayName = OBJECT:RohanFighter CrushableLevel = 0 //What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CrushRevengeWeapon = BasicInfantryCrushRevenge CommandSet = RohanFighterCommandSet // *** AUDIO Parameters ***// ;VoiceAmbushed = GondorSoldierVoiceAmbushed OBSOLETE VOICE VoiceAttack = GondorSoldierVoiceAttack VoiceAttackCharge = GondorSoldierVoiceAttackCharge VoiceAttackMachine = GondorSoldierVoiceAttack VoiceAttackStructure = GondorSoldierVoiceAttackBuilding VoiceEnterStateAttack = GondorSoldierVoiceEnterStateAttack VoiceEnterStateAttackCharge = GondorSoldierVoiceEnterStateAttackCharge VoiceEnterStateAttackMachine = GondorSoldierVoiceEnterStateAttackBuilding VoiceEnterStateAttackStructure = GondorSoldierVoiceEnterStateAttackBuilding VoiceCreated = GondorSoldierVoiceSalute VoiceFullyCreated = GondorSoldierVoiceSalute //GondorSoldierVoiceCreated VoiceGuard = GondorSoldierVoiceMove VoiceMove = GondorSoldierVoiceMove VoiceMoveToCamp = GondorSoldierVoiceMoveCamp VoiceMoveWhileAttacking = GondorSoldierVoiceDisengage //TEMP_GondorSoldierVoiceMoveWhileAttacking_TEMP VoicePriority = 49 VoiceRetreatToCastle = GondorSoldierVoiceRetreat VoiceSelect = GondorSoldierVoiceSelectMS VoiceSelectBattle = GondorSoldierVoiceSelectBattle VoiceEnterStateMove = GondorSoldierVoiceEnterStateMove VoiceEnterStateMoveToCamp = GondorSoldierVoiceEnterStateMoveCamp VoiceEnterStateMoveWhileAttacking = GondorSoldierVoiceEnterStateDisengage VoiceEnterStateRetreatToCastle = GondorSoldierVoiceEnterStateRetreat SoundImpact = ImpactHorse UnitSpecificSounds VoiceGarrison = GondorSoldierVoiceGarrison VoiceDesperateAttack = GondorSoldierVoiceDesperateCharge VoiceAttackUnitWebbedHumanoidWithGondorFighterInside = GondorSoldierVoiceAttackWebbedSoldier VoiceAttackUnitWebbedHumanoidWithGondorArcherInside = GondorSoldierVoiceAttackWebbedSoldier VoiceEnterUnitElvenTransportShip = GondorSoldierVoiceMove VoiceInitiateCaptureBuilding = GondorSoldierVoiceMove End CrowdResponseKey = GoodMen #include "..\..\..\includes\StandardUnitEvaEvents.inc" ClientBehavior = ModelConditionAudioLoopClientBehavior ModuleTag_foo ModelCondition = Required:RAISING_FLAG Excluded:DYING ENGAGED Sound:EmotionMenGoodCompilationBFME1and2VoxTauntSinglesLoop End Behavior = LargeGroupAudioUpdate ModuleTag_LGAU Key = Humanoid_Male Man Man_Male Unit Infantry Gondor_Soldier End ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior MaxUpdateRangeCap = 800 AnimationSound = Sound: TauntHumanHitShield Animation:GUMAArms_SKL.GUManMocap_IDLC Frames: 17 27 AnimationSound = Sound: TauntHumanHitShield Animation:GUMAArms_SKL.GUManMocap_TNTC Frames: 74 82 94 125 139 AnimationSound = Sound:BodyFallGeneric1 Animation:GUMAArms_SKL.GUManMocap_DIEB Frames:89 AnimationSound = Sound:BodyFallGeneric1 Animation:GUMAArms_SKL.GUManMocap_DIEC Frames:71 AnimationSound = Sound:BodyFallGeneric1 Animation:GUMAArms_SKL.GUManMocap_DIED Frames:29 AnimationSound = Sound:BodyFallGeneric1 Animation:GUMAArms_SKL.GUManMocap_DIEE Frames:28 AnimationSound = Sound:BodyFallGeneric1 Animation:GUMAArms_SKL.GUMAARMS_LNDA Frames:0 End // *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT ATTACK_NEEDS_LINE_OF_SIGHT NOTIFY_OF_PREATTACK GRAB_AND_DROP Body = ActiveBody ModuleTag_02 CheerRadius = EMOTION_CHEER_RADIUS MaxHealth = GONDOR_SOLDIER_HEALTH MaxHealthDamaged = GONDOR_SOLDIER_HEALTH_DAMAGED BurningDeathBehavior = Yes BurningDeathFX = FX_InfantryBurningFlame End Behavior = WeaponSetUpgrade WeaponSetUpgradeModuleTag TriggeredBy = Upgrade_GondorForgedBlades End Behavior = ArmorUpgrade ArmorUpgradeModuleTag TriggeredBy = Upgrade_GondorHeavyArmor ArmorSetFlag = PLAYER_UPGRADE End //------------------------------------------------------------------------- // // Sub object upgrading. // Behavior = SubObjectsUpgrade Armor_Upgrade TriggeredBy = Upgrade_GondorHeavyArmor UpgradeTexture = ruspearman.tga 0 ruspearman.tga UpgradeTexture = exlnzflar2.tga 0 ruwarweap.tga UpgradeTexture = rushield.tga 0 rushield.tga RecolorHouse = Yes ExcludeSubobjects = Forged_Blade End Behavior = SubObjectsUpgrade ForgedBlade_Upgrade TriggeredBy = Upgrade_GondorForgedBlades ShowSubObjects = Forged_Blade End //------------------------------------------------------------------------- Behavior = AIUpdateInterface ModuleTag_03 AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS MoodAttackCheckRate = 500 AILuaEventsList = GondorFighterFunctions MinCowerTime = 3000 MaxCowerTime = 5000 AttackPriority = AttackPriority_Infantry BurningDeathTime = BURNINGDEATH_DURATION_INFANTRY End LocomotorSet Locomotor = HumanLocomotor Condition = SET_NORMAL Speed = NORMAL_FOOT_MED_MEMBER_SPEED End LocomotorSet Locomotor = BurningDeathLocomotorInfantry Condition = SET_BURNINGDEATH Speed = BURNINGDEATH_WANDERSPEED_INFANTRY End Behavior = PhysicsBehavior ModuleTag_04 GravityMult = 1.0 ShockStunnedTimeLow = 1400 //msec ShockStunnedTimeHigh = 2400 //msec ShockStandingTime = 1233 //msec End Behavior = AttributeModifierUpgrade ModuleTag_AMU TriggeredBy = Upgrade_GondorFighterFearless AttributeModifier = FearlessForever End Behavior = SquishCollide ModuleTag_06 //nothing End Behavior = HordeMemberCollide ModuleTag_HMC //nothing End ; Behavior = HitReactionBehavior HitReactionBehaviorModuleTag ; HitReactionLifeTimer1 = 2500 // level 1 (light damage) hit reaction animations in ms ; HitReactionLifeTimer2 = 2500 // level 2 (medium damage) hit reaction animations in ms ; HitReactionLifeTimer3 = 2500 // level 3 (heavy damage) hit reaction animations in ms ; HitReactionThreshold1 = 5.0 // level 1 (light damage) threshold trigger ; HitReactionThreshold2 = 25.0 // level 2 (medium damage) threshold trigger ; HitReactionThreshold3 = 50.0 // level 3 (heavy damage) threshold trigger ; FastHitsResetReaction = Yes If set -- when hits occur faster than the reaction animations, it will reset the animation. (like getting riddled with machine gun bullets) ; End Behavior = SlowDeathBehavior ModuleTag_05 DeathTypes = ALL -KNOCKBACK -FADED SinkDelay = 3000 SinkRate = 0.60 // in Dist/Sec DestructionDelay = 10000 Sound = INITIAL HumanVoiceDie //GondorSoldierVoiceDie End Behavior = SlowDeathBehavior ModuleTag_FadeDeath DeathTypes = NONE +FADED SinkDelay = 3000 SinkRate = 0.60 // in Dist/Sec DestructionDelay = 10000 Sound = INITIAL SpellGenericUnsummonFasterMS End Behavior = SlowDeathBehavior ModuleTag_07 // Same as normal death, but no sound (sound already played by SoundImpact = ... ) DeathTypes = NONE +KNOCKBACK SinkDelay = 3000 SinkRate = 0.60 // in Dist/Sec DestructionDelay = 10000 End Behavior = BezierProjectileBehavior ModuleTag_08 // Module starts asleep, and wakes up when thrown. // To tweak a Bezier path FirstHeight = 24 // Height of Bezier control points above highest intervening terrain SecondHeight = 24 FirstPercentIndent = 30% // Percentage of shot distance control points are placed SecondPercentIndent = 70% TumbleRandomly = Yes CrushStyle = Yes // I don't detonate, I just hit DieOnImpact = Yes BounceCount = 1 // When I hit the ground, I'll arc again BounceDistance = 40 // this far BounceFirstHeight = 24 // Height of Bezier control points above highest intervening terrain BounceSecondHeight = 24 BounceFirstPercentIndent = 20% // Percentage of shot distance control points are placed BounceSecondPercentIndent = 80% GroundHitFX = FX_ThrownRockGroundHit GroundBounceFX = FX_ThrownRockBounceHit End Geometry = CYLINDER GeometryMajorRadius = 8.0 GeometryMinorRadius = 8.0 GeometryHeight = 19.2 GeometryIsSmall = Yes Shadow = SHADOW_DECAL ShadowSizeX = 19// ShadowSizeY = 19// ShadowTexture = ShadowI End
I added the texture but i think i added it in the wrong place.
rohanhordes.ini:
Object RohanFighterHorde // This is required for garrisoned objects - please put in all objects. ButtonImage = WOR_GondorSoldier SelectPortrait = UPGondor_Soldier Draw = W3DScriptedModelDraw ModuleTag_W3DModelDraw DependencySharedModelFlags = EMOTION_ALERT EMOTION_MORALE_HIGH EMOTION_MORALE_LOW EMOTION_AFRAID EMOTION_COWER EMOTION_TERROR EMOTION_LOOK_TO_SKY EMOTION_TAUNTING EMOTION_POINTING SELECTED DefaultModelConditionState Model = None //InvisHrdeTmp5x2 End ModelConditionState = HORDE_EMPTY Model = None End ModelConditionState = WORLD_BUILDER Model = HordeMarkGUSol End End Side = Rohan EditorSorting = UNIT EmotionRange = 240 DisplayName = OBJECT:HordeRohanFighters DisplayNameStrategic = CONTROLBAR:LW_Unit_RohanFighterHorde DescriptionStrategic = CONTROLBAR:LW_ToolTip_RohanFighterHorde WeaponSet Conditions = None Weapon = PRIMARY NormalMeleeHordeRangefinder End // *** AUDIO Parameters ***// // Note: Don't put voice parameters here -- they will be ignored. Voice play requests // are always passed through to members #include "..\..\..\includes\StandardHordeEvaEvents.inc" UnitSpecificSounds VoiceDesperateAttack = GondorSoldierVoiceDesperateCharge End BuildCost = GONDOR_SOLDIER_BUILDCOST BuildTime = GONDOR_SOLDIER_BUILDTIME ShroudClearingRange = GONDOR_SOLDIER_HORDE_SHROUD_RANGE VisionRange = GONDOR_SOLDIER_HORDE_VISION_RANGE VisionSide = 50% VisionRear = 25% MaxVisionBonusPercent = 300% VisionBonusTestRadius = 200 VisionBonusPercentPerFoot = 1.0% CommandPoints = 60 FormationWidth = 2 // Width it occupies in formations. Current choices are 1 or 2. FormationDepth = 1 // Depth it occupies in formations. Current choices are 1 or 2. CrushableLevel = 0 //What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles CrusherLevel = 0 TransportSlotCount = TRANSPORTSLOTCOUNT_SMALL_HORDE KindOf = SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT INFANTRY HORDE MELEE_HORDE NOTIFY_OF_PREATTACK ARMY_SUMMARY LARGE_RECTANGLE_PATHFIND //UNATTACKABLE ThreatLevel = GONDOR_FIGHTER_HORDE_THREAT ThreatBreakdown GondorFighterHorde_DetailedThreat AIKindOf = INFANTRY End Body = ImmortalBody ModuleTag_ImmortalBody MaxHealth = 1 End #include "..\..\..\includes\CaptureBuilding.inc" Behavior = StancesBehavior ModuleTag_StancesBehavior StanceTemplate = FighterHorde End Behavior = HordeAIUpdate ModuleTag_HordeAIUpdate AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS MoodAttackCheckRate = 500 MaxCowerTime = 5000 MinCowerTime = 3000 AILuaEventsList = InfantryFunctions AttackPriority = AttackPriority_Infantry End Behavior = HordeContain ModuleTag_HordeContain FrontAngle = 270 FlankedDelay = 2000 ObjectStatusOfContained = InitialPayload = RohanFighter GOOD_MEN_GIANT_HORDE_SIZE Slots = 15 PassengerFilter = NONE +INFANTRY ShowPips = No ThisFormationIsTheMainFormation = Yes //Used to determine which armorset to use (and anything else we want!) RandomOffset=X:0 Y:0 MeleeBehavior = Amoeba End // Banner Carrier info BannerCarriersAllowed = GondorInfantryBanner // types of units that are allowed as banner carriers BannerCarrierPosition = UnitType:RohanFighter Pos:X:70.0 Y:0.0 // (DEFAULT) position of banner carrier RankInfo = RankNumber:1 UnitType:RohanFighter Position:X:50 Y:0 Position:X:50 Y:20 Position:X:50 Y:-20 Position:X:50 Y:40 Position:X:50 Y:-40 RankInfo = RankNumber:2 UnitType:RohanFighter Position:X:30 Y:0 Leader 1 0 Position:X:30 Y:20 Leader 1 1 Position:X:30 Y:-20 Leader 1 2 Position:X:30 Y:40 Leader 1 3 Position:X:30 Y:-40 Leader 1 4 RankInfo = RankNumber:3 UnitType:RohanFighter Position:X:10 Y:0 Leader 2 0 Position:X:10 Y:20 Leader 2 1 Position:X:10 Y:-20 Leader 2 2 Position:X:10 Y:40 Leader 2 3 Position:X:10 Y:-40 Leader 2 4 RanksToReleaseWhenAttacking = 1 AlternateFormation = GondorFighterHordeBlock MeleeAttackLeashDistance = 1 //How far the hordes can move from the center of the horde when melee attacking. BackUpMinDelayTime = 1 //The minimum amount of time to delay before backing up BackUpMaxDelayTime = 3000 //The maximum amount of time to delay before backing up BackUpMinDistance = 1 //The minimum number of cells to backup BackUpMaxDistance = 3 //The maximum number of cells to backup BackupPercentage = 80% //The amount of chance that a unit will back up. End Behavior = PhysicsBehavior ModuleTag_PhysicsBehavior GravityMult = 1.0 End Behavior = CommandButtonHuntUpdate ModuleTag_CommandButtonHuntUpdate End Behavior = EmotionTrackerUpdate Module_EmotionTracker TauntAndPointDistance = INFANTRY_TAUNT_POINT_RADIUS // max distance to taunted/pointed objet TauntAndPointUpdateDelay = 1000 // how often scan (milliseconds) TauntAndPointExcluded = NONE AfraidOf = EMOTION_AFRAIDOF_OBJECTFILTER AlwaysAfraidOf = EMOTION_ALWAYS_AFRAIDOF_OBJECTFILTER PointAt = EMOTION_POINTAT_OBJECTFILTER HeroScanDistance = 150 FearScanDistance = INFANTRY_FEAR_SCAN_RADIUS AddEmotion = Terror_Base AddEmotion = Doom_Base //OVERRIDE //StartFXList = FX_GondorSoldierDoom //these have been hooked up in the FXList.INI //End AddEmotion = BraceForBeingCrushed_Base AddEmotion = UncontrollableFear_Base //OVERRIDE //StartFXList = FX_GondorSoldierFear //End AddEmotion = FearIdle_Base //OVERRIDE //StartFXList = FX_GondorSoldierFear //End AddEmotion = FearBusy_Base //OVERRIDE //StartFXList = FX_GondorSoldierFear //End AddEmotion = Point_Base //OVERRIDE //Duration = 13980 //StartFXList = FX_GondorSoldierPoint //End AddEmotion = Taunt_Base //OVERRIDE //AttributeModifier = GondorFighterTaunt //End AddEmotion = CheerIdle_Base AddEmotion = CheerBusy_Base AddEmotion = HeroCheerIdle_Base AddEmotion = HeroCheerBusy_Base AddEmotion = Alert_Base End Behavior = PickupStuffUpdate ModuleTag_PickupStuffUpdate SkirmishAIOnly = Yes StuffToPickUp = NONE +CRATE ScanRange = 200 ScanIntervalSeconds = 0.5 End LocomotorSet Locomotor = NormalMeleeHordeLocomotor Condition = SET_NORMAL Speed = NORMAL_FOOT_MED_HORDE_SPEED ; RotWK originally NORMAL_FOOT_SLOW_HORDE_SPEED End LocomotorSet Locomotor = ScaredMeleeHordeLocomotor Condition = SET_SCARED Speed = NORMAL_FOOT_MED_HORDE_SPEED End Behavior = ProductionUpdate ProductionUpdateModuleTag GiveNoXP = Yes End Behavior = LevelUpUpgrade ModuleTag_BasicTraining TriggeredBy = Upgrade_GondorBasicTraining LevelsToGain = 1 LevelCap = 2 End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality TriggeredBy = Upgrade_GondorForgedBlades End Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality2 TriggeredBy = Upgrade_GondorHeavyArmor End ///////////////////// // AISpecialPowers ///////////////////// Behavior = AISpecialPowerUpdate RohanFighterHordeCaptureBuildingAI CommandButtonName = Command_CaptureBuilding SpecialPowerAIType = AI_SPECIAL_POWER_CAPTURE_BUILDING End Behavior = AISpecialPowerUpdate GondorFighterHordeStanceBattle CommandButtonName = Command_SetStanceBattle SpecialPowerAIType = AI_SPECIAL_POWER_STANCEBATTLE End Behavior = AISpecialPowerUpdate GondorFighterHordeStanceAggressive CommandButtonName = Command_SetStanceAggressive SpecialPowerAIType = AI_SPECIAL_POWER_STANCEAGGRESSIVE End Behavior = AISpecialPowerUpdate GondorFighterHordeHoldGround CommandButtonName = Command_SetStanceHoldGround SpecialPowerAIType = AI_SPECIAL_POWER_STANCEHOLDGROUND End CommandSet = RohanFighterHordeCommandSet Geometry = BOX GeometryMajorRadius = 30.0 GeometryMinorRadius = 45.0 GeometryHeight = 20.0 GeometryIsSmall = No //------------------------------------------------------------------------------------------------- // World Map specific data //------------------------------------------------------------------------------------------------- // *** AUTO RESOLVE DATA *** AutoResolveUnitType = AutoResolveUnit_Soldier AutoResolveCombatChain = AutoResolve_SoldierCombatChain AutoResolveBody = AutoResolve_GondorFighterHordeBody AutoResolveArmor RequiredUpgrades = Upgrade_GondorHeavyArmor Armor = AutoResolve_GondorSoldierHeavyArmor End AutoResolveArmor ExcludedUpgrades = Upgrade_GondorHeavyArmor Armor = AutoResolve_GondorSoldierArmor End AutoResolveWeapon RequiredUpgrades = Upgrade_GondorForgedBlades Weapon = AutoResolve_GondorSoldierUpgradedWeapon End AutoResolveWeapon ExcludedUpgrades = Upgrade_GondorForgedBlades Weapon = AutoResolve_GondorSoldierWeapon End WorldMapArmoryUpgradesAllowed = Upgrade_GondorBasicTraining Upgrade_GondorForgedBlades Upgrade_GondorHeavyArmor End ChildObject RohanFighterHorde_Summoned RohanFighterHorde IsTrainable = No CommandPoints = 0 CommandSet = RohanFighterHordeCommandSet_Summoned EquivalentTo = RohanFighterHorde DisplayName = OBJECT:HordeRohanSoldier KindOf = SUMMONED SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT INFANTRY HORDE MELEE_HORDE NOTIFY_OF_PREATTACK ARMY_SUMMARY LARGE_RECTANGLE_PATHFIND //UNATTACKABLE Behavior = HordeContain ModuleTag_HordeContain FrontAngle = 270 FlankedDelay = 2000 ObjectStatusOfContained = InitialPayload = GondorFighter_Summoned GOOD_MEN_GIANT_HORDE_SIZE Slots = 15 PassengerFilter = NONE +INFANTRY ShowPips = No ThisFormationIsTheMainFormation = Yes //Used to determine which armorset to use (and anything else we want!) RandomOffset = X:0 Y:0 MeleeBehavior = Amoeba End RankInfo = RankNumber:1 UnitType:GondorFighter_Summoned Position:X:50 Y:0 Position:X:50 Y:20 Position:X:50 Y:-20 Position:X:50 Y:40 Position:X:50 Y:-40 RankInfo = RankNumber:2 UnitType:GondorFighter_Summoned Position:X:30 Y:0 Leader 1 0 Position:X:30 Y:20 Leader 1 1 Position:X:30 Y:-20 Leader 1 2 Position:X:30 Y:40 Leader 1 3 Position:X:30 Y:-40 Leader 1 4 RankInfo = RankNumber:3 UnitType:GondorFighter_Summoned Position:X:10 Y:0 Leader 2 0 Position:X:10 Y:20 Leader 2 1 Position:X:10 Y:-20 Leader 2 2 Position:X:10 Y:40 Leader 2 3 Position:X:10 Y:-40 Leader 2 4 RanksToReleaseWhenAttacking = 1 AlternateFormation = GondorFighterHordeBlock MeleeAttackLeashDistance = 1 //How far the hordes can move from the center of the horde when melee attacking. BackUpMinDelayTime = 1 //The minimum amount of time to delay before backing up BackUpMaxDelayTime = 3000 //The maximum amount of time to delay before backing up BackUpMinDistance = 1 //The minimum number of cells to backup BackUpMaxDistance = 3 //The maximum number of cells to backup BackupPercentage = 80% //The amount of chance that a unit will back up. End Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate // This one displays the timer, but the one in the uint does the work MinLifetime = CREATE_A_HERO_REINFORCEMENT_LIFETIME MaxLifetime = CREATE_A_HERO_REINFORCEMENT_LIFETIME DeathType = FADED End End //------------------------------------------------------------------------------ ChildObject RohanFighterHordeBlock RohanFighterHorde // 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 FrontAngle = 270 FlankedDelay = 2000 ObjectStatusOfContained = InitialPayload = GondorFighter GOOD_MEN_GIANT_HORDE_SIZE Slots = 15 PassengerFilter = NONE +INFANTRY ShowPips = No ThisFormationIsTheMainFormation = No //Used to determine which armorset to use (and anything else we want!) AttributeModifiers = GondorFighterBlock RandomOffset = X:0 Y:0 MeleeBehavior = Amoeba End // Banner Carrier info BannerCarriersAllowed = GondorInfantryBanner // types of units that are allowed as banner carriers BannerCarrierPosition = UnitType:RohanFighter Pos:X:46.0 Y:0.0 // (DEFAULT) position of banner carrier RankInfo = RankNumber:1 UnitType:RohanFighter Position:X:34 Y:0 Position:X:34 Y:10 Position:X:34 Y:-10 Position:X:34 Y:20 Position:X:34 Y:-20 RankInfo = RankNumber:2 UnitType:RohanFighter Position:X:22 Y:0 Leader 1 0 Position:X:22 Y:10 Leader 1 1 Position:X:22 Y:-10 Leader 1 2 Position:X:22 Y:20 Leader 1 3 Position:X:22 Y:-20 Leader 1 4 RankInfo = RankNumber:3 UnitType:RohanFighter Position:X:10 Y:0 Leader 2 0 Position:X:10 Y:10 Leader 2 1 Position:X:10 Y:-10 Leader 2 2 Position:X:10 Y:20 Leader 2 3 Position:X:10 Y:-20 Leader 2 4 RanksToReleaseWhenAttacking = 1 AlternateFormation = RohanFighterHorde MeleeAttackLeashDistance = 1 //How far the hordes can move from the center of the horde when melee attacking. BackUpMinDelayTime = 1 //The minimum amount of time to delay before backing up BackUpMaxDelayTime = 3000 //The maximum amount of time to delay before backing up BackUpMinDistance = 1 //The minimum number of cells to backup BackUpMaxDistance = 3 //The maximum number of cells to backup BackupPercentage = 80% //The amount of chance that a unit will back up. End End