Mod-Modders Guide to Fall Further

All summons give Feedback, unless the summon had a starting promotion which granted them free XP per turn (ie - Hero). Summoner Trait gets 50% feedback, others get 25%

So, when a summon dies, the summoner gets some XP from it? Now, this is so great! :thumbsup:
 
If the summon had any XP to give back, yes. But it is pretty rare you summon something without sending it out to do battle, seeing as all of the summons we have released for public use are base FfH and combat oriented.
 
What install maker-program does the Fall Further team use? Fall Flat's going through it's final test, and then I'm just going to, in the hilariously immortalized (by YouTube) words of Bill O' Riley, "DO IT LIVE!"
 
Would an AlwaysHostile Animal-civ unit attack Orc-civ Barbarians? (I'm looking for a way to make an animal hostile to everyone but other animals.)
 
Thanks.

I'm looking for a way to allow an immobile unit a ranged attack. I need to stop working on this for now, but the first thing I'll try is making the unit DOMAIN_IMMOBILE with 1 movement point. If that doesn't work I might get freaky with some python.
 
Just added 2 new calls to CyGame which should help to speed up some python processes, though I could actually only think of one case where it is used already:

CyGame().getNumCivActive(iCiv) - Tells you how many players who are currently alive are this Civilization type

CyGame().getCivActivePlayer(iCiv, iCount) - Tells you the iPlayer number for someone who is using this Civilization Type.


Previously, the closest which existed was CyGame().isCivEverActive(iCiv) which just told you if at any point in the course of the game anyone has used a certain Civ.

What this does for you is that you can replace a check like this:

Code:
			for iPlayer in range(gc.getMAX_PLAYERS()):
				pPlayer = gc.getPlayer(iPlayer)
				if (pPlayer.isAlive()):
					if pPlayer.getCivilizationType() == iCivilization:

With this:

Code:
			iNumCivs = CyGame().getNumCivActive(iCivilization)
			for i in range (iNumCivs):
				iPlayer = CyGame().getCivActivePlayer(iCivilization, i)

Which will be MUCH faster since the loop is done in C++ instead of python. At least, supposedly.


EDIT: @Tarq: I assume you tested it, but it should already be possible for a unit to make a ranged attack without having any movement available. We set that up a while ago since you could make a ranged attack, then move full movement, but not the other way around. So we supposedly fixed that.

EDIT2: Forgot to mention, but this new approach also makes it easy to randomly select one of the Players who uses a certain Civilization.
 
Thought I'd upload my last minor tweak to the makefile. The last one I had the destination path for c:\program files\... for both release & debug targets, and it was confusing nmake. Now both targets build to their own folders, and I added real copy steps to the FF/assets/ folder in the app dir.

Cheers
 

Attachments

Yes, just create a new improvement and have it contain the Lair fields (spawns a unit, for a civ, and if you want it to auto-place itself, give it a Creation Weight. If you want it to be explorable you need to add a spell, and if you want the AI to actually explore it you need to flag it bExplorable)
 
Ah, I assume you mean <iAppearanceProbability>? I've actually done all of that, I'm guessing the map was just small enough that there wasn't enough desert. Gonna try a larger map.

You should try an arid map setting for your tests. You will have more desert generated and make your life a lot easier :)
 
Allright, I need the python to check and see if something's in enemy cultural borders.

I'm going to insert a check in the lair explore code so if it's not in your borders or neutral borders, you can't open it. Fricken AI opened the Broken Sephelcher and cost me a city when a named demon came out.
 
Sounds like exactly what a human would do :p


To check for ENEMY territory, check if the plot is owned, if it is, check who owns it, then check what team they are on, then check if you are at war with that team. To make it your territory or unowned territory is easier, just check if it is owned, and check if that person is you.
 
I have managed to do most of needed work for the beggining of my mod. However, I do have a hard time making my changes apply.
I have looked through the code trying to find out where the determination of attacker's and defender's strength are made. After some time I have concluded that it should be the CvUnit::MaxCombatStr(...), method.
I have made the necessary changes(or so I think) to all the *combatstr and the getFirepower methods.
The results can even be seen in game(when I am giving Elven Veteran to a unit and this is fighting against a unit with the elven promotion, there is no change in strength display, but there is a change in odds display. Tested axeman vs axeman units. for 4 vs 4 the odds are 90% for the attacker(it has +2 attack vs Elven) while vs any other unit it gets the normal 50%). However, the tests are showing that this is not the case. The results are 50%(or less) instead.
Anyone can point into the right direction for solving the issue?
 
Haven't messed with combat too much overall, but that is where you want to work. I would suspect there might be a bit of an issue with how you coded it. Did you only change pCombatDetails-> data, or did you also change iCombat, iStr or iModifier?
 
Back
Top Bottom