93 lines
5.8 KiB
Plaintext
93 lines
5.8 KiB
Plaintext
SYSTEM PRZEDMIOTÓW I LOOTU
|
||
|
||
Przedmioty: Weapon, Shield, Hull, Generator, Extension. Baza typów znajduje się
|
||
w resources/items, generator w scripts/items/item_generator.gd.
|
||
Poziom przedmiotu = GameState.system_level (1–1000; obecnie układ 1).
|
||
Cecha główna modułów i regeneracja generatora: baza * (1 + 0.05 * (L - 1)) * losowe 0.8–1.2.
|
||
Definicje bazowe pozostają wspólne i nie są zmieniane; wylosowane wartości zapisuje
|
||
ItemInstance. Każdy drop ma 1–5 różnych addonów z bazy zasobów affix_database.tres.
|
||
Liczba addonów zwykłego dropu: 1=50%, 2=25%, 3=14%, 4=8%, 5=3%.
|
||
Elite dostaje jeden addon więcej (maks. 5), Boss co najmniej 4.
|
||
Rzadkość wg liczby addonów: zwykły, niepospolity, rzadki, epicki, legendarny.
|
||
Zakresy addonów interpolują liniowo między poziomem 1 a 1000 wg concept_game.txt.
|
||
Cap dotyczy pojedynczego addonu; bonusy zamontowanych przedmiotów sumują się.
|
||
|
||
Po zniszczeniu wroga: Normal 65%, Elite 90%, Boss 100% szansy na jeden przedmiot.
|
||
Typ wroga ustawia eksportowane loot_tier; obecna mapa nadal tworzy zwykłych wrogów.
|
||
Drop pozostaje na mapie, przyciąga się z 150 px i zbiera do wolnego slotu z 48 px.
|
||
Pełna ładownia: drop czeka i pokazuje komunikat. Zniszczony gracz nie zbiera lootu.
|
||
Niezebrany loot znika przy restarcie poziomu. Zebrane przedmioty zachowują wszystkie
|
||
wylosowane wartości, addony, poziomy i rozmieszczenie po śmierci gracza.
|
||
|
||
Addony działają wyłącznie w zamontowanej broni/modułach. Procenty kadłuba, tarcz
|
||
i prędkości mnożą bazę powiększoną o bonusy płaskie. Bonus obrażeń działa na obie
|
||
bronie (także laser i rakiety). Regeneracja dodaje punkty na sekundę.
|
||
EXP i kredyty mają obliczone mnożniki statku; naliczanie nagród wymaga przyszłego
|
||
systemu postępu pilota i waluty, których gra obecnie nie posiada.
|
||
|
||
UI: kolor przedmiotu wskazuje rzadkość. Najechanie na slot pokazuje pełne parametry,
|
||
poziom, rzadkość, addony i parametry broni. Przenoszenie nadal odbywa się drag/drop.
|
||
Małe × w zajętym slocie magazynu usuwa przedmiot natychmiast, bez przesuwania
|
||
pozostałych slotów. Przedmioty zamontowane nie mają przycisku usuwania.
|
||
|
||
EDYCJA BAZY CECH (ADDONÓW)
|
||
|
||
Katalog bazy: resources/items/affix_database.tres.
|
||
Definicje poszczególnych cech: resources/items/affixes/*.tres.
|
||
Klasa pól i reguł: scripts/items/item_affix_definition.gd.
|
||
Losowanie ważone i kontrola zgodności: scripts/items/item_affix_database.gd.
|
||
|
||
W Godocie wybierz plik cechy .tres w FileSystem i edytuj go w Inspectorze:
|
||
- affix_id: unikalny identyfikator cechy.
|
||
- display_name, description, unit: nazwa, opis, jednostka.
|
||
- stat_key: identyfikator efektu obsługiwanego przez statek/bronie.
|
||
- enabled: włącza lub wyłącza przyszłe losowanie cechy.
|
||
- selection_weight: względna waga losowania (2 = dwa razy większa waga niż 1).
|
||
Waga 0 wyłącza losowanie; procent szansy zależy od pozostałej dozwolonej puli.
|
||
- category_mask: zaznacz dozwolone Weapon, Shield, Hull, Generator, Extension.
|
||
Obecnie zaznaczone są wszystkie kategorie, zgodnie z wcześniejszą pulą ogólną.
|
||
- allowed_item_ids: pusta lista dopuszcza wszystkie itemy dozwolonych kategorii;
|
||
wpisana lista dopuszcza tylko podane item_id z bazowych resources/items/*.tres.
|
||
- excluded_item_ids: zawsze wyklucza wskazane itemy.
|
||
- minimum_level / maximum_level: poziomy, na których cecha może się pojawić.
|
||
- minimum/maximum_value_level_1 i level_1000: zakresy dla poziomów krańcowych;
|
||
między nimi generator interpoluje liniowo. Dla stałej wartości ustaw wszystkie
|
||
cztery pola identycznie.
|
||
- exclusive_group: puste = bez ograniczenia. Cechy o tej samej niepustej grupie
|
||
nie mogą pojawić się razem na jednym przedmiocie.
|
||
- incompatible_affix_ids: lista cech wykluczonych na tym samym przedmiocie.
|
||
Wystarczy wpisać wykluczenie po jednej stronie. Ta sama cecha nie powtarza się.
|
||
|
||
Aby dodać cechę: utwórz zasób ItemAffixDefinition, zapisz w affixes i dodaj do
|
||
tablicy affixes w affix_database.tres. Sama obecność pliku w katalogu nie dodaje
|
||
go do losowania. Aktualne osiem cech ma wagę 1 i nie ma wzajemnych wykluczeń.
|
||
Nowy stat_key wymaga również implementacji efektu w kodzie; baza opisuje reguły
|
||
losowania i prezentację, nie tworzy automatycznie nowych mechanik statku.
|
||
Tooltip pobiera nazwę i jednostkę z definicji cechy. Wylosowana wartość pozostaje
|
||
w ItemStatModifier; zmiana zakresów w bazie nie przelicza zdobytych przedmiotów.
|
||
Przy zbyt małej puli zgodnych cech generator kończy losowanie wcześniej, bez
|
||
duplikatów i bez pętli nieskończonej. Rzadkość wynika z faktycznej liczby addonów.
|
||
Pusta dozwolona pula daje przedmiot bez addonów o rzadkości zwykłej.
|
||
|
||
ZAKRES OBRAŻEŃ BRONI
|
||
|
||
Każda nowa broń ma zapisane w ItemInstance damage_min / damage_max. Generator
|
||
losuje dolną granicę oraz szerokość zakresu. Obie granice skaluje przez
|
||
(1 + 0.05 * (L - 1)) i zaokrągla do całkowitych punktów obrażeń.
|
||
Wartości dla poziomu 1 edytuje się w zasobach poszczególnych broni .tres:
|
||
damage_lower_roll_min/max = zakres losowania dolnej granicy;
|
||
damage_spread_roll_min/max = zakres losowania szerokości (górna = dolna + szerokość).
|
||
Laser: dolna 1–4, szerokość 2–4 (możliwe m.in. 1–5 i 4–6).
|
||
Plazma: dolna 10–14, szerokość 2–4.
|
||
Działko maszynowe: dolna 2–4, szerokość 1–2.
|
||
Rakiety: dolna 45–58, szerokość 5–12.
|
||
|
||
Każdy wystrzelony pocisk i każdy trafiający impuls lasera losują obrażenia
|
||
równomiernie z zakresu swojej broni, włącznie z obiema granicami.
|
||
Po losowaniu naliczany jest mnożnik damage_percent z całego wyposażenia.
|
||
Jedna rakieta ma jeden wynik losowania, wspólny dla trafienia i jej eksplozji.
|
||
Tooltip i etykieta slotu pokazują bazowy zakres broni; bonus procentowy statku
|
||
jest naliczany w walce. Zakres dropu zachowuje się po restarcie poziomu.
|
||
Bronie startowe mają zakres z wartości środkowych ustawień w definicji.
|
||
Starszy item z primary_value_override i bez zakresu zachowuje stałe obrażenia.
|