| Die Gegner-Fertigkeiten

###### Vorüberlegungen I - Was sollen die Gegner können?

Über diese Frage solltet ihr euch im Klarem sein, ehe ihr überhaupt an die Code-Gestaltung geht. Denn schließlich soll hier etwas an Effekten geboten werden wie beispielsweise der Schlag mit einer Waffe oder die Wirkung eines Zaubers. Denn für diese Effekte braucht ihr die entsprechenden Grafiken in Form von Kampfanimationen, die ihr in der Datenbank des Makers entsprechend zusammensetzen müsst.
In unserem Beispiel gehen wir davon aus, dass alle Gegner sowie Hauptcharaktere mit Schwertern bzw. Dolchen ausgerüstet sind. Da passt die bei der Erstellung der Gegner-Startpositionen bereits verwendete Kampfanimationsgrafik [enemy_death.png] für den Anfang perfekt. Sie enthält Schwertschläge und die Sterbeanimation (letztere lassen wir hier außen vor). Was die Magie angeht (sowohl von den Gegnern, als auch von den Hauptcharakteren), so sollen in unserem Beispiel die bereits in der Datenbank standardmäßig vorhandenen Animationen verwendet werden.

Wichtig ist, dass ihr, bevor ihr weiter macht, die zuvor genannte "Gegner-KI" und die "Globale Schadensberechnung" angelegt habt. Denn die kommen bei den Gegner-Fertigkeiten zum Einsatz...

###### Vorüberlegungen II - Die Gegner-Fertigkeiten

Die Fertigkeiten sollen nun alle möglichen Arten von Zaubern sowie die Angriffe mit Waffen umfassen. Dabei muss zu Beginn geprüft werden, ob der Gegner, der gerade am Zug ist, die Fertigkeit auch ausüben kann (was vom Stand der MP abhängt). Die Gegner sollen ein paar Schritte vor, dann soll die Kampfanimation der Fertigkeit angezeigt und zuletzt der Schaden angerichtet werden. Den wirklichen Abschluss macht der Aufruf der ersten Seite der HP/MP-Berechnung, damit auch die Anzeige am unterem Bildschirmrand auf den aktuellen Stand gebracht wird, nachdem ein Angriff gesessen hat. Angelegt wird der Code in dem Ereignis, das ihr "Gegnerskills" genannt und wo ihr schon die Schadensberechnung und die Gegner-KI angelegt habt:

| Zuerst soll der Basis-Schaden festgelegt werden. Dies macht ihr, indem ihr die bereits im vorherigem Kapitel verwendete Variable "Calc - Damage" auf einen Wert eurer Wahl setzt (in unserem Beispiel soll dies der Wert "10" sein).
| Direkt danach soll eine Bedingung abfragen, ob die Variable "Chara-Move-ID" genau dem Wert "5" entspricht (der Gegner #1 ist am Zug). Hier brauchen wir einen Nein-Fall.
| Im Ja-Fall soll zuerst in die Variable "Calc-Attack" der Wert der Variable geschrieben werden, die ihr "Attack - Gegner #1" genannt habt.
| Danach soll eine neue Bedingung abfragen, ob der Wert der Variable "MP-Gegner 1" kleiner als ein von euch bestimmter Wert ist. Da wir in unserem Beispiel die Fertigkeit eines Schwertangriffes anlegen, soll dieser Wert "0" sein. Ein Nein-Fall ist hier nötig.
| Im Ja-Fall dieser Bedingung wiederum soll zuerst ein neuer, freier Schalter, den ihr "Skill not possible" nennt, auf "AN" gestellt werden. Danach soll zum Label #1 gesprungen werden.
| Im Nein-Fall soll die Variable "MP-Gegner 1" um den Wert verringert werden, der in der Bedingung schon abgefragt wurde. Da in unserem Beispiel geprüft wurde, ob die Variable "MP-Gegner 1" kleiner als 0 ist, soll auch "0" nun abgezogen werden.
| Im Nein-Fall der Bedingung wiederholt ihr das ganze für den Fall, dass der Wert der Variable "Chara-Move-ID" genau dem Wert 6, 7 und 8 entspricht. Hier geht es dann um die "Gegner #2", "Gegner #3" und "Gegner #4".
| Habt ihr das erledigt, begebt ihr euch unter den End-Fall der zuerst angelegten Bedingung, wo ihr die Ereignis-Seite 1 dieses Ereignisses aufruft.
| Nach dem Ereignisaufruf soll eine neue Bedingung abfragen, ob der Wert der Variable "Enemy's Target" genau dem Wert "1" entspricht. Ein Nein-Fall ist hier unbedingt erforderlich.
| Im Ja-Fall dieser Bedingung soll in die Variable "Selected Hero" (ihr habt sie auf der Seite 1 dieses Ereignisses bereits verwendet) der Wert der Variable "Held #1" geschrieben werden. Auch soll in die bereits verwendete Variable "Calc - Defense" der Wert der Variable "Defense - Held #1" geschrieben werden.
| Im Nein-Fall der Bedingung wiederholt ihr das ganze für die Fälle, in denen der Wert in der Variable "Enemy's Target" den Werten "2", "3" und "4" entspricht.
| Nach dem End-Fall der ersten dieser vier Bedingungen soll die zweite Ereignis-Seite dieses Ereignisses aufgerufen werden.
| Legt wieder eine neue Bedingung an, die prüft, ob der Wert der Variable "Chara-Move-ID" dem Wert "5" entspricht. Auch hier brauchen wir wieder einen Nein-Fall.
| Im Ja-Fall der Bedingung soll zuerst das Ereignis, das ihr "Gegner 1" genannt habt, zwei Schritte nach rechts bewegt, dann das Kampfereignis für den Schwertschlag nach rechts gezeigt werden.
| Im Nein-Fall der Bedingung wiederholt ihr die Bedingung für die Fälle, dass der Wert der Variable "Chara-Move-ID" dem Wert "6", "7" und "8" entspricht.
| Direkt danach soll eine neue Bedingung prüfen, ob der Wert der Variable "Calc - Ergebnis" größer als der Wert "0" ist. Ein Nein-Fall ist hier nicht nötig.
| Innerhalb dieser Bedingung soll eine weitere folgen, die abfragt, ob die Variable "Enemy's Target" genau dem Wert "1" entspricht. Einen Nein-Fall brauchen wir hier.
| Im Ja-Fall dieser Bedingung wiederum soll die HP des Helden, dessen Nummer von der Variable "Held #1" vorgegeben wird, um den Wert der Variable verringert werden, die ihr "Calc - Ergebnis" genannt habt. Danach soll ein Soundeffekt für einen Treffer abgespielt werden.
| Als nächstes soll noch das Ereignis kurz rot blinken, das ihr "Held #1" genannt habt.
| Im Nein-Fall der Bedingung wiederholt ihr die Bedingungen für den Fall, dass der Wert der Variable "Enemy's Target" dem Wert "2", "3" und "4" entsprechen könnte. Bedenkt, dass hier jeweils die Variablen verwendet und Ereignisse blinken gelassen werden, die den entsprechenden Helden im SKS zugeordnet sind (Held #2 bis Held #4)
| Ganz am Ende des Maker-Codes fahrt ihr mit einer neuen Bedingung fort, die prüft, ob der Wert der Variable "Chara-Move-ID" dem Wert "5" entspricht. Beachtet, dass ihr auch hier wieder einen Nein-Fall braucht.
| Im Ja-Fall der Bedingung soll das Ereignis, das ihr "Gegner 1" genannt habt, zwei Schritte nach Links und mit dem Gesicht nach rechts blickend ausgerichtet werden.
| Im Nein-Fall der Bedingung wiederholt ihr die Abfrage für die Fälle, dass die Variable "Chara-Move-ID" die Werte "6", "7" und "8" in sich tragen kann. Bewegt dann die entsprechenden Gegner-Ereignisse auf ihren ursprünglichen Platz.
| Begebt euch nun ganz an das Ende des von euch angelegten Maker-Codes und ruft dort vom Ereignis, das ihr "HP/MP-Berechnung" genannt habt, die erste Ereignis-Seite auf.
| Danach setzt ihr noch ein Label mit der Nummer 1.

###### Darstellung der Stichpunkte in MML

Gegnerskills-Ereignis
[Ereignisseite 1][Push Key] /* * Hier befindet sich der Code für die Gegner-KI */
[Ereignisseite 2][Push Key] /* * Hier befindet sich der Code für die globale Schadensberechnung */
[Ereignisseite 3][Push Key] [Variable [Calc - Damage]][<-- [Wert setzen][10]] [Bedingung][Variable][Chara-Move-ID][gleich][5]
| [Ja-Fall]
| [Variable [Calc - Attack]][<-- [Wert setzen][Variable [Attack - Gegner #1] übergibt Wert]] [Bedingung][Variable][MP - Gegner 1][kleiner][0]
| [Ja-Fall]
| [Schalter [Skill not possible]][<-- [Schalterzustand [AN]]] [Goto Haltepunkt [1]]
| [Nein-Fall]
| [Variable [MP - Gegner 1]][<-- [-][0]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][6]
| [Ja-Fall]
| [Variable [Calc - Attack]][<-- [Wert setzen][Variable [Attack - Gegner #2] übergibt Wert]] [Bedingung][Variable][MP - Gegner 2][kleiner][0]
| [Ja-Fall]
| [Schalter [Skill not possible]][<-- [Schalterzustand [AN]]] [Goto Haltepunkt [1]]
| [Nein-Fall]
| [Variable [MP - Gegner 2]][<-- [-][0]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][7]
| [Ja-Fall]
| [Variable [Calc - Attack]][<-- [Wert setzen][Variable [Attack - Gegner #3] übergibt Wert]] [Bedingung][Variable][MP - Gegner 3][kleiner][0]
| [Ja-Fall]
| [Schalter [Skill not possible]][<-- [Schalterzustand [AN]]] [Goto Haltepunkt [1]]
| [Nein-Fall]
| [Variable [MP - Gegner 3]][<-- [-][0]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][8]
| [Ja-Fall]
| [Variable [Calc - Attack]][<-- [Wert setzen][Variable [Attack - Gegner #4] übergibt Wert]] [Bedingung][Variable][MP - Gegner 4][kleiner][0]
| [Ja-Fall]
| [Schalter [Skill not possible]][<-- [Schalterzustand [AN]]] [Goto Haltepunkt [1]]
| [Nein-Fall]
| [Variable [MP - Gegner 4]][<-- [-][0]
[Ereignisaufruf][Kartenereignis [Gegnerskills]][Ereignisseite [1]] [Bedingung][Variable][Enemy's Target][gleich][1]
| [Ja-Fall]
| [Variable [Selected Hero]][<-- [Wert setzen][Variable [Held #1] übergibt Wert]] [Variable [Calc - Defense]][<-- [Wert setzen][Variable [Defense - Held #1] übergibt Wert]]
| [Nein-Fall]
| [Bedingung][Variable][Enemy's Target][gleich][2]
| [Ja-Fall]
| [Variable [Selected Hero]][<-- [Wert setzen][Variable [Held #2] übergibt Wert]] [Variable [Calc - Defense]][<-- [Wert setzen][Variable [Defense - Held #2] übergibt Wert]]
| [Nein-Fall]
| [Bedingung][Variable][Enemy's Target][gleich][3]
| [Ja-Fall]
| [Variable [Selected Hero]][<-- [Wert setzen][Variable [Held #3] übergibt Wert]] [Variable [Calc - Defense]][<-- [Wert setzen][Variable [Defense - Held #3] übergibt Wert]]
| [Nein-Fall]
| [Bedingung][Variable][Enemy's Target][gleich][4]
| [Ja-Fall]
| [Variable [Selected Hero]][<-- [Wert setzen][Variable [Held #4] übergibt Wert]] [Variable [Calc - Defense]][<-- [Wert setzen][Variable [Defense - Held #4] übergibt Wert]]
[Ereignisaufruf][Kartenereignis [Gegnerskills]][Ereignisseite [2]] [Bedingung][Variable][Chara-Move-ID][gleich][5]
| [Ja-Fall]
| [Eventbewegung][Gegner 1][Schritt nach rechts] * 2 [Kampfanimation zeigen][Schwertschlag rechts][Ziel [Gegner 1][Warten bis fertig]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][6]
| [Ja-Fall]
| [Eventbewegung][Gegner 2][Schritt nach rechts] * 2 [Kampfanimation zeigen][Schwertschlag rechts][Ziel [Gegner 2][Warten bis fertig]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][7]
| [Ja-Fall]
| [Eventbewegung][Gegner 3][Schritt nach rechts] * 2 [Kampfanimation zeigen][Schwertschlag rechts][Ziel [Gegner 3][Warten bis fertig]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][8]
| [Ja-Fall]
| /* *Leer gelassen, da bei uns der Gegner 4 ein "Picture-Gegner" ist */
[Bedingung][Variable][Calc - Ergebnis][kleiner als][0]
| [Ja-Fall]
| [Bedingung][Variable][Enemy's Target][gleich][1]
| [Ja-Fall]
| [Variable [Held #1] übergibt Heldennummer][<-- [HP][-][Variable [Calc - Ergebnis] übergibt Wert]] [Soundeffekt abspielen][Damage1] [Ereignisblinken] [Ziel [Held #1]] [RPG-Wirkung-Werte: [R [31]][G [0]][B [0]][W [31]]] [Blinkzeit [10]] [Warten, bis fertig]
| [Nein-Fall]
| [Bedingung][Variable][Enemy's Target][gleich][2]
| [Ja-Fall]
| [Variable [Held #2] übergibt Heldennummer][<-- [HP][-][Variable [Calc - Ergebnis] übergibt Wert]] [Soundeffekt abspielen][Damage1] [Ereignisblinken] [Ziel [Held #2]] [RPG-Wirkung-Werte: [R [31]][G [0]][B [0]][W [31]]] [Blinkzeit [10]] [Warten, bis fertig]
| [Nein-Fall]
| [Bedingung][Variable][Enemy's Target][gleich][3]
| [Ja-Fall]
| [Variable [Held #3] übergibt Heldennummer][<-- [HP][-][Variable [Calc - Ergebnis] übergibt Wert]] [Soundeffekt abspielen][Damage1] [Ereignisblinken] [Ziel [Held #3]] [RPG-Wirkung-Werte: [R [31]][G [0]][B [0]][W [31]]] [Blinkzeit [10]] [Warten, bis fertig]
| [Nein-Fall]
| [Bedingung][Variable][Enemy's Target][gleich][4]
| [Ja-Fall]
| [Variable [Held #4] übergibt Heldennummer][<-- [HP][-][Variable [Calc - Ergebnis] übergibt Wert]] [Soundeffekt abspielen][Damage1] [Ereignisblinken] [Ziel [Held #4]] [RPG-Wirkung-Werte: [R [31]][G [0]][B [0]][W [31]]] [Blinkzeit [10]] [Warten, bis fertig]
[Bedingung][Variable][Chara-Move-ID][gleich][5]
| [Ja-Fall]
| [Eventbewegung][Gegner 1][Schritt nach links] * 2, [Blick rechts]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][6]
| [Ja-Fall]
| [Eventbewegung][Gegner 2][Schritt nach links] * 2, [Blick rechts]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][7]
| [Ja-Fall]
| [Eventbewegung][Gegner 3][Schritt nach links] * 2, [Blick rechts]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][8]
| [Ja-Fall]
| /* *Leer gelassen, da bei uns der Gegner 4 ein "Picture-Gegner" ist */
[Ereignisaufruf][Kartenereignis [HP/MP-Berechnung]][Ereignisseite [1]] [Haltepunkt [1]]

###### Der erstellte Maker-Code auf Seite 3 des Ereignisses

Im englischem Maker
<>Change Var: Var[hhh7: Calc - Damage] (Set)- 10 <>If Var(hhh2: Chara-Move-ID) 5 <>Change Var: Var[hhh4: Calc - Attack] (Set)- Var[xx17] <>If Var(xxx5: MP - Gegner 1) 0 (<) <>Change Switch: Var[aaa1: Skill not possible] Switch ON <>Goto Label 1# <> :Else Case <>Change Var: Var[xxx5: MP - Gegner 1] (-)- 0 <> :End Case <> :Else Case <>If Var(hhh2: Chara-Move-ID) 6 <>Change Var: Var[hhh4: Calc - Attack] (Set)- Var[xx18] <>If Var(xxx6: MP - Gegner 2) 0 (<) <>Change Switch: Var[aaa1: Skill not possible] Switch ON <>Goto Label 1# <> :Else Case <>Change Var: Var[xxx6: MP - Gegner 2] (-)- 0 <> :End Case <> :Else Case <>If Var(hhh2: Chara-Move-ID) 7 <>Change Var: Var[hhh4: Calc - Attack] (Set)- Var[xx19] <>If Var(xxx7: MP - Gegner 3) 0 (<) <>Change Switch: Var[aaa1: Skill not possible] Switch ON <>Goto Label 1# <> :Else Case <>Change Var: Var[xxx7: MP - Gegner 3] (-)- 0 <> :End Case <> :Else Case <>If Var(hhh2: Chara-Move-ID) 8 <>Change Var: Var[hhh4: Calc - Attack] (Set)- Var[xx20] <>If Var(xxx8: MP - Gegner 4) 0 (<) <>Change Switch: Var[aaa1: Skill not possible] Switch ON <>Goto Label 1# <> :Else Case <>Change Var: Var[xxx8: MP - Gegner 4] (-)- 0 <> :End Case <> :End Case <> :End Case <> :End Case <>Call Event: GegnerskillsPG[1] <>If Var (qqq8: Enemy's Target) 1 <>Change Var: Var[xxxx: Selected Hero] (Set)- Var[xxx1] <>Change Var: Var[hhh5: Calc - Defense] (Set)- Var[jjj2] <> :Else Case <>If Var (qqq8: Enemy's Target) 2 <>Change Var: Var[xxxx: Selected Hero] (Set)- Var[xxx2] <>Change Var: Var[hhh5: Calc - Defense] (Set)- Var[jjj3] <> :Else Case <>If Var (qqq8: Enemy's Target) 3 <>Change Var: Var[xxxx: Selected Hero] (Set)- Var[xxx3] <>Change Var: Var[hhh5: Calc - Defense] (Set)- Var[jjj4] <> :Else Case <>If Var (qqq8: Enemy's Target) 4 <>Change Var: Var[xxxx: Selected Hero] (Set)- Var[xxx4] <>Change Var: Var[hhh5: Calc - Defense] (Set)- Var[jjj5] <> :End Case <> :End Case <> :End Case <> :End Case <>Call Event: GegnerskillsPG[2] <>If Var(hhh2: Chara-Move-ID) 5 <>Move Event: Gegner 1-Right-Right <>Show Battle Animation: Sword right-Gegner 1 (W) <> :Else Case <>If Var(hhh2: Chara-Move-ID) 6 <>Move Event: Gegner 2-Right-Right <>Show Battle Animation: Sword right-Gegner 2 (W) <> :Else Case <>If Var(hhh2: Chara-Move-ID) 7 <>Move Event: Gegner 3-Right-Right <>Show Battle Animation: Sword right-Gegner 3 (W) <> :Else Case <>If Var(hhh2: Chara-Move-ID) 8 <> :End Case <> :End Case <> :End Case <> :End Case <>If Var(hhh1: Calc - Ergebnis) 0(>) <>If Var(qqq8: Enemy's Target) 1 <>Change HP: V[xxx1]'s HP V[hhh1] (Rem) <>Play SE: Damage1 <>Flash Event: Held #1-1.0sec (W) <> :Else Case <>If Var(qqq8: Enemy's Target) 2 <>Change HP: V[xxx2]'s HP V[hhh1] (Rem) <>Play SE: Damage1 <>Flash Event: Held #2-1.0sec (W) <> :Else Case <>If Var(qqq8: Enemy's Target) 3 <>Change HP: V[xxx3]'s HP V[hhh1] (Rem) <>Play SE: Damage1 <>Flash Event: Held #3-1.0sec (W) <> :Else Case <>If Var(qqq8: Enemy's Target) 4 <>Change HP: V[xxx4]'s HP V[hhh1] (Rem) <>Play SE: Damage1 <>Flash Event: Held #4-1.0sec (W) <> :End Case <> :End Case <> :End Case <> ;End Case <>If Var(hhh2: Chara-Move-ID) 5 <>Move Event: Gegner 1-Left-Left-Face Right <> :Else Case <>If Var(hhh2: Chara-Move-ID) 6 <>Move Event: Gegner 2-Left-Left-Face Right <> :Else Case <>If Var(hhh2: Chara-Move-ID) 7 <>Move Event: Gegner 3-Left-Left-Face Right <> :Else Case <>If Var(hhh2: Chara-Move-ID) 8 <> :End Case <> :End Case <> :End Case <> :End Case <>Call Event: HP/MP-BereichnungPg[1] <>Label #1 <>
Im deutschem Maker (V1.10c)
<>Var. ändern:[hhh7: Calc - Damage]Wert, 10 <>Bedingung:Varbl[hhh2: Chara-Move-ID]-5 <>Var. ändern:[hhh4: Calc - Attack]Wert, Var.[xx17]Wert <>Bedingung:Varbl[xxx5: MP-Gegner 1]-0 <>Schalter ändern:[aaa1: Skill-not-possible]-[An] <>Gehe zu Label: 1Nr <> :Ansonsten <>Var. ändern[xxx5: MP - Gegner 1]-, 0 <> :End-Fall <> :Ansonsten <>Bedingung:Varbl[hhh2: Chara-Move-ID]-6 <>Var. ändern:[hhh4: Calc - Attack]Wert, Var.[xx18]Wert <>Bedingung:Varbl[xxx6: MP-Gegner 2]-0 <>Schalter ändern:[aaa1: Skill-not-possible]-[An] <>Gehe zu Label: 1Nr <> :Ansonsten <>Var. ändern[xxx6: MP - Gegner 2]-, 0 <> :End-Fall <> :Ansonsten <>Bedingung:Varbl[hhh2: Chara-Move-ID]-7 <>Var. ändern:[hhh4: Calc - Attack]Wert, Var.[xx19]Wert <>Bedingung:Varbl[xxx7: MP-Gegner 3]-0 <>Schalter ändern:[aaa1: Skill-not-possible]-[An] <>Gehe zu Label: 1Nr <> :Ansonsten <>Var. ändern[xxx7: MP - Gegner 3]-, 0 <> :End-Fall <> :Ansonsten <>Bedingung:Varbl[hhh2: Chara-Move-ID]-8 <>Var. ändern:[hhh4: Calc - Attack]Wert, Var.[xx20]Wert <>Bedingung:Varbl[xxx6: MP-Gegner 4]-0 <>Schalter ändern:[aaa1: Skill-not-possible]-[An] <>Gehe zu Label: 1Nr <> :Ansonsten <>Var. ändern[xxx8: MP - Gegner 4]-, 0 <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <>Ereignis aufrufen: Gegnerskills[1] <>Bedingung:Varbl[qqq8: Enemy's Target]-1 <>Var. ändern:[xxxx: Selected Hero]Wert, Var.[xxx1]Wert <>Var. ändern:[hhh5: Calc - Defense]Wert, Var.[jjj2]Wert <> :Ansonsten <>Bedingung:Varbl[qqq8: Enemy's Target]-2 <>Var. ändern:[xxxx: Selected Hero]Wert, Var.[xxx2]Wert <>Var. ändern:[hhh5: Calc - Defense]Wert, Var.[jjj3]Wert <> :Ansonsten <>Bedingung:Varbl[qqq8: Enemy's Target]-3 <>Var. ändern:[xxxx: Selected Hero]Wert, Var.[xxx3]Wert <>Var. ändern:[hhh5: Calc - Defense]Wert, Var.[jjj4]Wert <> :Ansonsten <>Bedingung:Varbl[qqq8: Enemy's Target]-4 <>Var. ändern:[xxxx: Selected Hero]Wert, Var.[xxx4]Wert <>Var. ändern:[hhh5: Calc - Defense]Wert, Var.[jjj5]Wert <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <>Ereignis aufrufen: Gegnerskills[2] <>Bedingung:Varbl[hhh2: Chara-Move-ID]-5 <>Bewegungsereignis: Gegner 1, Recht, Recht <>Kampfanimation: Sword right, Gegner 1(W) <> :Ansonsten <>Bedingung:Varbl[hhh2: Chara-Move-ID]-6 <>Bewegungsereignis: Gegner 2, Recht, Recht <>Kampfanimation: Sword right, Gegner 2(W) <> :Ansonsten <>Bedingung:Varbl[hhh2: Chara-Move-ID]-7 <>Bewegungsereignis: Gegner 3, Recht, Recht <>Kampfanimation: Sword right, Gegner 3(W) <> :Ansonsten <>Bedingung:Varbl[hhh2: Chara-Move-ID]-8 <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <>Bedingung:Varbl[hhh1: Calc - Ergebnis]-0 > <>Bedingung:Varbl[qqq8: Enemy's Target]-1 <>LP ändern:V[xxx1]LP um V[hhh1] verm. <>Soundeffekt: Damage1 <>Char. blinken ... : Held #1, 1.0S.(W) <> :Ansonsten <>Bedingung:Varbl[qqq8: Enemy's Target]-2 <>LP ändern:V[xxx2]LP um V[hhh1] verm. <>Soundeffekt: Damage1 <>Char. blinken ... : Held #2, 1.0S.(W) <> :Ansonsten <>Bedingung:Varbl[qqq8: Enemy's Target]-3 <>LP ändern:V[xxx3]LP um V[hhh1] verm. <>Soundeffekt: Damage1 <>Char. blinken ... : Held #3, 1.0S.(W) <> :Ansonsten <>Bedingung:Varbl[qqq8: Enemy's Target]-4 <>LP ändern:V[xxx4]LP um V[hhh1] verm. <>Soundeffekt: Damage1 <>Char. blinken ... : Held #4, 1.0S.(W) <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <>Bedingung:Varbl[hhh2: Chara-Move-ID]-5 <>Bewegungsereignis: Gegner 1, lnks, lnks, Ges.Rcht <> :Ansonsten <>Bedingung:Varbl[hhh2: Chara-Move-ID]-6 <>Bewegungsereignis: Gegner 2, lnks, lnks, Ges.Rcht <> :Ansonsten <>Bedingung:Varbl[hhh2: Chara-Move-ID]-7 <>Bewegungsereignis: Gegner 3, lnks, lnks, Ges.Rcht <> :Ansonsten <>Bedingung:Varbl[hhh2: Chara-Move-ID]-8 <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <>Ereignis aufrufen: HP/MP-Berechnung[1] <> -> Label:1Nr <>

###### Vorüberlegungen III - Die Gegner kämpfen...

Zuletzt geht es noch darum, dass die Gegner auf ihre Fertigkeiten im Kampf zugreifen sollen: Also wenn die Skelette in unserem Beispiel-SKS am Zug sind, so sollen sie ihre Fertigkeit im Schwertkampf verwenden, nach vorn stürmen, einen Schwertschlag ausführen und wieder zurücklaufen. Um dieses "Einsetzen" der Fertigkeiten geht es, wie auch darum, dass der Gegner wieder am Zug sein soll, wenn er versucht, einen Zauber zu wirken, aber zu wenig Mana dafür hat. Die einzusetzende Fertigkeit soll hierbei mehr zufällig gewählt werden. Auch ist die nachfolgende Tabelle wichtig:

Nummer: | Charakter:
1 | Held 1
2 | Held 2
3 | Held 3
4 | Held 4
5 | Gegner 1
6 | Gegner 2
7 | Gegner 3
8 | Gegner 4

Sie zeigt, dass wir hier die Gegnerfertigkeiten nur für die Fälle anlegen müssen, in denen die Variable "Chara-Move-ID" den Werten 5, 6, 7 oder 8 entspricht.

| Begebt euch in dem Ereignis, das ihr "Steuerung" genannt habt, auf die zweite Ereignis-Seite. Genauer gesagt in die Bedingung, die prüft, ob der Wert der Variable "Chara-Move-ID" dem Wert 5 entspricht. Da es hier nur ein normales Skelett ist, das angreift, soll es auch nur den Schwertschlag ausführen. Da wir diesen auf der Ereignis-Seite 3 des Ereignisses "Gegnerskills" angelegt haben, soll diese Ereignis-Seite nun direkt aufgerufen werden.
| Direkt danach soll ein Warte-Ereignis folgen, das eine Pause von 0,4 Sekunden auslöst.
| Wiederholt für die Fälle, dass der Wert der Variable "Chara-Move-ID" dem Wert 6 und 7 entspricht die beiden vorangegangenen Punkte.
| Im Fall, dass der Wert der Variable "Chara-Move-ID" dem Wert "8" entspricht, soll in eine neue, freie Variable, die ihr "Temp-RandomSkill" nennt, eine Zufallszahl zwischen 1 und 2 gespeichert werden.
| Direkt danach soll eine Bedingung prüfen, ob der Wert der Variable "Temp-RandomSkill" dem Wert "1" entspricht. Im Ja-Fall soll die dritte Seite des Ereignisses "Gegnersklills" aufgerufen werden. Im Nein-Fall ebenso. Erklärung Dies soll nur das Schema darstellen, nach dem ihr einem Gegner mehrere Fertigkeiten mit auf den Weg geben könnt.
| Nach dieser Bedingung soll wieder ein Warte-Ereignis folgen.
| Scrollt nun an das Ende des Maker-Codes und legt direkt unter der Bedingung, die prüft, welchen Wert die Variable "Chara-Pointer" hat, eine neue Bedingung an, die prüfen soll, ob der Schalter "Skill not possible" auf AN steht. Hier brauchen wir nur den Ja-Fall.
| In diesem soll nur der Wert der Variable "Chara-Pointer" um 1 verringert werden.

###### Darstellung der Stichpunkte in MML

Das, was neu hinzugekommen ist, ist fett hervorgehoben

Steuerung-Ereignis
[Ereignisseite 1][Automatisch] [Picture zeigen][Bildnummer][Beispielgegner][X = 60][Y = 100][Transparent] [Variable [HP - Gegner 1]][<-- [Wert setzen][50]] [Variable [HP - Gegner 2]][<-- [Wert setzen][50]] [Variable [HP - Gegner 3]][<-- [Wert setzen][50]] [Variable [HP - Gegner 4]][<-- [Wert setzen][100]] [Variable [MP - Gegner 1]][<-- [Wert setzen][0]] [Variable [MP - Gegner 2]][<-- [Wert setzen][0]] [Variable [MP - Gegner 3]][<-- [Wert setzen][0]] [Variable [MP - Gegner 4]][<-- [Wert setzen][20]] [Ereignis aufrufen][Kartenereignis [HP/MP-Rahmen-Ereignis]][Ereignis-Seite [1]] [Ereignis aufrufen][Kartenereignis [HP/MP-Berechnung-Ereignis]][Ereignis-Seite [1]] [Ereignis aufrufen][Kartenereignis [Zugreihenfolge-Ereignis]][Ereignis-Seite [1]] [Schalter [SKS-Start - Done]][<-- [AN]
[Ereignisseite 2][Automatisch][Schalter [SKS-Start - Done]] [Variable [Chara-Pointer]][<-- [Wert setzen][115] [Schleife Beginn]
| [Variable [Chara-Move-ID]][<-- [Wert setzen][Variable [Variable [Chara-Pointer] übergibt Nummer]] [Bedingung][Variable [Chara-Move-ID]][gleich][1]
| [Ja-Fall]
| [Variable [Chara-Pointer]][<-- [+][1]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][2]
| [Ja-Fall]
| [Variable [Chara-Pointer]][<-- [+][1]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][3]
| [Ja-Fall]
| [Variable [[Chara-Pointer]][<-- [+][1]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][4]
| [Ja-Fall]
| [Variable [[Chara-Pointer]][<-- [+][1]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][5]
| [Ja-Fall]
| [Variable [[Chara-Pointer]][<-- [+][1]] [Ereignisaufruf][Kartenereignis [Gegnerskills] [Ereignisseite [3]] [Warten [0,4 Sekunden]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][6]
| [Ja-Fall]
| [Variable [[Chara-Pointer]][<-- [+][1]] [Ereignisaufruf][Kartenereignis [Gegnerskills] [Ereignisseite [3]] [Warten [0,4 Sekunden]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][7]
| [Ja-Fall]
| [Variable [Chara-Pointer]][<-- [+][1]] [Ereignisaufruf][Kartenereignis [Gegnerskills] [Ereignisseite [3]] [Warten [0,4 Sekunden]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][8]
| [Ja-Fall]
| [Variable [Chara-Pointer]][<-- [+][1]] [Variable [Temp-RandomSkill]][<-- [Wert setzen][Zufall zwischen [1] und [2]]] [Bedingung][Variable][Temp-Randomskill][gleich][1]
| [Ja-Fall]
| [Ereignisaufruf][Kartenereignis [Gegnerskills] [Ereignisseite [3]]
| [Nein-Fall]
| [Ereignisaufruf][Kartenereignis [Gegnerskills] [Ereignisseite [3]]
[Warten [0,4 Sekunden]]
[Bedingung][Schalter [Skill not possible]][AN]
| [Ja-Fall]
| [Variable [Chara-Pointer]][<-- [-][1]]
[Bedingung][Variable [Chara-Pointer]][gleich][123]
| [Ja-Fall]
| [Variable [Chara-Pointer]][<-- [Wert setzen][115]]
[Schleife Ende]

###### Der erstellte Maker-Code auf Seite 2 des Ereignisses

Im englischem Maker
<>Change Var: Var[hhh1: Chara-Pointer] (Set)- 115 <>Loop <>Change Var: Var[hhh2: Chara-Move-ID] (Set)-Var[Var[hhh1]] <>If Var(hhh2: Chara-Move-ID) 1 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <> :Else Case <>If Var(hhh2: Chara-Move-ID) 2 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <> :Else Case <>If Var(hhh2: Chara-Move-ID) 3 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <> :Else Case <>If Var(hhh2: Chara-Move-ID) 4 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <> :Else Case <>If Var(hhh2: Chara-Move-ID) 5 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <>Call Event: GegnerskillsPG[3] <>Wait: 0.4sec <> :Else Case <>If Var(hhh2: Chara-Move-ID) 6 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <>Call Event: GegnerskillsPG[3] <>Wait: 0.4sec <> :Else Case <>If Var(hhh2: Chara-Move-ID) 7 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <>Call Event: GegnerskillsPG[3] <>Wait: 0.4sec <> :Else Case <>If Var(hhh2: Chara-Move-ID) 8 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <>Change Var: Var[hij1: Temp-RandomSkill] (Set)-Random(1 to 2) <>If Var(hij1: Temp-RandomSkill) 1 <>Call Event: GegnerskillsPG[3] :Else Case <>Call Event: GegnerskillsPG[3] :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <>If Switch(dddd: Skill not possible) is ON <>Change Var: Var[hhh1: Chara-Pointer] (-)- 1 <> :End Case <>If Var(hhh1: Chara-Pointer) 123 <>Change Var: Var[hhh1: Chara-Pointer] (Set)- 115 <> :End Case <> :End Loop <>
Im deutschem Maker (V1.10c)
<>Var. ändern:[hhh1:Chara-Pointer]Wert, 115 <>Schleife <>Var. ändern:[hhh2:Chara-Move-ID]Wert, Var.[V[hhh1]]Inh. <>Bedingung:Varbl[hhh2:Chara-Move-ID]-1 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-2 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-3 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-4 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-5 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <>Ereignis aufrufen: Gegnerskills[3] <>Warten: 0.4S. <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-6 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <>Ereignis aufrufen: Gegnerskills[3] <>Warten: 0.4S. <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-7 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <>Ereignis aufrufen: Gegnerskills[3] <>Warten: 0.4S. <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-8 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <>Var. ändern:[hij1:Temp-RandomSkill]-1 <>Ereignis aufrufen: Gegnerskills[3] <> :Ansonsten <>Ereignis aufrufen: Gegnerskills[3] <> :End-Fall <>Warten: 0.4S. <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <>Bedingung:Schalter[dddd: Skill not possible]-AN <>Var. ändern:[hhh1:Chara-Pointer]-, 1 <> :End-Fall <>Bedingung:Varbl[hhh1:Chara-Pointer]-123 <>Var. ändern:[hhh1:Chara-Pointer]Wert, 115 <> :End-Fall <> :Schleifenende <>

###### Schlusswort für dieses Kapitel

Wenn ihr nun ein Testspiel macht, so werden die Gegner in einer zufällig bestimmten Reihenfolge die Helden angreifen. Die Helden wiederum können sich noch nicht wehren, da ihr die Funktionen dafür noch nicht angelegt habt.

[Beispielhaftes Aussehen der Karte im Maker]

[Beispielhaftes Aussehen während des Testspiels]