Requests for new components (and features)

is there a list / screen of where National Wonders are located? I am playing a scenario (next war) and I had to hunt thru 30 cities looking for wall street - v annoying.
 
There is a drop down list box in the F9 screen to choose between World Wonders, National Wonders and Projects.

While we are at it, I've changed that screen to look like this (quick and better overview plus sortable by build date and owner).



What do you think about that?

BTW, BUG 3.6 is great :goodjob:!!
 
There is a drop down list box in the F9 screen to choose between World Wonders, National Wonders and Projects.
There is? Guess you learn something every day.

While we are at it, I've changed that screen to look like this (quick and better overview plus sortable by build date and owner).

<snip>

What do you think about that?
brilliant - got any source code to share?

BTW, BUG 3.6 is great :goodjob:!!
Thx
 
There is? Guess you learn something every day.
Funny - I had also overlooked it for years :lol:.

ruff_hi said:
brilliant - got any source code to share?

Glad you like it -- here is my "blemished" CvInfoScreen.py, but please be careful, since I don't approach this kind of "programming" with the professionalism of your class...

I also used the players' color to code the owner and used the barbs' color for unknown owners --> it might sometimes be a bit difficult to read, so you might want to change that.
 

Attachments

  • CvInfoScreen.zip
    21.4 KB · Views: 71
There is a drop down list box in the F9 screen to choose between World Wonders, National Wonders and Projects.

While we are at it, I've changed that screen to look like this (quick and better overview plus sortable by build date and owner).



What do you think about that?

BTW, BUG 3.6 is great :goodjob:!!

Looks beautiful, but why not mention all the cities that hold world wonders once you know their position on the map. I mean, you can (with some patience) scan the cities on the map and use the graphical representation of the world wonder to determine where it is located. I often have to do this before an invasion because the information is not in the world wonder list. The list only shows the country and not the city.

Another option would be to place signs on the map to show the positions of world wonders, comparable to the signs for event-improved tiles.
 
How do you know they have the tech? If you mean because you see a unit that requires that tech (your Knight example) or an improvement, then I understand. If there's some other method you're thinking of, please explain.
Let me show a simple example form my version of current LHC:
Spoiler :

In this situation I know that Ragnar has theology. Why?

Look carefully to the can/won't trade colums: Ragnar has monotheism on me. Now look to the can research column: It says that he can research Divine Right and no Theology there. So: if he has monotheism but can't research theology, is because he already has it or there is any prereq missing. We could compare with our own tech tree or infer that he has the other prereq ( writing ) by other means ( for example if he can tech/trade Alphabet or Mathematics, a thing that requires comparing with our own tech tree most of the times ), but here we know that ragnar can research a tech that has Theology as a prereq ( Divine Right ), so he has to have Theology.

This is a trivial example, given that the Mono->theo->DR line is easy to work with, but it can be applied to most of the game situations ( if a AI can tech Guilds, it means that it has machinery and feudalism and all the other techs needed for it( MC, Monarchy , if it has Paper it means that it has CS and/or theo..... ) .

In the end it is to reverse engineer the Can research column. If a AI has X tech, it must have all the non-optional prereqs and atleast one of the optional prereqs ( if appliable ), repeat the process until the techs wehave appear in the inverted tech tree and then compare with our own assortement of techs and the can/won't and the can't trade columns to prun impossible situations in that game. Alternatively/in conjuction with, you can start down: see the techs the AI can/won't/can't trade and see if the AI can tech the techs that need one of the tech he has to trade and if not go up a level ... This two together give a really good idea of the techs we know the other civs have.
 
Look carefully to the can/won't trade colums: Ragnar has monotheism on me. Now look to the can research column: It says that he can research Divine Right and no Theology there. So: if he has monotheism but can't research theology, is because he already has it or there is any prereq missing. We could compare with our own tech tree or infer that he has the other prereq ( writing ) by other means ( for example if he can tech/trade Alphabet or Mathematics, a thing that requires comparing with our own tech tree most of the times ), but here we know that ragnar can research a tech that has Theology as a prereq ( Divine Right ), so he has to have Theology.

From my reading of the tech tree ...

Theology needs writing or Monotheism
Divine Right needs Theology and Monarchy

You only need one of Writing or Monotheism to tell if he has Theology. Are you sure you don't have Theology? If you don't, then I don't think the system would show that he can research Divine Right.
 
You're wrong, ruff. Theo needs Mono and writing and DR needs Theo and monarchy ( check the XML if you don't believe me ). Anyway I'll post my tech screen ....
Spoiler :
 
From my reading of the tech tree ...

Theology needs writing or Monotheism

You're wrong, ruff. Theo needs Mono and writing and DR needs Theo and monarchy
I knew I should have posted a 'IIRC' or similar as I felt that I was wrong as I was typing out the above.

But still, the question as to why the system is showing that he can research Divine Right remains outstanding.

My understanding (and I am more than happy to be proven wrong) is that the AIs 'can research' column should only show techs that ...

[tab]a) the AI can actually research
AND b) the player either knows or can research

So, if you don't know Divine Right (and you don't) and you cannot research it (you can't) - why is it shown in that column?
 
But still, the question as to why the system is showing that he can research Divine Right remains outstanding.

I was going to point out the same thing. The problem isn't that it doesn't show Theology in Ragnar's Will/Won't Trade column. The problem is that it shows DR in his Can Research column. WTF?!

My understanding (and I am more than happy to be proven wrong) is that the AIs 'can research' column should only show techs that ...

. .. .. .. .. .a) the AI can actually research
AND b) the player either knows or can research

Close. If the player knows the tech, it should show up in the Wants column. The rest is correct, and thus DR should not show up at all. Can you please post the save for this game?

This isn't a BUG bug since we don't modify that part, but I'll be happy to fix it as it is a definite bug. Long ago I saw a tech show up in both the Wants and Can Research column for the same AI, but it was before I got into BUG. I think it was actually Liberalism, but it has been a long time.
 
I use this kind of thing all the time.... Are you sure that it isn't one of those quirky rules that no one really understands ( like the fact that granary stores half of the food bar and not giving a half food bar in the next size, like most people think, including great players ) ?

Anyway, here is the save...

P.S if you see it right , I don't have Corporation and Ass Line also appears in the can research of most of the AI ......

P.S sorry for the wrong save... only noticed now and exchanged it for the real thing
 

Attachments

  • Lonely Peter AD-1680.CivBeyondSwordSave
    338.8 KB · Views: 53
While we are at it, I've changed that screen to look like this (quick and better overview plus sortable by build date and owner).

Glad you like it -- here is my "blemished" CvInfoScreen.py, but please be careful, since I don't approach this kind of "programming" with the professionalism of your class...
I took Dan's code and folded it into BUG last night. As per BUG standards :)D), it is optional. I also changed the date format so that AD / BC appears. I am not sure or not if I like the color coding options - some colors are difficult to read. Oh, and I am going to change the code so that the city name is shown as long as the player can see that city (on the assumption that you can zoom in and inspect the city for the wonder graphic).
 
:cool:!
I didn't touch the city display rule, which only gave away the name of the city if you had "active visibility" for its plot (via enough EPs, or a unit there or the plot lit up by a recent air-recon mission). But yeah, I just noticed that the graphics for Wonders and the city size *do* get updated after you've seen the city once, even without any "active" refreshes of the city's plot. So that change should be ok re spoiler info and is very welcome.

Something else:

you like ? ;)
 
:cool:!
I didn't touch the city display rule, which only gave away the name of the city if you had "active visibility" for its plot (via enough EPs, or a unit there or the plot lit up by a recent air-recon mission). But yeah, I just noticed that the graphics for Wonders and the city size *do* get updated after you've seen the city once, even without any "active" refreshes of the city's plot. So that change should be ok re spoiler info and is very welcome.
Yeah - I know you didn't change anything. It uses ...

[tab]pCityPlot.isActiveVisible(false)

... to test if you can see the city. As you mentioned (and as I have heard in other games), the graphics change even if you don't have active vision into that plot. As such, I am proposing that we change it to ...

[tab]pCity.isVisible(team_id)

... but only for the BUG version of that screen. Any anti-unaltered comments anyone?

Further - what about a 'zoom to city' button so that once you have found were that pesky (+100% WW) wonder is, you can locate the city easier and make war plans accordingly.


Something else: <snip> you like ? ;)
What is it with you and the need to color code everything :D. But - yes- looks good. What file controls the color coding (and I assume the makeup) of the log? Can we get a copy?
 
Any anti-unaltered comments anyone? // Further - what about a 'zoom to city' button so that once you have found were that pesky (+100% WW) wonder is, you can locate the city easier and make war plans accordingly.
:nope: // :yumyum:

What is it with you and the need to color code everything :D.
I like colors :smoke: ;).

I've put the following into CvEventManager.py:
Spoiler :
Code:
	def onCombatLogHit(self, argsList):
		'Combat Message'
		global gCombatMessages, gCombatLog
		genericArgs = argsList[0][0]
		cdAttacker = genericArgs[0]
		cdDefender = genericArgs[1]
		iIsAttacker = genericArgs[2]
		iDamage = genericArgs[3]
		
		if cdDefender.eOwner == cdDefender.eVisualOwner:
			szDefenderName = gc.getPlayer(cdDefender.eOwner).getNameKey()
		else:
			szDefenderName = localText.getText("TXT_KEY_TRAIT_PLAYER_UNKNOWN", ())
		if cdAttacker.eOwner == cdAttacker.eVisualOwner:
			szAttackerName = gc.getPlayer(cdAttacker.eOwner).getNameKey()
		else:
			szAttackerName = localText.getText("TXT_KEY_TRAIT_PLAYER_UNKNOWN", ())

		if (iIsAttacker == 0):				
			combatMessage = localText.getText("TXT_KEY_COMBAT_MESSAGE_HIT", (szDefenderName, cdDefender.sUnitName, iDamage, cdDefender.iCurrHitPoints, cdDefender.iMaxHitPoints))
			combatMessageAttacker = localText.changeTextColor(u" - " + combatMessage, gc.getInfoTypeForString("COLOR_PLAYER_LIGHT_GREEN_TEXT")) #DanF
			CyInterface().addCombatMessage(cdAttacker.eOwner,combatMessageAttacker)
			combatMessageDefender = localText.changeTextColor(u" - " + combatMessage, gc.getInfoTypeForString("COLOR_PLAYER_PINK_TEXT")) #DanF
			CyInterface().addCombatMessage(cdDefender.eOwner,combatMessageDefender)
			if (cdDefender.iCurrHitPoints <= 0):
				combatMessage = localText.getText("TXT_KEY_COMBAT_MESSAGE_DEFEATED", (szAttackerName, cdAttacker.sUnitName, szDefenderName, cdDefender.sUnitName))
				combatMessageAttacker = localText.changeTextColor(combatMessage, gc.getInfoTypeForString("COLOR_POSITIVE_TEXT")) #DanF
				CyInterface().addCombatMessage(cdAttacker.eOwner,combatMessageAttacker)
				combatMessageDefender = localText.changeTextColor(combatMessage, gc.getInfoTypeForString("COLOR_NEGATIVE_TEXT")) #DanF
				CyInterface().addCombatMessage(cdDefender.eOwner,combatMessageDefender)
		elif (iIsAttacker == 1):
			combatMessage = localText.getText("TXT_KEY_COMBAT_MESSAGE_HIT", (szAttackerName, cdAttacker.sUnitName, iDamage, cdAttacker.iCurrHitPoints, cdAttacker.iMaxHitPoints))
			combatMessageAttacker = localText.changeTextColor(u" - " + combatMessage, gc.getInfoTypeForString("COLOR_PLAYER_PINK_TEXT")) #DanF
			CyInterface().addCombatMessage(cdAttacker.eOwner,combatMessageAttacker)
			combatMessageDefender = localText.changeTextColor(u" - " + combatMessage, gc.getInfoTypeForString("COLOR_PLAYER_LIGHT_GREEN_TEXT")) #DanF
			CyInterface().addCombatMessage(cdDefender.eOwner,combatMessageDefender)
			if (cdAttacker.iCurrHitPoints <= 0):
				combatMessage = localText.getText("TXT_KEY_COMBAT_MESSAGE_DEFEATED", (szDefenderName, cdDefender.sUnitName, szAttackerName, cdAttacker.sUnitName))
				combatMessageAttacker = localText.changeTextColor(combatMessage, gc.getInfoTypeForString("COLOR_NEGATIVE_TEXT")) #DanF
				CyInterface().addCombatMessage(cdAttacker.eOwner,combatMessageAttacker)
				combatMessageDefender = localText.changeTextColor(combatMessage, gc.getInfoTypeForString("COLOR_POSITIVE_TEXT")) #DanF
				CyInterface().addCombatMessage(cdDefender.eOwner,combatMessageDefender)
plus these changes into CvUtil.py
Spoiler :
Code:
def combatMessageBuilder(cdAttacker, cdDefender, iCombatOdds):

	combatMessage = "%s's %s (%.2f)" %(gc.getPlayer(cdAttacker.eOwner).getName(),cdAttacker.sUnitName,cdAttacker.iCurrCombatStr/100.0,)
	combatMessage += " " + localText.getText("TXT_KEY_COMBAT_MESSAGE_VS", ()) + " "
	combatMessage += "%s's %s (%.2f)" %(gc.getPlayer(cdDefender.eOwner).getName(),cdDefender.sUnitName,cdDefender.iCurrCombatStr/100.0,)
	combatMessage = localText.changeTextColor(combatMessage, gc.getInfoTypeForString("COLOR_HIGHLIGHT_TEXT")) #DanF
	CyInterface().addCombatMessage(cdAttacker.eOwner, u" --- ")
	CyInterface().addCombatMessage(cdDefender.eOwner, u" --- ")
	CyInterface().addCombatMessage(cdAttacker.eOwner,combatMessage)
	CyInterface().addCombatMessage(cdDefender.eOwner,combatMessage)
	combatMessage = "%s %.1f%%" %(localText.getText("TXT_KEY_COMBAT_MESSAGE_ODDS", ()),iCombatOdds/10.0,)
	CyInterface().addCombatMessage(cdAttacker.eOwner,combatMessage)
	CyInterface().addCombatMessage(cdDefender.eOwner,combatMessage)
	combatDetailMessageBuilder(cdAttacker,cdAttacker.eOwner,-1)
	combatDetailMessageBuilder(cdDefender,cdAttacker.eOwner,1)
	combatDetailMessageBuilder(cdAttacker,cdDefender.eOwner,-1)
	combatDetailMessageBuilder(cdDefender,cdDefender.eOwner,1)
 
Mmmm, pretty colors!

BTW, I think the function you want is

Code:
pCity.isRevealed(eTeam)

I love the idea of moving the camera to the city on click. For that you'll want

Code:
CyCamera().JustLookAtPlot(pCity.plot())
 
Thanks for adding the city location to the wonder screen in case you can see the city. I also like the zoom function that you guys are proposing, very useful.

How is it possible that after you guys have already made so many improvements, still new suggestions for improvements keep appearing? It don't think it shows that the original Firaxis interface was bad, I think it shows how hard it is to create a great interface for such a complex game.
 
Roland_Johansen said:
How is it possible that after you guys have already made so many improvements, still new suggestions for improvements keep appearing? It don't think it shows that the original Firaxis interface was bad, I think it shows how hard it is to create a great interface for such a complex game.
You speak my mind.

Though, when looking at the sourceforge tracker, there is stil TONS of stuff to do. I'm glad if I can help ;)
 
Something else:

you like ? ;)

Nice work Dan!

I'm very interested in this. The "Extra combat" statements could probably also be coloured, as IMO these are often the most confusing modifiers to work out who gets them.

:goodjob:
 
Top Bottom