Turret Help
Umbrella Secrets 07 Jan 2011
Hi, I just started coding my first turret and I understand most of it but the part where the muzzle flashes appear and where the bullets fly out. Also I've been trying to get my chainguns to rotate on my turret? Is there a way to do that without an animation?
Here is the code to my turret:
Also here is a pic to show what I mean. The muzzle flashes stay on all the time and the bullets fly out from the middle.
Any help would be greatly appericated
Edited by Umbrella Secrets, 07 January 2011 - 01:22.
Here is the code to my turret:
<?xml version="1.0" encoding="utf-8"?> <AssetDeclaration xmlns="uri:ea.com:eala:asset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xi="http://www.w3.org/2001/XInclude"> <Tags></Tags> <Includes> <Include type="all" source="DATA:GlobalData/GlobalDefines.xml" /> <Include type="all" source="ART:AST_Turret1.w3x" /> <Include type="all" source="ART:ASTurret1_BLDS.w3x" /> <Include type="all" source="ART:ASTurret1_BLDA.w3x" /> <Include type="all" source="ART:GBWatchTwrD3_SN.w3x" /> <Include type="all" source="ART:GBWatchTwrD3_AN.w3x" /> <Include type="all" source="ART:FXspotlight.w3x" /> <Include type="all" source="ART:GBWatchTwr_A.w3x" /> <Include type="all" source="ART:GBWatchTwrG.w3x" /> <Include type="all" source="ART:GBWatchTwrG_A.w3x" /> <Include type="all" source="ART:GBWatchTwrGD3.w3x" /> <Include type="all" source="ART:FXTracerGDI.xml" /> <Include type="all" source="DATA:GlobalData/GlobalDefines.xml" /> <!-- Base Object --> <Include type="instance" source="DATA:BaseObjects/BaseStructure.xml" /> </Includes> <GameObject id="AlienBuzzerHive" inheritFrom="BaseStructure" SelectPortrait="Portrait_GDIWatchTower" ButtonImage="Portrait_GDIWatchTower" Side="ALIEN" EditorSorting="STRUCTURE" TransportSlotCount="1" BuildCost="600" BuildTime="6" EnergyProduction="-5" CommandSet="GDIWatchTowerCommandSet" KindOf="STRUCTURE CAN_ATTACK SELECTABLE IMMOBILE CAN_CAST_REFLECTIONS FS_BASE_DEFENSE POWERED AUTO_ACQUIRABLE_BY_AI COVER CAN_SEE_THROUGH_STRUCTURE ATTACK_NEEDS_LINE_OF_SIGHT LINE_OF_SIGHT_IGNORES_BUILDINGS" RadarPriority="STRUCTURE" PlacementViewAngle="225d" CampnessValue="=$CAMPNESS_DEFENSIVE_STRUCTURE" ProductionQueueType="OTHER_STRUCTURE" BuildPlacementTypeFlag="OTHER_STRUCTURE" EditorName="Turret1" WeaponCategory="GUN" TypeDescription="Type:GDIWatchTower" Description="Desc:GDIWatchTower"> <DisplayName xai:joinAction="Replace" xmlns:xai="uri:ea.com:eala:asset:instance">Name:GDIWatchTower</DisplayName> <GameDependency> <RequiredObject>AlienPowerProjector</RequiredObject> </GameDependency> <ArmorSet Armor="AlienBuzzerHiveArmor" DamageFX="FactionStructureDamageFX" /> <SkirmishAIInformation BaseBuildingLocation="SPREAD" /> <Draws> <!-- DRAW GUN --> <scriptedModelDraw id="ModuleTag_Draw" OkToChangeModelColor="true" ExtraPublicBone="FXMuzzle FXMuzzle2 FXMuzzleFlash FXMuzzleFlash2"> <ModelConditionState ParseCondStateType="PARSE_DEFAULT"> <Model Name="AST_Turret1" /> <WeaponFireFXBone WeaponSlotType="PRIMARY_WEAPON" BoneName="FXMuzzle FXMuzzle2" /> <WeaponMuzzleFlash WeaponSlotType="PRIMARY_WEAPON" BoneName="FXMuzzleFlash FXMuzzleFlash2" /> <WeaponLaunchBone WeaponSlotType="PRIMARY_WEAPON" BoneName="FXMuzzle FXMuzzle2" /> <Turret TurretNameKey="Turret" TurretPitch="Barrel1 Barrel2" TurretID="1" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="STRUCTURE_UNPACKING"> <Model Name="ASTurret1_BLDS" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="DAMAGED"> <Model Name="GBWatchTwrG" /> <Texture Original="GBWatchTwr" New="GBWatchTowerD" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="REALLYDAMAGED"> <Model Name="GBWatchTwrG" /> <Texture Original="GBWatchTwr" New="GBWatchTowerD" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="DYING"> <Model Name="GBWatchTwrGD3" /> </ModelConditionState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="BUILD_PLACEMENT_CURSOR"> <!-- no anim --> <script> CurDrawableHideSubObject("MuzzleFlash_01") CurDrawableHideSubObject("MuzzleFlash_02") </Script> </AnimationState> <!-- BUILDUP ANIMATION --> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="STRUCTURE_UNPACKING"> <Animation AnimationName="ASTurret1_BLDA" AnimationMode="ONCE" /> </AnimationState> <!-- DYING ANIMATION --> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="DYING"> <Animation AnimationName="GBWatchTwrGD3" AnimationMode="ONCE" /> <ParticleSysBone BoneName="NONE" FXParticleSystemTemplate="Des_Small" FollowBone="false" /> </AnimationState> </ScriptedModelDraw> <SpotlightDraw id="ModuleTag_Spotlight" AttachToBoneInAnotherModule="Bone_Spotlite" RefreshTime="2.0s" SweepTime="1.0s"> <ModelConditionState ParseCondStateType="PARSE_DEFAULT"> <Model Name="FXspotlight" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="BUILD_PLACEMENT_CURSOR"> <Model Name="" /> </ModelConditionState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="BUILD_PLACEMENT_CURSOR"> <script> CurDrawableHideSubObject("Plane01") </Script> </AnimationState> </SpotlightDraw> <TracerModelDraw id="ModuleTag_TracerModelDraw" MinLength="35.0" MaxLength="35.0" Width="5.0" MinSpeed="30" MaxSpeed="40" SweepSpeed="1.0" SpreadAngle="4.0" MinTracersPerFrame="1" MaxTracersPerFrame="1" FrameLifeTime="10" WeaponSlotType="PRIMARY_WEAPON" Texture="FXTracerGDI" UseAdditiveBlending="true" TracerHitFx="FX_BulletHitLargeGDI"> <HeadColor r="1.0" g="1.0" b="1.0" a="1.0" /> <TailColor r="0.0" g="0.0" b="0.0" /> </TracerModelDraw> </Draws> <Behaviors> <WeaponSetUpdate id="ModuleTag_WeaponSetUpdate"> <WeaponSlotTurret ID="1"> <Weapon Ordering="PRIMARY_WEAPON" Template="GDIWatchTowerGun" /> <TurretSettings TurretTurnRate="100" TurretPitchRate="100" AllowsPitch="true" MinimumPitch="360d" PitchHeight="0%" MinIdleScanTime="1.0s" MaxIdleScanTime="5.0s" MinIdleScanAngle="0.0" MaxIdleScanAngle="90.0"> <TurretAITargetChooserData StartupDelay="1.0s"/> </TurretSettings> </WeaponSlotTurret> </WeaponSetUpdate> <!-- slow death must be defined before the structure topple. --> <SlowDeath id="ModuleTag_Death" SinkDelay="4.0s" SinkRate="4.0" DestructionDelay="10.0s"> <Sound Type="INITIAL" List="HumanFaction_SmallBuilding_DieMS" /> <DieMuxData DeathTypes="ALL" /> </SlowDeath> <FXListBehavior id="ModuleTag_FXList"> <DieMuxData DeathTypes="ALL" /> <Event Index="onDeath" FX="FX_TEMPLarge" /> <Event Index="onTransitionToDamaged" FX="FX_BuildDamaged_Small" /> <Event Index="onTransitionToReallyDamaged" FX="FX_BuildDamaged_Small" /> <Event Index="onTransitionToRubble" FX="FX_BuildRubble_Small" /> </FXListBehavior> <StructureUnpackUpdate UnpackTime="1.5s" /> <StealthDetectorUpdate id="ModuleTag_StealthDetect" DetectionRange="100" /> <xi:include href="DATA:Includes/GenericBuildingRepair.xml" /> <xi:include href="DATA:Includes/GenericGDIBuildingSuicide.xml" /> <xi:include href="DATA:Includes/RepairAlliesEngineerContain.xml" /> </Behaviors> <AI> <AIUpdate id="ModuleTag_AI" AutoAcquireEnemiesWhenIdle="YES" AILuaEventsList="GDIWatchTowerFunctions"> <UnitAITargetChooserData CanPickDynamicTargets="false" SympathyRange="25.0" IdleScanDelay="0.2s" /> </AIUpdate> </AI> <Body> <ActiveBody id="ModuleTag_Body" MaxHealth="2400" /> </Body> <Geometry IsSmall="false"> <Shape Type="BOX" MajorRadius="17.0" MinorRadius="9" Height="48.0" ContactPointGeneration="STRUCTURE"> <Offset x="-3.0" y="0" z="0" /> </Shape> </Geometry> <AudioArrayVoice> <AudioEntry Sound="AudioEvent:GDI_WatchTowerSelect" AudioType="voiceSelect" /> </AudioArrayVoice> <AudioArraySound> <AudioEntry Sound="HumanFaction_SmallBuilding_LightDamageMS" AudioType="soundOnDamaged" /> <AudioEntry Sound="HumanFaction_SmallBuilding_HeavyDamageMS" AudioType="soundOnReallyDamaged" /> </AudioArraySound> <ShadowInfo Type="VOLUME" /> <VisionInfo VisionRange="350" ShroudClearingRange="500" /> </GameObject> </AssetDeclaration>
Also here is a pic to show what I mean. The muzzle flashes stay on all the time and the bullets fly out from the middle.
Any help would be greatly appericated
Edited by Umbrella Secrets, 07 January 2011 - 01:22.
Sgt. Rho 07 Jan 2011
That is because you named both bones. You don't name both bones, only one of them.
If you have WeaponA01, WeaponA02, WeaponA03, etc, you just put in "WeaponA" as bone, not all of the bones.
Tracers can only fire from one barrel of one weapon.
When exporting, set the Muzzleflash's w3d properties to Hide.
If you have WeaponA01, WeaponA02, WeaponA03, etc, you just put in "WeaponA" as bone, not all of the bones.
Tracers can only fire from one barrel of one weapon.
When exporting, set the Muzzleflash's w3d properties to Hide.
Umbrella Secrets 07 Jan 2011
Sgt. Rho 07 Jan 2011
You can only have one active tracer for each unit. In TA I faked the tracers by using projectiles with the tracer-texture.
Umbrella Secrets 07 Jan 2011
Is it okay if you send me an example of the code to fake a second gun fire please? So I can get an idea of how it works.
Sgt. Rho 07 Jan 2011
It's just a rapid fire weapon with a projectile.
Edited by Sgt. Rho, 07 January 2011 - 04:06.
<WeaponTemplate id="GDIVulcanTowerWeapon" Name="GDIVulcanTowerWeapon" AttackRange="350.0" WeaponSpeed="700.0" FireSoundPerClip="FX_WolverineVulcan" FireFX="FX_GDIWatchTowerFire" RadiusDamageAffects="ALLIES ENEMIES NEUTRALS" ClipSize="20" AutoReloadsClip="AUTO" AntiMask="ANTI_GROUND" DisableScatterForTargetsOnWall="true" CanFireWhileMoving="true" RotatingTurret="true" ReAcquireDetailType="PER_CLIP" > <FiringDuration MinSeconds=".025s" MaxSeconds=".025s" /> <ClipReloadTime MinSeconds="1.0s" MaxSeconds="1.2s" /> <Nuggets> <ProjectileNugget ProjectileTemplate="FXMinigunTracer" WarheadTemplate="GDIVulcanTowerWeaponWarhead"> <VeterancyProjectiles VeterancyLevel="HEROIC" ProjectileTemplate="FXMinigunTracer_Veteran"/> </ProjectileNugget> </Nuggets> </WeaponTemplate> <WeaponTemplate id="GDIVulcanTowerWeaponWarhead" Name="GDIVulcanTowerWeaponWarhead" ProjectileCollidesWith = "ALLIES ENEMIES NEUTRAL STRUCTURES WALLS" RadiusDamageAffects="ALLIES ENEMIES NEUTRALS"> <Nuggets> <DamageNugget Damage="7.0" Radius="0.0" DelayTimeSeconds="0.0s" DamageType="GUN" DamageFXType="GDI_MACHINEGUN" DeathType="NORMAL" /> <SuppressionNugget Radius="10.0" Suppression="25" DurationSeconds="5s" /> </Nuggets> </WeaponTemplate>
<?xml version="1.0" encoding="us-ascii"?> <!-- The default tank projectile --> <AssetDeclaration xmlns="uri:ea.com:eala:asset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xai="uri:ea.com:eala:asset:instance"> <Tags></Tags> <Includes> <Include type="all" source="ART:FXVulcanTracer.w3x" /> <Include type="all" source="ART:FXTracerGDI.xml" /> <Include type="all" source="ART:FXTankShellHeroic.w3x" /> </Includes> <GameObject id="FXMinigunTracer" Side="GDI" EditorSorting="SYSTEM" KindOf="PROJECTILE NO_COLLIDE HIDE_IF_FOGGED" EditorName="FXTankShell"> <ArmorSet Armor="NoArmor" /> <Draws> <scriptedModelDraw id="ModuleTag_ScriptedModelDraw"> <ModelConditionState ParseCondStateType="PARSE_DEFAULT"> <Model Name="FXVulcanTracer" /> <Texture Original="FXTracer" New="FXTracerGDI" /> </ModelConditionState> </ScriptedModelDraw> </Draws> <Behaviors> <FXListBehavior id="ModuleTag_FXLists"> <DieMuxData DeathTypes="ALL" /> <Event Index="onDeath" FX="FX_BulletHitGDI" /> </FXListBehavior> <DestroyDie id="ModuleTag_Die"> <DieMuxData DeathTypes="ALL" /> </DestroyDie> <BezierProjectile id="ModuleTag_BezierProjectileBehavior" FirstHeightMin="0" FirstHeightMax="0" SecondHeightMin="0" SecondHeightMax="0" FirstPercentIndent="33" SecondPercentIndent="66" CurveFlattenMinDist="100" DetonateCallsKill="true" FlightPathAdjustDistPerSecond="300" FlightPathAdjustStraightOnly="false" OrientToFlightPath="true"> </BezierProjectile> </Behaviors> <Body> <ActiveBody id="ModuleTag_ActiveBody" MaxHealth="100.0" /> </Body> <Geometry IsSmall="true"> <Shape Type="SPHERE" MajorRadius="0.8"></Shape> </Geometry> <VisionInfo VisionRange="0" /> </GameObject> <GameObject inheritFrom="FXMinigunTracer" id="FXMinigunTracer_Veteran" EditorName="FXMinigunTracer_Veteran"> <Draws> <scriptedModelDraw id="ModuleTag_ScriptedModelDraw" xai:joinAction="Replace"> <ModelConditionState ParseCondStateType="PARSE_DEFAULT"> <Model Name="FXVulcanTracer" /> <Texture Original="FXTracer" New="FXTracerGDI" /> </ModelConditionState> </ScriptedModelDraw> </Draws> <Behaviors> <BezierProjectile id="ModuleTag_BezierProjectileBehavior" FirstHeightMin="0" FirstHeightMax="0" SecondHeightMin="0" SecondHeightMax="0" FirstPercentIndent="33" SecondPercentIndent="66" CurveFlattenMinDist="100" DetonateCallsKill="true" FlightPathAdjustDistPerSecond="300" FlightPathAdjustStraightOnly="false" OrientToFlightPath="true"> </BezierProjectile> </Behaviors> </GameObject> </AssetDeclaration>
Edited by Sgt. Rho, 07 January 2011 - 04:06.
Umbrella Secrets 07 Jan 2011
Oh okay I've seen these before in worldbuilder, I always wondered way EA had random shells or bullets. Thanks
Umbrella Secrets 08 Jan 2011
I need help on this code again The second chaingun won't fire for some reason I'm not sure if this code is right, this is the turret structure code.
<?xml version="1.0" encoding="utf-8"?> <AssetDeclaration xmlns="uri:ea.com:eala:asset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xi="http://www.w3.org/2001/XInclude"> <Tags></Tags> <Includes> <Include type="all" source="DATA:GlobalData/GlobalDefines.xml" /> <Include type="all" source="ART:AST_Turret1.w3x" /> <Include type="all" source="ART:ASTurret1_BLDS.w3x" /> <Include type="all" source="ART:ASTurret1_BLDA.w3x" /> <Include type="all" source="ART:GBWatchTwrD3_SN.w3x" /> <Include type="all" source="ART:GBWatchTwrD3_AN.w3x" /> <Include type="all" source="ART:FXspotlight.w3x" /> <Include type="all" source="ART:GBWatchTwr_A.w3x" /> <Include type="all" source="ART:GBWatchTwrG.w3x" /> <Include type="all" source="ART:GBWatchTwrG_A.w3x" /> <Include type="all" source="ART:GBWatchTwrGD3.w3x" /> <Include type="all" source="ART:FXTracerGDI.xml" /> <Include type="all" source="DATA:GlobalData/GlobalDefines.xml" /> <!-- Base Object --> <Include type="instance" source="DATA:BaseObjects/BaseStructure.xml" /> </Includes> <GameObject id="AlienBuzzerHive" inheritFrom="BaseStructure" SelectPortrait="Portrait_GDIWatchTower" ButtonImage="Portrait_GDIWatchTower" Side="ALIEN" EditorSorting="STRUCTURE" TransportSlotCount="1" BuildCost="600" BuildTime="6" EnergyProduction="-5" CommandSet="GDIWatchTowerCommandSet" KindOf="STRUCTURE CAN_ATTACK SELECTABLE IMMOBILE CAN_CAST_REFLECTIONS FS_BASE_DEFENSE POWERED AUTO_ACQUIRABLE_BY_AI COVER CAN_SEE_THROUGH_STRUCTURE ATTACK_NEEDS_LINE_OF_SIGHT LINE_OF_SIGHT_IGNORES_BUILDINGS" RadarPriority="STRUCTURE" PlacementViewAngle="225d" CampnessValue="=$CAMPNESS_DEFENSIVE_STRUCTURE" ProductionQueueType="OTHER_STRUCTURE" BuildPlacementTypeFlag="OTHER_STRUCTURE" EditorName="Turret1" WeaponCategory="GUN" TypeDescription="Type:GDIWatchTower" Description="Desc:GDIWatchTower"> <DisplayName xai:joinAction="Replace" xmlns:xai="uri:ea.com:eala:asset:instance">Name:GDIWatchTower</DisplayName> <GameDependency> <RequiredObject>AlienPowerProjector</RequiredObject> </GameDependency> <ArmorSet Armor="AlienBuzzerHiveArmor" DamageFX="FactionStructureDamageFX" /> <SkirmishAIInformation BaseBuildingLocation="SPREAD" /> <Draws> <!-- DRAW GUN --> <scriptedModelDraw id="ModuleTag_Draw" OkToChangeModelColor="true" ExtraPublicBone="FXMuzzle FXMuzzle2 FXMuzzleFlash FXMuzzleFlash2"> <ModelConditionState ParseCondStateType="PARSE_DEFAULT"> <Model Name="AST_Turret1" /> <WeaponFireFXBone WeaponSlotID="1" WeaponSlotType="PRIMARY_WEAPON" BoneName="FXMuzzle" /> <WeaponMuzzleFlash WeaponSlotID="1" WeaponSlotType="PRIMARY_WEAPON" BoneName="FXMuzzleFlash" /> <WeaponLaunchBone WeaponSlotID="1" WeaponSlotType="PRIMARY_WEAPON" BoneName="FXMuzzle" /> <WeaponFireFXBone WeaponSlotID="2" WeaponSlotType="PRIMARY_WEAPON" BoneName="FXMuzzle2" /> <WeaponMuzzleFlash WeaponSlotID="2" WeaponSlotType="PRIMARY_WEAPON" BoneName="FXMuzzleFlash2" /> <WeaponLaunchBone WeaponSlotID="2" WeaponSlotType="PRIMARY_WEAPON" BoneName="FXMuzzle2" /> <Turret TurretNameKey="Turret" TurretPitch="Barrel" TurretID="1" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="STRUCTURE_UNPACKING"> <Model Name="ASTurret1_BLDS" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="DAMAGED"> <Model Name="GBWatchTwrG" /> <Texture Original="GBWatchTwr" New="GBWatchTowerD" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="REALLYDAMAGED"> <Model Name="GBWatchTwrG" /> <Texture Original="GBWatchTwr" New="GBWatchTowerD" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="DYING"> <Model Name="GBWatchTwrGD3" /> </ModelConditionState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="FIRING_A"> <Animation AnimationName="AST_Turret1" AnimationMode="LOOP" /> </AnimationState> <AnimationState ParseCondStateType="PARSE_DEFAULT" StateName="STATE_bored" AllowRepeatInRandomPick="true"> <Animation AnimationName="AST_Turret1" AnimationMode="LOOP" AnimationSpeedFactorMin="0.8" AnimationSpeedFactorMax="0.8" /> </AnimationState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="BUILD_PLACEMENT_CURSOR"> <!-- no anim --> <script> CurDrawableHideSubObject("MuzzleFlash_01") CurDrawableHideSubObject("MuzzleFlash_02") </Script> </AnimationState> <!-- BUILDUP ANIMATION --> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="STRUCTURE_UNPACKING"> <Animation AnimationName="ASTurret1_BLDA" AnimationMode="ONCE" /> </AnimationState> <!-- DYING ANIMATION --> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="DYING"> <Animation AnimationName="GBWatchTwrGD3" AnimationMode="ONCE" /> <ParticleSysBone BoneName="NONE" FXParticleSystemTemplate="Des_Small" FollowBone="false" /> </AnimationState> </ScriptedModelDraw> <SpotlightDraw id="ModuleTag_Spotlight" AttachToBoneInAnotherModule="Bone_Spotlite" RefreshTime="2.0s" SweepTime="1.0s"> <ModelConditionState ParseCondStateType="PARSE_DEFAULT"> <Model Name="FXspotlight" /> </ModelConditionState> <ModelConditionState ParseCondStateType="PARSE_NORMAL" ConditionsYes="BUILD_PLACEMENT_CURSOR"> <Model Name="" /> </ModelConditionState> <AnimationState ParseCondStateType="PARSE_NORMAL" ConditionsYes="BUILD_PLACEMENT_CURSOR"> <script> CurDrawableHideSubObject("Plane01") </Script> </AnimationState> </SpotlightDraw> <TracerModelDraw id="ModuleTag_TracerModelDraw" MinLength="35.0" MaxLength="35.0" Width="5.0" MinSpeed="30" MaxSpeed="40" SweepSpeed="1.0" SpreadAngle="4.0" MinTracersPerFrame="1" MaxTracersPerFrame="1" FrameLifeTime="10" WeaponSlotType="PRIMARY_WEAPON" Texture="FXTracerGDI" UseAdditiveBlending="true" TracerHitFx="FX_BulletHitLargeGDI"> <HeadColor r="1.0" g="1.0" b="1.0" a="1.0" /> <TailColor r="0.0" g="0.0" b="0.0" /> </TracerModelDraw> </Draws> <Behaviors> <WeaponSetUpdate id="ModuleTag_WeaponSetUpdate"> <WeaponSlotTurret ID="1" ParentID="1"> <Weapon Ordering="PRIMARY_WEAPON" Template="GDIWatchTowerGun" /> <TurretSettings TurretTurnRate="100" TurretPitchRate="100" AllowsPitch="true" MinimumPitch="0d" PitchHeight="0%" MinIdleScanTime="1.0s" MaxIdleScanTime="5.0s" MinIdleScanAngle="0.0" MaxIdleScanAngle="90.0"> <TurretAITargetChooserData StartupDelay="1.0s"/> </TurretSettings> </WeaponSlotTurret> <WeaponSlotTurret ID="2" ParentID="1"> <Weapon Ordering="PRIMARY_WEAPON" Template="ASTurret1Weapon" /> </WeaponSlotTurret> </WeaponSetUpdate> <!-- slow death must be defined before the structure topple. --> <SlowDeath id="ModuleTag_Death" SinkDelay="4.0s" SinkRate="4.0" DestructionDelay="10.0s"> <Sound Type="INITIAL" List="HumanFaction_SmallBuilding_DieMS" /> <DieMuxData DeathTypes="ALL" /> </SlowDeath> <FXListBehavior id="ModuleTag_FXList"> <DieMuxData DeathTypes="ALL" /> <Event Index="onDeath" FX="FX_TEMPLarge" /> <Event Index="onTransitionToDamaged" FX="FX_BuildDamaged_Small" /> <Event Index="onTransitionToReallyDamaged" FX="FX_BuildDamaged_Small" /> <Event Index="onTransitionToRubble" FX="FX_BuildRubble_Small" /> </FXListBehavior> <StructureUnpackUpdate UnpackTime="1.5s" /> <StealthDetectorUpdate id="ModuleTag_StealthDetect" DetectionRange="100" /> <xi:include href="DATA:Includes/GenericBuildingRepair.xml" /> <xi:include href="DATA:Includes/GenericGDIBuildingSuicide.xml" /> <xi:include href="DATA:Includes/RepairAlliesEngineerContain.xml" /> </Behaviors> <AI> <AIUpdate id="ModuleTag_AI" AutoAcquireEnemiesWhenIdle="YES" AILuaEventsList="GDIWatchTowerFunctions"> <UnitAITargetChooserData CanPickDynamicTargets="false" SympathyRange="25.0" IdleScanDelay="0.2s" /> </AIUpdate> </AI> <Body> <ActiveBody id="ModuleTag_Body" MaxHealth="2400" /> </Body> <Geometry IsSmall="false"> <Shape Type="BOX" MajorRadius="17.0" MinorRadius="9" Height="48.0" ContactPointGeneration="STRUCTURE"> <Offset x="-3.0" y="0" z="0" /> </Shape> </Geometry> <AudioArrayVoice> <AudioEntry Sound="AudioEvent:GDI_WatchTowerSelect" AudioType="voiceSelect" /> </AudioArrayVoice> <AudioArraySound> <AudioEntry Sound="HumanFaction_SmallBuilding_LightDamageMS" AudioType="soundOnDamaged" /> <AudioEntry Sound="HumanFaction_SmallBuilding_HeavyDamageMS" AudioType="soundOnReallyDamaged" /> </AudioArraySound> <ShadowInfo Type="VOLUME" /> <VisionInfo VisionRange="350" ShroudClearingRange="500" /> </GameObject> </AssetDeclaration>