Breaking Save Game Compatibility for v37

Slow times in early era, like PreH/Ancient i dont mind, but will this increase times after Classical?? if so, ummm??

Surely this must depend on map size. Huge or much larger maps may be no problem.

But standard or Large size maps - very few animals of each type spawn before the map is covered by culture. On standard at epc speed you have about 400 turns. Apart from some isolated regions on the poles.
 
This shows my thinking when I adjusted Animals_CIV4UnitInfos.xml


This takes some time because I'm also refining impassable features/terrains and combatclasses for the animals. Much time passes on reading up on behaviors/habitat/ecology of each and every animals.

I'll maintain the list to the end so people can discuss various details about what I'm doing here.


Just re-read this, so must ask the questions.

I'm also refining impassable features/terrains

1. Will this have an effect on pre-made maps?
2. If not changed will this significantly reduce spawning?
 
When ever I do stuff with the animals I also refine which areas they can move into. It does not affect spawns per se but it can result in a lot of animals stuck in the plot they spawn in. This is especially true in the polar regions.

@Toffer90 I was working my way through the sea critters but only got as far as the sharks, and small fish. I don't think any of the others have been corrected for the new terrains.
 
RE:Spawns - Those spawn infos with the <SpawnGroup> tag in any use beyond one extra type defined will not be valid for Size Matters which will be relying on the GroupSizeUnitCombatTypes tag to define the emergence of variable group sizes.


I have not read the whole thread - yet (if I do not post now I will forget.)

Only 2 <spawn groups> exist, Lion_Packs (new unit) and Wolf_Packs (this only spawns 3 wolfs instead of 1 [not a pack]).

so maybe than can be removed - just increase the spawn rate of the original animal.
 
Allrighty then... lots to discuss! *Cracks Knuckles*
I have made a first set of changes to the spawn file.

Initial pass I set to aggressive if either a carnivore or omnivore. To passive if herbavore.

Second pass set smaller carnivores that would be unlikely to attack humans to passive. (assuming the new aggressive tag would be used on these.)

So a round up:

Birds: nearly all are passive - not sure about hawk, eagle, secretary bird.

Sea: All large animals are aggressive - whales, sharks, squid etc.

Rays, dolphins are passive.

All small sea animals, fish, crab, turtles, sea otters are passive.

All crocs/alligators are aggressive. As are komodo dragons.

Land: Currently all bears are aggressive except Panda and Red Panda. Noticed Toffer has Black Bears as passive, so will change that.

All cats are aggressive.

All grazing animals are passive deers, Kangeroos, Bison etc. However I think the African Water buffalow and wild boar maybe should be changed to aggressive. (any thoughts Toffer).

All smaller animals set to passive.

Most animals I was not sure about I have set to passive for now.

Glyptodon, Tarrantulla, Thylacin, DartFrog, Quoll, Fennec fox.

Will adjust as needed to fit with Toffer's adjustments.

Edit -forgot to say - goes in XML/Units and rename (start of file, remove NEW)
1) I'm going to let Toffer be the final arbiter of these determinations. From here, he can also include the file but if you get me your Sourceforge username in PM I'll get you on the SVN so you can put this stuff in directly. I'll give you the minimal instructions you should have for that as well. It's really neat to see ya come out of your shell a bit and get involved with the actual modding side!

2) Keep in mind the rule of thumbs Toffer suggested that I do agree with...
Toffer said:
Good rule of thumb would be Carnivore/predator=agressive and Herbivore/Scavenger=Passive.

I would consider the barnowl a predator, hence agressive.
If it was then set to "defensive only" with "stealth defense" it would attack rodents neanderthal and humans only when it is stumbled upon in the wilderness while not attempting to attack a tiger or bear that enters it territory.

I would argue to do the same with Gorilla, with the difference that it is in the passive animal team. Thus it would not care for herbivores but would attack other predators and humans when they enter its territory.

Other not obvious ones would be the wolverine and hyena, following the thumb of rule I postulated would make them both passive.
The wolverine is a scavenger and rarely kills anything for its food though it often attack bears and wolfs to steal their prey.
The Hyena behaves in a similar manner but is far more a hunter predator than the wolverine.

Carnivore/Predator=Aggressive and Herbivore/Scavenger=Passive.

As much as this can be achieved anyhow. I'd also like to add:

-If an animal is the common prey of a stronger carnivore then it should probably be in the Passive group.

-Keep in mind that this setting doesn't actually directly influence the aggression or passiveness of the animal but does represent the ability of one animal to attack another. Animals cannot attack those from it's own 'team' so sometimes that can be a factor to consider.

So I think you've got a good start but you may find a few spots in there that these guidelines can help to resolve. Examples from your own list of unsures:
  • Glyptodon: A fiercely capable defender of its life and the lives of its 'pack'. They were, however, Herbivores. Thus Passive group.
  • Tarrantulla: Although Tarrantulas vary quite a bit by individual species types, they represent most stalking, leaping, hunting spiders. They are ultimately predators. HOWEVER, they are NOT predators of any animals we have in the game, usually feeding on insects and small rodents and at times some birds. But they ARE prey to snakes and raptor birds, of which we have quite a few. So they would probably be better suited to being prey in our game scheme. Passive Group.
  • Thylacin: An early predatorial animal related to cats and dogs if I recall correctly. Clearly, this would make the creature more of an Aggressive group creature. However, IF research would show that they were primarily Scavengers then a good argument is there to make them Passive. But I'm thinking probably Aggressive group at the moment.
  • DartFrog: Not a predator of anything but insects we don't represent at the game level. They punish those who feast on them but that'll be addressed with poison modding coming up. Passive.
  • Quoll: This is actually a nocturnal predator of a fairly fierce variety, so long as you're as small or smaller than they are. This could mean that it's better as an Aggressive group, however, I don't know for sure that they would feed on anything we represent in the game. If they do then Aggressive. Nor am I sure if they are prey for many other species. If we have animals in the game that are their predators they must avoid then Passive. A little research would be needed here. Either one could apply.
  • Fennec fox: Sure polar bears and such may go after them but they are certainly a predator. We need to get rabbits in the game at some point soon I think - we have them but they're currently dedicated to the Killer Rabbit unit... I'd set them as an Aggressive in preparation for this. They'd also go after birds so they do have prey around.
These are just ways to highlight the way I'd be evaluating this myself.

Observation from starting a New game with 9125 this morning.

Old way for animals early game: you could put a wanderer and ST together and set them in a well defended tile close to your city set the Wanderer on Trap Hunting and ST on Build Fortifications and amd animals would come attack you pair. Most killed but some subdued, with the occasional stronger animal killing 1 of the pair. Of course once you got Clubman you replaced the ST and once tracker the wanderer, so on for each new level. You would also build more pairs to cover all sides of your city for max effect. And a pair or to to move further out when close hunting slowed down.

New way of for animals: old way not as effective by alot. Stationary pairs the animals for the most part will not attack. Only Certain highly aggressive will, ex. Bengal Tiger Cassowary. Ex. ones that will Not Str 4 Rhinos, Elephants.

You now have to constantly move your pair about until you build up enough True hunting promos from your victories. Subduing is way way down (this is all early game and all before tribalism to keep your timeframe in reference).

Certain animals when killed now give a Mil Captive! Kookabora bird comes to mind but there are several others I didn't write down.

The flow of subdued animals is very much decreased, whether by design or not.

When I get a chance today to play more I'll report more. Especially the animals that give a Human Mil Captive, which I'm sure is not intended. ;)

JosEPh
Part of what you're experiencing already is that even with aggression taken into the equation, animals aren't COMPLETELY stupid. I've given them at least the slightest ability to judge an opponent in their new AI. Even a highly aggressive animal with overwhelming odds against it would not tend to attack. Generally speaking, this means animals are given a 5% odds minimum to validate an intended attack.

The flow of subdued animals will probably not be as strong after all these adjustments have been made, making each captured a little more of a prize.

The buffalo usually only attack, with the intent to kill, animals it considers as predators such as big cats, wolfs, hyenas, bears and of course humans. So it should be passive IMO. The water buffalo don't really bother with killing birds and other critters.

The Wild Boar usually only attack in self defense, though it can misunderstand when self defense is needed or not. I would make it passive so it mostly fights off predators and not goes around chasing critters.
Wild Boars can be terribly territorial and feisty. High aggression but it's not a predator itself so it makes sense to make it a passive group creature but give it some attitude with iAggression.

And you're right on track with the Buffalo. And yes, the water buffalo is actually very UN aggressive.

@TB:

Would this work:
Code:
<GroupSpawnUnitCombatTypes>
				<GroupSpawnUnitCombatType>
					<UnitCombatType>y</UnitCombatType>
					<iChance>x</iChance>
				</GroupSpawnUnitCombatType>
</GroupSpawnUnitCombatTypes>
Or do I need to set it up like this:
Code:
<GroupSpawnUnitCombatTypes>
				<GroupSpawnUnitCombatType>
					<UnitCombatType>y</UnitCombatType>
					<iChance>x</iChance>
					<Title/>
				</GroupSpawnUnitCombatType>
</GroupSpawnUnitCombatTypes>
??
By pointing this out you showed me that the schema needed a quick adjustment to make <Title/> not required. My next commit will have this fix here very soon.

The problem with the kookaburra giving a mil captive should now be fixed. As poiunted out it was the only unit with a wrong value in a tag.

Where I live every spring small birds do attack humans. They go for the eyes. Knock people of push bikes and are a protected species. People come up with interesting ways of getting to work or bus. Of course if you feed them throughout the year they, that flock, wont attack you or yours. It is sort of like a protection racket.
Nothing in Australia isn't aggressive is it? lol. I mean, y'all have poisonous octopus, mugging bands of kangaroos, the deadliest snakes and spiders in the world, a host of nasty large reptiles, poison spined duck billed creatures in the wetlands and... drop bears. You can't catch a break!

@Toffer: A little feedback by select lines:
Code:
This shows my thinking when I adjusted Animals_CIV4UnitInfos.xml

bOnlyDefensive=1 & bAnimalIgnoresBorders=1 in UnitInfo - bNeutralOnly=0 in SpawnInfo
Defensive Only - Unrestricted Spawning:
	PASSIVE:
		African Elephant.......	AFRICANELEPHANT........	iAggression = 2(Agreed)
		Badger................. BADGER.................	iAggression = 0(Strongly disagree... badgers have a reputation for being overtly hostile.  I'd give them a 4 at least!  I know if they are given a wide berth they might not go after you but they have a bad enough attitude that they deserve a little aggression to reflect that in the game at least.)
		American Black Bear.... BLACKBEAR..............	iAggression = 1(Agreed)
		Wild Boar.............. BOAR...................	iAggression = 1(I'd set this more to a 7... they can be very likely to attack.)
		Cassowary..............	CASSOWARY..............	iAggression = 0(From what I've heard, these birds can actually be pretty territorial.  I might rate them a 2 but I've not confirmed this with independent research.)
		Crow...................	CROW...................	iAggression = 0(Crows are unlikely to gain much in XP and on rare occasion when they get it in mind they don't like you that's pretty much it... I've been divebombed by a few myself.  They would leave the fight as fast as they enter it but they don't fear people as much as you'd think they would.  I'd give them a 1.)
	AGGRASSIVE:
		Ussuri dhole...........	DHOLE..................	iAggression = 0	(Assassinate ANTELOPE, BOVINE, CERVID, EQUINE & SWINE) (I think these CAN be on occasion dangerous.  Maybe 1)
		Dingo..................	DINGO..................	iAggression = 0	(Assassinate MARSUPIAL)(These can definitely be dangerous - I'd at least give them a 2.)
		Ethiopian Wolf.........	EWOLF..................	iAggression = 0	(Assassinate RODENT)(I don't know much about them but I'd suspect a 1 may be in order unless they are terribly timid canines.)


Can Attack - Stealth Defense - Only neutral Spawning:
	PASSIVE:
		Cave Bear..............	CAVEBEAR...............	iAggression = 0 (I'm thinking these creatures would've been very very fiercely territorial but they would also have been quite confident so a 2 maybe?)
		Auroch.................	COW.................... iAggression = 4	(Defensive Only)(I get it... mad cow = raging bull)
	AGGRASSIVE:
		Brown Bear............. BEAR...................	iAggression = 1 (Assassinate: BOVINE, CERVID, GOAT & SWINE)(Brown bears aren't as timid as Blacks... I'd up it one or two.)
[/SPOILER]
Defensive Only animals can be made able to attack by the "Savage Beast I" promotion. "Savage Beast III" will make them ignore cultural borders.
May I propose that SB I removes a cause to be unable to attack, SB II gives the ability to ignore cultural borders, and SB III gives them bStampede (a completely reckless form of onslaught)

I'm thinking that maybe "Savage Beast I" should removes 1 reason for ignoring cultural border (as well as removing defensive only) and "Savage Beast III" adds two reasons for ignoring cultural borders so that "Savage Beast III" would be needed for any animal that can attack to enter human territory, regardless of the animals initial ignore border status.
Not fully following you here. Break it down how the defaults would be setup first.

"Savage Beast I" could add a reason for stealth defense, that way I could remove initial stealth defense from some of the animals in the second PASSIVE group (that have defensive only) and place the animal in the first PASSIVE group instead. That way more animals could spawn inside friendly territory.
This gives some more strategic considerations as to whether to give the SB promos to your animals at all, particularly trained cat unit types. I like it.

I'm going to have to figure out in the code how to get some animals to conditionally be allowed to spawn inside borders... currently the spawn code itself I believe cuts those plots out of contention.

And the ability for animals to enter or spawn inside borders at all should probably be a game option (not hard to establish that the tag for animals to be allowed to enter borders be optional.)

I THINK specific unit infos CAN have the tag that allows them to enter borders and that could be the filter for spawning within them as well.

Is there currently any animals in the Second PASSIVE group that you think should be able to spawn inside cultural borders? e.g. Bison or black bear?
EDIT: I moved black bear to the first passive block; they seem to thrive close to modern settlements and should thus be able to spawn inside cultural borders.
Probably good to consider this. Some animals do blend well with people.

I'm not thinking bison would necessarily. There aren't many truly wild bison out there unless they are on preserve lands and in which case they are likely more represented by the plot's bonus.

Black bears, however, can get to scavenging among people and do a pretty good job keeping a low daytime profile and not attacking (unless infected with rabies) so maybe the very low aggression setting is enough.

@TB: It would have been nice if iAggression defaults to 0 instead of 5.

There are more completely unaggressive animals than not, and it's more intuitive that not setting aggression means unaggressive.
I set the default to 5 so that the undefined CAN still attack. 0 simply never would. So until the list is completed, animals are striking a balanced likelihood. Once the list is finished then the default can be changed.


GREAT work guys! Looks like my next step - post debugging - should be to work out a game option that allows specified critters to spawn within and some to enter borders. I'm also thinking that maybe 2 reasons to enter borders would allow them to move or spawn inside improved territory while 3 reasons (and defensive only) would enable them to blend into cities - though that could be done with the city blending tag we have. Pigeons are quite at home in urban areas.
 
I have not read the whole thread - yet (if I do not post now I will forget.)

Only 2 <spawn groups> exist, Lion_Packs (new unit) and Wolf_Packs (this only spawns 3 wolfs instead of 1 [not a pack]).

so maybe than can be removed - just increase the spawn rate of the original animal.

Those spawns should stay (and feel free to add more where you feel they should be added so long as DH is cool with that). They affect the core game whereas the GroupSpawnUnitCombatTypes tag usage does not. These spawns are simply turned off by the Size Matters option so as to keep from having overlap of intent while SM is on.
 
The problem with the kookaburra giving a mil captive should now be fixed. As poiunted out it was the only unit with a wrong value in a tag.

Where I live every spring small birds do attack humans. They go for the eyes. Knock people of push bikes and are a protected species. People come up with interesting ways of getting to work or bus. Of course if you feed them throughout the year they, that flock, wont attack you or yours. It is sort of like a protection racket.

I just settled a Tundra city that caught a Musk Ox in it's initial 9 tiles. I set a Slinger out to dispatch it and it yielded a Mil Captive Unit.

JosEPh
 
May I propose that SB I removes a cause to be unable to attack, SB II gives the ability to ignore cultural borders, and SB III gives them bStampede (a completely reckless form of onslaught)
Sure. ^^

Not fully following you here. Break it down how the defaults would be setup first.
As the list states all the animals in the first PASSIVE/AGGRESSIVE groups already spawn with bAnimalIgnoreBorders=1 That is the main reason for splitting the list in two. So if the truly aggressive animals (that spawn with bAnimalIgnoreBorders=0) can't be aggressive inside cultural borders before "SAVAGE BEAST II" then the same should hold true for the other animals.

I'm going to have to figure out in the code how to get some animals to conditionally be allowed to spawn inside borders... currently the spawn code itself I believe cuts those plots out of contention.
Animals can spawn inside cultural borders if bNeutralOnly=0 is iset in their SpawnInfo.


I'll reconsider the iAggression values for the least aggressive animals based on your feedback. It is true that badgers, crows, cassowaries and wild boars can be very bold and attack opponents that are much larger and stronger than they are (when the odds are against them). iAggression very much represent this boldness but it also represent the percentage chance for an animal to attack unprovoked which is generally extremely rare for those listed animals.
 
I just settled a Tundra city that caught a Musk Ox in it's initial 9 tiles. I set a Slinger out to dispatch it and it yielded a Mil Captive Unit.

JosEPh

No idea why then. The code for determining when you get a mil captive ignores animals by checking the isAnimal() function. It also ignores canine and feline units as well as tamed and subdued units.
 
No idea why then. The code for determining when you get a mil captive ignores animals by checking the isAnimal() function. It also ignores canine and feline units as well as tamed and subdued units.

Ah... sorry about forgetting to mention this but bAnimal as a tag on unitinfo has been removed so I had to take that line out of the python or it was going to crash there, so we need to make all animals by unitcombats completely incapable of being captured by having an overwhelming amount of resistance on the unitcombat.
 
Sure. ^^

As the list states all the animals in the first PASSIVE/AGGRESSIVE groups already spawn with bAnimalIgnoreBorders=1 That is the main reason for splitting the list in two. So if the truly aggressive animals (that spawn with bAnimalIgnoreBorders=0) can't be aggressive inside cultural borders before "SAVAGE BEAST II" then the same should hold true for the other animals.

Animals can spawn inside cultural borders if bNeutralOnly=0 is iset in their SpawnInfo.
Interesting...

How are we going to make "truly aggressive animals (that spawn with bAnimalIgnoreBorders=0) can't be aggressive inside cultural borders before "SAVAGE BEAST II"" a reality? Is this to say that if they cannot ignore cultural borders and they do spawn there anyhow, they are still incapable of attacking there?

Or is this a programming request?


I'll reconsider the iAggression values for the least aggressive animals based on your feedback. It is true that badgers, crows, cassowaries and wild boars can be very bold and attack opponents that are much larger and stronger than they are (when the odds are against them). iAggression very much represent this boldness but it also represent the percentage chance for an animal to attack unprovoked which is generally extremely rare for those listed animals.
But in many of these cases provocation can mean being seen moving. It can be entirely unintended to provoke with these creatures.
 
Ah... sorry about forgetting to mention this but bAnimal as a tag on unitinfo has been removed so I had to take that line out of the python or it was going to crash there, so we need to make all animals by unitcombats completely incapable of being captured by having an overwhelming amount of resistance on the unitcombat.

I thought you had created two civ places for animals now so you could have just changed isAnimal() to return true if the unit was from either of those nations. Then the python would not need to change and there would still be a simple test for animal units. Putting an overwhelming amount of resistance on the unitcombat would not be obvious and will come back to bite us in the longer term.
 
I thought you had created two civ places for animals now so you could have just changed isAnimal() to return true if the unit was from either of those nations. Then the python would not need to change and there would still be a simple test for animal units. Putting an overwhelming amount of resistance on the unitcombat would not be obvious and will come back to bite us in the longer term.

You can get isAnimal from CvUnit ... just not CvUnitInfos. An uninitiated unit doesn't have an assigned leader type yet. I don't mind an attempt to rewrite the python but I'm trying to find ways to eliminate tags that aren't needed and this was the only spot that gave any question as to whether it should be further needed at this time. And I'm not the guy to get into the complexities of a deep python rewrite there. That said, I would prefer that answer over the unitcombat modification. But without further python design there, this will be necessary in the meantime.
 
You can get isAnimal from CvUnit ... just not CvUnitInfos. An uninitiated unit doesn't have an assigned leader type yet. I don't mind an attempt to rewrite the python but I'm trying to find ways to eliminate tags that aren't needed and this was the only spot that gave any question as to whether it should be further needed at this time. And I'm not the guy to get into the complexities of a deep python rewrite there. That said, I would prefer that answer over the unitcombat modification. But without further python design there, this will be necessary in the meantime.

Civ does this a lot, it confuses the data storage data model and the game play data model. You can remove the tag but still have a method. Sorry I have a bad head cold, I am going back to bed. Still no news on my computer:(
 
How are we going to make "truly aggressive animals (that spawn with bAnimalIgnoreBorders=0) can't be aggressive inside cultural borders before "SAVAGE BEAST II"" a reality? Is this to say that if they cannot ignore cultural borders and they do spawn there anyhow, they are still incapable of attacking there?

Or is this a programming request?
I believe these are things that can be achieved in XML already, at least it was possible before the Barb/Animal split.

Animals that can attack at level 1 the ones from the second PASSIVE/AGGRESSIVE (P/A) group cannot spawn within cultural borders, neither can they enter cultural borders.

Animals from the first P/A group does not have the slightest ability to attack at level 1. hence they can spawn within cultural borders and ignore cultural borders for movement rules.

Instead of Savage Beast, let's say we make a new promotion-line called Feral I, II & III, that is only available to wild animals. Reasoning: It could be confusing to see the animal can ignore cultural border line if you choose Savage Beast for your own animal units.

Feral I:
<iWithdrawalChange>-5</iWithdrawalChange>
<iAttackCombatModifierChange>15</iAttackCombatModifierChange>
<iUnyieldingChange>10</iUnyieldingChange>
<iStealthDefenseChange>1</iStealthDefenseChange>
<bAnimalIgnoresBordersChange>-1</bAnimalIgnoresBordersChange>

(This one only change the behavior from animals in the first Passive/aggressive groups.)


Feral II:
<iWithdrawalChange>-5</iWithdrawalChange>
<iAttackCombatModifierChange>20</iAttackCombatModifierChange>
<iUnyieldingChange>20</iUnyieldingChange>
<iDefenseOnlyChange>-1</iDefenseOnlyChange>
<bAnimalIgnoresBordersChange>2</bAnimalIgnoresBordersChange>

(This one makes animals from both P/A groups identical in behavior.)


Feral III:
<iWithdrawalChange>-5</iWithdrawalChange>
<iAttackCombatModifierChange>25</iAttackCombatModifierChange>
<iUnyieldingChange>30</iUnyieldingChange>
<bOnslaughtChange>1</bOnslaughtChange>

But in many of these cases provocation can mean being seen moving. It can be entirely unintended to provoke with these creatures.
This is adequately simulated with stealth defense IMO, iAggression is more about the chance for an animal to see something far away and think "I should kill that" and then move a far distance to attack.
I assume here that stealth defense is not affected by aggression level.

If stealth defense did not trigger on Zero:strength: units I would allow wild boar and badger to have stealth defense at level 1 and still spawn within cultural borders.

Updated List More than halfway through:
Spoiler :
Code:
Overview of changes in Animals_CIV4UnitInfos.xml.

bOnlyDefensive=1 & bAnimalIgnoresBorders=1 in UnitInfo - bNeutralOnly=0 in SpawnInfo
Defensive Only, No Stealth Defense - Unrestricted Spawning:
	PASSIVE:
		Aardvark...............	AARDVARK...............	iAggression = 0
		African Elephant.......	AFRICANELEPHANT........	iAggression = 2
		African Grey Parrot....	AFRICANGREY............	iAggression = 0
		African Penguin........	AFRICAN_PENGUIN........	iAggression = 0
		Giant Anteater.........	ANTEATER...............	iAggression = 0
		Armadillo..............	ARMADILLO..............	iAggression = 0
		Babirusa...............	BABIRUSA...............	iAggression = 0
		Badger................. BADGER.................	iAggression = 3
		Ball Python............	BALLPYTHON.............	iAggression = 0
		Barbary macaque........	BARBARYAPE.............	iAggression = 0
		Barn Owl...............	BARNOWL................	iAggression = 0
		Barred Owl.............	BARREDOWL..............	iAggression = 0
		Beaver.................	BEAVER.................	iAggression = 0
		American Black Bear.... BLACKBEAR..............	iAggression = 1
		Wild Boar.............. BOAR...................	iAggression = 2
		Bongo..................	BONGO..................	iAggression = 0
		Booby.................. BOOBY..................	iAggression = 0
		Dromedary..............	CAMEL..................	iAggression = 0
		Capuchin Monkey........	CAPUCHIN...............	iAggression = 0
		Capybara...............	CAPYBARA...............	iAggression = 0
		Caribou................	CARIBOU................	iAggression = 0
		Cassowary..............	CASSOWARY..............	iAggression = 1
		Cod....................	COD....................	iAggression = 0
		Crab...................	CRAB...................	iAggression = 0
		Crow...................	CROW...................	iAggression = 10 ->	(If it in a game were to level up, it would turn into an insane group of suicidal crows; an easter egg reference to a certain hitchcok movie.)
		Common Spotted Cuscus..	CUSCUS.................	iAggression = 0
		Poison Dart Frog.......	DARTFROG...............	iAggression = 0
		Desert Tortoise........	DESERT_TORTOISE........	iAggression = 0
		Dolphin................	DOLPHIN................	iAggression = 0
		Onager.................	DONKEY.................	iAggression = 0
		Duck...................	DUCK...................	iAggression = 0
		Dugong.................	DUGONG.................	iAggression = 0
		Asian Elephant.........	ELEPHANT...............	iAggression = 1
		Emu....................	EMU....................	iAggression = 1
		Fennec Fox.............	FENNECFOX..............	iAggression = 0
		Flamingo...............	FLAMINGO............... iAggression = 0
		Galapagos Penguin......	GALAPAGOS_PENGUIN......	iAggression = 0
		Galapagos Tortoise.....	GALAPOGOS_TORTOISE.....	iAggression = 0
		Thomson's Gazelle......	GAZELLE................	iAggression = 0
		Gemsbok................	GEMSBOK................	iAggression = 1
		Giraffe................	GIRAFFE................	iAggression = 1
		Glyptodon..............	GLYPTO.................	iAggression = 1
		Megatherium............	GROUNDSLOTH............	iAggression = 1
		Guanaco................	GUANACO................	iAggression = 0
		Gull...................	GULL...................	iAggression = 0
		Pygmy Hippopotamus.....	PYGMYHIPPO.............	iAggression = 2
		Horse..................	HORSE..................	iAggression = 0
		Humpback Whale.........	HUMPBACK_WHALE.........	iAggression = 0
		Walia Ibex.............	IBEX...................	iAggression = 2
		Green Iguana...........	IGUANA.................	iAggression = 0
		Impala.................	IMPALA.................	iAggression = 0
		Mammoth................	MAMMOTH................	iAggression = 1
		
	AGGRASSIVE:
		Arctic Fox............. ARCTICFOX..............	iAggression = 0	(Target: WATERFOWL & SEABIRD)
		Beluga Whale...........	BELUGA.................	iAggression = 0	(Target: CRUSTACEAN & FISH_BONEY)
		Ussuri Dhole...........	DHOLE..................	iAggression = 3	(Target: ANTELOPE, BOVINE, CERVID, EQUINE & SWINE)
		Dingo..................	DINGO..................	iAggression = 2	(Target: MARSUPIAL)
		Bald Eagle.............	EAGLE..................	iAggression = 1	(Target: BIRD_SEABIRD, BIRD_WATERFOWL & RODENT)
		Ethiopian Wolf.........	EWOLF..................	iAggression = 1	(Target: RODENT)
		Gharial................	GHARIAL................	iAggression = 1	(Target: FINE, DIMINUTIVE & TINY)
		Giant Squid............	GIANT_SQUID............	iAggression = 2	(Target: SMALL & MEDIUM)
		Hammerhead Shark.......	HAMMERHEAD.............	iAggression = 2	(Target: INVERTEBRATE, FISH_BONEY & FISH_RAY)
		Harpy Eagle............	HARPYEAGLE.............	iAggression = 0	(Target: Anteater, Treesloth, Armadillo, Aardvark, PARROT, SNAKE, LIZARD, MONKEY & PROSIMIAN)
		Hawk...................	HAWK...................	iAggression = 0	(Target: SNAKE, LIZARD, GAMEBIRD & SONGBIRD)
		Great Horned Owl.......	HORNEDOWL..............	iAggression = 3	(Target: SNAKE, LIZARD, RODENT, GAMEBIRD, SONGBIRD, WATERFOWL & SEABIRD)

bAnimalIgnoresBorders=0 in UnitInfo - bNeutralOnly=1 in SpawnInfo
Can Attack - Stealth Defense - Only neutral Spawning:
	PASSIVE:
		Asian Black Bear....... ASIANBEAR..............	iAggression = 3 (Target: SOLO & PARTY)
		Bison.................. BISON..................	iAggression = 3 (Defensive Only)
		Cape Buffalo...........	BUFFALO................ iAggression = 3
		Cave Bear..............	CAVEBEAR...............	iAggression = 1
???	???	Chimpanzee.............	CHIMPANZEE.............	iAggression = 1
		Auroch.................	COW.................... iAggression = 4	(Defensive Only)
		Gorilla................	GORILLA................	iAggression = 3	(Defensive Only)
		Hippopotamus...........	HIPPO..................	iAggression = 5
	AGGRASSIVE:
		Jaguar.................	ANIMAL_JAGUAR..........	iAggression = 9 (Target: SOLO, PARTY, CERVID, RODENT & TAPIR)
		Brown Bear............. BEAR...................	iAggression = 2 (Target: BOVINE, CERVID, GOAT & SWINE)
		Bengal Tiger...........	BENGALTIGER............	iAggression = 7 (Target: ANTELOPE, BOVINE, CERVID & SWINE)
		Black Caiman...........	CAIMAN.................	iAggression = 3	(Target: BIRD, CERVID, RODENT & TAPIR)
		Cave Lion..............	CAVE_LION..............	iAggression = 6	(Target: BOVINE, CERVID, EQUINE & URSINE)
		Cheetah................	CHEETAH................	iAggression = 4	(Target: ANTELOPE, RATITE, & SWINE)
???	???	Chimpanzee.............	CHIMPANZEE.............	iAggression = 1	(Target: ANTELOPE, MONKEY & SWINE)
		Cobra..................	COBRA..................	iAggression = 2	(Target: DIMINUTIVE & TINY)
		Dire Wolf..............	DIREWOLF...............	iAggression = 6	(Not a picky eater)
		American Aligator......	GATOR..................	iAggression = 3	(Defensive Only - Target: DIMINUTIVE, TINY, SMALL & MEDIUM)
		Chineese Aligator......	GATOR_ASIAN............	iAggression = 2	(Defensive Only - Target: DIMINUTIVE, TINY, SMALL)
		Great White Shark......	GREATWHITE.............	iAggression = 4
		Grizzly Bear...........	GRIZZLY................	iAggression = 4
		Haast Eagle............	HAAST_EAGLE............	iAggression = 3	(Target: ANTELOPE, RATITE & SWINE)
		Striped Hyena..........	HYENA..................	iAggression = 2	(Target: Desert Tortoise, Wild Boar & Onger)
	BARBARIAN
???	???	Chimpanzee.............	CHIMPANZEE.............	iAggression = 1	(Target: ANTELOPE, MONKEY & SWINE)

"Savage Beast I" enables stealth defense and removes the animals ability to enter cultural borders.
"Savage Beast II" enables the animal to attack and to again enter cultural borders.
"Savage Beast III" Enables onslaught.
This may be moved to a different promotion-line reserved for wild animals.

EDIT: I would like to suggest:
Code:
	BARBARIAN
		Chimpanzee.............	CHIMPANZEE.............	iAggression = 2	(Assassinate: ANTELOPE, MONKEY & SWINE)
Chamipanzees are pack hunters and eat almost all TINY-SMALL mammals they can find in their habitat; but they are also hunted by most typical predators in their habitat...
This would of course depend on if we decide to let barbarians and animals fight at all.
And it would be strange to see chimpanzees entering barbarian cities, so I'm not sure about the suggestion myself. Would the bExile keep them out of barbarian territory?
What is your opinion TB?

"In fact, during the peak dry season months, the estimated per capita meat intake is about 65 grams of meat per day for each adult chimpanzee. This approaches the meat intake by the members of some human foraging societies in the lean months of the year. Chimpanzee dietary strategies may thus approximate those of human hunter-gatherers to a greater degree than we had imagined."
 
I believe these are things that can be achieved in XML already, at least it was possible before the Barb/Animal split.

Animals that can attack at level 1 the ones from the second PASSIVE/AGGRESSIVE (P/A) group cannot spawn within cultural borders, neither can they enter cultural borders.

Animals from the first P/A group does not have the slightest ability to attack at level 1. hence they can spawn within cultural borders and ignore cultural borders for movement rules.
Ok... see how well it works as intended and we can go from there if we need to adjust anything.

Instead of Savage Beast, let's say we make a new promotion-line called Feral I, II & III, that is only available to wild animals. Reasoning: It could be confusing to see the animal can ignore cultural border line if you choose Savage Beast for your own animal units.

Feral I:
<iWithdrawalChange>-5</iWithdrawalChange>
<iAttackCombatModifierChange>15</iAttackCombatModifierChange>
<iUnyieldingChange>10</iUnyieldingChange>
<iStealthDefenseChange>1</iStealthDefenseChange>
<bAnimalIgnoresBordersChange>-1</bAnimalIgnoresBordersChange>

(This one only change the behavior from animals in the first Passive/aggressive groups.)


Feral II:
<iWithdrawalChange>-5</iWithdrawalChange>
<iAttackCombatModifierChange>20</iAttackCombatModifierChange>
<iUnyieldingChange>20</iUnyieldingChange>
<iDefenseOnlyChange>-1</iDefenseOnlyChange>
<bAnimalIgnoresBordersChange>2</bAnimalIgnoresBordersChange>

(This one makes animals from both P/A groups identical in behavior.)


Feral III:
<iWithdrawalChange>-5</iWithdrawalChange>
<iAttackCombatModifierChange>25</iAttackCombatModifierChange>
<iUnyieldingChange>30</iUnyieldingChange>
<bOnslaughtChange>1</bOnslaughtChange>
Seems good to me. Wild animal prereq obviously. It wouldn't be Onslaught you'd use though... bStampedeChange I think is the tag.

This is adequately simulated with stealth defense IMO, iAggression is more about the chance for an animal to see something far away and think "I should kill that" and then move a far distance to attack.
I assume here that stealth defense is not affected by aggression level.

If stealth defense did not trigger on Zero:strength: units I would allow wild boar and badger to have stealth defense at level 1 and still spawn within cultural borders.
I don't see a problem with allowing them to spawn within cultural borders and still be a potential surprise problem for workers stumbling onto them.

I get your thinking here and it does mean I may need to rethink the basic premise in the AI that low aggression means the animal would do all it could to try to get away from visible threats. Perhaps something like a bTerritorial tag could be used to negate any attempts to flee and get animals to hold their ground instead.

Updated List More than halfway through:
Spoiler :
Code:
Overview of changes in Animals_CIV4UnitInfos.xml.

bOnlyDefensive=1 & bAnimalIgnoresBorders=1 in UnitInfo - bNeutralOnly=0 in SpawnInfo
Defensive Only, No Stealth Defense - Unrestricted Spawning:
	PASSIVE:
		Aardvark...............	AARDVARK...............	iAggression = 0
		African Elephant.......	AFRICANELEPHANT........	iAggression = 2
		African Grey Parrot....	AFRICANGREY............	iAggression = 0
		African Penguin........	AFRICAN_PENGUIN........	iAggression = 0
		Giant Anteater.........	ANTEATER...............	iAggression = 0
		Armadillo..............	ARMADILLO..............	iAggression = 0
		Babirusa...............	BABIRUSA...............	iAggression = 0
		Badger................. BADGER.................	iAggression = 3
		Ball Python............	BALLPYTHON.............	iAggression = 0
		Barbary macaque........	BARBARYAPE.............	iAggression = 0
		Barn Owl...............	BARNOWL................	iAggression = 0
		Barred Owl.............	BARREDOWL..............	iAggression = 0
		Beaver.................	BEAVER.................	iAggression = 0
		American Black Bear.... BLACKBEAR..............	iAggression = 1
		Wild Boar.............. BOAR...................	iAggression = 2
		Bongo..................	BONGO..................	iAggression = 0
		Booby.................. BOOBY..................	iAggression = 0
		Dromedary..............	CAMEL..................	iAggression = 0
		Capuchin Monkey........	CAPUCHIN...............	iAggression = 0
		Capybara...............	CAPYBARA...............	iAggression = 0
		Caribou................	CARIBOU................	iAggression = 0
		Cassowary..............	CASSOWARY..............	iAggression = 1
		Cod....................	COD....................	iAggression = 0
		Crab...................	CRAB...................	iAggression = 0
		Crow...................	CROW...................	iAggression = 10 ->	(If it in a game were to level up, it would turn into an insane group of suicidal crows; an easter egg reference to a certain hitchcok movie.)
		Common Spotted Cuscus..	CUSCUS.................	iAggression = 0
		Poison Dart Frog.......	DARTFROG...............	iAggression = 0
		Desert Tortoise........	DESERT_TORTOISE........	iAggression = 0
		Dolphin................	DOLPHIN................	iAggression = 0
		Onager.................	DONKEY.................	iAggression = 0
		Duck...................	DUCK...................	iAggression = 0
		Dugong.................	DUGONG.................	iAggression = 0
		Asian Elephant.........	ELEPHANT...............	iAggression = 1
		Emu....................	EMU....................	iAggression = 1
		Fennec Fox.............	FENNECFOX..............	iAggression = 0
		Flamingo...............	FLAMINGO............... iAggression = 0
		Galapagos Penguin......	GALAPAGOS_PENGUIN......	iAggression = 0
		Galapagos Tortoise.....	GALAPOGOS_TORTOISE.....	iAggression = 0
		Thomson's Gazelle......	GAZELLE................	iAggression = 0
		Gemsbok................	GEMSBOK................	iAggression = 1
		Giraffe................	GIRAFFE................	iAggression = 1
		Glyptodon..............	GLYPTO.................	iAggression = 1
		Megatherium............	GROUNDSLOTH............	iAggression = 1
		Guanaco................	GUANACO................	iAggression = 0
		Gull...................	GULL...................	iAggression = 0
		Pygmy Hippopotamus.....	PYGMYHIPPO.............	iAggression = 2
		Horse..................	HORSE..................	iAggression = 0
		Humpback Whale.........	HUMPBACK_WHALE.........	iAggression = 0
		Walia Ibex.............	IBEX...................	iAggression = 2
		Green Iguana...........	IGUANA.................	iAggression = 0
		Impala.................	IMPALA.................	iAggression = 0
		Mammoth................	MAMMOTH................	iAggression = 1
		
	AGGRASSIVE:
		Arctic Fox............. ARCTICFOX..............	iAggression = 0	(Target: WATERFOWL & SEABIRD)
		Beluga Whale...........	BELUGA.................	iAggression = 0	(Target: CRUSTACEAN & FISH_BONEY)
		Ussuri Dhole...........	DHOLE..................	iAggression = 3	(Target: ANTELOPE, BOVINE, CERVID, EQUINE & SWINE)
		Dingo..................	DINGO..................	iAggression = 2	(Target: MARSUPIAL)
		Bald Eagle.............	EAGLE..................	iAggression = 1	(Target: BIRD_SEABIRD, BIRD_WATERFOWL & RODENT)
		Ethiopian Wolf.........	EWOLF..................	iAggression = 1	(Target: RODENT)
		Gharial................	GHARIAL................	iAggression = 1	(Target: FINE, DIMINUTIVE & TINY)
		Giant Squid............	GIANT_SQUID............	iAggression = 2	(Target: SMALL & MEDIUM)
		Hammerhead Shark.......	HAMMERHEAD.............	iAggression = 2	(Target: INVERTEBRATE, FISH_BONEY & FISH_RAY)
		Harpy Eagle............	HARPYEAGLE.............	iAggression = 0	(Target: Anteater, Treesloth, Armadillo, Aardvark, PARROT, SNAKE, LIZARD, MONKEY & PROSIMIAN)
		Hawk...................	HAWK...................	iAggression = 0	(Target: SNAKE, LIZARD, GAMEBIRD & SONGBIRD)
		Great Horned Owl.......	HORNEDOWL..............	iAggression = 3	(Target: SNAKE, LIZARD, RODENT, GAMEBIRD, SONGBIRD, WATERFOWL & SEABIRD)

bAnimalIgnoresBorders=0 in UnitInfo - bNeutralOnly=1 in SpawnInfo
Can Attack - Stealth Defense - Only neutral Spawning:
	PASSIVE:
		Asian Black Bear....... ASIANBEAR..............	iAggression = 3 (Target: SOLO & PARTY)
		Bison.................. BISON..................	iAggression = 3 (Defensive Only)
		Cape Buffalo...........	BUFFALO................ iAggression = 3
		Cave Bear..............	CAVEBEAR...............	iAggression = 1
???	???	Chimpanzee.............	CHIMPANZEE.............	iAggression = 1
		Auroch.................	COW.................... iAggression = 4	(Defensive Only)
		Gorilla................	GORILLA................	iAggression = 3	(Defensive Only)
		Hippopotamus...........	HIPPO..................	iAggression = 5
	AGGRASSIVE:
		Jaguar.................	ANIMAL_JAGUAR..........	iAggression = 9 (Target: SOLO, PARTY, CERVID, RODENT & TAPIR)
		Brown Bear............. BEAR...................	iAggression = 2 (Target: BOVINE, CERVID, GOAT & SWINE)
		Bengal Tiger...........	BENGALTIGER............	iAggression = 7 (Target: ANTELOPE, BOVINE, CERVID & SWINE)
		Black Caiman...........	CAIMAN.................	iAggression = 3	(Target: BIRD, CERVID, RODENT & TAPIR)
		Cave Lion..............	CAVE_LION..............	iAggression = 6	(Target: BOVINE, CERVID, EQUINE & URSINE)
		Cheetah................	CHEETAH................	iAggression = 4	(Target: ANTELOPE, RATITE, & SWINE)
???	???	Chimpanzee.............	CHIMPANZEE.............	iAggression = 1	(Target: ANTELOPE, MONKEY & SWINE)
		Cobra..................	COBRA..................	iAggression = 2	(Target: DIMINUTIVE & TINY)
		Dire Wolf..............	DIREWOLF...............	iAggression = 6	(Not a picky eater)
		American Aligator......	GATOR..................	iAggression = 3	(Defensive Only - Target: DIMINUTIVE, TINY, SMALL & MEDIUM)
		Chineese Aligator......	GATOR_ASIAN............	iAggression = 2	(Defensive Only - Target: DIMINUTIVE, TINY, SMALL)
		Great White Shark......	GREATWHITE.............	iAggression = 4
		Grizzly Bear...........	GRIZZLY................	iAggression = 4
		Haast Eagle............	HAAST_EAGLE............	iAggression = 3	(Target: ANTELOPE, RATITE & SWINE)
		Striped Hyena..........	HYENA..................	iAggression = 2	(Target: Desert Tortoise, Wild Boar & Onger)
	BARBARIAN
???	???	Chimpanzee.............	CHIMPANZEE.............	iAggression = 1	(Target: ANTELOPE, MONKEY & SWINE)

"Savage Beast I" enables stealth defense and removes the animals ability to enter cultural borders.
"Savage Beast II" enables the animal to attack and to again enter cultural borders.
"Savage Beast III" Enables onslaught.
This may be moved to a different promotion-line reserved for wild animals.
Looking good.
EDIT: I would like to suggest:
Code:
	BARBARIAN
		Chimpanzee.............	CHIMPANZEE.............	iAggression = 2	(Assassinate: ANTELOPE, MONKEY & SWINE)
Chamipanzees are pack hunters and eat almost all TINY-SMALL mammals they can find in their habitat; but they are also hunted by most typical predators in their habitat...
This would of course depend on if we decide to let barbarians and animals fight at all.
And it would be strange to see chimpanzees entering barbarian cities, so I'm not sure about the suggestion myself. Would the bExile keep them out of barbarian territory?
What is your opinion TB?

"In fact, during the peak dry season months, the estimated per capita meat intake is about 65 grams of meat per day for each adult chimpanzee. This approaches the meat intake by the members of some human foraging societies in the lean months of the year. Chimpanzee dietary strategies may thus approximate those of human hunter-gatherers to a greater degree than we had imagined."
[/quote] I think we're going to start by allowing animals and barbs to clash and this brings up another point... animals should basically as a rule have bNoCapture right? So this means an animal can never capture a city, barb or otherwise - which is probably a good idea to ensure.
 
For my next commit after the fix I've just put in place, I'll be resolving DH's python complaint - I reinstated 'isAnimal()' but keep in mind that it NOW means ALL units with UNITCOMBAT_ANIMAL, whether wild, subdued or whatnot. Additionally, I'm installing the isAnimal() check as a second check to the tag usage itself on isNoCapture. This means that by setting UNITCOMBAT_ANIMAL, you are making the code immediately assume the unit has the bNoCapture tag in use.
 
@DH: Why does locust swarms, unlike all other animals, use this spawning mechanism?
Code:
			<TerrainNatives>
				<TerrainNative>
					<TerrainType>TERRAIN_GRASS</TerrainType>
					<bTerrainNative>1</bTerrainNative>
				</TerrainNative>
				<TerrainNative>
					<TerrainType>TERRAIN_PLAINS</TerrainType>
					<bTerrainNative>1</bTerrainNative>
				</TerrainNative>
				<TerrainNative>
					<TerrainType>TERRAIN_DESERT</TerrainType>
					<bTerrainNative>1</bTerrainNative>
				</TerrainNative>
			</TerrainNatives>
I would remove it and make the SpawnInfos deal with this.
 
Back
Top Bottom