Complete.Org: Mailing Lists: Archives: freeciv-dev: September 2002:
[Freeciv-Dev] Re: city_incite_cost
Home

[Freeciv-Dev] Re: city_incite_cost

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: "Per I. Mathisen" <per@xxxxxxxxxxx>
Cc: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: city_incite_cost
From: Thomas Strub <ue80@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 27 Sep 2002 17:03:47 +0200

On Wed, Sep 25, 2002 at 10:19:39PM +0200, Thomas Strub wrote:
> On Wed, Sep 25, 2002 at 05:21:30PM +0000, Per I. Mathisen wrote:
> > On Wed, 25 Sep 2002, Thomas Strub wrote:
> > > i think that the city_incite_cost for cities with units, buildings and
> > > wonders in it is to cheap.
> > >
> > > My approach for city_value is not final, so feel free to upgrade it.
> > 
> > I intend to change this function to
> > 
> >     int city_incite_cost(pplayer, pcity)

Done ...
But i didn't change:
client/packhand.c
client/gui-***/dialogs.c

> >    } else {
> > -    pcity->incite_revolt_cost = city_owner(pcity)->economic.gold + 1000;
> > +    goldfactor = city_owner(pcity)->economic.gold + 1000;
> > +    goldfactor *= pcity->size;
> > 
> > Instead of size, I would like to multiply by the number of happy people in
> > the city times two. So it gets harder to bribe happy cities, which makes
> > sense, I think. Also this multiplication should be moved down to right
> > before the distance division, so that it affects everything in the city.
> 
> I think perhaps the score number would be better.
> 2 for happy
> 1 for normal
> 0 for unhappy/angry (perhaps -)
> 1 for specialists

(angry not implemented ...)

> Perhaps with an additional *2 for celebrating cities (begin of turn
> celebrating, not at the moment. Because otherwise i play 99% of turntime
> with max lux ... and not anarchy)

> >      pcity->incite_revolt_cost /= (dist + 3);
> > 
> > This should be moved down, so that all costs are divided by dist. We
> > should retain the rule that incite costs go down dramatically as we
> > approach the empire's periphery. This is an important civ mechanic, and
> > one which makes a lot of sense.
> 
> I know its an important mechanic. But more later.
>  
> > IMHO, this and the size multiplication provide the balance that the other
> > factors should be adjusted by. No factor should be added to the cost
> > unadjusted.
> 
> I have no good idea how to do that and get fair numbers.
>  
> > +    unit_list_iterate(pcity->units_supported, punit) {
> > +      city_value += unit_type(punit)->build_cost/2;
> > +    } unit_list_iterate_end;
> > +
> > +    unit_list_iterate(map_get_tile(pcity->x,pcity->y)->units,punit){
> > +      city_value += unit_type(punit)->build_cost/2;
> > +    } unit_list_iterate_end;
> > 
> > I think we should choose here which one of these we want to use. Both is
> > overkill. I think I would go for units actually in the city, since they
> > make it harder to revolt, while units away from the city contribute
> > unhappiness, the very in-game reason behind revolt.
>  
> I think for the value of a city both are useful. Perhaps 1/4 to 3/4 is
> better. But a city which is supporting units should be more expensive
> than a city which isn't.  
> 
> > +    built_impr_iterate(pcity, i) {
> > +      if (!is_wonder(i)) {
> > +        city_value += improvement_value(i)/2;
> > 
> > For non-ICS games, ouch. Divide at least by 4.
> > 
> > +      } else {
> > +        city_value += improvement_value(i);
> > 
> > It will be almost impossible to bribe a wondercity then. Maybe that is a
> > good thing, though. Or halve this by two.
> 
> The numbers aren't 100% balanced, but i think that the values should be
> something like that. A city with 5 clads for 30 gold is a joke.

I reduced the numbers 
 
> > +    pcity->incite_revolt_cost += city_value*4;
> > 
> > ???!!
> 
> There is a big problem to get numbers which are fair. With my current
> solution a city with temple give costs 40/2*4 = 80 more than one
> without. With the modifiers that number can change
> 
> goldfactor * sizemodifier is ~ 1500*4 = 6000
> city_value is ~ prodution of last 50 rounds = 400 
> 
> So adding the city_value is useless it nearly doesn't change the
> buycost for normal cities.
> The money in the capital is far away, because that the
> distance-modifiers. But the buildings are local. So i divided them
> by a distance-modifier = 1. 
 
I'm waiting for a better solution than mine.

> I would change the buy back modifier in:
> normal city: 2
> original enemy city: 4
> original own city: 1 

Have done this.
  
> > Have you tried this patch? What kind of values do you get? Can you give
> > some examples of costs for various cities?
> 
> I have tried it and cities get little bit more expensive. The first
> concept from me was to make buying cities expensive. 
> Cities with low distance to capital got cheaper after buying a wonder
> ... (the round after)
 
Thomas
-- 
Thomas Strub  ***  eMail ue80@xxxxxxxxxxxxxxxxxxx
Nur weil das Aufzeichnen, Kopieren und Schnüffeln bei elektronischem 
Datenverkehr leichter als bei der klassischen Post ist, darf man es nicht
einfach tun.

Attachment: city_incite_cost-2.2.diff
Description: Text document


[Prev in Thread] Current Thread [Next in Thread]