Announcement

Collapse
No announcement yet.

CTP MODIFICATION: "BUILDING BUILT" MOD

Collapse
X
Collapse
  •  

  • CTP MODIFICATION: "BUILDING BUILT" MOD

    TinySLICs 1.01

    This is a "mini Mod-Pack" for Civilization: Call to Power

    I wrote this one because I was getting SO annoyed by CtP telling me all the time my production queue was empty but NOT what has been built in that city!

    So, after installing this Mod, you will finally GET this essential piece of information (wonder why the "cracks over at Activision couldn't fix that themselves...).


    What is changed?

    You will still get that hammer symbol informing you that the production queue is empty - I could have erased that, but it's quite useful, really, if you happen to forget setting production in a city (this icon keeps reappearing each turn).

    Additionally, you will see another icon, a blue box with a question mark (normally used in the tutorial only). When clicking this box, you are informed on WHAT has been built WHERE, and exactly as with the normal hammer icon, you have the option to directly go to that city's production.

    Furthermore, a direct link to the Great Library is in this message box (just in case you forgot what that thing you just built is for).




    Version 1.01:

    Replaced the capital letters of the building name by color coded versions (thx, Mr Ogre)

    After testing, I found that I normally don't use the hammer symbol any more at all, because the new one is simply better for keeping track of one's cities' development.

    How to install:

    First, make backups of the following two files (you never know!):

    YOUR_PATH_TO_CTP/ctp_data/default/gamedata/script.slc

    and

    YOUR_PATH_TO_CTP/ctp_data/english/gamedata/info_str.txt

    It should be noted, too, that you might get error messages (although the game keeps on running) if you continue games which were saved before applying this mod.

    Now, copy the following lines to the clipboard:

    Code:
    // ---------------- start copying here ---------------- //
    trigger 'DOM_T_Building_Built' when (IsHumanPlayer(g.player) && (building.built >= 0) && (city.owner == g.player)) {
              Message(g.player, 'DOM_M_Building_Built');
    
    }
    
    messagebox 'DOM_M_Building_Built' {
            Title(ID_DOM_TITLE_CITY_BUILDING_BUILT);
            if (building.built ==  0) {Text(ID_DOM_BUILDING_BUILT_Granary);}
            if (building.built ==  1) {Text(ID_DOM_BUILDING_BUILT_Capitol);}
            if (building.built ==  2) {Text(ID_DOM_BUILDING_BUILT_City_Wall);}
    
            if (building.built ==  3) {Text(ID_DOM_BUILDING_BUILT_Temple);}
            if (building.built ==  4) {Text(ID_DOM_BUILDING_BUILT_Courthouse);}
            if (building.built ==  5) {Text(ID_DOM_BUILDING_BUILT_Publishing_House);}
            if (building.built ==  6) {Text(ID_DOM_BUILDING_BUILT_Marketplace);}
            if (building.built ==  7) {Text(ID_DOM_BUILDING_BUILT_Academy);}
            if (building.built ==  8) {Text(ID_DOM_BUILDING_BUILT_Theatre);}
    
            if (building.built ==  9) {Text(ID_DOM_BUILDING_BUILT_Aqueduct);}
            if (building.built == 10) {Text(ID_DOM_BUILDING_BUILT_Coliseum);}
            if (building.built == 11) {Text(ID_DOM_BUILDING_BUILT_Bank);}
            if (building.built == 12) {Text(ID_DOM_BUILDING_BUILT_University);}
            if (building.built == 13) {Text(ID_DOM_BUILDING_BUILT_Hospital);}
            if (building.built == 14) {Text(ID_DOM_BUILDING_BUILT_Mill);}
    
            if (building.built == 15) {Text(ID_DOM_BUILDING_BUILT_Cathedral);}
            if (building.built == 16) {Text(ID_DOM_BUILDING_BUILT_City_Clock);}
            if (building.built == 17) {Text(ID_DOM_BUILDING_BUILT_Factory);}
            if (building.built == 18) {Text(ID_DOM_BUILDING_BUILT_Oil_Refinery);}
            if (building.built == 19) {Text(ID_DOM_BUILDING_BUILT_Movie_Theatre);}
            if (building.built == 20) {Text(ID_DOM_BUILDING_BUILT_Airport);}
    
            if (building.built == 21) {Text(ID_DOM_BUILDING_BUILT_Drug_Store);}
            if (building.built == 22) {Text(ID_DOM_BUILDING_BUILT_Nuclear_Plant);}
            if (building.built == 23) {Text(ID_DOM_BUILDING_BUILT_Recycling_Plant);}
            if (building.built == 24) {Text(ID_DOM_BUILDING_BUILT_Television);}
            if (building.built == 25) {Text(ID_DOM_BUILDING_BUILT_Computer_Centre);}
            if (building.built == 26) {Text(ID_DOM_BUILDING_BUILT_SDI);}
    
            if (building.built == 27) {Text(ID_DOM_BUILDING_BUILT_Robotic_Plant );}
            if (building.built == 28) {Text(ID_DOM_BUILDING_BUILT_Security_Monitor);}
            if (building.built == 29) {Text(ID_DOM_BUILDING_BUILT_Micro_Defense);}
            if (building.built == 30) {Text(ID_DOM_BUILDING_BUILT_Aqua_Filter);}
            if (building.built == 31) {Text(ID_DOM_BUILDING_BUILT_Eco_Transit);}
            if (building.built == 32) {Text(ID_DOM_BUILDING_BUILT_Incubation_Center);}
    
            if (building.built == 33) {Text(ID_DOM_BUILDING_BUILT_Rail_Launcher);}
            if (building.built == 34) {Text(ID_DOM_BUILDING_BUILT_Arcologies);}
            if (building.built == 35) {Text(ID_DOM_BUILDING_BUILT_Beef_Vat);}
            if (building.built == 36) {Text(ID_DOM_BUILDING_BUILT_House_of_Freezing);}
            if (building.built == 37) {Text(ID_DOM_BUILDING_BUILT_Mind_Controller);}
            if (building.built == 38) {Text(ID_DOM_BUILDING_BUILT_Forcefield);}
    
            if (building.built == 39) {Text(ID_DOM_BUILDING_BUILT_Nanite_Factory);}
            if (building.built == 40) {Text(ID_DOM_BUILDING_BUILT_Fusion_Plant);}
            if (building.built == 41) {Text(ID_DOM_BUILDING_BUILT_Bio_Memory_Chip);}
            if (building.built == 42) {Text(ID_DOM_BUILDING_BUILT_Body_Exchange);}
            Button(ID_BUTTON_LIBRARY) {
                    LibraryBuilding(building.built);
    
            }
            MessageType("TUTORIAL"); 
            EyePoint(city.1.location, city.owner, 'OpenProductionCallback');
    }
    // ----------------- stop copying here ---------------- //
    Now, open your file YOUR_PATH_TO_CTP/ctp_data/default/gamedata/script.slc
    and paste the text from the clipboard below the last line. Save - done.

    Last step: Copy the following lines to the clipboard, too:

    Code:
    // ---------------- start copying here ---------------- //
    DOM_TITLE_CITY_BUILDING_BUILT   "Building completed"
    
    DOM_BUILDING_BUILT_CITY                 "???"
    DOM_BUILDING_BUILT_Granary "We have built a <c:255,0,0>granary<e> in [city.1.name]!" DOM_BUILDING_BUILT_Capitol "The capital has now moved to [city.1.name]!" DOM_BUILDING_BUILT_City_Wall "[city.1.name] is now protected by <c:255,0,0>city walls<e>!" DOM_BUILDING_BUILT_Temple "[city.1.name] now has it's own <c:255,0,0>temple<e>!" DOM_BUILDING_BUILT_Courthouse "A <c:255,0,0>courthouse<e> was built in [city.1.name]!" DOM_BUILDING_BUILT_Publishing_House "A <c:255,0,0>publishing house<e> was built in [city.1.name] !" DOM_BUILDING_BUILT_Marketplace "[city.1.name]'s traders meet in it's new <c:255,0,0>marketplace<e>!" DOM_BUILDING_BUILT_Academy "We built an <c:255,0,0>academy<e> in [city.1.name] for our scientists!" DOM_BUILDING_BUILT_Theatre "Splendid leader, we thank you for the newly built <c:255,0,0>theatre<e> in [city.1.name]!" DOM_BUILDING_BUILT_Aqueduct "[city.1.name] just completed it's <c:255,0,0>aqueduct<e>!" DOM_BUILDING_BUILT_Coliseum "[city.1.name] celebrates the completion of it's <c:255,0,0>coliseum<e>!" DOM_BUILDING_BUILT_Bank "The new <c:255,0,0>bank<e> in [city.1.name] lets business flourish!" DOM_BUILDING_BUILT_University "[city.1.name]'s new <c:255,0,0>university<e> will add to your fame!" DOM_BUILDING_BUILT_Hospital "Thanks to the new <c:255,0,0>hospital<e>, the citizens of [city.1.name] rejoice!" DOM_BUILDING_BUILT_Mill "Due to the new <c:255,0,0>mill<e>, [city.1.name]'s production keeps growing!" DOM_BUILDING_BUILT_Cathedral "Pilgrims from everywhere gape in awe at [city.1.name]'s new <c:255,0,0>cathedral<e>!" DOM_BUILDING_BUILT_City_Clock "Business is good in [city.1.name] thanks to the new <c:255,0,0>city clock<e>!" DOM_BUILDING_BUILT_Factory "Increased productivity in [city.1.name] due to the newly built <c:255,0,0>factory<e>!" DOM_BUILDING_BUILT_Oil_Refinery "More production - and more pollution - in [city.1.name] thanks to the new <c:255,0,0>oil refinery<e>!" DOM_BUILDING_BUILT_Movie_Theatre "The new <c:255,0,0>movie theatre<e> in [city.1.name] attracts lots of viewers!" DOM_BUILDING_BUILT_Airport "[city.1.name] has a new <c:255,0,0>airport<e>!" DOM_BUILDING_BUILT_Drug_Store "In [city.1.name], a <c:255,0,0>drugstore<e> has been built!" DOM_BUILDING_BUILT_Nuclear_Plant "The power of the atom is utilized in [city.1.name]'s new <c:255,0,0>nuclear plant<e>!" DOM_BUILDING_BUILT_Recycling_Plant "The new <c:255,0,0>recycling plant<e> in [city.1.name] helps keeping the environment clean!" DOM_BUILDING_BUILT_Television "On the new <c:255,0,0>television<e> in [city.1.name], most people watch 'Sid Meier's Civilization'!" DOM_BUILDING_BUILT_Computer_Centre "Our scientists in [city.1.name] gain much knowledge using the new <c:255,0,0>computer centre<e>!" DOM_BUILDING_BUILT_SDI "Star Wars becomes reality in [city.1.name] with the completion of <c:255,0,0>SDI<e>!" DOM_BUILDING_BUILT_Robotic_Plant "Fantastic production in [city.1.name] - <c:255,0,0>robotic plant<e> built!" DOM_BUILDING_BUILT_Security_Monitor "1984 in [city.1.name] - a <c:255,0,0>security monitor<e> has been built!" DOM_BUILDING_BUILT_Micro_Defense "The citizens in [city.1.name] are now protected by <c:255,0,0>micro defense<e>!" DOM_BUILDING_BUILT_Aqua_Filter "The freshly built <c:255,0,0>aqua-filter<e> in [city.1.name] eases the growth of the city!" DOM_BUILDING_BUILT_Eco_Transit "Pollution is reduced in [city.1.name] by the new <c:255,0,0>eco-transit<e>!" DOM_BUILDING_BUILT_Incubation_Center "The new <c:255,0,0>incubation centre<e> in [city.1.name] leaves women their freedom!" DOM_BUILDING_BUILT_Rail_Launcher "In [city.1.name], a <c:255,0,0>rail launcher<e> has been built!" DOM_BUILDING_BUILT_Arcologies "More space available in [city.1.name] due to the new <c:255,0,0>arcologies<e>!" DOM_BUILDING_BUILT_Beef_Vat "Food for everyone - in [city.1.name], the new <c:255,0,0>beef vats<e> make this reality!" DOM_BUILDING_BUILT_House_of_Freezing "Gold, gold, gold! The <c:255,0,0>house of freezing<e> in [city.1.name] is completed!" DOM_BUILDING_BUILT_Mind_Controller "Unhappiness is no more in [city.1.name], where a <c:255,0,0>mind controller<e> has been completed!" DOM_BUILDING_BUILT_Forcefield "[city.1.name] is now protected by a <c:255,0,0>force field<e>!" DOM_BUILDING_BUILT_Nanite_Factory "Hey, rushbuyers - wanna invest some $$$ in [city.1.name]'s new <c:255,0,0>nanite factory<e>?" DOM_BUILDING_BUILT_Fusion_Plant "The <c:255,0,0>fusion plant<e> in [city.1.name] is completed!" DOM_BUILDING_BUILT_Bio_Memory_Chip "Knowledge and CIV 47 - all available in [city.1.name]'s new <c:255,0,0>bio memory chip<e>!" DOM_BUILDING_BUILT_Body_Exchange "Come to [city.1.name] and get your body done by the new <c:255,0,0>body exchange<e>!" // ----------------- stop copying here ---------------- //
    Then, open YOUR_PATH_TO_CTP/ctp_data/english/gamedata/info_str.txt and paste at the end of the file. Save - done.

    A word of warning, though: I have tested this for quite a while, but NOT with every single building - the worst thing that might happen, however, is some garbled text.

    A bit more of a problem is what happens if any OTHER mod pack is installed - thanks to Activision's GREAT (?!?) concept of SLIC, there is NO WAY of having pointers to the strings other than directly addressing them, so if someone changes e.g. the name of a building in his mod, the old name would still be used in this new message box. Thank you, Activision!

    For questions, comments and (hopefully!) improvements, please send an email to me,

    Dominique Toussaint
    toussaint [at] qed [dot] de

    P.S.: The usual disclaimer, you know, no warranty and all that.

    P.P.S.: This is for use with the US version of CtP - for other versions, look for the file info_str.txt in your language folder (e.g. "german/gamedata") and paste it there - happy translating!

    A note by Joe Rumsey(CTP Programmer)

    When adding strings, you should probably make a brand new file rather than adding to info_str.txt, and import it from strings.txt. Any number of files can be imported, so if you do it that way you only risk losing one line from strings.txt if the user overwrites it later. You can also use #include in .slc files the same way. (Note that you can use a #include in any .slc file, but can only import string files from strings.txt itself)

    We do intend to make "mod-packs" somewhat easier for the next patch. (E.G. you will certainly be able to install CD's mod-pack without overwriting the standard data files.) I'm not certain what, if anything, we're going to do for global mods like this though. (global meaning you'd want them to apply to all scenarios and mods) But I'll think about it some more.

      Posting comments is disabled.

    Article Tags

    Collapse

    Latest Articles

    Collapse

    • CTP MODIFICATION: MAKING UNIT GRAPHICS
      by Harlan
      Get the Full version of this guide with images and unit.txt example

      Here is what I have so far on a file to help explain how to make non-animated unit graphics. I'm going to add some more (such as an additional section on how to make shadows) but this is the basic part. When I post it, I will include a couple of files that will help the user make files easier. For now if you want to try this out, use the text I included earlier in this thread for the text file, and open up one of the cow pictures that comes with the graphics editor patch to start your graphic off from (deleting the cow, of course).
      ...
      March 5, 2012, 17:43
    • CTP MODIFICATION: AIP COMMENTS
      by Celestial_Dawn
      I think I've managed to figure out how the AIPs work. The AIPs certainly have a lot of information about the inner workings of the AI. Read and enjoy. AIP COMMENTS (based on default.aip) Default.aip is the first aip loaded at game start and contains a number of strings which are not found in the other personality aips. If repeated in the other aips, the new values take precedence over the default. // The next line was used in Dark Reign to specify a likelihood that a spy // would be seen... We can use that stuff in Civ3, too int infiltrator_period = 2; No clue. ...
      March 5, 2012, 17:33
    • CTP MODIFICATION: SET_FOOD_OR_PROD.FLI and SET_RESOURCE_DESIRE.FLI COMMENTS
      by Celestial_Dawn
      SET_FOOD_OR_PROD.FLI and SET_RESOURCE_DESIRE.FLI COMMENTS For all non-barbarians: 1. If cities = 0-1 and total population is 1, Maximise growth ratio (minimise turns to next pop) Pay as much wages as needed, minimise rations, average workday No PW Minimum workers on production tiles Maximum workers on food tiles Opening game strategy (this means explore more, and don't build roads yet - this is the same for all entries in this FLI so I won't repeat it) ...
      March 5, 2012, 17:27
    • CTP MODIFICATION: BEGINTURN.FLI&OUTPUTS.FLI COMMENTS
      by Celestial_Dawn
      BEGINTURN.FLI(S) COMMENTS beginturn.fli is a template that is unused by the game. The settings for the various personalities are: Barbarian settle_dense, science_slow, diplomacybarbarians //Barbarian Cleric settle_dense, science_fast, diplomacypeacebackstab //Religious SciFew settle_loose, science_fast, diplomacypeaceloyal //Agreeable SciMany settle_dense, science_fast, diplomacypeaceloyal //Peaceful Slaver settle_dense, science_fast, diplomacywarbackstab //Slaver WarFew settle_loose, science_slow, diplomacywarloyal //Aggressive WarMany settle_dense, science_slow, diplomacywarbackstab //Militant Note that both science_fast and science_slow are identical, Activision decided to set them all to a fast science rate, but differentiated them according to their research goals - i.e. do you research war branches rather than development brances of the tech tree. I think this approach is just fine....
      March 5, 2012, 17:23
    • CTP MODIFICATION: AIPLOADER.FLI COMMENTS
      by Celestial_Dawn
      AIPLOADER.FLI COMMENTS OUTPUT primary_loaded is only in aiploader.fli primary_loaded is to make sure that the AIPs are loaded in the correct order. This is to ensure that survival_mode.aip and citywall.aip are only loaded after the personality aips have first been loaded. Personality AIPs are always loaded on the first turn (turn 0). Otherwise, not relevant...
      February 13, 2012, 19:07
    • CTP MODIFICATION: ACTIVISION FAQ
      by Mr Ogre
      How to stagnate growth and technology

      "When you create scenarios, will you be able to stagnate growth? For example, if I wanted to create a Viking scenario would you be able to ensure the tech level remains the same for that time period as opposed to being able to develop nuclear weapons? In Civ 2 that was one of the things that bothered me most. Someone creates a WW2 scenario and it quickly turns into a Desert Storm scenario."
      You can "stagnate" technology through three routes:...
      February 11, 2012, 21:16
    Working...
    X