;------------------------------------------------------------------------------
;
; Damrod.ini
;
;------------------------------------------------------------------------------
; Faramir
Object ArnorCaptain
; *** ART Parameters ***
; SelectPortrait for Heros is portrait behind skill buttons. HP = HeroPortrait.
SelectPortrait = HPCaptCarthaen
; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.
ButtonImage = WOR_CaptCarthaen
Draw = W3DScriptedModelDraw ModuleTag_DRAW
OkToChangeModelColor = Yes
StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
ExtraPublicBone = arrow
ExtraPublicBone = PASSENGERBONE
DependencySharedModelFlags = TURN_LEFT_HIGH_SPEED TURN_RIGHT_HIGH_SPEED MOVING ACCELERATE DECELERATE TURN_LEFT TURN_RIGHT ATTACKING BACKING_UP
;;====================== MODELS ================================================================
DefaultModelConditionState
Model = GUCarthCap_SKN
WeaponLaunchBone = PRIMARY arrow
ParticleSysBone = NONE Predator FollowBone:Yes Persist:HOLD PersistID:100
ParticleSysBone = NONE Predator02 FollowBone:Yes Persist:HOLD PersistID:100
End
ModelConditionState = WEAPONSET_HERO_MODE INVISIBLE_STEALTH
ParticleSysBone = BAT_HEAD ThranDeadEye FollowBone:Yes
ParticleSysBone = NONE Predator FollowBone:Yes Persist:SPAWN PersistID:100
ParticleSysBone = NONE Predator02 FollowBone:Yes Persist:SPAWN PersistID:100
End
ModelConditionState = WEAPONSET_HERO_MODE
ParticleSysBone = BAT_HEAD ThranDeadEye FollowBone:Yes
ParticleSysBone = NONE Predator FollowBone:Yes Persist:HOLD PersistID:100
ParticleSysBone = NONE Predator02 FollowBone:Yes Persist:HOLD PersistID:100
End
ModelConditionState = INVISIBLE_STEALTH
ParticleSysBone = NONE Predator FollowBone:Yes Persist:SPAWN PersistID:100
ParticleSysBone = NONE Predator02 FollowBone:Yes Persist:SPAWN PersistID:100
End
;;================== ANIMATIONS =================================================================
;;----------- Captain of Gondor - Sword
AnimationState = PACKING_TYPE_2 WEAPONSET_TOGGLE_1
StateName = CaptainPower
Animation = GUFaramir_CHRC
AnimationName = GUFaramir_SKL.GUFaramir_CHRC
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.2 1.2
End
End
;;----------- Captain of Gondor - Bow
AnimationState = PACKING_TYPE_2
StateName = STATE_CaptainBow
Animation = GUFaramir_CHRD
AnimationName = GUFaramir_SKL.GUFaramir_CHRD
AnimationMode = ONCE
AnimationSpeedFactorRange = 0.75 0.75
End
End
;;------------------ DYING -------------------------------------------------------------
; --- Flying through the air.
AnimationState = STUNNED_FLAILING WEAPONSET_TOGGLE_1
StateName = STATE_Sword
Animation = GUFaramir_FLYB
AnimationName = GUFaramir_SKL.GUFaramir_FLYB
AnimationMode = LOOP
End
Flags = RANDOMSTART
End
AnimationState = STUNNED_FLAILING
StateName = STATE_Bow
Animation = GUFaramir_FLYA
AnimationName = GUFaramir_SKL.GUFaramir_FLYA
AnimationMode = LOOP
End
Flags = RANDOMSTART
End
; --- Dying anims
AnimationState = DYING SPLATTED WEAPONSET_TOGGLE_1
StateName = STATE_Sword
Animation = GUFaramir_LNDB
AnimationName = GUFaramir_SKL.GUFaramir_LNDB
AnimationMode = ONCE
End
End
AnimationState = DYING SPLATTED
StateName = STATE_Bow
Animation = GUFaramir_LNDA
AnimationName = GUFaramir_SKL.GUFaramir_LNDA
AnimationMode = ONCE
End
End
; with sword
AnimationState = DYING WEAPONSET_TOGGLE_1 ;WEAPONSTATE_CLOSE_RANGE
StateName = STATE_Sword
Animation = GUFaramir_DIEA
AnimationName = GUFaramir_SKL.GUFaramir_DIEA
AnimationMode = ONCE
End
Animation = GUFaramir_DIEB
AnimationName = GUFaramir_SKL.GUFaramir_DIEB
AnimationMode = ONCE
End
End
; with bow
AnimationState = DYING
StateName = STATE_Bow
Animation = GUFaramir_DIEC
AnimationName = GUFaramir_SKL.GUFaramir_DIEC
AnimationMode = ONCE
End
End
; --- Stunned anims
AnimationState = STUNNED_STANDING_UP WEAPONSET_TOGGLE_1
StateName = STATE_Sword
Animation = GUFaramir_GTPB
AnimationName = GUFaramir_SKL.GUFaramir_GTPB
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.5 1.5
End
End
AnimationState = STUNNED_STANDING_UP
StateName = STATE_Bow
Animation = GUFaramir_GTPA
AnimationName = GUFaramir_SKL.GUFaramir_GTPA
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.5 1.5
End
End
AnimationState = STUNNED WEAPONSET_TOGGLE_1
StateName = STATE_Sword
Animation = GUFaramir_LNDB
AnimationName = GUFaramir_SKL.GUFaramir_LNDB
AnimationMode = ONCE
End
End
AnimationState = STUNNED
StateName = STATE_Bow
Animation = GUFaramir_LNDA
AnimationName = GUFaramir_SKL.GUFaramir_LNDA
AnimationMode = ONCE
End
End
;;----------- pose
AnimationState = USER_1
;*****************************************************************
;ParticleSysBone = B_SWORDBONE AndruilEfxParent FollowBone:yes
;*****************************************************************
Animation = GUFaramir_POSA
AnimationName = GUFaramir_SKL.GUFaramir_POSA
AnimationMode = ONCE
End
End
;--------------------- Wound Arrow anim
AnimationState = SPECIAL_WEAPON_ONE
StateName = STATE_Bow
Animation
AnimationName = GUFaramir_SKL.GUFaramir_ATKC
AnimationMode = ONCE
End
FrameForPristineBonePositions = 59
BeginScript
CurDrawableShowSubObject("arrow")
EndScript
End
;;------------------ ATTACKING --------------------------------------------------------------------
; Attacking Anims [Weapon_A]
AnimationState = MOVING WEAPONSET_TOGGLE_1 FIRING_OR_PREATTACK_A
Animation = TrotAndFire
AnimationName = GUFaramir_SKL.GUFaramir_ATRA
AnimationMode = LOOP
End
Flags = RANDOMSTART
StateName = RunAndSwing
End
AnimationState = FIRING_OR_PREATTACK_A WEAPONSET_TOGGLE_1
StateName = STATE_Sword
Animation = ATKD
AnimationName = GUFaramir_SKL.GUFaramir_ATKD
AnimationMode = ONCE
UseWeaponTiming = Yes
AnimationSpeedFactorRange = 1.149 1.149
End
Animation = ATKE
AnimationName = GUFaramir_SKL.GUFaramir_ATKE
AnimationMode = ONCE
UseWeaponTiming = Yes
AnimationSpeedFactorRange = 1.149 1.149
End
Animation = ATKF
AnimationName = GUFaramir_SKL.GUFaramir_ATKF
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.47 1.47
End
Flags = RESTART_ANIM_WHEN_COMPLETE
; FrameForPristineBonePositions = 59
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Bow" then CurDrawableSetTransitionAnimState("TRANS_BowToSword") end
EndScript
End
;;------------------ MOVING -------------------------------------------------------------
AnimationState = MOVING USER_4 ; Moving slaughter
StateName = Slaughter
Flags = RANDOMSTART
;ParticleSysBone = None InfantryDustTrails
Animation = GUFaramir_ATKE
AnimationName = GUFaramir_SKL.GUFaramir_ATKE
AnimationMode = LOOP
End
StateName = NoSword
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "Sword" then CurDrawableSetTransitionAnimState("TRANS_SwordToBow") end
EndScript
End
;--- Running with sword
AnimationState = MOVING WEAPONSET_TOGGLE_1 ;WEAPONSTATE_CLOSE_RANGE
StateName = STATE_RunningSword
Flags = RANDOMSTART
;ParticleSysBone = None InfantryDustTrails
Animation = GUFaramir_RUNB
AnimationName = GUFaramir_SKL.GUFaramir_RUNB
; AnimationMode = LOOP
AnimationSpeedFactorRange = 0.85 0.85
Distance = 28
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Bow" then CurDrawableSetTransitionAnimState("TRANS_BowToSword") end
if Prev == "STATE_RunningBow" then CurDrawableSetTransitionAnimState("TRANS_BowToSword_Running") end
EndScript
End
;--- Running with bow
AnimationState = MOVING
StateName = STATE_RunningBow
Flags = RANDOMSTART
;ParticleSysBone = None InfantryDustTrails
Animation = GUFaramir_RUNA
AnimationName = GUFaramir_SKL.GUFaramir_RUNA
; AnimationMode = LOOP
AnimationSpeedFactorRange = 0.85 0.85
Distance = 28
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Sword" then CurDrawableSetTransitionAnimState("TRANS_SwordToBow") end
if Prev == "STATE_RunningSword" then CurDrawableSetTransitionAnimState("TRANS_SwordToBow_Running") end
EndScript
End
;---------------------------------------------------
;New style firing with bow
AnimationState = PREATTACK_A
StateName = STATE_Firing
Animation = ReadyToDrawn
AnimationName = GUFaramir_SKL.GUFaramir_ATKA1
AnimationMode = ONCE
; UseWeaponTiming = Yes ; UseWeaponTiming plus random weapon field equals desync. Leaving as warning
;AnimationBlendTime = 10
End
End
AnimationState = FIRING_OR_RELOADING_A
StateName = STATE_Firing
Animation = LooseReloadDraw
AnimationName = GUFaramir_SKL.GUFaramir_ATKA2
AnimationMode = ONCE
; UseWeaponTiming = Yes ; UseWeaponTiming plus random weapon field equals desync. Leaving as warning
AnimationSpeedFactorRange = 1.1 1.1 ; Therefore, this is all you get. A slight speed up so that the animation can always finish before any possible random value Design sets the range for
;AnimationBlendTime = 10
End
End
;---------------------End New style firing
AnimationState = CONTINUOUS_FIRE_MEAN
Animation = HangFrameWhileCoasting
AnimationName = GUFaramir_SKL.GUFaramir_ATKA2
AnimationMode = MANUAL
End
End
AnimationState = CONTINUOUS_FIRE_SLOW
;StateName = STATE_Idle_Bow
Animation = PutAwayArrow
AnimationName = GUFaramir_SKL.GUFaramir_ATKA3
AnimationMode = ONCE
End
End
;End New style firing
;---------------------------------------------------
;;-------------------- HIT REACTIONS -----------------------------------------------------------
; this hit animation attack stance
; AnimationState = EMOTION_ALERT HIT_REACTION WEAPONSET_TOGGLE_1
; Animation = Hit_Level_1_d
; AnimationName = GUFaramir_SKL.GUFaramir_HITD
; AnimationMode = ONCE
; End
; End
;
; AnimationState = HIT_REACTION WEAPONSET_TOGGLE_1
; Animation = Hit_Level_1_b
; AnimationName = GUFaramir_SKL.GUFaramir_HITB
; AnimationMode = ONCE
; End
; End
;
; AnimationState = HIT_REACTION
; Animation = Hit_Level_1_c
; AnimationName = GUFaramir_SKL.GUFaramir_HITC
; AnimationMode = ONCE
; End
; End
;;------------ EMOTIONS ------------------------------------------------------------------
;;====== LEVELED
AnimationState = LEVELED WEAPONSET_TOGGLE_1 ; This state clears itself in 3 seconds
Animation = LevelUp
AnimationName = GUFaramir_SKL.GUFaramir_CHRC
AnimationMode = ONCE
End
End
AnimationState = LEVELED ; This state clears itself in 3 seconds
Animation = LevelUp
AnimationName = GUFaramir_SKL.GUFaramir_CHRD
AnimationMode = ONCE
End
End
;====== CELEBRATING
AnimationState = EMOTION_CELEBRATING
Animation = CHRA
AnimationName = GUFaramir_SKL.GUFaramir_CHRA
AnimationMode = ONCE
AnimationPriority = 10
End
Animation = CHRB
AnimationName = GUFaramir_SKL.GUFaramir_CHRB
AnimationMode = ONCE
AnimationPriority = 5
End
Flags = RESTART_ANIM_WHEN_COMPLETE
End
;;------------------- SELECTED STATES ------------------------------------------------------------
AnimationState = ATTACKING WEAPONSET_TOGGLE_1
StateName = STATE_Sword
Animation = ATKD
AnimationName = GUFaramir_SKL.GUFaramir_ATKD
AnimationMode = MANUAL
End
End
;;------------------- SELECTED STATES ------------------------------------------------------------
AnimationState = SELECTED WEAPONSET_TOGGLE_1
StateName = STATE_Selected_Sword
Animation = ATNE
AnimationName = GUFaramir_SKL.GUFaramir_ATNE
AnimationMode = LOOP
AnimationBlendTime = 15
End
Flags = RESTART_ANIM_WHEN_COMPLETE
BeginScript
CurDrawableHideSubObject("arrow")
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Selected_Bow" then CurDrawableSetTransitionAnimState("TRANS_BowToSword") end
if Prev == "STATE_Idle_Sword" then CurDrawableSetTransitionAnimState("TRANS_BoredToSelectedSword") return end
EndScript
End
;;====== ALERT
AnimationState = EMOTION_ALERT WEAPONSET_TOGGLE_1
StateName = STATE_READY
Animation = ready
AnimationName = GUFaramir_SKL.GUFaramir_IDLA
AnimationMode = LOOP
AnimationBlendTime = 20
End
End
AnimationState = SELECTED
StateName = STATE_Selected_Bow
Animation = ATNB
AnimationName = GUFaramir_SKL.GUFaramir_ATNB
AnimationMode = LOOP
AnimationBlendTime = 15
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Selected_Sword" then CurDrawableSetTransitionAnimState("TRANS_SwordToBow") end
if Prev == "STATE_Idle_Bow" then CurDrawableSetTransitionAnimState("TRANS_BoredToSelectedBow") return end
if Prev == "STATE_CaptainBow" then CurDrawableSetTransitionAnimState("TRANS_CaptainBowToSelectedBow") end
EndScript
End
;;--------------- IDLE STATES -----------------------------------------------------------------
AnimationState = WEAPONSET_TOGGLE_1
StateName = STATE_Idle_Sword
Animation = IDLE
AnimationName = GUFaramir_SKL.GUFaramir_IDLE
AnimationMode = LOOP
AnimationPriority = 20
AnimationBlendTime = 15
End
Animation = IDLF
AnimationName = GUFaramir_SKL.GUFaramir_IDLF
AnimationMode = LOOP
AnimationPriority = 1
End
Animation = IDLG
AnimationName = GUFaramir_SKL.GUFaramir_IDLG
AnimationMode = LOOP
AnimationPriority = 1
End
BeginScript
CurDrawableHideSubObject("arrow")
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Idle_Bow" then CurDrawableSetTransitionAnimState("TRANS_BowToSword") end
if Prev == "STATE_Selected_Sword" then CurDrawableSetTransitionAnimState("TRANS_SelectedToBoredSword") end
EndScript
End
IdleAnimationState
StateName = STATE_Idle_Bow
Animation = IdleBow
AnimationName = GUFaramir_SKL.GUFaramir_IDLC
AnimationMode = ONCE
AnimationBlendTime = 15
End
BeginScript
CurDrawableShowSubObject("arrow")
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_Idle_Sword" then CurDrawableSetTransitionAnimState("TRANS_SwordToBow") end
if Prev == "STATE_Selected_Bow" then CurDrawableSetTransitionAnimState("TRANS_SelectedToBoredBow") end
EndScript
End
;---transitions--------------------------------------------
TransitionState = TRANS_BoredToSelectedSword
Animation = ANTD
AnimationName = GUFaramir_SKL.GUFaramir_ANTD
AnimationMode = ONCE
End
End
TransitionState = TRANS_SelectedToBoredSword
Animation = ATNF
AnimationName = GUFaramir_SKL.GUFaramir_ATNF
AnimationMode = ONCE
End
End
TransitionState = TRANS_BoredToSelectedBow
Animation = ATNC
AnimationName = GUFaramir_SKL.GUFaramir_ATNC
AnimationMode = ONCE
End
End
TransitionState = TRANS_CaptainBowToSelectedBow
Animation = ATNC
AnimationName = GUFaramir_SKL.GUFaramir_ATNC
AnimationMode = ONCE
AnimationBlendTime = 10
AnimationSpeedFactorRange = 1.5 1.5
End
End
TransitionState = TRANS_SelectedToBoredBow
Animation = ATNA
; AnimationName = GUFaramir_SKL.GUFaramir_ATNA
AnimationName = GUFaramir_SKL.GUFaramir_ATND
AnimationMode = ONCE
End
End
TransitionState = TRANS_BowToSword
Animation = GUFaramir_STHA
AnimationName = GUFaramir_SKL.GUFaramir_STHA
AnimationMode = ONCE
End
End
TransitionState = TRANS_SwordToBow
Animation = GUFaramir_STHB
AnimationName = GUFaramir_SKL.GUFaramir_STHB
AnimationMode = ONCE
End
End
TransitionState = TRANS_BowToSword_Running
Animation = DrawSwords
AnimationName = GUFaramir_SKL.GUFaramir_STHD
AnimationMode = ONCE
End
End
TransitionState = TRANS_SwordToBow_Running
Animation = DrawBow
AnimationName = GUFaramir_SKL.GUFaramir_STHC
AnimationMode = ONCE
End
End
End
; Draw = W3DScriptedModelDraw DustEffects
; DefaultModelConditionState
; Model = None
; End
; IdleAnimationState
; End
; End
; ***DESIGN parameters ***
Side = Arnor
EditorSorting = UNIT
ThreatLevel = 4.0
ThingClass = CHARACTER_UNIT
BuildCost = DAMROD_BUILDCOST
BuildTime = HERO_BUILDTIME_TIER_2 ;;,;; DAMROD_BUILDTIME
TransportSlotCount = TRANSPORTSLOTCOUNT_HERO
;//DisplayMeleeDamage = DAMROD_DAMAGE
;//DisplayRangedDamage = DAMROD_BOW_DAMAGE
WeaponSet
Conditions = None
Weapon = PRIMARY FaramirBow
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
End
WeaponSet
Conditions = WEAPONSET_TOGGLE_1 ;CLOSE_RANGE CONTESTING_BUILDING
Weapon = PRIMARY FaramirSword
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
End
;WeaponSet
; Conditions = SPECIAL_UPGRADE
; Weapon = PRIMARY DamrodBowDeadlySniper
; AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
;End
WeaponSet
Conditions = WEAPONSET_HERO_MODE
Weapon = PRIMARY DamrodBowDeadlySniper
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
End
;;,;; Adding proper Contained weaponsets so he uses a bow when in a tower, even with sword equipped.
WeaponSet
Conditions = CONTAINED
Weapon = PRIMARY FaramirBow
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
End
WeaponSet
Conditions = WEAPONSET_TOGGLE_1 CONTAINED
Weapon = PRIMARY FaramirBow
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
End
ArmorSet
Conditions = None
Armor = HeroArmor
DamageFX = NormalDamageFX
End
VisionRange = VISION_HERO_RANGED
ShroudClearingRange = SHROUD_CLEAR_RANGED_HERO
BountyValue = GONDOR_DAMROD_BOUNTY_VALUE
DisplayName = OBJECT:ArnorCarthaen
RecruitText = CONTROLBAR:ArnorCarthaenRecruit
ReviveText = CONTROLBAR:ArnorCarthaenRevive
Hotkey = CONTROLBAR:ArnorCarthaenHotkey
ShockwaveResistance = SHOCKWAVE_RESISTANCE_STRONG
CrusherLevel = 0 ;Can I crush anything?
MountedCrusherLevel = 1 ;Crush level when mounted.
CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = cavalry/heroes
MountedCrushableLevel = 2 ;Crusable level when mounted.
CrushWeapon = HeroCrush
MinCrushVelocityPercent = 50 ; Has to be moving at at least 50% of full speed.
CrushDecelerationPercent = 30 ; Lose xx percent of max velocity when crushing.
CrushKnockback = 40
CrushZFactor = 1.0
CommandSet = GondorDamrodCommandSet
CommandPoints = HERO_COMMAND_POINTS_TIER_2 ;;,;; 60
; *** AUDIO Parameters ***;
VoiceAttack = ArnCaptVoiceAttack
VoiceAttackAir = ArnCaptVoiceAttack
VoiceAttackCharge = ArnCaptVoiceAttackCharge
VoiceAttackMachine = ArnCaptVoiceAttack
VoiceAttackStructure = ArnCaptVoiceAttackBuilding
VoiceCreated = ArnCaptVoiceSalute ;this conflicts with his respawn dialogue line -- rehooked to spawn FX
VoiceFullyCreated = ArnCaptVoiceSalute ;this conflicts with his respawn dialogue line -- rehooked to spawn FX
VoiceMove = ArnCaptVoiceMove
VoiceMoveToCamp = ArnCaptVoiceMoveCamp
VoiceMoveWhileAttacking = ArnCaptVoiceModeDisengage
VoicePriority = 82
VoiceRetreatToCastle = ArnCaptVoiceModeRetreat
VoiceSelect = ArnCaptVoiceSelect
VoiceSelectBattle = ArnCaptVoiceSelectBattle
VoiceGuard = ArnCaptVoiceMove
SoundImpact = ImpactHorse
;ArnCaptVoiceModeKnight
;ArnCaptVoiceMoveTrees
UnitSpecificSounds
VoiceGarrison = ArnCaptVoiceGarrison
End
#include "..\..\..\includes\DefaultInvisibilityUpdate.inc"
#include "..\..\..\includes\StandardUnitEvaEvents.inc"
EvaEventDieOwner = FaramirDie ;Eva event to trigger on unit's death. NOTICE THAT this is only for permanent deaths
Behavior = LargeGroupAudioUpdate ModuleTag_LGAU ; Tie into LargeGroupAudio system
Key = Human Unit Infantry Hero
UnitWeight = 2
End
ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
MaxUpdateRangeCap = 800
AnimationSound = Sound:FootstepDirtA Animation:GUFaramir_SKL.GUFaramir_RUNA Frames:2 12
AnimationSound = Sound:FootstepDirtA Animation:GUFaramir_SKL.GUFaramir_RUNB Frames:2 12
AnimationSound = Sound:WeaponSwitchBow Animation:GUFaramir_SKL.GUFaramir_ATKC Frames:18 ;wounding arrow
AnimationSound = Sound:SwordShingClean1 Animation:GUFaramir_SKL.GUFaramir_STHA Frames:21
AnimationSound = Sound:SwordIntoScabbard1 Animation:GUFaramir_SKL.GUFaramir_STHB Frames:11
AnimationSound = Sound:WeaponSwitchBow Animation:GUFaramir_SKL.GUFaramir_STHB Frames:28
AnimationSound = Sound:SwordIntoScabbard1 Animation:GUFaramir_SKL.GUFaramir_STHC Frames:2
AnimationSound = Sound:WeaponSwitchBow Animation:GUFaramir_SKL.GUFaramir_STHC Frames:3
AnimationSound = Sound:SwordShingClean1 Animation:GUFaramir_SKL.GUFaramir_STHD Frames:6
AnimationSound = Sound:BodyFallGenericNoArmor Animation:GUFaramir_SKL.GUFaramir_DIEA Frames:88
AnimationSound = Sound:BodyFallGenericNoArmor Animation:GUFaramir_SKL.GUFaramir_DIEB Frames:85
AnimationSound = Sound:BodyFallGenericNoArmor Animation:GUFaramir_SKL.GUFaramir_DIEC Frames:49
AnimationSound = Sound:BodyFallSoldier Animation:GUFaramir_SKL.GUFaramir_LNDA Frames:3
AnimationSound = Sound:BodyFallSoldier Animation:GUFaramir_SKL.GUFaramir_LNDB Frames:2
End
#include "..\..\..\includes\CaptureBuilding.inc"
; *** ENGINEERING Parameters ***
RadarPriority = UNIT
KindOf = HERO PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE ATTACK_NEEDS_LINE_OF_SIGHT
PathfindDiameter = 40.0
CamouflageDetectionMultiplier = CAMOUFLAGE_DETECTION_DISTANCE_MEDIUM
Body = RespawnBody ModuleTag_RespawnBody
CheerRadius = EMOTION_CHEER_RADIUS
MaxHealth = DAMROD_HEALTH ;BALANCE Faramir Health
PermanentlyKilledByFilter = NONE ;Who kills me permanently?
DodgePercent = HERO_DODGE_PERCENT
End
Behavior = RespawnUpdate ModuleTag_RespawnUpdate
DeathAnim = DYING ;Model condition to play when killed-to-respawn
DeathFX = FX_FaramirDieToRespawn ;FXList to play when killed-to-respawn
DeathAnimationTime = 5000 ;How long DeathAnim will take.
InitialSpawnFX = FX_FaramirInitialSpawn
RespawnAnim = LEVELED ;Animation to play when respawning.
RespawnFX = FX_FaramirRespawn ;FXList to play when respawning.
RespawnAnimationTime = 2000 ;Time it takes for respawn to play.
AutoRespawnAtObjectFilter = NONE +CASTLE_KEEP ;Respawn at this location -- and at it's exit production point if possible.
ButtonImage = HIDamrodRecall
;RespawnEntries determine the ruleset for how a character can be revived. Some units may automatically respawn, others
;may require a specific revive action performed on him. You can specify different values for each level... or use Level:Any
;;,;; RespawnRules = AutoSpawn:No Cost:600 Time:90000 Health:100% ;DEFAULT VALUES
;;,;; RespawnEntry = Level:2 Cost:700 Time:90000 ;For other levels, only override what is different.
;;,;; RespawnEntry = Level:3 Cost:800 Time:90000
;;,;; RespawnEntry = Level:4 Cost:900 Time:90000
;;,;; RespawnEntry = Level:5 Cost:1000 Time:120000
;;,;; RespawnEntry = Level:6 Cost:1100 Time:120000
;;,;; RespawnEntry = Level:7 Cost:1200 Time:120000
;;,;; RespawnEntry = Level:8 Cost:1300 Time:120000
;;,;; RespawnEntry = Level:9 Cost:1400 Time:120000
;;,;; RespawnEntry = Level:10 Cost:1500 Time:120000
;;,;; Version 2.1 Respawn Rules
RespawnRules = AutoSpawn:No Cost:900 Time:HERO_RESPAWNTIME_TIER_2 Health:100% ;DEFAULT VALUES
End
Behavior = AutoHealBehavior ModuleTag_FaramirHealing
StartsActive = Yes
HealingAmount = HERO_HEAL_AMOUNT
HealingDelay = 1000
StartHealingDelay = HERO_HEAL_DELAY
HealOnlyIfNotInCombat = Yes
End
Behavior = StancesBehavior ModuleTag_StancesBehavior
StanceTemplate = FighterHorde
End
Behavior = AIUpdateInterface ModuleTag_03
AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS STEALTHED
MoodAttackCheckRate = 500
HoldGroundCloseRangeDistance = 41
End
LocomotorSet
Locomotor = ElvenThranduilLocomotor
Condition = SET_NORMAL
Speed = NORMAL_ELVEN_FAST_MEMBER_SPEED
End
;;; KINGS FAVOUR ;;;
;Behavior = UnpauseSpecialPowerUpgrade ModuleTag_KingsFavorEnabler
; SpecialPowerTemplate = SpecialAbilityKingsFavor
; TriggeredBy = Upgrade_FaramirCaptainOfGondor
;End
;Behavior = SpecialPowerModule ModuleTag_KingsFavorSpecialPowerModule
; SpecialPowerTemplate = SpecialAbilityKingsFavor
; StartsPaused = Yes
; UpdateModuleStartsAttack = Yes
; InitiateSound = FaramirKnightVoiceCaptain
;End
;Behavior = LevelGrantSpecialPower ModuleTag_KingsFavor
; SpecialPowerTemplate = SpecialAbilityKingsFavor
; UnpackingVariation = 2
; StartAbilityRange = 200.0
; LevelFX = FX_PorterDeliver
; LevelFX = FX_LevelUp
;
; Experience = 50
; RadiusEffect = 150
; AcceptanceFilter = ANY +CAVALRY +INFANTRY -STRUCTURE -CASTLE_KEEP -BASE_FOUNDATION -HERO -MOVE_ONLY
;
; UnpackTime = 2000
; PreparationTime = 1
; FreezeAfterTriggerDuration = 2000 ; Hold AI for this long after we fire.
;End
; Behavior = TransportContain ModuleTag_TransportContainTag
; ObjectStatusOfContained = UNSELECTABLE
; PassengerFilter = NONE +HOBBIT
; Slots = 1
; ShowPips = No
; AllowEnemiesInside = No
; AllowNeutralInside = Yes
; AllowAlliesInside = Yes
; DamagePercentToUnits = 0%
; TypeOneForWeaponSet = HOBBIT
; PassengerBonePrefix = PassengerBone:PASSENGERBONE KindOf:HOBBIT
; EjectPassengersOnDeath = Yes
; ConditionForEntry = ModelConditionState: MOUNTED
; End
Behavior = SpecialPowerModule ModuleTag_SpecialAbilityGrabPassenger
SpecialPowerTemplate = SpecialAbilityGrabPassenger
UpdateModuleStartsAttack = Yes
;InitiateSound =
End
Behavior = SpecialAbilityUpdate ModuleTag_SpecialAbilityGrabPassengerUpdate
SpecialPowerTemplate = SpecialAbilityGrabPassenger
StartAbilityRange = 8.0
UnpackTime = 300 ; This does not match the animation, but looks good.
PreparationTime = 1 ; touching it to grabbing it
PersistentPrepTime = 630 ; grabbing it to whacking it on the ground (if shrubbery)
PackTime = 1000 ; whacking it to holding it nice
;GrabPassengerAnimAndDuration = AnimState:EATING AnimTime:3000 TriggerTime:1400
; PackSound =
; UnpackSound =
; TriggerSound =
; PrepSoundLoop =
AwardXPForTriggering = 0
End
; Behavior = AttributeModifierAuraUpdate ModuleTag_BoromirLeadership
; StartsActive = No ;If no, requires upgrade to turn on.
; BonusName = DamrodPassiveLeadership
; TriggeredBy = Upgrade_DamrodLeadership
; RefreshDelay = 2000
; Range = 200
; ObjectFilter = ANY +INFANTRY +CAVALRY -STRUCTURE -BASE_FOUNDATION -HERO
; End
;
; Behavior = UnpauseSpecialPowerUpgrade ModuleTag_UnpauseLeadership
; SpecialPowerTemplate = SpecialAbilityFakeLeadership
; TriggeredBy = Upgrade_DamrodLeadership
; End
; Behavior = SpecialPowerModule ModuleTag_BoromirLeadershipUpdate
; SpecialPowerTemplate = SpecialAbilityFakeLeadership
; UpdateModuleStartsAttack = No
; StartsPaused = Yes
; End
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_SpecialAbilityCarthaenRallyRangers
SpecialPowerTemplate = SpecialAbilityCarthaenRallyRangers
TriggeredBy = Upgrade_CarthaenRallyRangers
End
Behavior = OCLSpecialPower ModuleTag_OCLSpecialAbilityCarthaenRallyRangers
SpecialPowerTemplate = SpecialAbilityCarthaenRallyRangers
OCL = OCL_SpawnArnorRangers
TriggerFX = FX_ElvenAlliesSummon
CreateLocation = CREATE_AT_LOCATION
StartsPaused = Yes
End
;;; DEADLY SNIPER SPECIAL POWER (Rank 6) ;;;
; Behavior = UnpauseSpecialPowerUpgrade ModuleTag_DeadlySniperEnabler
; SpecialPowerTemplate = SpecialAbilityDamrodHeroMode
; TriggeredBy = Upgrade_DamrodDeadlySniper
; End
Behavior = SpecialPowerModule ModuleTag_DeadlySniperStarter
SpecialPowerTemplate = SpecialAbilityDamrodHeroMode
UpdateModuleStartsAttack = Yes
StartsPaused = Yes
End
Behavior = HeroModeSpecialAbilityUpdate ModuleTag_DeadlySniper
SpecialPowerTemplate = SpecialAbilityDamrodHeroMode
UnpackingVariation = 1
UnpackTime = 1 ;instant unpack
PreparationTime = 0 ;
PackTime = 0 ;
AwardXPForTriggering = 0
;HeroAttributeModifier = DamrodDeadlySniper
HeroEffectDuration = 10000
StopUnitBeforeActivating = Yes
End
Behavior = AutoAbilityBehavior ModuleTag_AutoAbilityBehavior
End
; Behavior = UnpauseSpecialPowerUpgrade ModuleTag_FaramirSpeechThing
; SpecialPowerTemplate = SpecialAbilityRousingSpeech
; TriggeredBy = Upgrade_FaramirWarSpeech
; End
; Behavior = SpecialPowerModule ModuleTag_10
; SpecialPowerTemplate = SpecialAbilityRousingSpeech
; UpdateModuleStartsAttack = Yes
; InitiateSound = TheodenRousingSpeech
; StartsPaused = Yes
; End
;--------------------------------------------------------------------------
; Elf Cloak
;--------------------------------------------------------------------------
; Behavior = UnpauseSpecialPowerUpgrade ModuleTag_ElfCloakEnabler
; SpecialPowerTemplate = SpecialAbilityElfCloak
; TriggeredBy = Upgrade_ThranduilElfCloak
; End
Behavior = SpecialPowerModule ModuleTag_ElfCloakStarter
SpecialPowerTemplate = SpecialAbilityElfCloak
UpdateModuleStartsAttack = Yes
StartsPaused = No
End
; Behavior = ToggleHiddenSpecialAbilityUpdate ModuleTag_ElfCloakUpdate
; SpecialPowerTemplate = SpecialAbilityElfCloak
; End
;--------------------------------------------------------------------------
Behavior = SpecialPowerModule ModuleTag_WildWalkFakeButtonDown
SpecialPowerTemplate = SpecialAbilityFakeLeadership
UpdateModuleStartsAttack = No
StartsPaused = No
End
;--------------------------------------------------------------------------
; Move Unseen
;--------------------------------------------------------------------------
; Behavior = UnpauseSpecialPowerUpgrade ModuleTag_MoveUnseenEnabler
; SpecialPowerTemplate = SpecialAbilityMoveUnseen
; TriggeredBy = Upgrade_ThranduilMoveUnseen
; End
Behavior = InvisibilitySpecialPower ModuleTag_MoveUnseen
SpecialPowerTemplate = SpecialAbilityMoveUnseen
AvailableAtStart = No
StartsPaused = No
BroadcastRadius = THRANDUIL_MOVEUNSEEN_EFFECT_RADIUS
ObjectFilter = ANY +HORDE +HERO +DOZER ALLIES
Duration = 30000
InvisibilityNugget
ForbiddenConditions = FIRING_ANY
DetectionRange = CAMOUFLAGE_RADIUS
InvisibilityType = CAMOUFLAGE
End
End
Behavior = EmotionTrackerUpdate Module_EmotionTracker
TauntAndPointDistance = 300 ; max distance to taunted/pointed objet
TauntAndPointUpdateDelay = 1000 ; how often scan (milliseconds)
AddEmotion = Alert_Base
End
; Behavior = DualWeaponBehavior ModuleTag_13
; SwitchWeaponOnCloseRangeDistance = 81
; UseCloseRangeWhileMounted = yes
; End
Behavior = PhysicsBehavior ModuleTag_04
GravityMult = 1.0
ShockStandingTime = 2533 ;msec
End
Behavior = SlowDeathBehavior ModuleTag_05
DeathTypes = ALL
SinkDelay = 30000
SinkRate = 0.40 ; in Dist/Sec
DestructionDelay = 8000
Sound = INITIAL FaramirRangerVoiceDie
End
Behavior = SquishCollide ModuleTag_06
;nothing
End
Behavior = NotifyTargetsOfImminentProbableCrushingUpdate ModuleTag_NotifyCrushScan
End
Behavior = HitReactionBehavior HitReactionBehaviorModuleTag
HitReactionLifeTimer1 = 1500 ; level 1 (light damage) hit reaction animations in ms
HitReactionLifeTimer2 = 1500 ; level 2 (medium damage) hit reaction animations in ms
HitReactionLifeTimer3 = 1500 ; level 3 (heavy damage) hit reaction animations in ms
HitReactionThreshold1 = 5.0 ; level 1 (light damage) threshold trigger
HitReactionThreshold2 = 25.0 ; level 2 (medium damage) threshold trigger
HitReactionThreshold3 = 50.0 ; level 3 (heavy damage) threshold trigger
FastHitsResetReaction = Yes If set -- when hits occur faster than the reaction animations, it will reset the animation. (like getting riddled with machine gun bullets)
End
;--------------------------------------------------------------------------
; Faramir Wounding Arrow - AKA: FaramirWoundArrow
;--------------------------------------------------------------------------
;Behavior = SpecialPowerModule ModuleTag_WoundArrow
; SpecialPowerTemplate = SpecialAbilityWoundArrow
; UpdateModuleStartsAttack = Yes
; InitiateSound = FaramirRangerVoiceWoundingArrow
;End
;
;Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_WoundArrowUpdate
; SpecialPowerTemplate = SpecialAbilityWoundArrow
; ForbiddenConditions = MOUNTED
;
; SkipContinue = Yes
; UnpackTime = 2000
; PreparationTime = 1
; PersistentPrepTime = 1000
; PackTime = 1
; AwardXPForTriggering = 0
; StartAbilityRange = 325.0 ; Note: This has to be smaller than the weapon range or it'll never succeed
;
; ApproachRequiresLOS = Yes
;
; SpecialWeapon = FaramirWoundArrow
; WhichSpecialWeapon = 1
;End
;// non-innate InvisibilityUpdate for Elven Cloak. For this to work with the ToggleHiddenSpecialAbilityUpdate this
;// must be the first InvisibilityUpdate in the object.
Behavior = InvisibilityUpdate ModuleTag_ElvenCloak
InvisibilityNugget
InvisibilityType = STEALTH
ForbiddenConditions = MOVING FIRING_ANY TAKING_DAMAGE USING_ABILITY
BecomeStealthedFX = FX_ElvenCloakOn
ExitStealthFX = FX_ElvenCloakOff
Options = UNTOGGLE_HIDDEN_WHEN_LEAVING_STEALTH
End
StartsActive = No
UpdatePeriod = 2000
End
;// Innate camo
Behavior = InvisibilityUpdate ModuleTag_Camouflage
InvisibilityNugget
InvisibilityType = CAMOUFLAGE
ForbiddenConditions = TAKING_DAMAGE FIRING_ANY USING_ABILITY
DetectionRange = CAMOUFLAGE_RADIUS
Options = ALLOW_NEAR_TREES
End
UnitSpecificSoundNameToUseAsVoiceMoveToStealthyArea = VoiceMoveToTrees
UnitSpecificSoundNameToUseAsVoiceEnterStateMoveToStealthyArea = VoiceEnterStateMoveToTrees
StartsActive = Yes
UpdatePeriod = 2000
End
;///////////////////
; AISpecialPowers
;///////////////////
Behavior = AISpecialPowerUpdate GondorFighterHordeStanceBattle ;;,;;
CommandButtonName = Command_SetStanceBattle
SpecialPowerAIType = AI_SPECIAL_POWER_STANCEBATTLE
End
Behavior = AISpecialPowerUpdate GondorFighterHordeStanceAggressive ;;,;;
CommandButtonName = Command_AttackMove ;;,;; Command_SetStanceAggressive
SpecialPowerAIType = AI_SPECIAL_POWER_STANCEAGGRESSIVE
End
Behavior = AISpecialPowerUpdate GondorFighterHordeHoldGround ;;,;;
CommandButtonName = Command_SetStanceHoldGround
SpecialPowerAIType = AI_SPECIAL_POWER_STANCEHOLDGROUND
End
Behavior = AISpecialPowerUpdate SpecialPowerDamrodRallyRangersAI
CommandButtonName = Command_SpecialPowerRallyRangers
SpecialPowerAIType = AI_SPECIAL_POWER_TARGETAOE_SUMMON
SpecialPowerRadius = 30.0
End
Behavior = AISpecialPowerUpdate SpecialPowerDamrodDeadlySniperAI
CommandButtonName = Command_SpecialAbilityDamrodDeadlySniper
SpecialPowerAIType = AI_SPECIAL_POWER_ENEMY_TYPE_KILLER_RANGED
End
Geometry = CYLINDER
GeometryMajorRadius = 8.0
GeometryMinorRadius = 8.0
GeometryHeight = 19.2
GeometryIsSmall = Yes
Shadow = SHADOW_DECAL
ShadowSizeX = 20;
ShadowSizeY = 20;
ShadowTexture = ShadowI;
End