<URL: http://bugs.freeciv.org/Ticket/Display.html?id=39413 >
2008/4/16 Marko Lindqvist <[email protected]>:
> I don't like the way "Slow_Down_Timeline" maps between effect values
> and hardcoded turn lengths (in years). Would it be much harder to do
> more generic "Turn_Length" -effect? Value of this effect would tell
> current year increment/turn.
Attached patch adds new effect "Turn_Years". Old "Slow_Down_Timeline"
effect is left as it is.
Does anybody know correct calendar effects for civ1/2? For now I made
all the rulesets to use same calendar as hardcoded version used to be,
with FIXME comment.
- ML
diff -Nurd -X.diff_ignore freeciv/ai/aicity.c freeciv/ai/aicity.c
--- freeciv/ai/aicity.c 2008-10-27 04:13:32.000000000 +0200
+++ freeciv/ai/aicity.c 2009-05-08 01:00:00.000000000 +0300
@@ -427,6 +427,7 @@
v += c * amount;
break;
+ case EFT_TURN_YEARS:
case EFT_SLOW_DOWN_TIMELINE:
/* AI doesn't care about these. */
break;
diff -Nurd -X.diff_ignore freeciv/common/effects.c freeciv/common/effects.c
--- freeciv/common/effects.c 2009-05-06 11:50:59.000000000 +0300
+++ freeciv/common/effects.c 2009-05-08 00:59:01.000000000 +0300
@@ -92,6 +92,7 @@
"Defend_Bonus",
"No_Incite",
"Gain_AI_Love",
+ "Turn_Years",
"Slow_Down_Timeline",
"Civil_War_Chance",
"Empire_Size_Base",
diff -Nurd -X.diff_ignore freeciv/common/effects.h freeciv/common/effects.h
--- freeciv/common/effects.h 2009-05-07 23:43:31.000000000 +0300
+++ freeciv/common/effects.h 2009-05-08 00:58:37.000000000 +0300
@@ -79,6 +79,7 @@
EFT_DEFEND_BONUS,
EFT_NO_INCITE,
EFT_GAIN_AI_LOVE,
+ EFT_TURN_YEARS,
EFT_SLOW_DOWN_TIMELINE, /* Space module tech slowdown */
EFT_CIVIL_WAR_CHANCE,
EFT_EMPIRE_SIZE_BASE, /* +1 unhappy when more than this cities */
diff -Nurd -X.diff_ignore freeciv/common/game.c freeciv/common/game.c
--- freeciv/common/game.c 2009-05-03 18:59:38.000000000 +0300
+++ freeciv/common/game.c 2009-05-08 01:17:41.000000000 +0300
@@ -482,11 +482,13 @@
***************************************************************/
int game_next_year(int year)
{
+ int increase = get_world_bonus(EFT_TURN_YEARS);
const int slowdown = (game.info.spacerace
? get_world_bonus(EFT_SLOW_DOWN_TIMELINE) : 0);
- if (year == 1) /* hacked it to get rid of year 0 */
+ if (year == 1) { /* hacked it to get rid of year 0 */
year = 0;
+ }
/* !McFred:
- want year += 1 for spaceship.
@@ -503,23 +505,25 @@
/* Note the slowdown operates even if Enable_Space is not active. See
* README.effects for specifics. */
- if (year >= 1900 || (slowdown >= 3 && year > 0)) {
- year += 1;
- } else if (year >= 1750 || slowdown >= 2) {
- year += 2;
- } else if (year >= 1500 || slowdown >= 1) {
- year += 5;
- } else if( year >= 1000 )
- year += 10;
- else if( year >= 0 )
- year += 20;
- else if( year >= -1000 ) /* used this line for tuning (was -1250) */
- year += 25;
- else
- year += 50;
+ if (slowdown >= 3) {
+ if (increase > 1) {
+ increase = 1;
+ }
+ } else if (slowdown >= 2) {
+ if (increase > 2) {
+ increase = 2;
+ }
+ } else if (slowdown >= 1) {
+ if (increase > 5) {
+ increase = 5;
+ }
+ }
- if (year == 0)
+ year += increase;
+
+ if (year == 0) {
year = 1;
+ }
return year;
}
diff -Nurd -X.diff_ignore freeciv/data/civ1/effects.ruleset
freeciv/data/civ1/effects.ruleset
--- freeciv/data/civ1/effects.ruleset 2008-10-27 04:13:56.000000000 +0200
+++ freeciv/data/civ1/effects.ruleset 2009-05-08 01:19:12.000000000 +0300
@@ -1206,4 +1206,64 @@
reqs =
{ "type", "name", "range"
"Tech", "Railroad", "Player"
- }
+ }
+
+; FIXME: Calendar effects are copied from default rulesets and are
+; probably wrong for civ1 ruleset.
+[effect_calendar_base]
+name = "Turn_Years"
+value = 50
+
+; 50 - 25 = 25
+[effect_calendar_1]
+name = "Turn_Years"
+value = -25
+reqs =
+ { "type", "name", "range"
+ "MinYear", "-1000", "World"
+ }
+
+; 25 - 5 = 20
+[effect_calendar_2]
+name = "Turn_Years"
+value = -5
+reqs =
+ { "type", "name", "range"
+ "MinYear", "0", "World"
+ }
+
+; 20 - 10 = 10
+[effect_calendar_3]
+name = "Turn_Years"
+value = -10
+reqs =
+ { "type", "name", "range"
+ "MinYear", "1000", "World"
+ }
+
+; 10 - 5 = 5
+[effect_calendar_4]
+name = "Turn_Years"
+value = -5
+reqs =
+ { "type", "name", "range"
+ "MinYear", "1500", "World"
+ }
+
+; 5 - 3 = 2
+[effect_calendar_5]
+name = "Turn_Years"
+value = -3
+reqs =
+ { "type", "name", "range"
+ "MinYear", "1750", "World"
+ }
+
+; 2 - 1 = 1
+[effect_calendar_6]
+name = "Turn_Years"
+value = -1
+reqs =
+ { "type", "name", "range"
+ "MinYear", "1900", "World"
+ }
diff -Nurd -X.diff_ignore freeciv/data/civ2/effects.ruleset
freeciv/data/civ2/effects.ruleset
--- freeciv/data/civ2/effects.ruleset 2008-10-27 04:13:56.000000000 +0200
+++ freeciv/data/civ2/effects.ruleset 2009-05-08 01:18:39.000000000 +0300
@@ -1993,3 +1993,63 @@
{ "type", "name", "range"
"Gov", "Fundamentalism", "Player"
}
+
+; FIXME: Calendar effects are copied from default rulesets and are
+; probably wrong for civ2 ruleset.
+[effect_calendar_base]
+name = "Turn_Years"
+value = 50
+
+; 50 - 25 = 25
+[effect_calendar_1]
+name = "Turn_Years"
+value = -25
+reqs =
+ { "type", "name", "range"
+ "MinYear", "-1000", "World"
+ }
+
+; 25 - 5 = 20
+[effect_calendar_2]
+name = "Turn_Years"
+value = -5
+reqs =
+ { "type", "name", "range"
+ "MinYear", "0", "World"
+ }
+
+; 20 - 10 = 10
+[effect_calendar_3]
+name = "Turn_Years"
+value = -10
+reqs =
+ { "type", "name", "range"
+ "MinYear", "1000", "World"
+ }
+
+; 10 - 5 = 5
+[effect_calendar_4]
+name = "Turn_Years"
+value = -5
+reqs =
+ { "type", "name", "range"
+ "MinYear", "1500", "World"
+ }
+
+; 5 - 3 = 2
+[effect_calendar_5]
+name = "Turn_Years"
+value = -3
+reqs =
+ { "type", "name", "range"
+ "MinYear", "1750", "World"
+ }
+
+; 2 - 1 = 1
+[effect_calendar_6]
+name = "Turn_Years"
+value = -1
+reqs =
+ { "type", "name", "range"
+ "MinYear", "1900", "World"
+ }
diff -Nurd -X.diff_ignore freeciv/data/default/effects.ruleset
freeciv/data/default/effects.ruleset
--- freeciv/data/default/effects.ruleset 2008-10-27 04:13:56.000000000
+0200
+++ freeciv/data/default/effects.ruleset 2009-05-08 01:10:43.000000000
+0300
@@ -1988,4 +1988,62 @@
reqs =
{ "type", "name", "range"
"Tech", "Railroad", "Player"
- }
+ }
+
+[effect_calendar_base]
+name = "Turn_Years"
+value = 50
+
+; 50 - 25 = 25
+[effect_calendar_1]
+name = "Turn_Years"
+value = -25
+reqs =
+ { "type", "name", "range"
+ "MinYear", "-1000", "World"
+ }
+
+; 25 - 5 = 20
+[effect_calendar_2]
+name = "Turn_Years"
+value = -5
+reqs =
+ { "type", "name", "range"
+ "MinYear", "0", "World"
+ }
+
+; 20 - 10 = 10
+[effect_calendar_3]
+name = "Turn_Years"
+value = -10
+reqs =
+ { "type", "name", "range"
+ "MinYear", "1000", "World"
+ }
+
+; 10 - 5 = 5
+[effect_calendar_4]
+name = "Turn_Years"
+value = -5
+reqs =
+ { "type", "name", "range"
+ "MinYear", "1500", "World"
+ }
+
+; 5 - 3 = 2
+[effect_calendar_5]
+name = "Turn_Years"
+value = -3
+reqs =
+ { "type", "name", "range"
+ "MinYear", "1750", "World"
+ }
+
+; 2 - 1 = 1
+[effect_calendar_6]
+name = "Turn_Years"
+value = -1
+reqs =
+ { "type", "name", "range"
+ "MinYear", "1900", "World"
+ }
diff -Nurd -X.diff_ignore freeciv/doc/README.effects freeciv/doc/README.effects
--- freeciv/doc/README.effects 2009-05-07 23:43:31.000000000 +0300
+++ freeciv/doc/README.effects 2009-05-08 01:21:48.000000000 +0300
@@ -206,11 +206,15 @@
Gain_AI_Love
Gain amount points of "AI love" with AI(s).
+Turn_Years
+ Year advances by AMOUNT each turn unless Slow_Down_Timeline causes it
+ to be less.
+
Slow_Down_Timeline
Slow down the timeline based on the AMOUNT. If AMOUNT >= 3 the timeline
-will be 1 year/turn; with AMOUNT == 2 it is 2 years/turn; with AMOUNT == 1 it
-is 5 years/turn; with AMOUNT <= 0 the timeline is unaffected. The effect will
-be ignored if game.spacerace isn't set.
+will be max 1 year/turn; with AMOUNT == 2 it is max 2 years/turn;
+with AMOUNT == 1 it is max 5 years/turn; with AMOUNT <= 0 the timeline is
+unaffected. The effect will be ignored if game.spacerace isn't set.
Civil_War_Chance
Chance of player splitting due to civil war when capital captured is
_______________________________________________
Freeciv-dev mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-dev