Randoloot/scripts/planets/poi_rules.gd
2026-10-20 20:32:50 +02:00

35 lines
2.5 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

extends RefCounted
const NAMES := {"deposit":"Złoże surowców", "ruins":"Starożytna struktura", "warehouse":"Opuszczony magazyn", "village":"Opuszczona wioska", "cave":"Jaskinia", "deep_deposit":"Głębokie złoże deuteru", "crew":"Obóz specjalisty", "hermit":"Pustelnik / Kartograf", "time_engineer":"Inżynier chronalny"}
const STAGES := {
"deposit":["Zbierz odsłonięte minerały", "Wykonaj odwiert", "Wydobądź głęboką żyłę"],
"ruins":["Przeszukaj przedsionek", "Otwórz komorę", "Zbadaj rdzeń"],
"warehouse":["Przeszukaj skrzynie", "Otwórz zbrojownię", "Odblokuj skarbiec zaopatrzenia"],
"village":["Przeszukaj domy", "Odzyskaj dzienniki mieszkańców", "Otwórz sejf osady"],
"cave":["Zbadaj wejście", "Zejdź do groty", "Pobierz próbki z głębi"]}
const PREVIEWS := {
"deposit":["Rzadkie surowce planetarne", "Więcej rzadkich surowców", "Dużo rzadkich surowców"],
"ruins":["Moduł: poziom układu +1", "Moduł: poziom układu +2", "Moduł: poziom układu +3"],
"warehouse":["40–70 amunicji", "100–160 amunicji i 2–4 rakiety", "180–260 amunicji, 4–7 rakiet lub 30–50 amunicji radiacyjnej oraz surowce kosmiczne"],
"village":["30–60 kredytów", "80–140 kredytów + 10% brakującego EXP do awansu", "220–360 kredytów"],
"cave":["1 próbka do analizy", "2 próbki do analizy", "4 próbki do analizy"]}
static func reward(kind: String, stage: int, rng: RandomNumberGenerator, profile: Dictionary, captain: Resource) -> Dictionary:
var result := {}
match kind:
"deposit":
var keys: Array = preload("res://scripts/planets/planet_profiles.gd").MATERIALS
result[keys[rng.randi_range(0,keys.size()-1)]] = roundi(rng.randi_range(5,12)*(1.0+stage*0.65)*preload("res://scripts/planets/planet_rewards.gd").material_multiplier(profile))
"warehouse":
result.ammunition = rng.randi_range([40,100,180][stage],[70,160,260][stage])
if stage == 1: result.missile = rng.randi_range(2,4)
if stage == 2:
if rng.randf() < 0.5: result.missile = rng.randi_range(4,7)
else: result.irradiated_ammunition = rng.randi_range(30,50)
var keys := ["iron","titanium","aluminium","uranium","sulfur"]
result[keys[rng.randi_range(0,4)]] = roundi(rng.randi_range(8,16)*preload("res://scripts/planets/planet_rewards.gd").material_multiplier(profile))
"village":
result.credits = rng.randi_range([30,80,220][stage],[60,140,360][stage])
if stage == 1: result.experience = maxi(1,ceili(maxi(0,captain.get_xp_required()-captain.experience)*0.1))
"cave": result.samples = [1,2,4][stage]
return result