Jump to content


Limitations for modding [Questions]

  • Please log in to reply
1 reply to this topic

#1 UsernameUsername

  • Members
  • 20 posts

Posted 27 May 2016 - 06:45 PM

To not make too many stupid suggestions of things impossible to do I'd like to know what the limitations of modding are:

General info about tools:

FinalBig to open .big files, containing the files with the unit data and all other stuff.

GenTool for playing the game with larger displays (open menu using Insert-button, navigate and change settings with arrow key buttons, has some imo shitty features when exiting the game, trying to patch itself and to install some maps without asking the user)


1) How many weapons can a single units have ?

Edit: Found PRIMARY, SECONDARY, TERTIARY as weapon slot declarations and not any more than that on any unit so I assume the weapon cap per unit is 3 weapons. Still a unit can have additional special abilities, like the Toxin Tractor's toxic puddle, also turrets and bunkers.


2) How many special abilities can a unit have and are there single unit upgrade caps ?

Edit: The only thing that limits the amount of special abilities a unit can have is the remaining space for buttons to use these special abilities. Some buttons are required to actually be able to control a unit, like "Attack", "Stop", "Guard".  Upgrade caps do exist in the form of only once per upgrade type while some upgrades may be edited afterwards if certain conditions are met, like the SpecialAbilityUpdate ModuleTag that allows to set new values for a special ability.


3) Is there a limit of upgrades a building can have for research ?

Edit: The only thing that limits the amount of researchable upgrades a building can have is the remaining space for buttons for these. Whether it's possible to create new upgrades from scratch or modders are stuck with the amount of upgrades the original game had and may only edit these is something I don't know.


4) Is there a limit of total upgrades or units in the game ?

Edit: I'm quite sure that there's no unit limit, looking back at the Tank General challenge as Stealth General. Also no limit of how many units can be be modded into the game. There's just limited button space for build-this-unit buttons. Whether or not the amount of upgrades is limited in the game I don't know (yet). Unit can have a build cap, though, like Jarmen Kell / Col. Burton / Black Lotus.


5) What ways are there of creating units other than by building them by a costruction unit or within a building ?

Edit: Projectile death (Airforce General's A10 Thunderbolt ability), unit death can (GLA building holes), using special abilities (Jarmen Kell Rebel Ambush), General Powers (Parachute units) can create things.


6) Can a unit gain new weapons each experience rank or only at certain experience ranks ?

Answer: At each experience rank. Two ways to grant a unit new weapons (WeaponSets).

#1 being: just using the unit's experience rank as WeaponSet condition, like...


    Conditions = Veteran
    Weapon = PRIMARY ThisUnitsVeteranWeapon_ExperienceRank_one_of_three

    Conditions = Elite
    Weapon = PRIMARY ThisUnitsEliteWeapon_ExperienceRank_two_of_three

    Conditions = Hero
    Weapon = PRIMARY ThisUnitsHeroicWeapon_ExperienceRank_three_of_three


Note: WeaponSet conditions can have multiple conditions, like...

Conditions = Hero PLAYER_UPGRADE

Initially I falsely assumed that these conditions were treated as AND conditions, meaning every single must be true to activate the WeaponSet. Testing revealed that they're treated as OR conditions.

It works like this (tested): The more matches within the Conditions the more likely it is that that WeaponSet is selected. It also means if there's a single condition true while all others are not and yet there's no other WeaponSet that has this condition then the sole WeaponSet offering that condition is chosen despite all other Conditions not being met. So take care of that by making sure all of the unit's intended weapon upgrade stages have their proper conditions.


The one thing ModuleTags can't check for (at least it seems so) are salvage crate turret upgrades.

These WeaponSet conditions are named as:

CRATEUPGRADE_ONE - one time upgraded turret by a salvage crate

CRATEUPGRADE_TWO - two times upgraded turret by a salvage crate


Use ModuleTags to more precisely check for conditions:


    Conditions = PLAYER_UPGRADE
    Weapon = PRIMARY ThisUnitsHeroicWeapon_ExperienceRank_three_of_three


 Behavior = WeaponSetUpgrade ModuleTag_12345        ;once all requirements are met the PLAYER_UPGRADE condition is enabled, enabling the WeaponSet that required it.
    TriggeredBy = Upgrade_Veterancy_HEROIC       ;sets a condition that requires the unit to reach experience rank 3 of 3

    TriggeredBy = Upgrade_ResearchableUpgradeName       ;sets a condition that requires an upgrade which needs to be researched

    ScienceRequired = SCIENCE_GeneralPointsScienceStuffHere       ;sets a condition that requires at least one general point into this general power



Note: TriggeredBy can be used in a manner to have OR but also AND checking conditions.


TriggeredBy = Upgrade_Veterancy_Heroic Upgrade_ResearchableUpgrade

-> This will check if either the unit reached experience rank 3 of 3 OR a certain researchable upgrade that you can define has been researched.



TriggeredBy = Upgrade_Veterancy_Heroic

TriggeredBy = Upgrade_ResearchableUpgrade

-> This will check if the unit has reached experience rank 3 of 3 AND certain researchable upgrade that you can define has been researched.


If you just want to improve a weapon's %-damage output it's also possible to use a ModuleTag entry within the unit's data and a Weapon.ini entry.

Example of the Quad Cannon's AP-Bullets upgrade:


  Behavior = WeaponBonusUpgrade ModuleTag_12
    TriggeredBy = Upgrade_APBullets


Inside the Weapon.ini for the weapon(s) the Quad Cannon uses:

Weapon QuadCannonGun
  PrimaryDamage = 16.0
  PrimaryDamageRadius = 3.0
  AttackRange = 150.0
  DamageType = GATTLING
  DeathType = NORMAL
  WeaponSpeed = 900
  WeaponRecoil = 1
  MinimumAttackRange = 30
  ProjectileObject = GenericBulletGGMediumWhite
  ProjectileDetonationFX = FX_BulletHitWhite
  FireFX = WeaponFX_QuadCannonGunFire
  FireSound = QuadCannonWeapon
  DelayBetweenShots  = 200
  AntiAirborneVehicle= No
  AntiAirborneInfantry  = No
  WeaponBonus  = PLAYER_UPGRADE DAMAGE 125% ; AP-Bullets' damage bonus triggered by the research triggering the ModuleTag triggering the WeaponBonus effect increasing damage by 25%.


ModuleTag conditions you might want to use:

1) TriggeredBy conditions:

Upgrade_Veterancy_HEROIC - unit experience rank 3 of 3

Upgrade_Veterancy_ELITE - unit experience rank 2 of 3

Upgrade_Veterancy_VETERAN - unit experience rank 1 of 3

Upgrade_UpgradeName - any upgrade that affects the unit or that is a researchable upgrade


2) Science (General points required) condition:

ScienceRequired = SCIENCE_GeneralPowerThatRequiresPointsIntoIt


Note: ModuleTags can't (it seems) check for salvage crate turret upgrades. That requires a WeaponSet's condition.




Complicated example#1: Let's say you want a Scorpion tank that will get a special weapon once it's at 3/3 experience rank, has a 2/2 turret upgrade and a specific upgrade was researched:


    Conditions = None
    Weapon = PRIMARY GenericBoringWeapon


    Weapon = PRIMARY SpecialScorpionTankWeaponWithMaxEXPAndAllUpgrades


  Behavior = WeaponSetUpgrade ModuleTag_12345
    TriggeredBy = Upgrade_ScorpionRelevantUpgradeName


Sadly the game only checks whether or not a WeaponSetUpgrade caused the PLAYER_UPGRADE condition but not how many times. So if you're trying to grant a unit more than one WeaponSet upgrade using the PLAYER_UPGRADE condition either twice or sequentially by using a second WeaponSet with PLAYER_UPGRADE condition this doesn't work. So you can only have one WeaponSet replacing weapon upgrade but it works to have additional %-bonus applied using the WeaponBonusUpgrade command.


7) Is it generally possible for experience ranks to improve a special ability of a unit as it levels up ?


Yes, by using a ModuleTag with a SpecialAbilityUpdate command, using a TriggeredBy condition representing the desired rank: Upgrade_Veterancy_HEROIC or Upgrade_Veterancy_ELITE or Upgrade_Veterancy_VETERAN, upgrading the desired special ability by setting new values for it. Haven't personally tested this yet, just read the data.


8) Is it possible to also change hotkeys for special powers instead of just to issue unit production ?

Edit: This seems to require a tool to edit .csf files. Haven't touched those yet.


9) Is it possible to support super weapon side-buttons for all super weapons no matter whether or not it's your own faction so that in case a super weapon has been captured there's no need to always go back or to hotkey it just because the side button is missing ?

10) How is stealth handled in the game ? I can't GPS improve units with inferior stealth. Neither while they're visible nor while they're invisible. So I assume a unit sticks with one type of stealth ?

Edit: Any source that applies stealth to a unit installs a module handling stealth. A unit may not have more than one module of the same type. So I can't use GPS Scrambler on Stealth General's Hazael so that this unit not only remains stealthed while attacking but also while taking damage and neither can any other unit using some kind of stealth gain another kind of stealth. But I think it'd be possible to have a special ability or any condition that uninstalls a certain module.


As I read here modules can be added, removed, replaced:


AddModule ModuleTag_XX
Behavior = YYY ModuleTag_XX_Override



ReplaceModule ModuleTag_XX_Override
Behavior = YYY ModuleTag_XX



RemoveModule ModuleTag_XX


What I'd like to get working right now is initial stealth for units just leaving the production queue. They shouldn't require time to stealth but start stealthed and they shouldn't make a stealth sound once created and entering stealth but only after stealth has been dropped because a condition for that has been met.


11) How are these area effects scripted (simplified) that destroy mines, heal or buff units and would it be possible to have either general or units specific upgrades for them ?

12) Do options such as weapon toggle options or attack / hold fire toggle limit a unit's total number of available upgrades / abilities ?

Edit: The buttons reduce the space for remaining buttons but other than that: No.


13) How are immunities applied ?

Edit: By changing a weapon's target types which are normally "ALLIES ENEMIES NEUTRALS", to "ENEMIES" only or "ENEMIES NEUTRALS", not affecting own units and allies anymore. I have only tried if adding a new armor type works but not the actual effect yet but I'm quite sure that's also an option: Adding a new armor type that's less or not at all affected by a certain weapon category.


14) Is there some kind of special weapon behaviour to certain weapons ?

Edit: Elbrus Launcher adding a super weapon side button and being a unit that carries a mini-superweapon, projectile attacking weapons (anti missile lasers), flames and anything causing contamination, any projectile death spawned units, emp, vehicle driver killing weapons, suicide weapons, traps, mines, Jammer Station area effect, anti radar missiles, lasers, area effect weapons, water, drones, target range bonus weapons (Patriot missiles), status effect weapons (Gun Buggy weapon disabling jammer beam). I'm sure there are more I can't remember or haven't encountered / found within the files yet.


15) Is there an option that each unit may only have one unit targeted with that certain weapon and all other units with the same weapon need to look for another target within range ?

16) Is it possible to change the values of stealth after an upgrade, like restealth time and get's visible condition ?


AI questions:

1) Is it possible to disable the maphacking for the AI (using superweapons and general's power stuff on locations where no one ever scouted - hitting stealthed units) ?

Edit: It doesn't look like anyone ever thought about that despite this being an issue basically since stealth was introduced in the C&C series.


2) How much does the AI resource cheat and when ?

Edit: Difficulty setting or map.ini controled per map. Otherwise not sure. The AI cheats all the time, always know what kind of units are where, always has simultaneous control of all units across the map, seems to be some building upgrades right from the start when building something new (noticed a newly built Chinese Power Plan already starting with a mine field instead of having to take the time to build one first).


3) Does the AI have build speed bonus ?

4) Does the AI get upgrades for free ?

Edit: Map.ini dependant what's pre-researched already. Otherwise it seems to get some things for free (Chinese Power Plant example).


5) Would it be possible to design a more human-like AI with click per second instead of omnipresent unit control ?

Edited by UsernameUsername, 24 August 2017 - 09:17 AM.

#2 predator_bg


    The predator

  • Project Team
  • 2,417 posts
  • Location:Bulgaria
  • Projects:Contra

Posted 01 June 2016 - 05:42 PM

I will try to answer your questions as much as I can.

1) Three. But also, additional and individual/independent weapons attached to a unit.


2) Don't know about this one.


3) I don't think so. Additional space can be made by switching commandsets (like infantry general's commandset switch to build x4 infantry). But upgrades in the game are limited.


4) Upgrades in the game have a limit. I think it was 128 in Zero Hour and 64 in Generals.


5) A ModuleTag that spawns an object on the parent object's death, World Builder spawn scripts and all of those you mentioned. Can't think of other ways.


6) I don't have a lot of experience here, but I think what you said is right.


7) I think so.


8) Yes.


9) I'm not sure.


What I'd like to get working right now is initial stealth for units just leaving the production queue. They shouldn't require time to stealth but start stealthed and they shouldn't make a stealth sound once created and entering stealth but only after stealth has been dropped because a condition for that has been met.

I think you need "InnateStealth = Yes" in the StealthUpdate ModuleTag. The link directs to a topic specifically about map.ini INI coding. A map.ini is a special file specific for a map where you can override different things. I don't think you can do that in non-map.inis.


11) Example with GLA Mine Clearer:


  Behavior = OverlordContain ModuleTag_Decal
    Slots  = 1
    DamagePercentToUnits  = 100%
    AllowInsideKindOf     = PORTABLE_STRUCTURE
    PayloadTemplateName   = MineDetonatorDecalObject
  Behavior = FireWeaponUpdate ModuleTag_Detonator
    Weapon = MineDetonationFieldWeapon
I doubt they can be upgraded.
12) They only limit a unit's number of free weapons.
13) True.
14) Fuel which can be ignited by incendiary weapons.
15) I think not.
16) I think not.
AI questions:
1) It's possible if you delete the "Fire at enemy's highest cost area" script from the Skirmish scripts. But then there will be no way for the AI to figure out where to fire its powers. Only if you have a pre-defined waypoint on the map and use the "Fire at waypoint" script. This is much worse as the AI will not target enemy targets, but rather some pre-defined waypoints. So, it is an issue.
2) In Challenge, depends on each map's WB scripts. In Skirmish, depends on a certain general's scripts. Skirmish AI scripts are loaded from the SkirmishScripts.scb file. Dependencies on difficulty are within those scripts.
3) I think not.
4) Depends on the map. Some AIs (for ex., in missions) may get the money required to buy an upgrade with a script along with the script to purchase the upgrade. The Skirmish AI in Contra builds an upgrade if it has the money required, so no free upgrades in this case.
5) I think yes, however I can't imagine the amount of script editing that will be required. It will get very complex.

Edited by predator_bg, 01 June 2016 - 05:42 PM.

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users