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_elven_thranduil.ini < prev    next >
Text File  |  2006-01-31  |  23KB  |  722 lines

  1. ;------------------------------------------------------------------------------
  2. ;
  3. ;    Thranduil.ini
  4. ;
  5. ;------------------------------------------------------------------------------
  6.  
  7. Object ElvenThranduil
  8.  
  9.     ; *** ART Parameters ***
  10.     SelectPortrait = HPThranduil
  11.     ButtonImage = HIThranduil
  12.     
  13.     DescriptionStrategic = CONTROLBAR:LW_ToolTip_Thranduil
  14.  
  15.     Draw = W3DScriptedModelDraw ModuleTag_01_
  16.  
  17.         OkToChangeModelColor = Yes
  18.         StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
  19.  
  20.         DefaultModelConditionState
  21.             Model               = EUThrndl_SKN
  22.             Skeleton            = EUThrndl_SKL
  23.             WeaponLaunchBone    = PRIMARY ARROW
  24.             ParticleSysBone    = NONE Predator FollowBone:Yes Persist:HOLD PersistID:100
  25.             ParticleSysBone    = NONE Predator02 FollowBone:Yes Persist:HOLD PersistID:100
  26.         End
  27.         
  28.         ModelConditionState = WEAPONSET_HERO_MODE INVISIBLE_STEALTH
  29.             ParticleSysBone = BAT_HEAD ThranDeadEye FollowBone:Yes
  30.             ParticleSysBone    = NONE Predator FollowBone:Yes Persist:SPAWN PersistID:100
  31.             ParticleSysBone    = NONE Predator02 FollowBone:Yes Persist:SPAWN PersistID:100
  32.         End
  33.         ModelConditionState = WEAPONSET_HERO_MODE
  34.             ParticleSysBone = BAT_HEAD ThranDeadEye FollowBone:Yes
  35.             ParticleSysBone    = NONE Predator FollowBone:Yes Persist:HOLD PersistID:100
  36.             ParticleSysBone    = NONE Predator02 FollowBone:Yes Persist:HOLD PersistID:100
  37.         End
  38.         ModelConditionState    = INVISIBLE_STEALTH
  39.             ParticleSysBone    = NONE Predator FollowBone:Yes Persist:SPAWN PersistID:100
  40.             ParticleSysBone    = NONE Predator02 FollowBone:Yes Persist:SPAWN PersistID:100
  41.         End
  42.         
  43.  
  44.         AnimationState        = STUNNED_FLAILING
  45.             Animation
  46.                 AnimationName     = EUThrndl_FLYA
  47.                 AnimationMode     = LOOP
  48.                 AnimationSpeedFactorRange    = 0.4 0.6
  49.             End
  50.             Flags               = RANDOMSTART
  51.         End
  52.  
  53.         AnimationState        = DYING
  54.             Animation
  55.                 AnimationName     = EUThrndl_DTHA
  56.                 AnimationMode     = ONCE
  57.             End
  58.         End    
  59.         
  60.  
  61.         AnimationState        = STUNNED_STANDING_UP
  62.             Animation
  63.                 AnimationName     = EUThrndl_GTPA
  64.                 AnimationMode     = ONCE
  65.                 AnimationSpeedFactorRange = 1.5 1.5
  66.             End
  67.         End
  68.  
  69.         AnimationState        = STUNNED 
  70.             Animation
  71.                 AnimationName     = EUThrndl_LNDA
  72.                 AnimationMode     = ONCE
  73.             End
  74.         End            
  75.         
  76.         AnimationState                        = PARALYZED
  77.             Animation
  78.                 AnimationName                = EUThrndl_IDLA
  79.                 AnimationMode                = LOOP
  80.             End
  81.         End
  82.  
  83.         // thorn of vengeance
  84.         AnimationState        = UNPACKING SPECIAL_WEAPON_ONE
  85.             Animation
  86.                 AnimationName     = EUThrndl_ATA1
  87.                 AnimationMode     = ONCE
  88.             End
  89.         End
  90.     
  91.         // thorn of vengeance
  92.         AnimationState        = PREPARING SPECIAL_WEAPON_ONE
  93.             Animation
  94.                 AnimationName     = EUThrndl_ATA1
  95.                 AnimationMode     = ONCE
  96.             End
  97.             Flags = START_FRAME_LAST
  98.         End
  99.         
  100.         AnimationState        = PACKING SPECIAL_WEAPON_ONE
  101.             Animation
  102.                 AnimationName     = EUThrndl_ATA3
  103.                 AnimationMode     = ONCE
  104.             End
  105.         End
  106.  
  107.         AnimationState        = PACKING PACKING_TYPE_1
  108.             Animation
  109.                 AnimationName     = EUThrndl_CHRA
  110.                 AnimationMode     = ONCE
  111.             End
  112.         End
  113. ;--- Train Archer - a cheer 
  114.  
  115.         AnimationState        = PACKING_TYPE_2
  116.             Animation
  117.                 AnimationName     = EUThrndl_CHRA
  118.                 AnimationMode     = ONCE
  119.                 AnimationSpeedFactorRange = 1.5 1.5
  120.             End
  121.         End
  122.  
  123.         ;New style firing
  124.         AnimationState                        = PREATTACK_A 
  125.             Animation
  126.                 AnimationName                = EUThrndl_ATA1
  127.                 AnimationMode                = ONCE
  128.                 UseWeaponTiming                = Yes
  129.             End
  130.         End
  131.  
  132.         AnimationState                        = FIRING_OR_RELOADING_A
  133.             Animation
  134.                 AnimationName                = EUThrndl_ATA2
  135.                 AnimationMode                = ONCE
  136.                 AnimationSpeedFactorRange    = 1.5 1.5
  137.             End
  138.         End
  139.  
  140.         AnimationState        = MOVING
  141.             Animation
  142.                 AnimationName   = EUThrndl_RUNA
  143.                 AnimationMode   = LOOP
  144.                 Distance        = 50
  145.                 AnimationBlendTime            = 10
  146.                 AnimationSpeedFactorRange    = 0.6 0.6
  147.             End
  148.             Flags               = RANDOMSTART
  149.         End
  150.         
  151.  
  152. ;--- Holding drawn bow while attacking        
  153.         AnimationState                        = CONTINUOUS_FIRE_MEAN
  154.             Animation
  155.                 AnimationName                = EUThrndl_ATA2
  156.                 AnimationMode                = MANUAL
  157.             End
  158.         End
  159.         
  160.         AnimationState                        = CONTINUOUS_FIRE_SLOW
  161.             Animation
  162.                 AnimationName                = EUThrndl_ATA2
  163.                 AnimationMode                = ONCE
  164.             End
  165.         End
  166.     
  167. ;--- Hit Reactions
  168.         AnimationState = HIT_REACTION
  169.             Animation
  170.                 AnimationName = EUThrndl_HITA
  171.                 AnimationMode = ONCE
  172.             End
  173.         End
  174.     
  175. ;--- Emotions
  176.         
  177.         AnimationState                    = EMOTION_TAUNTING
  178.             Animation
  179.                 AnimationName            = EUThrndl_TNTA
  180.                 AnimationMode            = LOOP
  181.             End
  182.         End
  183.  
  184.         AnimationState                =    EMOTION_CELEBRATING
  185.             Animation
  186.                 AnimationName   =    EUThrndl_CHRA
  187.                 AnimationMode   =    ONCE
  188.                 AnimationPriority    =    10
  189.             End
  190.             Flags                =    RESTART_ANIM_WHEN_COMPLETE
  191.         End
  192.         
  193.         AnimationState                        = LEVELED
  194.             Animation
  195.                 AnimationName                = EUThrndl_LVLA
  196.                 AnimationMode                = ONCE
  197.                 AnimationSpeedFactorRange    = 0.75 0.75
  198.             End
  199.         End
  200.  
  201.         AnimationState                =    RAISING_FLAG
  202.             Animation
  203.                 AnimationName   =    EUThrndl_CHRA
  204.                 AnimationMode   =    LOOP
  205.             End
  206.         End
  207.         
  208.         AnimationState                = HIDDEN
  209.             StateName                = Hidden
  210.             Animation
  211.                 AnimationName        = EUThrndl_CLKB
  212.                 AnimationMode        = LOOP
  213.             End
  214.             BeginScript
  215.                 Prev = CurDrawablePrevAnimationState()
  216.                 if Prev == "Idle" then CurDrawableSetTransitionAnimState("TRANS_IdleToHidden") end
  217.             EndScript
  218.         End
  219.  
  220.         AnimationState                =    SELECTED
  221.             StateName                =    Selected
  222.             Animation
  223.                 AnimationName        =    EUThrndl_ATNB
  224.                 AnimationMode        =    LOOP
  225.             End
  226.             BeginScript
  227.                 Prev = CurDrawablePrevAnimationState()
  228.                 if Prev == "Idle" then CurDrawableSetTransitionAnimState("TRANS_SwitchToAttention") end
  229.                 if Prev == "Hidden" then CurDrawableSetTransitionAnimState("TRANS_HiddenToIdle") end
  230.             EndScript
  231.         End
  232.  
  233.     
  234.         IdleAnimationState
  235.             Animation
  236.                 AnimationName     = EUThrndl_IDLA
  237.                 AnimationMode     = ONCE
  238.                 AnimationPriority    = 8
  239.             End
  240.             Animation
  241.                 AnimationName     = EUThrndl_IDLB
  242.                 AnimationMode     = ONCE
  243.                 AnimationPriority    = 1
  244.             End
  245.             Animation
  246.                 AnimationName     = EUThrndl_IDLC
  247.                 AnimationMode     = ONCE
  248.                 AnimationPriority    = 1
  249.             End
  250.             Animation
  251.                 AnimationName     = EUThrndl_IDLD
  252.                 AnimationMode     = ONCE
  253.                 AnimationPriority    = 1
  254.             End
  255.             Animation
  256.                 AnimationName     = EUThrndl_IDLE
  257.                 AnimationMode     = ONCE
  258.                 AnimationPriority    = 1
  259.             End
  260.             StateName           = Idle
  261.             BeginScript
  262.                 Prev = CurDrawablePrevAnimationState()
  263.                 if Prev == "Selected" then CurDrawableSetTransitionAnimState("TRANS_SwitchFromAttention") end
  264.                 if Prev == "Hidden" then CurDrawableSetTransitionAnimState("TRANS_HiddenToIdle") end
  265.             EndScript
  266.         End
  267.         
  268.         TransitionState            = TRANS_HiddenToIdle
  269.             Animation
  270.                 AnimationName        = EUThrndl_CLKA
  271.                 AnimationMode        = ONCE_BACKWARDS
  272.             End
  273.             Flags                = START_FRAME_LAST
  274.         End
  275.         TransitionState            = TRANS_IdleToHidden
  276.             Animation
  277.                 AnimationName        = EUThrndl_CLKA
  278.                 AnimationMode        = ONCE
  279.             End
  280.         End
  281.         
  282.         TransitionState       = TRANS_SwitchToAttention
  283.             Animation
  284.                 AnimationName     = EUThrndl_ATNA
  285.                 AnimationMode     = ONCE
  286.             End
  287.         End
  288.         
  289.         TransitionState       = TRANS_SwitchFromAttention
  290.             Animation
  291.                 AnimationName     = EUThrndl_ATNC
  292.                 AnimationMode     = ONCE
  293.             End
  294.         End
  295.     End        
  296.  
  297.  
  298.     #include "..\..\..\includes\StunDrawModuleSmall.inc"
  299.     
  300.     ; ***DESIGN parameters ***
  301.     Side = Elves
  302.     EditorSorting       = UNIT
  303.     ThreatLevel         = THARANDUIL_THREAT_LEVEL
  304.     ThingClass          = CHARACTER_UNIT
  305.     BuildCost           = THRANDUIL_BUILDCOST                
  306.     BuildTime           = THRANDUIL_BUILDTIME    
  307.     ShockwaveResistance = SHOCKWAVE_RESISTANCE_STRONG            
  308.     TransportSlotCount    = TRANSPORTSLOTCOUNT_HERO
  309.     
  310.     
  311.     WeaponSet
  312.         Conditions = WEAPONSET_HERO_MODE
  313.         Weapon    = PRIMARY ElvenThranduilBowDeadeye
  314.         AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  315.     End
  316.     WeaponSet
  317.         Conditions = None 
  318.         Weapon = PRIMARY    ElvenThranduilBow
  319.         AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
  320.     End
  321.     
  322.     
  323.     ArmorSet
  324.         Conditions      = None
  325.         Armor           = HeroLightArmor
  326.         DamageFX        = NormalDamageFX
  327.     End
  328.     
  329.     VisionRange            = VISION_HERO_RANGED
  330.     ShroudClearingRange    = SHROUD_CLEAR_RANGED_HERO
  331.     
  332.     MaxVisionBonusPercent = 300%
  333.     VisionBonusTestRadius = 200
  334.     VisionBonusPercentPerFoot = 1.0%
  335.     
  336.     BountyValue            = ELVEN_THRANDUIL_BOUNTY_VALUE
  337.     DisplayName            = OBJECT:ElvenThranduil
  338.     RecruitText            = CONTROLBAR:ElvenThranduilRecruit
  339.     ReviveText            = CONTROLBAR:ElvenThranduilRevive
  340.     Hotkey                = CONTROLBAR:ElvenThranduilHotkey
  341.     CrushableLevel        = 2  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  342.     
  343.     CommandSet        = ElvenThranduilCommandSet
  344.     CommandPoints    = 75
  345.     
  346.     ;//DisplayMeleeDamage    = THRANDUIL_KNIFE_DAMAGE;
  347.     ;//DisplayRangedDamage = THRANDUIL_BOW_DAMAGE;
  348.  
  349.     HeroSortOrder = 30
  350.  
  351.  
  352.     ; *** AUTO RESOLVE DATA *** 
  353.     AutoResolveUnitType = AutoResolveUnit_Hero
  354.     AutoResolveCombatChain = AutoResolve_HeroCombatChain
  355.  
  356.     AutoResolveBody = AutoResolve_ThranduilBody
  357.     
  358.     AutoResolveArmor
  359.         Armor = AutoResolve_ThranduilArmor
  360.     End
  361.  
  362.     AutoResolveWeapon
  363.         Weapon = AutoResolve_ThranduilWeapon
  364.     End
  365.     
  366.     ;AutoResolveLeadership = AutoResolve_ThranduilBonus
  367.  
  368.  
  369.     ; *** AUDIO Parameters ***;
  370.  
  371.     VoiceAttack                             = ThranduilVoiceAttack
  372.     VoiceAttackAir                            = ThranduilVoiceAttack
  373.     VoiceAttackCharge                         = ThranduilVoiceAttackCharge
  374.     VoiceAttackMachine                         = ThranduilVoiceAttack
  375.     VoiceAttackStructure                     = ThranduilVoiceAttackBuilding
  376.     VoiceFear                                = ThranduilVoiceHelpMe
  377.     VoiceGuard                                = ThranduilVoiceMove
  378.     VoiceMove                                 = ThranduilVoiceMove
  379.     VoiceMoveToCamp                         = ThranduilVoiceMoveCamp
  380.     VoiceMoveWhileAttacking                 = ThranduilVoiceDisengage
  381.     VoicePriority                            = 60
  382.     VoiceRetreatToCastle                     = ThranduilVoiceRetreat
  383.     VoiceSelect                             = ThranduilVoiceSelectMS
  384.     VoiceSelectBattle                          = ThranduilVoiceSelectBattle
  385.  
  386.     SoundImpact                                = ImpactHorse
  387.  
  388.     UnitSpecificSounds
  389.         VoiceMoveToTrees                    = ThranduilVoiceMoveForest
  390.         VoiceEnterUnitElvenTransportShip    = ThranduilVoiceMoveShip
  391.         VoiceGarrison                        = ThranduilVoiceMoveGarrison
  392.         VoiceInitiateCaptureBuilding        = ThranduilVoiceCaptureBuilding            ; From SpecialPower SpecialAbilityCaptureBuilding
  393.     End
  394.  
  395.     ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
  396.         MaxUpdateRangeCap = 800
  397.         AnimationSound = Sound:FootstepDirtA             Animation:EUThrndl_SKL.EUThrndl_RUNA    Frames:17 29
  398.         AnimationSound = Sound:BodyFallSoldier            Animation:EUThrndl_SKL.RUThrndl_LNDA    Frames:3
  399.         AnimationSound = Sound:BodyFallSoldier            Animation:EUThrndl_SKL.EUThrndl_DTHA    Frames:31
  400.         AnimationSound = Sound:SwordIntoGroundQuiet        Animation:EUTHRNDL_SKL.EUTHRNDL_ATKB    Frames:32    ;hit bow on ground
  401.     End
  402.  
  403.     CrowdResponseKey = ElfHero
  404.  
  405.     Behavior = LargeGroupAudioUpdate ModuleTag_LGAU        ; Tie into LargeGroupAudio system
  406.         Key = Humanoid_Male Elf Elf_Male Unit Infantry Hero
  407.     End
  408.  
  409.     #include "..\..\..\includes\StandardUnitEvaEvents.inc"
  410.     EvaEventDieOwner            = ThranduilDie            ;Eva event to trigger on unit's death. NOTICE THAT this is only for permanent deaths
  411.  
  412.     Behavior = EmotionTrackerUpdate    Module_EmotionTracker
  413.         TauntAndPointDistance                = 200
  414.         TauntAndPointUpdateDelay            = 2000
  415.         PointAt                                = ANY +HERO
  416.         AddEmotion            =    Terror_Base
  417.         AddEmotion            =    Doom_Base
  418.         //    AddEmotion            =   BraceForBeingCrushed_Base
  419.         AddEmotion            =    UncontrollableFear_Base
  420.         //    AddEmotion            =    FearIdle_Base
  421.         //    AddEmotion            =    FearBusy_Base
  422.         AddEmotion            =    Point_Base
  423.         AddEmotion            =    Taunt_Base
  424.          AddEmotion            =    CheerIdle_Base
  425.         AddEmotion            =    CheerBusy_Base
  426.         //    AddEmotion            =    HeroCheerIdle_Base
  427.         //    AddEmotion            =    HeroCheerBusy_Base
  428.         AddEmotion            =    Alert_Base
  429.         AddEmotion            =    CheerForAboutToCrush_Base
  430.     End
  431.  
  432.     ; *** ENGINEERING Parameters ***
  433.  
  434.     RadarPriority = UNIT
  435.     KindOf = HERO PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE THROWN_OBJECT ARMY_SUMMARY ATTACK_NEEDS_LINE_OF_SIGHT HEAVY_MELEE_HITTER
  436.     PathfindDiameter = 40.0
  437.     CamouflageDetectionMultiplier = CAMOUFLAGE_DETECTION_DISTANCE_MEDIUM
  438.     
  439.     Body = RespawnBody ModuleTag_RespawnBody
  440.         CheerRadius                 = EMOTION_CHEER_RADIUS
  441.         MaxHealth                     = THRANDUIL_HEALTH                        ; BALANCE Legola Health
  442.         PermanentlyKilledByFilter    = NONE                                    ; Who kills me permanently?
  443.            DodgePercent                  = HERO_DODGE_PERCENT
  444.     End
  445.     
  446.     ;--------------------------------------------------------------------------
  447.     ; Thorn of Vengeance
  448.     ;--------------------------------------------------------------------------
  449.     Behavior = UnpauseSpecialPowerUpgrade ModuleTag_ThornArrowEnabler
  450.         SpecialPowerTemplate        = SpecialAbilityThornVengeance
  451.         TriggeredBy                    = Upgrade_ThranduilThornofVengeance
  452.     End
  453.     Behavior = SpecialPowerModule ModuleTag_ThornArrow
  454.         SpecialPowerTemplate        = SpecialAbilityThornVengeance
  455.         UpdateModuleStartsAttack    = Yes
  456.         StartsPaused                = Yes
  457.     End
  458.     Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_ThornArrowUpdate
  459.         SpecialPowerTemplate        = SpecialAbilityThornVengeance
  460.         SkipContinue                = Yes
  461.         UnpackTime                    = 1600
  462.         PreparationTime                = 2
  463.         PackTime                    = 850
  464.         AwardXPForTriggering        = 0
  465.         StartAbilityRange            = 325.0                                    ; Note: This has to be smaller than the weapon range or it'll never succeed
  466.         ApproachRequiresLOS            = Yes        
  467.         SpecialWeapon                = ThranduilThornofVengeance
  468.         WhichSpecialWeapon            = 1
  469.     End
  470.     Behavior = AutoAbilityBehavior ModuleTag_ThornArrowAutoAbility
  471.         SpecialAbility                = SpecialAbilityThornVengeance
  472.         MaxScanRange                = 300
  473.         Query                        = 1 ANY ENEMIES +HERO +MONSTER
  474.         Query                        = 1 ALL ENEMIES
  475.     End
  476.     
  477.     ;--------------------------------------------------------------------------
  478.     ; Deadeye
  479.     ;--------------------------------------------------------------------------
  480.     Behavior = UnpauseSpecialPowerUpgrade ModuleTag_DeadeyeEnabler
  481.         SpecialPowerTemplate = SpecialAbilityThranduilDeadeye
  482.         TriggeredBy = Upgrade_ThranduilDeadeye
  483.     End
  484.       Behavior = SpecialPowerModule ModuleTag_DeadeyeStarter                    ; SpecialAbility is a SpecialPower, SpecialPower is anyting special
  485.         SpecialPowerTemplate    = SpecialAbilityThranduilDeadeye
  486.         StartsPaused            = Yes
  487.     End
  488.     Behavior = HeroModeSpecialAbilityUpdate ModuleTag_DeadeyeUpdate            ; So the difference in SpecialAbility is that it takes timing from this Update, instead of simply firing.
  489.         SpecialPowerTemplate    = SpecialAbilityThranduilDeadeye
  490.         HeroEffectDuration        = 20000                                        ; this should sync with the auto ability delay re-fire time in commandButtons.ini
  491.         UnpackTime              = 1                                            ; insant unpack
  492.         TriggerSound            = AragornBladeMaster
  493.         PackTime                = 2500
  494.         UnpackingVariation        = 1
  495.     End
  496.     
  497.     ;--------------------------------------------------------------------------
  498.     ; Elf Cloak
  499.     ;--------------------------------------------------------------------------
  500.     Behavior = UnpauseSpecialPowerUpgrade ModuleTag_ElfCloakEnabler
  501.         SpecialPowerTemplate        = SpecialAbilityElfCloak
  502.         TriggeredBy                    = Upgrade_ThranduilElfCloak
  503.     End    
  504.     Behavior = SpecialPowerModule ModuleTag_ElfCloakStarter
  505.         SpecialPowerTemplate        = SpecialAbilityElfCloak
  506.         UpdateModuleStartsAttack    = Yes
  507.         StartsPaused                = Yes
  508.     End
  509.     Behavior = ToggleHiddenSpecialAbilityUpdate ModuleTag_ElfCloakUpdate   
  510.         SpecialPowerTemplate        = SpecialAbilityElfCloak
  511.     End
  512.     
  513.     ;--------------------------------------------------------------------------
  514.     Behavior = SpecialPowerModule ModuleTag_WildWalkFakeButtonDown
  515.         SpecialPowerTemplate        = SpecialAbilityFakeLeadership
  516.         UpdateModuleStartsAttack    = No
  517.         StartsPaused                = No
  518.     End    
  519.     
  520.     ;--------------------------------------------------------------------------
  521.     ; Move Unseen
  522.     ;--------------------------------------------------------------------------    
  523.     Behavior = UnpauseSpecialPowerUpgrade ModuleTag_MoveUnseenEnabler
  524.         SpecialPowerTemplate        = SpecialAbilityMoveUnseen
  525.         TriggeredBy                    = Upgrade_ThranduilMoveUnseen
  526.     End    
  527.     Behavior = InvisibilitySpecialPower ModuleTag_MoveUnseen
  528.         SpecialPowerTemplate        = SpecialAbilityMoveUnseen
  529.         AvailableAtStart            = No
  530.         StartsPaused                = Yes
  531.         BroadcastRadius                = THRANDUIL_MOVEUNSEEN_EFFECT_RADIUS
  532.         ObjectFilter                = ANY +HORDE +HERO +DOZER ALLIES
  533.         Duration                    = 30000
  534.         InvisibilityNugget
  535.             ForbiddenConditions        = FIRING_ANY
  536.             DetectionRange            = CAMOUFLAGE_RADIUS
  537.             InvisibilityType        = CAMOUFLAGE
  538.         End
  539.     End
  540.  
  541.  
  542.  
  543.     Behavior = RespawnUpdate ModuleTag_RespawnUpdate
  544.         DeathAnim                    = DYING                        ;Model condition to play when killed-to-respawn
  545.         DeathFX                        = FX_ThranduilDieToRespawn    ;FXList to play when killed-to-respawn
  546.         DeathAnimationTime            = 3000                        ;How long DeathAnim will take.
  547.         InitialSpawnFX                = FX_ThranduilInitialSpawn
  548.         RespawnAnim                    = LEVELED                    ;Animation to play when respawning.
  549.         RespawnFX                    = FX_ThranduilRespawn            ;FXList to play when respawning.
  550.         RespawnAnimationTime        = 2000                        ;Time it takes for respawn to play.
  551.         AutoRespawnAtObjectFilter    = NONE +CASTLE_KEEP            ;Respawn at this location -- and at it's exit production point if possible.
  552.         ButtonImage                    = HIThranduil_res
  553.         
  554.         ;RespawnEntries determine the ruleset for how a character can be revived. Some units may automatically respawn, others
  555.         ;may require a specific revive action performed on him. You can specify different values for each level... or use Level:Any
  556.         RespawnRules =    AutoSpawn:No        Cost:1875        Time:60000        Health:100%        ;DEFAULT VALUES
  557.     End
  558.  
  559.     Behavior = AutoHealBehavior ModuleTag_LegolasHealing
  560.         StartsActive            = Yes
  561.         HealingAmount            = HERO_HEAL_AMOUNT
  562.         HealingDelay            = 1000
  563.         StartHealingDelay        = HERO_HEAL_DELAY
  564.         HealOnlyIfNotInCombat    = Yes
  565.     End
  566.     
  567.     Behavior = StancesBehavior ModuleTag_StancesBehavior
  568.         StanceTemplate = Hero
  569.     End
  570.   
  571.     #include "..\..\..\includes\CaptureBuilding.inc"
  572.     
  573.     Behavior = AIUpdateInterface ModuleTag_03
  574.         AutoAcquireEnemiesWhenIdle    = Yes ATTACK_BUILDINGS
  575.         MoodAttackCheckRate            = 500
  576.         AILuaEventsList                = LegolasFunctions
  577.     End
  578.  
  579.     LocomotorSet
  580.         Locomotor = ElvenThranduilLocomotor
  581.         Condition = SET_NORMAL
  582.         Speed     = NORMAL_ELVEN_FAST_MEMBER_SPEED
  583.     End
  584.     
  585.     Behavior = AutoAbilityBehavior ModuleTag_AutoAbilityBehavior
  586.     End        
  587.     
  588.     Behavior = PhysicsBehavior ModuleTag_04
  589.         GravityMult = 1.0
  590.     End
  591.     
  592.     Behavior = SlowDeathBehavior ModuleTag_05
  593.         DeathTypes = ALL -KNOCKBACK
  594.         SinkDelay = 3000
  595.         SinkRate = 0.40     ; in Dist/Sec
  596.         DestructionDelay = 8000
  597.         Sound = INITIAL ThranduilVoiceDie
  598.     End
  599.     
  600.     Behavior = SquishCollide ModuleTag_06
  601.         ;nothing
  602.     End
  603.     
  604.     Behavior = SlowDeathBehavior ModuleTag_07
  605.         ; Same as normal death, but no sound (sound already played by SoundImpact = ... )
  606.         DeathTypes = NONE +KNOCKBACK
  607.         SinkDelay = 3000
  608.         SinkRate = 0.40     ; in Dist/Sec
  609.         DestructionDelay = 8000
  610.     End
  611.  
  612.     Behavior = BezierProjectileBehavior ModuleTag_08 ; Module starts asleep, and wakes up when thrown.
  613.         ; 
  614.         FirstHeight                    = 24    ; Height of Bezier control points above highest intervening terrain
  615.         SecondHeight                = 24
  616.         FirstPercentIndent            = 30%    ; Percentage of shot distance control points are placed
  617.         SecondPercentIndent            = 70%
  618.         TumbleRandomly                = Yes
  619.  
  620.         CrushStyle                    = Yes    ; I don't detonate, I just hit
  621.         DieOnImpact                    = Yes
  622.         BounceCount                    = 1        ; When I hit the ground, I'll arc again
  623.         BounceDistance                = 40    ; this far
  624.         BounceFirstHeight            = 24    ; Height of Bezier control points above highest intervening terrain
  625.         BounceSecondHeight            = 24
  626.         BounceFirstPercentIndent    = 20%    ; Percentage of shot distance control points are placed
  627.         BounceSecondPercentIndent    = 80%
  628.  
  629.         GroundHitFX                    = FX_ThrownRockGroundHit
  630.         GroundBounceFX                = FX_ThrownRockBounceHit
  631.     End
  632.     
  633.     Behavior = AutoHealBehavior ModuleTag_ElvenGiftHealing
  634.         StartsActive                = No
  635.         TriggeredBy                    = Upgrade_ElvenGift
  636.         HealingAmount                = ELVEN_GIFT_REGEN_AMOUNT
  637.         HealingDelay                = ELVEN_GIFT_REGEN_DELAY
  638.         StartHealingDelay = HERO_HEAL_DELAY
  639.         HealOnlyIfNotInCombat = Yes
  640.     End
  641.     
  642.     Behavior = AttributeModifierUpgrade ModuleTag_ElvenGiftBonus
  643.         TriggeredBy = Upgrade_ElvenGift
  644.         AttributeModifier = SpellBookElvenGifts
  645.     End
  646.     
  647.     Behavior = HitReactionBehavior HitReactionBehaviorModuleTag
  648.         HitReactionLifeTimer1 = 1993 ; level 1 (light  damage)  hit reaction animations in ms
  649.         HitReactionLifeTimer2 = 1993 ; level 2 (medium damage)  hit reaction animations in ms
  650.         HitReactionLifeTimer3 = 1993 ; level 3 (heavy  damage)  hit reaction animations in ms
  651.  
  652.         HitReactionThreshold1 = 5.0   ; level 1 (light  damage) threshold trigger
  653.         HitReactionThreshold2 = 25.0  ; level 2 (medium damage) threshold trigger
  654.         HitReactionThreshold3 = 50.0  ; level 3 (heavy  damage) threshold trigger
  655.  
  656. ;        FastHitsResetReaction = Yes    ;If set -- when hits occur faster than the reaction animations, it will reset the animation. (like getting riddled with machine gun bullets)
  657.     End
  658.  
  659.     ;// non-innate InvisibilityUpdate for Elven Cloak. For this to work with the ToggleHiddenSpecialAbilityUpdate this
  660.     ;// must be the first InvisibilityUpdate in the object.
  661.     Behavior = InvisibilityUpdate ModuleTag_ElvenCloak
  662.         InvisibilityNugget
  663.             InvisibilityType        = STEALTH
  664.             ForbiddenConditions        = MOVING FIRING_ANY TAKING_DAMAGE USING_ABILITY
  665.             BecomeStealthedFX       = FX_ElvenCloakOn
  666.             ExitStealthFX           = FX_ElvenCloakOff
  667.             Options                    = UNTOGGLE_HIDDEN_WHEN_LEAVING_STEALTH
  668.         End
  669.         StartsActive                = No
  670.         UpdatePeriod                = 2000
  671.     End
  672.  
  673.     ;// Innate camo
  674.     Behavior = InvisibilityUpdate ModuleTag_Camouflage
  675.         InvisibilityNugget
  676.             InvisibilityType        = CAMOUFLAGE
  677.             ForbiddenConditions        = TAKING_DAMAGE USING_ABILITY
  678.             DetectionRange            = CAMOUFLAGE_RADIUS
  679.             Options                    = ALLOW_NEAR_TREES
  680.         End
  681.         UnitSpecificSoundNameToUseAsVoiceMoveToStealthyArea = VoiceMoveToTrees
  682.         UnitSpecificSoundNameToUseAsVoiceEnterStateMoveToStealthyArea = VoiceEnterStateMoveToTrees
  683.         StartsActive                = Yes
  684.         UpdatePeriod                = 2000
  685.     End
  686.     
  687.     ;///////////////////
  688.     ; AISpecialPowers
  689.     ;///////////////////
  690.  
  691.     Behavior = AISpecialPowerUpdate MoveUnseenAI
  692.         CommandButtonName = Command_SpecialAbilityMoveUnseen
  693.         SpecialPowerAIType = AI_SPECIAL_POWER_GIVEXP_AOE
  694.         SpecialPowerRadius = 250
  695.     End
  696.     
  697.     Behavior = AISpecialPowerUpdate ElfCloakAI
  698.         CommandButtonName = Command_SpecialAbilityElfCloakThranduil
  699.         SpecialPowerAIType = AI_SPECIAL_POWER_BASIC_SELF_BUFF
  700.     End
  701.     
  702.     Behavior = AISpecialPowerUpdate DeadEyeAI
  703.         CommandButtonName = Command_SpecialAbilityDeadEye
  704.         SpecialPowerAIType = AI_SPECIAL_POWER_BASIC_SELF_BUFF
  705.     End
  706.     
  707.     Behavior = AISpecialPowerUpdate ThornOfVengeanceAI
  708.         CommandButtonName = Command_SpecialAbilityThornofVengeance
  709.         SpecialPowerAIType = AI_SPECIAL_POWER_ENEMY_TYPE_KILLER
  710.     End
  711.  
  712.     Geometry = CYLINDER
  713.     GeometryMajorRadius = 8.0
  714.     GeometryMinorRadius = 8.0
  715.     GeometryHeight = 19.2
  716.     GeometryIsSmall = Yes
  717.     Shadow = SHADOW_DECAL
  718.     ShadowSizeX = 19;
  719.     ShadowSizeY = 19;
  720.     ShadowTexture = ShadowI
  721. End
  722.