caravaning shall be part of free-civilisation
Posted: Tue Apr 04, 2017 3:29 pm
The honourable Liu-Tingxun organised an exploration of western worlds in the hope of bringing back new riches,
but instead found some giant horses and which a few decades later he traded for silk ...
since then 1/2 millions people visit towns in the middle of most arid deserts checking out where this incredible deal took place.
..and that is all (sigh),
although the 300 years of Tang dinasty did not suffer much defeats but a fair prosperous time, and a splendid deployment of artifacts...
My take is that caravans trading shall be part of this game;
but you, experienced players found it spoiling, and decadent,
by flooding with extravagant bonuses linked to distances...and other artificial factors
to the extra gold and bulbs lavishly received.
let have the option of cutting this from the rule-set ...:
I think the function get_caravan_enter_city_trade_bonus() does the job to retrieve bonuses from those :
...
362 tb = map_distance(pc1->tile, pc2->tile) + 10;
363 tb = (tb * (pc1->surplus[O_TRADE] + pc2->surplus[O_TRADE])) / 24;
364
365 /* Trade_revenue_bonus increases revenue by power of 2 in milimes */
366 bonus = get_target_bonus_effects(NULL,
367 city_owner(pc1), city_owner(pc2),
368 pc1, NULL, city_tile(pc1),
369 /* TODO: Should unit requirements be
370 * allowed so stuff like moves left and
371 * unit type can modify the bonus? */
372 NULL, NULL,
373 NULL, NULL,
374 /* Could be used to reduce the one time
375 * bonus if no trade route is
376 * established. */
377 action_by_number(establish_trade ?
378 ACTION_TRADE_ROUTE :
379 ACTION_MARKETPLACE),
380 EFT_TRADE_REVENUE_BONUS);
381
382 /* Be mercy full to players with small amounts. Round up. */
383 tb = ceil((float)tb * pow(2.0, (double)bonus / 1000.0));
...
with...get_target_bonus_effects() :...
530 {
531 int bonus = 0;
532
533 /* Loop over all effects of this type. */
534 effect_list_iterate(get_effects(effect_type), peffect) {
535 /* For each effect, see if it is active. */
536 if (are_reqs_active(target_player, other_player, target_city,
537 target_building, target_tile,
538 target_unit, target_unittype,
539 target_output, target_specialist, target_action,
540 &peffect->reqs, RPT_CERTAIN)) {
541 /* This code will add value of effect. If there's multiplier for
542 * effect and target_player aren't null, then value is multiplied
543 * by player's multiplier factor. */
544 if (peffect->multiplier) {
545 if (target_player) {
546 bonus += (peffect->value
547 * player_multiplier_effect_value(target_player,
548 peffect->multiplier)) / 100;
549 }
550 } else {
551 bonus += peffect->value;
552 }
553
554 if (plist) {
555 effect_list_append(plist, peffect);
556 }
557 }
558 } effect_list_iterate_end;
559
560 return bonus;
561 }
here are my takes...
* variable "bonus" would be therefore twickable in the ruleset using the city effect of ruleset_cache.effects[EFT_TRADE_REVENUE_BONUS] ?
* also tb could be further divided but more effective would be to return a cubic root (tb = pow(1/3, tb)) from get_caravan_enter_city_trade_bonus() ?
* as for changing the added trace surplus , "...->surplus[O_TRADE]", I would also not be so sure.
what do you think?
but instead found some giant horses and which a few decades later he traded for silk ...
since then 1/2 millions people visit towns in the middle of most arid deserts checking out where this incredible deal took place.
..and that is all (sigh),
although the 300 years of Tang dinasty did not suffer much defeats but a fair prosperous time, and a splendid deployment of artifacts...
My take is that caravans trading shall be part of this game;
but you, experienced players found it spoiling, and decadent,
by flooding with extravagant bonuses linked to distances...and other artificial factors
to the extra gold and bulbs lavishly received.
let have the option of cutting this from the rule-set ...:
I think the function get_caravan_enter_city_trade_bonus() does the job to retrieve bonuses from those :
...
362 tb = map_distance(pc1->tile, pc2->tile) + 10;
363 tb = (tb * (pc1->surplus[O_TRADE] + pc2->surplus[O_TRADE])) / 24;
364
365 /* Trade_revenue_bonus increases revenue by power of 2 in milimes */
366 bonus = get_target_bonus_effects(NULL,
367 city_owner(pc1), city_owner(pc2),
368 pc1, NULL, city_tile(pc1),
369 /* TODO: Should unit requirements be
370 * allowed so stuff like moves left and
371 * unit type can modify the bonus? */
372 NULL, NULL,
373 NULL, NULL,
374 /* Could be used to reduce the one time
375 * bonus if no trade route is
376 * established. */
377 action_by_number(establish_trade ?
378 ACTION_TRADE_ROUTE :
379 ACTION_MARKETPLACE),
380 EFT_TRADE_REVENUE_BONUS);
381
382 /* Be mercy full to players with small amounts. Round up. */
383 tb = ceil((float)tb * pow(2.0, (double)bonus / 1000.0));
...
with...get_target_bonus_effects() :...
530 {
531 int bonus = 0;
532
533 /* Loop over all effects of this type. */
534 effect_list_iterate(get_effects(effect_type), peffect) {
535 /* For each effect, see if it is active. */
536 if (are_reqs_active(target_player, other_player, target_city,
537 target_building, target_tile,
538 target_unit, target_unittype,
539 target_output, target_specialist, target_action,
540 &peffect->reqs, RPT_CERTAIN)) {
541 /* This code will add value of effect. If there's multiplier for
542 * effect and target_player aren't null, then value is multiplied
543 * by player's multiplier factor. */
544 if (peffect->multiplier) {
545 if (target_player) {
546 bonus += (peffect->value
547 * player_multiplier_effect_value(target_player,
548 peffect->multiplier)) / 100;
549 }
550 } else {
551 bonus += peffect->value;
552 }
553
554 if (plist) {
555 effect_list_append(plist, peffect);
556 }
557 }
558 } effect_list_iterate_end;
559
560 return bonus;
561 }
here are my takes...
* variable "bonus" would be therefore twickable in the ruleset using the city effect of ruleset_cache.effects[EFT_TRADE_REVENUE_BONUS] ?
* also tb could be further divided but more effective would be to return a cubic root (tb = pow(1/3, tb)) from get_caravan_enter_city_trade_bonus() ?
* as for changing the added trace surplus , "...->surplus[O_TRADE]", I would also not be so sure.
what do you think?