1st. Builtin unit limits. Sometimes you want a player to build no more than a certain number of a certain unit, or a type of units. The former would be achieved by a tag in the FBI stating "MaxCount=X;", and the effects of this would be such that a factory that suddenly hits this unit in its que when there's already X in the field or being built, it shoves it to the end of the que and resumes building. The latter would be achieved by any of the following: a)the numbers in Armor.txt that would actually mean something - in this case the maximum amount of units, or b)a new field in Sidedata.tdf listing unit categories and the relevant maxcounts. Also, sometimes you would want it so that ALL players can build no more than a certain number of units total (like some special hero), in which case a tag "LimitTotalNumber=1;" would show that MaxCount in fact counts for all participants.
2nd. Custom explosions. I know 0.72b1 includes something like that, but I don't know how it works (yet), so I'll post my vision of it. Basically, this consists of a set of predefined effects (smokepuff, flame, shockwave, flying smoke debris, flying fire debris, etc, etc.) and a way to control them. The 'way' in this case would be 3do models consisting of a number of pieces, that in turn consist of simple 2-vertice polygons. The pieces are arranged according to _where_ you need an effect to take place, and named according to _when_, and _what_ effect you need done. The direction of the piece (as per GetPieceDir) shows the direction of the "directional" effects like flying debris, and the size of it (the length of the vector from vertex 1 to vertex 2) sets the magnitude of the effect. When the effect is played is determined by the first four bytes of the piece's name - those should be decimal numbers, resulting in a 4-digit number of milliseconds that need to pass from weapon impact until the effect triggers. The rest of the piece name is the name of the effect to be played. It sounds very complicated, and it in fact is complicated, and very hard to implement, but it provides modders with their own "explosion engine" that can as well be used for muzzleflashes.
3rd. Small suggestion, do not let ground units leave playfield when thrown around by explosions, similar to what you do with aircrafts.
4th. While I'm at it, a bug: canhover=1 and canfly=1 together in one unit seem to cause a crash at unit creation.
5th. Range suggestion. In addition to weapon "range" add "lockDistance" and "attackDistance". The formula for those is the following: if range is not defined it defaults to 0; if attackDistance is not defined it defaults to range; if lockDistance is not defined it defaults to attackDistance. Basically lockDistance is the distance at which a weapon will aim at the target, attackDistance is the distance at which it will fire at the target. This is needed for weapons that need to start targetting from afar to ensure a hit against a fast-moving target, but can only fire at a short distance for balancing reasons.
6th. Small suggestion, maybe it's irrelevant for most mods, but add a way to make units target points other than the center of the target unit. I thought SweetSpot defines the point that is targetted, but my experiments led me to believe that is wrong. If SweetSpot indeed works, maybe add a possibility to define multiple SweetSpots (like for Final Frontier spaceships) so that not only one point of the model is attacked?
7th. Another possibly stupid suggestion, since I probably didn't take the consequences into account, but make weapons always fire in the z+ direction of the QueryWhatever piece(+accuracy and spread modification), and place the burden of proper targetting on the modders making aiming animations. Or make it an option, for OTA units like the Instigator and Maverick. Or, if not for all weapons, at least make beamlasers fire like this.
8th. While I'm on the subject of aiming, add a tag for weapons to allow firing off-target when aiming. That is, the weapon will start firing as soon as it starts aiming, or within "holdtime" seconds (hmm, found a use for holdtime... :D) after starting aiming. This is useful for rapid-fire weapons that have a role of "swarm defence", when their targets are numerous and are continually making passes, denying a possibility to properly aim. Think B-17 gunners with unlimited ammo - they'll just blast away hoping to hit something. :)
9th and final - this is more of a personal request for assistance. Can you please clarify what can be defined in the "groundplate" of a building? I know o's and c's, but there's surely more than that. Thanks in advance.
Oh, and I'll help making anything in that list as soon as the source becomes available.
