Pie provided me with an initial dll wishlist:
-) new Mission: drive out religion
Missionaries can remove religions from a city. Up to now, that's a special unit in PAE, that should be merged with the normal missionary.
kmod implements some chance, that failing missionaries can remove another religion from the city. That should be disabled.
air<int, ReligionTypes> > rankedReligions;might be easy, some unit fn like best defender chooses who to defend with, GG can be excluded for last or something.-) Generals should only defend, if they are the most healthy (not only strongest) unit in the stack (lead from behind, if you will)
i saw the cvcity calc change you did, i wonder , why is it like this in PAE?-) Population numbers. Such that Pop 5 doesn't mean 500'000 people in a city. Pop 1 around 500 people, Pop 6 around 50.000. Pop 25 close to 1 M.
Previously: Pop^2.8 *1000.
Suggestion: round(Pop^2.8) * 100 + 400 yields Pop1: 500, Pop6: 15500, Pop25: 821200.
Alternative: round(Pop^2.09)* 1200 - 700 yields Pop1:500, Pop6: 49700, Pop25: 1001300.
For the first version I'll put up a PR. I like the slower start with 500, 1100, 2600, 5300, 9500, 15500 vs. 500, 4100, 11300, 20900, 34100, 49700.
-) Forts in enemy territory: defensive bonus for whomever is occupying it. Currently, PAE modifies the plot culture to change the ownership accordingly.
-) Forts and lookout towers with +1 vision range for units on them. Currently, a promotion is given dynamically onUnitMove.
-) Ice on water: should be accessible to land units and not for ships (except for submarines, which PAE does not have).
Something like a "FeatureMakesValid" tag for movement?
-) Terrain: Desert, swamp and tundra should cause damage. Low priority feature. Already implemented in the old project and could be merged.
-) UnitClassType: Chariot: should not be able to move through the woods (forest, dense, jungle; but savanna is ok). Any road enables movement. Optionally the same for heavy siege weapons.
How could the AI cope with such a rule? Path finding is so far no part of their production planning, I guess.
sounds complicated for me to handle.-) Unit religion: each unit is assigned (statically) a religion based on the city where they were recruited. If two units meet on the battlefield who share the same religion, it might happen that they refuse to fight each other, or one side might defect.
As written before, that's also at least partly implemented in the old project
For me it works without problems.hey,
i merged your PR's,
i guess i need to recompile the dll .
will do it very soon, no worries.
i havent had time to check - for now game load fine?
[...]
i saw the cvcity calc change you did, i wonder , why is it like this in PAE?
Sure, if you have a modcomp in mind. Otherwise, I should be able to handle it.ok,
though adding a new mission by dll might be complicated to me - cant we use PlatyPing mods for that? or orion ?
I re-read that part and explained it to Pie in a PM, let's see what he says.in cvunit - i guess maybe removing this should handle it.
// K-Mod. Instead of simply failing, give some chance of removing one of the existing religions.
std::vector<std:air<int, ReligionTypes> > rankedReligions;
int iRandomWeight = GC.getDefineINT("RELIGION_INFLUENCE_RANDOM_WEIGHT");
might be easy, some unit fn like best defender chooses who to defend with, GG can be excluded for last or something.
i cant merge in super forts, with all its possibilities if you want:
visibality range, bombardment, ai code for placing forts, ranged culture, unique improvement per x tiles.
can easily be done i think.
i got movable mountains over my mod, i guess same could be applied for ice.
another code i have ready in my mod - uses the LadiesOgre code.
i havent used it, but i maintain its code.
FeatureTypes eFeature = plot()->getFeatureType();
if (NO_FEATURE != eFeature)
{
if (0 != GC.getFeatureInfo(eFeature).getTurnDamage())
{
changeDamage(GC.getFeatureInfo(eFeature).getTurnDamage(), NO_PLAYER);
}
}
i guess the path uses check for movable tile, so just placing false to those specific terrain/features, will do the trick.
sounds complicated for me to handle.
i know of some old python mods in existence, but maybe use the PAE code.
so anyway,
let me know when do you think the merge stage of kmod is done and the convert code part begins. feel free to task me with assignments and prioritize what you want first.
at your service,
alright, ill merge it.Yep, Super Forts sound absolutely perfect.
cool.our 'missionary removes religion' can stay
i dont think that matters - just need to set the proper checks. it will be ok.The hard part about ice is that water plots are currently generally blocked for any land unit that is not bCanMoveAllTerrain.
no, ill merge it in .it already in the DLL code in our repository?
that are route limit mods that exists we can use them.What does the AI make of it, when their chariots cannot move towards the enemy because there is a lot of woods but no roads?
oki, ill startI think the merge stage is done and we can distribute it to a few interested testers.
The Forts mod sounds really cool for me. (I think I have played with it already in another Civ4 Mod)Forts:
I don't know if it's good if you can gain culture per turn... but I'd say yes, if the fort gains all the 8 plots surrounding it. even it's in enemy territory? I don't know.
Forts:
I don't know if it's good if you can gain culture per turn... but I'd say yes, if the fort gains all the 8 plots surrounding it. even it's in enemy territory? I don't know
AttitudeTypes CvPlayerAI::AI_getAttitude(PlayerTypes ePlayer, bool bForced) const
{
PROFILE_FUNC();
FAssertMsg(ePlayer != getID(), "shouldn't call this function on ourselves");
return (AI_getAttitudeFromValue(AI_getAttitudeVal(ePlayer, bForced)));
}
[B]FAssert(AI_getWarPlan(eLoopTeam) == WARPLAN_PREPARING_TOTAL || AI_getWarPlan(eLoopTeam) == WARPLAN_LIMITED);[/B]
if (isHuman() || kOurMaster.isHuman())
{
if (AI_getWarPlanStateCounter(eLoopTeam) > 20 * iAbandonTimeModifier / 100)
{
if (gTeamLogLevel >= 1)
{
logBBAI(" Team %d (%S) abandoning WARPLANS against team %d (%S) due to human / vassal timeout", getID(), GET_PLAYER(getLeaderID()).getCivilizationDescription(0), eLoopTeam, GET_PLAYER(GET_TEAM(eLoopTeam).getLeaderID()).getCivilizationDescription(0));
}
AI_setWarPlan(eLoopTeam, NO_WARPLAN);
}
}
# Wars
for item in pWBTeam.bWarWithTeamList:
pTeam.declareWar(item, False, WarPlanTypes.NO_WARPLAN)
(gc.getPlayer(self.diploScreen.getWhoTradingWith()).AI_getAttitude(gc.getGame().getActivePlayer())

if (isAnimal())
{
/* animals are everywhere!
if (pPlot->isOwned())
{
return false;
}
*/
if (!bAttack)
{
if (pPlot->getBonusType() != NO_BONUS)
{
return false;
}
if (pPlot->getImprovementType() != NO_IMPROVEMENT)
{
return false;
}
if (pPlot->getNumUnits() > 0)
{
return false;
}
}
}
Could we also set them back to UNITCOMBAT_ANIMAL? Right now, they are all UNITCOMBAT_MELEE. But if that were to be changed, also the promotions would require modification.