I know that in the game Yuri's Revenge, there are tank bunkers (defenses occupied by vehicles). Is there any way to make the tank bunker idea work in the Pro:Gen mod for Generals Zero Hour? I am asking because I looked at the code for the tank bunker in the Project Raptor mod.
Project Raptor:
Code:
;------------------------------------------------------------------------------
Object Lazr_AmericaTankBunker
; *** ART Parameters ***
SelectPortrait = SATankBunker_L
ButtonImage = SATankBunker
Draw = W3DModelDraw ModuleTag_01
OkToChangeModelColor = Yes
ExtraPublicBone = STATION01
DefaultConditionState
Model = ABTankBunkerA
TransitionKey = TRANS_IdleNormal
End
AliasConditionState = NIGHT
; Tank Bunker out of the base
TransitionState = TRANS_IdleNormal TRANS_GarrisonedNormal
Model = ABTankBunker
Animation = ABTankBunker.ABTankBunker
AnimationMode = ONCE
End
; Attacking State
ConditionState = GARRISONED
Model = ABTankBunkerB
TransitionKey = TRANS_GarrisonedNormal
End
AliasConditionState = NIGHT GARRISONED
; Patriot Poping back into the base
TransitionState = TRANS_GarrisonedNormal TRANS_IdleNormal
Model = ABTankBunker
Animation = ABTankBunker.ABTankBunker
AnimationMode = ONCE_BACKWARDS
End
ConditionState = DAMAGED
Model = ABTankBunkerA_d
TransitionKey = TRANS_IdleDamaged
End
AliasConditionState = NIGHT DAMAGED
; Tank Bunker out of the base
TransitionState = TRANS_IdleDamaged TRANS_GarrisonedDamaged
Model = ABTankBunker_d
Animation = ABTankBunker_d.ABTankBunker_d
AnimationMode = ONCE
End
; Attacking State
ConditionState = GARRISONED DAMAGED
Model = ABTankBunkerB_d
TransitionKey = TRANS_GarrisonedDamaged
End
AliasConditionState = NIGHT DAMAGED GARRISONED
; Patriot Poping back into the base
TransitionState = TRANS_GarrisonedDamaged TRANS_IdleDamaged
Model = ABTankBunker_d
Animation = ABTankBunker_d.ABTankBunker_d
AnimationMode = ONCE_BACKWARDS
End
ConditionState = REALLYDAMAGED
Model = ABTankBunkerA_d
TransitionKey = TRANS_IdleRDamaged
End
AliasConditionState = NIGHT DAMAGED REALLYDAMAGED
; Tank Bunker out of the base
TransitionState = TRANS_IdleRDamaged TRANS_GarrisonedRDamaged
Model = ABTankBunker_d
Animation = ABTankBunker_d.ABTankBunker_d
AnimationMode = ONCE
End
; Attacking State
ConditionState = GARRISONED REALLYDAMAGED
Model = ABTankBunkerB_d
TransitionKey = TRANS_GarrisonedRDamaged
End
AliasConditionState = NIGHT REALLYDAMAGED GARRISONED
; Patriot Poping back into the base
TransitionState = TRANS_GarrisonedRDamaged TRANS_IdleRDamaged
Model = ABTankBunker_d
Animation = ABTankBunker_d.ABTankBunker_d
AnimationMode = ONCE_BACKWARDS
End
ConditionState = SNOW
Model = ABTankBunkerA_s
TransitionKey = TRANS_IdleSnow
End
AliasConditionState = NIGHT SNOW
; Tank Bunker out of the base
TransitionState = TRANS_IdleSnow TRANS_GarrisonedSnow
Model = ABTankBunker_s
Animation = ABTankBunker_s.ABTankBunker_s
AnimationMode = ONCE
End
; Attacking State
ConditionState = GARRISONED SNOW
Model = ABTankBunkerB_s
TransitionKey = TRANS_GarrisonedSnow
End
AliasConditionState = NIGHT SNOW GARRISONED
; Patriot Poping back into the base
TransitionState = TRANS_GarrisonedSnow TRANS_IdleSnow
Model = ABTankBunker_s
Animation = ABTankBunker_s.ABTankBunker_s
AnimationMode = ONCE_BACKWARDS
End
ConditionState = SNOW DAMAGED
Model = ABTankBunkerA_ds
TransitionKey = TRANS_IdleDSnow
End
AliasConditionState = NIGHT SNOW DAMAGED
; Tank Bunker out of the base
TransitionState = TRANS_IdleDSnow TRANS_GarrisonedDSnow
Model = ABTankBunker_ds
Animation = ABTankBunker_ds.ABTankBunker_ds
AnimationMode = ONCE
End
; Attacking State
ConditionState = GARRISONED SNOW DAMAGED
Model = ABTankBunkerB_ds
TransitionKey = TRANS_GarrisonedDSnow
End
AliasConditionState = NIGHT SNOW DAMAGED GARRISONED
; Patriot Poping back into the base
TransitionState = TRANS_GarrisonedDSnow TRANS_IdleDSnow
Model = ABTankBunker_ds
Animation = ABTankBunker_ds.ABTankBunker_ds
AnimationMode = ONCE_BACKWARDS
End
ConditionState = SNOW REALLYDAMAGED
Model = ABTankBunkerA_ds
TransitionKey = TRANS_IdleRDSnow
End
AliasConditionState = NIGHT SNOW REALLYDAMAGED
; Tank Bunker out of the base
TransitionState = TRANS_IdleRDSnow TRANS_GarrisonedRDSnow
Model = ABTankBunker_ds
Animation = ABTankBunker_ds.ABTankBunker_ds
AnimationMode = ONCE
End
; Attacking State
ConditionState = GARRISONED SNOW REALLYDAMAGED
Model = ABTankBunkerB_ds
TransitionKey = TRANS_GarrisonedRDSnow
End
AliasConditionState = NIGHT SNOW REALLYDAMAGED GARRISONED
; Patriot Poping back into the base
TransitionState = TRANS_GarrisonedRDSnow TRANS_IdleRDSnow
Model = ABTankBunker_ds
Animation = ABTankBunker_ds.ABTankBunker_ds
AnimationMode = ONCE_BACKWARDS
End
;**************************************************************************************************************************
;This block handles every possible case with construction process, selling process, awaiting construction, and sold states
;for this draw module
ConditionState = AWAITING_CONSTRUCTION
Model = NONE
End
AliasConditionState = AWAITING_CONSTRUCTION DAMAGED
AliasConditionState = AWAITING_CONSTRUCTION REALLYDAMAGED
AliasConditionState = AWAITING_CONSTRUCTION SNOW
AliasConditionState = AWAITING_CONSTRUCTION SNOW DAMAGED
AliasConditionState = AWAITING_CONSTRUCTION SNOW REALLYDAMAGED
AliasConditionState = SOLD
AliasConditionState = SOLD DAMAGED
AliasConditionState = SOLD REALLYDAMAGED
AliasConditionState = SOLD SNOW
AliasConditionState = SOLD SNOW DAMAGED
AliasConditionState = SOLD SNOW REALLYDAMAGED
;**************************************************************************************************************************
ConditionState = PARTIALLY_CONSTRUCTED ACTIVELY_BEING_CONSTRUCTED
Model = ABTankBunkerA
Flags = ADJUST_HEIGHT_BY_CONSTRUCTION_PERCENT
End
ConditionState = PARTIALLY_CONSTRUCTED ACTIVELY_BEING_CONSTRUCTED SNOW
Model = ABTankBunkerA_S
Flags = ADJUST_HEIGHT_BY_CONSTRUCTION_PERCENT
End
ConditionState = PARTIALLY_CONSTRUCTED ACTIVELY_BEING_CONSTRUCTED DAMAGED
Model = ABTankBunkerA_D
Flags = ADJUST_HEIGHT_BY_CONSTRUCTION_PERCENT
End
ConditionState = PARTIALLY_CONSTRUCTED ACTIVELY_BEING_CONSTRUCTED DAMAGED SNOW
Model = ABTankBunkerA_DS
Flags = ADJUST_HEIGHT_BY_CONSTRUCTION_PERCENT
End
;**************************************************************************************************************************
End
; ------------ construction-zone fence -----------------
Draw = W3DModelDraw ModuleTag_02
AnimationsRequirePower = No
DefaultConditionState
Model = None
TransitionKey = DOWN_DEFAULT
End
ConditionState = NIGHT
Model = None
TransitionKey = DOWN_DEFAULT
End
ConditionState = SNOW
Model = None
TransitionKey = DOWN_DEFAULT
End
ConditionState = SNOW NIGHT
Model = None
TransitionKey = DOWN_DEFAULT
End
ConditionState = AWAITING_CONSTRUCTION PARTIALLY_CONSTRUCTED ACTIVELY_BEING_CONSTRUCTED
Model = ABSupDrop_A4
Animation = ABSupDrop_A4.ABSupDrop_A4
AnimationMode = MANUAL
Flags = START_FRAME_LAST
TransitionKey = UP_DAY
End
ConditionState = NIGHT AWAITING_CONSTRUCTION PARTIALLY_CONSTRUCTED ACTIVELY_BEING_CONSTRUCTED
Model = ABSupDrop_A4N
Animation = ABSupDrop_A4N.ABSupDrop_A4N
AnimationMode = MANUAL
Flags = START_FRAME_LAST
TransitionKey = UP_NIGHT
End
ConditionState = SNOW AWAITING_CONSTRUCTION PARTIALLY_CONSTRUCTED ACTIVELY_BEING_CONSTRUCTED
Model = ABSupDrop_A4S
Animation = ABSupDrop_A4S.ABSupDrop_A4S
AnimationMode = MANUAL
Flags = START_FRAME_LAST
TransitionKey = UP_SNOW
End
ConditionState = SNOW NIGHT AWAITING_CONSTRUCTION PARTIALLY_CONSTRUCTED ACTIVELY_BEING_CONSTRUCTED
Model = ABSupDrop_A4SN
Animation = ABSupDrop_A4SN.ABSupDrop_A4SN
AnimationMode = MANUAL
Flags = START_FRAME_LAST
TransitionKey = UP_SNOWNIGHT
End
TransitionState = DOWN_DEFAULT UP_DAY
Model = ABSupDrop_A4
Animation = ABSupDrop_A4.ABSupDrop_A4
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.0 1.0
Flags = START_FRAME_FIRST
End
TransitionState = DOWN_DEFAULT UP_NIGHT
Model = ABSupDrop_A4N
Animation = ABSupDrop_A4N.ABSupDrop_A4N
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.0 1.0
Flags = START_FRAME_FIRST
End
TransitionState = DOWN_DEFAULT UP_SNOW
Model = ABSupDrop_A4S
Animation = ABSupDrop_A4S.ABSupDrop_A4S
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.0 1.0
Flags = START_FRAME_FIRST
End
TransitionState = DOWN_DEFAULT UP_SNOWNIGHT
Model = ABSupDrop_A4SN
Animation = ABSupDrop_A4SN.ABSupDrop_A4SN
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.0 1.0
Flags = START_FRAME_FIRST
End
TransitionState = UP_DAY DOWN_DEFAULT
Model = ABSupDrop_A4
Animation = ABSupDrop_A4.ABSupDrop_A4
AnimationMode = ONCE_BACKWARDS
AnimationSpeedFactorRange = 2.0 2.0 ; play teardown animations more quickly
Flags = START_FRAME_LAST
End
TransitionState = UP_NIGHT DOWN_DEFAULT
Model = ABSupDrop_A4N
Animation = ABSupDrop_A4N.ABSupDrop_A4N
AnimationMode = ONCE_BACKWARDS
AnimationSpeedFactorRange = 2.0 2.0 ; play teardown animations more quickly
Flags = START_FRAME_LAST
End
TransitionState = UP_SNOW DOWN_DEFAULT
Model = ABSupDrop_A4S
Animation = ABSupDrop_A4S.ABSupDrop_A4S
AnimationMode = ONCE_BACKWARDS
AnimationSpeedFactorRange = 2.0 2.0 ; play teardown animations more quickly
Flags = START_FRAME_LAST
End
TransitionState = UP_SNOWNIGHT DOWN_DEFAULT
Model = ABSupDrop_A4SN
Animation = ABSupDrop_A4SN.ABSupDrop_A4SN
AnimationMode = ONCE_BACKWARDS
AnimationSpeedFactorRange = 2.0 2.0 ; play teardown animations more quickly
Flags = START_FRAME_LAST
End
End
; ------------ under-construction scaffolding -----------------
Draw = W3DModelDraw ModuleTag_03
AnimationsRequirePower = No
MinLODRequired = MEDIUM
DefaultConditionState
Model = None
TransitionKey = DOWN_DEFAULT
End
ConditionState = NIGHT
Model = None
TransitionKey = DOWN_DEFAULT
End
ConditionState = SNOW
Model = None
TransitionKey = DOWN_DEFAULT
End
ConditionState = SNOW NIGHT
Model = None
TransitionKey = DOWN_DEFAULT
End
ConditionState = PARTIALLY_CONSTRUCTED
Model = ABSupDrop_A6
Animation = ABSupDrop_A6.ABSupDrop_A6
AnimationMode = MANUAL
Flags = START_FRAME_LAST
TransitionKey = UP_DAY
ParticleSysBone = Sparks01 BuildUpBlueSpark
ParticleSysBone = Sparks02 BuildUpBlueSpark
ParticleSysBone = Sparks03 BuildUpBlueSpark
ParticleSysBone = Sparks04 BuildUpBlueSpark
ParticleSysBone = Sparks05 BuildUpBlueSpark
ParticleSysBone = Sparks06 BuildUpBlueSpark
End
ConditionState = NIGHT PARTIALLY_CONSTRUCTED
Model = ABSupDrop_A6N
Animation = ABSupDrop_A6N.ABSupDrop_A6N
AnimationMode = MANUAL
Flags = START_FRAME_LAST
TransitionKey = UP_NIGHT
ParticleSysBone = Sparks01 BuildUpBlueSpark
ParticleSysBone = Sparks02 BuildUpBlueSpark
ParticleSysBone = Sparks03 BuildUpBlueSpark
ParticleSysBone = Sparks04 BuildUpBlueSpark
ParticleSysBone = Sparks05 BuildUpBlueSpark
ParticleSysBone = Sparks06 BuildUpBlueSpark
End
ConditionState = SNOW PARTIALLY_CONSTRUCTED
Model = ABSupDrop_A6S
Animation = ABSupDrop_A6S.ABSupDrop_A6S
AnimationMode = MANUAL
Flags = START_FRAME_LAST
TransitionKey = UP_SNOW
ParticleSysBone = Sparks01 BuildUpBlueSpark
ParticleSysBone = Sparks02 BuildUpBlueSpark
ParticleSysBone = Sparks03 BuildUpBlueSpark
ParticleSysBone = Sparks04 BuildUpBlueSpark
ParticleSysBone = Sparks05 BuildUpBlueSpark
ParticleSysBone = Sparks06 BuildUpBlueSpark
End
ConditionState = SNOW NIGHT PARTIALLY_CONSTRUCTED
Model = ABSupDrop_A6SN
Animation = ABSupDrop_A6SN.ABSupDrop_A6SN
AnimationMode = MANUAL
Flags = START_FRAME_LAST
TransitionKey = UP_SNOWNIGHT
ParticleSysBone = Sparks01 BuildUpBlueSpark
ParticleSysBone = Sparks02 BuildUpBlueSpark
ParticleSysBone = Sparks03 BuildUpBlueSpark
ParticleSysBone = Sparks04 BuildUpBlueSpark
ParticleSysBone = Sparks05 BuildUpBlueSpark
ParticleSysBone = Sparks06 BuildUpBlueSpark
End
TransitionState = DOWN_DEFAULT UP_DAY
Model = ABSupDrop_A6
Animation = ABSupDrop_A6.ABSupDrop_A6
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.0 1.0
Flags = START_FRAME_FIRST
End
TransitionState = DOWN_DEFAULT UP_NIGHT
Model = ABSupDrop_A6N
Animation = ABSupDrop_A6N.ABSupDrop_A6N
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.0 1.0
Flags = START_FRAME_FIRST
End
TransitionState = DOWN_DEFAULT UP_SNOW
Model = ABSupDrop_A6S
Animation = ABSupDrop_A6S.ABSupDrop_A6S
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.0 1.0
Flags = START_FRAME_FIRST
End
TransitionState = DOWN_DEFAULT UP_SNOWNIGHT
Model = ABSupDrop_A6SN
Animation = ABSupDrop_A6SN.ABSupDrop_A6SN
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.0 1.0
Flags = START_FRAME_FIRST
End
TransitionState = UP_DAY DOWN_DEFAULT
Model = ABSupDrop_A6
Animation = ABSupDrop_A6.ABSupDrop_A6
AnimationMode = ONCE_BACKWARDS
AnimationSpeedFactorRange = 2.0 2.0 ; play teardown animations more quickly
Flags = START_FRAME_LAST
End
TransitionState = UP_NIGHT DOWN_DEFAULT
Model = ABSupDrop_A6N
Animation = ABSupDrop_A6N.ABSupDrop_A6N
AnimationMode = ONCE_BACKWARDS
AnimationSpeedFactorRange = 2.0 2.0 ; play teardown animations more quickly
Flags = START_FRAME_LAST
End
TransitionState = UP_SNOW DOWN_DEFAULT
Model = ABSupDrop_A6S
Animation = ABSupDrop_A6S.ABSupDrop_A6S
AnimationMode = ONCE_BACKWARDS
AnimationSpeedFactorRange = 2.0 2.0 ; play teardown animations more quickly
Flags = START_FRAME_LAST
End
TransitionState = UP_SNOWNIGHT DOWN_DEFAULT
Model = ABSupDrop_A6SN
Animation = ABSupDrop_A6SN.ABSupDrop_A6SN
AnimationMode = ONCE_BACKWARDS
AnimationSpeedFactorRange = 2.0 2.0 ; play teardown animations more quickly
Flags = START_FRAME_LAST
End
End
PlacementViewAngle = -45
; ***DESIGN parameters ***
DisplayName = OBJECT:TankBunker
Side = AmericaLaserGeneral
EditorSorting = STRUCTURE
Prerequisites
Object = Lazr_AmericaPowerPlant
End
BuildCost = 1000
BuildTime = 10.0 ; in seconds
EnergyProduction = 0
ExperienceValue = 200 200 200 200 ; Experience point value at each level
VisionRange = 360.0 ; Shroud clearing distance AND targeting range
ShroudClearingRange = 360
ArmorSet
Conditions = None
Armor = TankBunkerArmor
DamageFX = StructureDamageFXNoShake
End
CommandSet = AmericaTankBunkerCommandSet
; *** AUDIO Parameters ***
VoiceSelect = FireBaseSelect
SoundOnDamaged = BuildingDamagedStateLight
SoundOnReallyDamaged = BuildingDestroy
UnitSpecificSounds
UnderConstruction = UnderConstructionLoop
End
UnitSpecificSounds
; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
TurretMoveStart = NoSound
TurretMoveLoop = NoSound ;These aren't playing properly, will revisit (mp) TurretMoveLoopLoud
End
; *** ENGINEERING Parameters ***
RadarPriority = STRUCTURE
KindOf = PRELOAD STRUCTURE SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT IMMOBILE SPAWNS_ARE_THE_WEAPONS SCORE FS_TECHNOLOGY FS_BASE_DEFENSE IMMUNE_TO_CAPTURE GARRISONABLE_UNTIL_DESTROYED
Body = HiveStructureBody ModuleTag_04;
MaxHealth = 1000.0
InitialHealth = 1000.0
; Subdual damage "Subdues" you (reaction defined by BodyModule) when it passes your max health.
; The cap limits how extra-subdued you can be, and the other numbers detemine how fast it drains away on its own.
SubdualDamageCap = 1200
SubdualDamageHealRate = 500
SubdualDamageHealAmount = 100
;**Careful with these damage types -- because area damage types will already
;**damage slaves.
;PropagateDamageTypesToSlavesWhenExisting = NONE +SMALL_ARMS +SNIPER +POISON +RADIATION +SURRENDER
;SwallowDamageTypesIfSlavesNotExisting = NONE +SNIPER +POISON +SURRENDER; Take no damage if no one to pass this to
End
Behavior = StealthDetectorUpdate ModuleTag_13
DetectionRate = 500 ; how often to rescan for stealthed things in my sight (msec)
DetectionRange = 200 ;Dustin, enable this for independant balancing!
CanDetectWhileGarrisoned = No ;Garrisoned means being in a structure that you units can shoot out of.
CanDetectWhileContained = No ;Contained means being in a transport or tunnel network.
End
Behavior = AIUpdateInterface ModuleTag_06
Turret
ControlledWeaponSlots = PRIMARY
TurretTurnRate = 540 // turn rate, in degrees per sec
TurretPitchRate = 180
AllowsPitch = Yes
FiresWhileTurning = Yes
NaturalTurretPitch = 45 ; this keeps it aimed half way between land and sky
MinIdleScanInterval = 250 ; in milliseconds
MaxIdleScanInterval = 250 ; in milliseconds
MinIdleScanAngle = 0 ; in degrees off the natural turret angle
MaxIdleScanAngle = 360 ; in degrees off the natural turret angle
End
AutoAcquireEnemiesWhenIdle = Yes ;ATTACK_BUILDINGS; defensive weapon
MoodAttackCheckRate = 250
End
Behavior = ProductionUpdate ModuleTag_07
; nothing, but is required if we have any Object-level Upgrades!
End
Behavior = DestroyDie ModuleTag_08
;nothing
End
Behavior = FXListDie ModuleTag_09
DeathFX = FX_StructureTinyDeath
End
Behavior = GarrisonContain ModuleTag_15
ContainMax = 1
EnterSound = GarrisonEnter
ExitSound = GarrisonExit
ImmuneToClearBuildingAttacks = Yes
DamagePercentToUnits = 50%
IsEnclosingContainer = No
AllowInsideKindOf = VEHICLE
ForbidInsideKindOf = TRANSPORT AIRCRAFT HUGE_VEHICLE
End
Behavior = ProductionUpdate ModuleTag_10
; nothing
End
Behavior = CreateObjectDie ModuleTag_11
CreationList = OCL_LargeStructureDebris
End
Behavior = ObjectCreationUpgrade ModuleTag_TankSpawn01
UpgradeObject = Lazr_OCL_TankinBunker
TriggeredBy = Upgrade_ChinaOverlordGattlingCannon
End
Behavior = GrantUpgradeCreate ModuleTag_TankSpawn02
UpgradeToGrant = Upgrade_ChinaOverlordGattlingCannon
End
Behavior = FlammableUpdate ModuleTag_12
AflameDuration = 5000 ; If I catch fire, I'll burn for this long...
AflameDamageAmount = 5 ; taking this much damage...
AflameDamageDelay = 500 ; this often.
End
Behavior = TransitionDamageFX ModuleTag_14
;-------------DESIGNED FOR TINY SIZED FACTION BUILDING TRANSITIONS-------------------
DamagedParticleSystem1 = Bone:None RandomBone:No PSys:StructureTransitionTinySmoke
;---------------------------------------------------------------------------------------
ReallyDamagedParticleSystem1 = Bone:None RandomBone:No PSys:StructureTransitionTinySmoke
ReallyDamagedParticleSystem2 = Bone:None RandomBone:No PSys:StructureTransitionTinyExplosion
ReallyDamagedParticleSystem3 = Bone:None RandomBone:No PSys:StructureTransitionTinyShockwave
End
Geometry = BOX
GeometryMajorRadius = 26.0
GeometryMinorRadius = 26.0
GeometryHeight = 15.0
GeometryIsSmall = No
Shadow = SHADOW_VOLUME
BuildCompletion = PLACED_BY_PLAYER
End