Author: sveinung
Date: Thu Aug 13 14:52:24 2015
New Revision: 29484

URL: http://svn.gna.org/viewcvs/freeciv?rev=29484&view=rev
Log:
Make exceptions to slow_invasions possible

Introduce the new unit type flag BeachLander. Units with this flag won't
lose all movement when moving from non native to native terrain even when
slow_invasions is enabled.

See patch #6212

Modified:
    trunk/client/helpdata.c
    trunk/common/map.c
    trunk/common/unittype.h
    trunk/data/alien/units.ruleset
    trunk/data/civ2civ3/units.ruleset
    trunk/data/classic/units.ruleset
    trunk/data/experimental/units.ruleset
    trunk/data/multiplayer/units.ruleset
    trunk/data/stub/units.ruleset
    trunk/fc_version

Modified: trunk/client/helpdata.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/helpdata.c?rev=29484&r1=29483&r2=29484&view=diff
==============================================================================
--- trunk/client/helpdata.c     (original)
+++ trunk/client/helpdata.c     Thu Aug 13 14:52:24 2015
@@ -3917,6 +3917,13 @@
     CATLSTR(buf, bufsz,
             _("* Can launch attack from non-native tiles.\n"));
   }
+  if (game.info.slow_invasions
+      && utype_has_flag(utype, UTYF_BEACH_LANDER)) {
+    /* BeachLander only matters when slow_invasions are enabled. */
+    CATLSTR(buf, bufsz,
+            _("* Won't lose all movement when moving from non-native "
+              "terrain to native terrain.\n"));
+  }
   if (utype_has_flag(utype, UTYF_PARATROOPERS)) {
     cat_snprintf(buf, bufsz,
                 _("* Can be paradropped from a friendly city or suitable base"

Modified: trunk/common/map.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/map.c?rev=29484&r1=29483&r2=29484&view=diff
==============================================================================
--- trunk/common/map.c  (original)
+++ trunk/common/map.c  Thu Aug 13 14:52:24 2015
@@ -697,10 +697,11 @@
 
   } else if (!is_native_tile_to_class(pclass, t1)) {
     if (game.info.slow_invasions
+        && !(punit && unit_has_type_flag(punit, UTYF_BEACH_LANDER))
         && tile_city(t1) == NULL) {
       /* If "slowinvasions" option is turned on, units moving from
        * non-native terrain (from transport) to native terrain lose all
-       * their movement.
+       * their movement unless they have the BeachLander unit type flag.
        * e.g. ground units moving from sea to land */
       if (punit != NULL) {
         return punit->moves_left;

Modified: trunk/common/unittype.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/unittype.h?rev=29484&r1=29483&r2=29484&view=diff
==============================================================================
--- trunk/common/unittype.h     (original)
+++ trunk/common/unittype.h     Thu Aug 13 14:52:24 2015
@@ -218,47 +218,51 @@
 /* Only barbarians can build this unit */
 #define SPECENUM_VALUE27 UTYF_BARBARIAN_ONLY
 #define SPECENUM_VALUE27NAME N_("?unitflag:BarbarianOnly")
-
-#define SPECENUM_VALUE28 UTYF_USER_FLAG_1
-#define SPECENUM_VALUE29 UTYF_USER_FLAG_2
-#define SPECENUM_VALUE30 UTYF_USER_FLAG_3
-#define SPECENUM_VALUE31 UTYF_USER_FLAG_4
-#define SPECENUM_VALUE32 UTYF_USER_FLAG_5
-#define SPECENUM_VALUE33 UTYF_USER_FLAG_6
-#define SPECENUM_VALUE34 UTYF_USER_FLAG_7
-#define SPECENUM_VALUE35 UTYF_USER_FLAG_8
-#define SPECENUM_VALUE36 UTYF_USER_FLAG_9
-#define SPECENUM_VALUE37 UTYF_USER_FLAG_10
-#define SPECENUM_VALUE38 UTYF_USER_FLAG_11
-#define SPECENUM_VALUE39 UTYF_USER_FLAG_12
-#define SPECENUM_VALUE40 UTYF_USER_FLAG_13
-#define SPECENUM_VALUE41 UTYF_USER_FLAG_14
-#define SPECENUM_VALUE42 UTYF_USER_FLAG_15
-#define SPECENUM_VALUE43 UTYF_USER_FLAG_16
-#define SPECENUM_VALUE44 UTYF_USER_FLAG_17
-#define SPECENUM_VALUE45 UTYF_USER_FLAG_18
-#define SPECENUM_VALUE46 UTYF_USER_FLAG_19
-#define SPECENUM_VALUE47 UTYF_USER_FLAG_20
-#define SPECENUM_VALUE48 UTYF_USER_FLAG_21
-#define SPECENUM_VALUE49 UTYF_USER_FLAG_22
-#define SPECENUM_VALUE50 UTYF_USER_FLAG_23
-#define SPECENUM_VALUE51 UTYF_USER_FLAG_24
-#define SPECENUM_VALUE52 UTYF_USER_FLAG_25
-#define SPECENUM_VALUE53 UTYF_USER_FLAG_26
-#define SPECENUM_VALUE54 UTYF_USER_FLAG_27
-#define SPECENUM_VALUE55 UTYF_USER_FLAG_28
-#define SPECENUM_VALUE56 UTYF_USER_FLAG_29
-#define SPECENUM_VALUE57 UTYF_USER_FLAG_30
-#define SPECENUM_VALUE58 UTYF_USER_FLAG_31
-#define SPECENUM_VALUE59 UTYF_USER_FLAG_32
-#define SPECENUM_VALUE60 UTYF_USER_FLAG_33
-#define SPECENUM_VALUE61 UTYF_USER_FLAG_34
-#define SPECENUM_VALUE62 UTYF_USER_FLAG_35
-#define SPECENUM_VALUE63 UTYF_USER_FLAG_36
-#define SPECENUM_VALUE64 UTYF_USER_FLAG_37
-#define SPECENUM_VALUE65 UTYF_USER_FLAG_38
-#define SPECENUM_VALUE66 UTYF_USER_FLAG_39
-#define SPECENUM_VALUE67 UTYF_USER_FLAG_40
+/* Unit won't lose all its movement when moving from non-nantive terrain to
+ * native terrain even if slow_invasions is turned on. */
+#define SPECENUM_VALUE28 UTYF_BEACH_LANDER
+#define SPECENUM_VALUE28NAME N_("?unitflag:BeachLander")
+
+#define SPECENUM_VALUE29 UTYF_USER_FLAG_1
+#define SPECENUM_VALUE30 UTYF_USER_FLAG_2
+#define SPECENUM_VALUE31 UTYF_USER_FLAG_3
+#define SPECENUM_VALUE32 UTYF_USER_FLAG_4
+#define SPECENUM_VALUE33 UTYF_USER_FLAG_5
+#define SPECENUM_VALUE34 UTYF_USER_FLAG_6
+#define SPECENUM_VALUE35 UTYF_USER_FLAG_7
+#define SPECENUM_VALUE36 UTYF_USER_FLAG_8
+#define SPECENUM_VALUE37 UTYF_USER_FLAG_9
+#define SPECENUM_VALUE38 UTYF_USER_FLAG_10
+#define SPECENUM_VALUE39 UTYF_USER_FLAG_11
+#define SPECENUM_VALUE40 UTYF_USER_FLAG_12
+#define SPECENUM_VALUE41 UTYF_USER_FLAG_13
+#define SPECENUM_VALUE42 UTYF_USER_FLAG_14
+#define SPECENUM_VALUE43 UTYF_USER_FLAG_15
+#define SPECENUM_VALUE44 UTYF_USER_FLAG_16
+#define SPECENUM_VALUE45 UTYF_USER_FLAG_17
+#define SPECENUM_VALUE46 UTYF_USER_FLAG_18
+#define SPECENUM_VALUE47 UTYF_USER_FLAG_19
+#define SPECENUM_VALUE48 UTYF_USER_FLAG_20
+#define SPECENUM_VALUE49 UTYF_USER_FLAG_21
+#define SPECENUM_VALUE50 UTYF_USER_FLAG_22
+#define SPECENUM_VALUE51 UTYF_USER_FLAG_23
+#define SPECENUM_VALUE52 UTYF_USER_FLAG_24
+#define SPECENUM_VALUE53 UTYF_USER_FLAG_25
+#define SPECENUM_VALUE54 UTYF_USER_FLAG_26
+#define SPECENUM_VALUE55 UTYF_USER_FLAG_27
+#define SPECENUM_VALUE56 UTYF_USER_FLAG_28
+#define SPECENUM_VALUE57 UTYF_USER_FLAG_29
+#define SPECENUM_VALUE58 UTYF_USER_FLAG_30
+#define SPECENUM_VALUE59 UTYF_USER_FLAG_31
+#define SPECENUM_VALUE60 UTYF_USER_FLAG_32
+#define SPECENUM_VALUE61 UTYF_USER_FLAG_33
+#define SPECENUM_VALUE62 UTYF_USER_FLAG_34
+#define SPECENUM_VALUE63 UTYF_USER_FLAG_35
+#define SPECENUM_VALUE64 UTYF_USER_FLAG_36
+#define SPECENUM_VALUE65 UTYF_USER_FLAG_37
+#define SPECENUM_VALUE66 UTYF_USER_FLAG_38
+#define SPECENUM_VALUE67 UTYF_USER_FLAG_39
+#define SPECENUM_VALUE68 UTYF_USER_FLAG_40
 /* Note that first role must have value next to last flag */
 
 #define UTYF_LAST_USER_FLAG UTYF_USER_FLAG_40
@@ -283,74 +287,74 @@
 
 #define SPECENUM_NAME unit_role_id
 /* is built first when city established */
-#define SPECENUM_VALUE68 L_FIRSTBUILD
-#define SPECENUM_VALUE68NAME N_("?unitflag:FirstBuild")
+#define SPECENUM_VALUE69 L_FIRSTBUILD
+#define SPECENUM_VALUE69NAME N_("?unitflag:FirstBuild")
 /* initial explorer unit */
-#define SPECENUM_VALUE69 L_EXPLORER
-#define SPECENUM_VALUE69NAME N_("?unitflag:Explorer")
+#define SPECENUM_VALUE70 L_EXPLORER
+#define SPECENUM_VALUE70NAME N_("?unitflag:Explorer")
 /* can be found in hut */
-#define SPECENUM_VALUE70 L_HUT
-#define SPECENUM_VALUE70NAME N_("?unitflag:Hut")
+#define SPECENUM_VALUE71 L_HUT
+#define SPECENUM_VALUE71NAME N_("?unitflag:Hut")
 /* can be found in hut, global tech required */
-#define SPECENUM_VALUE71 L_HUT_TECH
-#define SPECENUM_VALUE71NAME N_("?unitflag:HutTech")
+#define SPECENUM_VALUE72 L_HUT_TECH
+#define SPECENUM_VALUE72NAME N_("?unitflag:HutTech")
 /* is created in Partisan circumstances */
-#define SPECENUM_VALUE72 L_PARTISAN
-#define SPECENUM_VALUE72NAME N_("?unitflag:Partisan")
+#define SPECENUM_VALUE73 L_PARTISAN
+#define SPECENUM_VALUE73NAME N_("?unitflag:Partisan")
 /* ok on defense (AI) */
-#define SPECENUM_VALUE73 L_DEFEND_OK
-#define SPECENUM_VALUE73NAME N_("?unitflag:DefendOk")
+#define SPECENUM_VALUE74 L_DEFEND_OK
+#define SPECENUM_VALUE74NAME N_("?unitflag:DefendOk")
 /* primary purpose is defense (AI) */
-#define SPECENUM_VALUE74 L_DEFEND_GOOD
-#define SPECENUM_VALUE74NAME N_("?unitflag:DefendGood")
+#define SPECENUM_VALUE75 L_DEFEND_GOOD
+#define SPECENUM_VALUE75NAME N_("?unitflag:DefendGood")
 /* quick attacking unit (Horse..Armor) (unused)*/
-#define SPECENUM_VALUE75 L_ATTACK_FAST
-#define SPECENUM_VALUE75NAME N_("?unitflag:AttackFast")
+#define SPECENUM_VALUE76 L_ATTACK_FAST
+#define SPECENUM_VALUE76NAME N_("?unitflag:AttackFast")
 /* powerful attacking unit (Catapult..) (unused) */
-#define SPECENUM_VALUE76 L_ATTACK_STRONG
-#define SPECENUM_VALUE76NAME N_("?unitflag:AttackStrong")
+#define SPECENUM_VALUE77 L_ATTACK_STRONG
+#define SPECENUM_VALUE77NAME N_("?unitflag:AttackStrong")
 /* is useful for ferrying (AI) */
-#define SPECENUM_VALUE77 L_FERRYBOAT
-#define SPECENUM_VALUE77NAME N_("?unitflag:FerryBoat")
+#define SPECENUM_VALUE78 L_FERRYBOAT
+#define SPECENUM_VALUE78NAME N_("?unitflag:FerryBoat")
 /* barbarians unit, land only */
-#define SPECENUM_VALUE78 L_BARBARIAN
-#define SPECENUM_VALUE78NAME N_("?unitflag:Barbarian")
+#define SPECENUM_VALUE79 L_BARBARIAN
+#define SPECENUM_VALUE79NAME N_("?unitflag:Barbarian")
 /* barbarians unit, global tech required */
-#define SPECENUM_VALUE79 L_BARBARIAN_TECH
-#define SPECENUM_VALUE79NAME N_("?unitflag:BarbarianTech")
+#define SPECENUM_VALUE80 L_BARBARIAN_TECH
+#define SPECENUM_VALUE80NAME N_("?unitflag:BarbarianTech")
 /* barbarian boat */
-#define SPECENUM_VALUE80 L_BARBARIAN_BOAT
-#define SPECENUM_VALUE80NAME N_("?unitflag:BarbarianBoat")
+#define SPECENUM_VALUE81 L_BARBARIAN_BOAT
+#define SPECENUM_VALUE81NAME N_("?unitflag:BarbarianBoat")
 /* what barbarians should build */
-#define SPECENUM_VALUE81 L_BARBARIAN_BUILD
-#define SPECENUM_VALUE81NAME N_("BarbarianBuild")
+#define SPECENUM_VALUE82 L_BARBARIAN_BUILD
+#define SPECENUM_VALUE82NAME N_("BarbarianBuild")
 /* barbarians build when global tech */
-#define SPECENUM_VALUE82 L_BARBARIAN_BUILD_TECH
-#define SPECENUM_VALUE82NAME N_("?unitflag:BarbarianBuildTech")
+#define SPECENUM_VALUE83 L_BARBARIAN_BUILD_TECH
+#define SPECENUM_VALUE83NAME N_("?unitflag:BarbarianBuildTech")
 /* barbarian leader */
-#define SPECENUM_VALUE83 L_BARBARIAN_LEADER
-#define SPECENUM_VALUE83NAME N_("?unitflag:BarbarianLeader")
+#define SPECENUM_VALUE84 L_BARBARIAN_LEADER
+#define SPECENUM_VALUE84NAME N_("?unitflag:BarbarianLeader")
 /* sea raider unit */
-#define SPECENUM_VALUE84 L_BARBARIAN_SEA
-#define SPECENUM_VALUE84NAME N_("?unitflag:BarbarianSea")
+#define SPECENUM_VALUE85 L_BARBARIAN_SEA
+#define SPECENUM_VALUE85NAME N_("?unitflag:BarbarianSea")
 /* sea raider unit, global tech required */
-#define SPECENUM_VALUE85 L_BARBARIAN_SEA_TECH
-#define SPECENUM_VALUE85NAME N_("?unitflag:BarbarianSeaTech")
+#define SPECENUM_VALUE86 L_BARBARIAN_SEA_TECH
+#define SPECENUM_VALUE86NAME N_("?unitflag:BarbarianSeaTech")
 /* can found cities */
-#define SPECENUM_VALUE86 L_CITIES
-#define SPECENUM_VALUE86NAME N_("?unitflag:Cities")
+#define SPECENUM_VALUE87 L_CITIES
+#define SPECENUM_VALUE87NAME N_("?unitflag:Cities")
 /* can improve terrain */
-#define SPECENUM_VALUE87 L_SETTLERS
-#define SPECENUM_VALUE87NAME N_("?unitflag:Settlers")
+#define SPECENUM_VALUE88 L_SETTLERS
+#define SPECENUM_VALUE88NAME N_("?unitflag:Settlers")
 /* loss results in loss of game */
-#define SPECENUM_VALUE88 L_GAMELOSS
-#define SPECENUM_VALUE88NAME N_("?unitflag:GameLoss")
+#define SPECENUM_VALUE89 L_GAMELOSS
+#define SPECENUM_VALUE89NAME N_("?unitflag:GameLoss")
 /* can do diplomat actions */
-#define SPECENUM_VALUE89 L_DIPLOMAT
-#define SPECENUM_VALUE89NAME N_("?unitflag:Diplomat")
+#define SPECENUM_VALUE90 L_DIPLOMAT
+#define SPECENUM_VALUE90NAME N_("?unitflag:Diplomat")
 /* AI hunter type unit */
-#define SPECENUM_VALUE90 L_HUNTER
-#define SPECENUM_VALUE90NAME N_("?unitflag:Hunter")
+#define SPECENUM_VALUE91 L_HUNTER
+#define SPECENUM_VALUE91NAME N_("?unitflag:Hunter")
 #define L_LAST (L_HUNTER+1)
 
 #include "specenum_gen.h"

Modified: trunk/data/alien/units.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/alien/units.ruleset?rev=29484&r1=29483&r2=29484&view=diff
==============================================================================
--- trunk/data/alien/units.ruleset      (original)
+++ trunk/data/alien/units.ruleset      Thu Aug 13 14:52:24 2015
@@ -267,6 +267,8 @@
 ; "FieldUnit"  = cause unhappiness even when not being aggressive
 ; "AttackAny"   = can attack unreachable units
 ; "Marines"    = can attack from non-native tile (from transport or city)
+; "BeachLander" = won't lose all its movement when moving from non-native
+;                 terrain to native terrain even if slow_invasions is on.
 ; "Partial_Invis" = visible only to adjancent units; does not hide transported
 ;                units other than missiles
 ; "Settlers"   = can irrigate and build roads

Modified: trunk/data/civ2civ3/units.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/civ2civ3/units.ruleset?rev=29484&r1=29483&r2=29484&view=diff
==============================================================================
--- trunk/data/civ2civ3/units.ruleset   (original)
+++ trunk/data/civ2civ3/units.ruleset   Thu Aug 13 14:52:24 2015
@@ -308,6 +308,8 @@
 ; "OneAttack"  = can only make a single attack, regardless of movement points
 ; "FieldUnit"  = cause unhappiness even when not being aggressive
 ; "Marines"    = can attack from non-native tile (from transport or city)
+; "BeachLander" = won't lose all its movement when moving from non-native
+;                 terrain to native terrain even if slow_invasions is on.
 ; "Partial_Invis" = visible only to adjancent units; does not hide transported
 ;                units other than missiles
 ; "Settlers"   = can irrigate and build roads

Modified: trunk/data/classic/units.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/classic/units.ruleset?rev=29484&r1=29483&r2=29484&view=diff
==============================================================================
--- trunk/data/classic/units.ruleset    (original)
+++ trunk/data/classic/units.ruleset    Thu Aug 13 14:52:24 2015
@@ -282,6 +282,8 @@
 ; "OneAttack"  = can only make a single attack, regardless of movement points
 ; "FieldUnit"  = cause unhappiness even when not being aggressive
 ; "Marines"    = can attack from non-native tile (from transport or city)
+; "BeachLander" = won't lose all its movement when moving from non-native
+;                 terrain to native terrain even if slow_invasions is on.
 ; "Partial_Invis" = visible only to adjancent units; does not hide transported
 ;                units other than missiles
 ; "Settlers"   = can irrigate and build roads

Modified: trunk/data/experimental/units.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/experimental/units.ruleset?rev=29484&r1=29483&r2=29484&view=diff
==============================================================================
--- trunk/data/experimental/units.ruleset       (original)
+++ trunk/data/experimental/units.ruleset       Thu Aug 13 14:52:24 2015
@@ -296,6 +296,8 @@
 ; "OneAttack"  = can only make a single attack, regardless of movement points
 ; "FieldUnit"  = cause unhappiness even when not being aggressive
 ; "Marines"    = can attack from non-native tile (from transport or city)
+; "BeachLander" = won't lose all its movement when moving from non-native
+;                 terrain to native terrain even if slow_invasions is on.
 ; "Partial_Invis" = visible only to adjancent units; does not hide transported
 ;                units other than missiles
 ; "Settlers"   = can irrigate and build roads

Modified: trunk/data/multiplayer/units.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/multiplayer/units.ruleset?rev=29484&r1=29483&r2=29484&view=diff
==============================================================================
--- trunk/data/multiplayer/units.ruleset        (original)
+++ trunk/data/multiplayer/units.ruleset        Thu Aug 13 14:52:24 2015
@@ -281,6 +281,8 @@
 ; "OneAttack"  = can only make a single attack, regardless of movement points
 ; "FieldUnit"  = cause unhappiness even when not being aggressive
 ; "Marines"    = can attack from non-native tile (from transport or city)
+; "BeachLander" = won't lose all its movement when moving from non-native
+;                 terrain to native terrain even if slow_invasions is on.
 ; "Partial_Invis" = visible only to adjancent units; does not hide transported
 ;                units other than missiles
 ; "Settlers"   = can irrigate and build roads

Modified: trunk/data/stub/units.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/stub/units.ruleset?rev=29484&r1=29483&r2=29484&view=diff
==============================================================================
--- trunk/data/stub/units.ruleset       (original)
+++ trunk/data/stub/units.ruleset       Thu Aug 13 14:52:24 2015
@@ -200,6 +200,8 @@
 ; "FieldUnit"  = cause unhappiness even when not being aggressive
 ; "AttackAny"   = can attack unreachable units
 ; "Marines"    = can attack from non-native tile (from transport or city)
+; "BeachLander" = won't lose all its movement when moving from non-native
+;                 terrain to native terrain even if slow_invasions is on.
 ; "Partial_Invis" = visible only to adjancent units; does not hide transported
 ;                units other than missiles
 ; "Settlers"   = can irrigate and build roads

Modified: trunk/fc_version
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/fc_version?rev=29484&r1=29483&r2=29484&view=diff
==============================================================================
--- trunk/fc_version    (original)
+++ trunk/fc_version    Thu Aug 13 14:52:24 2015
@@ -54,7 +54,7 @@
 #   - Avoid adding a new mandatory capability to the development branch for
 #     as long as possible.  We want to maintain network compatibility with
 #     the stable branch for as long as possible.
-NETWORK_CAPSTRING_MANDATORY="+Freeciv.Devel-3.0-2015.Aug.12c"
+NETWORK_CAPSTRING_MANDATORY="+Freeciv.Devel-3.0-2015.Aug.13"
 NETWORK_CAPSTRING_OPTIONAL=""
 
 FREECIV_DISTRIBUTOR=""


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

Reply via email to