

C&C generals ZH's upgrade limit
#1
Posted 09 November 2009 - 01:16
#3
Posted 09 November 2009 - 01:53

#4
Posted 09 November 2009 - 02:00

#5
Posted 09 November 2009 - 02:49
#6
Posted 09 November 2009 - 11:33
Anyway, the upgrade limit is Hardcoded
#7
#8
Posted 09 November 2009 - 15:31
#11
Posted 12 November 2009 - 10:48
How can I make an upgrade be unique in two forms?
Like have the basic overlord gattling cannon for china, and have an arty attachment for the americans one.
Ill upload codes.
#12
Posted 12 November 2009 - 16:54
So you make an upgrade with a general sounding name like "tank advancement" or something like that.
Then use the "overlord contain" coding and have both triggered by the same upgrade. That should work ok.
Mike
#13
Posted 12 November 2009 - 21:49
Upgrade Upgrade_AmericaTankOverlordFireBaseTower
DisplayName = UPGRADE:OverlordGattlingCannon
Type = OBJECT
BuildTime = 20.0
BuildCost = 1200
ButtonImage = SSOLGattling
ResearchSound = OverlordTankGattlingCannonVoiceCreate
UnitSpecificSound = OverlordExpansion
End
Upgrade Upgrade_ChinaOverlordGattlingCannon
DisplayName = UPGRADE:OverlordGattlingCannon
Type = OBJECT
BuildTime = 20.0
BuildCost = 1200
ButtonImage = SSOLGattling
ResearchSound = OverlordTankGattlingCannonVoiceCreate
UnitSpecificSound = OverlordExpansion
End
CommandSet AmericaTankOverlordCommandSet
1 = Command_UpgradeChinaOverlordBattleBunker
3 = Command_UpgradeChinaOverlordGattlingCannon
11 = Command_AttackMove
13 = Command_Guard
14 = Command_Stop
End
CommandButton Command_UpgradeAmericaTankOverlordFireBaseTower
Command = OBJECT_UPGRADE
Upgrade = Upgrade_AmericaTankOverlordFireBaseTower
Options = OK_FOR_MULTI_SELECT NOT_QUEUEABLE
TextLabel = CONTROLBAR:UpgradeAmericaTankOverlordFireBaseTower
ButtonImage = SAFirebase
ButtonBorderType = UPGRADE ; Identifier for the User as to what kind of button this is
DescriptLabel = CONTROLBAR:TooltipUpgradeAmericaTankOverlordFireBaseTower
UnitSpecificSound = OverlordTankVoiceModeGattling
End
;------------------------------------------------------------------------------
Object AmericaTankOverlord
; *** ART Parameters ***
SelectPortrait = SNOverlord_L
ButtonImage = SNOverlord
UpgradeCameo1 = NONE
UpgradeCameo2 = NONE
UpgradeCameo3 = NONE
UpgradeCameo4 = Upgrade_ChinaOverlordGattlingCannon
UpgradeCameo5 = NONE
Draw = W3DOverlordTankDraw ModuleTag_01
ConditionState = NONE
Model = NVOvrlrd
Animation = NVOvrlrd.NVOvrlrd
AnimationMode = LOOP
Turret = Turret01
WeaponFireFXBone = PRIMARY Muzzle
WeaponRecoilBone = PRIMARY Barrel
WeaponMuzzleFlash = PRIMARY MuzzleFX
WeaponLaunchBone = PRIMARY Muzzle
End
ConditionState = REALLYDAMAGED
Model = NVOvrlrd_d
Animation = NVOvrlrd_d.NVOvrlrd_d
AnimationMode = LOOP
Turret = Turret01
WeaponFireFXBone = PRIMARY Muzzle
WeaponRecoilBone = PRIMARY Barrel
WeaponMuzzleFlash = PRIMARY MuzzleFX
WeaponLaunchBone = PRIMARY Muzzle
End
ConditionState = RUBBLE
Model = NVOvrlrd_d
Turret = Turret01
WeaponFireFXBone = PRIMARY Muzzle
WeaponRecoilBone = PRIMARY Barrel
WeaponMuzzleFlash = PRIMARY MuzzleFX
WeaponLaunchBone = PRIMARY Muzzle
End
TrackMarks = EXTnkTrack.tga
OkToChangeModelColor = Yes
TreadAnimationRate = 2.0; amount of tread texture to move per second
TreadDriveSpeedFraction = 0.3 ; fraction of locomotor speed below which treads stop moving.
TreadPivotSpeedFraction = 0.6 ; fraction of locomotor speed below which we allow pivoting.
End
; ***DESIGN parameters ***
DisplayName = OBJECT:Overlord
Side = America
EditorSorting = VEHICLE
TransportSlotCount = 3 ;how many "slots" we take in a transport (0 == not transportable)
WeaponSet
Conditions = None
Weapon = PRIMARY DragonTankFlameWeapon
End
WeaponSet
Conditions = PLAYER_UPGRADE
Weapon = PRIMARY DragonTankFlameWeaponUpgraded
Weapon = SECONDARY GattlingBuildingGunAirDummy ;Dummy weapon that allows manual targeting of air units outside range
;gattling cannon upgrade has been made.
End
ArmorSet
Conditions = None
Armor = TankArmor
DamageFX = TankDamageFX
End
BuildCost = 2000
BuildTime = 15.0 ;in seconds
VisionRange = 150
ShroudClearingRange = 200
Prerequisites
Object = AmericaWarFactory
End
ExperienceValue = 200 200 400 600 ;Experience point value at each level
ExperienceRequired = 0 400 600 1200 ;Experience points needed to gain each level
IsTrainable = Yes ;Can gain experience
CrusherLevel = 3 ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
CrushableLevel = 3 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
CommandSet = AmericaTankOverlordCommandSet
; *** AUDIO Parameters ***
VoiceSelect = DragonTankVoiceSelect
SoundMoveStart = OverlordTankMoveStart
SoundMoveStartDamaged = OverlordTankMoveStart
VoiceMove = DragonTankVoiceMove
VoiceGuard = DragonTankVoiceMove
VoiceAttack = DragonTankVoiceAttack
UnitSpecificSounds
; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
VoiceCreate = DragonTankVoiceCreate
TurretMoveStart = NoSound
TurretMoveLoop = TurretMoveLoop
VoiceEnter = DragonTankVoiceMove
VoiceFlameLocation = DragonTankVoiceFireStorm
End
; *** ENGINEERING Parameters ***
RadarPriority = UNIT
KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE HUGE_VEHICLE
Body = ActiveBody ModuleTag_02
MaxHealth = 1400.0
InitialHealth = 1400.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 = 2200
SubdualDamageHealRate = 500
SubdualDamageHealAmount = 50
End
Behavior = TransportAIUpdate ModuleTag_03
Turret
TurretTurnRate = 60 ;30 ;15 // turn rate, in degrees per sec
ControlledWeaponSlots = PRIMARY
End
AutoAcquireEnemiesWhenIdle = Yes
End
Locomotor = SET_NORMAL OverlordLocomotor
Locomotor = SET_NORMAL_UPGRADED NuclearOverlordLocomotor
Behavior = FireWeaponWhenDeadBehavior ModuleTag_04
DeathWeapon = NuclearTankDeathWeapon
StartsActive = No ; turned on by upgrade
TriggeredBy = Upgrade_ChinaNuclearTanks
End
Behavior = LocomotorSetUpgrade ModuleTag_05
TriggeredBy = Upgrade_ChinaNuclearTanks
End
Behavior = ProductionUpdate ModuleTag_24
MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
End
Behavior = OverlordContain ModuleTag_06 ; Like Transport, but when full, passes transport queries along to first passenger (redirects like tunnel)
Slots = 1
DamagePercentToUnits = 100%
AllowInsideKindOf = PORTABLE_STRUCTURE
PassengersAllowedToFire = Yes
PassengersInTurret = Yes ; My passengers ride in my turret, that's where the Firepoint bones are
ExperienceSinkForRider = Yes ; I get the Exp for things my turret friend kills
End
Behavior = ObjectCreationUpgrade ModuleTag_07
UpgradeObject = OCL_OverlordGattlingCannon
TriggeredBy = Upgrade_ChinaOverlordGattlingCannon
ConflictsWith = Upgrade_ChinaOverlordPropagandaTower Upgrade_ChinaOverlordBattleBunker
End
Behavior = WeaponSetUpgrade ModuleTag_WeaponSetUpgrade01
TriggeredBy = Upgrade_ChinaOverlordGattlingCannon
ConflictsWith = Upgrade_ChinaOverlordPropagandaTower Upgrade_ChinaOverlordBattleBunker
End
Behavior = ObjectCreationUpgrade ModuleTag_08
UpgradeObject = OCL_OverlordPropagandaTower
TriggeredBy = Upgrade_ChinaOverlordPropagandaTower
ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordBattleBunker
End
Behavior = ObjectCreationUpgrade ModuleTag_09
UpgradeObject = OCL_OverlordBattleBunker
TriggeredBy = Upgrade_ChinaOverlordBattleBunker
ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordPropagandaTower
End
Behavior = ProductionUpdate ModuleTag_10
MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
End
Behavior = CommandSetUpgrade ModuleTag_11
CommandSet = ChinaTankOverlordGattlingCannonCommandSet
TriggeredBy = Upgrade_ChinaOverlordGattlingCannon
ConflictsWith = Upgrade_ChinaOverlordPropagandaTower Upgrade_ChinaOverlordBattleBunker
End
Behavior = CommandSetUpgrade ModuleTag_12
CommandSet = ChinaTankOverlordPropagandaTowerCommandSet
TriggeredBy = Upgrade_ChinaOverlordPropagandaTower
ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordBattleBunker
End
Behavior = CommandSetUpgrade ModuleTag_13
CommandSet = ChinaTankOverlordBattleBunkerCommandSet
TriggeredBy = Upgrade_ChinaOverlordBattleBunker
ConflictsWith = Upgrade_ChinaOverlordGattlingCannon Upgrade_ChinaOverlordPropagandaTower
End
Behavior = PhysicsBehavior ModuleTag_14
Mass = 50.0
End
; Smoke for a bit then explode
; Behavior = SlowDeathBehavior
;; ProbabilityModifier = 25
; DestructionDelay = 1500
; DestructionDelayVariance = 500
; FX = INITIAL FX_OverlordSmoke
; OCL = FINAL OCL_ChinaTankOverlordDebris
; FX = FINAL FX_GenericTankDeathExplosion
; End
; Catch fire, and explode death
; Behavior = SlowDeathBehavior
;; ProbabilityModifier = 25
; DestructionDelay = 2000
; DestructionDelayVariance = 300
; FX = INITIAL FX_CrusaderCatchFire
; OCL = FINAL OCL_ChinaTankOverlordDebris
; FX = FINAL FX_GenericTankDeathExplosion
; End
; Just explode death
Behavior = SlowDeathBehavior ModuleTag_16
ProbabilityModifier = 25
DestructionDelay = 200
DestructionDelayVariance = 100
OCL = FINAL OCL_ChinaTankOverlordDebris
FX = FINAL FX_OverlordExplosionOneFinal
End
Behavior = CreateCrateDie ModuleTag_17
CrateData = SalvageCrateData
;CrateData = EliteTankCrateData
;CrateData = HeroicTankCrateData
End
Behavior = TransitionDamageFX ModuleTag_18
ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_OverlordDamageTransition
End
Behavior = FlammableUpdate ModuleTag_21
AflameDuration = 5000 ; If I catch fire, I'll burn for this long...
AflameDamageAmount = 3 ; taking this much damage...
AflameDamageDelay = 500 ; this often.
End
Geometry = BOX
GeometryMajorRadius = 26.0
GeometryMinorRadius = 13.0
GeometryHeight = 15.0
GeometryIsSmall = No
Shadow = SHADOW_VOLUME
ShadowSizeX = 45 ; minimum elevation angle above horizon. Used to limit shadow length
End
;------------------------------------------------------------------------------
Object AmericaTankOverlordFireBaseTower
; *** ART Parameters ***
SelectPortrait = SNGatTower_L
ButtonImage = SNGatTower
;UpgradeCameo1 = Upgrade_Nationalism
UpgradeCameo1 = Upgrade_ChinaUraniumShells
UpgradeCameo2 = Upgrade_ChinaNuclearTanks
;UpgradeCameo4 = NONE
UpgradeCameo5 = Upgrade_ChinaOverlordGattlingCannon
Draw = W3DDependencyModelDraw ModuleTag_01
OkToChangeModelColor = Yes
AttachToBoneInContainer = FIREPOINT01
DefaultConditionState
Model = AVOvrlrd_F
Turret = TurretMS01
TurretPitch = TURRETEL
WeaponFireFXBone = PRIMARY Muzzle0101
WeaponMuzzleFlash = PRIMARY Muzzle0101
WeaponFireFXBone = SECONDARY Muzzle0101
WeaponMuzzleFlash = SECONDARY Muzzle0101
End
ConditionState = REALLYDAMAGED
Model = AVOvrlrd_FD
Turret = TurretMS01
TurretPitch = TURRETEL
WeaponFireFXBone = PRIMARY Muzzle0101
WeaponMuzzleFlash = PRIMARY Muzzle0101
WeaponFireFXBone = SECONDARY Muzzle0101
WeaponMuzzleFlash = SECONDARY Muzzle0101
ParticleSysBone = Smoke01 SmokeFactionMedium
ParticleSysBone = Smoke02 SmokeFactionMedium
ParticleSysBone = Smoke03 SmokeFactionMedium
ParticleSysBone = SparkM01 SparksMedium
ParticleSysBone = SparkM02 SparksMedium
End
End
; ***DESIGN parameters ***
Side = America
EditorSorting = SYSTEM
TransportSlotCount = 1
WeaponSet
Conditions = None
Weapon = PRIMARY FireBaseHowitzerGun
;Weapon = SECONDARY GattlingBuildingGunAir
;PreferredAgainst = SECONDARY BALLISTIC_MISSILE AIRCRAFT
End
ArmorSet
Conditions = None
Armor = InvulnerableAllArmor ; We can't be hurt on the field. We share damage from the Overlord with his damage module
End
VisionRange = 200
; *** AUDIO Parameters ***
UnitSpecificSounds
TurretMoveStart = NoSound
TurretMoveLoop = NoSound ;TurretMoveLoop
VoiceRapidFire = NoSound
End
; *** ENGINEERING Parameters ***
KindOf = PRELOAD PORTABLE_STRUCTURE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CLICK_THROUGH IGNORED_IN_GUI
Body = StructureBody ModuleTag_02
MaxHealth = 100.0
InitialHealth = 100.0
End
Behavior = AIUpdateInterface ModuleTag_03
Turret
ControlledWeaponSlots = PRIMARY SECONDARY
TurretTurnRate = 60 // turn rate, in degrees per sec
TurretPitchRate = 60
AllowsPitch = Yes
End
AutoAcquireEnemiesWhenIdle = Yes
End
Behavior = DestroyDie ModuleTag_04
;nothing
End
Behavior = WeaponBonusUpgrade ModuleTag_05
TriggeredBy = Upgrade_AmericaTankOverlordFireBaseTower
End
Behavior = StealthDetectorUpdate ModuleTag_06
DetectionRate = 500 ; how often to rescan for stealthed things in my sight (msec)
;DetectionRange = ??? ; Defaults to VisionRange
CanDetectWhileContained = Yes
End
Geometry = BOX
GeometryMajorRadius = 8.0
GeometryMinorRadius = 8.0
GeometryHeight = 9.0
GeometryIsSmall = No
Shadow = SHADOW_VOLUME
ShadowSizeX = 45 ; minimum elevation angle above horizon. Used to limit shadow length
End
;------------------------------------------------------------------------------
Edited by CCCD, 12 November 2009 - 22:23.
#14
Posted 12 November 2009 - 23:17
If that is what you want you don't need to create the unique upgrade but make everything happen from the gattling cannon upgrade.
You just add that to the commandset and make the new weapon appear by the purchase of the single upgrade in places like the overlord contain and weaponset changes.
If you need more help just type in here or pm me and i will help more. I'll probably write some demo code for you to follow.
Mike
edit - A quick thing to help, everywhere you have put the new upgrade, just replace that with the gattling cannon upgrade and it should work. 1 upgrade causing multiple things to happen.
Edited by Mbob61, 12 November 2009 - 23:28.
#15
Posted 15 November 2009 - 08:11
This is how I think I see it, may not be correct:
Two overlords:
-Normal one for china
-New flamer one for USA with an arty upgrade
Each tank uses and upgrade, but they both get the arty, when I just want the chinese tank to upgrade
normally.
Is this easier to understand my logic or are we lost by each others tellings. ok ignore that.
#17
Posted 19 November 2009 - 18:57

I'm working on it right now.
I'll post it both in here and in a pm to you

Mike
Ok, first the single upgrade and its commandbutton
Upgrade Upgrade_TankSpecs
DisplayName = UPGRADE:TankSpecs
BuildTime = 60.0
BuildCost = 2000
ButtonImage = SSCompositeArmor
ResearchSound = CrusaderTankVoiceUpgradeCompositeArmor
End
CommandButton Command_UpgradeTankSpecs
Command = PLAYER_UPGRADE
Upgrade = Upgrade_TankSpecs
TextLabel = CONTROLBAR:UpgradeAmericaCompositeArmor
ButtonImage = SSCompositeArmor
ButtonBorderType = UPGRADE; Identifier for the User as to what kind of button this is
DescriptLabel = CONTROLBAR:TooltipUSAUpgradeCompositeArmor
End
Now i will add it to the warfactories of America and China. For China it replaces Chain Guns.
CommandSet AmericaWarFactoryCommandSet
1 = Command_ConstructAmericaTankCrusader
2 = Command_ConstructAmericaVehicleTomahawk
3 = Command_ConstructAmericaVehicleHumvee
4 = Command_ConstructAmericaVehicleMedic
5 = Command_ConstructAmericaVehiclePaladin
6 = Command_ConstructAmericaVehicleSentryDrone
7 = Command_ConstructAmericaVehicleAvenger
8 = Command_ConstructAmericaVehicleMicrowave
9 = Command_UpgradeAmericaSentryDroneGun
10 = Command_UpgradeTankSpecs
11 = Command_UpgradeAmericaTOWMissile
13 = Command_SetRallyPoint
14 = Command_Sell
End
CommandSet ChinaWarFactoryCommandSet
1 = Command_ConstructChinaTankBattleMaster
2 = Command_ConstructChinaTankOverlord
3 = Command_ConstructChinaVehicleTroopCrawler
4 = Command_ConstructChinaVehicleListeningOutpost
5 = Command_ConstructChinaTankGattling
6 = Command_UpgradeTankSpecs
7 = Command_ConstructChinaTankDragon
8 = Command_UpgradeChinaBlackNapalm
9 = Command_ConstructChinaVehicleInfernoCannon
10 = Command_ConstructChinaVehicleNukeLauncher
11 = Command_ConstructChinaTankECM
12 = Command_UpgradeChinaMines
13 = Command_SetRallyPoint
14 = Command_Sell
End
Ok, so now the effects. Firstly the Crusader for USA. I've made the upgrade give the Crusader a massively better locomotor. I will put in bold all relevent parts in the unit code.
;------------------------------------------------------------------------------
Locomotor UberCrusaderLocomotor
Surfaces = GROUND
Speed = 1000 ; in dist/sec
SpeedDamaged = 25 ; in dist/sec
TurnRate = 180 ;90 ; in degrees/sec
TurnRateDamaged = 180 ;60 ; in degrees/sec
Acceleration = 1000;240;30 ; in dist/(sec^2)
AccelerationDamaged = 1000;120 ; in dist/(sec^2)
Braking = 1000;50 ; in dist/(sec^2)
MinTurnSpeed = 0 ; in dist/sec
ZAxisBehavior = NO_Z_MOTIVE_FORCE
Appearance = TREADS
AccelerationPitchLimit = 5 ; Angle limit how far chassis will lift or roll from acceleration.
DecelerationPitchLimit = 5 ; Angle limit how far chassis will dip from deceleration.
PitchStiffness = 0.05 ; stiffness of the "springs" in the suspension forward & back.
RollStiffness = 0.025 ; stiffness of the "springs" in the suspension side to side.
PitchDamping = 0.8 ; How fast it damps. 0=perfect spring, bounces forever. 1=glued to terrain.
RollDamping = 0.3 ; How fast it damps. 0=perfect spring, bounces forever. 1=glued to terrain.
ForwardAccelerationPitchFactor = 0.3 ; How much acceleration will cause the front to lift, or dip for stops.
LateralAccelerationRollFactor = 0.33 ; How much cornering will cause the chassis to roll.
End
;------------------------------------------------------------------------------
Object AmericaTankCrusader
; *** ART Parameters ***
SelectPortrait = SACLeopard_L
ButtonImage = SACLeopard
UpgradeCameo1 = Upgrade_AmericaBattleDrone
UpgradeCameo2 = Upgrade_AmericaScoutDrone
UpgradeCameo3 = Upgrade_AmericaHellfireDrone
UpgradeCameo4 = Upgrade_AmericaAdvancedTraining
UpgradeCameo5 = Upgrade_AmericaCompositeArmor
Draw = W3DTankDraw ModuleTag_01
DefaultConditionState
Model = AVLeopard
Turret = Turret
WeaponFireFXBone = PRIMARY TurretMS
WeaponRecoilBone = PRIMARY Barrel
WeaponMuzzleFlash = PRIMARY TurretFX
WeaponLaunchBone = PRIMARY TurretMS
End
ConditionState = REALLYDAMAGED
Model = AVLeopard_D
End
ConditionState = RUBBLE
Model = AVLeopard_D
End
TrackMarks = EXTnkTrack.tga
TreadAnimationRate = 2.0 ; amount of tread texture to move per second
TreadDriveSpeedFraction = 0.3 ; fraction of locomotor speed below which treads stop moving.
TreadPivotSpeedFraction = 0.6 ; fraction of locomotor speed below which we allow pivoting.
OkToChangeModelColor = Yes
End
; ***DESIGN parameters ***
DisplayName = OBJECT:Crusader
Side = America
EditorSorting = VEHICLE
TransportSlotCount = 3
WeaponSet
Conditions = None
Weapon = PRIMARY CrusaderTankGun
; Uncomment this when we want the crusader to have a machine too again
;Weapon = SECONDARY CrusaderMachineGun
End
ArmorSet
Conditions = None
Armor = TankArmor
DamageFX = TankDamageFX
End
;ArmorSet
; Conditions = PLAYER_UPGRADE
; Armor = UpgradedTankArmor
; DamageFX = TankDamageFX
;End
BuildCost = 900
BuildTime = 10.0 ;in seconds
VisionRange = 150
ShroudClearingRange = 300
Prerequisites
Object = AmericaWarFactory
End
ExperienceValue = 100 100 200 400;Experience point value at each level
ExperienceRequired = 0 200 300 600;Experience points needed to gain each level
IsTrainable = Yes ;Can gain experience
CrusherLevel = 2 ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
CommandSet = AmericaTankCrusaderCommandSet
; *** AUDIO Parameters ***
VoiceSelect = CrusaderTankVoiceSelect
VoiceMove = CrusaderTankVoiceMove
VoiceGuard = CrusaderTankVoiceMove
VoiceAttack = CrusaderTankVoiceAttack
SoundMoveStart = CrusaderTankMoveStart
SoundMoveStartDamaged = CrusaderTankMoveStart
UnitSpecificSounds
; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
VoiceCreate = CrusaderTankVoiceCreate
VoiceEnter = CrusaderTankVoiceMove
TurretMoveStart = NoSound
TurretMoveLoop = TurretMoveLoop
SoundEject = PilotSoundEject
VoiceEject = PilotVoiceEject
VoiceCrush = CrusaderTankVoiceCrush
End
; *** ENGINEERING Parameters ***
RadarPriority = UNIT
KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
Body = ActiveBody ModuleTag_02
MaxHealth = 480
InitialHealth = 480
; 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 = 960
SubdualDamageHealRate = 500
SubdualDamageHealAmount = 50
End
Behavior = AIUpdateInterface ModuleTag_03
Turret
TurretTurnRate = 180;60 // turn rate, in degrees per sec
ControlledWeaponSlots= PRIMARY
End
AutoAcquireEnemiesWhenIdle = Yes
End
[b] Locomotor = SET_NORMAL CrusaderLocomotor
Locomotor = SET_NORMAL_UPGRADED UberCrusaderLocomotor
Behavior = LocomotorSetUpgrade ModuleTag_07
TriggeredBy = Upgrade_TankSpecs
End[/b]
Behavior = PhysicsBehavior ModuleTag_04
Mass = 50.0
End
Behavior = ObjectCreationUpgrade ModuleTag_05
UpgradeObject = OCL_AmericanBattleDrone
TriggeredBy = Upgrade_AmericaBattleDrone
ConflictsWith = Upgrade_AmericaScoutDrone Upgrade_AmericaHellfireDrone
End
Behavior = ObjectCreationUpgrade ModuleTag_06
UpgradeObject = OCL_AmericanScoutDrone
TriggeredBy = Upgrade_AmericaScoutDrone
ConflictsWith = Upgrade_AmericaBattleDrone Upgrade_AmericaHellfireDrone
End
Behavior = ObjectCreationUpgrade ModuleTag_20
UpgradeObject = OCL_AmericanHellfireDrone
TriggeredBy = Upgrade_AmericaHellfireDrone
ConflictsWith = Upgrade_AmericaBattleDrone Upgrade_AmericaScoutDrone
End
Behavior = ProductionUpdate ModuleTag_07
MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
End
Behavior = ExperienceScalarUpgrade ModuleTag_08
TriggeredBy = Upgrade_AmericaAdvancedTraining
AddXPScalar = 1.0;Increases experience gained by an additional 100%
End
Behavior = MaxHealthUpgrade ModuleTag_09
TriggeredBy = Upgrade_AmericaCompositeArmor
AddMaxHealth = 100.0
ChangeType = ADD_CURRENT_HEALTH_TOO ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
End
; Turret fly off death
Behavior = SlowDeathBehavior ModuleTag_10
DeathTypes = ALL -CRUSHED -SPLATTED
ProbabilityModifier = 50
DestructionDelay = 500
DestructionDelayVariance = 100
FX = INITIAL FX_GenericTankDeathEffect
OCL = MIDPOINT OCL_GenericTankDeathEffect
FX = FINAL FX_GenericTankDeathExplosion
OCL = FINAL OCL_CrusaderTurret
End
; Catch fire, and explode death
Behavior = SlowDeathBehavior ModuleTag_11
DeathTypes = ALL -CRUSHED -SPLATTED
ProbabilityModifier = 50
DestructionDelay = 2000
DestructionDelayVariance = 300
FX = INITIAL FX_CrusaderCatchFire
OCL = FINAL OCL_GenericTankDeathEffect
FX = FINAL FX_GenericTankDeathExplosion
End
Behavior = TransitionDamageFX ModuleTag_12
ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmallLightSmokeColumn
ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
End
Behavior = DestroyDie ModuleTag_13
DeathTypes = NONE +CRUSHED +SPLATTED
End
; A crushing defeat
Behavior = FXListDie ModuleTag_14
DeathTypes = NONE +CRUSHED +SPLATTED
DeathFX = FX_CarCrush
End
Behavior = CreateObjectDie ModuleTag_15
DeathTypes = NONE +CRUSHED +SPLATTED
CreationList = OCL_CrusaderTank_CrushEffect
End
Behavior = CreateCrateDie ModuleTag_CratesChange
CrateData = SalvageCrateData
;CrateData = EliteTankCrateData
;CrateData = HeroicTankCrateData
End
Behavior = EjectPilotDie ModuleTag_17
GroundCreationList = OCL_EjectPilotOnGround
AirCreationList = OCL_EjectPilotViaParachute
ExemptStatus = HIJACKED
VeterancyLevels = ALL -REGULAR;only vet+ gives pilot
End
Behavior = MaxHealthUpgrade ModuleTag_18
TriggeredBy = Upgrade_AmericaCompositeArmor
AddMaxHealth = 100.0
ChangeType = ADD_CURRENT_HEALTH_TOO ;Choices are PRESERVE_RATIO, ADD_CURRENT_HEALTH_TOO, and SAME_CURRENTHEALTH
End
Behavior = FlammableUpdate ModuleTag_21
AflameDuration = 5000 ; If I catch fire, I'll burn for this long...
AflameDamageAmount = 3 ; taking this much damage...
AflameDamageDelay = 500 ; this often.
End
Geometry = BOX
GeometryMajorRadius = 15.0
GeometryMinorRadius = 10.0
GeometryHeight = 10.0
GeometryIsSmall = Yes
Shadow = SHADOW_VOLUME
ShadowSizeX = 45 ; minimum elevation angle above horizon. Used to limit shadow length
End
And for the Battlemaster I gave it much improved armour
Armor UberTankArmor
Armor = CRUSH 5% ;tanks are extra-hard to crush
Armor = SMALL_ARMS 2%
Armor = GATTLING 1% ;resistant to gattling tank
Armor = COMANCHE_VULCAN 2%
Armor = FLAME 2%
Armor = RADIATION 5% ;Radiation does less damage to tanks.
Armor = MICROWAVE 0%
Armor = POISON 2% ;Poison does a little damage, just for balance reasons.
Armor = SNIPER 0%
Armor = MELEE 0% ;tanks don't generally take much damage other than paint damage from MELEE weapons
Armor = LASER 0% ;lasers are anti-personel and anti-projectile only (for point defense laser)
Armor = HAZARD_CLEANUP 0% ;Not harmed by cleaning weapons
Armor = PARTICLE_BEAM 1% ;
Armor = KILL_PILOT 1% ;Jarmen Kell uses against vehicles only.
Armor = SURRENDER 0% ;Capture type weapons are effective only against infantry.
Armor = SUBDUAL_MISSILE 0%
Armor = SUBDUAL_VEHICLE 1%
Armor = SUBDUAL_BUILDING 0%
End
;------------------------------------------------------------------------------
Object ChinaTankBattleMaster
; *** ART Parameters ***
SelectPortrait = SNBattlemaster_L
ButtonImage = SNBattlemaster
UpgradeCameo1 = Upgrade_Nationalism
UpgradeCameo2 = Upgrade_ChinaUraniumShells
UpgradeCameo3 = Upgrade_ChinaNuclearTanks
;UpgradeCameo4 = NONE
;UpgradeCameo5 = NONE
Draw = W3DTankDraw ModuleTag_01
OkToChangeModelColor = Yes
DefaultConditionState
Model = NVBtMstr
Turret = Turret01
WeaponFireFXBone = PRIMARY Muzzle
WeaponRecoilBone = PRIMARY Barrel
WeaponMuzzleFlash = PRIMARY MuzzleFX
WeaponLaunchBone = PRIMARY Muzzle
End
ConditionState = REALLYDAMAGED
Model = NVBtMstr_D
Turret = Turret01
WeaponFireFXBone = PRIMARY Muzzle
WeaponRecoilBone = PRIMARY Barrel
WeaponMuzzleFlash = PRIMARY MuzzleFX
WeaponLaunchBone = PRIMARY Muzzle
End
ConditionState = RUBBLE
Model = NVBtMstr_D
Turret = Turret01
End
TrackMarks = EXTnkTrack.tga
End
; ***DESIGN parameters ***
DisplayName = OBJECT:BattleMaster
Side = China
EditorSorting = VEHICLE
TransportSlotCount = 3 ;how many "slots" we take in a transport (0 == not transportable)
WeaponSet
Conditions = None
Weapon = PRIMARY BattleMasterTankGun
End
[b] ArmorSet
Conditions = None
Armor = TankArmor
DamageFX = TankDamageFX
End
[/b]
[b] ArmorSet
Conditions = PLAYER_UPGRADE
Armor = UberTankArmor
DamageFX = TankDamageFX
End
Behavior = ArmorUpgrade ModuleTag_Armor01
TriggeredBy = Upgrade_TankSpecs
End[/b]
BuildCost = 800
BuildTime = 10.0 ;in seconds
VisionRange = 150
ShroudClearingRange = 300
Prerequisites
Object = ChinaWarFactory
End
ExperienceValue = 100 100 200 400 ;Experience point value at each level
ExperienceRequired = 0 200 300 600;Experience points needed to gain each level
IsTrainable = Yes ;Can gain experience
CrusherLevel = 2 ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
CommandSet = ChinaVehicleBattleMasterCommandSet
; *** AUDIO Parameters ***
VoiceSelect = BattleMasterTankVoiceSelect
VoiceMove = BattleMasterTankVoiceMove
VoiceGuard = BattleMasterTankVoiceMove
VoiceAttack = BattleMasterTankVoiceAttack
SoundMoveStart = BattleMasterTankMoveStart
SoundMoveStartDamaged = BattleMasterTankMoveStart
UnitSpecificSounds
; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
VoiceCreate = BattleMasterTankVoiceCreate
TurretMoveStart = NoSound
TurretMoveLoop = TurretMoveLoop
VoiceCrush = BattleMasterTankVoiceCrush
VoiceEnter = BattleMasterTankVoiceMove
End
; *** ENGINEERING Parameters ***
RadarPriority = UNIT
KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE
Body = ActiveBody ModuleTag_02
MaxHealth = 400.0
InitialHealth = 400.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 = 800
SubdualDamageHealRate = 500
SubdualDamageHealAmount = 50
End
Behavior = AIUpdateInterface ModuleTag_03
Turret
TurretTurnRate = 120 ; turn rate, in degrees per sec
ControlledWeaponSlots = PRIMARY
End
AutoAcquireEnemiesWhenIdle = Yes
End
Locomotor = SET_NORMAL BattleMasterLocomotor
Locomotor = SET_NORMAL_UPGRADED NuclearBattleMasterLocomotor
Behavior = HordeUpdate ModuleTag_04
RubOffRadius = 150 ; 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 = 75 ; how close other units must be to us to count towards our horde-ness (~30 feet or so)
KindOf = VEHICLE ; what KindOf's must match to count towards horde-ness
AlliesOnly = Yes ; do we only count allies towards horde status?
ExactMatch = Yes ; 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_05
Mass = 40.0
End
Behavior = FireWeaponWhenDeadBehavior ModuleTag_06
DeathWeapon = NuclearTankDeathWeapon
StartsActive = No ; turned on by upgrade
TriggeredBy = Upgrade_ChinaNuclearTanks
End
Behavior = LocomotorSetUpgrade ModuleTag_07
TriggeredBy = Upgrade_ChinaNuclearTanks
End
Behavior = VeterancyGainCreate ModuleVet_01
StartingLevel = ELITE
ScienceRequired = SCIENCE_BattlemasterTraining
End
; A crushing defeat
Behavior = DestroyDie ModuleTag_08
DeathTypes = NONE +CRUSHED +SPLATTED
End
Behavior = FXListDie ModuleTag_09
DeathTypes = NONE +CRUSHED +SPLATTED
DeathFX = FX_CarCrush
End
Behavior = CreateObjectDie ModuleTag_10
DeathTypes = NONE +CRUSHED +SPLATTED
CreationList = OCL_CrusaderTank_CrushEffect
End
Behavior = CreateCrateDie ModuleTag_11
CrateData = SalvageCrateData
;CrateData = EliteTankCrateData
;CrateData = HeroicTankCrateData
End
Behavior = SlowDeathBehavior ModuleTag_12
DeathTypes = ALL -CRUSHED -SPLATTED
ProbabilityModifier = 25
DestructionDelay = 200
DestructionDelayVariance = 100
OCL = FINAL OCL_ChinaTankBattleMasterDebris
FX = FINAL FX_BattleMasterExplosionOneFinal
End
Behavior = TransitionDamageFX ModuleTag_13
ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_BattleMasterDamageTransition
End
Behavior = FlammableUpdate ModuleTag_21
AflameDuration = 5000 ; If I catch fire, I'll burn for this long...
AflameDamageAmount = 3 ; taking this much damage...
AflameDamageDelay = 500 ; this often.
End
Geometry = BOX
GeometryMajorRadius = 13.0
GeometryMinorRadius = 9.0
GeometryHeight = 10
GeometryIsSmall = Yes
Shadow = SHADOW_VOLUME
ShadowSizeX = 45 ; minimum elevation angle above horizon. Used to limit shadow length
End
There you have it. A single upgrade performing 2 totally different functions for 2 different factions. you can apply what i have shown above to your particular problem.
Hope this help anyone else. Ask if your confused.
Mike
Edited by Mbob61, 19 November 2009 - 20:17.
#18
Posted 19 November 2009 - 20:17
And thank you for all of your work.
Nope doesn't want to work, keeps crashing, in any case, instead, could we make a new upgrade instead?
Edited by CCCD, 20 November 2009 - 12:55.
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users