Tutorial compétences :
I : Définition
Une compétence (comp) est une technique utilisée par les personnages du jeu, ou par les ennemis des personnages, parfois durant un combat, ou sur la carte de déplacement.
Les effets sont très variés, mais se résument générallement à blesser des adversaire, réduire leur efficacité au combat, ou soigner/fortifier le personnage/les alliés du personnage.
Exemple : La compétence intégrée à RPG_Maker Xp 'Vie' redonne 150 pv à la cible du sort.II :Composantes d'une compétence.
Nom : Le nom qui sera affiché dans le jeu, et dans l'éditeur. Peut avoir comme valeur :
n'importe quel texte pas très long.Icône : L'icône qui sera placée à gauche du nom dans le jeu, afin d'aider à la reconaissance des compétences. Peut avoir comme valeur :
une petite image du dossier 'icônes' (25x25 pixels en gros je crois)Description : Court texte (une ligne) qui décrit l'effet de la compétence. Affiché dans le jeu et dans l'écran d'édition des compétences.
Peut avoir comme valeur : n'importe quel texte tenant en une ligne.Cible : Défini le type de cibles que peux avoir la compétence. Peut prendre les valeurs :
aucune, un ennemi, tous les ennemis, un allié, tous les alliés, un allié mort, tous les alliés mort, l'utilisateur de la compétence.Peut être utilisé : Définit les conditions d'utilisation de la compétence. Peut avoir les valeurs :
Sur la carte et en combat, Sur la carte uniquement, En combat uniquement, Jamais.Effet sonore dans le menu : Explicite le son qui sera joué par le programme par dessus la musique de combat/de carte lors de l'utilisation de la compétence.
Peut avoir comme valeur : N'importe quel son de la base de donnée.Appelle un évenement commun : Définit si l'utilisation de la compétence lance la série d'actions d'un évenement commun (défini en lancement : appelé), et si oui quel évenement en particulié est lancé.
Peut avoir comme valeur : L'identifiant d'un évenement commun défini en lancement par appel.Coût en PM : Nombre de Pm qui seront déduit de la réserve de Pm de l'utilisateur après utilisation. Si l'utilisateur n'as pas assez de Pm, il ne pourras pas utiliser cette technique.
Peut avoir comme valeur : N'importe quelle valeur de 0 à 9999.Valeurs "de caractéristiques" (attaque, défense, force, dextérité, agilité, intelligence : Chiffres utilisés pour calculer la puissance du sort.
Peut avoir comme valeurs : N'importe quelle valeur entre 0 et 200.Taux d'effet : Chiffre "de base" utilisé pour calculé l'efficacité du sort.
Peut avoir comme valeurs : N'importe quelle valeur entre -9999 et 9999.Précision : Précision "de base" du sort.
Peut avoir comme valeurs : N'importe quelle valeur entre 0 et 100.Defense physique : Indique l'efficacité d'une défense physique contre le sort.
Peut avoir comme valeurs : N'importe quelle valeur entre 0 et 200.Defense magique : Indique l'efficacité d'une défense physique contre le sort.
Peut avoir comme valeurs : N'importe quelle valeur entre 0 et 200.Variance : Dans quelle mesure le résultat du sort sera 'aléatoire'.
Peut avoir comme valeurs : N'importe quelle valeur entre 0 et 200.Attributs : Défini pour chaque attribut (élément) si cet élément est constitutif du sort ou pas.
Par exemple, une boule de feu aura l'attribut (élément) feu..
Peut avoir comme valeurs : Selon chaque attribut : 0 (rien) ou 1 (coché).Modification des status : Défini pour chaque statut si la compétence à des chances d'ifliger ce statut ou pas.
Par exemple, un sort de silence aura le statut silence, car il peux infliger silence à un adversaire..
Peut avoir comme valeurs : Selon chaque statut : 0 (rien) ou 1 (coché)..
Par exemple, la compétence 'Vie' est définit ainsi :
Nom : Vie
Icône : 045 - Skill02
Description : Redonne des HP à un allié
Cible : Un allié
Peut être utilisé : Sur la carte et en combat
Animation sur l'utilisateur : 002 - Sort magique
Animation sur la cible : 015 : Récupération HP1
Effet sonore dans le menu : 105 - Heal01
Appelle un évenement commun : Aucun(e)
Coût en Pm : 80
Taux d'effet : -150
Attaque : 0
Esquive : 0
Force : 0
Défense : 0
Agilité : 0
Intelligence : 50
Précision : 100
Déf. Physique : 0
Déf. Magique : 100
Variance : 15III Calcul de la force de la compétence.
Lors du lancement, on commence par voir si la compétence va toucher la cible ou pas.
Formule 'de précision' :
- Code:
-
Script : Game_Battler 3
118 hit = skill_hit
119 if skill.att_f > 0
120 hit *= user.hit/100
121 end
122 hit_result = (rand(100) < hit)
"Traduction" :
line 118 : on met la précision dans la variable interne au jeu 'hit'
line 119 : si la valeur d'attaque de la compétence est plus grande que 0 (strictement) -> donc différente de 0, en résumé...
line 120 : alors on multiplie la valeur 'hit' par ['précision du lanceur' divisé par 100]. Sinon on ne fait rien, et on laisse la valeur 'hit' à sa valeur initiale.
line 121 : fin du si / alors
line 122 : on crée un nombre aléatoire entre 0 et 100. Si 'hit' est plus grand que ce nombre, alors on à hit_result = 1 (attaque réussie) sinon on a hit_result = 0 (attaque échouée).
Exemple : Le personnage principal lance le sort 'vie' sur un allié. Comme la valeur 'attaque' de 'vie' est 0, on à hit = 'valeur de précision' = 100
On tire un nombre aléatoire entre0 et 100. On obtiens 56.
On a 100>56, le sort est une réussite ! (Normal, c'est pour un sort de soin mais bon ...)Ensuite, on calcule la puissance du sort.
Formule 'de puissance' :
- Code:
-
Script : Game_Battler 3
128 power = skill.power + user.atk * skill.atk_f /100
129 if power >0
130 power -= self.pdef * skill.pdef_f /200
131 power -= self.mdef * skill.mdef_f /200
132 power = [power,0].max
133 end
"Traduction" :
line 128 : On range dans la variable 'power' le taux d'effet de la compétence additionné de [l'attaque du lanceur multiplié par la valeur 'attaque' de la compétence divisé par 100]
line 129 : Si power est plus grand que 0 (donc pour un sort qui a un taux d'effet positif, donc qui inflige des blessures, au contraire des sorts de soin par exemple. Alors : ....
line 130 : On soustrait [Défense physique de la cible multiplié par valeur Def. Physique de la compétence divisé par 200] à power
line 131 : On soustrait [Défense magique de la cible multiplié par valeur Def. Magique de la compétence divisé par 200] à power
line 132 : On prends le plus grand entre 0 et power (pour éviter d'avoir un sort de dégat tellement défendu qu'il rendrait des points de vie à la cible !)
line 133 :Fin du Si/Alors
Et on à alors une variable power qui corresponds à la puissance brute du sort.
Exemple : Reprenons le sort de 'vie' qui a réussi tout à l'heure.
Sa valeur de 'taux d'effet' est de -150. Donc on prends power = -150 + 0 (0 car la valeur d'attaque est 0).
On a power = -150, ce qui est plus petit que 0, donc on oublie la suite.Ensuite on calcule l'efficacité du sort.
Formule "d'efficacité" :
- Code:
-
Script : Game_Battler 3
135 rate = 20
136 rate += (user.str * skill.str_f / 100)
137 rate += (user.dex * skill.dex_f / 100)
138 rate += (user.agi * skill.agi_f / 100)
139 rate += (user.int * skill.int_f / 100)
"Traduction" :
line 135 : On fixe l'efficacité de base à 20 dans la variable interne 'rate'
line 136 : On ajoute à 'rate' la valeur [Force du lanceur multiplié par la valeur 'Force' de la compétence divisé par 100]
line 137 : De même avec la dextérité au lieu de la force...
line 138 : Puis avec L'agilité...
line 139 : Puis avec l'intelligence.
Et on obtient une valeur 'rate' qui corresponds à l'efficacité globale du sort.
Exemple : Le sort de soin débute avec un 'rate' de 20
Sa valeur de 'Force' est 0, donc on ajoute 0 à rate.
Sa valeur de 'Dextérité' est 0, donc on ajoute 0 à rate.
Sa valeur de 'Agilité' est 0, donc on ajoute 0 à rate.
Sa valeur de 'Intelligence' est 50. Donc on ajoute (intelligence du héros*50/100) à 'rate'. Le héros à 1960 en intelligence (c'est un bon mage ^^), ce qui donne : (2000*50/100) = 9800.
Donc rate = 20 + 980 = 1000.Enfin on regarde la valeur de combat finale :
- Code:
-
self.damage = power * rate / 20
"Traduction" :
Dégats infligés = Valeur de la variable 'power' multiplié par la valeur de la variable 'rate' divisé par 20.
Exemple : Le sort vie à une efficacité finale de : power*rate = -150*1000/20 = -7500.
Il soignera environ 7500 pv à la cible.Enfin pour l'amplitude la formule est :
- Code:
-
Script : Game_Battler 3
153 if skill.variance>0 and self.damage.abs >0
154 amp = [self.damage.abs * skill.variance / 100,1].max
155 self.damage += rand(amp+1) + rand(amp+1) - amp
156 end
"Traduction" :
line 153 : On applique la formule "Si la variance est différente de 0 et si la compétence effectue vraiment des dégats". Alors :...
line 154 : On range dans la variable interne 'amp' le plus grand entre 1 et [dégats infligés multiplié par 'Variance' de la compétence divisé par 100]
line 155 : On ajoute aux dégats la valeur : [Nombre aléatoire entre 0 et 'amp+1' ajouté à une Autre nombre aléatoire entre 0 et 'amp+1' Soustrait à 'amp']
line 156 : Fin du Si/Alors
Exemple : La valeur finale de 'vie' etait 7500.
On calcule amp = 7500*variance/100 = 7500*15/100 = 1125
On tire un nombre aléatoire entre 0 et 1126, on trouve 524.
On tire un autre nombre aléatoire entre 0 et 1126, on trouve 112.
On ajoute aux "dommages" (donc au soins) : 524 + 112 - 1125 = -489
Donc le sort de soin à une nouvelle valeur finale de : -7500-489 = -7989.
La cible gagne exactement 7989 points de vie.Voilà !
C'est tout !!
...
Des questions ?