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_goodfaction_units_dwarven_gimli.ini < prev    next >
Text File  |  2006-01-31  |  30KB  |  973 lines

  1. ;------------------------------------------------------------------------------
  2. ;
  3. ;    Gimli.ini
  4. ;
  5. ;------------------------------------------------------------------------------
  6.  
  7. ; aka Gimli, Dwarf
  8. Object RohanGimli
  9.     ; *** ART Parameters ***
  10.  
  11.     ; SelectPortrait for Heros is portrait behind skill buttons. HP = HeroPortrait.
  12.     SelectPortrait = HPGimli
  13.     
  14.     ; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.
  15.     ButtonImage = HIGimli
  16.     
  17.     DescriptionStrategic = CONTROLBAR:LW_ToolTip_Gimli
  18.  
  19.     ;ShadowMaxHeight = 999 ;this is causing 2 shadows to be cast when the unit is under a bridge.  Taking it out!
  20.     Draw = W3DScriptedModelDraw ModuleTag_01
  21.  
  22.       OkToChangeModelColor = Yes
  23.       
  24.  
  25.    StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
  26.  
  27. ;;====================== MODELS ================================================================
  28.         DefaultModelConditionState
  29.             Model               = RUGimli_SKN
  30.             Skeleton            = RUGimli_SKL
  31.             WeaponLaunchBone    = TERTIARY AXE02
  32.         End
  33.         
  34.         ModelConditionState = WEAPONSET_TOGGLE_1
  35.             Model               = RUGimli_SKN
  36.             Skeleton            = RUGimli_SKL
  37.             ParticleSysBone =  BAT_HEAD Slayer FollowBone:Yes
  38.         End
  39.         
  40.  
  41. ;;================== ANIMATIONS =================================================================
  42.  
  43. ;;------------------ MOVING & DYING ---------------------------
  44.  
  45.     ;;======= DYING
  46.  
  47.         AnimationState        = STUNNED_FLAILING
  48.             Animation           = FLYA
  49.                 AnimationName     = RUGimli_FLYA
  50.                 AnimationMode     = LOOP
  51.                 AnimationSpeedFactorRange    = 0.3 0.5
  52.             End
  53.             Flags               = RANDOMSTART
  54.             BeginScript
  55.                 Prev = CurDrawablePrevAnimationState()
  56.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  57.             EndScript
  58.         End
  59.         
  60.         AnimationState        = DYING SPLATTED
  61.             Animation           = LNDB
  62.                 AnimationName     = RUGimli_LNDA
  63.                 AnimationMode     = ONCE
  64.             End
  65.             BeginScript
  66.                 Prev = CurDrawablePrevAnimationState()
  67.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  68.             EndScript
  69.         End
  70.  
  71.         AnimationState        = DYING
  72.             Animation           = DIEA
  73.                 AnimationName     = RUGimli_DIEA
  74.                 AnimationMode     = ONCE
  75.             End
  76.             Animation           = DIEC
  77.                 AnimationName     = RUGimli_DIEC
  78.                 AnimationMode     = ONCE
  79.             End
  80. ;            Animation           = DIEB
  81. ;                AnimationName     = RUGimli_DIEB
  82. ;                AnimationMode     = ONCE
  83. ;            End        
  84.             BeginScript
  85.                 Prev = CurDrawablePrevAnimationState()
  86.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  87.             EndScript
  88.         End
  89.         
  90.         AnimationState        = STUNNED_STANDING_UP
  91.             Animation           = GTPA
  92.                 AnimationName     = RUGimli_GTPA
  93.                 AnimationMode     = ONCE
  94.             End
  95.         End
  96.     
  97.         AnimationState        = STUNNED
  98.             Animation           = LNDA
  99.                 AnimationName     = RUGimli_LNDA
  100.                 AnimationMode     = ONCE
  101.             End
  102.             BeginScript
  103.                 Prev = CurDrawablePrevAnimationState()
  104.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  105.             EndScript
  106.         End
  107.  
  108.         AnimationState                        = PARALYZED
  109.             Animation
  110.                 AnimationName                = RUGimli_IDLA
  111.                 AnimationMode                = LOOP
  112.             End
  113.         End
  114.  
  115.         
  116.                 
  117.  
  118. ; OBSOLETE - Dwarven Grudge
  119. ;        AnimationState        = RESURRECTED
  120. ;            Animation           = REZA
  121. ;                AnimationName     = RUGimli_REZA
  122. ;                AnimationMode     = ONCE
  123. ;            End
  124. ;            ;Some FX to show we have risen from the dead
  125. ;            EnteringStateFX = FX_Resurrect
  126. ;        End
  127.             
  128.     ;;======= MOVING
  129.     
  130.     
  131.     AnimationState        = MOVING FIRING_OR_PREATTACK_A
  132.             ShareAnimation        = Yes
  133.             Animation           = RunAndFire
  134.                 AnimationName       = RUGimli_ATRA
  135.                 AnimationMode       = LOOP
  136.             End
  137.             Flags               = RANDOMSTART 
  138.         End
  139.  
  140. ; TODO: Slayer Moving
  141. ;        AnimationState                    = MOVING HERO
  142. ;            Animation                    = slayer
  143. ;                AnimationName            = RUGimli_ATKE
  144. ;                AnimationMode            = LOOP
  145. ;            End
  146. ;        End
  147.  
  148. ; TODO: Replace with SLAYER IDLE animation
  149. ;         AnimationState                    = HERO
  150. ;            Animation                    = slayer standing still
  151. ;                AnimationName            = RUGimli_IDLA    ; RUGimli_ATKF
  152. ;                AnimationMode            = LOOP
  153. ;            End
  154. ;        End
  155.  
  156. ; OBSOLETE        
  157. ;        AnimationState                = MOVING WANDER
  158. ;            Animation                = WLKA
  159. ;                AnimationName        =  RUGimli_WLKA
  160. ;                AnimationMode        = LOOP
  161. ;            End
  162. ;            Flags                        = RANDOMSTART
  163. ;        End
  164.  
  165. ; OBSOLETE        
  166. ;        AnimationState        = MOVING USER_4
  167. ;            Animation           = ATKF
  168. ;                AnimationName     = RUGimli_ATKF
  169. ;                AnimationMode     = LOOP
  170. ;            End
  171. ;            Animation           = ATKE
  172. ;                AnimationName     = RUGimli_ATKE
  173. ;                AnimationMode     = LOOP
  174. ;            End
  175. ;            ;ParticleSysBone     = None InfantryDustTrails
  176. ;            BeginScript
  177. ;                Prev = CurDrawablePrevAnimationState()
  178. ;                if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  179. ;            EndScript
  180. ;           ;FXEvent    = Frame:6 Name: FX_BladeMasterHitOrient
  181. ;           ;FXEvent    = Frame:19 Name: FX_BladeMasterHitOrient
  182. ;        End
  183.  
  184.         AnimationState                =    MOVING ATTACKING
  185.             Animation                =    RUNB
  186.                 AnimationName        =    RUGimli_RUNB
  187.                 AnimationMode        =    LOOP
  188.             End
  189.             Flags                    =    RANDOMSTART
  190.             ;ParticleSysBone        =    None InfantryDustTrails
  191.             BeginScript
  192.                 Prev = CurDrawablePrevAnimationState()
  193.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  194.             EndScript
  195.         End
  196.     
  197.         AnimationState                =    MOVING
  198.             Animation                =    RUNA
  199.                 AnimationName        =    RUGimli_RUNA
  200.                 AnimationMode        =    LOOP
  201.             End
  202.             Flags                    =    RANDOMSTART
  203.             ;ParticleSysBone        =    None InfantryDustTrails
  204.             BeginScript
  205.                 Prev = CurDrawablePrevAnimationState()
  206.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  207.             EndScript
  208.         End
  209.  
  210.  
  211. ;;------------------ ATTACKING  -------------------------------
  212.  
  213. ; AXE THROW
  214.         AnimationState        =  FIRING_OR_PREATTACK_C
  215.             Animation           = SPCA
  216.                 AnimationName     = RUGimli_SPCA
  217.                 AnimationMode     = ONCE
  218. ;                UseWeaponTiming        = Yes
  219.             End
  220.             FrameForPristineBonePositions = 42;44
  221.             ;ParticleSysBone     = None MeleeDust
  222.             BeginScript
  223.                 CurDrawableShowSubObject("AXE02")
  224.                 Prev = CurDrawablePrevAnimationState()
  225.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  226.             EndScript
  227.         End
  228.  
  229.         AnimationState        =  FIRING_OR_PREATTACK_B; WEAPONLOCK_SECONDARY
  230.             Animation           = ATKA
  231.                 AnimationName     = RUGimli_ATKD
  232.                 AnimationMode     = ONCE
  233.                 UseWeaponTiming        = Yes
  234.             End
  235.             
  236.             ;ParticleSysBone None MeleeDust
  237.             BeginScript
  238.                 Prev = CurDrawablePrevAnimationState()
  239.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  240.             EndScript
  241.         End
  242.     
  243.         AnimationState        =  FIRING_OR_PREATTACK_A
  244.             Animation           = ATKA
  245.                 AnimationName     = RUGimli_ATKA
  246.                 AnimationMode     = ONCE
  247.                 UseWeaponTiming        = Yes
  248.             End
  249.             Animation           = ATKB
  250.                 AnimationName     = RUGimli_ATKB
  251.                 AnimationMode     = ONCE
  252.                 UseWeaponTiming        = Yes
  253.             End        
  254.             Animation           = ATKC
  255.                 AnimationName     = RUGimli_ATKC
  256.                 AnimationMode     = ONCE
  257.                 UseWeaponTiming        = Yes
  258.             End
  259.             
  260.             ;ParticleSysBone None MeleeDust
  261.             BeginScript
  262.                 Prev = CurDrawablePrevAnimationState()
  263.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  264.             EndScript
  265.         End
  266.  
  267.     ;leap animations         
  268.         AnimationState            = SPECIAL_WEAPON_TWO UNPACKING
  269.             Animation            = GettingReadyToLeap
  270.                 AnimationName    = RUGimli_LEPA
  271.                 AnimationMode   = ONCE
  272.             End
  273.         End
  274.  
  275.         AnimationState        =  ABOUT_TO_HIT        ;using Gimli Leap
  276.         StateName            = State_AboutToHitGround
  277.             Animation           = Leap
  278.                 AnimationName     = RUGimli_LEPC  
  279.                 AnimationMode     = ONCE
  280.             ;    UseWeaponTiming        = Yes
  281.             End
  282.         End
  283.  
  284.  
  285.         AnimationState        = THROWN_PROJECTILE
  286.             Animation           = LEPB
  287.                 AnimationName     = RUGimli_LEPB
  288.                 AnimationMode     = LOOP
  289.                 AnimationBlendTime = 20
  290.             End
  291.         End
  292.  
  293. ;;; REMOVED
  294. ;        AnimationState        = WEAPONSET_RAMPAGE ;WEAPONSTATE_ONE
  295. ;            Animation           = RPGA
  296. ;                AnimationName     = RUGimli_RPGA
  297. ;                AnimationMode     = LOOP
  298. ;                AnimationBlendTime = 10
  299. ;            End
  300. ;            BeginScript
  301. ;                Prev = CurDrawablePrevAnimationState()
  302. ;                if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  303. ;            EndScript
  304. ;        End
  305.     
  306. ;        AnimationState        = USER_1
  307. ;            Animation           = TOS1
  308. ;                AnimationName     = RUGimli_TOS1
  309. ;                AnimationMode     = ONCE
  310. ;            End
  311. ;            BeginScript
  312. ;                Prev = CurDrawablePrevAnimationState()
  313. ;                if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  314. ;            EndScript
  315. ;        End
  316.     
  317.  
  318. ;        AnimationState        = USER_1 PASSENGER
  319. ;            Animation           = TOS2
  320. ;                AnimationName     = RUGimli_TOS2
  321. ;                AnimationMode     = ONCE
  322. ;            End
  323. ;            BeginScript
  324. ;                Prev = CurDrawablePrevAnimationState()
  325. ;                if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  326. ;            EndScript
  327. ;        End
  328.     
  329. ;        AnimationState        = PASSENGER
  330. ;            Animation           = TOS1
  331. ;                AnimationName     = RUGimli_TOS1
  332. ;                AnimationMode     = MANUAL
  333. ;            End
  334. ;            Flags               = START_FRAME_LAST
  335. ;            BeginScript
  336. ;                Prev = CurDrawablePrevAnimationState()
  337. ;                if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  338. ;            EndScript
  339. ;        End
  340.     
  341. ;;-------------------- HIT REACTIONS --------------------------
  342.  
  343.         AnimationState = HIT_REACTION
  344.             Animation = Hit_Level_1_a
  345.                 AnimationName = RUGimli_HITA
  346.                 AnimationMode = ONCE
  347.             End
  348.         End
  349.         
  350. ;;------------ EMOTIONS ---------------------------------------
  351.  
  352. ;;====== LEVELED
  353.         AnimationState                = LEVELED                         ; This state clears itself in 3 seconds
  354.             Animation                = LevelUp
  355.                 AnimationName        = RUGimli_CHRB
  356.                 AnimationMode        = ONCE
  357.             End
  358.         End
  359.  
  360. ;;====== CELEBRATING
  361.         AnimationState            = EMOTION_CELEBRATING
  362.             Animation           = CHRA
  363.                 AnimationName   = RUGimli_CHRA
  364.                 AnimationMode   = ONCE
  365.             End
  366.             Flags                    =    RESTART_ANIM_WHEN_COMPLETE
  367.         End
  368.  
  369. ;;====== TAUNTING
  370.         AnimationState            = EMOTION_TAUNTING
  371.             Animation           = TNTA
  372.                 AnimationName   = RUGimli_TNTA
  373.                 AnimationMode   = ONCE
  374.             End
  375.             Animation           = TNTB
  376.                 AnimationName   = RUGimli_TNTB
  377.                 AnimationMode   = ONCE
  378.             End
  379.             Flags                    =    RESTART_ANIM_WHEN_COMPLETE
  380.         End
  381.         
  382.         AnimationState                    = EMOTION_ALERT
  383.             Animation                    = Ready
  384.                 AnimationName            = RUGimli_IDLA
  385.                 AnimationMode            = LOOP
  386.                 AnimationBlendTime  =   15
  387.             End
  388.             BeginScript
  389.                 CurDrawableHideSubObject("AXE02")
  390. ;                Prev = CurDrawablePrevAnimationState()
  391. ;                if Prev == "BORED"        then CurDrawableSetTransitionAnimState("Transition_BoredToReady") end
  392. ;                if Prev == "SELECTED"    then CurDrawableSetTransitionAnimState("Transition_SelectedToReady") end
  393.                 if Prev == "State_AboutToHitGround" then CurDrawableSetTransitionAnimState("TRANS_AboutToHitGround_To_Idle") end
  394.             EndScript
  395.  
  396.         End
  397.         
  398.         AnimationState            = RAISING_FLAG
  399.             Animation           = CHRA
  400.                 AnimationName   = RUGimli_CHRA
  401.                 AnimationMode   = LOOP
  402.             End
  403.         End
  404.  
  405. ;;------------------- SELECTED STATES -------------------------
  406.         
  407.         AnimationState                =    SELECTED
  408.             StateName                =    AtAttentionIdle
  409.             SimilarRestart            =   Yes            
  410.             Animation                =    ATNB
  411.                 AnimationName        =     RUGimli_ATNB
  412.                 AnimationMode        =    LOOP
  413.             End
  414.             BeginScript
  415.                 CurDrawableHideSubObject("AXE02")
  416.                 Prev = CurDrawablePrevAnimationState()
  417.                 if Prev == "STATE_Idle" then CurDrawableSetTransitionAnimState("TRANS_Select") end
  418.                 if Prev == "AtAttentionIdle" then CurDrawableSetTransitionAnimState("TRANS_Select") end
  419.                 if Prev == "State_AboutToHitGround" then CurDrawableSetTransitionAnimState("TRANS_AboutToHitGround_To_Idle") end
  420.             EndScript
  421.         End
  422.                             
  423. ;;--------------- IDLE STATES ---------------------------------
  424.  
  425.         IdleAnimationState
  426.             StateName                = STATE_Idle
  427.             Animation           = IDLB
  428.                 AnimationName     = RUGimli_IDLB
  429.                 AnimationMode     = ONCE
  430.                 AnimationPriority = 30
  431.             End
  432.             Animation           = IDLF
  433.                 AnimationName     = RUGimli_IDLF
  434.                 AnimationMode     = ONCE
  435.                 AnimationPriority = 5
  436.             End        
  437.             Animation           = IDLD
  438.                 AnimationName     = RUGimli_IDLD
  439.                 AnimationMode     = ONCE
  440.                 AnimationPriority = 4
  441.             End
  442.             Animation           = IDLG
  443.                 AnimationName     = RUGimli_IDLG
  444.                 AnimationMode     = ONCE
  445.                 AnimationPriority = 2
  446.             End
  447.             Animation           = IDLH
  448.                 AnimationName     = RUGimli_IDLH
  449.                 AnimationMode     = ONCE
  450.                 AnimationPriority = 1
  451.             End        
  452.             Animation           = IDLC
  453.                 AnimationName     = RUGimli_IDLC
  454.                 AnimationMode     = ONCE
  455.                 AnimationPriority = 1
  456.             End
  457.             Animation           = IDLE
  458.                 AnimationName     = RUGimli_IDLE
  459.                 AnimationMode     = ONCE
  460.                 AnimationPriority = 1
  461.             End
  462.             
  463.             BeginScript
  464.                 CurDrawableHideSubObject("AXE02")
  465.                 Prev = CurDrawablePrevAnimationState()
  466.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  467.                 if Prev == "AtAttentionIdle" then CurDrawableSetTransitionAnimState("TRANS_SelectedToIdle") end
  468.                 if Prev == "State_AboutToHitGround" then CurDrawableSetTransitionAnimState("TRANS_AboutToHitGround_To_Idle") end
  469.             EndScript
  470.         End
  471.  
  472.         
  473. ;---Transitions-------------------------------------
  474.  
  475.         TransitionState       = TRANS_EndDwarfToss
  476.             Animation           = TOS4
  477.                 AnimationName     = RUGimli_TOS4
  478.                 AnimationMode     = ONCE
  479.             End
  480.         End    
  481.  
  482.         TransitionState       = TRANS_SelectedToIdle    
  483.             Animation           = ATNC
  484.                 AnimationName     = RUGimli_ATNC
  485.                 AnimationMode     = ONCE
  486.                 AnimationSpeedFactorRange = 0.7 1.3
  487.             End
  488.         End
  489.         
  490.         TransitionState                =    TRANS_Select
  491.             Animation                =    ATNA
  492.                 AnimationName        =     RUGimli_ATNA
  493.                 AnimationMode        =    ONCE
  494.             End
  495.         End
  496.     
  497.         TransitionState = TRANS_AboutToHitGround_To_Idle
  498.             Animation = SplashAtEndOfJump
  499.                 AnimationName = RUGimli_LEPC
  500.                 AnimationMode = ONCE
  501.                 ;AnimationBlendTime = 0
  502.             End
  503.             Flags = MAINTAIN_FRAME_ACROSS_STATES
  504.         End
  505.         
  506.     End
  507.     
  508.  
  509.     
  510.     ;Draw module just for the HeroSelection
  511.     Draw = W3DScriptedModelDraw Icon
  512.         ModelConditionState = NONE
  513.             Model                    = Icon02
  514.         End
  515.     End
  516.     
  517. ;;================== END ANIMATIONS =================================================================    
  518.  
  519.     #include "..\..\..\includes\StunDrawModuleSmall.inc"
  520.  
  521.     ; ***DESIGN parameters ***
  522.     Side = Obsolete
  523.     EditorSorting = UNIT
  524.     ThreatLevel = GIMLI_THREAT_LEVEL
  525.     TransportSlotCount = TRANSPORTSLOTCOUNT_HERO
  526.     BuildCost           = GIMLI_BUILDCOST                    
  527.     BuildTime           = GIMLI_BUILDTIME    
  528.     ShockwaveResistance = SHOCKWAVE_RESISTANCE_STRONG
  529.     ;//DisplayMeleeDamage = GIMLI_DAMAGE
  530.     
  531.     HeroSortOrder = 40
  532.                 
  533.     WeaponSet
  534.         Conditions                = None 
  535.         Weapon                    = PRIMARY  RohanGimliAxe  
  536.         Weapon                    = TERTIARY    RohanGimliAxeThrown
  537.         AutoChooseSources        = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  538.         AutoChooseSources        = TERTIARY NONE
  539.         ShareWeaponReloadTime    = Yes
  540.     End
  541.     
  542.     WeaponSet
  543.         Conditions                = WEAPONSET_TOGGLE_1
  544.         Weapon                    = SECONDARY  RohanGimliSuperAxe
  545.         Weapon                    = TERTIARY    RohanGimliAxeThrown
  546.         AutoChooseSources        = SECONDARY FROM_PLAYER FROM_SCRIPT FROM_AI
  547.         AutoChooseSources        = TERTIARY NONE
  548.         ShareWeaponReloadTime    = Yes
  549.     End
  550.     
  551.  
  552.     ArmorSet
  553.         Conditions      = None
  554.         Armor           = ToughHeroArmor
  555.         DamageFX        = NormalDamageFX
  556.     End
  557.     VisionRange = VISION_STANDARD_MELEE                
  558.     ShroudClearingRange = SHROUD_CLEAR_HERO
  559.     
  560.     MaxVisionBonusPercent = 300%
  561.     VisionBonusTestRadius = 200
  562.     VisionBonusPercentPerFoot = 1.0%
  563.  
  564.     BountyValue = ROHAN_GIMLI_BOUNTY_VALUE
  565.     DisplayName = OBJECT:RohanGimli
  566.     RecruitText = CONTROLBAR:RohanGimliRecruit
  567.     ReviveText    = CONTROLBAR:RohanGimliRevive
  568.     Hotkey        = CONTROLBAR:RohanGimliHotkey
  569.     CrushableLevel = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  570. ;  CrusherLevel = 1
  571.     
  572.     CommandSet  = RohanGimliCommandSet
  573.     CommandPoints = 75
  574.  
  575.  
  576.     ; *** AUTO RESOLVE DATA *** 
  577.     AutoResolveUnitType = AutoResolveUnit_Hero
  578.     AutoResolveCombatChain = AutoResolve_HeroCombatChain
  579.  
  580.     AutoResolveBody = AutoResolve_GimliBody
  581.     
  582.     AutoResolveArmor
  583.         Armor = AutoResolve_GimliArmor
  584.     End
  585.  
  586.     AutoResolveWeapon
  587.         Weapon = AutoResolve_GimliWeapon
  588.     End
  589.     
  590.     ;AutoResolveLeadership = AutoResolve_GimliBonus
  591.  
  592.  
  593.     ; *** AUDIO Parameters ***;
  594.  
  595.     ;VoiceAmbushed                            = GimliVoiceAmbushed      OBSOLETE VOICE
  596.     VoiceAttack                                = GimliVoiceAttack
  597.     VoiceAttackCharge                        = GimliVoiceAttackCharge
  598.     VoiceAttackMachine                        = GimliVoiceAttack
  599.     VoiceAttackStructure                    = GimliVoiceAttack
  600.     ;VoiceCreated                            = GimliVoiceSalute        ;this conflicts with his respawn dialogue line -- rehooked to spawn FX
  601.     VoiceFear                                 = GimliVoiceHelpMe
  602.     VoiceGuard                                = GimliVoiceMove
  603.     VoiceMove                                = GimliVoiceMove
  604.     VoiceMoveToCamp                            = GimliVoiceMove
  605.     VoiceMoveWhileAttacking                    = GimliVoiceDisengage
  606.     VoicePriority                            = 67
  607.     VoiceRetreatToCastle                    = GimliVoiceRetreat
  608.     VoiceSelect                                = GimliVoiceSelectMS
  609.     VoiceSelectBattle                         = GimliVoiceSelectBattle
  610.  
  611.     SoundImpact                                = ImpactHorse
  612.  
  613. ;GimliVoiceJoinAnybody
  614.     
  615.     UnitSpecificSounds
  616.         VoiceGarrison                        = GimliVoiceGarrison
  617.         VoiceEnterUnitElvenTransportShip    = GimliVoiceMove
  618.         VoiceInitiateCaptureBuilding        = GimliVoiceMove
  619.         ;VoiceEnterStateInitiateCaptureBuilding    =
  620.     End
  621.  
  622.     CrowdResponseKey = DwarfHero
  623.  
  624.     #include "..\..\..\Includes\StandardUnitEvaEvents.inc"
  625.     
  626.     EvaEventDieOwner = GimliDie            ;Eva event to trigger on unit's death. NOTICE THAT this is only for permanent deaths
  627.  
  628.     Behavior = LargeGroupAudioUpdate ModuleTag_LGAU        ; Tie into LargeGroupAudio system
  629.         Key = Humanoid_Male Dwarf Dwarf_Male Unit Infantry Hero
  630.     End
  631.  
  632.     ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
  633.         MaxUpdateRangeCap = 800
  634.         AnimationSound = Sound:FootstepDirtA            Animation:RUGimli_SKL.RUGimli_RUNA    Frames:3 14
  635.         AnimationSound = Sound:FootstepDirtA            Animation:RUGimli_SKL.RUGimli_RUNB    Frames:3 12
  636.  
  637.         AnimationSound = Sound:BodyFallSoldier            Animation:RUGimli_SKL.RUGimli_LNDA    Frames:2
  638.  
  639.         AnimationSound = Sound:BodyFallGenericNoArmor    Animation:RUGimli_SKL.RUGimli_DIEA    Frames:11
  640.         AnimationSound = Sound:BodyFallGenericNoArmor    Animation:RUGimli_SKL.RUGimli_DIEC    Frames:59
  641.     End
  642.  
  643.  
  644.     ; *** ENGINEERING Parameters ***
  645.  
  646.     RadarPriority = UNIT
  647.     KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT GIMLI HERO ARMY_SUMMARY ATTACK_NEEDS_LINE_OF_SIGHT HEAVY_MELEE_HITTER
  648.     PathfindDiameter = 40.0
  649.     
  650. ;    Behavior = WeaponSetUpgrade ModuleTag_AxeThrow
  651. ;        TriggeredBy = Upgrade_GimliAxeThrow
  652. ;    End
  653.  
  654. ;; REMOVED - DWARVEN GRUDGE ABILITY (replaced with RespawnBody)
  655. ;    Body = FreeLifeBody ModuleTag_FreeLifeBody ;FreeLifeBody is a variation of RespawnBody
  656. ;        CheerRadius             = EMOTION_CHEER_RADIUS
  657. ;        MaxHealth                 = GIMLI_HEALTH  ;BALANCE Gimli Health
  658. ;
  659. ;        FreeLifeHealthPercent        = 50    ;percentage of MaxHealth health to recover
  660. ;        FreeLifeTime            = 10000 ;amount of time until we can rise from the dead again
  661. ;        FreeLifeInvincible        = Yes
  662. ;        FreeLifePrerequisiteUpgrade    = Upgrade_GimliFreeLife
  663. ;        FreeLifeAnimAndDuration        = AnimState:RESURRECTED AnimTime:3000
  664. ;
  665. ;        PermanentlyKilledByFilter    = NONE        ;Who kills me permanently?
  666. ;          DodgePercent              = HERO_DODGE_PERCENT
  667. ;    End
  668.  
  669.     Body = RespawnBody ModuleTag_RespawnBody
  670.         CheerRadius             = EMOTION_CHEER_RADIUS
  671.         MaxHealth                 = GIMLI_HEALTH  ;BALANCE Gimli Health
  672.         PermanentlyKilledByFilter    = NONE        ;Who kills me permanently?
  673.            DodgePercent              = 80%    
  674.     End
  675.  
  676.     Behavior = UnpauseSpecialPowerUpgrade ModuleTag_TheodenLeadership
  677.         SpecialPowerTemplate = SpecialAbilityFakeLeadership
  678.         TriggeredBy = Upgrade_GimliFreeLife
  679.     End
  680.     Behavior = SpecialPowerModule ModuleTag_TheodenLeadershipUpdate   
  681.         SpecialPowerTemplate      = SpecialAbilityFakeLeadership
  682.         UpdateModuleStartsAttack  = No
  683.         StartsPaused = Yes
  684.     End    
  685.  
  686.     Behavior = RespawnUpdate ModuleTag_RespawnUpdate
  687.         DeathAnim                = DYING            ;Model condition to play when killed-to-respawn
  688.         DeathFX                = FX_GimliDieToRespawn    ;FXList to play when killed-to-respawn
  689.         DeathAnimationTime        = 4100            ;How long DeathAnim will take.
  690.         InitialSpawnFX            = FX_GimliInitialSpawn
  691.         RespawnAnim                = LEVELED            ;Animation to play when respawning.
  692.         RespawnFX                = FX_GimliRespawn        ;FXList to play when respawning.
  693.         RespawnAnimationTime        = 2000            ;Time it takes for respawn to play.
  694.         AutoRespawnAtObjectFilter    = NONE +CASTLE_KEEP    ;Respawn at this location -- and at it's exit production point if possible.
  695.         ButtonImage                = HIGimli_res
  696.         
  697.         ;RespawnEntries determine the ruleset for how a character can be revived. Some units may automatically respawn, others
  698.         ;may require a specific revive action performed on him. You can specify different values for each level... or use Level:Any
  699.         RespawnRules =                AutoSpawn:No    Cost:3000        Time:60000        Health:100%        ;DEFAULT VALUES
  700.     End
  701.  
  702.     Behavior = AutoHealBehavior ModuleTag_GimliHealing
  703.         StartsActive = Yes
  704.         HealingAmount = HERO_HEAL_AMOUNT
  705.         HealingDelay = 1000
  706.         StartHealingDelay = HERO_HEAL_DELAY
  707.         HealOnlyIfNotInCombat = Yes
  708.     End
  709.     
  710.     Behavior = StancesBehavior ModuleTag_StancesBehavior
  711.         StanceTemplate = Hero
  712.     End
  713.   
  714.     #include "..\..\..\includes\CaptureBuilding.inc"
  715.     
  716.     Behavior = AIUpdateInterface ModuleTag_03
  717.         AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
  718.         MoodAttackCheckRate        = 500
  719.         HoldGroundCloseRangeDistance = 60
  720.     End
  721.  
  722.     Behavior = AutoAbilityBehavior ModuleTag_AutoAbilityBehavior
  723.     End        
  724.  
  725.     LocomotorSet
  726.         Locomotor = RohanGimliLocomotor
  727.         Condition = SET_NORMAL 
  728.         Speed     = NORMAL_DWARF_HERO_SPEED
  729.     End
  730. ;  Locomotor = SET_WANDER HumanWanderLocomotor
  731.  
  732.     Behavior = PhysicsBehavior ModuleTag_04
  733.         GravityMult = 1.0
  734.         AllowBouncing = No
  735.         ShockStunnedTimeLow        = 1400    ;msec
  736.         ShockStunnedTimeHigh    = 2400    ;msec
  737.         ShockStandingTime        = 2600    ;msec
  738.     End 
  739.     
  740. ; Behavior = RampageBehavior  RampageBehaviorModuleTag
  741.  ;   RampageHealthThreshold = 25  ; 25% of health left will trigger rampage mode
  742.  ;   RampageLifeTimer = 130         ; 5 seconds in ticks (1 round of rampage)
  743.  ;   RampageAngryLifeTimer = 90     ; 3 seconds in ticks (1 round of angry animation)
  744.  ;   RampageResetTimer = 900        ; 30 seconds in ticks
  745.  ;   RampageEnemyCheckRange = 100.0 ; look for enemies around this range
  746.  ;   RampageEnemyThreshold = 0      ; need to have atleast 3 enemies around before rampage is triggered
  747.  ; End
  748.  
  749.     Behavior = SlowDeathBehavior ModuleTag_05
  750.         DeathTypes = ALL -KNOCKBACK
  751.         SinkDelay = 3000
  752.         SinkRate = 0.40     ; in Dist/Sec
  753.         DestructionDelay = 8000
  754.         Sound = INITIAL GimliVoiceDie
  755.     End
  756.     
  757.     Behavior = SquishCollide ModuleTag_06
  758.         ;nothing
  759.     End
  760.     
  761.     Behavior = SlowDeathBehavior ModuleTag_07
  762.         ; Same as normal death, but no sound (sound already played by SoundImpact = ... )
  763.         DeathTypes = NONE +KNOCKBACK
  764.         SinkDelay = 3000
  765.         SinkRate = 0.40     ; in Dist/Sec
  766.         DestructionDelay = 8000
  767.     End
  768.  
  769.     Behavior = BezierProjectileBehavior ModuleTag_08 ; Module starts asleep, and wakes up when thrown.
  770.         ; To tweak a Bezier path
  771.         FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
  772.         SecondHeight = 20
  773.         FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
  774.         SecondPercentIndent = 70%
  775.         TumbleRandomly = Yes
  776.  
  777.         CrushStyle = Yes ; I don't detonate, I just hit
  778.  
  779. ; Note, this flag shouldn't be in here.  Death is caused by the intent of the thrower, not the ability of an object to land.
  780. ; Both a troll and Aragorn can throw Gimli.
  781. ; Actually, that means a lot of this is bad.  For two different throw behaviors you need two different modules I think.
  782. ;    DieOnImpact = Yes
  783.  
  784.         BounceCount = 0   ; When I hit the ground, I'll arc again
  785.  
  786.         FinalStuckTime = 1200 ; Can't move for this long afterwards
  787.  
  788.         GroundHitFX       = FX_GimliLeapLand
  789.         GroundHitWeapon   = RohanGimliLeapWarhead
  790.         PreLandingStateTime = 75; Look ahead to the end of the arc, and get the ABOUT_TO_HIT flag this far in advance
  791.     End
  792.  
  793. ;    Behavior = SpecialPowerModule ModuleTag_GimliAxeStarter                      
  794. ;        SpecialPowerTemplate      = SpecialAbilityGimliAxe
  795. ;        UpdateModuleStartsAttack  = Yes
  796. ;        ;GimliAxeStartsPaused = Yes
  797. ;        ;InitiateSound           = 
  798. ;    End
  799.     
  800. ;    Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_GimliAxeUpdate   
  801. ;        SpecialPowerTemplate    = SpecialAbilityGimliAxe
  802. ;
  803. ;;        UnpackTime              = 300
  804. ;;        PackTime                = 300 ; Putting horn away
  805. ;
  806. ;        UnpackTime              = 1467    ;1430
  807. ;        PackTime                = 1567    ; 1570
  808. ;
  809. ;
  810. ;;    PackSound               = 
  811. ;;    UnpackSound             = 
  812. ; ;   TriggerSound            = 
  813. ;;    PrepSoundLoop           = 
  814. ;        AwardXPForTriggering    = 0
  815. ;        
  816. ;        StartAbilityRange = 150.0
  817. ;        
  818. ;        SpecialWeapon = RohanGimliAxeThrown
  819. ;        WhichSpecialWeapon = 1
  820. ;    End
  821.     
  822.     Behavior = EmotionTrackerUpdate    Module_EmotionTracker
  823.         TauntAndPointDistance        =    300        ; max distance to taunted/pointed objet
  824.          TauntAndPointUpdateDelay    =    1000    ; how often scan (milliseconds)
  825.          
  826.         AddEmotion            =    Terror_Base
  827.         AddEmotion            =    Doom_Base
  828.         //    AddEmotion            =   BraceForBeingCrushed_Base
  829.         AddEmotion            =    UncontrollableFear_Base
  830.         //    AddEmotion            =    FearIdle_Base
  831.         //    AddEmotion            =    FearBusy_Base
  832.         AddEmotion            =    Point_Base
  833.         AddEmotion            =    Taunt_Base
  834.          AddEmotion            =    CheerIdle_Base
  835.         AddEmotion            =    CheerBusy_Base
  836.         //    AddEmotion            =    HeroCheerIdle_Base
  837.         //    AddEmotion            =    HeroCheerBusy_Base
  838.         AddEmotion            =    Alert_Base
  839.         AddEmotion            =    CheerForAboutToCrush_Base
  840.      End    
  841.     
  842.     Behavior = UnpauseSpecialPowerUpgrade ModuleTag_LeapEnabler
  843.         SpecialPowerTemplate = SpecialAbilityGimliLeap
  844.         TriggeredBy = Upgrade_GimliLeapTrigger
  845.     End
  846.  
  847.     Behavior = SpecialPowerModule ModuleTag_LeapStarter                      
  848.         SpecialPowerTemplate        = SpecialAbilityGimliLeap
  849.         UpdateModuleStartsAttack    = Yes
  850.         StartsPaused            = Yes
  851.         InitiateSound            = GimliVoiceAttackLeap
  852.     End
  853.  
  854.     Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_LeapUpdate   
  855.         SpecialPowerTemplate    = SpecialAbilityGimliLeap
  856.  
  857.         UnpackTime              = 600
  858.         PackTime                = 300 ; Putting horn away
  859.  
  860.         AwardXPForTriggering    = 0
  861.         
  862.         StartAbilityRange = 100.0
  863.         
  864.         SpecialWeapon = RohanGimliLeap
  865.         BusyForDuration = 2000 ; don't accept any AI for this long... ai commands will be queued
  866.  
  867. ;        ApproachRequiresLOS = No
  868.         WhichSpecialWeapon = 2
  869.         TriggerSound = GimliLeapVoice
  870.     End
  871.     
  872. ;    Behavior = UnpauseSpecialPowerUpgrade ModuleTag_SlayerEnabler
  873. ;        SpecialPowerTemplate = SpecialAbilityGimliHeroMode
  874. ;        TriggeredBy = Upgrade_GimliSlayerTrigger
  875. ;    End
  876. ;    Behavior = SpecialPowerModule ModuleTag_SlayerStarter                      
  877. ;        SpecialPowerTemplate      = SpecialAbilityGimliHeroMode
  878. ;        UpdateModuleStartsAttack  = Yes
  879. ;        StartsPaused = Yes
  880. ;    End
  881. ;    Behavior = HeroModeSpecialAbilityUpdate ModuleTag_Slayer   
  882. ;        SpecialPowerTemplate    = SpecialAbilityGimliHeroMode
  883. ;        UnpackingVariation        = 1
  884. ;
  885. ;        UnpackTime              = 0 ;no special animations 
  886. ;        PreparationTime         = 0    ;  
  887. ;        PackTime                = 0 ;
  888. ;
  889. ;        ;PackSound               = 
  890. ;        ;UnpackSound             = 
  891. ;        ;TriggerSound            = 
  892. ;        ;PrepSoundLoop           = 
  893. ;        AwardXPForTriggering    = 0
  894. ;        
  895. ;        HeroAttributeModifier = Slayer
  896. ;        HeroEffectDuration = 10000
  897. ;    End
  898.     
  899.     Behavior = UnpauseSpecialPowerUpgrade ModuleTag_KnifeEnabler
  900.         SpecialPowerTemplate = SpecialAbilityGimliHeroMode
  901.         TriggeredBy = Upgrade_GimliSlayerTrigger
  902.     End
  903.  
  904.     Behavior = WeaponModeSpecialPowerUpdate ModuleTag_KnifeFighterPowerUpdate
  905.         SpecialPowerTemplate    = SpecialAbilityGimliHeroMode
  906.         Duration                = 30000                                                ; Needs to match SpecialAbilityGimliHeroMode
  907.         AttributeModifier        = Slayer
  908.         ;LockWeaponSlot            = SECONDARY
  909.         WeaponSetFlags            = WEAPONSET_TOGGLE_1
  910.         StartsPaused            = Yes
  911.         ;InitiateSound             = AragornBladeMaster        ;this doesn't work
  912.     End
  913.     
  914.     Behavior = HitReactionBehavior HitReactionBehaviorModuleTag
  915.         HitReactionLifeTimer1 = 2200 ; level 1 (light  damage)  hit reaction animations in frames (5 per sec)
  916.         HitReactionLifeTimer2 = 15 ; level 2 (medium damage)  hit reaction animations in frames (5 per sec)
  917.         HitReactionLifeTimer3 = 10 ; level 3 (heavy  damage)  hit reaction animations in frames (5 per sec)
  918.  
  919.         HitReactionThreshold1 = 1.0   ; level 1 (light  damage) threshold trigger
  920.         HitReactionThreshold2 = 2500.0  ; level 2 (medium damage) threshold trigger
  921.         HitReactionThreshold3 = 5000.0  ; level 3 (heavy  damage) threshold trigger
  922.     End
  923.  
  924.     Behavior = AutoHealBehavior ModuleTag_ElvenGiftHealing
  925.         StartsActive                = No
  926.         TriggeredBy                    = Upgrade_ElvenGift
  927.         HealingAmount                = ELVEN_GIFT_REGEN_AMOUNT
  928.         HealingDelay                = ELVEN_GIFT_REGEN_DELAY
  929.         StartHealingDelay = HERO_HEAL_DELAY
  930.         HealOnlyIfNotInCombat = Yes
  931.     End
  932.     
  933.     Behavior = AttributeModifierUpgrade ModuleTag_ElvenGiftBonus
  934.         TriggeredBy = Upgrade_ElvenGift
  935.         AttributeModifier = SpellBookElvenGifts
  936.     End
  937.     
  938.     
  939.     ;///////////////////
  940.     ; AISpecialPowers
  941.     ;///////////////////
  942.     
  943.     Behavior = AISpecialPowerUpdate GimliSlayerAI
  944.         CommandButtonName = Command_SpecialAbilitySlayer
  945.         SpecialPowerAIType = AI_SPECIAL_POWER_BASIC_SELF_BUFF
  946.     End
  947.     
  948.     Behavior = AISpecialPowerUpdate GimliLeapAttackAI
  949.         CommandButtonName = Command_RohanGimliLeap
  950.         SpecialPowerAIType = AI_SPECIAL_POWER_RANGED_AOE_ATTACK
  951.         SpecialPowerRadius = 100
  952.     End
  953.     
  954.     Behavior = AISpecialPowerUpdate GimliAxeThrowAI
  955.         CommandButtonName = Command_GimliAxeThrow
  956.         SpecialPowerAIType = AI_SPECIAL_POWER_ENEMY_TYPE_KILLER
  957.     End
  958.     
  959.     
  960.     Geometry = CYLINDER
  961.     GeometryMajorRadius = 5.6
  962.     GeometryMinorRadius = 5.6
  963.     GeometryHeight = 16.0
  964.     GeometryIsSmall = Yes
  965.   Shadow = SHADOW_DECAL
  966.   ShadowSizeX = 19;
  967.   ShadowSizeY = 19;
  968.   ShadowTexture = ShadowI;
  969. End
  970.  
  971. ChildObject DwarvenGimli RohanGimli
  972.     Side = Dwarves
  973. End