Jump to content


MatthewH86

Member Since 29 Dec 2004
Offline Last Active Jan 27 2005 08:19 PM

Posts I've Made

In Topic: Is there a limit to how many

02 January 2005 - 02:20 AM

yep

it just doesn't appear in the shortcut bar

In Topic: Someone plz help a new modder!

30 December 2004 - 07:42 PM

sorted both problems

thanks to AdmiralGT

:)

In Topic: Someone plz help a new modder!

30 December 2004 - 07:09 PM

ASSERTION FAILURE: addModuleInfo - ERROR defining module 'ActiveBody' on thing template 'Boss_InfantryRanger'. The module 'ActiveBody' has the tag 'ModuleTag_01' which must be unique among all modules for this object, but the tag 'ModuleTag_01' is also already on module 'W3DModelDraw' within this object.

Please make unique tag names within an object definition

Stack Dump:
<Unknown>(-1) : <Unknown> 0x0067F27F
<Unknown>(-1) : <Unknown> 0x006E21B2
<Unknown>(-1) : <Unknown> 0x0012A734
<Unknown>(-1) : <Unknown> 0x00180001
<Unknown>(-1) : <Unknown> 0x6F426576
[Ignore]
ASSERTION FAILURE: [LINE: 16871 - FILE: 'Data\INI\Object\BossGeneral.ini'] Error reading field 'End' of block 'Object'

Stack Dump:
<Unknown>(-1) : <Unknown> 0x0067F27F
<Unknown>(-1) : <Unknown> 0x0074CC22
<Unknown>(-1) : <Unknown> 0x0074C9F8
[Ignore]
ASSERTION FAILURE: Error parsing block ' End' in INI file 'Data\INI\Object\BossGeneral.ini'

Stack Dump:
<Unknown>(-1) : <Unknown> 0x0067F27F
<Unknown>(-1) : <Unknown> 0x0074A4AD
<Unknown>(-1) : <Unknown> 0x00749F2D
<Unknown>(-1) : <Unknown> 0x0067E546
[Ignore]

In Topic: Is there a limit to how many

30 December 2004 - 07:04 PM

Hmm, can you think why the nuke carpet bomber doesn't appear in the shortcut bar?

Even if it's #1 it still doesn't show

In Topic: Someone plz help a new modder!

30 December 2004 - 05:40 PM

Converted Ranger to Minigunner Code

(He has flashbang :dry: too, quite happy with that)

Search for "commented b/c it crashes" without quotes
Object Boss_InfantryRanger

 ; *** ART Parameters ***
  SelectPortrait         = SNMiniGunner_L  
  ButtonImage            = SNMiniGunner
  
  UpgradeCameo1 = Upgrade_Nationalism
  UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
  UpgradeCameo3 = Upgrade_InfantryCaptureBuilding
  UpgradeCameo4 = Upgrade_AmericaChemicalSuits
  UpgradeCameo5 = Upgrade_AmericaRangerFlashBangGrenade

  Draw = W3DModelDraw ModuleTag_01

    OkToChangeModelColor = Yes

   ; this says "we don't use these condition states at all, so completely
   ; ignore them for purposes of matchmaking"... this is useful to help
   ; reduce the number of AliasConditionState clauses you must add in
   ; order to avoid ambiguity in some cases.
    IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A

   ; ------- Standing-Around Animations
 
    DefaultConditionState
      Model               = NICNSCI_SKN
      IdleAnimation       = NICNSC_SKL.NICNSC_STA 0 35
      IdleAnimation       = NICNSC_SKL.NICNSC_IDA
      IdleAnimation       = NICNSC_SKL.NICNSC_IDB
      AnimationMode       = ONCE
      WeaponFireFXBone    = PRIMARY Muzzle
      WeaponMuzzleFlash   = PRIMARY MuzzleFX
      TransitionKey       = TRANS_Stand
    End

    ConditionState        = REALLYDAMAGED
      IdleAnimation       = NICNSC_SKL.NICNSC_STB
      AnimationMode       = ONCE
      TransitionKey       = TRANS_StandDamaged
    End

   ; ------- Machine Gun Animations

    ConditionState      = USING_WEAPON_A
      Animation         = NICNSC_SKL.NICNSC_ATA
      AnimationMode     = LOOP
      TransitionKey     = TRANS_Firing
    End

    ConditionState      = USING_WEAPON_A REALLYDAMAGED
      Animation         = NICNSC_SKL.NICNSC_ATC
      AnimationMode     = LOOP
      TransitionKey     = TRANS_FiringDamaged
    End

    ConditionState      = USING_WEAPON_B
      Animation         = NICNSC_SKL.NICNSC_ATA2
      AnimationMode     = LOOP
;    TransitionKey     = TRANS_Firing
    End

    ConditionState      = USING_WEAPON_B REALLYDAMAGED
      Animation         = NICNSC_SKL.NICNSC_ATC2
      AnimationMode     = LOOP
;    TransitionKey     = TRANS_FiringDamaged
    End

   ; --- attacking (Grenade Launcher)
    ConditionState      = PREATTACK_B 
      Animation         = AIRngr_SKL.AIRngr_ATBA
      AnimationMode     = ONCE
      TransitionKey     = TRANS_FiringB
    End
    AliasConditionState = PREATTACK_B MOVING
    AliasConditionState = PREATTACK_B FIRING_B
    AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B

    ConditionState      = FIRING_B
      Animation         = AIRngr_SKL.AIRngr_ATBB
      AnimationMode     = ONCE
      TransitionKey     = TRANS_FiringB
    End

    ConditionState      = BETWEEN_FIRING_SHOTS_B
      Animation         = AIRngr_SKL.AIRngr_ATBB
      AnimationMode     = MANUAL
      Flags             = START_FRAME_LAST
      TransitionKey     = TRANS_FiringB
      WaitForStateToFinishIfPossible = TRANS_FiringB
    End
    AliasConditionState = RELOADING_B

    TransitionState     = TRANS_Stand TRANS_FiringB
      Animation         = AIRngr_SKL.AIRngr_ATBST1
      AnimationMode     = ONCE
    End

    TransitionState     = TRANS_FiringB TRANS_Stand
      Animation         = AIRngr_SKL.AIRngr_ATBST2
      AnimationMode     = ONCE
    End

    ConditionState      = PREATTACK_B REALLYDAMAGED
      Animation         = AIRngr_SKL.AIRngr_ATB2A
      AnimationMode     = ONCE
      TransitionKey     = TRANS_FiringBInjured
    End
    AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
    AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
    AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED

    ConditionState      = FIRING_B REALLYDAMAGED
      Animation         = AIRngr_SKL.AIRngr_ATB2B
      AnimationMode     = ONCE
      TransitionKey     = TRANS_FiringBInjured
    End

    ConditionState      = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
      Animation         = AIRngr_SKL.AIRngr_ATB2B
      AnimationMode     = MANUAL
      Flags             = START_FRAME_LAST
      TransitionKey     = TRANS_FiringBInjured
      WaitForStateToFinishIfPossible = TRANS_FiringBInjured
    End
    AliasConditionState = RELOADING_B REALLYDAMAGED

    TransitionState     = TRANS_StandInjured TRANS_FiringBInjured
      Animation         = AIRngr_SKL.AIRngr_ATB2ST1
      AnimationMode     = ONCE
    End

    TransitionState     = TRANS_FiringBInjured TRANS_StandInjured
      Animation         = AIRngr_SKL.AIRngr_ATB2ST2
      AnimationMode     = ONCE
    End

   ; -- cross-attack transitions

    TransitionState     = TRANS_FiringA TRANS_FiringB
      Animation         = AIRngr_SKL.AIRngr_ATA2AB
      AnimationMode     = ONCE
      AnimationSpeedFactorRange = 4 4
    End

    TransitionState     = TRANS_FiringB TRANS_FiringA
      Animation         = AIRngr_SKL.AIRngr_ATA2AB
      AnimationMode     = ONCE_BACKWARDS
      AnimationSpeedFactorRange = 4 4
    End

   ; ------- Firing-related Transitions

    TransitionState   = TRANS_Firing TRANS_FiringDamaged
      Animation       = NICNSC_SKL.NICNSC_AA2AC
      AnimationMode   = ONCE
    End

    TransitionState   = TRANS_Stand TRANS_Firing
      Animation       = NICNSC_SKL.NICNSC_SA2AA
      AnimationMode   = ONCE
    End

    TransitionState   = TRANS_Firing TRANS_Stand
      Animation       = NICNSC_SKL.NICNSC_AA2SA
      AnimationMode   = ONCE
    End

    TransitionState   = TRANS_StandDamaged TRANS_FiringDamaged
      Animation       = NICNSC_SKL.NICNSC_ATCST
      AnimationMode   = ONCE
    End

    TransitionState   = TRANS_FiringDamaged TRANS_StandDamaged
      Animation       = NICNSC_SKL.NICNSC_ATCED
      AnimationMode   = ONCE
    End


   ; ------------- Damage Transitions --------------------
    TransitionState = TRANS_StandDamaged TRANS_RunDamaged
      Animation       = NICNSC_SKL.NICNSC_AA2AC
      AnimationMode   = ONCE
      AnimationSpeedFactorRange = 2 2
    End
    TransitionState = TRANS_RunDamaged TRANS_StandDamaged 
      Animation       = NICNSC_SKL.NICNSC_AA2AC
      AnimationMode   = ONCE_BACKWARDS
      AnimationSpeedFactorRange = 2 2
      Flags           = START_FRAME_LAST
    End
    TransitionState = TRANS_Stand TRANS_StandDamaged 
      Animation       = NICNSC_SKL.NICNSC_AA2SA
      AnimationMode   = ONCE_BACKWARDS
      AnimationSpeedFactorRange = 4 5
      Flags           = START_FRAME_LAST
    End




   ; ------- Bayonet Animations

    ConditionState    = PREATTACK_C 
      Animation       = NICNSC_SKL.NICNSC_ATB1
      AnimationMode   = ONCE
      TransitionKey   = TRANS_Stab
    End
    AliasConditionState = PREATTACK_C MOVING
    AliasConditionState = PREATTACK_C FIRING_C
    AliasConditionState = PREATTACK_C BETWEEN_FIRING_SHOTS_C

    ConditionState      = FIRING_C
      Animation         = NICNSC_SKL.NICNSC_ATB2
      AnimationMode     = ONCE
     ; this is basically a trick: this guy has a nontrivial animation for firing,
     ; and a long recycle time between shots. we want him to finish his fire animation
     ; (unless he's ordered to do something else), so this is just a handy trick that
     ; says, "if the previous state had this transition key, allow it to finish before
     ; switching to us, if possible".
      WaitForStateToFinishIfPossible = TRANS_Stab
    End
    AliasConditionState = BETWEEN_FIRING_SHOTS_C
    AliasConditionState = RELOADING_C

   ; ------- Parachuting Animations

    ConditionState    = FREEFALL
      Animation       = NICNSC_SKL.NICNSC_POP
      AnimationMode   = MANUAL
      Flags           = START_FRAME_FIRST
      TransitionKey   = TRANS_Falling
    End
    AliasConditionState = FREEFALL REALLYDAMAGED
    AliasConditionState = FREEFALL DYING

    ConditionState    = PARACHUTING
      Animation       = NICNSC_SKL.NICNSC_PHG
      AnimationMode   = LOOP
      Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first
      TransitionKey   = TRANS_Chute
    End
    AliasConditionState = PARACHUTING REALLYDAMAGED
    AliasConditionState = PARACHUTING DYING

    TransitionState   = TRANS_Falling TRANS_Chute
      Animation       = NICNSC_SKL.NICNSC_POP
      AnimationMode   = ONCE
      Flags           = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first
    End

    TransitionState   = TRANS_Chute TRANS_Stand
      Animation       = NICNSC_SKL.NICNSC_PTD
      AnimationMode   = ONCE
    End

   ; ------- Movement Animations

    ConditionState      = MOVING
      Animation         = NICNSC_SKL.NICNSC_RNA 26
      AnimationMode     = LOOP
      Flags             = RANDOMSTART
      TransitionKey     = None
      ParticleSysBone   = None InfantryDustTrails
    End
    AliasConditionState = MOVING ATTACKING

    ConditionState = MOVING REALLYDAMAGED
      Animation         = NICNSC_SKL.NICNSC_RNB 28
      AnimationMode     = LOOP
      Flags             = RANDOMSTART
      TransitionKey     = TRANS_RunDamaged
      TransitionKey     = None
    End
    AliasConditionState = MOVING ATTACKING REALLYDAMAGED

   ; ------- Bldg-capture

    ConditionState      = UNPACKING
      Model             = NICNSC_F_SKN
      Animation         = NICNSC_F_SKL.NICNSC_F_FDP1
      AnimationMode     = ONCE
    End
    AliasConditionState = UNPACKING REALLYDAMAGED

    ConditionState      = RAISING_FLAG
      Model             = NICNSC_F_SKN
      Animation         = NICNSC_F_SKL.NICNSC_F_FDP2
      AnimationMode     = ONCE
      TransitionKey     = TRANS_Raising
    End
    AliasConditionState = RAISING_FLAG REALLYDAMAGED

    ConditionState      = PACKING
      Model             = NICNSC_F_SKN
      Animation         = NICNSC_F_SKL.NICNSC_F_FDP1
      AnimationMode     = ONCE_BACKWARDS
      Flags             = START_FRAME_LAST
      TransitionKey     = TRANS_Packing
    End
    AliasConditionState = PACKING REALLYDAMAGED

    TransitionState     = TRANS_Raising TRANS_Packing
      Model             = NICNSC_F_SKN
      Animation         = NICNSC_F_SKL.NICNSC_F_FDP2
      AnimationMode     = ONCE_BACKWARDS
      Flags             = START_FRAME_LAST
    End

   ; ------- Dying Animations

    ConditionState      = DYING
      Animation         = NICNSC_SKL.NICNSC_DTA
      Animation         = NICNSC_SKL.NICNSC_DTB
      AnimationMode     = ONCE
      TransitionKey     = TRANS_Dying
    End

    TransitionState     = TRANS_Dying TRANS_Flailing
      Animation         = NICNSC_SKL.NICNSC_ATDE1
      AnimationMode     = ONCE
    End

    ConditionState      = DYING EXPLODED_FLAILING
      Animation         = NICNSC_SKL.NICNSC_ATDE2
      AnimationMode     = LOOP
      TransitionKey     = TRANS_Flailing
    End

    ConditionState      = DYING EXPLODED_BOUNCING
      Animation         = NICNSC_SKL.NICNSC_ATDE3
      AnimationMode     = ONCE
      TransitionKey     = None
    End

   ; ------- Misc Animations

    ConditionState      = SPECIAL_CHEERING
      Animation         = NICNSC_SKL.NICNSC_CHA
      AnimationMode     = LOOP
    End

  End


 ; ***DESIGN parameters ***
  DisplayName         = OBJECT:MiniGunner
  Side                = Boss
  EditorSorting       = INFANTRY
  TransportSlotCount  = 1                ;how many "slots" we take in a transport (0 == not transportable)
  WeaponSet
    Conditions = None 
    Weapon = PRIMARY Infa_MiniGunnerGun
    Weapon = SECONDARY Infa_MiniGunnerGunAir
    PreferredAgainst = SECONDARY AIRCRAFT
  End
  WeaponSet
    Conditions = PLAYER_UPGRADE 
    Weapon = PRIMARY Infa_MiniGunnerGun
    Weapon = SECONDARY RangerFlashBangGrenadeWeapon
    AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI DEFAULT_SWITCH_WEAPON
    AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
    WeaponLockSharedAcrossSets = Yes; This set is so similar to the default set that it can hold the weapon lock
    Weapon = TERTIARY Infa_MiniGunnerGunAir
    PreferredAgainst = TERTIARY AIRCRAFT
  End
  ArmorSet
    Conditions      = None
    Armor           = InfGen_HumanArmor
    DamageFX        = InfantryDamageFX
  End
  ArmorSet
    Conditions      = PLAYER_UPGRADE
    Armor           = ChemSuitHumanArmor
    DamageFX        = None
  End
  VisionRange = 100
  ShroudClearingRange = 200
  Prerequisites
    Object = Boss_Barracks
  End
  BuildCost     = 350
  BuildTime     = 10.0         ;in seconds      

  ExperienceValue = 5 5 10 20  ;Experience point value at each level
  ExperienceRequired = 0 20 40 80 ;Experience points needed to gain each level
  IsTrainable = Yes            ;Can gain experience
  CrushableLevel         = 0 ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet    = AmericaInfantryRangerCommandSet

 ; *** AUDIO Parameters ***
  VoiceSelect = RedMinigunnerVoiceSelect
  VoiceMove = RedGuardVoiceMove
  VoiceGuard = RedGuardVoiceMove
  VoiceAttack = RedMinigunnerVoiceAttack
  VoiceGroupSelect = BattleCrySound
  VoiceFear = RedGuardVoiceFear
  VoiceTaskComplete = RedGuardVoiceCaptureComplete
  UnitSpecificSounds
    VoiceMelee      = RedGuardVoiceAttackBayonet
    VoiceGarrison   = RedGuardVoiceGarrison
    VoiceCreate     = RedMinigunnerVoiceCreate
    VoiceSubdue     = RedGuardVoiceSubdue
    VoiceEnter      = RedGuardVoiceMove
    VoiceEnterHostile = RedGuardVoiceMove
    VoiceGetHealed      = RedGuardVoiceMove
  End

 ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE PARACHUTABLE

  Body = ActiveBody ModuleTag_01
    MaxHealth       = 120.0
    InitialHealth   = 120.0
  End

; Commented out b/c it crashes
;  Behavior                = ArmorUpgrade ModuleTag_Armor01
;    TriggeredBy           = Upgrade_AmericaChemicalSuits
;  End

  Behavior = ExperienceScalarUpgrade ModuleTag_02
    TriggeredBy = Upgrade_AmericaAdvancedTraining
    AddXPScalar = 1.0;Increases experience gained by an additional 100%
  End

;  Behavior = VeterancyGainCreate ModuleTag_03
;    StartingLevel = VETERAN
;  End

  Behavior = AIUpdateInterface ModuleTag_04
    AutoAcquireEnemiesWhenIdle = Yes
  End

  Behavior = CommandButtonHuntUpdate  ModuleTag_05; allows use of command button hunt script with this unit. 
  End

  Behavior = AutoFindHealingUpdate   ModuleTag_06; This update will have the unit go to a healing station if injured. jba 
    ScanRate = 1000; once a second.
    ScanRange = 300;
    NeverHeal = 0.85;  don't heal if we are > 85% healthy.
    AlwaysHeal = 0.25; if we get below 25%, find healing right away.
  End

  Behavior = VeterancyGainCreate ModuleTag_07
    StartingLevel = VETERAN
    ScienceRequired = SCIENCE_RedGuardTraining
  End

  Locomotor = SET_NORMAL RedguardLocomotor

  Behavior = HordeUpdate ModuleTag_08
    RubOffRadius = 100   ; if I am this close to a real hordesman, I will get to be an honorary hordesman
    UpdateRate = 1000   ; how often to recheck horde status (msec)
    Radius = 30         ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
    KindOf = INFANTRY   ; what KindOf's must match to count towards horde-ness
    AlliesOnly = Yes    ; do we only count allies towards horde status? 
    ExactMatch = No     ; do we only count units of our exact same type towards horde status? (overrides kindof)
    Count = 5           ; how many units must be within Radius to grant us horde-ness
    Action = HORDE      ; when horde-ing, grant us the HORDE bonus
  End

  Behavior = PhysicsBehavior ModuleTag_09
    Mass = 5.0
  End

  Behavior = WeaponSetUpgrade ModuleTag_10
    TriggeredBy = Upgrade_AmericaRangerFlashBangGrenade
  End

; --- begin Death modules ---
  Behavior = SlowDeathBehavior ModuleTag_Death01
    DeathTypes          = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
    SinkDelay           = 3000
    SinkRate            = 0.5    ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_RedGuardDie
  End
  Behavior = SlowDeathBehavior ModuleTag_Death02
    DeathTypes          = NONE +CRUSHED +SPLATTED
    SinkDelay           = 3000
    SinkRate            = 0.5    ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_GIDieCrushed
  End
  Behavior = SlowDeathBehavior ModuleTag_Death03
    DeathTypes          = NONE +EXPLODED
    SinkDelay           = 3000
    SinkRate            = 0.5    ; in Dist/Sec
    DestructionDelay    = 8000
    FX                  = INITIAL FX_RedGuardDie
    FlingForce          = 8
    FlingForceVariance  = 3
    FlingPitch          = 60
    FlingPitchVariance  = 10
  End
  Behavior = SlowDeathBehavior ModuleTag_Death04
    DeathTypes          = NONE +BURNED
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByFireChina
    OCL                 = INITIAL OCL_FlamingInfantry
  End
  Behavior = SlowDeathBehavior ModuleTag_Death05
    DeathTypes          = NONE +POISONED
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinChina
    OCL                 = INITIAL OCL_ToxicInfantry
  End
  Behavior = SlowDeathBehavior ModuleTag_Death06; don't forget to give it a new, unique module tag
    DeathTypes          = NONE +POISONED_BETA
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinChina
    OCL                 = INITIAL OCL_ToxicInfantryBeta;you'll have to create this OCL and make it use the blue guys instead of green ones
  End
  
  Behavior = SlowDeathBehavior ModuleTag_Death07
    DeathTypes          = NONE +POISONED_GAMMA
    DestructionDelay    = 0
    FX                  = INITIAL FX_DieByToxinChina
    OCL                 = INITIAL OCL_ToxicInfantryGamma
  End
; --- end Death modules ---

  Behavior = PoisonedBehavior ModuleTag_15
    PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me...
    PoisonDuration = 3000      ; ... for this long after last hit by poison damage
  End

  Behavior = SpecialAbility ModuleTag_16
    SpecialPowerTemplate      = SpecialAbilityRangerCaptureBuilding
    UpdateModuleStartsAttack  = Yes
    StartsPaused              = Yes
    InitiateSound         = RedGuardVoiceCapture
  End
  Behavior = SpecialAbilityUpdate ModuleTag_17
    SpecialPowerTemplate  = SpecialAbilityRangerCaptureBuilding
    StartAbilityRange  = 5.0
    UnpackTime            = 3000 ; (changing this will scale anim speed)
    PreparationTime       = 20000; time to complete hack once prepared (changing this will scale anim speed)
    PackTime              = 2000 ; (changing this will scale anim speed)
    DoCaptureFX           = Yes
    AwardXPForTriggering  = 4
   ;SkillPointsForTriggering = ???  -- Dustin, fill me out if you want different balance values.
  End
  Behavior = UnpauseSpecialPowerUpgrade ModuleTag_18
    SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding
    TriggeredBy = Upgrade_InfantryCaptureBuilding
  End

  Behavior = LockWeaponCreate ModuleTag_21
    SlotToLock = PRIMARY; Prevents indeterminate state plus two unpickable weapons equaling no attack.
  End

  Geometry = CYLINDER
  GeometryMajorRadius = 7.0
  GeometryMinorRadius = 7.0
  GeometryHeight = 12.0
  GeometryIsSmall = Yes
  Shadow = SHADOW_DECAL
  ShadowSizeX = 14;
  ShadowSizeY = 14;
  ShadowTexture = ShadowI;
  BuildCompletion = APPEARS_AT_RALLY_POINT

End