Fallen Olivias OctoBattle Shield Point System

  • Heyho!


    Ich spiele derzeit mal hin und wieder nebenbei mit dem OctoBattle-Plugin von Fallen Olivia, genauer gesagt daraus mit dem Break Shield Point System.


    Das Prinzip funktioniert so:

    Jeder Kampfteilnehmer (Akteure und Gegner...kann man im Plugin einstellen, in meinem Fall alle) starten mit einer festen Anzahl sog. Shield Points, die quasi Angriffe abmildern. Werden die Schwächen der Gegner getroffen, so werden diese Punkte reduziert. Fallen die Punkte auf 0, so erhält der Betroffene einen Betäubt-Zustand (alle Kampfteilnehmer erhalten den gleichen!), wo er anfälliger für Schaden ist und anderen Schnickschnack. Nach 2 Runden verfällt der Zustand wieder und man hat seine ursprünglichen Schildpunkte wieder. Es geht so lange weiter bis der Gegner keine HP mehr hat, also Schildpunkte verringern, wieder hoch (automatisch), dann wieder verringern durch Skills usw.


    Ich würde das Ganze gerne erweitern (und damit dem original Spiel Octopath Traveler näherbringen) wollen: Boss-Gegner haben ein wenig andere Mechaniken. Sinken ihre Schildpunkte auf 0, so können sie im nächsten Lauf (im gleichen Kampf) mehr Schildpunkte erhalten. Z.B. startet ein Boss mit 4 Schildpunkten, sind diese auf 0 reduziert und der Boss noch nicht besiegt, hat er danach 6 Schildpunkte usw..


    Ich bin (dank Hilfe) nun so weit, dass ich bestimmten Gegner einen Zustand geben kann, wenn der Betäubtzustand aufhört. Im Plugin selbst gibt es für States nur ein Notetag

    Code
    1. <Break Shields: +x>
    2. <Break Shields: -x>
    3. x is the increased/decreased amount of Break Shields applied to how much the battler will start with. If you do not use this notetag, then no extra Break Shields will be added.


    Ich habe erstmal gedacht, dass mir das helfen könnte. Ich bin mehrmals sicher gegangen, dass auch der neue Zustand nach dem Ende des Betäubt-Zustand eintritt beim Gegner, aber das Notetag löst nichts aus.


    Hat vielleicht jemand eine Idee, wie ich besondere Bosse machen könnte, die mit beispielsweise 3 Shield Points starten, nach dem ersten Durchgang haben sie dann 4 und danach 6 mit einem Maximum bei 6?


    Ansonsten gibt es noch die Notetags für Skills/Items

    Code
    1. <Change Break Shield: x>
    2. This will change the target battler's Break Shield value to x if the battler isn't currently stunned. No effect if you don't use this notetag.
    Code
    1. <Increase Break Shield: +x>
    2. <Decrease Break Shield: -x>
    3. This will either increase the target battler's break shield by x or decrease the target battler's break shield by x. Happens after the Change Break Shield notetag. No effect if you don't use this notetag.


    Vielleicht wäre es möglich einen Dummy-Skill zu machen, der nach dem Ende des Betäubt-Zustandes (mit dem BuffsStatesCore von Yanfly z.B. im <Custom Leave>) einfach mit einem Dummyskill das auszulösen?


    Ansonsten freue ich mich natürlich über Hilfe jeglicher Art :3


    LG

  • Ok...ich habe da irgendwie ne Zwischenlösung hinbekommen...bin aber damit noch nicht zufrieden XD


    Ich habe in meinem Betäubtzustand ein Custom-Leave-Effekt eingebaut, der einen weiteren Zustand (14) gibt:


    <Custom Leave Effect>

    target.addState(14)

    </Custom Leave Effect>


    diesen Zustand kann allerdings nur der Boss-Gegner haben, sodass wenn ALLE anderen Kämpfer diesen Zustand bekommen würden, würden sie ihn dank einem Zustand-Widerstand NICHT bekommen!


    in diesem State 14 habe ich nun einen Apply-Effekt gemacht, der einen Skill triggert (auf die eigene Person angewendet)


    <Custom Apply Effect>

    // Skill to use when state ends

    var skill = 10;

    // Target

    var target = 0;

    // Queue the forced action

    BattleManager.queueForceAction(user, skill, target);

    </Custom Apply Effect>


    Skill 10 enthält nun nur noch das Notetag:

    <Change Break Shield: 5> (<Increase Break Shield: +2> geht auch dann)


    Das Ergebnis:

    Der Boss wird betäubt, am Ende erhält er den Ein-Runden-zustand 14, der den Skill 10 auslöst. Seine normale Shield Points werden auf 5 (um 2) gesetzt/erhöht (man sieht aber noch vorher die ursprüngliche Anzahl).


    Jetzt hätte ich persönlich noch folgenden Wunsch:


    Ich würde gerne beim ersten Mal, in dem Skill 10 (der nur bei diesem Boss hervorgerufen wird) angewendet wird, dass er die normale Schildpunktzahl um 2 erhöht (das klappt ja auch), beim 2.ten Mal aber um 3 (oder 4 oder eine andere Zahl) erhöht wird. Das Problem: ich weiß nicht genau, wie ich eine IF-Abfrage mache (müsste ich ja und dann mit einer besonderen Boss-Variablen), die entweder das erste Notetag macht bzw. das 2te, also


    If Boss-Var = 0

    <Change Break Shield: 5>

    BossVar +1

    If Boss-Var = 1

    <Change Break Shield: 7>

    BossVar +1


    If Boss-Var = 2

    Tue nichts mehr!


    So in der Art XD


    Jemand JS-Pfiffiges oder Plugin-Affines ne Idee? Mein Wunsch: Solange der Gegner lebt -> 1. Lauf: 4 Schildpunkte; 2. Lauf: 6 Schildpunkte; 3. Lauf: 7 Schildpunkte (oder beliebige andere Zahlen)



    EDIT: Auch zum letzten habe ich nun irgendwie was hinbekommen, was geht. Im State 14, der den Skill aufruft, der die Schildpunkte erhöht, mache ich einfach eine If-Abfrage nach einer Variable (die ich nur für diesen Boss-Battle (oder andere später) brauche. Wenn Var = 0, dann wird Skill 10 ausgeführt, der <Change Break Shield: 5> beinhaltet, und wenn Var = 1 (welche ich nach dem Benutzen von Skill 10 setze), dann mache Skill 11, der <Change Break Shield: 7> beinhaltet. Also habe ich dann 2 Extra-Dummy-Skills, die dann was machen. Das läuft auch erstmal...aber kostet natürlich Platz irgendwie. N Notetag für den Enemy, der seine Schildpunkte-Entwicklung beschreibt, wäre um einiges platzsparender, also sowas wie <Break Shields: x, x, x, x> wo x halt die Schildpunkte sind, die der der Gegner mit diesem Notetag nacheinander durchläuft (sollte der Kampf länger dauern, wird die letzte Zahl genommen. Sowas wäre optimal XD

  • Hi Dizzy,


    versuch es mal damit:


    <Custom Apply Effect>

    if (user.isStateAffected(StateID)) { // Zustand der Bedingung ist

    user.addState(StateID); // Zustand der gegeben werden soll

    {


    user.removeState(stateId); //Hier den zu entfernenden Zustand eintragen

    }

    }

    </Custom Apply Effect>


    Kann es allerdings nicht mit dem Shield-System testen, da ich das Plugin nicht habe, sollte jedoch funktionieren.


    VG

  • Danke für die Antwort, leider hilft mir das gar nicht weiter.


    Das Problem an dem Custom Apply von dir ist auch, dass damit nicht auszuschließen ist, dass die falsche Person den state bekommt. Sagen wir ein anderer User bekommt den state (das macht ja das Plugin. es gibt JEDEM Kämpfer unter Voraussetzungen den state), dann wird der Custom Apply Effect ausgelöst und der User bekommt den anderen State. Das will ich aber gar nicht. Ich will ja nurm dass der Gegner ihn bekommt, wenn der andere State VORBEI ist. Beim Apply ist es noch zu früh bzw. unnötig. würde im Leave dann mehr Sinn machen, aber das Problem, dass alle Teilnehmer den State bekommen können (auch zu unterschiedlichen Zeiten), bleibt bestehen.


    Insofern bringt mir das leider gar nichts und meine bisherige Lösung bringt mich da am weitesten.


    Trotzdem danke für die Antwort :)