35 lines
2.4 KiB
GDScript
35 lines
2.4 KiB
GDScript
extends RefCounted
|
||
const NAMES := {"deposit":"Złoże surowców", "ruins":"Starożytna struktura", "warehouse":"Opuszczony magazyn", "village":"Opuszczona wioska", "cave":"Jaskinia"}
|
||
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
|