hier 19:08
regarde le document dans sources et dis moi ce que tu en comprends
Ce document ressemble à un carnet technique de référence pour créer des recettes complexes et des aliments personnalisés sur Keldaria. Il mélange des exemples de JSON, des réponses de développeurs et des relevés d’effets déjà utilisés en jeu.
1. La structure d’un craft complexe
Une recette est créée sous cette forme générale :
{
"ingredients": [],
"result": "...",
"energy": 0,
"aptitudes": [],
"possibleSkills": [],
"description": "...",
"custom_data": {
"crafting_time": 36000
}
}
Elle semble ensuite enregistrée avec une commande du type :
/exchange newCraft cooking_stand nom complex
Les ingrédients peuvent être écrits sous une forme simple :
"keldaria:butter=0/1"
Ce qui semble signifier :
identifiant = métadonnée / quantité
Par exemple :
"keldaria:grapes=0/10"
demande dix raisins avec la métadonnée 0.
2. Plusieurs ingrédients peuvent être interchangeables
Une sous-liste permet visiblement d’accepter plusieurs ingrédients possibles dans un même emplacement :
[
"keldaria:butter=0/1",
"keldaria:animal_grease=0/1"
]
Cela voudrait dire : utiliser soit une unité de beurre, soit une unité de graisse animale.
Il est également possible de mélanger l’ancienne écriture simplifiée avec une écriture détaillée en objet, même si l’exemple du document paraît incomplet ou mal fermé syntaxiquement.
3. Le destin des ingrédients
Lorsqu’un ingrédient est décrit sous forme d’objet, il peut recevoir un attribut destiny :
{
"id": "minecraft:apple",
"number": 3,
"destiny": "remove",
"meta": -1
}
Les trois comportements recensés sont :
"remove" : l’ingrédient est consommé, mais son contenant est normalement rendu. Une chope d’eau pourrait donc rendre une chope vide.
"damage_only" : l’objet est conservé, mais reçoit des dégâts selon la valeur toolDamage.
"destroy" : l’objet est entièrement détruit, sans restitution de contenant.
Ainsi, pour une bouteille de vin vide incorporée directement au résultat, destroy serait probablement approprié si l’on ne veut pas qu’une deuxième bouteille vide soit rendue. Pour une casserole, un couteau ou un ustensile réutilisable, damage_only semble être la solution prévue.
4. Le résultat peut être un item simple ou un aliment entièrement personnalisé
Un résultat simple peut ressembler à :
"result": "{id:\"keldaria:wine_bottle\",Count:1b,Damage:0s}"
Mais le document montre surtout la possibilité de générer un keldaria:dynamicfood, avec :
un nom ;
un lore ;
une apparence personnalisée ;
un poids ;
une durée de digestion ;
des effets alimentaires ;
éventuellement des effets de potion directs ou persistants.
L’item obtenu peut aussi être produit en plusieurs exemplaires grâce à Count.
5. Le fonctionnement de FoodInfos
La partie centrale d’un aliment personnalisé est :
"FoodInfos": {
"Duration": 14400000,
"PersistentEffects": [],
"DirectEffects": [],
"Weight": 1.05,
"FoodEffects": []
}
J’en comprends ceci :
Duration correspond au temps pendant lequel l’aliment est digéré et ses effets alimentaires restent associés au personnage.
Weight représente probablement son poids ou son importance alimentaire.
DirectEffects déclenche immédiatement des effets de potion.
PersistentEffects conserve des effets pendant une certaine durée.
FoodEffects contient les modifications de statistiques dépendant de la qualité du plat.
Le document indique :
1 h = 3 600 000 ms
L’exemple qui affiche 360 00 00 semble simplement être une écriture espacée ou une coquille.
Quelques conversions utiles :
1 heure = 3 600 000
2 heures = 7 200 000
3 heures = 10 800 000
4 heures = 14 400 000
6 heures = 21 600 000
10 heures = 36 000 000
12 heures = 43 200 000
Le document recommande de ne pas dépasser environ 10 à 12 heures en qualité glorieuse, car le jeu applique ensuite un multiplicateur lié à la qualité.
6. Les qualités modifient les effets
Chaque effet peut contenir plusieurs valeurs :
"Values": {
"WORST": 0.95,
"PERFECT": 1.2,
"GLORIOUS": 1.04
}
Cela signifie que la puissance réelle dépend de la réussite du cuisinier. Les qualités visibles dans le document ne sont toutefois pas toujours homogènes :
WORST
MEDIUM
NORMAL
GOOD
AWESOME
PERFECT
GLORIOUS
Il faudrait vérifier lesquelles sont réellement reconnues pour les nouveaux dynamicfood. Les exemples de créations utilisent surtout WORST, PERFECT et GLORIOUS, tandis que les relevés d’anciens aliments utilisent aussi les autres paliers.
7. Les statistiques alimentaires disponibles
Le document identifie principalement les effets suivants :
Effet Fonction apparente
HEALTH_BOOST Vie
ENERGY Énergie immédiate
STAMINA_BOOST Endurance immédiate
HEALTH_REGEN_BOOST Régénération de vie
ENERGY_REGEN_BOOST Régénération d’énergie
STAMINA_REGEN_BOOST Régénération d’endurance
SPEED_MODIFIER Vitesse
STRENGTH_MODIFIER Force
DAMAGE_MODIFIER Dégâts reçus ou résistance
EXHAUSTING Fatigue
COLD_RESISTANCE Résistance au froid
HEAT_RESISTANCE Résistance à la chaleur
Les opérations rencontrées sont :
ADDITION
SUBTRACTION
MULTIPLICATION
DIVISION
Il faut cependant être très prudent : une valeur plus haute n’est pas toujours meilleure. Tout dépend de l’effet et de l’opération.
Par exemple :
{
"Effect": "ENERGY_REGEN_BOOST",
"Operation": "MULTIPLICATION"
}
semble favoriser les valeurs supérieures à 1.
Mais un effet comme :
{
"Effect": "EXHAUSTING",
"Operation": "DIVISION"
}
peut fonctionner selon une logique inverse ou particulière. Le tableau fournit des bornes, mais pas une définition mathématique complète de chaque interaction.
8. Les bornes recommandées
Le document contient un tableau de limites destinées à éviter des plats trop puissants. Par exemple :
Force : environ 0.90 à 1.15 en multiplication.
Régénération d’endurance : environ 0.90 à 1.30.
Régénération de vie : environ 0.85 à 1.30.
Régénération d’énergie : environ 0.80 à 1.60.
Résistance au froid : environ 1.05 à 1.75.
Vitesse : valeurs généralement proches de 1.
Gain direct d’énergie : jusqu’à environ 2200.
Gain direct d’endurance : jusqu’à environ 30.
Je comprends ces chiffres comme des bornes d’équilibrage, pas nécessairement comme des contraintes techniques absolues.
Certaines lignes contiennent vraisemblablement des erreurs de transcription, notamment :
1.0.7
pour la vitesse, qui devrait probablement être 1.07.
De même, certaines valeurs relevées dans les aliments existants semblent inversées, mal nommées ou incohérentes avec l’effet annoncé. Ce sont davantage des données d’observation que des exemples prêts à copier sans vérification.
9. La péremption est personnalisable
La péremption peut être définie avec :
tag: {
Expiration: 10
}
Le nombre est exprimé en jours de Keldaria.
Par exemple :
{
"id": "keldaria:carrot",
"Count": 1,
"Damage": 1,
"tag": {
"Expiration": 10
}
}
produirait une carotte périmant après dix jours keldariens.
Il n’est toutefois pas clairement montré si Expiration correspond à une durée restante initialisée lors de la création ou à une propriété fixe du type d’item. D’après la réponse du développeur, il s’agit bien d’une durée personnalisée placée directement sur l’item résultant.
10. Ce que représente la grande liste finale
La majeure partie du document est un relevé des statistiques des aliments existants :
viandes crues et cuites ;
poissons et crustacés ;
fruits et légumes ;
soupes ;
purées ;
tartes ;
baies ;
plats déjà présents sur Keldaria.
Cette liste peut servir de base comparative pour équilibrer de nouvelles recettes. Elle permet, par exemple, de voir qu’un plat complexe devrait généralement avoir :
une digestion plus longue qu’un ingrédient brut ;
plusieurs effets complémentaires ;
une puissance supérieure à celle d’un simple fruit ;
mais pas nécessairement des valeurs maximales partout.
Elle montre également une logique culinaire générale :
les aliments crus peuvent donner nausée, perte de vie ou malus ;
les plats lourds donnent souvent vie, endurance et résistance à la fatigue ;
les fruits donnent de petits bonus rapides ;
les poissons et fruits de mer favorisent souvent l’endurance ;
les préparations sucrées favorisent plutôt l’énergie ou la vitesse ;
les plats élaborés peuvent combiner trois à cinq effets.
Ce que je retiens pour les recettes de Björn
Le document fournit assez d’informations pour construire des recettes complètes comprenant :
les ingrédients et leurs quantités ;
les alternatives possibles ;
le traitement des contenants et ustensiles ;
le nombre de plats produits ;
le coût en énergie du craft ;
les aptitudes exigées ;
le niveau de métier de cuisinier ;
le temps de confection ;
la durée de digestion ;
la date de péremption ;
le nom, le lore et le modèle visuel ;
les statistiques selon la qualité de réalisation.
En revanche, il ne donne pas une documentation totalement propre et définitive. Certaines données sont des messages Discord recopiés, certains JSON sont incomplets, et plusieurs relevés d’effets présentent des incohérences. La meilleure utilisation de ce document est donc d’en faire une base de conception et d’équilibrage, puis de produire des JSON propres en suivant les exemples les plus complets.
{id:"keldaria:onion_soup",Count:2b,tag:{display:{Lore:["§6Poulet dont se dégage une douce odeur de romarin
"],Name:"§bPoulet rôti au romarin"},BuiltInTransforms:"item",FoodInfos:{Duration:21600000L,PersistentEffects:[],DirectEffects:[],Weight:1.75d,FoodEffects:[{Values:{WORST:9.0d,PERFECT:15,GLORIOUS:19},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:0.8d,PERFECT:1.15d,GLORIOUS:1.3d},Effect:"SPEED_MODIFIER",Operation:"MULTIPLICATION"},{Values:{WORST:5.0d,PERFECT:12,GLORIOUS:15},Effect:"STAMINA_BOOST",Operation:"ADDITION"},{Values:{WORST:0.9d,PERFECT:1.6d,GLORIOUS:1.75d},Effect:"EXHAUSTING",Operation:"DIVISION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr//skinhosting/dsc/188/dhayp.png"}},Damage:0s
{id:"keldaria:water_chop",Count:1b,tag:{display:{Lore:["§6Thé dont se dégage une agréable odeur d'hitsenat"],Name:"§bThé à l'histenat"},BuiltInTransforms:"item",FoodInfos:{Duration:7200000L,PersistentEffects:[],DirectEffects:[],Weight:0.11d,FoodEffects:[{Value:1.35d,Effect:"COLD_RESISTANCE",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/t98uj.png"}},Damage:0s}
{id:"keldaria:dynamicfood",Count:1b,tag:{display:{Lore:["§6Cette crevette craquante semble juteuse et savoureuse, elle est enrobée d'une panure croustillante dorée à la perfection"],Name:"§bCrevette craquante"},BuiltInTransforms:"item",FoodInfos:{Duration:5400000L,PersistentEffects:[],DirectEffects:[],Weight:0.55d,FoodEffects:[{Values:{WORST:0.95d,PERFECT:1.15d,GLORIOUS:1.25d},Effect:"STRENGTH_MODIFIER",Operation:"MULTIPLICATION"},{Values:{WORST:1,PERFECT:6.5d,GLORIOUS:9},Effect:"HEALTH_BOOST",Operation:"ADDITION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/euj9d.png"}},Damage:0s}
{id:"keldaria:onion_soup",Count:1b,tag:{display:{Lore:[""],Name:"§6Écrasé de carottes"},BuiltInTransforms:"item",FoodInfos:{Duration:10800000L,PersistentEffects:[],DirectEffects:[],Weight:0.7d,FoodEffects:[{Values:{WORST:-1.5d,PERFECT:6,GLORIOUS:10},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:0.65d,PERFECT:1.08d,GLORIOUS:1.2d},Effect:"SPEED_MODIFIER",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/4vu25.png"}},Damage:0s}
{id:"keldaria:raisin_cookie",Count:10b,tag:{display:{Lore:[""],Name:"§5Biscuit sucré aux raisins"},BuiltInTransforms:"item",FoodInfos:{Duration:6200000L,PersistentEffects:[],DirectEffects:[],Weight:0.15d,FoodEffects:[{Values:{WORST:0.7d,PERFECT:1.05d,GLORIOUS:1.08d,NORMAL:1.0d},Effect:"SPEED_MODIFIER",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/js3af.png"}},Damage:0s}
{id:"keldaria:onion_soup",Count:1b,tag:{display:{Lore:["§eUne soupe réconfortante avec des tranches de porc tendre et des oignons caramélisés."],Name:"§6Soupe à l'oignon et à l'hitsenat"},BuiltInTransforms:"item",FoodInfos:{Duration:21600000L,PersistentEffects:[],DirectEffects:[],Weight:0.9d,FoodEffects:[{Values:{WORST:1,PERFECT:11,GLORIOUS:16},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:200,PERFECT:700,GLORIOUS:1100},Effect:"ENERGY",Operation:"ADDITION"},{Values:{WORST:1.05d,PERFECT:1.3d,GLORIOUS:1.6d},Effect:"COLD_RESISTANCE",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0.0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/c7ayz.png"}},Damage:0s}
{id:"keldaria:dynamicfood",Count:1b,tag:{display:{Lore:["§6Un sanglier Wellington, délicatement préparé, enrobé dans une pâte feuilletée, subtilement imprégnée de betterave et de romarin, créant ainsi une symphonie de saveurs rustiques et élégantes qui éblouissent les papilles gustatives."],Name:"§eSanglier Wellington"},BuiltInTransforms:"item",FoodInfos:{Duration:21600000L,PersistentEffects:[],DirectEffects:[],Weight:1.7d,FoodEffects:[{Values:{WORST:0.8d,PERFECT:1.35d,GLORIOUS:1.55d},Effect:"ENERGY",Operation:"MULTIPLICATION"},{Values:{WORST:0.8d,PERFECT:1.3d,GLORIOUS:1.5d},Effect:"HEALTH_BOOST",Operation:"MULTIPLICATION"},{Values:{WORST:0.7d,PERFECT:1.3d,GLORIOUS:1.4d},Effect:"EXHAUSTING",Operation:"DIVISION"},{Values:{WORST:0.8d,PERFECT:1.45d,GLORIOUS:1.6d},Effect:"ENERGY_REGEN_BOOST",Operation:"MULTIPLICATION"},{Values:{WORST:0.9d,PERFECT:1.1d,GLORIOUS:1.2d},Effect:"STRENGTH_MODIFIER",Operation:"MULTIPLICATION"},{Values:{WORST:0.9d,PERFECT:1.1d,GLORIOUS:1.2d},Effect:"SPEED_MODIFIER",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/nxqg5.png"}},Damage:0s}
{id:"keldaria:dynamicfood",Count:1b,tag:{display:{Lore:["§2Une brochette audacieuse mariant la tendreté du serpent avec le piquant de l'oignon, grillée pour une expérience culinaire inattendue et savoureuse."],Name:"§aBrochette de Lézardeu"},BuiltInTransforms:"item",FoodInfos:{Duration:14400000L,PersistentEffects:[{ShowParticles:0b,Duration:120,Id:71}],DirectEffects:[],Weight:0.8d,FoodEffects:[{Values:{WORST:1,PERFECT:8,GLORIOUS:12},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:0.8d,PERFECT:1.15d,GLORIOUS:1.25d},Effect:"DAMAGE_MODIFIER",Operation:"DIVISION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/7j4dy.png"}},Damage:0s}
{id:"keldaria:onion_soup",Count:1b,tag:{display:{Lore:["§eCanard rôti accompagné d'une sauce onctueuse à base de raisins et de vin blanc. Chaque bouchée est une explosion de fraîcheur et de saveur fruitée dans un équilibre parfait entre le salé et le sucré."],Name:"§6Canard au raisin"},BuiltInTransforms:"item",FoodInfos:{Duration:21600000L,PersistentEffects:[{ShowParticles:0b,Duration:120,Id:8}],DirectEffects:[],Weight:1.7d,FoodEffects:[{Values:{WORST:9.0d,PERFECT:15,GLORIOUS:19},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:0.8d,PERFECT:1.15d,GLORIOUS:1.3d},Effect:"SPEED_MODIFIER",Operation:"MULTIPLICATION"},{Values:{WORST:5.0d,PERFECT:12,GLORIOUS:15},Effect:"STAMINA_BOOST",Operation:"ADDITION"},{Values:{WORST:0.95d,PERFECT:1.6d,GLORIOUS:1.8d},Effect:"ENERGY",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/q53za.png"}},Damage:0s}
{id:"keldaria:onion_soup",Count:1b,tag:{LoreSealed:"Toden",display:{Lore:["§6Un magnifique hachis revisité","§6à l'origine par §dLéon Eciel§6."],Name:"§eHachi Khaldelien"},BuiltInTransforms:"item",FoodInfos:{Duration:21600000L,PersistentEffects:[],DirectEffects:[],Weight:1.6d,FoodEffects:[{Values:{WORST:0.8d,PERFECT:1.25d,GLORIOUS:1.45d},Effect:"ENERGY",Operation:"MULTIPLICATION"},{Values:{WORST:0.8d,PERFECT:1.3d,GLORIOUS:1.5d},Effect:"HEALTH_BOOST",Operation:"MULTIPLICATION"},{Values:{WORST:0.9d,PERFECT:1.2d,GLORIOUS:1.3d},Effect:"STAMINA_REGEN_BOOST",Operation:"MULTIPLICATION"},{Values:{WORST:0.8d,PERFECT:1.3d,GLORIOUS:1.5d},Effect:"ENERGY_REGEN_BOOST",Operation:"MULTIPLICATION"},{Values:{WORST:0.9d,PERFECT:1.1d,GLORIOUS:1.25d},Effect:"STRENGTH_MODIFIER",Operation:"MULTIPLICATION"},{Values:{WORST:0.9d,PERFECT:1.1d,GLORIOUS:1.25d},Effect:"SPEED_MODIFIER",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/xyji8.png"}},Damage:0s}
{id:"keldaria:sausages",Count:8b,tag:{display:{Lore:["§d§oUn petit saucisson de porc, mais une explosion de saveurs à chaque bouchée !"],Name:"§d§nSaucisson"},BuiltInTransforms:"item",FoodInfos:{Duration:600000L,PersistentEffects:[],DirectEffects:[],Weight:0.1d,FoodEffects:[{Values:{WORST:1.5d,PERFECT:3,GLORIOUS:5},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:17,PERFECT:45,GLORIOUS:60},Effect:"ENERGY",Operation:"ADDITION"},{Values:{WORST:13,GLORIOUS:30},Effect:"STAMINA_BOOST",Operation:"ADDITION"}]},CustomModel:{Size:0.28d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/v7nj9.png"}},Damage:0s}
{id:"keldaria:onion_soup",Count:1b,tag:{display:{Lore:["§6Une soupe traditionnelle §4Nifadanne §6à base de viande, mijotée avec des racines, des baies et des algues. Savoureuse et nourrissante, elle est appréciée pour sa robustesse et sa capacité à réchauffer après une longue journée."],Name:"§4Suaasat"},BuiltInTransforms:"item",FoodInfos:{Duration:18000000L,PersistentEffects:[],DirectEffects:[],Weight:1.6d,FoodEffects:[{Values:{WORST:3.0d,PERFECT:20,GLORIOUS:30},Effect:"STAMINA_BOOST",Operation:"ADDITION"},{Values:{WORST:1300,GLORIOUS:2200},Effect:"ENERGY",Operation:"ADDITION"},{Values:{WORST:1.05d,PERFECT:1.3d,GLORIOUS:1.75d},Effect:"COLD_RESISTANCE",Operation:"MULTIPLICATION"},{Values:{WORST:9,PERFECT:15,GLORIOUS:19},Effect:"HEALTH_BOOST",Operation:"ADDITION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/6guh8.png"}},Damage:0s}
{id:"keldaria:raisin_cookie",Count:10b,tag:{display:{Lore:[""],Name:"§5Biscuit sucré aux raisins"},BuiltInTransforms:"item",FoodInfos:{Duration:7200000L,PersistentEffects:[],DirectEffects:[],Weight:0.1d,FoodEffects:[{Values:{WORST:1.0d,PERFECT:1.07d,GLORIOUS:1.13d},Effect:"SPEED_MODIFIER",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/js3af.png"}},Damage:0s}
{id:"keldaria:dynamicfood",Count:1b,tag:{display:{Lore:["§6Un boeuf Wellington, délicatement préparé, enrobé dans une pâte feuilletée, subtilement imprégnée de betterave et de romarin, créant ainsi une symphonie de saveurs élégantes qui éblouissent les papilles gustatives."],Name:"§eBoeuf Wellington"},BuiltInTransforms:"item",FoodInfos:{Duration:21600000L,PersistentEffects:[],DirectEffects:[],Weight:1.7d,FoodEffects:[{Values:{WORST:0.8d,PERFECT:1.35d,GLORIOUS:1.55d},Effect:"ENERGY",Operation:"MULTIPLICATION"},{Values:{WORST:0.8d,PERFECT:1.3d,GLORIOUS:1.5d},Effect:"HEALTH_BOOST",Operation:"MULTIPLICATION"},{Values:{WORST:0.7d,PERFECT:1.3d,GLORIOUS:1.4d},Effect:"EXHAUSTING",Operation:"DIVISION"},{Values:{WORST:0.8d,PERFECT:1.45d,GLORIOUS:1.6d},Effect:"ENERGY_REGEN_BOOST",Operation:"MULTIPLICATION"},{Values:{WORST:0.9d,PERFECT:1.1d,GLORIOUS:1.2d},Effect:"STRENGTH_MODIFIER",Operation:"MULTIPLICATION"},{Values:{WORST:0.9d,PERFECT:1.1d,GLORIOUS:1.2d},Effect:"SPEED_MODIFIER",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/xep74.png"}},Damage:0s}
{id:"keldaria:dynamicfood",Count:1b,tag:{display:{Lore:["§6Un boeuf Wellington, délicatement préparé, enrobé dans une pâte feuilletée, subtilement imprégnée de betterave et de romarin, créant ainsi une symphonie de saveurs élégantes qui éblouissent les papilles gustatives."],Name:"§eBoeuf Wellington"},BuiltInTransforms:"item",FoodInfos:{Duration:21600000L,PersistentEffects:[],DirectEffects:[],Weight:1.7d,FoodEffects:[{Values:{WORST:0.8d,PERFECT:1.35d,GLORIOUS:1.55d},Effect:"ENERGY",Operation:"MULTIPLICATION"},{Values:{WORST:0.8d,PERFECT:1.3d,GLORIOUS:1.5d},Effect:"HEALTH_BOOST",Operation:"MULTIPLICATION"},{Values:{WORST:0.7d,PERFECT:1.3d,GLORIOUS:1.4d},Effect:"EXHAUSTING",Operation:"DIVISION"},{Values:{WORST:0.8d,PERFECT:1.45d,GLORIOUS:1.6d},Effect:"ENERGY_REGEN_BOOST",Operation:"MULTIPLICATION"},{Values:{WORST:0.9d,PERFECT:1.1d,GLORIOUS:1.2d},Effect:"STRENGTH_MODIFIER",Operation:"MULTIPLICATION"},{Values:{WORST:0.9d,PERFECT:1.1d,GLORIOUS:1.2d},Effect:"SPEED_MODIFIER",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/xep74.png"}},Damage:0s}
{id:"minecraft:bread",Count:3b,tag:{display:{Lore:["§l§4♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡","","§r§7Ce gâteau est délicatement parfumé à §4l’Aminalière Yashy§r§7, une plante aux propriétés aphrodisiaques, dont les arômes envoûtants éveillent subtilement les sens. Sa saveur florale, douce et enivrante, titille doucement le palais, tandis que chaque bouchée fondante de myrtille invite à §4l’abandon et à la sensualité.§r§7 La tendresse et la passion s’entrelacent dans ce dessert, parfait pour partager un moment §4intime et délicieux§r§7, où les plaisirs de la table se confondent avec ceux du coeur.","","§4A partager avec quelqu'un que vous ….","","§l§4♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡♥♡",""],Name:"§l §4♡♥♡ Gâteau d'amour ♡♥♡"},BuiltInTransforms:"base",FoodInfos:{Duration:3600000L,PersistentEffects:[],DirectEffects:[{Duration:600,Id:0}],Weight:0.15d,FoodEffects:[{Values:{WORST:1,GLORIOUS:6},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:1,GLORIOUS:6},Effect:"ENERGY",Operation:"ADDITION"}]},CustomModel:{Size:0.25d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/xsk2z.png"}},Damage:0s}
{id:"keldaria:pemmican",Count:1b,tag:{display:{Lore:["§6Un morceau de viande de mouton séché, §eferme§6 et §7sombre§6, libérant un arôme §cchaud§6 et §8fumé§6."],Name:"§4Viande Séchée"},BuiltInTransforms:"item",FoodInfos:{Duration:18000000L,PersistentEffects:[],DirectEffects:[],Weight:0.75d,FoodEffects:[{Values:{WORST:0.9d,PERFECT:1.1d,GLORIOUS:1.2d},Effect:"ENERGY",Operation:"MULTIPLICATION"},{Values:{WORST:1,PERFECT:6.5d,GLORIOUS:9},Effect:"HEALTH_BOOST",Operation:"ADDITION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/klufa.png"}},Damage:0s}
{id:"keldaria:onion_soup",Count:1b,tag:{display:{Lore:[""],Name:"§6Soupe de carottes"},BuiltInTransforms:"item",FoodInfos:{Duration:7200000L,PersistentEffects:[],DirectEffects:[],Weight:0.79d,FoodEffects:[{Values:{WORST:-1.5d,PERFECT:4.0d,GLORIOUS:6.0d},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:0.65d,PERFECT:1.06d,GLORIOUS:1.08d},Effect:"SPEED_MODIFIER",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/nry1u.png"}},Damage:0s}
{id:"keldaria:onion_soup",Count:1b,tag:{display:{Lore:["","§6❖══════════════════════════════════❖","","§6Un festin royal§r où la §2tendreté du cochon de lait§r, délicatement §c rôti à la broche§r, se mêle à la richesse d'une §6farce aux champignons§r parfumée au §aromarin§r.
Les §e pommes de terre§r, lentement imprégnées du §6jus de cuisson§r, apportent une §7touche rustique§r et §9savoureuse§r à ce plat §6digne des banquets les plus fastueux§r.","","§6❖══════════════════════════════════❖"],ShowParticles:0b,Name:"§6╔═════════════════════════════════╗
§6✦ Cochon de Lait §r§2Farci §r§cet Rôti §r§6à la Broche ✦
§6╚═════════════════════════════════╝"},BuiltInTransforms:"item",FoodInfos:{Duration:21600000L,PersistentEffects:[],DirectEffects:[],Weight:1.6d,FoodEffects:[{Values:{WORST:9.0d,PERFECT:13,GLORIOUS:16},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:0.9d,PERFECT:1.2d,GLORIOUS:1.3d},Effect:"EXHAUSTING",Operation:"DIVISION"},{Values:{WORST:0.9d,PERFECT:1.2d,GLORIOUS:1.3d},Effect:"HEALTH_REGEN_BOOST",Operation:"MULTIPLICATION"},{Values:{WORST:0.8d,PERFECT:1.2d,GLORIOUS:1.3d},Effect:"ENERGY_REGEN_BOOST",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/q451b.png"}},Damage:
{id:"keldaria:dynamicfood",Count:2b,tag:{display:{Lore:["§eUne §6brochette appétissante§e, composée de §cviande juteuse§e et de §csaucisse piquante§e, offrant un parfait équilibre entre tendreté et épices !"],ShowParticles:0b,Name:"§cBrochette du Brasier"},BuiltInTransforms:"item",FoodInfos:{Duration:19800000L,PersistentEffects:[],DirectEffects:[],Weight:1.35d,FoodEffects:[{Values:{WORST:1,PERFECT:8,GLORIOUS:13},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:13,GLORIOUS:30},Effect:"STAMINA_BOOST",Operation:"ADDITION"},{Values:{WORST:0.8d,PERFECT:1.4d,GLORIOUS:1.7d},Effect:"HEAT_RESISTANCE",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/q8gh7.png"}},Damage:0s}
{id:"keldaria:dynamicfood",Count:1b,tag:{display:{Lore:["§eUn mélange exquis de §btendres morceaux de poisson§e et de §6crevettes croustillantes§e, enrobées d’une panure §6dorée et légère§e."],ShowParticles:0b,Name:"§b§lBrochette Marine Croquante"},BuiltInTransforms:"item",FoodInfos:{Duration:16200000L,PersistentEffects:[],DirectEffects:[],Weight:1.2d,FoodEffects:[{Values:{WORST:1,PERFECT:7,GLORIOUS:10},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:13,GLORIOUS:30},Effect:"STAMINA_BOOST",Operation:"ADDITION"},{Values:{WORST:0.9d,GLORIOUS:1.15d,NORMAL:1.0d},Effect:"STRENGTH_MODIFIER",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/5x2gk.png"}},Damage:0s}
{id:"keldaria:onion_soup",Count:1b,tag:{display:{Lore:["§eUn mélange éclatant de §6pommes de terre dorées§e, de §ccarottes croquantes§e, d’§7oignons savoureux§e et d’§foeufs crémeux§e, rehaussé d’une touche d’assaisonnement délicat. Cette salade colorée et généreuse saura ravir les amateurs de fraîcheur et de simplicité."],ShowParticles:0b,Name:"§e§lSalade Panachée"},BuiltInTransforms:"item",FoodInfos:{Duration:9900000L,PersistentEffects:[],DirectEffects:[],Weight:0.9d,FoodEffects:[{Values:{WORST:0,PERFECT:5,GLORIOUS:9},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:0,PERFECT:300,GLORIOUS:600},Effect:"ENERGY",Operation:"ADDITION"},{Values:{WORST:0.85d,PERFECT:1.05d,GLORIOUS:1.1d},Effect:"HEALTH_REGEN_BOOST",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/qdp2y.png"}},Damage:0s}
Voici une liste de craft
Oui. À proprement parler, ce que tu viens d’envoyer est surtout une liste d’items alimentaires finis avec leurs statistiques, et non les crafts complets : il manque les ingredients, le coût en energy, les aptitudes, les possibleSkills et le crafting_time.
J’y repère les préparations suivantes :
Poulet rôti au romarin
Thé à l’hitsenat
Crevette craquante
Écrasé de carottes
Biscuit sucré aux raisins
Soupe à l’oignon et à l’hitsenat
Sanglier Wellington
Brochette de Lézardeu
Canard au raisin
Hachi Khaldelien
Saucisson
Suaasat
Bœuf Wellington
Gâteau d’amour
Viande séchée
Soupe de carottes
Cochon de lait farci et rôti à la broche
Brochette du Brasier
Brochette Marine Croquante
Salade Panachée
Ce que cette liste m’apprend
Elle constitue une meilleure référence concrète que le tableau général pour concevoir de nouveaux plats. Elle montre notamment que les recettes élaborées utilisent généralement :
Duration entre environ 1 h 30 et 6 h ;
un Weight adapté à la portion ;
deux à six effets alimentaires ;
les qualités WORST, PERFECT et GLORIOUS ;
parfois NORMAL, mais pas systématiquement ;
des effets de potion dans PersistentEffects ou DirectEffects ;
un item existant comme support visuel, notamment keldaria:onion_soup, même lorsque le plat n’est pas une soupe ;
keldaria:dynamicfood pour les préparations qui n’ont pas de support alimentaire spécifique.
Elle confirme aussi que les bonus sont conçus selon deux logiques :
ADDITION
Pour donner directement de la vie, de l’énergie ou de l’endurance.
MULTIPLICATION / DIVISION
Pour modifier temporairement une statistique : vitesse, force, régénération, fatigue ou résistances.
Les doublons présents
Il y a deux définitions strictement identiques du :
Bœuf Wellington
Il y a également deux versions du :
Biscuit sucré aux raisins
Première version :
Duration: 6200000
Weight: 0.15
WORST: 0.7
PERFECT: 1.05
GLORIOUS: 1.08
NORMAL: 1.0
Deuxième version :
Duration: 7200000
Weight: 0.1
WORST: 1.0
PERFECT: 1.07
GLORIOUS: 1.13
La seconde semble être une version révisée, puisqu’elle ne pénalise plus la qualité WORST et possède une durée arrondie à deux heures.
Les éléments techniquement suspects ou incomplets
Poulet rôti au romarin
Le lore contient un véritable retour à la ligne à l’intérieur de la chaîne :
"§6Poulet dont se dégage une douce odeur de romarin
"
Selon la manière dont la commande est exécutée, cela peut casser le NBT. Il faudrait normalement conserver le texte sur une seule ligne.
Soupe à l’oignon et à l’hitsenat
La transformation est mal écrite :
Transforms:"T(0.0.0.0)"
Elle devrait vraisemblablement être :
Transforms:"T(0.0,0.0,0.0)"
Cochon de lait
La commande est interrompue à la fin :
Damage:
Il manque au minimum :
Damage:0s}
Thé à l’hitsenat
Il utilise :
{Value:1.35d,Effect:"COLD_RESISTANCE",Operation:"MULTIPLICATION"}
au lieu de :
Values:{WORST:...,PERFECT:...,GLORIOUS:...}
Cela indique soit un bonus fixe indépendant de la qualité, soit une ancienne syntaxe. La liste seule ne permet pas de confirmer laquelle des deux interprétations est correcte.
Valeurs de qualité manquantes
Plusieurs effets n’ont pas les trois qualités :
Saucisson — STAMINA_BOOST
WORST: 13
GLORIOUS: 30
Suaasat — ENERGY
WORST: 1300
GLORIOUS: 2200
Gâteau d’amour — HEALTH_BOOST et ENERGY
WORST: 1
GLORIOUS: 6
Brochette du Brasier — STAMINA_BOOST
WORST: 13
GLORIOUS: 30
Brochette Marine Croquante — STAMINA_BOOST
WORST: 13
GLORIOUS: 30
Le système semble donc accepter des valeurs intermédiaires absentes, mais la liste ne précise pas comment elles sont calculées. Pour de nouveaux plats, mieux vaut définir explicitement PERFECT.
Quelques incohérences culinaires ou descriptives
La Soupe à l’oignon et à l’hitsenat est décrite comme contenant :
des tranches de porc tendre et des oignons caramélisés
mais son nom ne mentionne pas le porc.
La Brochette de Lézardeu parle de :
la tendreté du serpent
alors que l’ingrédient et le nom indiquent du Lézardeu.
Le Hachi Khaldelien devrait normalement s’écrire :
Hachis Khaldelien
sauf si Hachi est volontairement le nom officiel en jeu.
La Suaasat est décrite comme une soupe nifadanne contenant viande, racines, baies et algues. Elle constitue donc une référence importante pour les plats très nourrissants et résistants au froid.
Les catégories d’équilibrage visibles
Les plats légers ont généralement peu d’effets :
Thé à l’hitsenat
Crevette craquante
Écrasé de carottes
Soupe de carottes
Biscuit aux raisins
Viande séchée
Les plats complets ont trois ou quatre effets :
Poulet rôti au romarin
Canard au raisin
Suaasat
Cochon de lait
Brochettes
Salade Panachée
Les plats prestigieux ont jusqu’à six effets multiplicatifs :
Bœuf Wellington
Sanglier Wellington
Hachi Khaldelien
Ces trois derniers définissent donc clairement le niveau maximal attendu pour une préparation noble ou particulièrement complexe.
Je garderai cette liste comme référence des plats déjà conçus, afin d’éviter de recréer les mêmes recettes ou de produire des statistiques incohérentes avec leur niveau.
J'aimerais t'expliquer au mieux comment fonctionne le système de création de plats pour que tu comprennes tous les aspects. Et derrière, on ferait probablement quelque chose à développer sur le site pour faciliter la création de plats custom. Voilà. Donc, l'heure actuelle, est-ce que tu as des questions par rapport au système? Voilà, l'heure, il y a des ratios. Une heure, c'est 3 600, et en fonction de la qualité du plat, l'heure est plus ou moins multipliée. Ensuite, je t'envoie une photo si tu veux, pour que tu comprennes. Ensuite, on a aussi les valeurs définies. Donc il y a plusieurs états, il y a worst, il y a perfect, il y a glorieux, il y en a plein entre dans. Il y a le awesome, enfin il y a le good, awesome, il y a le normal. Tout ça en fait, quand on définit les valeurs, on définit les valeurs entre worst et le glorieux. Et entre temps, au milieu, ça fait des moyennes. Je crois qu'il y a sept états, du coup ça doit diviser par sept, bref. Mais on peut dire que pour le parfait, on vient mettre telle valeur, ou que pour le normal, on met telle valeur. Généralement, on définit au moins jusqu'au glorieux. En fait, on fait entre... ce qui est bien vu, c'est de faire le plus nul jusqu'au parfait. On définit le plus nul, on définit le parfait. La moyenne, mais pour le glorieux, on rajoute un petit truc en plus parce que les plats sont rares. On a du mal à les avoir en jeu quand on les craft parce que ces plats glorieux, on a une très faible chance de les avoir. Donc quand on en a, on veut qu'il y ait un vrai effet.
Mémoire mise à jour
Oui. Voilà ce que j’ai compris jusque-là :
FoodInfos.Duration représente une durée de base.
Cette durée est ensuite modifiée selon la qualité réellement obtenue au craft.
Les qualités suivent plusieurs paliers ordonnés, probablement sept.
On peut définir seulement certains paliers dans Values.
Le système calcule automatiquement les paliers manquants par interpolation ou moyenne.
La bonne pratique consiste à définir au moins WORST, PERFECT et GLORIOUS.
GLORIOUS reçoit volontairement un bonus supplémentaire, car cette qualité est très rare et doit réellement récompenser le joueur.
J’ai plusieurs questions importantes pour pouvoir ensuite reproduire correctement le système dans un outil web.
1. L’ordre exact des qualités
Quelle est la liste exacte des qualités, dans l’ordre de la plus mauvaise à la meilleure ?
J’ai actuellement repéré :
WORST
MEDIUM ?
NORMAL
GOOD
AWESOME
PERFECT
GLORIOUS
Est-ce bien cet ordre ? Est-ce que MEDIUM existe réellement, ou est-ce un ancien nom utilisé à la place d’un autre palier ?
2. Le nombre exact de paliers
Tu parles de sept états. Est-ce qu’il y a :
1. WORST
2. ?
3. NORMAL
4. GOOD
5. AWESOME
6. PERFECT
7. GLORIOUS
Il me manque donc potentiellement le deuxième état, à moins que MEDIUM soit celui-ci.
3. Le calcul des valeurs intermédiaires
Le calcul est-il une interpolation linéaire, avec un écart régulier entre les qualités ?
Par exemple :
WORST = 0,80
PERFECT = 1,30
Est-ce que le système répartit automatiquement la différence de manière égale entre tous les paliers situés entre WORST et PERFECT ?
Ou est-ce qu’il effectue seulement des moyennes successives entre les valeurs renseignées ?
Cette distinction est importante pour reproduire exactement le calcul sur le site.
4. Les valeurs définies manuellement au milieu
Lorsqu’on écrit :
Values:{
WORST:0.7d,
NORMAL:1.0d,
PERFECT:1.3d,
GLORIOUS:1.5d
}
Est-ce que le calcul est séparé en plusieurs segments ?
Par exemple :
interpolation de WORST à NORMAL ;
interpolation de NORMAL à PERFECT ;
interpolation de PERFECT à GLORIOUS.
Autrement dit, chaque valeur ajoutée manuellement devient-elle un nouveau point d’ancrage ?
5. Le comportement de GLORIOUS
Le palier GLORIOUS fait-il partie du calcul normal ou fonctionne-t-il comme une valeur exceptionnelle séparée ?
Par exemple, avec :
WORST = 1
PERFECT = 15
GLORIOUS = 19
les qualités jusqu’à PERFECT seraient calculées progressivement entre 1 et 15, puis GLORIOUS recevrait directement 19.
C’est ce fonctionnement que je comprends actuellement.
6. La durée d’une heure
Je veux confirmer l’unité exacte. Dans les exemples précédents :
1 heure = 3 600 000
Ainsi :
2 heures = 7 200 000
4 heures = 14 400 000
6 heures = 21 600 000
Quand tu dis « une heure, c’est 3 600 », est-ce simplement un raccourci oral, ou le système utilisé actuellement attend-il désormais 3600 au lieu de 3600000 ?
La présence du suffixe L, comme ici :
Duration:21600000L
indique pour l’instant des millisecondes.
7. Les multiplicateurs de durée selon la qualité
As-tu les multiplicateurs exacts appliqués à la durée pour chaque qualité ?
Par exemple, quelque chose comme :
WORST : ×0,50
NORMAL : ×0,80
GOOD : ×1,00
AWESOME : ×1,20
PERFECT : ×1,50
GLORIOUS : ×2,00
Ces chiffres sont uniquement un exemple. Il me faudrait les vraies valeurs.
La limite recommandée de 10 à 12 heures en glorieux signifie-t-elle qu’il faut calculer la Duration de base pour que, après multiplication, le résultat glorieux ne dépasse pas cette limite ?
8. Ce que la qualité multiplie exactement
La qualité modifie-t-elle seulement :
FoodInfos.Duration
ou également les durées suivantes ?
PersistentEffects:[{Duration:120}]
DirectEffects:[{Duration:600}]
Par exemple, un effet de potion de 120 ticks dure-t-il toujours 120 ticks, quelle que soit la qualité du plat ?
9. La syntaxe Value au singulier
Le thé à l’hitsenat utilise :
{Value:1.35d,Effect:"COLD_RESISTANCE",Operation:"MULTIPLICATION"}
alors que les autres plats utilisent :
Values:{
WORST:...,
PERFECT:...,
GLORIOUS:...
}
Est-ce que Value crée un effet fixe, identique pour toutes les qualités ?
Ce serait utile sur le site de pouvoir proposer deux modes :
Valeur fixe
Valeurs dépendantes de la qualité
10. Les valeurs manquantes
Dans plusieurs plats, on trouve seulement :
Values:{
WORST:13,
GLORIOUS:30
}
Le système accepte donc bien que PERFECT soit absent ?
Et dans ce cas, est-ce que tous les autres paliers, y compris PERFECT, sont automatiquement calculés entre WORST et GLORIOUS ?
11. Le sens exact des opérations
J’aurai besoin d’une définition précise pour chaque opération :
ADDITION
SUBTRACTION
MULTIPLICATION
DIVISION
ADDITION est assez clair pour la vie, l’énergie ou l’endurance.
En revanche, j’ai besoin de comprendre exactement des cas comme :
Effect:"EXHAUSTING",
Operation:"DIVISION",
Value:1.6
Est-ce que cela signifie que la fatigue reçue est divisée par 1,6, et qu’une valeur élevée est donc meilleure ?
Même question pour :
Effect:"DAMAGE_MODIFIER",
Operation:"DIVISION"
Une valeur de 1.25 signifie-t-elle que les dégâts sont divisés par 1.25 ?
12. Les multiplicateurs de vie et d’énergie
Comment fonctionnent exactement ces effets ?
Effect:"HEALTH_BOOST",
Operation:"MULTIPLICATION"
et :
Effect:"ENERGY",
Operation:"MULTIPLICATION"
Est-ce que cela multiplie :
la vie maximale ;
la vie actuelle ;
l’énergie maximale ;
l’énergie reçue ;
une valeur interne pendant la digestion ?
Cette distinction sera essentielle pour expliquer clairement chaque effet dans l’interface.
13. Le cumul des plats
Lorsqu’un joueur consomme plusieurs plats :
les effets se cumulent-ils ?
le dernier plat remplace-t-il le précédent ?
chaque statistique est-elle gérée séparément ?
deux multiplicateurs de vitesse peuvent-ils être actifs simultanément ?
la durée de digestion empêche-t-elle simplement de remanger ?
14. Le rôle de Weight
Que représente précisément :
Weight:1.75d
Est-ce :
le poids physique de l’item ;
la quantité remplissant l’estomac ;
une limite empêchant de manger ;
une valeur intervenant dans la fatigue ;
une valeur uniquement descriptive ?
15. Les supports d’items
Il faudra aussi déterminer pourquoi certains plats utilisent :
keldaria:dynamicfood
keldaria:onion_soup
keldaria:raisin_cookie
keldaria:sausages
keldaria:pemmican
minecraft:bread
Est-ce seulement pour obtenir le bon comportement d’utilisation et la bonne animation, ou chaque support possède-t-il des propriétés particulières ?
16. La partie craft
Pour le futur outil, il faudra ensuite détailler les règles de :
ingredients ;
destiny ;
energy ;
aptitudes ;
possibleSkills ;
crafting_time ;
Expiration ;
quantité produite avec Count.
La photo sur les qualités et les multiplicateurs serait très utile. Tu peux me l’envoyer : elle permettra notamment de fixer l’ordre exact des paliers et le calcul des valeurs intermédiaires.
Voici une image, en fait quand on met le temps, quand tu mets pour une heure, on met 3 millions 600 000, je crois, en tout cas c'est en bas à gauche, et en fait, ça définit le temps pour le plat quand il est de qualité moyenne. Mais après il y a un multiplicateur. Donc on a le multiplicateur 0,7 pour le terrible, on a le multiplicateur 0,85 pour le médiocre, le normal c'est 1,1, le bon c'est 1,15, le génial 1,3, le parfait 1,45 et le glorieux c'est 2. Par conséquent, quand on met, on définit le temps pour le plat moyen, bah pour les autres qualités de craft, ça va se faire tout seul. Mais il faut pas que le glorieux dépasse 10 heures.
Mémoire mise à jour
Parfait, c’est beaucoup plus clair. La valeur inscrite dans :
FoodInfos:{
Duration:3600000L
}
correspond à la durée du plat en qualité Moyenne, et non à une durée universelle identique pour toutes les qualités.
Multiplicateurs de durée
Qualité Multiplicateur Durée pour une base de 1 h
Terrible × 0,70 42 min
Médiocre × 0,85 51 min
Moyenne × 1,00 1 h
Normale × 1,10 1 h 06
Bonne × 1,15 1 h 09
Géniale × 1,30 1 h 18
Parfaite × 1,45 1 h 27
Glorieuse × 2,00 2 h
Il y a donc bien huit niveaux de qualité, et non sept.
Conversion correcte
1 heure = 3 600 000 ms
Donc :
30 minutes = 1 800 000
1 heure = 3 600 000
2 heures = 7 200 000
3 heures = 10 800 000
4 heures = 14 400 000
5 heures = 18 000 000
Limite des 10 heures en glorieux
Comme la qualité glorieuse applique un multiplicateur de ×2, la durée moyenne maximale autorisée doit être :
10 heures ÷ 2 = 5 heures
Donc la valeur maximale recommandée dans Duration est :
Duration:18000000L
Cela donnera :
Qualité Durée obtenue avec une base de 5 h
Terrible 3 h 30
Médiocre 4 h 15
Moyenne 5 h
Normale 5 h 30
Bonne 5 h 45
Géniale 6 h 30
Parfaite 7 h 15
Glorieuse 10 h
Cela explique aussi pourquoi certains anciens plats à :
Duration:21600000L
soit six heures moyennes, atteignent douze heures en glorieux et dépassent donc la règle actuelle.
Pour le futur site, il faudra permettre de saisir simplement une durée comme 3 h 30, la convertir automatiquement en millisecondes, afficher les huit durées calculées et signaler immédiatement quand la durée glorieuse dépasse dix heures.
La seule information qu’il me manque encore sur cette partie est le nom technique exact, dans le code, des huit qualités, en particulier celles correspondant à Médiocre et Moyenne.
Je vais répondre à la 3, puisque la 1 et 2, je t'ai envoyé un screen il n'y a pas longtemps, qui répond à ta question. Est-ce que le système répartit automatiquement la différence? Oui, ça fait la moyenne, par exemple entre le pire et le parfait, ça va faire la moyenne, et ça va diviser, du coup, ça va faire parfait moins le pire, divisé par le nombre d'états. Donc il y a l'état terrible, médiocre, moyen, normal, bon, génial, parfait. Un, deux, trois, quatre, cinq, six, sept, ça fait sept états. Donc ça va prendre la valeur parfaite moins la valeur terrible, puis ça va faire une moyenne pour le diviser, enfin, pour le répartir pour qu'il y ait vraiment une répartition linéaire entre le terrible et le parfait. Après le glorieux, généralement, on définit une valeur un peu plus supérieure. Cependant, des fois, on ne définit pas et on peut définir directement terrible à glorieux. C'est pas, voilà. Mais il y a au moins deux états définis. Et voilà. Ah oui, alors oui, s'il y a deux valeurs à rajouter entre, je sais pas, le pire et le normal, bah le médiocre qui est entre les deux, il va avoir une moyenne qui est effectuée entre les deux valeurs déjà définies, voilà. Mais voilà. Le glorieux, généralement, on le définit à part. Mais il peut être fait dans le calcul de la moyenne de huit états, du coup, si on met que l'état terrible et l'état glorieux, ça va faire la moyenne sur huit. En effet, la durée, c'est bien ça. Un 3, un 6 et 5 0. C'est bien ça. Les multiplicateurs, je peux les envoyer dans le screen également. La qualité, elle multiplie seulement la durée, voilà. Et pas les effets persistants ni les direct effects. C'est parce que le TL Sena, il n'est plus à jour. Donc tu l'ignores. Oui, on accepte bien que le perfect soit absent. L'exhausting, c'est la fatigue. En gros, quand ton personnage travaille en jeu, il se fatigue. Si tu divises la fatigue, bah il se fatigue moins vite. Les dommages, c'est pareil. On prend moins de dommages si nos dommages sont divisés. Après, les dommages peuvent être multipliés. On aime bien avoir des plats forts avec un point faible. Je te réinvite à me réécrire tes questions 12 à 16, voilà.
Mémoire mise à jour
Oui, c’est clair.
Pour les valeurs d’effets, le système fonctionne donc par interpolation linéaire entre les paliers explicitement renseignés.
Par exemple, avec :
Values:{
WORST:1,
PERFECT:13,
GLORIOUS:18
}
le système répartit automatiquement les valeurs entre WORST et PERFECT sur les sept états suivants :
Terrible
Médiocre
Moyenne
Normale
Bonne
Géniale
Parfaite
Il calcule donc :
écart = PERFECT - WORST
pas = écart ÷ 6
Il y a sept états, mais six intervalles entre le premier et le dernier.
Ici :
13 - 1 = 12
12 ÷ 6 = 2
Ce qui donnerait :
Qualité Valeur
Terrible 1
Médiocre 3
Moyenne 5
Normale 7
Bonne 9
Géniale 11
Parfaite 13
Glorieuse 18
Si un palier intermédiaire est défini, il devient un nouveau point d’ancrage. Par exemple :
Values:{
WORST:1,
NORMAL:10,
PERFECT:16,
GLORIOUS:20
}
Le système calcule séparément :
les valeurs entre WORST et NORMAL ;
puis entre NORMAL et PERFECT ;
puis utilise directement la valeur de GLORIOUS.
Et si seules WORST et GLORIOUS sont renseignées, la répartition se fait sur les huit qualités, donc sur sept intervalles.
J’ai également bien retenu ceci :
il faut au moins deux qualités définies ;
PERFECT peut être absent ;
GLORIOUS est généralement défini séparément pour lui donner un véritable bonus ;
la qualité ne multiplie que FoodInfos.Duration ;
elle ne modifie jamais la durée des PersistentEffects ou des DirectEffects ;
la syntaxe Value au singulier est ancienne et doit être ignorée ;
EXHAUSTING avec DIVISION réduit la vitesse à laquelle le personnage se fatigue ;
DAMAGE_MODIFIER avec DIVISION réduit les dégâts reçus ;
DAMAGE_MODIFIER avec MULTIPLICATION augmente les dégâts reçus et peut servir de contrepartie à un plat puissant.
Questions 12 à 16 reformulées
12. Effets multiplicatifs sur la vie et l’énergie
Quand on écrit :
{
Values:{
WORST:0.8,
PERFECT:1.3,
GLORIOUS:1.5
},
Effect:"HEALTH_BOOST",
Operation:"MULTIPLICATION"
}
qu’est-ce qui est précisément multiplié ?
la vie actuelle ;
la vie maximale ;
les soins reçus ;
une statistique temporaire liée à la digestion ?
Même question pour :
Effect:"ENERGY",
Operation:"MULTIPLICATION"
Est-ce que cela multiplie l’énergie actuelle, l’énergie maximale ou les gains et dépenses d’énergie pendant la digestion ?
13. Cumul de plusieurs aliments
Que se passe-t-il lorsqu’un personnage consomme plusieurs plats encore actifs ?
Par exemple, s’il possède déjà :
SPEED_MODIFIER ×1,10
et mange un second plat donnant :
SPEED_MODIFIER ×1,15
est-ce que :
les deux effets se multiplient ;
seul le plus puissant reste actif ;
le plus récent remplace l’ancien ;
les effets sont additionnés ;
le système traite chaque plat indépendamment ?
Même question lorsqu’un plat apporte un bonus et un autre un malus sur la même statistique.
14. Fonction exacte de Weight
À quoi correspond précisément :
Weight:1.75d
Est-ce que Weight représente :
la place prise dans l’estomac ;
le poids physique de l’aliment ;
la satiété ;
la difficulté à manger plusieurs plats ;
une valeur intervenant dans la digestion ;
autre chose ?
Et existe-t-il des bornes recommandées selon le type de nourriture, par exemple boisson, biscuit, portion légère, plat complet ou banquet ?
15. Choix de l’identifiant de l’item
Pourquoi utilise-t-on parfois :
keldaria:dynamicfood
et parfois :
keldaria:onion_soup
keldaria:water_chop
keldaria:raisin_cookie
keldaria:sausages
keldaria:pemmican
minecraft:bread
L’identifiant de base sert-il uniquement à définir :
l’animation lorsque l’objet est consommé ;
le contenant rendu ;
le son ;
la vitesse de consommation ;
le modèle tenu en main ;
le comportement de nourriture ou de boisson ?
Ou bien ces items possèdent-ils aussi des propriétés alimentaires internes qui continuent de s’appliquer malgré la présence de FoodInfos ?
16. Fonctionnement du craft complexe
Pour la création complète d’une recette, il me manque les règles précises de chaque partie :
{
"ingredients": [],
"result": "...",
"energy": 0,
"aptitudes": [],
"possibleSkills": [],
"description": "...",
"custom_data": {
"crafting_time": 0
}
}
Plus précisément :
comment est choisie la valeur de energy ;
ce que contrôlent exactement les aptitudes ;
la syntaxe et le rôle de possibleSkills ;
si le niveau indiqué est un minimum obligatoire ;
comment est calculé crafting_time ;
si la qualité dépend des aptitudes, du métier ou d’un jet aléatoire ;
comment utiliser correctement les alternatives d’ingrédients ;
comment choisir entre remove, destroy et damage_only ;
comment ajouter toolDamage ;
comment fonctionne la restitution automatique des contenants ;
comment fixer la péremption du résultat ;
si Count modifie l’équilibrage, le temps de craft ou le coût en énergie.
En fait, ça rajoute, ça multiplie les PV. Par exemple, si le plat est glorieux et qu'on le mange, si on a 100 PV, bah ils sont multipliés par 1,5. C'est la vie actuelle qui est multipliée. Non, c'est la vie maximale, la vie maximale. L'énergie, c'est pareil, chaque joueur a un pool d'énergie qui varie entre 5 000 et 11 000, et on peut multiplier l'énergie qu'il y a dans notre barre. Après t'as l'énergie régénération, tu multiplies la vitesse à laquelle tu récupères de l'énergie, tout comme S régénération, la vitesse à laquelle la vie est récupérée. Il me semble que si les plats ont le même Keldaria de points, par exemple si c'est deux Keldaria Dynamic Food, il y a neuf du deuxième plat qui est fait. Je crois que la valeur du second plat est divisée par deux tiers, je crois. Par contre, si c'est des plats différents, ça se stack. Donc c'est important pour les cuisiniers de bien gérer, mais ça, je sais pas si t'as besoin de l'information. Le poids, c'est l'estomac. L'estomac, chaque joueur a un estomac de taille entre 2 et 3. 3, c'est qu'on est très résistant, qu'on a beaucoup de PV, donc c'est les gros mangeurs, on va dire, les combattants aussi, qui ont beaucoup de résistance ou les gros travailleurs. Et ceux qui ont... ouais, on oscille entre 2 et 3. C'est la place prise dans l'estomac. Alors en effet, on a plusieurs choix d'items. Le Dynamic Food, c'est celui qui ne rend rien. Par exemple, on peut faire un pain feuilleté, on le mange, il n'y a pas de résultat, il n'y a pas d'objet qui est rendu. L'onion soup va rendre un bol. La water chop, quand tu la consommes, elle rend une tasse, une chop. Le cookie raisin, c'est un item à part. C'est juste des petits gâteaux, il ne se fait rien. Les saucisses, elles se mangent en quatre fois, je crois. Le pemican, il a un temps de péremption très lent. La bouffe, elle se périme sur Keldaria. Et le pemican, il se périme en dix ans. Il y a d'autres trucs comme les tartes à la pomme qui sont mangeables deux ou trois fois. Voilà, ça peut être intéressant. C'est pas intéressant pour les cuisiniers, parce que quand on mange le plat, on peut manger une seconde fois qu'une troisième fois. Donc en fait, au lieu de vendre trois plats, on en vend qu'un qui se mange plusieurs fois. Donc généralement, les différents bouchers, ça va permettre de manger des petits items en plusieurs fois. La valeur d'énergie, c'est nous qui la définissons. On va dire qu'on définit entre 75 et 150 la création d'un plat, sachant que les joueurs ils ont entre 5 000 et 10 000 d'énergie. L'aptitude, je vais te les donner, et les possible skills, je vais te les donner exactement. Le crafting time, alors il y a trois tables de craft en tant que cuisinier. T'as la table de craft de la table de cuisine qui donne les trucs instantanément. T'as les fours, et là on utilise le crafting time, donc c'est pareil, 3 600, ça doit être pour une minute, je crois. C'est en 10 secondes. Et après, on a la... Pour les cuisiniers, c'est tout, mais après il y a aussi les stands de cuisson de fortune, voilà. Généralement, on enlève, remove, on enlève tous les ingrédients. On enlève les ingrédients et le bol. Il est rendu en fonction du craft sélectionné. Et parfois, il n'y a pas de bol finalement, si c'est par exemple Dynamic Food. Le tool damage, je pense qu'il n'y en a pas besoin en cuisine, honnêtement. Et le count, c'est combien de plats te donne un craft, donc ça en fonction de la quantité de nourriture qu'on met.
Mémoire mise à jour
Oui, là j’ai une vision beaucoup plus concrète du système.
Ce qui est désormais clair
Les effets multiplicatifs
HEALTH_BOOST avec MULTIPLICATION agit sur la vie maximale pendant la durée du plat.
100 PV × 1,5 = 150 PV maximum
ENERGY avec MULTIPLICATION agit de la même manière sur le pool d’énergie du joueur, qui se situe généralement entre environ 5 000 et 11 000.
Les effets de régénération modifient, eux, la vitesse de récupération :
HEALTH_REGEN_BOOST
multiplie la vitesse de régénération de vie.
ENERGY_REGEN_BOOST
multiplie la vitesse de régénération d’énergie.
Et de la même façon :
STAMINA_REGEN_BOOST
doit multiplier la vitesse de récupération de l’endurance.
Le cumul des aliments
Des plats reposant sur des items de base différents peuvent se cumuler.
En revanche, lorsque deux plats utilisent le même support, par exemple deux :
keldaria:dynamicfood
le second effet semble subir une réduction. Tu évoques une valeur ramenée aux deux tiers, mais comme tu n’en es pas totalement certain, je considère ce point comme à confirmer, et non comme une règle définitive.
C’est une information importante pour les cuisiniers, mais aussi pour le futur outil : il pourrait avertir que plusieurs recettes utilisant le même support risquent de moins bien se cumuler.
Le poids et l’estomac
Weight:1.75d
représente la place prise par l’aliment dans l’estomac.
La capacité totale d’un personnage oscille approximativement entre :
2 et 3
Les personnages robustes, résistants, combattants ou grands travailleurs peuvent se rapprocher d’une capacité de 3.
Cela permet déjà de construire des catégories cohérentes :
Type de portion Poids indicatif observé
Petite bouchée ou biscuit 0.10 à 0.20
Boisson légère autour de 0.10
Petite portion 0.40 à 0.80
Plat léger 0.80 à 1.20
Plat complet 1.20 à 1.75
Ces bornes sont une déduction tirée des exemples que tu m’as donnés, pas encore une règle officielle.
Le choix de l’item support
L’identifiant utilisé n’est donc pas seulement esthétique. Il détermine le comportement de l’objet.
keldaria:dynamicfood
consommé normalement ;
ne rend aucun contenant ;
adapté aux pains, feuilletés, brochettes et plats solides personnalisés.
keldaria:onion_soup
agit comme un plat servi dans un bol ;
rend un bol après consommation.
keldaria:water_chop
agit comme une boisson ;
rend une chope ou une tasse après consommation.
Items consommables plusieurs fois
Certains supports possèdent plusieurs utilisations :
saucisses ;
tartes ;
probablement d’autres préparations spécifiques.
Ils peuvent être mangés en plusieurs portions avant de disparaître. Cela peut être désavantageux commercialement pour un cuisinier, puisqu’un seul objet remplace plusieurs ventes potentielles.
keldaria:pemmican
Le pemmican possède une durée de conservation exceptionnelle, de l’ordre de dix ans. Son intérêt principal est donc sa péremption très lente.
Le futur outil devra présenter chaque support avec ses propriétés :
Contenant rendu
Nombre de consommations
Péremption particulière
Type d’animation
Empilabilité avec les autres plats
Le coût en énergie du craft
La valeur :
"energy": 100
est choisie manuellement.
Pour une recette culinaire, la plage habituelle est environ :
75 à 150 points d’énergie
Comparée aux 5 000 à 11 000 points possédés par un joueur, cela représente un coût mesuré, mais suffisamment important lorsque plusieurs plats sont produits successivement.
Il faudra probablement relier ce coût à :
la complexité du plat ;
le nombre d’ingrédients ;
la quantité produite ;
le temps de préparation ;
le prestige de la recette.
Les postes de cuisine
J’ai compris qu’il existe au moins trois environnements :
Table de cuisine
Les recettes sont obtenues instantanément. Il n’y a vraisemblablement pas besoin de :
"custom_data": {
"crafting_time": ...
}
Four
Le craft utilise un temps de cuisson avec :
"custom_data": {
"crafting_time": ...
}
Stand de cuisson de fortune
Il sert aux préparations réalisées hors d’une cuisine équipée, probablement avec ses propres recettes ou contraintes.
L’unité exacte de crafting_time reste à confirmer. Les exemples précédents utilisaient :
"crafting_time": 36000
mais tu hésites encore entre une correspondance en minutes ou en tranches de dix secondes. Je ne vais donc pas inventer de conversion pour le moment.
Les ingrédients
En cuisine, le comportement ordinaire sera généralement :
"destiny": "remove"
Les ingrédients sont retirés, et le système restitue automatiquement certains contenants lorsqu’ils en possèdent un.
damage_only et toolDamage semblent peu utiles pour les recettes culinaires habituelles, sauf éventuellement si un jour une recette exige un ustensile réutilisable.
La quantité produite
Count:2b
indique le nombre de portions données par une exécution du craft.
Cette quantité doit être cohérente avec les ingrédients utilisés. Par exemple, une grande quantité de pâte ou de viande peut produire plusieurs biscuits, saucisses ou brochettes.
Les points qu’il reste à définir
Il me manque maintenant surtout quatre informations précises :
La syntaxe exacte et le rôle des aptitudes.
La syntaxe exacte et le rôle des possibleSkills.
L’unité et le calcul exacts de crafting_time.
Le comportement exact lorsqu’on cumule deux plats utilisant le même item support.
Pour le futur site, on peut déjà envisager un formulaire qui demanderait le type de plat, le support, la durée moyenne, le poids, les effets, les paliers de qualité, le coût du craft, le poste de cuisine, les ingrédients et le nombre de portions, puis générerait automatiquement le SNBT et le JSON complets.
En soi, on s'en fout. Nous, on fait nos plats, on prend des stats. Après, si le joueur décide de manger deux fois le même plat, peu importe pour nous. On n'a pas besoin de le savoir. Nous, on veut juste pouvoir faire des crafts. Et pour ça, il faut connaître le système. Après, si tu veux qu'un joueur veuille optimiser ses crafts, à lui de le faire. C'est pas à toi ni à moi. Ça me paraît bien ce que tu proposes pour les portions. Ouais, je te donnerai les contenants rendus, etc., etc. Je dois avoir ça. Et je te donnerai également les autres plats, types de plats qui ont des effets particuliers. Finalement, on fait des crafts simples sur la table de cuisine et des crafts complexes qui demandent un temps sur le four. Malheureusement time, je suis quasi sûr que c'est en milliseconde en fait. Donc vas-y, fais par rapport... J'ai fait des plats, genre le crabe sur le feu là, c'est vraiment rapide en soi, c'est moins d'une minute je crois, donc prends ça. Après, destiny remove, c'est surtout peut-être pour, normalement, dans les crafts complexes, tous les trucs sont consommés dans tous les cas. Tu craft, ça s'enlève de ton inventaire. Donc je sais pas pourquoi le joueur il a demandé les destiny en fait, je sais pas à quoi ça sert. Le tool domain, ça peut être intéressant si on utilise une poêle, parce qu'il y a la poêle de cuisson sur Caldaria. Je t'envoie les aptitudes et les possible skills.
Mémoire mise à jour
Oui, on recentre bien l’objectif : créer des recettes valides et équilibrées, pas gérer la manière dont les joueurs optimisent ensuite leurs consommations.
Je retiens donc cette structure :
Crafts simples
Réalisés sur la table de cuisine.
résultat instantané ;
pas de temps de cuisson ;
probablement adaptés aux assemblages, découpes, mélanges froids, salades, pâtes, préparations simples.
Crafts complexes
Réalisés au four.
utilisent crafting_time ;
ce temps semble bien être exprimé en millisecondes ;
l’exemple du crabe avec :
"crafting_time": 36000
correspondrait donc à 36 secondes, ce qui colle avec une cuisson très rapide, inférieure à une minute.
Quelques repères :
10 secondes = 10000
30 secondes = 30000
1 minute = 60000
2 minutes = 120000
5 minutes = 300000
10 minutes = 600000
destiny
Pour le moment, je ne considère pas destiny comme obligatoire.
Dans un craft complexe classique, les ingrédients sont déjà retirés de l’inventaire. Il faudra donc vérifier si :
"destiny": "remove"
sert seulement à forcer ou préciser ce comportement, notamment pour la restitution automatique d’un contenant.
En revanche, ceci pourrait devenir utile pour les ustensiles :
{
"id": "keldaria:frying_pan",
"number": 1,
"destiny": "damage_only",
"toolDamage": 1,
"meta": -1
}
La poêle resterait dans l’inventaire, mais s’abîmerait à chaque utilisation.
Pour l’outil web, on pourra probablement masquer complètement destiny dans le mode normal et proposer une option avancée seulement pour :
les contenants ;
les ustensiles réutilisables ;
les objets devant être détruits sans restitution.
Tu peux maintenant m’envoyer les aptitudes et les possibleSkills. Je les intégrerai sans extrapoler au-delà des informations que tu me donnes.
Voici la version simplifiée :
---
Système des crafts complexes – KeldariaAptitudes
Les aptitudes sont renseignées dans le champ aptitudes.
"aptitudes": [
"art=1",
"intelligence=3",
"dexterity=2",
"strength=1"
]
Aptitudes disponibles
art : 1 uniquement (obligatoire pour tout craft custom)
strength : 0 → 6
intelligence : 0 → 6
agility : 0 → 6
resistance : 0 → 6
dexterity : 0 → 3
---
possibleSkills
Le champ possibleSkills permet de définir une ou plusieurs conditions alternatives.
Chaque entrée est interprétée comme un OU.
Par exemple :
"possibleSkills": [
"cook:2",
"cooking"
]
signifie :
être cuisinier niveau 2, OU
posséder le complément cooking.
Le joueur n'a pas besoin des deux.
---
Métiers (Jobs)
Les métiers possèdent 3 niveaux :
1 = Novice
2 = Intermédiaire
3 = Maître
Liste des métiers :
blacksmith
breeder
cook
dressmaker
farmer
lumberjack
miner
woodworker
Exemple :
"possibleSkills": [
"blacksmith:3"
]
---
Compléments
Les compléments n'ont pas de niveau.
Liste disponible :
ancient_language
beekeeping
breeding
butchering
cooking
distillation
excavation
farming
felling
fishing
hunting
jewelry
mending
music
picking
pottery
riding
survival
toolmaking
Exemple :
"possibleSkills": [
"distillation"
]
---
Exemples
Uniquement un métier
"possibleSkills": [
"cook:2"
]
Uniquement un complément
"possibleSkills": [
"cooking"
]
Métier OU complément
"possibleSkills": [
"cook:2",
"cooking"
]
Cela signifie :
> Cuisinier niveau 2 OU complément Cuisine.
---
Exemple complet
{
"aptitudes": [
"art=1",
"intelligence=3",
"dexterity=2",
"strength=1"
],
"possibleSkills": [
"cook:2",
"cooking"
]
}
Cette structure correspond au fonctionnement actuel des crafts complexes de Keldaria.
Mémoire mise à jour
Parfait. Cette version fixe clairement les règles des prérequis d’un craft complexe.
Aptitudes
Le champ utilise cette forme :
"aptitudes": [
"art=1",
"intelligence=3",
"dexterity=2",
"strength=1"
]
Les aptitudes disponibles sont :
Aptitude Valeurs autorisées
art 1 uniquement
strength 0 à 6
intelligence 0 à 6
agility 0 à 6
resistance 0 à 6
dexterity 0 à 3
art=1 est obligatoire pour tout craft custom.
Les aptitudes présentes dans la liste semblent, contrairement aux possibleSkills, être des conditions cumulatives : le joueur doit donc répondre à toutes les aptitudes renseignées.
possibleSkills
Chaque entrée correspond à une condition alternative.
"possibleSkills": [
"cook:2",
"cooking"
]
signifie :
Cuisinier intermédiaire OU complément Cuisine
Ce n’est jamais un ET.
Métiers
Les métiers possèdent trois niveaux :
1 = Novice
2 = Intermédiaire
3 = Maître
Syntaxe :
"cook:2"
Métiers disponibles :
blacksmith
breeder
cook
dressmaker
farmer
lumberjack
miner
woodworker
Compléments
Les compléments ne possèdent aucun niveau.
Syntaxe :
"cooking"
Compléments disponibles :
ancient_language
beekeeping
breeding
butchering
cooking
distillation
excavation
farming
felling
fishing
hunting
jewelry
mending
music
picking
pottery
riding
survival
toolmaking
Conséquence pour le futur outil
L’interface devra séparer nettement les deux blocs.
Pour les aptitudes, elle pourra afficher des champs numériques avec leurs limites, ajouter automatiquement art=1, puis générer une liste cumulative.
Pour les compétences, elle devra permettre d’ajouter plusieurs choix dans une liste clairement présentée comme :
Au moins une de ces conditions doit être remplie
Un choix de métier devra afficher un niveau de 1 à 3. Un complément ne devra jamais afficher de niveau.
Exemple généré :
{
"aptitudes": [
"art=1",
"intelligence=3",
"dexterity=2",
"strength=1"
],
"possibleSkills": [
"cook:2",
"cooking"
]
}
À ce stade, les prérequis de craft sont suffisamment définis pour être intégrés proprement au cahier des charges du générateur.
Mais tu, tu peux ajouter stonecutter, tu peux ajouter builder.
Mémoire mise à jour
Oui. La liste complète des métiers devient :
blacksmith
breeder
builder
cook
dressmaker
farmer
lumberjack
miner
stonecutter
woodworker
Ils gardent tous les mêmes niveaux :
1 = Novice
2 = Intermédiaire
3 = Maître
Exemples :
"possibleSkills": [
"builder:2"
]
"possibleSkills": [
"stonecutter:3"
]
Ajoute également le métier apoticary dans les métiers.
Mémoire mise à jour
Ajouté. La liste des métiers comprend désormais aussi :
apoticary
Exemple :
"possibleSkills": [
"apoticary:2"
]
Avec les mêmes niveaux :
1 = Novice
2 = Intermédiaire
3 = Maître
il faudra rajouter papetier et premiers soins dans les compléments.
Mémoire mise à jour
Ajoutés aux compléments :
papetier
premiers soins
Il me faudra simplement les identifiants techniques exacts à mettre dans possibleSkills, puisque les autres compléments utilisent des noms anglais comme cooking ou first_aid.
Parfait, avec cette nouvelle liste, il faut mettre à jour la documentation.
Métiers (Jobs)
Les métiers possèdent 3 niveaux :
1 = Novice
2 = Intermédiaire
3 = Maître
Liste des métiers :
blacksmith
breeder
builder
cook
dressmaker
farmer
lumberjack
miner
stonecutter
woodworker
apothecary
---
Compléments
Les compléments n'ont pas de niveau.
Liste disponible :
alchemy
ancient_language
beekeeping
breeding
butchering
climbing
cooking
distillation
elemental_magic
excavation
fae
farming
felling
first_aid
fishing
hunting
jewelry
mending
mist_guardian
music
navigation
necromancy
occultism
papermaker
picking
pottery
riding
survival
tinkering
toolmaking
vampirism
Mémoire mise à jour
Métiers (Jobs)
Les métiers possèdent trois niveaux :
1 = Novice
2 = Intermédiaire
3 = Maître
Liste des métiers disponibles :
blacksmith
breeder
builder
cook
dressmaker
farmer
lumberjack
miner
stonecutter
woodworker
apothecary
Exemple :
"possibleSkills": [
"apothecary:2"
]
Cela demande le métier Apothicaire de niveau intermédiaire.
Compléments
Les compléments ne possèdent aucun niveau.
Liste disponible :
alchemy
ancient_language
beekeeping
breeding
butchering
climbing
cooking
distillation
elemental_magic
excavation
fae
farming
felling
first_aid
fishing
hunting
jewelry
mending
mist_guardian
music
navigation
necromancy
occultism
papermaker
picking
pottery
riding
survival
tinkering
toolmaking
vampirism
Exemple :
"possibleSkills": [
"first_aid"
]
Cela demande le complément Premiers soins.
Métier ou complément
Chaque entrée de possibleSkills est une condition alternative.
"possibleSkills": [
"apothecary:2",
"alchemy",
"first_aid"
]
Cela signifie :
Apothicaire intermédiaire OU Alchimie OU Premiers soins.
Le joueur n’a besoin de remplir qu’une seule des conditions.
Est-ce que tu as des questions sur le reste?
Oui, il reste surtout quelques points techniques nécessaires pour pouvoir générer des crafts fiables.
1. Noms techniques des huit qualités
Je connais leur ordre :
Terrible → Médiocre → Moyenne → Normale → Bonne → Géniale → Parfaite → Glorieuse
Mais il me faut les identifiants exacts utilisés dans Values. J’ai déjà vu :
WORST
NORMAL
GOOD
AWESOME
PERFECT
GLORIOUS
Il manque notamment les identifiants correspondant à Médiocre et Moyenne.
2. Liste définitive des effets
Il faudrait confirmer la liste complète des valeurs autorisées dans :
Effect:"..."
Je connais actuellement :
HEALTH_BOOST
ENERGY
STAMINA_BOOST
HEALTH_REGEN_BOOST
ENERGY_REGEN_BOOST
STAMINA_REGEN_BOOST
SPEED_MODIFIER
STRENGTH_MODIFIER
DAMAGE_MODIFIER
EXHAUSTING
COLD_RESISTANCE
HEAT_RESISTANCE
Il faudrait aussi préciser, pour chaque effet, les opérations autorisées et les bornes recommandées.
3. Différence exacte entre craft simple et craft complexe
Est-ce que le craft simple utilise une structure totalement différente, ou est-ce essentiellement le même JSON sans :
"custom_data": {
"crafting_time": 36000
}
Il faudrait également connaître les commandes exactes et les identifiants des postes de travail : table de cuisine, four et stand de cuisson de fortune.
4. Syntaxe définitive des ingrédients
Il faudrait confirmer les trois formes autorisées :
"keldaria:butter=0/1"
[
"keldaria:butter=0/1",
"keldaria:animal_grease=0/1"
]
{
"id": "keldaria:frying_pan",
"number": 1,
"meta": -1,
"destiny": "damage_only",
"toolDamage": 1
}
Et surtout déterminer le comportement par défaut lorsqu’aucun destiny n’est indiqué.
5. Supports alimentaires
Tu dois encore me transmettre la liste des items utilisables comme support, avec pour chacun :
contenant rendu ;
nombre de consommations ;
comportement particulier ;
péremption spéciale éventuelle.
Par exemple :
keldaria:dynamicfood
keldaria:onion_soup
keldaria:water_chop
keldaria:sausages
keldaria:pemmican
6. Péremption
Je sais que :
Expiration:10
correspond à dix jours keldariens. Il reste à confirmer :
l’emplacement exact du tag dans tous les résultats ;
ce qui arrive lorsqu’il est absent ;
si certains supports imposent leur propre péremption ;
si la péremption commence au craft ou à la première utilisation.
7. Effets directs et persistants
Il faudrait documenter la structure exacte :
PersistentEffects:[
{
ShowParticles:0b,
Duration:120,
Id:71
}
]
et :
DirectEffects:[
{
Duration:600,
Id:0
}
]
Notamment l’unité de Duration, la liste des identifiants utilisables et la différence précise entre un effet direct et un effet persistant.
8. Règles d’équilibrage
Enfin, pour que le site aide réellement à créer les plats, il faudra savoir si tu souhaites des limites simplement informatives ou de vraies alertes, par exemple :
Durée glorieuse supérieure à 10 h
Poids supérieur à la capacité maximale d’un estomac
Valeur d’effet hors des bornes recommandées
Coût énergétique inférieur à 75 ou supérieur à 150
Absence de art=1
Moins de deux qualités définies
Une fois ces points renseignés, le fonctionnement essentiel du générateur sera pratiquement complet.
Alors du coup, c'est awful pour médiocre et c'est médium pour moyen. Les bornes, je les ai mises dans le document source, elles y sont. Tu regardes dans le document source, dis-moi si tu as bien trouvé. Et la liste complète des valeurs autorisées, c'est également dans le document source. Parce que c'est pas parce que je t'ai donné ces trucs-là qu'elles sont toutes autorisées. Un craft simple, c'est juste qu'il y a une interface en jeu pour les faire, et nous, on va surtout se concentrer sur le, enfin, on va se concentrer sur, les crafts simples, si tu veux, t'as pas besoin de renseigner les aliments. Tu les prends dans ton inventaire, tu cliques ajouter, enfin. Il y a juste à produire le JSON final avec le bol, le skin, les effets. Mais t'as pas besoin de dire quels aliments on utilise, ni quel métier, ni les possibles skins, ni ceci, ni cela. Je t'enverrai une photo de l'interface pour te montrer comment se présentent les crafts simples. Les crafts complexes, tout est en JSON. En fait, les crafts simples, il y a juste une partie qui n'est pas en JSON, qui est interactive. En effet, ce sont les trois formes autorisées. Bah, quand des signes n'est pas indiqué, bah, ça supprime, ça l'enlève de l'inventaire au moment du craft.
Mémoire mise à jour
Oui, j’ai bien trouvé le tableau dans le document source. Il donne la liste des effets autorisés pour les plats custom, avec les opérations possibles et leurs bornes. Je ne prendrai donc pas automatiquement comme autorisées toutes les opérations observées dans les anciens aliments plus bas dans le document.
Qualités
L’ordre technique complet est désormais :
WORST = Terrible
AWFUL = Médiocre
MEDIUM = Moyen
NORMAL = Normal
GOOD = Bon
AWESOME = Génial
PERFECT = Parfait
GLORIOUS = Glorieux
Effets autorisés et bornes
Effet Opération autorisée Bornes
COLD_RESISTANCE MULTIPLICATION 1.05 → 1.75
HEAT_RESISTANCE MULTIPLICATION 0.80 → 1.70
DAMAGE_MODIFIER DIVISION 0.80 → 1.25
DAMAGE_MODIFIER MULTIPLICATION 1.0 → 2.0 — malus
ENERGY ADDITION 0 → 2200
ENERGY MULTIPLICATION 0.80 → 1.80
ENERGY_REGEN_BOOST MULTIPLICATION 0.80 → 1.60
EXHAUSTING DIVISION 0.70 → 1.75
HEALTH_BOOST ADDITION -1.5 → 19
HEALTH_BOOST MULTIPLICATION 0.80 → 1.50
HEALTH_REGEN_BOOST MULTIPLICATION 0.85 → 1.30
SPEED_MODIFIER MULTIPLICATION 0.65 → 1.0.7 dans le document
SPEED_MODIFIER ADDITION -0.01 → -0.03 — ralentissement
STAMINA_BOOST ADDITION 1 → 30
STAMINA_REGEN_BOOST MULTIPLICATION 0.90 → 1.30
STRENGTH_MODIFIER MULTIPLICATION 0.90 → 1.15
Il y a donc douze effets alimentaires autorisés dans ce tableau.
La seule valeur ambiguë est :
SPEED_MODIFIER — MULTIPLICATION : 0.65 → 1.0.7
Le document écrit réellement 1.0.7. Cela ressemble à une faute de saisie, probablement 1.07, mais je ne la corrige pas définitivement sans ta confirmation.
Crafts simples et complexes
J’ai également compris la distinction :
Craft simple : les ingrédients sont sélectionnés directement dans l’interface en jeu. Notre partie consiste principalement à produire le résultat final : item support, nom, lore, skin, durée, poids et effets.
Craft complexe : toute la recette est décrite en JSON : ingrédients, résultat, énergie, aptitudes, compétences possibles et temps de fabrication.
Et lorsqu’aucun destiny n’est précisé, l’ingrédient est simplement retiré de l’inventaire au moment du craft. destiny ne sera donc nécessaire que pour les comportements particuliers, comme une poêle à abîmer ou un contenant à détruire sans restitution.
Après l'expiration, c'est vraiment pour définir que ça expire en X jours. C'est très peu utilisé finalement et c'est que dans les crafts complexes. C'est une option. Mais sinon, c'est le jeu qui compte lui-même. Nous, on n'y touche pas du tout. Mais ça serait une option de définir en combien de temps il périme. Mais vraiment, pas nécessairement quoi. Les effets, tu oublies. C'est pour les plus expérimentés d'entre nous. On n'en mettra pas dans le générateur de craft json. Durée glorieuse supérieure à 10 heures, bah on l'interdira simplement. On va dire que c'est 11 ou 12 heures le max. Quand les effets sont hors des bornes, le craft vous indique que c'est trop haut. Je pense qu'on fera des menus déroulants qui interdiront de monter trop haut, tu vois. Et l'écoénergétique également, il y aura un minimum et les joueurs ne pourront pas choisir. L'absence de art, ce sera forcément obligatoire. Pour la vitesse, c'est 1,07, d'accord, pour ton information. Ou 1.07, ouais. Merci Adam. Je t'envoie l'interface, dis-moi, fais-moi une liste encore de questions à poser.
Mémoire mise à jour
Envoie-moi l’interface. Avec ce que tu viens de préciser, les questions restantes vraiment utiles sont celles-ci :
Questions restantes pour le générateur
Limite exacte de durée glorieuse
Il faut choisir une règle définitive : maximum de 11 heures ou de 12 heures. Le générateur bloquera automatiquement toute durée moyenne qui dépasserait cette limite après le multiplicateur ×2.
Bornes exactes du coût énergétique
Tu as indiqué environ 75 à 150. Est-ce que ce seront les limites définitives, ou faut-il plusieurs plages selon la complexité du plat ?
Structure exacte d’un craft simple
L’image devra montrer quels champs sont renseignés dans l’interface et quelle partie JSON est réellement produite : nom, lore, support, modèle, poids, durée, effets, quantité, etc.
Commande exacte de création
Pour les crafts complexes, il faut confirmer la commande complète et les identifiants exacts des postes :
/exchange newCraft ...
Notamment le nom technique du four, de la table de cuisine et du stand de cuisson de fortune.
Liste des supports alimentaires
Pour chacun, il faudra noter :
contenant rendu ;
nombre de consommations ;
péremption particulière ;
comportement spécial ;
type de nourriture adapté.
Valeurs par défaut du modèle
Est-ce que le générateur doit toujours produire :
BuiltInTransforms:"item"
CustomModel:{
Size:0.5d,
ChildModels:[],
Transforms:"T(0.0,0.0,0.0)",
Url:"..."
}
Ou certains champs changent-ils selon le support ?
Poids autorisé
Il faudrait fixer une borne minimale et maximale pour Weight, ainsi que les plages proposées dans le menu : bouchée, boisson, petite portion, plat léger, plat complet, festin.
Valeurs de qualité obligatoires
On sait qu’il faut au moins deux états. Pour simplifier l’outil, est-ce qu’on impose par défaut :
WORST
PERFECT
GLORIOUS
avec la possibilité d’ajouter des points intermédiaires, ou autorise-t-on librement n’importe quelle combinaison de deux qualités ?
Affichage des valeurs interpolées
Le site doit-il afficher automatiquement les huit valeurs calculées, même si seules deux ou trois sont inscrites dans le JSON final ?
Gestion des ingrédients avancés
Est-ce que destiny, damage_only, destroy et toolDamage apparaissent directement, ou seulement dans un menu « options avancées » pour les poêles et ustensiles ?
Gestion de Expiration
Il faut confirmer son emplacement exact dans le résultat final, ainsi qu’une éventuelle limite minimale ou maximale en jours keldariens.
Quantité produite
Count est-il totalement libre, ou faut-il limiter la quantité selon le type de plat ? Par exemple, un plat complet produirait rarement dix portions, alors que des biscuits le peuvent.
Temps de fabrication complexe
Même si l’unité est en millisecondes, il faudrait déterminer les limites proposées : par exemple de 10 secondes à plusieurs minutes, avec saisie en minutes et secondes puis conversion automatique.
Format de sortie attendu
Le générateur doit-il fournir :
uniquement le JSON du craft ;
uniquement le SNBT du résultat ;
les deux séparément ;
ou directement la commande complète prête à coller ?
Validation des textes
Il faudra décider comment gérer automatiquement :
les guillemets ;
les apostrophes ;
les retours à la ligne ;
les codes couleurs § ;
les caractères spéciaux ;
les URL contenant une erreur.
Les DirectEffects, PersistentEffects, le cumul des plats et l’optimisation des joueurs peuvent désormais être complètement exclus du générateur standard.
Les crafts simples, ils apparaissent comme cela. Je t'envoie une image. La limite max pour les plats glorieux, c'est 12R. borne exacte, 75 à 200. Limite définitive. Je vais t'envoyer un exemple également de craft simple.
Mémoire mise à jour
Parfait. Je retiens les limites définitives suivantes :
Durée maximale en GLORIOUS : 12 heures
Coût énergétique : 75 à 200
Puisque GLORIOUS applique un multiplicateur de ×2, la durée moyenne maximale autorisée sera donc :
6 heures = 21 600 000 ms
Le générateur devra empêcher toute valeur supérieure à :
Duration:21600000L
Pour l’énergie, le champ sera limité entre :
"energy": 75
et :
"energy": 200
Envoie-moi maintenant l’image de l’interface des crafts simples et l’exemple correspondant. Je pourrai comparer précisément ce qui est renseigné manuellement dans l’interface et ce qui doit être généré dans le JSON final.
{id:"keldaria:onion_soup",Count:1b,tag:{display:{Lore:[""],Name:"§6Soupe de tomates"},BuiltInTransforms:"item",FoodInfos:{Duration:7200000L,PersistentEffects:[],DirectEffects:[],Weight:0.79d,FoodEffects:[{Values:{WORST:-1.5d,PERFECT:4.0d,GLORIOUS:6.0d},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:0.95d,PERFECT:1.06d,GLORIOUS:1.08d},Effect:"SPEED_MODIFIER",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/bx39v.png"}},Damage:0s}
Donc ça, c'est un craft simple, tu vois, c'est juste ce qu'on renseigne en bas à droite de l'image que je t'envoie.
Mémoire mise à jour
Oui, c’est clair maintenant.
Pour un craft simple, le site ne doit générer que le NBT complet de l’item résultat, c’est-à-dire exactement ce qui est collé dans la zone en bas à droite de l’interface :
{id:"keldaria:onion_soup",Count:1b,tag:{display:{Lore:[""],Name:"§6Soupe de tomates"},BuiltInTransforms:"item",FoodInfos:{Duration:7200000L,PersistentEffects:[],DirectEffects:[],Weight:0.79d,FoodEffects:[{Values:{WORST:-1.5d,PERFECT:4.0d,GLORIOUS:6.0d},Effect:"HEALTH_BOOST",Operation:"ADDITION"},{Values:{WORST:0.95d,PERFECT:1.06d,GLORIOUS:1.08d},Effect:"SPEED_MODIFIER",Operation:"MULTIPLICATION"}]},CustomModel:{Size:0.5d,ChildModels:[],Transforms:"T(0.0,0.0,0.0)",Url:"http://keldaria.fr/skinhosting/dsc/428/bx39v.png"}},Damage:0s}
Tout le reste est géré directement dans l’interface en jeu :
choix des ingrédients ;
quantités ;
statistiques et aptitudes demandées ;
métier requis ;
niveau du métier ;
coût énergétique.
Donc, pour un craft simple, le générateur ne doit pas produire :
"ingredients"
"energy"
"aptitudes"
"possibleSkills"
"description"
"custom_data"
"crafting_time"
Il doit uniquement permettre de renseigner :
l’item support ;
la quantité obtenue ;
le nom ;
le lore ;
la durée moyenne ;
le poids ;
les effets alimentaires ;
les valeurs par qualité ;
l’opération ;
l’URL du modèle ;
éventuellement les paramètres du modèle.
Puis il génère le SNBT prêt à coller dans « NBT de l’Item résultat ».
La structure centrale commune aux crafts simples et complexes est donc le même item final. La différence est que, dans un craft complexe, ce SNBT est placé dans :
"result": "..."
alors que, dans un craft simple, il est collé directement dans l’interface.
Est-ce que tu as d'autres questions auxquelles je n'ai pas répondu juste avant? Refais-moi la liste.
Oui. Après toutes tes réponses, il reste surtout ces points précis :
La liste des items supports, avec leur comportement :
contenant rendu ;
nombre de consommations ;
péremption particulière ;
éventuelle propriété spéciale.
Les identifiants exacts des postes de craft complexe et la commande complète. Par exemple, est-ce que tous les crafts au four utilisent :
/exchange newCraft cooking_stand complex
ou existe-t-il plusieurs identifiants selon le four ou le stand de fortune ?
La portée de art=1. La documentation indique qu’il est obligatoire pour tout craft custom, mais l’interface du craft simple affiche Art : 0. Est-ce que art=1 est obligatoire uniquement dans les crafts complexes, ou l’interface simple autorise-t-elle réellement 0 ?
Les aptitudes à zéro dans un craft complexe. Doit-on les omettre :
"aptitudes": [
"art=1",
"intelligence=3"
]
ou les écrire quand même :
"aptitudes": [
"art=1",
"intelligence=3",
"strength=0",
"agility=0"
]
Le poids : souhaites-tu une véritable limite technique dans le générateur, ou seulement les catégories indicatives que nous avons établies ? Par exemple : bouchée, boisson, petite portion, plat léger, plat complet et festin.
Le crafting_time :
durée minimale autorisée ;
durée maximale autorisée ;
saisie souhaitée sur le site en secondes/minutes, avec conversion automatique en millisecondes.
L’option Expiration :
son emplacement exact dans le NBT du résultat ;
une éventuelle valeur minimale ou maximale ;
si le générateur affiche simplement une case facultative « Péremption personnalisée ».
Les valeurs meta des ingrédients :
meta:0 impose-t-il précisément la métadonnée 0 ?
meta:-1 accepte-t-il toutes les métadonnées ?
faut-il proposer ce réglage dans les options avancées ?
Le champ description du craft complexe : est-ce une description interne visible seulement dans l’administration, ou un texte visible par le joueur ? Peut-elle être différente du lore de l’item ?
Le nom technique du craft utilisé dans la commande : quelles contraintes possède-t-il ? Espaces interdits, accents interdits, identifiant unique, usage de _, etc.
Count : la quantité produite est-elle totalement libre, ou souhaites-tu fixer une limite maximale dans le générateur ?
Les paramètres du modèle : dans la majorité des cas, devons-nous imposer automatiquement :
BuiltInTransforms:"item",
CustomModel:{
Size:0.5d,
ChildModels:[],
Transforms:"T(0.0,0.0,0.0)",
Url:"..."
}
et ne demander à l’utilisateur que l’URL, ou faut-il permettre de modifier Size, BuiltInTransforms et Transforms ?
20428.png
20429.png
Pour les aptitudes à zéro, tu dois les omettre. La portée R dans tous les cas, même si c'est marqué zéro sur une des photos, les joueurs sont obligés de la mettre à un. Ils ont pas le choix. Il y a un staff qui repasse derrière pour vérifier le craft. Le poids, il y a pas de technique limite, faut quand même que ça soit cohérent, mais il y a pas de technique. Il y a pas de limite technique. En tout cas, un plat, c'est entre, je sais pas, tout dépend en fait. Mais maximum, on va dire que c'est 1,75. Le crafting time, bah on va dire, c'est entre une et trois minutes. OK, donc l'expiration, tu peux le mettre en option. Mais il y a pas de limite, etc. Mais c'est pour les staffs, principalement. Moi, ça accepte toutes les métas, je crois. Oui, tu peux le mettre. Tu peux mettre, ça accepte tous les ingrédients, toutes les variantes d'un même ingrédient, une pomme mûre, une pomme pas mûre par exemple. Si la pomme mûre c'est zéro et la pomme pas mûre c'est un, eh ben si on met moins un, ça accepte les deux. La description, elle sera visible en haut à droite dans la fenêtre de craft. Donc c'est pas plus mal de la mettre, en soi il faudrait qu'elle soit mise. Il y a pas d'espace dans le nom technique du craft. Après oui, dans la commande exchange du craft cooking stand, eh ben ça va être cooking furnace ou alors cooking table. Je t'enverrai les commandes exactes tout à l'heure, mais mets-le dans la to-do list, souviens-toi. La quantité, on peut laisser l'utilisateur décider. On peut modifier size et le build transform, etc.
Mémoire mise à jour
Oui, ça répond à presque tout. Il y a surtout une correction importante : l’identifiant de la qualité Médiocre est POOR, pas AWFUL.
Qualités exactes du code
Qualité Identifiant Multiplicateur de durée statMultiplier
Terrible WORST 0.70 0.65
Médiocre POOR 0.85 0.75
Moyenne MEDIUM 1.00 0.85
Normale NORMAL 1.10 0.95
Bonne GOOD 1.15 1.05
Géniale AWESOME 1.30 1.15
Parfaite PERFECT 1.45 1.25
Glorieuse GLORIOUS 2.00 1.50
Règles maintenant fixées
art=1 est obligatoire dans tous les crafts custom.
Les aptitudes à 0 sont omises du JSON.
Le poids n’a pas de limite technique, mais le générateur limitera par cohérence à 1.75.
crafting_time : de 1 à 3 minutes, soit 60000 à 180000 ms.
Expiration : option facultative, sans limite imposée.
meta:-1 accepte toutes les variantes d’un item.
description doit être renseigné, car elle est visible dans l’interface.
Le nom technique du craft ne doit pas contenir d’espace.
Count reste libre.
Size, BuiltInTransforms et Transforms doivent être modifiables.
Contenants rendus
keldaria:iron_ink_bucket → keldaria:empty_iron_bucket
keldaria:iron_milk_bucket → keldaria:empty_iron_bucket
keldaria:wooden_ink_bucket → keldaria:empty_wooden_bucket
keldaria:wooden_milk_bucket → keldaria:empty_wooden_bucket
keldaria:ink_bottle → minecraft:glass_bottle
keldaria:fresh_water → minecraft:glass_bottle
keldaria:bottled_black_seagrass → minecraft:glass_bottle
keldaria:salt_wooden_pot → keldaria:wooden_pot
keldaria:water_chop → keldaria:empty_chop
keldaria:beer_chop → keldaria:empty_chop
keldaria:flour → keldaria:fabric_bag
keldaria:sunflower_oil → minecraft:glass_bottle
keldaria:mashed_bread → minecraft:bowl
keldaria:wine_bottle → keldaria:empty_wine_bottle
keldaria:white_wine_bottle → keldaria:empty_wine_bottle
keldaria:wine_glass → keldaria:empty_wine_glass
keldaria:white_wine_glass → keldaria:empty_wine_glass
Ce qu’il reste réellement à confirmer
Les commandes exactes et les identifiants complets pour cooking_stand, cooking_furnace et cooking_table.
Le rôle du statMultiplier visible dans le code des qualités. Est-ce qu’il intervient dans les FoodEffects, ou est-ce que les valeurs explicites de Values le remplacent entièrement ?
La liste complète des items supports alimentaires avec leurs comportements : bol rendu, nombre de consommations, péremption spéciale, animation ou autre particularité. La capture actuelle concerne surtout les contenants rendus par les ingrédients.
Une fois ces trois points obtenus, la documentation fonctionnelle du générateur sera presque complète.
Je comprends pas la 2 donne un exemple
Je voulais vérifier s’il y avait un double calcul sur les effets.
Exemple avec ce plat :
Values:{
WORST:10,
PERFECT:20,
GLORIOUS:25
},
Effect:"HEALTH_BOOST",
Operation:"ADDITION"
Pour un plat glorieux, deux fonctionnements sont possibles.
Possibilité 1 — Values suffit
Le jeu lit directement :
GLORIOUS = 25
Le joueur gagne donc 25 PV maximum.
Dans ce cas, le statMultiplier:1.5 visible dans ton screen ne sert pas pour les FoodEffects personnalisés.
Possibilité 2 — statMultiplier est appliqué en plus
Le jeu lit :
GLORIOUS = 25
puis applique le multiplicateur de qualité :
25 × 1,5 = 37,5
Le joueur gagnerait alors 37,5 PV maximum.
C’est cette différence que je voulais vérifier.
Mais vu ton explication précédente, où vous renseignez directement les valeurs de WORST, PERFECT et GLORIOUS, je pense plutôt que les Values déterminent déjà l’effet final et que le statMultiplier appartient à un autre calcul interne. La capture seule ne permet pas de l’affirmer avec certitude.
Si c'est addition, ça rajoute 25, si c'est multiplier, ça multiplie la vie du joueur par 25, mais ça, est-ce que t'en as vraiment besoin? Le stat multiplier, c'est vraiment la vie du joueur, et la vie du joueur dépend de ses stats à lui, donc t'as pas besoin d'info en fait.
Mémoire mise à jour
Non, je n’en ai pas besoin pour le générateur.
On ignore donc complètement statMultiplier. Il concerne les statistiques propres du joueur et pas la création du plat.
Pour nous, seule cette logique compte :
Effect:"HEALTH_BOOST",
Operation:"ADDITION",
Values:{GLORIOUS:25}
→ ajoute 25 à la statistique concernée.
Effect:"HEALTH_BOOST",
Operation:"MULTIPLICATION",
Values:{GLORIOUS:1.5}
→ multiplie la statistique concernée par 1.5.
Donc je retire définitivement cette question de la liste.
cooking = table de cuisine, cooking_stand : stand de cuisson de fortunure
cookingfurnace : four de cuisine, le reste c'est pour d'autres métiers
Mémoire mise à jour
Parfait. Pour la cuisine, on garde uniquement ces trois identifiants :
cooking
→ table de cuisine
cooking_stand
→ stand de cuisson de fortune
cookingfurnace
→ four de cuisine
Les commandes commencent donc ainsi :
/exchange newCraft cooking NOM
/exchange newCraft cooking_stand NOM
/exchange newCraft cookingfurnace NOM
Le seul point que je veux encore confirmer : pour les crafts complexes, faut-il toujours ajouter complex à la fin, comme dans cet ancien exemple ?
/exchange newCraft cooking_stand NOM complex
honey bottle pour des boissons sucrées (ça rend la fiole) honey comb pour les bonbons ?
l'omelette ne rend rien, se mange en trois fois
La tarte au pomme et la poirre ne rendent rien et se mangent en 2 fois
Les saucisses ne rendent rien et se mangent en 2 fois
pour le reste on utilise keldaria:onion_soup ou keldaria:mashed_potatoes
qui se mangent en une fois
le pemmican = pour viandes séchée qui durent longtemps
honey bottle et honey comb ne périment pas tout comme les tartes aux pommes/poires
Mémoire mise à jour
Parfait, ça complète bien la liste des supports alimentaires du générateur.
Support Usage Consommations Contenant rendu Péremption
keldaria:omelet Omelettes et préparations similaires 3 Aucun Normale
keldaria:apple_pie Tartes aux pommes 2 Aucun Ne périme pas
keldaria:pear_pie Tartes aux poires 2 Aucun Ne périme pas
keldaria:sausages Saucisses et petites charcuteries À confirmer Aucun Normale
keldaria:honey_bottle Boissons sucrées 1 Rend une fiole Ne périme pas
keldaria:honeycomb Bonbons et confiseries 1 Aucun Ne périme pas
keldaria:onion_soup Support générique pour plats en bol 1 Bol, normalement Normale
keldaria:mashed_potatoes Support générique pour plats solides servis 1 Aucun ou comportement propre à l’item Normale
keldaria:pemmican Viandes séchées longue conservation 1 Aucun Très longue conservation
Il y a juste une contradiction à résoudre pour :
keldaria:sausages
Tu indiques qu’elles se mangent en 2 fois, mais la capture affiche :
Durabilité : 3.0 / 3
Donc soit elles se consomment en 3 fois, soit la durabilité ne correspond pas exactement au nombre de bouchées. Pour le générateur, je laisse ce point en attente de confirmation.
Même chose pour la bouteille de miel : il faudra simplement me donner l’identifiant exact de la fiole rendue, si ce n’est pas directement :
minecraft:glass_bottle
Pour le menu du site, on pourra proposer une sélection du type :
Plat générique en bol
Plat générique solide
Omelette — 3 portions
Tarte aux pommes — 2 portions, impérissable
Tarte aux poires — 2 portions, impérissable
Saucisses — plusieurs portions
Boisson sucrée — fiole rendue, impérissable
Confiserie — impérissable
Viande séchée — très longue conservation
Le générateur remplira ensuite automatiquement l’identifiant correspondant.
les sausages c'est en 3 fois oui, l'usage c'est bien pour les petits truc avec plusieurs bouchées? saucisonn et autres?
Tout ce qui est rendu est noté dans l'image envoyé plus haut, et en effet quand tu consomme la bouteille de miel ça donne une fiole vide au joueur
Mémoire mise à jour
Oui, exactement.
keldaria:sausages
sert de support pour les petits aliments consommés en plusieurs bouchées, par exemple :
saucisson ;
petites saucisses ;
bouchées de charcuterie ;
autres préparations similaires.
Il se consomme en 3 fois et ne rend aucun objet.
Et pour :
keldaria:honey_bottle
la consommation rend bien :
minecraft:glass_bottle
Je prendrai désormais les contenants rendus uniquement depuis le tableau que tu as envoyé plus haut, sans en déduire d’autres.
keldaria:mashed_potatoes, keldaria:onion_soup rendent des bols
Mémoire mise à jour
keldaria:mashed_potatoes et keldaria:onion_soup rendent tous les deux :
minecraft:bowl
après consommation.
d'autres questions?
Oui, mais il n’en reste plus beaucoup. Sur le fonctionnement des statistiques alimentaires, des qualités, des durées, du poids et des prérequis, c’est suffisamment clair.
Il reste surtout à confirmer :
La syntaxe exacte des commandes, notamment si complex doit toujours être ajouté :
/exchange newCraft cooking NOM complex
/exchange newCraft cooking_stand NOM complex
/exchange newCraft cookingfurnace NOM complex
L’affichage des valeurs interpolées dans le générateur : doit-il inscrire uniquement les valeurs choisies, par exemple WORST, PERFECT et GLORIOUS, ou écrire automatiquement les huit qualités calculées dans le résultat final ?
Les valeurs par défaut du modèle : est-ce qu’on part systématiquement sur :
BuiltInTransforms:"item",
CustomModel:{
Size:0.5d,
ChildModels:[],
Transforms:"T(0.0,0.0,0.0)",
Url:"..."
}
tout en laissant ces paramètres modifiables dans les options avancées ?
La métadonnée dans la syntaxe courte : pour accepter toutes les variantes, est-ce bien :
"keldaria:apple=-1/1"
ou faut-il obligatoirement utiliser la forme détaillée avec :
{
"id": "keldaria:apple",
"number": 1,
"meta": -1
}
La liste complète des supports alimentaires particuliers, seulement s’il en existe encore d’autres que ceux déjà fournis.
Le format de sortie du site : pour un craft complexe, faut-il afficher séparément le JSON et la commande, ou produire directement un bloc complet prêt à copier avec la commande puis le JSON ?
Le reste est assez défini pour commencer à rédiger une documentation structurée et concevoir le fonctionnement du générateur.
La syntaxe exacte des commandes, notamment si complex doit toujours être ajouté : oui
uniquement les valeurs choisies
Les valeurs par défaut du modèle : est-ce qu’on part systématiquement oui
Mémoire mise à jour
Parfait, je fixe donc ces trois règles :
Commandes des crafts complexes
Le suffixe complex est toujours obligatoire :
/exchange newCraft cooking NOM complex
/exchange newCraft cooking_stand NOM complex
/exchange newCraft cookingfurnace NOM complex
Valeurs de qualité
Le générateur écrit uniquement les qualités choisies par l’utilisateur.
Par exemple :
Values:{
WORST:1,
PERFECT:10,
GLORIOUS:15
}
Il ne rajoute pas automatiquement POOR, MEDIUM, NORMAL, GOOD ou AWESOME, puisque le jeu effectue lui-même l’interpolation.
Modèle par défaut
Le générateur part automatiquement sur :
BuiltInTransforms:"item",
CustomModel:{
Size:0.5d,
ChildModels:[],
Transforms:"T(0.0,0.0,0.0)",
Url:"..."
}
Mais BuiltInTransforms, Size et Transforms restent modifiables dans les options avancées.
des questions?
Oui, il reste seulement quelques points vraiment utiles :
Syntaxe courte avec toutes les métadonnées
Pour accepter toutes les variantes, est-ce bien valide d’écrire :
"keldaria:apple=-1/1"
ou faut-il utiliser obligatoirement la forme détaillée avec meta:-1 ?
Nom technique du craft
On sait qu’il ne doit pas avoir d’espace. Faut-il aussi imposer :
uniquement des minuscules ;
aucun accent ;
_ comme séparateur ;
aucun caractère spécial ?
Choix entre les deux supports génériques
keldaria:onion_soup et keldaria:mashed_potatoes rendent tous deux un bol et se mangent en une fois. Y a-t-il une différence pratique pour choisir l’un ou l’autre, ou peut-on les utiliser indifféremment selon le plat ?
ShowParticles
Certains exemples contiennent :
ShowParticles:0b
et d’autres non. Le générateur doit-il l’ajouter systématiquement, ou peut-on l’omettre ?
Format final affiché sur le site
Pour un craft complexe, souhaites-tu afficher :
la commande prête à copier ;
puis le JSON dans un second bloc ;
et, éventuellement, le SNBT du résultat séparément ?
Liste des supports
Est-ce que la liste donnée est désormais complète, ou d’autres supports alimentaires particuliers seront ajoutés plus tard ?
Après ces points, je pense qu’on aura tout ce qu’il faut pour rédiger le cahier des charges précis du générateur.
hier 23:28
le mieux c'est l'option OU avec les deux ID différents
non : uniquement des minuscules ;
aucun accent ;
_ comme séparateur ;
aucun caractère spécial ?
keldaria:onion_soup a chaque fois
ShowParticles : 0 pour tous
la commande prête à copier ;
puis le JSON dans un second bloc ;
liste complète
Mémoire mise à jour
Parfait, je fixe donc les dernières règles.
Pour plusieurs variantes d’un ingrédient, on privilégie une alternative OU avec plusieurs identifiants distincts, plutôt qu’un meta:-1 générique.
Le nom technique du craft doit être :
en minuscules ;
sans accent ;
avec _ comme séparateur ;
sans caractère spécial.
Le support générique sera toujours :
keldaria:onion_soup
Le générateur ajoutera systématiquement :
ShowParticles:0b
Pour un craft complexe, la sortie sera présentée ainsi :
commande prête à copier ;
JSON complet dans un second bloc.
La liste actuelle des supports alimentaires particuliers est désormais considérée comme complète.
À ce stade, je n’ai plus de question bloquante sur le fonctionnement du générateur.
aujourd’hui 1:14
alors quel est la suite?
La suite logique est de transformer tout ce que tu m’as expliqué en documentation de référence propre, puis en cahier des charges du générateur.
1. Figer la documentation technique
Je rédige un document unique avec :
différence entre craft simple et craft complexe ;
structure exacte du SNBT de l’aliment ;
structure exacte du JSON d’un craft complexe ;
qualités et interpolation ;
durée et multiplicateurs ;
effets autorisés et bornes ;
poids ;
coût énergétique ;
aptitudes ;
métiers et compléments ;
ingrédients simples, alternatives OU et destiny ;
supports alimentaires et contenants rendus ;
règles de nommage ;
commandes /exchange.
Ce document deviendra la source officielle et remplacera les notes dispersées.
2. Définir l’interface du générateur
Le site aurait deux modes.
Générateur de plat
Il produit uniquement le SNBT de l’item résultat, pour les crafts simples.
Champs principaux :
support alimentaire ;
nom et lore ;
quantité ;
durée moyenne ;
poids ;
skin ;
effets et valeurs de qualité.
Générateur de craft complexe
Il reprend le plat créé et ajoute :
poste de craft ;
nom technique ;
ingrédients ;
alternatives OU ;
quantité produite ;
coût énergétique entre 75 et 200 ;
aptitudes avec art=1 automatique ;
métiers ou compléments ;
description ;
temps de fabrication entre 1 et 3 minutes ;
péremption personnalisée facultative.
La sortie affichera :
la commande prête à copier ;
le JSON complet.
3. Ajouter les validations automatiques
Le générateur devra notamment :
refuser une durée glorieuse supérieure à 12 heures ;
limiter la durée moyenne à 6 heures ;
empêcher les valeurs d’effets hors des bornes ;
exiger au moins deux qualités par effet ;
ajouter automatiquement ShowParticles:0b ;
ajouter automatiquement art=1 ;
omettre les aptitudes à 0 ;
refuser espaces, accents, majuscules et caractères spéciaux dans le nom technique ;
convertir automatiquement heures, minutes et secondes en millisecondes ;
protéger les guillemets, apostrophes et retours à la ligne dans le JSON.
4. Produire des exemples de référence
Il faudra ensuite créer plusieurs tests complets :
une soupe simple ;
une boisson sucrée avec honey_bottle ;
une omelette en trois consommations ;
une tarte impérissable ;
un plat complexe au four ;
un craft avec deux ingrédients alternatifs ;
un craft utilisant une poêle avec damage_only.
Ces exemples permettront de vérifier que le JSON généré fonctionne réellement en jeu.
5. Développer le prototype
Une fois la documentation et les exemples validés, on pourra définir précisément les écrans du site et produire le premier prototype fonctionnel.
La prochaine étape immédiate est donc de rédiger la documentation complète et consolidée du système de création de plats Keldaria.
c'est parti alors
Réfléchi pendant 1m 32s
La première version complète de la documentation technique est prête. Elle consolide le fichier source, les captures et toutes les règles que tu viens de préciser.
Elle comprend notamment :
crafts simples et complexes ;
structure SNBT des plats ;
qualités, interpolation et multiplicateurs de durée ;
effets autorisés et bornes ;
supports alimentaires et contenants rendus ;
ingrédients simples, alternatives OU et destiny ;
aptitudes, métiers et compléments ;
commandes des trois postes de cuisine ;
validations à intégrer au futur générateur ;
structure proposée pour l’interface web ;
exemple complet prêt à copier.
La prochaine étape est de relire cette version ensemble, corriger les éventuels détails techniques, puis transformer chaque règle en champs et contrôles précis pour le prototype du générateur.
ça me parait bien, passons à la suite
On passe au cahier des charges fonctionnel du générateur.
J’ai préparé la version 1 avec :
les deux modes Plat simple et Craft complexe ;
tous les champs de l’interface ;
les menus déroulants ;
les validations bloquantes ;
les avertissements ;
les sorties SNBT, commande et JSON ;
l’organisation prévue de la page ;
l’ordre conseillé de développement.
La prochaine étape est de faire la maquette précise de l’interface, écran par écran, avant de développer le prototype.
aller nous allons créer une page php
Réfléchi pendant 3m 45s
La première page PHP fonctionnelle est prête.
Elle comprend déjà :
mode Plat simple ;
mode Craft complexe ;
génération automatique du SNBT ;
génération de la commande /exchange ;
génération du JSON complet ;
calcul des huit durées selon la qualité ;
contrôle de la limite de 12 heures en glorieux ;
effets avec opérations et bornes autorisées ;
supports alimentaires ;
ingrédients simples et alternatives OU ;
options destiny et toolDamage ;
aptitudes avec art=1 automatique ;
métiers et compléments ;
énergie limitée de 75 à 200 ;
temps de fabrication limité entre 1 et 3 minutes ;
péremption personnalisée facultative ;
aperçu et boutons de copie.
Le fichier a été vérifié avec PHP 8.4 et ne contient aucune erreur de syntaxe.
Pour la tester localement :
php -S localhost:8000
Puis ouvrir :
http://localhost:8000/generateur_plats_keldaria.php
je veux la mettre sur mon site..
Réfléchi pendant 27s
Oui : la page est autonome et peut être installée directement sur ton hébergement PHP. Elle ne nécessite ni base de données ni bibliothèque externe.
Installation
Télécharge l’archive.
Décompresse-la.
Envoie le dossier dans ton hébergement, par exemple :
/public_html/outils/generateur-cuisine/
ou :
/www/outils/generateur-cuisine/
La page sera accessible à une adresse de ce type :
https://ton-site.fr/outils/generateur-cuisine/
Le fichier principal est déjà nommé :
index.php
Pour l’intégrer au design actuel de ton site plutôt que de garder son apparence autonome, envoie-moi la structure de ton site ou tes fichiers header.php et footer.php.
generateur_plats_keldaria.php
$effects = [
'COLD_RESISTANCE' => ['MULTIPLICATION' => [1.05, 1.75]],
'HEAT_RESISTANCE' => ['MULTIPLICATION' => [0.80, 1.70]],
'DAMAGE_MODIFIER' => [
'DIVISION' => [0.80, 1.25],
'MULTIPLICATION' => [1.00, 2.00],
],
'ENERGY' => [
'ADDITION' => [0, 2200],
'MULTIPLICATION' => [0.80, 1.80],
],
'ENERGY_REGEN_BOOST' => ['MULTIPLICATION' => [0.80, 1.60]],
'EXHAUSTING' => ['DIVISION' => [0.70, 1.75]],
'HEALTH_BOOST' => [
'ADDITION' => [-1.5, 19],
'MULTIPLICATION' => [0.80, 1.50],
],
'HEALTH_REGEN_BOOST' => ['MULTIPLICATION' => [0.85, 1.30]],
'SPEED_MODIFIER' => [
'MULTIPLICATION' => [0.65, 1.07],
'ADDITION' => [-0.03, -0.01],
],
'STAMINA_BOOST' => ['ADDITION' => [1, 30]],
'STAMINA_REGEN_BOOST' => ['MULTIPLICATION' => [0.90, 1.30]],
'STRENGTH_MODIFIER' => ['MULTIPLICATION' => [0.90, 1.15]],
];
$supports = [
'keldaria:onion_soup' => 'Plat générique en bol — 1 consommation, rend un bol',
'keldaria:omelet' => 'Omelette — 3 consommations',
'keldaria:apple_pie' => 'Tarte aux pommes — 2 consommations, impérissable',
'keldaria:pear_pie' => 'Tarte aux poires — 2 consommations, impérissable',
'keldaria:sausages' => 'Petit aliment à plusieurs bouchées — 3 consommations',
'keldaria:honey_bottle' => 'Boisson sucrée — rend une fiole, impérissable',
'keldaria:honeycomb' => 'Bonbon / confiserie — impérissable',
'keldaria:pemmican' => 'Viande séchée — très longue conservation',
'keldaria:mashed_potatoes' => 'Purée / plat en bol — 1 consommation, rend un bol',
];
$jobs = [
'blacksmith', 'breeder', 'builder', 'cook', 'dressmaker', 'farmer',
'lumberjack', 'miner', 'stonecutter', 'woodworker', 'apothecary'
];
$complements = [
'alchemy', 'ancient_language', 'beekeeping', 'breeding', 'butchering',
'climbing', 'cooking', 'distillation', 'elemental_magic', 'excavation',
'fae', 'farming', 'felling', 'first_aid', 'fishing', 'hunting', 'jewelry',
'mending', 'mist_guardian', 'music', 'navigation', 'necromancy', 'occultism',
'papermaker', 'picking', 'pottery', 'riding', 'survival', 'tinkering',
'toolmaking', 'vampirism'
];
$qualities = [
'WORST' => ['label' => 'Terrible', 'duration' => 0.70],
'POOR' => ['label' => 'Médiocre', 'duration' => 0.85],
'MEDIUM' => ['label' => 'Moyenne', 'duration' => 1.00],
'NORMAL' => ['label' => 'Normale', 'duration' => 1.10],
'GOOD' => ['label' => 'Bonne', 'duration' => 1.15],
'AWESOME' => ['label' => 'Géniale', 'duration' => 1.30],
'PERFECT' => ['label' => 'Parfaite', 'duration' => 1.45],
'GLORIOUS' => ['label' => 'Glorieuse', 'duration' => 2.00],
];
?>
Générateur de plats — Keldaria
Générateur de plats Keldaria
Création de SNBT pour les plats simples et de commandes + JSON pour les crafts complexes.
ConfigurationMode simple
Informations du craft complexe
Minuscules, sans accent, `_` comme séparateur.
Item résultat
Un retour à la ligne crée une nouvelle ligne de lore.
Durée et poids
Effets alimentaires
Ingrédients
Chaque bloc représente un ingrédient. Ajoutez une alternative dans le même bloc pour créer un OU.