SommaireContents
- 1. Toutes les touches1. Every key
- 2. Lecteur d'écran & synthèse vocale2. Screen reader & speech
- 3. Déplacement & case devant vous3. Movement & tile ahead
- Curseur de case libreFree tile cursor
- 4. Menus, inventaire, dialogues4. Menus, inventory, dialogue
- Saisie de texteText input
- Avancement et limitesProgress and limits
- 5. Scanner & cheminement automatique5. Scanner & auto-pathing
- 6. Agriculture, boutiques, combat, courrier, quêtes, pêche, minage, donjons, horloge6. Farming, shops, combat, mail, quests, fishing, mining, dungeons, clock
- 7. Jouer à plusieurs7. Playing together
- 8. Langue des annonces8. Announcement language
1. Toutes les touches1. Every key
Toutes personnalisables dans BepInEx/config/com.kleitz.sunhavenaccess.cfg, ou en jeu via le menu vocal des raccourcis (touche Suppr) : parcourable aux flèches, Entrée pour réassigner une touche, Échap pour annuler. Toutes vérifiées sans conflit avec les touches par défaut du jeu lui-même (table Wish.UserSettings.DefaultKeybinds lue directement dans le code décompilé).
All customizable in BepInEx/config/com.kleitz.sunhavenaccess.cfg, or in-game through the voice keybindings menu (Delete key): browse with arrow keys, Enter to rebind a key, Escape to cancel. All verified conflict-free with the game's own default keybindings (checked directly against the decompiled Wish.UserSettings.DefaultKeybinds table).
Informations & annoncesInformation & announcements
| ToucheKey | ActionAction |
|---|---|
| F1 | Ouvre le menu d'aide, parcourable rubrique par rubrique aux flèches. Rappuyer dessus, ou Échap, le referme. ⚠️ déclenche aussi l'émote 1 du jeu (touche gardée sur demande explicite malgré ce conflit).Opens the help menu, browsable topic by topic with the arrows. Press again, or Escape, to close. ⚠️ also triggers the game's emote 1 (kept on explicit request despite this conflict). |
| Non assignéeUnbound | Décrit la case devant vous (terrain, culture, objet, PNJ...), même si l'annonce automatique est désactivée. Non assignée par défaut : cette case est déjà décrite à chaque pas, et la touche de répétition la redit à l'arrêt.Describes the tile in front of you (terrain, crop, object, NPC...), even if automatic announcement is off. |
| P | Annonce votre position (coordonnées) et la direction regardée.Announces your position (coordinates) and the direction you're facing. |
| O | Annonce l'heure, le jour de la semaine, le jour du mois, la saison, l'année et la météo actuelle.Announces the time, day of the week, day of the month, season, year, and current weather. |
| N | Passe au personnage proche suivant et l'annonce (nom, direction, distance).Moves to the next nearby character and announces it (name, direction, distance). |
| B | Répète la dernière chose annoncée par le mod.Repeats the last thing the mod announced. |
| H | Annonce votre santé, votre mana et votre bourse : pièces, plus orbes et tickets si vous en avez. Voir Le mana.Announces your health, your mana and your purse: coins, plus orbs and tickets if you have any. See Mana. |
| G | Annonce toutes vos quêtes actives (voir Quêtes plus bas).Announces all your active quests (see Quests below). |
| V | Annonce vos relations avec les PNJ romançables (voir Relations & compétences plus bas).Announces your relationships with romanceable NPCs (see Relationships & skills below). |
| U | Annonce vos niveaux de compétence (voir Relations & compétences plus bas).Announces your skill levels (see Relationships & skills below). |
| X / Y | Carte du monde ouverte : lieu précédent / suivant (voir Carte du monde plus bas).World map open: previous / next place (see World map below). |
| , / . | Création de personnage : apparence précédente/suivante, Ctrl+l'une des deux = catégorie (voir Création de personnage plus bas).Character creation: previous/next appearance, Ctrl+either = category (see Character creation below). |
| Z | Annonce les points de compétence disponibles (voir Relations & compétences plus bas).Announces available skill points (see Relationships & skills below). |
| ; | Annonce les festivals de la saison actuelle (voir Horloge, calendrier & météo plus bas).Announces the current season's festivals (see Clock, calendar & weather below). |
| F9 | Active/désactive l'annonce automatique de la case devant vous en marchant.Toggles automatic announcement of the tile ahead while walking. |
| F11 | Test sonore de diagnostic (joue un son Windows, indépendant de la synthèse vocale).Diagnostic sound test (plays a Windows sound, independent of speech synthesis). |
| F8 | Active/désactive le bip continu de visée pendant la pêche (voir Pêche plus bas).Toggles the continuous aiming beep while fishing (see Fishing below). |
Déplacement & sourisMovement & mouse
| ToucheKey | ActionAction |
|---|---|
| Pavé 4 / Pavé 6Numpad 4 / 6 | Tourne le personnage à gauche/à droite sans se déplacer, avec annonce immédiate de la nouvelle case en face.Turns the character left/right without moving, with an immediate announcement of the new tile ahead. |
| J | Active/désactive la souris directionnelle : le curseur Windows pointe alors en permanence vers la case devant vous (beaucoup d'actions du jeu — arroser, labourer, récolter, miner, attaquer — se déclenchent par clic souris, pas par touche d'interaction).Toggles the directional mouse: the Windows cursor then constantly points at the tile ahead of you (many game actions — watering, tilling, harvesting, mining, attacking — trigger on mouse click, not an interact key). |
| Pavé 5Numpad 5 | Simule un clic gauche à la position actuelle de la souris.Simulates a left click at the mouse's current position. |
| Ctrl + : (ou Ctrl + / en QWERTY)(or Ctrl + / on QWERTY) | Simule un clic droit à la position actuelle de la souris.Simulates a right click at the mouse's current position. |
| Pavé décimalNumpad period | Active/désactive le curseur de case libre : les flèches le déplacent alors case par case n'importe où sur la carte, indépendamment de votre personnage. Voir Curseur de case libre.Toggles the free tile cursor: the arrow keys then move it tile by tile anywhere on the map, independently of your character. See Free tile cursor. |
| Pavé multiplierNumpad multiply | Ramène le curseur libre sur la case où vous vous tenez.Brings the free cursor back to the tile you're standing on. |
| Pavé plusNumpad plus | Redit l'état du placement en cours : objet en main, emprise au sol et validité de l'emplacement visé. Voir Poser des meubles et des bâtiments.Re-reads the current placement state: item in hand, footprint and validity of the targeted spot. See Placing furniture and buildings. |
| Pavé moinsNumpad minus | Bilan des animaux présents : combien sont à nourrir, à caresser, combien ont laissé un produit au sol. Voir Animaux de la ferme.Status of the animals present: how many need feeding, how many need petting, how many left a product on the ground. See Farm animals. |
| Pavé diviserNumpad divide | Devant un paquet ouvert (musée, autel, aquarium) : dit ce qu'il manque encore, objet par objet, avec les quantités déjà déposées. Voir Les paquets à compléter.With a bundle open (museum, altar, aquarium): says what is still missing, item by item, with the amounts already given. See Bundles to complete. |
| Pavé EntréeNumpad Enter | Près d'un panneau d'affichage : annonce les tâches du jour, si elles sont déjà acceptées, et leur récompense — sans avoir à ouvrir le panneau. Voir Les panneaux d'affichage.Near a bulletin board: announces the day's tasks, whether they're already accepted, and their reward — without opening the board. See Bulletin boards. |
| Pavé 7Numpad 7 | Ouvre au clavier le choix de sort d'un emplacement. Chaque appui passe à l'emplacement suivant, puis referme. Voir Les sorts.Opens a spell slot's picker from the keyboard. Each press moves to the next slot, then closes. See Spells. |
| Pavé 9Numpad 9 | Annonce les quatre sorts équipés, emplacement par emplacement, et signale celui en cours d'incantation. Voir Les sorts.Announces the four equipped spells, slot by slot, and flags the one being cast. See Spells. |
| Flèches (curseur libre actif)Arrows (free cursor active) | Déplacent le curseur d'une case. Un bip court signale le bord de la carte chargée. Les menus gardent la priorité sur les flèches.Move the cursor by one tile. A short beep marks the edge of the loaded map. Menus keep priority over the arrow keys. |
| C | Ouvre le tchat/la console de debug du jeu. Remplace Entrée, sa touche par défaut, qui entrait en conflit avec la validation de menu du mod.Opens the game's chat/debug console. Replaces Enter, its default key, which conflicted with the mod's menu confirmation. |
Navigation dans les menusMenu navigation
| ToucheKey | ActionAction |
|---|---|
| Flèches directionnellesArrow keys | Se déplacer selon la disposition visuelle réelle : gauche/droite restent sur la ligne (bip court en bout), haut/bas changent de ligne. Fonctionne même sur les écrans que le jeu ne rend jamais accessibles au clavier nativement.Move according to the real visual layout: left/right stay on the row (short beep at its end), up/down change rows. Works even on screens the game never makes keyboard-accessible natively. |
| EntréeEnter | Active l'élément de menu sélectionné (équivalent clic gauche). Exige d'avoir déjà sélectionné un élément aux flèches — une pression à froid ne clique jamais rien au hasard.Activates the selected menu item (equivalent to a left click). Requires an item already selected with arrow keys — a cold press never clicks anything at random. |
| Ctrl + Entrée | Action secondaire sur l'élément sélectionné (équivalent clic droit).Secondary action on the selected item (equivalent to a right click). |
| Ctrl + Flèche gauche / droiteCtrl + Left / Right arrow | Diminue/augmente un curseur (slider) sélectionné, par exemple les couleurs à la création de personnage.Decreases/increases a selected slider, for example the colors in character creation. |
| Ctrl + flècheCtrl + arrow | Saute à la zone voisine (onglets ↔ équipement ↔ sac à dos ↔ barre d'action).Jumps to the adjacent zone (tabs ↔ equipment ↔ backpack ↔ action bar). |
| 1 à 0 (sur un emplacement)(on a slot) | Envoie/récupère l'objet vers/depuis le slot de barre d'action correspondant.Sends/retrieves the item to/from the matching action bar slot. |
| ' | Trie et regroupe le sac à dos, sans toucher à la barre d'action ni à l'équipement. Raccourcit beaucoup la navigation, les emplacements occupés devenant contigus.Sorts and compacts the backpack, leaving the action bar and equipment alone. Greatly shortens navigation, since occupied slots become contiguous. |
| \ | Annonce tout ce que contient le sac, regroupé par objet et trié du plus abondant au moins abondant, plus le nombre d'emplacements libres.Announces everything in the backpack, grouped by item and sorted most to least plentiful, plus how many slots are free. |
| = | Range dans les coffres proches tout ce dont ils contiennent déjà un exemplaire, et annonce combien de coffres ont été remplis.Stores into nearby chests whatever they already hold a copy of, and reports how many chests were filled. |
| Pavé 0Numpad 0 | Relit la description complète du dernier objet annoncé, même après la fermeture de l'infobulle (utile avec le mode bref).Re-reads the last announced item's full description, even after the tooltip closed (useful with brief mode). |
Scanner (repérage d'objets/PNJ)Scanner (object/NPC tracker)
| ToucheKey | ActionAction |
|---|---|
| Page haut / basPage Up / Down | Élément précédent/suivant dans la catégorie actuelle du scanner.Previous/next item in the scanner's current category. |
| Ctrl + Page haut / basCtrl + Page Up / Down | Catégorie précédente/suivante (les catégories vides sont sautées automatiquement).Previous/next category (empty categories are skipped automatically). |
| OrigineHome | Annonce l'élément actuellement sélectionné (ou le plus proche si aucun ne l'est).Announces the currently selected item (or the nearest one if none is selected). |
| Ctrl + Origine | Lance un cheminement automatique vers l'élément sélectionné.Starts automatic pathing to the selected item. |
| Échap | Annule un cheminement automatique en cours (sans effet sinon).Cancels an ongoing automatic path (no effect otherwise). |
| Non assignéeUnbound | Annonce le nombre d'éléments trouvés dans la catégorie actuelle. Non assignée par défaut : ce nombre est déjà annoncé à chaque changement de catégorie.Announces how many items were found in the current category. Unbound by default: that number is already announced whenever you change category. |
2. Lecteur d'écran & synthèse vocale2. Screen reader & speech
Le mod parle directement à NVDA s'il est lancé (pilotage natif, pas de dépendance à un composant .NET manquant sous Unity/Mono). S'il n'est pas détecté, ou si un appel échoue ponctuellement, tout bascule automatiquement sur une voix SAPI via Tolk — vous n'avez rien à configurer. The mod speaks directly to NVDA if it's running (native control, no dependency on a .NET component missing under Unity/Mono). If it isn't detected, or a call occasionally fails, everything falls back automatically to a SAPI voice via Tolk — nothing to configure on your end.
Tout texte lu passe par un nettoyeur qui retire les balises de mise en forme du jeu (couleurs, tailles) et convertit les icônes de monnaie en mot (pièces d'or, tickets, orbes) plutôt que de les faire disparaître silencieusement. All spoken text passes through a cleaner that strips the game's rich-text formatting (colors, sizes) and converts currency icons into words (gold coins, tickets, orbs) instead of silently dropping them.
3. Déplacement & case devant vous3. Movement & tile ahead
La case juste devant votre personnage, dans la direction où il regarde, est décrite à chaque pas, systématiquement — même si son contenu est identique au pas précédent (par exemple plusieurs cases d'herbe à la suite). Ordre de priorité de la description : The tile right in front of your character, in the direction they're facing, is described on every step, systematically — even if its content is identical to the previous step (e.g. several grass tiles in a row). Description priority order:
- Objet interactif ciblé par le jeu (culture, PNJ, coffre...) — réutilise directement le système de ciblage du jeu, donc toujours cohérent avec ce que la touche d'interaction activerait. Pour les cultures spécifiquement, une description maison (arrosée ou non, jours avant maturité) remplace le texte du jeu, trop laconique.Interactive object targeted by the game (crop, NPC, chest...) — reuses the game's own targeting system directly, so it always matches what the interact key would trigger. For crops specifically, a custom description (watered or not, days until maturity) replaces the game's own text, which is too terse.
- Terre cultivable/labourée/arrosée sans rien planté.Farmable/tilled/watered soil with nothing planted.
- Obstacle physique (mur, rocher non ciblable...) détecté même sans élément interactif dessus.A physical obstacle (wall, untargetable rock...) detected even without an interactive element on it.
- Type de terrain (herbe, sable, pierre, eau...), lu directement dans les données de tuiles du jeu. La présence d'eau est fiable à 100% (donnée de jeu directe) ; le reste dépend du nom brut des tuiles et peut être imparfait.Terrain type (grass, sand, stone, water...), read directly from the game's tile data. Water presence is 100% reliable (direct game data); the rest depends on raw tile names and can be imperfect.
Anti-rebond : rester immobile près d'une frontière de case ne redéclenche pas l'annonce en boucle — un petit délai (0,35 s) absorbe le tremblement physique naturel du jeu sans jamais rater un vrai pas. Debounce: standing still near a tile boundary won't re-trigger the announcement in a loop — a short delay (0.35s) absorbs the game's natural physics jitter without ever missing a real step.
Curseur de case libreFree tile cursor
Jusqu'ici le mod ne savait lire qu'une seule case : celle devant votre personnage. Explorer une carte inconnue devenait très laborieux — aucun moyen de savoir ce qu'il y a trois cases plus loin sans s'y rendre physiquement. Le curseur de case libre est un point de lecture que vous déplacez aux flèches n'importe où sur la carte, indépendamment de votre personnage. C'est l'équivalent du Tile Viewer de stardew-access. Until now the mod could only read one tile: the one in front of your character. Exploring an unknown map was laborious — no way to know what's three tiles away without physically walking there. The free tile cursor is a reading point you move with the arrow keys anywhere on the map, independently of your character. It's the equivalent of stardew-access's Tile Viewer.
- Pavé décimal active ou désactive le curseur. À l'activation il se place sur la case où vous vous tenez, ce qui donne toujours un repère connu au départ.Numpad period toggles the cursor. On activation it starts on the tile you're standing on, which always gives you a known reference point.
- Les flèches le déplacent case par case. Chaque déplacement annonce le contenu de la case, sa direction et sa distance par rapport à vous.The arrow keys move it tile by tile. Each move announces the tile's contents, its direction and its distance from you.
- Origine redécrit la case visée, Ctrl+Origine vous y conduit automatiquement, et la touche de clic gauche (Pavé 5) y agit à distance — le curseur souris est d'abord pointé sur cette case.Home re-describes the targeted tile, Ctrl+Home walks you there automatically, and the left click key (Numpad 5) acts on it at range — the mouse cursor is aimed at that tile first.
- Pavé multiplier ramène le curseur sur vous sans quitter le mode.Numpad multiply brings the cursor back to you without leaving the mode.
- Un bip court signale que vous atteignez le bord de la carte chargée.A short beep signals that you've reached the edge of the loaded map.
Les flèches servent aussi à naviguer dans les menus : quand un menu est ouvert, il garde la priorité et le curseur libre ne les capte pas. Les flèches ne sont liées à aucune action de Sun Haven lui-même (le déplacement se fait en ZQSD), il n'y a donc pas de conflit avec le jeu. The arrow keys also drive menu navigation: when a menu is open it keeps priority and the free cursor doesn't claim them. Arrows aren't bound to any Sun Haven action either (movement is WASD), so there's no clash with the game.
Note technique. Sun Haven a un monde isométrique : une case ne mesure pas la même chose horizontalement et verticalement. La conversion exacte entre coordonnées de case et position dans le monde est tirée de la définition du jeu lui-même, et vit désormais à un seul endroit du mod — auparavant elle était recopiée à cinq endroits avec deux conventions contradictoires. Technical note. Sun Haven has an isometric world: a tile doesn't measure the same horizontally and vertically. The exact conversion between tile coordinates and world position is taken from the game's own definition, and now lives in a single place in the mod — it was previously copy-pasted across five sites using two contradictory conventions.
Poser des meubles et des bâtimentsPlacing furniture and buildings
Poser un objet était l'une des dernières actions entièrement fermées : un aperçu suit la souris et change de teinte — blanc si l'emplacement convient, rouge sinon. Sans la vue, on ne sait ni où vise l'aperçu, ni pourquoi le clic ne fait rien. Placing an object was one of the last entirely closed actions: a preview follows the mouse and changes tint — white if the spot works, red otherwise. Without sight you know neither where the preview points nor why the click does nothing.
- Prendre un objet posable en main annonce le mode placement, le nom de l'objet et, s'il fait plus d'une case, son emprise au sol (« emprise 3 sur 2 cases »).Taking a placeable item in hand announces placement mode, the item's name and, if it covers more than one tile, its footprint ("footprint 3 by 2 tiles").
- Le curseur libre sert à viser : activez-le et les flèches déplacent l'emplacement visé, exactement comme elles déplacent le curseur de lecture. Vous entendez donc à la fois ce qu'il y a sur la case et si l'objet peut y aller.The free cursor does the aiming: turn it on and the arrow keys move the targeted spot, exactly as they move the reading cursor. So you hear both what's on the tile and whether the object can go there.
- Le mod annonce « emplacement valide » ou « emplacement invalide » uniquement quand cela bascule. Balayer six cases invalides s'entend une fois, pas six — c'est d'ailleurs ce que perçoit un joueur voyant, dont l'œil n'est alerté que par le changement de teinte.The mod announces "valid spot" or "invalid spot" only when it flips. Sweeping six invalid tiles is heard once, not six times — which is also what a sighted player perceives, since the eye is only drawn by the change of tint.
- Pavé plus redit à tout moment l'état complet : objet, emprise et validité de l'emplacement visé.Numpad plus re-reads the full state at any time: object, footprint and validity of the targeted spot.
- La touche de clic gauche (Pavé 5) pose l'objet à l'endroit visé.The left click key (Numpad 5) places the object at the targeted spot.
Note technique. Le mod ne reprogramme pas le placement : le jeu recalcule déjà à chaque image la case visée et sa validité, et le mod se contente de les lire. Ce qui est annoncé est donc exactement ce que le jeu va faire, sans règle dupliquée qui pourrait diverger — et toutes les variantes (maisons, granges, arbres, papier peint) sont couvertes sans code particulier. Technical note. The mod doesn't reimplement placement: the game already recomputes the target tile and its validity every frame, and the mod merely reads them. What is announced is therefore exactly what the game will do, with no duplicated rule that could drift — and every variant (houses, barns, trees, wallpaper) is covered with no special-case code.
Les panneaux d'affichageBulletin boards
Chaque ville a son panneau, qui propose deux tâches renouvelées quotidiennement — un seul travail aux baraquements. C'est une source régulière d'argent, d'expérience et de relations. Visuellement, une icône au-dessus du panneau dit d'un coup d'œil s'il reste quelque chose à prendre. Sans la vue, il fallait s'en approcher, l'ouvrir, déplier chaque post-it, et espérer que quelque chose soit lu. Every town has its board, offering two tasks refreshed daily — a single commission at the barracks. It's a steady source of money, experience and relationships. Visually, an icon above the board tells you at a glance whether anything is left to take. Without sight you had to walk up, open it, unfold each note, and hope something got read out.
- Pavé Entrée, près d'un panneau, annonce les tâches du jour : leur nom, leur énoncé, et ce qu'elles rapportent.Numpad Enter, near a board, announces the day's tasks: their name, their brief, and what they pay.
- Chaque tâche dit si elle est « à prendre » ou « déjà acceptée » — la question qu'on se pose vraiment en repassant devant le panneau le lendemain.Each task says whether it's "to take" or "already accepted" — the question you actually have when passing the board again the next day.
- Sans avoir à ouvrir le panneau. C'est justement avant de l'ouvrir qu'on veut savoir s'il vaut le détour.Without opening the board. Before opening it is exactly when you want to know whether it's worth the trip.
- Le panneau est nommé par sa ville, en clair : « la Grande Cité », « les baraquements » — et non par l'identifiant interne anglais collé, incompréhensible à l'oral.The board is named by its town in plain words rather than by the run-together internal identifier, which makes no sense read aloud.
Note technique. Les tâches sont lues dans le gestionnaire du jeu et non sur les post-its affichés : ceux-ci ne sont remplis qu'à l'ouverture du panneau, alors que tout l'intérêt est de savoir sans ouvrir. Seules les récompenses garanties sont annoncées — celles au choix se décident au rendu, pas au moment de partir. Technical note. Tasks are read from the game's manager rather than from the displayed notes: those are only filled in when the board is opened, and the whole point is knowing without opening. Only guaranteed rewards are announced — the optional ones are picked at hand-in, not when setting off.
Les paquets à compléterBundles to complete
Musée, autel de Dynus, aquarium : les collections qu'on remplit sur toute une partie, en y déposant des objets précis en quantité précise. Visuellement, un paquet est une grille d'emplacements montrant chacun l'objet attendu en grisé et un compteur. Sans la vue, impossible de savoir ce qu'un paquet réclamait encore : il fallait déposer au hasard et voir ce que le jeu acceptait. Museum, Dynus altar, aquarium: the collections you fill over a whole playthrough by depositing specific items in specific amounts. Visually, a bundle is a grid of slots each showing the expected item greyed out, with a counter. Without sight there was no way to know what a bundle still wanted: you deposited at random and watched what the game accepted.
- Pavé diviser répond à la seule question qui se pose devant un paquet : qu'est-ce que je dois encore rapporter ? Le nombre d'emplacements remplis, puis chaque objet manquant avec ce qui a déjà été déposé — « Blé, 2 sur 5 ; Truite dorée, 0 sur 1 ».Numpad divide answers the only question a bundle raises: what do I still need to bring? The number of filled slots, then each missing item with what has already been given — "Wheat, 2 of 5; Golden trout, 0 of 1".
- En parcourant les emplacements aux flèches, chacun annonce l'objet qu'il attend et où en est le dépôt — même vide, puisque c'est justement vide qu'il porte l'information utile.Browsing the slots with the arrows, each announces the item it wants and how far along the deposit is — even when empty, since empty is precisely when it carries the useful information.
- Un paquet entièrement rempli le dit, plutôt que d'annoncer une liste vide.A fully filled bundle says so, rather than announcing an empty list.
- Un coffre ordinaire n'est pas pris pour un paquet : la distinction se fait sur la nature des emplacements (n'accepter qu'un objet imposé), pas sur le type de meuble ouvert — ce qui couvre du même coup toutes les variantes de paquets sans avoir à les énumérer.An ordinary chest is not mistaken for a bundle: the distinction rests on the nature of the slots (accepting only one imposed item), not on the type of furniture opened — which covers every bundle variant at once without listing them.
Note technique. Aucune règle du jeu n'est redéfinie : le mod lit l'objet et la quantité que chaque emplacement réclame, ainsi que ce qui s'y trouve déjà. Si le nom de l'objet reste introuvable, son numéro est annoncé plutôt qu'un mot vague — un numéro se recherche, « objet » ne mène nulle part. Technical note. No game rule is reimplemented: the mod reads the item and amount each slot demands, along with what is already in it. If the item's name can't be found, its number is announced rather than a vague word — a number can be looked up, "item" leads nowhere.
Animaux de la fermeFarm animals
S'occuper des bêtes est une routine quotidienne — nourrir, caresser, ramasser ce qu'elles produisent — et tout y est signalé visuellement : une icône au-dessus de la tête de l'animal, un objet posé au sol. Sans la vue, il fallait aller au contact de chaque animal l'un après l'autre pour découvrir son état, dans un enclos où l'on ne sait même pas combien de bêtes on possède. Looking after the animals is a daily routine — feeding, petting, collecting what they produce — and all of it is signalled visually: an icon above the animal's head, an object dropped on the ground. Without sight you had to walk up to each animal in turn to discover its state, in a pen where you don't even know how many animals you own.
- Pavé moins donne le bilan de tout le troupeau présent : combien d'animaux, combien restent à nourrir, combien à caresser, et combien ont laissé un produit au sol. En une phrase, la réponse à « me reste-t-il quelque chose à faire avant de me coucher ? » — ce qu'un joueur voyant règle d'un coup d'œil sur l'enclos.Numpad minus gives the status of the whole herd present: how many animals, how many still need feeding, how many need petting, and how many have left a product on the ground. In one sentence, the answer to "is there anything left to do before bed?" — what a sighted player settles with a glance at the pen.
- Pour un petit troupeau, les noms des animaux concernés sont cités. Au-delà de trois, seul le compte est donné : réciter quinze bêtes serait plus long que d'aller les voir.For a small herd, the names of the animals concerned are given. Beyond three, only the count: reciting fifteen animals would take longer than walking over to them.
- Chaque animal repéré au scanner annonce aussi son propre état, plutôt que son seul nom.Each animal found by the scanner also announces its own state, rather than just its name.
- Un animal dont l'état ne peut pas être lu est compté à part et signalé comme tel, jamais rangé parmi ceux qui n'ont besoin de rien : un compte faussement rassurant serait pire que pas de compte du tout.An animal whose state can't be read is counted separately and flagged as such, never lumped in with those that need nothing: a falsely reassuring count would be worse than no count at all.
4. Menus, inventaire, dialogues4. Menus, inventory, dialogue
- Beaucoup d'écrans du jeu (menu principal, options...) ne passent jamais par la sélection clavier native d'Unity : le mod construit sa propre liste des éléments interactifs visibles à l'écran, parcourable aux flèches.Many game screens (main menu, options...) never use Unity's native keyboard selection: the mod builds its own list of interactive elements visible on screen, browsable with arrow keys.
- Les infobulles natives du jeu sont lues dès qu'elles s'activent (nom réel des objets d'inventaire/équipement, pas juste « Item »).The game's native tooltips are read as soon as they activate (real names of inventory/equipment items, not just "Item").
- La quantité d'un objet empilé est annoncée avant son nom, en une seule phrase ("7, Blé") plutôt que deux annonces séparées qui se couperaient l'une l'autre.A stacked item's quantity is announced before its name, in a single sentence ("7, Wheat") rather than two separate announcements cutting each other off.
- Les emplacements vides disent « Emplacement vide » ; les emplacements d'armure vides précisent le type attendu (« Emplacement d'armure, bottes, vide »).Empty slots say "Empty slot"; empty armor slots specify the expected type ("Armor slot, boots, empty").
- L'aide (F1) est un menu, pas une tirade : elle s'ouvre sur une liste de rubriques groupées par tâche (« savoir où vous êtes », « explorer sans bouger », « ranger son sac »…), qu'on parcourt aux flèches une par une. Les touches y apparaissent avec leur valeur réellement configurée, pas le défaut. Origine et Fin sautent au début et à la fin, un bip marque les extrémités.Help (F1) is a menu, not a monologue: it opens on a list of topics grouped by task ("knowing where you are", "exploring without moving", "tidying your bag"…), browsed one at a time with the arrows. Keys appear with their actually configured value, not the default. Home and End jump to the start and end, and a beep marks the limits.
- Les 7 onglets du menu principal (Tab) sont nommés par leur position réelle à l'écran, pas par un numéro interne peu fiable : Sac à dos, Arbre de compétences, Relations, Quêtes, Carte, Statistiques, Paramètres.The main menu's 7 tabs (Tab key) are named by their real on-screen position, not an unreliable internal number: Backpack, Skill Tree, Relationships, Quests, Map, Statistics, Settings.
- Chaque onglet s'ouvre en liste, tout seul, dès qu'on arrive dessus : compétences, relations, quêtes, lieux, statistiques, réglages. Le sac à dos fait exception et garde sa grille, qui lui convient. Le geste à retenir tient en cinq touches, les mêmes partout : Tab ouvre, gauche/droite change d'onglet, haut/bas parcourt, Entrée valide, Échap referme. Les listes existaient déjà, mais derrière des touches séparées qu'il fallait connaître — et une fonctionnalité qu'il faut deviner n'existe pas vraiment. Ces touches restent utilisables pour consulter les mêmes listes sans ouvrir le menu.Every tab opens as a list, by itself, as soon as you land on it: skills, relationships, quests, locations, statistics, settings. The backpack is the exception and keeps its grid, which suits it. What you have to remember is five keys, the same everywhere: Tab opens, left/right changes tab, up/down browses, Enter confirms, Escape closes. The lists already existed, but behind separate keys you had to know about — and a feature you have to guess at doesn't really exist. Those keys still work, to consult the same lists without opening the menu.
- L'onglet Statistiques est le seul sans données derrière lui : le panneau n'est que du texte mis en page, un intitulé à gauche et sa valeur à droite. Les lignes sont donc reconstituées en groupant les textes par hauteur, ce qui rend à chaque intitulé sa valeur en une seule entrée.The Statistics tab is the only one with no data behind it: the panel is nothing but laid-out text, a label on the left and its value on the right. Rows are therefore rebuilt by grouping texts by height, giving each label its value in a single entry.
- Le choix du personnage s'ouvre en liste sans qu'aucune touche soit à connaître : c'est le premier écran après le menu principal, et devoir s'y souvenir d'un raccourci pour choisir sa partie, c'est buter dès la première minute. Une ligne par partie — nom et date — puis Charger, Détails complets, et Supprimer en dernier, chaque action nommée avec la partie pour qu'on ne puisse pas effacer la mauvaise. La date est remise en français : le jeu l'affiche en anglais même en interface française.Character selection opens as a list with no key to know: it's the first screen after the main menu, and having to remember a shortcut there just to pick your game means stumbling in the first minute. One line per save — name and date — then Load, Full details, and Delete last, each action named with the save so you can't erase the wrong one. The date is put back into French: the game displays it in English even in a French interface.
- Les nœuds de l'arbre de compétences annoncent leur nom, leur rang (« 2 sur 3 », ou « prise » / « non prise » pour un nœud simple), s'ils sont verrouillés et à quelle condition, puis leur effet. Sans cela un nœud n'est qu'une icône sans texte : on parcourait l'arbre sans jamais savoir sur quoi on était.Skill tree nodes announce their name, their rank ("2 of 3", or "taken" / "not taken" for a single-rank node), whether they're locked and under what condition, then their effect. Without that a node is just an icon with no text: you could move through the tree without ever knowing what you were on.
- Les bulles de dialogue sont lues dès le début de la ligne, pas après la fin de l'animation machine à écrire.Dialogue bubbles are read from the start of the line, not after the typewriter animation finishes.
- Quand le jeu n'affiche aucun texte visible (icônes seules), un dictionnaire de plusieurs centaines de termes traduit le nom technique de l'élément en français plutôt que de le lire tel quel en anglais.When the game shows no visible text (icon-only buttons), a dictionary of several hundred terms translates the element's technical name into French rather than reading it as-is in English.
- Navigation directionnelle réelle : les flèches suivent la disposition visuelle (ligne/colonne), pas une liste à plat. Gauche/droite restent sur la ligne et butent en bout avec un bip court ; haut/bas changent de ligne. Chaque panneau est une zone aux frontières nettes — onglets, équipement, sac à dos, barre d'action — donc on ne déborde jamais accidentellement d'une zone à l'autre.Real directional navigation: arrows follow the visual layout (row/column), not a flat list. Left/right stay on the row and stop at its end with a short beep; up/down change rows. Each panel is a zone with hard edges — tabs, equipment, backpack, action bar — so you never spill from one zone into another by accident.
- Ctrl+flèche saute volontairement d'une zone à l'autre, selon la disposition réelle : onglets en haut, équipement à gauche, sac à droite, barre d'action en bas. Les touches 1 à 0 sur un objet l'envoient ou le récupèrent directement du slot de barre d'action correspondant.Ctrl+arrow deliberately jumps between zones, following the real layout: tabs on top, equipment on the left, backpack on the right, action bar at the bottom. The 1 to 0 keys on an item send it to or retrieve it from the matching action bar slot.
- Écrans en colonnes (création de personnage : catégories à gauche, personnalisation au centre, informations à droite) : Ctrl+gauche/droite saute d'une colonne à l'autre et annonce laquelle, en gardant la même hauteur. Le découpage est déduit des grands écarts horizontaux entre éléments — ce que fait l'œil — sans supposer la hiérarchie de l'écran. Les flèches seules parcourent l'écran comme avant : l'ajout ne change rien à ce qui marchait.Column screens (character creation: categories left, customisation centre, information right): Ctrl+left/right jumps between columns and says which one, keeping the same height. The split is derived from large horizontal gaps between elements — what the eye does — without assuming the screen's hierarchy. Plain arrows browse the screen as before: the addition changes nothing that already worked.
- La disposition de l'équipement est connue exactement plutôt que devinée : 2 colonnes (porté à gauche, apparence à droite) pour chapeau, torse, gants, jambes et dos, puis souvenir, amulette et anneau.The equipment layout is known exactly rather than guessed: 2 columns (worn on the left, cosmetic on the right) for hat, chest, gloves, pants and back, then keepsake, amulet and ring.
- Un raccourci peut n'être assigné à aucune touche. Dans le menu des raccourcis, au moment de saisir la nouvelle touche, Retour arrière ou Suppression retire l'assignation : l'action reste dans la liste, disponible si vous en voulez plus tard, mais n'occupe plus aucune touche du clavier. C'est aussi ainsi que sont livrées les actions marginales — présentes pour qui en veut, sans encombrer le clavier de tout le monde.A shortcut can be bound to no key at all. In the shortcuts menu, while entering the new key, Backspace or Delete clears the binding: the action stays in the list, available if you want it later, but no longer occupies a key. This is also how marginal actions ship — there for whoever wants them, without cluttering everyone's keyboard.
- Le bip de bord et la reprise en main des flèches sont désactivables séparément dans le fichier de config, section
Navigation.The edge beep and the arrow-key takeover can each be turned off separately in the config file,Navigationsection.
Saisie de texteText input
Taper du texte se faisait auparavant dans le silence total, ce qui bloquait purement et simplement la création de personnage : aucun moyen de savoir ce qu'on avait tapé comme nom, ni même si la frappe était prise en compte. Typing used to happen in complete silence, which flatly blocked character creation: no way to know what you had typed as a name, or even whether keystrokes were registering.
- À la prise de focus, le rôle du champ et son contenu actuel sont annoncés.On focus, the field's purpose and current contents are announced.
- À la frappe, seul le caractère ajouté est annoncé — relire toute la chaîne à chaque lettre rendrait la saisie d'un nom insupportable. L'effacement annonce le caractère supprimé.While typing, only the added character is announced — re-reading the whole string per keystroke would make typing a name unbearable. Deletion announces the removed character.
- Toutes les touches du mod sont suspendues pendant la frappe. Sans ça, taper « p » dans votre nom annoncerait votre position, « o » l'horloge, « c » ouvrirait le tchat.All the mod's keys stand down while you type. Without that, typing "p" into your name would announce your position, "o" the clock, "c" would open chat.
- Les champs masqués (mot de passe) ne sont jamais prononcés à voix haute.Masked fields (passwords) are never spoken aloud.
Couvre le nom du personnage, le champ de tri de l'artisanat et le tchat, sans code spécifique à chacun. Covers the character name, the crafting sort field and chat, with no per-field code.
État d'avancement et limites connuesProgress and known limitations
Ce mod est développé par une IA qui ne peut ni voir ni entendre le jeu. Le code est écrit en décompilant Sun Haven et en raisonnant sur son fonctionnement réel ; la validation finale vient toujours d'un test humain. Cette section dit donc explicitement ce qui est confirmé et ce qui ne l'est pas. This mod is developed by an AI that can neither see nor hear the game. The code is written by decompiling Sun Haven and reasoning about how it actually works; final validation always comes from human testing. This section therefore states explicitly what is confirmed and what is not.
Confirmé en jeuConfirmed in-game
- Boucle du mod stable sur toute une session, synthèse vocale, curseur de case, dialogues, menus et infobulles, agriculture, souris directionnelle, scanner, navigation clavier des menus.Mod loop stable across a whole session, speech, tile cursor, dialogue, menus and tooltips, farming, directional mouse, scanner, keyboard menu navigation.
Développé mais pas encore confirméBuilt but not yet confirmed
- Curseur de case libre, saisie de texte, navigation dans les coffres, confort d'inventaire (tri, résumé, rangement), quêtes, relations, compétences, carte du monde, festivals, création de personnage, minage, donjons, courrier.Free tile cursor, text input, chest navigation, inventory comfort (sort, summary, storing), quests, relationships, skills, world map, festivals, character creation, mining, dungeons, mail.
- Le bip de visée en pêche est la fonctionnalité la moins certaine : fréquences et tempo ont été choisis au jugé, sans jamais avoir été entendus en conditions réelles.The fishing aim beep is the least certain feature: frequencies and tempo were chosen by best guess, never having been heard under real conditions.
- Le type de terrain hors zone cultivable est déduit du nom brut des tuiles et peut nécessiter des ajustements de traduction. La présence d'eau, elle, est fiable : c'est une donnée de jeu directe.The terrain type outside farmable areas is inferred from raw tile names and may need translation tweaks. Water detection, by contrast, is reliable: it comes from direct game data.
Pas encore commencéNot started yet
- Placement de meubles et de bâtiments : Sun Haven est très axé décoration, et c'est aujourd'hui impossible à l'aveugle. C'est le prochain grand chantier.Furniture and building placement: Sun Haven is heavily decoration-focused, and this is currently impossible blind. It is the next major piece of work.
- Succès Steam : leurs noms et descriptions ne sont pas dans les données du jeu mais dans les métadonnées Steam — gros chantier pour un contenu surtout cosmétique.Steam achievements: their names and descriptions are not in the game's data but in Steam metadata — a large piece of work for largely cosmetic content.
- Déplacement dans la grille de l'arbre de compétences : les nœuds sont désormais lus correctement, mais le fait que les flèches se déplacent bien de nœud en nœud n'a jamais été vérifié en jeu. Une touche annonce en attendant les points disponibles par arbre.Moving through the skill tree grid: nodes now read correctly, but whether the arrow keys actually move from node to node has never been verified in game. In the meantime a key announces available points per tree.
- Traduction anglaise des annonces : le mod ne parle qu'en français pour l'instant.English translation of announcements: the mod only speaks French for now.
5. Scanner & cheminement automatique5. Scanner & auto-pathing
Le scanner repère tout ce qui se trouve à proximité (55 cases de rayon), par catégorie, trié du plus proche au plus loin. 7 catégories :The scanner finds everything nearby (55-tile radius), by category, sorted nearest-first. 7 categories:
- Personnages — tous les PNJ de la carte actuelle.Characters — every NPC on the current map.
- Plantations — toutes les cultures, avec leur état (arrosée, stade de croissance).Crops — every crop, with its state (watered, growth stage).
- Ressources — rochers, arbres à cueillette, objets ramassables, minerais.Resources — rocks, forageable trees, pickable objects, ore veins.
- Bâtiments et portails — entrées de bâtiments, avec leur VRAIE destination annoncée (maison, grange, boutique...) plutôt qu'un simple « Entrer ».Buildings and portals — building entrances, with their REAL destination announced (house, barn, shop...) instead of a bare "Enter".
- Animaux et compagnons — animaux de ferme et compagnons.Animals and companions — farm animals and companions.
- Ennemis — tous les monstres, hors PNJ.Enemies — every monster, excluding NPCs.
- Mobilier et rangement — coffres (dont coffres à butin), boîte aux lettres, lit.Furniture and storage — chests (including loot chests), mailbox, bed.
Cheminement automatique (Ctrl+Origine) : le personnage marche seul jusqu'à l'élément sélectionné. Le chemin est calculé à la demande par un algorithme A* maison (le pathfinder intégré au jeu s'est révélé être du code de démo jamais branché), qui tient compte des vrais obstacles physiques de la carte via la matrice de collision réelle d'Unity. Si la destination exacte est inatteignable, le personnage avance quand même jusqu'au point le plus proche réellement accessible plutôt que de ne rien faire. Automatic pathing (Ctrl+Home): the character walks on their own to the selected item. The path is computed on demand by a custom A* algorithm (the game's built-in pathfinder turned out to be unused demo code), accounting for the map's real physical obstacles via Unity's actual collision matrix. If the exact destination is unreachable, the character still walks as far as they can actually get instead of doing nothing.
6. Agriculture, boutiques, combat, courrier, quêtes, pêche, minage, donjons, horloge6. Farming, shops, combat, mail, quests, fishing, mining, dungeons, clock
-
🐴 MonturesMounts
- Le mod annonce « en selle » et « à pied » à chaque changement. Le sifflet servant à la fois à monter et à descendre, il est facile de se retrouver dans l'état inverse de celui voulu.The mod announces "mounted" and "on foot" at every change. Since the whistle both mounts and dismounts, it's easy to end up in the opposite state to the one intended.
- À cheval, on se déplace nettement plus vite mais les outils ne s'utilisent plus. Sans la vue, le seul indice était que les actions cessaient de fonctionner — indiscernable d'une panne.Mounted, you move considerably faster but tools stop working. Without sight, the only clue was that actions stopped responding — indistinguishable from a fault.
- Monter en intérieur est refusé par le jeu, qui le dit lui-même — ce message est lu comme toutes les notifications.Mounting indoors is refused by the game, which says so itself — that message is read like any other notification.
-
✨ Les sortsSpells
- Sun Haven donne quatre emplacements de sorts, qui n'apparaissent qu'en icônes dans une barre. Pavé 9 les annonce un par un — sans quoi on lance des touches en espérant se souvenir de ce qu'on y avait mis, et on découvre son erreur en plein combat.Sun Haven gives four spell slots, shown only as icons in a bar. Numpad 9 announces them one by one — otherwise you fire keys hoping to remember what you put there, and find out mid-fight that you didn't.
- Les emplacements vides le disent, et celui en cours d'incantation est signalé.Empty slots say so, and the one currently being cast is flagged.
- Un sort en recharge ou un mana insuffisant n'ont pas besoin du mod : le jeu envoie lui-même une notification dans les deux cas, et elle est lue automatiquement.A spell on cooldown or insufficient mana need nothing from the mod: the game sends a notification in both cases, and it is read automatically.
Changer un sort équipé était impossible sans souris : le menu s'ouvre au survol et n'expose rien de sélectionnable au clavier. Pavé 7 ouvre désormais celui d'un emplacement — chaque appui passe au suivant, puis referme. Les flèches parcourent les sorts, Entrée équipe. C'est le menu du jeu lui-même qui s'ouvre : la liste correspond donc exactement à ce que vous avez débloqué, sans que le mod recopie les conditions de déblocage de chaque sort, une douzaine de nœuds de compétence que le jeu peut changer à toute mise à jour. Changing an equipped spell was impossible without a mouse: the menu opens on hover and exposes nothing selectable. Numpad 7 now opens one slot's picker — each press moves to the next, then closes. Arrows browse the spells, Enter equips. It is the game's own menu that opens: the list matches exactly what you have unlocked, without the mod copying each spell's unlock conditions, a dozen skill nodes the game may change at any update.
-
⚡ Le manaMana
Ce que l'interface de Sun Haven appelle « mana » est la jauge que consomment vos outils : à zéro, la pioche, la houe et l'arrosoir cessent simplement d'agir. Un joueur voyant voit la barre se vider et rentre se coucher avant la panne. What Sun Haven's interface calls "mana" is the gauge your tools consume: at zero, the pickaxe, hoe and watering can simply stop working. A sighted player watches the bar drain and heads to bed before it runs out.
- Le mod prévient à la moitié, au quart, presque à sec, puis à l'épuisement. Sans ça, l'outil s'arrête d'un coup sans que rien n'explique pourquoi — un symptôme qui ressemble à un bug du mod plutôt qu'à une mécanique du jeu.The mod warns at half, at a quarter, nearly empty, then at exhaustion. Without it the tool stops dead with nothing to explain why — a symptom that looks like a mod bug rather than a game mechanic.
- Les seuils sont volontairement espacés : prévenir tous les dix pour cent transformerait une séance de minage en compte à rebours permanent. Ceux retenus correspondent aux moments où la décision change.The thresholds are deliberately far apart: warning every ten percent would turn a mining session into a permanent countdown. These match the points where the decision actually changes.
- Chaque alerte ne se dit qu'au franchissement, et ne coupe jamais l'annonce en cours. Une petite marge de remontée évite qu'un mana oscillant autour d'un seuil ne réannonce sans fin.Each warning is spoken only on crossing, and never interrupts what is being said. A small recovery margin stops energy hovering around a threshold from announcing endlessly.
- La touche H donne à tout moment le chiffre exact, avec la santé et la bourse. Le mod garde le mot « mana » du jeu plutôt que d'inventer « énergie » : c'est celui qu'emploient l'interface et le wiki, et en changer obligerait à traduire mentalement chaque aide extérieure.The H key gives the exact figure at any time, along with health and purse. The mod keeps the game's word "mana" rather than inventing "energy": it is what the interface and the wiki use, and changing it would mean mentally translating every outside guide.
-
🎒 Confort d'inventaireInventory comfort
- Mode bref (actif par défaut) : en parcourant l'inventaire, seuls la quantité et le nom de l'objet sont annoncés. Le jeu fusionne nom et description dans un seul champ de texte, ce qui rendait chaque case interminable à parcourir. La touche Pavé 0 relit la description complète à la demande, même une fois l'infobulle refermée. Sans effet en boutique et en artisanat, où le prix et les ingrédients sont indispensables.Brief mode (on by default): while browsing the inventory, only the item's quantity and name are announced. The game merges name and description into a single text field, which made every slot endless to browse. Numpad 0 reads the full description on demand, even after the tooltip has closed. No effect in shops and crafting, where price and ingredients are essential.
- Tri du sac (') : regroupe et compacte les objets, sans toucher à la barre d'action ni à l'équipement. Les emplacements occupés deviennent contigus, donc la navigation devient bien plus courte.Sort backpack ('): groups and compacts items, leaving the action bar and equipment alone. Occupied slots become contiguous, so navigation gets much shorter.
- Résumé du contenu (\) : annonce tout ce qu'on possède, regroupé par objet, plus le nombre d'emplacements libres. Combiné au tri, ça remplace avantageusement une recherche par saisie de texte, qui entrerait en conflit avec les touches du jeu.Contents summary (\): announces everything you own, grouped by item, plus how many slots are free. Combined with sorting, this beats a typed search, which would clash with the game's own keys.
- Rangement dans les coffres proches (=) : dépose dans les coffres à proximité tout ce dont ils contiennent déjà un exemplaire, puis annonce combien ont été remplis.Store into nearby chests (=): deposits into nearby chests whatever they already hold a copy of, then reports how many were filled.
Le filtrage par distance du rangement est refait à la main : la méthode équivalente du jeu (
TransferToNearbyChests) vise en réalité tous les coffres chargés malgré son nom, sans aucun filtre de distance — des objets partiraient dans un coffre d'un autre bâtiment sans qu'on puisse le constater.The storage distance filter is reimplemented by hand: the game's equivalent (TransferToNearbyChests) actually targets every loaded chest despite its name, with no distance filter at all — items would fly into a chest in another building with no way to notice. -
🌾 AgricultureFarming
Confirmation vocale non-intrusive à chaque action : labourer, arroser, planter, récolter, arrosoir vide/rempli, culture infusée de mana. Réagit directement aux évènements internes du jeu, pas à une détection approximative.Unobtrusive voice confirmation for every action: tilling, watering, planting, harvesting, empty/full watering can, mana-infused crop. Reacts directly to the game's internal events, not an approximate detection.
-
🛒 Boutiques & artisanatShops & crafting
Nom, prix (avec la bonne devise : pièces d'or, tickets ou orbes) et quantité restante en boutique. En artisanat : nom et quantité possédée/requise de chaque ingrédient ("3/5"), nom de l'objet fabriqué, temps de fabrication.Name, price (with the correct currency: gold coins, tickets, or orbs) and remaining quantity in shops. In crafting: name and owned/required amount for each ingredient ("3/5"), the crafted item's name, and craft time.
-
⚔️ CombatCombat
- Santé restante annoncée à chaque coup reçu, avec alerte progressive : santé basse (≤40%), critique (≤20%), à terre (0%).Remaining health announced on every hit taken, with escalating alerts: low health (≤40%), critical (≤20%), downed (0%).
- Entrée et sortie de combat annoncées.Entering and leaving combat announced.
- Défaite d'un ennemi annoncée par son nom.An enemy's defeat announced by name.
- Mort du personnage annoncée.Your character's death announced.
- Santé et mana consultables à tout moment (touche H).Health and mana can be checked at any time (H key).
Volontairement, aucune annonce à chaque coup porté par le joueur — ça spammerait énormément en combat rapide.Deliberately, no announcement for every hit the player lands — it would spam heavily in fast combat.
-
✉️ CourrierMail
Le contenu complet d'une lettre (message, signature, post-scriptum) est lu automatiquement dès l'ouverture de la boîte aux lettres, sur le même principe que les dialogues. Les objets éventuellement joints ne sont pour l'instant pas nommés automatiquement (juste leur icône).A letter's full content (message, sign-off, postscript) is read automatically as soon as the mailbox opens, on the same principle as dialogue. Any attached items aren't automatically named yet (just their icon).
-
📜 QuêtesQuests
- Le journal de quêtes du jeu (touche L par défaut) est un écran purement visuel : liste défilante sans Selectable navigable au clavier, illisible par les systèmes génériques du mod. Cette fonctionnalité lit directement les données de quête (
Wish.QuestList), sans en dépendre.The game's quest journal (L key by default) is a purely visual screen: a scrolling list with no keyboard-navigable Selectable, unreadable by the mod's generic systems. This feature reads the quest data (Wish.QuestList) directly instead. - Annonce automatique dès qu'une nouvelle quête est acceptée (nom).Automatic announcement as soon as a new quest is accepted (name).
- Annonce automatique quand une quête est rendue/terminée (nom).Automatic announcement when a quest is turned in/completed (name).
- Touche G pour lister toutes les quêtes actives : nom, description, nombre d'objectifs complétés, et où la rendre une fois prête.G key to list all active quests: name, description, number of completed objectives, and where to turn it in once ready.
⚠️ Fonctionnalité toute nouvelle, jamais entendue en conditions réelles. Le texte de progression détaillé par objectif (
questProgress) est inclus tel quel — son format exact n'a pas pu être confirmé sans décompiler chaque type d'objectif individuellement, peut être incomplet ou redondant avec la description.⚠️ Brand new feature, never heard under real conditions. The detailed per-objective progress text (questProgress) is included as-is — its exact format couldn't be confirmed without decompiling every objective type individually, may be incomplete or redundant with the description. - Le journal de quêtes du jeu (touche L par défaut) est un écran purement visuel : liste défilante sans Selectable navigable au clavier, illisible par les systèmes génériques du mod. Cette fonctionnalité lit directement les données de quête (
-
💞 Relations & compétencesRelationships & skills
- Touche V : cœurs (sur 10, 15 ou 20 selon simple/en couple/marié) pour chaque PNJ romançable avec qui une relation a été nouée, triés du plus investi au moins investi.V key: hearts (out of 10, 15, or 20 depending on single/dating/married) for each romanceable NPC a relationship has been started with, sorted most to least invested.
- Touche U : niveau et progression ("1234/5678" XP) pour chacune des 5 compétences (combat, agriculture, pêche, minage, exploration).U key: level and progress ("1234/5678" XP) for each of the 5 skills (combat, farming, fishing, mining, exploration).
- Touche Z : points de compétence disponibles à dépenser dans chaque arbre.Z key: skill points available to spend in each tree.
Wish.SkillNode(la grille de nœuds à débloquer, touche K par défaut du jeu) porte un composant qui s'ajoute lui-même unSelectablenu au démarrage — probablement déjà repérable par la navigation générique de menu du mod, contrairement à la carte du monde ou l'apparence en création de personnage. Jamais vérifié en jeu si ça navigue vraiment bien au clavier pour autant.Wish.SkillNode(the grid of nodes to unlock, K key by default) carries a component that adds itself a bareSelectableon startup — likely already reachable through the mod's generic menu navigation, unlike the world map or character creation appearance. Never verified in-game whether it actually navigates well by keyboard though. -
🧑🎨 Création de personnageCharacter creation
- Race sélectionnée, sa description et sa capacité spéciale annoncées automatiquement à chaque changement.Selected race, its description, and special ability announced automatically on every change.
- Apparence (corps, cheveux, yeux, visage, torse, jambes, tête, queue) :
Wish.ClothingImageButtona le même problème que la carte du monde (pas de vraiSelectable) — touches Virgule / Point (option précédente/suivante), Ctrl+l'une des deux (catégorie précédente/suivante), même convention que le scanner.Appearance (body, hair, eyes, face, chest, pants, head, tail):Wish.ClothingImageButtonhas the same problem as the world map (no realSelectable) — Comma / Period keys (previous/next option), Ctrl+either (previous/next category), same convention as the scanner.
Ailes non couvertes : aucune valeur
ClothingLayerne correspond de façon évidente au bouton "Ailes" du jeu, pas de mapping deviné au hasard plutôt que de risquer d'annoncer des informations fausses. Couleurs non couvertes non plus (gérées séparément, via un vraiSliderdéjà accessible par Ctrl+flèche gauche/droite).Wings not covered: noClothingLayervalue obviously matches the game's "Wings" button — not guessing a mapping rather than risking announcing wrong information. Colors not covered either (handled separately, through a realSlideralready accessible via Ctrl+Left/Right arrow). -
🗺️ Carte du mondeWorld map
- Chaque lieu de la carte répond bien à la sélection/au clic dans le jeu, mais son composant (
Wish.LocationName) n'hérite pas deSelectable— invisible au scan générique de menu du mod, donc injoignable au clavier sans ces touches dédiées.Each map location responds to selection/clicks in the game, but its component (Wish.LocationName) doesn't inherit fromSelectable— invisible to the mod's generic menu scan, so unreachable by keyboard without these dedicated keys. - Touches X / Y (carte ouverte uniquement) : parcourent un par un les lieux de la région actuellement affichée.X / Y keys (map open only): browse the currently displayed region's places one by one.
- Chaque lieu annonce son nom et sa description dès qu'il est ouvert — centre et surligne aussi la carte, exactement comme un clic.Each place announces its name and description as soon as it's opened — also centers and highlights the map, exactly like a click.
Le reste de l'écran (fermer, changer de région) fonctionne déjà via la navigation générique de menu du mod — ce sont de vrais boutons.The rest of the screen (close, switch region) already works through the mod's generic menu navigation — those are real buttons.
- Chaque lieu de la carte répond bien à la sélection/au clic dans le jeu, mais son composant (
-
🎣 PêcheFishing
- Annonce quand un poisson mord, et le résultat de chaque pression (touché / manqué / poisson échappé).Announces when a fish bites, and the result of each press (hit / miss / fish escaped).
- Bip continu de visée (touche F8 pour l'activer/désactiver) : sa hauteur varie avec la distance à la zone gagnante — grave = loin, aigu = proche, double bip distinctif dedans. Une jauge unique oscille toute seule dans ce mini-jeu (contrairement à Stardew Valley), donc un seul repère continu suffit à viser au son.Continuous aiming beep (F8 key to toggle): its pitch varies with distance to the winning zone — low = far, high = close, distinctive double-beep inside it. A single gauge oscillates on its own in this minigame (unlike Stardew Valley), so one continuous cue is enough to aim by ear.
⚠️ Le bip de visée est tout nouveau, jamais entendu en conditions réelles — fréquences et tempo choisis au jugé, à affiner avec des retours en jeu.⚠️ The aiming beep is brand new, never heard under real conditions — frequencies and tempo chosen by best guess, to be refined with real in-game feedback.
-
⛏️ Minage & coupe de boisMining & woodcutting
- Annonce quand l'outil en main n'est pas assez puissant pour un rocher ou un arbre donné — le jeu ne donne autrement aucun indice quand un coup ne fait rien.Announces when the tool in hand isn't strong enough for a given rock or tree — the game otherwise gives no clue at all when a hit does nothing.
- Confirmation vocale quand un rocher se brise ou qu'un arbre est abattu.Voice confirmation when a rock breaks or a tree is felled.
-
🏰 Donjon de combatCombat dungeon
- Une succession de salles à vider de tous leurs ennemis pour avancer d'étage en étage.A series of rooms to clear of all enemies to advance floor by floor.
- Annonce du numéro d'étage à l'entrée d'une salle, et confirmation quand elle est nettoyée (porte ouverte).Announces the floor number on entering a room, and confirms when it's cleared (door opens).
-
☀️ Horloge, calendrier & météoClock, calendar & weather
La touche O annonce l'heure, le jour de la semaine, le jour du mois, la saison, l'année et la météo actuelle (pluie, neige légère, canicule, brouillard, vent, ou ciel dégagé) — rien de tout ça n'était accessible autrement que visuellement.The O key announces the time, day of the week, day of the month, season, year, and current weather (rain, light snow, heatwave, fog, wind, or clear skies) — none of this was accessible any other way than visually.
La touche Point-virgule annonce les festivals de la saison actuelle (nom, jour, description). Le calendrier du jeu (
Wish.CalendarUI) est une grille de jours purement visuelle sans aucune interaction clavier — cette touche lit ses données directement plutôt que d'essayer de la parcourir.The Semicolon key announces the current season's festivals (name, day, description). The game's calendar (Wish.CalendarUI) is a purely visual grid of days with no keyboard interaction at all — this key reads its data directly instead of trying to browse it.
7. Jouer à plusieurs7. Playing together
Vos partenaires n'ont rien à installer. Le mod est entièrement local : il n'envoie ni ne reçoit rien sur le réseau, et n'ajoute aucune donnée à ce que le jeu échange. Sur les 26 correctifs qu'il applique au jeu, un seul annule un appel, et uniquement pour son propre objet, identifié par référence — tout le reste laisse le jeu faire exactement ce qu'il faisait. Quelqu'un qui joue avec vous sans le mod ne constate aucune différence. Your partners need install nothing. The mod is entirely local: it sends and receives nothing over the network, and adds nothing to what the game exchanges. Of the 26 patches it applies to the game, exactly one cancels a call, and only for its own object, identified by reference — everything else lets the game do exactly what it did. Someone playing with you without the mod notices no difference.
- Le mod annonce qui rejoint et qui quitte la partie. Un joueur voyant sait d'un coup d'œil s'il est seul ; sans cette annonce on ne l'apprend qu'en heurtant quelqu'un au scanner, ou pas du tout. Traverser un bâtiment ne déclenche rien : Sun Haven détruit et recrée les joueurs à chaque changement de carte, donc un départ n'est annoncé qu'après plusieurs secondes d'absence réelle.The mod announces who joins and who leaves. A sighted player knows at a glance whether they're alone; without this you only find out by bumping into someone in the scanner, or never. Walking through a building triggers nothing: Sun Haven destroys and recreates players on every map change, so a departure is only announced after several seconds of genuine absence.
- Les autres joueurs apparaissent dans la catégorie Personnages du scanner, annoncés « son nom, joueur » pour ne pas les confondre avec les personnages du jeu, avec leur direction et leur distance — et le cheminement automatique va jusqu'à eux. Ils manquaient totalement à l'appel : les joueurs ne vivent pas dans la scène de la carte mais dans une scène persistante, que le filtre du scanner écartait.Other players appear in the scanner's Characters category, announced as "their name, player" so they aren't confused with game characters, with direction and distance — and auto-pathing walks you to them. They were missing entirely: players don't live in the map scene but in a persistent one, which the scanner's filter was discarding.
- Les messages du tchat et les bulles de dialogue disent qui parle, l'émetteur étant retrouvé à partir de l'objet auquel la bulle est rattachée. Sans cela, rien ne distinguait un partenaire d'un personnage du jeu.Chat messages and dialogue bubbles say who is speaking, the speaker being found from the object the bubble is attached to. Without it, nothing told a partner apart from a game character.
- Le mod n'annonce que vos actions. Les annonces de dégâts, de mort et les cinq annonces de pêche ne vérifiaient pas de qui il s'agissait : en coopération, les coups reçus par votre partenaire étaient annoncés comme les vôtres, avec sa santé à lui, et son bouchon déclenchait votre bip de visée. Chacune filtre désormais sur le joueur local.The mod announces only your actions. The damage, death and five fishing announcements never checked whose they were: in co-op, hits taken by your partner were announced as yours, with their health, and their bobber triggered your aiming beep. Each now filters on the local player.
Ces points demandent une seconde personne et n'ont donc jamais pu être essayés en conditions réelles : ils figurent dans la feuille de route à l'étape « Jouer à plusieurs ». These points need a second person and so have never been tried in real conditions: they're listed in the roadmap under "Playing together".
8. Langue des annonces8. Announcement language
Le mod parle français ou anglais, et suit la langue du jeu sans rien avoir à régler. Il suit le jeu plutôt que Windows : on peut très bien jouer à Sun Haven en anglais sur un Windows français, et c'est la langue du jeu qui décide de celle des noms d'objets, de personnages et de lieux que le mod prononce à côté de ses propres phrases — les faire diverger donnerait des annonces à moitié dans chaque langue. The mod speaks French or English, and follows the game's language with nothing to configure. It follows the game rather than Windows: you might well play Sun Haven in English on a French Windows, and it's the game's language that decides the item, character and location names the mod speaks alongside its own sentences — letting them diverge would give announcements half in each language.
- La langue se force dans les réglages, en première entrée de la liste : comme le jeu, Français, English. C'est le seul réglage dont on peut avoir besoin sans comprendre un mot de ce que le mod dit, donc le seul qu'il serait absurde de laisser uniquement dans un fichier de configuration.The language can be forced in the settings, as the list's first entry: same as the game, Français, English. It's the one setting you might need without understanding a word the mod says, so the one it would be absurd to leave only in a config file.
- Le français reste la langue écrite dans le code : c'est celle dont chaque tournure a été vérifiée à l'oreille par un utilisateur de lecteur d'écran. L'anglais est une couche par-dessus, appliquée au moment de parler, plutôt qu'une réécriture des 175 annonces réparties dans 56 fichiers — les modifier toutes ferait courir un risque de régression à chaque annonce, pour une langue que personne n'a encore essayée.French remains the language written in the code: it's the one whose every turn of phrase was verified by ear by a screen reader user. English is a layer on top, applied at the moment of speaking, rather than a rewrite of the 175 announcements spread across 56 files — changing them all would risk a regression in every announcement, for a language nobody has tried yet.
- Règle absolue : jamais de phrase à moitié traduite. Ce que la traduction ne reconnaît pas ressort entièrement en français, intact. Un mélange donnerait à un anglophone un mot sur deux, et à un francophone une phrase cassée — une lacune franche vaut mieux.Hard rule: never a half-translated sentence. Whatever the translation doesn't recognise comes out entirely in French, intact. A mixture would give an English speaker every other word and a French speaker a broken sentence — a clean gap is better.
- Le dictionnaire qui met en français les noms techniques anglais du jeu s'efface en anglais : la source est déjà dans la bonne langue, il ne reste qu'à découper les mots. Idem pour la date d'une sauvegarde, que le jeu affiche en anglais même en interface française.The dictionary that puts the game's English technical names into French steps aside in English: the source is already in the right language, only word splitting remains. Same for a save's date, which the game shows in English even in a French interface.
- L'aide F1 est écrite deux fois, en regard l'une de l'autre : ce sont des paragraphes, pas des annonces, et c'est la seule façon que chaque version se lise naturellement. Un garde-fou journalise l'écart si une rubrique n'est ajoutée que d'un côté — une aide qu'on n'entend pas ne se remarque jamais en jeu.The F1 help is written twice, side by side: these are paragraphs, not announcements, and it's the only way each version reads naturally. A guard logs the difference if a topic is added on one side only — help you never hear is help you never miss.
Personne n'a encore joué en anglais : les points à vérifier sont listés dans la feuille de route, à l'étape « Jouer en anglais ». Nobody has played in English yet: the points to check are listed in the roadmap, under "Playing in English".