Hippus Horses

StormbringerGT

Chieftain
Joined
Jul 9, 2007
Messages
75
When playing as the hippus, later I can create Mounted Bowmen. These make pretty good raiding units and skrimishers to protect my borders. However even later, once I can build knights I believe, I lost the ability to build them? I can only build knights. I cannot build my earlier horsemen or my mounted bowen. This is my first time playing Hippus. Is this a bug or is this how it is. It seems weird that the horselords later have acces to one type of horse unit that I can only build 4 of.....
 
I think this is a weird issue that has appeared about units obsoleting. Since your Knights are higher tech units, the game won't let you build lower tech horse units until it no longer believes you can build knights. Therefore, either build those knights real quick, or preferably, place them in the building's quene behind whatever horse unit you wanted to build. As long as all 4 knights are either in the field or in some quene you will pass the game's "can't build highest tech unit" test and will be able to build all your other horses again.

Edit: Ninja'd
 
Yeah its been a fairly common problem for all the civs, not just Hippus. I think the other thread is still on the front page since I just read it today. Titled something like, "National Units stop lower tech one's from being built."
 
Yeah its been a fairly common problem for all the civs, not just Hippus. I think the other thread is still on the front page since I just read it today. Titled something like, "National Units stop lower tech one's from being built."

Yeah just found it. Seems this is a common problem. :(
 
I posted a thread about it a bit back as well. It was really, really annoying as I had some units I wanted to upgrade so I was waiting for them to get back to a city with a stable. Meant I had to hold off on production.
Even worse, I couldn't upgrade my units until I took knights out of the various productions queues they'd slipped into. Any unit in queue is automatically upgraded to the limit of 4. Thankfully my empire wasn't too large... :twitch:

The issue is fairly easy to fix, if what other people posted in my old thread was true. I imagine it's one of those things that will get taken care of eventually so long as we keep being noisy about it.
 
Have you considered how hippus knights and horse archers cannot get flanking 3? Because they'd get too high withdrawal rates? It's below 100% (ok 95% is pretty impressive) so it is not perfectly reliable.

And when I think of Magnadine. 50% base + 10% hippus bonus = 60%. He can only get flanking 1. What good is he for me? My knight whom I upgraded from a horseman has 95% withdrawal rate and is just about as strong as Magnadine. And he probably already comes with a bunch of promotions.
 
Have you considered how hippus knights and horse archers cannot get flanking 3? Because they'd get too high withdrawal rates? It's below 100% (ok 95% is pretty impressive) so it is not perfectly reliable.

And when I think of Magnadine. 50% base + 10% hippus bonus = 60%. He can only get flanking 1. What good is he for me? My knight whom I upgraded from a horseman has 95% withdrawal rate and is just about as strong as Magnadine. And he probably already comes with a bunch of promotions.

Magnadine can recruit defenders on the go. :P
 
Since we're talking withdrawal now...

I consider withdrawal to be bugged. Why? Because the limit won't always work the way it's done now. You CAN get over it (as zup said) so what's the point in a limit that's not enforced?

Not to mention if you have 80% and a promotion would put you at 100% you can't pick it because you'd go over the limit (90%). I find that ridiculous, you should be able to pick it and get 90%.

Spoiler code for fixing it, including AI :

My changes in green
CvUnit::isPromotionValid(PromotionTypes ePromotion)
Code:
[COLOR="#00ff00"]//[/COLOR]    if (promotionInfo.getWithdrawalChange() > 0)
[COLOR="#00ff00"]//[/COLOR]    {
[COLOR="#00ff00"]//[/COLOR]        if (promotionInfo.getWithdrawalChange() + m_pUnitInfo->getWithdrawalProbability() + getExtraWithdrawal() > GC.getDefineINT("MAX_WITHDRAWAL_PROBABILITY"))
[COLOR="#00ff00"]//[/COLOR]        {
[COLOR="#00ff00"]//[/COLOR]            return false;
[COLOR="#00ff00"]//[/COLOR]        }
[COLOR="Lime"]//[/COLOR]    }


CvUnit::resolveCombat(CvUnit* pDefender, CvPlot* pPlot, CvBattleDefinition& kBattle)
Code:
if (getDamage() + iAttackerDamage >= maxHitPoints() && GC.getGameINLINE().getSorenRandNum(100, "Withdrawal") < [COLOR="#00ff00"]std::min(GC.getDefineINT("MAX_WITHDRAWAL_PROBABILITY"), [/COLOR]withdrawalProbability()[COLOR="#00ff00"])[/COLOR])

Code:
if (GC.getGameINLINE().getSorenRandNum(100, "Withdrawal") < [COLOR="Lime"]std::min(GC.getDefineINT("MAX_WITHDRAWAL_PROBABILITY"), [/COLOR]pDefender->getWithdrawlProbDefensive()[COLOR="#00ff00"])[/COLOR])


CvUnitAI::AI_promotionValue(PromotionTypes ePromotion)
Code:
iTemp = [COLOR="#00ff00"]std::min([/COLOR]GC.getPromotionInfo(ePromotion).getWithdrawalChange()[COLOR="#00ff00"], GC.getDefineINT("MAX_WITHDRAWAL_PROBABILITY") - withdrawalProbability())[/COLOR];


Note: this requires adding two new text values, TXT_KEY_UNIT_WITHDRAWL_PROBABILITY_SHORT_MAX and TXT_KEY_UNIT_WITHDRAWL_PROBABILITY_MAX. I was thinking both should have (max) at the end of the string, to show it is the maximum withdrawal you can get. Ofc, you could change this without making new text strings too.
CvGameTextMgr::setUnitHelp(CvWStringBuffer &szString, const CvUnit* pUnit, bool bOneLine, bool bShort)
Code:
		if (pUnit->withdrawalProbability() > 0)
		{
			if (bShort)
			{
				szString.append(NEWLINE);
				[COLOR="#00ff00"]if (pUnit->withdrawalProbability() >= GC.getDefineINT("MAX_WITHDRAWAL_PROBABILITY"))
				{
				    szString.append(gDLL->getText("TXT_KEY_UNIT_WITHDRAWL_PROBABILITY_SHORT_MAX", GC.getDefineINT("MAX_WITHDRAWAL_PROBABILITY")));
				}
				else
				{[/COLOR]
				    szString.append(gDLL->getText("TXT_KEY_UNIT_WITHDRAWL_PROBABILITY_SHORT", pUnit->withdrawalProbability()));
[COLOR="#00ff00"]				}[/COLOR]
			}
			else
			{
				szString.append(NEWLINE);
[COLOR="#00ff00"]				if (pUnit->withdrawalProbability() >= GC.getDefineINT("MAX_WITHDRAWAL_PROBABILITY"))
				{
				    szString.append(gDLL->getText("TXT_KEY_UNIT_WITHDRAWL_PROBABILITY_MAX", GC.getDefineINT("MAX_WITHDRAWAL_PROBABILITY")));
				}
				else
				{[/COLOR]
				    szString.append(gDLL->getText("TXT_KEY_UNIT_WITHDRAWL_PROBABILITY", pUnit->withdrawalProbability()));
[COLOR="#00ff00"]				}[/COLOR]
			}
		}
 
Back
Top Bottom