;------------------------------------------------------------------------------
;
; Galadriel.ini
;
;------------------------------------------------------------------------------
; Galadriel
Object ElvenGaladriel
; *** ART Parameters ***
SelectPortrait = HPGaladriel
ButtonImage = HIGaladriel
Draw = W3DScriptedModelDraw ModuleTag_DRAW
StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
OkToChangeModelColor = Yes
DefaultModelConditionState
Model = EUGaldrlGd_SKN
End
ModelConditionState = USER_1 ; hero version.
Model = EUGaldrl_SKN
ParticleSysBone = B_PELVIS GaladAura FollowBone:YES ;Kai, this is trying out
ParticleSysBone = B_PELVIS GaladAura02 FollowBone:YES ;Kai, this is trying out
End
; --- Idle Anims
IdleAnimationState
Animation = IDLB
AnimationName = EUGaldrl_SKL.EUGaldrl_IDLB
AnimationMode = ONCE
AnimationPriority = 20
End
Animation = IDLC
AnimationName = EUGaldrl_SKL.EUGaldrl_IDLC
AnimationMode = ONCE
AnimationPriority = 1
End
Animation = IDLD
AnimationName = EUGaldrl_SKL.EUGaldrl_IDLD
AnimationMode = ONCE
AnimationPriority = 1
End
StateName = Idle
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "Selected" then CurDrawableSetTransitionAnimState("TRANS_Selected_To_Idle") end
EndScript
End
AnimationState = STUNNED_FLAILING
Flags = RANDOMSTART
Animation = EUGaldrl_FLYA
AnimationName = EUGaldrl_SKL.EUGaldrl_FLYA
AnimationMode = LOOP
End
End
; --- Dying anims
AnimationState = DYING SPLATTED
Animation = EUGaldrl_LNDA
AnimationName = RUEwnHrHrs_SKL.RUEwnHrHrs_LNDA
AnimationMode = ONCE
End
End
AnimationState = DYING AFLAME
Animation = DieAflame
AnimationName = EUGaldrl_SKL.EUGaldrl_FLYA
AnimationMode = LOOP
End
End
AnimationState = DYING
Animation = EUGaldrl_DTHA
AnimationName = EUGaldrl_SKL.EUGaldrl_DTHA
AnimationMode = ONCE
End
;ParticleSysBone = NONE GaladrielDying
ParticleSysBone = NONE UltraInitial01
ParticleSysBone = NONE UltraInitial02
ParticleSysBone = NONE UltraInitial03
End
; --- Stunned anims
AnimationState = STUNNED_STANDING_UP
Animation = EUGaldrl_GTPA
AnimationName = EUGaldrl_SKL.EUGaldrl_GTPA
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.3 1.3
End
End
AnimationState = STUNNED
Animation = EUGaldrl_LNDA
AnimationName = EUGaldrl_SKL.EUGaldrl_LNDA
AnimationMode = ONCE
End
End
; --- Moving anims
; --- Moving Anims
AnimationState = MOVING WANDER WEAPONSTATE_CLOSE_RANGE
StateName = WithSword
Animation = EUGaldrl_WLKA
AnimationName = EUGaldrl_SKL.EUGaldrl_RUNB
AnimationMode = LOOP
End
End
AnimationState = MOVING WANDER
Animation = EUGaldrl_WLKA
AnimationName = EUGaldrl_SKL.EUGaldrl_RUNB
AnimationMode = LOOP
End
End
AnimationState = MOVING FIRING_OR_PREATTACK_A
ShareAnimation = Yes
Animation = RunAndFire
AnimationName = EUGaldrl_SKL.EUGaldrl_ATKA
AnimationMode = LOOP
End
Flags = RANDOMSTART
End
AnimationState = USER_2 ; TerribleFury
Animation
AnimationName = EUGaldrl_SKL.EUGaldrl_SPCB
AnimationMode = ONCE
End
FXEvent = Frame:5 Name:FX_GaladrielTerribleFuryFearBlast
End
AnimationState = MOVING
Flags = RANDOMSTART
Animation = EUGaldrl_RUNB
AnimationName = EUGaldrl_SKL.EUGaldrl_RUNA
AnimationMode = LOOP
End
End
; --- Attacking Anims
AnimationState = FIRING_OR_PREATTACK_A WEAPONSTATE_CLOSE_RANGE
StateName = WithSword
Animation = ATKA
AnimationName = EUGaldrl_SKL.EUGaldrl_ATKA
AnimationMode = ONCE
UseWeaponTiming = Yes
End
Animation = ATKB
AnimationName = EUGaldrl_SKL.EUGaldrl_ATKB
AnimationMode = ONCE
UseWeaponTiming = Yes
End
;Animation = ATKB
;AnimationName = EUGaldrl_SKL.EUGaldrl_ATKC
;AnimationMode = ONCE
;UseWeaponTiming = Yes
;End
End
AnimationState = FIRING_OR_PREATTACK_A
Animation = ATKA
AnimationName = EUGaldrl_SKL.EUGaldrl_ATKA
AnimationMode = ONCE
UseWeaponTiming = Yes
End
Animation = ATKB
AnimationName = EUGaldrl_SKL.EUGaldrl_ATKB
AnimationMode = ONCE
UseWeaponTiming = Yes
End
;Animation = ATKB
;AnimationName = EUGaldrl_SKL.EUGaldrl_ATKC
;AnimationMode = ONCE
;UseWeaponTiming = Yes
;End
End
AnimationState = ATTACKING
Animation = ALERT_1
AnimationName = EUGaldrl_SKL.EUGaldrl_IDLA
AnimationMode = LOOP; ONCE
End
End
AnimationState = RAISING_FLAG
Animation
AnimationName = EUGaldrl_SKL.EUGaldrl_CHRA
AnimationMode = LOOP
End
End
AnimationState = SELECTED
StateName = Selected
SimilarRestart = Yes
Animation = ATNB
AnimationName = EUGaldrl_SKL.EUGaldrl_ATNB
AnimationMode = LOOP
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "Idle" then CurDrawableSetTransitionAnimState("TRANS_Idle_to_Selected") end
EndScript
End
AnimationState = LEVELED
Animation = Hit_Level_1_a
AnimationName = EUGaldrl_SKL.EUGaldrl_LVLA
AnimationMode = ONCE
End
End
; --- Click and Hit Reactions
AnimationState = HIT_REACTION HIT_LEVEL_1
Animation = Hit_Level_1_a
AnimationName = EUGaldrl_SKL.EUGaldrl_HITA
AnimationMode = ONCE
End
End
;;====== CELEBRATING
AnimationState = EMOTION_CELEBRATING
StateName = STATE_Emotion_Sword
Animation = Sword
AnimationName = EUGaldrl_SKL.EUGaldrl_CHRA
AnimationMode = ONCE
End
Flags = MAINTAIN_FRAME_ACROSS_STATES RESTART_ANIM_WHEN_COMPLETE
End
;;====== TAUNTING
AnimationState = EMOTION_TAUNTING
StateName = STATE_Emotion_Sword
Animation = Sword
AnimationName = EUGaldrl_SKL.EUGaldrl_CHRA
AnimationMode = ONCE
End
Flags = RESTART_ANIM_WHEN_COMPLETE ;MAINTAIN_FRAME_ACROSS_STATES
End
; --- Selected Anims and Transitions
TransitionState = TRANS_Idle_to_Selected
Animation = ATND
AnimationName = EUGaldrl_SKL.EUGaldrl_ATNA
AnimationMode = ONCE
End
End
TransitionState = TRANS_Selected_To_Idle
Animation = ATNE
AnimationName = EUGaldrl_SKL.EUGaldrl_ATNC
AnimationMode = ONCE
End
End
End
; ***DESIGN parameters ***
Side = Elves
EditorSorting = UNIT
ThreatLevel = GALADRIEL_THREAT_LEVEL
ThingClass = CHARACTER_UNIT
TransportSlotCount = TRANSPORTSLOTCOUNT_HERO
WeaponSet
Conditions = None
Weapon = PRIMARY GaladrielSword ; a magical sword
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
End
ArmorSet
Conditions = None
Armor = GaladrielArmor
DamageFX = NormalDamageFX
End
VisionRange = VISION_HERO_STANDARD
ShroudClearingRange = SHROUD_CLEAR_HERO
BountyValue = ELVEN_GALADRIEL_BOUNTY_VALUE
RecruitText = CONTROLBAR:GaladrielRecruit
ReviveText = CONTROLBAR:GaladrielRevive
Hotkey = CONTROLBAR:GaladrielHotkey
DisplayName = OBJECT:ElvenGaladriel
; CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
CrusherLevel = 0
CommandSet = GaladrielCommandSet
CommandPoints = 0
; *** AUDIO Parameters ***;
;VoiceAmbushed = YeomanArcherVoiceAmbushed
VoiceAttack = GaladrielVoiceAttack
VoiceAttackAir = GaladrielVoiceAttack
VoiceAttackCharge = GaladrielVoiceAttack
VoiceAttackMachine = GaladrielVoiceAttack
VoiceAttackStructure = GaladrielVoiceAttackBuilding
VoiceCreated = GaladrielVoiceSalute
VoiceFullyCreated = GaladrielVoiceSalute
VoiceFear = GaladrielVoiceHelpMe
VoiceGuard = GaladrielVoiceMove
VoiceMove = GaladrielVoiceMove
VoiceMoveToCamp = GaladrielVoiceMove
VoicePriority = 98
VoiceSelect = GaladrielVoiceSelect
VoiceSelectBattle = GaladrielVoiceSelectBattle
SoundImpact = ImpactHorse
UnitSpecificSounds
VoiceEnterUnitElvenTransportShip = GaladrielVoiceMove
VoiceGarrison = GaladrielVoiceMove
VoiceInitiateCaptureBuilding = GaladrielVoiceCaptureBuilding ; From SpecialPower SpecialAbilityCaptureBuilding
End
ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
MaxUpdateRangeCap = 800
AnimationSound = Sound:BodyFallGenericNoArmor Animation:EUGALDRL_SKL.EUGALDRL_LNDA Frames:6
AnimationSound = Sound:BodyFallGenericNoArmor Animation:EUGALDRL_SKL.EUGALDRL_DTHA Frames:15 ;fall to knees first
End
#include "..\..\..\includes\StandardUnitEvaEvents.inc"
EvaEventDieOwner = GaladrielDie ;Eva event to trigger on unit's death. NOTICE THAT this is only for permanent deaths
; Warn the player when the enemy gets Galadriel. Override the normal sighting event from StandardUnitEvaEvents.inc
EvaEnemyObjectSightedEvent = EnemyGaladrielSeen
ClientUpdate = EvaAnnounceClientCreate ModuleTag_CreateAnnounce
AnnouncementEventEnemy = EnemyGaladrielSeen
AnnouncementEventAlly = None
AnnouncementEventOwner = None
OnlyIfVisible = Yes ; Don't announce if hidden in the shroud
CountAsFirstSightedAnnoucement = Yes ; Don't re-annouce if going into shroud & back
UseObjectsPosition = No ; Play from central Fortress, not at Galadriel's position
CreateFakeRadarEvent = Yes ; Allow player to jump to Galadriel after hearing annoucement
End
; *** ENGINEERING Parameters ***
RadarPriority = UNIT
KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE HERO HEAVY_MELEE_HITTER
BuildCost = GALADRIEL_BUILDCOST
BuildTime = GALADRIEL_BUILDTIME
ShockwaveResistance = SHOCKWAVE_RESISTANCE_ALWAYS
Body = RespawnBody ModuleTag_RespawnBody
CheerRadius = EMOTION_CHEER_RADIUS
MaxHealth = GALADRIEL_HEALTH; balance
PermanentlyKilledByFilter = NONE
DodgePercent = HERO_DODGE_PERCENT
End
Behavior = RespawnUpdate ModuleTag_RespawnUpdate
DeathAnim = DYING
DeathFX = FX_HeroDieToRespawn
DeathAnimationTime = 4000
InitialSpawnFX = FX_HeroInitialSpawn
RespawnAnim = LEVELED
RespawnFX = FX_HeroRespawn
RespawnAnimationTime = 2000
AutoRespawnAtObjectFilter = NONE +CASTLE_KEEP
ButtonImage = HIGaladriel
;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:4500 Time:160000 Health:100%;DEFAULT VALUES
End
Behavior = AnnounceBirthAndDeathBehavior ModuleTag_AnnounceBirthAndDeathBehavior
End
#include "..\..\..\includes\DefaultInvisibilityUpdate.inc"
Behavior = StancesBehavior ModuleTag_StancesBehavior
StanceTemplate = Hero
End
Behavior = AIUpdateInterface ModuleTag_03
AutoAcquireEnemiesWhenIdle = Yes ATTACK_BUILDINGS
MoodAttackCheckRate = 500
AILuaEventsList = GaladrielFunctions
End
Behavior = DoCommandUpgrade Module_DoCommandStormQueen
TriggeredBy = Upgrade_ToggleStormQueen
GetUpgradeCommandButtonName = Command_StormQueen
End
Behavior = SpecialEnemySenseUpdate ModuleTag_GaladrielSeesHeroes
SpecialEnemyFilter = ANY +HERO ENEMIES
ScanRange = 30
ScanInterval = 2000
End
LocomotorSet
Locomotor = HeroHumanLocomotor
Condition = SET_NORMAL
Speed = NORMAL_ELVEN_FAST_MEMBER_SPEED
End
; ===== Galadriel Power --------------------------------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_GaladrielPowerEnabler
SpecialPowerTemplate = SpecialAbilityGlorfindelBladeOfPurity
TriggeredBy = Upgrade_GlorfindelBladeOfPurity
End
Behavior = SpecialPowerModule ModuleTag_GaladrielPowerStarter
SpecialPowerTemplate = SpecialAbilityGlorfindelBladeOfPurity
StartsPaused = Yes
SetModelCondition = ModelConditionState:USER_1
SetModelConditionTime = 20.0
End
Behavior = SpecialAbilityUpdate ModuleTag_GaladrielPowerUpdate
SpecialPowerTemplate = SpecialAbilityGlorfindelBladeOfPurity
TriggerAttributeModifier = GlorfindelBladeOfPurity
AttributeModifierDuration = 30000
End
Behavior = AutoAbilityBehavior ModuleTag_GaladrielPowerAutoAbility
SpecialAbility = SpecialAbilityGlorfindelBladeOfPurity
MaxScanRange = 200
Query = 1 ALL ENEMIES
End
; Leadership ---------------------------------------------------------------------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_TheodenLeadership
SpecialPowerTemplate = SpecialAbilityFakeLeadership
TriggeredBy = Upgrade_ElrondLeadership
End
Behavior = SpecialPowerModule ModuleTag_TheodenLeadershipUpdate
SpecialPowerTemplate = SpecialAbilityFakeLeadership
UpdateModuleStartsAttack = No
StartsPaused = No
End
Behavior = AttributeModifierAuraUpdate ModuleTag_Leadership
StartsActive = No
BonusName = GenericHeroLeadership
TriggeredBy = Upgrade_ElrondLeadership
RefreshDelay = 2000
Range = 200
AntiCategory = BUFF
ObjectFilter = GENERIC_BUFF_RECIPIENT_OBJECT_FILTER
End
Behavior = SpecialPowerModule ModuleTag_PhialStarter
SpecialPowerTemplate = SpecialAbilityPhialOfGaladriel
UpdateModuleStartsAttack = Yes
TriggerFX = FX_PhialOfGaladriel ;this works but there's too much of a delay
InitiateSound = PhialOn ;this doesn't work
End
Behavior = ModelConditionSpecialAbilityUpdate ModuleTag_PhialUpdate
SpecialPowerTemplate = SpecialAbilityPhialOfGaladriel
UnpackingVariation = 1
UnpackTime = 2000 ; Drawing the horn
PreparationTime = 1 ; nothing
PersistentPrepTime = 600 ; Blowing
PackTime = 2666 ; Putting horn away
GenerateTerror = Yes
GenerateUncontrollableFear = Yes
EmotionPulseRadius = 75
AwardXPForTriggering = 0
DisableWhenWearingTheRing = Yes
End
;--------------------------------------------------------------------------------------------
;//-------------------------Dain's Stubborn Pride--------------------------------------
;--------------------------------------------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_StubbornPrideUnpause
SpecialPowerTemplate = SpecialAbilityDainStubbornPride
TriggeredBy = Upgrade_DainStubbornPride
End
Behavior = SpecialPowerModule ModuleTag_StubbornPrideSpecialPower
SpecialPowerTemplate = SpecialAbilityDainStubbornPride
UpdateModuleStartsAttack = No
StartsPaused = Yes
End
Behavior = AttributeModifierAuraUpdate ModuleTag_StubbornPrideUpdate
StartsActive = No
BonusName = DainStubbornPride
TriggeredBy = Upgrade_DainStubbornPride
RefreshDelay = 2000
Range = 200
ObjectFilter = ANY +INFANTRY +CAVALRY -STRUCTURE -BASE_FOUNDATION -HERO -DOZER ALLIES
End
Behavior = PhysicsBehavior ModuleTag_04
GravityMult = 1.0
End
Behavior = SlowDeathBehavior ModuleTag_05
DeathTypes = ALL
SinkDelay = 5000
SinkRate = 10.0 ; in Dist/Sec - fast!
DestructionDelay = 1800
Sound = INITIAL GaladrielVoiceDie
Weapon = FINAL RingHeroDeathShockwave
End
Behavior = SquishCollide ModuleTag_06
;nothing
End
; Tie into LargeGroupAudio system
Behavior = LargeGroupAudioUpdate ModuleTag_LGAU
Key = Hero
End
Behavior = HitReactionBehavior HitReactionBehaviorModuleTag
HitReactionLifeTimer1 = 7 ; level 1 (light damage) hit reaction animations in frames (5 per sec)
HitReactionLifeTimer2 = 15 ; level 2 (medium damage) hit reaction animations in frames (5 per sec)
HitReactionLifeTimer3 = 10 ; level 3 (heavy damage) hit reaction animations in frames (5 per sec)
HitReactionThreshold1 = 0.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
End
Behavior = OCLSpecialPower ModuleTag_OCLSpawnTornado
SpecialPowerTemplate = SpecialPowerSpawnTornado
OCL = SUPERWEAPON_SpawnTornado
CreateLocation = CREATE_AT_LOCATION
AvailableAtStart = Yes
End
;///////////////////
; AISpecialPowers
;///////////////////
Behavior = AISpecialPowerUpdate GondorFighterHordeStanceBattle
CommandButtonName = Command_SetStanceBattle
SpecialPowerAIType = AI_SPECIAL_POWER_STANCEBATTLE
End
Behavior = AISpecialPowerUpdate GondorFighterHordeStanceAggressive
CommandButtonName = Command_SetStanceAggressive
SpecialPowerAIType = AI_SPECIAL_POWER_STANCEAGGRESSIVE
End
Behavior = AISpecialPowerUpdate GondorFighterHordeHoldGround
CommandButtonName = Command_SetStanceHoldGround
SpecialPowerAIType = AI_SPECIAL_POWER_STANCEHOLDGROUND
End
Behavior = AISpecialPowerUpdate SpawnTornadoAI
CommandButtonName = Command_SpecialPowerSpawnTornado
SpecialPowerAIType = AI_SPECIAL_POWER_TARGETAOE_SUMMON
SpecialPowerRadius = 30.0
End
Behavior = AISpecialPowerUpdate TerribleFuryAI
CommandButtonName = Command_SpecialAbilityTerribleFury
SpecialPowerAIType = AI_SPECIAL_POWER_BASIC_SELF_BUFF
End
Geometry = CYLINDER
GeometryMajorRadius = 8.0
GeometryHeight = 19.2
GeometryIsSmall = Yes
Shadow = SHADOW_DECAL
ShadowSizeX = 12
ShadowSizeY = 12
ShadowTexture = ShadowI
End
ChildObject ElvenGaladriel_RingHero ElvenGaladriel
; Player no longer has the ring hero upgrade when the hero is created.
Behavior = RemoveUpgradeUpgrade ModuleTag_RemoveRing
TriggeredBy = Upgrade_MenFaction Upgrade_ElfFaction Upgrade_DwarfFaction
UpgradeToRemove = Upgrade_RingHero Upgrade_FortressRingHero
RemoveFromAllPlayerObjects = Yes
SuppressEvaEventForRemoval = Yes ; this is to avoid the Eva event about 'Gollum stole our ring'
; when we are actually losing the upgrade because we built the ring heroine
End
; Spawn a dropped ring object.
Behavior = CreateObjectDie ModuleTag_DropTheRing
CreationList = OCL_TheOneRing
End
Behavior = ExperienceLevelCreate ModuleTag_LevelBonus
LevelToGrant = 10
MPOnly = No
End
;------- TERRIBLE FURY -------------------------------------------------------------------------------------
Behavior = SpecialPowerModule ModuleTag_GaladrielTerribleFury
SpecialPowerTemplate = SpecialAbilityScreech
UpdateModuleStartsAttack = Yes
;InitiateSound = GaladrielTerribleFurySFX ;this didn't work
SetModelCondition = ModelConditionState:USER_2
SetModelConditionTime = 3.2
DisableDuringAnimDuration = Yes
End
Behavior = SpecialAbilityUpdate ModuleTag_GaladrielTerribleFuryUpdate
SpecialPowerTemplate = SpecialAbilityScreech
UnpackTime = 1
AwardXPForTriggering = 0
TriggerSound = GaladrielVoiceTerribleFury
EffectRange = 200
UnpackTime = 100
PreparationTime = 1
PackTime = 3000
End
Behavior = ModelConditionUpgrade ModulTag_RingHeroMC
TriggeredBy = Upgrade_ObjectLevel1
AddConditionFlags = USER_1
End
Behavior = AutoHealBehavior ModuleTag_AutoHeal
StartsActive = Yes
HealingAmount = HERO_HEAL_AMOUNT
HealingDelay = 1000
StartHealingDelay = HERO_HEAL_DELAY
HealOnlyIfNotInCombat = Yes
End
; Leadership ---------------------------------------------------------------------------------------------------------------------
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_TheodenLeadership
SpecialPowerTemplate = SpecialAbilityFakeLeadership
TriggeredBy = Upgrade_ElrondLeadership
End
Behavior = SpecialPowerModule ModuleTag_TheodenLeadershipUpdate
SpecialPowerTemplate = SpecialAbilityFakeLeadership
UpdateModuleStartsAttack = No
StartsPaused = No
End
Behavior = AttributeModifierAuraUpdate ModuleTag_Leadership
StartsActive = No
BonusName = GenericHeroLeadership
TriggeredBy = Upgrade_ElrondLeadership
RefreshDelay = 2000
Range = 200
AntiCategory = BUFF
ObjectFilter = GENERIC_BUFF_RECIPIENT_OBJECT_FILTER
End
Behavior = DoCommandUpgrade Module_DoCommandStormQueen
TriggeredBy = Upgrade_ToggleStormQueen
GetUpgradeCommandButtonName = Command_StormQueen
End
Behavior = SpecialEnemySenseUpdate ModuleTag_GaladrielSeesHeroes
SpecialEnemyFilter = ANY +HERO ENEMIES
ScanRange = 30
ScanInterval = 2000
End
End