URL:
  <http://gna.org/patch/?3325>

                 Summary: Allow custom types for governments to be used in
effect requirements.
                 Project: Freeciv
            Submitted by: henkutsu_tama
            Submitted on: Sat 16 Jun 2012 10:36:38 PM GMT
                Category: general
                Priority: 5 - Normal
                  Status: None
                 Privacy: Public
             Assigned to: None
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
         Planned Release: 

    _______________________________________________________

Details:

I am fairly sure this would be a big project (I am not a programmer), needing
changes to;
fc_types.h
requirements.h
packets.def ?
governments.c
governments.h
effects.h
(perhaps adding govtypes.c/h as well?)

But it looks like most of the code can be copied from the infrastructure
needed for unit types, and there are good reasons for doing it:

After reading through all the rulesets I can get my hands on, (aliens,
ancients, Civ2-3, etc) and writing my own I have notice that there is a huge
amount of repetition when tying effects to governments, and that repetition
increases the chances of errors/difficulty of modifying and lowers
readability.

Some time ago it was proposed on the wiki to radically change how governments
work; ethos, scope etc. Not all of these fit together well so there would have
to be relation rules.. and it becomes a mess. HOWEVER! Setting anarchy to 1
turn and (using my ruleset as an example) having 15 different governments
across a [3 (size),3 (focus),2 (antiquity)] matrix with their own quirks works
just as well, and seems to be understandable by the ai without any changes.
(need to do more testing). The only problem is defining everything, and the
amount of req{} nreq{} gets ridiculous. 

Being able to just write
; Voting governments have a senate that may prevent war
[effect_govtype_voting_senate]
type  = "Has Senate"
value   = 1
reqs    =
    { "type",       "name",      "range"
      "GovType", "Voting",  "Player"
    }

; Economically geared societies gain a trade bonus
[effect_govtype_voting_senate]
type    = "Output_Inc_Tile"
value   = 1
reqs    =
    { "type",       "name",      "range"
      "GovType", "FocusEconomy", "Player"
      "OutputType", "Trade", "Local"
    }

; Unsophisticated governance leads to lazy loafers
[effect_govtype_primitive_production]
type    = "Output_Penalty_Tile"
value   = 2
reqs    =
    { "type",       "name",      "range"
      "GovType", "Primitive",  "Player"
    }

or
; Temple effects reduced under 'rational' governments, unless it is a cult of
personality.
[effect_temple_rational]
type    = "Make_Content"
value   = -1 
reqs    =
    { "type",       "name",      "range"
      "GovType", "Rational",  "Player"
    }
nreqs
    { "type",       "name",      "range"
      "GovType", "CultLeader",  "Player"
    }
These are simple but common instances where flags would help. In more complex
situations, such as where a wonder improves the effect of a building, but only
under/in a different way under different governments.

Again, I am not a programmer. I can't svn or diff to save my life but I will
have a go at implementing this on a daily snapshot. If I can get it to work
(not likely, but I'll try), I'll upload the modified files and let someone
smarter diff them.





    _______________________________________________________

Reply to this item at:

  <http://gna.org/patch/?3325>

_______________________________________________
  Message sent via/by Gna!
  http://gna.org/


_______________________________________________
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to