<URL: http://bugs.freeciv.org/Ticket/Display.html?id=34131 >
This splits "Fighter" flag in two. "Fighter" is very good attacking
"Helicopter" units. "AttackAny" can attack even otherwise unreachable
units.
Applies on top of #33762
- ML
diff -Nurd -X.diff_ignore freeciv/client/helpdata.c freeciv/client/helpdata.c
--- freeciv/client/helpdata.c 2007-01-20 03:31:57.000000000 +0200
+++ freeciv/client/helpdata.c 2007-01-20 03:26:20.000000000 +0200
@@ -918,7 +918,7 @@
if (unit_type_flag(utype, F_UNBRIBABLE)) {
sprintf(buf + strlen(buf), _("* May not be bribed.\n"));
}
- if (unit_type_flag(utype, F_FIGHTER)) {
+ if (unit_type_flag(utype, F_ATTACK_ANY)) {
sprintf(buf + strlen(buf), _("* Can attack otherwise unreachable enemy units.\n"));
}
if (unit_type_flag(utype, F_PARTIAL_INVIS)) {
@@ -949,7 +949,11 @@
}
if (unit_type_flag(utype, F_HELICOPTER)) {
sprintf(buf + strlen(buf),
- _("* Defends very badly agains fighter type units.\n"));
+ _("* Counts as 'helicopter' against certain attackers.\n"));
+ }
+ if (unit_type_flag(utype, F_FIGHTER)) {
+ sprintf(buf + strlen(buf),
+ _("* Very good at attacking 'helicopter' units.\n"));
}
if (unit_type_flag(utype, F_AIRUNIT)) {
sprintf(buf + strlen(buf),
diff -Nurd -X.diff_ignore freeciv/common/combat.c freeciv/common/combat.c
--- freeciv/common/combat.c 2007-01-20 03:31:57.000000000 +0200
+++ freeciv/common/combat.c 2007-01-20 03:26:31.000000000 +0200
@@ -93,7 +93,7 @@
}
/* 2. Only fighters can attack planes, except in city or airbase attacks */
- if (!unit_flag(punit, F_FIGHTER)
+ if (!unit_flag(punit, F_ATTACK_ANY)
&& unit_class_flag(get_unit_class(unit_type(pdefender)), UCF_UNREACHABLE)
&& !(pcity || tile_has_special(dest_tile, S_AIRBASE))) {
return FALSE;
diff -Nurd -X.diff_ignore freeciv/common/unittype.c freeciv/common/unittype.c
--- freeciv/common/unittype.c 2007-01-20 03:31:57.000000000 +0200
+++ freeciv/common/unittype.c 2007-01-20 03:15:27.000000000 +0200
@@ -46,13 +46,13 @@
static const char *flag_names[] = {
"TradeRoute" ,"HelpWonder", "IgZOC", "NonMil", "IgTer",
"OneAttack", "Pikemen", "Horse", "IgWall", "FieldUnit",
- "AEGIS", "Fighter", "Marines", "Partial_Invis", "Settlers", "Diplomat",
+ "AEGIS", "AttackAny", "Marines", "Partial_Invis", "Settlers", "Diplomat",
"Trireme", "Nuclear", "Spy", "Transform", "Paratroopers",
"Airbase", "Cities", "No_Land_Attack",
"AddToCity", "Fanatic", "GameLoss", "Unique", "Unbribable",
"Undisbandable", "SuperSpy", "NoHome", "NoVeteran", "Bombarder",
"CityBuster", "NoBuild", "BadWallAttacker", "BadCityDefender",
- "Helicopter", "AirUnit"
+ "Helicopter", "AirUnit", "Fighter"
};
static const char *role_names[] = {
"FirstBuild", "Explorer", "Hut", "HutTech", "Partisan",
diff -Nurd -X.diff_ignore freeciv/common/unittype.h freeciv/common/unittype.h
--- freeciv/common/unittype.h 2007-01-20 03:31:57.000000000 +0200
+++ freeciv/common/unittype.h 2007-01-20 03:26:42.000000000 +0200
@@ -68,7 +68,7 @@
F_IGWALL,
F_FIELDUNIT,
F_AEGIS,
- F_FIGHTER,
+ F_ATTACK_ANY, /* Can attack even unreachable units */
F_MARINES,
F_PARTIAL_INVIS, /* Invisibile except when adjacent (Submarine) */
F_SETTLERS, /* Does not include ability to found cities */
@@ -98,6 +98,7 @@
F_BADCITYDEFENDER, /* Firepower set to 1 and attackers x2 when in city */
F_HELICOPTER, /* Defends badly against F_FIGHTER units */
F_AIRUNIT, /* Bad at attacking F_AEGIS units */
+ F_FIGHTER, /* Good at attacking F_HELICOPTER units */
F_LAST
};
#define F_MAX 64
diff -Nurd -X.diff_ignore freeciv/data/civ1/units.ruleset freeciv/data/civ1/units.ruleset
--- freeciv/data/civ1/units.ruleset 2007-01-20 03:31:57.000000000 +0200
+++ freeciv/data/civ1/units.ruleset 2007-01-20 03:16:58.000000000 +0200
@@ -65,7 +65,7 @@
; "Missile" = Unit is destroyed when it attacks
; "RoadNative" = Road tiles are always considered native terrain
; "BuildAnywhere" = Unit can be built even in the middle of non-native terrain
-; "Unreachable" = Unit can be attacked only by units with "Fighter" flag or on
+; "Unreachable" = Unit can be attacked only by units with "AttackAny" flag or on
; city or airbase
[unitclass_land]
@@ -597,7 +597,7 @@
uk_shield = 1
uk_food = 0
uk_gold = 0
-flags = "FieldUnit", "Fighter", "AirUnit"
+flags = "FieldUnit", "Fighter", "AirUnit", "AttackAny"
roles = ""
[unit_bomber]
diff -Nurd -X.diff_ignore freeciv/data/civ2/units.ruleset freeciv/data/civ2/units.ruleset
--- freeciv/data/civ2/units.ruleset 2007-01-20 03:31:57.000000000 +0200
+++ freeciv/data/civ2/units.ruleset 2007-01-20 03:17:24.000000000 +0200
@@ -65,7 +65,7 @@
; "Missile" = Unit is destroyed when it attacks
; "RoadNative" = Road tiles are always considered native terrain
; "BuildAnywhere" = Unit can be built even in the middle of non-native terrain
-; "Unreachable" = Unit can be attacked only by units with "Fighter" flag or on
+; "Unreachable" = Unit can be attacked only by units with "AttackAny" flag or on
; city or airbase
[unitclass_missile]
@@ -995,7 +995,7 @@
uk_shield = 1
uk_food = 0
uk_gold = 0
-flags = "Fighter", "AirUnit"
+flags = "Fighter", "AirUnit", "AttackAny"
roles = ""
[unit_bomber]
@@ -1085,7 +1085,7 @@
uk_shield = 1
uk_food = 0
uk_gold = 0
-flags = "Fighter", "AirUnit"
+flags = "Fighter", "AirUnit", "AttackAny"
roles = ""
helptext = _("\
An improved Fighter, with improved attack and a higher movement\
diff -Nurd -X.diff_ignore freeciv/data/default/units.ruleset freeciv/data/default/units.ruleset
--- freeciv/data/default/units.ruleset 2007-01-20 03:31:57.000000000 +0200
+++ freeciv/data/default/units.ruleset 2007-01-20 03:15:00.000000000 +0200
@@ -71,7 +71,7 @@
; "Missile" = Unit is destroyed when it attacks
; "RoadNative" = Road tiles are always considered native terrain
; "BuildAnywhere" = Unit can be built even in the middle of non-native terrain
-; "Unreachable" = Unit can be attacked only by units with "Fighter" flag or on
+; "Unreachable" = Unit can be attacked only by units with "AttackAny" flag or on
; city or airbase
[unitclass_missile]
@@ -166,7 +166,7 @@
; "IgWall" = ignore effect of city walls
; "FieldUnit" = cause unhappiness even when not being aggressive
; "AEGIS" = fivefold increased defence against "AirUnit" attacks
-; "Fighter" = can attack unreachable units
+; "AttackAny" = can attack unreachable units
; "Marines" = (land only) can attack from transports
; "Partial_Invis" = visible only to adjancent units; does not hide transported
; units other than missiles
@@ -214,6 +214,7 @@
; rule)
; "Helicopter" = defends very badly against "Fighter" units
; "AirUnit" = very bad at attacking "AEGIS" units
+; "Fighter" = good attacker against "Helicopter" units
;
; Following flag strings require extra fields:
; "Paratroopers"
@@ -1050,7 +1051,7 @@
uk_shield = 1
uk_food = 0
uk_gold = 0
-flags = "Fighter", "AirUnit"
+flags = "AttackAny", "AirUnit", "Fighter"
roles = ""
[unit_bomber]
@@ -1140,7 +1141,7 @@
uk_shield = 1
uk_food = 0
uk_gold = 0
-flags = "Partial_Invis", "Fighter", "AirUnit"
+flags = "Partial_Invis", "AttackAny", "AirUnit", "Fighter"
roles = ""
helptext = _("\
An improved Fighter, with improved attack and a higher movement\
_______________________________________________
Freeciv-dev mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-dev