Object ChinaTankOverlord
; *** ART Parameters ***
SelectPortrait = SNOverlord_L
ButtonImage = SNOverlord
UpgradeCameo1 = Upgrade_ChinaUraniumShells
UpgradeCameo2 = Upgrade_ChinaNuclearTanks
UpgradeCameo3 = Upgrade_ChinaOverlordBattleBunker
UpgradeCameo4 = Upgrade_ChinaOverlordGattlingCannon
UpgradeCameo5 = Upgrade_ChinaOverlordPropagandaTower
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 = China
EditorSorting = VEHICLE
TransportSlotCount = 3 ;how many "slots" we take in a transport (0 == not transportable)
WeaponSet
Conditions = None
Weapon = PRIMARY OverlordTankGun
End
WeaponSet
Conditions = PLAYER_UPGRADE
Weapon = PRIMARY OverlordTankGun
[h] Weapon = SECONDARY Lazr_PatriotMissileAssistWeapon[/h] ;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 = 20.0 ;in seconds
VisionRange = 150
ShroudClearingRange = 200
Prerequisites
Object = ChinaWarFactory
Object = ChinaPropagandaCenter
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 = ChinaTankOverlordDefaultCommandSet
; *** AUDIO Parameters ***
VoiceSelect = OverlordTankVoiceSelect
SoundMoveStart = OverlordTankMoveStart
SoundMoveStartDamaged = OverlordTankMoveStart
VoiceMove = OverlordTankVoiceMove
VoiceGuard = OverlordTankVoiceMove
VoiceAttack = OverlordTankVoiceAttack
UnitSpecificSounds
; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
VoiceCreate = OverlordTankVoiceCreate
TurretMoveStart = NoSound
TurretMoveLoop = OverlordTankTurretMoveLoop
VoiceCrush = OverlordTankVoiceCrush
VoiceEnter = OverlordTankVoiceMove
VoiceUnload = OverlordTankVoiceUnload
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 = 1100.0
InitialHealth = 1100.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
[h] Behavior = OverlordContain ModuleTag_Bunker ; Like Transport, but when full, passes transport queries along to first passenger (redirects like tunnel)
Slots = 1
DamagePercentToUnits = 100%
AllowInsideKindOf = PORTABLE_STRUCTURE
PassengersAllowedToFire = Yes
PayloadTemplateName = ChinaTankOverlordBattleBunker
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 = OverlordContain ModuleTag_Turret ; Like Transport, but when full, passes transport queries along to first passenger (redirects like tunnel)
Slots = 1
DamagePercentToUnits = 100%
AllowInsideKindOf = PORTABLE_STRUCTURE
PassengersAllowedToFire = Yes
PayloadTemplateName = ChinaTankOverlordGattlingCannon
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
End
Behavior = WeaponSetUpgrade ModuleTag_WeaponSetUpgrade01
TriggeredBy = Upgrade_ChinaOverlordGattlingCannon
ConflictsWith = Upgrade_ChinaOverlordPropagandaTower
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_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 = ChinaTankOverlordBattleBunkerCommandSet
TriggeredBy = Upgrade_ChinaOverlordGattlingCannon
ConflictsWith = Upgrade_ChinaOverlordPropagandaTower
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_ChinaOverlordPropagandaTower
End[/h]
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
Posted by: Annihilationzh - Thursday, November 19, 2020 5:48:22 PM
It's not possible to mount two addons at once.
The simplest way to do it would be make the gattling cannon into a gattling bunker. I.E. Add the bunker code and a second draw module.
You can't use AddModule in a mod. That's for Map.ini
Posted by: NewNightmare - Wednesday, December 2, 2020 4:44:30 PM
Funny I randomly logged in because I found my making of comic for the helix upgrade challenge from 2012.
Susprised annihilationzh is still alive and kicking here.
Attaching the comic and artwork, I don't have the original code. Use it as inspiration [ATTACH]2311[/Attach]
Posted by: haggis - Monday, December 14, 2020 3:25:47 PM
[quote=Annihilationzh;149992]The simplest way to do it would be make the gattling cannon into a gattling bunker. I.E. Add the bunker code and a second draw module.[/quote]
I'm also interested in this; what do you mean by bunker code? Is it just the contain behavior?
And what do you mean by draw module? Is it this part?
[quote]
Draw = W3DDependencyModelDraw ModuleTag_01
OkToChangeModelColor = Yes
AttachToBoneInContainer = FIREPOINT01
ConditionState = NONE
Model = NVOvrlrd_B
End
ConditionState = REALLYDAMAGED
Model = NVOvrlrd_BD
ParticleSysBone = Smoke01 SmolderingSmoke
ParticleSysBone = Smoke02 SmolderingSmoke
ParticleSysBone = Flame01 SmolderingFire
ParticleSysBone = Flame01 SmolderingFlameCore
ParticleSysBone = Spark01 LiveWireSparks
End
; night
ConditionState = NIGHT
Model = NVOvrlrd_B
End
ConditionState = NIGHT REALLYDAMAGED
Model = NVOvrlrd_BD
ParticleSysBone = Smoke01 SmolderingSmoke
ParticleSysBone = Smoke02 SmolderingSmoke
ParticleSysBone = Flame01 SmolderingFire
ParticleSysBone = Flame01 SmolderingFlameCore
ParticleSysBone = Spark01 LiveWireSparks
End
End
[/quote]
Wouldn't that replace the entire Overlord model so that it no longer has a Gattling gun?
Posted by: Annihilationzh - Monday, December 14, 2020 7:22:18 PM
[quote]I'm also interested in this; what do you mean by bunker code? Is it just the contain behavior?[/quote]
Overlord addons are seperate units. They're 'passengers' in the overlord. I.E. ChinaTankOverlordBattleBunker, ChinaTankOverlordGattlingCannon, ChinaTankOverlordPropagandaTower
The bunker has a module that allows troops inside.
[quote]And what do you mean by draw module? Is it this part?[/quote]
Correct.
[quote]Wouldn't that replace the entire Overlord model so that it no longer has a Gattling gun?[/quote]
That code is only for the overlord - not it's turrets.
Posted by: haggis - Monday, December 14, 2020 9:45:21 PM
I tried putting the bunker's draw module (quoted above) into the overlord gattling, right after its own draw module; the game won't launch with this (encountered serious error blabla).
[quote=Annihilationzh;150054]The bunker has a module that allows troops inside.[/quote]
I copied the bunker's contain module into the overlord gattling module, but it doesn't work in-game. Is it related to the draw module part?
Posted by: Annihilationzh - Monday, December 14, 2020 11:09:36 PM
Without seeing your code, I have no idea what you did wrong.
Posted by: haggis - Monday, December 14, 2020 11:54:07 PM
[quote];------------------------------------------------------------------------------
Object Tank_ChinaTankOverlordGattlingCannon
; *** 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 = NVOvrlrd_G
Turret = TURRET01
TurretPitch = TURRETEL
WeaponFireFXBone = PRIMARY Muzzle
WeaponMuzzleFlash = PRIMARY MuzzleFX
WeaponFireFXBone = SECONDARY Muzzle
WeaponMuzzleFlash = SECONDARY MuzzleFX
End
ConditionState = CONTINUOUS_FIRE_SLOW
Model = NVOvrlrd_G
Animation = NVOvrlrd_G.NVOvrlrd_G
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.1 0.1 ;set this state to animate s l o w l y
End
ConditionState = CONTINUOUS_FIRE_MEAN
Model = NVOvrlrd_G
Animation = NVOvrlrd_G.NVOvrlrd_G
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.2 0.2 ;set this state to animate medium-fast
End
ConditionState = CONTINUOUS_FIRE_FAST
Model = NVOvrlrd_G
Animation = NVOvrlrd_G.NVOvrlrd_G
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.3 0.3 ;set this state to animate vryfst
ParticleSysBone = Muzzle01 GattlingMuzzleSmoke
ParticleSysBone = Muzzle02 GattlingMuzzleSmoke
End
ConditionState = REALLYDAMAGED
Model = NVOvrlrd_GD
Turret = TURRET01
TurretPitch = TURRETEL
WeaponFireFXBone = PRIMARY Muzzle
WeaponMuzzleFlash = PRIMARY MuzzleFX
WeaponFireFXBone = SECONDARY Muzzle
WeaponMuzzleFlash = SECONDARY MuzzleFX
ParticleSysBone = Smoke01 SmokeFactionMedium
ParticleSysBone = Smoke02 SmokeFactionMedium
ParticleSysBone = Smoke03 SmokeFactionMedium
ParticleSysBone = SparkM01 SparksMedium
ParticleSysBone = SparkM02 SparksMedium
End
ConditionState = CONTINUOUS_FIRE_SLOW REALLYDAMAGED
Model = NVOvrlrd_GD
Animation = NVOvrlrd_G.NVOvrlrd_G
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.1 0.1 ;set this state to animate s l o w l y
End
ConditionState = CONTINUOUS_FIRE_MEAN REALLYDAMAGED
Model = NVOvrlrd_GD
Animation = NVOvrlrd_G.NVOvrlrd_G
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.2 0.2 ;set this state to animate medium-fast
End
ConditionState = CONTINUOUS_FIRE_FAST REALLYDAMAGED
Model = NVOvrlrd_GD
Animation = NVOvrlrd_G.NVOvrlrd_G
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.3 0.3 ;set this state to animate vryfst
ParticleSysBone = Muzzle01 GattlingMuzzleSmoke
ParticleSysBone = Muzzle02 GattlingMuzzleSmoke
End
[b][i] Draw = W3DDependencyModelDraw ModuleTag_01
OkToChangeModelColor = Yes
AttachToBoneInContainer = FIREPOINT01
ConditionState = NONE
Model = NVOvrlrd_B
End
ConditionState = REALLYDAMAGED
Model = NVOvrlrd_BD
ParticleSysBone = Smoke01 SmolderingSmoke
ParticleSysBone = Smoke02 SmolderingSmoke
ParticleSysBone = Flame01 SmolderingFire
ParticleSysBone = Flame01 SmolderingFlameCore
ParticleSysBone = Spark01 LiveWireSparks
End
; night
ConditionState = NIGHT
Model = NVOvrlrd_B
End
ConditionState = NIGHT REALLYDAMAGED
Model = NVOvrlrd_BD
ParticleSysBone = Smoke01 SmolderingSmoke
ParticleSysBone = Smoke02 SmolderingSmoke
ParticleSysBone = Flame01 SmolderingFire
ParticleSysBone = Flame01 SmolderingFlameCore
ParticleSysBone = Spark01 LiveWireSparks
End
End
[/i][/b]
End
; ***DESIGN parameters ***
Side = ChinaTankGeneral
EditorSorting = SYSTEM
TransportSlotCount = 1
WeaponSet
Conditions = None
Weapon = PRIMARY GattlingBuildingGun
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 = VeterancyGainCreate ModuleTag_07
StartingLevel = VETERAN
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
[b][i] Behavior = TransportContain ModuleTag_03
Slots = 5
PassengersAllowedToFire = Yes
AllowInsideKindOf = INFANTRY
InitialPayload = Tank_ChinaInfantryTankHunter 5
EnterSound = GarrisonEnter
ExitSound = GarrisonExit
DamagePercentToUnits = 50%
End[/i][/b]
Behavior = DestroyDie ModuleTag_04
;nothing
End
Behavior = WeaponBonusUpgrade ModuleTag_05
TriggeredBy = Upgrade_ChinaChainGuns
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[/quote]
Things I added are in bold/italic. The draw portion causes the game not to launch, and without it the game launches but the contain portion doesn't do anything.
Posted by: Annihilationzh - Tuesday, December 15, 2020 10:30:31 AM
Crash: You put the second draw module inside the first draw module.
Fix: See the "End" immediately after your bolded draw module? Move it up above the bolded section.
Also your ModuleTags all need to be different. You have two ModuleTag_01 and two ModuleTag_03. It won't cause a crash but it can cause glitches. It doesn't matter what they're called: ModuleTag_X, Module_01, Tag_01. As long as they're all different.
I can think of quite a few reasons for why the contain is not working, and both of these issues are possible reasons.
Posted by: haggis - Wednesday, December 16, 2020 3:16:06 PM
[quote=Annihilationzh;150061]I can think of quite a few reasons for why the contain is not working, and both of these issues are possible reasons.[/quote]
Fixed the crash issue as you instructed and changed the module tag to 08, but the contain still doesn't work. What are the other possible reasons?
Is it related to weaponset? I've added a tertiary weapon to the Overlord itself which works fine, but I tried adding a tertiary weapon to the Overlord gattling gun and it wouldn't work. Are these issues related?
Posted by: Annihilationzh - Wednesday, December 16, 2020 3:38:07 PM
[quote]Are these issues related?[/quote]
They are. I didn't even notice before but you're using the Tank_ChinaTankOverlordGattlingCannon. It's unused. The Tank general's overlord uses the regular overlord gattling cannon.
Posted by: haggis - Wednesday, December 16, 2020 4:00:01 PM
[quote=Annihilationzh;150066][quote]Are these issues related?[/quote]
The Tank general's overlord uses the regular overlord gattling cannon.[/quote]
I... didn't see that one coming.
Since I already changed Tank_ChinaTankOverlordGattlingCannon, would it be easier for me to change the Emperor to use that one? This unused object would just be a carbon copy of the other one so there'd be no harm right?
I tried exactly that in the Emperor code:
[quote]
Behavior = ObjectCreationUpgrade ModuleTag_07
UpgradeObject = OCL_[i][b]Tank_[/b][/i]OverlordGattlingCannon
TriggeredBy = Upgrade_ChinaOverlordGattlingCannon
;ConflictsWith = Upgrade_ChinaOverlordBattleBunker
End
[/quote]
The contain now works (there's no button to move the infantry out but I'd need to edit the command inis for that; doesn't show the "pips" for the amount of inf in it, but it's not a huge issue), but the gattling cannon is completely gone - no model, no shooting.
I think it's due to us drawing the bunker thing over the gattling thing?
EDIT
I'm not sure the contain actually works (was playing with other secondary weapons), testing now
EDIT2
Yeah contain doesn't work either, so I guess my tweak didn't generate the correct object. How should the syntax actually work?
Posted by: Annihilationzh - Wednesday, December 16, 2020 4:16:35 PM
[quote]OCL_Tank_OverlordGattlingCannon[/quote]
That needs to be defined in ObjectCreationList.ini. Have you done that?
Posted by: haggis - Wednesday, December 16, 2020 4:31:37 PM
[quote=Annihilationzh;150069][quote]OCL_Tank_OverlordGattlingCannon[/quote]
That needs to be defined in ObjectCreationList.ini. Have you done that?[/quote]
Oh, that did the trick.
I know that the correct object was generated due to the bunkergattling being drawn on the model, the contain still doesn't work however.
Posted by: Annihilationzh - Wednesday, December 16, 2020 4:35:06 PM
[quote]I know that the correct object was generated due to the bunkergattling being drawn on the model, the contain still doesn't work however.[/quote]
I'm thinking this has something to do with it:
[quote]The contain now works (there's no button to move the infantry out but I'd need to edit the command inis for that; doesn't show the "pips" for the amount of inf in it, but it's not a huge issue), but the gattling cannon is completely gone - no model, no shooting.[/quote]
This is not normal and it shouldn't be happening.
Have you been editing the overlord's OverlordContain module?
Posted by: haggis - Wednesday, December 16, 2020 4:38:08 PM
Correction: the contain works. It's just the InitialPayload part that doesn't work, probably because this is an object and not an unit?
In my previous testing where the pips didn't show, the contain didn't work, I just thought it was tankhunters shooting when it was actually the other secondary weapon I was messing around with that shot the rockets.
Posted by: Annihilationzh - Wednesday, December 16, 2020 4:57:22 PM
See the avenger's OverlordContain. It starts with its portable structure.
Posted by: haggis - Wednesday, December 16, 2020 5:47:12 PM
I added that line and commented out ObjectCreationUpgrade, somehow it doesn't work:
[quote]
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
[i][b] PayloadTemplateName = Tank_OverlordGattlingCannon[/b][/i]
ExperienceSinkForRider = Yes ; I get the Exp for things my turret friend kills
End
[/quote]
EDIT oh wait the name is wrong, brb testing again...
EDIT 2
With the correct name it works (tank spawns with the gattlingbunker), but the InitialPayload part still doesn't work.
Also, somewhat related question: is it possible to have a mix of different unit types in InitialPayload, generally speaking?
Another somewhat related question: are overlordcontain and (regular) contain behaviors the only ways to bypass the weaponset limit of 3 weapons per unit?
Posted by: Annihilationzh - Wednesday, December 16, 2020 6:59:27 PM
[quote]With the correct name it works (tank spawns with the gattlingbunker), but the InitialPayload part still doesn't work.[/quote]
Is the InitialPayload on the overlord or on the bunker? Personally, I'd try it on the bunker.
[quote]Also, somewhat related question: is it possible to have a mix of different unit types in InitialPayload, generally speaking?[/quote]
Not directly. But you can get it done via OCLs.
[code=plain]ObjectCreationList OCL_BunkerTroops
CreateObject
ObjectNames = AmericaInfantryRanger
Count = 1
ContainInsideSourceObject = Yes
End
CreateObject
ObjectNames = Infa_ChinaInfantryMiniGunner
Count = 4
ContainInsideSourceObject = Yes
End
End[/code]
You can then use ObjectCreationUpgrade to spawn the OCL. And if you don't want it to require an upgrade then you can give them the upgrade for free (see Dr Thrax's Command Center - he gets anthrax beta for free).
[quote]Another somewhat related question: are overlordcontain and (regular) contain behaviors the only ways to bypass the weaponset limit of 3 weapons per unit?[/quote]
Yes AFAIK - unless you count things like drones.
Posted by: haggis - Wednesday, December 16, 2020 7:36:45 PM
[quote=Annihilationzh;150075]Is the InitialPayload on the overlord or on the bunker? Personally, I'd try it on the bunker.[/quote]
It's on the bunker yeah.
[quote]Not directly. But you can get it done via OCLs.[/quote]
I'd still like to find a way to make InitialPayload work for the above issue, but if it can't happen, I can use OCLs to populate the bunker correct? Either initially or thru an upgrade button?
Posted by: Annihilationzh - Thursday, December 17, 2020 1:38:39 AM
Well, you can only try InitialPayload on the overlord and the bunker. If it doesn't do anything on either then that's all she wrote.
OCLs should work regardless.
Posted by: haggis - Saturday, December 19, 2020 9:15:46 PM
[quote=Annihilationzh;150066]The Tank general's overlord uses the regular overlord gattling cannon.[/quote]
I actually have an extra question regarding this, just so I understand better how it all works:
Tank general's Overlord Gattling is positioned further forward than the normal Overlord's, correct? If it just uses the regular one, and the draw modules are in the Gattling objects, how can this be?
Also does Draw affect anything else than weapon bone locations, game mechanics wise?
Posted by: Annihilationzh - Sunday, December 20, 2020 3:33:33 PM
[quote]Tank general's Overlord Gattling is positioned further forward than the normal Overlord's, correct? If it just uses the regular one, and the draw modules are in the Gattling objects, how can this be?[/quote]
The addons attach to the bone FIREPOINT01 on the overlord model. The two models have this bone in different places.
[quote]Also does Draw affect anything else than weapon bone locations, game mechanics wise?[/quote]
The models themselves determine a lot. As you discovered earlier, the bones on an overlord are not setup for a flamethrower, so you ended up with a strange trajectory. Likewise if you want a visible rotating turret it needs to be supported by the model. Models also have parts that change colour (blue/red/green/etc) depending on who owns them.
The draw modules determine which models are being used and in what situation. They hide/show parts of a model. They tell models to animate (treads, scaffolding, turrets, recoil). They tell buildings which direction they should face by default. They add particles (sparks, smoke and similar) to bones. Basically they handle everything around how the game interacts with models.
Posted by: haggis - Sunday, December 20, 2020 4:21:12 PM
[quote=Annihilationzh;150086]The addons attach to the bone FIREPOINT01 on the overlord model. The two models have this bone in different places.[/quote]
Aha, so I got it backwards... I thought the addons added firepoints, instead they attach to existing firepoints.
[quote]Likewise if you want a visible rotating turret it needs to be supported by the model.[/quote]
Hmm by supported you mean having a proper firepoint/bone for it? E.g. a supply truck would not support a (visible rotating) turret since it has no firepoints in its model?
Does this also mean I can't just add Overlord Contain to anything I want? Since it's something that attaches to an existing firepoint?
Posted by: Annihilationzh - Sunday, December 20, 2020 8:04:03 PM
[quote]Does this also mean I can't just add Overlord Contain to anything I want? Since it's something that attaches to an existing firepoint?[/quote]
It won't crash but most models don't have a FIREPOINT01. You'd need another bone to attach it to, or the addon would just be put at the center of the model, on the floor.
For example, the Paladin has a bone for its laser, and you could mount an overlord gattling cannon on it no problem.
[quote]Hmm by supported you mean having a proper firepoint/bone for it? E.g. a supply truck would not support a (visible rotating) turret since it has no firepoints in its model?[/quote]
No sorry, I meant turret like a battlemaster's turret. It's a named part of the model. These turrets have to be designed to function as a turret. I.E. imagine a tank's turret moving but the cannon stays still - and shoots shells out sideways.
Overlord addons are technically just buildings in the code. The speaker tower and bunker don't even have turrets.
Posted by: haggis - Tuesday, January 12, 2021 1:28:03 AM
[quote=Annihilationzh;150075]
You can then use ObjectCreationUpgrade to spawn the OCL. And if you don't want it to require an upgrade then you can give them the upgrade for free (see Dr Thrax's Command Center - he gets anthrax beta for free).[/quote]
I tried this to no avail today.
In Overlord's bunker (well the Gattling cannon since it has the bunker) I had:
[quote] Behavior = GrantUpgradeCreate ModuleTag_BunkerTroops
UpgradeToGrant = Upgrade_Tank_ChinaBunkerTroops
End
Behavior = ObjectCreationUpgrade ModuleTag_BunkerOCL
UpgradeObject = OCL_Tank_ChinaBunkerTroops
TriggeredBy = Upgrade_Tank_ChinaBunkerTroops
End[/quote]
In ObjectCreationList.ini I had:
[quote]ObjectCreationList OCL_Tank_ChinaBunkerTroops
CreateObject
ObjectNames = Tank_ChinaInfantryTankHunter
Count = 3
ContainInsideSourceObject = Yes
End
CreateObject
ObjectNames = Tank_ChinaInfantryRedguard
Count = 2
ContainInsideSourceObject = Yes
End
End[/quote]
In Upgrades.ini I had:
[quote]Upgrade Upgrade_Tank_ChinaBunkerTroops
DisplayName = UPGRADE:TankChinaBunkerTroops
Type = OBJECT
BuildTime = 15.0
BuildCost = 400
ButtonImage = SNHelixUp03
ResearchSound = HelixVoiceUpgradeBunker
UnitSpecificSound = OverlordExpansion
End[/quote]
What am I missing?
Also I added ECM behavior to the Overlord instead of one of its contained modules this time just to see if it's the correct code, works fine; only I got a "serious error" crash, the first I've had so far that was not caused by me alt-tabbing. Do you think it could be related to the ECM behavior?
EDIT actually my ECM behavior had a duplicate module tag, I'll fix it and post again if it comes up again.
EDIT2 those lines of pseudocode work when I put them in a bunker (the building). So I guess OverlordContain is the issue...?
Posted by: Annihilationzh - Tuesday, January 12, 2021 4:00:07 AM
GrantUpgradeCreate on most units will crash saved games.
If you remove Type = OBJECT from upgrade.ini you can move GrantUpgradeCreate to the war factory.
[quote]Also I added ECM behavior to the Overlord instead of one of its contained modules this time just to see if it's the correct code, works fine; only I got a "serious error" crash, the first I've had so far that was not caused by me alt-tabbing. Do you think it could be related to the ECM behavior?[/quote]
My memory is getting foggy here, but I'm pretty sure ECM and PDL count towards the weapon limit (3 per unit). That could be the cause of the crash.
[quote]EDIT2 those lines of pseudocode work when I put them in a bunker (the building). So I guess OverlordContain is the issue...?[/quote]
I'm honestly surprised that didn't work. I could have sworn I've seen it done before. You may have to give the overlord slots by default (like the helix) and have the OCL spawn in the overlord.
Posted by: haggis - Wednesday, January 13, 2021 1:05:22 AM
[quote=Annihilationzh;150166]GrantUpgradeCreate on most units will crash saved games.[/quote]
Oh... good to know.
[quote=Annihilationzh;150166]If you remove Type = OBJECT from upgrade.ini you can move GrantUpgradeCreate to the war factory.[/quote]
Wouldn't that make the Overlord spawn with inf inside it? Rather than having the inf be generated upon getting the bunker?
[quote]My memory is getting foggy here, but I'm pretty sure ECM and PDL count towards the weapon limit (3 per unit). That could be the cause of the crash.[/quote]
I tried removing the TERTIARY weapon from the Overlord, in 1 of the test runs it crashed again but not the others. There was a lot of crap going on the screen however.
[quote]I'm honestly surprised that didn't work. I could have sworn I've seen it done before. You may have to give the overlord slots by default (like the helix) and have the OCL spawn in the overlord.[/quote]
I got it to work by putting the OCL in the Overlord and having the condition be the GattlingCannon upgrade (well the GattlingBunker in my case). The Gattling main gun has some weird targeting behavior when I tested (such as not shooting when I tell the tank to shoot at a building), not sure if it's related at all to the inf inside.
Also, somehow the Gattling gun will refuse to shoot (or even turn) if I add a TERTIARY weapon to the Gattling upgrade. Any idea why that is?
Posted by: Annihilationzh - Wednesday, January 13, 2021 5:05:20 AM
[quote]Wouldn't that make the Overlord spawn with inf inside it? Rather than having the inf be generated upon getting the bunker?[/quote]
GrantUpgradeCreate will make the OCL activate immediately regardless of where it is.
[quote]I tried removing the TERTIARY weapon from the Overlord, in 1 of the test runs it crashed again but not the others. There was a lot of crap going on the screen however.[/quote]
You mean like glitchy graphics?
[quote]Also, somehow the Gattling gun will refuse to shoot (or even turn) if I add a TERTIARY weapon to the Gattling upgrade. Any idea why that is?[/quote]
Not off the top of my head but I could take a look at the code if you want.
Posted by: haggis - Wednesday, January 13, 2021 12:35:19 PM
[quote=Annihilationzh;150172]You mean like glitchy graphics?[/quote]
As in a lot of units were doing things (like half a screen of inf fighting each other). There was also some bugged units: rocket attacks coming from a spot without units, may be where my Overlord died, maybe not... but I think I've also seen this bug in the base game so it might not be due to my messing.
[quote]Not off the top of my head but I could take a look at the code if you want.[/quote]
Here's my current full GattlingBunker code, I basically only added the bunker contain/draw, and the tertiary weapon (I tried both with and without the tertiary being bound to turret): (the initial payload for the contain doesn't work, maybe I should comment it out so that it doesn't add to glitching?)
[quote]Object Tank_ChinaTankOverlordGattlingCannon
; *** 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 = NVOvrlrd_G
Turret = TURRET01
TurretPitch = TURRETEL
WeaponFireFXBone = PRIMARY Muzzle
WeaponMuzzleFlash = PRIMARY MuzzleFX
WeaponFireFXBone = SECONDARY Muzzle
WeaponMuzzleFlash = SECONDARY MuzzleFX
End
ConditionState = CONTINUOUS_FIRE_SLOW
Model = NVOvrlrd_G
Animation = NVOvrlrd_G.NVOvrlrd_G
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.1 0.1 ;set this state to animate s l o w l y
End
ConditionState = CONTINUOUS_FIRE_MEAN
Model = NVOvrlrd_G
Animation = NVOvrlrd_G.NVOvrlrd_G
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.2 0.2 ;set this state to animate medium-fast
End
ConditionState = CONTINUOUS_FIRE_FAST
Model = NVOvrlrd_G
Animation = NVOvrlrd_G.NVOvrlrd_G
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.3 0.3 ;set this state to animate vryfst
ParticleSysBone = Muzzle01 GattlingMuzzleSmoke
ParticleSysBone = Muzzle02 GattlingMuzzleSmoke
End
ConditionState = REALLYDAMAGED
Model = NVOvrlrd_GD
Turret = TURRET01
TurretPitch = TURRETEL
WeaponFireFXBone = PRIMARY Muzzle
WeaponMuzzleFlash = PRIMARY MuzzleFX
WeaponFireFXBone = SECONDARY Muzzle
WeaponMuzzleFlash = SECONDARY MuzzleFX
ParticleSysBone = Smoke01 SmokeFactionMedium
ParticleSysBone = Smoke02 SmokeFactionMedium
ParticleSysBone = Smoke03 SmokeFactionMedium
ParticleSysBone = SparkM01 SparksMedium
ParticleSysBone = SparkM02 SparksMedium
End
ConditionState = CONTINUOUS_FIRE_SLOW REALLYDAMAGED
Model = NVOvrlrd_GD
Animation = NVOvrlrd_G.NVOvrlrd_G
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.1 0.1 ;set this state to animate s l o w l y
End
ConditionState = CONTINUOUS_FIRE_MEAN REALLYDAMAGED
Model = NVOvrlrd_GD
Animation = NVOvrlrd_G.NVOvrlrd_G
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.2 0.2 ;set this state to animate medium-fast
End
ConditionState = CONTINUOUS_FIRE_FAST REALLYDAMAGED
Model = NVOvrlrd_GD
Animation = NVOvrlrd_G.NVOvrlrd_G
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.3 0.3 ;set this state to animate vryfst
ParticleSysBone = Muzzle01 GattlingMuzzleSmoke
ParticleSysBone = Muzzle02 GattlingMuzzleSmoke
End
End
Draw = W3DDependencyModelDraw ModuleTag_01x
OkToChangeModelColor = Yes
AttachToBoneInContainer = FIREPOINT01
ConditionState = NONE
Model = NVOvrlrd_B
End
ConditionState = REALLYDAMAGED
Model = NVOvrlrd_BD
ParticleSysBone = Smoke01 SmolderingSmoke
ParticleSysBone = Smoke02 SmolderingSmoke
ParticleSysBone = Flame01 SmolderingFire
ParticleSysBone = Flame01 SmolderingFlameCore
ParticleSysBone = Spark01 LiveWireSparks
End
; night
ConditionState = NIGHT
Model = NVOvrlrd_B
End
ConditionState = NIGHT REALLYDAMAGED
Model = NVOvrlrd_BD
ParticleSysBone = Smoke01 SmolderingSmoke
ParticleSysBone = Smoke02 SmolderingSmoke
ParticleSysBone = Flame01 SmolderingFire
ParticleSysBone = Flame01 SmolderingFlameCore
ParticleSysBone = Spark01 LiveWireSparks
End
End
; ***DESIGN parameters ***
Side = ChinaTankGeneral
EditorSorting = SYSTEM
TransportSlotCount = 1
WeaponSet
Conditions = None
Weapon = PRIMARY GattlingBuildingGun
Weapon = SECONDARY GattlingBuildingGunAir
PreferredAgainst = SECONDARY BALLISTIC_MISSILE AIRCRAFT
Weapon = TERTIARY DragonTankFlameWeaponUpgraded
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 = VeterancyGainCreate ModuleTag_07
StartingLevel = VETERAN
End
Behavior = AIUpdateInterface ModuleTag_03
Turret
ControlledWeaponSlots = PRIMARY SECONDARY TERTIARY
TurretTurnRate = 60 // turn rate, in degrees per sec
TurretPitchRate = 60
AllowsPitch = Yes
End
AutoAcquireEnemiesWhenIdle = Yes
End
Behavior = TransportContain ModuleTag_08
Slots = 5
PassengersAllowedToFire = Yes
AllowInsideKindOf = INFANTRY
InitialPayload = Tank_ChinaInfantryTankHunter 5
EnterSound = GarrisonEnter
ExitSound = GarrisonExit
DamagePercentToUnits = 50%
End
Behavior = DestroyDie ModuleTag_04
;nothing
End
Behavior = WeaponBonusUpgrade ModuleTag_05
TriggeredBy = Upgrade_ChinaChainGuns
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[/quote]
Posted by: Annihilationzh - Wednesday, January 13, 2021 1:11:07 PM
My guess would be that it's struggling to pitch the turret for the flamethrower and it's just getting stuck. Flamethrowers (and toxin streams) are very finnicky.
Posted by: beng - Monday, November 8, 2021 12:17:20 AM
Yes you can use OCL to populate the bunker with a mix of different infantry types. However note that the infantry will not have horde bonus since they are not in a group on the ground. You have to exit them, let the horde bonus appear, then garrison them again in the bunker.
Also only the first draw module in the bunker gattling will attach to the correct bone in the tank model. Best for this to be the gattling model. The bunker will just appear at the same place rather than at the back of the turret.
I will try to attach an example map.ini mod with a test mission map here. [ATTACH]2332[/Attach]