Randoloot/scripts/items/item_definition.gd
2026-10-16 20:24:12 +02:00

36 lines
1.4 KiB
GDScript

extends Resource
class_name ItemDefinition
enum Category { WEAPON, SHIELD, ARMOR, REACTOR, ENGINE, ACTIVE_EXTENSION, COMPUTER, CONSUMABLE }
enum WeaponKind { PLASMA, MACHINE_GUN, LASER, MISSILE, GAMMA }
func get_damage_type() -> int:
return DamageTypes.for_weapon(weapon_kind)
@export var item_id: String = ""
@export var display_name: String = ""
@export var icon: Texture2D
@export var category: Category = Category.ENGINE
@export_multiline var description: String = ""
@export var primary_stat: String = ""
@export var primary_value: float = 0.0
@export var stat_suffix: String = ""
@export var energy_regeneration_bonus: float = 0.0
@export var weapon_kind: WeaponKind = WeaponKind.PLASMA
@export var fire_interval: float = 0.25
@export var weapon_cooldown: float = 0.0
@export var missile_homing: bool = true
@export var laser_pulse_duration: float = 0.08
@export var projectile_speed: float = 0.0
@export var weapon_range: float = 0.0
@export var energy_cost: float = 0.0
@export_range(0.0, 1.0, 0.05) var energy_damage_exponent: float = 0.5
@export_range(0.0, 1.0, 0.01) var energy_per_addon: float = 0.05
@export var active_ability: ActiveAbility
@export_group("Losowanie zakresu obrażeń broni (poziom 1)")
@export_range(1, 10000) var damage_lower_roll_min: int = 1
@export_range(1, 10000) var damage_lower_roll_max: int = 4
@export_range(1, 10000) var damage_spread_roll_min: int = 2
@export_range(1, 10000) var damage_spread_roll_max: int = 4