URL:
<http://gna.org/bugs/?16305>
Summary: Incorrect sabotage handling for diplomats
Project: Freeciv
Submitted by: None
Submitted on: Monday 07/26/2010 at 19:31 CEST
Category: None
Severity: 3 - Normal
Priority: 5 - Normal
Status: None
Assigned to: None
Originator Email:
Open/Closed: Open
Release: 2.2.1
Discussion Lock: Any
Operating System: None
Planned Release:
_______________________________________________________
Details:
The base sabotage chance for a diplomat is half that of the spy, yet could be
the same by changing the client.
This is either a bug (when the base sabotage chance should be the same for
both) or a security flaw (when it should not be possible to upgrade the
sabotage chance on the client). Since I don't know the intended behavior, I
cannot asses this.
In server/diplomats.c:835, function diplomat_sabotage(), the base success
probability is chosen depending on whether a specific target is chosen, or
random:
int success_prob = (improvement >= B_LAST ? game.info.diplchance
: game.info.diplchance / 2);
A few lines further down (line 848) the improvement is set to B_LAST if the
unit is not a spy:
if (!unit_has_type_flag(pdiplomat, F_SPY))
improvement = B_LAST;
So on line 835, the 'improvement' comes straight from the client unmodified,
and based on that, the base success chance is chosen.
This value is set in the gui, for example in
client/gui-gtk-2.0/diplomat_dialog.c:120, function
diplomat_sabotage_callback()
request_diplomat_action(DIPLOMAT_SABOTAGE, diplomat_id,
diplomat_target_id, -1);
The last parameter (-1) is the improvement which will be the parameter
'improvement' in diplomat_sabotage() in server/diplomats.c:835. Since -1 <
B_LAST, this means that a diplomat will sabotage with half the base success
chance. This can be changed on the client by simply sending B_LAST as the
last parameter on request_diplomat_action()
_______________________________________________________
Reply to this item at:
<http://gna.org/bugs/?16305>
_______________________________________________
Message sent via/by Gna!
http://gna.org/
_______________________________________________
Freeciv-dev mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-dev