En périphérie de la ville, un vaste quartier ceint l’ensemble de Kinchū comme une barrière vivante. Ce sont les habitations, parfois désignées ironiquement par les habitants eux-mêmes comme "la ceinture de la paix" - une paix rigide, contrôlée, conditionnelle.
Les maisons y sont modestes, construites en bois sombre et en torchis, avec parfois des murs en pierre pour les foyers les plus aisés. Les toits sont inclinés, couverts de tuiles grises ou de chaume compact. Chaque maison est identifiée par un code tracé à la peinture noire au-dessus de la porte, indiquant son registre, son affectation et, parfois, son historique.
La vie y est organisée à la minute : les heures de travail, de prière, de repas et de repos sont prescrites dans un petit carnet distribué chaque saison. Les dérogations sont rares. Les habitants sont fonctionnaires subalternes, artisans sélectionnés, ou anciens militaires reconvertis dans des rôles civils.
Les rues sont droites, balisées, surveillées par des membres de la milice locale, qui patrouillent à heure fixe. Il n’y a pas de marchés spontanés ici : chaque denrée est distribuée via des points de ravitaillement contrôlés. Les enfants vont à l’école dans des bâtiments austères, apprenant les maximes impériales avant même de savoir écrire leur propre nom.
Le soir, les portes se ferment tôt. Les volets glissent sur les fenêtres dans un bruissement de bois. Et dans ce silence parfaitement rodé, un visiteur inattendu devient immédiatement suspect.
Pourtant, malgré cette rigueur, une forme de solidarité existe. Les habitants, liés par une discipline commune, tissent des relations feutrées mais sincères. On s’entraide, discrètement.
SELECT DATEDIFF(CURRENT_DATE, msg.dateMessage) howManyDays,
lastMessage.participants, lieu.lblLieu, sousForum.nomSousForum,
sousForum.description, topic.idTopic, topic.nomTopic, topic.descriptionTopic,
topic.annee, topic.saison, msg.idComptePrin,
msg.idMessage, msg.dateMessage, msg.idUtilisateur, LEFT(msg.texteMessage, 400) as texteMessage,
msg.idForum, lastMessage.nbMessages, perso.nomPerso, perso.villagePerso, (SELECT urlAva FROM s_miniAvatars WHERE idPnj=0 AND idPersonnage=msg.idUtilisateur
ORDER BY avaPrincipal DESC, idAva ASC LIMIT 0,1) as miniAva
FROM (
SELECT MAX(idMessage) idMessage, MAX(dateMessage) dateMessage, COUNT(idMessage) as nbMessages,
JSON_ARRAYAGG(
DISTINCT JSON_OBJECT(
'idUtilisateur', t_message.idUtilisateur,
'nomPerso', s_personnage.nomPerso,
'villagePerso', s_personnage.villagePerso,
'miniAva', (SELECT urlAva FROM s_miniAvatars WHERE idPnj=0 AND idPersonnage=t_message.idUtilisateur
ORDER BY avaPrincipal DESC, idAva ASC LIMIT 0,1)
)
) AS participants
FROM t_message
LEFT JOIN s_personnage ON t_message.idUtilisateur=s_personnage.idUtilisateur
GROUP BY idTopic ) as lastMessage
LEFT JOIN t_message msg ON lastMessage.idMessage = msg.idMessage
AND lastMessage.dateMessage = msg.dateMessage
LEFT JOIN s_personnage perso ON msg.idUtilisateur=perso.idUtilisateur
LEFT JOIN t_topic topic ON msg.idTopic=topic.idTopic LEFT JOIN t_sousforumlieu lieu ON topic.idLieu=lieu.idLieu
LEFT JOIN t_sousforum sousForum ON msg.idSousForum=sousForum.idSousForum WHERE msg.idSousForum=:idSousforum AND 'gore' NOT IN (SELECT idType FROM t_topicType WHERE idTopic=msg.idTopic) ORDER BY msg.idMessage DESC