Jump to content


Photo

Bofur's Questions/Coding Woes :p

bofur coding mod questions

  • Please log in to reply
67 replies to this topic

#21 Bofur

Bofur

    The Bolicious One

  • Hosted
  • 1,766 posts
  • Location:England
  • Projects:Age of the Firstborn
  •  The Bolicious T3A Team Chamber Member

Posted 23 February 2013 - 07:47 AM

And redoing the asset didn't work. It weirdly didn't increase in size either...


left64_by_obsidianlake-d5ruayp.pngAotF.pngright64_by_obsidianlake-d5ruf44.png


#22 Bofur

Bofur

    The Bolicious One

  • Hosted
  • 1,766 posts
  • Location:England
  • Projects:Age of the Firstborn
  •  The Bolicious T3A Team Chamber Member

Posted 26 February 2013 - 09:43 PM

And... Oh great :p

While fiddling with the asset, the assetcachebuilder has now decided to downsize my asset from 56 to 35kb. I had a back up, but as of then, it now only makes 35kb assets, from what I had before (Near enough). All the new Compiledtextures come up pink, while the textures and w3d stuff are fine. Any ideas? Or I'm stuffed :p


left64_by_obsidianlake-d5ruayp.pngAotF.pngright64_by_obsidianlake-d5ruf44.png


#23 Lauri

Lauri

    Old man Lauri

  • Hosted
  • 10,436 posts
  • Location:Norway
  • Projects:The 4th Age
  •  The very worst T3A Team Chamber Member

Posted 26 February 2013 - 09:57 PM

Do you run it directly via assetcachebuilder?

Don't. Make a .bat file, and code this in:

@move art\textures art\textures_pdiddy
@move art\compiledtextures art\textures
@assetcachebuilder.exe
@move art\textures art\compiledtextures
@move art\textures_pdiddy art\textures

Then run that one.


T4A_Logo_-_article.png

The 4th Age version 0.8 has been released: Link


#24 Bofur

Bofur

    The Bolicious One

  • Hosted
  • 1,766 posts
  • Location:England
  • Projects:Age of the Firstborn
  •  The Bolicious T3A Team Chamber Member

Posted 27 February 2013 - 07:28 AM

That didn't work, but moving the compiledtextures manually did... Lucky I do the asseting in a different folder to the mod, or it could get tiresome, moving it all of the time...


left64_by_obsidianlake-d5ruayp.pngAotF.pngright64_by_obsidianlake-d5ruf44.png


#25 Lauri

Lauri

    Old man Lauri

  • Hosted
  • 10,436 posts
  • Location:Norway
  • Projects:The 4th Age
  •  The very worst T3A Team Chamber Member

Posted 27 February 2013 - 11:05 AM

Well, moving it for you is exactly what the above script does. I never have to worry. If I ever get pink stuff in-game, I delete the asset.dat and run the program again.

 

And if you have and .big files in the same folder, you might get trouble. I usually do. So remove them before you make the asset.dat.


T4A_Logo_-_article.png

The 4th Age version 0.8 has been released: Link


#26 Bofur

Bofur

    The Bolicious One

  • Hosted
  • 1,766 posts
  • Location:England
  • Projects:Age of the Firstborn
  •  The Bolicious T3A Team Chamber Member

Posted 11 March 2013 - 02:06 PM

Right. Stupidity Time. 1.5 years ago, I managed to code this in, when I knew zilch about coding. Guess what? I've forgotten how I did it, and spent hours trying yesterday.  And even better, it was not transferred over to this computer. So... the problem...

 

Trying to make the thrallmaster, in an Umbar faction, summon Haradrim Lancers and Archers, while keeping the thrall master in the default position. I looked around, and couldn't really find anything on the subject. Any ideas? 


Edited by Bofur, 11 March 2013 - 02:07 PM.

left64_by_obsidianlake-d5ruayp.pngAotF.pngright64_by_obsidianlake-d5ruf44.png


#27 Ridder Geel

Ridder Geel

    Master Yelloh

  • T3A Staff
  • 10,852 posts
  • Location:The Netherlands (AKA: Holland)
  • Projects:RC Mod + SEE + RTS Engine
  •  The Dangerous T3A Team Chamber Member
  • Division:BFME
  • Job:T3A Staff

Posted 14 March 2013 - 08:23 AM

Thrall master.. from what i see its fairly easy:

	//Summon Orc Warriors
	Behavior = DoCommandUpgrade ModuleTag_UpgradeOrcWarriors
		TriggeredBy = Upgrade_ThrallMasterOrcWarriors
		GetUpgradeCommandButtonName = Command_SpecialAbilityAngmarThrallMasterSummonOrc
	End

 	Behavior = SpecialPowerModule ModuleTag_SummoOrcsStarter
 		SpecialPowerTemplate		= SpecialAbilityAngmarThrallMasterSummonOrc
 		UpdateModuleStartsAttack	= Yes
 		StartsPaused			= No
		TriggerFX			= FX_ThrallSummon
 	End
	
	Behavior = SummonReplacementSpecialAbilityUpdate ModuleTag_SummonOrcs
		SpecialPowerTemplate    	= SpecialAbilityAngmarThrallMasterSummonOrc
		UnpackTime              	= 1000									; Drawing the horn
		PreparationTime        		= 1000									; Blowing
		PersistentPrepTime     	 	= 0									; nothing
		PackTime                	= 0									; nothing
		AwardXPForTriggering    	= 0
 		MountedTemplate			= AngmarOrcWarriors
 		IgnoreFacingCheck		= Yes
		MustFinishAbility		= Yes
	End

So you need to create an mounted horde which is the MountedTemplate, in this case AngmarOrcWarriors.

The thrallmaster will be replaced by this horde... So... simple as that if you know how to make a horde :p

I'd say look at the horde, copy paste and edit some code, and it should work :D


Ridder Geel

#28 Bofur

Bofur

    The Bolicious One

  • Hosted
  • 1,766 posts
  • Location:England
  • Projects:Age of the Firstborn
  •  The Bolicious T3A Team Chamber Member

Posted 14 March 2013 - 02:00 PM

Thanks RG, it looks so easy now :p

Should not take too long...


left64_by_obsidianlake-d5ruayp.pngAotF.pngright64_by_obsidianlake-d5ruf44.png


#29 Bofur

Bofur

    The Bolicious One

  • Hosted
  • 1,766 posts
  • Location:England
  • Projects:Age of the Firstborn
  •  The Bolicious T3A Team Chamber Member

Posted 15 May 2013 - 07:32 AM

Well, I'm back. Anyone know if it's possible to have the old, BFME1 style spell book back? Is it just as simple as removing a few powers from the factions' spell book, or is it harder than that?

left64_by_obsidianlake-d5ruayp.pngAotF.pngright64_by_obsidianlake-d5ruf44.png


#30 Ridder Geel

Ridder Geel

    Master Yelloh

  • T3A Staff
  • 10,852 posts
  • Location:The Netherlands (AKA: Holland)
  • Projects:RC Mod + SEE + RTS Engine
  •  The Dangerous T3A Team Chamber Member
  • Division:BFME
  • Job:T3A Staff

Posted 15 May 2013 - 08:44 PM

Fairly much like that yes, and changing the apt's so that they are the bfme 1 ones :p

At least, thats the theory, now if the bfme 1 apts are compatible with bfme 2 thats the question :p


Edited by Ridder Geel, 15 May 2013 - 08:44 PM.

Ridder Geel

#31 Bofur

Bofur

    The Bolicious One

  • Hosted
  • 1,766 posts
  • Location:England
  • Projects:Age of the Firstborn
  •  The Bolicious T3A Team Chamber Member

Posted 07 June 2013 - 11:11 AM

So, where should the files such as SpellStore.apt, .const and .dat go, if you're using the -mod command? In a folder named apt in the same folder as art, data, etc. or in somewhere else?

left64_by_obsidianlake-d5ruayp.pngAotF.pngright64_by_obsidianlake-d5ruf44.png


#32 Ridder Geel

Ridder Geel

    Master Yelloh

  • T3A Staff
  • 10,852 posts
  • Location:The Netherlands (AKA: Holland)
  • Projects:RC Mod + SEE + RTS Engine
  •  The Dangerous T3A Team Chamber Member
  • Division:BFME
  • Job:T3A Staff

Posted 10 June 2013 - 11:22 AM

I believe in none of the folders, so simply in the "root" directory :) (where art, data & the rest is) :p


Ridder Geel

#33 Bofur

Bofur

    The Bolicious One

  • Hosted
  • 1,766 posts
  • Location:England
  • Projects:Age of the Firstborn
  •  The Bolicious T3A Team Chamber Member

Posted 13 June 2013 - 11:03 AM

Ah, thank you.

I've hit another problem, my Carn Dûm Knights are not using their death anims, but stop and fade out.

Here's the code for the Model and Anims:

;;====================== MODELS ================================================================
		;-----Spear-----
		DefaultModelConditionState
			Model				= kucarnrid_skn
		End

;;================== ANIMATIONS =================================================================
		
		;---------------------------------------------
		;-----------------Spear Anims-----------------
		;---------------------------------------------
		IdleAnimationState
			StateName				=	Idle
			Animation				=	IdleB
				AnimationName		=	RURohrm_SKL.RURohrm_IDLB
				AnimationMode		=	ONCE
				AnimationBlendTime	=	15
			End
			BeginScript
				Prev = CurDrawablePrevAnimationState()
				if Prev == "State_Selected" then
					CurDrawableSetTransitionAnimState("TRANS_Selected_To_Idle")
				elseif Prev == "State_PuttingBowAway" then
					CurDrawableSetTransitionAnimState("TRANS_BowAway_To_Idle")
				end
			EndScript
		End
						
				AnimationState				=	PASSENGER
			Animation			=	grabbed
				AnimationName		=	RURohrm_SKL.RURohrm_GBDA
				AnimationMode		=	LOOP
			End
		End
		
		; --- stunned anims
		AnimationState				=	FREEFALL 
			Animation			=	free fall
				AnimationName		=	RURohrm_SKL.RURohrm_FLYB
				AnimationMode		=	LOOP
				AnimationBlendTime	=	10
			End
		End
		
		AnimationState				=	STUNNED_FLAILING 
			Animation			=	JustDie
				AnimationName		=	RURohrm_SKL.RURohrm_FLYC
				AnimationMode		=	LOOP
			End
			Flags				=	RANDOMSTART
		End

		AnimationState				= 	DYING BURNINGDEATH
			Animation
				AnimationName		= 	RURohrm_SKL.RURohrm_DIEA
				AnimationMode		= 	ONCE
				AnimationBlendTime	= 	10
			End
		End

		; This is the no-spawn-horse type of death
		AnimationState				=	DYING DEATH_1 SPLATTED
			Animation			=	splatted
				AnimationName		=	RURohrm_SKL.RURohrm_LNDA
				AnimationMode		=	ONCE
				AnimationBlendTime  	=   	2
			End
			FXEvent	= Frame:2 Name:FX_SplatDust
		End
		
		

		AnimationState				=	DYING DEATH_1 
			Animation			=	JustDie
				AnimationName		=	RURohrm_SKL.RURohrm_DIEA
				AnimationMode		=	ONCE
			End
		End
		
		AnimationState				=	DYING DEATH_2 
			Animation			=	FadeOut
				AnimationName		=	RURohrm_SKL.RURohrm_IDLB
				AnimationMode		=	ONCE
			End
		End
		
		AnimationState				= 	BURNINGDEATH
			Animation
				AnimationName		= 	RURohrm_SKL.RURohrm_MFDA
				AnimationMode		= 	LOOP
				Distance		= 	90
			End
		End
		
		AnimationState				=	STUNNED_STANDING_UP
			Animation			=	StandUp
				AnimationName		=	RURohrm_SKL.RURohrm_GTPA
				AnimationMode		=	ONCE
				AnimationSpeedFactorRange = 1.5 1.5
			End
		End
		
		AnimationState				=	STUNNED
			Animation			=	Land
				AnimationName		=	RURohrm_SKL.RURohrm_LNDA
				AnimationMode		=	ONCE
			End
		End
		
		AnimationState				= PARALYZED
			Animation
				AnimationName		= RURohrm_SKL.RURohrm_IDLB
				
				AnimationMode		= LOOP
			End
		End


		AnimationState        = MOVING FIRING_OR_PREATTACK_A
			ShareAnimation		= Yes
			Animation           = TrotAndFire
				AnimationName       = RURohrm_SKL.RURohrm_ATRB
				AnimationMode       = LOOP
				Distance			= 70; 35
			End
			Flags               = RANDOMSTART
		End

;;======= BACKING UP
		
		AnimationState					= MOVING BACKING_UP
			Animation					= BACKING UP
				AnimationName			= RURohrm_SKL.RURohrm_BAKA
				AnimationMode			= LOOP
			End
		End
		
		AnimationState					=	TURN_LEFT_HIGH_SPEED
			Animation					=	TurnLeft
				AnimationName			=	RURohrm_SKL.RURohrm_TNL1
				AnimationMode			=	LOOP
				AnimationBlendTime		=	20
			End
		End
		
		AnimationState					=	TURN_RIGHT_HIGH_SPEED
			Animation					=	TurnRight
				AnimationName			=	RURohrm_SKL.RURohrm_TNR1
				AnimationMode			=	LOOP
				AnimationBlendTime		=	20
			End
		End
		
		AnimationState					= MOVING WANDER
			Animation					= WLKA
				AnimationName			= RURohrm_SKL.RURohrm_WLKA
				AnimationMode			= LOOP
			End
		End

		AnimationState					=	MOVING TURN_LEFT 
			Animation					=	TurnLeft
				AnimationName			=	RURohrm_SKL.RURohrm_TRNL
				AnimationMode			=	LOOP
			End
		End

		AnimationState					=	MOVING TURN_RIGHT 
			Animation					=	TurnRight
				AnimationName			=	RURohrm_SKL.RURohrm_TRNR
				AnimationMode			=	LOOP
			End
		End

		AnimationState					= MOVING ENGAGED
			Animation					= Moving_Engaged
				AnimationName			= RURohrm_SKL.RURohrm_RUNC
				AnimationMode			= LOOP
			End
			Flags						= RANDOMSTART
		End
		
;		AnimationState					= MOVING WALKING
;			Animation					= Walk1
;				AnimationName			= RURohrm_SKL.RURohrm_WLKB
;				AnimationMode			= LOOP
;				Distance				= 25
;			End
;		End

		AnimationState					= MOVING ACCELERATE
			Animation					= Accelerate
				AnimationName			= RURohrm_SKL.RURohrm_ACCL
				AnimationMode			= ONCE ; was LOOP
			End
		End

		AnimationState					= DECELERATE
			Animation					= Decelerate
				AnimationName			= RURohrm_SKL.RURohrm_DECL
				AnimationMode			= ONCE
				AnimationSpeedFactorRange = 0.55 0.55
			End
		End
			
		AnimationState					=	MOVING
			Animation					=	RunA
				AnimationName			=	RURohrm_SKL.RURohrm_RUNA
				AnimationMode			=	LOOP
				Distance				=   40
			End
			Flags						=	RANDOMSTART
		End


		;---------------------------------------------------------------------------------------------------------

		; Standard attack with spear.
		AnimationState					=	FIRING_OR_PREATTACK_A
			Animation					=	AttackA1
				AnimationName			=	RURohrm_SKL.RURohrm_ATKA
				AnimationMode			=	ONCE
			End
		End
		;---------------------------------------------------------------------------------------------------------
		

;;--------------------- EMOTIONS ----------------------------------------------------------------------------------
;;===== TERROR		
		AnimationState					= MOVING EMOTION_TERROR EMOTION_LOOK_TO_SKY
			Animation					= TerrorFromTheSky
				AnimationName			= RURohrm_SKL.RURohrm_RUNB
				AnimationMode			= LOOP
			End
		End
		
		AnimationState					= MOVING EMOTION_TERROR
			Animation					= TerrorFromTheSky
				AnimationName			= RURohrm_SKL.RURohrm_RUNB
				AnimationMode			= LOOP
			End
		End
		
;;======= APPREHENSIVE

		AnimationState					=	EMOTION_ALERT EMOTION_AFRAID
			Animation					=	Apprehensive
				AnimationName			=	RURohrm_SKL.RURohrm_APPA
				AnimationMode			=	LOOP	;Change this to ONCE if adding additional anims
			End
		End

;;======= AFRAID

		AnimationState					= EMOTION_AFRAID
			Animation					= FERA
				AnimationName			= RURohrm_SKL.RURohrm_FERA
				AnimationMode			= LOOP
			End
			;Animation					= FERB
			;	AnimationName			= RURohrm_SKL.RURohrm_FERB
			;	AnimationMode			= LOOP
			;End
		End

;;======= CELEBRATING
		
		AnimationState					=	EMOTION_CELEBRATING
			Animation					=	CheerA
				AnimationName			=	RURohrm_SKL.RURohrm_CHRA
				AnimationMode			=	ONCE
			End
			Animation					=	CheerB
				AnimationName			=	RURohrm_SKL.RURohrm_CHRB
				AnimationMode			=	ONCE
			End
			Animation					=	CheerC
				AnimationName			=	RURohrm_SKL.RURohrm_CHRC
				AnimationMode			=	ONCE
			End
			Animation					=	CheerD
				AnimationName			=	RURohrm_SKL.RURohrm_CHRD
				AnimationMode			=	ONCE
			End
			Animation					=	Salute
				AnimationName			=	RURohrm_SKL.RURohrm_SLTA
				AnimationMode			=	ONCE
			End
			Flags						= RANDOMSTART RESTART_ANIM_WHEN_COMPLETE
		End

;;======= TAUNTING
			
		AnimationState					= EMOTION_TAUNTING
			Animation					= Taunting
				AnimationName			= RURohrm_SKL.RURohrm_TNTA
				AnimationMode			= ONCE
			End
			Animation					= Taunting2
				AnimationName			= RURohrm_SKL.RURohrm_TNTB
				AnimationMode			= ONCE
			End
			Flags						= RANDOMSTART RESTART_ANIM_WHEN_COMPLETE
		End

;;======= POINTING
			
		AnimationState					= EMOTION_POINTING
			Animation					= Pointing1
				AnimationName			= RURohrm_SKL.RURohrm_PNTA
				AnimationMode			= LOOP
			End
		End
		
;;======== ALERT

		AnimationState					= EMOTION_ALERT
			Animation					= IDLA
				AnimationName			= RURohrm_SKL.RURohrm_IDLA
				AnimationMode			= LOOP
			End
		End
		
		AnimationState					=	RAISING_FLAG
			Animation					=	CheerA
				AnimationName			=	RURohrm_SKL.RURohrm_CHRA
				AnimationMode			=	ONCE
				AnimationSpeedFactorRange = 0.9 1.1
			End
			Animation					=	CheerB
				AnimationName			=	RURohrm_SKL.RURohrm_CHRB
				AnimationMode			=	ONCE
				AnimationSpeedFactorRange = 0.9 1.1
			End
			Animation					=	CheerC
				AnimationName			=	RURohrm_SKL.RURohrm_CHRC
				AnimationMode			=	ONCE
				AnimationSpeedFactorRange = 0.9 1.1
			End
			Animation					=	CheerD
				AnimationName			=	RURohrm_SKL.RURohrm_CHRD
				AnimationMode			=	ONCE
				AnimationSpeedFactorRange = 0.9 1.1
			End
			Animation					=	Salute
				AnimationName			=	RURohrm_SKL.RURohrm_SLTA
				AnimationMode			=	ONCE
			End
			Flags						= RESTART_ANIM_WHEN_COMPLETE
		End


;;-------------------- SELECTED ---------------------------------------------------------------
				
		AnimationState					= SELECTED
			StateName					= State_Selected
;			SimilarRestart				= Yes
			Animation					= AtAttention
				AnimationName			= RURohrm_SKL.RURohrm_IDLA
				AnimationMode			= LOOP
			End
			BeginScript
				Prev = CurDrawablePrevAnimationState()
				if Prev == "Idle" then
					CurDrawableSetTransitionAnimState("TRANS_Idle_To_Selected")
				elseif Prev == "State_PuttingBowAway" then
					CurDrawableSetTransitionAnimState("TRANS_BowAway_To_Selected")
				end
			EndScript
		End
		
		
		TransitionState					=	TRANS_Idle_to_Selected
			Animation					=	ATNA
				AnimationName			=	RURohrm_SKL.RURohrm_ATNA
				AnimationMode			=	ONCE
				AnimationSpeedFactorRange = 1.0 1.0
			End
		End

		TransitionState					=	TRANS_BowAway_To_Selected
			Animation
				AnimationName			=	RURohrm_SKL.RURohrm_WPNB
				AnimationMode			=	ONCE
			End
		End
		
		TransitionState					=	TRANS_Selected_to_Idle
			Animation					=	ATNC
				AnimationName			=	RURohrm_SKL.RURohrm_ATNA
				AnimationMode			=	ONCE_BACKWARDS
				AnimationSpeedFactorRange = 0.6 1.0
			End
			Flags						= START_FRAME_LAST
		End
		
		TransitionState					=	TRANS_BowAway_To_Idle
			Animation
				AnimationName			=	RURohrm_SKL.RURohrm_WPNB
				AnimationMode			=	ONCE
			End
		End
		

Edited by Bofur, 13 June 2013 - 11:04 AM.

left64_by_obsidianlake-d5ruayp.pngAotF.pngright64_by_obsidianlake-d5ruf44.png


#34 Ridder Geel

Ridder Geel

    Master Yelloh

  • T3A Staff
  • 10,852 posts
  • Location:The Netherlands (AKA: Holland)
  • Projects:RC Mod + SEE + RTS Engine
  •  The Dangerous T3A Team Chamber Member
  • Division:BFME
  • Job:T3A Staff

Posted 13 June 2013 - 11:11 AM

Post the rest of the code as well, its most likely in the Death behavior or such :)


Ridder Geel

#35 Bofur

Bofur

    The Bolicious One

  • Hosted
  • 1,766 posts
  • Location:England
  • Projects:Age of the Firstborn
  •  The Bolicious T3A Team Chamber Member

Posted 13 June 2013 - 11:26 AM

'ere:

Object CarnDumCavalry
	; *** ART Parameters ***
	; NOTE: If you are updating any of the art parameters, you should really check
	; GondorCavalryRiderless in FactionSubObject.ini and see if it needs to be updated

	SelectPortrait         = UPCarndumknight


	Draw = W3DHordeModelDraw ModuleTag_01
		OkToChangeModelColor = Yes

		WadingParticleSys = EntRipples

		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

;;====================== MODELS ================================================================
		;-----Spear-----
		DefaultModelConditionState
			Model				= kucarnrid_skn
		End

;;================== ANIMATIONS =================================================================
		
		;---------------------------------------------
		;-----------------Spear Anims-----------------
		;---------------------------------------------
		IdleAnimationState
			StateName				=	Idle
			Animation				=	IdleB
				AnimationName		=	RURohrm_SKL.RURohrm_IDLB
				AnimationMode		=	ONCE
				AnimationBlendTime	=	15
			End
			BeginScript
				Prev = CurDrawablePrevAnimationState()
				if Prev == "State_Selected" then
					CurDrawableSetTransitionAnimState("TRANS_Selected_To_Idle")
				elseif Prev == "State_PuttingBowAway" then
					CurDrawableSetTransitionAnimState("TRANS_BowAway_To_Idle")
				end
			EndScript
		End
						
				AnimationState				=	PASSENGER
			Animation			=	grabbed
				AnimationName		=	RURohrm_SKL.RURohrm_GBDA
				AnimationMode		=	LOOP
			End
		End
		
		; --- stunned anims
		AnimationState				=	FREEFALL 
			Animation			=	free fall
				AnimationName		=	RURohrm_SKL.RURohrm_FLYB
				AnimationMode		=	LOOP
				AnimationBlendTime	=	10
			End
		End
		
		AnimationState				=	STUNNED_FLAILING 
			Animation			=	JustDie
				AnimationName		=	RURohrm_SKL.RURohrm_FLYC
				AnimationMode		=	LOOP
			End
			Flags				=	RANDOMSTART
		End

		AnimationState				= 	DYING BURNINGDEATH
			Animation
				AnimationName		= 	RURohrm_SKL.RURohrm_DIEA
				AnimationMode		= 	ONCE
				AnimationBlendTime	= 	10
			End
		End

		; This is the no-spawn-horse type of death
		AnimationState				=	DYING DEATH_1 SPLATTED
			Animation			=	splatted
				AnimationName		=	RURohrm_SKL.RURohrm_LNDA
				AnimationMode		=	ONCE
				AnimationBlendTime  	=   	2
			End
			FXEvent	= Frame:2 Name:FX_SplatDust
		End
		
		

		AnimationState				=	DYING DEATH_1 
			Animation			=	JustDie
				AnimationName		=	RURohrm_SKL.RURohrm_DIEA
				AnimationMode		=	ONCE
			End
		End
		
		AnimationState				=	DYING DEATH_2 
			Animation			=	FadeOut
				AnimationName		=	RURohrm_SKL.RURohrm_IDLB
				AnimationMode		=	ONCE
			End
		End
		
		AnimationState				= 	BURNINGDEATH
			Animation
				AnimationName		= 	RURohrm_SKL.RURohrm_MFDA
				AnimationMode		= 	LOOP
				Distance		= 	90
			End
		End
		
		AnimationState				=	STUNNED_STANDING_UP
			Animation			=	StandUp
				AnimationName		=	RURohrm_SKL.RURohrm_GTPA
				AnimationMode		=	ONCE
				AnimationSpeedFactorRange = 1.5 1.5
			End
		End
		
		AnimationState				=	STUNNED
			Animation			=	Land
				AnimationName		=	RURohrm_SKL.RURohrm_LNDA
				AnimationMode		=	ONCE
			End
		End
		
		AnimationState				= PARALYZED
			Animation
				AnimationName		= RURohrm_SKL.RURohrm_IDLB
				
				AnimationMode		= LOOP
			End
		End


		AnimationState        = MOVING FIRING_OR_PREATTACK_A
			ShareAnimation		= Yes
			Animation           = TrotAndFire
				AnimationName       = RURohrm_SKL.RURohrm_ATRB
				AnimationMode       = LOOP
				Distance			= 70; 35
			End
			Flags               = RANDOMSTART
		End

;;======= BACKING UP
		
		AnimationState					= MOVING BACKING_UP
			Animation					= BACKING UP
				AnimationName			= RURohrm_SKL.RURohrm_BAKA
				AnimationMode			= LOOP
			End
		End
		
		AnimationState					=	TURN_LEFT_HIGH_SPEED
			Animation					=	TurnLeft
				AnimationName			=	RURohrm_SKL.RURohrm_TNL1
				AnimationMode			=	LOOP
				AnimationBlendTime		=	20
			End
		End
		
		AnimationState					=	TURN_RIGHT_HIGH_SPEED
			Animation					=	TurnRight
				AnimationName			=	RURohrm_SKL.RURohrm_TNR1
				AnimationMode			=	LOOP
				AnimationBlendTime		=	20
			End
		End
		
		AnimationState					= MOVING WANDER
			Animation					= WLKA
				AnimationName			= RURohrm_SKL.RURohrm_WLKA
				AnimationMode			= LOOP
			End
		End

		AnimationState					=	MOVING TURN_LEFT 
			Animation					=	TurnLeft
				AnimationName			=	RURohrm_SKL.RURohrm_TRNL
				AnimationMode			=	LOOP
			End
		End

		AnimationState					=	MOVING TURN_RIGHT 
			Animation					=	TurnRight
				AnimationName			=	RURohrm_SKL.RURohrm_TRNR
				AnimationMode			=	LOOP
			End
		End

		AnimationState					= MOVING ENGAGED
			Animation					= Moving_Engaged
				AnimationName			= RURohrm_SKL.RURohrm_RUNC
				AnimationMode			= LOOP
			End
			Flags						= RANDOMSTART
		End
		
;		AnimationState					= MOVING WALKING
;			Animation					= Walk1
;				AnimationName			= RURohrm_SKL.RURohrm_WLKB
;				AnimationMode			= LOOP
;				Distance				= 25
;			End
;		End

		AnimationState					= MOVING ACCELERATE
			Animation					= Accelerate
				AnimationName			= RURohrm_SKL.RURohrm_ACCL
				AnimationMode			= ONCE ; was LOOP
			End
		End

		AnimationState					= DECELERATE
			Animation					= Decelerate
				AnimationName			= RURohrm_SKL.RURohrm_DECL
				AnimationMode			= ONCE
				AnimationSpeedFactorRange = 0.55 0.55
			End
		End
			
		AnimationState					=	MOVING
			Animation					=	RunA
				AnimationName			=	RURohrm_SKL.RURohrm_RUNA
				AnimationMode			=	LOOP
				Distance				=   40
			End
			Flags						=	RANDOMSTART
		End


		;---------------------------------------------------------------------------------------------------------

		; Standard attack with spear.
		AnimationState					=	FIRING_OR_PREATTACK_A
			Animation					=	AttackA1
				AnimationName			=	RURohrm_SKL.RURohrm_ATKA
				AnimationMode			=	ONCE
			End
		End
		;---------------------------------------------------------------------------------------------------------
		

;;--------------------- EMOTIONS ----------------------------------------------------------------------------------
;;===== TERROR		
		AnimationState					= MOVING EMOTION_TERROR EMOTION_LOOK_TO_SKY
			Animation					= TerrorFromTheSky
				AnimationName			= RURohrm_SKL.RURohrm_RUNB
				AnimationMode			= LOOP
			End
		End
		
		AnimationState					= MOVING EMOTION_TERROR
			Animation					= TerrorFromTheSky
				AnimationName			= RURohrm_SKL.RURohrm_RUNB
				AnimationMode			= LOOP
			End
		End
		
;;======= APPREHENSIVE

		AnimationState					=	EMOTION_ALERT EMOTION_AFRAID
			Animation					=	Apprehensive
				AnimationName			=	RURohrm_SKL.RURohrm_APPA
				AnimationMode			=	LOOP	;Change this to ONCE if adding additional anims
			End
		End

;;======= AFRAID

		AnimationState					= EMOTION_AFRAID
			Animation					= FERA
				AnimationName			= RURohrm_SKL.RURohrm_FERA
				AnimationMode			= LOOP
			End
			;Animation					= FERB
			;	AnimationName			= RURohrm_SKL.RURohrm_FERB
			;	AnimationMode			= LOOP
			;End
		End

;;======= CELEBRATING
		
		AnimationState					=	EMOTION_CELEBRATING
			Animation					=	CheerA
				AnimationName			=	RURohrm_SKL.RURohrm_CHRA
				AnimationMode			=	ONCE
			End
			Animation					=	CheerB
				AnimationName			=	RURohrm_SKL.RURohrm_CHRB
				AnimationMode			=	ONCE
			End
			Animation					=	CheerC
				AnimationName			=	RURohrm_SKL.RURohrm_CHRC
				AnimationMode			=	ONCE
			End
			Animation					=	CheerD
				AnimationName			=	RURohrm_SKL.RURohrm_CHRD
				AnimationMode			=	ONCE
			End
			Animation					=	Salute
				AnimationName			=	RURohrm_SKL.RURohrm_SLTA
				AnimationMode			=	ONCE
			End
			Flags						= RANDOMSTART RESTART_ANIM_WHEN_COMPLETE
		End

;;======= TAUNTING
			
		AnimationState					= EMOTION_TAUNTING
			Animation					= Taunting
				AnimationName			= RURohrm_SKL.RURohrm_TNTA
				AnimationMode			= ONCE
			End
			Animation					= Taunting2
				AnimationName			= RURohrm_SKL.RURohrm_TNTB
				AnimationMode			= ONCE
			End
			Flags						= RANDOMSTART RESTART_ANIM_WHEN_COMPLETE
		End

;;======= POINTING
			
		AnimationState					= EMOTION_POINTING
			Animation					= Pointing1
				AnimationName			= RURohrm_SKL.RURohrm_PNTA
				AnimationMode			= LOOP
			End
		End
		
;;======== ALERT

		AnimationState					= EMOTION_ALERT
			Animation					= IDLA
				AnimationName			= RURohrm_SKL.RURohrm_IDLA
				AnimationMode			= LOOP
			End
		End
		
		AnimationState					=	RAISING_FLAG
			Animation					=	CheerA
				AnimationName			=	RURohrm_SKL.RURohrm_CHRA
				AnimationMode			=	ONCE
				AnimationSpeedFactorRange = 0.9 1.1
			End
			Animation					=	CheerB
				AnimationName			=	RURohrm_SKL.RURohrm_CHRB
				AnimationMode			=	ONCE
				AnimationSpeedFactorRange = 0.9 1.1
			End
			Animation					=	CheerC
				AnimationName			=	RURohrm_SKL.RURohrm_CHRC
				AnimationMode			=	ONCE
				AnimationSpeedFactorRange = 0.9 1.1
			End
			Animation					=	CheerD
				AnimationName			=	RURohrm_SKL.RURohrm_CHRD
				AnimationMode			=	ONCE
				AnimationSpeedFactorRange = 0.9 1.1
			End
			Animation					=	Salute
				AnimationName			=	RURohrm_SKL.RURohrm_SLTA
				AnimationMode			=	ONCE
			End
			Flags						= RESTART_ANIM_WHEN_COMPLETE
		End


;;-------------------- SELECTED ---------------------------------------------------------------
				
		AnimationState					= SELECTED
			StateName					= State_Selected
;			SimilarRestart				= Yes
			Animation					= AtAttention
				AnimationName			= RURohrm_SKL.RURohrm_IDLA
				AnimationMode			= LOOP
			End
			BeginScript
				Prev = CurDrawablePrevAnimationState()
				if Prev == "Idle" then
					CurDrawableSetTransitionAnimState("TRANS_Idle_To_Selected")
				elseif Prev == "State_PuttingBowAway" then
					CurDrawableSetTransitionAnimState("TRANS_BowAway_To_Selected")
				end
			EndScript
		End
		
		
		TransitionState					=	TRANS_Idle_to_Selected
			Animation					=	ATNA
				AnimationName			=	RURohrm_SKL.RURohrm_ATNA
				AnimationMode			=	ONCE
				AnimationSpeedFactorRange = 1.0 1.0
			End
		End

		TransitionState					=	TRANS_BowAway_To_Selected
			Animation
				AnimationName			=	RURohrm_SKL.RURohrm_WPNB
				AnimationMode			=	ONCE
			End
		End
		
		TransitionState					=	TRANS_Selected_to_Idle
			Animation					=	ATNC
				AnimationName			=	RURohrm_SKL.RURohrm_ATNA
				AnimationMode			=	ONCE_BACKWARDS
				AnimationSpeedFactorRange = 0.6 1.0
			End
			Flags						= START_FRAME_LAST
		End
		
		TransitionState					=	TRANS_BowAway_To_Idle
			Animation
				AnimationName			=	RURohrm_SKL.RURohrm_WPNB
				AnimationMode			=	ONCE
			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

	; NOTE, PLEASE: If you are changing this unit in any way, you should consider changing 
	; GondorCavalryRiderless in FactionSubObject.ini

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

	; ***DESIGN parameters ***
	Side = Angmar
	EditorSorting = UNIT
	ThreatLevel = 2.0
	TransportSlotCount = TRANSPORTSLOTCOUNT_UNIT
	BountyValue = GONDOR_KNIGHTSOFDOL_BOUNTY_VALUE 
	ArmorSet
		Conditions      = None
		Armor           = HeroMiniMountedArmor   ;CavalryArmor
		DamageFX        = NormalDamageFX
	End
	ArmorSet
		Conditions      = PLAYER_UPGRADE
		Armor           = HeroMiniMountedArmor  ;CavalryHorseShieldArmor
		DamageFX        = NormalDamageFX
	End
	
	ArmorSet
		Conditions		= PLAYER_UPGRADE_2
		Armor			= HeroMiniMountedArmor   ;CavalryHeavyArmor
		DamageFX		= NormalDamageFX
	End
	
	ArmorSet
		Conditions		= PLAYER_UPGRADE_2 PLAYER_UPGRADE
		Armor			= HeroMiniMountedArmor   ;CavalryHorseShieldAndHeavyArmor
		DamageFX		= NormalDamageFX
	End
	
	WeaponSet
		Conditions = None 
		Weapon = PRIMARY    CarnCavalrySword
		AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
	End
	WeaponSet
		Conditions = PLAYER_UPGRADE
		Weapon = PRIMARY	CarnCavalrySwordUpgraded
		AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
	End
	
	VisionRange = GONDOR_KNIGHT_VISION_RANGE
	ShroudClearingRange = SHROUD_CLEAR_STANDARD
		
	VisionSide = 35%
	VisionRear = 25%
	
	MaxVisionBonusPercent = 300%
	VisionBonusTestRadius = 200
	VisionBonusPercentPerFoot = 2.0%

	DisplayName = OBJECT:CarnDumKnights
	CrushableLevel = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
	CrusherLevel = 1

	CrushWeapon = KnightCrush

	MinCrushVelocityPercent = 50 ; Has to be moving at at least 50% of full speed.
	CrushDecelerationPercent = 100 ; Lose 80 percent of max velocity when crushing.

	RamPower = 30;
	RamZMult = 0.5;
	
	CommandPoints = 20
	
	CommandSet = AngmarKnightCommandSet


	; *** AUDIO Parameters ***;
	VoiceAttack				= DkDunVoiceAttack
	VoiceAttackCharge			= DkDunVoiceAttackCharge
	VoiceAttackMachine			= DkDunVoiceAttack
	VoiceAttackStructure			= DkDunVoiceAttackBuilding
	VoiceEnterStateAttack			= DkDunVoiceAttack
	VoiceEnterStateAttackCharge		= DkDunVoiceAttackCharge
	VoiceEnterStateAttackMachine		= DkDunVoiceAttack
	VoiceEnterStateAttackStructure		= DkDunVoiceAttackBuilding
	VoiceCreated				= DkDunVoiceSalute
	VoiceFullyCreated 			= DkDunVoiceSalute				//GondorSoldierVoiceCreated
	VoiceGuard				= DkDunVoiceMove
	VoiceMove				= DkDunVoiceMove
	VoiceMoveToCamp				= DkDunVoiceMove
	VoiceMoveWhileAttacking			= DkDunVoiceDisengage				//TEMP_GondorSoldierVoiceMoveWhileAttacking_TEMP
	VoicePriority				= 49
	VoiceRetreatToCastle			= DkDunVoiceDisengage
	VoiceSelect				= DkDunVoiceSelect
	VoiceSelectBattle 			= DkDunVoiceSelectBattle
	VoiceEnterStateMove			= DkDunVoiceMove
	VoiceEnterStateMoveToCamp		= DkDunVoiceMoveCamp
	VoiceEnterStateMoveWhileAttacking	= DkDunVoiceDisengage
	VoiceEnterStateRetreatToCastle		= DkDunVoiceDisengage

	SoundMoveStart				= GondorHorseMoveStart
	SoundImpact				= ImpactHorse

;GondorKnightVoiceFearCower
;GondorKnightVoiceFearDisperse
;GondorKnightVoiceFearPoint
;GondorKnightVoiceFearRegroup
;GondorKnightVoiceJoinAnybody
;GondorKnightVoiceLineFormation
;GondorKnightVoiceWedgeFormation

	CrowdResponseKey = GoodMen

	UnitSpecificSounds
		; VoiceGarrison			= GondorKnightVoiceGarrison
		VoiceEnterUnitElvenTransportShip	= GondorKnightVoiceMove
		VoiceInitiateCaptureBuilding		= GondorKnightVoiceMove
	End
	
	CrowdResponseKey = Horse

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

	ClientBehavior = ModelConditionAudioLoopClientBehavior ModuleTag_foo
		ModelCondition = Required:RAISING_FLAG			Excluded:DYING ENGAGED	Sound:EmotionMenGoodCompilationBFME1and2VoxTauntSinglesLoop
	End

	ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior
		MaxUpdateRangeCap = 800
		AnimationSound = Sound:HorseMoveFootstepsLoose		Animation:GUCavalry_SKL.GUCavalry_ACCL	Frames:8 30
		AnimationSound = Sound:HorseMoveFootstepsLoose		Animation:GUCavalry_SKL.GUCavalry_RUNA	Frames:0
		AnimationSound = Sound:HorseMoveFootstepsLoose		Animation:GUCavalry_SKL.GUCavalry_RUNB	Frames:0
		AnimationSound = Sound:HorseMoveFootstepsLoose		Animation:GUCavalry_SKL.GUCavalry_TNL1	Frames:0
		AnimationSound = Sound:HorseMoveFootstepsLoose		Animation:GUCavalry_SKL.GUCavalry_TNR1	Frames:0
		AnimationSound = Sound:HorseMoveFootstepsLoose		Animation:GUCavalry_SKL.GUCavalry_TRNL	Frames:0
		AnimationSound = Sound:HorseMoveFootstepsLoose		Animation:GUCavalry_SKL.GUCavalry_TRNR	Frames:0
		AnimationSound = Sound:HorseWhinny				Animation:GUCavalry_SKL.GUCavalry_DIEA	Frames:0
		;AnimationSound = Sound:HorseWhinny				Animation:GUCavalry_SKL.GUCavalry_DIEB	Frames:0
		AnimationSound = Sound:HorseWhinny				Animation:GUCavalry_SKL.GUCavalry_DIEC	Frames:0
		;AnimationSound = Sound:HorseWhinny				Animation:GUCavalry_SKL.GUCavalry_DIED	Frames:0
		AnimationSound = Sound:HorseWhinny				Animation:GUCavalry_SKL.GUCavalry_IDLC	Frames:9
		AnimationSound = Sound:HorseWhinny				Animation:GUCavalry_SKL.GUCavalry_TNTB	Frames:9
		AnimationSound = Sound:BodyFallGeneric1			Animation:GUCavalry_SKL.GUCavalry_DIEA	Frames:10 46
		AnimationSound = Sound:BodyFallGeneric1			Animation:GUCavalry_SKL.GUCavalry_DIEC	Frames:20 43
		AnimationSound = Sound:BodyFallGenericNoArmor		Animation:GUCavalry_SKL.GUCavalry_DIEC	Frames:70
		AnimationSound = Sound:BodyFallGeneric1			Animation:GUCavalry_SKL.GUCavalry_LNDA	Frames:3 11
		AnimationSound = Sound:HorseWhinny				Animation:GUCavalry_SKL.GUCavalry_LNDA	Frames:0
	End

	Behavior = LargeGroupAudioUpdate ModuleTag_LGAU			;Tie into LargeGroupAudio system
		Key = Humanoid_Male Man Man_Male Unit Cavalry Knight
	End


	; *** ENGINEERING Parameters ***
	RadarPriority = UNIT
	ThingClass = CAVALRY_UNIT

	KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS CAVALRY SCORE GRAB_AND_DROP
	
	Body = ActiveBody ModuleTag_02
		CheerRadius = EMOTION_CHEER_RADIUS

		MaxHealth			= GONDOR_KNIGHT_HEALTH
		MaxHealthDamaged	= GONDOR_KNIGHT_HEALTH_DAMAGED
		RecoveryTime		= GONDOR_KNIGHT_HEALTH_RECOVERY_TIME

		BurningDeathBehavior = Yes
		BurningDeathFX       = FX_CavalryBurningFlame
	End

	#include "..\..\..\includes\CaptureBuilding.inc"
   
	Behavior = AIUpdateInterface ModuleTag_03
		AutoAcquireEnemiesWhenIdle	= Yes ATTACK_BUILDINGS
		AILuaEventsList				= GondorCavalryFunctions
		AttackPriority				= AttackPriority_Cavalry
		BurningDeathTime			= BURNINGDEATH_DURATION_CAVALRY
	End

  	;;; Pillage ;;;
	Behavior = PillageModule ModuleTag_Test1
		PillageAmount				= WILDMAN_PILLAGE_AMOUNT
		NumDamageEventsPerPillage	= WILDMAN_PILLAGE_NUM_DAMAGES
		PillageFilter				= WILDMAN_PILLAGE_FILTER
	End

	Behavior = WeaponSetUpgrade WeaponSetUpgradeModuleTag
		TriggeredBy = Upgrade_AngmarDarkIronBlades
	End

	Behavior = ArmorUpgrade ArmorUpgradeModuleTag
		TriggeredBy = Upgrade_AngmarDarkIronArmor
		ArmorSetFlag			= PLAYER_UPGRADE
	End
	
	//-------------------------------------------------------------------------
	//
	//	Sub object upgrading.
	//
	Behavior = SubObjectsUpgrade Armor_Upgrade
		TriggeredBy		= Upgrade_AngmarDarkIronArmor
		RecolorHouse		= Yes
		ExcludeSubobjects 	= Forged_Blade
	End
	
	Behavior 		= SubObjectsUpgrade ForgedBlade_Upgrade
		TriggeredBy	= Upgrade_AngmarDarkIronBlades
		ShowSubObjects	= Forged_Blade
	End	
	//-------------------------------------------------------------------------
			
	LocomotorSet
		Locomotor = NormalHorseHordeMemberLocomotor
		Condition = SET_NORMAL 
		Speed     = NORMAL_MOUNTED_FAST_MEMBER_SPEED
	End
	
	LocomotorSet
		Locomotor = NormalHorseHordeMemberLocomotor
		Condition = SET_CONTAINED
		Speed     = NORMAL_MOUNTED_FAST_MEMBER_SPEED
	End

	LocomotorSet
		Locomotor = NormalHorseHordeMemberLocomotor
		Condition = SET_COMBO
		Speed     = NORMAL_GOOD_INFANTRY_MEMBER_SPEED
	End

	LocomotorSet
		Locomotor = BurningDeathLocomotorCavalry
		Condition = SET_BURNINGDEATH
		Speed	  = BURNINGDEATH_WANDERSPEED_CAVALRY
	End

	Behavior = PhysicsBehavior ModuleTag_04
		GravityMult = 1.0
		ShockStandingTime = 2533	;msec
	End
	
	Behavior = SquishCollide ModuleTag_06
		;nothing
	End

	Behavior = HordeMemberCollide ModuleTag_HMC
		;nothing
	End
	
	Behavior = SlowDeathBehavior ModuleTag_08
		; Die and don't spawn horse
		DeathTypes = ALL -FADED
		SinkDelay = 3000
		SinkRate = 0.80     ; in Dist/Sec
		DestructionDelay = 12000
		;ProbabilityModifier = 33
		Sound = INITIAL HumanVoiceDie
	End

	Behavior = SlowDeathBehavior ModuleTag_FadeDeath
		; Die and don't spawn horse
		DeathTypes = NONE +FADED
		SinkDelay = 3000
		SinkRate = 0.80     ; in Dist/Sec
		DestructionDelay = 12000
		;ProbabilityModifier = 33
		Sound = INITIAL SpellGenericUnsummonFasterMS
	End

	  Behavior = HitReactionBehavior HitReactionBehaviorModuleTag
		HitReactionLifeTimer1 = 2000 ; level 1 (light  damage)  hit reaction animations in frames (5 per sec)
		HitReactionLifeTimer2 = 2000 ; level 2 (medium damage)  hit reaction animations in frames (5 per sec)
		HitReactionLifeTimer3 = 2000 ; 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

	Geometry = CYLINDER
	GeometryMajorRadius = 8.0
	GeometryMinorRadius = 8.0
	GeometryHeight = 20.0
	GeometryIsSmall = No

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

	; Do I need to change GondorCavalryRiderless?
End

left64_by_obsidianlake-d5ruayp.pngAotF.pngright64_by_obsidianlake-d5ruf44.png


#36 Bofur

Bofur

    The Bolicious One

  • Hosted
  • 1,766 posts
  • Location:England
  • Projects:Age of the Firstborn
  •  The Bolicious T3A Team Chamber Member

Posted 17 June 2013 - 06:56 AM

*bump*

And also, I tried puting the .const, .dat, and .apt in the main root, and the spellbook was the right shape, but with no buttons or pictures, just numbers. Are the geometry files from spellstore.big needed?

left64_by_obsidianlake-d5ruayp.pngAotF.pngright64_by_obsidianlake-d5ruf44.png


#37 Ridder Geel

Ridder Geel

    Master Yelloh

  • T3A Staff
  • 10,852 posts
  • Location:The Netherlands (AKA: Holland)
  • Projects:RC Mod + SEE + RTS Engine
  •  The Dangerous T3A Team Chamber Member
  • Division:BFME
  • Job:T3A Staff

Posted 17 June 2013 - 06:11 PM

Id say throw the geometry there, just in case :p Also are those units in a horde?


Ridder Geel

#38 Bofur

Bofur

    The Bolicious One

  • Hosted
  • 1,766 posts
  • Location:England
  • Projects:Age of the Firstborn
  •  The Bolicious T3A Team Chamber Member

Posted 17 June 2013 - 07:35 PM

Yes, if you want the code, I'll post it.

Also, which folder should the geometry be in? I'm still new to this apt stuff :p

left64_by_obsidianlake-d5ruayp.pngAotF.pngright64_by_obsidianlake-d5ruf44.png


#39 Ridder Geel

Ridder Geel

    Master Yelloh

  • T3A Staff
  • 10,852 posts
  • Location:The Netherlands (AKA: Holland)
  • Projects:RC Mod + SEE + RTS Engine
  •  The Dangerous T3A Team Chamber Member
  • Division:BFME
  • Job:T3A Staff

Posted 21 June 2013 - 10:53 PM

Geometry should be in the same basic place as the apt, but then in a folder like it is in the .big file with the original apt files :)

Yea sure post the horde code, there might be something triggering the wrong death :p

or try simply removing this part:

	Behavior = SlowDeathBehavior ModuleTag_FadeDeath
		; Die and don't spawn horse
		DeathTypes = NONE +FADED
		SinkDelay = 3000
		SinkRate = 0.80     ; in Dist/Sec
		DestructionDelay = 12000
		;ProbabilityModifier = 33
		Sound = INITIAL SpellGenericUnsummonFasterMS
	End

Ridder Geel

#40 Bofur

Bofur

    The Bolicious One

  • Hosted
  • 1,766 posts
  • Location:England
  • Projects:Age of the Firstborn
  •  The Bolicious T3A Team Chamber Member

Posted 24 July 2013 - 07:13 PM

Here's the code:
//////////////////////////////////////////////////////////////////////////////////
Object CarnDumKnightHorde

	// This is required for garrisoned objects - please put in all objects.
	ButtonImage		= WOR_WolfRider
	SelectPortrait	= KUThrallMasterPortrait

	Draw = W3DScriptedModelDraw ModuleTag_W3DModelDraw
	    DependencySharedModelFlags = EMOTION_ALERT EMOTION_MORALE_HIGH EMOTION_MORALE_LOW EMOTION_AFRAID EMOTION_COWER SELECTED EMOTION_TERROR EMOTION_LOOK_TO_SKY
		DefaultModelConditionState
			Model = None //InvisHrdeTmp5x1
		End
		ModelConditionState = HORDE_EMPTY
			Model = None
		End		
		ModelConditionState = WORLD_BUILDER
			Model = HordeMarkGUKni
		End
	End
	
	Side = Angmar
	EditorSorting = UNIT
	EmotionRange = 240
	DisplayName = OBJECT:HordeCarnDumKnight
	DisplayNameStrategic = CONTROLBAR:LW_Unit_CarnDumKnightHorde
	DescriptionStrategic = CONTROLBAR:LW_ToolTip_CarnDumKnightHorde
	
	WeaponSet
		Conditions = None 
		Weapon = PRIMARY    NormalMeleeHordeRangefinder
	End
	
	CommandSet = AngmarKnightHordeCommandSet


	// *** AUDIO Parameters ***//
	// Note: Don't put voice parameters here -- they will be ignored. Voice play requests
	// are always passed through to members
	#include "..\..\..\includes\StandardHordeEvaEvents.inc"

	BuildCost 			= 800
	BuildTime 			= GONDOR_KNIGHT_BUILDTIME  
	VisionRange 			= GONDOR_KNIGHT_HORDE_VISION_RANGE
	VisionSide 			= 35%
	VisionRear 			= 25%
	MaxVisionBonusPercent		= 300%
	VisionBonusTestRadius		= 200
	VisionBonusPercentPerFoot 	= 5.0%
	ShroudClearingRange 		= GONDOR_KNIGHT_HORDE_SHROUD_RANGE	
	
	CommandPoints = 80
		  
	FormationWidth = 2 // Width it occupies in formations. Current choices are 1 or 2.
	FormationDepth = 1 // Depth it occupies in formations. Current choices are 1 or 2.
	
	CrushableLevel = 2  //What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
	CrusherLevel = 1 
	MinCrushVelocityPercent = 50% // Has to be moving at at least 25% of full speed.
	CrushDecelerationPercent = 50 // Lose 10 percent (100/5 horde members) of max velocity when crushing.
	CrushKnockback = 40  // how hard we knock back crushed units.
	CrushZFactor = 1.0  // How much we knock upwards.
		
	
    TransportSlotCount = TRANSPORTSLOTCOUNT_SMALL_HORDE
	KindOf = SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAVALRY HORDE MELEE_HORDE ARMY_SUMMARY LARGE_RECTANGLE_PATHFIND//UNATTACKABLE 
	
	Body = ImmortalBody ModuleTag_ImmortalBody
		MaxHealth = 1
	End
	
	ThreatLevel = GONDOR_KNIGHT_HORDE_THREAT
	ThreatBreakdown GondorKnightHorde_DetailedThreat
		AIKindOf = CAVALRY
	End
	
	#include "..\..\..\includes\CaptureBuilding.inc"
	
	Behavior = StancesBehavior ModuleTag_StancesBehavior
        StanceTemplate = CavalryHorde
    End
    
	Behavior = HordeAIUpdate ModuleTag_HordeAIUpdate
		AutoAcquireEnemiesWhenIdle	= Yes ATTACK_BUILDINGS
		MoodAttackCheckRate			= 500
		MaxCowerTime				= 5000
		MinCowerTime				= 3000
		AILuaEventsList				= CavalryFunctions  
		AttackPriority				= AttackPriority_Cavalry
	End

	Behavior = HorseHordeContain ModuleTag_HordeContain
		
		FrontAngle = 270
		FlankedDelay = 2000
		ObjectStatusOfContained = 
		InitialPayload = CarnDumCavalry  10
		Slots = 10
		PassengerFilter = NONE +CAVALRY 
		ShowPips = No
		ThisFormationIsTheMainFormation = Yes	//Used to determine which armorset to use (and anything else we want!)
		RandomOffset=X:0 Y:0
		MeleeBehavior = Amoeba
		End

		// Banner Carrier info		
		BannerCarriersAllowed	= NONE										// types of units that are allowed as banner carriers
		
		RankInfo = RankNumber:1 UnitType:CarnDumCavalry Position:X:0 Y:0     		Position:X:0 Y:20    		Position:X:0 Y:-20    											Position:X:0 Y:40         	Position:X:0 Y:-40
		RankInfo = RankNumber:2 UnitType:CarnDumCavalry Position:X:30 Y:0 Leader 1 0	Position:X:30 Y:20 Leader 1 1	Position:X:30 Y:-20 Leader 1 2										Position:X:30 Y:40 Leader 1 3	Position:X:30 Y:-40 Leader 1 4
		
		RanksToReleaseWhenAttacking = 1 2

		MeleeAttackLeashDistance = 1   //How far the hordes	can	move from the center of	the	horde when melee attacking.				  
		BackUpMinDelayTime		 = 1	//The minimum amount of	time to	delay before backing up
		BackUpMaxDelayTime		 = 3000	//The maximum amount of	time to	delay before backing up
		BackUpMinDistance		 = 1	//The minimum number of	cells to backup
		BackUpMaxDistance		 = 3	//The maximum number of	cells to backup
		BackupPercentage		 = 80%	//The amount of	chance that	a unit will	back up.	
	End
	
	
	

	Behavior = HordeNotifyTargetsOfImminentProbableCrushingUpdate ModuleTag_NotifyCrushScan
		ScanWidth = 70.0 ; A little less than the width of the horde (which is 2 * 40 = 80)
	End

	Behavior = PhysicsBehavior ModuleTag_PhysicsBehavior
		GravityMult = 1.0
	End
	
    Behavior = EmotionTrackerUpdate	Module_EmotionTracker
		TauntAndPointDistance		=	INFANTRY_TAUNT_POINT_RADIUS		// max distance to taunted/pointed objet
 		TauntAndPointUpdateDelay	=	1000	// how often scan (milliseconds)
 		TauntAndPointExcluded		=	NONE
 		AfraidOf					=	EMOTION_AFRAIDOF_OBJECTFILTER
		AlwaysAfraidOf				=	EMOTION_ALWAYS_AFRAIDOF_OBJECTFILTER
 		PointAt						=	EMOTION_POINTAT_OBJECTFILTER
 		HeroScanDistance			=	150
 		FearScanDistance			=	INFANTRY_FEAR_SCAN_RADIUS
 		
		AddEmotion			=	Terror_Base
		AddEmotion			=	Doom_Base
		AddEmotion			=   BraceForBeingCrushed_Base
		AddEmotion			=	UncontrollableFear_Base
		AddEmotion			=	FearIdle_Base
		AddEmotion			=	FearBusy_Base
		AddEmotion			=	Point_Base
		AddEmotion			=	Taunt_Base
 		AddEmotion			=	CheerIdle_Base
		AddEmotion			=	CheerBusy_Base
		AddEmotion			=	HeroCheerIdle_Base
		AddEmotion			=	HeroCheerBusy_Base
		AddEmotion			=	Alert_Base
		AddEmotion				=   CheerForAboutToCrush_Base
 	End	
    
	LocomotorSet
		Locomotor     = NormalCavalryHordeLocomotor 
		Condition     = SET_NORMAL
		Speed         = NORMAL_MOUNTED_FAST_HORDE_SPEED
	End

	Behavior = ProductionUpdate ProductionUpdateModuleTag
		GiveNoXP = Yes
	End

	;;; Pillage ;;;
	Behavior = SpecialPowerModule ModuleTag_PillageStandin
		SpecialPowerTemplate		= SpecialAbilityWildmanPillage
		StartsPaused			= No
		UpdateModuleStartsAttack	= No
	End

	Behavior = LevelUpUpgrade ModuleTag_BasicTraining
		TriggeredBy = Upgrade_AngmarBasicTraining
		LevelsToGain = 1
		LevelCap = 2
	End
	
	Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality
		TriggeredBy = Upgrade_AngmarDarkIronBlades
	End
	
	Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality2
		TriggeredBy = Upgrade_AngmarDarkIronArmor
	End
	
	Behavior = PickupStuffUpdate ModuleTag_PickupStuffUpdate
		SkirmishAIOnly = Yes
		StuffToPickUp = NONE +CRATE
		ScanRange = 200
		ScanIntervalSeconds = 0.5
	End
	
	/////////////////////
	// AISpecialPowers
	/////////////////////
	
	Behavior = AISpecialPowerUpdate AngmarKnightHordeCaptureBuildingAI
		CommandButtonName = Command_CaptureBuilding
		SpecialPowerAIType = AI_SPECIAL_POWER_CAPTURE_BUILDING
	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 = BOX
	GeometryMajorRadius = 30.0
	GeometryMinorRadius = 40.0
	GeometryHeight = 20.0
	GeometryIsSmall = No
	
	
	// *** AUTO RESOLVE DATA *** 
	AutoResolveUnitType = AutoResolveUnit_Cavalry
	AutoResolveCombatChain = AutoResolve_CavalryCombatChain

	AutoResolveBody = AutoResolve_GondorKnightHordeBody

	AutoResolveArmor
		RequiredUpgrades = Upgrade_AngmarDarkIronArmor
		Armor = AutoResolve_GondorKnightHeavyArmor
	End

	AutoResolveArmor
		ExcludedUpgrades = Upgrade_AngmarDarkIronArmor
		Armor = AutoResolve_GondorKnightArmor
	End

	AutoResolveWeapon
		RequiredUpgrades = Upgrade_AngmarDarkIronBlades
		Weapon = AutoResolve_GondorKnightUpgradedWeapon
	End

	AutoResolveWeapon
		ExcludedUpgrades = Upgrade_AngmarDarkIronBlades
		Weapon = AutoResolve_GondorKnightWeapon
	End
	
	WorldMapArmoryUpgradesAllowed = Upgrade_AngmarBasicTraining Upgrade_AngmarDarkIronBlades Upgrade_AngmarDarkIronArmor
End
Also, Ive changed the Warg riders to use wild upgrades, they all work fine, except the basictraining. The banner carrier button says "This unit cannot receive this upgrade" when I hover over the purchase button on the unit after purchasing it from the treasure trove.

Edited by Bofur, 24 July 2013 - 07:17 PM.

left64_by_obsidianlake-d5ruayp.pngAotF.pngright64_by_obsidianlake-d5ruf44.png





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users