Jump to content


Imladhrim

Member Since 22 Dec 2006
Offline Last Active Jun 22 2008 08:52 PM

Topics I've Started

War of the Ring - BFMEII style?

12 June 2008 - 07:50 AM

Greetings!

I'm trying to change the war of the ring mode RotWK to be more like BFMEII ..
So every Unit/Hero you want to take with you into battle has to be build in the Living world map.. and all Units build in the RTS part have to stay there

So far I had no luck finding "the trigger"

If somebody could point me to it I'd be much obliged..
otherwise I'll have to duplicate all units to gain RTS- and Living World-build units.

But I think there HAS to be an easier way...

War of the Ring - how can I keep Inn and Miniheroes

04 June 2008 - 08:37 AM

Greetings!

I've tried to allow Miniherohordes like the Dwarven Zerkers or Elven Noldor Warriors to be kept after an RTS battle, but have failed so far.
I've made them buildable in the Worldmap by editing the livingworlds buildable units ini .. and I can take them into RTS from there.. but as soon as the battle finishes they are gone.
Also the unit limit of the Miniheroes won't work if I build them in the strategic map.

Any Pointers?
The next best thing would be for them to keep their XP.
Will I have to make them heroes?

Animal Companions

02 June 2008 - 09:19 AM

Greetings!

I'm now trying to create 2 animal companions for the Archer a Wolf (based on Angmar Direwolves)and a Hunting/Scouting Hawk (based on Gwaihir)
Right now I've simply created two new objects and slaved childobjects in the createaheroobjects.ini

[codebox]
//---------------------------------------------------------------------
//--------------------- Faithfull Huan ---------------------------
//---------------------------------------------------------------------

Object FaithfullHuan
; *** ART Parameters ***

; This is required for garrisoned objects - please put in all objects.
ButtonImage = BIWargSentry_Warg

SelectPortrait = KUDireWolfPortrait

Draw = W3DHordeModelDraw ModuleTag_01

OkToChangeModelColor = Yes

StaticModelLODMode = Yes
; specify options for static LODs
LodOptions = LOW
AllowMultipleModels = ALLOW_MULTIPLE_MODELS_LOW
MaxRandomTextures = MAX_RANDOM_TEXTURES_LOW
MaxRandomAnimations = MAX_RANDOM_ANIMATIONS_LOW
MaxAnimFrameDelta = MAX_ANIM_FRAME_DELTA_LOW
End

LodOptions = MEDIUM
AllowMultipleModels = ALLOW_MULTIPLE_MODELS_MED
MaxRandomTextures = MAX_RANDOM_TEXTURES_MED
MaxRandomAnimations = MAX_RANDOM_ANIMATIONS_MED
MaxAnimFrameDelta = MAX_ANIM_FRAME_DELTA_MED
End

LodOptions = HIGH
AllowMultipleModels = ALLOW_MULTIPLE_MODELS_HIGH
MaxRandomTextures = MAX_RANDOM_TEXTURES_HIGH
MaxRandomAnimations = MAX_RANDOM_ANIMATIONS_HIGH
MaxAnimFrameDelta = MAX_ANIM_FRAME_DELTA_HIGH
End



DefaultModelConditionState
Model = KUDireWolf_SKN
Skeleton = KUDireWolf_SKL
Model = KUDireWolfA_SKN ExtraMesh:Yes
End

; -------------- STUNNED ANIMS ----------------
AnimationState = PASSENGER
Animation = Grabbed
AnimationName = KUDireWolf_GBDA
AnimationMode = LOOP
End
End

AnimationState = FREEFALL
Animation = freefall
AnimationName = KUDireWolf_FLYA
AnimationMode = LOOP
AnimationBlendTime = 10
End
End

AnimationState = DYING BURNINGDEATH
Animation
AnimationName = KUDireWolf_DIEA
AnimationMode = ONCE
AnimationBlendTime = 10
End
End

AnimationState = DYING SPLATTED
Animation = splatted
AnimationName = KUDireWolf_LNDA
AnimationMode = ONCE
End
End

AnimationState = STUNNED_FLAILING
Animation = JustDie
AnimationName = KUDireWolf_FLYA
AnimationMode = LOOP
End
End

AnimationState = DYING
Animation
AnimationName = KUDireWolf_DIEA
AnimationMode = ONCE
End
Animation
AnimationName = KUDireWolf_DIEB
AnimationMode = ONCE
End
End

AnimationState = BURNINGDEATH
Animation
AnimationName = KUDireWolf_MFDA
AnimationMode = LOOP
Distance = 50
End
End

AnimationState = STUNNED_FLAILING
Animation
AnimationName = KUDireWolf_FLYA
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.4 0.6
End
End


AnimationState = STUNNED
Animation = Land
AnimationName = KUDireWolf_LNDA
AnimationMode = ONCE
End
End

AnimationState = STUNNED_STANDING_UP
Animation = StandUp
AnimationName = KUDireWolf_GTPA
AnimationMode = ONCE
End
End

; -------------- MOVING ANIMS ---------------
AnimationState = TURN_LEFT_HIGH_SPEED
Animation = MTurnLeft
AnimationName = KUDireWolf_TNL1
AnimationMode = LOOP
End
End

AnimationState = TURN_RIGHT_HIGH_SPEED
Animation = MTurnRight
AnimationName = KUDireWolf_TNR1
AnimationMode = LOOP
End
End

AnimationState = TURN_LEFT
Animation = TurnRight
AnimationName = KUDireWolf_TRNL
AnimationMode = LOOP
AnimationSpeedFactorRange = 2.0 2.0
End
End

AnimationState = TURN_RIGHT
Animation = TurnRight
AnimationName = KUDireWolf_TRNR
AnimationMode = LOOP
AnimationSpeedFactorRange = 2.0 2.0
End
End

AnimationState = MOVING ACCELERATE
Animation = Accelerate
AnimationName = KUDireWolf_ACCL
AnimationMode = ONCE
End
ParticleSysBone = None GenericSiegeTrailDust
End

AnimationState = MOVING DECELERATE
Animation = Decelerate
AnimationName = KUDireWolf_DECL
AnimationMode = ONCE
End
;ParticleSysBone = None GenericSiegeTrailDust
End

AnimationState = MOVING BACKING_UP
Animation = BackingUp
AnimationName = KUDireWolf_BAKA
AnimationMode = LOOP
End
End

AnimationState = MOVING
ShareAnimation = Yes
Animation = RunA
AnimationName = KUDireWolf_RUNA
AnimationMode = LOOP
End
;ParticleSysBone = None CalvaryDustTrails
Flags = RANDOMSTART
End

; ----------- ATTACKING ANIMS --------------
AnimationState = BETWEEN_FIRING_SHOTS_A
Animation = BetweenFiringShots
AnimationName = KUDireWolf_IDLA
AnimationMode = ONCE
AnimationBlendTime = 10
End
End

AnimationState = FIRING_OR_PREATTACK_A
Animation
AnimationName = KUDireWolf_ATKB
AnimationMode = LOOP
; UseWeaponTiming = Yes
AnimationBlendTime = 10
End
End

AnimationState = ATTACKING
Animation
AnimationName = KUDireWolf_ATKA
AnimationMode = LOOP
AnimationBlendTime = 10
End
Animation
AnimationName = KUDireWolf_ATKB
AnimationMode = LOOP
UseWeaponTiming = Yes
AnimationBlendTime = 10
End
End

; ----------- WAR CHANT ANIMS -------------
AnimationState = WAR_CHANT
Animation = Chant
AnimationName = KUDireWolf_TNTA
AnimationMode = LOOP
End
End

; ----------- EMOTION ANIMS ---------------
AnimationState = EMOTION_TAUNTING
Animation = TNTA
AnimationName = KUDireWolf_TNTA
AnimationMode = LOOP
End
End

AnimationState = EMOTION_CELEBRATING
Animation = CHRA
AnimationName = KUDireWolf_TNTA
AnimationMode = LOOP
End
End

; ----------- IDLE ANIMS ---------------
AnimationState = EMOTION_ALERT
StateName = STATE_Ready
Animation = ALERT
AnimationName = KUDireWolf_IDLA
AnimationMode = ONCE
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "Selected" then CurDrawableSetTransitionAnimState("Selected_to_Ready") end
EndScript
End

; ----------- SELECTED ANIMS --------------
AnimationState = SELECTED
SimilarRestart = Yes
Animation = AtAttention
AnimationName = KUDireWolf_ATNB
AnimationMode = LOOP
End
StateName = Selected
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "Idle" then CurDrawableSetTransitionAnimState("Idle_to_Selected") end
if Prev == "STATE_Ready" then CurDrawableSetTransitionAnimState("Ready_to_Selected") end
EndScript
End

IdleAnimationState
StateName = STATE_Idle
Animation = IDLB
AnimationName = KUDireWolf_IDLB
AnimationMode = ONCE
AnimationPriority = 20
AnimationSpeedFactorRange = 0.9 1.1
AnimationBlendTime = 15
End
Animation = IDLC
AnimationName = KUDireWolf_IDLC
AnimationMode = ONCE
AnimationPriority = 5
AnimationSpeedFactorRange = 0.9 1.1
AnimationBlendTime = 15
End
Animation = IDLD
AnimationName = KUDireWolf_IDLD
AnimationMode = ONCE
AnimationPriority = 1
AnimationSpeedFactorRange = 0.9 1.1
AnimationBlendTime = 15
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "Selected" then CurDrawableSetTransitionAnimState("Selected_to_Idle") end
EndScript
End

;------------ TRANSITION ANIMS ----------------
TransitionState = Selected_to_Idle
Animation = ATNE
AnimationName = KUDireWolf_ATNC
AnimationMode = ONCE
AnimationSpeedFactorRange = 0.7 1.3
End
End

TransitionState = Idle_to_Selected
Animation = ATND
AnimationName = KUDireWolf_ATNA
AnimationMode = ONCE
AnimationSpeedFactorRange = 0.7 1.3
End
End

End

Draw = W3DScriptedModelDraw DustEffects
DefaultModelConditionState
Model = None
End
IdleAnimationState
End
AnimationState = MOVING WADING
ParticleSysBone = None FootstepSlash
End
AnimationState = MOVING ACCELERATE
ParticleSysBone = None GenericSiegeTrailDust
End
;AnimationState = MOVING DECELERATE
; ParticleSysBone = None GenericSiegeTrailDust
;End
AnimationState = MOVING
End
End

#include "..\includes\StunDrawModuleMedium.inc"

; ***DESIGN parameters ***
;Side = Angmar
EditorSorting = UNIT
ThreatLevel = 1.0
TransportSlotCount = 0
Scale = 0.9

WeaponSet
Conditions = None
Weapon = PRIMARY DireWolfWeapon
End

ArmorSet
Conditions = None
Armor = AngmarDireWolfHeavyArmor
DamageFX = NormalDamageFX
End

; This is required so that the build phase lasts as long as the anim.
BuildFadeInOnCreateTime = 0

VisionRange = ANGMAR_DIREWOLF_VISION_RANGE
ShroudClearingRange = ANGMAR_DIREWOLF_SHROUD_RANGE

VisionSide = 35%
VisionRear = 25%

MaxVisionBonusPercent = 300%
VisionBonusTestRadius = 200
VisionBonusPercentPerFoot = 2.0%

BountyValue = 10
DisplayName = OBJECT:AngmarDireWolf
CrushableLevel = 2 ; What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
CommandSet = AngmarDireWolfCommandSet
CommandPoints = 0


; ******************************************* AUDIO Parameters ***********************************;
VoiceSelect = NeutralWargVoxSelect
VoiceMove = NeutralWargVoxMove
VoiceAttack = NeutralWargVoxAttack
;
;
SoundAmbient = WargAmbienceVOX
SoundImpact = ImpactHorse
;SoundMoveLoop = WargMoveFootsteps
;SoundCrushing = WargRiderCrushing ; Sound made when crushing another unit underhoof
;
;#include "..\includes\StandardUnitEvaEvents.inc"
;
; EvaEnemyObjectSightedEvent = WargRiderCreepSighted ; Special event for wargs showing up. Helps distinguish the real enemies from random creeps
; EvaEnemyObjectSightedAfterRespawnEvent = WargRiderCreepSighted ; Event to run after the Cave Troll Lair is respawned. WARNING: This INI field only works for "SlavedUpdate.UseSlaverAsControlForEvaObjectSightedEvents = Yes" units
; ;EvaEventDieOwner = GroupWargRiderDie ; Eva event to trigger on unit's death. NOTICE THAT this is only for permanent deaths
; ; For deaths you can respawn from, use the DeathFX
;
ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
MaxUpdateRangeCap = 800
AnimationSound = Sound:WargMoveFootsteps Animation:KUDireWolf_RUNA Frames:0
AnimationSound = Sound:WargMoveFootsteps Animation:KUDireWolf_TNL1 Frames:0
AnimationSound = Sound:WargMoveFootsteps Animation:KUDireWolf_TNR1 Frames:0
AnimationSound = Sound:WargMoveFootsteps Animation:KUDireWolf_TRNL Frames:0
AnimationSound = Sound:WargMoveFootsteps Animation:KUDireWolf_TRNR Frames:0
AnimationSound = Sound:WargMoveFootsteps Animation:KUDireWolf_ACCL Frames:0
; AnimationSound = Sound:WargRiderTauntCallouts Animation:KUDireWolf_TNTA Frames:27
AnimationSound = Sound:NeutralWargVoxAttack Animation:KUDireWolf_TNTA Frames:26 Animation:KUDireWolf_ATND Frames:7 Animation:KUDireWolf_HWLA Frames:17
AnimationSound = Sound:WargTauntFootstep Animation:KUDireWolf_TNTA Frames:7 12 64 73
; ;AnimationSound = Sound:WargSaddleFoleySingles Animation:KUDireWolf_TNTA Frames:25 Animation:KUDireWolf_RUNA Frames:5 Animation:KUDireWolf_TNL1 Frames:5 Animation:KUDireWolf_TNR1 Frames:5 Animation:KUDireWolf_ACCL Frames:5 Animation:KUDireWolf_ATNA Frames:5 Animation:KUDireWolf_ATND Frames:5 Animation:KUDireWolf_GTPA Frames:5 101 Animation:KUDireWolf_HWLA Frames:15 Animation:KUDireWolf_RDYA Frames:5 Animation:KUDireWolf_RDYB Frames:5
End
;
Behavior = LargeGroupAudioUpdate ModuleTag_LGAU
Key = Warg
End


; *** ENGINEERING Parameters ***

RadarPriority = UNIT
ThingClass = HORDE_UNIT

KindOf = PRELOAD CAN_CAST_REFLECTIONS INFANTRY SCORE GRAB_AND_DROP

Body = ActiveBody BodyModuleTag
CheerRadius = EMOTION_CHEER_RADIUS
MaxHealth = 3000 ;BALANCE Warg Health
MaxHealthDamaged = ANGMAR_DIREWOLF_HEALTH_DAMAGED
BurningDeathBehavior = Yes
BurningDeathFX = FX_CavalryBurningFlame
End


Behavior = AIUpdateInterface ModuleTag_03
AutoAcquireEnemiesWhenIdle = Yes ;ATTACK_BUILDINGS
AILuaEventsList = WargRiderFunctions
BurningDeathTime = BURNINGDEATH_DURATION_CAVALRY
End

LocomotorSet
Locomotor = WargLocomotor
Condition = SET_NORMAL
Speed = 50
End

Behavior = PhysicsBehavior ModuleTag_04
GravityMult = 1.0
ShockStandingTime = 2533 ;msec
End

; IsengardWargRider
Behavior = HordeMemberCollide ModuleTag_HMC
;nothing
End

Behavior = SquishCollide ModuleTag_06
;nothing
End

Behavior = SlowDeathBehavior ModuleTag_08
DeathTypes = ALL
SinkDelay = 5000
SinkRate = 1.50 ; in Dist/Sec
DestructionDelay = 8000
Sound = INITIAL WargVoxDie
End

Geometry = CYLINDER
GeometryMajorRadius = 8
GeometryMinorRadius = 8
GeometryHeight = 20.0
GeometryIsSmall = Yes

Shadow = SHADOW_DECAL
ShadowSizeX = 30;
ShadowSizeY = 20;
ShadowTexture = ShadowI;

End


//-----------------------------------------------------------------------------------------
ChildObject FaithfullHuan_Slaved FaithfullHuan
// ***DESIGN parameters ***
VisionRange = WILD_SPIDERLING_SLAVED_VISION_RANGE
ShroudClearingRange = WILD_SPIDERLING_SLAVED_SHROUD_RANGE
BountyValue = SHROUD_CLEAR_STANDARD //WILD_SPIDERLING_SLAVED_BOUNTY_VALUE

KindOf = PRELOAD CAN_CAST_REFLECTIONS CAVALRY SCORE GRAB_AND_DROP PATH_THROUGH_EACH_OTHER

VisionSide = 100%
VisionRear = 100%

CommandPoints = 0

LocomotorSet
Locomotor = WargLocomotor
Condition = SET_NORMAL
Speed = NORMAL_MOUNTED_FAST_MEMBER_SPEED
End

WeaponSet
Conditions = None
Weapon = PRIMARY DireWolfWeapon
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
End

ArmorSet
Conditions = None
Armor = AngmarDireWolfArmor
DamageFX = NormalDamageFX
End

Body = ActiveBody ModuleTag_Body
MaxHealth = ANGMAR_DIREWOLF_HEALTH
MaxHealthDamaged = ANGMAR_DIREWOLF_HEALTH_DAMAGED
BurningDeathBehavior = Yes
BurningDeathFX = FX_InfantryBurningFlame
End

Behavior = SlavedUpdate ModuleTag_Slave
LeashRange = 300
GuardMaxRange = 0
GuardWanderRange = 50
AttackRange = 200
UseSlaverAsControlForEvaObjectSightedEvents = No // Not a creep
GuardPositionOffset = X:55 Y:0 Z:0
FadeOutRange = 0
FadeTime = 1000 //in msec
DieOnMastersDeath = Yes //Die when my master dies!
End

Geometry = CYLINDER
GeometryMajorRadius = 8
GeometryMinorRadius = 8
GeometryHeight = 20.0
GeometryIsSmall = Yes

Shadow = SHADOW_DECAL
ShadowSizeX = 30;
ShadowSizeY = 20;
ShadowTexture = ShadowI;

Scale = .75
End

;-----------------------------------------------------------------------------
; Hunting Hawk
;-----------------------------------------------------------------------------
Object HuntingHawk
ShockwaveResistance = SHOCKWAVE_RESISTANCE_ALWAYS

Scale = 0.8

; *** ART Parameters ***

SelectPortrait = HPGwahir
ButtonImage = HIGwahir

Draw = W3DScriptedModelDraw ModuleTag_01Hawk

OkToChangeModelColor = Yes

StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD

ExtraPublicBone = B_Passenger

DefaultModelConditionState
Model = GUGwaihir_SKN
Skeleton = GUGwaihir_SKL
End

ModelConditionState = USER_3
Model = GUGwaihir_SKN
Texture = GUGwaihir.tga GUGwaihir_White.tga
End

IdleAnimationState
StateName = Idle
Animation = FlyB
AnimationName = GUGwaihir_HVRA
AnimationMode = LOOP
AnimationBlendTime = 10

End
End



AnimationState STUNNED SPECIAL_DAMAGED
StateName = STUNNED
Animation = HitB
AnimationName = GUGwaihir_HITB
AnimationMode = ONCE
AnimationBlendTime = 6
End
End
AnimationState STUNNED
Animation = HitB
AnimationName = GUGwaihir_HITA
AnimationMode = ONCE
AnimationBlendTime = 6
End
End


AnimationState = BACKING_UP
StateName = backup
Animation = FlyB
AnimationName = GUGwaihir_FLYB
AnimationMode = LOOP
AnimationBlendTime = 9
End
End

AnimationState = DIVING
StateName = Diving
Animation = DiveA
AnimationName = GUGwaihir_DIVA
AnimationMode = LOOP
AnimationBlendTime = 9
End
End

AnimationState = ABOUT_TO_HIT ; clawing
StateName = Claw
Animation = Claw
AnimationName = GUGwaihir_ATKB
AnimationMode = LOOP
AnimationBlendTime = 9
End
End

;--- HARD FLAPPING ------------------------
AnimationState = CLIMBING
StateName = Climbing
Animation = FlyB(climb)
AnimationName = GUGwaihir_FLYB
AnimationMode = LOOP
AnimationBlendTime = 9
AnimationSpeedFactorRange = 1.5 1.55
End
End
AnimationState = FREEFALL
StateName = Freefall
Animation = Freefall(ilde)
AnimationName = GUGwaihir_IDLA
AnimationMode = LOOP
AnimationBlendTime = 9
AnimationSpeedFactorRange = 0.7 0.75
End
End


AnimationState = MOVING
StateName = Moving
Animation = FLYA
AnimationName = GUGwaihir_FLYA
AnimationMode = LOOP
AnimationBlendTime = 12
End

BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "Idle" then CurDrawableSetTransitionAnimState("Trans_Begin_Moving") return end
EndScript
End
TransitionState = Trans_Begin_Moving
Animation = Transition
AnimationName = GUGwaihir_HVRC
AnimationMode = ONCE
AnimationBlendTime = 4
End
End

TransitionState = Trans_Dying
Animation = Transition
AnimationName = GUGwaihir_DIED
AnimationMode = ONCE
AnimationBlendTime = 9
End
End


AnimationState = DYING DEATH_1
StateName = DYING
Animation = DyingA
AnimationName = GUGwaihir_DIEE
AnimationMode = LOOP
AnimationBlendTime = 9
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "Idle" then CurDrawableSetTransitionAnimState("Trans_Dying") return end
if Prev == "Moving" then CurDrawableSetTransitionAnimState("Trans_Dying") return end
EndScript
End

AnimationState = DYING DEATH_2
StateName = DYING
Animation = DyingA
AnimationName = GUGwaihir_HVRA
AnimationMode = LOOP
AnimationBlendTime = 9
End
End

End

; ***DESIGN parameters ***
Side = Neutral
EditorSorting = UNIT
ThreatLevel = 1
ThingClass = LARGE_MONSTER
TransportSlotCount = TRANSPORTSLOTCOUNT_NOT_TRANSPORTABLE

WeaponSet
Conditions = None
Weapon = PRIMARY EagleGrabAttack
PreferredAgainst = PRIMARY INFANTRY THROWN_OBJECT CAVALRY

Weapon = SECONDARY EagleClawAttack
OnlyAgainst = SECONDARY MONSTER

Weapon = TERTIARY EaglePlowAttack
PreferredAgainst = TERTIARY STRUCTURE MACHINE HORDE

Weapon = QUATERNARY EagleClawWyrmAttack
PreferredAgainst = QUATERNARY CLEANUP_HAZARD ; Used as a user defined kindof, only the wyrm uses it.
End

ArmorSet
Conditions = None
Armor = EagleArmor
DamageFX = GwaihirDamageFX
End

VisionRange = 250
ShroudClearingRange = 400

BountyValue = 0
DisplayName = OBJECT:GondorGwiegher

CrusherLevel = 1 ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
RamPower = 15;
RamZMult = 0.5;
CommandSet = GwaihirCommandSet
CommandPoints = 0


; *** AUDIO Parameters ***;

VoiceAttack = EagleVoiceAttack
VoiceMove = EagleVoiceMove
VoicePriority = 60
VoiceSelect = EagleVoiceSelect
VoiceGuard = EagleVoiceMove

SoundAmbient = EagleAmbienceVoice
SoundImpact = ImpactHorse


#include "..\includes\StandardUnitEvaEvents.inc"

ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehaviorHawk
MaxUpdateRangeCap = 800
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_FLYA Frames: 2
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_FLYB Frames: 2
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_FLYC Frames: 2 63
;AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_FLYC Frames: 4 34

AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_HVRA Frames: 4
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_HVRC Frames: 4

AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_HITA Frames: 0
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_HITB Frames: 0

AnimationSound = Sound: EagleHurt Animation:GUGwaihir_SKL.GUGWAIHIR_HITA Frames: 1
AnimationSound = Sound: EagleHurt Animation:GUGwaihir_SKL.GUGWAIHIR_HITB Frames: 1
AnimationSound = Sound: EagleHurt Animation:GUGwaihir_SKL.GUGWAIHIR_DIED Frames: 1

AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_ATKB Frames: 0
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_GRBB Frames: 0

AnimationSound = Sound: EagleAttack Animation:GUGwaihir_SKL.GUGWAIHIR_ATKB Frames: 1
AnimationSound = Sound: EagleAttack Animation:GUGwaihir_SKL.GUGWAIHIR_GRBB Frames: 1

AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_DIED Frames: 0
AnimationSound = Sound: TrollBodyfall Animation:GUGwaihir_SKL.GUGWAIHIR_DIEF Frames: 2
AnimationSound = Sound: EagleWingFlaps Animation:GUGwaihir_SKL.GUGWAIHIR_DIEF Frames: 0
End

; *** ENGINEERING Parameters ***
RadarPriority = UNIT
KindOf = PRELOAD CAN_CAST_REFLECTIONS SCORE NO_FREEWILL_ENTER MONSTER ;SCARY CANNOT_RETALIATE HERO SELECTABLE



Body = ActiveBody ModuleTag_02Hawk
CheerRadius = EMOTION_CHEER_RADIUS
MaxHealth = 2000
HealingBuffFx = None
End

Behavior = AutoHealBehavior ModuleTag_HawkHealing
StartsActive = Yes
HealingAmount = 500
HealingDelay = 1000
StartHealingDelay = 5000
HealOnlyIfNotInCombat = Yes
End

Behavior = GiantBirdAIUpdate ModuleTag_GiantBirdAIHawk
AutoAcquireEnemiesWhenIdle = Yes ;ATTACK_BUILDINGS
MoodAttackCheckRate = 500
AILuaEventsList = GwaihirFunctions

FollowThroughDistance = 160
FollowThroughCheckStep = 50
FollowThroughGradient = 1.0

GrabTossTimeTrigger = 1.0
GrabTossHeightTrigger = 3.0
TossFX = FX_DiebyFalling
SpecialContactPoints = Swoop

AttackPriority = AttackPriority_Eagle
End

Behavior = ModelConditionUpgrade ModuleTag_All_FactionUpgradeHawk
TriggeredBy = Upgrade_AllFactionUpgrade
AddConditionFlags = USER_3
Permanent = Yes
End

LocomotorSet
Locomotor = FellBeastLocomotor ;BALANCE Gwaihir
Condition = SET_NORMAL
Speed = 100
End
LocomotorSet
Locomotor = FellBeastLocomotor ;BALANCE Gwaihir
Condition = SET_SUPERSONIC
Speed = 214
End
LocomotorSet
Locomotor = FellBeastLocomotor ; BALANCE Gwaihir
Condition = SET_WANDER
Speed = 78
End


Behavior = PhysicsBehavior ModuleTag_04Hawk
End

Behavior = NotifyTargetsOfImminentProbableCrushingUpdate ModuleTag_NotifyCrushScanHawk
End


Behavior = TransportContain TransportContainModuleTagHawk
ObjectStatusOfContained = UNSELECTABLE UNATTACKABLE
PassengerFilter = ANY +INFANTRY +HULK +CAVALRY +GRAB_AND_DROP -HERO -PORTER
Slots = 1
ShowPips = No
CanGrabStructure = Yes
AllowEnemiesInside = Yes
AllowNeutralInside = Yes
AllowAlliesInside = No
DamagePercentToUnits = 100%
KillPassengersOnDeath = Yes
PassengerBonePrefix = PassengerBone:B_Passenger KindOf:GRAB_AND_DROP
GrabWeapon = FellbeastGrabWeapon ; fire this weapon when eagle grabs a victim
FireGrabWeaponOnVictim = No

ReleaseSnappyness = 0.05 ; 1.0 is very snappy, 0.0 is very loose
End

Behavior = SquishCollide ModuleTag_06Hawk
;nothing
End

Behavior = SlowDeathBehavior ModuleTag_SlowDeathHawk
DeathTypes = ALL -FADED
FadeDelay = 0
FadeTime = 1500
DestructionDelay = 1500
Sound = INITIAL EagleVoiceDie
DeathFlags = DEATH_1
End

Behavior = SlowDeathBehavior ModuleTag_FadeDeathHawk
DeathTypes = NONE +FADED
FadeDelay = 0
FadeTime = 1500
DestructionDelay = 1500
Sound = INITIAL EagleVoiceDie
DeathFlags = DEATH_2
End

Behavior = DualWeaponBehavior ModuleTag_10Hawk
SwitchWeaponOnCloseRangeDistance = 24
End

FormationPreviewDecal
Texture = FPflyingUnitDecal
Width = 128
Height = 128
End


/////////////////////
// AISpecialPowers
/////////////////////

Behavior = SpecialPowerModule ModuleTag_CreateAHeroWTrueSightStarter // SpecialAbility is a SpecialPower, SpecialPower is anyting special
SpecialPowerTemplate = SpecialAbilityCreateAHeroWTrueSight
StartsPaused = No
End

Behavior = StealthDetectorUpdate ModuleTag_CreateAHeroWTrueSightUpdate
DetectionRange = 1800 // range to detect
DetectionRate = 100 // how often to rescan for stealthed things in my sight (msec)
CancelOneRingEffect = Yes // forces uses of one-ring to pop out of it
InitiallyDisabled = No
End

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


Geometry = CYLINDER
GeometryMajorRadius = 30.0
GeometryMinorRadius = 30.0
GeometryHeight = 16.0
GeometryIsSmall = No

HealthBoxScale = 3.0
HealthBoxHeightOffset = 25.0

Shadow = SHADOW_VOLUME_NON_SELF_3 // volumetric shadow that doesn't cast onto all objects using SHADOW_VOLUME_NON_SELF_3
ShadowSunAngle = 89 // clamp the angle so shadow casts straight down.
End


//---------------------------------------------------------------------
ChildObject HuntingHawk_Slaved HuntingHawk

RadarPriority = UNIT
KindOf = PRELOAD CAN_CAST_REFLECTIONS SCORE NO_FREEWILL_ENTER MONSTER ;SCARY CANNOT_RETALIATE HERO SELECTABLE
ShockwaveResistance = SHOCKWAVE_RESISTANCE_ALWAYS
Scale = 0.1

VisionRange = 200
ShroudClearingRange = 350
BountyValue = 0
CommandPoints = 0
VisionSide = 100%
VisionRear = 100%

LocomotorSet
Locomotor = FellBeastLocomotor ;BALANCE Gwaihir
Condition = SET_NORMAL
Speed = 100
End
LocomotorSet
Locomotor = FellBeastLocomotor ;BALANCE Gwaihir
Condition = SET_SUPERSONIC
Speed = 214
End
LocomotorSet
Locomotor = FellBeastLocomotor ; BALANCE Gwaihir
Condition = SET_WANDER
Speed = 78
End

Body = ActiveBody ModuleTag_02Hawk
CheerRadius = EMOTION_CHEER_RADIUS
MaxHealth = 2000
HealingBuffFx = None
End

Behavior = AutoHealBehavior ModuleTag_HawkHealing
StartsActive = Yes
HealingAmount = 500
HealingDelay = 1000
StartHealingDelay = 5000
HealOnlyIfNotInCombat = Yes
End

WeaponSet
Conditions = None
Weapon = PRIMARY EagleGrabAttack
PreferredAgainst = PRIMARY INFANTRY THROWN_OBJECT CAVALRY

Weapon = SECONDARY EagleClawAttack
OnlyAgainst = SECONDARY MONSTER

Weapon = TERTIARY EaglePlowAttack
PreferredAgainst = TERTIARY STRUCTURE MACHINE HORDE

Weapon = QUATERNARY EagleClawWyrmAttack
PreferredAgainst = QUATERNARY CLEANUP_HAZARD ; Used as a user defined kindof, only the wyrm uses it.
End

ArmorSet
Conditions = None
Armor = EagleArmor
DamageFX = GwaihirDamageFX
End


Behavior = SlavedUpdate ModuleTag_Slave
LeashRange = 300
GuardMaxRange = 0
GuardWanderRange = 50
AttackRange = 200
UseSlaverAsControlForEvaObjectSightedEvents = No // Not a creep
GuardPositionOffset = X:55 Y:0 Z:0
FadeOutRange = 0
FadeTime = 1000 //in msec
DieOnMastersDeath = Yes //Die when my master dies!
End

Geometry = CYLINDER
GeometryMajorRadius = 8
GeometryMinorRadius = 8
GeometryHeight = 20.0
GeometryIsSmall = Yes

Shadow = SHADOW_DECAL
ShadowSizeX = 30;
ShadowSizeY = 20;
ShadowTexture = ShadowI;

End
[/codebox]


The animals are supposed to follow my CAH and respawn after some time if they get killed.. they are supposed to engage nearby enemies as well
Right now I've simply copied the spawn codes from the angmarkennelexpansion into the createahero.ini

[codebox]
Behavior = ProductionUpdate ProductionUpdateModuleTag2
End

Behavior = QueueProductionExitUpdate ModuleTag_FaithfullHuan
UnitCreatePoint = X:10.0 Y:15.0 Z:0.0
NaturalRallyPoint = X:50.0.0 Y:0.0 Z:0.0
ExitDelay = 3000 ;STANDARD_HORDE_EXIT_DELAY
End
Behavior = SpawnBehavior ModuleTag_SpawnFighters
SpawnNumber = 1
InitialBurst = 0
SpawnTemplateName = FaithfullHuan_Slaved
SpawnReplaceDelay = 9000
FadeInTime = 1000
End

Behavior = ProductionUpdate ProductionUpdateModuleTagHwak
End
Behavior = QueueProductionExitUpdate ModuleTag_Hawk
UnitCreatePoint = X:20.0 Y:0.0 Z:15.0
NaturalRallyPoint = X:50.0.0 Y:0.0 Z:15.0
ExitDelay = 3300 ;STANDARD_HORDE_EXIT_DELAY
End
Behavior = SpawnBehavior ModuleTag_SpawnHawk
SpawnNumber = 1
InitialBurst = 0
SpawnTemplateName = HuntingHawk_Slaved
SpawnReplaceDelay = 9000
FadeInTime = 1000
End
[/codebox]

It's almost working right allready

The only problems I've encountered so far are:

1. Somtimes the Hawk will swoop down but won't attack, hit anything .. instead he just stayes low and follows the enemie unit wherever they go even if they stand still he won't hit..
in this state he also won't respond to the leash limitation and simply follow them all over the map

2. I still need tie those companions to upgrades, skills

3. if I attack anything the Animals return to their idle states.. instead of attacking what I'm attacking.
Is there a way to make the guard me, or at least to attack while I'm attacking?

any input is much appreciated :thumbsupsmiley:

Behavior = DamageFieldUpdate problem

31 May 2008 - 05:49 PM

The strangest thing happened to me.. one of the little Experiments I did in my mod a year ago doesn't work anymore.
In short: an upgrade obtained by my hero is supposed to activate a "weapon" (once) which fires an OCL_Nugget, (which in turn will deactivate an upgrade somewhere else)
(more details and all code regarding to this can be seen in this tutorial I did a year ago .. and it did work back then)

Can anyone tell me what might be the problem.. or point me to an alternative solution?

here is the code in question:
(the ocl works, the upgrade triggering the weapon is in place, but the weapon doesn't fire)

createahero.ini
[codebox] Behavior = DamageFieldUpdate ModuleTag_BlessedHackWeapon
RequiredUpgrade = Upgrade_CreateAHeroBlessedOfValinor
FireWeaponNugget
WeaponName = BlessedWindWeapon
FireDelay = 0
OneShot = Yes
End
End
[/codebox]


weapons.ini

[codebox]
Weapon BlessedWindWeapon
RadiusDamageAffects = ENEMIES NEUTRALS
DelayBetweenShots = 0
ClipSize = 0

WeaponOCLNugget
WeaponOCLName = OCL_UnBlessedHack
End
End
[/codebox]