1. Firaxis celebrates the "Asian American and Pacific Islander Heritage Month", and offers a give-away of a Civ6 anthology copy (5 in total)! For all the details, please check the thread here. .
    Dismiss Notice
  2. Old World has finally been released on GOG and Steam, besides also being available in the Epic store . Come to our Old World forum and discuss with us!
    Dismiss Notice

Dawn of Civilization - an RFC modmod by Leoreth

Discussion in 'Rhye's and Fall - Dawn of Civilization' started by Leoreth, Apr 19, 2010.

Thread Status:
Not open for further replies.
  1. Cethegus

    Cethegus King

    Joined:
    Feb 28, 2008
    Messages:
    922
    Location:
    Finland
    I just thought to point out that Egypt's UP currently unlocks Aristocracy instead of the intended Slavery (Serfdom). You ought to add that to your to-do list.
     
  2. Leoreth

    Leoreth Vampire of the Blue Moon Moderator

    Joined:
    Aug 23, 2009
    Messages:
    35,723
    Gender:
    Male
    Location:
    Paris
    Nice to hear that :)

    While the Dutch are not impossible, they are now VERY hard (see my UHV as them on page 2; I'm not a particularly good player). They will get a tech help in the next update, as soon as I've found out how to give research points to certain techs.

    What kind of problems did you experience with England? I can't think of a change that should affect them ...

    Oh, of course, thanks! This will definitely fixed in my next release.
    Some civic-related events are also messed up (slave uprising triggers when running Aristocracy etc.), but fixing that is rather low on my priority list.

    While I'm at it: Version 1.2 will also feature changes to some pointless UPs, including the English, Japanese and Mongol ones.
     
  3. Baldyr

    Baldyr "Hit It"

    Joined:
    Dec 5, 2009
    Messages:
    5,530
    Location:
    Sweden
    I read about this earlier, but never quite got what exactly you wanted to do. Care to explain? (Chances are that nobody has been able to help you out because your request was kinda vague.)
     
  4. Cethegus

    Cethegus King

    Joined:
    Feb 28, 2008
    Messages:
    922
    Location:
    Finland
    Don't forget Babylon. While Power of the Law is useful, it rather ought to be the Mongol UP. :(

    And just curious, which Society civic do you think the Soviet Union should be using? Socialism or Totalitarianism? I'm not sure on that since Socialism could be interpreted as Europe's current Society civic, as well as the Soviet version of proletariat dictatorship. If you're going to rename it, give it some thought and at least change the place between it and Capitalism on the Society civic row. UN Resolutions always pass the last civic of each row (AFAIK), and I'd figure a more just society is the consencus there.
     
  5. Cethegus

    Cethegus King

    Joined:
    Feb 28, 2008
    Messages:
    922
    Location:
    Finland
    From that statement alone, I think he means how to let a civilization start with science beakers on some not-entirely researched tech. If a tech cost 2800, the civilization might have 1400 beakers on it upon start, making it only 50% as expensive to research.
     
  6. Baldyr

    Baldyr "Hit It"

    Joined:
    Dec 5, 2009
    Messages:
    5,530
    Location:
    Sweden
    I found this in the API:
    Code:
    CyTeam.changeResearchProgress(TechID, iChange, iPlayer)
    Its a CyTeam method because Techs are a team thing, but you still need to specify the actual Civ in the third argument. The values for both the Tech itself and for the Civ are of course found in the Consts module.

    Let us know if this works...
     
  7. Leoreth

    Leoreth Vampire of the Blue Moon Moderator

    Joined:
    Aug 23, 2009
    Messages:
    35,723
    Gender:
    Male
    Location:
    Paris
    Cethegus was right, that's exactly what I was looking for (sorry for being so vague). Thanks! Will be tested tomorrow (my to-do list is growing rapidly :lol:).

    My current idea is to make Keshiks spawn in every "big" (size > 4) cities the Mongols conquer. So I can:
    1. Help the AI, especially against China.
    2. Ensure that the Mongols are able to "steamroll" a complete country more easily, rather than being stuck at some time.
    3. Make them less dependent on their lacking unit production.

    I'm also unhappy with Babylon's current UP (they don't get to make use of it often), but don't have any idea what to give them instead. Any suggestions?

    While we're at it, I'm currently wondering if I should give India's UP to France ("Power of Revolutions"), but can't think of a replacement for them either. Ideas?

    I thought about that myself. I think the closest approximation would be Republic/Representation/Socialism/State Property/Secularism under Lenin and Autocracy/Absolutism/Totalitarianism/State Property/Secularism under Stalin.

    Yep, that's what I intended. It can mean a social democracy, like Sweden and other European countries, or the Soviet communist model. It depends on which other civics it is combined with, especially State Property vs. Free Market.

    Yes, the current civics are in the lowest row because of UN resolutions. But I'll think about swapping places of Socialism and Capitalism.

    What kind of rename would you propose?
     
  8. Baldyr

    Baldyr "Hit It"

    Joined:
    Dec 5, 2009
    Messages:
    5,530
    Location:
    Sweden
    The line should look like this, by the way:
    Code:
    teamNetherlands.changeResearchProgress(con.iAstronomy, 100, iNetherlands)
    Assuming the line goes into RiseAndFall.py and you wanna grant 100 :science:.

    But you probably know how to do this stuff already. :p Good luck anyway! :goodjob:

    Learning Object-Oriented Programming is very helpful for figuring out the API, by the way. CivIV Python is a good example of OOP and the fact that you use dot notation to call the method (function) on the team instance is why its called "object-oriented". Because you put the object - an instance of a class - here the CyTeam class - first and the method after that. (The default way of calling on a function would of course be to put the function first and supply any objects as arguments inside the parenthesis.)

    So the important thing here is to realize that all the Cy classes in the API are templates for "objects" of one sort of another. So there is a class for Civ objects (CyPlayer), for city objects (CyCity), for tile objects (CyPlot), and so on. In order to use any of the methods in the API you need to call it on an object (also known as an instance of a class).

    Variables referencing instances usually start with a low case letter "p", as in pNetherlands. (So teamNetherlands should probably be called pTeamNetherlands, then. :rolleyes:)

    All objects in the game are also indexed by integer value, and this is why there are all these iSomething variables in the Consts module. Those are obviously not references to the objects themselves, but rather their index (or ID) numbers. There is usually a method like getID() in most classes, that fetches the ID number of the object in question.

    Well, schools out for today. :p
     
  9. Cethegus

    Cethegus King

    Joined:
    Feb 28, 2008
    Messages:
    922
    Location:
    Finland
    I mentioned in an earlier thread that Babylon could use India's UP perfectly, seeing it needs to adopt at least Slavery and possibly Hereditary Rule (and in your mod, Aristocracy as well) in their time-frame but the wasted turn in anarchy puts them behind others in the tech-race towards UHV. With no anarchies, you cpiöd nail the UHV without having to micromanage and rely on tribal hut discoveries every turn.

    At least in my eyes it would fit them perfectly. You wouldn't even need to change the name of the UP, and since they'll be dead by 1000 AD anyway, they can't rig the game in a noticable way.

    About India however, they get crippled by their environment, which historically didn't bother them too much. They actually prospered on it, or at least learned to live with it. So, this obviously needs to change, kind of like the Inca and the mountains.
    One idea I had proposed earlier (in the same thread as Babylon, no less) was to remove the food penalty from jungles and either give them +1 hammer on such plots or let them build improvements on them. So in other words, "+1 food and +1 production on jungle tiles" or just generally speaking, "jungles tiles more hospitable" would be their new UP. "Power of the Subtropic" might be too cheesy a name, but that's just an idea. (Of course, unhealthiness from jungles would still be there)

    I was just referring to the 'Proletariat' mentioned earlier in this thread. Based on your insight, the Socialism civic is fine just the way it is. About UN though, I guess it's a coin toss between what model the world countries should follow and what they want to follow. I'm sure you can guess which civics fall to either camp. :(
     
  10. Cethegus

    Cethegus King

    Joined:
    Feb 28, 2008
    Messages:
    922
    Location:
    Finland
    I just rolled a 3000 BC start as America, and set your eyes upon Netherlands' demise.
    Amsterdam even had more culture than Kiel at that point (236 vs. 200). Onto the list, is all, territorial disputes need to be more civ-specific.

    Spoiler :
     
  11. fireclaw722

    fireclaw722 Imperial Guard

    Joined:
    Feb 27, 2009
    Messages:
    499
    Location:
    The Americas
    That shouldn't be happening, as in my current game as the Dutch, I control all of the Low Countries and part of France(what might be as far as Calais), and the French/Germans have huge amounts of Culture in the Cities around me(and my city[AMSTERDAM] has only 50 culture points[hadn't really bothered with culture]).
     
  12. Leoreth

    Leoreth Vampire of the Blue Moon Moderator

    Joined:
    Aug 23, 2009
    Messages:
    35,723
    Gender:
    Male
    Location:
    Paris
    Well yes, but if I want to give this UP to France (and I probably will), it's not an option. :(

    The idea is really good, but I fear this would trivialize their city growth UHV condition. Maybe something more related to religion ...?

    I once planned to call the Society civics "Aristocracy", "Burgeoisie" and "Proletariat", but that a) left me without any idea how to fit Totalitarianism in and b) leaves less room to interpretation.

    Well, opinions differ on that, obviously. Just ask an American and then a European. Even for simple things like universal healthcare. ;)

    Did you look if the Netherlands are a vassal of Germany? It seems like they are, as Germany exactly occupies Kiel's fat cross.

    @Baldyr:
    Thanks for your explanations. I'm actually quite familiar with object oriented programming (mainly in Java). My main problem rather is to find out what can be done and where I can find the appropriate method. I simply need to get more familiar with the way Civ's (and RFC's) code is structured.
     
  13. redwytche

    redwytche Chieftain

    Joined:
    Feb 16, 2009
    Messages:
    59
    Edinburgh revolts always when I play,regardless of what I do. One thing I did notice about Turkey is that instability after becoming democratic is not temporary.
     
  14. Cethegus

    Cethegus King

    Joined:
    Feb 28, 2008
    Messages:
    922
    Location:
    Finland
    You're right, I loaded the autosave and it was just like you thought, vassals of Germany. Sorry for the false alarm.

    One question though, what civic currently eases the conversion to democracy?
     
  15. Baldyr

    Baldyr "Hit It"

    Joined:
    Dec 5, 2009
    Messages:
    5,530
    Location:
    Sweden
    I put my reply inside spoiler tags since its just a bunch of coding stuff, not related to the actual design of the modmod.
    Spoiler :
    Alright then! A good start would be to focus on the classes that are highlighted in the API's main menu. This leaves you with the most essential methods for the sort of modding you (and me) are doing within the RFC framework. So the game itself is an object, as is the game map that is made up of individual plot objects (themselves divided into map "areas", also objects). Every city is an object and every unit. Note that teams and players (Civs) are different objects.

    The CyGlobalContext class is a special case as it seems to bind all the other classes together. This is why you find the methods like getGame(), getMap(), getPlayer, getTeam and so on here. (CyMap and CyGame are valid also, so you don't need to go through CyGlobalContext to fetch these objects. Its not like there are more than one game or more than one map at a time.)

    The thing that confused me initially was probably how teams and players work. Obviously teams are comprised of players (Civs) but they are not the same. Well, in RFC they have the same IDs, but you still need to differentiate between player stuff and team stuff. The team instance holds techs and diplomatic states, mainly.

    Looking at the API, the methods are divided into categories even though they are listed in alphabetical order. As you probably know, functions (and methods) always return something upon a call, and most CivIV methods return either an integer value or a string (the ones starting with "get") or a boolean (the ones starting with "is"). The ones that are marked "void" return None, I guess, and are the ones you use to manipulate the game - to feed new values into the various objects in the game, like CyTeam.changeResearchProgress(). They mostly - but not always - begin with "set" or "change", which makes it easy to find them by scrolling the list.

    Some methods creating new objects, like CyPlayer.initUnit() or CyPlayer.initCity(), return the a reference to the new object. This is actually very handy since it lets you manipulate that object with further code, like change the city's population or the units's XP.
    Code:
    pCity = pPlayer.initCity(33, 45)
    pCity.setPopulation(3)
    So in conclusion: First ask yourself if you know what object you need to manipulate. If you don't, then you'd wanna use the CyGlobalContext class to fetch it. Once you know the reference to the object, ask yourself if you wanna make input ("void") or get output. If you need to collect values, ask yourself if its a integer, a string or a boolean. Then its only a matter of figuring out how to find what you're looking for, and you might need to make searches in the API in order to find it - assuming its there in the first place. (I have been forced to make my own methods from time to time, because the exact thing I need isn't in there.) See above about the categories and naming conventions.

    Hopefully this approach will let you find what you're looking for faster. Regarding Rhye's code, I guess you just have to familiarize yourself further with Python and it's syntax - and read up on the code. :D Most of it is actually not so hard to figure out, even if the Python Standard Library can be very handy. :goodjob:
     
  16. Cethegus

    Cethegus King

    Joined:
    Feb 28, 2008
    Messages:
    922
    Location:
    Finland
    There's one thing I'd like to suggest, involving civics. Could the now-lost +50% tile improvement bonus from Serfdom be bound to either Absolutism, Autocracy or Totalitarianism? Faster worker speed could really help colonizing the New World, as well as make sense historically in Stalin-era USSR you mentioned before.
     
  17. Larxon

    Larxon Chieftain

    Joined:
    Apr 11, 2010
    Messages:
    15
    It says the worldbuilder file is in an incorrect directory, do I send to the one in Firaxis Games or MODS in My Games? And it is not even loading at all, when I load it, it just goes to the normal BtS screen and says RFC DawnofCivilizationv1.101 or something in the top right corner, and then, when I go to scenario, it is just a normal scenario screen.
     
  18. Leoreth

    Leoreth Vampire of the Blue Moon Moderator

    Joined:
    Aug 23, 2009
    Messages:
    35,723
    Gender:
    Male
    Location:
    Paris
    @Baldyr:
    Wow, something that didactically valuable shouldn't be hidden in spoiler tags. Thanks for your effort! :)

    Civic suggestions are always welcome. The current implementation is far from perfect.

    I never used BtS' Serfdom myself, to be honest, so I didn't hesitate to drop its effect when I saw no way to fit it in. The problem with it is: if it comes too early, it's overpowered, if it comes too late, it's useless. So it has to be a medieval civic ... but combined with that effect, Absolutism might become to powerful. Is giving it to Aristocracy an option?

    Good question :D I'm not sure if I already took care of that along with the other civic-related stability effects. If not, it's the couple Theocracy/Republic instead of Representation/Universal Suffrage (same slots), which of course doesn't make much sense.

    The file has to go into "Firaxis/Civilization IV/Beyond the Sword/Mods/".
    You can't distinguish it visually from normal RFC aside from the "RFC Dawn of Civilization" text in the top right corner. If it says 1500 AD for the Dutch spawn date when you are selecting civs, the mod is loaded properly.
     
  19. Cethegus

    Cethegus King

    Joined:
    Feb 28, 2008
    Messages:
    922
    Location:
    Finland
    I kind of implied that the current effect would be dropped upon the suggested addition.
    It might work with Aristocracy, but it's also the only Society civic to use during the Middle Ages. Everyone would be using it. :hammer:

    Maybe it's best that way, though. Autocracy and Totalitarianism are far too late for that and Aristocracy needs its own edge to be competitive even in the later eras. I'm on the look-out on this, I need to test few things.
     
  20. Larxon

    Larxon Chieftain

    Joined:
    Apr 11, 2010
    Messages:
    15
    Uh...so, what do I do to fix the loading problem? And I put it in the right folder, it still doesn't work. (And what you said did nothing, please don't think of me as rude for saying that. :scared: People can get angry for rudeness... :backstab: AHHH! :hide:)
     
Thread Status:
Not open for further replies.

Share This Page