====== Fonds (décor présent dans plusieurs lieux) ====== Un **fond** est un objet de **décor** présent dans **plusieurs lieux à la fois** : le ciel, le soleil, la mer, le sol… Il hérite d’[[reference:definitions:objets|objet]], mais **on ne peut pas le prendre**, il n’est **pas listé** parmi les objets du lieu, et il n’est **ni contenant ni support**. En revanche on peut l’**examiner**, et son **aperçu** (s’il en a un) s’affiche avec la description du lieu. Le moteur ne gère pas nativement le fait de **déposer des objets sur un fond** (« poser au sol », « ranger dans le ciel »…). Si vous voulez qu’un fond reçoive des objets, programmez-le avec des [[reference:logique:regles|règles]]. ===== Portée d’un fond ===== On précise **dans quels lieux** le fond est présent, et s’il s’agit d’**une seule instance partagée** ou d’**une instance par lieu**. Deux formulations équivalentes : une phrase séparée (''Il est …'') ou directement dans la définition (''… un fond commun …'') : Le soleil est un fond. Il est commun à tous les lieux. La mer est un fond commun dans les lieux côtiers. Le sol est un fond propre à chaque lieu. Le plafond est un fond propre aux lieux couverts. ^ Formulation ^ Portée ^ Lieux concernés ^ | ''commun à tous les lieux'' | une **seule** instance partagée | tous | | ''commun dans les lieux <état>'' | une seule instance partagée | lieux possédant ''<état>'' | | ''propre à chaque lieu'' | une **instance par lieu** | tous | | ''propre aux lieux <état>'' | une instance par lieu | lieux possédant ''<état>'' | * **commun** — une seule entité (mêmes description, aperçu et états partout). Sa présence est **dynamique** : si un lieu acquiert l’état du domaine en cours de partie, le fond y apparaît. * **propre à chaque lieu** — chaque lieu a sa **propre** instance ; on peut donc différencier ses propriétés lieu par lieu (voir plus bas). ===== Un fond commun : le ciel partout ===== -- Un fond « commun » : une seule entité présente dans tous les lieux. La plage est un lieu. La forêt est un lieu au nord de la plage. Le ciel est un fond. Il est commun à tous les lieux. L'aperçu du ciel est "Un grand ciel bleu se déploie au-dessus de vous.". La description du ciel est "Le ciel est limpide, sans un nuage.". [[djnc>wiki_fonds_commun|tester cet exemple]] — tapez ''regarder'' : l’aperçu du ciel s’affiche avec la description de la plage. Le ciel n’est pas listé parmi les objets. ''examiner le ciel'' fonctionne ; ''aller au nord'' puis de nouveau ''examiner le ciel'' : c’est **le même** ciel. ''prendre le ciel'' est refusé. ===== Aperçu et inaccessible ===== L’**aperçu** d’un fond s’affiche avec la description du lieu ; la **description** s’affiche sur ''examiner''. Un fond **sans aperçu** n’est pas mentionné dans le lieu (mais reste examinable). Un fond peut être déclaré **inaccessible** : on le voit, on l’examine, mais on ne peut pas l’atteindre (utile pour le ciel, le soleil…) : Le ciel est un fond inaccessible. Il est commun à tous les lieux. ===== Un fond propre à chaque lieu ===== Avec ''propre à chaque lieu'', chaque lieu reçoit **sa propre instance** du fond. On peut donner une **valeur par défaut** (sans préciser le lieu) puis **surcharger** l’instance d’un lieu précis avec le [[#locateur_spatial|locateur spatial]] ''situé dans '' : -- Un fond « propre à chaque lieu » : une instance distincte par lieu, personnalisable. La cuisine est un lieu. La salle de bain est un lieu au nord de la cuisine. Le sol est un fond. Il est propre à chaque lieu. La description du sol est "Un sol carrelé.". La description du sol situé dans la salle de bain est "Un carrelage humide et glissant.". [[djnc>wiki_fonds_propre|tester cet exemple]] — ''examiner le sol'' dans la cuisine affiche « Un sol carrelé. » ; ''aller au nord'' puis ''examiner le sol'' affiche « Un carrelage humide et glissant. ». ===== Locateur spatial ===== Le **locateur spatial** désigne un objet (ou l’instance d’un fond propre) par **où il se trouve**, avec ''situé(e)(s) (dans|sur|sous) '' ou ''qui se trouve(nt) (dans|sur|sous) '' (et ''… ici''). ''est'' reste réservé aux **états** ; les positions utilisent ''situé'' / ''se trouve''. ==== Modifier une instance en cours de partie ==== Dans une règle ou une action, ''changer'' avec un locateur cible **une seule** instance ; les autres restent inchangées : -- Modifier une instance précise d'un fond en cours de partie avec « changer ». La cuisine est un lieu. Le sol est un fond. Il est propre à chaque lieu. La description du sol est "Un carrelage sec.". action arroser: phase exécution: changer la description du sol situé dans la cuisine est "Le carrelage est trempé.". phase épilogue: dire "Vous arrosez le sol : le carrelage est maintenant trempé.". fin action [[djnc>wiki_fonds_changer|tester cet exemple]] — ''examiner le sol'' (sec), puis ''arroser'', puis de nouveau ''examiner le sol'' (trempé). ==== Dans une condition ==== Dans une condition, ''situé(e)(s) (dans|sur|sous) '' désigne **quelle** instance on teste, puis ''est'' vérifie son état. Chaque instance d’un fond ''propre'' est testée indépendamment : -- Tester l'état d'une instance précise d'un fond propre dans une condition, avec « situé dans ». La cuisine est un lieu. Le salon est un lieu au nord de la cuisine. Le sol est un fond propre. Il est propre à chaque lieu. La description du sol est "Un carrelage.". action salir: phase épilogue: changer le sol est sale. dire "Vous renversez un seau : le sol de la pièce est maintenant sale.". fin action règle après examiner le sol: si le sol situé dans la cuisine est sale, dire "(Le sol de la cuisine est sale.)". si le sol situé dans le salon est sale, dire "(Le sol du salon est sale.)". fin règle [[djnc>wiki_fonds_condition|tester cet exemple]] — en cuisine, ''salir'' puis ''examiner le sol'' : seul le sol de la cuisine est signalé sale. ''aller au nord'' puis ''examiner le sol'' : la condition distingue toujours les deux instances — le sol du salon est resté propre. Dans une condition, utilisez **uniquement** la forme ''situé'' : ''si le sol **situé** dans la cuisine est sale''. La forme ''qui se trouve'' n’y est **pas** reconnue (elle entre en conflit avec le test de position « se trouver ») — la condition serait silencieusement considérée comme fausse. L’état d’une instance d’un fond ''propre'' ne peut pas être fixé **par lieu dans la définition** (''Le sol situé dans le salon est propre.'' n’a aucun effet). Donnez l’état par défaut à la classe (''Le sol est un fond propre.''), puis faites diverger une instance en cours de partie avec ''changer le sol est …'' (qui agit sur l’instance du lieu courant). ==== Dans une instruction déplacer ==== Le locateur sert aussi à désigner **tous** les objets à un emplacement, par exemple avec [[reference:instructions:deplacer|déplacer]] : déplacer les objets qui se trouvent dans le coffre vers l'inventaire. déplacer les clés situées sur la table vers le joueur. ===== Voir aussi ===== * [[reference:definitions:objets|Objets]] — le type de base dont héritent les fonds * [[reference:definitions:classes|Classes et états]] * [[reference:instructions:changer|Instruction changer]] * [[reference:instructions:deplacer|Instruction déplacer]]