I'm trying to follow along with Fingulfin's tutorial "New Factions in BFME II Part II: Fortresses". I ended up with the exact same Worldbuilder error as in this thread: https://forums.revor...n/#entry1111829. I had a feeling this was a problem with the 'rohanfortress.ini' file itself, so I tried running BFME II directly and got this error message:
My understanding is that this could mean that there is a missing "End" somewhere in the INI file, but I honestly can't find where that would be.
Here is the file 'rohanfortress.ini':
Object RohanFortressCenterGeneric SelectPortrait = BPGFortress Draw = W3DScriptedModelDraw ModuleTag_01 DefaultModelConditionState Model = None End ModelConditionState = WORLD_BUILDER Model = NBasePin End End Side = Shire;Men 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 //------------------------------------------------------------------------------ // These are the four corner buildplots. Difference is just the BuildVariation flag they give the Expansion. Object RohanFortressExpansionPad;Corner SelectPortrait = BPGFortress_BuildPlot // *** ART Parameters *** Draw = W3DFloorDraw DrawFloorBase ModelName = GBFoundationB;RBFoundationNew;GBFoundationB ModelConditionState = WORLD_BUILDER Model = GBFoundationB;Name = GBFoundationB End End Draw = W3DScriptedModelDraw ModuleTag_DrawMain DefaultModelConditionState Model = WBFoundationP End ;//Remove the buildplot when it's been constructed on ModelConditionState = CONSTRUCTION_COMPLETE Model = None End End //PlacementViewAngle = 0 // ***DESIGN parameters *** DisplayName = OBJECT:MenBuildingFoundation Side = Shire;Men EditorSorting = STRUCTURE ThreatLevel = 1.0 BuildCost = 1 BuildTime = 5.0 // in seconds VisionRange = 0.0 // Shroud clearing distance ShroudClearingRange = 0 CommandSet = RohanFortressCommandSet;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 ;--------------------------------------primary RohanCitadel ---------------------------------------------------- Object RohanFortressKeep SelectPortrait = BPRohanCastle_Citadel ; *** ART Parameters *** Draw = W3DScriptedModelDraw ModuleTag_Draw OkToChangeModelColor = Yes UseStandardModelNames = Yes ExtraPublicBone = ARROWBONE01 ExtraPublicBone = ARROWBONE02 ExtraPublicBone = ARROWBONE03 ExtraPublicBone = ARROWBONE04 ExtraPublicBone = ARROWBONE05 ExtraPublicBone = ARROWBONE06 ExtraPublicBone = ARROWBONE07 ExtraPublicBone = ARROWBONE08 ExtraPublicBone = ARROWBONE09 ExtraPublicBone = ARROWBONE10 ExtraPublicBone = ARROWBONE11 ExtraPublicBone = ARROWBONE12 DefaultModelConditionState Model = RBCastKeep ; ParticleSysBone = smokebone01 TorchGlow ; ParticleSysBone = smokebone01 TorchSmokeBlack ; ParticleSysBone = smokebone02 TorchGlow ; ParticleSysBone = smokebone02 TorchSmokeBlack WeaponLaunchBone = PRIMARY ARROW_ WeaponFireFXBone = PRIMARY ARROW_ End IdleAnimationState StateName = STATE_None ;BeginScript ; Prev = CurDrawablePrevAnimationState() ; if Prev == "BeingConstructed" then ; Don't play completed sound when canceling build-in-progress or when ; destroyed halfway ; if not CurDrawableModelcondition( "DYING" ) then ; CurDrawablePlaySound("CampSoldierCompleteGeneric") ; end ; end ;EndScript End ;------------Build Up States ModelConditionState = ACTIVELY_BEING_CONSTRUCTED Model = RBCastKeep_A ; ParticleSysBone = NONE BuildingDoughnutCloud ParticleSysBone = NONE BuildingContructDust End AnimationState = ACTIVELY_BEING_CONSTRUCTED StateName = STATE_Constructing Animation AnimationName = RBCastKeep_A.RBCastKeep_A AnimationMode = MANUAL End BeginScript CurDrawablePlaySound("GondorBarracksBeginConstruction") CurDrawablePlaySound("BuildingTopple") EndScript End ModelConditionState = DESTROYED_WHILST_BEING_CONSTRUCTED Model = RBCastKeep_A ParticleSysBone NONE Explosion3 ParticleSysBone NONE ExplosiveMineSmoke02 End AnimationState = DESTROYED_WHILST_BEING_CONSTRUCTED StateName = STATE_DetroyedConstructing Animation AnimationName = RBCastKeep_A.RBCastKeep_A AnimationMode = ONCE_BACKWARDS AnimationBlendTime = 90 ; 3 seconds * 30 frames End ; Specifically no start last frame flag here. Flags = START_FRAME_FIRST End ;------------Build Up States ModelConditionState = BASE_BUILD Model = RBCastKeep_A ; ParticleSysBone = NONE BuildingDoughnutCloud ParticleSysBone = NONE BuildingContructDust End AnimationState = BASE_BUILD StateName = STATE_None Animation AnimationName = RBCastKeep_A.RBCastKeep_A AnimationMode = ONCE AnimationBlendTime = 0 AnimationSpeedFactorRange = 2.0 2.0 ; 300 frame anim, but need to shrink down to 5 seconds End BeginScript CurDrawablePlaySound("GondorBarracksBeginConstruction") CurDrawablePlaySound("BuildingTopple") EndScript End ModelConditionState = JUST_BUILT Model = RBCastKeep_A ; ParticleSysBone = NONE BuildingDoughnutCloud ParticleSysBone = NONE BuildingContructDust End AnimationState = JUST_BUILT StateName = STATE_None Animation AnimationName = RBCastKeep_A.RBCastKeep_A AnimationMode = MANUAL AnimationBlendTime = 0 End Flags = START_FRAME_FIRST End ModelConditionState = DAMAGED Model = RBCastKeep_D1 End AnimationState = DAMAGED StateName = STATE_None EnteringStateFX = FX_BuildingDamaged End ModelConditionState = REALLYDAMAGED Model = RBCastKeep_D2 ; ParticleSysBone NONE furnaceSmoke End AnimationState = REALLYDAMAGED StateName = STATE_None Animation = ReallyDamagedanimation AnimationName = RBCastKeep_D2.RBCastKeep_D2 AnimationMode = ONCE End EnteringStateFX = FX_BuildingReallyDamaged End End ; *** AUDIO Parameters *** ; #include "..\..\..\Includes\StandardBuildingEvaEvents.inc" VoiceSelect = RohanCitadelSelect SoundOnDamaged = BuildingLightDamageWood SoundOnReallyDamaged = BuildingHeavyDamageWood VoiceSelectUnderConstruction = BuildingGoodVoiceSelectUnderConstruction 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 EvaEventDieOwner = CitadelDie CampnessValue = CAMPNESS_FORTRESS ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior MaxUpdateRangeCap = 800 AnimationSound = Sound:BuildingHeavyDamageWood Animation:RBCastKeep_D3.RBCastKeep_D3 Frames:0 AnimationSound = Sound:BuildingSink Animation:RBCastKeep_D3.RBCastKeep_D3 Frames:25 AnimationSound = Sound:BuildingLightDamageWood Animation:RBCastKeep_D3.RBCastKeep_D3 Frames:105 End ; ***DESIGN parameters *** DisplayName = OBJECT:RohanCastleBaseKeep Side = Shire;Obsolete EditorSorting = STRUCTURE ThreatLevel = 1.0 BuildCost = 1000 BuildTime = 30.0 ; in seconds CommandSet = RohanCastleBaseKeepCommandSet ArmorSet Conditions = None Armor = CitadelArmor DamageFX = RohanWallDamageFX End ; *** ENGINEERING Parameters *** KindOf = PRELOAD COMMANDCENTER VITAL_FOR_BASE_SURVIVAL STRUCTURE SELECTABLE IMMOBILE SCORE CASTLE_KEEP MP_COUNT_FOR_VICTORY FS_FACTORY MADE_OF_WOOD DOZER CAN_CAST_REFLECTIONS AUTO_RALLYPOINT ; GARRISONABLE_UNTIL_DESTROYED GARRISON RadarPriority = STRUCTURE ;KeepSelectableWhenDead = Yes Body = ActiveBody ModuleTag_02 MaxHealth = 4000.0 End Behavior = GettingBuiltBehavior ModuleTag_04 SelfBuildingLoop = BuildingBigConstructionLoop ; Only played if we DON'T spawn a worker SelfRepairFromDamageLoop = NoSound ; This doesn't cause an animation, so don't bother playing a sound SelfRepairFromRubbleLoop = BuildingBigConstructionLoop End Behavior = CastleMemberBehavior ModuleTag_CMB BeingBuiltSound = BuildingBigConstructionLoop End ;----------------------------------------------- ;Used for hero revival and initial construction Behavior = ProductionUpdate ProductionUpdateModuleTag ; nothing, but is required if we have any Object-level Upgrades! End Behavior = QueueProductionExitUpdate ModuleTag_QueuePEU UnitCreatePoint = X:0.0 Y:-20.0 Z:0.0 NaturalRallyPoint = X:28.8 Y:-80.0 Z:0.0;NaturalRallyPointX must always match GeometryMajorRadius! ExitDelay = 300 ;Handles delays between units if multiple produced at a time. End ;----------------------------------------------- ; Note that structures with "RUBBLE" states should not use DestroyDie; such buildings are ; never truly destroyed, even when reduced to zero health. Also note that garrisonable ; buildings automatically stick around because GarrisonContain has it's own DieModule Behavior = KeepObjectDie ModuleTag_IWantRubble End ; Behavior = SlowDeathBehavior ModuleTag_SlowDeathWithoutRubble ; DestructionDelay = 6500 ; End ; Behavior = StructureCollapseUpdate ModuleTag_06 ; MinCollapseDelay = 5000 ; MaxCollapseDelay = 5000 ; CollapseDamping = .5 ; MaxShudder = 0.6 ; MinBurstDelay = 250 ; MaxBurstDelay = 800 ; BigBurstFrequency = 4 ; FXList = INITIAL FX_StructureMediumCollapse ; End Behavior = EvacuateDamage ModuleTag_evacuateDamage WeaponThatCausesEvacuation = MordorCatapultHumanHeads End ; Behavior = HordeGarrisonContain ModuleTag_hordeGarrison ; ObjectStatusOfContained = UNSELECTABLE CAN_ATTACK ; ContainMax = 4 ; DamagePercentToUnits = 0% ; PassengerFilter = ANY +INFANTRY +HORDE -CAVALRY -SUMMONED -WildSpiderling -WildSpiderlingHorde ; AllowEnemiesInside = Yes ; AllowNeutralInside = Yes ; NumberOfExitPaths = 1 ; Defaults to 1. Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn ; PassengerBonePrefix = PassengerBone:ARROWBONE KindOf:INFANTRY ; EntryOffset = X:0.0 Y:-45.0 Z:0.0 ; ExitOffset = X:0.0 Y:-45.0 Z:0.0 ; ; ;PassengersTestCollisionHeight = 80 ; ;Slots = 1 ; ;EnterSound = GarrisonEnter ; ;ExitSound = GarrisonExit ; ;ExitDelay = 250 ; ;GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting ; ;ForceOrientationContainer = No ; otherwise contained units can't orient themselves towards their targets... ; End Behavior = AutoDepositUpdate AutoDepositModuleTag DepositTiming = GENERIC_KEEP_MONEY_TIME ; in milliseconds DepositAmount = GENERIC_KEEP_MONEY_AMOUNT ; cash amount to deposit every DepositTiming InitialCaptureBonus = 0 ; no initial bonus End Behavior = BuildingBehavior BuildingModuleTag NightWindowName = WINDOW_N01 ; FireWindowName = WINDOW_F01 ; GlowWindowName = WINDOW_G01 End Geometry = BOX GeometryMajorRadius = 21.0 GeometryMinorRadius = 41.0 GeometryHeight = 51.0 AdditionalGeometry = CYLINDER GeometryMajorRadius = 57.0 GeometryMinorRadius = 0 GeometryHeight = 7.0 AdditionalGeometry = BOX GeometryMajorRadius = 12.0 GeometryMinorRadius = 12.0 GeometryHeight = 120.0 GeometryOffset = X:-1 Y:2 Z:0 GeometryIsSmall = No Shadow = SHADOW_VOLUME ; AttackContactPoint = X:-1 Y:2 Z:117 ; AttackContactPoint = X:-1 Y:2 Z:0 GeometryContactPoint = X:-1.538 Y:2.559 Z:149.812 Swoop GeometryContactPoint = X:-1.538 Y:2.559 Z:0 End
The "RohanFortressKeep" object is essentially copy-pasted from "RohanCastleBaseKeep" /obsolete/rohan/campsandcastles.ini. Part of the tutorial involved deleting the code for RUBBLE since it shouldn't apply to a fortress in BFME2. I went back through those lines to try and see whether I had left out an important "End" in those lines, but to be honest I can't tell (the indenting in the file isn't the best and I'm not familiar enough with INI code structure to know for sure). I've included it here, in case anybody else can decipher where I may have messed up:
;--------------------------------------primary RohanCitadel ---------------------------------------------------- Object RohanCastleBaseKeep SelectPortrait = BPRohanCastle_Citadel ; *** ART Parameters *** Draw = W3DScriptedModelDraw ModuleTag_Draw OkToChangeModelColor = Yes UseStandardModelNames = Yes ExtraPublicBone = ARROWBONE01 ExtraPublicBone = ARROWBONE02 ExtraPublicBone = ARROWBONE03 ExtraPublicBone = ARROWBONE04 ExtraPublicBone = ARROWBONE05 ExtraPublicBone = ARROWBONE06 ExtraPublicBone = ARROWBONE07 ExtraPublicBone = ARROWBONE08 ExtraPublicBone = ARROWBONE09 ExtraPublicBone = ARROWBONE10 ExtraPublicBone = ARROWBONE11 ExtraPublicBone = ARROWBONE12 DefaultModelConditionState Model = RBCastKeep ; ParticleSysBone = smokebone01 TorchGlow ; ParticleSysBone = smokebone01 TorchSmokeBlack ; ParticleSysBone = smokebone02 TorchGlow ; ParticleSysBone = smokebone02 TorchSmokeBlack WeaponLaunchBone = PRIMARY ARROW_ WeaponFireFXBone = PRIMARY ARROW_ End IdleAnimationState StateName = STATE_None ;BeginScript ; Prev = CurDrawablePrevAnimationState() ; if Prev == "BeingConstructed" then ; Don't play completed sound when canceling build-in-progress or when ; destroyed halfway ; if not CurDrawableModelcondition( "DYING" ) then ; CurDrawablePlaySound("CampSoldierCompleteGeneric") ; end ; end ;EndScript End ;------------Build Up States ModelConditionState = ACTIVELY_BEING_CONSTRUCTED Model = RBCastKeep_A ; ParticleSysBone = NONE BuildingDoughnutCloud ParticleSysBone = NONE BuildingContructDust End AnimationState = ACTIVELY_BEING_CONSTRUCTED StateName = STATE_Constructing Animation AnimationName = RBCastKeep_A.RBCastKeep_A AnimationMode = MANUAL End BeginScript CurDrawablePlaySound("GondorBarracksBeginConstruction") CurDrawablePlaySound("BuildingTopple") EndScript End ModelConditionState = DESTROYED_WHILST_BEING_CONSTRUCTED Model = RBCastKeep_A ParticleSysBone NONE Explosion3 ParticleSysBone NONE ExplosiveMineSmoke02 End AnimationState = DESTROYED_WHILST_BEING_CONSTRUCTED StateName = STATE_DetroyedConstructing Animation AnimationName = RBCastKeep_A.RBCastKeep_A AnimationMode = ONCE_BACKWARDS AnimationBlendTime = 90 ; 3 seconds * 30 frames End ; Specifically no start last frame flag here. Flags = START_FRAME_FIRST End ;------------Build Up States ModelConditionState = BASE_BUILD Model = RBCastKeep_A ; ParticleSysBone = NONE BuildingDoughnutCloud ParticleSysBone = NONE BuildingContructDust End AnimationState = BASE_BUILD StateName = STATE_None Animation AnimationName = RBCastKeep_A.RBCastKeep_A AnimationMode = ONCE AnimationBlendTime = 0 AnimationSpeedFactorRange = 2.0 2.0 ; 300 frame anim, but need to shrink down to 5 seconds End BeginScript CurDrawablePlaySound("GondorBarracksBeginConstruction") CurDrawablePlaySound("BuildingTopple") EndScript End ModelConditionState = JUST_BUILT Model = RBCastKeep_A ; ParticleSysBone = NONE BuildingDoughnutCloud ParticleSysBone = NONE BuildingContructDust End AnimationState = JUST_BUILT StateName = STATE_None Animation AnimationName = RBCastKeep_A.RBCastKeep_A AnimationMode = MANUAL AnimationBlendTime = 0 End Flags = START_FRAME_FIRST End ModelConditionState = DAMAGED Model = RBCastKeep_D1 End AnimationState = DAMAGED StateName = STATE_None EnteringStateFX = FX_BuildingDamaged End ModelConditionState = REALLYDAMAGED Model = RBCastKeep_D2 ; ParticleSysBone NONE furnaceSmoke End AnimationState = REALLYDAMAGED StateName = STATE_None Animation = ReallyDamagedanimation AnimationName = RBCastKeep_D2.RBCastKeep_D2 AnimationMode = ONCE End EnteringStateFX = FX_BuildingReallyDamaged End ;-------RUBBLE-------------------------------------------------------------------------------- TransitionState = TRANS_U_IntoRubble Animation = D3 AnimationName = RBCastKeep_D3.RBCastKeep_D3 AnimationMode = ONCE AnimationBlendTime = 0 End ParticleSysBone NONE Explosion3 ParticleSysBone NONE ExplosiveMineSmoke02 End ModelConditionState = RUBBLE Model = RBCastKeep_D3 End AnimationState = RUBBLE Flags = START_FRAME_LAST StateName = STATE_Rubble Animation = Death AnimationName = RBCastKeep_D3.RBCastKeep_D3 AnimationMode = ONCE End BeginScript Prev = CurDrawablePrevAnimationState() if Prev == "STATE_None" then ; Only play the rubble anim if we havn't come from another rubble. CurDrawableSetTransitionAnimState("TRANS_U_IntoRubble") end EndScript End End ; *** AUDIO Parameters *** ; #include "..\..\..\Includes\StandardBuildingEvaEvents.inc" VoiceSelect = RohanCitadelSelect SoundOnDamaged = BuildingLightDamageWood SoundOnReallyDamaged = BuildingHeavyDamageWood VoiceSelectUnderConstruction = BuildingGoodVoiceSelectUnderConstruction 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 EvaEventDieOwner = CitadelDie CampnessValue = CAMPNESS_FORTRESS ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior MaxUpdateRangeCap = 800 AnimationSound = Sound:BuildingHeavyDamageWood Animation:RBCastKeep_D3.RBCastKeep_D3 Frames:0 AnimationSound = Sound:BuildingSink Animation:RBCastKeep_D3.RBCastKeep_D3 Frames:25 AnimationSound = Sound:BuildingLightDamageWood Animation:RBCastKeep_D3.RBCastKeep_D3 Frames:105 End ; ***DESIGN parameters *** DisplayName = OBJECT:RohanCastleBaseKeep Side = Obsolete EditorSorting = STRUCTURE ThreatLevel = 1.0 BuildCost = 1000 BuildTime = 30.0 ; in seconds CommandSet = RohanCastleBaseKeepCommandSet ArmorSet Conditions = None Armor = CitadelArmor DamageFX = RohanWallDamageFX End ; *** ENGINEERING Parameters *** KindOf = VITAL_FOR_BASE_SURVIVAL STRUCTURE SELECTABLE IMMOBILE SCORE CASTLE_KEEP MP_COUNT_FOR_VICTORY FS_FACTORY MADE_OF_WOOD CAN_ATTACK AUTO_RALLYPOINT ; GARRISONABLE_UNTIL_DESTROYED GARRISON RadarPriority = STRUCTURE KeepSelectableWhenDead = Yes Body = ActiveBody ModuleTag_02 MaxHealth = 4000.0 End Behavior = GettingBuiltBehavior ModuleTag_04 SelfBuildingLoop = BuildingBigConstructionLoop ; Only played if we DON'T spawn a worker SelfRepairFromDamageLoop = NoSound ; This doesn't cause an animation, so don't bother playing a sound SelfRepairFromRubbleLoop = BuildingBigConstructionLoop End Behavior = CastleMemberBehavior ModuleTag_CMB BeingBuiltSound = BuildingBigConstructionLoop End ;----------------------------------------------- ;Used for hero revival and initial construction Behavior = ProductionUpdate ProductionUpdateModuleTag ; nothing, but is required if we have any Object-level Upgrades! End Behavior = QueueProductionExitUpdate ModuleTag_QueuePEU UnitCreatePoint = X:0.0 Y:-20.0 Z:0.0 NaturalRallyPoint = X:28.8 Y:-80.0 Z:0.0;NaturalRallyPointX must always match GeometryMajorRadius! ExitDelay = 300 ;Handles delays between units if multiple produced at a time. End ;----------------------------------------------- ; Note that structures with "RUBBLE" states should not use DestroyDie; such buildings are ; never truly destroyed, even when reduced to zero health. Also note that garrisonable ; buildings automatically stick around because GarrisonContain has it's own DieModule Behavior = KeepObjectDie ModuleTag_IWantRubble End ; Behavior = SlowDeathBehavior ModuleTag_SlowDeathWithoutRubble ; DestructionDelay = 6500 ; End ; Behavior = StructureCollapseUpdate ModuleTag_06 ; MinCollapseDelay = 5000 ; MaxCollapseDelay = 5000 ; CollapseDamping = .5 ; MaxShudder = 0.6 ; MinBurstDelay = 250 ; MaxBurstDelay = 800 ; BigBurstFrequency = 4 ; FXList = INITIAL FX_StructureMediumCollapse ; End Behavior = EvacuateDamage ModuleTag_evacuateDamage WeaponThatCausesEvacuation = MordorCatapultHumanHeads End ; Behavior = HordeGarrisonContain ModuleTag_hordeGarrison ; ObjectStatusOfContained = UNSELECTABLE CAN_ATTACK ; ContainMax = 4 ; DamagePercentToUnits = 0% ; PassengerFilter = ANY +INFANTRY +HORDE -CAVALRY -SUMMONED -WildSpiderling -WildSpiderlingHorde ; AllowEnemiesInside = Yes ; AllowNeutralInside = Yes ; NumberOfExitPaths = 1 ; Defaults to 1. Set 0 to not use ExitStart/ExitEnd, set higher than 1 to use ExitStart01-nn/ExitEnd01-nn ; PassengerBonePrefix = PassengerBone:ARROWBONE KindOf:INFANTRY ; EntryOffset = X:0.0 Y:-45.0 Z:0.0 ; ExitOffset = X:0.0 Y:-45.0 Z:0.0 ; ; ;PassengersTestCollisionHeight = 80 ; ;Slots = 1 ; ;EnterSound = GarrisonEnter ; ;ExitSound = GarrisonExit ; ;ExitDelay = 250 ; ;GoAggressiveOnExit = Yes ; AI Will tell people to set their mood to Aggressive on exiting ; ;ForceOrientationContainer = No ; otherwise contained units can't orient themselves towards their targets... ; End Behavior = AutoDepositUpdate AutoDepositModuleTag DepositTiming = GENERIC_KEEP_MONEY_TIME ; in milliseconds DepositAmount = GENERIC_KEEP_MONEY_AMOUNT ; cash amount to deposit every DepositTiming InitialCaptureBonus = 0 ; no initial bonus End Behavior = BuildingBehavior BuildingModuleTag NightWindowName = WINDOW_N01 ; FireWindowName = WINDOW_F01 ; GlowWindowName = WINDOW_G01 End Geometry = BOX GeometryMajorRadius = 21.0 GeometryMinorRadius = 41.0 GeometryHeight = 51.0 AdditionalGeometry = CYLINDER GeometryMajorRadius = 57.0 GeometryMinorRadius = 0 GeometryHeight = 7.0 AdditionalGeometry = BOX GeometryMajorRadius = 12.0 GeometryMinorRadius = 12.0 GeometryHeight = 120.0 GeometryOffset = X:-1 Y:2 Z:0 GeometryIsSmall = No Shadow = SHADOW_VOLUME ; AttackContactPoint = X:-1 Y:2 Z:117 ; AttackContactPoint = X:-1 Y:2 Z:0 GeometryContactPoint = X:-1.538 Y:2.559 Z:149.812 Swoop GeometryContactPoint = X:-1.538 Y:2.559 Z:0 End