====== Propriétés personnalisées ======
En plus des propriétés intégrées (''description'', ''aperçu'', ''titre'', ''texte'', …), vous pouvez attacher à n’importe quel objet, lieu, personnage — ou même au joueur — vos **propres propriétés** : un ''prix'', un ''poids'', une ''couleur'', une ''force'', etc.
**Propriété ≠ état.** Un [[reference:definitions:etats_personnalises|état]] (''fermé'', ''paisible'', ''corrompu'') est un drapeau on/off. Une **propriété** porte une valeur : un nombre (''poids = 12'') ou un texte (''couleur = "bronze"''). On utilise un état quand la réponse est binaire, une propriété quand elle est numérique ou textuelle.
===== Déclarer une propriété =====
Deux types possibles, choisis selon le verbe :
* ''**est**'' → propriété de type **texte**
* ''**vaut**'' → propriété de type **nombre**
==== Au moment de la définition ====
L’épée est un objet portable sur l’étale.
Sa description est "Une épée en bronze.".
Son prix vaut 45.
Sa couleur est "bronze".
==== Après la déclaration de l’élément ====
Pratique quand vous voulez regrouper les propriétés d’un objet plus loin dans le scénario, ou ajouter une propriété à un élément déjà déclaré :
Le bouclier en bois est un objet portable sur l’étale.
Le prix du bouclier en bois vaut 10.
La couleur du bouclier en bois est "brun".
==== Sur le joueur ====
Le joueur est un élément comme un autre : il accepte des propriétés.
La force du joueur vaut 7.
Le surnom du joueur est "le héros silencieux".
===== Afficher une propriété dans un texte =====
Utilisez la balise ''%%[nomPropriété élément]%%'' à l’intérieur d’une chaîne ''"…"''.
dire "[Intitulé ceci] coûte [prix ceci] pièces d’or.".
dire "Votre force vaut [force le joueur].".
dire "La statue est en [matière ceci].".
Si la forme courte ne fonctionne pas (par exemple parce que le nom de votre propriété entre en conflit avec un mot-clé du moteur), utilisez la forme avec le préfixe ''p'' : ''%%[p prix ceci]%%'', ''%%[p matière ceci]%%''. Dans la majorité des cas, la forme courte suffit.
==== Accord automatique du pluriel ====
La balise ''%%[s nomPropriété ceci]%%'' ajoute un ''s'' si la valeur est plurielle (≥ 2) :
dire "[Intitulé ceci] coûte [prix ceci] pièce[s prix ceci] d’or.".
-- → "L'épée coûte 1 pièce d'or." ou "L'épée coûte 45 pièces d'or."
L'étale du forgeron est un lieu.
L'épée en bronze est un objet portable ici.
Son prix vaut 45.
Sa couleur est "bronze".
L'épée en or est un objet portable ici.
Son prix vaut 1.
Sa couleur est "or".
action examiner ceci:
dire "[Intitulé ceci] coûte [prix ceci] pièce[s prix ceci] d'or. (Couleur : [couleur ceci].)".
fin action
règle avant commencer le jeu:
dire "Essayez : {/examiner l'épée en bronze/} et {/examiner l'épée en or/}.".
fin règle
[[djnc>wiki_proprietes_afficher_prix|tester cet exemple]]
===== Tester une propriété =====
==== Existence ====
Pour vérifier qu’un élément **possède** une propriété donnée :
si aucun prix pour ceci:
dire "[Intitulé ceci] n’est pas à vendre.".
sinon
dire "[Intitulé ceci] coûte [prix ceci] pièces.".
fin si
La même chose dans un texte dynamique :
dire "[Intitulé ceci] [si aucun prix pour ceci]n’est pas à vendre[sinon]coûte [prix ceci] pièces[fin si].".
==== Comparaison numérique ====
Pour comparer la valeur d’une propriété à un nombre, utilisez les verbes ''vaut'', ''atteint'', ''dépasse'' :
si le poids de ceci vaut 0:
dire "C’est imperceptible.".
fin si
si la force du joueur atteint le poids de ceci:
-- force >= poids
dire "Vous soulevez [intitulé ceci] !".
fin si
si la force du joueur dépasse 10:
-- force > 10 (strictement)
dire "Vous êtes hors-norme !".
fin si
Voir aussi les pages des verbes : [[reference:instructions:controle:si:verbes:valoir|valoir]], [[reference:instructions:controle:si:verbes:atteindre|atteindre]], [[reference:instructions:controle:si:verbes:depasser|dépasser]].
La salle d'entraînement est un lieu.
La force du joueur vaut 7.
Le sac est un objet décoratif ici.
Le poids du sac vaut 4.
L'enclume est un objet décoratif ici.
Le poids de l'enclume vaut 20.
action soulever ceci:
si la force du joueur atteint le poids de ceci:
dire "Vous soulevez [intitulé ceci] (force [force le joueur] ≥ poids [poids ceci]).".
sinon
dire "[Intitulé ceci] est trop lourd ([poids ceci]) pour vous ([force le joueur]).".
fin si
fin action
règle avant commencer le jeu:
dire "Essayez : {/soulever le sac/} et {/soulever l'enclume/}.".
fin règle
[[djnc>wiki_proprietes_soulever_poids|tester cet exemple]]
===== Exemple complet =====
Un mini-scénario où le joueur doit soulever des objets de différents poids selon sa force. Chaque objet a un ''poids'' (nombre) et une ''matière'' (texte). Essayez ''soulever le sac de pièces'', ''soulever la caisse en bois'', ''soulever le coffre de fer'', ''soulever la statue de marbre'', ''soulever la plume''.
-- "Informations sur le jeu".
Le titre du jeu est "La voûte du gardien".
L’auteur du jeu est "DonjonFI".
La voûte du gardien est un lieu.
Sa description est "Une voûte de pierre éclairée par quelques torches. Plusieurs objets de poids variés gisent au sol.".
-- Propriété du joueur
La force du joueur vaut 7.
-- Objets avec poids (nombre) et matière (texte)
Le sac de pièces est un objet décoratif dans la voûte du gardien.
Le poids du sac de pièces vaut 1.
La matière du sac de pièces est "cuir".
Sa description est "Un petit sac qui tinte. ([matière ceci], poids [poids ceci]).".
La caisse en bois est un objet décoratif dans la voûte du gardien.
Le poids de la caisse en bois vaut 4.
La matière de la caisse en bois est "bois".
Le coffre de fer est un objet décoratif dans la voûte du gardien.
Le poids du coffre de fer vaut 12.
La matière du coffre de fer est "fer".
La statue de marbre est un objet décoratif dans la voûte du gardien.
Le poids de la statue de marbre vaut 40.
La matière de la statue de marbre est "marbre".
-- Objet sans propriété poids (illustre le test d'existence)
La plume d’oie est un objet portable dans la voûte du gardien.
Sa description est "Une plume. Elle ne pèse [si aucun poids pour ceci]rien du tout[sinon][poids ceci][fin si].".
action soulever ceci:
si aucun poids pour ceci:
dire "[Intitulé ceci] est si léger qu’il n’a pas de poids notable.".
sinonsi la force du joueur atteint le poids de ceci:
dire "Vous soulevez [intitulé ceci]. (Force [force le joueur] ≥ poids [poids ceci].)".
sinon
dire "[Intitulé ceci] est trop lourd ([poids ceci]) pour vous ([force le joueur]).".
fin si
fin action
Le joueur est dans la voûte du gardien.
[[djnc>wiki_proprietes_coffre_a_poids|tester cet exemple]]
===== Voir aussi =====
* [[reference:texte:proprietes_des_elements_du_jeu|Propriétés des éléments du jeu]] — vue depuis le texte (déclaration + affichage côte à côte)
* [[reference:texte:proprietes|Propriétés dynamiques dans les textes]] — toutes les balises ''[…]'' utilisables dans une chaîne
* [[reference:definitions:etats_personnalises|États personnalisés]] — pour les drapeaux on/off plutôt que les valeurs
* [[reference:memoire:compteurs|Compteurs]] — pour les valeurs partagées (score, points de vie globaux) plutôt qu’attachées à un élément
* [[reference:instructions:changer|Instruction changer]] — modifier une propriété pendant la partie