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 KINDS := ["deposit","ruins","warehouse","village","cave"] const PROFILES := preload("res://scripts/planets/planet_profiles.gd") const REWARDS := preload("res://scripts/planets/planet_rewards.gd") static func reward(kind: String, rng: RandomNumberGenerator, profile: Dictionary, captain: Resource) -> Dictionary: var result := {} var multiplier: float = PROFILES.poi_loot_report(profile,captain).multiplier match kind: "deposit": var key: String = PROFILES.MATERIALS[rng.randi_range(0,PROFILES.MATERIALS.size()-1)] result[key] = rng.randi_range(18,28)*REWARDS.material_multiplier(profile) "warehouse": result.ammunition = rng.randi_range(130,210) result.missile = rng.randi_range(2,4) if rng.randf() < 0.25: result.irradiated_ammunition = rng.randi_range(20,35) var keys := ["iron","titanium","aluminium","uranium","sulfur"] result[keys[rng.randi_range(0,4)]] = rng.randi_range(8,16)*REWARDS.material_multiplier(profile) "village": result.credits = rng.randi_range(140,220) result.experience = maxi(1,ceili(maxi(0,captain.get_xp_required()-captain.experience)*0.05)) "cave": result.samples = rng.randi_range(3,5) for key in result: result[key] = maxi(1,roundi(float(result[key])*multiplier)) return result static func module_count(profile: Dictionary, captain: Resource) -> int: return clampi(roundi(1.5*float(PROFILES.poi_loot_report(profile,captain).multiplier)),1,3) static func module_bonus(rng: RandomNumberGenerator, profile: Dictionary, captain: Resource) -> int: var report := PROFILES.poi_loot_report(profile,captain) return maxi(0,roundi(REWARDS.roll_module_bonus(rng,profile)*float(report.recovery)))+roundi((float(report.gear_multiplier)-1.0)*2.0)