Pierwsza komenda

Niemal wszystkie komendy, które można stworzyć za pomocą Cookiego, opierają się na listach i losowości.
Listy wczytujemy za pomocą komendy !load. Możemy wczytać wiele list naraz, wtedy należy oddzielić je od siebie pustą linijką odstępu.
Istnieje także możliwość wczytania list z pliku tekstowego.

Stworzenie najprostszej wygląda tak:

!load
list skarb:
zardzewiały miecz
magiczny klejnot
pajęczyny

alt text

To lista. Opiera się na losowości. Każdy element ma tyle samo szans na bycie wylosowanym.
Co jeśli chcemy, aby jakiś element miał większą szansę?
Wtedy możemy ręcznie zdefiniować jego procenty:

!load
list skarb:
zardzewiały miecz
[50%]magiczny klejnot
pajęczyny

W tym momencie magiczny klejnot ma 50% szans na bycie wylosowanym, a pozostałe dwa elementy po 25%. Suma szans zawsze musi równać się 100%. Jeśli procenty nie zostały określone, bot dzieli je po równo.

Spróbujmy dodać kolejną komendę, która korzysta z poprzedniej:

!load
list przeszukaj:
Spacerujesz po lesie i nagle... znajdujesz [skarb].
[40.01%]Schroniłeś się przed deszczem w ruinach zamku i znalazłeś [skarb].
[20.5%]Walczysz w piwnicy ze szczurami, gdy nagle dostrzegasz [skarb] w kącie.

Dzięki użyciu uprzednio stworzonej listy w taki - [skarb] - sposób, w miejsce wywołania zostaje wklejony rezultat skarbu. alt text

Uwaga: Jeśli twoja komenda jest zbyt długa, możesz zapisać ją w pliku tekstowym, a następnie załączyć plik do wiadomości o treści "!load"

Gratulacje, znasz już podstawy, za których pomocą można zrobić naprawdę fajne komendy.



Oto inna przykładowa komenda, losująca ciastko: alt text
A także jej kod źrodłowy: Klik.
Spróbuj samemu jej użyć, zapisując tekst do pliku i wczytując plik komendą !load.



Typy list

Oprócz zwykłych list, istnieją inne ich typy, przydatne do innych rzeczy.

Typ Opis
list Podstawowe listy; Składają się z elementów, z których każdy posiada określoną szansę na bycie wylosowanym. Nowa linia oznacza stworzenie nowego elementu.
Użycie listy zwraca jeden trafiony element.
text Podobne do list - z tą różnicą, że treść elementu może przekraczać jedną linię.
Stworzenie nowego elementu oznaczamy słowem kluczowym next.
Na końcu textu zawsze stawiamy słowo kluczowe end.
multilist W przeciwieństwie od list, może zwrócić wiele elementów.
Multilista wykonuje się z góry do dołu, obliczając szanse każdego elementu z osobna.
Element o szansie 0% zostanie zwrócony wtedy, gdy żaden inny nie będzie.
Jeśli mamy dwa elementy, każdy o szansie 60%, oba mogą zostać zwrócone.
Nowa linia oznacza nowy element.

Stwórzmy teraz po jednym przykładzie każdego typu.


Przykład textu

!load
text spaceruj:
Spacerujesz po lesie.
Już chcesz wrócić, bo jesteś coraz bardziej zmęczony.
Nagle zauważasz w trawie... [przedmiot]!
next
Budzisz się w ciemnej jaskini.
Nie wiesz, jak długo czasu spałeś, ale księżycowe promienie prześwitują przez sklepienie.
Już masz zamiar się zebrać do wyjścia, gdy nagle zauważasz [przedmiot]!
end

list przedmiot:
kryształ many
monetę
zardzewiały scyzoryk
złotą tkaninę

alt text
Jak widać, oba elementy spaceruj zajmują kilka linii, co byłoby niemożliwe w zwykłej liście, gdzie nowa linia to nowy element.


Przykład multilisty

!load
multilist drop:
[0%]Niestety, nic nie znalazłeś
[28%]Runiczne drewno
[26%]Zepsute mięso
[30%]Dziwny grzyb
[32%]Zardzewiały miecz
[35%][5->50] złotych monet
[15%]Rytualne kości Voodoo
[16%]Magiczna zbroja
[18%]Magiczny kijaszek
[25%]Magiczna zapiekanka
[45%][1->200] Punktów EXP

alt text
Zostało zwróconych kilka elementów, a nie tylko jeden.
W kilku przypadkach udało się wylosować przedmiot. Może też nastąpić sytuacja, w której wszystkie elementy zostaną wylosowane. Jednak szansa na to jest mała.
Jeśli żaden element nie zostanie wylosowany, wynikiem będzie "Niestety, nic nie znalazłeś".


Inkluzje

W poprzednich przykładach użyliśmy już inkluzji, w momencie użycia [] aby wstawić wynik jednej listy w drugą.
Jest jeszcze kilka jej typów.
Operator losowania, czyli ->. Losuje liczbę.

list losuj:
Znalazłeś [1->6] jabłek.
Znalazłeś [6->12] jabłek.

W przykładzie jest 50% szans na liczbę od 1 do 6 oraz 50% szans na liczbę od 6 do 12.

Operator losowania elementów, czyli |. Losuje jeden element ze wszystkich.

text spaceruj:
Spacerujesz po [lesie|jaskini|pałacu]. 
Coś zwraca twoją uwagę. Patrzysz... [i nic nie widzisz.|i znajdujesz 10->40 złotych monet!]
Wtem zauważasz [[zwierzę]. Machasz 2->4 razy na powitanie|[potwór]. Wyciągasz [miecz|topór|łuk|2->4 sztylety] i machasz 2->3 razy].
end

list zwierzę:
króliczka
kucyka
konika polnego

list potwór:
biesa
żywego trupa
wilkołaka

Tak, konstrukcje typu [miecz|topór|łuk|2->4 sztylety] / [[zwierzę]|[potwór]] są możliwe, a nawet większe zagnieżdżenia inkluzji.
Zobaczmy na wynik:
alt text



Inne

Nowa linia w list/multilist
Istnieje możliwość zrobienia nowej linii w listach i multilistach, jednakże jest to mało przejrzyste, dlatego możesz użyć listy typu text zamiast tego.
Sekwencja \n powoduje, że w miejsce jej użycia wstawiana jest nowa linia: tekst \nkontynuacja.



To tyle w kwestii podstaw. W ramach ćwiczenia spróbuj zrobić prosty generator, wykorzystując zebrane do tej pory informacje (różne typy list, inkluzje, szanse procentowe).
Generator potworów, przedmiotów, zaklęć, NPC... lub inne.