

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