home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2006 April / Gamestar_83_2006-04_dvd.iso / Dema / lotrbfme2_demo.exe / INI.big / data_ini_object_neutral_neutralunits.ini < prev    next >
Text File  |  2006-01-31  |  154KB  |  5,232 lines

  1. ;------------------------------------------------------------------------------
  2. Object MordorBalrog
  3.  
  4.     ; *** ART Parameters ***
  5.     ; SelectPortrait for Heros is portrait behind skill buttons. HP = HeroPortrait.
  6.     SelectPortrait = HPBalrog
  7.     
  8.     ; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.
  9.     ButtonImage = HIBalrog
  10.     
  11.     Draw = W3DScriptedModelDraw ModuleTag_BodyDraw
  12. ;        GlowEnabled = Yes
  13. ;        GlowEmissive = Yes
  14.         
  15. ;        StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
  16.  
  17.         OkToChangeModelColor = Yes
  18.     
  19.         ExtraPublicBone = ZZZPASSENGERBON
  20.         ExtraPublicBone = ZZZWHIPCOIL
  21.         ExtraPublicBone = SWORD
  22.  
  23.         ;-------------------------
  24.         ModelConditionState = NONE ; Not DefaultConditionState, because that keyword copies anything in here to every other state
  25.             Model = MUBalrog_SKN
  26.             ParticleSysBone = SWORD BalrogSwordFlare FollowBone:yes        ; Not SWORDBONE, because SWORD is the bone that gets art-hidden mid animation in WIPX
  27.             ParticleSysBone = SWORD BalrogSwordEmbers FollowBone:yes
  28.             ParticleSysBone = MANEBONE BalrogManeFlare FollowBone:yes
  29.             ParticleSysBone = MANEBONE BalrogManeEmbers FollowBone:yes
  30.             ParticleSysBone = MANEBONE BalrogManeFire FollowBone:yes
  31.             ParticleSysBone = RTWINGBONE BalrogWingSmokeLite FollowBone:yes
  32.             ParticleSysBone = LFWINGBONE BalrogWingSmokeLite FollowBone:yes
  33.         End
  34.  
  35. ; This is triggered by the single player only HitReaction module for the lightningsword        
  36.         ModelConditionState = HIT_LEVEL_2
  37.             Model = MUBalLIT_SKN
  38.         End
  39.  
  40.         ModelConditionState = HERO
  41.             Model = MUBalIGNT_SKN
  42.             ParticleSysBone = MANEBONE BalrogManeFlare FollowBone:yes
  43.             ParticleSysBone = MANEBONE BalrogManeEmbers FollowBone:yes
  44.             ParticleSysBone = MANEBONE BalrogManeFire FollowBone:yes
  45.             ParticleSysBone = RTWINGBONE BalrogWingEmbers FollowBone:yes
  46.             ParticleSysBone = LFWINGBONE BalrogWingEmbers FollowBone:yes
  47.  
  48.             ParticleSysBone = SWORD BalrogSwordFlare FollowBone:yes        ; Not SWORDBONE, because SWORD is the bone that gets art-hidden mid animation in WIPX
  49.             ParticleSysBone = SWORD BalrogSwordEmbers FollowBone:yes
  50.                     ParticleSysBone = NONE BalrogIgniteHeatWave FollowBone:no
  51.         End
  52.  
  53.         ;-----------------        
  54.         IdleAnimationState
  55.             StateName = State_Idle
  56.             Animation = Breathe 
  57.                 AnimationName = MUBalrog_SKL.MUBalrog_IDLA
  58.                 AnimationMode = ONCE
  59.                 AnimationBlendTime = 10
  60.                 AnimationPriority = 20
  61.             End
  62.             Animation = LookAround 
  63.                 AnimationName = MUBalrog_SKL.MUBalrog_IDLB
  64.                 AnimationMode = ONCE
  65.                 AnimationBlendTime = 10
  66.                 AnimationPriority = 2
  67.             End
  68.             Animation = SnortLikeABull 
  69.                 AnimationName = MUBalrog_SKL.MUBalrog_IDLC
  70.                 AnimationMode = ONCE
  71.                 AnimationBlendTime = 10
  72.                 AnimationPriority = 1
  73.             End
  74.  
  75.             BeginScript
  76.                 Prev = CurDrawablePrevAnimationState()
  77.                 if Prev == "State_JustBuilt" 
  78.                     then CurDrawableSetTransitionAnimState("TRANS_JustBuilt_To_Idle") 
  79.                 end
  80.                 if Prev == "State_AboutToHitGround" 
  81.                     then CurDrawableSetTransitionAnimState("TRANS_AboutToHitGround_To_Idle") 
  82.                 end
  83.             EndScript
  84.         End 
  85.         
  86.         AnimationState                    =    DYING DEATH_1
  87.             Animation                    =    Dying 
  88.                 AnimationName            =    MUBalrog_SKL.MUBalrog_DIEA 
  89.                 AnimationMode            =    ONCE
  90.             End
  91.             ParticleSysBone = None BalrogFallDust FollowBone:No
  92.         End
  93.  
  94.         AnimationState                    =    DYING DEATH_2
  95.             Animation                    =    FadingOut 
  96.                 AnimationName            =    MUBalrog_SKL.MUBalrog_RORC 
  97.                 AnimationMode            =    ONCE
  98.             End
  99.         End
  100.  
  101.  
  102. ; This is triggered by the single player only HitReaction module for the lightningsword    
  103. ; It is highest instead of lowest priority, because the hit reaction Paralyzes us, where for others it is just a fancy idle.    
  104.         AnimationState                    =    HIT_LEVEL_2
  105.             Animation                    =    Owowowowowowowow
  106.                 AnimationName            =    MUBalrog_SKL.MUBalrog_HITB 
  107.                 AnimationMode            =    ONCE
  108.             End
  109.         End
  110.         
  111.         AnimationState                    =    EATING
  112.             Animation                    =    DoingHorribleThingToGrabbedGuy 
  113.                 AnimationName            =    MUBalrog_SKL.MUBalrog_BRNA 
  114.                 AnimationMode            =    ONCE
  115.                 AnimationBlendTime        =    0
  116.             End
  117.  
  118.                 ParticleSysBone = ZZZPassengerBon balrogHandSqueezeFlames FollowBone:Yes
  119.                 ParticleSysBone = ZZZPassengerBon balrogHandSqueezeFlames2 FollowBone:Yes
  120.                 ParticleSysBone = ZZZPassengerBon balrogHandSqueezeFlamesFinal FollowBone:Yes
  121.                 ParticleSysBone = ZZZPassengerBon BalrogHandSqueezeFlash FollowBone:Yes
  122.                 ParticleSysBone = ZZZPassengerBon BalrogHandSmoke FollowBone:Yes
  123.                 ParticleSysBone = RING_2_L balrogHandAsh FollowBone:Yes
  124.                 ParticleSysBone = RING_2_L balrogHandAshSmall FollowBone:Yes
  125.         End
  126.  
  127.         AnimationState                    =    UNPACKING PACKING_TYPE_3
  128.             Animation                    =    GrabbingToTouching
  129.                 AnimationName            =    MUBalrog_SKL.MUBalrog_GRBA 
  130.                 AnimationMode            =    ONCE
  131.                 AnimationBlendTime        =    0
  132.             End
  133.         End
  134.  
  135.         AnimationState                    =    PACKING PACKING_TYPE_3
  136.             Animation                    =    GrabbingFollowThrough 
  137.                 AnimationName            =    MUBalrog_SKL.MUBalrog_GRBC 
  138.                 AnimationMode            =    ONCE
  139.                 AnimationBlendTime        =    0
  140.             End    
  141.         End
  142.  
  143.         AnimationState            = JUST_BUILT
  144.             StateName = State_JustBuilt
  145.             Animation
  146.                 AnimationName = MUBalrog_SKL.MUBalrog_RORA
  147.                 AnimationMode = MANUAL
  148.                 AnimationBlendTime = 0
  149.             End
  150.         End
  151.         
  152.         TransitionState = TRANS_JustBuilt_To_Idle
  153.             Animation = BeingSummoned
  154.                 AnimationName = MUBalrog_SKL.MUBalrog_RORA 
  155.                 AnimationMode = ONCE
  156.             End
  157.         End
  158.         
  159.         AnimationState = FIRING_OR_PREATTACK_B
  160.             Animation = CrackThatWhip 
  161.                 AnimationName = MUBalrog_SKL.MUBalrog_WIPA
  162.                 AnimationMode = ONCE
  163.             End
  164.                 ParticleSysBone = RTHANDBONE BalrogWhip2swordEfx FollowBone:Yes
  165.         End
  166.  
  167.         AnimationState            = SPECIAL_POWER_1
  168.             Animation            = RoaringFear 
  169.                 AnimationName    = MUBalrog_SKL.MUBalrog_RORB
  170.                 AnimationMode   = ONCE
  171.             End
  172.                 ParticleSysBone = BAT_JAW BalrogScreamEffect FollowBone:Yes
  173.                 FXEvent            = Frame:20 Name:FX_BalrogScreamEfx
  174.                 ParticleSysBone = BAT_JAW balrogPixelDisplScrm FollowBone:Yes
  175.                 ParticleSysBone = BAT_JAW balrogScrmEmbers FollowBone:Yes
  176.         End
  177.                
  178.         AnimationState            = SPECIAL_WEAPON_ONE
  179.             Animation            = BreathingFireAnimation
  180.                 AnimationName    = MUBalrog_SKL.MUBalrog_FIRA
  181.                 AnimationMode   = ONCE
  182.             End
  183.                 ;This is Balrog's fire breath efx
  184.                 ParticleSysBone = BAT_JAW balrogFireBreath FollowBone:Yes
  185.                 ParticleSysBone = BAT_JAW balrogBreathEmbers FollowBone:Yes
  186.                 ParticleSysBone = BAT_JAW balrogBreathSmoke FollowBone:Yes
  187.                 ParticleSysBone = BAT_JAW balrogBreathProxy FollowBone:Yes
  188.             End
  189.                
  190.         AnimationState            = SPECIAL_WEAPON_TWO UNPACKING
  191.             StateName            = State_LeapStart
  192.             Animation            = GettingReadyToLeap
  193.                 AnimationName    = MUBalrog_SKL.MUBalrog_JMP1
  194.                 AnimationMode   = ONCE
  195.             End
  196.         End
  197.                
  198.         AnimationState            = SPECIAL_WEAPON_TWO PACKING
  199.             Animation            = FirstWingBeatGoingUp 
  200.                 AnimationName    = MUBalrog_SKL.MUBalrog_JMP2
  201.                 AnimationMode   = ONCE
  202.             End
  203.         End
  204.                
  205.         AnimationState            = ABOUT_TO_HIT                        ; Before ThrownProjectile, since by definition this set for nn frames while T_P is still on
  206.             StateName            = State_AboutToHitGround
  207.             Animation            = StartingToLandToTouchingGround 
  208.                 AnimationName    = MUBalrog_SKL.MUBalrog_LND1
  209.                 AnimationMode   = ONCE
  210.             End
  211.         End
  212.                
  213.         AnimationState            = THROWN_PROJECTILE
  214.             Animation            = HurtlingThroughAir 
  215.                 AnimationName    = MUBalrog_SKL.MUBalrog_FLYA
  216.                 AnimationMode   = LOOP
  217.                 AnimationBlendTime = 10
  218.             End
  219.         End
  220.                
  221.         TransitionState = TRANS_AboutToHitGround_To_Idle
  222.             Animation = SplashAtEndOfJump
  223.                 AnimationName = MUBalrog_SKL.MUBalrog_LND2 
  224.                 AnimationMode = ONCE
  225.                 AnimationBlendTime = 0
  226.             End
  227.         End
  228.         
  229.         AnimationState            = TURN_RIGHT
  230.             Animation            = TurningRight 
  231.                 AnimationName    = MUBalrog_SKL.MUBalrog_TRNA
  232.                 AnimationMode   = LOOP
  233.                 AnimationBlendTime = 10
  234.             End
  235.         End
  236.  
  237.         AnimationState            = TURN_LEFT
  238.             Animation            = TurningLeft 
  239.                 AnimationName    = MUBalrog_SKL.MUBalrog_TRNB
  240.                 AnimationMode   = LOOP
  241.                 AnimationBlendTime = 10
  242.             End
  243.         End
  244.  
  245.         AnimationState            = MOVING
  246.             Animation            = Running 
  247.                 AnimationName    = MUBalrog_SKL.MUBalrog_WLKA
  248.                 AnimationMode   = LOOP
  249.                 AnimationBlendTime = 10
  250.             End
  251.             Flags               = RANDOMSTART
  252.             
  253.             FXEvent    = Frame:20 FireWhenSkipped Name:FX_BalrogRightFootStep
  254.             FXEvent    = Frame:44 FireWhenSkipped Name:FX_BalrogLeftFootStep
  255.         End
  256.       
  257.         AnimationState            = WEAPONSET_HERO_MODE UNPACKING PACKING_TYPE_1
  258.             Animation = StartIgniteRoar 
  259.                 AnimationName = MUBalrog_SKL.MUBalrog_IGNTA
  260.                 AnimationMode = ONCE
  261.             End
  262.         End
  263.                 
  264.         AnimationState            = HERO PACKING PACKING_TYPE_1
  265.             Animation = FinishIgniteRoar 
  266.                 AnimationName = MUBalrog_SKL.MUBalrog_IGNTB
  267.                 AnimationMode = ONCE
  268.             End
  269.            
  270.             EnteringStateFX = FX_BalrogIgniteStart
  271.         End
  272.                 
  273.         AnimationState            = FIRING_OR_PREATTACK_A
  274.             Animation            = Swipe
  275.                 AnimationName    = MUBalrog_SKL.MUBalrog_ATKB
  276.                 AnimationMode    = ONCE
  277.                 UseWeaponTiming    = Yes
  278.             End
  279.         End
  280.         
  281.         AnimationState            = FIRING_OR_PREATTACK_C
  282.             Animation            = Chop
  283.                 AnimationName    = MUBalrog_SKL.MUBalrog_ATKA
  284.                 AnimationMode    = ONCE
  285.                 UseWeaponTiming    = Yes
  286.             End
  287.             ParticleSysBone        = SWORDBONE BalrogSword FollowBone:yes
  288.         End
  289.     End
  290.  
  291. ;--------------------------
  292.     Draw = W3DScriptedModelDraw ModuleTag_WhipDraw
  293.         GlowEnabled = Yes
  294.         GlowEmissive = Yes
  295.         ShadowForceDisable = Yes    ;The shadow setting is for the whole drawable, but this individual draw module wants to not have a shadow.
  296.         
  297. ;        StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
  298.  
  299.         DefaultModelConditionState
  300.             Model = None
  301.         End
  302.         
  303.         ModelConditionState = FIRING_OR_PREATTACK_B
  304.             Model = MUBalsWhip_SKN
  305.         End
  306.         
  307.         ;------------------
  308.         IdleAnimationState
  309.         End
  310.         
  311.         AnimationState = FIRING_OR_PREATTACK_B
  312.             Animation = CrackThatWhip 
  313.                 AnimationName = MUBalsWhip_SKL.MUBalsWhip_WIPA
  314.                 AnimationMode = ONCE
  315.                 AnimationBlendTime = 0
  316.             End
  317.         End
  318.             WadingParticleSys = BalrogRiverSteam        
  319.     End
  320.  
  321.     ; ***DESIGN parameters ***
  322.     DisplayName      = OBJECT:Balrog
  323.     ;//DisplayMeleeDamage = BALROG_DAMAGE_DISPLAY
  324.  
  325.     Side = Neutral
  326.     EditorSorting = UNIT
  327.     ThreatLevel = 4.0
  328.     ThingClass = CHARACTER_UNIT
  329.     CrusherLevel   = 4  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  330.     CrushWeapon = BalrogCrush  
  331.  
  332.     TransportSlotCount = TRANSPORTSLOTCOUNT_MONSTER
  333.     
  334.     WeaponSet
  335.         Conditions = None
  336.         Weapon = PRIMARY    MordorBalrogSwordSwipe
  337.         Weapon = SECONDARY    MordorBalrogWhip
  338.         Weapon = TERTIARY    MordorBalrogSwordChop
  339.         
  340.         AutoChooseSources = SECONDARY None
  341.         OnlyAgainst = TERTIARY STRUCTURE BIG_MONSTER
  342.     End
  343.     
  344.     ArmorSet
  345.         Conditions      = None
  346.         Armor           = BalrogArmor
  347.         DamageFX        = NormalDamageFX
  348.     End
  349.  
  350.     VisionRange = VISION_BALROG                    
  351.     ShroudClearingRange = SHROUD_CLEAR_BALROG
  352.  
  353.     DisplayName = OBJECT:Balrog
  354.     ShockwaveResistance = SHOCKWAVE_RESISTANCE_ALWAYS
  355.     CommandSet = BalrogCommandSet
  356.     CanPathThroughGates    = No
  357.     IsTrainable = No
  358.     
  359.     DeadCollideSize = LARGE ; How big does the AOD consider this unit for damage fx & behavior.
  360.  
  361.  
  362.     ;------------------ AUDIO Parameters ----------------------
  363.  
  364.     VoiceAttack            = BalrogVoiceAttack
  365.     VoiceAttackCharge        = BalrogVoiceAttack
  366.     VoiceAttackMachine    = BalrogVoiceAttack
  367.     VoiceAttackStructure    = BalrogVoiceAttack
  368.     VoiceGuard            = BalrogVoiceMove
  369.     VoiceMove            = BalrogVoiceMove
  370.     VoiceSelect            = BalrogVoiceSelect
  371.     VoiceSelectBattle        = BalrogVoiceSelect
  372.  
  373.     SoundAmbient        = BalrogAmbientLoop
  374.     SoundImpact            = ImpactHorse
  375.  
  376.     #include "..\includes\StandardUnitEvaEvents.inc"
  377.     
  378.     ; Warn the player when the enemy gets a unit. Override the normal sighting event from StandardUnitEvaEvents.inc
  379.     EvaEnemyObjectSightedEvent    = DiscoveredEnemyBalrog
  380.  
  381.     ClientUpdate = EvaAnnounceClientCreate ModuleTag_CreateAnnounce
  382.         AnnouncementEventEnemy = DiscoveredEnemyBalrog
  383.         AnnouncementEventAlly = None
  384.         AnnouncementEventOwner = None
  385.         
  386.         OnlyIfVisible = Yes                        ; Don't announce if hidden in the shroud
  387.         CountAsFirstSightedAnnoucement = Yes    ; Don't re-annouce if going into shroud & back
  388.         UseObjectsPosition = No                    ; Play from central Fortress, not at unit's position
  389.         CreateFakeRadarEvent = Yes                ; Allow player to jump to unit after hearing annoucement
  390.     End
  391.  
  392.     ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
  393.         MaxUpdateRangeCap = 800
  394.         AnimationSound = Sound: BalrogFootstep            Animation: MUBalrog_SKL.MUBalrog_WLKA Frames: 42 17 
  395.         AnimationSound = Sound: BalrogFootstep            Animation: MUBalrog_SKL.MUBalrog_TRNA Frames: 21 52
  396.         AnimationSound = Sound: BalrogFootstep            Animation: MUBalrog_SKL.MUBalrog_TRNB Frames: 21 52
  397.  
  398.         AnimationSound = Sound: BalrogWhipPart1            Animation: MUBalrog_SKL.MUBalrog_WIPA Frames: 1 
  399.         AnimationSound = Sound: BalrogWhipPart2            Animation: MUBalrog_SKL.MUBalrog_WIPA Frames: 21 
  400.         AnimationSound = Sound: ImpactWhipCrack            Animation: MUBalrog_SKL.MUBalrog_WIPA Frames: 34
  401.  
  402.         AnimationSound = Sound: BalrogSwordSwipe            Animation: MUBalrog_SKL.MUBalrog_ATKB Frames: 32    
  403.         AnimationSound = Sound: BalrogSwordSwipe            Animation: MUBalrog_SKL.MUBalrog_ATKA Frames: 32
  404.         AnimationSound = Sound: ImpactBalrogAttackGeneric    Animation: MUBalrog_SKL.MUBalrog_ATKA Frames:41
  405.         AnimationSound = Sound: ImpactBalrogAttackGeneric    Animation: MUBalrog_SKL.MUBalrog_ATKB Frames:40 
  406.         AnimationSound = Sound: ImpactBalrogAttackGeneric    Animation: MUBalrog_SKL.MUBalrog_ATKC Frames:27 53 88
  407.  
  408.         AnimationSound = Sound: BalrogJump_Part1            Animation: MUBalrog_SKL.MUBalrog_JMP1 Frames: 0 
  409.         AnimationSound = Sound: BalrogJump_Part2            Animation: MUBalrog_SKL.MUBalrog_JMP1 Frames: 41
  410.         AnimationSound = Sound: BalrogWingFlaps            Animation: MUBalrog_SKL.MUBalrog_FLYA Frames: 9 
  411.         AnimationSound = Sound: BalrogLand                Animation: MUBalrog_SKL.MUBalrog_LND1 Frames: 0
  412.         AnimationSound = Sound: BalrogWingFlaps            Animation: MUBalrog_SKL.MUBalrog_JMP2 Frames: 0
  413.         AnimationSound = Sound: BalrogLandSwordHit        Animation: MUBalrog_SKL.MUBalrog_LND2 Frames: 6
  414.         AnimationSound = Sound: BalrogIdleB_Part3            Animation: MUBalrog_SKL.MUBalrog_LND2 Frames: 27
  415.  
  416.         AnimationSound = Sound: BalrogBreathFireExhale        Animation: MUBalrog_SKL.MUBalrog_FIRA Frames: 31 
  417.         AnimationSound = Sound: BalrogBreathFireInhale        Animation: MUBalrog_SKL.MUBalrog_FIRA Frames: 0
  418.  
  419.         AnimationSound = Sound: BalrogRoar                Animation: MUBalrog_SKL.MUBalrog_RORB Frames: 25
  420.         AnimationSound = Sound: BalrogVanquishedRoar        Animation: MUBalrog_SKL.MUBalrog_RORC Frames: 21
  421.         AnimationSound = Sound: BalrogVanquished            Animation: MUBalrog_SKL.MUBalrog_RORC Frames: 50
  422.  
  423.         AnimationSound = Sound: BalrogInjuredB_Part1        Animation: MUBalrog_SKL.MUBalrog_HITB Frames: 0 
  424.         AnimationSound = Sound: BalrogInjuredB_Part2        Animation: MUBalrog_SKL.MUBalrog_HITB Frames: 70 
  425.  
  426.         AnimationSound = Sound: BalrogChuckle            Animation: MUBalrog_SKL.MUBalrog_IDLA Frames: 1
  427.         AnimationSound = Sound: BalrogContentVox            Animation: MUBalrog_SKL.MUBalrog_IDLA Frames: 0
  428.         AnimationSound = Sound: BalrogIdleB_Part1            Animation: MUBalrog_SKL.MUBalrog_IDLB Frames: 0 
  429.         AnimationSound = Sound: BalrogIdleB_Part2            Animation: MUBalrog_SKL.MUBalrog_IDLB Frames: 37 
  430.         AnimationSound = Sound: BalrogIdleB_Part3            Animation: MUBalrog_SKL.MUBalrog_IDLB Frames: 95 
  431.         AnimationSound = Sound: BalrogIdleC_Part2            Animation: MUBalrog_SKL.MUBalrog_IDLC Frames: 29 
  432.         AnimationSound = Sound: BalrogIdleC_Part3            Animation: MUBalrog_SKL.MUBalrog_IDLC Frames: 60 
  433.         AnimationSound = Sound: BalrogFootstep            Animation: MUBalrog_SKL.MUBalrog_IDLC Frames: 61
  434.  
  435.         AnimationSound = Sound: BalrogDieVox            Animation: MUBalrog_SKL.MUBalrog_DIEA Frames: 13
  436.         AnimationSound = Sound: BalrogBodyfall1            Animation: MUBalrog_SKL.MUBalrog_DIEA Frames: 56
  437.         AnimationSound = Sound: BalrogBodyfall2            Animation: MUBalrog_SKL.MUBalrog_DIEA Frames: 57
  438.         AnimationSound = Sound: OliphantFall            Animation: MUBalrog_SKL.MUBalrog_DIEA Frames: 21
  439.         AnimationSound = Sound: BalrogLandSwordHit        Animation: MUBalrog_SKL.MUBalrog_DIEA Frames: 54
  440.  
  441.         AnimationSound = Sound: BalrogIgnite            Animation: MUBalrog_SKL.MUBalrog_IGNTA Frames: 51
  442.     End
  443.  
  444.  
  445.   ; *** ENGINEERING Parameters ***  
  446.  
  447.     RadarPriority = UNIT
  448.   KindOf          = HERO PRELOAD SELECTABLE CAN_CAST_REFLECTIONS MONSTER SCORE CAN_ATTACK NO_FREEWILL_ENTER PATH_THROUGH_INFANTRY SCARY BIG_MONSTER CAN_ATTACK_WALLS SUMMONED
  449.   ThreatBreakdown MordorBalrog_DetailedThreat
  450.     AIKindOf = SIEGEWEAPON
  451.   End
  452.     
  453.   Body            = ActiveBody ModuleTag_02
  454.     MaxHealth         = BALROG_HEALTH                    ;BALANCE Balrog Health
  455.   End
  456.  
  457.   Behavior = StancesBehavior ModuleTag_StancesBehavior
  458.     StanceTemplate = FighterHorde
  459.   End
  460.  
  461.   Behavior = AIUpdateInterface ModuleTag_03
  462.     AutoAcquireEnemiesWhenIdle    = Yes ATTACK_BUILDINGS
  463.     MoodAttackCheckRate            = 500
  464.     AILuaEventsList                = BalrogFunctions
  465.   End
  466.  
  467.   LocomotorSet
  468.     Locomotor     = BalrogLocomotor
  469.     Condition     = SET_NORMAL
  470.     Speed         = 50
  471.   End
  472.  
  473.     Behavior = BezierProjectileBehavior ModuleTag_Projectile ; Module starts asleep, and wakes up when thrown.
  474.         ; To tweak a Bezier path
  475.         FirstHeight = 104  ; Height of Bezier control points above highest intervening terrain
  476.         SecondHeight = 52
  477.         FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
  478.         SecondPercentIndent = 70%
  479.         TumbleRandomly = Yes
  480.  
  481.         CrushStyle = Yes ; I don't detonate, I just hit
  482.  
  483.         BounceCount = 0   ; When I hit the ground, I'll arc again
  484.  
  485.         FinalStuckTime = 1766 ; Can't move for this long afterwards
  486.  
  487.         GroundHitFX       = FX_BalrogJumpHitGround
  488.         GroundHitWeapon   = RohanGimliLeapWarhead
  489.         
  490.         PreLandingStateTime = 300; Look ahead to the end of the arc, and get the ABOUT_TO_HIT flag this far in advance
  491.     End
  492.  
  493.     Behavior = PhysicsBehavior ModuleTag_04
  494.         GravityMult = 1.0
  495.     End
  496.   
  497.     Behavior = FireWeaponUpdate FireWeaponUpdateModuleTag
  498.         FireWeaponNugget
  499.             WeaponName = MordorBalrogHeroEffect
  500.             FireDelay = 0
  501.             OneShot = No
  502.         End
  503.         HeroModeTrigger = Yes ; this only happens when hero mode is active
  504.     End
  505.   
  506.       Behavior = SlowDeathBehavior ModuleTag_05
  507.         DeathTypes = ALL -FADED
  508.         DestructionDelay = 2500
  509.         FX = FINAL FX_BalrogFinalDeath
  510.         DeathFlags = DEATH_1
  511.     End
  512.   
  513.       Behavior = SlowDeathBehavior ModuleTag_FadeDeath
  514.         DeathTypes = NONE +FADED
  515.         FX = INITIAL FX_BalrogUnsummonInitial
  516.         DestructionDelay = 3800
  517.         FX = FINAL FX_BalrogUnsummonFinal
  518.         DeathFlags = DEATH_2
  519.     End
  520.   
  521.       Behavior = SpecialPowerModule ModuleTag_IgniteStarter                      
  522.         SpecialPowerTemplate      = SpecialAbilityHeroMode
  523.         UpdateModuleStartsAttack  = Yes
  524.         ;InitiateSound           = 
  525.     End
  526.     Behavior = HeroModeSpecialAbilityUpdate ModuleTag_IgniteUpdate   
  527.         SpecialPowerTemplate    = SpecialAbilityHeroMode
  528.         UnpackingVariation        = 1
  529.  
  530.         UnpackTime              = 1800 
  531.         PackTime                = 1600
  532.  
  533.         AwardXPForTriggering    = 0
  534.         
  535.         HeroAttributeModifier = BalrogIgniteState
  536.         HeroEffectDuration = 30000
  537.     End
  538.  
  539.     Behavior = SpecialPowerModule ModuleTag_ScreamStarter                      
  540.         SpecialPowerTemplate      = SpecialAbilityBalrogScream
  541.         UpdateModuleStartsAttack  = Yes
  542.         ;InitiateSound           = 
  543.     End
  544.     Behavior = ModelConditionSpecialAbilityUpdate ModuleTag_ScreamUpdate   ; So the difference in SpecialPower is that it takes timing from this UpdateG, instead of simply firing.
  545.         SpecialPowerTemplate    = SpecialAbilityBalrogScream
  546.  
  547.         UnpackTime              = 1500 ; Drawing the horn
  548.         PreparationTime         = 1   ; nothing
  549.         PackTime                = 1800 ; Putting horn away
  550.  
  551.         AwardXPForTriggering    = 0
  552.         
  553.         WhichSpecialPower = 1
  554.     End
  555.  
  556.     Behavior = SpecialPowerModule ModuleTag_BreathStarter                      
  557.         SpecialPowerTemplate        = SpecialAbilityBalrogBreath
  558.         UpdateModuleStartsAttack    = Yes
  559.         InitiateSound            = BalrogSpecialPowerRoar    ;this plays on right-click target, not when Balrog leaps
  560.     End
  561.  
  562.     Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_BreathUpdate   
  563.         SpecialPowerTemplate    = SpecialAbilityBalrogBreath
  564.  
  565.         UnpackTime              = 1300 ; Drawing the horn
  566.         PackTime                = 3700 ; Putting horn away
  567.  
  568.         AwardXPForTriggering    = 0
  569.         
  570.         StartAbilityRange = 40.0
  571.         
  572.         SpecialWeapon = MordorBalrogBreath
  573.         WhichSpecialWeapon = 1
  574.     End
  575.  
  576.     Behavior = SpecialPowerModule ModuleTag_LeapStarter                      
  577.         SpecialPowerTemplate        = SpecialAbilityBalrogWings
  578.         UpdateModuleStartsAttack    = Yes
  579.         InitiateSound            = BalrogSpecialPowerRoar    ;this plays on right-click target, not when Balrog leaps
  580.     End
  581.  
  582.     Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_LeapUpdate   
  583.         SpecialPowerTemplate    = SpecialAbilityBalrogWings
  584.  
  585.         UnpackTime              = 1733 ; Drawing the horn
  586.         PackTime                = 1160 ; Putting horn away
  587.  
  588.         AwardXPForTriggering    = 0
  589.         
  590.         StartAbilityRange    = 800.0
  591.         ApproachRequiresLOS = No
  592.         SpecialWeapon        = MordorBalrogLeap
  593.         BusyForDuration        = 3000 ; don't accept any AI for this long... ai commands will be queued
  594.         WhichSpecialWeapon    = 2
  595.     End
  596.  
  597.     Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
  598.         MinLifetime        = BALROG_LIFETIME
  599.         MaxLifetime        = BALROG_LIFETIME
  600.         DeathType        = FADED
  601.     End
  602.     
  603.     Behavior = CreateObjectDie ModuleTag_CrushUnitsOnDeath
  604.         CreationList = OCL_BalrogDie
  605.      End
  606.  
  607.     Geometry            = CYLINDER
  608.     GeometryMajorRadius = 30.0
  609.     GeometryHeight        = 70.0
  610.     GeometryIsSmall        = No
  611.     Shadow                = SHADOW_VOLUME ;SHADOW_DECAL    ; SHADOW_VOLUME has trouble with his wings.  Possibly because of the transparent bits
  612.     ShadowSizeX            = 100
  613.     ShadowSizeY            = 100
  614.     ShadowTexture        = ShadowI
  615. End
  616.  
  617. ;------------------------------------------------------------------------------
  618. ; aka Smeagal
  619. Object NeutralGollum
  620.     ; *** ART Parameters ***
  621.  
  622.     ; This is required for garrisoned objects - please put in all objects.
  623.     ButtonImage = HIGollum
  624.     
  625.         SelectPortrait = HPGollum
  626.         
  627.     Draw = W3DScriptedModelDraw ModuleTag_01
  628.         OkToChangeModelColor = Yes
  629.  
  630. ;;====================== MODELS ================================================================
  631.         DefaultModelConditionState
  632.             Model = CUGollum_SKN
  633.             Skeleton = CUGollum_SKL
  634.         End
  635.  
  636. ;;================== ANIMATIONS =================================================================
  637.  
  638. ;;------------------ MOVING & DYING -------------------------------------------------------------
  639.  
  640. ;;======= DYING
  641.  
  642.         AnimationState        = STUNNED_STANDING_UP
  643.             Animation           = Stun
  644.                 AnimationName     = CUGollum_GTPA
  645.                 AnimationMode      = ONCE
  646.             End
  647.         End
  648.         
  649.         AnimationState = DYING
  650.             Animation = DyingA
  651.                 AnimationName = CUGollum_DIEA
  652.                 AnimationMode = ONCE
  653.             End
  654.  
  655.             Animation = DyingB
  656.                 AnimationName = CUGollum_DIEB
  657.                 AnimationMode = ONCE
  658.             End
  659.             
  660.         End
  661.  
  662. ;;======= MOVING
  663.         AnimationState = MOVING
  664.             Animation = Moving
  665.                 AnimationName    = CUGollum_RUNA
  666.                 AnimationMode    = LOOP
  667.                 Distance        = 48
  668.             End
  669.             Flags = RANDOMSTART
  670.             ;ParticleSysBone = None InfantryDustTrails
  671.         End
  672.  
  673. ;;------------------ ATTACKING --------------------------------------------------------------------
  674.         AnimationState = FIRING_OR_PREATTACK_A
  675. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  676. ;;;;;;;        Steps off his shadow :( ;;;;;;;;;;
  677. ;            Animation = ATKA
  678. ;                AnimationName    = CUGollum_ATKA
  679. ;                AnimationMode    = ONCE
  680. ;                UseWeaponTiming = Yes
  681. ;            End
  682. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  683.             Animation = ATKB
  684.                 AnimationName    = CUGollum_ATKB
  685.                 AnimationMode    = ONCE
  686.                 UseWeaponTiming = Yes
  687.             End
  688. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  689. ;;;;;;        Too Long :(  ;;;;;;;;;;;;;
  690. ;            Animation = ATKA
  691. ;                AnimationName    = CUGollum_ATKC
  692. ;                AnimationMode    = ONCE
  693. ;                UseWeaponTiming = Yes
  694. ;            End            
  695. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  696.         End
  697.  
  698. ;;-------------------- HIT REACTIONS -----------------------------------------------------------
  699.         AnimationState                        = HIT_REACTION
  700.             Animation                        = HITA
  701.                 AnimationName                = CUGollum_HITA
  702.                 AnimationMode                = ONCE
  703.             End
  704.         End        
  705. ;;------------ EMOTIONS ------------------------------------------------------------------        
  706.  
  707. ;;====== AFRAID    
  708.         AnimationState                        = EMOTION_AFRAID
  709.             StateName                        = STATE_Afraid
  710.             Animation                        = FERA
  711.                 AnimationName                = CUGollum_IDLD            ; CUGollum_FERA or CUGollum_FERB don't exist
  712.                 AnimationMode                = LOOP
  713.             End
  714.             ;Animation                        = FERB
  715.             ;    AnimationName                = CUGollum_FERB
  716.             ;    AnimationMode                = LOOP
  717.             ;End
  718.         End
  719.  
  720.         AnimationState                = EMOTION_TAUNTING
  721.             Animation                = TNTA
  722.                 AnimationName        = CUGollum_TNTA
  723.                 AnimationMode        = ONCE
  724.             End
  725.             Flags                    = RESTART_ANIM_WHEN_COMPLETE
  726.         End
  727.  
  728. ;        AnimationState                = EMOTION_POINTING
  729. ;            Animation                = Pointing1
  730. ;                AnimationName        = CUGollum_PNTA
  731. ;                AnimationMode        = LOOP
  732. ;            End
  733. ;        End
  734.  
  735. ;;====== CELEBRATING    
  736.         AnimationState                = EMOTION_CELEBRATING
  737.             Animation                = CHRA
  738.                 AnimationName        = CUGollum_CHRA
  739.                 AnimationMode        = ONCE
  740.             End
  741.         End
  742. ;;------------------- SELECTED STATES ------------------------------------------------------------
  743.  
  744. ;        AnimationState                = SELECTED
  745. ;            StateName                = STATE_Selected
  746. ;            Flags                    = RESTART_ANIM_WHEN_COMPLETE RANDOMSTART
  747. ;            Animation                = Selected(ATNA)
  748. ;                AnimationName            = CUGollum_IDLA
  749. ;                AnimationMode            = LOOP
  750. ;            End
  751. ;            BeginScript
  752. ;                Prev = CurDrawablePrevAnimationState()
  753. ;                if Prev == "STATE_Idle"    then CurDrawableSetTransitionAnimState("TRANS_Idle_to_Selected") return end
  754. ;            EndScript
  755. ;        End
  756.  
  757. ;;--------------- IDLE STATES -----------------------------------------------------------------    
  758.  
  759.         IdleAnimationState
  760.             StateName                = STATE_Idle
  761.             
  762.             Animation = IDLA
  763.                 AnimationName        = CUGollum_IDLA
  764.                 AnimationMode        = ONCE
  765.                 AnimationBlendTime  =   10
  766.                 AnimationPriority    =    20
  767.             End
  768.             Animation = IDLB
  769.                 AnimationName        = CUGollum_IDLB
  770.                 AnimationMode        = ONCE
  771.                 AnimationBlendTime  =   10
  772.                 AnimationPriority    =    5
  773.             End
  774.             Animation = IDLC
  775.                 AnimationName        = CUGollum_IDLC
  776.                 AnimationMode        = ONCE
  777.                 AnimationBlendTime  =   10
  778.                 AnimationPriority    =    1
  779.             End
  780.             Animation = IDLD
  781.                 AnimationName        = CUGollum_IDLD
  782.                 AnimationMode        = ONCE
  783.                 AnimationBlendTime  =   10
  784.                 AnimationPriority    =    1
  785.             End
  786.             Flags               = RESTART_ANIM_WHEN_COMPLETE
  787.         End
  788.  
  789.     ;---Transitions--------------------------------------------
  790.     
  791. ;        TransitionState = TRANS_Idle_to_Selected
  792. ;            Animation            = Salute
  793. ;                AnimationName    = CUGollum_ATNA
  794. ;                AnimationMode    = ONCE
  795. ;                AnimationSpeedFactorRange = 0.8 1.2
  796. ;            End
  797. ;        End
  798.  
  799.     End
  800.  
  801. ;;================== ANIMATIONS END =================================================================
  802. Scale = 1.5
  803.  
  804.     ; ***DESIGN parameters ***
  805.     Side = Neutral
  806.     EditorSorting = UNIT
  807.     ThreatLevel = 1.0
  808.     EmotionRange = 240
  809.     CommandPoints = 0
  810.     
  811.     ;//DisplayMeleeDamage = GOLLUM_DAMAGE
  812.     
  813.     CommandSet = GenericCommandSet
  814.  
  815.     TransportSlotCount = TRANSPORTSLOTCOUNT_HERO
  816.     WeaponSet
  817.         Conditions = None 
  818.         Weapon = PRIMARY    GollumAttack
  819.         AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  820.     End
  821.     ArmorSet
  822.         Conditions      = None
  823.         Armor           = GollumArmor
  824.         DamageFX        = NormalDamageFX
  825.     End
  826.     VisionRange = 400.0
  827.     ShroudClearingRange = SHROUD_CLEAR_RANGED_HERO
  828.     DisplayName = OBJECT:NeutralGollum
  829.     CrushableLevel = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  830.  
  831.  
  832.     ; *** AUDIO Parameters ***;
  833.  
  834.     VoiceAttack                = GollumVoiceAttack
  835.     VoiceAttackCharge            = GollumVoiceAttackCharge
  836.     VoiceAttackMachine        = GollumVoiceAttackBuilding
  837.     VoiceAttackStructure        = GollumVoiceAttackBuilding
  838.     VoiceFear                = GollumVoiceHelpMe
  839.     VoiceGuard                = GollumVoiceMove
  840.     VoiceMove                = GollumVoiceMove
  841.     VoiceMoveWhileAttacking        = GollumVoiceMove
  842.     VoicePriority            = 1
  843.     VoiceSelect                = GollumVoiceSelectMS
  844.     VoiceSelectBattle            = GollumVoiceSelect
  845.  
  846.     SoundMoveLoop            = GollumVoxMoveLoop
  847.     SoundImpact                = BodyFallGenericNoArmor
  848.  
  849.     #include "..\includes\StandardUnitEvaEvents.inc"
  850.     ;EvaEventDieOwner            = GollumDie                ;Eva event to trigger on unit's death. NOTICE THAT this is only for permanent deaths
  851.  
  852.     ; Override object sighted from StandardUnitEvaEvents.inc
  853.     EvaEnemyObjectSightedEvent    = GollumSeen            ; This is so that we get the Gollum Seen event if he is unstealthed when we first see him
  854.     
  855.     ClientUpdate = EvaAnnounceClientCreate ModuleTag_AnnounceCreate
  856.         ; And this covers the case where Gollum spawns in while in sight of the player's troops
  857.         AnnouncementEventEnemy = GollumSeen
  858.         AnnouncementEventAlly = GollumSeen
  859.         AnnouncementEventOwner = GollumSeen
  860.         
  861.         OnlyIfVisible = Yes                        ; Don't announce if hidden in the shroud
  862.         ; CountAsFirstSightedAnnoucement = Yes    ; Doesn't matter since this unit doesn't use EvaOnFirstSightingEventEnemy/NonEnemy
  863.         UseObjectsPosition = Yes                ; Play from Gollum's position
  864.         CreateFakeRadarEvent = Yes                ; Allow player to jump to Gollum after hearing annoucement
  865.     End
  866.  
  867.     Behavior = LargeGroupAudioUpdate ModuleTag_LGAU            ;Tie into LargeGroupAudio system
  868.         Key = Hero
  869.     End
  870.  
  871.     ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
  872.         MaxUpdateRangeCap = 800
  873.         AnimationSound = Sound:FootstepDirtA        Animation:CUGollum_SKL.CUGollum_RUNA    Frames:1 3 18 21 23 38
  874.         AnimationSound = Sound:FootstepDirtA        Animation:CUGollum_SKL.CUGollum_CHR        Frames:32 59 76 94 110
  875.         AnimationSound = Sound:FootstepDirtA        Animation:CUGollum_SKL.CUGollum_ATKB    Frames:39 45 60 62
  876.  
  877.         AnimationSound = Sound:BodyFallGenericNoArmor    Animation:CUGollum_SKL.CUGollum_DIEA    Frames:33
  878.         AnimationSound = Sound:BodyFallGenericNoArmor    Animation:CUGollum_SKL.CUGollum_DIEB    Frames:59
  879.  
  880.         AnimationSound = Sound:GollumVoxAttack        Animation:CUGollum_SKL.CUGollum_ATKB    Frames:23
  881.         AnimationSound = Sound:GollumVoxHurt        Animation:CUGollum_SKL.CUGollum_HITA    Frames:0
  882.     End
  883.  
  884.  
  885.     ; *** ENGINEERING Parameters ***
  886.  
  887.     RadarPriority = UNIT
  888.     KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE HERO NEUTRALGOLLUM
  889.  
  890. ;    Body = RespawnBody ModuleTag_RespawnBody
  891. ;        MaxHealth         = 200                  ;BALANCE Gollum Health
  892. ;        ;MaxHealthDamaged  = 400
  893. ;        PermanentlyKilledByFilter    = NONE        ;Who kills me permanently?
  894. ;        ;;RecoveryTime      = 5000
  895. ;    End
  896.     
  897.     Body = ActiveBody ModuleTag_02
  898.         MaxHealth         = 200
  899.     End
  900.  
  901.     BuildCost = 50
  902.  
  903.     Behavior = AutoHealBehavior ModuleTag_HeroHealing
  904.         StartsActive = Yes
  905.         HealingAmount = HERO_HEAL_AMOUNT
  906.         HealingDelay = 1000
  907.         StartHealingDelay = HERO_HEAL_DELAY
  908.         HealOnlyIfNotInCombat = Yes
  909.     End
  910.  
  911. ;    Behavior = RespawnUpdate ModuleTag_RespawnUpdate
  912. ;        DeathAnim                = DYING                    ;Model condition to play when killed-to-respawn
  913. ;        ;DeathFX                = FX_GandalfLightningSwordHit        ;FXList to play when killed-to-respawn
  914. ;        DeathAnimationTime        = 4000                    ;How long DeathAnim will take.
  915. ;        InitialSpawnFX            = FX_GollumInitialSpawn
  916. ;        RespawnAnim                = EMOTION_CELEBRATING            ;Animation to play when respawning.
  917. ;        RespawnFX                = FX_GollumRespawn            ;FX_Resurrection    ;FXList to play when respawning.
  918. ;        RespawnAnimationTime        = 2000                    ;Time it takes for respawn to play.
  919. ;        AutoRespawnAtObjectFilter    = NONE +CASTLE_KEEP            ;Respawn at this location -- and at it's exit production point if possible.
  920. ;        ButtonImage                = HIGollum
  921. ;        
  922. ;        ;RespawnEntries determine the ruleset for how a character can be revived. Some units may automatically respawn, others
  923. ;        ;may require a specific revive action performed on him. You can specify different values for each level... or use Level:Any
  924. ;        RespawnRules =                AutoSpawn:No    Cost:50        Time:10000        Health:100%        ;DEFAULT VALUES
  925. ;        RespawnEntry =    Level:2                        Cost:700        Time:14000                        ;For other levels, only override what is different.
  926. ;        RespawnEntry =    Level:3                        Cost:800        Time:16000
  927. ;        RespawnEntry =    Level:4                        Cost:900        Time:18000
  928. ;        RespawnEntry =    Level:5                        Cost:1000        Time:20000
  929. ;        RespawnEntry =    Level:6                        Cost:1100        Time:22000
  930. ;        RespawnEntry =    Level:7                        Cost:1200        Time:24000
  931. ;        RespawnEntry =    Level:8                        Cost:1300        Time:26000
  932. ;        RespawnEntry =    Level:9                        Cost:1400        Time:28000
  933. ;        RespawnEntry =    Level:10                    Cost:1500        Time:30000
  934. ;    End
  935.  
  936.     Behavior = AIUpdateInterface ModuleTag_03
  937.         AutoAcquireEnemiesWhenIdle = Yes
  938.         MoodAttackCheckRate        = 500
  939.     End
  940.  
  941.     LocomotorSet
  942.         Locomotor     = HumanLocomotor
  943.         Condition     = SET_NORMAL
  944.         Speed         = 45 ;32
  945.     End
  946.  
  947.     LocomotorSet
  948.         Locomotor     = HumanWanderLocomotor
  949.         Condition     = SET_WANDER
  950.         Speed         = 32
  951.     End
  952.  
  953.     Behavior = PhysicsBehavior ModuleTag_04
  954.         GravityMult = 1.0
  955.     End
  956.  
  957.  
  958.     Behavior = InvisibilityUpdate ModuleTag_StealthForEscape
  959.         InvisibilityNugget
  960.             InvisibilityType            = CAMOUFLAGE
  961.             ForbiddenConditions            = FIRING_ANY
  962.             BecomeStealthedFX           = FX_ElvenCloakOn
  963.             ExitStealthFX               = FX_ElvenCloakOff
  964.             DetectionRange                = 120
  965.             HintDetectableConditions    = IS_FIRING_WEAPON
  966.         End
  967.         StartsActive                    = Yes
  968.         UpdatePeriod                    = 2000
  969.     End
  970.  
  971.     EvaEventDetectedEnemy       = GollumSeen
  972.     EvaEventDetectedAlly        = GollumSeen
  973.     EvaEventDetectedOwner       = GollumSeen
  974.  
  975.      Behavior = HitReactionBehavior ModuleTag_HitAnimModule
  976.         HitReactionLifeTimer1 = 2500 ; level 1 (light  damage)  
  977.  
  978.         HitReactionThreshold1 =  0.0   ; level 1 (light  damage) threshold trigger
  979.     End
  980.  
  981.     Behavior = SlowDeathBehavior ModuleTag_05
  982.         DeathTypes = ALL 
  983.         SinkDelay = 3000
  984.         SinkRate = 0.40     ; in Dist/Sec
  985.         DestructionDelay = 8000
  986.         Sound = INITIAL GollumVoiceDie
  987.     End
  988.  
  989.     Behavior = SquishCollide ModuleTag_06
  990.         ;nothing
  991.     End
  992.   
  993.     Behavior = HordeMemberCollide ModuleTag_HMC
  994.         ;nothing
  995.     End
  996.  
  997.     Geometry = CYLINDER
  998.     GeometryMajorRadius = 8.0
  999.     GeometryMinorRadius = 8.0
  1000.     GeometryHeight = 19.2
  1001.     GeometryIsSmall = Yes
  1002.  
  1003.     Shadow = SHADOW_DECAL
  1004.     ShadowSizeX = 7;
  1005.     ShadowSizeY = 7;
  1006.     ShadowTexture = ShadowI;
  1007. End
  1008.  
  1009. ;------------------------------------------------------------------------------
  1010. ChildObject NeutralGollum_RingHero NeutralGollum
  1011.  
  1012.     Behavior = CreateObjectDie ModuleTag_DropTheRing
  1013.         CreationList = OCL_TheOneRing
  1014.     End
  1015.     
  1016.     ;Behavior = CreateObjectDie ModuleTag_CreateTheRingStealer
  1017.     ;    CreationList = OCL_TheRingStealer
  1018.     ;End
  1019.     
  1020.     Behavior = AnimalAIUpdate ModuleTagWanderAround
  1021.         FleeRange            = 300    ; how close enemies have to be before we panic
  1022.         FleeDistance        = 800    ; how far the animal will run once spooked
  1023.         WanderPercentage    = 80        ; percentage of the time we should move
  1024.         MaxWanderDistance    = 50    ; maximum distance to move at once
  1025.         MaxWanderRadius        = 999999    ; how far to wander on our own
  1026.         UpdateTimer            = 1        ; how often do we want to check for enemies
  1027.     End
  1028.  
  1029. End
  1030.  
  1031. ;------------------------------------------------------------------------------
  1032. ChildObject NeutralGollum_RingStealer NeutralGollum
  1033.  
  1034.     Behavior = AnimalAIUpdate ModuleTagWanderAround
  1035.         FleeRange            = 200    ; how close enemies have to be before we panic
  1036.         FleeDistance        = 800    ; how far the animal will run once spooked
  1037.         WanderPercentage    = 5        ; percentage of the time we should move
  1038.         MaxWanderDistance    = 100    ; maximum distance to move at once
  1039.         MaxWanderRadius        = 100    ; how far to wander on our own
  1040.         UpdateTimer            = 1        ; how often do we want to check for enemies
  1041.     End
  1042.  
  1043.     Behavior = AIUpdateInterface ModuleTag_03
  1044.         AutoAcquireEnemiesWhenIdle    = Yes
  1045.         MoodAttackCheckRate            = 500
  1046.         AILuaEventsList                = NeutralGollum_RingStealerFunctions
  1047.     End
  1048.  
  1049.     Behavior = CreateObjectDie ModuleTag_RespawnRingStealer
  1050.         DeathTypes            = ALL -SLAUGHTERED
  1051.         CreationList        = OCL_TheRingStealer
  1052.     End
  1053.     
  1054.     Behavior = CreateObjectDie ModuleTag_RespawnRingCarrier
  1055.         DeathTypes            = NONE +SLAUGHTERED
  1056.         CreationList        = OCL_TheRingCarrier
  1057.     End
  1058.  
  1059. End
  1060.  
  1061. ;------------------------------------------------------------------------------
  1062. ; aka Shelob the spider
  1063. Object MordorShelob
  1064.     ; *** ART Parameters ***
  1065.  
  1066.     ; SelectPortrait for Heros is portrait behind skill buttons. HP = HeroPortrait.
  1067.     SelectPortrait = HPShelobNew
  1068.     
  1069.     ; This is required for garrisoned objects - please put in all objects.
  1070.     ButtonImage = HIShelob
  1071.     
  1072.     Draw = W3DScriptedModelDraw ModuleTag_01
  1073.  
  1074.       OkToChangeModelColor = Yes
  1075.       
  1076.         DefaultModelConditionState
  1077.             Model                    = MUShelob_SKN
  1078.             Skeleton                = MUShelob_SKL
  1079.         End
  1080.  
  1081.         IdleAnimationState
  1082.             Animation                = IDLA
  1083.                 AnimationName        = MUShelob_IDLA
  1084.                 AnimationMode        = ONCE
  1085.             End
  1086.         End
  1087.  
  1088.         ; -------- STUNNED ANIMS ---------        
  1089.         AnimationState        = STUNNED_FLAILING
  1090.             Animation           = StunFlail
  1091.                 AnimationName     = MUShelob_FLYA
  1092.                 AnimationMode      = LOOP
  1093.             End
  1094.             Flags               = RANDOMSTART
  1095.         End
  1096.         
  1097.         AnimationState        = STUNNED
  1098.             Animation           = Stun
  1099.                 AnimationName     = MUShelob_LNDA
  1100.                 AnimationMode      = ONCE
  1101.             End
  1102.         End
  1103.         
  1104.         AnimationState        = STUNNED_STANDING_UP
  1105.             Animation           = Stun
  1106.                 AnimationName     = MUShelob_GTPA
  1107.                 AnimationMode      = ONCE
  1108.             End
  1109.         End
  1110.         
  1111.         ; -------- DYING ANIMS ---------        
  1112.         AnimationState                = DYING
  1113.             Animation                = DIEA
  1114.                 AnimationName        = MUShelob_DIEA
  1115.                 AnimationMode        = ONCE
  1116.             End
  1117.         End
  1118.     
  1119.         ; ------- MOVING ANIMS ---------    
  1120.         AnimationState                = TURN_LEFT
  1121.             StateName                = Turn
  1122.             Animation                = Walk
  1123.                 AnimationName        = MUShelob_TRNL 
  1124.                 AnimationMode        = LOOP
  1125.             End
  1126.         End
  1127.         
  1128.         AnimationState                = TURN_RIGHT
  1129.             StateName                = Turn
  1130.             Animation                = Walk
  1131.                 AnimationName        = MUShelob_TRNR 
  1132.                 AnimationMode        = LOOP
  1133.             End
  1134.         End
  1135.  
  1136.         AnimationState                = MOVING BACKING_UP
  1137.             Animation                = BAKA
  1138.                 AnimationName        = MUShelob_BAKA
  1139.                 AnimationMode        = LOOP
  1140.             End
  1141.             Flags                    = RANDOMSTART
  1142.         End
  1143.  
  1144.         AnimationState                =    MOVING ATTACKING
  1145.             Animation                =    RUNA
  1146.                 AnimationName        =    MUShelob_RUNA
  1147.                 AnimationMode        =    LOOP
  1148.                 Distance            =    21
  1149.             End
  1150.         End
  1151.         AnimationState                =    MOVING 
  1152.             Animation                =    WLKA
  1153.                 AnimationName        =    MUShelob_WLKA
  1154.                 AnimationMode        =    LOOP
  1155.                 Distance            =    21
  1156.             End
  1157.         End
  1158.  
  1159.         ; ------- ATTACKING ANIMS ---------    
  1160.         AnimationState                = FIRING_OR_PREATTACK_A
  1161.             Animation                = ATKA
  1162.                 AnimationName        = MUShelob_ATKA
  1163.                 AnimationMode        = ONCE
  1164.             End
  1165.         End
  1166.                 
  1167.         AnimationState                =    SELECTED
  1168.             Animation           = IDLA
  1169.                 AnimationName     = MUShelob_IDLA
  1170.                 AnimationMode     = ONCE
  1171.                 AnimationPriority = 1
  1172.             End
  1173.             Animation           = IDLA
  1174.                 AnimationName     = MUShelob_IDLA
  1175.                 AnimationMode     = ONCE
  1176.                 AnimationPriority = 1
  1177.             End
  1178.             Animation                =    AtAttention
  1179.                 AnimationName        =    MUShelob_ATNA
  1180.                 AnimationMode        =    ONCE
  1181.             End
  1182.             Flags                    = RESTART_ANIM_WHEN_COMPLETE
  1183.         End
  1184.         
  1185.         ; ------- HIT REACTION ANIMS ---------    
  1186.         AnimationState = HIT_REACTION HIT_LEVEL_1
  1187.             Animation = Hit_Level_1_a
  1188.                 AnimationName = MUShelob_HITA
  1189.                 AnimationMode = ONCE
  1190.             End
  1191.         End
  1192.     End
  1193.     
  1194.     ; ***DESIGN parameters ***
  1195.     Side = Neutral
  1196.     EditorSorting = UNIT
  1197.     ThreatLevel = 1.0
  1198.     TransportSlotCount = TRANSPORTSLOTCOUNT_MONSTER
  1199.     WeaponSet
  1200.         Conditions = None 
  1201.         Weapon = PRIMARY    ShelobMandibles
  1202.         AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  1203.     End
  1204.     ArmorSet
  1205.         Conditions      = None
  1206.         Armor           = ShelobArmor
  1207.         DamageFX        = NormalDamageFX
  1208.     End
  1209.     VisionRange = 120.0
  1210.     DisplayName = OBJECT:NeutralShelob
  1211.     CrushableLevel = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  1212.     CommandSet = ShelobCommandSet
  1213.  
  1214.  
  1215.     ; *** AUDIO Parameters ***;
  1216.  
  1217.     ;VoiceAmbushed            = ShelobVoiceDie      OBSOLETE VOICE
  1218.     VoiceAttack            = ShelobVoiceAttack
  1219.     VoiceAttackCharge        = ShelobVoiceAttack
  1220.     VoiceAttackMachine        = ShelobVoiceAttack
  1221.     VoiceAttackStructure        = ShelobVoiceAttack
  1222.     VoiceCreated            = ShelobVoiceSelect
  1223.     VoiceFullyCreated         = ShelobVoiceSelect
  1224.     VoiceMove            = ShelobVoiceMove
  1225.     VoiceMoveToCamp            = ShelobVoiceMove
  1226.     VoiceMoveWhileAttacking        = ShelobVoiceMove
  1227.     VoicePriority            = 50
  1228.     VoiceRetreatToCastle        = ShelobVoiceDie
  1229.     VoiceSelect            = ShelobVoiceSelect
  1230.     VoiceSelectBattle         = ShelobVoiceSelect
  1231.     VoiceGuard            = ShelobVoiceMove
  1232.     
  1233.  
  1234.     SoundAmbient            = ShelobVoiceSinglesLoop
  1235.     SoundImpact            = ImpactHorse
  1236.     ;SoundMoveLoop            = ShelobMove
  1237.  
  1238.     ;UnitSpecificSounds
  1239.     ;End
  1240.  
  1241.     #include "..\includes\StandardUnitEvaEvents.inc"
  1242.  
  1243.     ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
  1244.         MaxUpdateRangeCap = 800
  1245.         AnimationSound = Sound: ShelobMove        Animation:MUShelob_SKL.MUShelob_TRNL     Frames:1 11
  1246.         AnimationSound = Sound: ShelobMove        Animation:MUShelob_SKL.MUShelob_TRNR     Frames:1 11
  1247.         AnimationSound = Sound: ShelobMove        Animation:MUShelob_SKL.MUShelob_WLKA     Frames:1 17 33 
  1248.         AnimationSound = Sound: ShelobMove        Animation:MUShelob_SKL.MUShelob_RUNA     Frames:1 5 9
  1249.         AnimationSound = Sound: ShelobMove        Animation:MUShelob_SKL.MUShelob_GTPA     Frames:1 16 
  1250.         AnimationSound = Sound: ShelobMove        Animation:MUShelob_SKL.MUShelob_ATKA     Frames:0 39
  1251.         AnimationSound = Sound: ShelobMove        Animation:MUShelob_SKL.MUShelob_ATKB     Frames:0 100
  1252.         AnimationSound = Sound: ShelobFootstep        Animation:MUShelob_SKL.MUShelob_TRNL     Frames:0 5 10 15 
  1253.         AnimationSound = Sound: ShelobFootstep        Animation:MUShelob_SKL.MUShelob_TRNR     Frames:0 5 10 15 
  1254.         AnimationSound = Sound: ShelobFootstep        Animation:MUShelob_SKL.MUShelob_WLKA     Frames:0 8 16 24 32 40 
  1255.         AnimationSound = Sound: ShelobFootstep        Animation:MUShelob_SKL.MUShelob_RUNA     Frames:0 4 8 
  1256.         AnimationSound = Sound: ShelobFootstep        Animation:MUShelob_SKL.MUShelob_GTPA     Frames: 10 20
  1257.         AnimationSound = Sound: ShelobFootstepAttack     Animation:MUShelob_SKL.MUShelob_ATKA     Frames:26
  1258.         AnimationSound = Sound: ShelobFootstepAttack     Animation:MUShelob_SKL.MUShelob_ATKB     Frames:26
  1259.         AnimationSound = Sound: ShelobVoiceHurt     Animation:MUShelob_SKL.MUShelob_HITA    Frames:0
  1260.         AnimationSound = Sound: ShelobAttackScreech    Animation:MUShelob_SKL.MUShelob_ATKA    Frames:20
  1261.         AnimationSound = Sound: ShelobAttackScreech    Animation:MUShelob_SKL.MUShelob_ATKB    Frames:20
  1262.         AnimationSound = Sound: TrollBodyfall        Animation:MUShelob_SKL.MUShelob_LNDA    Frames:2
  1263.         AnimationSound = Sound: TrollBodyfall        Animation:MUShelob_SKL.MUShelob_DIEA    Frames:6
  1264.         ;AnimationSound = Sound: ShelobVoiceDie Animation:MUShelob_SKL.MUShelob_DIEA Frames:12
  1265.         ;AnimationSound = Sound: ShelobFootstep2 Animation:MUShelob_SKL.MUShelob_TRNL Frames:0 5 10 15 Animation:MUShelob_SKL.MUShelob_TRNR Frames:0 5 10 15 Animation:MUShelob_SKL.MUShelob_WLKA Frames:0 4 8 12 16 20 24 28 32 36 40 46 Animation:MUShelob_SKL.MUShelob_RUNA Frames:0 Animation:MUShelob_SKL.MUShelob_GTPA Frames:0 15
  1266.     End
  1267.  
  1268.     ; *** ENGINEERING Parameters ***
  1269.     RadarPriority = UNIT
  1270.     KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS MONSTER SCORE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT PATH_THROUGH_EACH_OTHER HERO CAN_CLIMB_WALLS
  1271.     
  1272.     Behavior = AIUpdateInterface ModuleTag_03
  1273.         AutoAcquireEnemiesWhenIdle = Yes
  1274.         MoodAttackCheckRate        = 500
  1275.         AILuaEventsList                = ShelobFunctions
  1276.         MaxCowerTime                =    7500
  1277.         MinCowerTime                =    5000
  1278.     End
  1279.  
  1280.        Behavior = EmotionTrackerUpdate    Module_EmotionTracker
  1281.         AddEmotion    =    Terror_Base
  1282.         AddEmotion    =    OVERRIDE UncontrollableFear_Base_Evil
  1283.             Duration            =    7000    
  1284.         End
  1285.         AddEmotion    =    Alert_Base
  1286.         IgnoreVeterancy = Yes
  1287.     End
  1288.  
  1289.     LocomotorSet
  1290.         Locomotor     = ShelobWallScalingLocomotor
  1291.         Condition     = SET_NORMAL
  1292.         Speed         = 50
  1293.     End
  1294.     
  1295.     Body = RespawnBody ModuleTag_RespawnBody
  1296.         MaxHealth         = 4500                ;BALANCE Shelob Health
  1297.         PermanentlyKilledByFilter    = NONE        ;Who kills me permanently?
  1298.     End
  1299.     Behavior = RespawnUpdate ModuleTag_RespawnUpdate
  1300.         DeathAnim                    = STUNNED                        ;Model condition to play when killed-to-respawn
  1301. ;        DeathFX                        = FX_GandalfLightningSwordHit    ;FXList to play when killed-to-respawn
  1302.         DeathAnimationTime            = 1133                            ;How long DeathAnim will take.
  1303.  
  1304.         RespawnAnim                    = SELECTED            ;Animation to play when respawning.
  1305.         RespawnFX                    = FX_Resurrection                    ;FXList to play when respawning.
  1306.         RespawnAnimationTime        = 2000                            ;Time it takes for respawn to play.
  1307.         AutoRespawnAtObjectFilter    = NONE +CASTLE_KEEP                ;Respawn at this location -- and at it's exit production point if possible.
  1308.         ButtonImage                    = HIShelob
  1309.         
  1310.         ;RespawnEntries determine the ruleset for how a character can be revived. Some units may automatically respawn, others
  1311.         ;may require a specific revive action performed on him. You can specify different values for each level... or use Level:Any
  1312.         RespawnRules =                AutoSpawn:No    Cost:600        Time:12000        Health:100%        ;DEFAULT VALUES
  1313.         RespawnEntry =    Level:2                        Cost:700        Time:14000                        ;For other levels, only override what is different.
  1314.         RespawnEntry =    Level:3                        Cost:800        Time:16000
  1315.         RespawnEntry =    Level:4                        Cost:900        Time:18000
  1316.         RespawnEntry =    Level:5                        Cost:1000        Time:20000
  1317.         RespawnEntry =    Level:6                        Cost:1100        Time:22000
  1318.         RespawnEntry =    Level:7                        Cost:1200        Time:24000
  1319.         RespawnEntry =    Level:8                        Cost:1300        Time:26000
  1320.         RespawnEntry =    Level:9                        Cost:1400        Time:28000
  1321.         RespawnEntry =    Level:10                    Cost:1500        Time:30000
  1322.     End
  1323.     
  1324.     Behavior = PhysicsBehavior ModuleTag_04
  1325.         GravityMult = 1.0
  1326.         ShockStandingTime = 1000    ;msec
  1327.     End
  1328.     
  1329.     Behavior = SlowDeathBehavior ModuleTag_05
  1330.         DeathTypes = ALL 
  1331.         SinkDelay = 2500
  1332.         SinkRate = 3.00     ; in Dist/Sec
  1333.         DestructionDelay = 20000
  1334.         FX = INITIAL FX_GiantSpiderDie
  1335.         Sound = INITIAL ShelobVoiceDie
  1336.     End
  1337.     
  1338.     Behavior = SquishCollide ModuleTag_06
  1339.         ;nothing
  1340.     End
  1341.     
  1342.     Behavior = HitReactionBehavior HitReactionBehaviorModuleTag
  1343.         HitReactionLifeTimer1 = 2000 ; level 1 (light  damage) 
  1344.         HitReactionThreshold1 = 1.0   ; level 1 (light  damage) threshold trigger
  1345.     End
  1346.     
  1347.       Behavior = SpecialPowerModule ModuleTag_EatStarter                      
  1348.         SpecialPowerTemplate      = SpecialPowerEat
  1349.         UpdateModuleStartsAttack  = Yes
  1350.     End
  1351.     Behavior = SpecialAbilityUpdate ModuleTag_EatUpdate
  1352.         SpecialPowerTemplate        = SpecialPowerEat
  1353.         StartAbilityRange            = 15.0 ;Negative distances will cause the unit to overshoot the destination.
  1354.         PreparationTime                = 1
  1355.         PackTime                    = 3667 ; Eating
  1356.         TriggerAttributeModifier    = ShelobSelfHealWhileEating
  1357.         AttributeModifierDuration    = 3600
  1358.         KillAttributeModifierOnExit = Yes ;If player aborts ability, the attribute modifier is immediately removed.
  1359.     End
  1360.     
  1361.     Behavior = AutoHealBehavior ModuleTag_SarumanHealing
  1362.         StartsActive = Yes
  1363.         HealingAmount = 50    
  1364.         HealingDelay = 1000    
  1365.         StartHealingDelay = 10000
  1366.         HealOnlyIfNotInCombat = Yes
  1367.     End
  1368.  
  1369.     Geometry = CYLINDER
  1370.     GeometryMajorRadius = 25.0
  1371.     GeometryMinorRadius = 25.0
  1372.     GeometryHeight = 30.0
  1373.     GeometryIsSmall = No
  1374.     Shadow = SHADOW_DECAL    ;SHADOW_VOLUME
  1375.     ShadowSizeX = 47;
  1376.     ShadowSizeY = 30;
  1377.     ShadowOffsetX = -4;
  1378.     ShadowTexture = ShadowSpider2 ;ShadowI
  1379. End
  1380.  
  1381. ChildObject MordorShelobNoFear MordorShelob
  1382.   
  1383.     Behavior = AIUpdateInterface ModuleTag_03
  1384.         AutoAcquireEnemiesWhenIdle = Yes
  1385.         MoodAttackCheckRate        = 500
  1386.         AILuaEventsList                = None
  1387.         MaxCowerTime                =    7500
  1388.         MinCowerTime                =    5000
  1389.     End
  1390.  
  1391.     Body = RespawnBody ModuleTag_RespawnBody
  1392.         MaxHealth         = 3500                ;BALANCE Shelob Health
  1393.         PermanentlyKilledByFilter    = NONE        ;Who kills me permanently?
  1394.     End
  1395.  
  1396.        Behavior = EmotionTrackerUpdate    Module_EmotionTracker
  1397.         AddEmotion    =    Alert_Base
  1398.     End
  1399.     
  1400.     LocomotorSet
  1401.         Locomotor     = ShelobWallScalingLocomotor
  1402.         Condition     = SET_NORMAL
  1403.         Speed         = 60
  1404.     End
  1405. End
  1406.  
  1407. ;------------------------------------------------------------------------------
  1408. ;Creating this oathbreaker will randomize between several variations of the oathbreaker.
  1409. ;------------------------------------------------------------------------------
  1410. Object RohanOathbreaker
  1411.  
  1412.     SelectPortrait         = UPOathBreakers
  1413.  
  1414.     Draw = W3DScriptedModelDraw ModuleTag_01  
  1415.         DefaultModelConditionState
  1416.             ;Give it a model so it'll show up in WB
  1417.             Model               = RUPsnt_1_SKN
  1418.             Skeleton            = RUPsnt_1_SKL
  1419.         End
  1420.     End
  1421.  
  1422.     ;***** IMPORTANT NOTE! ***************************************************************    
  1423.     ;Certain Upgrades and costs may need to be propagated from here. One example was veterancy
  1424.     ;overlays. See Zero Hour GLAVehicleTechnical for reference.
  1425.     ;*************************************************************************************    
  1426.  
  1427.     Side = Neutral
  1428.     IsTrainable = No
  1429.     EditorSorting = UNIT
  1430.     BuildVariations = RohanOathbreaker1 RohanOathbreaker2 RohanOathbreaker3    
  1431.     KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT DOZER
  1432.     
  1433.   ;Shadow = SHADOW_DECAL
  1434.   ;ShadowSizeX = 24;
  1435.   ;ShadowSizeY = 24;
  1436.   ;ShadowTexture = ShadowI;
  1437.  
  1438. End
  1439.  
  1440. ;------------------------------------------------------------------------------
  1441. ; aka Oathbreakers, Dead, Army of the Dead
  1442. Object RohanOathbreaker1
  1443.     ; *** ART Parameters ***
  1444.  
  1445.     SelectPortrait         = UPOathBreakers
  1446.  
  1447.     Draw = W3DHordeModelDraw ModuleTag_01
  1448.  
  1449.         DefaultModelConditionState
  1450.             Model               = RUOath3A_SKN
  1451.             Skeleton            = RUOath3_SKL
  1452.             ParticleSysBone = NONE AODTrails FollowBone:no
  1453.          End
  1454.    
  1455.         IdleAnimationState
  1456.             StateName                = STATE_Idle
  1457.             Animation                = IDLA
  1458.                 AnimationName       = RUOath3_IDLB
  1459.                 AnimationMode       = ONCE
  1460.                 AnimationSpeedFactorRange = 0.9 1.1
  1461.                 AnimationBlendTime    = 20
  1462.             End            
  1463.         End
  1464.  
  1465.         
  1466.         AnimationState        = DYING
  1467.             Animation           = RUNA
  1468.                 AnimationName     = RUOath3A_DIEA
  1469.             End
  1470.             EnteringStateFX = FX_AODDeath
  1471.         End
  1472.  
  1473.         AnimationState        =  OATH_FULLFILLED
  1474.             Animation           = WLK
  1475.                 AnimationName     = RUOath3_WLKA
  1476.                 AnimationMode     = LOOP
  1477.             End
  1478.             ParticleSysBone = NONE AODtrackingLightShafts
  1479.         End
  1480.  
  1481.         AnimationState        =  ATTACKING
  1482.             Animation           = ATA1
  1483.                 AnimationName     = RUOath3_ATKA
  1484.                 AnimationMode     = LOOP
  1485.                 AnimationSpeedFactorRange = 0.75 1.25
  1486.             End
  1487.         End
  1488.  
  1489.         AnimationState        =  FIRING_A
  1490.             Animation           = ATA1
  1491.                 AnimationName     = RUOath3_ATKA
  1492.                 AnimationMode     = LOOP
  1493.             End
  1494.         End
  1495.  
  1496.         AnimationState        = MOVING
  1497.             Animation           = RUNA
  1498.                 AnimationName     = RUOath3_RUNA
  1499.                 AnimationMode     = LOOP
  1500.             End
  1501.             Flags               = RANDOMSTART
  1502.         End
  1503.         
  1504.     End
  1505.     
  1506.     ; ***DESIGN parameters ***
  1507.     Side = Neutral
  1508.     IsTrainable = No
  1509.     EditorSorting = UNIT
  1510.     ThreatLevel = 3.0
  1511.     ThingClass = HORDE_UNIT
  1512.     CommandPoints = 0
  1513.  
  1514.     EmotionRange = 0 ; Make sure this value is greater than the fear distribution range. 
  1515.  
  1516.     TransportSlotCount = TRANSPORTSLOTCOUNT_UNIT
  1517.     WeaponSet
  1518.         Conditions = None 
  1519.         Weapon = PRIMARY    OathbreakerSword
  1520.         AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  1521.     End
  1522.     ArmorSet
  1523.         Conditions      = None
  1524.         Armor           = OathBreakerArmor
  1525.         DamageFX        = NormalDamageFX
  1526.     End
  1527.     VisionRange = 81
  1528.     DisplayName = OBJECT:Oathbreaker
  1529.     CrushableLevel = 5  ; Nothing can crush these guys. What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  1530. ;    CrusherLevel = 4  ; They don't crush anyone - they use a custom module to do damage. What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  1531.     
  1532.     ShockwaveResistance = SHOCKWAVE_RESISTANCE_ALWAYS
  1533.     
  1534.     CommandSet = GondorFighterCommandSet
  1535.     EquivalentTo = RohanOathbreaker
  1536.  
  1537.     ; *** AUDIO Parameters ***;
  1538.  
  1539.     VoiceAttack            = OathbreakerVoxSelect
  1540. ;    VoiceCreated        = OathbreakerVoxSelect
  1541. ;    VoiceFullyCreated    = OathbreakerVoxSelect
  1542.     VoiceMove            = OathbreakerVoxSelect
  1543.     VoicePriority        = 15
  1544.     VoiceSelect            = OathbreakerVoxSelect
  1545.  
  1546.     SoundImpact            = ImpactHorse
  1547.     
  1548.     UnitSpecificSounds
  1549.         VoiceGarrison                        = OathbreakerVoxSelect
  1550.         VoiceEnterUnitElvenTransportShip    = OathbreakerVoxSelect
  1551.         VoiceEnterUnitEvilMenTransportShip    = OathbreakerVoxSelect
  1552.         VoiceEnterUnitMordorMumakil            = OathbreakerVoxSelect
  1553.         VoiceEnterUnitSlaughterHouse        = OathbreakerVoxSelect
  1554.         VoiceInitiateCaptureBuilding        = OathbreakerVoxSelect
  1555.     End
  1556.  
  1557.     #include "..\includes\StandardUnitEvaEvents.inc"
  1558.  
  1559.     ; Warn the player when the enemy gets a unit. Override the normal sighting event from StandardUnitEvaEvents.inc
  1560.     EvaEnemyObjectSightedEvent    = DiscoveredEnemyOathbreaker        ;GenericEnemyUnitSighted ; Normal response to enemy units
  1561.  
  1562.     ClientUpdate = EvaAnnounceClientCreate ModuleTag_CreateAnnounce
  1563.         AnnouncementEventEnemy = DiscoveredEnemyOathbreaker
  1564.         AnnouncementEventAlly = None
  1565.         AnnouncementEventOwner = None
  1566.         
  1567.         OnlyIfVisible = Yes                        ; Don't announce if hidden in the shroud
  1568.         CountAsFirstSightedAnnoucement = Yes    ; Don't re-annouce if going into shroud & back
  1569.         UseObjectsPosition = No                    ; Play from central Fortress, not at unit's position
  1570.         CreateFakeRadarEvent = Yes                ; Allow player to jump to unit after hearing annoucement
  1571.     End
  1572.  
  1573.     ; *** ENGINEERING Parameters ***
  1574.     RadarPriority = UNIT
  1575.     KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT ATTACK_NEEDS_LINE_OF_SIGHT ARMY_OF_DEAD
  1576.     
  1577.     Body = ActiveBody ModuleTag_02
  1578.         MaxHealth         = 2000                
  1579.         MaxHealthDamaged  = 2000
  1580.         ;RecoveryTime      = 15000
  1581.     End
  1582.     
  1583.     Behavior = AIUpdateInterface ModuleTag_03
  1584.         AutoAcquireEnemiesWhenIdle    =    Yes ATTACK_BUILDINGS
  1585.         MoodAttackCheckRate            =    500
  1586.     End
  1587.  
  1588.     LocomotorSet
  1589.         Locomotor = ArmyOfTheDeadLocomotor
  1590.         Condition = SET_NORMAL 
  1591.         Speed     = 100
  1592.         
  1593.     End
  1594.  
  1595.     Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
  1596.         MinLifetime        = OATHBREAKER_LIFETIME
  1597.         MaxLifetime        = OATHBREAKER_LIFETIME
  1598.     End    
  1599.  
  1600.     Behavior = PhysicsBehavior ModuleTag_04
  1601.         GravityMult = 1.0
  1602.         ShockStunnedTimeLow        = 1400
  1603.         ShockStunnedTimeHigh    = 2400
  1604.         ShockStandingTime        = 2400
  1605.     End 
  1606.     
  1607.     Behavior = SlowDeathBehavior ModuleTag_SlowDeath_01
  1608.         DeathTypes = ALL 
  1609. ;        SinkDelay = 200
  1610. ; Rising in animation, don't sink        SinkRate = 5.40     ; in Dist/Sec
  1611.         DestructionDelay = 3000
  1612.         FadeTime = 1000
  1613.         FadeDelay = 1000
  1614.         ;Sound = INITIAL OathbreakerDie
  1615.     End
  1616.     
  1617.     
  1618.     Behavior = OathbreakersFadeAwayBehavior ModuleTag_05
  1619.         FadeOutTime   = 3500 ;  Fade time in ms - 4000 == 4 seconds.
  1620.     End
  1621.  
  1622.     Behavior = AODCrushCollide ModuleTag_06
  1623.         SmallFXList = FX_AODHitSmall; FXList for small objects.
  1624.         MediumFXList = FX_AODHitMedium; FXList for medium objects.
  1625.         ; LargeFXList = FX_AODHitLarge; FXList for medium objects.
  1626.         ;MediumObjectCreationList = OCL_FireFieldSmall; disabled for now.
  1627.         
  1628.         ; Normal damage delivered.
  1629.         Damage = 50 ;10.0
  1630.         DamageType = MAGIC
  1631.         DeathType = SUPERNATURAL
  1632.         
  1633.         SpecialObject = NONE +MordorBalrog +GondorAragorn -SELECTABLE -CAVALRY -INFANTRY -HERO -MONSTER; Special objects receive and dish out special damage.
  1634.         SpecialDamage = 5.0  ; not as lethal (has to be really small so as not to provoke a hit reaction from balrog, who wants to only react to phaser and lightning)
  1635.         SpecialDamageType = MAGIC
  1636.         SpecialDeathType = CRUSHED
  1637.         
  1638.         SelfDamage = 9999.0  ; Damaging a special object inflicts damage on self.
  1639.         SelfDamageType = FLAME
  1640.         SelfDeathType = BURNED
  1641.     End
  1642.     
  1643.     ; Tie into LargeGroupAudio system
  1644.     Behavior = LargeGroupAudioUpdate ModuleTag_LGAU
  1645.         Key = Oathbreaker
  1646.     End
  1647.  
  1648.     Geometry = CYLINDER
  1649.     GeometryMajorRadius = 12.0
  1650.     GeometryMinorRadius = 12.0
  1651.     GeometryHeight = 19.2
  1652.     GeometryIsSmall = No
  1653.     ;Shadow = SHADOW_DECAL
  1654.     ;Shadow = SHADOW_VOLUME    
  1655.     ;ShadowSizeX = 10;
  1656.     ;ShadowSizeY = 10;
  1657.     ;ShadowTexture = ShadowI;
  1658. End
  1659.  
  1660. ;------------------------------------------------------------------------------
  1661. ; aka Oathbreakers, Dead, Army of the Dead
  1662. ObjectReskin RohanOathbreaker2 RohanOathbreaker1
  1663.     ; *** ART Parameters ***
  1664.     
  1665.     Draw = W3DHordeModelDraw ModuleTag_01
  1666.  
  1667.         DefaultModelConditionState
  1668.             Model               = RUOath3B_SKN
  1669.             Skeleton            = RUOath3_SKL
  1670.             ParticleSysBone = NONE AODTrails FollowBone:no
  1671.          End
  1672.    
  1673.         IdleAnimationState
  1674.             StateName                = STATE_Idle
  1675.             Animation                = IDLA
  1676.                 AnimationName       = RUOath3B_IDLB
  1677.                 AnimationMode       = ONCE
  1678.                 AnimationSpeedFactorRange = 0.9 1.1
  1679.                 AnimationBlendTime    = 20
  1680.             End            
  1681.         End
  1682.  
  1683.         AnimationState        = DYING
  1684.             Animation           = RUNA
  1685.                 AnimationName     = RUOath3B_DIEA
  1686.             End
  1687.             EnteringStateFX = FX_AODDeath
  1688.         End
  1689.         
  1690.         AnimationState        =  OATH_FULLFILLED
  1691.             Animation           = WLK
  1692.                 AnimationName     = RUOath3B_WLKA
  1693.                 AnimationMode     = LOOP
  1694.             End
  1695.                 ParticleSysBone = NONE AODtrackingLightShafts
  1696.         End
  1697.  
  1698.         AnimationState        =  ATTACKING
  1699.             Animation           = ATA1
  1700.                 AnimationName     = RUOath3B_ATKA
  1701.                 AnimationMode     = LOOP
  1702.                 AnimationSpeedFactorRange = 0.75 1.25
  1703.             End
  1704.         End
  1705.  
  1706.         AnimationState        =  FIRING_A
  1707.             Animation           = ATA1
  1708.                 AnimationName     = RUOath3B_ATKA
  1709.                 AnimationMode     = LOOP
  1710.             End
  1711.         End
  1712.  
  1713.         AnimationState        = MOVING
  1714.             Animation           = RUNA
  1715.                 AnimationName     = RUOath3B_RUNA
  1716.                 AnimationMode     = LOOP
  1717.             End
  1718.             Flags               = RANDOMSTART
  1719.         End    
  1720.     End    
  1721. End
  1722.  
  1723. ;------------------------------------------------------------------------------
  1724. ; aka Oathbreakers, Dead, Army of the Dead
  1725. ObjectReskin RohanOathbreaker3 RohanOathbreaker1
  1726.     ; *** ART Parameters ***
  1727.  
  1728.     Draw = W3DHordeModelDraw ModuleTag_01
  1729.  
  1730.         DefaultModelConditionState
  1731.             Model               = RUOath3C_SKN
  1732.             Skeleton            = RUOath3_SKL
  1733.             ParticleSysBone = NONE AODTrails FollowBone:no
  1734.          End
  1735.    
  1736.         IdleAnimationState
  1737.             StateName                = STATE_Idle
  1738.             Animation                = IDLA
  1739.                 AnimationName       = RUOath3C_IDLB
  1740.                 AnimationMode       = ONCE
  1741.                 AnimationSpeedFactorRange = 0.9 1.1
  1742.                 AnimationBlendTime    = 20
  1743.             End            
  1744.         End
  1745.  
  1746.         AnimationState        = DYING
  1747.             Animation           = RUNA
  1748.                 AnimationName     = RUOath3C_DIEA
  1749.             End
  1750.             EnteringStateFX = FX_AODDeath
  1751.         End
  1752.         
  1753.         AnimationState        =  OATH_FULLFILLED
  1754.             Animation           = WLK
  1755.                 AnimationName     = RUOath3C_WLKA
  1756.                 AnimationMode     = LOOP
  1757.             End
  1758.             ParticleSysBone = NONE AODtrackingLightShafts
  1759.         End
  1760.  
  1761.         AnimationState        =  ATTACKING
  1762.             Animation           = ATA1
  1763.                 AnimationName     = RUOath3C_ATKA
  1764.                 AnimationMode     = LOOP
  1765.                 AnimationSpeedFactorRange = 0.75 1.25
  1766.             End
  1767.         End
  1768.  
  1769.         AnimationState        =  FIRING_A
  1770.             Animation           = ATA1
  1771.                 AnimationName     = RUOath3C_ATKA
  1772.                 AnimationMode     = LOOP
  1773.             End
  1774.         End
  1775.  
  1776.         AnimationState        = MOVING
  1777.             Animation           = RUNA
  1778.                 AnimationName     = RUOath3C_RUNA
  1779.                 AnimationMode     = LOOP
  1780.             End
  1781.             Flags               = RANDOMSTART
  1782.         End
  1783.     End
  1784. End
  1785.  
  1786. ;------------------------------------------------------------------------------
  1787. ; Rohirrim Oathbreakers on a Horse
  1788. Object RohanOathbreakersCavalry
  1789.     ; *** ART Parameters ***
  1790.     ; NOTE: If you are updating any of the art parameters, you should really check
  1791.     ; GondorCavalryRiderless in FactionSubObject.ini and see if it needs to be updated
  1792.  
  1793.     SelectPortrait         = UPOathBreakers
  1794.  
  1795.     Draw = W3DScriptedModelDraw ModuleTag_01 
  1796.         StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
  1797.  
  1798.     
  1799.         DefaultModelConditionState
  1800.             Model                    = RUOthHrse_SKN
  1801.         End
  1802.  
  1803.  
  1804.         IdleAnimationState
  1805.             Animation                =    IdleA
  1806.                 AnimationName        =    RURohrm_SKL.RURohrm_IDLA
  1807.                 AnimationPriority    =    20
  1808.                 AnimationMode        =    ONCE
  1809.                 AnimationBlendTime    =    15
  1810.             End
  1811.             Animation                =    IdleB
  1812.                 AnimationName        =    RURohrm_SKL.RURohrm_IDLB
  1813.                 AnimationMode        =    ONCE
  1814.                 AnimationBlendTime    =    15
  1815.             End
  1816.         End
  1817.         
  1818.         AnimationState                =    PASSENGER
  1819.             Animation                =    grabbed
  1820.                 AnimationName        =    RURohrm_SKL.RURohrm_GBDA
  1821.                 AnimationMode        =    LOOP
  1822.             End
  1823.             Flags                    =    RANDOMSTART
  1824.         End
  1825.         
  1826.         ; --- stunned anims
  1827.         AnimationState                =    FREEFALL 
  1828.             Animation                =    free fall
  1829.                 AnimationName        =    RURohrm_SKL.RURohrm_FLYB
  1830.                 AnimationMode        =    LOOP
  1831.             End
  1832.             Flags                    =    RANDOMSTART
  1833.         End
  1834.         
  1835.         AnimationState                =    STUNNED_FLAILING 
  1836.             Animation                =    JustDie
  1837.                 AnimationName        =    RURohrm_SKL.RURohrm_FLYC
  1838.                 AnimationMode        =    LOOP
  1839.             End
  1840.             Flags                    =    RANDOMSTART
  1841.         End
  1842.  
  1843.         AnimationState                =    STUNNED 
  1844.             Animation                =    Land
  1845.                 AnimationName        =    RURohrm_SKL.RURohrm_LNDA
  1846.                 AnimationMode        =    ONCE
  1847.             End
  1848.         End
  1849.  
  1850.         AnimationState                =    STUNNED_STANDING_UP
  1851.             Animation                =    StandUp
  1852.                 AnimationName        =    RURohrm_SKL.RURohrm_GTPA
  1853.                 AnimationMode        =    ONCE
  1854.             End
  1855.         End
  1856.  
  1857.         ; This is the no-spawn-horse type of death
  1858.         AnimationState                =    DYING     ; DEATH_2 Normally has DEATH_2, but just as a backup don't insist
  1859.             Animation                =    JustDie
  1860.                 AnimationName        =    RURohrm_SKL.RURohrm_DIEA
  1861.                 AnimationMode        =    ONCE
  1862.             End
  1863.         End
  1864.         
  1865.         ; When the rider is killed, we call this animation even though the unit hasn't officially died yet.
  1866.         AnimationState                =    DEATH_2
  1867.             Animation                =    JustDie
  1868.                 AnimationName       =    RURohrm_SKL.RURohrm_DIEB
  1869.                 AnimationMode       =    ONCE
  1870.             End
  1871.         End
  1872.         
  1873.         AnimationState = MOVING ENGAGED
  1874.             Animation = Moving_Engaged
  1875.                 AnimationName = RURohrm_SKL.RURohrm_RUNC
  1876.                 AnimationMode = LOOP
  1877.             End
  1878.             Flags               = RANDOMSTART
  1879.         End
  1880.         
  1881.         AnimationState                =    TURN_LEFT_HIGH_SPEED
  1882.             Animation                =    TurnLeft
  1883.                 AnimationName        =    RURohrm_SKL.RURohrm_TNL1
  1884.                 AnimationMode        =    LOOP
  1885. ;                AnimationSpeedFactorRange= 1.8 1.8
  1886.                 AnimationBlendTime    =    20
  1887.             End
  1888.         End
  1889.         
  1890.         AnimationState                =    TURN_RIGHT_HIGH_SPEED
  1891.             Animation                =    TurnLeft
  1892.                 AnimationName        =    RURohrm_SKL.RURohrm_TNR1
  1893.                 AnimationMode        =    LOOP
  1894. ;                AnimationSpeedFactorRange= 1.8 1.8
  1895.                 AnimationBlendTime    =    20
  1896.             End
  1897.         End
  1898.         
  1899.         AnimationState                = MOVING WANDER
  1900.             Animation                = WLKA
  1901.                 AnimationName        = RURohrm_SKL.RURohrm_WLKA
  1902.                 AnimationMode        = LOOP
  1903.             End
  1904.         End
  1905.  
  1906.         AnimationState                =    MOVING TURN_LEFT 
  1907.             Animation                =    TurnLeft
  1908.                 AnimationName        =    RURohrm_SKL.RURohrm_TRNL
  1909.                 AnimationMode        =    LOOP
  1910.             End
  1911.         End
  1912.  
  1913.         AnimationState                =    MOVING TURN_RIGHT 
  1914.             Animation                =    TurnRight
  1915.                 AnimationName        =    RURohrm_SKL.RURohrm_TRNR
  1916.                 AnimationMode        =    LOOP
  1917.             End
  1918.         End
  1919.     
  1920.         AnimationState                =    MOVING ACCELERATE
  1921.             Animation                =    Accelerate
  1922.                 AnimationName        =    RURohrm_SKL.RURohrm_ACCL
  1923.                 AnimationMode        =    LOOP
  1924.             End
  1925.         End
  1926.  
  1927.         AnimationState                =    MOVING DECELERATE
  1928.             Animation                =    Decelerate
  1929.                 AnimationName        =    RURohrm_SKL.RURohrm_DECL
  1930.                 AnimationMode        =    ONCE
  1931.             End
  1932.         End
  1933.  
  1934.         AnimationState                =    MOVING
  1935.             Animation                =    RunA
  1936.                 AnimationName        =    RURohrm_SKL.RURohrm_RUNA
  1937.                 AnimationMode        =    LOOP
  1938.             End
  1939.             Flags                    =    RANDOMSTART
  1940.         End
  1941.  
  1942.         AnimationState                =    SELECTED
  1943.             SimilarRestart            =   Yes
  1944.             Animation                =    AtAttention
  1945.                 AnimationName        =    RURohrm_SKL.RURohrm_ATNA
  1946.                 AnimationMode        =    ONCE
  1947.             End
  1948.         End    
  1949.     End
  1950.     
  1951.     ShockwaveResistance = SHOCKWAVE_RESISTANCE_IMMUNE
  1952.     
  1953.  
  1954.     ; ***DESIGN parameters ***
  1955.     Side = Men
  1956.     EditorSorting = UNIT
  1957.     ThreatLevel = 2.0
  1958.     TransportSlotCount = TRANSPORTSLOTCOUNT_UNIT
  1959.     CommandPoints = 0
  1960.  
  1961.     ArmorSet
  1962.         Conditions      = None
  1963.         Armor           = CavalryLineFormationArmor
  1964.         DamageFX        = NormalDamageFX
  1965.     End
  1966.     ArmorSet
  1967.         Conditions        = ALTERNATE_FORMATION
  1968.         Armor            = CavalryWedgeFormationArmor
  1969.         DamageFX        = NormalDamageFX
  1970.     End
  1971.     WeaponSet
  1972.         Conditions = None 
  1973.         Weapon = PRIMARY    RohanRohirrimSpear
  1974.         AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  1975.         Weapon = SECONDARY    RiderlessWeapon
  1976.         AutoChooseSources = SECONDARY FROM_SCRIPT
  1977.     End
  1978.     VisionRange = 280.0
  1979.     DisplayName = OBJECT:Oathbreaker
  1980.     CrushableLevel = 4  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  1981.     CrusherLevel = 0
  1982.     
  1983.     ; *** AUDIO Parameters ***;
  1984.  
  1985.     #include "..\includes\StandardUnitEvaEvents.inc"
  1986.  
  1987.     VoiceAttack            = OathbreakerVoxSelect
  1988. ;    VoiceCreated        = OathbreakerVoxSelect
  1989. ;    VoiceFullyCreated    = OathbreakerVoxSelect
  1990.     VoiceMove            = OathbreakerVoxSelect
  1991.     VoicePriority        = 16
  1992.     VoiceSelect            = OathbreakerVoxSelect
  1993.     ;VoiceSelect2        = RohirrimAttention
  1994.  
  1995.     SoundCrushing        = RohirrimCrushing ; Sound made when crushing another unit underhoof
  1996.     SoundImpact            = ImpactHorse
  1997.     SoundMoveStart        = GondorHorseMoveStart
  1998.     
  1999.     UnitSpecificSounds
  2000.         VoiceGarrison                        = OathbreakerVoxSelect
  2001.         VoiceEnterUnitElvenTransportShip    = OathbreakerVoxSelect
  2002.         VoiceEnterUnitEvilMenTransportShip    = OathbreakerVoxSelect
  2003.         VoiceEnterUnitMordorMumakil            = OathbreakerVoxSelect
  2004.         VoiceEnterUnitSlaughterHouse        = OathbreakerVoxSelect
  2005.         VoiceInitiateCaptureBuilding        = OathbreakerVoxSelect
  2006.     End
  2007.  
  2008.     ; Tie into LargeGroupAudio system
  2009.     Behavior = LargeGroupAudioUpdate ModuleTag_LGAU
  2010.         Key = Oathbreaker
  2011.     End
  2012.  
  2013.     ; Warn the player when the enemy gets a unit. Override the normal sighting event from StandardUnitEvaEvents.inc
  2014.     EvaEnemyObjectSightedEvent    = DiscoveredEnemyOathbreaker        ;GenericEnemyUnitSighted ; Normal response to enemy units
  2015.  
  2016.     ClientUpdate = EvaAnnounceClientCreate ModuleTag_CreateAnnounce
  2017.         AnnouncementEventEnemy = DiscoveredEnemyOathbreaker
  2018.         AnnouncementEventAlly = None
  2019.         AnnouncementEventOwner = None
  2020.         
  2021.         OnlyIfVisible = Yes                        ; Don't announce if hidden in the shroud
  2022.         CountAsFirstSightedAnnoucement = Yes    ; Don't re-annouce if going into shroud & back
  2023.         UseObjectsPosition = No                    ; Play from central Fortress, not at unit's position
  2024.         CreateFakeRadarEvent = Yes                ; Allow player to jump to unit after hearing annoucement
  2025.     End
  2026.  
  2027.     ; *** ENGINEERING Parameters ***
  2028.     RadarPriority = UNIT
  2029.     ThingClass = CAVALRY_UNIT
  2030.  
  2031.     KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS CAVALRY SCORE INFANTRY ARMY_OF_DEAD
  2032.     
  2033.     Body = ActiveBody ModuleTag_02
  2034.         MaxHealth         = 100                  ;BALANCE Man at Arms Health
  2035.         MaxHealthDamaged  = 5
  2036.         ;RecoveryTime      = 5000
  2037.     End
  2038.  
  2039.     Behavior = AIUpdateInterface ModuleTag_03
  2040.         AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
  2041.         AILuaEventsList    =    RohirrimFunctions
  2042.         AttackPriority = AttackPriorityCavalry
  2043.     End
  2044.  
  2045.     LocomotorSet
  2046.         Locomotor = HorseLocomotor
  2047.         Condition = SET_NORMAL 
  2048.         Speed     = 72
  2049.     End
  2050.  
  2051.     Behavior = PhysicsBehavior ModuleTag_04
  2052.         GravityMult = 1.0
  2053.         ShockStunnedTimeLow        = 1400
  2054.         ShockStunnedTimeHigh    = 2400
  2055.         ShockStandingTime        = 2400
  2056.     End
  2057.     
  2058.     Behavior = OathbreakersFadeAwayBehavior ModuleTag_05
  2059.         FadeOutTime   = 3500 ;  Fade time in ms - 4000 == 4 seconds.
  2060.     End
  2061.  
  2062.     Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
  2063.         MinLifetime        = OATHBREAKER_LIFETIME
  2064.         MaxLifetime        = OATHBREAKER_LIFETIME
  2065.     End    
  2066.  
  2067.     Behavior = AODCrushCollide ModuleTag_06
  2068.         SmallFXList = FX_AODHitSmall; FXList for small objects.
  2069.         MediumFXList = FX_AODHitMedium; FXList for medium objects.
  2070.         ;LargeFXList = FX_AODHitLarge; FXList for medium objects.
  2071.         
  2072.         ; Normal damage delivered.
  2073.         Damage = 99999.0  ; normally really lethal
  2074.         DamageType = CRUSH
  2075.         DeathType = CRUSHED
  2076.         
  2077.         SpecialObject = NONE +MordorBalrog -SELECTABLE -CAVALRY -INFANTRY -HERO -MONSTER; Special objects receive and dish out special damage.
  2078.         SpecialDamage = 100.0  ; not as lethal
  2079.         SpecialDamageType = CRUSH
  2080.         SpecialDeathType = CRUSHED
  2081.         
  2082.         SelfDamage = 9999.0  ; Damaging a special object inflicts damage on self.
  2083.         SelfDamageType = FLAME
  2084.         SelfDeathType = BURNED
  2085.     End
  2086.  
  2087.  
  2088.     Behavior = SlowDeathBehavior ModuleTag_08
  2089.         DeathTypes = ALL 
  2090.         SinkDelay = 1000
  2091.         SinkRate = 1.40     ; in Dist/Sec
  2092.         DestructionDelay = 10000
  2093.         ;ProbabilityModifier = 33
  2094.         DeathFlags = DEATH_2 ; Tell model which death animation to play. Sets BOTH model condition and object status bits.
  2095.         ;Sound = INITIAL OathbreakerDie
  2096.     End
  2097.     
  2098.     Geometry = CYLINDER
  2099.     GeometryMajorRadius = 10.4
  2100.     GeometryMinorRadius = 10.4
  2101.     GeometryHeight = 20.0
  2102.     GeometryIsSmall = No
  2103.     ;Shadow = SHADOW_DECAL
  2104.     ;ShadowSizeX = 30;
  2105.     ;ShadowSizeY = 21;
  2106.     ;ShadowTexture = ShadowI;
  2107.  
  2108. End
  2109.  
  2110. ;-----------------------------------------------------------------------------------------
  2111. ; Marker Object
  2112. ;-----------------------------------------------------------------------------------------
  2113. Object Marker
  2114.     ; *** ART Parameters ***
  2115.  
  2116.     Draw = W3DScriptedModelDraw ModuleTag_01
  2117.         OkToChangeModelColor = Yes
  2118.         NoRotate = Yes
  2119.         
  2120.         DefaultModelConditionState
  2121.             Model           = MUSauronEye
  2122.         End
  2123.    
  2124.     End
  2125.     
  2126.     ; ***DESIGN parameters ***
  2127.     Side = Neutral
  2128.     EditorSorting    = UNIT
  2129.     ThreatLevel        = 1.0
  2130.     CommandPoints    = 0
  2131.  
  2132.     VisionRange        = 200.0
  2133.     DisplayName        = OBJECT:Marker
  2134.     
  2135.     CommandSet        = EmptyCommandSet
  2136.  
  2137.     ; *** AUDIO parameters ***
  2138.       EvaEnemyObjectSightedEvent = None  ; Not a real unit
  2139.  
  2140.     ; *** ENGINEERING Parameters ***
  2141.     RadarPriority = UNIT
  2142.     KindOf = SELECTABLE NO_COLLIDE AIRCRAFT UNATTACKABLE MOVE_ONLY CLICK_THROUGH HERO IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION
  2143.     
  2144.     Body = ActiveBody ModuleTag_02
  2145.         MaxHealth         = 200000
  2146.         MaxHealthDamaged  = 100000
  2147.         ;RecoveryTime      = 5000
  2148.     End
  2149.  
  2150.     Behavior = AIUpdateInterface    ModuleTag_AIUpdateInterface
  2151.     End
  2152.  
  2153.     Behavior = PhysicsBehavior        ModuleTag_PhysicsBehavior
  2154.     End
  2155.     
  2156.     LocomotorSet
  2157.         Locomotor = EyeLocomotor
  2158.         Condition = SET_NORMAL 
  2159.         Speed     = 200
  2160.     End
  2161.     
  2162.     Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
  2163.         MinLifetime        = 60000
  2164.         MaxLifetime        = 60000
  2165.     End
  2166.     
  2167.     
  2168.     Geometry = CYLINDER
  2169.     GeometryMajorRadius = 1.0
  2170.     GeometryMinorRadius = 1.0
  2171.     GeometryHeight        = 1.0
  2172.     GeometryIsSmall        = Yes
  2173.  
  2174.     Shadow            = SHADOW_ADDITIVE_DECAL_DYNAMIC
  2175.     ShadowSizeX        = 400;
  2176.     ShadowSizeY        = 400;
  2177.     ShadowTexture    = EXLnzFlar1;
  2178.  
  2179.     ShadowOpacityStart = 0
  2180.     ShadowOpacityFadeInTime = 1000
  2181.     ShadowOpacityPeak = 255
  2182.     ShadowOpacityFadeOutTime = 1000
  2183.     ShadowOpacityEnd = 0
  2184.  
  2185. End
  2186.  
  2187. ;-----------------------------------------------------------------------------------------
  2188. ; Crebain Object
  2189. ;-----------------------------------------------------------------------------------------
  2190. Object Crebain
  2191.     ; *** ART Parameters ***
  2192.  
  2193.     ; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.
  2194.     ButtonImage         = HICrebain
  2195.     SelectPortrait             = UPCrebain
  2196.  
  2197.     Draw = W3DHordeModelDraw ModuleTag_01
  2198.         ; OkToChangeModelColor = Yes ; temporarily commented out to remove the house color
  2199.  
  2200.         WadingParticleSys = EntRipples
  2201.  
  2202.         StaticModelLODMode = Yes ; Will append M or L to the skin name depending on GameLOD
  2203.  
  2204.         DefaultModelConditionState
  2205.             Model                    = Crebain_SKN
  2206.         End
  2207.         
  2208.         IdleAnimationState
  2209.             StateName                = Idle
  2210.             Animation                = IdleA
  2211.                 AnimationName       = Crebain_SKL.Crebain_IDL
  2212.                 AnimationMode       = LOOP
  2213.                 AnimationBlendTime  = 30
  2214.             End
  2215.             Flags                        = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE
  2216.         End
  2217.         
  2218.         AnimationState                = JUST_BUILT
  2219.             StateName                = State_JustBuilt
  2220.             Animation
  2221.                 AnimationName        = Crebain_SKL.Crebain_SMNA
  2222.                 AnimationMode        = ONCE
  2223.                 AnimationBlendTime    = 0
  2224.             End
  2225.         End
  2226.         
  2227.         AnimationState                = DYING DEATH_1                ; Killed
  2228.             Animation
  2229.                 AnimationName        = Crebain_SKL.Crebain_SMNB 
  2230.                 AnimationMode        = ONCE
  2231.                 AnimationBlendTime    = 15
  2232.             End
  2233.         End
  2234.         
  2235.         
  2236.         AnimationState                = MOVING
  2237.             Animation                = RunA
  2238.                 AnimationName       = Crebain_SKL.Crebain_MOV
  2239.                 AnimationMode       = LOOP
  2240.                 AnimationBlendTime  = 30
  2241. ;                Distance            = 35
  2242.             End
  2243.         End
  2244.  
  2245.         AnimationState                =    SELECTED
  2246.             StateName                =    State_Selected
  2247.             Animation                =    AtAttention
  2248.                 AnimationName        =    Crebain_SKL.Crebain_IDL
  2249.                 AnimationMode        =    LOOP
  2250.                 AnimationBlendTime  = 30
  2251.             End
  2252.         End
  2253.         
  2254.     End
  2255.         
  2256.     Draw = W3DScriptedModelDraw DustEffects
  2257.         DefaultModelConditionState
  2258.           Model = None
  2259.         End
  2260.         IdleAnimationState
  2261.         End
  2262.         AnimationState = MOVING WADING
  2263.             ParticleSysBone = None FootstepSlash
  2264.         End
  2265.         AnimationState = MOVING ACCELERATE
  2266.             ParticleSysBone = None GenericSiegeTrailDust
  2267.         End
  2268.         AnimationState = MOVING DECELERATE
  2269.             ParticleSysBone = None GenericSiegeTrailDust
  2270.         End
  2271.         AnimationState = MOVING
  2272.         End
  2273.     End
  2274.     
  2275.     ; ***DESIGN parameters ***
  2276.     Side            = Neutral
  2277.     EditorSorting    = UNIT
  2278.     ThreatLevel        = 0.0
  2279.     CommandPoints    = 0
  2280.     ShockwaveResistance = SHOCKWAVE_RESISTANCE_IMMUNE
  2281.  
  2282.     VisionRange        = 200.0
  2283.     DisplayName        = OBJECT:Crebain
  2284.     
  2285.     CommandSet        = EmptyCommandSet
  2286.  
  2287.  
  2288.     ; *** AUDIO Parameters ***
  2289.  
  2290.     EvaEnemyObjectSightedEvent = None  ; Don't bother player about this object showing up over their base -- happens too much to bother
  2291.  
  2292.     SoundAmbient = CrebainAmbientLoop
  2293.     SoundMoveStart = CrebainSelect
  2294.  
  2295.     VoiceSelect = CrebainSelect
  2296.  
  2297.  
  2298.     ; *** ENGINEERING Parameters ***
  2299.  
  2300.     RadarPriority = UNIT
  2301.     KindOf = SELECTABLE NO_COLLIDE MONSTER MOVE_ONLY HERO IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION IGNORES_SELECT_ALL SUMMONED SCORE
  2302.     SelectionPriority = SELECTION_PRIORITY_CREBAIN
  2303.     
  2304.     Body = ActiveBody ModuleTag_02
  2305.         MaxHealth         = 1500
  2306.         MaxHealthDamaged  = 750
  2307.         ;RecoveryTime      = 5000
  2308.     End
  2309.  
  2310.     Behavior = AIUpdateInterface    ModuleTag_AIUpdateInterface
  2311.     End
  2312.  
  2313.     Behavior = PhysicsBehavior        ModuleTag_PhysicsBehavior
  2314.     End
  2315.     
  2316.     LocomotorSet
  2317.         Locomotor = CrebainLocomotor
  2318.         Condition = SET_NORMAL 
  2319.         Speed     = 200
  2320.     End
  2321.     
  2322.     Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
  2323.         MinLifetime        = 60000
  2324.         MaxLifetime        = 60000
  2325.     End    
  2326.     
  2327.  
  2328.     Behavior = AttributeModifierAuraUpdate ModuleTag_FearMe
  2329.         StartsActive    = Yes ;If no, requires upgrade to turn on.
  2330.         BonusName        = EyeOfSauronFear
  2331.         RefreshDelay    = 1000
  2332.         Range            = 150.0
  2333.         ObjectFilter    = ANY +INFANTRY +CAVALRY
  2334.         TargetEnemy        = Yes
  2335.         MaxActiveRank    = 1        ;Only affects level 1 rank units
  2336.     End
  2337.     
  2338.     Behavior = AttributeModifierAuraUpdate ModuleTag_Debuff
  2339.         StartsActive    = Yes
  2340.         BonusName        = GenericDebuff
  2341.         AntiCategory    = LEADERSHIP BUFF
  2342.         Range            = 200
  2343.         RefreshDelay    = 2000
  2344.         ObjectFilter    = ANY +INFANTRY +CAVALRY -STRUCTURE -BASE_FOUNDATION -HORDE -HERO
  2345.         TargetEnemy        = Yes
  2346.     End
  2347.  
  2348.     ; Detects other stealth units
  2349.     Behavior = StealthDetectorUpdate StealthDetectorUpdateModuleTag
  2350.         DetectionRate        = 500   ; how often to rescan for stealthed things in my sight (msec)
  2351.     End
  2352.  
  2353.     Behavior = SlowDeathBehavior ModuleTag_NormalDeath            ; Nuked
  2354.         DeathTypes            = ALL
  2355.         DeathFlags            = DEATH_1
  2356.         DestructionDelay    = 2000
  2357.         SinkDelay            = 2000
  2358.         ;SinkRate            = 0.64                                ; in Dist/Sec
  2359.         Sound = INITIAL SpellGenericUnsummonFasterMS
  2360.     End
  2361.  
  2362.     Geometry = CYLINDER
  2363.     GeometryMajorRadius = 50.0
  2364.     GeometryMinorRadius = 50.0
  2365.     GeometryHeight        = 61.0
  2366.     GeometryIsSmall        = No
  2367.     ;AttackContactPoint  = X:0 Y:0 Z:60
  2368.     AttackContactPoint  = X:40 Y:40 Z:60
  2369.     AttackContactPoint  = X:-40 Y:40 Z:60
  2370.     AttackContactPoint  = X:-40 Y:-40 Z:60
  2371.     AttackContactPoint  = X:40 Y:-40 Z:60
  2372.  
  2373.     Shadow            = SHADOW_ADDITIVE_DECAL_DYNAMIC
  2374.     ShadowSizeX        = 400;
  2375.     ShadowSizeY        = 400;
  2376.     ShadowTexture    = MUSauronEye;
  2377.  
  2378.     ShadowOpacityStart = 0
  2379.     ShadowOpacityFadeInTime = 1000
  2380.     ShadowOpacityPeak = 255
  2381.     ShadowOpacityFadeOutTime = 1000
  2382.     ShadowOpacityEnd = 0
  2383.  
  2384.     ShadowOverrideLODVisibility = yes
  2385. End
  2386.  
  2387. ;---------------------------------------------------------------------------------------
  2388. ObjectReskin WildCaveBats Crebain
  2389.     ; *** ART Parameters ***
  2390.  
  2391.     ; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.
  2392.     ButtonImage        = HICaveBats
  2393.     SelectPortrait         = UPBatCloud
  2394.  
  2395.     Draw = W3DHordeModelDraw ModuleTag_01
  2396.         ; OkToChangeModelColor = Yes ; temporarily commented out to remove the house color
  2397.  
  2398.         WadingParticleSys = EntRipples
  2399.  
  2400.         StaticModelLODMode = Yes ; Will append M or L to the skin name depending on GameLOD
  2401.  
  2402.         DefaultModelConditionState
  2403.             Model                    = Bats_SKN
  2404.         End
  2405.         
  2406.         IdleAnimationState
  2407.             StateName                = Idle
  2408.             Animation                = IdleA
  2409.                 AnimationName       = Bats_SKL.Bats_IDLA
  2410.                 AnimationMode       = LOOP
  2411.                 AnimationBlendTime  = 30
  2412.             End
  2413.             Flags                        = RANDOMSTART
  2414.         End
  2415.         
  2416.         AnimationState                = JUST_BUILT
  2417.             StateName                = State_JustBuilt
  2418.             Animation
  2419.                 AnimationName        = Bats_SKL.Bats_SMNA
  2420.                 AnimationMode        = ONCE
  2421.                 AnimationBlendTime    = 0
  2422.             End
  2423.         End
  2424.         
  2425.         AnimationState                = DYING DEATH_1                ; Killed
  2426.             Animation
  2427.                 AnimationName        = Bats_SKL.Bats_SMNB 
  2428.                 AnimationMode        = ONCE
  2429.                 AnimationBlendTime    = 15
  2430.             End
  2431.         End
  2432.         
  2433.         
  2434.         AnimationState                = MOVING
  2435.             Animation                = RunA
  2436.                 AnimationName       = Bats_SKL.Bats_MOV
  2437.                 AnimationMode       = LOOP
  2438.                 AnimationBlendTime  = 30
  2439. ;                Distance            = 35
  2440.             End
  2441.         End
  2442.         
  2443.  
  2444.         AnimationState                =    SELECTED
  2445.             StateName                =    State_Selected
  2446.             Animation                =    AtAttention
  2447.                 AnimationName        =    Bats_SKL.Bats_IDLA
  2448.                 AnimationMode        =    LOOP
  2449.                 AnimationBlendTime  = 30
  2450.             End
  2451.         End
  2452.         
  2453.     End
  2454.  
  2455.     ; *** AUDIO Parameters ***
  2456.  
  2457.     SoundAmbient = CaveBatsAmbientLoop
  2458.     SoundMoveStart = CaveBatsSelect
  2459.  
  2460.     VoiceSelect = CaveBatsSelect
  2461.  
  2462.     ;--------------
  2463.     
  2464.     DisplayName = OBJECT:CaveBats
  2465. End
  2466.  
  2467. ;//---------------------------------------------------------------------------------------
  2468. Object WildBatCloud
  2469.     ;// *** ART Parameters ***
  2470.  
  2471.     ;// ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.
  2472.     ButtonImage            = HICaveBats
  2473.     SelectPortrait        = UPBatCloud    
  2474.  
  2475.     Draw = W3DHordeModelDraw ModuleTag_01
  2476.         ;// OkToChangeModelColor = Yes ; temporarily commented out to remove the house color
  2477.  
  2478.         WadingParticleSys = EntRipples
  2479.  
  2480.         StaticModelLODMode = Yes ; Will append M or L to the skin name depending on GameLOD
  2481.  
  2482.         DefaultModelConditionState
  2483.             Model                    = Bats_SKN
  2484.         End
  2485.         
  2486.         IdleAnimationState
  2487.             StateName                = Idle
  2488.             Animation                = IdleA
  2489.                 AnimationName       = Bats_SKL.Bats_IDLA
  2490.                 AnimationMode       = LOOP
  2491.                 AnimationBlendTime  = 30
  2492.             End
  2493.             Flags                    = RANDOMSTART
  2494.         End
  2495.         
  2496.         ;TransitionState       = TRANS_TO_IDLE
  2497.         ;    Animation
  2498.         ;        AnimationName     = Bats_IDLA
  2499.         ;        AnimationMode     = ONCE
  2500.         ;    End
  2501.         ;End
  2502.         
  2503.     
  2504.         AnimationState                = JUST_BUILT
  2505.             StateName                = State_JustBuilt
  2506.             Animation
  2507.                 AnimationName        = Bats_SKL.Bats_SMNA
  2508.                 AnimationMode        = ONCE
  2509.                 AnimationBlendTime    = 0
  2510.             End
  2511.         End
  2512.         
  2513.         AnimationState                = DYING DEATH_1                ; Killed
  2514.             Animation
  2515.                 AnimationName        = Bats_SKL.Bats_SMNB 
  2516.                 AnimationMode        = ONCE
  2517.                 AnimationBlendTime    = 15
  2518.             End
  2519.         End
  2520.         
  2521.         AnimationState                = MOVING
  2522.             Animation                = RunA
  2523.                 AnimationName       = Bats_SKLBats_SMNABats_MOV
  2524.                 AnimationMode       = LOOP
  2525.                 AnimationBlendTime  = 30
  2526. ;                Distance            = 35
  2527.             End
  2528.         End
  2529.  
  2530.         ;AnimationState                =    SELECTED
  2531.         ;    StateName                =    State_Selected
  2532.         ;    Animation                =    AtAttention
  2533.         ;        AnimationName        =    Bats_SKL.Bats_IDLA
  2534.         ;        AnimationMode        =    LOOP
  2535.         ;        AnimationBlendTime  =    30
  2536.         ;    End
  2537.         ;End
  2538.     End
  2539.     
  2540.     
  2541.  
  2542.     ;// ***DESIGN parameters ***
  2543.     Side                = Neutral
  2544.     EditorSorting        = UNIT
  2545.     ThreatLevel            = 0.0
  2546.     CommandPoints        = 0
  2547.     ShockwaveResistance = SHOCKWAVE_RESISTANCE_IMMUNE
  2548.  
  2549.     VisionRange            = 200.0
  2550.     DisplayName            = OBJECT:BatCloud
  2551.     
  2552.     CommandSet            = EmptyCommandSet
  2553.  
  2554.  
  2555.     ;// *** AUDIO Parameters ***
  2556.     EvaEnemyObjectSightedEvent    = None  ;// Don't bother player about this object showing up over their base -- happens too much to bother
  2557.  
  2558.     ;SoundAmbient = CrebainAmbientLoop
  2559.     ;SoundMoveStart = CrebainSelect
  2560.  
  2561.     ;VoiceSelect = CrebainSelect
  2562.  
  2563.     ;// *** ENGINEERING Parameters ***
  2564.     RadarPriority = UNIT
  2565.     KindOf = SELECTABLE NO_COLLIDE MONSTER MOVE_ONLY CLICK_THROUGH HERO IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION IGNORES_SELECT_ALL
  2566.     
  2567.     Body = ActiveBody ModuleTag_02
  2568.         MaxHealth         = 200000
  2569.         MaxHealthDamaged  = 100000        
  2570.     End
  2571.  
  2572.     Behavior = AIUpdateInterface    ModuleTag_AIUpdateInterface
  2573.     End
  2574.  
  2575.     Behavior = PhysicsBehavior        ModuleTag_PhysicsBehavior
  2576.     End
  2577.     
  2578.     Behavior = SlowDeathBehavior ModuleTag_NormalDeath            ; Nuked
  2579.         DeathTypes            = ALL
  2580.         DeathFlags            = DEATH_1
  2581.         DestructionDelay    = 2000
  2582.         SinkDelay            = 2000
  2583.         ;SinkRate            = 0.64                                ; in Dist/Sec
  2584.         Sound = INITIAL SpellGenericUnsummonFasterMS
  2585.     End
  2586.     
  2587.     
  2588.     LocomotorSet
  2589.         Locomotor = CrebainLocomotor
  2590.         Condition = SET_NORMAL 
  2591.         Speed     = 200
  2592.     End
  2593.     
  2594.     Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
  2595.         MinLifetime        = 30000
  2596.         MaxLifetime        = 30000
  2597.     End    
  2598.     
  2599.     Behavior = FireWeaponUpdate ModuleTag_PeckTheirEyesOut
  2600.         FireWeaponNugget
  2601.             WeaponName        = WildFortressBatCloudBasicWeapon
  2602.             FireDelay        = 1000
  2603.             OneShot            = No
  2604.         End
  2605.     End
  2606.  
  2607.     ;Behavior = SlowDeathBehavior ModuleTag_05
  2608.     ;    DeathTypes = ALL
  2609.     ;End
  2610.  
  2611.     Geometry            = CYLINDER
  2612.     GeometryMajorRadius = 50.0
  2613.     GeometryHeight        = 61.0
  2614.     GeometryIsSmall        = No
  2615.     ;AttackContactPoint  = X:0 Y:0 Z:60
  2616.     AttackContactPoint  = X:40 Y:40 Z:60
  2617.     AttackContactPoint  = X:-40 Y:40 Z:60
  2618.     AttackContactPoint  = X:-40 Y:-40 Z:60
  2619.     AttackContactPoint  = X:40 Y:-40 Z:60
  2620.  
  2621.     Shadow            = SHADOW_ADDITIVE_DECAL_DYNAMIC
  2622.     ShadowSizeX        = 400
  2623.     ShadowSizeY        = 400
  2624.     ShadowTexture    = MUSauronEye
  2625.  
  2626.     ShadowOpacityStart            = 0
  2627.     ShadowOpacityFadeInTime        = 1000
  2628.     ShadowOpacityPeak            = 255
  2629.     ShadowOpacityFadeOutTime    = 1000
  2630.     ShadowOpacityEnd            = 0
  2631.  
  2632.     ShadowOverrideLODVisibility = yes
  2633. End
  2634.  
  2635. ;//---------------------------------------------------------------------------------------
  2636. Object IsengardMurderOfCrows
  2637.     ;// *** ART Parameters ***
  2638.  
  2639.     ;// ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.
  2640.     ButtonImage            = HICrebain
  2641.     SelectPortrait         = UPCrebain   
  2642.  
  2643.     Draw = W3DHordeModelDraw ModuleTag_01
  2644.         ;// OkToChangeModelColor = Yes ; temporarily commented out to remove the house color
  2645.  
  2646.         WadingParticleSys = EntRipples
  2647.  
  2648.         StaticModelLODMode = Yes ; Will append M or L to the skin name depending on GameLOD
  2649.  
  2650.         DefaultModelConditionState
  2651.             Model                    = Crebain_SKN
  2652.         End
  2653.         
  2654.         IdleAnimationState
  2655.             StateName                = Idle
  2656.             Animation                = IdleA
  2657.                 AnimationName       = Crebain_SKL.Crebain_IDLA
  2658.                 AnimationMode       = LOOP
  2659.                 AnimationBlendTime  = 30
  2660.             End
  2661.             Flags                        = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE
  2662.         End
  2663.         
  2664.         AnimationState                = MOVING
  2665.             Animation                = RunA
  2666.                 AnimationName       = Crebain_SKL.Crebain_MOV
  2667.                 AnimationMode       = LOOP
  2668.                 AnimationBlendTime  = 30
  2669. ;                Distance            = 35
  2670.             End
  2671.         End
  2672.  
  2673.         AnimationState                =    SELECTED
  2674.             StateName                =    State_Selected
  2675.             Animation                =    AtAttention
  2676.                 AnimationName        =    Crebain_SKL.Crebain_IDLA
  2677.                 AnimationMode        =    LOOP
  2678.                 AnimationBlendTime  =    30
  2679.             End
  2680.         End
  2681.     End
  2682.  
  2683.     ;// ***DESIGN parameters ***
  2684.     Side                = Neutral
  2685.     EditorSorting        = UNIT
  2686.     ThreatLevel            = 0.0
  2687.     CommandPoints        = 0
  2688.     ShockwaveResistance = SHOCKWAVE_RESISTANCE_IMMUNE
  2689.  
  2690.     VisionRange            = 200.0
  2691.     DisplayName            = OBJECT:MurderOfCrows
  2692.     
  2693.     CommandSet            = EmptyCommandSet
  2694.  
  2695.  
  2696.     ;// *** AUDIO Parameters ***
  2697.     EvaEnemyObjectSightedEvent    = None  ;// Don't bother player about this object showing up over their base -- happens too much to bother
  2698.  
  2699.     ;SoundAmbient = CrebainAmbientLoop
  2700.     ;SoundMoveStart = CrebainSelect
  2701.  
  2702.     ;VoiceSelect = CrebainSelect
  2703.  
  2704.     ;// *** ENGINEERING Parameters ***
  2705.     RadarPriority = UNIT
  2706.     KindOf = SELECTABLE NO_COLLIDE MONSTER MOVE_ONLY CLICK_THROUGH HERO IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION IGNORES_SELECT_ALL
  2707.     
  2708.     Body = ActiveBody ModuleTag_02
  2709.         MaxHealth         = 200000
  2710.         MaxHealthDamaged  = 100000        
  2711.     End
  2712.  
  2713.     Behavior = AIUpdateInterface    ModuleTag_AIUpdateInterface
  2714.     End
  2715.  
  2716.     Behavior = PhysicsBehavior        ModuleTag_PhysicsBehavior
  2717.     End
  2718.     
  2719.     LocomotorSet
  2720.         Locomotor = CrebainLocomotor
  2721.         Condition = SET_NORMAL 
  2722.         Speed     = 200
  2723.     End
  2724.     
  2725.     Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
  2726.         MinLifetime        = 30000
  2727.         MaxLifetime        = 30000
  2728.     End    
  2729.     
  2730.     Behavior = FireWeaponUpdate ModuleTag_PeckTheirEyesOut
  2731.         FireWeaponNugget            
  2732.             WeaponName        = IsengardFortressMurderOfCrowsBasicWeapon
  2733.             FireDelay        = 1000
  2734.             OneShot            = No
  2735.         End
  2736.     End
  2737.  
  2738.     Behavior = SlowDeathBehavior ModuleTag_05
  2739.         DeathTypes = ALL
  2740.         Sound = INITIAL SpellGenericUnsummonFasterMS
  2741.     End
  2742.  
  2743.     Geometry            = CYLINDER
  2744.     GeometryMajorRadius = 50.0
  2745.     GeometryMinorRadius = 50.0
  2746.     GeometryHeight        = 61.0
  2747.     GeometryIsSmall        = No
  2748.     ;AttackContactPoint  = X:0 Y:0 Z:60
  2749.     AttackContactPoint  = X:40 Y:40 Z:60
  2750.     AttackContactPoint  = X:-40 Y:40 Z:60
  2751.     AttackContactPoint  = X:-40 Y:-40 Z:60
  2752.     AttackContactPoint  = X:40 Y:-40 Z:60
  2753.  
  2754.     Shadow            = SHADOW_ADDITIVE_DECAL_DYNAMIC
  2755.     ShadowSizeX        = 400;
  2756.     ShadowSizeY        = 400;
  2757.     ShadowTexture    = MUSauronEye;
  2758.  
  2759.     ShadowOpacityStart            = 0
  2760.     ShadowOpacityFadeInTime        = 1000
  2761.     ShadowOpacityPeak            = 255
  2762.     ShadowOpacityFadeOutTime    = 1000
  2763.     ShadowOpacityEnd            = 0
  2764.  
  2765.     ShadowOverrideLODVisibility = yes
  2766. End
  2767.  
  2768. ;------------------------------------------------------------------------------
  2769. ;Creating this peasant will randomize between several variations of the peasant.
  2770. ;------------------------------------------------------------------------------
  2771. Object RohanPeasant
  2772.  
  2773. ;    SelectPortrait    = UPRohan_Peasant
  2774.  
  2775.     Draw = W3DScriptedModelDraw ModuleTag_01  
  2776.         DefaultModelConditionState
  2777.             ;Give it a model so it'll show up in WB
  2778.             Model               = RUPsnt_1_SKN
  2779.             Skeleton            = RUPsnt_1_SKL
  2780.         End
  2781.     End
  2782.  
  2783.     ;***** IMPORTANT NOTE! ***************************************************************    
  2784.     ;Certain Upgrades and costs may need to be propagated from here. One example was veterancy
  2785.     ;overlays.
  2786.     ;*************************************************************************************    
  2787.  
  2788.     Side = Neutral
  2789.     EditorSorting = UNIT
  2790.     BuildVariations = RohanPeasant1 RohanPeasant3 RohanPeasant4    ; RohanPeasant2 <- removed from the game 
  2791.     KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT SWARM_DOZER GRAB_AND_DROP DOZER 
  2792.     
  2793.   ;Shadow = SHADOW_DECAL
  2794.   ;ShadowSizeX = 24;
  2795.   ;ShadowSizeY = 24;
  2796.   ;ShadowTexture = ShadowI;
  2797.  
  2798. End
  2799.  
  2800.  
  2801. ;;------------------------------------------------------------------------------
  2802. ; aka Peasant1
  2803. Object RohanPeasant1    ; ///  OLD MAN ///
  2804.     ; ***ART Parameters ***
  2805.     
  2806. ;    SelectPortrait    = UPRohan_Peasant
  2807.     
  2808.     Draw = W3DScriptedModelDraw ModuleTag_01  
  2809.  
  2810.         StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
  2811.             
  2812.           OkToChangeModelColor = Yes
  2813.           
  2814.         RandomTexture = RUPeasant01.tga 0 RUPeasant01.tga
  2815.         RandomTexture = RUPeasant01_Alt.tga 0 RUPeasant01.tga
  2816.  
  2817. ;;====================== MODELS ================================================================    
  2818.         DefaultModelConditionState
  2819.             Model               = RUPsnt_1_SKN
  2820.             Skeleton            = RUPsnt_1_SKL
  2821.         End
  2822.         
  2823. ;;================== ANIMATIONS =================================================================        
  2824.  
  2825. ;;------------------  DYING -------------------------------------------------------------
  2826.  
  2827.         AnimationState                        = PASSENGER
  2828.             Animation                        = FLLA
  2829.                 AnimationName                = RUPsnt_1_FLLA
  2830.                 AnimationMode                = LOOP
  2831.             End
  2832.         End
  2833.         
  2834.         AnimationState        = THROWN_PROJECTILE
  2835.             Animation           = FLYA
  2836.                 AnimationName     = RUPsnt_1_FLYA
  2837.                 AnimationMode     = LOOP
  2838.             End
  2839.         End
  2840.         
  2841.         AnimationState                        = FREEFALL
  2842.             Animation                        = FLYA
  2843.                 AnimationName                = RUPsnt_1_FLYA
  2844.                 AnimationMode                = LOOP
  2845.                 AnimationSpeedFactorRange    = 0.7    0.7
  2846.                 AnimationBlendTime            = 10
  2847.             End
  2848.         End
  2849.         
  2850.         AnimationState        = STUNNED_FLAILING
  2851.             Animation           = FLYA
  2852.                 AnimationName     = RUPsnt_1_FLYA
  2853.                 AnimationMode      = LOOP
  2854.             End
  2855.             Flags               = RANDOMSTART
  2856.         End
  2857.         
  2858.         AnimationState                        = DYING SPLATTED
  2859.             Animation                        = LNDA
  2860.                 AnimationName                = RUPsnt_1_LNDA
  2861.                 AnimationMode                = ONCE
  2862.             End
  2863.         End
  2864.         
  2865.         AnimationState        = DYING
  2866.             Animation           = DIEA
  2867.                 AnimationName     = RUPsnt_1_DIEA
  2868.                 AnimationMode     = ONCE
  2869.             End
  2870.             Animation           = DIEB
  2871.                 AnimationName     = RUPsnt_1_DIEB
  2872.                 AnimationMode     = ONCE
  2873.             End            
  2874.         End
  2875.  
  2876.         AnimationState        = STUNNED_STANDING_UP
  2877.             Animation           = GTPA
  2878.                 AnimationName     = RUPsnt_1_GTPA
  2879.                 AnimationMode     = ONCE
  2880.                 AnimationSpeedFactorRange = 1.5 1.5
  2881.             End
  2882. ;            Animation           = GTPB
  2883. ;                AnimationName     = RUPsnt_1_GTPB
  2884. ;                AnimationMode     = ONCE
  2885. ;                                AnimationSpeedFactorRange = 1.5 1.5
  2886. ;            End            
  2887.         End
  2888.         
  2889.         AnimationState        = STUNNED
  2890.             Animation           = LNDA
  2891.                 AnimationName     = RUPsnt_1_LNDA
  2892.                 AnimationMode     = ONCE
  2893.             End
  2894.         End        
  2895.                 
  2896.         AnimationState        = MOVING FIRING_OR_PREATTACK_A
  2897.             ShareAnimation        = Yes
  2898.             Animation           = RunAndFire
  2899.                 AnimationName       = RUPsnt_1_ATRA
  2900.                 AnimationMode       = LOOP
  2901.             End
  2902.             Flags               = RANDOMSTART 
  2903.         End
  2904.  
  2905.  
  2906.     ;;------------------ ATTACKING ---------------------------------------
  2907.  
  2908.         AnimationState                =    FIRING_OR_PREATTACK_A
  2909.             Animation
  2910.                 AnimationName        =    RUPsnt_1_ATKA 
  2911.                 AnimationMode        =    LOOP
  2912. ;                UseWeaponTiming        =    Yes
  2913.             End
  2914.             Animation
  2915.                 AnimationName        =    RUPsnt_1_ATKB
  2916.                 AnimationMode        =    LOOP
  2917. ;                UseWeaponTiming        =    Yes
  2918.             End            
  2919.         End
  2920.         
  2921. ;;------------------ MOVING ------------------------------------------
  2922.     
  2923. ;;===== BACKUP
  2924.         AnimationState                = MOVING BACKING_UP
  2925.             Animation                = BAKA
  2926.                 AnimationName        = RUPsnt_1_BAKA
  2927.                 AnimationMode        = LOOP
  2928.             End
  2929. ;            Animation                = BAKB
  2930. ;                AnimationName        = RUPsnt_1_BAKB
  2931. ;                AnimationMode        = LOOP
  2932. ;            End
  2933. ;            Animation                = BAKC
  2934. ;                AnimationName        = RUPsnt_1_BAKC
  2935. ;                AnimationMode        = LOOP
  2936. ;            End                                
  2937.         End
  2938.  
  2939. ; OBSOLETE        
  2940. ;        AnimationState                = MOVING PANICKING
  2941. ;            Animation                = RUNM
  2942. ;                AnimationName        = RUPsnt_1_MFDA
  2943. ;                AnimationMode        = LOOP
  2944. ;            End
  2945. ;            Flags                    = RANDOMSTART
  2946. ;            ;;ParticleSysBone            = None InfantryDustTrails
  2947. ;        End
  2948.         
  2949.         AnimationState                = MOVING WANDER
  2950.             Animation                = WLKA
  2951.                 AnimationName        = RUPsnt_1_WLKA
  2952.                 AnimationMode        = LOOP
  2953.             End
  2954. ;            Animation                = WLKE
  2955. ;                AnimationName        = RUPsnt_1_WLKE
  2956. ;                AnimationMode        = LOOP
  2957. ;            End
  2958.             
  2959.             ;;ParticleSysBone     = None InfantryDustTrails
  2960.         End
  2961.         
  2962.         AnimationState                = MOVING
  2963.             Animation                = RUNA
  2964.                 AnimationName        = RUPsnt_1_RUNA
  2965.                 AnimationMode        = LOOP
  2966. ;                AnimationSpeedFactorRange = 0.8 0.8
  2967.             End
  2968.             Animation                = RUNC
  2969.                 AnimationName        = RUPsnt_1_RUNC
  2970.                 AnimationMode        = LOOP
  2971. ;                AnimationSpeedFactorRange = 0.8 0.8
  2972.             End            
  2973.             Flags                    = RANDOMSTART
  2974.             ParticleSysBone            = None InfantryDustTrails
  2975.         End
  2976.         
  2977. ; WORKING        
  2978.         AnimationState = ACTIVELY_CONSTRUCTING DEPLOYED ; building from too far to smack his hammer
  2979.             Animation                =    Stand
  2980.                 AnimationName        =    RUPsnt_1_IDLA 
  2981.                 AnimationMode        =    LOOP
  2982.             End
  2983.         End
  2984.  
  2985.         
  2986.         AnimationState                = ACTIVELY_CONSTRUCTING
  2987.             Animation                = WRKA
  2988.                 AnimationName        = RUPsnt_1_WRKA
  2989.                 AnimationMode        = ONCE
  2990.             End
  2991.             Animation                = WRKD
  2992.                 AnimationName        = RUPsnt_1_WRKD
  2993.                 AnimationMode        = ONCE
  2994.             End
  2995.             Flags                    = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE
  2996.         End    
  2997.     
  2998. ;;------------ HIT REACTION -----------------------------------------------------
  2999.  
  3000.         AnimationState = HIT_REACTION
  3001.             Animation = Hit_Level_1_a
  3002.                 AnimationName = RUPsnt_1_HITA
  3003.                 AnimationMode = ONCE
  3004.             End
  3005.         End
  3006.  
  3007. ;;------------- EMOTIONS ---------------------------------------------
  3008.  
  3009.             
  3010.  
  3011. ;;======== POINTING
  3012.  
  3013.         AnimationState                = EMOTION_POINTING
  3014.             Animation                = Pointing1
  3015.                 AnimationName        = RUPsnt_1_PNTA
  3016.                 AnimationMode        = LOOP
  3017.                 AnimationSpeedFactorRange = 0.75 1.25
  3018.             End
  3019.         End
  3020.  
  3021. ;;======= TERROR
  3022.         AnimationState                = EMOTION_AFRAID
  3023.             Animation                = &&FEAR&&
  3024.                 AnimationName        = RUPsnt_1_FERA
  3025.                 AnimationMode        = LOOP
  3026.             End
  3027.         End
  3028.         
  3029.         AnimationState                = EMOTION_TAUNTING
  3030.             Animation                = TNTA
  3031.                 AnimationName        = RUPsnt_1_TNTA
  3032.                 AnimationMode        = ONCE
  3033.             End
  3034.             Animation                = TNTB
  3035.                 AnimationName        = RUPsnt_1_TNTB
  3036.                 AnimationMode        = ONCE
  3037.             End    
  3038.             Flags                    = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE        
  3039.         End
  3040.  
  3041. ;;====== CELEBRATING        
  3042.             AnimationState                = EMOTION_CELEBRATING
  3043.                 Animation                = CHRA
  3044.                     AnimationName        = RUPsnt_1_CHRA
  3045.                     AnimationMode        = ONCE
  3046.                 End
  3047.                 Animation                = CHRB
  3048.                     AnimationName        = RUPsnt_1_CHRB
  3049.                     AnimationMode        = ONCE
  3050.                 End
  3051.                 Flags                    = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE
  3052.             End
  3053.             
  3054.             AnimationState                = EMOTION_ALERT
  3055.                 StateName                = STATE_Alert
  3056.                 Animation                = &&ALERT&&
  3057.                     AnimationName        = RUPsnt_1_IDLA
  3058.                     AnimationMode        = LOOP
  3059.                 End
  3060.             End
  3061.             
  3062.     ;;------------- SELECTED ---------------------------------------------
  3063.  
  3064.         AnimationState                =    SELECTED
  3065.             StateName                =    STATE_Selected
  3066.             SimilarRestart            =   Yes            
  3067.             Animation                =    ATNB
  3068.                 AnimationName        =    RUPsnt_1_ATNB
  3069.                 AnimationMode        =    LOOP
  3070.             End
  3071.             BeginScript
  3072.                 Prev = CurDrawablePrevAnimationState()
  3073.                 if Prev == "STATE_Idle" then CurDrawableSetTransitionAnimState("TRANS_IdleToSelected") end
  3074.                 if Prev == "STATE_Selected" then CurDrawableSetTransitionAnimState("TRANS_IdleToSelected") end
  3075.             EndScript
  3076.         End    
  3077.  
  3078.     ;;--------------- IDLE STATES -----------------------------------------------------------------    
  3079.         IdleAnimationState
  3080.             StateName            =    STATE_Idle
  3081.             Animation           = IDLA
  3082.                 AnimationName     = RUPsnt_1_IDLA
  3083.                 AnimationMode     = ONCE
  3084.                 AnimationPriority = 20
  3085.             End
  3086.  
  3087.             Animation           = IDLC
  3088.                 AnimationName     = RUPsnt_1_IDLC
  3089.                 AnimationMode     = ONCE
  3090.                 AnimationPriority = 1
  3091.             End
  3092.  
  3093.             Animation           = IDLD
  3094.                 AnimationName     = RUPsnt_1_IDLD
  3095.                 AnimationMode     = ONCE
  3096.                 AnimationPriority = 2
  3097.             End
  3098.  
  3099.             Animation           = IDLE
  3100.                 AnimationName     = RUPsnt_1_IDLE
  3101.                 AnimationMode     = ONCE
  3102.                 AnimationPriority = 1
  3103.             End
  3104.  
  3105.             Animation           = IDLF
  3106.                 AnimationName     = RUPsnt_1_IDLF
  3107.                 AnimationMode     = ONCE
  3108.                 AnimationPriority = 1
  3109.             End
  3110.  
  3111.             Animation           = IDLG
  3112.                 AnimationName     = RUPsnt_1_IDLG
  3113.                 AnimationMode     = ONCE
  3114.                 AnimationPriority = 1                
  3115.             End
  3116.             
  3117.             BeginScript
  3118.                 Prev = CurDrawablePrevAnimationState()
  3119.                 if Prev == "STATE_Selected" then CurDrawableSetTransitionAnimState("TRANS_SelectedToIdle") end
  3120.             EndScript        
  3121.         End
  3122.         
  3123.     ;---Transitions-------------------------------------        
  3124.  
  3125.         TransitionState       = TRANS_SelectedToIdle    
  3126.             Animation           = ATNC
  3127.                 AnimationName     = RUPsnt_1_ATNC
  3128.                 AnimationMode     = ONCE
  3129.                 AnimationSpeedFactorRange = 0.7 1.2
  3130.             End
  3131.         End
  3132.         
  3133.         TransitionState                =    TRANS_IdleToSelected
  3134.             Animation                =    ATNA
  3135.                 AnimationName        =    RUPsnt_1_ATNA
  3136.                 AnimationMode        =    ONCE
  3137.                 AnimationSpeedFactorRange = 0.7 1.2
  3138.             End
  3139.         End    
  3140.         
  3141.     End
  3142.     
  3143.     ; ***DESIGN parameters ***
  3144.     Side = Neutral
  3145.     EditorSorting = UNIT
  3146.     ThreatLevel = 1.0
  3147.     TransportSlotCount = TRANSPORTSLOTCOUNT_UNIT
  3148.     
  3149.     CommandPoints = 2
  3150.  
  3151.     CommandSet = PeasantCommandSet
  3152.     
  3153.     BountyValue = ROHAN_PEASANT_BOUNTY_VALUE
  3154.  
  3155.     ;;;; WEAPON SETS ;;;;
  3156.     WeaponSet
  3157.         Conditions          = None 
  3158.         Weapon              = PRIMARY        RohanFighterSword
  3159.     End
  3160.     
  3161.     WeaponSet
  3162.         Conditions            = PLAYER_UPGRADE
  3163.         Weapon                = PRIMARY        RohanFighterSwordUpgraded
  3164.     End
  3165.     
  3166.     ;;;; ARMOR SETS ;;;;    
  3167.     ArmorSet
  3168.         Conditions      = None
  3169.         Armor           = PeasantArmor
  3170.         DamageFX        = NormalDamageFX
  3171.     End
  3172.  
  3173.     ArmorSet
  3174.         Conditions      = PLAYER_UPGRADE
  3175.         Armor           = SoldierHeavyArmor
  3176.         DamageFX        = NormalDamageFX
  3177.     End
  3178.  
  3179.     VisionRange = VISION_STANDARD_MELEE
  3180.     ShroudClearingRange = SHROUD_CLEAR_STANDARD
  3181.             
  3182.     DisplayName = OBJECT:RohanPeasant
  3183.     CrushableLevel = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  3184.     CrushRevengeWeapon = BasicInfantryCrushRevenge
  3185.     EquivalentTo = RohanPeasant    
  3186.  
  3187.  
  3188.     ; *** AUDIO Parameters ***;
  3189.  
  3190.     VoiceAttack                 = PeasantMaleVoiceAttack
  3191.     VoiceAttackCharge             = PeasantMaleVoiceAttackCharge
  3192.     VoiceAttackStructure             = PeasantMaleVoiceAttackBuilding
  3193.     VoiceAttackMachine             = PeasantMaleVoiceAttack
  3194.     VoiceCreated                 = PeasantMaleVoiceSalute
  3195.     VoiceFullyCreated             = PeasantMaleVoiceSalute
  3196.     VoiceGuard                    = PeasantMaleVoiceMove
  3197.     VoiceMove                     = PeasantMaleVoiceMove
  3198.     VoiceMoveToCamp                 = PeasantMaleVoiceMoveCamp
  3199.     VoiceMoveWhileAttacking         = PeasantMaleVoiceDisengage
  3200.     VoicePriority                = 30
  3201.     VoiceRetreatToCastle             = PeasantMaleVoiceRetreat
  3202.     VoiceSelect                 = PeasantMaleVoiceSelectMS
  3203.     VoiceSelectBattle              = PeasantMaleVoiceSelectBattle
  3204.     
  3205.     VoiceEnterStateAttack             = PeasantMaleVoiceEnterStateAttack
  3206.     VoiceEnterStateAttackCharge         = PeasantMaleVoiceEnterStateAttackCharge
  3207.     VoiceEnterStateAttackStructure     = PeasantMaleVoiceEnterStateAttackBuilding
  3208.     VoiceEnterStateAttackMachine         = PeasantMaleVoiceEnterStateAttackBuilding
  3209.     VoiceEnterStateMove             = PeasantMaleVoiceEnterStateMove
  3210.     VoiceEnterStateMoveToCamp         = PeasantMaleVoiceEnterStateMoveCamp
  3211.     VoiceEnterStateMoveWhileAttacking     = PeasantMaleVoiceEnterStateDisengage
  3212.     VoiceEnterStateRetreatToCastle    = PeasantMaleVoiceEnterStateRetreat
  3213.         
  3214.     SoundImpact                    = ImpactHorse
  3215.     
  3216.     UnitSpecificSounds
  3217.         VoiceGarrison            = PeasantMaleVoiceGarrison    
  3218.         VoiceRepair                = PeasantMaleVoiceRepair
  3219.     End
  3220.  
  3221.     #include "..\includes\StandardUnitEvaEvents.inc"
  3222.  
  3223.     ClientBehavior = RandomSoundSelectorClientBehavior ModuleTag_RSSCB
  3224.         ; This is a counter to the similar module in the RohanPeasant4. Without this,
  3225.         ; the larger a group, the more likely it is a woman's voice will be heard; until
  3226.         ; a 100 peasant group will basically ALWAYS be playing a woman's voice. This ensures that a 
  3227.         ; large group of mixed peasants will still be led by a man. [Sorry, but that's
  3228.         ; Middle Earth for you -- just ask Eowyn!]
  3229.         Chance = 5% 
  3230.         RerollOnEveryFrame = No ; For consistancy
  3231.         VoicePriority = 32 ; Bossy man is high enough to overcome "bossy" women
  3232.     End
  3233.     
  3234.     ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
  3235.         MaxUpdateRangeCap = 800
  3236.         AnimationSound = Sound:BodyFallGeneric1        Animation:RUPsnt_1_SKL.RUPsnt_1_DIEA    Frames:45
  3237.         AnimationSound = Sound:BodyFallGenericNoArmor    Animation:RUPsnt_1_SKL.RUPsnt_1_DIEB    Frames:44
  3238.         AnimationSound = Sound:BodyFallGeneric1        Animation:RUPsnt_1_SKL.RUPsnt_1_LNDA    Frames:4
  3239.     End
  3240.  
  3241.  
  3242.     ; *** ENGINEERING Parameters ***
  3243.     RadarPriority = UNIT
  3244.     KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT DOZER SWARM_DOZER GRAB_AND_DROP
  3245.     
  3246. ;    CommandSet = GondorWorkerCommandSet
  3247.     
  3248.     Body = ActiveBody ModuleTag_02
  3249.         CheerRadius       = EMOTION_CHEER_RADIUS
  3250.         MaxHealth         = ROHAN_PEASANT_HEALTH                ;BALANCE Peasant Health
  3251.         MaxHealthDamaged  = ROHAN_PEASANT_HEALTH_DAMAGED            
  3252.         ;RecoveryTime      = ROHAN_PEASANT_HEALTH_RECOVERY_TIME        
  3253.     End
  3254.     
  3255.     Behavior = WorkerAIUpdate ModuleTag_10
  3256.         AutoAcquireEnemiesWhenIdle        = Yes ATTACK_BUILDINGS
  3257.         RepairHealthPercentPerSecond    = 0.2%    ; % of max health to repair each second
  3258.         AILuaEventsList                    = StandardPeasantFunctions
  3259.         AttackPriority                =     AttackPriority_Infantry
  3260.         SpecialContactPoints           = Repair
  3261.     End
  3262.  
  3263.     LocomotorSet
  3264.         Locomotor = HumanLocomotor
  3265.         Condition = SET_NORMAL 
  3266.         Speed     = NORMAL_GOOD_INFANTRY_MEMBER_SPEED    
  3267.     End
  3268.  
  3269.     LocomotorSet
  3270.         Locomotor = HumanWanderLocomotor
  3271.         Condition = SET_WANDER
  3272.         Speed     = NORMAL_GOOD_INFANTRY_MEMBER_SPEED    
  3273.     End 
  3274.  
  3275.     Behavior = PhysicsBehavior ModuleTag_04
  3276.         GravityMult = 1.0
  3277.     End
  3278.     
  3279.     Behavior = SlowDeathBehavior ModuleTag_05
  3280.         DeathTypes = ALL
  3281.         SinkDelay = 3000
  3282.         SinkRate = 1.0     ; in Dist/Sec
  3283.         DestructionDelay = 8000
  3284.             Sound = INITIAL PeasantMaleVoiceDie
  3285.     End
  3286.     
  3287.      Behavior = WeaponSetUpgrade ModuleTag_Weaponpgrade
  3288.         TriggeredBy = Upgrade_RohanForgedBladesForPeasants
  3289.     End
  3290.  
  3291.      Behavior = ArmorUpgrade ModuleTag_ArmorUpgrade
  3292.         TriggeredBy = Upgrade_RohanHeavyArmorForPeasants
  3293.         ArmorSetFlag            = PLAYER_UPGRADE
  3294.     End
  3295.  
  3296.     ;; Don't remove this. It's required for newly spawned members
  3297.     ;; It does not change the armor set, but it allows us to accept the Drafted Upgrade
  3298.      Behavior = ArmorUpgrade ModuleTag_ArmorUpgradeDrafted
  3299.         TriggeredBy = Upgrade_Drafted
  3300.         IgnoreArmorUpgrade = Yes ; does not trigger any armor sets
  3301.     End
  3302.  
  3303.     Behavior = RepairSpecialPower ModuleTag_RepairSPecialPower
  3304.         SpecialPowerTemplate      = SpecialRepairStructure
  3305.     End        
  3306.  
  3307.     ;-------------------------------------------------------------------------------
  3308.     ;
  3309.     ;    Sub objects upgrade.
  3310.     ;
  3311.     Behavior = SubObjectsUpgrade Armor_Upgrade
  3312.         TriggeredBy    = Upgrade_RohanHeavyArmorForPeasants
  3313.         ShowSubObjects    = HELMET
  3314.         HideSubObjects    = HAMMER
  3315.         UpgradeTexture    = RUPeasant01.tga 0 RUPeasant01_HA.tga
  3316.         UpgradeTexture    = RUPeasant01_Alt.tga 0 RUPeasant01_HA.tga
  3317.         UpgradeTexture    = RUPeasantWep.tga 0 RUPeasantWep_HA.tga
  3318.         UpgradeTexture    = RUPeasantWep_L.tga 0 RUPeasantWep_HA.tga
  3319.         RecolorHouse    = Yes
  3320.         ExcludeSubobjects = Forged_Blade
  3321.     End
  3322.     
  3323.     Behavior = SubObjectsUpgrade ForgedBlade_Upgrade
  3324.         TriggeredBy        = Upgrade_RohanForgedBladesForPeasants
  3325.         ShowSubObjects    = FORGED_BLADE SWORD            ; Forged blade will give us a sword too, as we'll get a weapon upgrade.
  3326.         HideSubObjects    = HAMMER
  3327.     End
  3328.     
  3329.     Behavior = SubObjectsUpgrade Drafted_Upgrade
  3330.         TriggeredBy        = Upgrade_Drafted
  3331.         ShowSubObjects    = SWORD SHIELD
  3332.         HideSubObjects    = HAMMER
  3333.         ;FXListUpgrade   = FX_Draft
  3334.         ;Sound = INITIAL PeasantVoiceDraftUpgrade            ;this doesn't work
  3335.     End
  3336.     ;-------------------------------------------------------------------------------
  3337.  
  3338.  
  3339.     Behavior = SquishCollide ModuleTag_06
  3340.         ;nothing
  3341.     End
  3342.     
  3343.     Behavior = HordeMemberCollide ModuleTag_HMC
  3344.         ;nothing
  3345.     End
  3346.  
  3347.     Behavior = BezierProjectileBehavior ModuleTag_08 ; Module starts asleep, and wakes up when thrown.
  3348.         FirstHeight = 24  ; Height of Bezier control points above highest intervening terrain
  3349.         SecondHeight = 24
  3350.         FirstPercentIndent = 30% ; Percentage of shot distance control points are placed
  3351.         SecondPercentIndent = 70%
  3352.         TumbleRandomly = Yes
  3353.  
  3354.         CrushStyle = Yes ; I don't detonate, I just hit
  3355.         DieOnImpact = Yes
  3356.         BounceCount = 1   ; When I hit the ground, I'll arc again
  3357.         BounceDistance = 40 ; this far
  3358.         BounceFirstHeight = 16  ; Height of Bezier control points above highest intervening terrain
  3359.         BounceSecondHeight = 16
  3360.         BounceFirstPercentIndent = 20% ; Percentage of shot distance control points are placed
  3361.         BounceSecondPercentIndent = 80%
  3362.  
  3363.         GroundHitFX       = FX_ThrownRockGroundHit
  3364.         GroundBounceFX    = FX_ThrownRockBounceHit
  3365.     End
  3366.  
  3367.     Behavior = HitReactionBehavior HitReactionBehaviorModuleTag
  3368.         HitReactionLifeTimer1 = 2333 ; level 1 (light  damage)  hit reaction animations in ms
  3369.         HitReactionLifeTimer2 = 2333 ; level 2 (medium damage)  hit reaction animations in ms
  3370.         HitReactionLifeTimer3 = 2333 ; level 3 (heavy  damage)  hit reaction animations in ms
  3371.  
  3372.         HitReactionThreshold1 = 5.0   ; level 1 (light  damage) threshold trigger
  3373.         HitReactionThreshold2 = 25.0  ; level 2 (medium damage) threshold trigger
  3374.         HitReactionThreshold3 = 50.0  ; level 3 (heavy  damage) threshold trigger
  3375.  
  3376.         FastHitsResetReaction = Yes    ;If set -- when hits occur faster than the reaction animations, it will reset the animation. (like getting riddled with machine gun bullets)
  3377.     End
  3378.  
  3379.     ; Tie into LargeGroupAudio system
  3380.     Behavior = LargeGroupAudioUpdate ModuleTag_LGAU
  3381.         Key = Human Unit Peasant Peasant_Male
  3382.     End
  3383.  
  3384.     Geometry = CYLINDER
  3385.     GeometryMajorRadius = 8.0
  3386.     GeometryMinorRadius = 8.0
  3387.     GeometryHeight = 19.2
  3388.     GeometryIsSmall = Yes
  3389.  
  3390.   Shadow = SHADOW_DECAL
  3391.   ShadowSizeX = 19;
  3392.   ShadowSizeY = 19;
  3393.   ShadowTexture = ShadowI;
  3394.  
  3395. End
  3396.  
  3397. ;;------------------------------------------------------------------------------
  3398. ; aka Peasant2  /// YOUNG BOY ////
  3399. ChildObject RohanPeasant2 RohanPeasant1
  3400.     ; ***ART Parameters ***
  3401.     
  3402.     Draw = W3DScriptedModelDraw ModuleTag_01  
  3403.  
  3404.         StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
  3405.             
  3406.           OkToChangeModelColor = Yes
  3407.           
  3408.         RandomTexture = RUPeasant02.tga 0
  3409.         RandomTexture = RUPeasant02_Alt.tga 0
  3410.     
  3411. ;;====================== MODELS ================================================================    
  3412.         DefaultModelConditionState
  3413.             Model               = RUPsnt_2_SKN
  3414.             Skeleton            = RUPsnt_2_SKL
  3415.         End
  3416.  
  3417. ;;================== ANIMATIONS =================================================================        
  3418.  
  3419. ;;------------------  DYING -------------------------------------------------------------
  3420.         
  3421.         AnimationState        = PASSENGER
  3422.             Animation           = FLLA
  3423.                 AnimationName     = RUPsnt_2_FLLA
  3424.                 AnimationMode     = LOOP
  3425.             End
  3426.         End
  3427.         
  3428.         AnimationState        = THROWN_PROJECTILE
  3429.             Animation           = FLYA
  3430.                 AnimationName     = RUPsnt_2_FLYA
  3431.                 AnimationMode     = LOOP
  3432.             End
  3433.         End
  3434.         
  3435.         
  3436.  
  3437.         AnimationState        = DYING
  3438.             Animation           = DIEA
  3439.                 AnimationName     = RUPsnt_2_DIEA
  3440.                 AnimationMode     = ONCE
  3441.             End
  3442.         End
  3443.         
  3444.         AnimationState        = STUNNED_STANDING_UP
  3445.             Animation           = GTPA
  3446.                 AnimationName     = RUPsnt_2_GTPA
  3447.                 AnimationMode     = ONCE
  3448.                 AnimationSpeedFactorRange = 1.5 1.5
  3449.             End
  3450.         End
  3451.         
  3452.         AnimationState        = STUNNED
  3453.             Animation           = LNDA
  3454.                 AnimationName     = RUPsnt_2_LNDA
  3455.                 AnimationMode     = ONCE
  3456.             End
  3457.         End
  3458.         
  3459.         AnimationState        = STUNNED
  3460.             Animation           = LNDA
  3461.                 AnimationName     = RUPsnt_2_LNDA
  3462.                 AnimationMode     = ONCE
  3463.             End
  3464.         End    
  3465.  
  3466. ;;------------------ ATTACKING ---------------------------------------
  3467.  
  3468.         AnimationState                =    FIRING_OR_PREATTACK_A
  3469.             Animation
  3470.                 AnimationName        =    RUPsnt_2_ATKA 
  3471.                 AnimationMode        =    LOOP
  3472. ;                UseWeaponTiming        =    Yes
  3473.             End
  3474.         End
  3475.  
  3476. ;;------------------ MOVING ------------------------------------------
  3477.  
  3478. ;;===== BACKUP
  3479.         AnimationState                = MOVING BACKING_UP
  3480.             Animation                = &&TERROR&&
  3481.                 AnimationName        = RUPsnt_2_IDLA
  3482.                 AnimationMode        = LOOP
  3483.             End
  3484.         End
  3485.  
  3486. ; OBSOLETE        
  3487. ;        AnimationState                = MOVING PANICKING
  3488. ;            Animation                = WLKM
  3489. ;                AnimationName        = RUPsnt_2_MFDA
  3490. ;                AnimationMode        = LOOP
  3491. ;            End
  3492. ;            ;;ParticleSysBone     = None InfantryDustTrails
  3493. ;        End
  3494.         
  3495.         AnimationState                = MOVING WANDER
  3496.             Animation                = WLKA
  3497.                 AnimationName        = RUPsnt_2_WLKA
  3498.                 AnimationMode        = LOOP
  3499.             End
  3500.             ;;ParticleSysBone     = None InfantryDustTrails
  3501.         End
  3502.         
  3503.         AnimationState                = MOVING
  3504.             Animation                = RUNA
  3505.                 AnimationName        = RUPsnt_2_RUNA
  3506.                 AnimationMode        = LOOP
  3507.                                 AnimationSpeedFactorRange = 1.00 1.15 ;--- JGS
  3508.             End
  3509.             Flags                    = RANDOMSTART
  3510.             ;;ParticleSysBone            = None InfantryDustTrails
  3511.         End
  3512.  
  3513. ; WORKING    
  3514.  
  3515.         AnimationState = ACTIVELY_CONSTRUCTING DEPLOYED ; building from too far to smack his hammer
  3516.             Animation                =    Stand
  3517.                 AnimationName        =    RUPsnt_2_IDLA 
  3518.                 AnimationMode        =    LOOP
  3519.             End
  3520.         End
  3521.  
  3522.         
  3523.         AnimationState                = ACTIVELY_CONSTRUCTING
  3524.             Animation                = WRKA
  3525.                 AnimationName        = RUPsnt_2_WRKA
  3526.                 AnimationMode        = LOOP
  3527.             End
  3528.         End
  3529.  
  3530. ;;------------ HIT REACTION -----------------------------------------------------
  3531.  
  3532.         AnimationState = HIT_REACTION
  3533.             Animation = Hit_Level_1_a
  3534.                 AnimationName = RUPsnt_2_HITA
  3535.                 AnimationMode = ONCE
  3536.             End
  3537.         End
  3538.                 
  3539. ;;------------- EMOTIONS ---------------------------------------------
  3540.  
  3541. ;;======== POINTING
  3542.  
  3543.         AnimationState                = EMOTION_POINTING
  3544.             Animation                = Pointing2
  3545.                 AnimationName        = RUPsnt_2_PNTA
  3546.                 AnimationMode        = LOOP
  3547.                 AnimationSpeedFactorRange = 0.75 1.25
  3548.             End
  3549.         End
  3550.  
  3551. ;;======= TERROR
  3552.  
  3553.         AnimationState                = EMOTION_AFRAID
  3554.             Animation                = &&FEAR&&
  3555.                 AnimationName        = RUPsnt_2_IDLA
  3556.                 AnimationMode        = LOOP
  3557.             End
  3558.         End
  3559.         
  3560.         AnimationState                = EMOTION_TAUNTING
  3561.             Animation                = &&TAUNT&&
  3562.                 AnimationName        = RUPsnt_2_IDLA
  3563.                 AnimationMode        = LOOP
  3564.             End
  3565.         End
  3566.  
  3567. ;;====== CELEBRATING        
  3568.         AnimationState                = EMOTION_CELEBRATING
  3569.             Animation                = &&CHEER&&
  3570.                 AnimationName        = RUPsnt_2_IDLA
  3571.                 AnimationMode        = LOOP
  3572.             End
  3573.         End
  3574.         
  3575.         AnimationState                = EMOTION_ALERT
  3576.             Animation                = &&ALERT&&
  3577.                 AnimationName        = RUPsnt_2_IDLA
  3578.                 AnimationMode        = LOOP
  3579.             End
  3580.         End
  3581.  
  3582. ;;------------- SELECTED ---------------------------------------------
  3583.  
  3584.     IdleAnimationState
  3585.         Animation                = IDLA
  3586.             AnimationName        = RUPsnt_2_IDLA
  3587.             AnimationMode        = ONCE
  3588.         End
  3589.     End
  3590.         
  3591. ;;--------------- IDLE STATES -----------------------------------------------------------------    
  3592.  
  3593.     ;---Transitions-------------------------------------
  3594.     
  3595.     
  3596.     End
  3597.     
  3598.     EquivalentTo = RohanPeasant    
  3599.  
  3600.  
  3601. ; *** AUDIO Parameters ***;
  3602.  
  3603.     VoicePriority = 1
  3604.     VoiceFear = NoSound
  3605.     VoiceGuard = NoSound
  3606.  
  3607.     SoundImpact = ImpactHorse
  3608.     
  3609.     ;UnitSpecificSounds
  3610.     ;    VoiceGarrison         = NoSound
  3611.     ;    VoiceEnter            = NoSound
  3612.     ;    VoiceEnterHostile     = NoSound
  3613.     ;    VoiceGetHealed        = NoSound
  3614.     ;End
  3615.  
  3616.     #include "..\includes\StandardUnitEvaEvents.inc"
  3617.  
  3618.  
  3619.     ; Tie into LargeGroupAudio system
  3620.     Behavior = LargeGroupAudioUpdate ModuleTag_LGAU
  3621.         Key = Human Unit Peasant     ; Peasant_Boy
  3622.     End
  3623.  
  3624.  
  3625. ; *** ENGINEERING PARAMETERS *** ;
  3626.  
  3627.     Behavior = SubObjectsUpgrade Armor_Upgrade
  3628.         TriggeredBy        = Upgrade_RohanHeavyArmorForPeasants
  3629.         ShowSubObjects    = HELMET
  3630.         UpgradeTexture    = RUPeasant02.tga 0 RUPeasant02_HA.tga
  3631.         UpgradeTexture    = RUPeasant02_Alt.tga 0 RUPeasant02_HA.tga
  3632.         UpgradeTexture    = RUPeasantWep.tga 0 RUPeasantWep_HA.tga
  3633.         UpgradeTexture    = RUPeasantWep_L.tga 0 RUPeasantWep_HA.tga
  3634.         RecolorHouse    = Yes
  3635.         ExcludeSubobjects = Forged_Blade
  3636.     End
  3637.  
  3638. End
  3639.  
  3640. ;;------------------------------------------------------------------------------
  3641. ; aka Peasant3  /// FAT GUY ///
  3642. ChildObject RohanPeasant3 RohanPeasant1
  3643.     ; ***ART Parameters ***
  3644.     
  3645.     Draw = W3DScriptedModelDraw ModuleTag_01  
  3646.  
  3647.         StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
  3648.             
  3649.           OkToChangeModelColor = Yes
  3650.           
  3651.         RandomTexture = RUPeasant03_Alt.tga 0 RUPeasant03_Alt.tga
  3652.         RandomTexture = RUPeasant03.tga 0 RUPeasant03_Alt.tga
  3653.  
  3654. ;;====================== MODELS ================================================================        
  3655.         DefaultModelConditionState
  3656.             Model               = RUPsnt_3_SKN
  3657.             Skeleton            = RUPsnt_3_SKL
  3658.         End
  3659.         
  3660. ;;================== ANIMATIONS =================================================================                
  3661.  
  3662. ;;------------------  DYING -------------------------------------------------------------
  3663.     
  3664.         AnimationState                        = PASSENGER
  3665.             Animation                        = FLLA
  3666.                 AnimationName                = RUPsnt_3_FLLA
  3667.                 AnimationMode                = LOOP
  3668.             End
  3669.         End
  3670.         
  3671.         AnimationState        = THROWN_PROJECTILE
  3672.             Animation           = FLYA
  3673.                 AnimationName     = RUPsnt_3_FLYA
  3674.                 AnimationMode     = LOOP
  3675.             End
  3676.         End
  3677.         
  3678.         AnimationState                        = FREEFALL
  3679.             Animation                        = FLYA
  3680.                 AnimationName                = RUPsnt_3_FLYA
  3681.                 AnimationMode                = LOOP
  3682.                 AnimationSpeedFactorRange    = 0.7    0.7
  3683.                 AnimationBlendTime            = 10
  3684.             End
  3685.         End
  3686.         
  3687.         AnimationState        = STUNNED_FLAILING
  3688.             Animation           = FLYA
  3689.                 AnimationName     = RUPsnt_3_FLYA
  3690.                 AnimationMode      = LOOP
  3691.             End
  3692.             Flags               = RANDOMSTART
  3693.         End
  3694.         
  3695.         AnimationState                        = DYING SPLATTED
  3696.             Animation                        = LNDA
  3697.                 AnimationName                = RUPsnt_3_LNDA
  3698.                 AnimationMode                = ONCE
  3699.             End
  3700.         End
  3701.         
  3702. ;        AnimationState                    =    DYING AFLAME
  3703. ;            Animation                    =    Fire
  3704. ;                AnimationName     = RUPsnt_3__MFDA
  3705. ;                AnimationMode     = LOOP
  3706. ;            End
  3707. ;        End    
  3708.         
  3709.         AnimationState        = DYING
  3710.             Animation           = DIEA
  3711.                 AnimationName     = RUPsnt_3_DIEA
  3712.                 AnimationMode     = ONCE
  3713.             End
  3714.             Animation           = DIEB
  3715.                 AnimationName     = RUPsnt_3_DIEB
  3716.                 AnimationMode     = ONCE
  3717.             End
  3718.             Animation           = DIEC
  3719.                 AnimationName     = RUPsnt_3_DIEC
  3720.                 AnimationMode     = ONCE
  3721.             End            
  3722.         End
  3723.         
  3724.         AnimationState        = STUNNED_STANDING_UP
  3725. ;            Animation           = GTPA                ; from side
  3726. ;                AnimationName     = RUPsnt_3_GTPA
  3727. ;                AnimationMode     = ONCE
  3728. ;            End
  3729.             Animation           = GTPB                ; from back
  3730.                 AnimationName     = RUPsnt_3_GTPB
  3731.                 AnimationMode     = ONCE
  3732.                 AnimationSpeedFactorRange = 1.5 1.5
  3733.             End
  3734.         End
  3735.         
  3736.         AnimationState        = STUNNED
  3737.             Animation           = LNDA
  3738.                 AnimationName     = RUPsnt_3_LNDA
  3739.                 AnimationMode     = ONCE
  3740.             End
  3741.         End    
  3742.         
  3743.         AnimationState        = MOVING FIRING_OR_PREATTACK_A
  3744.             ShareAnimation        = Yes
  3745.             Animation           = RunAndFire
  3746.                 AnimationName       = RUPsnt_3_ATRA
  3747.                 AnimationMode       = LOOP
  3748.             End
  3749.             Flags               = RANDOMSTART 
  3750.         End
  3751. ;        
  3752.  
  3753. ;;------------------ ATTACKING ---------------------------------------        
  3754.  
  3755.         AnimationState                =    FIRING_OR_PREATTACK_A
  3756.             Animation                =    ATKA
  3757.                 AnimationName        =    RUPsnt_3_ATKA 
  3758.                 AnimationMode        =    LOOP
  3759. ;                UseWeaponTiming        =    Yes
  3760.             End
  3761.             Animation                =    ATKB
  3762.                 AnimationName        =    RUPsnt_3_ATKB 
  3763.                 AnimationMode        =    LOOP
  3764. ;                UseWeaponTiming        =    Yes
  3765.             End            
  3766.         End
  3767.  
  3768. ;;------------------ MOVING ------------------------------------------
  3769.  
  3770. ;;===== BACKUP
  3771.         AnimationState                = MOVING BACKING_UP
  3772.             Animation                = BAKA
  3773.                 AnimationName        = RUPsnt_3_BAKA
  3774.                 AnimationMode        = LOOP
  3775.             End
  3776.         End
  3777.         
  3778. ;OBSOLETE        
  3779. ;        AnimationState                = MOVING PANICKING
  3780. ;            Animation                = WLKM
  3781. ;                AnimationName        = RUPsnt_3_MFDA
  3782. ;                AnimationMode        = LOOP
  3783. ;            End
  3784. ;            ;;ParticleSysBone     = None InfantryDustTrails
  3785. ;        End
  3786.         
  3787.         AnimationState                = MOVING WANDER
  3788.             Animation                = WLKA
  3789.                 AnimationName        = RUPsnt_3_WLKA
  3790.                 AnimationMode        = LOOP
  3791.             End
  3792.             ;;ParticleSysBone     = None InfantryDustTrails
  3793.         End
  3794.  
  3795.         AnimationState                = MOVING ATTACKING
  3796.             Animation                = RUNE
  3797.                 AnimationName        = RUPsnt_3_RUNE
  3798.                 AnimationMode        = LOOP
  3799.                 AnimationBlendTime    = 15
  3800.             End
  3801.             Animation                = RUNF
  3802.                 AnimationName        = RUPsnt_3_RUNF
  3803.                 AnimationMode        = LOOP
  3804.                 AnimationBlendTime    = 15
  3805.             End            
  3806.             ;;ParticleSysBone     = None InfantryDustTrails
  3807.         End
  3808.         
  3809.         AnimationState                = MOVING
  3810.             Animation                = RUNC
  3811.                 AnimationName        = RUPsnt_3_RUNC
  3812.                 AnimationMode        = LOOP
  3813.             End
  3814.             Animation                = RUND
  3815.                 AnimationName        = RUPsnt_3_RUND
  3816.                 AnimationMode        = LOOP
  3817.             End
  3818.             Flags                    = RANDOMSTART
  3819.             ;;ParticleSysBone            = None InfantryDustTrails
  3820.         End
  3821.  
  3822. ; WORKING    
  3823.  
  3824.         AnimationState = ACTIVELY_CONSTRUCTING DEPLOYED ; building from too far to smack his hammer
  3825.             Animation                =    Stand
  3826.                 AnimationName        =    RUPsnt_3_IDLA 
  3827.                 AnimationMode        =    LOOP
  3828.             End
  3829.         End
  3830.     
  3831.         AnimationState                = ACTIVELY_CONSTRUCTING
  3832.             Animation                = WRKB
  3833.                 AnimationName        = RUPsnt_3_WRKB
  3834.                 AnimationMode        = ONCE
  3835.             End
  3836.             Animation                = WRKC
  3837.                 AnimationName        = RUPsnt_3_WRKC
  3838.                 AnimationMode        = ONCE
  3839.             End            
  3840.             Flags                    = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE            
  3841.         End
  3842.                 
  3843. ;;------------ HIT REACTION -----------------------------------------------------
  3844.  
  3845.         AnimationState = HIT_REACTION
  3846.             Animation = Hit_Level_1_a
  3847.                 AnimationName = RUPsnt_3_HITA
  3848.                 AnimationMode = ONCE
  3849.             End
  3850.         End
  3851.         
  3852. ;;------------- EMOTIONS ---------------------------------------------
  3853.  
  3854. ;;======== POINTING
  3855.  
  3856.         AnimationState                = EMOTION_POINTING
  3857.             Animation                = Pointing3
  3858.                 AnimationName        = RUPsnt_3_PNTA
  3859.                 AnimationMode        = LOOP
  3860.                 AnimationSpeedFactorRange = 0.75 1.25
  3861.             End
  3862.         End
  3863.  
  3864. ;;======= TERROR
  3865.  
  3866.         AnimationState                = EMOTION_AFRAID
  3867.             Animation                = &&FEAR&&
  3868.                 AnimationName        = RUPsnt_3_FERA
  3869.                 AnimationMode        = LOOP
  3870.             End
  3871.         End
  3872.         
  3873.         AnimationState                = EMOTION_TAUNTING
  3874.             Animation                = TNTA
  3875.                 AnimationName        = RUPsnt_3_TNTA
  3876.                 AnimationMode        = ONCE
  3877.             End
  3878.             Animation                = TNTB
  3879.                 AnimationName        = RUPsnt_3_TNTB
  3880.                 AnimationMode        = ONCE
  3881.             End
  3882.             Flags                    = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE                                
  3883.         End
  3884.  
  3885. ;;====== CELEBRATING        
  3886.         AnimationState                = EMOTION_CELEBRATING
  3887.             Animation                = CHRA
  3888.                 AnimationName        = RUPsnt_3_CHRA
  3889.                 AnimationMode        = ONCE
  3890.             End
  3891.             Animation                = CHRB
  3892.                 AnimationName        = RUPsnt_3_CHRB
  3893.                 AnimationMode        = ONCE
  3894.             End
  3895.             Flags                    = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE            
  3896.         End
  3897.         
  3898.         AnimationState                = EMOTION_ALERT
  3899.             StateName                = STATE_Alert
  3900.             Animation                = &&ALERT&&
  3901.                 AnimationName        = RUPsnt_3_IDLA
  3902.                 AnimationMode        = LOOP
  3903.             End
  3904.         End
  3905. ;;------------- SELECTED ---------------------------------------------
  3906.  
  3907.         AnimationState                =    SELECTED
  3908.             StateName                =    STATE_Selected
  3909.             SimilarRestart            =   Yes            
  3910.             Animation                =    ATNB
  3911.                 AnimationName        =    RUPsnt_3_ATNB
  3912.                 AnimationMode        =    LOOP
  3913.             End
  3914.             BeginScript
  3915.                 Prev = CurDrawablePrevAnimationState()
  3916.                 if Prev == "STATE_Idle" then CurDrawableSetTransitionAnimState("TRANS_IdleToSelected") end
  3917.                 if Prev == "STATE_Selected" then CurDrawableSetTransitionAnimState("TRANS_IdleToSelected") end
  3918.             EndScript
  3919.         End    
  3920.  
  3921. ;;--------------- IDLE STATES -----------------------------------------------------------------            
  3922.  
  3923.         IdleAnimationState
  3924.             StateName                =    STATE_Idle
  3925.             Animation           = IDLA
  3926.                 AnimationName     = RUPsnt_3_IDLA
  3927.                 AnimationMode     = ONCE
  3928.                 AnimationPriority = 20
  3929.             End
  3930.             
  3931.             Animation           = IDLC
  3932.                 AnimationName     = RUPsnt_3_IDLC
  3933.                 AnimationMode     = ONCE
  3934.                 AnimationPriority = 1
  3935.             End
  3936.  
  3937.             Animation           = IDLD
  3938.                 AnimationName     = RUPsnt_3_IDLD
  3939.                 AnimationMode     = ONCE
  3940.                 AnimationPriority = 2
  3941.             End
  3942.  
  3943.             Animation           = IDLE
  3944.                 AnimationName     = RUPsnt_3_IDLE
  3945.                 AnimationMode     = ONCE
  3946.                 AnimationPriority = 1
  3947.             End
  3948.  
  3949.             Animation           = IDLF
  3950.                 AnimationName     = RUPsnt_3_IDLF
  3951.                 AnimationMode     = ONCE
  3952.                 AnimationPriority = 1
  3953.             End
  3954.  
  3955.             Animation           = IDLG
  3956.                 AnimationName     = RUPsnt_3_IDLG
  3957.                 AnimationMode     = ONCE
  3958.                 AnimationPriority = 1                
  3959.             End
  3960.             
  3961.             BeginScript
  3962.                 Prev = CurDrawablePrevAnimationState()
  3963.                 if Prev == "STATE_Selected" then CurDrawableSetTransitionAnimState("TRANS_SelectedToIdle") end
  3964.             EndScript                    
  3965.         End
  3966.  
  3967.     ;---Transitions-------------------------------------        
  3968.  
  3969.         TransitionState       = TRANS_SelectedToIdle    
  3970.             Animation           = ATNC
  3971.                 AnimationName     = RUPsnt_3_ATNC
  3972.                 AnimationMode     = ONCE
  3973.                 AnimationSpeedFactorRange = 0.7 1.2
  3974.             End
  3975.         End
  3976.         
  3977.         TransitionState                =    TRANS_IdleToSelected
  3978.             Animation                =    ATNA
  3979.                 AnimationName        =    RUPsnt_3_ATNA
  3980.                 AnimationMode        =    ONCE
  3981.                 AnimationSpeedFactorRange = 0.7 1.2
  3982.             End
  3983.         End        
  3984.     
  3985.     End
  3986.     
  3987.     EquivalentTo = RohanPeasant    
  3988.  
  3989.  
  3990.     ; *** AUDIO Parameters ***;
  3991.  
  3992.     VoiceAttack                 = PeasantMaleVoiceAttack
  3993.     VoiceAttackCharge             = PeasantMaleVoiceAttackCharge
  3994.     VoiceAttackStructure             = PeasantMaleVoiceAttackBuilding
  3995.     VoiceAttackMachine             = PeasantMaleVoiceAttack
  3996.     VoiceCreated                 = PeasantMaleVoiceSalute
  3997.     VoiceFullyCreated             = PeasantMaleVoiceSalute
  3998.     VoiceGuard                    = PeasantMaleVoiceMove
  3999.     VoiceMove                     = PeasantMaleVoiceMove
  4000.     VoiceMoveToCamp                 = PeasantMaleVoiceMoveCamp
  4001.     VoiceMoveWhileAttacking         = PeasantMaleVoiceDisengage
  4002.     VoicePriority                = 30            ;3
  4003.     VoiceRetreatToCastle             = PeasantMaleVoiceRetreat
  4004.     VoiceSelect                 = PeasantMaleVoiceSelectMS
  4005.     VoiceSelectBattle              = PeasantMaleVoiceSelectBattle
  4006.  
  4007.     VoiceEnterStateAttack             = PeasantMaleVoiceEnterStateAttack
  4008.     VoiceEnterStateAttackCharge         = PeasantMaleVoiceEnterStateAttackCharge
  4009.     VoiceEnterStateAttackStructure     = PeasantMaleVoiceEnterStateAttackBuilding
  4010.     VoiceEnterStateAttackMachine        = PeasantMaleVoiceEnterStateAttackBuilding
  4011.     VoiceEnterStateMove             = PeasantMaleVoiceEnterStateMove
  4012.     VoiceEnterStateMoveToCamp         = PeasantMaleVoiceEnterStateMoveCamp
  4013.     VoiceEnterStateMoveWhileAttacking    = PeasantMaleVoiceEnterStateDisengage
  4014.     VoiceEnterStateRetreatToCastle     = PeasantMaleVoiceEnterStateRetreat
  4015.     
  4016.     UnitSpecificSounds
  4017.         VoiceGarrison                 = PeasantMaleVoiceGarrison    
  4018.     End
  4019.  
  4020.     ; Tie into LargeGroupAudio system
  4021.     Behavior = LargeGroupAudioUpdate ModuleTag_LGAU
  4022.         Key = Human Unit Peasant Peasant_Male
  4023.     End
  4024.  
  4025.     #include "..\includes\StandardUnitEvaEvents.inc"
  4026.  
  4027.     ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
  4028.         MaxUpdateRangeCap = 800
  4029.         AnimationSound = Sound:BodyFallGenericNoArmor    Animation:RUPsnt_3_SKL.RUPsnt_3_DIEA    Frames:46
  4030.         AnimationSound = Sound:BodyFallGeneric1        Animation:RUPsnt_3_SKL.RUPsnt_3_DIEB    Frames:45
  4031.         AnimationSound = Sound:BodyFallGenericNoArmor    Animation:RUPsnt_3_SKL.RUPsnt_3_DIEC    Frames:35
  4032.         AnimationSound = Sound:BodyFallGeneric1        Animation:RUPsnt_3_SKL.RUPsnt_3_LNDA    Frames:8
  4033.     End
  4034.  
  4035.  
  4036. ; *** ENGINEERING PARAMETERS *** ;
  4037.  
  4038.     Behavior = SubObjectsUpgrade Armor_Upgrade
  4039.         TriggeredBy        = Upgrade_RohanHeavyArmorForPeasants
  4040.         ShowSubObjects    = HELMET
  4041.         HideSubObjects    = HAMMER        
  4042.         UpgradeTexture    = RUPeasant03.tga 0 RUPeasant03_HA.tga
  4043.         UpgradeTexture    = RUPeasant03_Alt.tga 0 RUPeasant03_HA.tga
  4044.         UpgradeTexture    = RUPeasantWep.tga 0 RUPeasantWep_HA.tga
  4045.         UpgradeTexture    = RUPeasantWep_L.tga 0 RUPeasantWep_HA.tga
  4046.         RecolorHouse    = Yes
  4047.         ExcludeSubobjects = Forged_Blade
  4048.     End
  4049.  
  4050. End
  4051.     
  4052. ;;------------------------------------------------------------------------------
  4053. ; aka Peasant4  ///  WOMAN ///
  4054. ChildObject RohanPeasant4 RohanPeasant1
  4055.     ; ***ART Parameters ***
  4056.     
  4057.     Draw = W3DScriptedModelDraw ModuleTag_01  
  4058.  
  4059.         StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
  4060.             
  4061.         OkToChangeModelColor = Yes
  4062.           
  4063.         RandomTexture = RUPeasant04.tga 0 RUPeasant04.tga
  4064.         RandomTexture = RUPeasant04_Alt.tga 0 RUPeasant04.tga
  4065.  
  4066. ;;====================== MODELS ================================================================        
  4067.         DefaultModelConditionState
  4068.             Model               = RUPsnt_4_SKN
  4069.             Skeleton            = RUPsnt_4_SKL
  4070.         End
  4071.  
  4072. ;;================== ANIMATIONS =================================================================        
  4073.  
  4074.  
  4075. ;;------------------  DYING -------------------------------------------------------------
  4076.         
  4077.         AnimationState                        = PASSENGER
  4078.             Animation                        = FLLA
  4079.                 AnimationName                = RUPsnt_4_FLLA
  4080.                 AnimationMode                = LOOP
  4081.             End
  4082.         End
  4083.         
  4084.         AnimationState                = THROWN_PROJECTILE
  4085.             Animation                = FLYA
  4086.                 AnimationName        = RUPsnt_4_FLYA
  4087.                 AnimationMode        = LOOP
  4088.             End
  4089.         End
  4090.         
  4091.         AnimationState                        = FREEFALL
  4092.             Animation                        = FLYA
  4093.                 AnimationName                = RUPsnt_4_FLYA
  4094.                 AnimationMode                = LOOP
  4095.                 AnimationSpeedFactorRange    = 0.7    0.7
  4096.                 AnimationBlendTime            = 10
  4097.             End
  4098.         End
  4099.         
  4100.         AnimationState        = STUNNED_FLAILING
  4101.             Animation           = FLYA
  4102.                 AnimationName     = RUPsnt_4_FLYA
  4103.                 AnimationMode      = LOOP
  4104.             End
  4105.         End
  4106.         
  4107.         AnimationState                        = DYING SPLATTED
  4108.             Animation                        = LNDA
  4109.                 AnimationName                = RUPsnt_4_LNDA
  4110.                 AnimationMode                = ONCE
  4111.             End
  4112.         End
  4113.         
  4114.         AnimationState                = DYING
  4115.             Animation                = DIEA
  4116.                 AnimationName        = RUPsnt_4_DIEA
  4117.                 AnimationMode        = ONCE
  4118.             End
  4119.             Animation                = DIEB
  4120.                 AnimationName        = RUPsnt_4_DIEB
  4121.                 AnimationMode        = ONCE
  4122.             End
  4123.             Animation                = DIEC
  4124.                 AnimationName        = RUPsnt_4_DIEC
  4125.                 AnimationMode        = ONCE
  4126.             End
  4127.         End
  4128.  
  4129.         AnimationState                = STUNNED_STANDING_UP
  4130.             Animation                = GTPA
  4131.                 AnimationName        = RUPsnt_4_GTPA
  4132.                 AnimationMode        = ONCE
  4133.                 AnimationSpeedFactorRange = 1.5 1.5
  4134.             End
  4135. ;            Animation           = GTPB
  4136. ;                AnimationName     = RUPsnt_4_GTPB
  4137. ;                AnimationMode     = ONCE
  4138. ;            End                        
  4139.         End
  4140.         
  4141.         AnimationState                = STUNNED
  4142.             Animation                = LNDA
  4143.                 AnimationName        = RUPsnt_4_LNDA
  4144.                 AnimationMode        = ONCE
  4145.             End
  4146.         End
  4147.         
  4148.         AnimationState        = MOVING FIRING_OR_PREATTACK_A
  4149.             ShareAnimation        = Yes
  4150.             Animation           = RunAndFire
  4151.                 AnimationName       = RUPsnt_4_ATRA
  4152.                 AnimationMode       = LOOP
  4153.             End
  4154.             Flags               = RANDOMSTART 
  4155.         End
  4156.  
  4157. ;;------------------ ATTACKING ---------------------------------------        
  4158.  
  4159.         AnimationState                =    FIRING_OR_PREATTACK_A
  4160.             Animation
  4161.                 AnimationName        =    RUPsnt_4_ATKA 
  4162.                 AnimationMode        =    LOOP
  4163. ;                UseWeaponTiming        =    Yes
  4164.             End
  4165.             Animation
  4166.                 AnimationName        =    RUPsnt_4_ATKB
  4167.                 AnimationMode        =    LOOP
  4168. ;                UseWeaponTiming        =    Yes
  4169.             End                        
  4170.         End
  4171.  
  4172.  
  4173. ;;------------------ MOVING ------------------------------------------
  4174.  
  4175. ;;===== BACKUP
  4176.         AnimationState                = MOVING BACKING_UP
  4177.             Animation                = BAKA
  4178.                 AnimationName        = RUPsnt_4_BAKA
  4179.                 AnimationMode        = LOOP
  4180.             End
  4181.         End
  4182.  
  4183. ; OBSOLETE        
  4184. ;        AnimationState                = MOVING PANICKING
  4185. ;            Animation                = WLKM
  4186. ;                AnimationName        = RUPsnt_4_MFDA
  4187. ;                AnimationMode        = LOOP
  4188. ;            End
  4189. ;            ;;ParticleSysBone     = None InfantryDustTrails
  4190. ;        End
  4191.  
  4192.         AnimationState                = MOVING WANDER
  4193.             Animation                = WLKA
  4194.                 AnimationName        = RUPsnt_4_WLKA
  4195.                 AnimationMode        = LOOP
  4196.             End
  4197.             ;;ParticleSysBone     = None InfantryDustTrails
  4198.         End
  4199.  
  4200.         AnimationState                = MOVING ATTACKING
  4201.             Animation                = RUNB
  4202.                 AnimationName        = RUPsnt_4_RUNB
  4203.                 AnimationMode        = LOOP
  4204.                 AnimationBlendTime    = 15
  4205.             End
  4206.             Animation                = RUNE
  4207.                 AnimationName        = RUPsnt_4_RUNE
  4208.                 AnimationMode        = LOOP
  4209.                 AnimationBlendTime    = 15
  4210.             End            
  4211.             ;;ParticleSysBone     = None InfantryDustTrails
  4212.         End
  4213.                 
  4214.         AnimationState                = MOVING
  4215.             Animation                = RUNA
  4216.                 AnimationName        = RUPsnt_4_RUNA
  4217.                 AnimationMode        = LOOP
  4218.             End
  4219.             Animation                = RUNC
  4220.                 AnimationName        = RUPsnt_4_RUNC
  4221.                 AnimationMode        = LOOP
  4222.             End                        
  4223.             Animation                = RUND
  4224.                 AnimationName        = RUPsnt_4_RUND
  4225.                 AnimationMode        = LOOP
  4226.             End                                    
  4227.             Flags                    = RANDOMSTART
  4228.             ;;ParticleSysBone            = None InfantryDustTrails
  4229.         End
  4230.  
  4231. ; WORKING    
  4232.  
  4233.  
  4234.  
  4235.         AnimationState = ACTIVELY_CONSTRUCTING DEPLOYED ; building from too far to smack his hammer
  4236.             Animation                =    Stand
  4237.                 AnimationName        =    RUPsnt_4_IDLA 
  4238.                 AnimationMode        =    LOOP
  4239.             End
  4240.         End
  4241.     
  4242.         AnimationState                = ACTIVELY_CONSTRUCTING
  4243.             Animation                = WRKA
  4244.                 AnimationName        = RUPsnt_4_WRKA
  4245.                 AnimationMode        = LOOP
  4246.             End
  4247.         End
  4248.             
  4249. ;;------------ HIT REACTION -----------------------------------------------------
  4250.  
  4251.         AnimationState = HIT_REACTION
  4252.             Animation = Hit_Level_1_a
  4253.                 AnimationName = RUPsnt_4_HITA
  4254.                 AnimationMode = ONCE
  4255.             End
  4256.         End
  4257.  
  4258. ;;------------- EMOTIONS ---------------------------------------------
  4259.  
  4260. ;;======== POINTING
  4261.  
  4262.         AnimationState                = EMOTION_POINTING
  4263.             Animation                = Pointing4
  4264.                 AnimationName        = RUPsnt_4_PNTA
  4265.                 AnimationMode        = LOOP
  4266.                 AnimationSpeedFactorRange = 0.75 1.25
  4267.             End
  4268.         End
  4269.         
  4270. ;;======= TERROR
  4271.  
  4272.         AnimationState                = EMOTION_AFRAID
  4273.             Animation                = &&FEAR&&
  4274.                 AnimationName        = RUPsnt_4_FERA
  4275.                 AnimationMode        = LOOP
  4276.             End
  4277.         End
  4278.             
  4279.         AnimationState                = EMOTION_TAUNTING
  4280.             Animation                = TNTA
  4281.                 AnimationName        = RUPsnt_4_TNTA
  4282.                 AnimationMode        = LOOP
  4283.             End
  4284.             Animation                = TNTB
  4285.                 AnimationName        = RUPsnt_4_TNTB
  4286.                 AnimationMode        = LOOP
  4287.             End    
  4288.             Flags                    = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE                
  4289.         End
  4290.     
  4291. ;;====== CELEBRATING        
  4292.         AnimationState                = EMOTION_CELEBRATING
  4293.             Animation                = CHRA
  4294.                 AnimationName        = RUPsnt_4_CHRA
  4295.                 AnimationMode        = ONCE
  4296.             End
  4297.             Animation                = CHRB
  4298.                 AnimationName        = RUPsnt_4_CHRB
  4299.                 AnimationMode        = ONCE
  4300.             End
  4301.             Animation                = CHRC
  4302.                 AnimationName        = RUPsnt_4_CHRC
  4303.                 AnimationMode        = ONCE
  4304.             End
  4305.             Flags                    = RANDOMSTART RESTART_ANIM_WHEN_COMPLETE            
  4306.         End
  4307.         
  4308.         AnimationState                = EMOTION_ALERT
  4309.             StateName                = STATE_Alert
  4310.             Animation                = &&ALERT&&
  4311.                 AnimationName        = RUPsnt_4_IDLA
  4312.                 AnimationMode        = LOOP
  4313.             End
  4314.         End
  4315.  
  4316. ;;------------- SELECTED ---------------------------------------------
  4317.  
  4318.         AnimationState                =    SELECTED
  4319.             StateName                =    STATE_Selected
  4320.             SimilarRestart            =   Yes            
  4321.             Animation                =    ATNB
  4322.                 AnimationName        =    RUPsnt_4_ATNB
  4323.                 AnimationMode        =    LOOP
  4324.             End
  4325.             BeginScript
  4326.                 Prev = CurDrawablePrevAnimationState()
  4327.                 if Prev == "STATE_Idle" then CurDrawableSetTransitionAnimState("TRANS_IdleToSelected") end
  4328.                 if Prev == "STATE_Selected" then CurDrawableSetTransitionAnimState("TRANS_IdleToSelected") end
  4329.             EndScript
  4330.         End    
  4331.         
  4332. ;;--------------- IDLE STATES -----------------------------------------------------------------            
  4333.  
  4334.         IdleAnimationState
  4335.             StateName            =    STATE_Idle
  4336.             Animation           = IDLA
  4337.                 AnimationName     = RUPsnt_4_IDLA
  4338.                 AnimationMode     = ONCE
  4339.                 AnimationPriority = 20
  4340.             End
  4341.             Animation           = IDLC
  4342.                 AnimationName     = RUPsnt_4_IDLC
  4343.                 AnimationMode     = ONCE
  4344.                 AnimationPriority = 1
  4345.             End
  4346.             Animation           = IDLD
  4347.                 AnimationName     = RUPsnt_4_IDLD
  4348.                 AnimationMode     = ONCE
  4349.                 AnimationPriority = 1
  4350.             End    
  4351.             BeginScript
  4352.                 Prev = CurDrawablePrevAnimationState()
  4353.                 if Prev == "STATE_Selected" then CurDrawableSetTransitionAnimState("TRANS_SelectedToIdle") end
  4354.             EndScript                                                    
  4355.         End
  4356.         
  4357. ;---Transitions-------------------------------------        
  4358.  
  4359.         TransitionState       = TRANS_SelectedToIdle    
  4360.             Animation           = ATNC
  4361.                 AnimationName     = RUPsnt_4_ATNC
  4362.                 AnimationMode     = ONCE
  4363.                 AnimationSpeedFactorRange = 0.7 1.2
  4364.             End
  4365.         End
  4366.         
  4367.         TransitionState                =    TRANS_IdleToSelected
  4368.             Animation                =    ATNA
  4369.                 AnimationName        =    RUPsnt_4_ATNA
  4370.                 AnimationMode        =    ONCE
  4371.                 AnimationSpeedFactorRange = 0.7 1.2
  4372.             End
  4373.         End    
  4374.     
  4375.     
  4376.     
  4377.     End
  4378.     
  4379.     EquivalentTo = RohanPeasant
  4380.  
  4381.  
  4382.     ; *** AUDIO Parameters ***;
  4383.  
  4384.     VoiceAttack                    = PeasantFemaleVoiceAttack                ;RohanPeasantWomanVoiceAttack
  4385.     VoiceAttackCharge                = PeasantFemaleVoiceAttackCharge
  4386.     VoiceAttackMachine            = PeasantFemaleVoiceAttack
  4387.     VoiceAttackStructure            = PeasantFemaleVoiceAttackBuilding
  4388.     VoiceCreated                = PeasantFemaleVoiceSalute
  4389.     VoiceFullyCreated             = PeasantFemaleVoiceSalute
  4390.     VoiceGuard                    = PeasantFemaleVoiceMove
  4391.     VoiceMove                    = PeasantFemaleVoiceMove                ;RohanPeasantWomanVoiceMove
  4392.     VoiceMoveToCamp                = PeasantFemaleVoiceMoveCamp
  4393.     VoiceMoveWhileAttacking            = PeasantFemaleVoiceDisengage
  4394.     VoicePriority                = 13                                ;3
  4395.     VoiceRetreatToCastle            = PeasantFemaleVoiceRetreat
  4396.     VoiceSelect                    = PeasantFemaleVoiceSelectMS                ;RohanPeasantWomanVoiceSelect
  4397.     VoiceSelectBattle             = PeasantFemaleVoiceSelectBattle
  4398.  
  4399.     VoiceEnterStateAttack            = PeasantFemaleVoiceEnterStateAttack        ;RohanPeasantWomanVoiceAttack
  4400.     VoiceEnterStateAttackCharge        = PeasantFemaleVoiceEnterStateAttackCharge
  4401.     VoiceEnterStateAttackMachine        = PeasantFemaleVoiceEnterStateAttackBuilding
  4402.     VoiceEnterStateAttackStructure    = PeasantFemaleVoiceEnterStateAttackBuilding
  4403.     VoiceEnterStateMove            = PeasantFemaleVoiceEnterStateMove            ;RohanPeasantWomanVoiceMove
  4404.     VoiceEnterStateMoveToCamp        = PeasantFemaleVoiceEnterStateMoveCamp
  4405.     VoiceEnterStateMoveWhileAttacking    = PeasantFemaleVoiceEnterStateDisengage
  4406.     VoiceEnterStateRetreatToCastle    = PeasantFemaleVoiceEnterStateRetreat
  4407.         
  4408.     SoundImpact = ImpactHorse
  4409.  
  4410.     UnitSpecificSounds
  4411.         VoiceGarrison            = PeasantFemaleVoiceGarrison
  4412.         VoiceRepair                = PeasantFemaleVoiceRepair
  4413.     End
  4414.  
  4415.     #include "..\includes\StandardUnitEvaEvents.inc"
  4416.  
  4417.     ReplaceModule ModuleTag_RSSCB
  4418.         ClientBehavior = RandomSoundSelectorClientBehavior ModuleTag_RSSCB_Woman
  4419.             ; This boils down to: Each time a mixed RohanPeasant is created, there is a 
  4420.             ; 1.5% chance per female the female will be "bossy" and play her voices
  4421.             ; instead of the men's. Once the "bossy-ness" of a female is set, it does
  4422.             ; change, so that we don't keep getting voices from different people.
  4423.             ; So, normally, the male voices will be heard [hey, this IS Middle Earth -- not a place known
  4424.             ; for its gender equity], but every once in a while the females will get a voice. Otherwise
  4425.             ; we basically never ever hear all these nice lines. This spices things up a bit
  4426.             Chance = 1.5% 
  4427.             RerollOnEveryFrame = No ; For consistancy of which unit plays the voice
  4428.             VoicePriority = 31 ; High enough to overcome the non-bossy men
  4429.         End
  4430.     End
  4431.  
  4432.     ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
  4433.         MaxUpdateRangeCap = 800
  4434.         AnimationSound = Sound:BodyFallGenericNoArmor    Animation:RUPsnt_4_SKL.RUPsnt_4_DIEA    Frames:47
  4435.         AnimationSound = Sound:BodyFallGenericNoArmor    Animation:RUPsnt_4_SKL.RUPsnt_4_DIEB    Frames:43
  4436.         AnimationSound = Sound:BodyFallGenericNoArmor    Animation:RUPsnt_4_SKL.RUPsnt_4_DIEC    Frames:34
  4437.         AnimationSound = Sound:BodyFallGeneric1        Animation:RUPsnt_4_SKL.RUPsnt_4_LNDA    Frames:1
  4438.     End
  4439.  
  4440.     ; Tie into LargeGroupAudio system
  4441.     Behavior = LargeGroupAudioUpdate ModuleTag_LGAU
  4442.         Key = Human Unit Peasant Peasant_Female
  4443.     End
  4444.  
  4445. ; *** ENGINEERING PARAMETERS *** ;
  4446.  
  4447.     ;-------------------------------------------------------------------------------
  4448.     ;
  4449.     ;    Sub objects upgrade.
  4450.     ;
  4451.     Behavior = SubObjectsUpgrade Armor_Upgrade
  4452.         TriggeredBy    = Upgrade_RohanHeavyArmorForPeasants
  4453.         UpgradeTexture    = RUPeasant04.tga 0 RUPeasant04_HA.tga
  4454.         UpgradeTexture    = RUPeasant04_Alt.tga 0 RUPeasant04_HA.tga
  4455.         UpgradeTexture    = RUPeasantWep.tga 0 RUPeasantWep_HA.tga
  4456.         UpgradeTexture    = RUPeasantWep_L.tga 0 RUPeasantWep_HA.tga
  4457.         RecolorHouse    = Yes
  4458.         ExcludeSubobjects = Forged_Blade
  4459.     End
  4460.  
  4461.     Behavior = SlowDeathBehavior ModuleTag_05
  4462.         DeathTypes = ALL
  4463.         SinkDelay = 3000
  4464.         SinkRate = 1.0     ; in Dist/Sec
  4465.         DestructionDelay = 8000
  4466.             Sound = INITIAL PeasantFemaleVoiceDie
  4467.     End
  4468. End    
  4469.  
  4470. ;////////////////////////////////////////////////////////////////////////////////
  4471. Object RohanPeasantHorde
  4472.     ; This is required for garrisoned objects - please put in all objects.
  4473. ;    ButtonImage = BCFarm_Peasants
  4474. ;    SelectPortrait    = UPRohan_Peasant
  4475.  
  4476.  
  4477.     Draw = W3DScriptedModelDraw ModuleTag_W3DModelDraw
  4478.         DependencySharedModelFlags = EMOTION_ALERT EMOTION_MORALE_HIGH EMOTION_MORALE_LOW EMOTION_AFRAID EMOTION_COWER SELECTED EMOTION_TERROR
  4479.         DefaultModelConditionState
  4480.             Model = None ;InvisHrdeTmp5x2
  4481.         End
  4482.         ModelConditionState = HORDE_EMPTY
  4483.             Model = None
  4484.         End        
  4485.         ModelConditionState = WORLD_BUILDER
  4486.             Model = HordeMarkRUPea
  4487.         End
  4488.     End
  4489.     
  4490.     Side = Neutral
  4491.     EditorSorting = UNIT
  4492.     EmotionRange = 240
  4493.     DisplayName = OBJECT:HordeRohanPeasant
  4494.     
  4495.     WeaponSet
  4496.         Conditions = None 
  4497.         Weapon = PRIMARY    NormalMeleeHordeRangefinder
  4498.     End
  4499.     
  4500.     CommandSet = RohanPeasantHordeCommandSet
  4501.  
  4502.     ; *** AUDIO Parameters ***;
  4503.     ; Note: Don't put voice parameters here -- they will be ignored. Voice play requests
  4504.     ; are always passed through to members
  4505.  
  4506.      CrushableLevel = 0  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  4507.     CrusherLevel = 0
  4508.  
  4509.     BuildCost = ROHAN_PEASANT_BUILDCOST                
  4510.     BuildTime = ROHAN_PEASANT_BUILDTIME                      
  4511.     VisionRange = ROHAN_PEASANT_VISION_RANGE             
  4512.     CommandPoints = 10
  4513.     
  4514.     FormationWidth = 2 ; Width it occupies in formations. Current choices are 1 or 2.
  4515.     FormationDepth = 1 ; Depth it occupies in formations. Current choices are 1 or 2.
  4516.     
  4517.     
  4518.     TransportSlotCount = TRANSPORTSLOTCOUNT_UNIT
  4519.     KindOf = SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT INFANTRY HORDE MELEE_HORDE DOZER SWARM_DOZER ;UNATTACKABLE 
  4520.     
  4521.     ;;;;; AUTO-RESOLVE DATA ;;;;;
  4522.     AutoResolveUnitType = AutoResolveUnit_Soldier
  4523.     
  4524.     Body = ImmortalBody ModuleTag_ImmortalBody
  4525.         MaxHealth = 1
  4526.     End
  4527.     
  4528.     Behavior = HordeWorkerAIUpdate ModuleTag_HordeAIUpdate
  4529.         AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
  4530.         MoodAttackCheckRate        = 500
  4531.         MaxCowerTime                =    5000
  4532.         MinCowerTime                =    3000
  4533.         AILuaEventsList                = InfantryFunctions    
  4534.         AttackPriority                =     AttackPriority_Infantry
  4535.         SpecialContactPoints           = Repair
  4536.     End
  4537.  
  4538.     Behavior = RepairSpecialPower ModuleTag_RepairSPecialPower
  4539.         SpecialPowerTemplate      = SpecialRepairStructure
  4540.     End        
  4541.  
  4542.     Behavior = HordeContain ModuleTag_HordeContain
  4543.         ObjectStatusOfContained = 
  4544.         InitialPayload = RohanPeasant GOOD_MEN_HORDE_SIZE
  4545.         Slots = 5
  4546.         PassengerFilter = NONE +INFANTRY
  4547.         ShowPips = No
  4548.         ThisFormationIsTheMainFormation = Yes    ;Used to determine which armorset to use (and anything else we want!)
  4549.         RandomOffset = X:5 Y:5
  4550.         
  4551.         ; Banner Carrier info        
  4552.         BannerCarriersAllowed    = RohanBanner                                        ; types of units that are allowed as banner carriers
  4553.         BannerCarrierPosition    = UnitType:RohanPeasant        Pos:X:30.0 Y:0.0        ; (DEFAULT) position of banner carrier for peasant horde
  4554.         
  4555.         ; Positions for 5
  4556.         RankInfo = RankNumber:1 UnitType:RohanPeasant Position:X:0 Y:0    Position:X:0 Y:25        Position:X:0 Y:-25        Position:X:0 Y:50        Position:X:0 Y:-50 
  4557.         
  4558.         RanksToReleaseWhenAttacking = 1 
  4559.  
  4560.         MeleeAttackLeashDistance = 25; How far the hordes can move from the center of the horde when melee attacking.
  4561.     End
  4562.  
  4563.     Behavior = PhysicsBehavior ModuleTag_PhysicsBehavior
  4564.         GravityMult = 1.0
  4565.     End
  4566.     
  4567.     Behavior = CommandButtonHuntUpdate ModuleTag_CommandButtonHuntUpdate
  4568.     End
  4569.     
  4570.      Behavior = EmotionTrackerUpdate    Module_EmotionTracker
  4571.  
  4572.         TauntAndPointDistance        =    INFANTRY_TAUNT_POINT_RADIUS        ; max distance to taunted/pointed objet
  4573.         TauntAndPointUpdateDelay    =    1000    ; how often scan (milliseconds)
  4574.         TauntAndPointExcluded        =    NONE
  4575.         AfraidOf                    =    NONE +GondorGwaihir +RohanTreeBerd +RohanEntFir +RohanEntAsh +RohanEntBirch +MordorMountainTroll +MordorDrummerTroll +MordorFellBeast +MordorWitchKingOnFellBeast +MordorMumakil;Must be SCARY kindof as well.
  4576.         AlwaysAfraidOf                =    NONE +MordorBalrog +RohanOathbreaker +MordorSauron ;+MordorWitchKing +MordorWitchKingOnFellBeast
  4577.          PointAt                =    NONE +MordorFellBeast +MordorWitchKingOnFellBeast 
  4578.         HeroScanDistance        =    150
  4579.         FearScanDistance        =    INFANTRY_FEAR_SCAN_RADIUS
  4580.  
  4581.  
  4582.  
  4583.         AddEmotion    =    Terror_Base
  4584.         AddEmotion    =    Doom_Base
  4585.         AddEmotion    =   BraceForBeingCrushed_Base
  4586.         AddEmotion    =    UncontrollableFear_Base
  4587.         AddEmotion    =    FearIdle_Base
  4588.         AddEmotion    =    FearBusy_Base
  4589.         AddEmotion    =    Point_Base
  4590.         AddEmotion    =    Taunt_Base    
  4591.         AddEmotion    =    CheerIdle_Base
  4592.         AddEmotion    =    CheerBusy_Base
  4593.         AddEmotion    =    HeroCheerIdle_Base
  4594.         AddEmotion    =    HeroCheerBusy_Base
  4595.         AddEmotion    =    Alert_Base
  4596.     End    
  4597.         
  4598.     LocomotorSet
  4599.         Locomotor     = NormalMeleeHordeLocomotor
  4600.         Condition     = SET_NORMAL
  4601.         Speed         = NORMAL_GOOD_INFANTRY_HORDE_SPEED
  4602.     End
  4603.  
  4604.     Behavior = ProductionUpdate ProductionUpdateModuleTag
  4605.         GiveNoXP = Yes
  4606.     End
  4607.  
  4608.     Behavior = LevelUpUpgrade ModuleTag_BasicTraining
  4609.         TriggeredBy = Upgrade_RohanBasicTraining
  4610.         LevelsToGain = 1
  4611.         LevelCap = 2
  4612.     End
  4613.     
  4614.     Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality
  4615.         TriggeredBy = Upgrade_RohanHeavyArmorForPeasants
  4616.     End
  4617.     
  4618.     Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality2
  4619.         TriggeredBy = Upgrade_RohanForgedBladesForPeasants
  4620.     End
  4621.     
  4622.     Geometry = BOX
  4623.     GeometryMajorRadius = 20.0
  4624.     GeometryMinorRadius = 20.0
  4625.     GeometryHeight = 20.0
  4626.     GeometryIsSmall = No
  4627. End
  4628.  
  4629. //--------------------------------------
  4630. //----------- TORNADOES ------------------
  4631. //--------------------------------------
  4632. Object GaladrielTornado02
  4633.  
  4634.     ; *** ART Parameters ***
  4635.  
  4636.     ; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.
  4637.     ButtonImage = HSGaladriel_NaturesWrath
  4638.     SelectPortrait         = UPTornado
  4639.     Draw = W3DScriptedModelDraw ModuleTag_01
  4640.         OkToChangeModelColor = Yes
  4641.         DefaultModelConditionState
  4642.             Model           = EXTornado_SKN
  4643.             ParticleSysBone = NONE TornadoDust01 
  4644.             ParticleSysBone = NONE TornadoDust02
  4645.             ;ParticleSysBone = NONE TornadoDebris01 
  4646.             ;ParticleSysBone = NONE TornadoDebris02
  4647.             ParticleSysBone = NONE TornadoMagic01
  4648.             ParticleSysBone = NONE TornadoMagic02
  4649.             ParticleSysBone = NONE TornadoMagic03
  4650.             ParticleSysBone = B_TORNADO11 TornadoLightning FOLLOWBONE:YES
  4651.             ParticleSysBone = B_TORNADO11 TornadoLightning1 FOLLOWBONE:YES
  4652.             ParticleSysBone = B_TORNADO11 TornadoLightning2 FOLLOWBONE:YES
  4653.             ParticleSysBone = B_TORNADO11 TornadoLightning3 FOLLOWBONE:YES
  4654.             ParticleSysBone = B_TORNADO11 TornadoLightning4 FOLLOWBONE:YES
  4655.             ParticleSysBone = B_TORNADO11 TornadoLightning5 FOLLOWBONE:YES
  4656.             ParticleSysBone = B_TORNADO11 TornadoLightning6 FOLLOWBONE:YES
  4657.             ParticleSysBone = B_TORNADO11 TornadoLightning7 FOLLOWBONE:YES
  4658.             ParticleSysBone = B_TORNADO11 TornadoLightning8 FOLLOWBONE:YES
  4659.             ParticleSysBone = B_TORNADO11 TornadoLightning9 FOLLOWBONE:YES
  4660.         End   
  4661.         
  4662.     
  4663.         
  4664.         IdleAnimationState
  4665.             StateName = State_Idle
  4666.             Animation = tornadodefault 
  4667.                 AnimationName = EXTornado_SKL.EXTornado_IDLA
  4668.                 AnimationMode = ONCE
  4669.                 AnimationBlendTime = 30
  4670.                 AnimationSpeedFactorRange = 0.3 0.4
  4671.             End
  4672.             
  4673.                         
  4674.             BeginScript
  4675.                 Prev = CurDrawablePrevAnimationState()
  4676.                 if Prev == "State_JustBuilt" 
  4677.                     then CurDrawableSetTransitionAnimState("TRANS_JustBuilt_To_Idle") 
  4678.                 end
  4679.             EndScript
  4680.         End
  4681.         
  4682.  
  4683.         AnimationState                = JUST_BUILT
  4684.             StateName                = State_JustBuilt
  4685.             Animation
  4686.                 AnimationName        = EXTornado_SKL.EXTornado_SMNA
  4687.                 AnimationMode        = ONCE
  4688.                 AnimationBlendTime    = 0
  4689.             End
  4690.         End
  4691.         TransitionState = TRANS_JustBuilt_To_Idle
  4692.             Animation = BeingSummoned
  4693.                 AnimationName = EXTornado_SMNA 
  4694.                 AnimationMode = ONCE
  4695.             End
  4696.         
  4697.         End
  4698.     End
  4699.     
  4700.     Draw = W3DTornadoDraw ModuleTag_TornadoDraw
  4701.     
  4702.         DecalTemplate
  4703.               Texture        = EXTornadoGround
  4704.             Style          = SHADOW_ALPHA_DECAL
  4705.             OpacityMin     = 5% 
  4706.             OpacityMax     = 20%     
  4707.             MaxRadius       = 300.0
  4708.             Color          = R:200 G:200 B:200 A:255 ;R:180 G:48 B:26 A:255 
  4709.             OnlyVisibleToOwningPlayer = Yes
  4710.             RotationsPerMinute = 0.4
  4711.             SpiralAcceleration = 1.0
  4712.         End
  4713.         DecalCount        = 7
  4714.         DecalMaxRadius    = 300.0
  4715.         
  4716.         
  4717.     End
  4718.     
  4719.     ; ***DESIGN parameters ***
  4720.     Side            = Mordor
  4721.     EditorSorting    = UNIT
  4722.     ThreatLevel        = 0.0
  4723.     CommandPoints    = 0
  4724.     ShockwaveResistance = SHOCKWAVE_RESISTANCE_ALWAYS
  4725.  
  4726.     VisionRange        = 200.0
  4727.     DisplayName        = OBJECT:NaturesWrath
  4728.     
  4729.     CommandSet        = EmptyCommandSet
  4730.  
  4731.  
  4732.     ; *** AUDIO Parameters ***
  4733.  
  4734.     EvaEnemyObjectSightedEvent = None  ; Don't bother player about this object showing up over their base -- happens too much to bother
  4735.  
  4736.     SoundAmbient    = TornadoLoopMS
  4737.     SoundMoveStart    = TornadoMoveStart
  4738.  
  4739.     VoiceAttack        = TornadoSelect
  4740.     VoiceMove        = TornadoSelect
  4741.     VoiceSelect        = TornadoSelect
  4742.  
  4743.     ; *** ENGINEERING Parameters ***
  4744.  
  4745.     RadarPriority = UNIT
  4746.     KindOf = SELECTABLE NO_COLLIDE AIRCRAFT UNATTACKABLE MOVE_ONLY ORIENTS_TO_CAMERA CLICK_THROUGH HERO IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION NOT_AUTOACQUIRABLE IGNORES_SELECT_ALL PASS_EXPERIENCE_TO_PRODUCER
  4747.         
  4748.     Body = HighlanderBody ModuleTag_02
  4749.         MaxHealth         = 1.0
  4750.     End
  4751.     
  4752.     Behavior = AIUpdateInterface    ModuleTag_AIUpdateInterface
  4753.     End
  4754.  
  4755.     Behavior = PhysicsBehavior        ModuleTag_PhysicsBehavior
  4756.     End
  4757.     
  4758.     LocomotorSet
  4759.         Locomotor = TornadoLocomotor
  4760.         Condition = SET_NORMAL 
  4761.         Speed     = 20
  4762.     End
  4763.     
  4764.     Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
  4765.         MinLifetime        = 60000
  4766.         MaxLifetime        = 60000
  4767.     End    
  4768.  
  4769.     Behavior = FireWeaponUpdate ModuleTag_WINDY
  4770.         FireWeaponNugget
  4771.             WeaponName = TornadoWindWeapon
  4772.             FireDelay = 0
  4773.             OneShot = No
  4774.         End
  4775.     End    
  4776.     
  4777.  
  4778.     // TORNADOES ARE SCARY    
  4779.     Behavior = AttributeModifierAuraUpdate ModuleTag_FearMe
  4780.         StartsActive    = Yes ;If no, requires upgrade to turn on.
  4781.         BonusName        = EyeOfSauronFear
  4782.         RefreshDelay    = 1000
  4783.         Range            = 150.0
  4784.         ObjectFilter    = ANY +INFANTRY +CAVALRY
  4785.         TargetEnemy        = Yes
  4786.         MaxActiveRank    = 1        ;Only affects level 1 rank units
  4787.     End    
  4788.  
  4789.  
  4790.     
  4791.     Behavior = SlowDeathBehavior ModuleTag_05
  4792.         DeathTypes = ALL
  4793.     End
  4794.  
  4795.     Geometry = CYLINDER
  4796.     GeometryMajorRadius = 1.0
  4797.     GeometryMinorRadius = 1.0
  4798.     GeometryHeight        = 1.0
  4799.     GeometryIsSmall        = Yes
  4800.  
  4801.  
  4802.  
  4803.  
  4804.  
  4805. // NO SHADOW -M Lo
  4806. //    Shadow            = SHADOW_DECAL;SHADOW_ALPHA_DECAL; SHADOW_ALPHA_DECAL_DYNAMIC
  4807. //    ShadowSizeX        = 200;
  4808. //    ShadowSizeY        = 200;
  4809. //    ShadowTexture    = EUTornadoShadow;
  4810. //
  4811. //    ShadowOpacityStart = 0
  4812. //    ShadowOpacityFadeInTime = 1000
  4813. //    ShadowOpacityPeak = 255
  4814. //    ShadowOpacityFadeOutTime = 1000
  4815. //    ShadowOpacityEnd = 0
  4816. //
  4817. //    ShadowOverrideLODVisibility = yes
  4818.  
  4819. End
  4820.  
  4821. //--------------------------------------
  4822. //----------- TORNADOES ------------------
  4823. //--------------------------------------
  4824. Object GaladrielTornado
  4825.  
  4826.     ; *** ART Parameters ***
  4827.  
  4828.     ; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.
  4829.     ButtonImage = HSGaladriel_NaturesWrath
  4830.     SelectPortrait         = UPTornado
  4831.     Draw = W3DScriptedModelDraw ModuleTag_01
  4832.         OkToChangeModelColor = Yes
  4833.         DefaultModelConditionState
  4834.             Model           = EXTornado_SKN
  4835.             ;ParticleSysBone = NONE TornadoCow01 
  4836.             ParticleSysBone = NONE TornadoDebris01 
  4837.             ParticleSysBone = NONE TornadoDebris02
  4838.             ParticleSysBone = NONE TornadoDust01 
  4839.             ParticleSysBone = NONE TornadoDust02 
  4840.         End   
  4841.         
  4842.     
  4843.         
  4844.         IdleAnimationState
  4845.             StateName = State_Idle
  4846.             Animation = tornadodefault 
  4847.                 AnimationName = EXTornado_SKL.EXTornado_IDLA
  4848.                 AnimationMode = ONCE
  4849.                 AnimationBlendTime = 30
  4850.                 AnimationSpeedFactorRange = 0.3 0.4
  4851.             End
  4852.             
  4853.                         
  4854.             BeginScript
  4855.                 Prev = CurDrawablePrevAnimationState()
  4856.                 if Prev == "State_JustBuilt" 
  4857.                     then CurDrawableSetTransitionAnimState("TRANS_JustBuilt_To_Idle") 
  4858.                 end
  4859.             EndScript
  4860.         End
  4861.         
  4862.  
  4863.         AnimationState                = JUST_BUILT
  4864.             StateName                = State_JustBuilt
  4865.             Animation
  4866.                 AnimationName        = EXTornado_SKL.EXTornado_SMNA
  4867.                 AnimationMode        = ONCE
  4868.                 AnimationBlendTime    = 0
  4869.             End
  4870.         End
  4871.         TransitionState = TRANS_JustBuilt_To_Idle
  4872.             Animation = BeingSummoned
  4873.                 AnimationName = EXTornado_SMNA 
  4874.                 AnimationMode = ONCE
  4875.             End
  4876.         
  4877.         End
  4878.     End
  4879.     
  4880.     Draw = W3DTornadoDraw ModuleTag_TornadoDraw
  4881.     
  4882.         DecalTemplate
  4883.               Texture        = EXTornadoGround
  4884.             Style          = SHADOW_ALPHA_DECAL
  4885.             OpacityMin     = 5% 
  4886.             OpacityMax     = 20%     
  4887.             MaxRadius       = 300.0
  4888.             Color          = R:200 G:200 B:200 A:255 ;R:180 G:48 B:26 A:255 
  4889.             OnlyVisibleToOwningPlayer = Yes
  4890.             RotationsPerMinute = 0.4
  4891.             SpiralAcceleration = 1.0
  4892.         End
  4893.         DecalCount        = 7
  4894.         DecalMaxRadius    = 300.0
  4895.         
  4896.         
  4897.     End
  4898.     
  4899.     ; ***DESIGN parameters ***
  4900.     Side            = Mordor
  4901.     EditorSorting    = UNIT
  4902.     ThreatLevel        = 0.0
  4903.     CommandPoints    = 0
  4904.     ShockwaveResistance = SHOCKWAVE_RESISTANCE_ALWAYS
  4905.  
  4906.     VisionRange        = 200.0
  4907.     DisplayName        = OBJECT:NaturesWrath
  4908.     
  4909.     CommandSet        = EmptyCommandSet
  4910.  
  4911.  
  4912.     ; *** AUDIO Parameters ***
  4913.  
  4914.     EvaEnemyObjectSightedEvent = None  ; Don't bother player about this object showing up over their base -- happens too much to bother
  4915.  
  4916.     SoundAmbient    = TornadoLoopMS
  4917.     SoundMoveStart    = TornadoMoveStart
  4918.  
  4919.     VoiceAttack        = TornadoSelect
  4920.     VoiceMove        = TornadoSelect
  4921.     VoiceSelect        = TornadoSelect
  4922.  
  4923.     ; *** ENGINEERING Parameters ***
  4924.  
  4925.     RadarPriority = UNIT
  4926.     KindOf = SELECTABLE NO_COLLIDE AIRCRAFT UNATTACKABLE MOVE_ONLY ORIENTS_TO_CAMERA CLICK_THROUGH HERO IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION NOT_AUTOACQUIRABLE IGNORES_SELECT_ALL PASS_EXPERIENCE_TO_PRODUCER
  4927.         
  4928.     Body = HighlanderBody ModuleTag_02
  4929.         MaxHealth         = 1.0
  4930.     End
  4931.     
  4932.     Behavior = AIUpdateInterface    ModuleTag_AIUpdateInterface
  4933.     End
  4934.  
  4935.     Behavior = PhysicsBehavior        ModuleTag_PhysicsBehavior
  4936.     End
  4937.     
  4938.     LocomotorSet
  4939.         Locomotor = TornadoLocomotor
  4940.         Condition = SET_NORMAL 
  4941.         Speed     = 20
  4942.     End
  4943.     
  4944.     Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
  4945.         MinLifetime        = 60000
  4946.         MaxLifetime        = 60000
  4947.     End    
  4948.  
  4949.     Behavior = FireWeaponUpdate ModuleTag_WINDY
  4950.         FireWeaponNugget
  4951.             WeaponName = TornadoWindWeapon
  4952.             FireDelay = 0
  4953.             OneShot = No
  4954.         End
  4955.     End    
  4956.     
  4957.  
  4958.     // TORNADOES ARE SCARY    
  4959.     Behavior = AttributeModifierAuraUpdate ModuleTag_FearMe
  4960.         StartsActive    = Yes ;If no, requires upgrade to turn on.
  4961.         BonusName        = EyeOfSauronFear
  4962.         RefreshDelay    = 1000
  4963.         Range            = 150.0
  4964.         ObjectFilter    = ANY +INFANTRY +CAVALRY
  4965.         TargetEnemy        = Yes
  4966.         MaxActiveRank    = 1        ;Only affects level 1 rank units
  4967.     End    
  4968.  
  4969.  
  4970.     
  4971.     Behavior = SlowDeathBehavior ModuleTag_05
  4972.         DeathTypes = ALL
  4973.     End
  4974.  
  4975.     Geometry = CYLINDER
  4976.     GeometryMajorRadius = 1.0
  4977.     GeometryMinorRadius = 1.0
  4978.     GeometryHeight        = 1.0
  4979.     GeometryIsSmall        = Yes
  4980.  
  4981.  
  4982.  
  4983.  
  4984.  
  4985. // NO SHADOW -M Lo
  4986. //    Shadow            = SHADOW_DECAL;SHADOW_ALPHA_DECAL; SHADOW_ALPHA_DECAL_DYNAMIC
  4987. //    ShadowSizeX        = 200;
  4988. //    ShadowSizeY        = 200;
  4989. //    ShadowTexture    = EUTornadoShadow;
  4990. //
  4991. //    ShadowOpacityStart = 0
  4992. //    ShadowOpacityFadeInTime = 1000
  4993. //    ShadowOpacityPeak = 255
  4994. //    ShadowOpacityFadeOutTime = 1000
  4995. //    ShadowOpacityEnd = 0
  4996. //
  4997. //    ShadowOverrideLODVisibility = yes
  4998.  
  4999. End
  5000.  
  5001. ;--------------------------------------------------
  5002.  
  5003. Object ElrondWhirlwind
  5004.  
  5005.     ; *** ART Parameters ***
  5006.  
  5007.     ; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.
  5008.     ButtonImage = HSGaladriel_NaturesWrath
  5009.     SelectPortrait         = UPTornado
  5010.     Draw = W3DScriptedModelDraw ModuleTag_01
  5011.         OkToChangeModelColor = Yes
  5012.         DefaultModelConditionState
  5013.             Model           = EXWhirlwind
  5014.             ParticleSysBone = NONE WhirlwindDust01 
  5015.             ParticleSysBone = NONE WhirlwindDust02
  5016.         End  
  5017.     End
  5018.     
  5019.      Draw = W3DTornadoDraw ModuleTag_TornadoDraw
  5020.     
  5021.         DecalTemplate
  5022.               Texture        = EXWhirlwindGround
  5023.             Style          = SHADOW_ALPHA_DECAL
  5024.             OpacityMin     = 5% 
  5025.             OpacityMax     = 40%     
  5026.             MaxRadius       = 100.0
  5027.             Color          = R:255 G:255 B:255 A:255 ;R:200 G:200 B:200 A:255 
  5028.             OnlyVisibleToOwningPlayer = Yes
  5029.             RotationsPerMinute = 0.4
  5030.             SpiralAcceleration = 1.0
  5031.         End
  5032.         DecalCount        = 7
  5033.         DecalMaxRadius    = 300.0
  5034.         
  5035.         
  5036.     End
  5037.     
  5038.     ; ***DESIGN parameters ***
  5039.     Side            = Mordor
  5040.     EditorSorting    = UNIT
  5041.     ThreatLevel        = 0.0
  5042.     CommandPoints    = 0
  5043.     ShockwaveResistance = SHOCKWAVE_RESISTANCE_ALWAYS
  5044.  
  5045.     VisionRange        = 200.0
  5046.     DisplayName        = OBJECT:Whirlwind
  5047.     
  5048.     CommandSet        = EmptyCommandSet
  5049.  
  5050.  
  5051.     ; *** AUDIO Parameters ***
  5052.  
  5053.     EvaEnemyObjectSightedEvent = None  ; Don't bother player about this object showing up over their base -- happens too much to bother
  5054.  
  5055.     SoundAmbient    = TornadoLoopMS
  5056.     SoundMoveStart    = TornadoMoveStart
  5057.  
  5058.     VoiceAttack        = TornadoSelect
  5059.     VoiceMove        = TornadoSelect
  5060.     VoiceSelect        = TornadoSelect
  5061.  
  5062.     ; *** ENGINEERING Parameters ***
  5063.     RadarPriority = UNIT
  5064.     KindOf = SELECTABLE NO_COLLIDE AIRCRAFT UNATTACKABLE MOVE_ONLY ORIENTS_TO_CAMERA CLICK_THROUGH HERO IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION NOT_AUTOACQUIRABLE IGNORES_SELECT_ALL PASS_EXPERIENCE_TO_PRODUCER
  5065.     
  5066.     Body = HighlanderBody ModuleTag_02
  5067.         MaxHealth         = 1.0
  5068.     End
  5069.  
  5070.     Behavior = AIUpdateInterface    ModuleTag_AIUpdateInterface
  5071.     End
  5072.  
  5073.     Behavior = PhysicsBehavior        ModuleTag_PhysicsBehavior
  5074.     End
  5075.     
  5076.     LocomotorSet
  5077.         Locomotor = TornadoLocomotor
  5078.         Condition = SET_NORMAL 
  5079.         Speed     = 20
  5080.     End
  5081.     
  5082.     Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
  5083.         MinLifetime        = 60000
  5084.         MaxLifetime        = 60000
  5085.     End    
  5086.  
  5087.     Behavior = FireWeaponUpdate ModuleTag_WINDY
  5088.         FireWeaponNugget
  5089.             WeaponName = WhirlwindWindWeapon
  5090.             FireDelay = 0
  5091.             OneShot = No
  5092.         End
  5093.     End    
  5094.     
  5095.  
  5096.     // TORNADOES ARE SCARY    
  5097.     Behavior = AttributeModifierAuraUpdate ModuleTag_FearMe
  5098.         StartsActive    = Yes ;If no, requires upgrade to turn on.
  5099.         BonusName        = EyeOfSauronFear
  5100.         RefreshDelay    = 1000
  5101.         Range            = 150.0
  5102.         ObjectFilter    = ANY +INFANTRY +CAVALRY
  5103.         TargetEnemy        = Yes
  5104.         MaxActiveRank    = 1        ;Only affects level 1 rank units
  5105.     End    
  5106.  
  5107.  
  5108.     
  5109.     Behavior = SlowDeathBehavior ModuleTag_05
  5110.         DeathTypes = ALL
  5111.         FadeTime = 4000
  5112.             FadeDelay = 1000
  5113.     End
  5114.  
  5115.     Geometry = CYLINDER
  5116.     GeometryMajorRadius = 1.0
  5117.     GeometryMinorRadius = 1.0
  5118.     GeometryHeight        = 1.0
  5119.     GeometryIsSmall        = Yes
  5120.  
  5121. // NO SHADOW -M Lo
  5122. //    Shadow            = SHADOW_DECAL;SHADOW_ALPHA_DECAL; SHADOW_ALPHA_DECAL_DYNAMIC
  5123. //    ShadowSizeX        = 200;
  5124. //    ShadowSizeY        = 200;
  5125. //    ShadowTexture    = EUTornadoShadow;
  5126. //
  5127. //    ShadowOpacityStart = 0
  5128. //    ShadowOpacityFadeInTime = 1000
  5129. //    ShadowOpacityPeak = 255
  5130. //    ShadowOpacityFadeOutTime = 1000
  5131. //    ShadowOpacityEnd = 0
  5132. //
  5133. //    ShadowOverrideLODVisibility = yes
  5134.  
  5135. End
  5136.  
  5137. ;-------------------------------------------------------------------------------------------------------------
  5138. Object ElvenWhirlpool
  5139.  
  5140.     ; *** ART Parameters ***
  5141.     
  5142.     Draw = W3DScriptedModelDraw ModuleTag_Draw
  5143.         DefaultModelConditionState
  5144.             Model = EXWhirl02
  5145.             
  5146.             ParticleSysBone NONE WhirlpoolMist04Start
  5147.             
  5148.             ParticleSysBone NONE WhirlpoolMist
  5149.             ParticleSysBone NONE WhirlpoolMist02
  5150.             ParticleSysBone NONE WhirlpoolMist03
  5151.             ParticleSysBone NONE WhirlpoolMist04
  5152.             ParticleSysBone NONE WhirlpoolMist05
  5153.             ParticleSysBone NONE WhirlpoolFoam
  5154.             
  5155.             
  5156.             ParticleSysBone NONE WhirlpoolFlashes01
  5157.             ParticleSysBone NONE WhirlpoolSparks        
  5158.         End
  5159.     End
  5160.  
  5161.     ; ***DESIGN parameters ***
  5162.     Side                = Elves
  5163.     EditorSorting        = UNIT
  5164.     ThreatLevel            = 0.0
  5165.     CommandPoints        = 0
  5166.     ShockwaveResistance = SHOCKWAVE_RESISTANCE_IMMUNE
  5167.  
  5168.     ShroudClearingRange        = GOOD_FIRE_SHIP_WHIRLPOOL_RADIUS                    ; so we can see ships sinking etc.
  5169.     
  5170.     CommandSet        = EmptyCommandSet
  5171.  
  5172.     Scale            = 2.0
  5173.  
  5174.     ; *** AUDIO Parameters ***
  5175.  
  5176.     ;VoiceCreated             = ShipWhirlpoolAttack                ;didn't work
  5177.     ;VoiceFullyCreated         = ShipWhirlpoolAttack                ;didn't work
  5178.  
  5179.     SoundAmbient             = ShipWhirlpoolAttack
  5180.  
  5181.     EvaEnemyObjectSightedEvent = None  ; Don't bother player about this object showing up over their base -- happens too much to bother
  5182.  
  5183.     ; *** ENGINEERING Parameters ***
  5184.  
  5185.     RadarPriority = UNIT
  5186.     KindOf = NO_COLLIDE UNATTACKABLE MOVE_ONLY CLICK_THROUGH IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION NOT_AUTOACQUIRABLE IGNORES_SELECT_ALL
  5187.     
  5188.     Body = ActiveBody ModuleTag_Body
  5189.         MaxHealth         = 200000
  5190.     End
  5191.  
  5192.     Behavior = AIUpdateInterface ModuleTag_AIUpdateInterface
  5193.     End
  5194.  
  5195.     Behavior = PhysicsBehavior ModuleTag_PhysicsBehavior
  5196.     End
  5197.     
  5198.     LocomotorSet
  5199.         Locomotor = WhirlpoolLocomotor
  5200.         Condition = SET_NORMAL 
  5201.         Speed     = 0
  5202.     End
  5203.     
  5204.     Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
  5205.         MinLifetime        = GOOD_FIRE_SHIP_WHIRLPOOL_TIMEOUT
  5206.         MaxLifetime        = GOOD_FIRE_SHIP_WHIRLPOOL_TIMEOUT
  5207.     End    
  5208.  
  5209.     Behavior = FireWeaponUpdate ModuleTag_Whirly
  5210.         FireWeaponNugget
  5211.             WeaponName    = WhirlpoolWeapon
  5212.             FireDelay    = 0
  5213.             OneShot        = No
  5214.         End
  5215.     End
  5216.     
  5217.     Behavior = SlowDeathBehavior ModuleTag_Death
  5218.         DeathTypes = ALL
  5219.         DestructionDelay = 5000
  5220.         FadeTime = 4000
  5221.         FadeDelay = 1000
  5222.     End
  5223.  
  5224.     Geometry            = CYLINDER
  5225.     GeometryMajorRadius = 1.0
  5226.     GeometryMinorRadius = 1.0
  5227.     GeometryHeight        = 1.0
  5228.     GeometryIsSmall        = Yes
  5229.  
  5230. End
  5231.  
  5232.