GCM – Maj: Angular RPG. Statystyki, sklep i ulepszona walka.

Nadszedł czas kolejnej aktualizacji majowej gry. To już prawie koniec prac nad tym projektem 🙂 . Tym razem w grze pojawił się sklepikarz, któremu można sprzedawać zdobyte łupy. Ma on również w swojej ofercie przydatne przedmioty. Ponad to, walka w końcu jest ‚na serio’. Potwory nie giną już od jednego uderzenia i same mogą wyrządzić krzywdę bohaterowi.

Może się wydawać, że doszło tego sporo, ale tak naprawdę tylko dodaję drobne skrypty do bazy, stworzonej do tej pory.

Jak stworzyć aplikację w angularJS

Aby przetestować aktualną wersję gry, wystarczy kliknąć w obrazek powyżej. Jak zawsze, pełny kod dostępny jest na moim koncie github.

Jak zwykle, zachęcam do przejrzenia całości na własną rękę. Tym razem nie będę prezentował kodu a jedynie ogólnie opiszę nowe funkcjonalności. Wszystkie dodane w tej aktualizacji mechanizmy pojawiały się już wcześniej. Każdy kto śledzi rozwój gry, powinien załapać co się dzieje. Jeśli jednak coś będzie nie jasne, daj znać w komentarzach, chętnie rozwieję wszelkie wątpliwości.

Handlarz

Pierwsza nowość to mechanizm sklepikarza. Aby dodać takowego do gry, wystarczy w serwisie lokacji, do obiektu obszaru dodać pole isShop z wartością równą true. W tej lokacji będzie znajdował się sklep. Jeżeli gracz odwiedzi taką lokacje, będzie mógł w niej sprzedać dowolny przedmiot ze swojego plecaka za 1/4 jego wartości (wartości przedmiotów przechowywane są w serwisie przedmiotów). Jeżeli w obiekcie lokacji ze sklepikarzem dodam również pole forSale, którego wartością jest tablica z nazwami przedmiotów, przedmioty te będzie można kupić za 100% wartości.

Kontrolki służące do kupowania oraz sprzedawania pojawiają się w tym samym miejscu w grze co przyciski odpowiadające za atakowanie potworów. Dzięki dyrektywie ng-hide widoczne są one tylko gdy gracz znajduje się w lokacji z handlarzem.

Kupowanie i sprzedawanie przedmiotów nie jest akcją i dzieje się automatycznie po kliknięciu odpowiedniego przycisku. Większość funkcji obsługujących te mechanizmy znajduje się w głównym kontrolerze i są raczej mało skomplikowane.

Złoto potrzebne do kupowania przedmiotów, uzyskać można sprzedając to co się znajdzie, lub zabijając potwory. Każdy potwór ma przypisaną dla swego typu szanse na pozostawienie tego drogocennego kruszcu. To ile monet zostawi jest losowe i również zależy od rodzaju przeciwnika. Wszystkie te informacje są oczywiście zdefiniowane w serwisie monstersService.

Statystyki i ulepszona walka

Bohater gry posiada w końcu swoje statystyki.Można je zobaczyć klikając w kontrolkę stats pod prawym panelem gry. Najważniejsze w tej chwili są Health Points czyli punkty życia gracza. Póki co gracz ma ich tylko 10 i traci je w wyniku ataku potwora. jedyny sposób na ich odzyskanie to wypicie mikstury życia (health potion).

Kolejne dwie statystyki to damage oraz attack speed. Pierwsza to oczywiście obrażenia. Ich wartość zależy od tego jaką broń ma w tej chwili wyekwipowaną gracz. Sztylet, z którym rozpoczyna rozgrywkę zadaje obrażenia z przedziału 1 i 4, a na przykład młot (który ‚wypada’ z trolli) z przedziału 7 i 14 🙂 . attack speed czyli szybkość ataku też zależy od broni. Im wyższa wartość tym dłużej trwa atak. W mechanizmie gry oznacza to po prostu czas wykonywania akcji ataku.

Ostatnia ważna statystyka to defence, czyli wartość ochrony noszonego aktualnie pancerza. Każda zbroja ma tę wartość inną. W przypadku pancerza skórzanego, z którym bohater rozpoczyna grę, wartość ta wynosi dwa. Oznacza to, że obrażenia z ataku każdego potwora, będą zmniejszone o dwa.

Jeżeli chodzi o walkę, jest ona bardzo prosta. Po zakończeniu akcji ataku, wywoływana jet funkcja obliczająca obrażenia (losowa wartość z przedziału obrażeń noszonej broni) i odejmuje ją od punktów życia przeciwnika. W głównej pętli gry sprawdzam czy aktualna lokacja nie zawiera potwora, którego życia spadło do zera. Jeżeli taki się znajdzie, jest usuwany z gry.

Sprawa wygląda podobnie w przypadku ataku przeciwnika. Gdy wykona on atak, obliczana jest wartość obrażeń (każdy potwór ma inny przedział), następnie wartość ta obniżana jest o wartość ochrony pancerza gracza. Wynik, o ile jest dodatni, odejmowany jest od punktów życia postaci.

Jak widać system walki jest bardzo prosty i w sumie może wydawać się trochę niesprawiedliwy, ale chciałem aby taki był. Gracz będzie musiał kontrolować zasób życia gracza i dobierać broni do przeciwników.

Postać będzie też zdobywać poziomy, co spowoduje, że będzie stawać się silniejsza (więcej życia więcej obrażeń). Ale to już w kolejnej, mam nadzieję ostatniej, aktualizacji 🙂 .

Tymczasem, jeżeli chcesz być na bieżąco z postami na blogu zachęcam do polubienia mojej strony na facebooku. Zawsze zamieszczam tam informacje o wszystkich nowościach. Jest to też dobre miejsce na kontakt ze mną. Na wszystkie pytania zawsze odpowiem :).

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *