Jump to content


Photo

Fortress for a faction


  • Please log in to reply
6 replies to this topic

#1 acidRain

acidRain

    insane programmer

  • Members
  • 79 posts
  • Location:the place that never but always was
  • Projects:personal mods
  •  coder, occasional skinner, and all-around game-breaker

Posted 05 July 2013 - 04:03 AM

With all the coding I've done, I've never created a new faction. This has led to some interesting problems, but I've fixed all but one. Naturally, that one problem is a doozy.

 

I am trying to make a fortress with the MotW faction's model and everything, but obviously swapping out the commandset for a new fortress. Only, when I copied the code over and threw in my new faction's builder, in-game it still spawns the MotW faction builder. This has me confused - I changed the commandset and made a new object and assigned the start fortress (Object AtalanteFortress) in PlayerTemplate.ini. What gives?


WWJBD - What Would Jack Bauer Do?

#2 Elric

Elric

    Designer

  • Hosted
  • 2,857 posts
  • Projects:Middle-Earth Expanded
  •  Coder
  • Donated

Posted 05 July 2013 - 04:44 AM

Did you make the .bse file? 



#3 Lauri

Lauri

    Old man Lauri

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

Posted 05 July 2013 - 09:16 AM

Did you change the builder in playertemplate.ini?


T4A_Logo_-_article.png

The 4th Age version 0.8 has been released: Link


#4 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 05 July 2013 - 10:21 AM

What did you do, post some code, it might be more helpful for us to help find out where it went wrong :p


Ridder Geel

#5 acidRain

acidRain

    insane programmer

  • Members
  • 79 posts
  • Location:the place that never but always was
  • Projects:personal mods
  •  coder, occasional skinner, and all-around game-breaker

Posted 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?


Edited by acidRain, 05 July 2013 - 03:49 PM.

WWJBD - What Would Jack Bauer Do?

#6 Lauri

Lauri

    Old man Lauri

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

Posted 05 July 2013 - 07:13 PM

Did you name the .bse file fortress_atalante, or Fortress_Atalante? Capital letters count, so make sure it's the same. In fact, I think you should simply save it as fortress_atalante.bse, and reference it as fortress_atalante in the code.

Did you use the correct objects in the .bse file? If I'm not mistaken, you need to have AtalanteFortressCenterGeneric there, name it BASE and tick of the "Is a Base" in the Logical tab (when the object is selected).

Then add AtalanteFortressCitadel, and choose BASE in the "In Base:" list for that object. Then you're set I think.


T4A_Logo_-_article.png

The 4th Age version 0.8 has been released: Link


#7 acidRain

acidRain

    insane programmer

  • Members
  • 79 posts
  • Location:the place that never but always was
  • Projects:personal mods
  •  coder, occasional skinner, and all-around game-breaker

Posted 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!


WWJBD - What Would Jack Bauer Do?




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users