A great feature for modders allows altering the sectors where bloodcats will appear, the difficulty of bloodcat encounters, and even their behavior.
Ah, bloodcats. They come out of nowhere, they're as quiet as... cats, and they are viciously brutal. In the JA2 campaign, there are several ways to meet bloodcats, and these encounters usually end badly if you aren't ready for them.
Bloodcat ambushes are the most common. In these situations, which occur in several specific sectors on the map, your mercs are placed at the center of the sector, with bloodcats closing in on your position from all sides. Truly brutal as you have no way to prepare for them, and they can seriously injure a merc or two before you take them all down.
Then there's the bloodcat lair in sector I16 (if you didn't know that, then you shouldn't be reading the HAM wiki, now should you). There can be a few DOZEN cats here, all waiting to slaughter you on sight. And if you don't kill them all, they'll replenish their numbers over time!
And finally, bloodcats appear as static troops in Meduna as pets in the queen's arena. Here, bloodcats and enemies will attack you together. To make things worse, enemies and bloodcats don't attack each other, complicating things even further.
Make sure you pack a lot of hollow-point ammo. ;)
HAM 3.6 - Bloodcat Placements Externalized Edit
HAM solved several issues with modding the appearance of bloodcats. Before HAM, it was virtually impossible to even alter the number of cats that will appear in any encounter, so the only thing possible was to move existing bloodcat placements in maps that were set up to support them. Remove a cat, or add new ones, and your finalized map will not have any bloodcats in it when the game is run.
Once this issue was solved, it became possible to mod all instances of bloodcat appearance in the game. HAM went one step further, allowing customization of the chance of bloodcat ambush, the possible (randomal) number of cats in each sector, and even some more esoteric controls.
This is done using a new XML called "BloodcatPlacements.XML", which resides in the TableData\Map folder. It has a relatively simple format, and should not take long to figure out.
Most importantly, you can place encounters with bloodcats wherever you like. All three types of encounters (see above) can be moved and duplicated whichever way you like. Just remember to edit the maps themselves and add the bloodcats as necessary!
Bloodcat Ambushes Edit
A bloodcat ambush is a random encounter. You may or may not trigger an ambush when passing through the sector. The trigger occurs when mercs enter the sector, whether or not they are traveling through or stopping here.
The XML allows you to set the minimum and maximum possible number of bloodcats that will be spawned. You can set different numbers for EACH DIFFICULTY LEVEL as you see fit.
Also, it is possible to set the chance of an ambush occuring in each difficulty level.
Please note that the actual number of bloodcats spawned depends on the player's progress, as well as the number of mercs caught in the ambush. Fewer mercs will be attacked by fewer bloodcats. However, the number of bloodcats spawned can never be outside the minimum/maximum range you've set in the XML.
Bloodcat Lair Edit
A lair sector contains a set number of bloodcats. You can set that number separately for each difficulty level.
Bloodcats in a lair can ambush you if you have not already received the quest from Auntie. After receiving the quest, the ambush will not occur in the sector (I.E. your mercs enter the sector along the map edge rather than being placed in the middle, surrounded by cats).
Using a tag in the XML, you can decide whether the cats respawn with time. Respawns can only increase the number of cats back to its original (maximum) value as set in the XML. If all cats are killed, they will no longer respawn.
Please note that there must be at least ONE bloodcat lair defined in the XML. Otherwise, the game will not load. Also note that the first lair you define will be used for Auntie's quest, I.E. the player will only need to eradicate the cats in that sector to complete the quest. However, you may place as many lairs as you like, if you want several sectors where bloodcats respawn over time.
Static Bloodcats Edit
You can set sectors where bloodcats behave much like an enemy garrison. When the sector is first entered, the bloodcats will number as many as the value you set in the XML. Each bloodcat killed will NOT respawn, ever.
Static encounters are special because you can decide whether the cats will attack enemies (and vice versa). It is therefore possible to mimic the behavior of cats in JA2's Meduna sector N5, where cats and enemies attack you together, but not each other.
In addition, HAM adds the option for "static" cats to be affiliated with a certain faction. In such a case, they will not attack ANYONE, not even you, until such time that the faction becomes hostile towards you. If you attack the cats, or any member of the faction, then both cats and faction members will become hostile towards you. This setting turns the bloodcats into pets that can guard a sector and assist their masters in killing you if necessary.
Remember to edit the map for the sector where you want the bloodcats to appear, and make sure to add as many bloodcat placements as your maximum allows. If there are fewer placements available, then that will be the true maximum enforced. If no bloodcat placements are added to the map, no bloodcats will spawn...
Structure of BloodcatPlacements.XML Edit
This XML is relatively simple, but each placement "type" has different tags to be used.
You can place as many encounters as you would like. However, make sure not to place more than one encounter in a single sector, or errors can occur.
Finally, make sure to place at least one bloodcat lair. The game will not run without at least one lair defined. The first lair you define in the XML will be used for the Auntie quest.
Skeleton structure Edit
Here's an example of a skeleton structure consisting of three different placements.
<BLOODCAT_PLACEMENTS> <SECTOR> <SectorGrid>A1</SectorGrid> <ubPlacementType>0</ubPlacementType> <INSANE> <ubAmbushChance>20</ubAmbushChance> <ubMinBloodcats>3</ubMinBloodcats> <ubMaxBloodcats>14</ubMaxBloodcats> </INSANE> </SECTOR> <SECTOR> <SectorGrid>A2</SectorGrid> <ubPlacementType>1</ubPlacementType> <INSANE> <ubMaxBloodcats>18</ubMaxBloodcats> <ubFactionAffiliation>14</ubFactionAffiliation> </INSANE> </SECTOR> <SECTOR> <SectorGrid>A3</SectorGrid> <ubPlacementType>3</ubPlacementType> <INSANE> <ubMaxBloodcats>39</ubMaxBloodcats> <fRespawn>1</fRespawn> </INSANE> </SECTOR> </BLOODCAT_PLACEMENTS>
This is a very basic form of the XML, and doesn't do much. In fact, bloodcats will only appear in INSANE mode if this is used.
In the above example, the first entry puts a bloodcat ambush at sector A1. There is a 20% chance of this ambush occurring each time you enter the sector, and anywhere between 3 and 14 cats will be spawned whenever the ambush is triggered.
The second entry is a static bloodcat placement. It puts exactly 18 cats in sector A2. These cats are affiliated with the queen's troops (Faction #14) and so will not attack the enemies or be attacked by them. Queen affiliation is a special case, as the cats will be able to attack you immediately on sight. If another affiliation is set, they will only attack if you anger their faction. Each cat you kill in this sector will be permanently dead and will never respawn.
Finally, the third entry is a lair in sector A3. No less than 39 cats are spawned here. If you kill some of them and leave, then they will slowly replenish their numbers until there are 39 cats in the sector again. If you kill all of them, they will never respawn. Since this is the first (and only) lair defined in the XML, killing all bloodcats here will result in the completion of Auntie's quest.
Again, it's important to note that the above XML only defines encounters for the INSANE difficulty level. If you want encounters to happen in other difficulty levels, you'll need to add more lines as necessary. See more information about this below.
Advanced Structure Edit
As with every XML, there are certain rules you must follow to construct your bloodcat placements. Fortunately, this XML is relatively simple, and you only need to expand it if you want to. Most importantly you need to remember that each type of placement (I.E. Ambush/Static/Lair) requires a different set of tags, as shown in the example above.
The file must begin with the opening tag <BLOODCAT_PLACEMENTS>, and must end with the closing tag </BLOODCAT_PLACEMENT>. Placing anything outside these tags will lead to failure.
<BLOODCAT_PLACEMENTS> [... Everything else goes here ...] </BLOODCAT_PLACEMENTS>
Each entry in this file contains data about bloodcats in a single sector. Inside, you will define what type of encounter takes place here, and all the extra data about that encounter.
Each entry begins with the opening tag <SECTOR>, and must end with the closing tag </SECTOR>.
<BLOODCAT_PLACEMENTS> <SECTOR> [... Rest of encounter data goes here ...] </SECTOR> [... You may have up to 256 sector entries in total ...] </BLOODCAT_PLACEMENTS>
Please note that you can only have ONE ENTRY PER SECTOR. Therefore, you can't have a sector with two types of ambushes that can occur, neither can you have a sector with a lair and an ambush, and so forth. Make sure you don't define a sector twice.
You can define up to 256 entries, one for each sector on the map. It is currently impossible to define underground encounters with bloodcats.
You don't have to define all 256 sectors of course. The game will even run with just ONE entry (which in that case must be a lair).
Sector Grid Edit
First of course we need to tell the game which sector we are defining. For this, use the usual combination of letter and number to define the sector grid. For instance, A1, B15, G3, and so forth. This is defined inside a "<SectorGrid>" tag.
<BLOODCAT_PLACEMENTS> <SECTOR> <SectorGrid>###</SectorGrid> [... Rest of encounter data goes here ...] </SECTOR> [... You may have up to 256 sector entries in total ...] </BLOODCAT_PLACEMENTS>
Placement Type Edit
Your first order of business is to decide which kind of encounter takes place here. Define it using the tag "<ubPlacementType>":
<BLOODCAT_PLACEMENT> <SECTOR> <SectorGrid>###</SectorGrid> <ubPlacementType>#</ubPlacementType> [... Rest of encounter data goes here ...] </SECTOR> [... You may have up to 256 sector entries in total ...] </BLOODCAT_PLACEMENTS>
Here are the possible choices for the ubPlacementType value:
- 0 = Ambush. There's a certain chance that mercs travelling through this sector will encounter bloodcats who attack from all sides.
- 1 = Static. Bloodcats appear here and behave like standard enemies. Each one that's killed will never come back.
- 2 = Lair. At least one of these is mandatory. Bloodcats in this sector can form an ambush, and will regenerate over time if you don't kill all of them.
As you'll see in a minute, your choice doesn't only affect what happens in the game, but also determines which tags you need to insert beyond this point.
We're close to defining the actual encounter data, but first you have to know that you can define different values for EACH DIFFICULTY SETTING. Therefore, each encounter can have anywhere between 1 and 4 sets of values, and the ones the program actually uses will depend on the difficulty setting selected by the player. Normally, you should make sure that the values for NOVICE difficulty make the encounter easier than those for INSANE difficulty.
Each set of values is enclosed in a pair of tags named after the difficulty setting. Naturally, they are:
- <NOVICE> and </NOVICE>
- <EXPERIENCED> and </EXPERIENCED>
- <EXPERT> and </EXPERT>
- <INSANE> and </INSANE>
Difficulty-specific encounter data goes in between these pairs of tags.
Please note that you can omit any of these. For instance, if you want an encounter that only happens in INSANE difficulty, you should only create a set of tags for that difficulty, omitting the others. You can set up any combination you want. Of course, you need at least ONE set, otherwise what's the point of creating the encounter at all?
<BLOODCAT_PLACEMENT> <SECTOR> <SectorGrid>###</SectorGrid> <ubPlacementType>#</ubPlacementType> <NOVICE> [... NOVICE difficulty data goes here ...] </NOVICE> <EXPERIENCED> [... EXPERIENCED difficulty data goes here ...] </EXPERIENCED> <EXPERT> [... EXPERT difficulty data goes here ...] </EXPERT> <INSANE> [... INSANE difficulty data goes here ...] </INSANE> </SECTOR> [... You may have up to 256 sector entries in total ...] </BLOODCAT_PLACEMENTS>
Tags for Ambush-type Placements Edit
Ambushes occur randomly and may be triggered whenever a merc enters the sector, even if he's only passing through. You get to set the chance of that happening, and if the encounter is triggered then the ambush will occur.
An ambush begins with the mercs in the middle of the sector map, and bloodcats scattered all around. The moment a bloodcat spots a merc, or a merc spots a bloodcat, battle will begin, and all bloodcats are drawn towards your position.
The number of bloodcats appearing in the ambush is randomal. It depends on a lot of factors including the player's current progress level as well as the number of mercs who are trapped in the ambush. Yes - the more mercs are in the sector, the more bloodcats will be spawned!
You, the modder, have the ability to limit the minimum and maximum number of bloodcats that can appear. These limits are absolute, so the random number generator cannot exceed your defined limits in any way. The only reason why fewer than minimum bloodcats will appear is if the map file itself does not contain a sufficient number of cat placements. If this is the case, the program automatically adjusts the number and places as many bloodcats as it can. Note that if you accidentally place an ambush in a map that does not contain ANY bloodcat placements, you may trigger an ambush with no cats present. If this is the case, you'll be forced into tactical mode but nothing will happen and the mercs will move happily on their way.
There are three tags possible for bloodcat ambush placements:
1 - 100
This dictates the chance of an ambush occuring each time a merc enters the sector. Do not omit this tag!
|<ubMinBloodcats||1 - 64||
Dictates the minimum number of bloodcats that will appear, ever. The only thing that can cause fewer bloodcats than this is if the map contains a smaller number of placements. If you omit this tag, then it's possible (but not likely) that an ambush again 0 cats will occur. See the text above to understand what happens. It's kind of pointless.
1 - 64
Dictates the maximum possible number of bloodcats that will appear, ever. The program cannot exceed this number for any reason, even if there are more placements available in the map file. Setting this to 0 or omitting this tag is completely pointless.
A complete entry for an ambush placement looks like this:
<BLOODCAT_PLACEMENT> <SECTOR> <SectorGrid>###</SectorGrid> <ubPlacementType>0</ubPlacementType> <NOVICE> <ubAmbushChance>#</ubAmbushChance> <ubMinBloodcats>#</ubMinBloodcats> <ubMaxBloodcats>#</ubMaxBloodcats> </NOVICE> <EXPERIENCED> <ubAmbushChance>#</ubAmbushChance> <ubMinBloodcats>#</ubMinBloodcats> <ubMaxBloodcats>#</ubMaxBloodcats> </EXPERIENCED> <EXPERT> <ubAmbushChance>#</ubAmbushChance> <ubMinBloodcats>#</ubMinBloodcats> <ubMaxBloodcats>#</ubMaxBloodcats> </EXPERT> <INSANE> <ubAmbushChance>#</ubAmbushChance> <ubMinBloodcats>#</ubMinBloodcats> <ubMaxBloodcats>#</ubMaxBloodcats> </INSANE> </SECTOR> [... You may have up to 256 sector entries in total ...] </BLOODCAT_PLACEMENTS>
Remember that you can set different values for each difficulty setting. That's pretty much the point.
Tags for Static-Type Placements Edit
In a static encounter, bloodcats behave much like enemies. A set number of them is placed in the sector at the beginning of the campaign, and it will only change if the player's mercs kill any bloodcats. Each bloodcat killed in this sector will be permanently dead and will never reappear.
The most interesting use for this placement type is to make bloodcats that have a certain relationship with enemy or civilian forces in the sector. The most classical use of this can be seen in the normal JA2 campaign, in sector Meduna N5 - the bloodcat arena. In this sector, enemies and bloodcats do not attack each other - they will both try to kill your mercs and will ignore one another completely. For complete knowledge I'll state that they actually cannot see or hear one another either!
With the HAM XML, this isn't restricted to enemies. In fact, bloodcats can be set to be friendly to a certain faction, like Kingpin's faction or the Arulco Rebels or any other faction recognized by the game (there are 14 of them in total). If you affiliate the bloodcats with a faction, something interesting will occur: The bloodcats will NOT attack you on sight, nor will they attack anyone else. They will normally stay motionless (I don't know if the map editor can actually give them patrol orders, never tried it). This situation persists until one of three events occur:
- The bloodcats are attacked. In this case, all bloodcats, as well as the entire faction they belong to, will become hostile to you.
- A faction member is attacked. In this case, all bloodcats as well as the entire faction they belong to, will become hostile to you.
- The faction was angered in another sector, possibly even through dialogue with one of its members. In this case, the bloodcats in this sector will become hostile on sight, as well as all other faction members in this sector.
This can be used to make "tame" bloodcats that will attack only if their masters wish it. The plot possibilities for this are pretty cool, so it's up to your imagination to come up with inventive uses for this feature.
On to the XML itself, here are the tags required for the Static-Type Placement entry:
|<ubMaxBloodcats>||1 - 64||
This defines the starting number of bloodcats in this sector. Remember, if you kill one it will never reappear. There can never be more than this many bloodcats in the sector, of course.
|<ubFactionAffiliation>||0 - 14||
This defines which faction the cats belong to. See below for a list of possible factions. You can also omit this line or set it to 0, in which case the cats will attack everyone in sight (Use this for "save the civilians" type encounters, or just for a plain old encounter with vicious cats that will never appear again once killed).
And here's what the XML looks like:
<BLOODCAT_PLACEMENT> <SECTOR> <SectorGrid>###</SectorGrid> <ubPlacementType>1</ubPlacementType> <NOVICE> <ubMaxBloodcats>#</ubMaxBloodcats> <ubFactionAffiliation>#</ubFactionAffiliation> </NOVICE> <EXPERIENCED> <ubMaxBloodcats>#</ubMaxBloodcats> <ubFactionAffiliation>#</ubFactionAffiliation> </EXPERIENCED> <EXPERT> <ubMaxBloodcats>#</ubMaxBloodcats> <ubFactionAffiliation>#</ubFactionAffiliation> </EXPERT> <INSANE> <ubMaxBloodcats>#</ubMaxBloodcats> <ubFactionAffiliation>#</ubFactionAffiliation> </INSANE> </SECTOR> [... You may have up to 256 sector entries in total ...] </BLOODCAT_PLACEMENTS>
List of possible factions
Here's a list of the factions that appear in "vanilla" JA2. Please note that various campaign mods could be using these factions for all sorts of things, so make sure to consult the map editor to find out whether the civilians in your chosen sector are affiliated with any particular faction.
Also please carefully read the explanation for settings 0 and 14, as they have a certain effect that does not occur with other choices.
|Faction Number||Faction Name||Members in the JA2 campaign / Special effects|
|1||REBEL_CIV_GROUP||Ira, Dimitri, Miguel, etc.|
|2||KINGPIN_CIV_GROUP||Kingpin, Damon, Darren, etc.|
|5||BEGGARS_CIV_GROUP||?? Can you fill this in?|
|6||TOURISTS_CIV_GROUP||John and Mary Kulba|
|7||ALMA_MILITARY_CIV_GROUP||The General and... Conrad? Sergeant Krott?|
|8||DOCTORS_CIV_GROUP||Steve, Vince, Jenny|
|9||COUPLE1_CIV_GROUP||Lora and Armand?|
|10||HICKS_CIV_GROUP||Everybody in the Hicks Family Farm|
|11||WARDEN_CIV_GROUP||The warden and probably others in Tixa|
|12||JUNKYARD_CIV_GROUP||Jake, Maddog, etc.|
|13||FACTORY_KIDS_GROUP||Doreen? What about the children?|
Deidranna, Elliot, Joe, etc.
Please note an important point here: If this affiliation is selected for bloodcats, then the cats will only ignore the Queen's Soldiers and any civs affiliated with this group. They'll attack everyone else, including you, militia, and other civilians. Basically this is what happens in JA2 in sector N5, although there are no civilians there in the original game.
|0||No affiliation||When set to 0, the cats will attack anyone they see.|
Tags for Lair-Type Placements Edit
JA2 contains a single lair, in sector I16. It is directly connected to Auntie's quest which is triggered in Alma. With HAM, you can move the lair anywhere you want, and can also make several lairs across the map if you want. Please read more about Auntie's quest below.
When the campaign starts, a set number of bloodcats is placed in this sector. If you manage to kill all the bloodcats here, then the sector will forever be free of bloodcats. In this way a lair behaves much like a "static" placement (see above). However, the lair can be set to respawn bloodcats over time. This occurs if only some bloodcats, but not all of them, are killed in battle. The number of cats will replenish every so and so hours (can't be bothered to check right now), and will eventually rise back to its INITIAL value (but never over that). If the lair is not set to respawn cats, then any cat killed will never reappear.
A lair is an interesting place because it doesn't always behave the same way. Its behavior depends greatly on whether or not you've started Auntie's quest. If you visit a lair (any lair) before starting the quest, then you will experience an ambush where your mercs are placed in the center of the sector, and bloodcats will come rushing in from all sides. Once Auntie's quest starts, or if you ever visit the lair a second time after already being ambushed there, your mercs will be placed normally along the edge of the sector, and the battle flows normally.
Auntie's quest is only associated with a single lair. That would be the first lair defined in the XML. Because of this, there must be at least one lair defined in the XML, otherwise the game will refuse to start. To finish the quest, the player will need to eliminate all bloodcats in that specific sector. Other lairs will all behave as normal (with all the ambush/respawn stuff described above), but will not influence the quest in any way. Auntie's quest rewards your mercs with experience (I think) and a loyalty boost in Alma - you will only receive this reward for cleaning out the actual appointed lair, and not for the other lairs.
Again, I'll reiterate because it's so important: At the very least your XML should contain one entry for a Bloodcat Lair encounter. You can remove ALL other entries in the XML, all ambushes and static placements, but if you don't have at least one lair defined, the game will refuse to start!!
Here are the possible tags for the bloodcat lair placement:
|<ubMaxBloodcats>||1 - 64||This is the number of cats placed in the sector at the beginning of the campaign. If cats are set to respawn, they will slowly replenish their numbers until reaching this limit. There can never be more cats in the sector than this.|
Decides whether bloodcats will slowly respawn in this sector over time.
Set to 0 or omit this tag entirely to make a simple encounter where every cat killed will never reappear. The difference between this and making a Static placement is that lairs can have an ambush if the player unwittingly stumbles into one, and also the bloodcats in a lair are always non-affiliated and will attack anyone in the sector.
If set to 1, bloodcats will slowly respawn (this can take a few days). If you manage to kill all of them, however, the sector will remain bloodcat-free for the rest of the game.
And here's what the XML looks like for this placement type:
<BLOODCAT_PLACEMENT> <SECTOR> <SectorGrid>###</SectorGrid> <ubPlacementType>2</ubPlacementType> <NOVICE> <ubMaxBloodcats>#</ubMaxBloodcats> <fRespawn>#</fRespawn> </NOVICE> <EXPERIENCED> <ubMaxBloodcats>#</ubMaxBloodcats> <fRespawn>#</fRespawn> </EXPERIENCED> <EXPERT> <ubMaxBloodcats>#</ubMaxBloodcats> <fRespawn>#</fRespawn> </EXPERT> <INSANE> <ubMaxBloodcats>#</ubMaxBloodcats> <fRespawn>#</fRespawn> </INSANE> </SECTOR> [... You may have up to 256 sector entries in total ...] </BLOODCAT_PLACEMENTS>