feat(political-benefits): implement political powers and benefits system
All checks were successful
Deploy to production / deploy (push) Successful in 3m3s
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:
@@ -427,6 +427,7 @@
|
||||
"title": "Politika",
|
||||
"tabs": {
|
||||
"current": "Karon nga posisyon",
|
||||
"powers": "Katungod sa opisina",
|
||||
"upcoming": "Umaabot nga mga posisyon",
|
||||
"elections": "Mga eleksiyon"
|
||||
},
|
||||
@@ -452,6 +453,27 @@
|
||||
"court_immunity": "Limitado nga immune sa korte sa opisina",
|
||||
"generic": "Benepisyo ({code})"
|
||||
},
|
||||
"powers": {
|
||||
"none": "Ang imong mga opisina karon walay dugang katungod (buhis, pagtudlo, libre nga slot).",
|
||||
"loadError": "Dili makarga ang mga katungod sa opisina.",
|
||||
"freeLoversTitle": "Mga affair (opisina)",
|
||||
"freeLoversHint": "Adunay ka {count} ka political nga affair slot nga walay bulan nga gasto (tan-awa Pamilya → Affairs).",
|
||||
"reputationTitle": "Reputasyon (awtomatiko)",
|
||||
"reputationLine": "{office}: sunod nga bonus mga {days} ka adlaw (+{gain} reputasyon).",
|
||||
"taxTitle": "Mga rate sa buhis sa rehiyon",
|
||||
"taxRange": "Gitugotan: {min}% hangtod {max}%.",
|
||||
"taxSave": "I-save",
|
||||
"taxSaved": "Na-save ang rate sa buhis.",
|
||||
"taxError": "Dili ma-save ang rate sa buhis.",
|
||||
"appointTitle": "Mga pagtudlo",
|
||||
"appointSlot": "Bakante nga opisina",
|
||||
"appointPick": "— pilia ang opisina —",
|
||||
"appointSearch": "Pangitaa ang mga magdula (ngalan o username)",
|
||||
"appointSelected": "Gipili: {name}",
|
||||
"appointSubmit": "Itudlo",
|
||||
"appointSuccess": "Natuman ang pagtudlo.",
|
||||
"appointError": "Napakyas ang pagtudlo."
|
||||
},
|
||||
"regionLevels": {
|
||||
"city": "Siyudad",
|
||||
"county": "County",
|
||||
@@ -482,6 +504,53 @@
|
||||
"partner": "Kapikas ug kasal",
|
||||
"children": "Mga anak",
|
||||
"lovers": "Mga affair"
|
||||
},
|
||||
"lovers": {
|
||||
"title": "Mga minyo’g gawas ug mga paborito",
|
||||
"none": "Walay mga affair karon.",
|
||||
"age": "Edad",
|
||||
"affection": "Pagmahal",
|
||||
"visibility": "Klaro ba",
|
||||
"discretion": "Diskreto",
|
||||
"maintenance": "Suporta bulanan",
|
||||
"monthlyCost": "Gasto kada bulan",
|
||||
"politicalFreeSlotsHint": "Ang mga politikal nga opisina naghatag og {count} ka affair slot nga walay bulan nga suporta (ang barato nga relasyon una).",
|
||||
"politicalFreeMaintenance": "Opisina (libre)",
|
||||
"statusFit": "Angay sa kahimtang",
|
||||
"acknowledged": "Giila",
|
||||
"underfunded": "{count} ka bulan kulang ang suporta",
|
||||
"role": {
|
||||
"secret_affair": "Tago nga relasyon",
|
||||
"lover": "Kasintahan",
|
||||
"mistress_or_favorite": "Mistress o paborito"
|
||||
},
|
||||
"risk": {
|
||||
"low": "Ubos nga risgo",
|
||||
"medium": "Tunga-tunga nga risgo",
|
||||
"high": "Taas nga risgo"
|
||||
},
|
||||
"actions": {
|
||||
"start": "Sugdi ang affair",
|
||||
"startSuccess": "Nagsugod na ang bag-ong affair.",
|
||||
"startError": "Dili masugdan ang affair.",
|
||||
"maintenanceLow": "Suporta 25",
|
||||
"maintenanceMedium": "Suporta 50",
|
||||
"maintenanceHigh": "Suporta 75",
|
||||
"maintenanceSuccess": "Na-update ang suporta.",
|
||||
"maintenanceError": "Dili ma-update ang suporta.",
|
||||
"acknowledge": "Iila",
|
||||
"acknowledgeSuccess": "Giila na ang relasyon.",
|
||||
"acknowledgeError": "Dili ma-ila ang relasyon.",
|
||||
"end": "Hunongon",
|
||||
"endConfirm": "Hunongon ba gyud kini nga relasyon?",
|
||||
"endSuccess": "Nahunong na ang relasyon.",
|
||||
"endError": "Dili mahunong ang relasyon."
|
||||
},
|
||||
"candidates": {
|
||||
"title": "Posible nga mga affair",
|
||||
"roleLabel": "Porma sa relasyon",
|
||||
"none": "Walay angay nga bag-ong affair karon."
|
||||
}
|
||||
}
|
||||
},
|
||||
"church": {
|
||||
|
||||
@@ -711,6 +711,8 @@
|
||||
"discretion": "Diskretion",
|
||||
"maintenance": "Unterhalt",
|
||||
"monthlyCost": "Monatskosten",
|
||||
"politicalFreeSlotsHint": "Politische Ämter gewähren dir {count} Liebschaftsplatz/-plätze ohne monatlichen Unterhalt (die günstigsten Beziehungen zählen zuerst).",
|
||||
"politicalFreeMaintenance": "Amt (frei)",
|
||||
"statusFit": "Standespassung",
|
||||
"acknowledged": "Anerkannt",
|
||||
"underfunded": "{count} Monate unterversorgt",
|
||||
@@ -1346,6 +1348,7 @@
|
||||
"title": "Politik",
|
||||
"tabs": {
|
||||
"current": "Aktuelle Position",
|
||||
"powers": "Amtsbefugnisse",
|
||||
"upcoming": "Anstehende Neuwahl-Positionen",
|
||||
"elections": "Wahlen"
|
||||
},
|
||||
@@ -1371,6 +1374,27 @@
|
||||
"court_immunity": "Eingeschränkte gerichtliche Immunität im Amtsbereich",
|
||||
"generic": "Vorteil ({code})"
|
||||
},
|
||||
"powers": {
|
||||
"none": "Für deine aktuellen Ämter liegen keine zusätzlichen Befugnisse vor (Steuern, Ernennungen, Freiplätze).",
|
||||
"loadError": "Amtsbefugnisse konnten nicht geladen werden.",
|
||||
"freeLoversTitle": "Liebschaften (Amt)",
|
||||
"freeLoversHint": "Dir stehen {count} politisch begründete Plätze ohne monatlichen Unterhalt zu (siehe Familie → Affären).",
|
||||
"reputationTitle": "Ansehen (automatisch)",
|
||||
"reputationLine": "{office}: nächster Bonus in ca. {days} Tag(en) (+{gain} Ansehen).",
|
||||
"taxTitle": "Regionale Steuersätze",
|
||||
"taxRange": "Erlaubter Bereich: {min} % bis {max} %.",
|
||||
"taxSave": "Speichern",
|
||||
"taxSaved": "Steuersatz gespeichert.",
|
||||
"taxError": "Steuersatz konnte nicht gespeichert werden.",
|
||||
"appointTitle": "Ernennungen",
|
||||
"appointSlot": "Freier Posten",
|
||||
"appointPick": "— Posten wählen —",
|
||||
"appointSearch": "Spieler suchen (Name oder Benutzername)",
|
||||
"appointSelected": "Gewählt: {name}",
|
||||
"appointSubmit": "Ernennen",
|
||||
"appointSuccess": "Ernennung durchgeführt.",
|
||||
"appointError": "Ernennung fehlgeschlagen."
|
||||
},
|
||||
"regionLevels": {
|
||||
"city": "Stadt",
|
||||
"county": "Landkreis",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -679,6 +679,8 @@
|
||||
"discretion": "Discreción",
|
||||
"maintenance": "Mantenimiento",
|
||||
"monthlyCost": "Coste mensual",
|
||||
"politicalFreeSlotsHint": "Los cargos políticos te conceden {count} plaza(s) de relación sin mantenimiento mensual (primero cuentan las relaciones más baratas).",
|
||||
"politicalFreeMaintenance": "Cargo (gratis)",
|
||||
"statusFit": "Adecuación social",
|
||||
"acknowledged": "Reconocido",
|
||||
"underfunded": "{count} meses con fondos insuficientes",
|
||||
@@ -1258,6 +1260,7 @@
|
||||
"title": "Política",
|
||||
"tabs": {
|
||||
"current": "Cargo actual",
|
||||
"powers": "Facultades del cargo",
|
||||
"upcoming": "Cargos pendientes de (re)elección",
|
||||
"elections": "Elecciones"
|
||||
},
|
||||
@@ -1279,6 +1282,27 @@
|
||||
"court_immunity": "Inmunidad judicial limitada en asuntos del cargo",
|
||||
"generic": "Ventaja ({code})"
|
||||
},
|
||||
"powers": {
|
||||
"none": "Tus cargos actuales no conceden facultades adicionales (impuestos, nombramientos, plazas gratuitas).",
|
||||
"loadError": "No se pudieron cargar las facultades del cargo.",
|
||||
"freeLoversTitle": "Relaciones (cargo)",
|
||||
"freeLoversHint": "Tienes {count} plaza(s) de relación concedida(s) políticamente sin mantenimiento mensual (véase Familia → Relaciones).",
|
||||
"reputationTitle": "Reputación (automática)",
|
||||
"reputationLine": "{office}: próximo bono en unos {days} día(s) (+{gain} reputación).",
|
||||
"taxTitle": "Tipos impositivos regionales",
|
||||
"taxRange": "Rango permitido: del {min} % al {max} %.",
|
||||
"taxSave": "Guardar",
|
||||
"taxSaved": "Tipo impositivo guardado.",
|
||||
"taxError": "No se pudo guardar el tipo impositivo.",
|
||||
"appointTitle": "Nombramientos",
|
||||
"appointSlot": "Cargo vacante",
|
||||
"appointPick": "— elegir cargo —",
|
||||
"appointSearch": "Buscar jugadores (nombre o usuario)",
|
||||
"appointSelected": "Seleccionado: {name}",
|
||||
"appointSubmit": "Nombrar",
|
||||
"appointSuccess": "Nombramiento realizado.",
|
||||
"appointError": "El nombramiento ha fallado."
|
||||
},
|
||||
"regionLevels": {
|
||||
"city": "Ciudad",
|
||||
"county": "Condado",
|
||||
|
||||
Reference in New Issue
Block a user