Prosty ABS

W tym poradniku spróbuję wytłumaczyć wam, jak zrobić prosty ABS (czyli adventure battle system). Jak zapewne każdy się domyśla, jest to system walki, w którym bohater porusza się po mapie i kroi wszelakie stworzenia na niej się znajdujące.

Poradnik jest dla ZUPEŁNIE początkujących.

1. Zacznijmy od stworzenia ataku.

Najlepiej zrobić to w bazie danych, w zakładce "Common Events". Ostatecznie też można zrobić w evencie na mapie. Ja osobiście preferuję to pierwsze.

Tak więc wstawiamy nowy common event, nazywamy go przykładowo ATAK i ustawiamy na Parallel Process. Dodatkowo jako warunek działania ustawiamy jakiś przełącznik. Po co? A po to, by walka nie odbywała się na każdej mapce, a jedynie tam gdzie ten przełącznik jest na ON.

Teraz pierwsze co tam zrobimy to warunek wciśnięcia klawisza ataku. W naszym przypadku będzie to przycisk zatwierdzenia (Enter / Z / Spacja). Najpierw wybieramy Key Input Processing i ustawiamy wszystko jak poniżej:



Następnie Conditional Branch - jeśli zmienna 0002: Klawisze jest równa 5. Mamy takie coś:

<> Key Input Proc: [0002: Klawisze]
<> Branch if Var. [0002: Klawisze] is 5 
    <>
: End
<>


Wstawmy jakieś animacje i różne bajery.

<> Key Input Proc: [0002: Klawisze]
<> Branch if Var. [0002: Klawisze] is 5 
    <> Change Sprite Association: JakasGrafika1-5
    <> Wait: 0.2 Sec
    <> Branch if Hero Up Facing
        <>Show Battle Animation: Atak Góra, Hero
        : Else Handler
        <> Branch if Hero Down Facing
            <>Show Battle Animation: Atak Dół, Hero   
            : Else Handler
            <> Branch if Hero Left Facing
                <>Show Battle Animation: Atak Lewo, Hero
                : Else Handler
                <> Branch if Hero Right Facing
                    <>Show Battle Animation: Atak Prawo, Hero
                    <>
                : End
                <>
            : End
            <>
        : End
        <>
    : End
    <> Change Sprite Association: JakasGrafika1-4
    <> Play Sound: atak

    <> Switch Operation: [0001: ATAK] ON
    <> Wait 0.4 Sec
    <> Change Sprite Association: JakasGrafika1-1
    <> Switch Operation: [0001: ATAK] OFF

: End
<>


Objaśnienia:

Zmieniamy grafikę bohatera na przygotowującego się do ataku.
Sprawdzamy w jakim kierunku bohater jest zwrócony i wyświetlamy na nim odpowiednią animację 'śladu' po mieczu, którą wcześniej przygotowaliśmy - każdy chyba wie o co chodzi ;). Punkt można pominąć, jeśli nie chcemy tej animacji.
Zmieniamy grafikę bohatera na zadającego cios, odgrywamy jakiś dźwięk i ustawiamy przełącznik 0001: ATAK na ON. Jest on bardzo istotny, gdyż dopiero po jego włączenia bohater będzie zadawał obrażenia wrogom.
Bohater powraca do stanu sprzed ataku. Grafikę ustawiamy mu na normalną i oczywiście wyłączamy przełącznik 0001: ATAK.

Sam atak jako taki mamy gotowy.

2. Tworzymy wrogów!

Bohater musi mieć kogo siekać, tak więc stworzymy mu jakąś ofiarę. Tworzymy event, nadajemy mu grafikę jakiegoś potwora i sprawiamy by podążał za naszym kolesiem (Movement Type: Toward Hero). Event ten będzie miał aż trzy strony. W pierwszej ustawiamy warunek zdarzenia na Collision With Hero. Wstawiamy do niej wszystko co się stanie, gdy potwór dotknie naszego bohatera. Przykład:

<> Variable Oper: [0003: Obrazenia] Set, Rnd [1 -50]
<> Change HP: Bohater HP V[0003] Remove

<> Play Sound: Zaatakowany
<> Move Event: Hero, Begin Jump, Move Randomly, End Jump


No i objaśnienia:

Losujemy ile HP straci bohater - przykładowo od 1 do 50 i zapisujemy to w zmiennej 0003: Obrażenia. Następnie odejmujemy bohaterowi tyle HP:



Następnie odgrywamy oczywiście jakiś dźwięk...
...
i odrzucamy bohatera w losowym kierunku. To takie zabezpieczenie, by potwór nie zaatakował kilka razy w jednej chwili.

Czas ustawić drugą stronę eventu. Ustawimy tam, co będzie się działo gdy bohater zaatakuje tego wroga. Jako warunki ustawimy switch 0001: ATAK i Touched By Hero. Teraz wstawiamy parę rzeczy:

<> Variable Oper: [0003: Obrazenia] Set, Rnd [1 -20]
<> Variable Oper: [0003: Obrazenia] +, Bohater Attack
<> Variable Oper: [0004: Potwor1 HP] - , Var[0003]'s Value
<> Move Event: Potwor, Begin Jump, Move Away From Hero, End Jump
<> Branch if Var[0004: Potwor1 HP] is 0
    <> Switch Operation: [0002: Potwor1 umarł] ON
    <> Change Experience: Bohater Experience 50 Add
    <>
: End


Jak zwykle objaśnienia:

Ustalamy ile bohater odejmie wrogowi HP. Ja ustawiłem by wylosowało liczbę od 1 do 20 i dodało do tego siłę ataku naszego koksa.
Odejmujemy od zmiennej 0004: Potwor1 HP (która, jak sama nazwa wakazuje, określa HP wroga) ilość zadanych obrażeń.
Wroga odrzucamy kawałek.
Sprawszamy czy HP potwora jest równe 0. Jeśli tak, to zmieniamy przełącznik 0002: potwor1 umarł na ON. No i oczywiście dodajemy bohaterowi punkty doświadczenia - by zabijanie przynosiło mu korzyści :P.

Przełącznik 0003: Potwor1 umarł aktywuje ostatnią, trzecią stronę eventu - czyli ustawiamy na niej warunek, czy ten przełącznik jest na ON. Grafikę ustawiamy na zdechłego potwora. Żadnych komend tam nie wstawiamy, no chyba że chcemy się pobawić w znajdowanie przedmiotów itp.

3. Gotowe!

Ale czy aby na pewno? Przeciętny twórca gier nie zadowoli się tak prostym systemem walki. Gorąco zachęcam do rozbudowania go, dodania różnych czynników wpływających na obrażenia i ogólnie wielu rodzajów ataków. Adios amigos!

Foxer