feat(city): add player marketplace, mission journal, character customization and presence

- Player-to-player marketplace with listings, buying and selling
- Mission system with progress tracking and money rewards
- Character appearance customization (skin, hair, face, beard, accessory)
- Multiplayer presence feed showing nearby citizens in near-real-time
- Admin world dashboard with live platform metrics
- Bus and train transportation with temporary ride state
- Mobile joystick controls and minimap HUD
- Education bonus applied to work salary
This commit is contained in:
2026-10-17 22:51:20 -03:00
parent 18778b3d26
commit a620f83dd8
30 changed files with 1822 additions and 10 deletions
+28 -1
View File
@@ -217,5 +217,32 @@
"city.exercise_max_health": "Health is already at maximum!",
"city.exerciseStart": "Starting exercise…",
"city.exerciseStop": "Exercise stopped.",
"city.ped_red": "Red pedestrian light — wait for the walk signal."
"city.ped_red": "Red pedestrian light — wait for the walk signal.",
"nav.world": "World",
"admin.world.title": "World dashboard",
"admin.world.hint": "Live platform metrics for the persistent world.",
"admin.world.users": "Users",
"admin.world.characters": "Characters",
"admin.world.economy": "Economy",
"admin.world.trade_volume": "Trade volume",
"admin.world.world": "Finished houses",
"admin.world.market": "Market",
"admin.world.missions": "Missions",
"admin.world.health": "Avg health",
"admin.world.education": "Avg education",
"city.customize_saved": "Appearance updated.",
"city.market_listed": "Listing published on the market.",
"city.market_bought": "Purchase complete!",
"city.market_unavailable": "Listing unavailable.",
"city.ride_need_stop": "Get near a road (bus) or the rails (train).",
"city.ride_bus_ok": "You boarded the bus!",
"city.ride_train_ok": "You boarded the train!",
"city.missions_done": "Mission complete",
"city.act_market": "Market",
"city.act_customize": "Appearance",
"city.act_ride_bus": "Bus",
"city.act_ride_train": "Train",
"city.hud_minimap": "Map",
"city.online_now": "online",
"city.marketBuy": "Buy"
}
+28 -1
View File
@@ -217,5 +217,32 @@
"city.exercise_max_health": "¡La salud ya está en el máximo!",
"city.exerciseStart": "Empezando a ejercitarse…",
"city.exerciseStop": "Ejercicio terminado.",
"city.ped_red": "Semáforo de peatón en rojo — espere la señal verde."
"city.ped_red": "Semáforo de peatón en rojo — espere la señal verde.",
"nav.world": "Mundo",
"admin.world.title": "Panel del mundo",
"admin.world.hint": "Métricas en vivo de la plataforma persistente.",
"admin.world.users": "Usuarios",
"admin.world.characters": "Personajes",
"admin.world.economy": "Economía",
"admin.world.trade_volume": "Volumen de trueques",
"admin.world.world": "Casas terminadas",
"admin.world.market": "Mercado",
"admin.world.missions": "Misiones",
"admin.world.health": "Salud media",
"admin.world.education": "Educación media",
"city.customize_saved": "Apariencia actualizada.",
"city.market_listed": "Anuncio publicado en el mercado.",
"city.market_bought": "¡Compra realizada!",
"city.market_unavailable": "Anuncio no disponible.",
"city.ride_need_stop": "Acérquese a una vía (autobús) o a los raíles (tren).",
"city.ride_bus_ok": "¡Has subido al autobús!",
"city.ride_train_ok": "¡Has subido al tren!",
"city.missions_done": "Misión completada",
"city.act_market": "Mercado",
"city.act_customize": "Apariencia",
"city.act_ride_bus": "Autobús",
"city.act_ride_train": "Tren",
"city.hud_minimap": "Mapa",
"city.online_now": "en línea",
"city.marketBuy": "Comprar"
}
+28 -1
View File
@@ -217,5 +217,32 @@
"city.exercise_max_health": "Saúde já está no máximo!",
"city.exerciseStart": "Começando a se exercitar…",
"city.exerciseStop": "Exercício encerrado.",
"city.ped_red": "Semáforo de pedestre vermelho — aguarde o sinal verde."
"city.ped_red": "Semáforo de pedestre vermelho — aguarde o sinal verde.",
"nav.world": "Mundo",
"admin.world.title": "Painel do mundo",
"admin.world.hint": "Métricas ao vivo da plataforma persistente.",
"admin.world.users": "Usuários",
"admin.world.characters": "Personagens",
"admin.world.economy": "Economia",
"admin.world.trade_volume": "Volume de trocas",
"admin.world.world": "Casas prontas",
"admin.world.market": "Mercado",
"admin.world.missions": "Missões",
"admin.world.health": "Saúde média",
"admin.world.education": "Educação média",
"city.customize_saved": "Aparência atualizada.",
"city.market_listed": "Anúncio publicado no mercado.",
"city.market_bought": "Compra realizada!",
"city.market_unavailable": "Anúncio indisponível.",
"city.ride_need_stop": "Aproxime-se de uma via (ônibus) ou dos trilhos (trem).",
"city.ride_bus_ok": "Você embarcou no ônibus!",
"city.ride_train_ok": "Você embarcou no trem!",
"city.missions_done": "Missão concluída",
"city.act_market": "Mercado",
"city.act_customize": "Aparência",
"city.act_ride_bus": "Ônibus",
"city.act_ride_train": "Trem",
"city.hud_minimap": "Mapa",
"city.online_now": "online",
"city.marketBuy": "Comprar"
}