Correct the rulesets civ1 and civ2

Do you want to help out with Freeciv development? Then check out this forum.
Post Reply
nef
Elite
Posts: 324
Joined: Mon Jun 25, 2018 5:01 pm

Re: Correct the rulesets civ1 and civ2

Post by nef »

In Civ I (and civ1 ruleset) the legion only has defense = 1. The help text is correct:

Code: Select all

helptext      = _("\
Legions are heavily armed and well disciplined infantry\
 units with an excellent offensive value.\
")
Note the 'excellent offensive value'.

As supplied in the distro the roles are inappropriate and should be:

Code: Select all

; roles         = "DefendOk", "DefendOkStartUnit",
roles         = "AttackStrongStartUnit",    ;nef
                "Hut", "BarbarianBuild", "BarbarianSea"
nef
Elite
Posts: 324
Joined: Mon Jun 25, 2018 5:01 pm

Re: Correct the rulesets civ1 and civ2

Post by nef »

"Airliftable" flag in civ1 should be removed from [unitclass_land]. Can never be done because the effect Airlift is never set but AGH hasn't figured this out (and probably shouldn't need to).

Change the flags list in section [unitclass_land] so:

Code: Select all

; flags         = "TerrainSpeed", "DamageSlows", "CanOccupyCity", "BuildAnywhere",
flags         = "TerrainSpeed",  "CanOccupyCity", "BuildAnywhere", ;nef
                "CollectRansom", "ZOC", "CanFortify", "CanPillage",
;                 "TerrainDefense", "KillCitizen", "Airliftable"
                "TerrainDefense", "KillCitizen"                    ;nef

nef
Elite
Posts: 324
Joined: Mon Jun 25, 2018 5:01 pm

Re: Correct the rulesets civ1 and civ2

Post by nef »

nef wrote:As I recall free shield upkeep should be MIN (city size, 3) under despotism (and anarchy?).

If so then replace sections [effect_upkeep_free_units_anarchy] and
[effect_upkeep_free_units_despotism] with the following:

Code: Select all

[effect_upkeep_free_units_1]
type    = "Unit_Upkeep_Free_Per_City"
value   = 1
reqs    =
    { "type",       "name",      "range", "present"
      "MinSize",      1,         "city",   TRUE
      "Gov",        "Monarchy",  "Player", FALSE
      "Gov",        "Republic",  "Player", FALSE
      "Gov",        "Democracy", "Player", FALSE
      "Gov",        "Communism", "Player", FALSE
      "OutputType", "Shield",    "Local",  TRUE
    }

[effect_upkeep_free_units_2]
type    = "Unit_Upkeep_Free_Per_City"
value   = 1
reqs    =
    { "type",       "name",      "range", "present"
      "MinSize",      2,         "city",   TRUE
      "Gov",        "Monarchy",  "Player", FALSE
      "Gov",        "Republic",  "Player", FALSE
      "Gov",        "Democracy", "Player", FALSE
      "Gov",        "Communism", "Player", FALSE
      "OutputType", "Shield",    "Local",  TRUE
    }

[effect_upkeep_free_units_3]
type    = "Unit_Upkeep_Free_Per_City"
value   = 1
reqs    =
    { "type",       "name",      "range", "present"
      "MinSize",      3,         "city",   TRUE
      "Gov",        "Monarchy",  "Player", FALSE
      "Gov",        "Republic",  "Player", FALSE
      "Gov",        "Democracy", "Player", FALSE
      "Gov",        "Communism", "Player", FALSE
      "OutputType", "Shield",    "Local",  TRUE
    }
Can someone confirm/deny?
In response to meynaf's response I include the civ2civ3 style solution for cities up to size 19:
upkeep.txt
(8.42 KiB) Downloaded 446 times
This should be enough:
  • Cities larger than this are not so easy in despotism
    If you are using despotism with cities this size you need your head read
    You can add more if you are really desperate
nef
Elite
Posts: 324
Joined: Mon Jun 25, 2018 5:01 pm

Re: Correct the rulesets civ1 and civ2

Post by nef »

Trade Routes:

As I reported in a previous post my recollection is that trade routes maxxed out at about 13 each in the (late?) middle game, declining to something insignificant at the end.

The effect "Traderoute_Pct" can be used to implement this. I used the calendar year breaks to degrade the recurrent revenue by 20% per break ending up at a residual of 20%. An example of each [effect_trade_*] is

Code: Select all

[effect_trade_1]
type    = "Traderoute_Pct"
value   = -20
reqs    =
    { "type", "name", "range"
      "MinYear", "1000", "World"
    }
The full set:
trade.txt
(646 Bytes) Downloaded 442 times
Features:

1. Although the steps are a little coarse the overall effect is remarkably similar to how I remember it.

2. These trade rules have a dramatic effect on the acceleration of the tech race that occurs at the end of the game reducing the rate from 3 techs per turn to just 1 - still much too fast (IMO) but a vast improvement.

There are other factors that affect the tech rate - such as tiles per player - so some tinkering may be in order for different map sizes etc.. The first rule in the attachment actually has no effect but I left it there for tinkerers.

There is a glitch: someone forgot to tell the client about the effect "Traderoute_pct".
nef
Elite
Posts: 324
Joined: Mon Jun 25, 2018 5:01 pm

Re: Correct the rulesets civ1 and civ2

Post by nef »

For this week I decided to adopt some advice from the original post by sveinung and do some comparisons between the civ1 ruleset and the wiki.

What actually prompted this was the observation that in civ1 the calvary (= horsemen) was made obsolete by musketeers. This did not seem right. One would have expected that knights would have done the job but the wiki says somethng else again: riflemen (actually conscription). Now, surprising as this may be, it actually 'rang a bell' - as they say. But now, in addition, it was clear from the wiki that obsolescence in Civ I is actually due to technology, not a new unit as such. In Civ I (and the civ1 ruleset) there is no ambiguity, but it leads me to this observation: The fc paradigm of obsolescence by unit may have been a Civ II innovation to create a new feature of "upgrade" - something I do not remember from Civ I, and of marginal use if you only have the one veteran level (above green). So if this 'no upgrade' paradigm is correct for Civ I (or just desirable as an option) then one could solve this problem with a simple new field in [unit_*] sections - 'upgrade_to = "<unit>"'. For convenience the default should be the unit defined in the field 'obsolete_by = "<unit>"', if present; = "None" otherwise. In any event the change to current fc2.6 civ1 units.ruleset is to replace in the section [unit_cavalry]

Code: Select all

obsolete_by   = "Musketeers"
by

Code: Select all

obsolete_by   = "Riflemen"
I think this may have been a mistake in Civ I. I'm in two minds about this: I would not shout "blue murder" if it was changed to what is more obvious:

Code: Select all

obsolete_by   = "Knights" 
To confuse matters even more, the civilopedia for knights states "they dominated the battlefield until the development of firearms. They remained the primary offensive weapon of war until the day arrived when they could be shot out of the saddle from a distance." I think the general grasp on history (by Sid M. & co.) was not quite what it could have been. The last successful calvary charge showed that they could easily hold their own against rifles, and even machine guns, the former because they were moving too fast for the rifles to be "aimed" and had to be just "pointed" losing the prime advantage of the rifles being rifled. As for machine guns it may have been just the rapidity of the charge limiting the amount of casualties. In my view, the real reason was the mud. Beersheba was dry desert: artillery in France turned the wet fields into a deadly quagmire. Meanwhile, the tracks on 'tanks' were actually lubricated by the mud - ironically making them less suitable in sandy deserts where the tracks were (originally but even in WWII) super quick to wear out.
nef
Elite
Posts: 324
Joined: Mon Jun 25, 2018 5:01 pm

Re: Correct the rulesets civ1 and civ2

Post by nef »

Factories:

According to the wiki one does not need a factory to build a manufacturing plant. And there appears to be agreement (with the rule itself) that the mfg plant makes the factory REDUNDANT.

Delete the following predicate from [building_mfg_plant]

Code: Select all

       "Building", "Factory", "City"
The help text is also wrong :

Code: Select all

Together with a Factory, a Manufacturing Plant increases the shield\
 production in a city by 100%.\
and should be replaced by

Code: Select all

Increases the shield production in a city by 100%.\
 This increase may also contribute significantly to pollution.\
"), _("\
 A Factory with the Mfg. Plant will not provide\
 any extra production bonus.\
The wiki states that ALL types of power plant can be built without a factory (or mfg plant).
In sections [building_power_plant], [building_hydro_plant] and [building_nuclear_plant] delete the predicate

Code: Select all

      "Building", "Factory", "City"
The help text for all three is wrong and needs changing. Also the text:

Code: Select all

A city can only have one Hydro Plant, Power Plant, or\
 Nuclear Plant.\
is incorrect since you CAN HAVE any combination of the three.

So my suggestion for replacements are as follows:

[building_power_plant]:

Code: Select all

helptext	= _("\
If the city has a Hydro Plant, Power Plant, or Nuclear Plant\
 the shield production of a Factory or Mfg. Plant in the\
 city increases with an additional bonus of 50% making the total bonus 100%\
 (with just a Factory) or 150% with a Mfg. Plant.\
"), _("\
The extra production may lead to the city generating more pollution.\
")

[building_hydro_plant]

Code: Select all

helptext	= _("\
Reduces the amount of pollution generated by production in a city by 50%.\
"), _("\
If the city has a Hydro Plant, Power Plant, or Nuclear Plant\
 the shield production of a Factory or Mfg. Plant in the\
 city increases with an additional bonus of 50% making the total bonus 100%\
 (with just a Factory) or 150% with a Mfg. Plant.\
")
[building_nuclear_plant]

Code: Select all

helptext	= _("\
Reduces the amount of pollution generated by production in a city by 50%.\
"), _("\
If the city has a Hydro Plant, Power Plant, or Nuclear Plant\
 the shield production of a Factory or Mfg. Plant in the\
 city increases with an additional bonus of 50% making the total bonus 100%\
 (with just a Factory) or 150% with a Mfg. Plant.\
")
N.b. This help text is the same as for Hydro Plant but should ultimately have an additional comment about a meltdown disaster (when applicable).


The wiki is quite clear that the production bonus is NOT granted without either a factory or mfg plant . It is not so clear about the reduction in pollution for hydro/nuclear but the implication is that you do (always) get the reduction.
nef
Elite
Posts: 324
Joined: Mon Jun 25, 2018 5:01 pm

Re: Correct the rulesets civ1 and civ2

Post by nef »

Misc.

wiki states: Great Library obsolete by University (TWICE)!!! If so, in section [building_great_library]
replace

Code: Select all

 
obsolete_by	=
    { "type", "name", "range", "survives"
      "Tech", "Electronics", "World", TRUE
    }
by

Code: Select all

 
obsolete_by	=
    { "type", "name", "range", "survives"
      "Tech", "University", "World", TRUE
    }


The help text is wrong:

Code: Select all

helptext	= _("\
The civilization which builds the Great Library gets every advance\
 that at least two other teams have achieved.\
")
Should be replaced by:

Code: Select all

helptext	= _("\
The civilization which has the Great Library gets every advance\
 that at least two other teams have achieved.\
")
(or something similar - other help text often refers to player and/or control).



Wiki: UN same as great wall - can not be currently implemented!

The wiki states that the cure for cancer makes 1 citizen HAPPY. If so, then in section [effect_cure_for_cancer] replace

Code: Select all

type    = "Force_Content"
value	= 1
reqs	=
    { "type", "name", "range"
      "Building", "Cure For Cancer", "Player"
    }
with

Code: Select all

type    = "Make_Happy"
value	= 1
reqs	=
    { "type", "name", "range"
      "Building", "Cure For Cancer", "Player"
    }
N.b. this also 'rings a bell'.


According to wiki baracks uk is 0/1/2 whereas the civ1 ruleset codes 1/2/3. Can this be checked?

All up I would suggest that advice from the wiki be taken at face value in default of knowing better.
nef
Elite
Posts: 324
Joined: Mon Jun 25, 2018 5:01 pm

Re: Correct the rulesets civ1 and civ2

Post by nef »

In a previous post concerning factories power plants etc. I omitted some key changes to the civ1 effects.ruleset so I will provide the changes necessary for the following:
  • a. deny any production bonus from Power Plant, Hydro Plant, or Nuclear Plant if the city does NOT have either a Factory or Mfg. Plant.
    b. fix the bug where the negative predicates for the Hoover Dam used range Player instead of Continent. [This was reported in RIP (23).]
There is no change to pollution reduction (apart from the bug fix).


......
nef
Elite
Posts: 324
Joined: Mon Jun 25, 2018 5:01 pm

Re: Correct the rulesets civ1 and civ2

Post by nef »

A. replace the section [effect_hoover_dam] with:

Code: Select all

[effect_hoover_dam_bonus_1]
type    = "Output_Bonus"
value	= 50
reqs	=
    { "type",       "name",             "range",    "present"
      "OutputType", "shield",           "local",     TRUE
      "Building",   "Hoover Dam",       "Continent", TRUE   ;  was correct
      "Building",   "Factory",          "City",      TRUE     
      "Building",   "Mfg. Plant",       "City",      FALSE     
    }

[effect_hoover_dam_bonus_2]
type    = "Output_Bonus"
value	= 50
reqs	=
    { "type",       "name",             "range",    "present"
      "OutputType", "shield",           "local",     TRUE
      "Building",   "Hoover Dam",       "Continent", TRUE   ;  was correct
      "Building",   "Mfg. Plant",       "City",      TRUE     
    }
also, for textual consistency change [effect_hoover_dam_1] to read:

Code: Select all

[effect_hoover_dam_pollution]
type    = "Pollu_Prod_Pct"
value	= -50
reqs	=
    { "type",       "name",             "range",    "present"
      "Building",   "Hoover Dam",       "Continent", TRUE   ;  was correct
      "Building",   "Recycling Center", "City",      FALSE
    }

......
nef
Elite
Posts: 324
Joined: Mon Jun 25, 2018 5:01 pm

Re: Correct the rulesets civ1 and civ2

Post by nef »

B. replace the section [effect_nuclear_plant] with:

Code: Select all

[effect_nuclear_plant_bonus_1]
type    = "Output_Bonus"
value	= 50
reqs	=
    { "type",       "name",             "range",    "present"
      "OutputType", "shield",           "local",     TRUE
      "Building",   "Nuclear Plant",    "City",      TRUE
      "Building",   "Factory",          "City",      TRUE     
      "Building",   "Mfg. Plant",       "City",      FALSE     
      "Building",   "Hoover Dam",       "Continent", FALSE   ;  bug fix
    }

[effect_nuclear_plant_bonus_2]
type    = "Output_Bonus"
value	= 50
reqs	=
    { "type",       "name",             "range",    "present"
      "OutputType", "shield",           "local",     TRUE
      "Building",   "Nuclear Plant",    "City",      TRUE
      "Building",   "Mfg. Plant",       "City",      TRUE     
      "Building",   "Hoover Dam",       "Continent", FALSE   ;  bug fix
    }
also, as a bug fix, change [effect_nuclear_plant_1] to read:

Code: Select all

[effect_nuclear_plant_pollution]
type    = "Pollu_Prod_Pct"
value	= -50
reqs	=
    { "type",       "name",             "range",    "present"
      "Building",   "Nuclear Plant",    "City",      TRUE
      "Building",   "Recycling Center", "City",      FALSE
      "Building",   "Hoover Dam",       "Continent", FALSE   ;  bug fix
    }
.......
Post Reply