Niché au cœur d’une vallée encaissée et protégé par de hauts remparts de pierre grise, le Grand Marché des Senteurs et des Lames est le poumon commercial de la région Hattori. Les étals, disposés en ruelles sinueuses et couvertes de toiles colorées, regorgent de produits rares venus des quatre horizons : épices brûlantes des ports du Sud, gibiers fumés des montagnes occidentales, huiles parfumées enfermées dans de fines fioles, et armes finement ouvragées destinées aux nobles et aux collectionneurs.
Dès l’aube, la brume descend des pics voisins et enveloppe le marché d’une atmosphère mystérieuse. Les marchands crient leurs offres à demi-voix, préférant attirer l’attention d’oreilles précises plutôt que de la foule entière. Ici, un simple panier de fruits exotiques peut valoir plus qu’un lingot d’argent, et un flacon sans étiquette peut être un antidote… ou un poison.
Les ruelles sont parcourues par des mendiants muets, des mercenaires à l’œil méfiant, et des courtisans venus incognito. Dans l’aile sud du marché, les “allées parfumées” concentrent les produits de bouche, avec des bouillons onctueux servis dans des bols de terre cuite et des pâtisseries au miel noir. L’aile nord, plus sombre, regorge de lames, de dagues fines et d’armes miniatures dissimulées dans des objets d’apparence inoffensive.
Les gardes du marché, vêtus de tuniques brunes brodées du symbole Hattori, veillent à ce qu’aucune bagarre ouverte n’éclate… mais ferment les yeux sur les échanges plus discrets. On dit que c’est ici que l’on peut acheter tout ce qui existe dans le royaume — à condition d’en payer le prix, parfois en pièces, parfois autrement.
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
C'est calme ici...