Randoloot/scripts/levels/enemy_resource_base.gd
2026-10-31 16:08:17 +01:00

54 lines
1.8 KiB
GDScript

extends StaticBody2D
const PROFILES := preload("res://scripts/planets/planet_profiles.gd")
var base_id := ""
var reward_seed := 1
var level := 1
var kind := "enemy_base"
var hull := 100.0
var _claimed := false
var _label: Label
static func materials(seed_value: int, sector_level: int) -> Dictionary:
var rng := RandomNumberGenerator.new()
rng.seed = seed_value
var result := {}
for key in PROFILES.MATERIALS:
result[key] = rng.randi_range(18,28) * maxi(1,ceili(sqrt(maxi(1,sector_level))))
return result
func _ready() -> void:
add_to_group("exploration_pois")
collision_layer = 4
collision_mask = 0
hull = 100.0 * preload("res://scripts/levels/level_balance.gd").item_stat_scale(level)
var shape := CollisionShape2D.new()
var circle := CircleShape2D.new()
circle.radius = 85
shape.shape = circle
add_child(shape)
var sprite := Sprite2D.new()
sprite.texture = preload("res://assets/expeditions/abandoned_relay.png")
sprite.scale = Vector2.ONE * 190.0 / maxf(sprite.texture.get_width(),sprite.texture.get_height())
sprite.modulate = Color("ff9b88")
add_child(sprite)
_label = Label.new()
_label.position = Vector2(-170,100)
_label.size.x = 340
_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
_label.add_theme_font_size_override("font_size",12)
_label.text = "BAZA ZAOPATRZENIOWA WROGA\nZniszcz, aby uwolnić surowce"
add_child(_label)
func take_weapon_hit(amount: float, _critical := false, _damage_type := 0) -> void:
if _claimed: return
hull -= maxf(0,amount)
if hull > 0: return
_claimed = true
GameState.explored_pois[base_id] = true
var pickup := Node2D.new()
pickup.set_script(preload("res://scripts/items/expedition_pickup.gd"))
pickup.payload = {"materials":materials(reward_seed,level)}
pickup.position = position
get_parent().call_deferred("add_child",pickup)
queue_free()