Feature #485 ยป 0053-maybe_become_veteran_real-Rename-settler-parameter-a.patch
| server/unittools.c | ||
|---|---|---|
|
static bool maybe_cancel_patrol_due_to_enemy(struct unit *punit);
|
||
|
static bool maybe_become_veteran_real(struct unit *punit, int base_chance,
|
||
|
bool settler);
|
||
|
bool worker);
|
||
|
static void unit_transport_load_tp_status(struct unit *punit,
|
||
|
struct unit *ptrans,
|
||
| ... | ... | |
|
the unit.
|
||
|
**************************************************************************/
|
||
|
static bool maybe_become_veteran_real(struct unit *punit, int base_chance,
|
||
|
bool settler)
|
||
|
bool worker)
|
||
|
{
|
||
|
const struct veteran_system *vsystem;
|
||
|
const struct veteran_level *vlevel;
|
||
| ... | ... | |
|
if (punit->veteran + 1 >= vsystem->levels
|
||
|
|| !is_action_enabled_unit_on_self(nmap, ACTION_GAIN_VETERANCY, punit)) {
|
||
|
return FALSE;
|
||
|
} else if (!settler) {
|
||
|
} else if (!worker) {
|
||
|
int mod = base_chance + get_unit_bonus(punit, EFT_VETERAN_COMBAT);
|
||
|
/* The modification is tacked on as a multiplier to the base chance.
|
||
|
* For example with a base chance of 50% for green units and a modifier
|
||
|
* of +50% the end chance is 75%. */
|
||
|
chance = vlevel->base_raise_chance * mod / 100;
|
||
|
} else if (settler && unit_has_type_flag(punit, UTYF_WORKERS)) {
|
||
|
} else if (worker && unit_has_type_flag(punit, UTYF_WORKERS)) {
|
||
|
chance = base_chance * vlevel->work_raise_chance / 100;
|
||
|
} else {
|
||
|
/* No battle and no work done. */
|
||
| ... | ... | |
|
case ACTIVITY_GEN_ROAD:
|
||
|
punit->activity_count += get_activity_rate_this_turn(punit);
|
||
|
/* Settler may become veteran when doing something useful */
|
||
|
/* Worker may become veteran when doing something useful */
|
||
|
if (maybe_become_veteran_real(punit, 100, TRUE)) {
|
||
|
notify_unit_experience(punit);
|
||
|
}
|
||