Kalkulator obrażeń i DPS ZDoom
Policz dokładny zakres obrażeń, oczekiwany DPS i czas do zabicia dla dowolnej broni lub pocisku ZDoom / GZDoom. Obsługuje mnożnik random(1,8), flagę STRIFEDAMAGE i konwerter tików na sekundy dla skryptów ACS.
Zakres obrażeń, DPS i konwerter tików dla modderów Dooma.
Liczy min/średnie/maks obrażeń dla dowolnego pocisku, broni hitskanowej lub własnej DamageFunction.
Formuła obrażeń
Używa Damage × random(1, 8) — standardowej formuły pocisku ZDoom.
Wybierz pocisk vanilla z Dooma, aby automatycznie wypełnić Damage. Edycja Damage potem cofa preset do Własnego.
dmg
Liczba N po Damage w DECORATE/ZScript (np. Damage 3 dla kuli ognia Impa).
Rozkład obrażeń
random(1, N) jest jednostajne — każdy mnożnik tak samo prawdopodobny.
| Obrażenia za trafienie | Prawdopodobieństwo |
|---|---|
| 3 | 12,5% |
| 6 | 12,5% |
| 9 | 12,5% |
| 12 | 12,5% |
| 15 | 12,5% |
| 18 | 12,5% |
| 21 | 12,5% |
| 24 | 12,5% |
Pociski vanilla
Kliknij wiersz, aby załadować do pól wyżej.
| Pocisk | Damage | Mnożnik | Min | Maks | Średnio | Speed (j/tik) |
|---|---|---|---|---|---|---|
| Kula ognia Impa — DoomImpBall | 3 | × random(1, 8) | 3 | 24 | 13,5 | 10 |
| Kula Cacodemona — CacodemonBall | 5 | × random(1, 8) | 5 | 40 | 22,5 | 10 |
| Plazma Arachnotrona — ArachnotronPlasma | 5 | × random(1, 8) | 5 | 40 | 22,5 | 25 |
| Kula karabinu plazmowego — PlasmaBall | 5 | × random(1, 8) | 5 | 40 | 22,5 | 25 |
| Kula Barona Piekła / Hell Knighta — BaronBall | 8 | × random(1, 8) | 8 | 64 | 36 | 15 |
| Kula ognia Mancubusa — FatShot | 8 | × random(1, 8) | 8 | 64 | 36 | 20 |
| Naprowadzająca rakieta Revenanta — RevenantTracer | 10 | × random(1, 8) | 10 | 80 | 45 | 10 |
| Rakieta (trafienie bezpośrednie) — Rocket | 20 | × random(1, 8) | 20 | 160 | 90 | 20 |
| Spray BFG (na promień) | 67 | × 1..8 loop | 15 | 120 | 67,5 | — |
| Kula BFG (trafienie bezpośrednie) — BFGBall | 100 | × random(1, 8) | 100 | 800 | 450 | 25 |
Fragment DECORATE/ZScript odtwarzający te liczby.
ACTOR CustomProjectile : DoomImpBall{ Damage 3 // Min 3 Max 24 Avg 13.5 (× random(1, 8))}Kalkulator obrażeń ZDoom. Zakres, DPS i tiki dla moderów Doom.
Czym jest kalkulator obrażeń i DPS ZDoom?
Jak policzyć obrażenia, DPS i tiki w ZDoom (i jak robi to kalkulator)
Obrażenia, DPS i tiki — wzory silnika
- = Właściwość Damage z bloku Default aktora w DECORATE albo ZScript (liczba całkowita)
- = Granice losowego mnożnika — 1 i 8 domyślnie; 1 i 4 z +STRIFEDAMAGE; 1 i 3 dla pelletów pistoletu/strzelby/karabinu maszynowego; 1 i 10 dla pięści/piły łańcuchowej
- = Tiki między atakami — długość maszyny stanów między dwoma kolejnymi wywołaniami strzału w bloku States aktora
- = HP celu — 20 dla Zombiemana, 60 dla Impa, 400 dla Cacodemona, 1000 dla Barona Piekła, 3000 dla Spider Mastermind, 4000 dla Cyberdemona
- = Mnożnik DamageFactor — 1,0 normalny, 0,5 odporność, 2,0 podatność, 0,0 niewrażliwość
- = Czas w sekundach — mnożony przez TICRATE = 35 i zaokrąglany do pełnych tików dla długości stanów i argumentu Delay()
- = Dystans lotu w jednostkach mapy oraz Speed pocisku w jednostkach mapy na tik; dzielenie z zaokrągleniem w górę daje tiki, bo silnik chodzi pełnymi krokami
Rozpisane przykłady z całą arytmetyką
Kula ognia Impa przeciw Cacodemonowi — scenariusz domyślny
DPS pistoletu przeciw Zombiemanowi — „czy pistolet naprawdę jest bezużyteczny”
Super strzelba na Hell Knighta — realia strzału w upór
Bezpośrednie trafienie kulą BFG w Cyberdemona (bez spreja)
Arytmetyka ACS Delay — „ile tików to 2,5 sekundy”
Wskazówki dotyczące obrażeń i balansu ZDoom dla moderów, mapperów i ciekawskich graczy
- Czytaj właściwość Damage swojego aktora w wartościach oczekiwanych, a nie literalnych. Pocisk z Damage 5 bije w grze średnio za 22,5 (5 × 4,5), nie za 5. Jeśli twój nowy potwór ma rywalizować z kulą ognia Impa (oczekiwane 13,5), ustaw Damage 3 — nie Damage 10. Błąd numer jeden przy balansowaniu DECORATE to czytanie Damage 10 jako „bije za 10”, podczas gdy bije od 10 do 80 ze średnią 45.
- Flaga +STRIFEDAMAGE to najtańszy sposób na zaciśnięcie zakresu pocisku. To samo Damage, maksymalny mnożnik spada z 8 do 4, wartość oczekiwana z 4,5× na 2,5×. Przydaje się, gdy chcesz przewidywalny pocisk średniego zasięgu (na przykład custom rakietę, która powinna ciążyć jak 60…240, a nie jak 60…480). Działa w każdym modzie ZDoom niezależnie od bazowej gry — nazwa pochodzi od Strife (pierwszego nie-Doomowego IWAD-a silnika), ale sama flaga jest przenośna i regularnie pojawia się w modach Doom.
- Broń hitskanowa zupełnie ignoruje właściwość Damage. Pistolet, strzelba, karabin maszynowy i super strzelba wbijają $5 \times \text{random}(1, 3)$ za pellet w A_FireBullets / A_FirePistol / A_FireShotgun. Żeby podnieść obrażenia broni hitskanowej, zmieniasz liczbę pelletów, argument damage w A_CustomBulletAttack, albo konwertujesz broń na pociskową. Pięść i piła łańcuchowa używają $2 \times \text{random}(1, 10)$; Berserk wpływa tylko na pięść i po rzucie mnoży przez 10 (czyli 20…200 za cios, oczekiwane 110).
- Tiki między atakami ważą więcej niż obrażenia za strzał, gdy porównujesz DPS. Karabin maszynowy i pistolet mają identyczne obrażenia za strzał (5…15, oczekiwane 10), ale karabin strzela co ~4 tiki na atak, a pistolet co ~14 — to mniej więcej 3,5× DPS przy tej samej matematyce na pellet. Gdy balansujesz mod, najpierw zdecyduj o docelowym DPS (pistolet vanilla ~25 DPS, strzelba ~70, super strzelba ~150, karabin maszynowy ~88, karabin plazmowy ~263, bezpośrednia rakieta ~159), a z tego wyprowadź obrażenia za strzał i tiki na atak, które dadzą tę liczbę.
- Trzymaj ściągę 19 potworów pod ręką, żeby walidować projekt walki. Zombieman (HP 20), Shotgun Guy (30), Wolfenstein SS (50), Imp (60), Chaingunner (70), Lost Soul / Commander Keen (100), Demon / Spectre (150), Revenant (300), Pain Elemental / Cacodemon (400), Hell Knight / Arachnotron (500), Mancubus (600), Arch-vile (700), Baron of Hell (1000), Spider Mastermind (3000), Cyberdemon (4000). Strzał z super strzelby (oczekiwane 200, maks 300) w najlepszym przypadku kładzie wszystko do Revenanta (HP 300); Pain Elemental i Cacodemon (HP 400) potrzebują minimum dwóch udanych strzałów. Strzał z pistoletu (oczekiwane 10) zabija tylko Zombiemana. Zamiana Demona z pierwszego pokoju na Mancubusa to nie skok trudności 1,5× — to 4×, bo krzywa HP jest geometryczna, a nie liniowa.
- GZDoom v3.2.2 (koniec 2017) i nowsze gwarantują, że 35 tików to dokładnie jedna sekunda czasu rzeczywistego. Wcześniejsze wersje pokazywały interwał 28 ms na tik (czyli 35 tików wyświetlało się jako 0,98 sekundy) przez obcięcie dzielenia całkowitego w kodzie timera. Jeśli twoja arytmetyka ACS Delay() wymaga precyzji poniżej sekundy, a celujesz w odbiorcę grającego na starym porcie, doliczaj 2% dryftu: `Delay(35 * 60)` na legacy timerze daje 58,8 sekundy rzeczywistej, 1,2 sekundy mniej niż pełna minuta.
- Sprej BFG to jedyny pocisk, który nie idzie po regule $\text{Damage} \times \text{random}(1, 8)$. Wewnątrz A_BFGSpray obrażenia za promień liczone są jako suma 15 niezależnych random(1, 8) — zakres 15…120, oczekiwane 67,5, rozkład w kształcie dzwonu (nie jednostajny). Kula BFG wypuszcza do 40 promieni w przednim stożku 90°, więc przy pełnym pokryciu 40 × 67,5 = 2700 oczekiwanych obrażeń dochodzi na wierzch do 100…800 samej kuli. Dlatego pojedyncze pociągnięcie spustu BFG potrafi położyć Cyberdemona w dwóch strzałach — pod warunkiem, że trafia zarówno bezpośrednie uderzenie, jak i stożek.
- Jednostki mapy mają dwa przeliczniki, nie jeden. Poziomo 16 jednostek = 1 stopa (0,3048 m); pionowo tylko 10 jednostek = 1 stopa, bo oryginalny tryb 320×200 Doom rozciągał obraz o 20% na wysokość. Do konwersji Speed kalkulator używa przelicznika poziomego, bo pociski lecą w płaszczyźnie mapy: Speed 10 (kula Impa) ≈ 6,67 m/s ≈ 15 mph; Speed 25 (plazma, kula BFG) ≈ 16,67 m/s ≈ 60 km/h ≈ 37 mph. Tempo biegu Doomguya to mniej więcej Speed 16 — jakieś 24 mph, i dlatego Imp w korytarzu czasem cię dogania.
- DamageFactor obsługuje odporności i podatności bez przepisywania kodu obrażeń. DamageFactor 'Fire', 0.5 na potworze połowi cały obrażenia typu Fire; 2.0 podwaja; 0.0 czyni potwora niewrażliwym. W trybie DPS kalkulatora jedno skalarne pole DamageFactor modeluje przypadek odpornościowy bez tworzenia własnego typu obrażeń — przydaje się, gdy porównujesz TTK broni vanilla z, powiedzmy, wariantem Cacodemona z 0,7 odporności na plazmę.
- Najgorszy przypadek i rozrzut ważą więcej niż średnia, gdy projektujesz ciasną walkę. „Oczekiwana liczba strzałów do zabicia = 30” ukrywa fakt, że Cacodemon w patologicznym najgorszym scenariuszu przeżyje 134 kule ognia Impa. Kalkulator pokazuje najlepszy i najgorszy przypadek obok oczekiwanego właśnie dla tego: gdy budujesz slaughter mapę i potwór MUSI paść w ramach sztywnego budżetu strzałów, dobieraj rozmiar pod najgorszy przypadek. Gdy budujesz mapę zwykłą, dobieraj pod oczekiwany. Te dwie liczby potrafią różnić się 5–10 razy dla pocisków z random(1, 8).
- Jeśli moddujesz po polsku, zachowuj nazwy aktorów i właściwości po angielsku tak, jak pojawiają się w silniku (Damage, Speed, Health, +STRIFEDAMAGE, Cacodemon, Cyberdemon). DECORATE i ZScript nie akceptują zlokalizowanych identyfikatorów, więc nawet jeśli polska Doom Wiki tłumaczy Cacodemona w prozie jako „Kakodemona”, aktor wciąż nazywa się Cacodemon w kodzie. Trzymanie angielskiej nomenklatury w plikach PK3 oszczędza godziny debugowania, gdy inny moder otwiera twój WAD.
Kalkulator obrażeń ZDoom — najczęstsze pytania
Dlaczego mój pocisk z Damage 10 czasem bije za 80?
ZDoom przy każdym trafieniu mnoży właściwość Damage pocisku przez random(1, 8). Damage 10 daje 10, 20, 30, 40, 50, 60, 70 albo 80 — każda wartość jest równie prawdopodobna. Średnia wynosi 45. Flaga +STRIFEDAMAGE wymienia mnożnik na random(1, 4): wychodzi 10, 20, 30 albo 40 ze średnią 25.
Jaki jest wzór obrażeń pistoletu w klasycznym Doom?
Pistolet używa $5 \times \text{random}(1, 3)$ za strzał, więc każdy strzał zadaje 5, 10 albo 15 punktów z wartością oczekiwaną 10. Karabin maszynowy i strzelba (za pellet) używają tego samego wzoru. Właściwość Damage na aktorze hitskanowym jest ignorowana — wzór jest wbity na sztywno w A_FirePistol, A_FireShotgun i A_FireCGun. Tę samą formułę opisuje Doom2.net (Weapon FAQ) jako `d3 × 5`.
Ile tików ma jedna sekunda w ZDoom?
35 tików na sekundę. TICRATE jest zafiksowany na 35 od oryginalnego wydania w 1993 roku. GZDoom v3.2.2 i nowsze gwarantują, że 35 tików to dokładnie 1,000 sekundy czasu rzeczywistego; wcześniejsze wersje obcinały do 28 ms na tik, więc 35 tików wyświetlało się jako 0,98 sekundy — dryft 2%, który ma znaczenie tylko w długich łańcuchach Delay().
Jak policzyć ACS Delay() dla X sekund?
Pomnóż sekundy przez 35 i zaokrąglij do liczby całkowitej. 0,5 s = 18 tików, 1 s = 35, 2 s = 70, 5 s = 175, 10 s = 350, 60 s = 2100. W ACS pisz `Delay(35 * sekundy)` wprost — kompilator rozwiąże mnożenie podczas budowania skryptu.
Co robi flaga +STRIFEDAMAGE?
+STRIFEDAMAGE wymienia mnożnik obrażeń pocisku z random(1, 8) na random(1, 4). Ta sama wartość Damage, węższy zakres, niższa średnia. Działa na każdym aktorze w każdym modzie ZDoom niezależnie od bazowej gry — nazwa pochodzi od Strife, ale flaga jest przenośna. Przydaje się, gdy chcesz przewidywalnego pocisku średniego zasięgu.
Ile HP ma Cyberdemon?
4000 HP. Cyberdemon przyjmuje tylko obrażenia bezpośrednie — splash od rakiet i pocisków Mancubusa po nim spływa. BFG9000 to kanoniczna metoda zabicia (około 2–4 pociągnięć spustu razem ze sprejem); jakieś 20 strzałów z super strzelby w upór albo ~45 oczekiwanych trafień bezpośrednich rakietą też załatwią sprawę, jeśli wystarczy amunicji. Tabela 19 wierszy pod kalkulatorem pokazuje wszystkie wartości HP z vanilla Doom.
Dlaczego obrażenia BFG są takie dziwne — co to za pętla 15 razy random?
Główna kula BFG używa standardowego wzoru (Damage 100 × random(1, 8) = 100…800), ale promienie spreja nie. Każdy z maksymalnie 40 promieni sumuje 15 niezależnych random(1, 8): zakres 15…120 za promień z wartością oczekiwaną 67,5. Doom Wiki zwraca uwagę, że determinizm pseudolosowej tabeli P_Random (256 stałych bajtów) zawęża praktyczny zakres do 49…87, ale teoretyczne maksimum za promień to wciąż 120.
Czy kalkulator działa też dla aktorów ZScript?
Tak. ZScript i DECORATE dzielą tę samą semantykę Damage / DamageFunction / Speed / Health / +STRIFEDAMAGE — różnią się tylko składnią. Aktor ZScript z `Damage 5;` w bloku Default rzuca dokładnie ten sam wzór $5 \times \text{random}(1, 8)$, co aktor DECORATE z tą samą właściwością. Wyniki kalkulatora stosują się do obu.
Czy kalkulator działa z Brutal Doom albo Project Brutality?
Tylko dla aktorów, które zachowują standardową właściwość Damage i vanillowe funkcje hitskan. Brutal Doom autorstwa Sergeanta Marka IV oraz Project Brutality redefiniują większość broni własnymi wyrażeniami DamageFunction i niestandardowymi rutynami A_FireCustomMissile, które nie respektują mnożnika random(1, 8). Dla tych broni kalkulator pokaże vanillowy odpowiednik, który będziesz musiał skorygować ręcznie po przeczytaniu kodu DECORATE/ZScript konkretnego aktora moda. To istotne dla polskiej sceny — Brutal Doom jest u nas wciąż jednym z najpopularniejszych modów, opisywany w przewodnikach LepszySerwis.pl i G4G.pl.
Czy polska lokalizacja interfejsu GZDoom wpływa na obliczenia?
Nie. Polskie tłumaczenia interfejsu, menu i HUD-a — także te dystrybuowane jako patche społecznościowe na forach typu doomgra.prv.pl czy MiastoGier — zmieniają tylko stringi tekstowe, nie ruszają arytmetyki silnika. Te same losowania random(1, 8), TICRATE = 35, +STRIFEDAMAGE i HP potworów zachowują się identycznie na angielskiej buildzie GZDoom i z dowolnym polskim patchem językowym.
Czy są różnice w obrażeniach między PrBoom+, ZDoom, GZDoom i Zandronum?
Dla vanilla Doom i Doom II — nie. PrBoom+, ZDoom, GZDoom i Zandronum zachowują co do litery TICRATE 35, wzory random(1, 8) i random(1, 3) oraz oryginalne wartości HP. Różnice między portami pojawiają się dopiero w zaawansowanych funkcjach (fizyka, MAPINFO, ZScript, skrypty potworów w MBF21), nie w bazowej matematyce obrażeń. Cacodemon z HP 400 pada tak samo z tą samą sekwencją rzutów w każdym z czterech silników.
Czym różnią się ZScript i DECORATE pod kątem obrażeń?
Niczym matematycznie, tylko składnią. ZScript jest nadzbiorem DECORATE: to samo `Damage 10` w bloku Default rzuca to samo random(1, 8), i ta sama flaga +STRIFEDAMAGE wymienia mnożnik na random(1, 4). DECORATE jest oznaczony jako przestarzały w GZDoom, ale pozostaje kompatybilny; dla nowych modów rekomenduje się ZScript, ale z punktu widzenia kalkulatora obrażeń jest to obojętne.
Dlaczego trasujący Revenanta bije 10…80, a nie 10…40?
Aktor RevenantTracer ma Damage 10 w bloku, ale NIE nosi flagi +STRIFEDAMAGE — używa domyślnego mnożnika random(1, 8). Dlatego zakres wynosi 10…80 ze średnią 45, a nie 10…40. To klasyczna pomyłka, bo rakiety Revenanta brzmią jak matematyka Strife; w praktyce to inna formuła.
Czy poziom trudności (UV / Nightmare) zwiększa obrażenia broni?
Nie. Nightmare podwaja agresję potworów i zbierane naboje, ale obrażenia broni są identyczne na wszystkich pięciu poziomach trudności. Jedyny mnożnik obrażeń w vanilla Doom to power-up Berserk, który mnoży obrażenia pięści przez 10. Trudność zmienia, kto strzela pierwszy i jak często — nie siłę pojedynczego trafienia.
Jak dokładny jest kalkulator wobec prawdziwej gry?
Co do bita zgodny z zachowaniem vanilla Doom i Doom II pod ZDoom / GZDoom. Weryfikacja pokrywa wszystkie presety pocisków, każdą broń hitskanową, wszystkie wartości HP potworów i pętlę 15× spreja BFG — każdy zakres obrażeń, HP i Speed pocisku zgadza się co do jedności z definicjami aktora vanilla. Aktorzy zastępczy w DECORATE / ZScript, własne wyrażenia DamageFunction oraz nowoczesne odsłony Doom (2016, Eternal, The Dark Ages) używają innej matematyki i nie są modelowane.
Glosariusz obrażeń i czasu w ZDoom
Właściwość Damage
Numeryczna właściwość w bloku Default aktora DECORATE albo ZScript, którą silnik mnoży przy każdym trafieniu przez random(1, 8) (random(1, 4) z +STRIFEDAMAGE). Damage 10 daje w grze zakres 10…80, nie płaskie 10.
+STRIFEDAMAGE
Flaga aktora zmieniająca mnożnik obrażeń pocisku z random(1, 8) na random(1, 4). Ta sama wartość Damage, węższy zakres, niższa średnia (Damage × 2,5 zamiast Damage × 4,5). Działa na każdym aktorze w każdym modzie ZDoom niezależnie od bazowej gry.
tik
Atomowa jednostka czasu silnika Doom. TICRATE = 35 tików na sekundę; 1 tik ≈ 28,5714 ms. Długości stanów w DECORATE / ZScript i argument ACS Delay() wyrażone są w tikach. GZDoom v3.2.2 i nowsze gwarantują 35 tików = dokładnie 1,000 sekundy; wcześniejsze wersje obcinały do 28 ms.
Broń hitskanowa
Broń, której obrażenia rozstrzygają się natychmiast wzdłuż prostej linii, bez aktora-pocisku w środku. Pistolet, strzelba, super strzelba i karabin maszynowy są hitskanami; ich wzory są wbite na sztywno w action functions A_Fire* ($5 \times \text{random}(1, 3)$ za pellet), a właściwość Damage samego aktora jest ignorowana.
DamageFactor
Mnożnik nadchodzących obrażeń konkretnego typu. DamageFactor 'Fire', 0.5 połowi obrażenia Fire; 2.0 podwaja; 0.0 czyni aktora niewrażliwym. Tryb DPS kalkulatora wystawia jedno skalarne pole DamageFactor pokrywające przypadek odpornościowy albo podatnościowy.
Berserk
Power-up mnożący obrażenia pięści przez 10 po rzucie random(1, 10), co daje zakres 20…200 z wartością oczekiwaną 110. Bonus dostaje tylko pięść; piła łańcuchowa, hitskany i broń pociskowa są poza zasięgiem efektu.
Jednostka mapy (map unit)
Jednostka współrzędnych przestrzeni Doom. Według konsensusu społeczności 16 jednostek poziomych = 1 stopa = 0,3048 m (Doomguy mierzy 56 jednostek pionowych = 5 stóp 7 cali). Kalkulator zamienia Speed pocisku (jednostki na tik) na m/s, km/h i mph po przeliczniku poziomym 16 j.m./stopa.
Właściwość Speed
Prędkość aktora-pocisku w jednostkach mapy na tik. Kula Impa Speed 10; rakieta Speed 20; kula karabinu plazmowego i kula BFG Speed 25. Pomnóż przez 35, żeby dostać jednostki na sekundę; przez 0,667, żeby dostać metry na sekundę; przez 1,49, żeby dostać mile na godzinę.
Sprej BFG (BFG spray)
Stożek do 40 promieni, który kula BFG wypuszcza przy uderzeniu (sprej odpala się ze stanu śmierci kuli przez A_BFGSpray). Obrażenia każdego promienia liczone są jako suma 15 niezależnych random(1, 8): zakres 15…120 za promień z wartością oczekiwaną 67,5. Sławę BFG jako „zabójcy Cyberdemona z jednego strzału” tworzy właśnie sprej, nie sama kula.
TICRATE
Stała silnika ustalająca częstotliwość Doom na 35 tików na sekundę od 1993 roku. Zadeklarowana w doomdef.h id Software; respektowana co do litery przez ZDoom, GZDoom, Zandronum, PrBoom+, Boom, MBF21 i każdy inny vanilla-kompatybilny source port. Każda długość stanu, każdy argument Delay() i każde liczenie czasu lotu pocisku używa 35 jako stałej konwersji.
DamageFunction
Alternatywa dla właściwości Damage, która pozwala moderowi zwrócić dowolną liczbę całkowitą w momencie trafienia przez wyrażenie ZScript. Pomija mnożnik random(1, 8) — zwróć płaską liczbę dla obrażeń deterministycznych albo policz ją na podstawie inflictor / target / distance, żeby uzyskać zachowanie kontekstowe.
P_Random
Funkcja pseudolosowa silnika Doom: indeks przebiega statyczną 256-bajtową tabelę z poprzestawianymi wartościami 0–255 i przy każdym wywołaniu zwraca kolejny bajt. Nie jest jednostajna (wartość 1 nie pojawia się ani razu, a 145 pięć razy), ale jest wystarczająca do arytmetyki walki. Używana we wszystkich rzutach obrażeń; M_Random ma własny indeks do efektów niegrywalnych, żeby nie psuć synchronizacji multiplayera.
Tresc zweryfikowana przez zespol Smart Calculators