From 0ed78a87671227117e2bb55fdd86a9b6730ea9fb Mon Sep 17 00:00:00 2001 From: Sveinung Kvilhaugsvik Date: Fri, 5 Mar 2021 10:40:12 +0100 Subject: [PATCH 2/3] Nuke action min distance to to the ruleset. Move the minimum distance between the action and target for the actions "Explode Nuclear", "Nuke City" and "Nuke Units" to the ruleset. See osdn #41701 --- common/actions.c | 14 +++++++++----- data/alien/game.ruleset | 15 +++++++++++++++ data/civ1/game.ruleset | 15 +++++++++++++++ data/civ2/game.ruleset | 15 +++++++++++++++ data/civ2civ3/game.ruleset | 15 +++++++++++++++ data/classic/game.ruleset | 15 +++++++++++++++ data/experimental/game.ruleset | 15 +++++++++++++++ data/granularity/game.ruleset | 15 +++++++++++++++ data/multiplayer/game.ruleset | 15 +++++++++++++++ data/sandbox/game.ruleset | 15 +++++++++++++++ data/stub/game.ruleset | 15 +++++++++++++++ data/webperimental/game.ruleset | 15 +++++++++++++++ doc/README.actions | 12 ++++++------ server/rscompat.c | 3 +++ 14 files changed, 183 insertions(+), 11 deletions(-) diff --git a/common/actions.c b/common/actions.c index d5ca27aceb..3d597475ea 100644 --- a/common/actions.c +++ b/common/actions.c @@ -7431,8 +7431,6 @@ const char *action_min_range_ruleset_var_name(int act) case ACTION_JOIN_CITY: case ACTION_SPY_NUKE: case ACTION_SPY_NUKE_ESC: - case ACTION_NUKE_CITY: - case ACTION_NUKE_UNITS: case ACTION_DESTROY_CITY: case ACTION_RECYCLE_UNIT: case ACTION_DISBAND_UNIT: @@ -7475,7 +7473,6 @@ const char *action_min_range_ruleset_var_name(int act) case ACTION_BOMBARD: case ACTION_BOMBARD2: case ACTION_BOMBARD3: - case ACTION_NUKE: case ACTION_SPY_ATTACK: case ACTION_CONQUER_EXTRAS: case ACTION_CONQUER_EXTRAS2: @@ -7494,6 +7491,12 @@ const char *action_min_range_ruleset_var_name(int act) case ACTION_UNIT_MOVE3: /* Min range is not ruleset changeable */ return NULL; + case ACTION_NUKE: + return "explode_nuclear_min_range"; + case ACTION_NUKE_CITY: + return "nuke_city_min_range"; + case ACTION_NUKE_UNITS: + return "nuke_units_min_range"; case ACTION_USER_ACTION1: return "user_action_1_min_range"; case ACTION_USER_ACTION2: @@ -7535,8 +7538,6 @@ int action_min_range_default(enum action_result result) case ACTRES_STEAL_MAPS: case ACTRES_BOMBARD: case ACTRES_SPY_NUKE: - case ACTRES_NUKE: - case ACTRES_NUKE_UNITS: case ACTRES_DESTROY_CITY: case ACTRES_EXPEL_UNIT: case ACTRES_RECYCLE_UNIT: @@ -7576,6 +7577,9 @@ int action_min_range_default(enum action_result result) /* Non ruleset defined action min range not supported here */ fc_assert_msg(FALSE, "Probably wrong value."); return RS_DEFAULT_ACTION_MIN_RANGE; + case ACTRES_NUKE: + case ACTRES_NUKE_UNITS: + return RS_DEFAULT_ACTION_MIN_RANGE; case ACTRES_NONE: return RS_DEFAULT_ACTION_MIN_RANGE; } diff --git a/data/alien/game.ruleset b/data/alien/game.ruleset index a97a2e8d2a..84f76e39a8 100644 --- a/data/alien/game.ruleset +++ b/data/alien/game.ruleset @@ -345,6 +345,11 @@ bombard_2_max_range = 1 ; distance. bombard_3_max_range = 1 +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +explode_nuclear_min_range = 0; + ; The maximum distance from the actor unit to the target of the ; "Explode Nuclear" action. The value 0 means that the target tile must be ; the tile of the actor unit. The value 1 means that the tile must be a tile @@ -356,6 +361,11 @@ explode_nuclear_max_range = 0 ; Will performing this action always consume the actor unit? explode_nuclear_consuming_always = TRUE; +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_city_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke City" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the @@ -372,6 +382,11 @@ nuke_city_consuming_always = TRUE; ; Supported values are "individual cities" and "tiles". nuke_city_target_kind = "individual cities" +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_units_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke Units" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the diff --git a/data/civ1/game.ruleset b/data/civ1/game.ruleset index d9d0304b26..5c44c684d7 100644 --- a/data/civ1/game.ruleset +++ b/data/civ1/game.ruleset @@ -328,6 +328,11 @@ bombard_2_max_range = 1 ; distance. bombard_3_max_range = 1 +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +explode_nuclear_min_range = 0; + ; The maximum distance from the actor unit to the target of the ; "Explode Nuclear" action. The value 0 means that the target tile must be ; the tile of the actor unit. The value 1 means that the tile must be a tile @@ -339,6 +344,11 @@ explode_nuclear_max_range = 0 ; Will performing this action always consume the actor unit? explode_nuclear_consuming_always = TRUE; +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_city_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke City" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the @@ -355,6 +365,11 @@ nuke_city_consuming_always = TRUE; ; Supported values are "individual cities" and "tiles". nuke_city_target_kind = "individual cities" +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_units_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke Units" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the diff --git a/data/civ2/game.ruleset b/data/civ2/game.ruleset index 6821c52457..41e928e44f 100644 --- a/data/civ2/game.ruleset +++ b/data/civ2/game.ruleset @@ -327,6 +327,11 @@ bombard_2_max_range = 1 ; distance. bombard_3_max_range = 1 +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +explode_nuclear_min_range = 0; + ; The maximum distance from the actor unit to the target of the ; "Explode Nuclear" action. The value 0 means that the target tile must be ; the tile of the actor unit. The value 1 means that the tile must be a tile @@ -338,6 +343,11 @@ explode_nuclear_max_range = 0 ; Will performing this action always consume the actor unit? explode_nuclear_consuming_always = TRUE; +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_city_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke City" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the @@ -354,6 +364,11 @@ nuke_city_consuming_always = TRUE; ; Supported values are "individual cities" and "tiles". nuke_city_target_kind = "individual cities" +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_units_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke Units" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the diff --git a/data/civ2civ3/game.ruleset b/data/civ2civ3/game.ruleset index 1c1b5a1a5e..22ea24da84 100644 --- a/data/civ2civ3/game.ruleset +++ b/data/civ2civ3/game.ruleset @@ -372,6 +372,11 @@ bombard_2_max_range = 1 ; distance. bombard_3_max_range = 1 +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +explode_nuclear_min_range = 0; + ; The maximum distance from the actor unit to the target of the ; "Explode Nuclear" action. The value 0 means that the target tile must be ; the tile of the actor unit. The value 1 means that the tile must be a tile @@ -383,6 +388,11 @@ explode_nuclear_max_range = 0 ; Will performing this action always consume the actor unit? explode_nuclear_consuming_always = TRUE; +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_city_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke City" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the @@ -399,6 +409,11 @@ nuke_city_consuming_always = TRUE; ; Supported values are "individual cities" and "tiles". nuke_city_target_kind = "individual cities" +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_units_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke Units" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the diff --git a/data/classic/game.ruleset b/data/classic/game.ruleset index dcef4b67cc..c11348e1cf 100644 --- a/data/classic/game.ruleset +++ b/data/classic/game.ruleset @@ -356,6 +356,11 @@ bombard_2_max_range = 1 ; distance. bombard_3_max_range = 1 +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +explode_nuclear_min_range = 0; + ; The maximum distance from the actor unit to the target of the ; "Explode Nuclear" action. The value 0 means that the target tile must be ; the tile of the actor unit. The value 1 means that the tile must be a tile @@ -367,6 +372,11 @@ explode_nuclear_max_range = 0 ; Will performing this action always consume the actor unit? explode_nuclear_consuming_always = TRUE; +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_city_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke City" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the @@ -383,6 +393,11 @@ nuke_city_consuming_always = TRUE; ; Supported values are "individual cities" and "tiles". nuke_city_target_kind = "individual cities" +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_units_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke Units" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the diff --git a/data/experimental/game.ruleset b/data/experimental/game.ruleset index 7d112a1417..39d5a59b34 100644 --- a/data/experimental/game.ruleset +++ b/data/experimental/game.ruleset @@ -361,6 +361,11 @@ bombard_2_max_range = 1 ; distance. bombard_3_max_range = 1 +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +explode_nuclear_min_range = 0; + ; The maximum distance from the actor unit to the target of the ; "Explode Nuclear" action. The value 0 means that the target tile must be ; the tile of the actor unit. The value 1 means that the tile must be a tile @@ -372,6 +377,11 @@ explode_nuclear_max_range = 0 ; Will performing this action always consume the actor unit? explode_nuclear_consuming_always = TRUE; +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_city_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke City" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the @@ -388,6 +398,11 @@ nuke_city_consuming_always = TRUE; ; Supported values are "individual cities" and "tiles". nuke_city_target_kind = "individual cities" +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_units_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke Units" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the diff --git a/data/granularity/game.ruleset b/data/granularity/game.ruleset index fdca65f575..5684ca21d6 100644 --- a/data/granularity/game.ruleset +++ b/data/granularity/game.ruleset @@ -296,6 +296,11 @@ bombard_2_max_range = 1 ; distance. bombard_3_max_range = 1 +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +explode_nuclear_min_range = 0; + ; The maximum distance from the actor unit to the target of the ; "Explode Nuclear" action. The value 0 means that the target tile must be ; the tile of the actor unit. The value 1 means that the tile must be a tile @@ -307,6 +312,11 @@ explode_nuclear_max_range = 0 ; Will performing this action always consume the actor unit? explode_nuclear_consuming_always = TRUE; +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_city_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke City" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the @@ -323,6 +333,11 @@ nuke_city_consuming_always = TRUE; ; Supported values are "individual cities" and "tiles". nuke_city_target_kind = "individual cities" +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_units_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke Units" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the diff --git a/data/multiplayer/game.ruleset b/data/multiplayer/game.ruleset index 027bfbfeba..6bb46998a5 100644 --- a/data/multiplayer/game.ruleset +++ b/data/multiplayer/game.ruleset @@ -354,6 +354,11 @@ bombard_2_max_range = 1 ; distance. bombard_3_max_range = 1 +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +explode_nuclear_min_range = 0; + ; The maximum distance from the actor unit to the target of the ; "Explode Nuclear" action. The value 0 means that the target tile must be ; the tile of the actor unit. The value 1 means that the tile must be a tile @@ -365,6 +370,11 @@ explode_nuclear_max_range = 0 ; Will performing this action always consume the actor unit? explode_nuclear_consuming_always = TRUE; +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_city_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke City" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the @@ -381,6 +391,11 @@ nuke_city_consuming_always = TRUE; ; Supported values are "individual cities" and "tiles". nuke_city_target_kind = "individual cities" +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_units_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke Units" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the diff --git a/data/sandbox/game.ruleset b/data/sandbox/game.ruleset index f8cc7f2d5b..c58176dc96 100644 --- a/data/sandbox/game.ruleset +++ b/data/sandbox/game.ruleset @@ -372,6 +372,11 @@ bombard_2_max_range = 1 ; distance. bombard_3_max_range = 1 +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +explode_nuclear_min_range = 0; + ; The maximum distance from the actor unit to the target of the ; "Explode Nuclear" action. The value 0 means that the target tile must be ; the tile of the actor unit. The value 1 means that the tile must be a tile @@ -383,6 +388,11 @@ explode_nuclear_max_range = "unlimited" ; Will performing this action always consume the actor unit? explode_nuclear_consuming_always = TRUE; +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_city_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke City" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the @@ -399,6 +409,11 @@ nuke_city_consuming_always = TRUE; ; Supported values are "individual cities" and "tiles". nuke_city_target_kind = "tiles" +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_units_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke Units" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the diff --git a/data/stub/game.ruleset b/data/stub/game.ruleset index 976765bc4d..fb87ab1996 100644 --- a/data/stub/game.ruleset +++ b/data/stub/game.ruleset @@ -287,6 +287,11 @@ bombard_2_max_range = 1 ; distance. bombard_3_max_range = 1 +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +explode_nuclear_min_range = 0; + ; The maximum distance from the actor unit to the target of the ; "Explode Nuclear" action. The value 0 means that the target tile must be ; the tile of the actor unit. The value 1 means that the tile must be a tile @@ -298,6 +303,11 @@ explode_nuclear_max_range = 0 ; Will performing this action always consume the actor unit? explode_nuclear_consuming_always = TRUE; +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_city_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke City" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the @@ -314,6 +324,11 @@ nuke_city_consuming_always = TRUE; ; Supported values are "individual cities" and "tiles". nuke_city_target_kind = "individual cities" +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_units_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke Units" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the diff --git a/data/webperimental/game.ruleset b/data/webperimental/game.ruleset index bb9a0f6c5c..a7bc20530b 100644 --- a/data/webperimental/game.ruleset +++ b/data/webperimental/game.ruleset @@ -329,6 +329,11 @@ bombard_2_max_range = 1 ; distance. bombard_3_max_range = 1 +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +explode_nuclear_min_range = 0; + ; The maximum distance from the actor unit to the target of the ; "Explode Nuclear" action. The value 0 means that the target tile must be ; the tile of the actor unit. The value 1 means that the tile must be a tile @@ -340,6 +345,11 @@ explode_nuclear_max_range = 0 ; Will performing this action always consume the actor unit? explode_nuclear_consuming_always = TRUE; +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_city_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke City" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the @@ -356,6 +366,11 @@ nuke_city_consuming_always = TRUE; ; Supported values are "individual cities" and "tiles". nuke_city_target_kind = "individual cities" +; The minimal distance from the actor unit to the target. The value 0 means +; that the target must be at the tile of the actor unit. The value 1 means +; that the tile must be a tile adjacent to the actor unit. +nuke_units_min_range = 1 + ; The maximum distance from the actor unit to the target of the ; "Nuke Units" action. The value 1 means that the tile must be a tile ; adjacent to the actor unit. The special value "unlimited" lifts the diff --git a/doc/README.actions b/doc/README.actions index 87f2f9f51d..915469cdf1 100644 --- a/doc/README.actions +++ b/doc/README.actions @@ -771,8 +771,8 @@ Actions done by a unit against all units at a tile * UI name can be set using ui_name_nuke_units * set if the actor unit is spent with nuke_units_consuming_always * any action listed in nuke_units_blocked_by must be impossible - * the actor unit must be on a tile next to the target unless - nuke_units_max_range allows it to be further away. + * the range of legal distance between actor unit and target the actor units + must be between nuke_units_min_range and nuke_units_max_range * one or all (unreachableprotects) non transported units at the target tile must be reachable. A unit is reachable if any of the following is true: @@ -801,16 +801,16 @@ Actions done by a unit against a tile * set if the actor unit is spent with explode_nuclear_consuming_always * target kind can be changed with explode_nuclear_target_kind * any action listed in explode_nuclear_blocked_by must be impossible - * actor must be on the same tile as the target unless - explode_nuclear_max_range allows it to be further away. + * the range of legal distance between actor unit and target the actor units + must be between explode_nuclear_min_range and explode_nuclear_max_range "Nuke City" - Detonate in the target city. Cause a nuclear explosion. * UI name can be set using ui_name_nuke_city * set if the actor unit is spent with nuke_city_consuming_always * target kind can be changed with nuke_city_target_kind * any action listed in nuke_city_blocked_by must be impossible - * the actor unit must be on a tile next to the target unless - nuke_city_max_range allows it to be further away. + * the range of legal distance between actor unit and target the actor units + must be between nuke_city_min_range and nuke_city_max_range "Paradrop Unit" - move the actor unit to the target tile. * UI name can be set using ui_name_paradrop_unit diff --git a/server/rscompat.c b/server/rscompat.c index e43afd019a..832d1964f6 100644 --- a/server/rscompat.c +++ b/server/rscompat.c @@ -838,13 +838,16 @@ void rscompat_postprocess(struct rscompat_info *info) paction = action_by_number(ACTION_NUKE_CITY); paction->target_kind = ATK_CITY; paction->actor_consuming_always = TRUE; + paction->min_distance = 1; paction->max_distance = RS_DEFAULT_ACTION_MAX_RANGE; paction = action_by_number(ACTION_NUKE); paction->actor_consuming_always = TRUE; + paction->min_distance = 0; paction = action_by_number(ACTION_NUKE_UNITS); paction->actor_consuming_always = TRUE; + paction->min_distance = 1; enabler = action_enabler_new(); enabler->action = ACTION_PILLAGE; -- 2.20.1