Jump to content


acidRain

Member Since 23 Jun 2010
Offline Last Active Apr 19 2015 07:41 PM

Posts I've Made

In Topic: Fortress for a faction

05 July 2013 - 07:49 PM

Names were referenced properly as lowercase, and I'd tagged Generic as the BASE...but I hadn't added the Citadel to the In: BASE. That fixed it all and it's working beautifully. Thanks!


In Topic: Fortress for a faction

05 July 2013 - 02:30 PM

 

 

Did you make the .bse file? 

 

Didn't know you had to. So...no. >_> XD

 

 

 

Did you change the builder in playertemplate.ini?

 

Yeps.

 

Code from atalantefortress.ini: 

Object AtalanteFortressCenterGeneric	
	
	SelectPortrait = BPGFortress
	
	Draw = W3DScriptedModelDraw ModuleTag_01

    	DefaultModelConditionState
      		Model = None
    	End
    	
		ModelConditionState = WORLD_BUILDER
			Model = NBasePin
		End
	End
	
	Side = Atalante
	EditorSorting = STRUCTURE
	KindOf = IMMOBILE BASE_FOUNDATION CASTLE_CENTER CAN_CAST_REFLECTIONS CAN_CAST_REFLECTIONS
  
	Behavior = CastleBehavior ModuleTag_castle
		FilterValidOwnedEntries = ANY +STRUCTURE +WALK_ON_TOP_OF_WALL +BASE_FOUNDATION +TACTICAL_MARKER		;Anything that does not fit this filter will be given to the neutral player, so the template can have rocks and props.
	End  
End

Object AtalanteFortressExpansionPadCorner
	
	SelectPortrait = BPGFortress_BuildPlot
	
	// *** ART Parameters ***
	Draw = W3DFloorDraw DrawFloorBase  
		ModelName = GBFoundationB
	End
		
	Draw = W3DScriptedModelDraw ModuleTag_DrawMain
		DefaultModelConditionState
			Model = WBFoundationP
		End
		ModelConditionState = CONSTRUCTION_COMPLETE
			Model = None
		End	
	End

	//PlacementViewAngle  = 0

	// ***DESIGN parameters ***
	DisplayName         = OBJECT:MenBuildingFoundation
	Description 	    = OBJECT:MenFortressDescription	
	Side                = Atalante
	EditorSorting       = STRUCTURE
	ThreatLevel			= 1.0

	BuildCost           = 1
	BuildTime           = 5.0          // in seconds
	VisionRange         = 0.0          // Shroud clearing distance
	ShroudClearingRange = 0

	CommandSet = MenFortressExpansionPadCornerCommandSet

	// *** AUDIO Parameters ***
	VoiceSelect = Gui_PlotSelect	;GondorCitadelSelect	;MenFortressSelect


	// *** ENGINEERING Parameters ***	
	KindOf              = STRUCTURE SELECTABLE IMMOBILE BASE_FOUNDATION UNATTACKABLE MP_COUNT_FOR_VICTORY NO_COLLIDE DO_NOT_CLASSIFY CAN_CAST_REFLECTIONS EXPANSION_PAD

	Behavior            = FoundationAIUpdate ModuleTag_foundationAI
		BuildVariation = 2 // Will give BUILD_VARIATION_TWO to anything built on it
	End

	Behavior = CastleMemberBehavior ModuleTag_CMB
	End 

	Body                = ImmortalBody ModuleTag_05
		MaxHealth         = 15000.0
	End

	Geometry              = BOX
	GeometryMajorRadius   = 5.0
	GeometryMinorRadius   = 5.0
	GeometryHeight        = 0.8
	GeometryIsSmall       = No
	Shadow                = SHADOW_VOLUME
	BuildCompletion		= PLACED_BY_PLAYER
End

ChildObject AtalanteFortressExpansionPadSide AtalanteFortressExpansionPadCorner 

	CommandSet = MenFortressExpansionPadSideCommandSet

	Behavior            = FoundationAIUpdate ModuleTag_foundationAI
		BuildVariation = 1 // Will give BUILD_VARIATION_ONE to anything built on it
	End
End

Object AtalanteFortressCitadel			
	
	// *** ART Parameters ***  
	ButtonImage		= BGFortress
	SelectPortrait  = BPGFortress

	Draw = W3DScriptedModelDraw ModuleTag_MainDraw
		ExtraPublicBone 		= ARROW_01
		ExtraPublicBone 		= ARROW_02
		ExtraPublicBone 		= ARROW_03
		ExtraPublicBone 		= ARROW_04
		ExtraPublicBone 		= ARROW_05
		ExtraPublicBone 		= ARROW_06
		ExtraPublicBone 		= ARROW_07
		ExtraPublicBone 		= ARROW_08
		ExtraPublicBone 		= ARROW_09
		ExtraPublicBone 		= ARROW_10
		ExtraPublicBone 		= ARROW_11
		ExtraPublicBone 		= ARROW_12
		ExtraPublicBone 		= ARROW_13
		ExtraPublicBone 		= ARROW_14
		ExtraPublicBone 		= ARROW_15
		ExtraPublicBone 		= ARROW_16
		ExtraPublicBone 		= ARROW_17
		ExtraPublicBone 		= ARROW_18
		ExtraPublicBone 		= ARROW_19
		ExtraPublicBone 		= ARROW_20
		ExtraPublicBone 		= ARROW_21
		ExtraPublicBone 		= ARROW_22
		ExtraPublicBone 		= ARROW_23
		ExtraPublicBone 		= ARROW_24
		OkToChangeModelColor	= Yes
		StaticModelLODMode		= Yes // Will append M or L to the skin name depending on GameLOD

		DefaultModelConditionState
			Model				= GBFortress
			WeaponLaunchBone	= PRIMARY ARROW_
		End
		
		;//	Animation state for build placement cursor
		AnimationState = BUILD_PLACEMENT_CURSOR
			BeginScript
   				CurDrawableHideSubObject("FIREGLOW")
   				CurDrawableHideSubObject("FLAMES")
   				CurDrawableHideSubObject("GBFFLAG")
   				CurDrawableHideSubObject("GBFFLAMING")
			EndScript
		End
		
		;//	Animation state for phantom structure
		AnimationState = PHANTOM_STRUCTURE
			BeginScript
   				CurDrawableHideSubObject("FIREGLOW")
   				CurDrawableHideSubObject("FLAMES")
   				CurDrawableHideSubObject("GBFFLAG")
   				CurDrawableHideSubObject("GBFFLAMING")
			EndScript
		End
		
		//--Damage States---
		ModelConditionState  = DAMAGED
			Model		= GBFortress
			Texture		= GBFortress1.tga GBFortress1D.tga
		End
		
		AnimationState = DAMAGED
			EnteringStateFX	= FX_FortressDamaged			
		End

		ModelConditionState  = REALLYDAMAGED
			Model         = GBFortress_D2			
		End

		AnimationState	= REALLYDAMAGED
			Animation	= Fortress_ReallyDamaged
				AnimationName		= GBFortress_D2SK.GBFortress_D2AN
				AnimationMode		= ONCE				
			End			
			EnteringStateFX	= FX_FortressReallyDamaged
		End

		ModelConditionState  = RUBBLE
			Model         = GBFortress_D3
		End
    
		AnimationState	= RUBBLE
			Animation	= Fortress_Rubble
				AnimationName		= GBFortress_D3SK.GBFortress_D3AN
				AnimationMode		= ONCE				
			End	
			EnteringStateFX	= FX_FortressCollapse		
		End

		//---Stonework---
		ModelConditionState = UPGRADE_NUMENOR_STONEWORK
			Model		= GBFortress
			Texture		= GBFortress1.tga GBFortress1_U.tga
		End
		
		//---Snow---
		ModelConditionState = SNOW
			Model			= GBFortress
			Texture			= GBFortress1.tga GBFortress1_Snow.tga
	    End

	End

	Draw = W3DScriptedModelDraw ModuleTag_Draw_HCBanner
		OkToChangeModelColor  = Yes
		DefaultModelConditionState
			Model = GBHCFortress
		End
		MultiPlayerOnly = Yes 
	End
	
//--------------------------------
	Draw = W3DScriptedModelDraw ModuleTag_OilDraw
		OkToChangeModelColor	= Yes
		StaticModelLODMode		= Yes // Will append M or L to the skin name depending on GameLOD

		DefaultModelConditionState
			Model           = None
		End

		//---Build up Damaged---
		ModelConditionState	  = UPGRADE_BOILING_OIL DAMAGED USER_1
			Model		= GBFBOil_A
			Texture		= GBFortress1.tga GBFortress1D.tga
		End

		ModelConditionState	  = UPGRADE_BOILING_OIL REALLYDAMAGED USER_1
			Model		= GBFBOil_A
			Texture		= GBFortress1.tga GBFortress1D.tga
		End

		//---Build Up and Default Idle---
		ModelConditionState = UPGRADE_BOILING_OIL USER_1
			Model		= GBFBOil_A			
		End
		AnimationState = UPGRADE_BOILING_OIL USER_1
			Animation					= RiseUp
				AnimationName			= GBFBoil_ASKL.GBFBoil_ABLD
				AnimationMode			= ONCE
			End						
		End

		//---Damage States---
		ModelConditionState		= UPGRADE_BOILING_OIL DAMAGED
			Model		= GBFBoil
			Texture		= GBFortress1.tga GBFortress1D.tga
		End

		ModelConditionState		= UPGRADE_BOILING_OIL REALLYDAMAGED
			Model		= GBFBoil_D2			
		End

		AnimationState			= UPGRADE_BOILING_OIL REALLYDAMAGED
			Animation			= ReallyDamaged
				AnimationName	= GBFBoil_D2SKL.GBFBoil_D2AN
				AnimationMode   = ONCE
			End
		End

		ModelConditionState		= UPGRADE_BOILING_OIL RUBBLE
			Model		= GBFBoil_D3			
		End

		AnimationState			= UPGRADE_BOILING_OIL RUBBLE
			Animation			= Destroyed
				AnimationName	= GBFBoil_D3SKL.GBFBoil_D3AN
				AnimationMode   = ONCE
			End
		End

		//---Normal State---
		ModelConditionState = UPGRADE_BOILING_OIL
			Model		= GBFBOil
		End
	End

//--------------------------------
	Draw = W3DScriptedModelDraw ModuleTag_OilGuyDraw
		AttachToBoneInAnotherModule = PositionBone
		OkToChangeModelColor	= Yes
		StaticModelLODMode		= Yes // Will append M or L to the skin name depending on GameLOD

		DefaultModelConditionState
			Model           = None
		End
		
		IdleAnimationState
			StateName		= NoTower			
		End

		//---Build Up and Default Idle---
		ModelConditionState = UPGRADE_BOILING_OIL USER_1
			Model		= None
		End

		ModelConditionState		= UPGRADE_BOILING_OIL RUBBLE
			Model		= NONE
		End
		
		//---Attacking---
		AnimationState			= SPECIAL_WEAPON_ONE UNPACKING UPGRADE_BOILING_OIL
			Animation			= Pouring
				AnimationName	= GBFBOil_SKL.GBFBOil_ATKA
				AnimationMode   = ONCE
			End
			EnteringStateFX	= FX_BoilingOilAttack
			
			ParticleSysBone = Steam_Bone02 MenFortressSpray FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone03 MenFortressSpray FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone04 MenFortressSpray FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone05 MenFortressSpray FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone06 MenFortressSpray FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone07 MenFortressSpray FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone08 MenFortressSpray FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone09 MenFortressSpray FOLLOWBONE:YES
			
			ParticleSysBone = Steam_Bone02 MenFortressSpray02 FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone03 MenFortressSpray02 FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone04 MenFortressSpray02 FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone05 MenFortressSpray02 FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone06 MenFortressSpray02 FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone07 MenFortressSpray02 FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone08 MenFortressSpray02 FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone09 MenFortressSpray02 FOLLOWBONE:YES
			
			ParticleSysBone = Steam_Bone02 MenFortressSteam FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone03 MenFortressSteam FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone04 MenFortressSteam FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone05 MenFortressSteam FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone06 MenFortressSteam FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone07 MenFortressSteam FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone08 MenFortressSteam FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone09 MenFortressSteam FOLLOWBONE:YES
			
			
			ParticleSysBone = Steam_Bone02 MenFortressProxy FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone03 MenFortressProxy FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone04 MenFortressProxy FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone05 MenFortressProxy FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone06 MenFortressProxy FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone07 MenFortressProxy FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone08 MenFortressProxy FOLLOWBONE:YES
			ParticleSysBone = Steam_Bone09 MenFortressProxy FOLLOWBONE:YES
		End

		//---Normal State---
		ModelConditionState = UPGRADE_BOILING_OIL
			Model		= GBFBOil_SKN
		End
		AnimationState = UPGRADE_BOILING_OIL			
			Animation			= Idle
				AnimationName	= GBFBOil_SKL.GBFBOil_IDLA
				AnimationMode   = LOOP
			End					
		End
	End

//--------------------------------
	Draw = W3DScriptedModelDraw ModuleTag_IvoryTowerDraw
		OkToChangeModelColor	= Yes
		StaticModelLODMode		= Yes // Will append M or L to the skin name depending on GameLOD

		DefaultModelConditionState
			Model           = None
		End

		//---Damage States---
		ModelConditionState		= UPGRADE_IVORY_TOWER DAMAGED
			Model		= GBFITower_A
			Texture		= GBFortress1.tga GBFortress1D.tga
		End

		ModelConditionState		= UPGRADE_IVORY_TOWER REALLYDAMAGED
			Model		= GBFITower_D2			
		End

		AnimationState			= UPGRADE_IVORY_TOWER REALLYDAMAGED
			Animation			= ReallyDamaged
				AnimationName	= GBFITower_D2SK.GBFITower_D2AN
				AnimationMode   = ONCE
			End
		End

		ModelConditionState		= UPGRADE_IVORY_TOWER RUBBLE
			Model		= GBFITower_D3
		End

		AnimationState			= UPGRADE_IVORY_TOWER RUBBLE
			Animation			= Destroyed
				AnimationName	= GBFITower_D3SK.GBFITower_D3AN
				AnimationMode   = ONCE
			End
		End
		
		//---Default Purchased States---
		ModelConditionState = UPGRADE_IVORY_TOWER USER_2
			Model           = GBFITower_A
		End
		
		//---Build Up---
		AnimationState = UPGRADE_IVORY_TOWER USER_2
			Animation					= RiseUp
				AnimationName				= GBFITower_ASKL.GBFITower_ABLD
				AnimationMode				= ONCE
				AnimationSpeedFactorRange	= 8.0 8.0
			End
		End

		//---Snow---
		ModelConditionState = SNOW UPGRADE_IVORY_TOWER
			Model			= GBFITower
			Texture			= GBFortress1.tga GBFortress1_Snow.tga
	    End
		
		ModelConditionState = UPGRADE_IVORY_TOWER
			Model           = GBFITower
		End
	    		
	End

;--------------------------------
	Draw = W3DScriptedModelDraw ModuleTag_HouseOfHealingDraw
		OkToChangeModelColor	= Yes
		StaticModelLODMode		= Yes // Will append M or L to the skin name depending on GameLOD

		DefaultModelConditionState
			Model           = None
		End
		
		//---Build Up---
		ModelConditionState = UPGRADE_HOUSE_OF_HEALING USER_3 DAMAGED
			Model		= GBFHeal_A
			Texture		= GBFortress1.tga GBFortress1D.tga
		End

		ModelConditionState = UPGRADE_HOUSE_OF_HEALING USER_3 REALLYDAMAGED
			Model		= GBFHeal_A
			Texture		= GBFortress1.tga GBFortress1D.tga
		End

		ModelConditionState = UPGRADE_HOUSE_OF_HEALING USER_3 UPGRADE_NUMENOR_STONEWORK
			Model		= GBFHeal_A
			Texture		= GBFortress1.tga GBFortress1_U.tga
		End
		ModelConditionState = UPGRADE_HOUSE_OF_HEALING USER_3 SNOW
			Model		= GBFHeal_A
			Texture		= GBFortress1.tga GBFortress1_Snow.tga
		End
		ModelConditionState = UPGRADE_HOUSE_OF_HEALING USER_3
			Model		= GBFHeal_A
		End
		AnimationState = UPGRADE_HOUSE_OF_HEALING USER_3
			Animation					= RiseUp
				AnimationName				= GBFHeal_ASKL.GBFHeal_ABLD
				AnimationMode				= ONCE				
				AnimationSpeedFactorRange	= 5.0 5.0
			End
		End

		//---Damage States---
		ModelConditionState		= UPGRADE_HOUSE_OF_HEALING DAMAGED
			Model		= GBFHeal
			Texture		= GBFortress1.tga GBFortress1D.tga
		End

		ModelConditionState		= UPGRADE_HOUSE_OF_HEALING REALLYDAMAGED
			Model		= GBFHeal_D2			
		End

		AnimationState			= UPGRADE_HOUSE_OF_HEALING REALLYDAMAGED
			Animation			= ReallyDamaged
				AnimationName	= GBFHeal_D2SKL.GBFHeal_D2AN
				AnimationMode   = ONCE
			End
		End

		ModelConditionState		= UPGRADE_HOUSE_OF_HEALING RUBBLE
			Model		= GBFHeal_D3
		End

		AnimationState			= UPGRADE_HOUSE_OF_HEALING RUBBLE
			Animation			= Destroyed
				AnimationName	= GBFHeal_D3SKL.GBFHeal_D3AN
				AnimationMode   = ONCE
			End
		End

		//---Stonework upgrade
		ModelConditionState = UPGRADE_NUMENOR_STONEWORK UPGRADE_HOUSE_OF_HEALING
			Model		= GBFHeal
			Texture		= GBFortress1.tga GBFortress1_U.tga
		End
	    		
		//---Snow---
		ModelConditionState = SNOW UPGRADE_HOUSE_OF_HEALING
			Model			= GBFHeal
			Texture			= GBFortress1.tga GBFortress1_Snow.tga
	    End
	    		
		//---Default Purchased States
		ModelConditionState = UPGRADE_HOUSE_OF_HEALING
			Model           = GBFHeal
		End
	    
	End

;--------------------------------
	Draw = W3DScriptedModelDraw ModuleTag_DrawDoor
	     
		DefaultModelConditionState
			Model = GBFDoor_DRC
		End

		//---Damage States---		
		ModelConditionState   = DAMAGED DOOR_1_WAITING_OPEN
			Model		= GBFDoor_DRO
			Texture		= GBFortress1.tga GBFortress1D.tga			
		End  

		ModelConditionState   = REALLYDAMAGED DOOR_1_WAITING_OPEN
			Model		= GBFDoor_DRO
			Texture		= GBFortress1.tga GBFortress1D.tga			
		End  

		ModelConditionState = DAMAGED DOOR_1_CLOSING
			Model		= GBFDoor_DRCA
			Texture		= GBFortress1.tga GBFortress1D.tga			
		End

		ModelConditionState = REALLYDAMAGED DOOR_1_CLOSING
			Model		= GBFDoor_DRCA
			Texture		= GBFortress1.tga GBFortress1D.tga			
		End

		ModelConditionState = DAMAGED
			Model		= GBFDoor_DRC
			Texture		= GBFortress1.tga GBFortress1D.tga			
		End

		ModelConditionState = REALLYDAMAGED
			Model		= GBFDoor_DRC
			Texture		= GBFortress1.tga GBFortress1D.tga			
		End

		ModelConditionState = RUBBLE
			Model		= GBFDoor_D3
		End

		AnimationState	= RUBBLE
			Animation	= Door_Destroyed
				AnimationName		= GBFDoor_D3.GBFDoor_D3
				AnimationMode		= ONCE
				AnimationBlendTime	= 50
			End			
		End
	     
		//---Normal States---
		ModelConditionState   = DOOR_1_OPENING
			Model               = GBFDoor_DROA
		End
	    
		AnimationState			=	DOOR_1_OPENING
			Animation           =	GBFDoor_DRO
				AnimationName   =	GBFDoor_DROA.GBFDoor_DROA
				AnimationMode   =	ONCE					
			End		
		End 
	   
		ModelConditionState   = DOOR_1_CLOSING
			Model               = GBFDoor_DRCA
			ParticleSysBone		= NONE trollCageDust
		End  
	   
   		AnimationState			=	DOOR_1_CLOSING
			Animation           =	GBFDoor_DRCA
				AnimationName   =	GBFDoor_DRCA.GBFDoor_DRCA
				AnimationMode   =	ONCE				
			End
		End   
	   
		ModelConditionState   = DOOR_1_WAITING_OPEN
			Model               = GBFDoor_DRO			
		End  
	    
		AnimationState			=	DOOR_1_WAITING_OPEN
		End   

		ModelConditionState  = POST_RUBBLE
			Model         = None
		End

		ModelConditionState  = POST_COLLAPSE
			Model         = None
		End
	  
	End

	//----------the Bib
    Draw = W3DFloorDraw ModuleTag_DrawFloor    
  		ModelName		= GBFortress_Bib
  		WeatherTexture SNOWY GBFortress_bib_snow.tga
	End

	// ***DESIGN parameters ***
	DisplayName         = OBJECT:MenFortress
	Description 	    = OBJECT:MenFortressDescription
	Side                = Atalante
	EditorSorting       = STRUCTURE
	ThreatLevel			= 1.0
	CommandPointBonus	= SH_GENERIC_FORTRESS_COMMAND_POINT_BONUS

	BuildCost           = SH_MEN_FORTRESS_BUILDCOST
	BuildTime           = SH_MEN_FORTRESS_BUILDTIME
	VisionRange         = SH_MEN_FORTRESS_VISION_RANGE      
	ShroudClearingRange = SH_MEN_FORTRESS_SHROUD_CLEAR

	WeaponSet
		Weapon				= PRIMARY FortressArrowTowerBow
		AutoChooseSources	= PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
	End 

	ArmorSet
		Conditions        = None
		Armor             = FortressArmor
	;	DamageFX          = StructureDamageFXNoShake
	End

	CommandSet				= AtalanteFortressCommandSet

 
	; *** AUDIO Parameters ***

	#include "..\..\..\Includes\StandardBuildingEvaEvents.inc"

	EvaEventDieOwner 				= EvaFortressDie

	VoiceSelect         			= MenFortressSelect
	VoiceSelectUnderConstruction	= BuildingGoodVoiceSelectUnderConstruction

	SoundOnDamaged					= BuildingLightDamageStone
	SoundOnReallyDamaged			= BuildingHeavyDamageStone

	UnitSpecificSounds
		UnderConstruction			= BuildingBigConstructionLoop	;// Built first time
		;//UnderRepairFromDamage	= NoSound						;// Repaired No animation on the building, so don't bother playing sound
		UnderRepairFromRubble		= BuildingBigConstructionLoop	;// Repaired from completely destroyed (not used???)
	End

	CampnessValue = CAMPNESS_FORTRESS

	; *** ENGINEERING Parameters ***
	RadarPriority       = STRUCTURE
 	KindOf				= PRELOAD COMMANDCENTER VITAL_FOR_BASE_SURVIVAL STRUCTURE IMMOBILE CASTLE_KEEP MP_COUNT_FOR_VICTORY SELECTABLE FS_FACTORY AUTO_RALLYPOINT MADE_OF_WOOD SCORE DOZER_FACTORY CAN_CAST_REFLECTIONS

	Behavior            = GettingBuiltBehavior ModuleTag_GettingBuiltBehavior
		WorkerName	= GondorWorkerNoSelect
		SpawnTimer	= SH_DEFAULT_STRUCTURE_HEALDELAY
	End

     Behavior = CastleMemberBehavior ModuleTag_CMB
		BeingBuiltSound = BuildingBigConstructionLoop
     End 

	;-----------------------------------------------
	;Used for hero revival and initial construction     
	Behavior = ProductionUpdate ProductionUpdateModuleTag
		ProductionModifier		; An object-local discount.  
			RequiredUpgrade = Upgrade_MenFortressBanners 
			CostMultiplier = 0.80
			ModifierFilter = NONE +AtalanteBuilder
		End
		ProductionModifier		
			RequiredUpgrade = Upgrade_MenFortressBanners 
			CostMultiplier = 0.90
			TimeMultiplier = 0.90
			HeroPurchase = Yes	; Instead of an object filter, needs to be explicitly hero-revival-system compatible
			ModifierFilter = NONE +HERO
		End
		ProductionModifier		
			RequiredUpgrade = Upgrade_MenFortressHouseOfHealing
			CostMultiplier = 0.80
			TimeMultiplier = 0.80
			HeroRevive = Yes
			ModifierFilter = NONE +HERO
		End

  		NumDoorAnimations            = 1
		DoorOpeningTime              = 3000  ;in mSeconds how long you want doors to be in open state
		DoorWaitOpenTime             = 3000  ;in mSeconds time the door stays open, so units can exit
		DoorCloseTime                = 3000  ;in mSeconds how long you want doors to be in open state		
	End
	Behavior = QueueProductionExitUpdate ModuleTag_QueuePEU
		UnitCreatePoint   = X:0.0 Y:0.0 Z:0.0
		NaturalRallyPoint = X:80.0 Y:0.0 Z:0.0;NaturalRallyPointX must always match GeometryMajorRadius!
		ExitDelay = 400 ; Mainly for the multiple produced Red Guard.  Make them come out one at a time.
	End  
	;-----------------------------------------------

	Body                = StructureBody ModuleTag_05
		MaxHealth         = SH_MEN_FORTRESS_HEALTH
		MaxHealthDamaged        = SH_MEN_FORTRESS_HEALTH_DAMAGED
		MaxHealthReallyDamaged	= SH_MEN_FORTRESS_HEALTH_REALLY_DAMAGED
	End
 
	Behavior                  = StructureCollapseUpdate ModuleTag_08
		MinCollapseDelay        = 000
		MaxCollapseDelay        = 000
		CollapseDamping         = .5
		MaxShudder              = 0.6
		MinBurstDelay           = 250
		MaxBurstDelay           = 800
		BigBurstFrequency       = 4
		FXList                  = INITIAL   FX_FortressCollapse
		;FXList                  = ALMOST_FINAL  FX_FortressCollapse
		DestroyObjectWhenDone	= Yes
		CollapseHeight			= 155
	End

	Behavior = CitadelSlaughterHordeContain ModuleTag_SlaughterMe
		PassengerFilter						= SH_GENERIC_FACTION_SLAUGHTERABLE
		ObjectStatusOfContained				= UNSELECTABLE ENCLOSED
		CashBackPercent						= 200%		
		ContainMax              			= 99; give it a huge capacity, just in case player sends his whole army in at once
		AllowEnemiesInside					= No
		AllowAlliesInside					= No
 		AllowNeutralInside					= No
 		AllowOwnPlayerInsideOverride		= Yes
		EnterSound							= MordorSlaughterhouseEnterSound
		EntryOffset							= X:125.0 Y:0.0 Z:0.0
		EntryPosition						= X:30.0 Y:0.0 Z:0.0		// entry position needs to be offset from the root transform, otherwise fortress obscures point.

		ExitOffset							= X:125.0 Y:0.0 Z:0.0
		StatusForRingEntry					= HOLDING_THE_RING
		UpgradeForRingEntry					= Upgrade_RingHero Upgrade_FortressRingHero
		ObjectToDestroyForRingEntry			= NONE +TheDroppedRing
		FXForRingEntry						= FX_OneRingFlare
	End

	// Hide all the Improvements by default
	Behavior = SubObjectsUpgrade ModuleTag_HideAll
		TriggeredBy		= Upgrade_StructureLevel1
		HideSubObjects	= GBFFLAMING GBFFLAG
	End

	// Boiling Oil special power, bought as improvement ;;;
	Behavior = UnpauseSpecialPowerUpgrade ModuleTag_OilEnabler
		SpecialPowerTemplate = SpecialAbilityMenFortressBoilingOil
		TriggeredBy = Upgrade_MenFortressBoilingOil
	End
	Behavior = SpecialPowerModule ModuleTag_OilStarter       
		SpecialPowerTemplate      = SpecialAbilityMenFortressBoilingOil
		UpdateModuleStartsAttack  = Yes
		StartsPaused		  	  = Yes
	End
	Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_OilWeaponFireUpdate   
		SpecialPowerTemplate    = SpecialAbilityMenFortressBoilingOil
		WhichSpecialWeapon		= 1

		UnpackTime              = 5200 
		PackTime                = 4600
		
		SpecialWeapon			= MenFortressBoilingOilWeapon
	End
	
	Behavior = ModelConditionUpgrade ModuleTag_ShowTheOil
		TriggeredBy				= Upgrade_MenFortressBoilingOil
		AddConditionFlags		= UPGRADE_BOILING_OIL
		AddTempConditionFlag	= ModelConditionState:USER_1 //For buildup
		TempConditionTime		= 5.0						 //try to match buildup anim time
		Permanent				= Yes
	End
	
	Behavior = AudioLoopUpgrade ModuleTag_BoilingOilBuildLoop
		TriggeredBy			= Upgrade_MenFortressBoilingOil
		SoundToPlay			= WallConstructionLoop
		KillOnDeath         = Yes
		KillAfterMS			= 4000  ; Should match the length of the build-up animation [Or a little shorter since sounds take a little while to die]
	End

	// Numeror Stonework improvement, just an upgrade
	Behavior = CastleUpgrade ModuleTag_PassOutNumenorStoneworkUpgrade
		TriggeredBy	= Upgrade_MenFortressNumenorStoneworkTrigger
		Upgrade		= Upgrade_MenFortressNumenorStonework
		WallUpgradeRadius = SH_MEN_FORTRESS_WALL_EFFECTIVE_RADIUS
	End
	
	Behavior = AttributeModifierUpgrade ModuleTag_Reinforced
		TriggeredBy				= Upgrade_MenFortressNumenorStonework
		AttributeModifier		= NumenorStoneworkKeep_Bonus
	End

	Behavior = ModelConditionUpgrade ModuleTag_ShowTheStones
		TriggeredBy			= Upgrade_MenFortressNumenorStonework		
		AddConditionFlags	= UPGRADE_NUMENOR_STONEWORK
		Permanent			= Yes
	End

	// Flaming Munitions improvement, just an upgrade, but doesn't do anything for us.
	Behavior = CastleUpgrade ModuleTag_PassOutFlamingMunitionsUpgrade
		TriggeredBy	= Upgrade_GoodFortressFlamingMunitionsTrigger
		Upgrade		= Upgrade_GoodFortressFlamingMunitions
	End
	
	Behavior = StatusBitsUpgrade ModuleTag_FakeOut ; I need to react to the upgrade, so I can have it for when new construction asks me for all the upgrades
		TriggeredBy	= Upgrade_GoodFortressFlamingMunitions
	End
	
	Behavior = SubObjectsUpgrade ModuleTag_ShowTorches
		TriggeredBy		= Upgrade_GoodFortressFlamingMunitions
		ShowSubObjects	= GBFFLAMING
	End
	
	// Banners improvement, the half that gives an aura bonus, not the purchase discount part (that is in the ProductionUpdate)
	Behavior = AttributeModifierAuraUpdate ModuleTag_BannerLeadership
		StartsActive	= No ;If no, requires upgrade to turn on.
		BonusName		= MenFortressBannersLeadership
		TriggeredBy		= Upgrade_MenFortressBanners
		RefreshDelay	= 2000
		Range			= 300
		ObjectFilter	= SH_GENERIC_BUFF_RECIPIENT_OBJECT_FILTER
	End	

	Behavior = SubObjectsUpgrade ModuleTag_ShowBanners
		TriggeredBy		= Upgrade_MenFortressBanners
		ShowSubObjects	= GBFFLAG
	End
	
	// House of Healing improvement, Purchase discount is in ProductionUpdate
	Behavior = ModelConditionUpgrade ModuleTag_ShowHouseOfHealing
		TriggeredBy				= Upgrade_MenFortressHouseOfHealing
		AddConditionFlags		= UPGRADE_HOUSE_OF_HEALING
		AddTempConditionFlag	= ModelConditionState:USER_3 //For buildup
		TempConditionTime		= 7.0						 //try to matc
		Permanent			= Yes
	End

	Behavior = PassiveAreaEffectBehavior ModuleTag_HouseOfHealingHealer
		UpgradeRequired			= Upgrade_MenFortressHouseOfHealing
		EffectRadius			= 200 // please update the decal size in experience lvl INI if you change this... the value there is about 2.2x the value here		
		PingDelay				= 2000
		HealPercentPerSecond	= 3%
		AllowFilter				= ANY +INFANTRY +CAVALRY +HERO -MACHINE +MONSTER -IMMOBILE +DOZER
		NonStackable			= Yes
		HealFX					= FX_SpellHealUnitHealBuff
	End

	Behavior = BannerCarrierUpdate BannerCarrierUpdateModuleTag
		UpgradeRequired			= Upgrade_MenFortressHouseOfHealing
		IdleSpawnRate			= 5000							// spawn a new member every n seconds when idle (in miliseconds)		
		UnitSpawnFX				= FX_BannerCarrierSpawnUnit		// name of particle FX to use when the BannerCarrier spawns a new unit		

		// This well object acts like a banner carrier except it spawns unit on nearby hordes instead of itself.
		ReplenishNearbyHorde	= Yes
		ScanHordeDistance		= 200
	End

	Behavior = AudioLoopUpgrade ModuleTag_HouseOfHealingBuildLoop
		// Play a "build loop" while the House of Healing is building up
		TriggeredBy			= Upgrade_MenFortressHouseOfHealing
		//ConflictsWith		= Upgrade_PosternGate Upgrade_WallBanner
		SoundToPlay			= BuildingConstructionLoop
		KillOnDeath         = Yes
		KillAfterMS			= 5000  ; Should match the length of the build-up animation [Or a little shorter since sounds take a little while to die]
	End

	Behavior = CastleUpgrade ModuleTag_PassOutHouseOfHealingUpgrade
		TriggeredBy	= Upgrade_MenFortressHouseOfHealing
		Upgrade		= Upgrade_MenFortressHouseOfHealing
	End
	
	// Ivory Tower improvement, Gives a bonus to me, as well as unlocking a spell
	Behavior = AttributeModifierUpgrade ModuleTag_IvoryTowerBonus
		AttributeModifier	= MenFortressIvoryTowerBonus
		TriggeredBy			= Upgrade_MenFortressIvoryTower Upgrade_MenFortressNumenorStonework
		RequiresAllTriggers = Yes
	End	
	
	Behavior = GeometryUpgrade TowerGeom
		TriggeredBy			= Upgrade_MenFortressIvoryTower Upgrade_MenFortressNumenorStonework
		RequiresAllTriggers	= Yes
		ShowGeometry		= HighTowerGeom
	End

	Behavior = UnpauseSpecialPowerUpgrade ModuleTag_IvoryTowerVisionEnabler
		SpecialPowerTemplate = SpecialAbilityMenFortressIvoryTowerVision
		TriggeredBy = Upgrade_MenFortressIvoryTower Upgrade_MenFortressNumenorStonework
		RequiresAllTriggers = Yes
	End
	Behavior				 = OCLSpecialPower ModuleTag_IvoryTowerVision
		SpecialPowerTemplate = SpecialAbilityMenFortressIvoryTowerVision
		StartsPaused		 = Yes
		OCL                  = SpecialPowerIvoryTowerVision
		CreateLocation       = CREATE_AT_LOCATION
	End
	
	Behavior = AudioLoopUpgrade ModuleTag_IvoryTowerBuildLoop
		; Play a "build loop" while the IvoryTower is building up
		TriggeredBy			= Upgrade_MenFortressIvoryTower 	;Upgrade_MenFortressNumenorStonework
		;ConflictsWith		= Upgrade_PosternGate Upgrade_WallBanner
		SoundToPlay			= BuildingBigConstructionLoop
		KillOnDeath         = Yes
		KillAfterMS			= 2500  ; Should match the length of the build-up animation [Or a little shorter since sounds take a little while to die]
	End

	Behavior = ModelConditionUpgrade ModuleTag_ShowTheTower
		TriggeredBy				= Upgrade_MenFortressIvoryTower Upgrade_MenFortressNumenorStonework
		RequiresAllTriggers 	= Yes
		AddConditionFlags		= UPGRADE_IVORY_TOWER
		AddTempConditionFlag	= ModelConditionState:USER_2 //For buildup
		TempConditionTime		= 10.0						 //try to match buildup anim time
		Permanent				= Yes
	End
	
	#include "..\..\..\FortressRingFunc.inc"
	
	Behavior = AIUpdateInterface ModuleTag_AI
		AILuaEventsList				= FortressFunctions
		AutoAcquireEnemiesWhenIdle	= Yes
		MoodAttackCheckRate			= 250
	End

	//Money Maker
	Behavior = AutoDepositUpdate AutoDepositModuleTag
		DepositTiming       	= SH_GENERIC_KEEP_MONEY_TIME
		DepositAmount       	= SH_GENERIC_KEEP_MONEY_AMOUNT 
		InitialCaptureBonus 	= 0  // no initial bonus
	End

	Behavior = TerrainResourceBehavior ModuleTag_NewMoneyDeadSpot
		Radius			= SH_GENERIC_KEEP_MONEY_RANGE	// How far we try to claim ground
		MaxIncome		= 0							// If we were to get all we wanted, how much we would earn.  Linear slope to 0 at 0% claim
		IncomeInterval	= 999999					// How often (in msec) we give that much money
		HighPriority	= Yes						// A high priority claim gets to pretend it was there first.
	End
	
	GeometryIsSmall       = No
	
	
	Geometry              = BOX						// Main body
	GeometryMajorRadius   = 49
	GeometryMinorRadius   = 49
	GeometryHeight        = 50
	
	AdditionalGeometry	= BOX						// 4 towers
	GeometryMajorRadius	= 12.0
	GeometryMinorRadius	= 12.0
	GeometryHeight		= 100.0
	GeometryOffset		= X:-40 Y:-40 Z:0
	
	AdditionalGeometry	= BOX
	GeometryMajorRadius	= 12.0
	GeometryMinorRadius	= 12.0
	GeometryHeight		= 100.0
	GeometryOffset		= X:-40 Y:40 Z:0
	
	AdditionalGeometry	= BOX
	GeometryMajorRadius	= 12.0
	GeometryMinorRadius	= 12.0
	GeometryHeight		= 100.0
	GeometryOffset		= X:40 Y:-40 Z:0	
	
	AdditionalGeometry	= BOX
	GeometryMajorRadius	= 12.0
	GeometryMinorRadius	= 12.0
	GeometryHeight		= 100.0
	GeometryOffset		= X:40 Y:40 Z:0
	
	AdditionalGeometry		= BOX
	GeometryName			= HighTowerGeom
	GeometryMajorRadius   	= 12
	GeometryMinorRadius   	= 12
	GeometryHeight        	= 175
	GeometryOffset			= X:0 Y:0 Z:0
	GeometryUsedForHealthBox = No
	
	GeometryContactPoint = X:-57		Y:57		Z:0			Repair
	GeometryContactPoint = X:57			Y:-57		Z:0			Repair
	GeometryContactPoint = X:49			Y:36.435	Z:0
	GeometryContactPoint = X:-32.763	Y:-46.121	Z:0
	GeometryContactPoint = X:0			Y:0			Z:180		Swoop
	
	Shadow                = SHADOW_VOLUME
	BuildCompletion     = PLACED_BY_PLAYER
End

//------------------------------------------------------------------------------
// This is the one object that you would place on a map and that the porter builds.
// It unpacks in to the citadel and the buildplots.  It's an old CampFlag.
Object AtalanteFortress											
	
	SelectPortrait = BPGFortress
	
	Draw                = W3DScriptedModelDraw ModuleTag_01
		OkToChangeModelColor	= Yes
		StaticModelLODMode		= Yes ;// Will append M or L to the skin name depending on GameLOD

		DefaultModelConditionState
			Model           = None
		End

		IdleAnimationState
		End

		;//Need this since the default condition is none
		ModelConditionState = WORLD_BUILDER
			Model	= GBFortress
		End

		;//Phantom structure when placing a new building to be build
		ModelConditionState = BUILD_PLACEMENT_CURSOR
			Model	= None	//GBFortress
		End

		;//Structure that stays where you will be building until the porter reaches the place to start building.
		ModelConditionState =  PHANTOM_STRUCTURE
			Model	= GBFortress
		End		

		;//	Animation state for build placement cursor
		AnimationState = BUILD_PLACEMENT_CURSOR
			BeginScript
   				CurDrawableHideSubObject("FIREGLOW")
   				CurDrawableHideSubObject("FLAMES")
   				CurDrawableHideSubObject("GBFFLAG")
   				CurDrawableHideSubObject("GBFFLAMING")
			EndScript
		End
		
		;//	Animation state for phantom structure
		AnimationState = PHANTOM_STRUCTURE
			BeginScript
   				CurDrawableHideSubObject("FIREGLOW")
   				CurDrawableHideSubObject("FLAMES")
   				CurDrawableHideSubObject("GBFFLAG")
   				CurDrawableHideSubObject("GBFFLAMING")
			EndScript
		End

		ModelConditionState  = RUBBLE
			Model         = GBFortress_D3
		End
    
		AnimationState	= RUBBLE
			Animation	= Fortress_Rubble
				AnimationName		= GBFortress_D3SK.GBFortress_D3AN
				AnimationMode		= ONCE				
			End	
			EnteringStateFX	= FX_FortressCollapse		
		End

		ModelConditionState = ACTIVELY_BEING_CONSTRUCTED SNOW ;//UNPACKING
			Model			= GBFortress_A	
			Texture			= GBFortress1.tga GBFortress1_Snow.tga		
		End
		ModelConditionState = ACTIVELY_BEING_CONSTRUCTED ;//UNPACKING
			Model			= GBFortress_A			
		End

		AnimationState = ACTIVELY_BEING_CONSTRUCTED
			Animation					= UpAndStill
				AnimationName			= GBFortress_ASK.GBFortress_ABL
				AnimationMode			= MANUAL
			End
			BeginScript
				CurDrawablePlaySound("GondorBarracksBeginConstruction")
			EndScript
			ParticleSysBone = NONE BuildingContructDustCastles FollowBone:YES
			StateName = BeingConstructed
		End
	End

	//Door
	Draw = W3DScriptedModelDraw ModuleTag_DrawDoor
	     
		DefaultModelConditionState
			Model = None
		End

		//---Build Up---
		ModelConditionState   = ACTIVELY_BEING_CONSTRUCTED
			Model               = GBFDoor_A
		End
	    
		AnimationState        = ACTIVELY_BEING_CONSTRUCTED
			Animation           = GBFDoor_A
				AnimationName     = GBFDoor_A.GBFDoor_A
				AnimationMode     = MANUAL
			End
		End
	End

	ArmorSet
		Conditions     = None
  		Armor           = FortressArmor
		DamageFX        = EmptyDamageFX   ; just to avoid an assert
	End

	Side                = Atalante
	EditorSorting       = STRUCTURE

	PlacementViewAngle = -45 ; A -90 makes the door of the base face natural south.  0 would have it to the East.
	
	BuildCost           = SH_MEN_FORTRESS_BUILDCOST
	BuildTime           = SH_MEN_FORTRESS_BUILDTIME


	DisplayName         = OBJECT:MenFortress

	// *** AUTO RESOLVE DATA ***
	; When fighting an auto-resolve battle, a World Map castle actually becomes this unit
	AutoResolveUnitType = AutoResolveUnit_Fortress
    
    	AutoResolveBody = AutoResolve_MenFortressBody
    
    	AutoResolveArmor
    		Armor = AutoResolve_MenFortressArmor
    	End

    	AutoResolveWeapon
    		Weapon = AutoResolve_MenFortressWeapon
    	End

	; *** AUDIO Paraeters ***
	#include "..\..\..\Includes\StandardBuildingEvaEvents.inc"

	VoiceFullyCreated				= EVA:FortressComplete-Builder
	VoiceSelect         			= MenFortressSelect
	VoiceSelectUnderConstruction	= BuildingGoodVoiceSelectUnderConstruction

	SoundOnDamaged					= BuildingLightDamageStone
	SoundOnReallyDamaged			= BuildingHeavyDamageStone

	UnitSpecificSounds
		UnderConstruction			= BuildingBigConstructionLoop	;// Built first time
		;//UnderRepairFromDamage	= NoSound						;// Repaired No animation on the building, so don't bother playing sound
		UnderRepairFromRubble		= BuildingBigConstructionLoop	;// Repaired from completely destroyed (not used???)
	End

	ClientBehavior = ModelConditionAudioLoopClientBehavior ModuleTag_PlayCollapseSound
		ModelCondition = REQUIRED:RUBBLE Sound:BuildingSink
	End

	; *** ENGINEERING Parameters ***  
	RadarPriority       = STRUCTURE
	KindOf              = STRUCTURE SELECTABLE IMMOBILE BASE_FOUNDATION MP_COUNT_FOR_VICTORY BASE_SITE CAN_SEE_THROUGH_STRUCTURE LIVING_WORLD_BUILDING_MIRROR CAN_CAST_REFLECTIONS	
	
	Body                = StructureBody ModuleTag_05
		MaxHealth         = SH_MEN_FORTRESS_HEALTH	
	End
	  
	Behavior = CastleBehavior ModuleTag_castle
		CastleToUnpackForFaction	= Atalante Fortress_Men

		FilterValidOwnedEntries = ANY +STRUCTURE +WALK_ON_TOP_OF_WALL +BASE_FOUNDATION +TACTICAL_MARKER		;Anything that does not fit this filter will be given to the neutral player, so the template can have rocks and props.

		MaxCastleRadius				= 120.0
		InstantUnpack				= Yes		
		KeepDeathKillsEverything	= Yes

		EvaEnemyCastleSightedEvent = EnemyFortressSighted
	End 
 
	Behavior                  = StructureCollapseUpdate ModuleTag_08
		MinCollapseDelay        = 000
		MaxCollapseDelay        = 000
		CollapseDamping         = .5
		MaxShudder              = 0.6
		MinBurstDelay           = 250
		MaxBurstDelay           = 800
		BigBurstFrequency       = 4
		FXList                  = INITIAL   FX_FortressCollapse
		;FXList                  = ALMOST_FINAL  FX_FortressCollapse
		DestroyObjectWhenDone	= Yes
		CollapseHeight			= 155
	End
  
	Behavior            = GettingBuiltBehavior ModuleTag_GettingBuiltBehavior
		WorkerName	= GondorWorkerNoSelect
		SpawnTimer	= SH_DEFAULT_STRUCTURE_HEALDELAY
	End

	Behavior = AIUpdateInterface ModuleTag_AI
		AILuaEventsList				= FortressFunctions	
	End
	
	//Main
	Geometry              	= BOX
	GeometryMajorRadius   	= 64
	GeometryMinorRadius   	= 64
	GeometryHeight        	= 50

	//Plot locations
	AdditionalGeometry		= BOX
	GeometryName			= Plots
	GeometryMajorRadius		= 10.0
	GeometryMinorRadius		= 10.0
	GeometryHeight			= 0.8
	GeometryOffset			= X:64.0 Y:-64.0 Z:0	

	AdditionalGeometry		= BOX
	GeometryName			= Plots
	GeometryMajorRadius		= 10.0
	GeometryMinorRadius		= 10.0
	GeometryHeight			= 0.8
	GeometryOffset			= X:00 Y:-62.0 Z:0	

	AdditionalGeometry		= BOX
	GeometryName			= Plots
	GeometryMajorRadius		= 10.0
	GeometryMinorRadius		= 10.0
	GeometryHeight			= 0.8
	GeometryOffset			= X:-64.0 Y:-64.0 Z:0	

	AdditionalGeometry		= BOX
	GeometryName			= Plots
	GeometryMajorRadius		= 10.0
	GeometryMinorRadius		= 10.0
	GeometryHeight			= 0.8
	GeometryOffset			= X:-64.0 Y:64.0 Z:0

	AdditionalGeometry		= BOX
	GeometryName			= Plots
	GeometryMajorRadius		= 10.0
	GeometryMinorRadius		= 10.0
	GeometryHeight			= 0.8
	GeometryOffset			= X:0 Y:62.0 Z:0

	AdditionalGeometry		= BOX
	GeometryName			= Plots
	GeometryMajorRadius		= 10.0
	GeometryMinorRadius		= 10.0
	GeometryHeight			= 0.8
	GeometryOffset			= X:64.0 Y:64.0 Z:0

	GeometryIsSmall			= No
	Shadow					= SHADOW_VOLUME

	GeometryContactPoint = X:-90		Y:82		Z:0			Repair
	GeometryContactPoint = X:84		Y:-79		Z:0			Repair
	GeometryContactPoint = X:5.576		Y:44.987	Z:0
	GeometryContactPoint = X:-38.348	Y:-42.113	Z:0
	GeometryContactPoint = X:-28.448	Y:-0.003	Z:75.14		Swoop
End

Code from commandset.ini: 

CommandSet AtalanteFortressCommandSet
	InitialVisible = 7
	1	= Command_ConstructAtalanteBuilder
	2   	= Command_SelectRevivablesMenFortress	
	3	= Command_FireWeaponMenFortressBoilingOil
	4	= Command_SpecialAbilityIvoryTowerVision
	6	= Command_Sell
	5   	= Command_SelectUpgradesMenFortress

	8	= Command_PurchaseUpgradeMenFortressBanners
	9	= Command_PurchaseUpgradeMenFortressHouseOfHealing
	10	= Command_PurchaseUpgradeMenFortressFlamingMunitions
	11	= Command_PurchaseUpgradeMenFortressBoilingOil
	12	= Command_PurchaseUpgradeMenFortressNumenorStonework
	13	= Command_PurchaseUpgradeMenFortressIvoryTower
	14	= Command_RadialBack

	15	= Command_RingHeroReviveSlot
	16	= Command_CreateAHeroReviveSlot
	17	= Command_GenericReviveSlot1
	18	= Command_GenericReviveSlot2		
	19	= Command_GenericReviveSlot3		
	20	= Command_GenericReviveSlot4		
	21	= Command_GenericReviveSlot5		
	22	= Command_GenericReviveSlot6		
	23	= Command_GenericReviveSlot7		
	24	= Command_RadialBack				
End

Code from playertemplate.ini: 

PlayerTemplate FactionAtalante
	Side              			= Atalante
	PlayableSide      			= Yes
	Evil			  			= No
	StartMoney        			= 0
	MaxLevelMP					= #DIVIDE( SH_PLAYER_MAX_PURCHASE_POINTS_DEFAULT SH_PLAYER_PURCHASE_POINTS_GRANTED )
	MaxLevelSP					= #DIVIDE( SH_PLAYER_MAX_PURCHASE_POINTS_GOOD SH_PLAYER_PURCHASE_POINTS_GRANTED )
	PreferredColor				= R:0 G:123 B:167
	StartingBuilding			= AtalanteFortress
	
	StartingUnit1 = AtalanteBuilder
	StartingUnitOffset1 = X:30 Y:200 Z:0
	StartingUnit0 = AtalanteBuilder
	StartingUnitOffset0 = X:1 Y:130 Z:0
	
	StartingUnitTacticalWOTR		= AtalanteBuilder
	StartingUnitTacticalWOTR		= AtalanteBuilder
	IntrinsicSciences				= SCIENCE_GOOD
	IntrinsicSciencesMP 			= SCIENCE_MEN_R
	SpellBook						= GoodSpellBook
	SpellBookMp						= MenRevisedSpellBook
	PurchaseScienceCommandSet		= GoodSpellStoreCommandSet
	PurchaseScienceCommandSetMP		= MenRevisedSpellStoreCommandSet
	DisplayName						= INI:FactionAtalante
	DefaultPlayerAIType				= MenSkirmishAI
	BeaconName						= MultiplayerBeacon
	LightPointsUpSound				= GondorLightPointsUp
	ObjectiveAddedSound				= Gui_MissionObjectiveNew
	ObjectiveCompletedSound			= Gui_MissionObjectiveCompleted
	InitialUpgrades					= Upgrade_AtalanteFaction

	// NOTE: It is very important that the create-a-hero be the first buildable hero, to ensure that the create-a-hero and the ring hero are always 
	// attached to the first two buttons in the command set.

	BuildableHeroesMP				= CreateAHero
	BuildableRingHeroesMP			= ElvenGaladriel_RingHero
	SpellStoreCurrentPowerLabel 	= APT:SpellStoreCurrentEvenstarPower
	SpellStoreMaximumPowerLabel 	= APT:SpellStoreMaximumEvenstarPower
	ResourceModifierObjectFilter 	= RESOURCE_MODIFIER_OBJECT_FILTER
	ResourceModifierValues			= 100 100 100 100 100 100 100 100 100 100 100
	MultiSelectionPortrait			= UPGondor_Army
	LoadScreenMusic					= Shell2MusicForLoadScreen
End

So...I need to make a .bse file? Anything else while I'm at it? >_0

 

EDIT: Made a .bse file. Referenced it in CastleToUnpackForFaction in the fortress (changed it to "fortress_atalante" instead of "fortress_men") and now when I start the game, no fortress at all shows up (and then I'm instantly defeated). Is there some other step I missed?


In Topic: New CAH class and powers crashing

01 July 2013 - 04:58 PM

I managed to find the problem, actually - it wasn't reading my armorset correctly, so it couldn't multiply attributes and resolve the armor data. That's what was making it crash. Thanks anyway!


In Topic: New CAH class and powers crashing

27 June 2013 - 10:29 PM

I actually found that and went over it several times. As far as I can tell, I haven't missed anything. That's what has me so confused.


In Topic: Help in my mod

27 June 2013 - 06:20 PM

Oh, it's no problem. Have fun with your lancers.