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); | ||
|     } | ||