Ce module contient les fonctions permettant de créer des modèles concernant les stats (d'ennemis, objets, etc) de Kingdom Hearts 3D: Dream Drop Distance.

Fonction d'Esprit

Ces fonctions permettent de créer les tableaux de stats des Avale-Rêves Esprits.

StatsDDD.CategorieEsprit

Cette fonction détermine à quelles catégories ajouter un Esprit, selon ses attributs. (Fonction incomplète)

StatsDDD.Esprit

Cette fonction crée les tableaux de statistiques d'un Esprit de Dream Drop Distance.

Elle reçoit un paramètre "args", version nettoyée des arguments tirés de l'appel du modèle. Il s'agit d'un tableau contenant les informations reprises dans le tableau ci-dessous.

Paramètre Sous-paramètre Utilisation
Stats de base
DDDHP - Valeurs de base des caractéristiques : HP, Force, Magie, Défense
DDDFor
DDDMag
DDDDef
DDDAttribut - Attribut de l'Esprit
DDDAttaqueFusion - Attaque de Fusion
DDDEXP - Multiplicateur d'Expérience
DDDbribe - Bribe de rêve reçue si l'Esprit est démantelé
DDDbrasier - Résistance aux éléments de base
DDDglacier
DDDfoudre
DDDeau
DDDten
DDDlum
Tempéraments
DDDTemp 1-4 Tempéraments de l'Esprit (nom, description, et comment atteindre ce tempérament). Dans l'ordre :
  1. Violet
  2. Jaune
  3. Bleu
  4. Vert
DDDTempDesc
DDDTempTrans1
Recettes
DDDRang 1-6 Description des recettes pour créer l'Esprit : rang obtenu, ingrédients, chance d'obtenir l'Esprit avec cette recette, et résultat rare possible
DDDRecette
DDDChance
DDDRare
Fusion de compétences
DDDrows - Nombre de lignes. Par la suite les lignes sont référencées par des numéros (1, 2, 3…)
DDDcols - Nombre de colonnes. Par la suite les colonnes sont référencées par des lettres majuscules (A, B, C…)
DDDCaseDépart - Emplacement du point de départ, au format ligne-tiret-colonne, par exemple 2-A.
DDD[X][Y] X, Y :
  • Commande, 1-5
  • Comp, 1-15
  • Passage, 1-16
  • Spécial, 1-2
Renseigne le contenu d'une case de la Fusion de compétence : commandes, compétences, points de passage, ou spécial (la case Départ étant réglée par l'attribut ci-dessus). La numérotation suit l'affichage au format liste en-dessous du graphe de la Fusion de compétences, qui suit l'ordre les commandes / compétences dans les menus plutôt que l'ordre dans la Fusion elle-même.
DDDCase[X][Y] Emplacement de cette case de contenu, au format ligne-tiret-colonne, par exemple 2-A.
DDDIcone[X][Y] L'attribut Case renseigne le type de case, parmi les valeurs suivantes :
  • X = Commandes
    • Attaque : Commande d'attaque
    • AttaqueS : Commande d'attaque puissante
    • Magie : Commande de magie
    • MagieS : Commande de magie puissante
    • Objet : Commande d'objet
    • Déplacement : Commande de déplacement
    • Défense : Commande de protection
    • Représailles : Commande de représailles
  • X = Comp
    • Statut : Compétence de statut
    • Booster Attaque : Compétence Booster Attaque
    • Booster Magie : Compétence Booster Magie
    • Boost Défense : Compétence Booster Défense
    • Booster HP : Compétence Booster HP
    • Soutien : Compétence de soutien
    • Esprit : Compétence d'esprit
  • X=Passage
    • Niveau : Point de passage Niveau
    • Fusion : Point de passage Fusion
    • Objet : Point de passage Objet
  • X = Spécial
    • Vert : Case spéciale Verte
    • Rouge : Case spéciale Rouge
DDDTemp[X][Y] Tempérament où cette case apparaît, par couleur :
  • Violet
  • Jaune
  • Bleu
  • Vert
DDDVert[X][Y] Emplacement de la case Spéciale Verte qui fait apparaître cette case-ci, au format ligne-tiret-colonne, par exemple 2-A.
DDDCondCommande[X][Y] Conditions pour activer un Passage (niveau à atteindre, nombre de Fusions à exécuter, ou objet à offrir).
DDDPFCommande[X][Y] Points de Fusion pour activer la case.
DDDconnec ##L ou #LL, où # est un nombre et L une lettre majuscule Ajoute une connection entre deux cases :
  • ##L si les deux cases sont sur la même colonne (lettre L) et deux lignes (numéros # #) adjacentes
  • #LL si les deux cases sont sur la même ligne (numéro #) et deux colonnes (lettres L L) adjacentes

Fonction incomplète : Un tableau référence les attaques en combat et au Combat effréné mais n'est pas encore configuré.

Fonctions d'ennemis

Ces fonctions permettent de créer les tableaux de stats d'ennemis

StatsDDD.CategorieEnnemi

Cette fonction détermine à quelles catégories ajouter un ennemi, selon qu'il est un ennemi standard ou un boss

Elle reçoit un paramètre "args", version nettoyée des arguments tirés de l'appel du modèle. Il s'agit d'un tableau contenant les informations reprises dans le tableau ci-dessous.

Arguments Utilisation
DDDboss Indique que l'ennemi est un boss si le paramètre est utilisé
boss Indique que l'ennemi est un boss si le paramètre est utilisé (permet d'utiliser un argument comment si l'ennemi est un boss pour toutes ses apparitions dans la série)

StatsDDD.Ennemi

Cette fonction génère le tableau de statistiques d'un ennemi de Dream Drop Distance.

Elle reçoit deux paramètres :

  • args, version nettoyée des arguments tirés de l'appel du modèle. Il s'agit d'un tableau contenant les informations reprises dans le tableau ci-dessous.
  • multiples : valeur booléenne indiquant si d'autres tableaux de stats sont utilisés (permet de générer le tabber).
Paramètre Sous-paramètre Utilisation
Stats de base
DDDHP - Valeurs de base des caractéristiques de l'ennemi ou Boss : HP, Expérience, Force, Défense et Magie.
DDDEXP
DDDFor
DDDDef
DDDMag
Stats de Boss
DDDlocBoss 1-3 Mondes et niveau de combat où un boss est affronté.
DDDnivBoss
DDD2FHP - Valeurs de base des caractéristiques de la deuxième forme d'un boss : HP, Expérience, Force, Défense et Magie.
DDD2FEXP
DDD2FFor
DDD2FDef
DDD2FMag
DDD2FlocBoss 1-2 Mondes et niveau de combat où la deuxième forme d'un boss est affronté.
DDD2FnivBoss
Ennemi commun
DDDVdT - Indique si un ennemi standard est présent dans chaque monde :

Les niveaux sont récupérés automatiquement

DDDCdC
DDDG
DDDPdG
DDDVdT2
DDDPdM
DDDSdS
DDDI
Cauchemar Rare
DDDCRHP - Valeurs de base des caractéristiques de l'ennemi en tant que Cauchemar rare : HP, Expérience, Force, Défense et Magie.
DDDCREXP
DDDCRFor
DDDCRDef
DDDCRMag
DDDCRVdT - Indique si un ennemi est présent dans chaque monde en tant que Cauchemar Rare :

Les niveaux sont récupérés automatiquement

DDDCRCdC
DDDCRG
DDDCRPdG
DDDCRVdT2
DDDCRPdM
DDDCRSdS
DDDCRI
Autre
DDDbrasier - Résistance aux éléments et altérations d'état
DDDglacier
DDDfoudre
DDDeau
DDDten
DDDlum
DDDko
DDDmini
DDDsommeil
DDDblackout
DDDstop
DDDglaciation
DDDfolie
DDDpoison
DDDaimant
DDDsomni
DDDmise à feu
DDDficelage
DDDgravité nulle
DDDbombe retard
DDDzantetsuken
DDDrecomp - Renseigne les récompenses abandonnées par l'ennemi

local StatsDDD = {}

local Template = require("Module:Stats/Template")

local DDDExpNiv = {
 ["1"] = "0",
 ["3"] = "13",
 ["6"] = "22",
 ["8"] = "28",
 ["10"] = "34",
 ["12"] = "40",
 ["14"] = "46",
 ["16"] = "52",
 ["18"] = "58",
 ["20"] = "72",
 ["22"] = "80",
 ["24"] = "88",
 ["26"] = "96",
 ["28"] = "104",
 ["30"] = "112",
 ["32"] = "120",
 ["34"] = "128",
 ["36"] = "136",
 ["38"] = "144",
 ["40"] = "152",
 ["50"] = "0",
}

local DDDMondeNiv = {
 ["VdT"] = {
     ["rowspan"]=4,
     ["link"] = "[[Ville de Traverse]]",
     ["Niv"] = 3,
     ["Vent"] = 6,
     ["Fini"] = 6,
     ["FiniVent"] = 8
 },
 ["CdC"] = {
     ["rowspan"]=4,
     ["link"] = "[[Cité des Cloches]]",
     ["Niv"] = 8,
     ["Vent"] = 10,
     ["Fini"] = 12,
     ["FiniVent"] = 14
 },
 ["G"] = {
     ["rowspan"]=4,
     ["link"] = "[[Grille]]",
     ["Niv"] = 14,
     ["Vent"] = 16,
     ["Fini"] = 18,
     ["FiniVent"] = 20
 },
 ["PdG"] = {
     ["rowspan"]=4,
     ["link"] = "[[Paradis des Garnements]]",
     ["Niv"] = 18,
     ["Vent"] = 20,
     ["Fini"] = 20,
     ["FiniVent"] = 22
 },
 ["VdT2"] = {
     ["rowspan"]=4,
     ["link"] = "[[Ville de Traverse]]<br><small>(Deuxième visite)</small>",
     ["Niv"] = 20,
     ["Vent"] = 22,
     ["Fini"] = 24,
     ["FiniVent"] = 26
 },
 ["PdM"] = {
     ["rowspan"]=4,
     ["link"] = "[[Pays des Mousquetaires]]",
     ["Niv"] = 26,
     ["Vent"] = 28,
     ["Fini"] = 30,
     ["FiniVent"] = 32
 },
 ["SdS"] = {
     ["rowspan"]=4,
     ["link"] = "[[Symphonie du Sorcier]]",
     ["Niv"] = 34,
     ["Vent"] = 36,
     ["Fini"] = 36,
     ["FiniVent"] = 38
 },
 ["I"] = {
     ["rowspan"]=2,
     ["link"] = "[[Illusiopolis]]",
     ["Niv"] = 38,
     ["Vent"] = 40
 }
}

--<includeonly>
function StatsDDD.CategorieEnnemi(args) 
    if args["boss"] or args["DDDboss"] then
        return "[[Catégorie:Boss Kingdom Hearts 3D: Dream Drop Distance]]" 
    else
        return "[[Catégorie:Ennemis Kingdom Hearts 3D: Dream Drop Distance]]" 
    end 
end

function StatsDDD.CategorieEspritAR(args)
    return "[[Catégorie:Avale-Rêves Esprits]]"
    --Attributs d'AR
end

function StatsDDD.CategorieCauchemarAR(args)
    local stringBuilder = "[[Catégorie:Avale-Rêves Cauchemars]]"
    if args["boss"] or args["DDDCboss"] then
        stringBuilder = stringBuilder .. "[[Catégorie:Boss Kingdom Hearts 3D: Dream Drop Distance]]"
    else
        stringBuilder = stringBuilder .. "[[Catégorie:Ennemis Kingdom Hearts 3D: Dream Drop Distance]]" 
    end
    return stringBuilder
end
--</includeonly>
----------------------
--Tableau esprit DDD--
----------------------
function StatsDDD.Esprit(frame)
    local args = Template.CleanArgs(frame)
    local stringBuilder = ""
    stringBuilder = stringBuilder .. Template.OpenTabber((args["theme"] or "AvaleReves"))
    stringBuilder = stringBuilder .. Template.NewTab("Statistiques")
    stringBuilder = stringBuilder .. Template.OpenContainer((args["theme"] or "AvaleReves"))
    stringBuilder = stringBuilder .. Template.OpenBox()
    stringBuilder = stringBuilder .. Template.Header("Statistiques",4)
    stringBuilder = stringBuilder .. Template.LabelRow({
        {["label"] = 'HP', ["style"] = "width:25%;"},
        {["label"] = "Force", ["style"] = "width:25%;"},
        {["label"] = "Magie", ["style"] = "width:25%;"},
        {["label"] = "Défense", ["style"] = "width:25%;"}
    })
    stringBuilder = stringBuilder .. Template.DataRow({
        {["data"] = args["DDDHP"], ["class"] = "numberData"},
        {["data"] = args["DDDFor"], ["class"] = "numberData"},
        {["data"] = args["DDDMag"], ["class"] = "numberData"},
        {["data"] = args["DDDDef"], ["class"] = "numberData"},
    })
    stringBuilder = stringBuilder .. Template.MixedRow({
        {["label"]=1, ["text"]="Attribut", ["colspan"]=1, ["style"]=""},
        {["text"]=args["DDDAttribut"], ["colspan"]=1, ["style"]=""},
        {["label"]=1, ["text"]="Fusion simple", ["colspan"]=1, ["style"]=""},
        {["text"]=args["DDDAttaqueFusion"], ["colspan"]=1, ["style"]=""},
    })
    stringBuilder = stringBuilder .. Template.MixedRow({
        {["label"]=1, ["text"]="Expérience", ["colspan"]=1, ["style"]=""},
        {["text"]=args["DDDEXP"], ["colspan"]=1, ["style"]=""},
        {["label"]=1, ["text"]="Bribe de rêve", ["colspan"]=1, ["style"]=""},
        {["text"]=args["DDDbribe"], ["colspan"]=1, ["style"]=""},
    })
    stringBuilder = stringBuilder .. Template.CloseContainer()
    stringBuilder = stringBuilder .. Template.ContainerLine()
    stringBuilder = stringBuilder .. Template.OpenBox()
    stringBuilder = stringBuilder .. Template.Header("Faiblesses/Résistances",6)
    stringBuilder = stringBuilder .. Template.Separator("Par défaut",6)
    stringBuilder = stringBuilder .. Template.LabelRow({
        {["label"] = "Brasier", ["style"]="width:16.6%;"},
        {["label"] = "Glacier", ["style"]="width:16.6%;"},
        {["label"] = "Foudre", ["style"]="width:16.6%;"},
        {["label"] = "Eau", ["style"]="width:16.6%;"},
        {["label"] = "Ténèbres", ["style"]="width:16.6%;"},
        {["label"] = "Lumière", ["style"]="width:16.6%;"}
    })
    stringBuilder = stringBuilder .. Template.DataRow({
        {["data"] = tostring(args["DDDbrasier"] or "0").."%", ["class"]="numberData"}, 
        {["data"] = tostring(args["DDDglacier"] or "0").."%", ["class"]="numberData"}, 
        {["data"] = tostring(args["DDDfoudre"] or "0").."%", ["class"]="numberData"}, 
        {["data"] = tostring(args["DDDeau"] or "0").."%", ["class"]="numberData"}, 
        {["data"] = tostring(args["DDDten"] or "0").."%", ["class"]="numberData"}, 
        {["data"] = tostring(args["DDDlum"] or "0").."%", ["class"]="numberData"}
    })
    stringBuilder = stringBuilder .. Template.CloseContainer()
    stringBuilder = stringBuilder .. Template.ContainerLine()
    stringBuilder = stringBuilder .. Template.OpenBox()
    stringBuilder = stringBuilder .. Template.Header("Tempéraments",4)
    stringBuilder = stringBuilder .. Template.LabelRow({
        {["label"] = "Tempérament", ["colspan"]=2, ["style"]="width:20%;"},
        {["label"] = "Description", ["style"]="width:40%;"},
        {["label"] = "Transition", ["style"]="width:40%;"}
    })
    stringBuilder = stringBuilder .. Template.DataRow({
        {["data"] = "[[Fichier:Symbole Tempérament Violet KHDDD.png|30px|link=]]", ["class"]="numberData"}, 
        {["data"] = args["DDDTemp1"], ["class"]="numberData"}, 
        {["data"] = args["DDDTempDesc1"], ["class"]="numberData"}, 
        {["data"] = args["DDDTempTrans1"], ["class"]="numberData"}
    })
    stringBuilder = stringBuilder .. Template.DataRow({
        {["data"] = "[[Fichier:Symbole Tempérament Jaune KHDDD.png|30px|link=]]", ["class"]="numberData"}, 
        {["data"] = args["DDDTemp2"], ["class"]="numberData"}, 
        {["data"] = args["DDDTempDesc2"], ["class"]="numberData"}, 
        {["data"] = args["DDDTempTrans2"], ["class"]="numberData"}
    })
    stringBuilder = stringBuilder .. Template.DataRow({
        {["data"] = "[[Fichier:Symbole Tempérament Bleu KHDDD.png|30px|link=]]", ["class"]="numberData"}, 
        {["data"] = args["DDDTemp3"], ["class"]="numberData"}, 
        {["data"] = args["DDDTempDesc3"], ["class"]="numberData"}, 
        {["data"] = args["DDDTempTrans3"], ["class"]="numberData"}
    })
    stringBuilder = stringBuilder .. Template.DataRow({
        {["data"] = "[[Fichier:Symbole Tempérament Vert KHDDD.png|30px|link=]]", ["class"]="numberData"}, 
        {["data"] = args["DDDTemp4"], ["class"]="numberData"}, 
        {["data"] = args["DDDTempDesc4"], ["class"]="numberData"}, 
        {["data"] = args["DDDTempTrans4"], ["class"]="numberData"}
    })
    stringBuilder = stringBuilder .. Template.CloseContainer()
    stringBuilder = stringBuilder .. Template.ContainerLine()
    stringBuilder = stringBuilder .. Template.OpenBox()
    stringBuilder = stringBuilder .. Template.Header("Recettes",4)
    stringBuilder = stringBuilder .. Template.LabelRow({
        {["label"] = "Rang", ["style"]="width:10%;"},
        {["label"] = "Recette", ["style"]="width:50%;"},
        {["label"] = "Chance", ["style"]="width:10%;"},
        {["label"] = "Résultat rare", ["style"]="width:30%;"}
    })
    local rangEsprit = {
        ["E"] = "[[Fichier:Icône Rang E Esprit KHDDD.png|x30px|E]]",
        ["D"] = "[[Fichier:Icône Rang D Esprit KHDDD.png|x30px|D]]",
        ["C"] = "[[Fichier:Icône Rang C Esprit KHDDD.png|x30px|C]]",
        ["B"] = "[[Fichier:Icône Rang B Esprit KHDDD.png|x30px|B]]",
        ["A"] = "[[Fichier:Icône Rang A Esprit KHDDD.png|x30px|A]]",
        ["S"] = "[[Fichier:Icône Rang S Esprit KHDDD.png|x30px|S]]",
    }
    for i=1,8 do
        if args["DDDRecette"..tostring(i)]~=nil then
            stringBuilder = stringBuilder .. Template.DataRow({
                {["data"] = rangEsprit[args["DDDRang"..tostring(i)]], ["class"]="numberData"}, 
                {["data"] = args["DDDRecette"..tostring(i)], ["class"]="textData"}, 
                {["data"] = (args["DDDChance"..tostring(i)] or "100%"), ["class"]="numberData"}, 
                {["data"] = (args["DDDRare"..tostring(i)] or "-"), ["class"]="textData"}
            })
        end
    end
    stringBuilder = stringBuilder .. Template.CloseContainer()
    stringBuilder = stringBuilder .. Template.CloseFinal()
    stringBuilder = stringBuilder .. Template.CloseTab()
    stringBuilder = stringBuilder .. Template.NewTab("Fusion de compétences")
    stringBuilder = stringBuilder .. Template.OpenContainer((args["theme"] or "AvaleReves"))
    stringBuilder = stringBuilder .. Template.OpenBox()
    local letters= {'A','B','C','D','E','F','G','H'}
    local rows = (args["DDDrows"] or 8)*2
    local cols = (args["DDDcols"] or 8)*2
    local fusionTable = {}
    local bigIcons = {
        ["Départ"]="[[Fichier:Icône fusion de compétences Départ KHDDD.png|50px|link=]]",
        ["Attaque"]="[[Fichier:Icône fusion de compétences Attaque KHDDD.png|50px|link=]]",
        ["AttaqueS"]="[[Fichier:Icône fusion de compétences AttaqueS KHDDD.png|50px|link=]]",
        ["Magie"]="[[Fichier:Icône fusion de compétences Magie KHDDD.png|50px|link=]]",
        ["MagieS"]="[[Fichier:Icône fusion de compétences MagieS KHDDD.png|50px|link=]]",
        ["Objet"]="[[Fichier:Icône fusion de compétences Objet KHDDD.png|50px|link=]]",
        ["Déplacement"]="[[Fichier:Icône fusion de compétences Déplacement KHDDD.png|50px|link=]]",
        ["Défense"]="[[Fichier:Icône fusion de compétences Défense KHDDD.png|50px|link=]]",
        ["Représailles"]="[[Fichier:Icône fusion de compétences Représailles KHDDD.png|50px|link=]]",
        ["Statut"]="[[Fichier:Icône fusion de compétences Statut KHDDD.png|50px|link=]]",
        ["Booster Attaque"]="[[Fichier:Icône fusion de compétences Booster Attaque KHDDD.png|50px|link=]]",
        ["Booster Magie"]="[[Fichier:Icône fusion de compétences Booster Magie KHDDD.png|50px|link=]]",
        ["Boost Défense"]="[[Fichier:Icône fusion de compétences Booster Défense KHDDD.png|50px|link=]]",
        ["Booster HP"]="[[Fichier:Icône fusion de compétences Booster HP KHDDD.png|50px|link=]]",
        ["Soutien"]="[[Fichier:Icône fusion de compétences Soutien KHDDD.png|50px|link=]]",
        ["Esprit"]="[[Fichier:Icône fusion de compétences Esprit KHDDD.png|50px|link=]]",
        ["Passage Niveau"]="[[Fichier:Icône fusion de compétences Passage Niveau KHDDD.png|50px|link=]]",
        ["Passage Fusion"]="[[Fichier:Icône fusion de compétences Passage Fusion KHDDD.png|50px|link=]]",
        ["Passage Objet"]="[[Fichier:Icône fusion de compétences Passage Objet KHDDD.png|50px|link=]]",
        ["Spécial Vert"]="[[Fichier:Icône fusion de compétences Secret Vert KHDDD.png|50px|link=]]",
        ["Spécial Rouge"]="[[Fichier:Icône fusion de compétences Secret Rouge KHDDD.png|50px|link=]]",
    }
    local TempColors = {
        ["Départ"]={["couleur"]="#FA8CAA"},
        ["Violet"]={["couleur"]="#AA4C9A",["num"]=1},
        ["Jaune"]={["couleur"]="#FEDB2F",["num"]=2},
        ["Bleu"] = {["couleur"]="#4C7CAB",["num"]=3},
        ["Vert"]={["couleur"]="#4CAA6B",["num"]=4},
        ["Spécial Vert"]={["couleur"] = "#5CFA8B"}
    }
    if args["DDDCaseDépart"] ~= nil then
        fusionTable[args["DDDCaseDépart"]] = {["icone"] = bigIcons["Départ"], ["style"]="background:"..TempColors["Départ"]["couleur"]..";"}
    end
    for k=1,5 do -- Commandes
        if args["DDDCaseCommande"..tostring(k)]~= nil then
            local cell = {["icone"] = bigIcons[args["DDDIconeCommande"..tostring(k)]]}
            if args["DDDTempCommande"..tostring(k)] ~= nil then
                cell["style"] = "background:"..TempColors[args["DDDTempCommande"..tostring(k)]]["couleur"]..";"
            elseif args["DDDVertCommande"..tostring(k)] ~= nil then
                cell["style"] = "background:"..TempColors["Spécial Vert"]["couleur"]..";"
            end
            fusionTable[args["DDDCaseCommande"..tostring(k)]] = cell
        end
    end
    for k=1,15 do -- Compétences
        if args["DDDCaseComp"..tostring(k)]~= nil then
            local cell = {["icone"] = bigIcons[args["DDDIconeComp"..tostring(k)]]}
            if args["DDDTempComp"..tostring(k)] ~= nil then
                cell["style"] = "background:"..TempColors[args["DDDTempComp"..tostring(k)]]["couleur"]..";"
            elseif args["DDDVertComp"..tostring(k)] ~= nil then
                cell["style"] = "background:"..TempColors["Spécial Vert"]["couleur"]..";"
            end
            fusionTable[args["DDDCaseComp"..tostring(k)]] = cell
        end
    end
    for k=1,16 do -- Passage
        if args["DDDCasePassage"..tostring(k)]~= nil then
            local cell= {["icone"] = bigIcons["Passage "..args["DDDPassage"..tostring(k)]]}
            if args["DDDVertPassage"..tostring(k)] ~= nil then
                cell["style"] = "background:"..TempColors["Spécial Vert"]["couleur"]..";"
            end
            fusionTable[args["DDDCasePassage"..tostring(k)]] = cell
        end
    end
    for k=1,2 do -- Spécial
        if args["DDDCaseSpécial"..tostring(k)]~= nil then
            fusionTable[args["DDDCaseSpécial"..tostring(k)]] = {["icone"] = bigIcons["Spécial "..args["DDDSpécial"..tostring(k)]]}
        end
    end
    
    for j=1,cols do
        if math.mod(j,2) == 0 then
            stringBuilder = stringBuilder .. Template.Header(letters[j/2],1)
        else
            stringBuilder = stringBuilder .. Template.Header("",1)
        end
    end
    for i=2,rows do
        if math.mod(i,2) == 0 then
            local rowBuilder = {
                {["th"]=1, ["class"]="SectionHeader",["data"]=tostring(i/2), ["style"]="width:25px;"}
            }
            for j=2,cols do
                if math.mod(j,2)==0 then
                    local cell = fusionTable[tostring(i/2).."-"..letters[j/2]]
                    if cell ~= nil then
                        table.insert(rowBuilder,{["class"] = "group numberData", ["data"] = cell["icone"], ["style"] = cell["style"]})
                    else
                        table.insert(rowBuilder,{["class"] = "numberData", ["data"] = "", ["style"]="background:white;"})
                    end
                else
                    if args["DDDconnec"..tostring(i/2)..letters[math.floor(j/2)]..letters[math.floor(j/2)+1]] ~= nil then
                        table.insert(rowBuilder,{["class"] = "numberData", ["data"]="", ["style"]="width:10px;"})
                    else
                        table.insert(rowBuilder,{["class"] = "numberData", ["data"]="", ["style"]="width:10px; background:white;"})
                    end
                end
            end
            stringBuilder = stringBuilder .. Template.DataRow(rowBuilder)
        else
            local rowBuilder = {
                {["th"]=1, ["class"]="SectionHeader",["data"]=""}
            }
            for j=2,cols do
                if math.mod(j,2)==0 then
                    if args["DDDconnec"..tostring(math.floor(i/2))..tostring(math.floor(i/2)+1)..letters[j/2]] ~= nil then
                        table.insert(rowBuilder,{["class"] = "numberData", ["data"]="", ["style"]="height:10px;"})
                    else
                        table.insert(rowBuilder,{["class"] = "numberData", ["data"]="", ["style"]="height:10px; background:white;"})
                    end
                else
                    table.insert(rowBuilder,{["data"]="",["class"]="numberData", ["style"]="background:white;"})
                end
            end
            stringBuilder = stringBuilder .. Template.DataRow(rowBuilder)
        end
    end
    stringBuilder = stringBuilder .. Template.CloseContainer()
    stringBuilder = stringBuilder .. Template.ContainerLine()
    stringBuilder = stringBuilder .. Template.OpenBox()
    stringBuilder = stringBuilder .. Template.Header("Contenus",4)
    stringBuilder = stringBuilder .. Template.LabelRow({
        {["label"]="Case",["style"]=""},
        {["label"]="Contenu",["style"]=""},
        {["label"]="Coût",["style"]=""},
        {["label"]="Condition",["style"]=""}
    })
    if args["DDDCaseCommande1"]~= nil then
        stringBuilder = stringBuilder .. Template.Separator("Commande",4)
    end
    local smallIcons = {
        ["Attaque"]="[[Fichier:Icône commande Attaque KHDDD.png|x20px]] ",
        ["AttaqueS"]="[[Fichier:Icône commande Attaque KHDDD.png|x20px]] ",
        ["Magie"]="[[Fichier:Icône commande Magie KHDDD.png|x20px]] ",
        ["MagieS"]="[[Fichier:Icône commande Magie KHDDD.png|x20px]] ",
        ["Objet"]="[[Fichier:Icône commande Objet KHDDD.png|x20px]] ",
        ["Déplacement"]="[[Fichier:Icône commande Déplacement KHDDD.png|x20px]] ",
        ["Défense"]="[[Fichier:Icône commande Défense KHDDD.png|x20px]] ",
        ["Représailles"]="[[Fichier:Icône commande Représailles KHDDD.png|x20px]] ",
        ["Statut"]="[[Fichier:Icône compétence Statut KHDDD.png|x20px]] ",
        ["Booster Attaque"]="[[Fichier:Icône compétence Statut KHDDD.png|x20px]] ",
        ["Booster Magie"]="[[Fichier:Icône compétence Statut KHDDD.png|x20px]] ",
        ["Boost Défense"]="[[Fichier:Icône compétence Statut KHDDD.png|x20px]] ",
        ["Booster HP"]="[[Fichier:Icône compétence Statut KHDDD.png|x20px]] ",
        ["Soutien"]="[[Fichier:Icône compétence Soutien KHDDD.png|x20px]] ",
        ["Esprit"]="[[Fichier:Icône compétence Esprit KHDDD.png|x20px]] ",
        ["Spécial Vert"]="[[Fichier:Icône fusion de compétences Secret Vert KHDDD.png|x20px]] ",
        ["Spécial Rouge"]="[[Fichier:Icône fusion de compétences Secret Rouge KHDDD.png|x20px]] "
    }
    for k=1,5 do -- Commandes
        if args["DDDCaseCommande"..tostring(k)]~= nil then
            local rowBuilder = {
                {["data"]=args["DDDCaseCommande"..tostring(k)],["class"]="numberData"},
                {["data"]=smallIcons[args["DDDIconeCommande"..tostring(k)]]..args["DDDCommande"..tostring(k)],["class"]="textData"},
                {["data"]=args["DDDPFCommande"..tostring(k)].." PF",["class"]="numberData"},
            }
            if args["DDDTempCommande"..tostring(k)] ~= nil then
                local color = args["DDDTempCommande"..tostring(k)]
                local num = TempColors[color]["num"]
                local string = "Tempérament [[Fichier:Symbole Tempérament "..color.." KHDDD.png|20px|link=]] "..args["DDDTemp"..tostring(num)]
                table.insert(rowBuilder,{["data"]=string,["class"]="textData"})
            elseif args["DDDVertCommande"..tostring(k)] ~= nil then
                table.insert(rowBuilder,{["data"]="Case "..smallIcons["Spécial Vert"].."spéciale "..args["DDDVertCommande"..tostring(k)],["class"]="textData"})
            else
                table.insert(rowBuilder,{["data"]="-",["class"]="textData"})
            end
            stringBuilder= stringBuilder .. Template.DataRow(rowBuilder)
        end
    end
    if args["DDDCaseComp1"]~= nil then
        stringBuilder = stringBuilder .. Template.Separator("Compétence",4)
    end
    for k=1,15 do -- Compétences
        if args["DDDCaseComp"..tostring(k)]~= nil then
            local rowBuilder = {
                {["data"]=args["DDDCaseComp"..tostring(k)],["class"]="numberData"},
                {["data"]=smallIcons[args["DDDIconeComp"..tostring(k)]]..args["DDDComp"..tostring(k)],["class"]="textData"},
                {["data"]=args["DDDPFComp"..tostring(k)].." PF",["class"]="numberData"},
            }
            if args["DDDTempComp"..tostring(k)] ~= nil then
                local color = args["DDDTempComp"..tostring(k)]
                local num = TempColors[color]["num"]
                local string = "Tempérament [[Fichier:Symbole Tempérament "..color.." KHDDD.png|20px|link=]] "..args["DDDTemp"..tostring(num)]
                table.insert(rowBuilder,{["data"]=string,["class"]="textData"})
            elseif args["DDDVertComp"..tostring(k)] ~= nil then
                table.insert(rowBuilder,{["data"]="Case "..smallIcons["Spécial Vert"].."spéciale "..args["DDDVertComp"..tostring(k)],["class"]="textData"})
            else
                table.insert(rowBuilder,{["data"]="-",["class"]="textData"})
            end
            stringBuilder= stringBuilder .. Template.DataRow(rowBuilder)
        end
    end
    if args["DDDCasePassage1"]~= nil then
        stringBuilder = stringBuilder .. Template.Separator("Points de Passage",4)
    end
    for k=1,16 do -- Passages
        if args["DDDCasePassage"..tostring(k)]~= nil then
            local rowBuilder = {{["data"]=args["DDDCasePassage"..tostring(k)],["class"]="numberData"}}
            if args["DDDPassage"..tostring(k)] == "Niveau" then
                table.insert(rowBuilder,{["data"]="Niveau "..args["DDDCondPassage"..tostring(k)],["class"]="textData", ["colspan"]=2})
            elseif args["DDDPassage"..tostring(k)] == "Fusion" then
                table.insert(rowBuilder,{["data"]="Utiliser une attaque de Fusion "..args["DDDCondPassage"..tostring(k)] .. " fois",["class"]="textData", ["colspan"]=2})
            elseif args["DDDPassage"..tostring(k)] == "Objet" then
                table.insert(rowBuilder,{["data"]="Objets : "..args["DDDCondPassage"..tostring(k)],["class"]="textData", ["colspan"]=2})
            end
            table.insert(rowBuilder, {["data"]=(args["DDDVertPassage"..tostring(k)] and ("Case "..smallIcons["Spécial Vert"].."spéciale "..args["DDDVertPassage"..tostring(k)]) or "-"),["class"]="textData"})
            stringBuilder = stringBuilder .. Template.DataRow(rowBuilder)
        end
    end
    if args["DDDCaseSpécial1"]~= nil then
        stringBuilder = stringBuilder .. Template.Separator("Secret",4)
    end
    for k=1,2 do -- Spécial
        if args["DDDCaseSpécial"..tostring(k)]~= nil then
            stringBuilder = stringBuilder .. Template.DataRow({
                {["data"]=args["DDDCaseSpécial"..tostring(k)],["class"]="numberData"},
                {["data"]=args["DDDSpécial"..tostring(k)],["class"]="textData"},
                {["data"]=args["DDDPFSpécial"..tostring(k)].." PF",["class"]="numberData"},
                --{["data"]=(args["DDDTempSpécial"..tostring(k)] or "-"),["class"]="numberData"},
                {["data"]=(args["DDDCondSpécial"..tostring(k)] or "-"),["class"]="numberData"}
            })
        end
    end
    stringBuilder = stringBuilder .. Template.CloseContainer()
    stringBuilder = stringBuilder .. Template.CloseFinal()
    stringBuilder = stringBuilder .. Template.CloseTab()
    stringBuilder = stringBuilder .. Template.NewTab("Attaques")
    stringBuilder = stringBuilder .. Template.OpenContainer((args["theme"] or "AvaleReves"))
    stringBuilder = stringBuilder .. Template.OpenBox()
    stringBuilder = stringBuilder .. Template.Header("Combat")
    stringBuilder = stringBuilder .. Template.CloseContainer()
    stringBuilder = stringBuilder .. Template.ContainerLine()
    stringBuilder = stringBuilder .. Template.OpenBox()
    stringBuilder = stringBuilder .. Template.Header("Combat effréné")
    stringBuilder = stringBuilder .. Template.CloseContainer()
    stringBuilder = stringBuilder .. Template.CloseFinal()
    stringBuilder = stringBuilder .. Template.CloseTab()
    stringBuilder = stringBuilder .. Template.CloseTabber()
    --REMETTRE (plus de wrapper pour cette fonction) : stringBuilder = stringBuilder .. Template.Categories(args, "DDD", "ennemis") 
    --if multiples then stringBuilder = stringBuilder .. Template.CloseTab() end -- Ferme un tab si nécessaire
    return frame:preprocess(stringBuilder)
end
------------------
--Fin esprit DDD--
------------------


function StatsDDD.Ennemi(args, multiples, tabTitle)
    local stringBuilder = ""
    if multiples then stringBuilder = stringBuilder .. Template.OpenTab(args, (tabTitle or "DDD")) end -- Ouvre un tab si nécessaire
    stringBuilder = stringBuilder .. Template.OpenContainer(args["theme"])
    local mondesArg = {"VdT", "CdC", "G", "PdG", "VdT2", "PdM", "SdS", "I"}
    local ennemi = false
    for _, arg in ipairs(mondesArg) do
        ennemi = ennemi or (args["DDD"..arg] ~= nil)
    end
    local ennemiRare = false
    for _, arg in ipairs(mondesArg) do
        ennemiRare = ennemiRare or (args["DDDCR"..arg] ~= nil)
    end
    if ennemi then
        stringBuilder = stringBuilder .. Template.OpenBox()
        stringBuilder = stringBuilder .. Template.Header("Statistiques",8)
        stringBuilder = stringBuilder .. Template.LabelRow({
            {["label"] = "Monde", ["style"] = "width:20%; padding-left:1em;"},
            {["label"] = "Condition", ["style"] = "width:20%; padding-left:1em;"},
            {["label"] = '[[Niveau de combat|Niveau]]', ["style"] = "width:10%;"},
            {["label"] = 'HP', ["style"] = "width:10%;"},
            {["label"] = "EXP", ["style"] = "width:10%;"},
            {["label"] = "Force", ["style"] = "width:10%;"},
            {["label"] = "Magie", ["style"] = "width:10%;"},
            {["label"] = "Défense", ["style"] = "width:10%;"}
        })
        if ennemiRare then
            stringBuilder = stringBuilder .. Template.Separator("Cauchemar commun", 8)
        end
        for _, arg in ipairs(mondesArg) do
            if args["DDD"..arg] ~= nil then
                stringBuilder = stringBuilder .. Template.DataRow({
                    {["data"] = DDDMondeNiv[arg]["link"], ["class"] = "textData", ["rowspan"]=DDDMondeNiv[arg]["rowspan"]},
                    {["data"] = "Par défaut", ["class"] = "textData"},
                    {["data"] = DDDMondeNiv[arg]["Niv"], ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDHP"]*(1+DDDMondeNiv[arg]["Niv"]/10)), ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDEXP"]*DDDExpNiv[tostring(DDDMondeNiv[arg]["Niv"])]), ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDFor"]*(1+DDDMondeNiv[arg]["Niv"]/10)), ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDMag"]*(1+DDDMondeNiv[arg]["Niv"]/10)), ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDDef"]*(1+DDDMondeNiv[arg]["Niv"]/10)), ["class"] = "numberData"},
                })
                stringBuilder = stringBuilder .. Template.DataRow({
                    {["data"] = "Vents dangereux", ["class"] = "textData"},
                    {["data"] = DDDMondeNiv[arg]["Vent"], ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDHP"]*(1+DDDMondeNiv[arg]["Vent"]/10)), ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDEXP"]*DDDExpNiv[tostring(DDDMondeNiv[arg]["Vent"])]), ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDFor"]*(1+DDDMondeNiv[arg]["Vent"]/10)), ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDMag"]*(1+DDDMondeNiv[arg]["Vent"]/10)), ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDDef"]*(1+DDDMondeNiv[arg]["Vent"]/10)), ["class"] = "numberData"},
                })
                if DDDMondeNiv[arg]["Fini"] ~= nil then
                    stringBuilder = stringBuilder .. Template.DataRow({
                        {["data"] = "Histoire finie", ["class"] = "textData"},
                        {["data"] = DDDMondeNiv[arg]["Fini"], ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDHP"]*(1+DDDMondeNiv[arg]["Fini"]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDEXP"]*DDDExpNiv[tostring(DDDMondeNiv[arg]["Fini"])]), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDFor"]*(1+DDDMondeNiv[arg]["Fini"]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDMag"]*(1+DDDMondeNiv[arg]["Fini"]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDDef"]*(1+DDDMondeNiv[arg]["Fini"]/10)), ["class"] = "numberData"},
                    })
                    stringBuilder = stringBuilder .. Template.DataRow({
                        {["data"] = "Histoire + VD", ["class"] = "textData"},
                        {["data"] = DDDMondeNiv[arg]["FiniVent"], ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDHP"]*(1+DDDMondeNiv[arg]["FiniVent"]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDEXP"]*DDDExpNiv[tostring(DDDMondeNiv[arg]["FiniVent"])]), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDFor"]*(1+DDDMondeNiv[arg]["FiniVent"]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDMag"]*(1+DDDMondeNiv[arg]["FiniVent"]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDDef"]*(1+DDDMondeNiv[arg]["FiniVent"]/10)), ["class"] = "numberData"},
                    })
                end
            end
        end
        if ennemiRare then
            stringBuilder = stringBuilder .. Template.Separator("Cauchemar rare", 8)
            for _, arg in ipairs(mondesArg) do
                if args["DDDCR"..arg] ~= nil then
                    stringBuilder = stringBuilder .. Template.DataRow({
                        {["data"] = DDDMondeNiv[arg]["link"], ["class"] = "textData", ["rowspan"]=DDDMondeNiv[arg]["rowspan"]},
                        {["data"] = "Par défaut", ["class"] = "textData"},
                        {["data"] = DDDMondeNiv[arg]["Niv"], ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDCRHP"]*(1+DDDMondeNiv[arg]["Niv"]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDCREXP"]*DDDExpNiv[tostring(DDDMondeNiv[arg]["Niv"])]), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDCRFor"]*(1+DDDMondeNiv[arg]["Niv"]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDCRMag"]*(1+DDDMondeNiv[arg]["Niv"]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDCRDef"]*(1+DDDMondeNiv[arg]["Niv"]/10)), ["class"] = "numberData"},
                    })
                    stringBuilder = stringBuilder .. Template.DataRow({
                        {["data"] = "Vents dangereux", ["class"] = "textData"},
                        {["data"] = DDDMondeNiv[arg]["Vent"], ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDCRHP"]*(1+DDDMondeNiv[arg]["Vent"]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDCREXP"]*DDDExpNiv[tostring(DDDMondeNiv[arg]["Vent"])]), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDCRFor"]*(1+DDDMondeNiv[arg]["Vent"]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDCRMag"]*(1+DDDMondeNiv[arg]["Vent"]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDDCRDef"]*(1+DDDMondeNiv[arg]["Vent"]/10)), ["class"] = "numberData"},
                    })
                    if DDDMondeNiv[arg]["Fini"] ~= nil then
                        stringBuilder = stringBuilder .. Template.DataRow({
                            {["data"] = "Histoire finie", ["class"] = "textData"},
                            {["data"] = DDDMondeNiv[arg]["Fini"], ["class"] = "numberData"},
                            {["data"] = math.floor(args["DDDCRHP"]*(1+DDDMondeNiv[arg]["Fini"]/10)), ["class"] = "numberData"},
                            {["data"] = math.floor(args["DDDCREXP"]*DDDExpNiv[tostring(DDDMondeNiv[arg]["Fini"])]), ["class"] = "numberData"},
                            {["data"] = math.floor(args["DDDCRFor"]*(1+DDDMondeNiv[arg]["Fini"]/10)), ["class"] = "numberData"},
                            {["data"] = math.floor(args["DDDCRMag"]*(1+DDDMondeNiv[arg]["Fini"]/10)), ["class"] = "numberData"},
                            {["data"] = math.floor(args["DDDCRDef"]*(1+DDDMondeNiv[arg]["Fini"]/10)), ["class"] = "numberData"},
                        })
                        stringBuilder = stringBuilder .. Template.DataRow({
                            {["data"] = "Histoire + VD", ["class"] = "textData"},
                            {["data"] = DDDMondeNiv[arg]["FiniVent"], ["class"] = "numberData"},
                            {["data"] = math.floor(args["DDDCRHP"]*(1+DDDMondeNiv[arg]["FiniVent"]/10)), ["class"] = "numberData"},
                            {["data"] = math.floor(args["DDDCREXP"]*DDDExpNiv[tostring(DDDMondeNiv[arg]["FiniVent"])]), ["class"] = "numberData"},
                            {["data"] = math.floor(args["DDDCRFor"]*(1+DDDMondeNiv[arg]["FiniVent"]/10)), ["class"] = "numberData"},
                            {["data"] = math.floor(args["DDDCRMag"]*(1+DDDMondeNiv[arg]["FiniVent"]/10)), ["class"] = "numberData"},
                            {["data"] = math.floor(args["DDDCRDef"]*(1+DDDMondeNiv[arg]["FiniVent"]/10)), ["class"] = "numberData"},
                        })
                    end
                end
            end
        end
        stringBuilder = stringBuilder .. Template.CloseContainer()
        stringBuilder = stringBuilder .. Template.ContainerLine()
    end
    if args["DDDlocBoss1"] ~= nil or args["DDDHPfixes"] ~= nil then
        stringBuilder = stringBuilder .. Template.OpenBox()
        stringBuilder = stringBuilder .. Template.Header("Statistiques",6)
        stringBuilder = stringBuilder .. Template.LabelRow({
            {["label"] = "Monde", ["style"] = "width:40%; padding-left:1em;"},
            {["label"] = '[[Niveau de combat|Niveau]]', ["style"] = "width:12.5%;"},
            {["label"] = 'HP', ["style"] = "width:12.5%;"},
            {["label"] = "Force", ["style"] = "width:12.5%;"},
            {["label"] = "Magie", ["style"] = "width:12.5%;"},
            {["label"] = "Défense", ["style"] = "width:2.5%;"}
        })
        if args["DDDHPfixes"] ~= nil then
            stringBuilder = stringBuilder .. Template.DataRow({
                {["data"]=args["DDDlocfixes"], ["class"]="textData"},
                {["data"]=args["DDDnivfixes"], ["class"]="numberData"},
                {["data"]=args["DDDHPfixes"], ["class"]="numberData"},
                {["data"]="-", ["class"]="numberData"},
                {["data"]="-", ["class"]="numberData"},
                {["data"]="-", ["class"]="numberData"},
            })
        end
        for i=1,3 do
            if args["DDDlocBoss"..tostring(i)] ~= nil then
                stringBuilder = stringBuilder .. Template.DataRow({
                    {["data"] = args["DDDlocBoss"..tostring(i)], ["class"] = "textData"},
                    {["data"] = args["DDDnivBoss"..tostring(i)], ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDHP"]*(1+args["DDDnivBoss"..tostring(i)]/10)), ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDFor"]*(1+args["DDDnivBoss"..tostring(i)]/10)), ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDMag"]*(1+args["DDDnivBoss"..tostring(i)]/10)), ["class"] = "numberData"},
                    {["data"] = math.floor(args["DDDDef"]*(1+args["DDDnivBoss"..tostring(i)]/10)), ["class"] = "numberData"}
                })
            end
        end
        if args["DDD2FlocBoss1"] ~= nil then
            for i=1,2 do 
                if args["DDD2FlocBoss"..tostring(i)] ~= nil then
                    stringBuilder = stringBuilder .. Template.DataRow({
                        {["data"] = args["DDD2FlocBoss"..tostring(i)], ["class"] = "textData"},
                        {["data"] = args["DDD2FnivBoss"..tostring(i)], ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDD2FHP"]*(1+args["DDD2FnivBoss"..tostring(i)]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDD2FFor"]*(1+args["DDD2FnivBoss"..tostring(i)]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDD2FMag"]*(1+args["DDD2FnivBoss"..tostring(i)]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDD2FDef"]*(1+args["DDD2FnivBoss"..tostring(i)]/10)), ["class"] = "numberData"}
                    })
                end
            end
        end
        if args["DDD3FlocBoss1"] ~= nil then
            for i=1,2 do 
                if args["DDD3FlocBoss"..tostring(i)] ~= nil then
                    stringBuilder = stringBuilder .. Template.DataRow({
                        {["data"] = args["DDD3FlocBoss"..tostring(i)], ["class"] = "textData"},
                        {["data"] = args["DDD3FnivBoss"..tostring(i)], ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDD3FHP"]*(1+args["DDD3FnivBoss"..tostring(i)]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDD3FFor"]*(1+args["DDD3FnivBoss"..tostring(i)]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDD3FMag"]*(1+args["DDD3FnivBoss"..tostring(i)]/10)), ["class"] = "numberData"},
                        {["data"] = math.floor(args["DDD3FDef"]*(1+args["DDD3FnivBoss"..tostring(i)]/10)), ["class"] = "numberData"}
                    })
                end
            end
        end
        stringBuilder = stringBuilder .. Template.CloseContainer()
        stringBuilder = stringBuilder .. Template.ContainerLine()
    end
    if args["DDDbrasier"]~=nil then
        stringBuilder = stringBuilder .. Template.OpenBox()
        stringBuilder = stringBuilder .. Template.Header("Faiblesses/Résistances",6)
        stringBuilder = stringBuilder .. Template.LabelRow({
            {["label"] = "Brasier", ["style"]="width:16.6%;"},
            {["label"] = "Glacier", ["style"]="width:16.6%;"},
            {["label"] = "Foudre", ["style"]="width:16.6%;"},
            {["label"] = "Eau", ["style"]="width:16.6%;"},
            {["label"] = "Ténèbres", ["style"]="width:16.6%;"},
            {["label"] = "Lumière", ["style"]="width:16.6%;"}
        })
        stringBuilder = stringBuilder .. Template.DataRow({
            {["data"] = (args["DDDbrasier"] or "x1.0"), ["class"]="numberData"}, 
            {["data"] = (args["DDDglacier"] or "x1.0"), ["class"]="numberData"}, 
            {["data"] = (args["DDDfoudre"] or "x1.0"), ["class"]="numberData"}, 
            {["data"] = (args["DDDeau"] or "x1.0"), ["class"]="numberData"}, 
            {["data"] = (args["DDDten"] or "x1.0"), ["class"]="numberData"}, 
            {["data"] = (args["DDDlum"] or "x1.0"), ["class"]="numberData"}
        })
        stringBuilder = stringBuilder .. Template.CloseContainer()
        stringBuilder = stringBuilder .. Template.ContainerLine()
        stringBuilder = stringBuilder .. Template.OpenBox()
        stringBuilder = stringBuilder .. Template.Header("Altérations d'état",5)
        stringBuilder = stringBuilder .. Template.LabelRow({
            {["label"] = "KO", ["style"]="width:20%;"},
            {["label"] = "Mini", ["style"]="width:20%;"},
            {["label"] = "Sommeil", ["style"]="width:20%;"},
            {["label"] = "Blackout", ["style"]="width:20%;"},
            {["label"] = "Stop", ["style"]="width:20%;"},
        })
        stringBuilder = stringBuilder .. Template.DataRow({
            {["data"] = (args["DDDko"] or "O"), ["class"]="numberData"}, 
            {["data"] = (args["DDDmini"] or "O"), ["class"]="numberData"}, 
            {["data"] = (args["DDDsommeil"] or "O"), ["class"]="numberData"}, 
            {["data"] = (args["DDDblackout"] or "O"), ["class"]="numberData"}, 
            {["data"] = (args["DDDstop"] or "O"), ["class"]="numberData"}, 
        })
        stringBuilder = stringBuilder .. Template.LabelRow({
            {["label"] = "Glaciation"},
            {["label"] = "Folie"},
            {["label"] = "Poison"},
            {["label"] = "Aimant"},
            {["label"] = "Somni"}
        })
        stringBuilder = stringBuilder .. Template.DataRow({
            {["data"] = (args["DDDglaciation"] or "O"), ["class"]="numberData"}, 
            {["data"] = (args["DDDfolie"] or "O"), ["class"]="numberData"}, 
            {["data"] = (args["DDDpoison"] or "O"), ["class"]="numberData"}, 
            {["data"] = (args["DDDaimant"] or "O"), ["class"]="numberData"}, 
            {["data"] = (args["DDDsomni"] or "O"), ["class"]="numberData"}
        })
        stringBuilder = stringBuilder .. Template.LabelRow({
            {["label"] = "Mise à feu"},
            {["label"] = "Ficelage"},
            {["label"] = "Gravité nulle"},
            {["label"] = "Bombe retard."},
            {["label"] = "Zantetsuken"}
        })
        stringBuilder = stringBuilder .. Template.DataRow({
            {["data"] = (args["DDDmise à feu"] or "O"), ["class"]="numberData"},
            {["data"] = (args["DDDficelage"] or "O"), ["class"]="numberData"}, 
            {["data"] = (args["DDDgravité nulle"] or "O"), ["class"]="numberData"}, 
            {["data"] = (args["DDDbombe retard"] or "O"), ["class"]="numberData"}, 
            {["data"] = (args["DDDzantetsuken"] or "O"), ["class"]="numberData"}
        })
        stringBuilder = stringBuilder .. Template.CloseContainer()
    end
    if args["DDDrecomp"]~= nil then
        stringBuilder = stringBuilder .. Template.ContainerLine()
        stringBuilder = stringBuilder .. Template.OpenBox()
        stringBuilder = stringBuilder .. Template.Header("Récompenses",1)
        stringBuilder = stringBuilder .. Template.DataRow({
            {["data"] = args["DDDrecomp"], ["class"] = "textData"}
        })
        stringBuilder = stringBuilder .. Template.CloseContainer()
    end
    stringBuilder = stringBuilder .. Template.CloseFinal()
    if multiples then stringBuilder = stringBuilder .. Template.CloseTab() end -- Ferme un tab si nécessaire
    return stringBuilder
end

return StatsDDD
Sauf mention contraire, le contenu de la communauté est disponible sous licence CC-BY-SA.