Skip to content

Instantly share code, notes, and snippets.

@Justasic
Last active July 8, 2019 00:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Justasic/0b81fdc3c146a3b0e05cc08024ad53a7 to your computer and use it in GitHub Desktop.
Save Justasic/0b81fdc3c146a3b0e05cc08024ad53a7 to your computer and use it in GitHub Desktop.
This patches Command & Conquer: Generals Zero Hour's inizh.big file to create a GLA super worker which can build all the command centers of all factions (basically a huge cheat)
diff -r -u /tmp/Data/INI/CommandButton.ini /DataStorage/Games/Data/INI/CommandButton.ini
--- /tmp/Data/INI/CommandButton.ini 2019-07-05 21:57:33.363905699 -0700
+++ /DataStorage/Games/Data/INI/CommandButton.ini 2019-07-05 21:54:43.440602319 -0700
@@ -2632,6 +2632,15 @@
DescriptLabel = CONTROLBAR:ToolTipGLABuildWorker
End
+CommandButton Command_ConstructGLASpecialWorker
+ Command = UNIT_BUILD
+ Object = GLASpecialInfantryWorker
+ TextLabel = CONTROLBAR:ConstructGLAWorker
+ ButtonImage = SUWorker
+ ButtonBorderType = BUILD ; Identifier for the User as to what kind of button this is
+ DescriptLabel = CONTROLBAR:ToolTipGLABuildWorker
+End
+
CommandButton Command_ConstructChinaDozer
Command = UNIT_BUILD
Object = ChinaVehicleDozer
diff -r -u /tmp/Data/INI/CommandSet.ini /DataStorage/Games/Data/INI/CommandSet.ini
--- /tmp/Data/INI/CommandSet.ini 2019-07-05 21:57:33.370572836 -0700
+++ /DataStorage/Games/Data/INI/CommandSet.ini 2019-07-05 22:06:09.330137829 -0700
@@ -29,6 +29,23 @@
14 = Command_Stop
End
+CommandSet GLASpecialWorkerCommandSet
+ 1 = Command_ConstructAmericaCommandCenter
+ 2 = Command_ConstructGLACommandCenter
+ 3 = Command_ConstructChinaCommandCenter
+ 4 = GC_Chem_Command_ConstructGLACommandCenter
+ 5 = GC_Slth_Command_ConstructGLACommandCenter
+ 6 = AirF_Command_ConstructAmericaCommandCenter
+ 7 = Demo_Command_ConstructGLACommandCenter
+ 8 = Nuke_Command_ConstructChinaCommandCenter
+ 9 = SupW_Command_ConstructAmericaCommandCenter
+ 10 = Infa_Command_ConstructChinaCommandCenter
+ 11 = Lazr_Command_ConstructAmericaCommandCenter
+ 12 = Tank_Command_ConstructChinaCommandCenter
+ 13 = Boss_Command_ConstructChinaCommandCenter
+ 14 = Command_DisarmMinesAtPosition
+End
+
; Dozer Command Sets ----------------------------------------------------------
CommandSet AmericaDozerCommandSet
1 = Command_ConstructAmericaPowerPlant
@@ -778,6 +795,7 @@
6 = Command_ConstructAmericaInfantryBiohazardTech
7 = Command_UpgradeAmericaRangerFlashBangGrenade
8 = Command_UpgradeAmericaRangerCaptureBuilding
+ 9 = Command_ConstructGLASpecialWorker
13 = Command_SetRallyPoint
14 = Command_Sell
End
@@ -986,6 +1004,7 @@
2 = Command_ConstructChinaInfantryTankHunter
3 = Command_ConstructChinaInfantryHacker
4 = Command_ConstructChinaInfantryBlackLotus
+ 5 = Command_ConstructGLASpecialWorker
7 = Command_UpgradeChinaRedguardCaptureBuilding
12 = Command_UpgradeChinaMines
13 = Command_SetRallyPoint
@@ -997,6 +1016,7 @@
2 = Command_ConstructChinaInfantryTankHunter
3 = Command_ConstructChinaInfantryHacker
4 = Command_ConstructChinaInfantryBlackLotus
+ 5 = Command_ConstructGLASpecialWorker
7 = Command_UpgradeChinaRedguardCaptureBuilding
12 = Command_UpgradeEMPMines
13 = Command_SetRallyPoint
@@ -1103,6 +1123,7 @@
CommandSet GLACommandCenterCommandSet
1 = Command_ConstructGLAWorker
+ 2 = Command_ConstructGLASpecialWorker
4 = Command_GPSScrambler
5 = Command_Ambush
6 = Command_EmergencyRepair
@@ -1138,6 +1159,7 @@
6 = Command_ConstructGLAInfantryJarmenKell
7 = Command_ConstructGLAInfantrySaboteur
8 = Command_UpgradeGLAInfantryRebelBoobyTrapAttack
+ 9 = Command_ConstructGLASpecialWorker
; camo net
11 = Command_UpgradeGLARebelCaptureBuilding
13 = Command_SetRallyPoint
@@ -1191,6 +1213,7 @@
CommandSet GLASupplyStashCommandSet
1 = Command_ConstructGLAWorker
+ 2 = Command_ConstructGLASpecialWorker
13 = Command_SetRallyPoint
14 = Command_Sell
End
@@ -1465,6 +1488,7 @@
1 = GC_Chem_Command_ConstructGLAInfantryRebel
2 = GC_Chem_Command_ConstructGLAInfantryRPGTrooper
3 = GC_Chem_Command_ConstructGLAInfantryTerrorist
+ 4 = Command_ConstructGLASpecialWorker
;4 = Command_ConstructGLAInfantryAngryMob
5 = GC_Chem_Command_ConstructGLAInfantryHijacker
6 = GC_Chem_Command_ConstructGLAInfantryJarmenKell
@@ -1603,6 +1627,7 @@
3 = GC_Slth_Command_ConstructGLAInfantryTerrorist
4 = GC_Slth_Command_ConstructGLAInfantryHijacker
5 = GC_Slth_Command_ConstructGLAInfantryJarmenKell
+ 6 = Command_ConstructGLASpecialWorker
7 = Command_UpgradeGLARebelCaptureBuilding
13 = Command_SetRallyPoint
14 = Command_Sell
@@ -1808,6 +1833,7 @@
2 = AirF_Command_ConstructAmericaInfantryMissileDefender
3 = AirF_Command_ConstructAmericaInfantryColonelBurton
4 = AirF_Command_ConstructAmericaInfantryPathfinder
+ 5 = Command_ConstructGLASpecialWorker
7 = Command_UpgradeAmericaRangerFlashBangGrenade
8 = Command_UpgradeAmericaRangerCaptureBuilding
13 = Command_SetRallyPoint
@@ -2011,6 +2037,7 @@
3 = Demo_Command_ConstructGLAInfantryTerrorist
4 = Demo_Command_ConstructGLAInfantryAngryMob
6 = Demo_Command_ConstructGLAInfantryJarmenKell
+ 7 = Command_ConstructGLASpecialWorker
; 8 = Command_UpgradeGLAInfantryRebelBoobyTrapAttack
11 = Command_UpgradeGLARebelCaptureBuilding
13 = Command_SetRallyPoint
@@ -2307,6 +2334,7 @@
3 = Demo_Command_ConstructGLAInfantryTerrorist
4 = Demo_Command_ConstructGLAInfantryAngryMob
6 = Demo_Command_ConstructGLAInfantryJarmenKell
+ 7 = Command_ConstructGLASpecialWorker
; 8 = Command_UpgradeGLAInfantryRebelBoobyTrapAttack
11 = Command_UpgradeGLARebelCaptureBuilding
12 = Command_DetonateFakeBuilding
@@ -2581,6 +2609,7 @@
5 = Slth_Command_ConstructGLAInfantryHijacker
6 = Slth_Command_ConstructGLAInfantryJarmenKell
7 = Slth_Command_ConstructGLAInfantrySaboteur
+ 8 = Command_ConstructGLASpecialWorker
11 = Command_UpgradeGLARebelCaptureBuilding
12 = Command_UpgradeGLACamoNetting
13 = Command_SetRallyPoint
@@ -2828,6 +2857,7 @@
3 = Chem_Command_ConstructGLAInfantryTerrorist
4 = Chem_Command_ConstructGLAInfantryAngryMob
6 = Chem_Command_ConstructGLAInfantryJarmenKell
+ 7 = Command_ConstructGLASpecialWorker
11 = Command_UpgradeGLARebelCaptureBuilding
13 = Command_SetRallyPoint
14 = Command_Sell
@@ -3064,6 +3094,7 @@
2 = Nuke_Command_ConstructChinaInfantryTankHunter
3 = Nuke_Command_ConstructChinaInfantryHacker
4 = Nuke_Command_ConstructChinaInfantryBlackLotus
+ 5 = Command_ConstructGLASpecialWorker
7 = Command_UpgradeChinaRedguardCaptureBuilding
12 = Command_UpgradeChinaMines
13 = Command_SetRallyPoint
@@ -3075,6 +3106,7 @@
2 = Nuke_Command_ConstructChinaInfantryTankHunter
3 = Nuke_Command_ConstructChinaInfantryHacker
4 = Nuke_Command_ConstructChinaInfantryBlackLotus
+ 5 = Command_ConstructGLASpecialWorker
7 = Command_UpgradeChinaRedguardCaptureBuilding
12 = Command_UpgradeEMPMines
13 = Command_SetRallyPoint
@@ -3403,6 +3435,7 @@
2 = SupW_Command_ConstructAmericaInfantryMissileDefender
3 = SupW_Command_ConstructAmericaInfantryColonelBurton
4 = SupW_Command_ConstructAmericaInfantryPathfinder
+ 5 = Command_ConstructGLASpecialWorker
7 = Command_UpgradeAmericaRangerFlashBangGrenade
8 = Command_UpgradeAmericaRangerCaptureBuilding
13 = Command_SetRallyPoint
@@ -3799,6 +3832,7 @@
2 = Infa_Command_ConstructChinaInfantryTankHunter
3 = Infa_Command_ConstructChinaInfantryHacker
4 = Infa_Command_ConstructChinaInfantryBlackLotus
+ 5 = Command_ConstructGLASpecialWorker
7 = Infa_Command_UpgradeChinaRedguardCaptureBuilding
12 = Command_UpgradeChinaMines
13 = Command_SetRallyPoint
@@ -3810,6 +3844,7 @@
2 = Infa_Command_ConstructChinaInfantryTankHunter
3 = Infa_Command_ConstructChinaInfantryHacker
4 = Infa_Command_ConstructChinaInfantryBlackLotus
+ 5 = Command_ConstructGLASpecialWorker
7 = Command_UpgradeChinaRedguardCaptureBuilding
12 = Command_UpgradeEMPMines
13 = Command_SetRallyPoint
@@ -4245,6 +4280,7 @@
2 = Lazr_Command_ConstructAmericaInfantryMissileDefender
3 = Lazr_Command_ConstructAmericaInfantryColonelBurton
4 = Lazr_Command_ConstructAmericaInfantryPathfinder
+ 5 = Command_ConstructGLASpecialWorker
7 = Command_UpgradeAmericaRangerFlashBangGrenade
8 = Command_UpgradeAmericaRangerCaptureBuilding
13 = Command_SetRallyPoint
@@ -4660,6 +4696,7 @@
2 = Tank_Command_ConstructChinaInfantryTankHunter
3 = Tank_Command_ConstructChinaInfantryHacker
4 = Tank_Command_ConstructChinaInfantryBlackLotus
+ 5 = Command_ConstructGLASpecialWorker
7 = Command_UpgradeChinaRedguardCaptureBuilding
12 = Command_UpgradeChinaMines
13 = Command_SetRallyPoint
@@ -4671,6 +4708,7 @@
2 = Tank_Command_ConstructChinaInfantryTankHunter
3 = Tank_Command_ConstructChinaInfantryHacker
4 = Tank_Command_ConstructChinaInfantryBlackLotus
+ 5 = Command_ConstructGLASpecialWorker
7 = Command_UpgradeChinaRedguardCaptureBuilding
12 = Command_UpgradeEMPMines
13 = Command_SetRallyPoint
@@ -4864,6 +4902,7 @@
CommandSet Boss_ChinaCommandCenterCommandSet
1 = Boss_Command_ConstructChinaDozer
+ 2 = Command_ConstructGLASpecialWorker
5 = Command_ArtilleryBarrage
6 = Command_EMPPulse
7 = Command_ClusterMines
@@ -4878,6 +4917,7 @@
CommandSet Boss_ChinaCommandCenterCommandSetUpgrade
1 = Boss_Command_ConstructChinaDozer
+ 2 = Command_ConstructGLASpecialWorker
5 = Command_ArtilleryBarrage
6 = Command_EMPPulse
7 = Command_ClusterMines
diff -r -u /tmp/Data/INI/Object/GLAInfantry.ini /DataStorage/Games/Data/INI/Object/GLAInfantry.ini
--- /tmp/Data/INI/Object/GLAInfantry.ini 2019-07-05 21:57:33.480580571 -0700
+++ /DataStorage/Games/Data/INI/Object/GLAInfantry.ini 2019-07-05 21:53:10.960638139 -0700
@@ -3875,6 +3875,394 @@
End
;------------------------------------------------------------------------------
+Object GLASpecialInfantryWorker
+
+ ; *** ART Parameters ***
+ SelectPortrait = SUWorker_L
+ ButtonImage = SUWorker
+
+ UpgradeCameo1 = Upgrade_GLAWorkerShoes
+ ;UpgradeCameo2 = NONE
+ ;UpgradeCameo3 = NONE
+ ;UpgradeCameo4 = NONE
+ ;UpgradeCameo5 = NONE
+
+ Draw = W3DModelDraw ModuleTag_01
+ OkToChangeModelColor = Yes
+
+ DefaultConditionState
+ Model = UIWRKR_SKN
+ IdleAnimation = UIWRKR_SKL.UIWRKR_STA 0 9
+ IdleAnimation = UIWRKR_SKL.UIWRKR_IDA
+ AnimationMode = ONCE
+ TransitionKey = TRANS_Stand
+ End
+
+ ConditionState = MOVING
+ Animation = UIWRKR_SKL.UIWRKR_RNA 16
+ AnimationMode = LOOP
+ Flags = RANDOMSTART
+ TransitionKey = TRANS_Moving
+ ParticleSysBone = None InfantryDustTrails
+ End
+ ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time,
+ ; since we flip the bit once we get pretty close to the target. but it looks
+ ; funky to do the construction animation while moving.
+ ; so just use the normal move animation in that case.
+ AliasConditionState = ACTIVELY_CONSTRUCTING MOVING
+
+ ConditionState = ATTACKING
+ ShowSubObject = MINED_SKIN
+ Animation = UIWRKR_SKL.UIWRKR_MS
+ AnimationMode = LOOP
+ Flags = RANDOMSTART
+ TransitionKey = TRANS_MetalDetector_Standing
+ End
+
+ ConditionState = MOVING ATTACKING
+ ShowSubObject = MINED_SKIN
+ Animation = UIWRKR_SKL.UIWRKR_MSW 50
+ AnimationMode = LOOP
+ Flags = RANDOMSTART
+ TransitionKey = TRANS_MetalDetector_Moving
+ ParticleSysBone = None InfantryDustTrails
+ End
+ AliasConditionState = MOVING ATTACKING CARRYING
+
+ TransitionState = TRANS_Stand TRANS_MetalDetector_Standing ;STANDING -> ATTACKING
+ ShowSubObject = MINED_SKIN
+ Animation = UIWRKR_SKL.UIWRKR_TRB1;take out standing
+ AnimationMode = ONCE
+ End
+ TransitionState = TRANS_MetalDetector_Standing TRANS_Stand ;ATTACKING -> STANDING
+ ShowSubObject = MINED_SKIN
+ Animation = UIWRKR_SKL.UIWRKR_TRB2;put away standing
+ AnimationMode = ONCE
+ End
+
+ TransitionState = TRANS_Carry TRANS_MetalDetector_Standing ;CARRYING -> ATTACKING
+ ShowSubObject = MINED_SKIN
+ Animation = UIWRKR_SKL.UIWRKR_TRB1;take out standing
+ AnimationMode = ONCE
+ End
+ TransitionState = TRANS_MetalDetector_Standing TRANS_Carry ;ATTACKING -> CARRYING
+ ShowSubObject = MINED_SKIN
+ Animation = UIWRKR_SKL.UIWRKR_TRB2;put away standing
+ AnimationMode = ONCE
+ End
+ TransitionState = TRANS_Carry TRANS_MetalDetector_Moving ;CARRYING -> MOVING ATTACKING
+ ShowSubObject = MINED_SKIN
+ Animation = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION]
+ AnimationMode = ONCE
+ AnimationSpeedFactorRange = 2.0 2.0
+ End
+
+ TransitionState = TRANS_MetalDetector_Moving TRANS_Stand ;MOVING ATTACKING -> STANDING
+ ShowSubObject = MINED_SKIN
+ Animation = UIWRKR_SKL.UIWRKR_TRB2;put away moving
+ AnimationMode = ONCE
+ End
+ TransitionState = TRANS_Stand TRANS_MetalDetector_Moving ;STANDING -> MOVING ATTACKING
+ ShowSubObject = MINED_SKIN
+ Animation = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION]
+ AnimationMode = ONCE
+ AnimationSpeedFactorRange = 2.0 2.0
+ End
+
+ TransitionState = TRANS_Moving TRANS_MetalDetector_Standing ;MOVING -> ATTACKING [STANDING]
+ ShowSubObject = MINED_SKIN
+ Animation = UIWRKR_SKL.UIWRKR_TRB1;take out standing
+ AnimationMode = ONCE
+ End
+ TransitionState = TRANS_MetalDetector_Standing TRANS_Moving ;ATTACKING [STANDING] -> MOVING
+ ShowSubObject = MINED_SKIN
+ Animation = UIWRKR_SKL.UIWRKR_TRC2;put away moving [NEW NON-SKATING ANIMATION]
+ AnimationMode = ONCE
+ AnimationSpeedFactorRange = 2.0 2.0
+ End
+
+ TransitionState = TRANS_Moving TRANS_MetalDetector_Moving ;MOVING -> MOVING ATTACKING
+ ShowSubObject = MINED_SKIN
+ Animation = UIWRKR_SKL.UIWRKR_TRC1;take out moving [NEW NON-SKATING ANIMATION]
+ AnimationMode = ONCE
+ AnimationSpeedFactorRange = 2.0 2.0
+ End
+ TransitionState = TRANS_MetalDetector_Moving TRANS_Moving ;MOVING ATTACKING -> MOVING
+ ShowSubObject = MINED_SKIN
+ Animation = UIWRKR_SKL.UIWRKR_TRC2;put away moving [NEW NON-SKATING ANIMATION]
+ AnimationMode = ONCE
+ AnimationSpeedFactorRange = 2.0 2.0
+ End
+
+
+ ConditionState = MOVING CARRYING
+ ShowSubObject = BOX
+ Animation = UIWRKR_SKL.UIWRKR_CARY 12
+ AnimationMode = LOOP
+ Flags = RANDOMSTART
+ TransitionKey = TRANS_Carry
+ ParticleSysBone = None InfantryDustTrails
+ End
+ ; it is legal to be ACTIVELY_CONSTRUCTING and MOVING at the same time,
+ ; since we flip the bit once we get pretty close to the target. but it looks
+ ; funky to do the construction animation while moving.
+ ; so just use the normal move animation in that case.
+ AliasConditionState = ACTIVELY_CONSTRUCTING MOVING CARRYING
+
+ ConditionState = CARRYING
+ ShowSubObject = BOX
+ Animation = UIWRKR_SKL.UIWRKR_CARST 30
+ AnimationMode = LOOP
+ Flags = RANDOMSTART
+ TransitionKey = TRANS_Carry
+ End
+
+ ConditionState = DYING
+ Animation = UIWRKR_SKL.UIWRKR_DTA
+ AnimationMode = ONCE
+ TransitionKey = TRANS_Dying
+ End
+ AliasConditionState = DYING CARRYING
+
+ TransitionState = TRANS_Dying TRANS_Flailing
+ Animation = UIWRKR_SKL.UIWRKR_ADTE1
+ AnimationMode = ONCE
+ End
+
+ ConditionState = DYING EXPLODED_FLAILING
+ Animation = UIWRKR_SKL.UIWRKR_ADTE2
+ AnimationMode = LOOP
+ TransitionKey = TRANS_Flailing
+ End
+
+ ConditionState = DYING EXPLODED_BOUNCING
+ Animation = UIWRKR_SKL.UIWRKR_ADTE3
+ AnimationMode = ONCE
+ TransitionKey = None
+ End
+
+ ConditionState = SPECIAL_CHEERING
+ Animation = UIWRKR_SKL.UIWRKR_CHA
+ AnimationMode = ONCE
+ End
+
+ ConditionState = ACTIVELY_CONSTRUCTING
+ Animation = UIWRKR_SKL.UIWRKR_BDA
+ AnimationMode = LOOP
+ TransitionKey = TRANS_Constructing
+ End
+ AliasConditionState = ACTIVELY_CONSTRUCTING CARRYING
+
+ ; --------------------
+
+ TransitionState = TRANS_Stand TRANS_Carry
+ ShowSubObject = BOX
+ Animation = UIWRKR_SKL.UIWRKR_PIK
+ AnimationMode = ONCE
+ End
+
+ TransitionState = TRANS_Carry TRANS_Stand
+ ShowSubObject = BOX
+ Animation = UIWRKR_SKL.UIWRKR_PIK
+ AnimationMode = ONCE_BACKWARDS
+ Flags = START_FRAME_LAST
+ End
+
+ TransitionState = TRANS_Stand TRANS_Constructing
+ Animation = UIWRKR_SKL.UIWRKR_TRA1
+ AnimationMode = ONCE
+ End
+
+ TransitionState = TRANS_Constructing TRANS_Stand
+ Animation = UIWRKR_SKL.UIWRKR_TRA2
+ AnimationMode = ONCE
+ End
+ End
+
+ ; ***DESIGN parameters ***
+ DisplayName = OBJECT:Worker
+ Side = GLA
+ EditorSorting = INFANTRY
+ TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable)
+
+
+ WeaponSet
+ Conditions = None
+ Weapon = PRIMARY None
+ End
+ WeaponSet
+ Conditions = MINE_CLEARING_DETAIL
+ Weapon = PRIMARY WorkerMineDisarmingWeapon
+ End
+
+
+ ArmorSet
+ Conditions = None
+ Armor = HumanArmor
+ DamageFX = InfantryDamageFX
+ End
+ VisionRange = 100
+ ShroudClearingRange = 200
+ ;Prerequisites
+ ; Object = GLABarracks GLASupplyStash ;commented out, or else you can't build from Con Yard as Dozer.
+ ;End
+ BuildCost = 200
+ BuildTime = 3.0 ;in seconds
+ CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
+ CommandSet = GLASpecialWorkerCommandSet
+
+ ; *** AUDIO Parameters ***
+ VoiceSelect = WorkerVoiceSelect
+ VoiceMove = WorkerVoiceMove
+ VoiceAttack = WorkerVoiceMove
+ VoiceGuard = WorkerVoiceMove
+ VoiceFear = WorkerVoiceFear
+ VoiceTaskComplete = WorkerVoiceBuildComplete
+ UnitSpecificSounds
+ VoiceEnter = WorkerVoiceMoveUpgraded
+ VoiceEnterHostile = WorkerVoiceMoveUpgraded
+ VoiceGarrison = WorkerVoiceGarrison
+ VoiceCreate = WorkerVoiceCreate
+ VoiceSupply = WorkerVoiceSupply
+ VoiceNoBuild = WorkerVoiceBuildNot
+ VoiceRepair = WorkerVoiceRepair
+ VoiceDisarm = WorkerVoiceClearMine
+ VoiceBuildResponse = WorkerVoiceBuild
+ VoiceGetHealed = WorkerVoiceMoveUpgraded
+ VoiceMoveUpgraded = WorkerVoiceMoveUpgraded
+ End
+
+ ; *** ENGINEERING Parameters ***
+ RadarPriority = UNIT
+ KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY SALVAGER DOZER HARVESTER SCORE
+
+ Body = ActiveBody ModuleTag_02
+ MaxHealth = 100.0
+ InitialHealth = 100.0
+ End
+
+ Behavior = WorkerAIUpdate ModuleTag_03
+ RepairHealthPercentPerSecond = 2% ; % of max health to repair each second
+ BoredTime = 5000 ; in milliseconds
+ BoredRange = 150 ; when bored, we look this far away to do something
+ MaxBoxes = 1
+ UpgradedSupplyBoost = 8 ; gives this much more cash for every box collected
+ SupplyCenterActionDelay = 150 ;400 ; ms for whole thing (one transaction)
+ SupplyWarehouseActionDelay = 150 ;400 ;ms per box (many small transactions)
+ SupplyWarehouseScanDistance = 700 ;350 ; Max distance to look for a warehouse, or we go home. (Direct dock command on warehouse overrides, and no max on Center Scan)
+ SuppliesDepletedVoice = WorkerVoiceSuppliesDepleted
+ ; the only "enemies" that workers can acquire are mines, to be disarmed...
+ AutoAcquireEnemiesWhenIdle = Yes
+ End
+ Locomotor = SET_NORMAL FastHumanLocomotor
+ Locomotor = SET_NORMAL_UPGRADED WorkerShoesLocomotor
+ Behavior = PhysicsBehavior ModuleTag_04
+ Mass = 5.0
+ End
+
+ Behavior = SquishCollide ModuleTag_06
+ ;nothing
+ End
+ Behavior = LocomotorSetUpgrade ModuleTag_07
+ TriggeredBy = Upgrade_GLAWorkerShoes
+ End
+
+; --- begin Death modules ---
+ Behavior = SlowDeathBehavior ModuleTag_Death01
+ DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
+ SinkDelay = 3000
+ SinkRate = 0.5 ; in Dist/Sec
+ DestructionDelay = 8000
+ FX = INITIAL FX_WorkerDie
+ End
+ Behavior = SlowDeathBehavior ModuleTag_Death02
+ DeathTypes = NONE +CRUSHED +SPLATTED
+ SinkDelay = 3000
+ SinkRate = 0.5 ; in Dist/Sec
+ DestructionDelay = 8000
+ FX = INITIAL FX_GIDieCrushed
+ End
+ Behavior = SlowDeathBehavior ModuleTag_Death03
+ DeathTypes = NONE +EXPLODED
+ SinkDelay = 3000
+ SinkRate = 0.5 ; in Dist/Sec
+ DestructionDelay = 8000
+ FX = INITIAL FX_WorkerDie
+ FlingForce = 8
+ FlingForceVariance = 3
+ FlingPitch = 60
+ FlingPitchVariance = 10
+ End
+ Behavior = SlowDeathBehavior ModuleTag_Death04
+ DeathTypes = NONE +BURNED
+ DestructionDelay = 0
+ FX = INITIAL FX_DieByFireGLA
+ OCL = INITIAL OCL_FlamingInfantry
+ End
+ Behavior = SlowDeathBehavior ModuleTag_Death05
+ DeathTypes = NONE +POISONED
+ DestructionDelay = 0
+ FX = INITIAL FX_DieByToxinGLA
+ OCL = INITIAL OCL_ToxicInfantry
+ End
+ Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
+ DeathTypes = NONE +POISONED_BETA
+ DestructionDelay = 0
+ FX = INITIAL FX_DieByToxinGLA
+ OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
+ End
+ Behavior = SlowDeathBehavior ModuleTag_Death07
+ DeathTypes = NONE +POISONED_GAMMA
+ DestructionDelay = 0
+ FX = INITIAL FX_DieByToxinGLA
+ OCL = INITIAL OCL_ToxicInfantryGamma
+ End
+
+; --- end Death modules ---
+
+ Behavior = StealthDetectorUpdate ModuleTag_12
+ DetectionRate = 500 ; how often to rescan for stealthed things in my sight (msec)
+ ;DetectionRange = ??? ;Dustin, enable this for independant balancing!
+ CanDetectWhileGarrisoned = No ;Garrisoned means being in a structure that you units can shoot out of.
+ CanDetectWhileContained = No ;Contained means being in a transport or tunnel network.
+ ExtraRequiredKindOf = MINE ; we can only detect MINES, not other stealthed things
+ End
+
+ Behavior = PoisonedBehavior ModuleTag_13
+ PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me...
+ PoisonDuration = 3000 ; ... for this long after last hit by poison damage
+ End
+
+ Behavior = CommandSetUpgrade ModuleTag_14
+ TriggeredBy = Upgrade_GLAWorkerFakeCommandSet
+ RemovesUpgrades = Upgrade_GLAWorkerRealCommandSet
+ CommandSet = GLAWorkerFakeBuildingsCommandSet
+ End
+
+ Behavior = CommandSetUpgrade ModuleTag_15
+ TriggeredBy = Upgrade_GLAWorkerRealCommandSet
+ RemovesUpgrades = Upgrade_GLAWorkerFakeCommandSet Upgrade_GLAWorkerRealCommandSet
+ CommandSet = GLAWorkerCommandSet
+ End
+
+ Behavior = ProductionUpdate ModuleTag_16
+ MaxQueueEntries = 1; For the command set switching upgrade
+ End
+
+ Geometry = CYLINDER
+ GeometryMajorRadius = 10.0
+ GeometryMinorRadius = 10.0
+ GeometryHeight = 12.0
+ GeometryIsSmall = Yes
+ Shadow = SHADOW_DECAL
+ ShadowSizeX = 14;
+ ShadowSizeY = 14;
+ ShadowTexture = ShadowI;
+ BuildCompletion = APPEARS_AT_RALLY_POINT
+
+End
+
+;------------------------------------------------------------------------------
Object GLAInfantrySaboteur
; *** ART Parameters ***
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment