|Tutorial Name: Adding New Team Types
Made by: Banshee
This tutorial is adapted from After Glow Website section
about ai.ini (made by Jim Morley) and from Deezire Ini Editing Tutorial
(made by Deezire) and also based on some experiences I made. I cannot guarantee the true veracity of the information of this tutorial. This is an update of the original tutorial I made for Intel Website (from PPM) that was hosted by Entertainment Explosion. Since EE is gone, it has been posted here. If you wanna post that in your site, please email firstname.lastname@example.org asking authorization.
:: Adding New Team Types ::
Team Types is the section when you mix scripts with task forces and set some
extra properties to AI understands the way its troops will be used.
First, you need to declare them:
XX = Unused number of the list
NAME = Internal name of the team. This name
might be used in AI Trigger Types to make it use your Team Types.
Then, you set the properties of your new team type:
Aggressive= makes AI troops to execute their
instructions blindly. They will not hunt for enemies or attack enemies that
are near, but they will retaliate if attacked.
Annoyance= is set to "no" in every entry, which
means that the default may be "yes". Annoyance makes AI team attack for a
short while then retreat and attack again. Good for air strikes. AI will
also persist with this team by replacing the destroyed members of the team
and sending them again to the enemy base.
AreTeamMembersRecruitable= controls if another
team can steal units away when the current team acomplish its tasks
(instructions from script types). This appears to to "yes" for every entry,
so the default must be "no".
Autocreate is set to "no" in every entry, which
means that the default may be "yes". This may turn the team into one that is
created based on time instead of triggers. The time is controlled by the
setting TeamDelays= in your rules.ini.
AvoidThreats= control weither or not the unit
stops to return fire with every unit along it's trip. Only certain attacks
have this set to "yes". In the ones who have it set as no, AI engages any
enemy that is in its sight range or guard range.
Droppod= says if these team members arrive in a
Drop Pod. None of the entries has this set to "yes". This is probably only
used in single player maps.
Full= is set to "no" for every entry. I suspect
that this is used for things like Weed Eaters arriving with full loads or
transports. It`s recommended to only use it on single player maps.
Group= controls the way that AI groups its units
in the current task forces. It is set to "-1" for nearly every entry except
a number of GDI "pools", which are "-40094". It may override the settings
Group= in the Task Forces.
GuardSlower= is set to "no" for every entry, so
the default must be "yes". It increases the value of BaseDefenseDelay= (in
the rules.ini) from the specific team. The current team will respond slower
to attacks in its own base.
House= controls which side gets this team.
IonImmune= probably means that these team
members ignore the effects of Ion Stroms, because they get immune to them
(if it`s set to "yes"). Every entry has this set to "no", so the default may
IsBaseDefense= determines if this team hangs
around to defend the base. It will also protect the units that has
ToProtect=yes. The number of teams with IsBaseDefense=yes line is limited to
the settings defined in MinimumAIDefensiveTeams= and
MaximumAIDefensiveTeams= statements in rules.ini. This is set to "no" except
for "pool" teams.
Loadable= should be set to yes if one (or more)
of the members of the team need to reload its ammo=. All entrys have this
set to "no".
LooseRecruit= is set to "no" for every entry. It
determines if the team is dissolved after completing its tasks defined on
the script type. Dissolved units are free to be recruited by other
Max= is the number of times that AI will
autocreate the team. The values range from "1" to "3", but you can put more
than it. If your team type doesn`t have autocreate=yes, set it to 1.
Name= is a quick description of the team, such
as "H_GDI APC/commando attack". Useful for
finding the right one to play with.
OnlyTargetHouseEnemy= stops the teams from
attacking neutrals. Every entry in ai.ini has this set to "yes".
OnTransOnly= says that this team will only
execute its associated script type if it has any instruction related to load
and unload transports. If this transport task isn`t completed successfully,
the team is dissolved. No entries in AI.INI have this set to "yes".
Prebuild= determines if an inactive copy of this
team type should be built before AI needs to use it. It`s usually used in
high priority team types, so AI has a backup of the units if they are killed
(usefull to expensive stuff that takes time to be built). Every entry in
AI.INI has this set to "no".
Priority= is the build priority for this team.
The values used by Westwood in Tiberian Sun are "4", "8" and "12". But you
can use any value. The lower the number, the greater the probability of AI
build this team.
Recruiter= probably means that this team can
call up loose units to form it rather than build new ones. Every entry has
this set to "no".
Reinforce= is set to "no" in every entry. It`s
used on single player maps only and determines if this team type forms
Script= specifies which script type of the
script types list that this team will use. Remember that script types are
the actions that the team will do.
Suicide= tells the units of the current tean to
ignore any damage and keep on going. The team will not retaliate or scan for
any enemies. The Sight= and GuardRange= is completely ignored by AI. Most
entries have this set to "yes". Use this for air strikes, but avoid using it
on land ones...
TaskForce= specifies which task force from the
task forces list the team will use. Remember that Task Forces are the units
that make up this team.
TechLevel= is the lowest tech level that this
team is available at. This only affects the teams with autocreate=yes. Note
that this overrides the tech levels in Rules.ini. All of the entrys in
ai.ini have this set to "0".
TransportsReturnOnUnload= tells the transport
unit (normally some kind of APC) to return to base after unloading the rest
of the team and dissolve the team. Use this to unnarmed transports.
VeteranLevel= is set to "1" for all of these
entries. It controls the Vetran status, and thus could be either a "2" or
Whiner= is set to "yes" for "pool" teams and
"no" for those with active jobs. It should only be used only by 'pool'
TeamTypes to determine if destroyed members of the associated TaskForce are
automatically replaced by the AI. This is because 'pool' TeamTypes are
normally assigned to base defense missions or generic missions such as
guarding, hunting or scouting and their members are always made available
for recruitment into further teams (a mechanism which ensures that the AI
doesn't always have to produce every team from scratch since it will have a
pool of units from which to assemble future teams).
And here is an example:
Name=H_Nod banshee pool
- Task Forces (For TS and RA2)
- Script Types (TS Only)
- AI Trigger Types (TS Only)
- AI Mini Guide (RA2 Only, but it shows a global use of all parts of ai.ini together which is also interesting for TS modders)