❤ 0 Ces astuces sont issues d'un tutoriel de Fomar0153, ici : How to Make the Most of Custom Formulae. #Part 1 (qu'on peut traduire à la louche par "Comment tirer le meilleur parti des formules maison ?")
Ce que vous pouvez faire avec les formules sans passer par des scripts complexes.
Introduction
Exemple : un personnage précis régénère mieux que les autres s'il mange des pommes.
Dans la fenêtre "Damage", choisir HP Recover comme Type.
Comme formule :
Explication.
De façon plus compréhensible, cette formule se traduit par :
"L'ID de B est-elle égale à 1? Si oui, donner 500 pv, sinon 100 pv."
Dans la boîte de formule "a" représente l'attaquant ou l'utilisateur et "b" le défendeur ou le bénéficiaire (Sort de soins par exemple).
Une autre façon d’écrire cette formule serait :
1
| if b.id == 1; 500; else; 100; end; |
Les ";" est l'équivalent d'un retour à la ligne. Ce serait comme écrire la formule ainsi :
1
2
3
4
5
| if b.id == 1
500
else
100
end |
Contraintes.
La boîte de script a une limite en nombre de caractères.
S'il y a une erreur dans la formule, la compétence échouera systématiquement.
Quelques scénarios.
1. Certains membres du groupe, dû à leur race, ne peuvent bénéficier de certains effets.
La moitié du groupe est humaine, l'autre robotique. Un robot ne se soigne pas comme un humain, comment faire ?
1
| b.id==1 or b.id==3 or b.id==4 ? 500 : 0 |
Où les personnages avec l'ID 1,3 et 4 seraient humains, et 2 serait un robot.
Noter l'absence d'espace entre "id" et "==". C'est pour des raisons d’économie de caractères, que nous avons en nombre limité.
2. Personnage 1 est mieux nourri par la lasagne de cheval, le personnage 2 y est allergique (Poison) et 3 et 4 s'en foutent.
1
| if b.id==1;200;elseif b.id==2;b.add_state(2);0;else;100;end |
Ce qui se lit "Si personnage 1 mange, donner 200 pv, mais si personnage 2 mange, il recoit le state 2 (Poison) et 0 pv. Sinon (Ni perso 1 ou 2), donner 100 pv."
Nous pouvons donc infliger des états (buff ou debuff) à des personnages à travers les formules.
3. Un sort de Foudre qui inflige plus de dégâts en extérieur qu'en intérieur.
Pour savoir si l'on est en intérieur ou extérieur, il faut utiliser un switch (J'entre dans une maison, switch "Exterieur"==OFF. Je sors : switch Exterieur==ON par exemple).
1
| $game_switches[x] ? a.mat *8 - b.mdf *2 : a.mat *4 - b.mdf * 2 |
Où x est le numéro du switch.
"$game_switches[x] ?" signifie "Est ce que le switch est ON?".
4. J'ai une compétence dans le niveau se trouve dans une variable.
1
| $game_variables[x] * 10 |
Où x est le numéro de votre variable.
Les dégâts infligés seront égaux à la valeur de cette variable * 10.
5. J'ai un personnage aimant le hasard et je le veux utiliser deux dés dans sa formule.
Compliqué, suivez bien !
1
| c=1+rand(6);d=1+rand(6);if c==1 and d==1;10000;elsif c==d;c*400;else;(c+d)*100;end; |
Regardons en detail.
1
| c=1+rand(6);d=1+rand(6) |
"c" & "d" sont des variables locales, c'est à dire une variable dans laquelle on enregistre une information (comme n'importe quelle variable) mais qui sera effacée une fois le calcul fini.
Ne pas utiliser a et b, puisqu'ils correspondent aux attaquants et defendeurs.
Dans cette formule, c et d représentent les deux dés à 6 faces.
rand(6) signifie que l'on choisi un nombre aléatoire entre 0 et 5. L'on ajoute donc 1 pour avoir l'équivalent d'un dé à 6 faces (1 à 6 pour resultat).
Si chaque dé fait 1, alors le personnage fera 10 000 de degats !
Si les dés font le même score, excepté 1, alors le personnage infligera le score du premier dé multiplié par 400 (Double 6 = 6 * 400 = 2400).
Sinon, le personnage infligera l’addition des deux dés multiplié par 100.
L'on mets c + d entre parenthèses pour que l'addition soit faite avant la multiplication.
6. Comment faire le sort "Demi" de Final Fantasy ?
Ce sort divise par 4 les points de vie de la cible.
Facile : on divise les points de vie actuels de celui qui recoit le sort par 4.
7. Je veux que l'attaque prenne en compte les statistiques d'un personnage particulier.
Par exemple l'attaque de la gentille princesse est en fait une attaque par son garde du corps.
1
| $game_actors[1].atk * 4 - b.def * 2 |
Où 1 est le garde du corps en question.
8. Je veux que mon attaque fasse plus de dommages si la cible est empoisonnée (ou autre).
1
| c=a.atk*4-b.def*2;b.state?(2) ? c=(c*110)/100 : c=(c*90)/100 ; c |
On enregistre la formule de base dans "c" (variable locale).
On regarde si la cible a le state (2).
Si c'est le cas, on augmente c de 10%.
Sinon, on lreduit les dommages de 10%.
Enfin, on donne pour résultat de la formule "c" .
Source :
- Fomar0153, "How to make the most of custom formulae. #Part 1", Rpgmakervxace.net, posté le 2 avril 2012 [consulté le 5 juillet 2021], https://web.archive.org/web/20120407114537/https://www.rpgmakervxace.net/topic/2340-how-to-make-the-most-of-custom-formulae-part-1/ ou http://cobbtocs.co.uk/wp/?p=271
|