Skip to content

Commit e64b46a

Browse files
authored
FIX ORG
1 parent cd173ab commit e64b46a

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

src/military/military.cpp

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7268,54 +7268,55 @@ economy::commodity_set get_required_supply(sys::state& state, dcon::nation_id ow
72687268

72697269
void recover_org(sys::state& state) {
72707270
/*
7271-
Units that are not in combat and not embarked recover organization daily at: (national-organization-regeneration-modifier +
7272-
morale-from-tech + leader-morale-trait + 1) x the-unit's-supply-factor / 5 up to the maximum organization possible for the unit
7273-
times (0.25 + 0.75 x effective land or naval spending).
7271+
- Units that are not in combat and not embarked recover organization daily at: (national-organization-regeneration-modifier
7272+
+ morale-from-tech + leader-morale-trait + 1) x the-unit's-supply-factor / 5 up to the maximum organization possible
7273+
for the unit times (0.25 + 0.75 x effective land or naval spending).
72747274
- Additionally, the prestige of the leader factors in morale as unit-morale
7275-
+ (leader-prestige x defines:LEADER_PRESTIGE_TO_MORALE_FACTOR).
7275+
+ (leader-prestige x defines:LEADER_PRESTIGE_TO_MORALE_FACTOR).
7276+
- Similarly, unit-max-org + (leader-prestige x defines:LEADER_PRESTIGE_TO_MAX_ORG_FACTOR) allows for maximum org.
72767277
*/
72777278

72787279
for(auto ar : state.world.in_army) {
72797280
if(ar.get_army_battle_participation().get_battle() || ar.get_navy_from_army_transport())
7280-
continue;
7281+
continue;
72817282

72827283
auto in_nation = ar.get_controller_from_army_control();
72837284
auto tech_nation = in_nation ? in_nation : ar.get_controller_from_army_rebel_control().get_ruler_from_rebellion_within();
72847285

72857286
auto leader = ar.get_general_from_army_leadership();
7286-
auto regen_mod = tech_nation.get_modifier_values(sys::national_mod_offsets::org_regain) +
7287-
leader.get_personality().get_morale() + leader.get_background().get_morale() + 1.0f
7288-
+ leader.get_prestige() * state.defines.leader_prestige_to_morale_factor;
7287+
auto regen_mod = tech_nation.get_modifier_values(sys::national_mod_offsets::org_regain)
7288+
+ leader.get_personality().get_morale() + leader.get_background().get_morale() + 1.0f
7289+
+ leader.get_prestige() * state.defines.leader_prestige_to_max_org_factor;
72897290
auto spending_level = (in_nation ? in_nation.get_effective_land_spending() : 1.0f);
7290-
auto modified_regen = regen_mod * spending_level / 150.0f;
7291-
7291+
auto modified_regen = regen_mod * spending_level / 150.f;
7292+
auto max_org = 0.25f + 0.75f * spending_level;
72927293
for(auto reg : ar.get_army_membership()) {
72937294
auto c_org = reg.get_regiment().get_org();
7294-
reg.get_regiment().set_org(std::min(c_org + modified_regen, std::max(c_org, 0.25f + 0.75f * spending_level)));
7295+
reg.get_regiment().set_org(std::min(c_org + modified_regen, max_org));
72957296
}
72967297
}
72977298

72987299
for(auto ar : state.world.in_navy) {
72997300
if(ar.get_navy_battle_participation().get_battle())
7300-
continue;
7301+
continue;
73017302

73027303
auto in_nation = ar.get_controller_from_navy_control();
73037304

73047305
auto leader = ar.get_admiral_from_navy_leadership();
7305-
auto regen_mod = in_nation.get_modifier_values(sys::national_mod_offsets::org_regain) +
7306-
leader.get_personality().get_morale() + leader.get_background().get_morale() + 1.0f
7307-
+ leader.get_prestige() * state.defines.leader_prestige_to_morale_factor;
7306+
auto regen_mod = in_nation.get_modifier_values(sys::national_mod_offsets::org_regain)
7307+
+ leader.get_personality().get_morale() + leader.get_background().get_morale() + 1.0f
7308+
+ leader.get_prestige() * state.defines.leader_prestige_to_morale_factor;
73087309
float oversize_amount =
7309-
in_nation.get_naval_supply_points() > 0
7310-
? std::min(float(in_nation.get_used_naval_supply_points()) / float(in_nation.get_naval_supply_points()), 1.75f)
7311-
: 1.75f;
7310+
in_nation.get_naval_supply_points() > 0
7311+
? std::min(float(in_nation.get_used_naval_supply_points()) / float(in_nation.get_naval_supply_points()), 1.75f)
7312+
: 1.75f;
73127313
float over_size_penalty = oversize_amount > 1.0f ? 2.0f - oversize_amount : 1.0f;
73137314
auto spending_level = in_nation.get_effective_naval_spending() * over_size_penalty;
73147315
auto modified_regen = regen_mod * spending_level / 150.0f;
7315-
7316+
auto max_org = 0.25f + 0.75f * spending_level;
73167317
for(auto reg : ar.get_navy_membership()) {
73177318
auto c_org = reg.get_ship().get_org();
7318-
reg.get_ship().set_org(std::min(c_org + modified_regen, std::max(c_org, 0.25f + 0.75f * spending_level)));
7319+
reg.get_ship().set_org(std::min(c_org + modified_regen, max_org));
73197320
}
73207321
}
73217322
}

0 commit comments

Comments
 (0)