diff -ruN freeciv.orig/client/helpdata.c freeciv/client/helpdata.c --- freeciv.orig/client/helpdata.c Thu May 25 13:15:37 2000 +++ freeciv/client/helpdata.c Thu Jun 15 21:10:16 2000 @@ -677,11 +677,14 @@ } if (unit_flag(i, F_MARINES)) { sprintf(buf+strlen(buf), _("* Can attack from aboard sea units: against" - " enemy cities and onto land squares.")); + " enemy cities and onto land squares.\n")); + } + if (unit_flag(i, F_SHORE_GUARD)) { + sprintf(buf+strlen(buf), _("* This land unit can attack ships.\n")); } if (unit_flag(i, F_PARATROOPERS)) { sprintf(buf+strlen(buf), _("* Can be paradropped from a friendly city" - " (Range: %d)."), utype->paratroopers_range); + " (Range: %d).\n"), utype->paratroopers_range); } if (unit_flag(i, F_PIKEMEN)) { sprintf(buf+strlen(buf), _("* Gets double defense against units" @@ -730,7 +733,7 @@ if (unit_flag(i, F_TRIREME)) { sprintf(buf+strlen(buf), _("* Must end turn in a city or next to land," - " or has a 50%% risk of being lost at sea.")); + " or has a 50%% risk of being lost at sea.\n")); } if (utype->fuel>0) { sprintf(buf+strlen(buf), _("* Must end ")); diff -ruN freeciv.orig/common/unit.c freeciv/common/unit.c --- freeciv.orig/common/unit.c Thu Jun 15 15:45:28 2000 +++ freeciv/common/unit.c Thu Jun 15 21:02:02 2000 @@ -52,7 +52,8 @@ "OneAttack", "Pikemen", "Horse", "IgWall", "FieldUnit", "AEGIS", "Fighter", "Marines", "Partial_Invis", "Settlers", "Diplomat", "Trireme", "Nuclear", "Spy", "Transform", "Paratroopers", - "Airbase", "Cities", "IgTired", "Missile_Carrier", "No_Land_Attack" + "Airbase", "Cities", "IgTired", "Missile_Carrier", "No_Land_Attack", + "ShoreGuard" }; static char *role_names[] = { "FirstBuild", "Explorer", "Hut", "HutTech", "Partisan", diff -ruN freeciv.orig/common/unit.h freeciv/common/unit.h --- freeciv.orig/common/unit.h Thu May 25 13:15:49 2000 +++ freeciv/common/unit.h Thu Jun 15 21:01:45 2000 @@ -167,6 +167,7 @@ F_IGTIRED, /* Ignore tired negative bonus when attacking */ F_MISSILE_CARRIER, /* Like F_CARRIER, but missiles only (Submarine) */ F_NO_LAND_ATTACK, /* Cannot attack vs land squares (Submarine) */ + F_SHORE_GUARD, /* Land unit that can attack ships */ F_LAST }; diff -ruN freeciv.orig/server/unittools.c freeciv/server/unittools.c --- freeciv.orig/server/unittools.c Thu Jun 15 15:45:29 2000 +++ freeciv/server/unittools.c Thu Jun 15 21:07:54 2000 @@ -688,7 +688,7 @@ return 0; } - if(totile==T_OCEAN && is_ground_unit(punit)) { + if(totile==T_OCEAN && (is_ground_unit(punit) && !unit_flag(punit->type, F_SHORE_GUARD))) { return 0; }