home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2006 April / Gamestar_83_2006-04_dvd.iso / Dema / lotrbfme2_demo.exe / INI.big / data_ini_object_evilfaction_structures_isengard_campsandcastles.ini < prev    next >
Text File  |  2006-01-31  |  34KB  |  1,107 lines

  1. ;----------------------------------- IsengardCitadel -------------------------------------------------------
  2. Object IsengardCampKeep
  3.  
  4.     SelectPortrait = BPICamp
  5.  
  6.   ; *** ART Parameters ***
  7.  
  8.   Draw = W3DScriptedModelDraw ModuleTag_Draw
  9.     OkToChangeModelColor  = Yes
  10.     UseStandardModelNames = Yes
  11.  
  12.     DefaultModelConditionState  
  13.       Model = IBCCenter
  14.       ParticleSysBone      = smokebone01 furnaceSparks
  15. ;      ParticleSysBone     = smokebone02 furnaceSmoke
  16. ;      ParticleSysBone      = glowbone01 TorchGlow
  17. ;      ParticleSysBone     = glowbone02 TorchGlow
  18. ;      ParticleSysBone      = glowbone03 TorchGlow
  19. ;      ParticleSysBone     = glowbone04 TorchGlow
  20.     End
  21.  
  22.     ModelConditionState = WORLD_BUILDER
  23.         Model = IBCCenterW
  24.     End
  25.     
  26.     IdleAnimationState
  27.     End
  28.  
  29. ;------------Build Up States
  30.     ModelConditionState   = ACTIVELY_BEING_CONSTRUCTED
  31.       Model               = IBCCenter_A
  32. ;      ParticleSysBone      = NONE BuildingDoughnutCloud
  33.       ParticleSysBone     = NONE BuildingContructDust
  34.     End  
  35.  
  36.     AnimationState          = ACTIVELY_BEING_CONSTRUCTED
  37.         Animation
  38.             AnimationName    = IBCCenter_A.IBCCenter_A
  39.             AnimationMode   = MANUAL
  40.         End
  41.         StateName        = BeingConstructed
  42.         BeginScript
  43.             ;CurDrawableHideSubObject("FIRE02")
  44.             CurDrawablePlaySound("GondorBarracksBeginConstruction")
  45.             CurDrawablePlaySound("BuildingTopple")
  46.         EndScript
  47.     End
  48.  
  49. ;------------Build Up States
  50.     ModelConditionState   = BASE_BUILD
  51.       Model               = IBCCenter_A
  52. ;      ParticleSysBone      = NONE BuildingDoughnutCloud
  53.       ParticleSysBone     = NONE BuildingContructDust
  54.     End  
  55.  
  56.     AnimationState          = BASE_BUILD
  57.         Animation
  58.             AnimationName = IBCCenter_A.IBCCenter_A
  59.             AnimationMode = ONCE
  60.             AnimationBlendTime = 0            
  61.             AnimationSpeedFactorRange = 2.0 2.0 ; 300 frame anim, but need to shrink down to 5 seconds
  62.         End        
  63.         BeginScript
  64.             CurDrawablePlaySound("DebrisDust")
  65.             CurDrawablePlaySound("GondorBarracksBeginConstruction")
  66.             CurDrawablePlaySound("BuildingTopple")
  67.         EndScript
  68.     End
  69.  
  70.     ModelConditionState   = JUST_BUILT
  71.       Model               = IBCCenter_A
  72. ;      ParticleSysBone      = NONE BuildingDoughnutCloud
  73.       ParticleSysBone     = NONE BuildingContructDust
  74.     End  
  75.  
  76.     AnimationState          = JUST_BUILT
  77.         Animation
  78.             AnimationName = IBCCenter_A.IBCCenter_A
  79.             AnimationMode = MANUAL            
  80.             AnimationBlendTime = 0
  81.         End
  82.         Flags = START_FRAME_FIRST
  83.         ;BeginScript
  84.         ;    CurDrawablePlaySound("DebrisDust")
  85.         ;    CurDrawableHideSubObject("FIRE02")
  86.         ;EndScript
  87.     End
  88.  
  89.     ModelConditionState  = DAMAGED
  90.       Model         = IBCCenter_D1 
  91.       ParticleSysBone Smokebone01 TrebuchetImpactSplinters
  92. ;      ParticleSysBone Smokebone02 furnaceSmoke
  93.     
  94.  
  95.     End
  96.     AnimationState = DAMAGED
  97.      EnteringStateFX    = FX_BuildingDamaged
  98.     End
  99.  
  100.     ModelConditionState  = REALLYDAMAGED
  101.       Model         = IBCCenter_D2 
  102.       ParticleSysBone Smokebone01 TrebuchetImpactSplinters
  103. ;      ParticleSysBone Smokebone02 furnaceSmoke
  104.     End
  105.     AnimationState = REALLYDAMAGED
  106.          EnteringStateFX    = FX_BuildingReallyDamaged
  107.     End
  108.     
  109.     ModelConditionState  = RUBBLE
  110.       Model         = IBCCenter_D2  
  111.       ParticleSysBone Smokebone01 Explosion3
  112.       ParticleSysBone Smokebone02 Explosion5
  113.     End
  114.  
  115.     AnimationState = RUBBLE
  116.     ;EnteringStateFX    = FX_IsengardCitadelDie        ;added to trigger BuildingSink audio but already being triggered in StructureCollapseUpdate module
  117.     End
  118.  
  119.       ModelConditionState  = POST_RUBBLE
  120.         Model         = GBGenRubble
  121.         ParticleSysBone NONE SmokeBuildingMediumRubble
  122.     End
  123.     AnimationState = POST_RUBBLE
  124.     End
  125.     
  126.     ModelConditionState  = POST_COLLAPSE
  127.         Model         = GBGenRubble
  128.         ParticleSysBone NONE SmokeBuildingMediumRubble
  129.     End
  130.     AnimationState = POST_COLLAPSE
  131.     End
  132.  
  133.   End
  134.  
  135.  
  136.     ; *** AUDIO Parameters ***
  137.  
  138.     VoiceSelect                = IsengardCitadelSelect
  139.  
  140.     SoundOnDamaged            = BuildingLightDamageStone
  141.     SoundOnReallyDamaged        = BuildingHeavyDamageStone
  142.  
  143.     VoiceSelectUnderConstruction    = BuildingEvilVoiceSelectUnderConstruction
  144.  
  145.     UnitSpecificSounds
  146.         UnderConstruction        = BuildingBigConstructionLoop        ; Built first time
  147.         ; UnderRepairFromDamage    = NoSound                    ; Repaired No animation on the building, so don't bother playing sound
  148.         UnderRepairFromRubble    = BuildingBigConstructionLoop        ; Repaired from completely destroyed (not used???)
  149.     End
  150.     EvaEventDieOwner = CitadelDie
  151.  
  152.  
  153.     ; ***DESIGN parameters ***
  154.     #include "..\..\..\Includes\StandardBuildingEvaEvents.inc"
  155.  
  156.     DisplayName      = OBJECT:IsengardCampKeep
  157.     Side = Isengard
  158.     EditorSorting   = STRUCTURE
  159.     ThreatLevel = 1.0
  160.     BuildCost           = 1000
  161.     BuildTime           = 30.0           ; in seconds
  162.     CommandSet            = IsengardCampKeepCommandSet
  163.     
  164.     ArmorSet
  165.         Conditions        = None
  166.         Armor             = CitadelArmor
  167.         DamageFX          = None
  168.     End
  169.     CampnessValue = CAMPNESS_FORTRESS
  170.  
  171.   ; *** ENGINEERING Parameters ***  
  172.     KindOf                    = VITAL_FOR_BASE_SURVIVAL STRUCTURE SELECTABLE IMMOBILE CASTLE_KEEP MP_COUNT_FOR_VICTORY FS_FACTORY AUTO_RALLYPOINT MADE_OF_WOOD SCORE
  173.     RadarPriority            = STRUCTURE
  174.     KeepSelectableWhenDead    = Yes
  175.  
  176.   
  177.     Body              = ActiveBody ModuleTag_02
  178.         MaxHealth       = ISGENARD_CENTRAL_CAMP_KEEP_HEALTH
  179.     End
  180.  
  181.     Behavior = GettingBuiltBehavior ModuleTag_04
  182.         SelfBuildingLoop = BuildingBigConstructionLoop            ; Only played if we DON'T spawn a worker
  183.         SelfRepairFromDamageLoop  = NoSound                     ; This doesn't cause an animation, so don't bother playing a sound
  184.         SelfRepairFromRubbleLoop  = BuildingBigConstructionLoop
  185.     End
  186.  
  187.   Behavior = CastleMemberBehavior ModuleTag_CMB
  188.     BeingBuiltSound = BuildingBigConstructionLoop
  189.   End 
  190.  
  191.     Behavior = AutoDepositUpdate AutoDepositModuleTag
  192.         DepositTiming            = GENERIC_KEEP_MONEY_TIME        ; in milliseconds
  193.         DepositAmount            = GENERIC_KEEP_MONEY_AMOUNT        ; cash amount to deposit every DepositTiming
  194.         InitialCaptureBonus        = 0  ; no initial bonus
  195.     End
  196.  
  197.       ;-----------------------------------------------
  198.     ;Used for hero revival and initial construction     
  199.     Behavior = ProductionUpdate ProductionUpdateModuleTag
  200.         ; nothing, but is required if we have any Object-level Upgrades!
  201.     End
  202.     Behavior = QueueProductionExitUpdate ModuleTag_QueuePEU
  203.         UnitCreatePoint   = X:0.0 Y:-20.0 Z:0.0
  204.         NaturalRallyPoint = X:28.8 Y:-80.0 Z:0.0;NaturalRallyPointX must always match GeometryMajorRadius! 
  205.         ExitDelay = 300 ;Handles delays between units if multiple produced at a time. (like Generals Redguard coming out 2 at a time)
  206.     End  
  207.     ;-----------------------------------------------
  208.  
  209.   ; Note that structures with "RUBBLE" states should not use DestroyDie; such buildings are 
  210.   ; never truly destroyed, even when reduced to zero health. Also note that garrisonable
  211.   ; buildings automatically stick around because GarrisonContain has it's own DieModule
  212.   Behavior = KeepObjectDie ModuleTag_IWantRubble
  213.   End
  214.   
  215.      Behavior                  = StructureCollapseUpdate ModuleTag_06
  216.        MinCollapseDelay        = 000
  217.        MaxCollapseDelay        = 000
  218.        CollapseDamping         = .5
  219.        MaxShudder              = 0.6
  220.        MinBurstDelay           = 250
  221.        MaxBurstDelay           = 800
  222.        BigBurstFrequency       = 4
  223.        FXList                  = INITIAL FX_StructureMediumCollapse
  224.      End
  225.  
  226.     Behavior                  = RubbleRiseUpdate ModuleTag_07
  227.         MinRubbleRiseDelay      = 000
  228.         MaxRubbleRiseDelay      = 000
  229.         ;RubbleRiseDamping       = .5
  230.         RubbleHeight            = 4.0
  231.         MaxShudder              = 0.6
  232.         MinBurstDelay           = 250
  233.         MaxBurstDelay           = 800
  234.         BigBurstFrequency       = 4
  235.         FXList                  = INITIAL FX_StructureMediumPostCollapse    ;FX_StructureMediumCollapse
  236.     End  
  237.   
  238.   Geometry              = BOX
  239.   GeometryMajorRadius   = 15.0
  240.   GeometryMinorRadius   = 15.0
  241.   GeometryHeight        = 148.0
  242.   
  243.   AdditionalGeometry    = BOX
  244.   GeometryMajorRadius   = 35.0
  245.   GeometryMinorRadius   = 33.0
  246.   GeometryHeight        = 30.0
  247.   
  248.   GeometryIsSmall       = No
  249.   Shadow                = SHADOW_VOLUME
  250.   
  251.   GeometryContactPoint    = X:0.115    Y:0        Z:150.622        Swoop
  252.   GeometryContactPoint    = X:0        Y:0        Z:0
  253. End
  254.  
  255. ;------------------------------------------------------------------------------------------
  256. Object IsengardEconomyKeep
  257.  
  258.     SelectPortrait = BPIOrthancTower
  259.  
  260.   ; *** ART Parameters ***
  261.  
  262.   Draw = W3DScriptedModelDraw ModuleTag_Draw
  263.     OkToChangeModelColor  = Yes
  264.     UseStandardModelNames = Yes
  265.  
  266.     DefaultModelConditionState  
  267.       Model = IBTent2
  268.     End
  269.     AnimationState        = NONE
  270.       Animation           = IBTent2
  271.         AnimationName     = IBTent2.IBTent2
  272.         AnimationMode     = LOOP
  273.       End
  274.     End
  275.     
  276.     ModelConditionState  = RUBBLE
  277.       Model         = IBTent2  
  278.       ParticleSysBone SmokeLarge01 SmokeBuildingLarge
  279.     End
  280.     AnimationState = RUBBLE
  281.     End
  282.  
  283.     ModelConditionState  = POST_RUBBLE
  284.       Model         = None
  285.         ParticleSysBone NONE SmokeBuildingMediumRubble
  286.     End    
  287.     AnimationState = POST_RUBBLE
  288.     End
  289.  
  290.     ModelConditionState  = POST_COLLAPSE
  291.       Model         = None
  292.         ParticleSysBone NONE SmokeBuildingMediumRubble
  293.     End
  294.     AnimationState = POST_COLLAPSE
  295.     End        
  296.   End
  297.  
  298.  
  299.   ; *** AUDIO Parameters ***
  300.     #include "..\..\..\Includes\StandardBuildingEvaEvents.inc"
  301.  
  302.     SoundOnDamaged        = BuildingLightDamageStone
  303.     SoundOnReallyDamaged    = BuildingHeavyDamageStone
  304.     VoiceSelectUnderConstruction    = BuildingEvilVoiceSelectUnderConstruction
  305.  
  306.     UnitSpecificSounds
  307.         UnderConstruction        = BuildingConstructionLoop  ; Built first time
  308.         ; UnderRepairFromDamage    = NoSound                    ; Repaired No animation on the building, so don't bother playing sound
  309.         UnderRepairFromRubble    = BuildingConstructionLoop    ; Repaired from completely destroyed (not used???)
  310.     End
  311.  
  312.     CampnessValue = CAMPNESS_RESOURCE_BUILDING ; ????
  313.  
  314.  
  315.   ; ***DESIGN parameters ***
  316.  
  317.   DisplayName      = OBJECT:IsengardCampKeep
  318.   Side = Isengard
  319.   EditorSorting   = STRUCTURE
  320.   ThreatLevel = 1.0
  321.   ;BuildCost           = 500
  322.   ;BuildTime           = 10.0           ; in seconds
  323.  
  324.   ArmorSet
  325.     Conditions        = None
  326.     Armor             = NoArmor
  327.     DamageFX          = None
  328.   End
  329.  
  330.   ; *** ENGINEERING Parameters ***  
  331.   KindOf            = STRUCTURE SELECTABLE IMMOBILE CASTLE_KEEP MP_COUNT_FOR_VICTORY MADE_OF_WOOD
  332.   RadarPriority        = STRUCTURE
  333.   Body              = ActiveBody ModuleTag_02
  334.     MaxHealth       = 2000.0
  335.   End
  336.  
  337.   Behavior = GettingBuiltBehavior ModuleTag_04
  338.     WorkerName    = MordorWorkerNoSelect
  339.     SpawnTimer  = 120
  340.     RebuildWhenDead = Yes
  341.   End
  342.  
  343.   Behavior = CastleMemberBehavior ModuleTag_CMB
  344.     BeingBuiltSound = BuildingBigConstructionLoop
  345.   End 
  346.  
  347.   ; Note that structures with "RUBBLE" states should not use DestroyDie; such buildings are 
  348.   ; never truly destroyed, even when reduced to zero health. Also note that garrisonable
  349.   ; buildings automatically stick around because GarrisonContain has it's own DieModule
  350.   Behavior = SlowDeathBehavior ModuleTag_SlowDeathWithoutRubble
  351.       DestructionDelay  = 4000
  352.   End
  353.   
  354.   Behavior                  = StructureCollapseUpdate ModuleTag_06
  355.     MinCollapseDelay        = 000
  356.     MaxCollapseDelay        = 000
  357.     CollapseDamping         = .5
  358.     MaxShudder              = 0.6
  359.     MinBurstDelay           = 250
  360.     MaxBurstDelay           = 800
  361.     BigBurstFrequency       = 4
  362.     FXList                  = INITIAL   FX_StructureMediumCollapse
  363.  
  364.   End
  365.   
  366.   Geometry              = CYLINDER
  367.   GeometryMajorRadius   = 50.0
  368.   GeometryMinorRadius   = 0
  369.   GeometryHeight        = 31.0
  370.   
  371.   GeometryIsSmall       = No
  372.   Shadow                = SHADOW_VOLUME
  373. End
  374.  
  375. ;------------------------------------------------------------------------------
  376.  
  377.  
  378. Object IBCastleFloor
  379.  
  380.   ; *** ART Parameters ***
  381.   Draw = W3DFloorDraw ModuleTag_01
  382.     StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
  383.       ModelName = IBCastFloor
  384.         ForceToBack = Yes
  385.   End
  386.  
  387.  
  388.     Draw = W3DScriptedModelDraw ModuleTag_Draw2
  389.         DefaultModelConditionState
  390.             Model = OBBFoundationX
  391.         End
  392.         ModelConditionState = WORLD_BUILDER
  393.               Model = IBSizeTemplate
  394.           End
  395.         
  396.     End
  397.  
  398.  
  399.     ; *** AUDIO Parameters ***
  400.  
  401.     VoiceSelect        = Gui_PlotSelect
  402.  
  403.  
  404.   ; ***DESIGN parameters ***
  405.   DisplayName      = OBJECT:IBCastFloor
  406.   Side = Isengard
  407.   EditorSorting = STRUCTURE
  408. ; Browser = CINEMATICS UNIT
  409.  
  410.   ArmorSet
  411.     Conditions        = None
  412.     Armor             = NoArmor
  413.     DamageFX          = None
  414.   End
  415.  
  416.   ; *** ENGINEERING Parameters ***  
  417.   KindOf                = STRUCTURE IMMOBILE NO_COLLIDE UNATTACKABLE INERT 
  418.   RadarPriority = NOT_ON_RADAR
  419.   Body                  = ImmortalBody ModuleTag_03
  420.     MaxHealth       = 2000.0
  421.   End
  422.  
  423.   ; Note that structures with "RUBBLE" states should not use DestroyDie; such buildings are 
  424.   ; never truly destroyed, even when reduced to zero health. Also note that garrisonable
  425.   ; buildings automatically stick around because GarrisonContain has it's own DieModule
  426.   Behavior = SlowDeathBehavior ModuleTag_SlowDeathWithoutRubble
  427.       DestructionDelay  = 1000
  428.   End
  429.   
  430.   Geometry              = BOX
  431.   GeometryMajorRadius   = 0.8
  432.   GeometryMinorRadius   = 0.8
  433.   GeometryHeight        = 0.8
  434.   GeometryIsSmall       = Yes
  435.   ;GeometryRotationAnchorOffset = X:1037.871 Y:0
  436.   Shadow                = SHADOW_VOLUME
  437. End
  438.  
  439. ;------------------------------------------------------------------------------
  440.  
  441.  
  442. Object IBCampFloor
  443.  
  444.   ; *** ART Parameters ***
  445.   Draw = W3DFloorDraw ModuleTag_01
  446.     StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
  447.       ModelName = IBCampFloor
  448.         ForceToBack = Yes
  449.   End
  450.   ; *** AUDIO Parameters ***
  451.  
  452.   ; ***DESIGN parameters ***
  453.   DisplayName      = OBJECT:IBCampFloor
  454.   Side = Isengard
  455.   EditorSorting = STRUCTURE
  456. ; Browser = CINEMATICS UNIT
  457.  
  458.   ArmorSet
  459.     Conditions        = None
  460.     Armor             = NoArmor
  461.     DamageFX          = None
  462.   End
  463.  
  464.   ; *** ENGINEERING Parameters ***  
  465.   KindOf                = STRUCTURE IMMOBILE NO_COLLIDE UNATTACKABLE INERT 
  466.   RadarPriority = NOT_ON_RADAR
  467.   Body                  = ImmortalBody ModuleTag_03
  468.     MaxHealth       = 2000.0
  469.   End
  470.  
  471.   ; Note that structures with "RUBBLE" states should not use DestroyDie; such buildings are 
  472.   ; never truly destroyed, even when reduced to zero health. Also note that garrisonable
  473.   ; buildings automatically stick around because GarrisonContain has it's own DieModule
  474.   Behavior = SlowDeathBehavior ModuleTag_SlowDeathWithoutRubble
  475.       DestructionDelay  = 1000
  476.   End
  477.   
  478.   Geometry              = BOX
  479.   GeometryMajorRadius   = 0.8
  480.   GeometryMinorRadius   = 0.8
  481.   GeometryHeight        = 0.8
  482.   GeometryIsSmall       = Yes
  483.   ;GeometryRotationAnchorOffset = X:1037.871 Y:0
  484.   Shadow                = SHADOW_VOLUME
  485. End
  486.  
  487. ;------------------------------------------------------------------------------
  488.  
  489. ;Isengard Building Foundation -- the area where faction Isengard buildings can be built on
  490. Object IsengardBuildingFoundation
  491.  
  492.  SelectPortrait = BPICamp_Plot
  493.  
  494.   ; *** ART Parameters ***
  495.  
  496.   
  497.     Draw = W3DScriptedModelDraw ModuleTag_Draw2
  498.         DefaultModelConditionState
  499.             Model = OBBFoundationX
  500.         End
  501.         ModelConditionState = WORLD_BUILDER
  502.               Model = MBSizeTemplate
  503.           End
  504.         
  505.     End
  506.     
  507.     Draw = W3DFloorDraw ModuleTag_Draw
  508.         ModelName = IBFoundationX
  509.     End
  510.   
  511.   ;PlacementViewAngle  = 0
  512.  
  513.   ; ***DESIGN parameters ***
  514.   DisplayName         = OBJECT:IsengardBuildingFoundation
  515.   Side                = Isengard
  516.   EditorSorting       = STRUCTURE
  517.   ThreatLevel = 1.0
  518.  
  519.   BuildCost           = 1
  520.   BuildTime           = 5.0           ; in seconds
  521.   VisionRange         = 160.0          ; Shroud clearing distance
  522.   ShroudClearingRange = 161
  523.  
  524.   CommandSet = IsengardFoundationCommandSet
  525.  
  526.   ; *** AUDIO Parameters ***
  527.   VoiceSelect = Gui_PlotSelect
  528.  
  529.   ; *** ENGINEERING Parameters ***
  530.   RadarPriority       = STRUCTURE
  531.   KindOf              = STRUCTURE SELECTABLE IMMOBILE BASE_FOUNDATION UNATTACKABLE MP_COUNT_FOR_VICTORY NO_COLLIDE DO_NOT_CLASSIFY
  532.  
  533.   Behavior            = FoundationAIUpdate ModuleTag_foundationAI
  534.   End
  535.  
  536.   Behavior = CastleMemberBehavior ModuleTag_CMB
  537.   End 
  538.  
  539.   Body                = ImmortalBody ModuleTag_05
  540.     MaxHealth         = 15000.0
  541.   End
  542.  
  543.   Geometry              = BOX
  544.   GeometryMajorRadius   = 24.0
  545.   GeometryMinorRadius   = 24.0
  546.   GeometryHeight        = 0.8
  547.   GeometryIsSmall       = No
  548.   Shadow                = SHADOW_VOLUME
  549.   BuildCompletion        = PLACED_BY_PLAYER
  550. End
  551.  
  552. ;Isengard Base Defence Foundation -- the area where faction rohan buildings can be built on
  553. Object IsengardBaseDefenceFoundation
  554.  
  555.     SelectPortrait = BPICamp_Plot
  556.   ; *** ART Parameters ***
  557.  
  558.     Scale = 0.7
  559.   
  560.     Draw = W3DScriptedModelDraw ModuleTag_Draw2
  561.         DefaultModelConditionState
  562.             Model = OBBFoundationX
  563.         End
  564.         ModelConditionState = WORLD_BUILDER
  565.               Model = IBBtlTwrM
  566.           End
  567.         
  568.     End
  569.    Draw = W3DFloorDraw ModuleTag_Draw
  570.       ModelName = IBFoundationM
  571.   End
  572.  
  573.   ;PlacementViewAngle  = 0
  574.  
  575.   ; ***DESIGN parameters ***
  576.   DisplayName         = OBJECT:IsengardBaseDefenseFoundation
  577.   Side                = Mordor
  578.   EditorSorting       = STRUCTURE
  579.   ThreatLevel = 1.0
  580.  
  581.   BuildCost           = 1
  582.   BuildTime           = 5.0           ; in seconds
  583.   VisionRange         = 160.0          ; Shroud clearing distance
  584.   ShroudClearingRange = 160
  585.  
  586.   CommandSet = IsengardBaseDefenceFoundationCommandSet
  587.  
  588.   ; *** AUDIO Parameters ***
  589.   VoiceSelect = Gui_PlotSelect
  590.  
  591.   ; *** ENGINEERING Parameters ***
  592.   RadarPriority       = STRUCTURE
  593.   KindOf              = STRUCTURE SELECTABLE IMMOBILE BASE_FOUNDATION BASE_DEFENSE_FOUNDATION UNATTACKABLE MP_COUNT_FOR_VICTORY NO_COLLIDE DO_NOT_CLASSIFY
  594.  
  595.   Behavior            = FoundationAIUpdate ModuleTag_foundationAI
  596.   End
  597.  
  598.   Behavior = CastleMemberBehavior ModuleTag_CMB
  599.   End 
  600.  
  601.   Body                = ImmortalBody ModuleTag_05
  602.     MaxHealth         = 15000.0
  603.   End
  604.  
  605.   Geometry              = BOX
  606.   GeometryMajorRadius   = 24.0
  607.   GeometryMinorRadius   = 24.0
  608.   GeometryHeight        = 0.8
  609.   GeometryIsSmall       = No
  610.   Shadow                = SHADOW_VOLUME
  611.   BuildCompletion        = PLACED_BY_PLAYER
  612. End
  613.  
  614. ;------------------------------------------------------------------------------------------
  615. Object IsengardCastleBaseKeep
  616.  
  617.     SelectPortrait = BPIOrthancTower
  618.         ButtonImage            = BIWatchTower
  619.    ; *** ART Parameters ***
  620.  
  621.   Draw = W3DScriptedModelDraw ModuleTag_Draw
  622.     OkToChangeModelColor  = Yes
  623.     UseStandardModelNames = Yes
  624.  
  625.     DefaultModelConditionState  
  626.       Model = IB_Orthanc
  627.     End
  628.  
  629.  
  630. ;------------Build Up States
  631.     ModelConditionState   = ACTIVELY_BEING_CONSTRUCTED PARTIALLY_CONSTRUCTED
  632.       Model               = IB_Orthanc_A
  633. ;      ParticleSysBone      = NONE BuildingDoughnutCloud
  634.       ParticleSysBone     = NONE BuildingContructDust
  635.     End  
  636.  
  637.     AnimationState          = ACTIVELY_BEING_CONSTRUCTED
  638.         Animation
  639.             AnimationName    = IB_Orthanc_A.IB_Orthanc_A
  640.             AnimationMode   = MANUAL
  641.         End
  642.         BeginScript
  643. ;            CurDrawableHideSubObject("FIRE02")
  644.         EndScript
  645.     End
  646.  
  647. ;------------Build Up States
  648.     ModelConditionState   = BASE_BUILD
  649.       Model               = IB_Orthanc_A
  650. ;      ParticleSysBone      = NONE BuildingDoughnutCloud
  651.       ParticleSysBone     = NONE BuildingContructDust
  652.     End  
  653.  
  654.     AnimationState          = BASE_BUILD
  655.         Animation
  656.             AnimationName = IB_Orthanc_A.IB_Orthanc_A
  657.             AnimationMode = ONCE
  658.             AnimationBlendTime = 0            
  659.             AnimationSpeedFactorRange = 2.0 2.0 ; 300 frame anim, but need to shrink down to 5 seconds
  660.         End
  661.         BeginScript
  662. ;            CurDrawableHideSubObject("FIRE02")
  663.         EndScript
  664.     End
  665.  
  666.     AnimationState          = JUST_BUILT
  667.         Animation
  668.             AnimationName = IB_Orthanc_A.IB_Orthanc_A
  669.             AnimationMode = MANUAL            
  670.             AnimationBlendTime = 0
  671.         End
  672.         Flags = START_FRAME_FIRST
  673.         BeginScript
  674. ;            CurDrawableHideSubObject("FIRE02")
  675.         EndScript
  676.     End
  677.     
  678.     ModelConditionState  = DAMAGED
  679.       Model         = IB_Orthanc_D1  
  680.     End
  681.     
  682.     AnimationState = DAMAGED
  683.      EnteringStateFX    = FX_BuildingDamaged
  684.     End
  685.  
  686.     ModelConditionState  = REALLYDAMAGED
  687.       Model         = IB_Orthanc_D2
  688. ;      ParticleSysBone NONE furnaceSmoke
  689.     End
  690.     AnimationState = REALLYDAMAGED
  691.            Animation                =    ReallyDamagedanimation
  692.             AnimationName        =     IB_Orthanc_D2.IB_Orthanc_D2
  693.             AnimationMode        =    ONCE
  694.            End
  695.          EnteringStateFX    = FX_BuildingReallyDamaged
  696.     End
  697.  
  698.     ModelConditionState  = RUBBLE
  699.       Model         = IB_Orthanc_D3
  700.       ParticleSysBone FXbone01 BaradDurDust01 FollowBone:yes
  701.       ParticleSysBone FXbone02 BaradDurDust01 FollowBone:yes
  702.       ParticleSysBone NONE ExplosiveMineSmoke02
  703.     End
  704.     
  705.     AnimationState = RUBBLE
  706.         Animation                =    Death
  707.             AnimationName        =    IB_Orthanc_D3.IB_Orthanc_D3
  708.             AnimationMode        =    ONCE
  709.         End
  710. ;        EnteringStateFX = FX_RohanWallRubble
  711.     End      
  712.  
  713.     ModelConditionState  = POST_RUBBLE
  714.         Model         = None
  715.     End
  716.  
  717.     ModelConditionState  = POST_COLLAPSE
  718.          Model         = None
  719.     End
  720.     
  721.  
  722.   End
  723.  
  724.  
  725.     ; *** AUDIO Parameters ***
  726.  
  727.     SoundOnDamaged        = BuildingLightDamageStone
  728.     SoundOnReallyDamaged    = BuildingHeavyDamageStone
  729.  
  730.     VoiceSelectUnderConstruction    = BuildingEvilVoiceSelectUnderConstruction
  731.  
  732.     UnitSpecificSounds
  733.         UnderConstruction        = BuildingBigConstructionLoop  ; Built first time
  734.         ; UnderRepairFromDamage    = NoSound                    ; Repaired No animation on the building, so don't bother playing sound
  735.         UnderRepairFromRubble    = BuildingBigConstructionLoop    ; Repaired from completely destroyed (not used???)
  736.     End
  737.  
  738.  
  739.     ; ***DESIGN parameters ***
  740.  
  741.     DisplayName      = OBJECT:IsengardCastleBaseKeep
  742.     Side = Isengard
  743.     EditorSorting   = STRUCTURE
  744.     ThreatLevel = 1.0
  745.     ;BuildCost           = 500
  746.     ;BuildTime           = 10.0           ; in seconds
  747.     VisionRange         = 160.0          ; Shroud clearing distance
  748.     ShroudClearingRange = 161
  749.     CommandSet            = GenericKeepCommandSet
  750.     HealthBoxHeightOffset = -200
  751.  
  752.     ArmorSet
  753.         Conditions        = None
  754.         Armor             = StructureArmor
  755.         DamageFX          = OrthancDamageFX
  756.     End
  757.  
  758.   ; *** ENGINEERING Parameters ***  
  759.   KindOf            = PRELOAD STRUCTURE IMMOBILE SCORE NEED_BASE_FOUNDATION CASTLE_KEEP NOT_AUTOACQUIRABLE FS_FACTORY AUTO_RALLYPOINT SELECTABLE MADE_OF_METAL
  760.   RadarPriority        = STRUCTURE
  761.   Body              = ActiveBody ModuleTag_02
  762.     MaxHealth       = 4000.0
  763.   End
  764.  
  765.   Behavior = GettingBuiltBehavior ModuleTag_04
  766.     WorkerName    = MordorWorkerNoSelect
  767.     SpawnTimer  = 120
  768.     RebuildWhenDead = Yes
  769.   End
  770.  
  771.   Behavior = CastleMemberBehavior ModuleTag_CMB
  772.     BeingBuiltSound = BuildingBigConstructionLoop
  773.   End 
  774.  
  775.       ;-----------------------------------------------
  776.     ;Used for hero revival and initial construction     
  777.     Behavior = ProductionUpdate ProductionUpdateModuleTag
  778.         ; nothing, but is required if we have any Object-level Upgrades!
  779.     End
  780.     Behavior = QueueProductionExitUpdate ModuleTag_QueuePEU
  781.         UnitCreatePoint   = X:0.0 Y:-20.0 Z:0.0
  782.         NaturalRallyPoint = X:28.8 Y:-80.0 Z:0.0;NaturalRallyPointX must always match GeometryMajorRadius! 
  783.         ExitDelay = 300 ;Handles delays between units if multiple produced at a time. (like Generals Redguard coming out 2 at a time)
  784.     End  
  785.     ;-----------------------------------------------
  786.  
  787.   ; Note that structures with "RUBBLE" states should not use DestroyDie; such buildings are 
  788.   ; never truly destroyed, even when reduced to zero health. Also note that garrisonable
  789.   ; buildings automatically stick around because GarrisonContain has it's own DieModule
  790.   Behavior = KeepObjectDie ModuleTag_IWantRubble
  791.   End
  792.   
  793. ;  Behavior                  = StructureCollapseUpdate ModuleTag_06
  794. ;    MinCollapseDelay        = 000
  795. ;    MaxCollapseDelay        = 000
  796. ;    CollapseDamping         = .5
  797. ;    MaxShudder              = 0.6
  798. ;    MinBurstDelay           = 250
  799. ;    MaxBurstDelay           = 800
  800. ;    BigBurstFrequency       = 4
  801. ;    FXList                  = INITIAL   FX_StructureMediumCollapse
  802. ;  End
  803.  
  804.     Behavior                  = RubbleRiseUpdate ModuleTag_07
  805.         MinRubbleRiseDelay      = 000
  806.         MaxRubbleRiseDelay      = 000
  807.         ;RubbleRiseDamping       = .5
  808.         RubbleHeight            = 4.0
  809.         MaxShudder              = 0.6
  810.         MinBurstDelay           = 250
  811.         MaxBurstDelay           = 800
  812.         BigBurstFrequency       = 4
  813.         FXList                  = INITIAL FX_StructureMediumCollapse
  814.     End    
  815.  
  816.   
  817.   Geometry              = CYLINDER
  818.   GeometryMajorRadius   = 42.6
  819.   GeometryMinorRadius   = 0
  820.   GeometryHeight        = 65.2
  821.   
  822.   AdditionalGeometry    = CYLINDER
  823.   GeometryMajorRadius   = 22.6
  824.   GeometryMinorRadius   = 0
  825.   GeometryHeight        = 265.2
  826.   
  827.   GeometryIsSmall       = No
  828.   Shadow                = SHADOW_VOLUME
  829.   
  830.   AttackContactPoint    = X:0 Y:0 Z:262
  831.   AttackContactPoint    = X:0 Y:0 Z:0
  832. End
  833.  
  834. ;------------------------------------------------------------------------------------------
  835. Object WOR_IsengardCastleBaseKeep
  836.  
  837.     SelectPortrait = BPIOrthancTower
  838.         ButtonImage            = BIWatchTower
  839.    ; *** ART Parameters ***
  840.  
  841.     Draw = W3DScriptedModelDraw ModuleTag_Draw
  842.         OkToChangeModelColor  = Yes
  843.         UseStandardModelNames = Yes
  844.  
  845.         DefaultModelConditionState  
  846.         Model = IB_Orthanc
  847.         End
  848.  
  849.  
  850.     ;------------Build Up States
  851.         ModelConditionState   = ACTIVELY_BEING_CONSTRUCTED PARTIALLY_CONSTRUCTED
  852.         Model               = IB_Orthanc_A
  853.     ;      ParticleSysBone      = NONE BuildingDoughnutCloud
  854.         ParticleSysBone     = NONE BuildingContructDust
  855.         End  
  856.  
  857.         AnimationState          = ACTIVELY_BEING_CONSTRUCTED
  858.             Animation
  859.                 AnimationName    = IB_Orthanc_A.IB_Orthanc_A
  860.                 AnimationMode   = MANUAL
  861.             End
  862.             BeginScript
  863.     ;            CurDrawableHideSubObject("FIRE02")
  864.             EndScript
  865.         End
  866.  
  867.         ;------------Build Up States
  868.         ModelConditionState   = BASE_BUILD
  869.             Model               = IB_Orthanc_A
  870.     ;        ParticleSysBone      = NONE BuildingDoughnutCloud
  871.             ParticleSysBone     = NONE BuildingContructDust
  872.         End  
  873.  
  874.         AnimationState          = BASE_BUILD
  875.             Animation
  876.                 AnimationName = IB_Orthanc_A.IB_Orthanc_A
  877.                 AnimationMode = ONCE
  878.                 AnimationBlendTime = 0            
  879.                 AnimationSpeedFactorRange = 2.0 2.0 ; 300 frame anim, but need to shrink down to 5 seconds
  880.             End
  881.             BeginScript
  882.     ;            CurDrawableHideSubObject("FIRE02")
  883.             EndScript
  884.         End
  885.  
  886.         AnimationState          = JUST_BUILT
  887.             Animation
  888.                 AnimationName = IB_Orthanc_A.IB_Orthanc_A
  889.                 AnimationMode = MANUAL            
  890.                 AnimationBlendTime = 0
  891.             End
  892.             Flags = START_FRAME_FIRST
  893.             BeginScript
  894.     ;            CurDrawableHideSubObject("FIRE02")
  895.             EndScript
  896.         End
  897.         
  898.         ModelConditionState  = DAMAGED
  899.         Model         = IB_Orthanc_D1  
  900.         End
  901.         
  902.         AnimationState = DAMAGED
  903.         EnteringStateFX    = FX_BuildingDamaged
  904.         End
  905.  
  906.         ModelConditionState  = REALLYDAMAGED
  907.         Model         = IB_Orthanc_D2
  908.     ;       ParticleSysBone NONE furnaceSmoke
  909.         End
  910.         AnimationState = REALLYDAMAGED
  911.                Animation                =    ReallyDamagedanimation
  912.                 AnimationName        =     IB_Orthanc_D2.IB_Orthanc_D2
  913.                 AnimationMode        =    ONCE
  914.                End
  915.              EnteringStateFX    = FX_BuildingReallyDamaged
  916.         End
  917.  
  918.         ModelConditionState  = RUBBLE
  919.         Model         = IB_Orthanc_D3
  920.         ParticleSysBone FXbone02 BaradDurDust01 FollowBone:yes
  921.         ParticleSysBone NONE CastleExplosion
  922.         End
  923.         
  924.         AnimationState = RUBBLE
  925.             Animation                =    Death
  926.                 AnimationName        =    IB_Orthanc_D3.IB_Orthanc_D3
  927.                 AnimationMode        =    ONCE
  928.             End
  929.             EnteringStateFX = FX_StructureMediumCollapse
  930.         End      
  931.         
  932.         ModelConditionState  = POST_RUBBLE
  933.             Model         = IB_Orthanc_R
  934.         End
  935.  
  936.         ModelConditionState  = POST_COLLAPSE
  937.             Model         = IB_Orthanc_R
  938.         End
  939.     End
  940.  
  941. ; *** AUDIO Parameters ***
  942.     #include "..\..\..\Includes\StandardBuildingEvaEvents.inc"
  943.  
  944.     SoundOnDamaged                    = BuildingLightDamageStone
  945.     SoundOnReallyDamaged            = BuildingHeavyDamageStone
  946.  
  947.     VoiceSelectUnderConstruction    = BuildingEvilVoiceSelectUnderConstruction
  948.     VoiceSelect                        = IsengardFortressSelect
  949.  
  950.     UnitSpecificSounds
  951.         UnderConstruction        = BuildingBigConstructionLoop    // Built first time
  952.         //UnderRepairFromDamage    = NoSound                        // Repaired No animation on the building, so don't bother playing sound
  953.         UnderRepairFromRubble    = BuildingBigConstructionLoop    // Repaired from completely destroyed (not used???)
  954.     End
  955.  
  956.  
  957. ; ***DESIGN parameters ***
  958.     DisplayName        = OBJECT:IsengardCastleBaseKeep
  959.     Side            = WOR
  960.     EditorSorting        = STRUCTURE
  961.     ThreatLevel        = 1.0
  962.     BuildCost               = 5000
  963.     BuildTime               = 120.0        ; in seconds
  964.     VisionRange             = 400        ; 160.0
  965.     ShroudClearingRange     = 800        ; 161
  966.  
  967.     ArmorSet
  968.         Conditions    = None
  969.         Armor        = FortressArmor
  970.         DamageFX    = OrthancDamageFX
  971.     End
  972.     
  973.     CommandSet        = GenericKeepCommandSet
  974.     
  975.     HealthBoxHeightOffset    = -200
  976.     
  977.  
  978. ; *** ENGINEERING Parameters ***      
  979.     KindOf            = VITAL_FOR_BASE_SURVIVAL PRELOAD SELECTABLE STRUCTURE IMMOBILE SCORE CASTLE_KEEP MP_COUNT_FOR_VICTORY CAN_ATTACK FS_FACTORY AUTO_RALLYPOINT DOZER_FACTORY NEVER_CULL_FOR_MP COMMANDCENTER DONT_HIDE_IF_FOGGED        ; MADE_OF_METAL NEED_BASE_FOUNDATION
  980.     RadarPriority        = STRUCTURE
  981.     KeepSelectableWhenDead    = Yes
  982.  
  983.     //Commandset upgrades based on faction.  This is so the building will produce the proper units when necessary
  984.     Behavior = CommandSetUpgrade ModuleTag_CommandSetMen
  985.         TriggeredBy    = Upgrade_MenFaction
  986.         CommandSet    = MenMonumentFortressRebuildCommandSet
  987.     End
  988.     Behavior = CommandSetUpgrade ModuleTag_CommandSetElven
  989.         TriggeredBy    = Upgrade_ElfFaction
  990.         CommandSet    = ElvenMonumentFortressRebuildCommandSet
  991.     End
  992.     Behavior = CommandSetUpgrade ModuleTag_CommandSetDwarven
  993.         TriggeredBy    = Upgrade_DwarfFaction
  994.         CommandSet    = DwarvenMonumentFortressRebuildCommandSet
  995.     End
  996.     Behavior = CommandSetUpgrade ModuleTag_CommandSetMordor
  997.         TriggeredBy    = Upgrade_MordorFaction
  998.         CommandSet    = MordorMonumentFortressRebuildCommandSet
  999.     End
  1000.     Behavior = CommandSetUpgrade ModuleTag_CommandSetIsengard
  1001.         TriggeredBy    = Upgrade_IsengardFaction
  1002.         CommandSet    = IsengardMonumentFortressRebuildCommandSet
  1003.     End
  1004.     Behavior = CommandSetUpgrade ModuleTag_CommandSetWild
  1005.         TriggeredBy    = Upgrade_WildFaction
  1006.         CommandSet    = WildMonumentFortressRebuildCommandSet
  1007.     End
  1008.     //End Commandset upgrades
  1009.  
  1010.       //-----------------------------------------------
  1011.     //Used for hero revival and initial construction     
  1012.     Behavior = ProductionUpdate ProductionUpdateModuleTag
  1013.         // nothing, but is required if we have any Object-level Upgrades!
  1014.     End
  1015.     
  1016.     Behavior = QueueProductionExitUpdate ModuleTag_QueuePEU
  1017.         UnitCreatePoint            = X:0.0 Y:-0.0 Z:0.0
  1018.         NaturalRallyPoint        = X:50.0 Y:-60.0 Z:0.0            ; NaturalRallyPointX must always match GeometryMajorRadius!
  1019.         ExitDelay            = 300                    ; Handles delays between units if multiple produced at a time.
  1020.         AllowAirborneCreation        = Yes
  1021.     End  
  1022.     ;-----------------------------------------------
  1023.  
  1024.     Behavior = GettingBuiltBehavior GetBuiltBehaviorTag
  1025.         SelfBuildingLoop        = BuildingBigConstructionLoop        ; Only played if we DON'T spawn a worker
  1026.         SelfRepairFromDamageLoop    = NoSound                ; This doesn't cause an animation, so don't bother playing a sound
  1027.         SelfRepairFromRubbleLoop    = BuildingBigConstructionLoop
  1028.         SpawnTimer            = -1.0                    ; Negative means no 'autoheal'
  1029.         RebuildTimeSeconds        = 120
  1030.     End
  1031.   
  1032.     Behavior = CastleMemberBehavior ModuleTag_CMB
  1033.         BeingBuiltSound = BuildingBigConstructionLoop
  1034.     End 
  1035.  
  1036. ;    Behavior = BuildingBehavior BuildingModuleTag
  1037.     ; NightWindowName    = GBWORKSHOPN
  1038.     ; FireWindowName    = WINDOW_F01
  1039.     ; GlowWindowName    = WINDOW_G01
  1040.     ; FireName        = FIRE01
  1041. ;    End
  1042.  
  1043.     Body = ActiveBody ModuleTag_02
  1044.         MaxHealth        = MONUMENT_FORTRESS_HEALTH
  1045.         MaxHealthDamaged    = MONUMENT_FORTRESS_HEALTH_DAMAGED
  1046.         MaxHealthReallyDamaged    = MONUMENT_FORTRESS_HEALT_REALLY_DAMAGED
  1047.     End
  1048.  
  1049.     // Note that structures with "RUBBLE" states should not use DestroyDie; such buildings are 
  1050.     // never truly destroyed, even when reduced to zero health. Also note that garrisonable
  1051.     // buildings automatically stick around because GarrisonContain has it's own DieModule
  1052.     Behavior = KeepObjectDie ModuleTag_IWantRubble
  1053.     End
  1054.  
  1055.     ;//Money Maker
  1056.     Behavior = AutoDepositUpdate AutoDepositModuleTag
  1057.         DepositTiming           = GENERIC_KEEP_MONEY_TIME
  1058.         DepositAmount           = GENERIC_KEEP_MONEY_AMOUNT 
  1059.         InitialCaptureBonus     = 0    // no initial bonus
  1060.     End
  1061.  
  1062.     Behavior = TerrainResourceBehavior ModuleTag_NewMoneyDeadSpot
  1063.         Radius            = GENERIC_KEEP_MONEY_RANGE    ;// How far we try to claim ground
  1064.         MaxIncome        = 0                ;// If we were to get all we wanted, how much we would earn.  Linear slope to 0 at 0% claim
  1065.         IncomeInterval        = 999999            ;// How often (in msec) we give that much money
  1066.         HighPriority        = Yes                ;// A high priority claim gets to pretend it was there first.
  1067.         Visible         = No                 ;// Don't show decal when a resource building is selected.
  1068.     End
  1069.  
  1070.     Behavior = CitadelSlaughterHordeContain ModuleTag_SlaughterMe
  1071.         PassengerFilter                = GENERIC_FACTION_SLAUGHTERABLE
  1072.         ObjectStatusOfContained            = UNSELECTABLE ENCLOSED
  1073.         CashBackPercent                = 200%        
  1074.         ContainMax                = 99    // give it a huge capacity, just in case player sends his whole army in at once
  1075.         AllowEnemiesInside            = No
  1076.         AllowAlliesInside            = No
  1077.          AllowNeutralInside            = No
  1078.          AllowOwnPlayerInsideOverride        = Yes
  1079.         EnterSound                = MordorSlaughterhouseEnterSound
  1080.         EntryOffset                = X:50.0 Y:-60.0 Z:0.0
  1081.         EntryPosition                = X:0.0 Y:0.0 Z:0.0
  1082.         
  1083.         ExitOffset                = X:50.0 Y:-60.0 Z:0.0
  1084.         StatusForRingEntry            = HOLDING_THE_RING
  1085.         UpgradeForRingEntry            = Upgrade_RingHero Upgrade_FortressRingHero
  1086.         ObjectToDestroyForRingEntry        = NONE +TheDroppedRing
  1087.         FXForRingEntry                = FX_OneRingFlare
  1088.     End
  1089.     
  1090.     #include "..\..\..\FortressRingFunc.inc"
  1091.  
  1092.     Geometry        = CYLINDER
  1093.     GeometryMajorRadius    = 42.6
  1094.     GeometryMinorRadius    = 0
  1095.     GeometryHeight        = 65.2
  1096.       
  1097.     AdditionalGeometry    = CYLINDER
  1098.     GeometryMajorRadius    = 22.6
  1099.     GeometryMinorRadius    = 0
  1100.     GeometryHeight        = 265.2
  1101.       
  1102.     GeometryIsSmall        = No
  1103.     Shadow            = SHADOW_VOLUME
  1104.       
  1105.     AttackContactPoint    = X:0 Y:0 Z:262
  1106.     AttackContactPoint    = X:0 Y:0 Z:0
  1107. End