This is a bug for sure. The game uses tax brackets to calculate lot taxes. The new update lowered the tax rate of all brackets by 0.5%. Currently property value under $20k has a tax rate of 1.5%. Between $20k and $30k it's 2.5%. And then it's 3% from $30k to $50k and 4.5% if it's over $50k.
Before the update the tax bracket calculation worked perfectly. The new update meanwhile completely botched the calculation. Here's the new function that's used to calculate lot taxes:
def _get_property_taxes(self):
plex_service = services.get_plex_service()
if plex_service.is_zone_an_apartment(self._household.home_zone_id, consider_penthouse_an_apartment=False):
return 0
billable_household_value = self._household.household_net_worth(billable=True)
for bracket in Bills.BILL_BRACKETS:
lower_bound = bracket.value_range.lower_bound
if billable_household_value >= lower_bound:
upper_bound = bracket.value_range.upper_bound
if upper_bound is None:
upper_bound = billable_household_value
bound_difference = upper_bound - lower_bound
value_difference = billable_household_value - lower_bound
if value_difference > bound_difference:
value_difference = bound_difference
value_difference *= bracket.tax_percentage
return value_difference
The problem is that value_difference in this function is returned as soon as it's calculated for the first tax bracket. Since $20000 * 1.5% = $300, all lot taxes are capped at $300 as a result. To fix this, calculate the running total instead. For example:
def _get_property_taxes(self):
plex_service = services.get_plex_service()
if plex_service.is_zone_an_apartment(self._household.home_zone_id, consider_penthouse_an_apartment=False):
return 0
property_taxes = 0
billable_household_value = self._household.household_net_worth(billable=True)
for bracket in Bills.BILL_BRACKETS:
lower_bound = bracket.value_range.lower_bound
if billable_household_value >= lower_bound:
upper_bound = bracket.value_range.upper_bound
if upper_bound is None:
upper_bound = billable_household_value
bound_difference = upper_bound - lower_bound
value_difference = billable_household_value - lower_bound
if value_difference > bound_difference:
value_difference = bound_difference
value_difference *= bracket.tax_percentage
property_taxes += value_difference
return property_taxes