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_gloin.ini < prev    next >
Text File  |  2006-01-31  |  32KB  |  960 lines

  1. ;------------------------------------------------------------------------------
  2. ;
  3. ;    Gloin.ini
  4. ;
  5. ;------------------------------------------------------------------------------
  6.  
  7. ; aka Gloin, Dwarf
  8. Object DwarvenGloin
  9.     ; *** ART Parameters ***
  10.  
  11.     ; SelectPortrait for Heros is portrait behind skill buttons. HP = HeroPortrait.
  12.     SelectPortrait = HPGloin
  13.     
  14.     ; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.
  15.     ButtonImage = HIGloin
  16.     
  17.     DescriptionStrategic = CONTROLBAR:LW_ToolTip_Gloin
  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               = DUGloin_SKN
  30.             Skeleton            = DUGloin_SKL
  31.             WeaponLaunchBone    = TERTIARY AXE02
  32.         End
  33.         
  34.  
  35. ;;================== ANIMATIONS =================================================================
  36.  
  37. ;;------------------ MOVING & DYING ---------------------------
  38.  
  39.     ;;======= DYING
  40.  
  41.         AnimationState        = STUNNED_FLAILING
  42.             Animation           = FLYA
  43.                 AnimationName     = DUGloin_FLYA
  44.                 AnimationMode     = LOOP
  45.                 AnimationSpeedFactorRange    = 0.3    0.5
  46.             End
  47.             Flags               = RANDOMSTART
  48.             BeginScript
  49.                 Prev = CurDrawablePrevAnimationState()
  50.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  51.             EndScript
  52.         End
  53.         
  54.         AnimationState        = DYING SPLATTED
  55.             Animation           = LNDB
  56.                 AnimationName     = DUGloin_LNDA
  57.                 AnimationMode     = ONCE
  58.             End
  59.             BeginScript
  60.                 Prev = CurDrawablePrevAnimationState()
  61.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  62.             EndScript
  63.         End
  64.  
  65.         AnimationState        = DYING
  66.             Animation           = DIEA
  67.                 AnimationName     = DUGloin_DTHA
  68.                 AnimationMode     = ONCE
  69.             End
  70.         End
  71.         
  72.         AnimationState        = STUNNED_STANDING_UP
  73.             Animation           = GTPA
  74.                 AnimationName     = DUGloin_GTPA
  75.                 AnimationMode     = ONCE
  76.             End
  77.         End
  78.     
  79.         AnimationState        = STUNNED
  80.             Animation           = LNDA
  81.                 AnimationName     = DUGloin_LNDA
  82.                 AnimationMode     = ONCE
  83.             End
  84.         End
  85.  
  86.         AnimationState                        = PARALYZED
  87.             Animation
  88.                 AnimationName                = DUGloin_IDLA
  89.                 AnimationMode                = LOOP
  90.             End
  91.         End
  92.  
  93.         // SLAM
  94.         AnimationState        = SPECIAL_WEAPON_ONE
  95.             Animation
  96.                 AnimationName     = DUGloin_ATKC
  97.                 AnimationMode     = ONCE
  98.             End
  99.             ParticleSysBone = NONE GloinBlastSlam    FollowBone:Yes 
  100.         End
  101.  
  102.         // SHAKE FOUNDATION
  103.         AnimationState        = SPECIAL_WEAPON_TWO
  104.             Animation
  105.                 AnimationName     = DUGloin_SPCB
  106.                 AnimationMode     = ONCE
  107.             End
  108.         End
  109.  
  110.         // SHATTERHAMMER 
  111.         AnimationState        = SPECIAL_WEAPON_THREE
  112.             Animation
  113.                 AnimationName     = DUGloin_SPCA
  114.                 AnimationMode     = ONCE
  115.             End
  116.         End
  117.  
  118.     ;;======= MOVING
  119.     
  120.     
  121. ;        AnimationState        = MOVING FIRING_OR_PREATTACK_A
  122. ;            ShareAnimation        = Yes
  123. ;            Animation           = RunAndFire
  124. ;                AnimationName       = DUGloin_ATRA
  125. ;                AnimationMode       = LOOP
  126. ;            End
  127. ;            Flags               = RANDOMSTART
  128. ;        End
  129.  
  130.         AnimationState                =    MOVING ATTACKING
  131.             Animation                =    RUNB
  132.                 AnimationName        =    DUGloin_RUNB
  133.                 AnimationMode        =    LOOP
  134.             End
  135.             Flags                    =    RANDOMSTART
  136.         End
  137.     
  138.         AnimationState                =    MOVING
  139.             Animation                =    RUNA
  140.                 AnimationName        =    DUGloin_RUNA
  141.                 AnimationMode        =    LOOP
  142.             End
  143.             Flags                    =    RANDOMSTART
  144.         End
  145.  
  146.  
  147. ;;------------------ ATTACKING  -------------------------------
  148.  
  149.         AnimationState        =  FIRING_OR_PREATTACK_A
  150.             Animation           = ATKA
  151.                 AnimationName     = DUGloin_ATKA
  152.                 AnimationMode     = ONCE
  153.                 UseWeaponTiming        = Yes
  154.             End
  155.             Animation           = ATKB
  156.                 AnimationName     = DUGloin_ATKB
  157.                 AnimationMode     = ONCE
  158.                 UseWeaponTiming        = Yes
  159.             End        
  160.             
  161.             ;ParticleSysBone None MeleeDust
  162.             BeginScript
  163.                 Prev = CurDrawablePrevAnimationState()
  164.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  165.             EndScript
  166.         End
  167.  
  168. ;;-------------------- HIT REACTIONS --------------------------
  169.  
  170.         AnimationState = HIT_REACTION
  171.             Animation = Hit_Level_1_a
  172.                 AnimationName = DUGloin_HITA
  173.                 AnimationMode = ONCE
  174.             End
  175.         End
  176.         
  177. ;;------------ EMOTIONS ---------------------------------------
  178.  
  179. ;;====== LEVELED
  180.         AnimationState                = LEVELED                         ; This state clears itself in 3 seconds
  181.             Animation                = LevelUp
  182.                 AnimationName        = DUGloin_LVLA
  183.                 AnimationMode        = ONCE
  184.             End
  185.         End
  186.  
  187. ;;====== CELEBRATING
  188.         AnimationState            = EMOTION_CELEBRATING
  189.             Animation           = CHRA
  190.                 AnimationName   = DUGloin_CHRA
  191.                 AnimationMode   = ONCE
  192.             End
  193.             Flags                    =    RESTART_ANIM_WHEN_COMPLETE
  194.         End
  195.  
  196. ;;====== TAUNTING
  197.         AnimationState            = EMOTION_TAUNTING
  198.             Animation
  199.                 AnimationName   = DUGloin_TNTA
  200.                 AnimationMode   = ONCE
  201.             End
  202.             Flags                    =    RESTART_ANIM_WHEN_COMPLETE
  203.         End
  204.  
  205.         
  206.         AnimationState                    = EMOTION_ALERT
  207.             Animation                    = Ready
  208.                 AnimationName            = DUGloin_IDLA
  209.                 AnimationMode            = LOOP
  210.                 AnimationBlendTime  =   15
  211.             End
  212.         End
  213.         
  214.         AnimationState            = RAISING_FLAG
  215.             Animation           = CHRA
  216.                 AnimationName   = DUGloin_CHRA
  217.                 AnimationMode   = LOOP
  218.             End
  219.         End
  220.  
  221. ;;------------------- SELECTED STATES -------------------------
  222.         
  223.         AnimationState                =    SELECTED
  224.             StateName                =    AtAttentionIdle
  225.             SimilarRestart            =   Yes            
  226.             Animation                =    ATNB
  227.                 AnimationName        =     DUGloin_ATNB
  228.                 AnimationMode        =    LOOP
  229.             End
  230.             BeginScript
  231.                 Prev = CurDrawablePrevAnimationState()
  232.                 if Prev == "STATE_Idle" then CurDrawableSetTransitionAnimState("TRANS_Select") end
  233.                 if Prev == "AtAttentionIdle" then CurDrawableSetTransitionAnimState("TRANS_Select") end
  234.             EndScript
  235.         End
  236.                             
  237. ;;--------------- IDLE STATES ---------------------------------
  238.  
  239.         IdleAnimationState
  240.             StateName                = STATE_Idle
  241.             Animation
  242.                 AnimationName     = DUGloin_IDLB
  243.                 AnimationMode     = ONCE
  244.                 AnimationPriority = 30
  245.             End
  246.             Animation
  247.                 AnimationName     = DUGloin_IDLD
  248.                 AnimationMode     = ONCE
  249.                 AnimationPriority = 4
  250.             End
  251.             Animation
  252.                 AnimationName     = DUGloin_IDLC
  253.                 AnimationMode     = ONCE
  254.                 AnimationPriority = 2
  255.             End
  256.             Animation
  257.                 AnimationName     = DUGloin_IDLE
  258.                 AnimationMode     = ONCE
  259.                 AnimationPriority = 1
  260.             End
  261.             BeginScript
  262.                 Prev = CurDrawablePrevAnimationState()
  263.                 if Prev == "DwarfToss" then CurDrawableSetTransitionAnimState("TRANS_EndDwarfToss") end
  264.                 if Prev == "AtAttentionIdle" then CurDrawableSetTransitionAnimState("TRANS_SelectedToIdle") end
  265.             EndScript
  266.         End
  267.  
  268.         
  269. ;---Transitions-------------------------------------
  270.  
  271.         TransitionState       = TRANS_EndDwarfToss
  272.             Animation           = TOS4
  273.                 AnimationName     = DUGloin_TOS4
  274.                 AnimationMode     = ONCE
  275.             End
  276.         End    
  277.  
  278.         TransitionState       = TRANS_SelectedToIdle    
  279.             Animation           = ATNC
  280.                 AnimationName     = DUGloin_ATNC
  281.                 AnimationMode     = ONCE
  282.                 AnimationSpeedFactorRange = 0.7 1.3
  283.             End
  284.         End
  285.         
  286.         TransitionState                =    TRANS_Select
  287.             Animation                =    ATNA
  288.                 AnimationName        =     DUGloin_ATNA
  289.                 AnimationMode        =    ONCE
  290.             End
  291.         End
  292.     End
  293.     
  294.     ;Draw module just for the HeroSelection
  295.     Draw = W3DScriptedModelDraw Icon
  296.         ModelConditionState = NONE
  297.             Model                    = Icon02
  298.         End
  299.     End
  300.     
  301. ;;================== END ANIMATIONS =================================================================    
  302.  
  303.     #include "..\..\..\includes\StunDrawModuleSmall.inc"
  304.  
  305.     ; ***DESIGN parameters ***
  306.     Side = Dwarves
  307.     EditorSorting = UNIT
  308.     ThreatLevel = GLOIN_THREAT_LEVEL
  309.     TransportSlotCount = TRANSPORTSLOTCOUNT_HERO
  310.     BuildCost           = GLOIN_BUILDCOST                    
  311.     BuildTime           = GLOIN_BUILDTIME    
  312.     ShockwaveResistance = SHOCKWAVE_RESISTANCE_STRONG        
  313.     ;//DisplayMeleeDamage = GLOIN_DAMAGE
  314.     
  315.     HeroSortOrder = 40
  316.                 
  317.     WeaponSet
  318.         Conditions = None 
  319.         Weapon     = PRIMARY  GloinAxe  
  320.     End
  321.     
  322.     ArmorSet
  323.         Conditions      = None
  324.         Armor           = ToughHeroArmor
  325.         DamageFX        = NormalDamageFX
  326.     End
  327.     VisionRange = VISION_STANDARD_MELEE                
  328.     ShroudClearingRange = SHROUD_CLEAR_HERO
  329.     
  330.     MaxVisionBonusPercent = 300%
  331.     VisionBonusTestRadius = 200
  332.     VisionBonusPercentPerFoot = 1.0%
  333.  
  334.     BountyValue = 30
  335.     DisplayName = OBJECT:Gloin
  336.     RecruitText = CONTROLBAR:GloinRecruit
  337.     ReviveText    = CONTROLBAR:GloinRevive
  338.     Hotkey        = CONTROLBAR:GloinHotkey
  339.     CrushableLevel = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  340. ;  CrusherLevel = 1
  341.     
  342.     CommandSet  = GloinCommandSet
  343.     CommandPoints = 25
  344.  
  345.  
  346.     ; *** AUTO RESOLVE DATA *** 
  347.     AutoResolveUnitType = AutoResolveUnit_Hero
  348.     AutoResolveCombatChain = AutoResolve_HeroCombatChain
  349.  
  350.     AutoResolveBody = AutoResolve_GloinBody
  351.     
  352.     AutoResolveArmor
  353.         Armor = AutoResolve_GloinArmor
  354.     End
  355.  
  356.     AutoResolveWeapon
  357.         Weapon = AutoResolve_GloinWeapon
  358.     End
  359.     
  360.     ;AutoResolveLeadership = AutoResolve_GloinBonus
  361.  
  362.  
  363.     ; *** AUDIO Parameters ***;
  364.  
  365.     VoiceAttack                                = GloinVoiceAttack
  366.     VoiceAttackCharge                        = GloinVoiceAttackCharge
  367.     VoiceAttackMachine                        = GloinVoiceAttack
  368.     VoiceAttackStructure                    = GloinVoiceAttackBuilding
  369.     VoiceFear                                = GloinVoiceHelpMe
  370.     VoiceGuard                                = GloinVoiceMove
  371.     VoiceMove                                = GloinVoiceMove
  372.     VoiceMoveToCamp                            = GloinVoiceMoveCamp
  373.     VoiceMoveWhileAttacking                    = GloinVoiceDisengage
  374.     VoicePriority                            = 78
  375.     VoiceRetreatToCastle                    = GloinVoiceRetreat        
  376.     VoiceSelect                                = GloinVoiceSelectMS
  377.     VoiceSelectBattle                         = GloinVoiceSelectBattle            
  378.  
  379.     ;VoiceEnterStateAttack                    = GloinVoiceEnterStateAttack
  380.     ;VoiceEnterStateAttackCharge            = GloinVoiceEnterStateAttackCharge
  381.     ;VoiceEnterStateAttackMachine            = GloinVoiceEnterStateAttackBuilding
  382.     ;VoiceEnterStateAttackStructure            = GloinVoiceEnterStateAttackBuilding
  383.     ;VoiceEnterStateMove                    = GloinVoiceEnterStateMove
  384.     ;VoiceEnterStateMoveToCamp                = GloinVoiceEnterStateMoveCamp
  385.     ;VoiceEnterStateMoveWhileAttacking        = GloinVoiceEnterStateDisengage
  386.     ;VoiceEnterStateRetreatToCastle            = GloinVoiceEnterStateRetreat
  387.  
  388.     SoundImpact                                = ImpactHorse
  389.  
  390.     UnitSpecificSounds
  391.         VoiceGarrison                        = GloinVoiceMoveGarrison
  392.         VoiceEnterUnitElvenTransportShip    = GloinVoiceMoveShip
  393.         VoiceInitiateCaptureBuilding        = GloinVoiceCaptureBuilding
  394.         ;VoiceEnterStateInitiateCaptureBuilding    =
  395.     End
  396.  
  397.     #include "..\..\..\includes\StandardUnitEvaEvents.inc"
  398.     EvaEventDieOwner = GloinDie                ;Eva event to trigger on unit's death. NOTICE THAT this is only for permanent deaths
  399.  
  400.     CrowdResponseKey = DwarfHero
  401.  
  402.     Behavior = LargeGroupAudioUpdate ModuleTag_LGAU        ; Tie into LargeGroupAudio system
  403.         Key = Humanoid_Male Dwarf Dwarf_Male Unit Infantry Hero
  404.     End
  405.  
  406.     ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
  407.         MaxUpdateRangeCap = 800
  408.         AnimationSound = Sound:FootstepDirtA            Animation:DUGloin_SKL.DUGloin_RUNA    Frames:3 14
  409.         AnimationSound = Sound:FootstepDirtA            Animation:DUGloin_SKL.DUGloin_RUNB    Frames:3 12
  410.  
  411.         AnimationSound = Sound:BodyFallSoldier            Animation:DUGLOIN_SKL.DUGLOIN_LNDA    Frames:7
  412.         AnimationSound = Sound:BodyFallSoldier            Animation:DUGLOIN_SKL.DUGLOIN_DTHA    Frames:55
  413.         ;AnimationSound = Sound:AxeDropSoundHere!        Animation:DUGLOIN_SKL.DUGLOIN_DTHA    Frames:42    ;axe falls
  414.         AnimationSound = Sound:SwordIntoGroundQuiet        Animation:DUGLOIN_SKL.DUGLOIN_SPCA    Frames:61    ;striking ground with axe
  415.         AnimationSound = Sound:SwordIntoGroundQuiet        Animation:DUGLOIN_SKL.DUGLOIN_ATKB    Frames:38    ;striking ground with axe
  416.     End
  417.  
  418.     ; *** ENGINEERING Parameters ***
  419.  
  420.     RadarPriority = UNIT
  421.     KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT HERO ARMY_SUMMARY ATTACK_NEEDS_LINE_OF_SIGHT HEAVY_MELEE_HITTER
  422.     PathfindDiameter = 40.0
  423.     
  424.     Body = RespawnBody ModuleTag_RespawnBody
  425.         CheerRadius             = EMOTION_CHEER_RADIUS
  426.         MaxHealth                 = GLOIN_HEALTH  
  427.         PermanentlyKilledByFilter    = NONE        ;Who kills me permanently?
  428.            DodgePercent              = 80%    
  429.     End
  430.  
  431.     Behavior = RespawnUpdate ModuleTag_RespawnUpdate
  432.         DeathAnim                    = DYING                    ;Model condition to play when killed-to-respawn
  433.         DeathFX                        = FX_GloinDieToRespawn    ;FXList to play when killed-to-respawn
  434.         DeathAnimationTime            = 4100                    ;How long DeathAnim will take.
  435.         InitialSpawnFX                = FX_GloinInitialSpawn
  436.         RespawnAnim                    = LEVELED                ;Animation to play when respawning.
  437.         RespawnFX                    = FX_GloinRespawn        ;FXList to play when respawning.
  438.         RespawnAnimationTime        = 2000                    ;Time it takes for respawn to play.
  439.         AutoRespawnAtObjectFilter    = NONE +CASTLE_KEEP        ;Respawn at this location -- and at it's exit production point if possible.
  440.         ButtonImage                    = HIGloin_res
  441.         
  442.         ;RespawnEntries determine the ruleset for how a character can be revived. Some units may automatically respawn, others
  443.         ;may require a specific revive action performed on him. You can specify different values for each level... or use Level:Any
  444.         RespawnRules =                AutoSpawn:No    Cost:1125        Time:60000        Health:100%        ;DEFAULT VALUES
  445.  
  446.     End
  447.  
  448.     Behavior = AutoHealBehavior ModuleTag_GloinHealing
  449.         StartsActive = Yes
  450.         HealingAmount = HERO_HEAL_AMOUNT
  451.         HealingDelay = 1000
  452.         StartHealingDelay = HERO_HEAL_DELAY
  453.         HealOnlyIfNotInCombat = Yes
  454.     End
  455.     
  456.     Behavior = StancesBehavior ModuleTag_StancesBehavior
  457.         StanceTemplate = Hero
  458.     End
  459.   
  460.     #include "..\..\..\includes\CaptureBuilding.inc"
  461.     
  462.     Behavior = AIUpdateInterface ModuleTag_03
  463.         AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
  464.         MoodAttackCheckRate        = 500
  465.         HoldGroundCloseRangeDistance = 60
  466.     End
  467.  
  468.     LocomotorSet
  469.         Locomotor = RohanGimliLocomotor
  470.         Condition = SET_NORMAL 
  471.         Speed     = NORMAL_DWARF_HERO_SPEED
  472.     End
  473. ;  Locomotor = SET_WANDER HumanWanderLocomotor
  474.  
  475.     Behavior = PhysicsBehavior ModuleTag_04
  476.         GravityMult = 1.0
  477.         AllowBouncing = No
  478.         ShockStunnedTimeLow        = 1400    ;msec
  479.         ShockStunnedTimeHigh    = 2400    ;msec
  480.         ShockStandingTime        = 2600    ;msec
  481.     End 
  482.     
  483.     Behavior = SlowDeathBehavior ModuleTag_05
  484.         DeathTypes = ALL -KNOCKBACK
  485.         SinkDelay = 3000
  486.         SinkRate = 0.40     ; in Dist/Sec
  487.         DestructionDelay = 8000
  488.         Sound = INITIAL GloinVoiceDie
  489.     End
  490.     
  491.     Behavior = SquishCollide ModuleTag_06
  492.         ;nothing
  493.     End
  494.     
  495.     Behavior = SlowDeathBehavior ModuleTag_07
  496.         ; Same as normal death, but no sound (sound already played by SoundImpact = ... )
  497.         DeathTypes = NONE +KNOCKBACK
  498.         SinkDelay = 3000
  499.         SinkRate = 0.40     ; in Dist/Sec
  500.         DestructionDelay = 8000
  501.     End
  502.  
  503.     Behavior = BezierProjectileBehavior ModuleTag_08 ; Module starts asleep, and wakes up when thrown.
  504.         ; To tweak a Bezier path
  505.         FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
  506.         SecondHeight = 20
  507.         FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
  508.         SecondPercentIndent = 70%
  509.         TumbleRandomly = Yes
  510.  
  511.         CrushStyle = Yes ; I don't detonate, I just hit
  512.  
  513.         BounceCount = 0   ; When I hit the ground, I'll arc again
  514.  
  515.         FinalStuckTime = 1200 ; Can't move for this long afterwards
  516.  
  517.         GroundHitFX       = FX_GimliLeapLand
  518.         GroundHitWeapon   = RohanGimliLeapWarhead
  519.         PreLandingStateTime = 75; Look ahead to the end of the arc, and get the ABOUT_TO_HIT flag this far in advance
  520.     End
  521.  
  522.     Behavior = EmotionTrackerUpdate    Module_EmotionTracker
  523.         TauntAndPointDistance        =    300        ; max distance to taunted/pointed objet
  524.          TauntAndPointUpdateDelay    =    1000    ; how often scan (milliseconds)
  525.          
  526.         AddEmotion            =    Terror_Base
  527.         AddEmotion            =    Doom_Base
  528.         //    AddEmotion            =   BraceForBeingCrushed_Base
  529.         AddEmotion            =    UncontrollableFear_Base
  530.         //    AddEmotion            =    FearIdle_Base
  531.         //    AddEmotion            =    FearBusy_Base
  532.         AddEmotion            =    Point_Base
  533.         AddEmotion            =    Taunt_Base
  534.          AddEmotion            =    CheerIdle_Base
  535.         AddEmotion            =    CheerBusy_Base
  536.         //    AddEmotion            =    HeroCheerIdle_Base
  537.         //    AddEmotion            =    HeroCheerBusy_Base
  538.         AddEmotion            =    Alert_Base
  539.         AddEmotion            =    CheerForAboutToCrush_Base
  540.      End    
  541.  
  542.     Behavior = HitReactionBehavior HitReactionBehaviorModuleTag
  543.         HitReactionLifeTimer1 = 2200 ; level 1 (light  damage)  hit reaction animations in frames (5 per sec)
  544.         HitReactionLifeTimer2 = 15 ; level 2 (medium damage)  hit reaction animations in frames (5 per sec)
  545.         HitReactionLifeTimer3 = 10 ; level 3 (heavy  damage)  hit reaction animations in frames (5 per sec)
  546.  
  547.         HitReactionThreshold1 = 1.0   ; level 1 (light  damage) threshold trigger
  548.         HitReactionThreshold2 = 2500.0  ; level 2 (medium damage) threshold trigger
  549.         HitReactionThreshold3 = 5000.0  ; level 3 (heavy  damage) threshold trigger
  550.     End
  551.  
  552.     ;;;; SLAM SPECIAL ABILITY ;;;;;;;;--------------------------------------------------------------------
  553.     Behavior = UnpauseSpecialPowerUpgrade ModuleTag_SlamEnabler
  554.         SpecialPowerTemplate = SpecialAbilityDwarvenGloinSlam
  555.         TriggeredBy = Upgrade_EnableDwarvenGloinSlam
  556.     End
  557.  
  558.     Behavior = SpecialPowerModule ModuleTag_SlamStarter       
  559.         SpecialPowerTemplate        = SpecialAbilityDwarvenGloinSlam
  560.         UpdateModuleStartsAttack    = Yes
  561.         StartsPaused                = Yes
  562.         InitiateSound                = GloinVoiceGenericSpecialAbility
  563.     End
  564.  
  565.     Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_SlamWeaponFireUpdate   
  566.         SpecialPowerTemplate    = SpecialAbilityDwarvenGloinSlam
  567.         SpecialWeapon            = DwarvenGloinSlamWeapon
  568.         WhichSpecialWeapon        = 1            ; Corresponds to SPECIAL_WEAPON_ONE
  569.         StartAbilityRange        = 10.0
  570.         
  571.         SkipContinue            = Yes
  572.         UnpackTime                = 1000        ; Trigger on frame 30 (of 69)
  573.         PackTime                = 1300        ; Remaining 39 frames (of 69)
  574.         MustFinishAbility        = Yes
  575.     End
  576.     Behavior = AutoAbilityBehavior ModuleTag_SlamAutoAbility
  577.         SpecialAbility            = SpecialAbilityDwarvenGloinSlam
  578.         Query                    = 1 ANY ENEMIES +STRUCTURE -UNATTACKABLE        ; structures as a preference
  579.         Query                    = 1 ALL ENEMIES
  580.     End
  581.     
  582.     ;;;; SHAKE FOUNDATION SPECIAL ABILITY ;;;;--------------------------------------------------------------------
  583.     Behavior = UnpauseSpecialPowerUpgrade ModuleTag_ShakeFoundationEnabler
  584.         SpecialPowerTemplate = SpecialAbilityDwarvenGloinShakeFoundation
  585.         TriggeredBy = Upgrade_EnableDwarvenGloinShakeFoundation
  586.     End
  587.  
  588.     Behavior = SpecialPowerModule ModuleTag_ShakeFoundationStarter       
  589.         SpecialPowerTemplate      = SpecialAbilityDwarvenGloinShakeFoundation
  590.         UpdateModuleStartsAttack  = Yes
  591.         StartsPaused                = Yes
  592.         InitiateSound                = GloinVoiceGenericSpecialAbility
  593.     End
  594.  
  595.     Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_ShakeFoundationWeaponFireUpdate
  596.         SpecialPowerTemplate    = SpecialAbilityDwarvenGloinShakeFoundation
  597.         SpecialWeapon            = DwarvenGloinShakeFoundationWeapon
  598.         WhichSpecialWeapon        = 2            ; Corresponds to SPECIAL_WEAPON_TWO
  599.         StartAbilityRange        = 15.0
  600.  
  601.         SkipContinue            = Yes
  602.         UnpackTime                = 1400        ; Trigger on frame 42 (of 115)
  603.         PackTime                = 2433        ; Remaining 73 frames (of 115)
  604.         MustFinishAbility        = Yes
  605.     End
  606.     Behavior = AutoAbilityBehavior ModuleTag_ShakeFoundationAutoAbility
  607.         SpecialAbility            = SpecialAbilityDwarvenGloinShakeFoundation
  608.         Query                    = 1 ANY ENEMIES +STRUCTURE -UNATTACKABLE
  609.         MaxScanRange            = 100
  610.     End
  611.  
  612.     ;;;; SHATTERHAMMER SPECIAL ABILITY ;;;;;;;;--------------------------------------------------------------------
  613.     Behavior = UnpauseSpecialPowerUpgrade ModuleTag_SmashEnabler
  614.         SpecialPowerTemplate = SpecialAbilityGloinSmash
  615.         TriggeredBy = Upgrade_EnableGloinSmash
  616.     End
  617.  
  618.     Behavior = SpecialPowerModule ModuleTag_SmashStarter       
  619.         SpecialPowerTemplate      = SpecialAbilityGloinSmash
  620.         UpdateModuleStartsAttack  = Yes
  621.         StartsPaused                = Yes
  622.         InitiateSound                = GloinVoiceGenericSpecialAbility
  623.     End
  624.  
  625.     Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_SmashWeaponFireUpdate   
  626.         SpecialPowerTemplate    = SpecialAbilityGloinSmash
  627.         SpecialWeapon            = GloinSmashWeapon
  628.         WhichSpecialWeapon        = 3            ; Corresponds to SPECIAL_WEAPON_THREE
  629.         StartAbilityRange        = 1.0
  630.         
  631.         SkipContinue            = Yes
  632.         UnpackTime                = 2000        ; Trigger on frame 60 (of 100)
  633.         PackTime                = 1333        ; Remaining 40 frames (of 100)
  634.         MustFinishAbility        = Yes
  635.     End
  636.  
  637.     Behavior = AutoHealBehavior ModuleTag_ElvenGiftHealing
  638.         StartsActive                = No
  639.         TriggeredBy                    = Upgrade_ElvenGift
  640.         HealingAmount                = ELVEN_GIFT_REGEN_AMOUNT
  641.         HealingDelay                = ELVEN_GIFT_REGEN_DELAY
  642.         StartHealingDelay = HERO_HEAL_DELAY
  643.         HealOnlyIfNotInCombat = Yes
  644.     End
  645.     
  646.     Behavior = AttributeModifierUpgrade ModuleTag_ElvenGiftBonus
  647.         TriggeredBy = Upgrade_ElvenGift
  648.         AttributeModifier = SpellBookElvenGifts
  649.     End
  650.     
  651.     ;///////////////////
  652.     ; AISpecialPowers
  653.     ;///////////////////
  654.     
  655.     Behavior = AISpecialPowerUpdate SlamAI
  656.         CommandButtonName = Command_SpecialAbilityDwarvenGloinSlam
  657.         SpecialPowerAIType    = AI_SPECIAL_POWER_ENEMY_TYPE_KILLER_STRUCTURES
  658.         SpecialPowerRange    = 200
  659.     End
  660.     
  661.     Behavior = AISpecialPowerUpdate ShakeFoundationAI
  662.         CommandButtonName = Command_SpecialAbilityDwarvenGloinShakeFoundation
  663.         SpecialPowerAIType    = AI_SPECIAL_POWER_ENEMY_TYPE_KILLER_STRUCTURES
  664.         SpecialPowerRange    = 200
  665.     End
  666.     
  667.     ;Behavior = AISpecialPowerUpdate SmashAI
  668.     ;    CommandButtonName = Command_SpecialAbilityGloinSmash
  669.     ;    SpecialPowerAIType = AI_SPECIAL_POWER_BASIC_SELF_BUFF
  670.     ;End
  671.  
  672.     Geometry = CYLINDER
  673.     GeometryMajorRadius = 5.6
  674.     GeometryMinorRadius = 5.6
  675.     GeometryHeight = 16.0
  676.     GeometryIsSmall = Yes
  677.  
  678.     Shadow = SHADOW_DECAL
  679.     ShadowSizeX = 19;
  680.     ShadowSizeY = 19;
  681.     ShadowTexture = ShadowI;
  682. End
  683.  
  684.  
  685. ;------------------------------------------------------------------------------
  686. ;------------------------------------------------------------------------------
  687.  
  688. ; aka Gloin, Dwarf
  689. Object DwarvenGloin_Temp
  690.  
  691.     ; *** ART Parameters ***
  692.  
  693.     ; SelectPortrait for Heros is portrait behind skill buttons. HP = HeroPortrait.
  694.     SelectPortrait = HPGloin
  695.     
  696.     ; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.
  697.     ButtonImage = HIGloin
  698.  
  699.     ;ShadowMaxHeight = 999 ;this is causing 2 shadows to be cast when the unit is under a bridge.  Taking it out!
  700.     Draw = W3DScriptedModelDraw ModuleTag_01
  701.  
  702.       OkToChangeModelColor = Yes
  703.       
  704.  
  705.    StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
  706.  
  707. ;;====================== MODELS ================================================================
  708.         DefaultModelConditionState
  709.             Model               = EUDwarfGlo
  710.         End
  711.         
  712.  
  713. ;;================== ANIMATIONS =================================================================
  714.  
  715.     
  716. ;;================== END ANIMATIONS =================================================================    
  717.  
  718.     End
  719.     
  720.     ; ***DESIGN parameters ***
  721.     Side = Dwarves
  722.     EditorSorting = UNIT
  723.     ThreatLevel = 5.0
  724.     TransportSlotCount = TRANSPORTSLOTCOUNT_HERO
  725.     BuildCost           = GLOIN_BUILDCOST                    
  726.     BuildTime           = GLOIN_BUILDTIME    
  727.  
  728.     ;//DisplayMeleeDamage = GLOIN_DAMAGE
  729.     
  730.     HeroSortOrder = 40
  731.                 
  732.     WeaponSet
  733.         Conditions = None 
  734.         Weapon     = PRIMARY  GloinAxe  
  735.     End
  736.     
  737.     ArmorSet
  738.         Conditions      = None
  739.         Armor           = ToughHeroArmor
  740.         DamageFX        = NormalDamageFX
  741.     End
  742.     VisionRange = VISION_STANDARD_MELEE                
  743.     ShroudClearingRange = SHROUD_CLEAR_STANDARD
  744.  
  745.     BountyValue = 30
  746.     DisplayName = OBJECT:Gloin
  747.     RecruitText = CONTROLBAR:GloinRecruit
  748.     ReviveText    = CONTROLBAR:GloinRevive
  749.     Hotkey        = CONTROLBAR:GloinHotkey
  750.     CrushableLevel = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  751. ;  CrusherLevel = 1
  752.     
  753.     CommandSet  = GloinCommandSet
  754.     CommandPoints = 0
  755.  
  756.  
  757.     ; *** AUDIO Parameters ***;
  758.  
  759. ;    VoiceAmbushed            = GloinVoiceAmbushed
  760. ;    VoiceAttack                = GloinVoiceAttack
  761. ;    VoiceAttackCharge            = GloinVoiceAttackCharge
  762. ;    VoiceAttackMachine        = GloinVoiceAttack
  763. ;    VoiceAttackStructure        = GloinVoiceAttack
  764. ;    ;VoiceCreated            = GloinVoiceSalute        ;this conflicts with his respawn dialogue line -- rehooked to spawn FX
  765. ;    VoiceFear                 = GloinVoiceHelpMe
  766. ;    VoiceMove                = GloinVoiceMove
  767. ;    VoiceMoveToCamp            = GloinVoiceMove
  768. ;    VoiceMoveWhileAttacking        = GloinVoiceDisengage
  769. ;    VoicePriority            = 67
  770. ;    VoiceRetreatToCastle        = GloinVoiceRetreat
  771. ;    VoiceSelect                = GloinVoiceSelectMS
  772. ;    VoiceSelectBattle         = GloinVoiceSelectBattle
  773. ;    VoiceGuard                = GloinVoiceMove
  774.  
  775.     SoundImpact                = ImpactHorse
  776.  
  777. ;    UnitSpecificSounds
  778. ;        VoiceGarrison        = GloinVoiceGarrison
  779. ;    End
  780.  
  781.     #include "..\..\..\includes\StandardUnitEvaEvents.inc"
  782. ;    EvaEventDieOwner = GloinDie            ;Eva event to trigger on unit's death. NOTICE THAT this is only for permanent deaths
  783.  
  784.     Behavior = LargeGroupAudioUpdate ModuleTag_LGAU        ; Tie into LargeGroupAudio system
  785.         Key = Dwarf Unit Infantry Hero
  786.     End
  787.  
  788.     ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
  789.         MaxUpdateRangeCap = 800
  790.         AnimationSound = Sound:FootstepDirtA        Animation:DUGloin_SKL.DUGloin_RUNA    Frames:3 14
  791.         AnimationSound = Sound:FootstepDirtA        Animation:DUGloin_SKL.DUGloin_RUNB    Frames:3 12
  792.  
  793.         AnimationSound = Sound:BodyFallSoldier        Animation:DUGloin_SKL.DUGloin_LNDA    Frames:2
  794.  
  795.         AnimationSound = Sound:BodyFallGenericNoArmor    Animation:DUGloin_SKL.DUGloin_DIEA    Frames:11
  796.         AnimationSound = Sound:BodyFallGenericNoArmor    Animation:DUGloin_SKL.DUGloin_DIEC    Frames:59
  797.     End
  798.  
  799.  
  800.     ; *** ENGINEERING Parameters ***
  801.  
  802.     RadarPriority = UNIT
  803.     KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT HERO ARMY_SUMMARY ATTACK_NEEDS_LINE_OF_SIGHT
  804.     PathfindDiameter = 40.0
  805.     
  806.     Body = RespawnBody ModuleTag_RespawnBody
  807.         CheerRadius             = EMOTION_CHEER_RADIUS
  808.         MaxHealth                 = GLOIN_HEALTH  
  809.         PermanentlyKilledByFilter    = NONE        ;Who kills me permanently?
  810.            DodgePercent              = 80%    
  811.     End
  812.  
  813.     Behavior = RespawnUpdate ModuleTag_RespawnUpdate
  814.         DeathAnim                = DYING            ;Model condition to play when killed-to-respawn
  815.         DeathFX                = FX_GimliDieToRespawn    ;FXList to play when killed-to-respawn
  816.         DeathAnimationTime        = 4100            ;How long DeathAnim will take.
  817.         InitialSpawnFX            = FX_GimliInitialSpawn
  818.         RespawnAnim                = LEVELED            ;Animation to play when respawning.
  819.         RespawnFX                = FX_GimliRespawn        ;FXList to play when respawning.
  820.         RespawnAnimationTime        = 2000            ;Time it takes for respawn to play.
  821.         AutoRespawnAtObjectFilter    = NONE +CASTLE_KEEP    ;Respawn at this location -- and at it's exit production point if possible.
  822.         ButtonImage                = HIGloin
  823.         
  824.         ;RespawnEntries determine the ruleset for how a character can be revived. Some units may automatically respawn, others
  825.         ;may require a specific revive action performed on him. You can specify different values for each level... or use Level:Any
  826.         RespawnRules =                AutoSpawn:No    Cost:900        Time:90000        Health:100%        ;DEFAULT VALUES
  827.         RespawnEntry =    Level:2                    Cost:1000        Time:90000                        ;For other levels, only override what is different.
  828.         RespawnEntry =    Level:3                    Cost:1100        Time:90000
  829.         RespawnEntry =    Level:4                    Cost:1200        Time:90000
  830.         RespawnEntry =    Level:5                    Cost:1300        Time:120000
  831.         RespawnEntry =    Level:6                    Cost:1400        Time:120000
  832.         RespawnEntry =    Level:7                    Cost:1500        Time:120000
  833.         RespawnEntry =    Level:8                    Cost:1600        Time:120000
  834.         RespawnEntry =    Level:9                    Cost:1700        Time:120000
  835.         RespawnEntry =    Level:10                Cost:1800        Time:120000
  836.     End
  837.  
  838.     Behavior = AutoHealBehavior ModuleTag_GloinHealing
  839.         StartsActive = Yes
  840.         HealingAmount = HERO_HEAL_AMOUNT
  841.         HealingDelay = 1000
  842.         StartHealingDelay = HERO_HEAL_DELAY
  843.         HealOnlyIfNotInCombat = Yes
  844.     End
  845.     
  846.     Behavior = AIUpdateInterface ModuleTag_03
  847.         AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
  848.         MoodAttackCheckRate        = 500
  849.         HoldGroundCloseRangeDistance = 60
  850.     End
  851.  
  852.     Behavior = AutoAbilityBehavior ModuleTag_AutoAbilityBehavior
  853.     End        
  854.  
  855.     LocomotorSet
  856.         Locomotor = RohanGimliLocomotor
  857.         Condition = SET_NORMAL 
  858.         Speed     = NORMAL_GOOD_HERO_SPEED
  859.     End
  860. ;  Locomotor = SET_WANDER HumanWanderLocomotor
  861.  
  862.     Behavior = PhysicsBehavior ModuleTag_04
  863.         GravityMult = 1.0
  864.         AllowBouncing = No
  865.         ShockStunnedTimeLow        = 1400    ;msec
  866.         ShockStunnedTimeHigh    = 2400    ;msec
  867.         ShockStandingTime        = 2600    ;msec
  868.     End 
  869.     
  870.     Behavior = SlowDeathBehavior ModuleTag_05
  871.         DeathTypes = ALL -KNOCKBACK
  872.         SinkDelay = 3000
  873.         SinkRate = 0.40     ; in Dist/Sec
  874.         DestructionDelay = 8000
  875.         Sound = INITIAL GimliVoiceDie
  876.     End
  877.     
  878.     Behavior = SquishCollide ModuleTag_06
  879.         ;nothing
  880.     End
  881.     
  882.     Behavior = SlowDeathBehavior ModuleTag_07
  883.         ; Same as normal death, but no sound (sound already played by SoundImpact = ... )
  884.         DeathTypes = NONE +KNOCKBACK
  885.         SinkDelay = 3000
  886.         SinkRate = 0.40     ; in Dist/Sec
  887.         DestructionDelay = 8000
  888.     End
  889.  
  890.     Behavior = BezierProjectileBehavior ModuleTag_08 ; Module starts asleep, and wakes up when thrown.
  891.         ; To tweak a Bezier path
  892.         FirstHeight = 50  ; Height of Bezier control points above highest intervening terrain
  893.         SecondHeight = 20
  894.         FirstPercentIndent = 20% ; Percentage of shot distance control points are placed
  895.         SecondPercentIndent = 70%
  896.         TumbleRandomly = Yes
  897.  
  898.         CrushStyle = Yes ; I don't detonate, I just hit
  899.  
  900.         BounceCount = 0   ; When I hit the ground, I'll arc again
  901.  
  902.         FinalStuckTime = 1200 ; Can't move for this long afterwards
  903.  
  904.         GroundHitFX       = FX_GimliLeapLand
  905.         GroundHitWeapon   = RohanGimliLeapWarhead
  906.         PreLandingStateTime = 75; Look ahead to the end of the arc, and get the ABOUT_TO_HIT flag this far in advance
  907.     End
  908.  
  909.     Behavior = EmotionTrackerUpdate    Module_EmotionTracker
  910.         TauntAndPointDistance        =    300        ; max distance to taunted/pointed objet
  911.          TauntAndPointUpdateDelay    =    1000    ; how often scan (milliseconds)
  912.          
  913.         AddEmotion    =    Alert_Base
  914.      End    
  915.  
  916.     Behavior = HitReactionBehavior HitReactionBehaviorModuleTag
  917.         HitReactionLifeTimer1 = 2200 ; level 1 (light  damage)  hit reaction animations in frames (5 per sec)
  918.         HitReactionLifeTimer2 = 15 ; level 2 (medium damage)  hit reaction animations in frames (5 per sec)
  919.         HitReactionLifeTimer3 = 10 ; level 3 (heavy  damage)  hit reaction animations in frames (5 per sec)
  920.  
  921.         HitReactionThreshold1 = 1.0   ; level 1 (light  damage) threshold trigger
  922.         HitReactionThreshold2 = 2500.0  ; level 2 (medium damage) threshold trigger
  923.         HitReactionThreshold3 = 5000.0  ; level 3 (heavy  damage) threshold trigger
  924.     End
  925.  
  926.     Behavior = UnpauseSpecialPowerUpgrade ModuleTag_SmashEnabler
  927.         SpecialPowerTemplate = SpecialAbilityGloinSmash
  928.         TriggeredBy = Upgrade_EnableGloinSmash
  929.     End
  930.     Behavior = SpecialPowerModule ModuleTag_SmashStarter       
  931.         SpecialPowerTemplate      = SpecialAbilityGloinSmash
  932.         UpdateModuleStartsAttack  = Yes
  933.         StartsPaused                = Yes
  934.     End
  935.     Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_SmashWeaponFireUpdate   
  936.         SpecialPowerTemplate    = SpecialAbilityGloinSmash
  937.         WhichSpecialWeapon        = 1
  938.         SkipContinue            = Yes
  939.  
  940.         UnpackTime              = 1500 
  941.         PackTime                = 1200        
  942.         FreezeAfterTriggerDuration = 0 ; Hold AI for this long after we fire.
  943.         
  944.         AwardXPForTriggering    = 0        
  945.         
  946.         SpecialWeapon            = GloinSmashWeapon
  947.     End
  948.  
  949.     Geometry = CYLINDER
  950.     GeometryMajorRadius = 5.6
  951.     GeometryMinorRadius = 5.6
  952.     GeometryHeight = 16.0
  953.     GeometryIsSmall = Yes
  954.  
  955.     Shadow = SHADOW_DECAL
  956.     ShadowSizeX = 19;
  957.     ShadowSizeY = 19;
  958.     ShadowTexture = ShadowI;
  959. End
  960.