feat(political-benefits): implement political powers and benefits system
All checks were successful
Deploy to production / deploy (push) Successful in 3m3s

- Added new political powers and benefits functionalities, including reputation ticks, tax jurisdiction management, and appointment capabilities.
- Introduced a new job for periodic reputation updates and created necessary database tables for tracking political benefits.
- Enhanced the FalukantController and services to support new endpoints for managing political powers and appointments.
- Updated localization files to reflect new features and improve user experience across multiple languages.
- Modified the UI to display new political powers and benefits, ensuring accurate representation in the PoliticsView.
This commit is contained in:
Torsten Schulz (local)
2026-04-02 16:00:29 +02:00
parent 5d06d97737
commit 56be4b76c0
19 changed files with 1572 additions and 2 deletions

View File

@@ -567,6 +567,7 @@
"title": "Politics",
"tabs": {
"current": "Current Position",
"powers": "Office powers",
"upcoming": "Upcoming Positions",
"elections": "Elections"
},
@@ -592,6 +593,27 @@
"court_immunity": "Limited judicial immunity in office matters",
"generic": "Benefit ({code})"
},
"powers": {
"none": "Your current offices grant no extra powers (taxes, appointments, free slots).",
"loadError": "Could not load office powers.",
"freeLoversTitle": "Affairs (office)",
"freeLoversHint": "You have {count} politically granted affair slot(s) with no monthly upkeep (see Family → Affairs).",
"reputationTitle": "Reputation (automatic)",
"reputationLine": "{office}: next bonus in about {days} day(s) (+{gain} reputation).",
"taxTitle": "Regional tax rates",
"taxRange": "Allowed range: {min}% to {max}%.",
"taxSave": "Save",
"taxSaved": "Tax rate saved.",
"taxError": "Could not save tax rate.",
"appointTitle": "Appointments",
"appointSlot": "Vacant office",
"appointPick": "— choose office —",
"appointSearch": "Search players (name or username)",
"appointSelected": "Selected: {name}",
"appointSubmit": "Appoint",
"appointSuccess": "Appointment completed.",
"appointError": "Appointment failed."
},
"regionLevels": {
"city": "City",
"county": "County",
@@ -795,6 +817,8 @@
"discretion": "Discretion",
"maintenance": "Maintenance",
"monthlyCost": "Monthly Cost",
"politicalFreeSlotsHint": "Political offices grant you {count} affair slot(s) with no monthly upkeep (cheapest relationships count first).",
"politicalFreeMaintenance": "Office (free)",
"statusFit": "Status Fit",
"acknowledged": "Acknowledged",
"underfunded": "{count} months underfunded",