Apolyton Archive  |  Preserved copy of the Apolyton Civilization Site and its forums as they stood in September 2005. Read-only; nothing here can be posted to or replied to.  |  Forum index |  About this archive |  The 1998–2001 UBB forums
Today on Apolyton WARDELL INTERVIEW PROMO A.C.S. HISTORY CHAPTER 4 GET CIV4 /w FREE PLUS! A.C.S. PHOTO GALLERY GET A.O.M. V1.1
Apolyton Civilization Forums
main| civ2| civ3| civ4| smac| ctp2| ron| moo3| galciv| galciv2| alt| about|
ApolytonPLUS | register | search | faq | new posts | pm (-/-) | upload | members
hall of fame new! | civgroups | civgroups news | interviews | the column | radio | chat | directory | news | store | PLUS
Apolyton Civilization Forums : Powered by vBulletin version 2.0.3 Apolyton Civilization Forums > Miscellaneous > Archive > CtP2-Creation/AI/Mods/Scenarios-Archive > Getting Civs to Surrender
Show a Printable Version | Email This Page to Someone! | Receive updates to this thread | Report this to Apolyton news!

bottom of page
  
Author
Thread    < Last Thread     Next Thread > Post New Thread     Post A Reply
Peter Triggs is offline Peter Triggs
Prince
Gone Fishin, Canada
Jan 2000
time: 05:17
  Old Post 15-01-2002 00:14
Edit/Delete Message Reply w/Quote
#1 Report this post to a moderator
Getting Civs to Surrender Help yourself to an AD-FREE life

OK, using Tony Evans's SwapCity function, I've got this little handler that makes AI civs surrender rather than fighting to the last city:

code:
// Swaps City to Player. Kills all units first if flag is set to 1. int_f SwapCity (city_t swCity, int_t swPlayer, int_t killUnits) { int_t i; int_t tmpPlayer; int_t numUnits; unit_t tmpUnit; city_t tmpCity; location_t tmpLoc; tmpCity = swCity; if (CityIsValid(tmpCity)) { tmpPlayer = swPlayer; tmpLoc = tmpCity.location; numUnits = GetUnitsAtLocation(tmpLoc); if (killUnits == 1) { for (i = 0; i < numUnits; i = i + 1) { // Kill all units GetUnitFromCell(tmpLoc, i, tmpUnit); Event: DisbandUnit(tmpUnit); } } Event:GiveCity(tmpCity, tmpPlayer); } else { return -1;// Can't swap due to invalid city } } HandleEvent(CaptureCity) 'CivSurrenders' pre { city_t tmpCity; int_t i; int_t numCities; int_t numUnits; unit_t tmpUnit; if ( IsHumanPlayer(player[0]) ){//what about AI? player[1]=city[0].owner; numUnits=player[1].units; TMP_PLAYER=player[1]; TMP_CITY=city[0]; if( MilitaryRank(player[0])-MilitaryRank(player[1])>25) { for (i=0;i< numUnits;i=i+1 ){//first, kill his civilians GetUnitByIndex(TMP_PLAYER,i,tmpUnit); if (tmpUnit.valid && IsCivilian(tmpUnit) ) { Event: DisbandUnit(tmpUnit); } } numCities=PlayerCityCount(TMP_PLAYER); for (i = 0; i < numCities; i = i + 1) {//then take his cities GetCityByIndex(TMP_PLAYER, i, tmpCity); if (tmpCity.location != city[0].location ){ CreateUnit(player[0], UnitDB(UNIT_BOMBER), city[0].location, 1, tmpUnit); SwapCity(tmpCity, player[0].owner, 1); Event: DisbandUnit(tmpUnit); } } } EnableTrigger('SurrenderMessages'); } } HandleEvent(CaptureCity) 'SurrenderMessages' post { player[1]=TMP_PLAYER; city[0]=TMP_CITY; if( MilitaryRank(player[0])-MilitaryRank(player[1])>25 ){ Message(player[0].owner, 'SurrenderMessage'); } elseif( MilitaryRank(player[0])-MilitaryRank(player[1])>20 ){ Message(player[0].owner, 'OverwhelmingSuperiority'); } elseif( MilitaryRank(player[0])-MilitaryRank(player[1])>15 ){ Message(player[0].owner, 'MajorSuperiority'); } elseif (MilitaryRank(player[0])>MilitaryRank(player[1]) ){ Message(player[0].owner, 'MilitarySuperiority'); } DisableTrigger('SurrenderMessages'); } messagebox 'SurrenderMessage' { show(); Text (ID_TheSurrenderMessage) ; } //TheSurrenderMessage "Sire! We've won! With the capture of {city[0].name}, {player[1].civ_name_singular} resistence has //totally collapsed and they have agreed to an unconditional surrender!" messagebox 'OverwhelmingSuperiority' { Text (ID_OverwhelmingSuperiorityM) ; show(); } //OverwhelmingSuperiorityM "With the capture of {city[0].name}, our generals are pleased to report that we have //obtained overwhelming military superiority over the {player[1].civ_name_plural}. Victory is at hand!" messagebox 'MajorSuperiority' { show(); Text (ID_MajorSuperiorityM) ; } //MajorSuperiorityM "Sire, our generals report that the war is going very well. // \n They believe that we are now significantly stronger than the {player[1].civ_name_plural}." messagebox 'MilitarySuperiority' { show(); Text (ID_MilitarySuperiorityM) ; } //MilitarySuperiorityM "Sire, our generals report that the war with the {player[1].civ_name_plural} is going well. //We have gained the upper hand."


For one thing, I had to use Martin's technique of creating a Bomber unit to expose the city and then disbanding the unit after the city has been swapped to the human player. (Otherwise, I could only swap cities that the capturing player already knows about.) But it doesn't work as well here as it does in GoodMod. There's no real problem except that there can be 10 or 20 sec lag while the computer executes.

The other thing is the triggering condition "MilitaryRank(player[0])-MilitaryRank(player[1])>25". The MilitaryRank function is, IMO, a bit weird. I think it must take Advances into account as well as existing military units, so that although your armies can have overwhelming military superiority on the ground, your enemy's MilitaryRank may not be that much lower than yours.

So if anybody wants to play with this and try to optimize it, you're welcome to it. Cause I have to get back to Diplomacy.

The Raptor is offline The Raptor
Settler
Lincoln, NE
Jan 2002
time: 23:17
  Old Post 15-01-2002 01:54
Edit/Delete Message Reply w/Quote
#2 Report this post to a moderator
Support Apolyton, buy Civilization 2

I personally like the Alpha Centauri version where civs will surrender to you and swear loyalty. More realistic, plus it lets you work under the max city cap.

Pedrunn is offline Pedrunn
King
of Natal, Brazil
Jul 2001
time: 02:17
  Old Post 15-01-2002 07:12
Edit/Delete Message Reply w/Quote
#3 Report this post to a moderator
Support Apolyton buy from Amazon

Thats good stuff. No more endless wars finished by pity of the human player. But by a fancy request.
I am going to test it as soon as possible. The AI is stronger and stronger every day.
Cant wait others Peter Triggs improvements in diplomacy!

Pedrunn is offline Pedrunn
King
of Natal, Brazil
Jul 2001
time: 02:17
  Old Post 15-01-2002 17:17
Edit/Delete Message Reply w/Quote
#4 Report this post to a moderator
Support Apolyton, buy Call to Power 2

Oh OH!

Small fix needed!

The symbols TMP_PLAYER and TMP_CITY are undefined.

Could you fix it?

Locutus is offline Locutus
ACS CTP1/2 Manager & Civ4 Co-Manager
Hengelo, The Netherlands
Nov 1999
time: 06:17
  Old Post 15-01-2002 17:48 Visit Locutus<br><img src=/forums/images/staff-icon.gif>'s homepage!
Edit/Delete Message Reply w/Quote
#5 Report this post to a moderator
Increase Your PM Length

Interesting looking code, Peter, very interesting indeed. It would be a nice addition to the game once the bugs are worked out. BTW, what does MilitaryRank return? A value between 1 and 100 or something?

Pedrunn,

Edit: silly me, the variables should be global. Add this:

city_t TMP_CITY;
int_t TMP_PLAYER;

to the top of your file.

The Big Mc is offline The Big Mc
King
Of the universe / England
Oct 2001
time: 05:17
  Old Post 15-01-2002 17:51 Visit The Big Mc's homepage!
Edit/Delete Message Reply w/Quote
#6 Report this post to a moderator
Support Apolyton, pre-order Civilization IV

hi the big mc here I think I know what the problem is but with no way of testing it I may miss it but here goes

code:--------------------------------------------------------------------------------
// Swaps City to Player. Kills all units first if flag is set to 1.
int_f SwapCity (city_t swCity, int_t swPlayer, int_t killUnits)
{
int_t i;
int_t tmpPlayer;
int_t numUnits;
unit_t tmpUnit;
city_t tmpCity;
location_t tmpLoc;

tmpCity = swCity;

if (CityIsValid(tmpCity)) {
tmpPlayer = swPlayer;
tmpLoc = tmpCity.location;
numUnits = GetUnitsAtLocation(tmpLoc);
if (killUnits == 1) {
for (i = 0; i < numUnits; i = i + 1) { // Kill all units
GetUnitFromCell(tmpLoc, i, tmpUnit);
Event: DisbandUnit(tmpUnit);
}
}
Event:GiveCity(tmpCity, tmpPlayer);
}
else {
return -1;// Can't swap due to invalid city
}
}

HandleEvent(CaptureCity) 'CivSurrenders' pre {

city_t tmpCity;
int_t i;
int_t numCities;
int_t numUnits;
unit_t tmpUnit;

if ( IsHumanPlayer(player[0]) ){//what about AI?
player[1]=city[0].owner;
numUnits=player[1].units;
TMP_PLAYER=player[1];
TMP_CITY=city[0];

if( MilitaryRank(player[0])-MilitaryRank(player[1])>25) {

for (i=0;i< numUnits;i=i+1 ){//first, kill his civilians
GetUnitByIndex(TMP_PLAYER,i,tmpUnit);
if (tmpUnit.valid && IsCivilian(tmpUnit) ) {
Event: DisbandUnit(tmpUnit);
}
}

numCities=PlayerCityCount(TMP_PLAYER);
for (i = 0; i < numCities; i = i + 1) {//then take his cities
GetCityByIndex(TMP_PLAYER, i, tmpCity);
if (tmpCity.location != city[0].location ){

CreateUnit(player[0], UnitDB(UNIT_BOMBER), city[0].location, 1, tmpUnit);
SwapCity(tmpCity, player[0].owner, 1);
Event: DisbandUnit(tmpUnit);

}
}

}
EnableTrigger('SurrenderMessages');
}
}
HandleEvent(CaptureCity) 'SurrenderMessages' post {
city_t tmp_City;
int_t TMP_PLAYER;

player[1]=TMP_PLAYER;
city[0]=TMP_CITY;
if( MilitaryRank(player[0])-MilitaryRank(player[1])>25 ){
Message(player[0].owner, 'SurrenderMessage');

}
elseif( MilitaryRank(player[0])-MilitaryRank(player[1])>20 ){
Message(player[0].owner, 'OverwhelmingSuperiority');
}
elseif( MilitaryRank(player[0])-MilitaryRank(player[1])>15 ){
Message(player[0].owner, 'MajorSuperiority');
}
elseif (MilitaryRank(player[0])>MilitaryRank(player[1]) ){
Message(player[0].owner, 'MilitarySuperiority');
}
DisableTrigger('SurrenderMessages');
}

messagebox 'SurrenderMessage' {
show();
Text (ID_TheSurrenderMessage) ;
}

//TheSurrenderMessage "Sire! We've won! With the capture of {city[0].name}, {player[1].civ_name_singular} resistence has //totally collapsed and they have agreed to an unconditional surrender!"

messagebox 'OverwhelmingSuperiority' {
Text (ID_OverwhelmingSuperiorityM) ;
show();
}
//OverwhelmingSuperiorityM "With the capture of {city[0].name}, our generals are pleased to report that we have
//obtained overwhelming military superiority over the {player[1].civ_name_plural}. Victory is at hand!"

messagebox 'MajorSuperiority' {
show();
Text (ID_MajorSuperiorityM) ;
}
//MajorSuperiorityM "Sire, our generals report that the war is going very well.
// \n They believe that we are now significantly stronger than the {player[1].civ_name_plural}."
messagebox 'MilitarySuperiority' {
show();
Text (ID_MilitarySuperiorityM) ;
}
//MilitarySuperiorityM "Sire, our generals report that the war with the {player[1].civ_name_plural} is going well.
//We have gained the upper hand."
--------------------------------------------------------------------------------




any way I look at the code and found something useful the life of a slic learner

Locutus is offline Locutus
ACS CTP1/2 Manager & Civ4 Co-Manager
Hengelo, The Netherlands
Nov 1999
time: 06:17
  Old Post 15-01-2002 17:55 Visit Locutus<br><img src=/forums/images/staff-icon.gif>'s homepage!
Edit/Delete Message Reply w/Quote
#7 Report this post to a moderator
Avatar Enlargement: We've got the solution

The Big Mc,
What the hell? Could you perhaps indicate what you changed so I don't have to spit through the entire code? Also, if you put your code between code tags ("[ code ]" and "[ /code ]" but then without the spaces), it will look a whole lot better...

The Big Mc is offline The Big Mc
King
Of the universe / England
Oct 2001
time: 05:17
  Old Post 15-01-2002 17:55 Visit The Big Mc's homepage!
Edit/Delete Message Reply w/Quote
#8 Report this post to a moderator
Browse Apolyton AD-FREE

looks like me and locutos responded at the same time ops

Locutus is offline Locutus
ACS CTP1/2 Manager & Civ4 Co-Manager
Hengelo, The Netherlands
Nov 1999
time: 06:17
  Old Post 15-01-2002 17:56 Visit Locutus<br><img src=/forums/images/staff-icon.gif>'s homepage!
Edit/Delete Message Reply w/Quote
#9 Report this post to a moderator
Support Apolyton buy from Amazon

Two times in a row too

The Big Mc is offline The Big Mc
King
Of the universe / England
Oct 2001
time: 05:17
  Old Post 15-01-2002 17:57 Visit The Big Mc's homepage!
Edit/Delete Message Reply w/Quote
#10 Report this post to a moderator
Support Apolyton, buy Call to Power 2

I put the city stuff in just after the last handle event
any way it's my first attempt at putting the coding brackets on

Locutus is offline Locutus
ACS CTP1/2 Manager & Civ4 Co-Manager
Hengelo, The Netherlands
Nov 1999
time: 06:17
  Old Post 15-01-2002 18:07 Visit Locutus<br><img src=/forums/images/staff-icon.gif>'s homepage!
Edit/Delete Message Reply w/Quote
#11 Report this post to a moderator
Lose 30 kilos (of popups)

Okay, I see it. That's what I had too at first (and I had it in the first handler too), then I actually looked at what the code was supposed to do and realized it probably needed to be global.

The Big Mc is offline The Big Mc
King
Of the universe / England
Oct 2001
time: 05:17
  Old Post 15-01-2002 18:10 Visit The Big Mc's homepage!
Edit/Delete Message Reply w/Quote
#12 Report this post to a moderator
Support Apolyton buy from Amazon

poor Pedrunn. I think he expected about 1 or two post but not about fifty telling him what to do

Locutus is offline Locutus
ACS CTP1/2 Manager & Civ4 Co-Manager
Hengelo, The Netherlands
Nov 1999
time: 06:17
  Old Post 15-01-2002 18:14 Visit Locutus<br><img src=/forums/images/staff-icon.gif>'s homepage!
Edit/Delete Message Reply w/Quote
#13 Report this post to a moderator
Lose 30 kilos (of popups)

And it's not over yet either, I'm sure Peter has some words to say about this too when he reads this

The Big Mc is offline The Big Mc
King
Of the universe / England
Oct 2001
time: 05:17
  Old Post 15-01-2002 18:16 Visit The Big Mc's homepage!
Edit/Delete Message Reply w/Quote
#14 Report this post to a moderator
Lose 30 kilos (of popups)

yes he will probably laugh

Pedrunn is offline Pedrunn
King
of Natal, Brazil
Jul 2001
time: 02:17
  Old Post 15-01-2002 19:26
Edit/Delete Message Reply w/Quote
#15 Report this post to a moderator
Help yourself to an AD-FREE life



10 posts in 28 minutes!!!!!!!!!!

Am i really in a CTP2 forum????!!!!????

I havent seem so much posts since the terrorist attacks threads in setember 11!

And all because of me . I feel so important now!

Thank you guys. it is fixed

The Big Mc is offline The Big Mc
King
Of the universe / England
Oct 2001
time: 05:17
  Old Post 15-01-2002 19:48 Visit The Big Mc's homepage!
Edit/Delete Message Reply w/Quote
#16 Report this post to a moderator
Support Apolyton, buy Galactic Civilizations

yes it is a ctp thread and yes you are not dreaming. it just happens wen two members find them selves on line at the same time.

Any more problems and my and locutos or somebody will be fighting to help you like me and locutos did. not twenty minutes ago

Peter Triggs is offline Peter Triggs
Prince
Gone Fishin, Canada
Jan 2000
time: 05:17
  Old Post 16-01-2002 06:07
Edit/Delete Message Reply w/Quote
#17 Report this post to a moderator
Enter the AD-FREE zone

Oops, my bad. When you use non-standard notational conventions, I guess you should explain them. I read somewhere that the standard convention for capitals, eg "TMP_PLAYER", is that they should stand for constants. But I've been using them for global variables so that I can see at a glance when a variable is a global.


quote:

BTW, what does MilitaryRank return? A value between 1 and 100 or something?



Yup, as I recall it was described someplace in CTP1 as returning a "normalized rank": the top player gets 100 and everyone else gets a "percentage" (or something like that). There was a bunch of these in CTP1; I seem to recall coming across them originally in some document you did. The others that are still usable are CitiesRank, PopulationRank, KnowledgeRank, GoldRank, and TradeRank.


There's no real bugs in it but IMO the handler doesn't trigger soon enough. I only tried it once in a proper game and by the time it triggered it was clear that any remaining Yamato resistence was totally futile. Maybe the numbers just need tweaking or maybe it needs keying on the number of military units that the two players have. Something like this might work better:

code:
if( MilitaryRank(player[0])>MilitaryRank(player[1]) && player[0].militaryunits >2* player[1].militaryunits ) {



BTW, Wombat, the article that contains the quote I posted in the 'Who Should Design Civ4 ?' thread is called "The Poor Get Richer: The Ancient Art of Game Balance <http://www.gamespy.com/devcorner/april01/reynolds/>" . Sometimes I wonder about Civ3 players: there they were going on about Brian Reynolds, and I give them this quality quote (especially if you think about it in relation to Civ3), identifying the author only as "a guy who used to post on these forums". And nobody bit! Or was it too obvious?

Locutus is offline Locutus
ACS CTP1/2 Manager & Civ4 Co-Manager
Hengelo, The Netherlands
Nov 1999
time: 06:17
  Old Post 16-01-2002 06:47 Visit Locutus<br><img src=/forums/images/staff-icon.gif>'s homepage!
Edit/Delete Message Reply w/Quote
#18 Report this post to a moderator
Help yourself to an AD-FREE life

quote:
Originally posted by Peter Triggs
Oops, my bad. When you use non-standard notational conventions, I guess you should explain them. I read somewhere that the standard convention for capitals, eg "TMP_PLAYER", is that they should stand for constants. But I've been using them for global variables so that I can see at a glance when a variable is a global.


"You read somewhere"?! I always took you for an experienced programmer! But an experienced programmer saying such a thing is like a doctor saying "I read somewhere CPR can save lives" What *is* your pre-CtP programming background exactly, if I may be so bold to ask?

quote:
Yup, as I recall it was described someplace in CTP1 as returning a "normalized rank": the top player gets 100 and everyone else gets a "percentage" (or something like that). There was a bunch of these in CTP1; I seem to recall coming across them originally in some document you did. The others that are still usable are CitiesRank, PopulationRank, KnowledgeRank, GoldRank, and TradeRank.

Yeah, I know about those functions (is there any function I don't know about? ), but I had no idea what they returned. I figured it would return 1 for the best player, 2 for the second player, etc. I always thought those were pretty useless functions but that changes things a bit (esp. when working with AI decision making)...

Peter Triggs is offline Peter Triggs
Prince
Gone Fishin, Canada
Jan 2000
time: 05:17
  Old Post 16-01-2002 07:50
Edit/Delete Message Reply w/Quote
#19 Report this post to a moderator
Tired of ads?

I told you ages ago, Wouter, I'm not a professional programmer. My background is in logic, philosophy and, to a lesser extent, mathematics. But I did do some BASIC programming for my own use ages ago and SLIC has given me an opportunity to get back into it. So really I'm just an enthusiastic amateur.

Locutus is offline Locutus
ACS CTP1/2 Manager & Civ4 Co-Manager
Hengelo, The Netherlands
Nov 1999
time: 06:17
  Old Post 16-01-2002 14:37 Visit Locutus<br><img src=/forums/images/staff-icon.gif>'s homepage!
Edit/Delete Message Reply w/Quote
#20 Report this post to a moderator
Support Apolyton or Terrorists Win

Yes, I vaguely seem to recall that now. The quality of your code must have confused me or something...

But yes, you are right of course, if you'll check my MedMod code you'll see that the names of all the constants (or rather, the variables that don't change value, not quite the same) are in capitals. I always indicate global variables (or at least I have started to do so recently) by giving them a mod-specifc prefix (MM2_, PBEM_, etc). Helps with mod-compatibility too

Immortal Wombat is offline Immortal Wombat
Prince
in perpetuity
Dec 2000
time: 05:17
  Old Post 16-01-2002 18:54 Visit Immortal Wombat's homepage!
Edit/Delete Message Reply w/Quote
#21 Report this post to a moderator
Support Apolyton, buy Civilization: The Boardgame

quote:
Originally posted by Peter Triggs
BTW, Wombat, the article that contains the quote I posted in the 'Who Should Design Civ4 ?' thread is called "The Poor Get Richer: The Ancient Art of Game Balance <http://www.gamespy.com/devcorner/april01/reynolds/>" . Sometimes I wonder about Civ3 players: there they were going on about Brian Reynolds, and I give them this quality quote (especially if you think about it in relation to Civ3), identifying the author only as "a guy who used to post on these forums". And nobody bit! Or was it too obvious?

I guess the crowd who were lpping up every review before the game are different to the ones still there. Or else they're all stupid.

The Big Mc is offline The Big Mc
King
Of the universe / England
Oct 2001
time: 05:17
  Old Post 17-01-2002 15:12 Visit The Big Mc's homepage!
Edit/Delete Message Reply w/Quote
#22 Report this post to a moderator
Increase the size of your Attachments

I was looking at your code last night when i saw this bit
quote:
int_f SwapCity (city_t swCity, int_t swPlayer, int_t killUnits)
{
int_t i;
int_t tmpPlayer;
int_t numUnits;
unit_t tmpUnit;
city_t tmpCity;
location_t tmpLoc;

tmpCity = swCity;

if (CityIsValid(tmpCity)) {
tmpPlayer = swPlayer;
tmpLoc = tmpCity.location;
numUnits = GetUnitsAtLocation(tmpLoc);
if (killUnits == 1) {
for (i = 0; i < numUnits; i = i + 1) { // Kill all units
GetUnitFromCell(tmpLoc, i, tmpUnit);
Event: DisbandUnit(tmpUnit);
}
}
Event:GiveCity(tmpCity, tmpPlayer);
}
else {
return -1;// Can't swap due to invalid city
}
}

i did not know you could do this. I used the code in my exchange city code and it looks cool now.

  < Last Thread     Next Thread > Post New Thread     Post A Reply
All times are GMT. The time now is 05:17.
Apolyton Time is 00:17.
    top of page
Rate This Thread:
archivepost
Forum Jump:
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is ON
vB code is ON
Smilies are ON
[IMG] code is ON
 




Contact Us - Apolyton Civilization Site - Support Us!

Building a better Apolyton through better information. Click here and take our poll!
Non-US visitors, click here!

Powered by: vBulletin Version 2.0.3
Copyright ©2000, 2001, Jelsoft Enterprises Limited.

Page generated in 0.0576 seconds (91.89% PHP - 8.11% MySQL) with 31 queries
Page Loading Time:

Support Apolyton: Amazon USA | Amazon UK | Amazon DE | Amazon FR |
Support Apolyton and get FREE PLUS, Buy from Chips&Bits: Galactic Civilizations | Galactic Civilizations: Deluxe Edition | Call to Power 2 | Civilization: The Boardgame | GURPS/ Alpha Centauri | Alpha Centauri | Civilization IV | Civilization III: Complete |


Front Page | Civilization IV | Civilization III | Civilization II | Call to Power II | Alpha Centauri | Master of Orion III
Rise of Nations | Galactic Civilizations | Galactic Civilizations II | Misc
Alt.Civs | Civ I | C:CtP I | About | News | Directory | Apolyton Store | Forums | Chat | Columns | Interviews | Newsletter
Scenario League | CSC | Clash of Civs | Spanish Site | CtP Maps | Cradle of Civ | WesW's Ctp1/2 Site | Civ3 Haven

apolyton.net | apolyton.com | civilization2.net | civilization3.net | civilization4.net | civilizationiv.info | calltopower.net | galciv.net | galciv2.net | moo3.net