Huhu.
Viele Yanfly Plugins bieten die Möglichkeit Lunatic Code zu verwenden. Das bedeutet man kann Code in Notetags benutzen und sehr viel mehr Funktionalitäten zu States und Skills hinzufügen.
Ich hab mir gedacht, dass es eine coole Idee wäre, wenn wir einen Thread haben, wo man sich über sowas austauschen kann. Jeder hat so die Möglichkeit seine Ideen zu teilen oder nach
Hilfe zu einer bestimmten Idee zu fragen.
Dieser Thread soll nicht als reines Tutorial zu Lunatic Codes dienen, sondern eher an Beispielen verdeutlichen, was man alles machen kann.
Benötigt: YEP_BattleEngineCore, YEP_BuffStatesCore
Ich fand die Substitute Mechanik (ein Actor beschützt einen anderen indem er vor ihn springt ) von Anfang an sehr cool. Jedoch ist diese sehr limitiert, da man nicht direkt Ziele auswählen kann.
Erstellt einen Skill und einen State. Der Skill hat als Effekt, dass er dem Ziel den erstellten State gibt.
Fügt dann folgenden Lunatic Code in die Notetag Box des States ein.
- // Custom React Effect wird ausgeführt, wenn ein Battler als Ziel gewählt wird. Dabei
- // muss die aktuelle Action (Item oder Skill) verbinden, also kein Fehlschlag oder Ausweichen.
- // Der Code wird noch vor der Schadensberechnung ausgeführt. Die Variable 'value' bezieht sich
- // auf den Schaden, der gemacht werden soll.
- <Custom React Effect>
- // Teste ob der Actor von einem Gegner angegriffen wird,
- // Der Actor, der den Block Skill gecastet hat (Origin), darf nicht tot sein
- // und value sollte größer als 0 sein, weil ein negativer Wert eine Heilung wäre.
- if (user.isEnemy() && !origin.isDead() && value > 0) {
- // Blocker bewegt sich zum Ziel, target ist in diesem Fall der Actor, der beschützt werden soll.
- // user ist der Gegner, der angreift.
- origin.spriteStepToSubstitute(target);
- // Spiele eine Animation ab
- origin.startAnimation(1);
- // Blocker bekommt den Schaden. Da die Funktion gainHp einen Wert auf die aktuellen HP addiert, nehmen wir einfach
- // den negativen Schadenswert.
- origin.gainHp(-value);
- // Wir speichern uns den Schaden, den der beschützte Actor bekommt, um ihn später wieder zu heilen.
- // Man könnte auch value hier auf 0 setzen, jedoch würde dann das Schadenspopup eine 0 zeigen, was ja nicht stimmt
- // da der Blocker HP verliert.
- target._lossHp = value;
- // Falls der Blocker bei einem Block stirbt.
- if (origin.isDead()) {
- origin.performCollapse();
- }
- }
- </Custom React Effect>
- // Custom Conclude Effect wird als letztes ausgeführt, nach der Schadensberechnung.
- <Custom Conclude Effect>
- // Prüfe, ob die Variable _lossHp vorhanden ist
- if (target._lossHp) {
- // Wenn ja heile den Actor um diesen Wert.
- target.gainHp(target._lossHp);
- // Setzte den Wert auf undefined.
- target._lossHp = undefined;
- }
- </Custom Conclude Effect>
Wird der Actor mit diesem State nun von einem Gegner angegriffen, springt der Caster vor ihn und blockt den Schaden für ihn.
Benötigt: YEP_SkillCore
Durch Yanfly's SkillCore kann man die Kosten für Skills anpassen. Man könnte einem Actor so die Möglichkeit geben, Blut-Magie zu benutzen. Wenn er also den
State Blut-Magie hat, kann er HP anstatt MP benutzen, um die Kosten für seine Skills zu bezahlen.
Erstellt dazu einen State mit dem Namen "Blut-Magie". Dieser State brauch keine weiteren Notetags.
Jeder Skill der zu einem Blut-Magie Skill werden soll, bekommt nun folgende Notetags:
- // STATE_ID bezieht sich auf die Id des Blut-Magie States.
- // Dieses Notetag ermöglicht dem Skill MP Kosten hinzu zufügen.
- <Custom MP Cost>
- // Falls der User den Blut-Magie State hat, werden die
- // MP Kosten auf 0 gesetzt.
- if (user.isStateAffected(STATE_ID)) {
- cost = 0;
- }
- </Custom MP Cost>
- // Dieses Notetag ermöglicht dem Skill HP Kosten hinzu zufügen.
- <Custom HP Cost>
- // Wenn der User den Blut-Magie State hat, werden die
- // HP Kosten um den Wert der MP Kosten des Skills erhöht.
- if (user.isStateAffected(STATE_ID)) {
- cost += skill.mpCost;
- }
- </Custom HP Cost>
Benötigt: YEP_SkillCore, YEP_ItemCore
Man kann die Pre und Post Eval Skill notetags auch für Items benutzen. Damit können wir ein Item erstellen, dass man öfter als 1x mal benutzen kann.
Wichtig ist es, das Item auf non-consumable zu stellen.
- // Dieses Notetag wird vor der Schadensberechnung ausgeführt.
- <Pre-Damage Eval>
- // Die Variable _addUses gibt an, wie viele zusätzliche Verwendungen das Item hat. In diesem Fall 2 extra, also kann man das Item insgesamt 3 mal verwenden.
- item._addUses = item._addUses || 2;
- //Nachdem benutzen wird eins abgezogen
- item._addUses--;
- //Wenn keine zusätzlichen Verwendungen mehr übrig sind, wird das Item auf consumable gesetzt, heißt es wird nach der nächsten Verwendung gelöscht.
- if (item._addUses == 0) {
- item.consumable = true;
- }
- </Pre-Damage Eval>
Ich werde hier ab und zu meine Sachen posten, an denen ich so arbeite.
Falls ihr also Ideen habt oder Hilfe braucht, postet es gerne!
lg
waynee