Bug reports and technical issues

Were they in the Renaissance perhaps? There are other mechanisms that can collapse AI Byzantium to avoid them from blocking Turkey forever, are you sure none of their cities was conquered? Else, a save would be helpful.

Well, they were in the renaissance, so I think that solves the problem. None of their cities was conquered recently, however.
 
Spoiler :


Spoiler :



Check the vassal relations. This isn't allowed, right?
 

Attachments

  • Isabella AD-1721 Turn 328.CivBeyondSwordSave
    1,002.1 KB · Views: 45
Yes it is! Vassals intentionally can keep the first ring around their cities except when it's the first ring of a master city as well (culture rules still apply, then). This is so that masters don't choke their own vassals, which often isn't even beneficial, and to prevent small civs like Netherlands and Portugal from ending up with one tile cities.

I just realized that this feature isn't documented in the current list of features, though.
 
I think he means the "Vassal of England, Master of India" thingy.

Edit: In his game save, Byzantine also has almost 30000 cash.
 
Hi, I have a big problem.

I tried to play this wonderful mod, but when I open it, I see the screenshots I've attached.

The version I play is the 1.8, I can play any other mods, such as Rhye's and Fall.
Is this a Direct-X problem? How can I fix it?
I really desire to play this mod, please help me!
 

Attachments

  • Immagine1.jpg
    Immagine1.jpg
    55.4 KB · Views: 45
  • Immagine.jpg
    Immagine.jpg
    75.6 KB · Views: 41
Yes it is! Vassals intentionally can keep the first ring around their cities except when it's the first ring of a master city as well (culture rules still apply, then). This is so that masters don't choke their own vassals, which often isn't even beneficial, and to prevent small civs like Netherlands and Portugal from ending up with one tile cities.

I just realized that this feature isn't documented in the current list of features, though.


Troubles have emerged.:eek:The Dutch cannot create her capital when she was born.

And it is regrettable that some moves of completing wonders can not be seen because of the FPK file possibly.I think BIK files are unreadable when they are compressed into the FPK file. (Porcelain Tower of Nanjing,The Sphinx and so on)

SVN Revision is 230
 
I think he means the "Vassal of England, Master of India" thingy.
Ah, didn't see that.

Hi, I have a big problem.

I tried to play this wonderful mod, but when I open it, I see the screenshots I've attached.

The version I play is the 1.8, I can play any other mods, such as Rhye's and Fall.
Is this a Direct-X problem? How can I fix it?
I really desire to play this mod, please help me!
Hard to tell, do you get error messages while loading the mod? Maybe this is a language issue, have you set your language to another than English?

Troubles have emerged.:eek:The Dutch cannot create her capital when she was born.
That happens from time to time. Usually the spawn code should make sure your capital spot is settlable. I'll see if I can find a way to further enforce this.

And it is regrettable that some moves of completing wonders can not be seen because of the FPK file possibly.I think BIK files are unreadable when they are compressed into the FPK file. (Porcelain Tower of Nanjing,The Sphinx and so on)
Didn't know that, thanks.
 
Ah, didn't see that.


Hard to tell, do you get error messages while loading the mod? Maybe this is a language issue, have you set your language to another than English?


That happens from time to time. Usually the spawn code should make sure your capital spot is settlable. I'll see if I can find a way to further enforce this.


Didn't know that, thanks.

Yes! Now it works fine! Thanks !!!
However, the language that caused that problem was Italian.
 
Good to know. I'm surprised you didn't see anything because RFC supports Italian, so you only should have problems with things that are new in DoC, but I'm glad it works for you now :)
 
Sorry, it's me again. I think I'm very unlucky. I start the mod and it works fine, but...there's not Italians! I can select from the menu any new playable civ but Italy. I also played a game till 1500 AD, but Italians didn't come out. I tried to edit that game, but there's no possibility to choose Italians. How is it possible? Did I lose the whole "Italian package" ?
 
No, it's a little hard to play as Italy at the moment. Because Italy works as a respawn of Rome, you can't select them in the starting screen. Also, Italy doesn't spawn in every game (when Germany or France control all of the Italian peninsula in the 12th century, they don't spawn).

I'm aware that the current situation isn't optimal and therefore I will turn Italy into a civ in its own right in the next version, independent of Rome.
 
No, it's a little hard to play as Italy at the moment. Because Italy works as a respawn of Rome, you can't select them in the starting screen. Also, Italy doesn't spawn in every game (when Germany or France control all of the Italian peninsula in the 12th century, they don't spawn).

I'm aware that the current situation isn't optimal and therefore I will turn Italy into a civ in its own right in the next version, independent of Rome.

I understood, thank you very much for the precious answer :goodjob:
 
I get a lot of memory allocation failure, and I mean A LOT. Has anyone got a solution for this?
 
If I am not mistaken, China, as a computer player, can't trade away techs it has monopoly on.
But if China is controlled by a human, the tech-trade restriction won't take effect.
Is this a bug, or a feature?

Code:
DenialTypes CvTeamAI::AI_techTrade(TechTypes eTech, TeamTypes eTeam) const
{
	......

	if (isHuman())
	{
		return NO_DENIAL;
	}
    
	......
    
	if (eAttitude < ATTITUDE_FRIENDLY)
	{
		......

		// Leoreth: stop China from trading away techs it has monopoly on to make its UP less powerful
		if (iKnownCount <= 1)
		{
			if (getID() == CHINA)
				return DENIAL_TECH_MONOPOLY;
			if (eTeam == CHINA)
				return NO_DENIAL;
		}
	}

	.....
}
 
I must admit I haven't tested it, but from the responses it sounded as if it worked ... do you have a screenshot or savegame? The code is meant to return a denial if either the player (getID()) or the AI (eTeam) is China.
 
I have to admit I haven't tested it as well. I just interpreted the code. But I started to analyze that piece of AI_TechTrade since I had noticed some Chinese users claimed the tech restriction on China in 1.8 didn't work.

Notice the code you added for China is far behind Human No Denial part. Thus, when getID() == CHINA and isHuman() are both true, that function will not return DENIAL_TECH_MONOPOLY, but NO_DENIAL.
 
I see no problem with this. The first isHuman() is just for further safety, because you should only call this function for AI player objects (or in multiplayer, where tech trading should be denied as well). Then further down, it's checked if one of the participants is China. Either getID() == CHINA, then it's human interacting with AI China, which should decline. The other case is eTeam == CHINA, then it's China (potentially human) interacting with someone else, that's decline as well.
 
The potential buyer is eTeam. The potential seller is the team who invoke the function AI_TechTrade.
If we use pseudocode, it will look like
Code:
seller.AI_TechTrade(eTech, eBuyer)

The seller can trade away his Tech eTech, namely, the color of Tech eTech is white during the diplomacy negotiation, if seller.AI_TechTrade(eTech, eBuyer) return NO_DENIAL.

If eTeam == China is true, which means the potential buyer is China, in this case it is irrelevant to the tech trade restriction on China.
Thus, we only need to focus on the case that China is seller.
When the program needs to know whether China can trade away its tech, it will look like
Code:
seller.AI_TechTrade(eTech, eBuyer)
Moreover seller.getID() == China is true.

If China is controlled by a human, seller.isHuman() is true, then seller.AI_TechTrade(eTech, eTeam) will return NO_DENIAL before the monopoly check.
If China is a computer player, seller.isHuman() is false. Suppose China has monopoly on eTech, then seller.AI_TechTrade(eTech, eTeam) would return DENIAL_TECH_MONOPOLY as expected.
 
Now I see your point, thanks :)

So all we need to do is move the check to the beginning of the method.
 
You commented out bUnknown check.
China will get 20% discount for all techs, not only for techs not known.
Is this a feature?
Code:
	//Leoreth: new Chinese UP: techs not known by anyone get -20% cost
	if (getID() == CHINA)
	{
		bool bUnknown = true;
		for (int i = 0; i < NUM_MAJOR_PLAYERS; i++)
		{
			if (GET_TEAM((TeamTypes)i).isHasTech(eTech))
			{
				bUnknown = false;
			}
		}

		/*if (bUnknown && GC.getTechInfo(eTech).getEra() <= 2) //[COLOR="Red"]allow for all techs[/COLOR]
		{*/
			iCost *= 80;
			iCost /= 100;
		//}
	}
 
Top Bottom