On Fri, 08 Sep 2017 17:44:48 +0000 David Lewis <[email protected]> wrote: > Yes, I agree, so what I did was change it to a 100th... > > + final int alarmBonus = -Math.round(price * 0.001f * getGame(). > getSpecification() > + .getInteger(GameOptions.ALARM_BONUS_SELL)); > Meaning that if the price of goods is 1064 * .001 * 40 (%) = (round) 43
Argh. The numbers/result/intent make sense, but the code had me
completely mislead. Please, if we are using a *percentage* option
can we have it work as a percentage option, not a
percentage-with-hidden-further-division-by-10-option? We are trying to
get rid of hidden magic numbers and you just snuck a magic 10 back in!
Also remember, this is what we are telling the users:
model.option.alarmBonusSell.shortDescription=Percent bonus on native alarm when
selling goods to a native settlement.
which is a bit unfair when it is really:
...=Percent bonus on native alarm when selling goods to a native settlement
which is then divided by 10.
As things stand in the code, anyone looking at csBuy/Sell/Gift will see
0.001f in two out of three places and be naturally lead to suspect that
there is a bug. Merging the hidden extra divisor into the expected 0.01f
conversion factor obscures what is going on. Really strict coding
standards (which we do *not* have here:-) would insist on not even having
a bare 0.01f, but for that too to be an explicit named constant (e.g.
"final float PERCENT_TO_FLOAT_CONVERSION = 0.01f;"). We do not need to go
that far, but the current code definitely needs improvement.
> Old value was: 1064/50 = 21.
> Probably means we should change the sell default value to 20%, rather than
> 40%.
> So: 1064 * .001 * 20 = 21, which would match the current alarm change for
> selling goods.
If you want to preserve the existing value, why not just dump the
extra divisor but use a value of 2%? However I thought we had agreed that
the existing value is too low, hence my suggestion of 10%. If that seems
too high we can just double the existing situation with 4%.
> Gifting I think should be double, so if it's default were 40%, and you gave
> those 100 trade goods to the natives, it's alarm change value would be -43,
> which I think seems reasonable?
I think gifts should be worth sales * n ; n in { 1.5 .. 2 }. If we get
sales right gifts follow.
> Only the buy value is: *.01 * (%), so a purchase of 100 would be:
> 91 * .01 * 80 (%) = -73 alarm change. But maybe it should be 20% as well by
> default.
> 91 * .01 * 20 (%) = -18 alarm change.
> Currently, a purchase is:
> 91 / 50 = -2 alarm change.
I am less worried by purchasing as the values are lower in general and are
less likely to be abusable to easily pacify a neighbouring tribe. IMHO
purchasing *should* be less effective as all you are doing for the tribe
is removing surplus goods, whereas sales/gifts you are providing them with
something they want that they do not have. There is a qualitative
difference. So I believe buy% == sell% is fine as a starting point.
Cheers,
Mike Pope
pgpMk7oD_WQhn.pgp
Description: OpenPGP digital signature
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________ Freecol-developers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/freecol-developers
