26 lines
796 B
GDScript
26 lines
796 B
GDScript
class_name ItemDefinition
|
|
extends Resource
|
|
|
|
@export var item_id: StringName
|
|
@export var display_name: String
|
|
@export var category: StringName = SimulationIds.ITEM_CATEGORY_WEAPON
|
|
@export var equip_slot: StringName = SimulationIds.EQUIP_SLOT_HAND
|
|
@export_range(0.0, 1000.0, 0.1) var damage := 0.0
|
|
@export_range(0.0, 50.0, 0.1) var reach := 1.5
|
|
@export_range(0.0, 5.0, 0.05) var attack_cooldown := 0.6
|
|
|
|
|
|
func validate() -> Array[String]:
|
|
var errors: Array[String] = []
|
|
if item_id.is_empty():
|
|
errors.append("item_id is empty")
|
|
if display_name.is_empty():
|
|
errors.append("display_name is empty for '%s'" % item_id)
|
|
if damage <= 0.0:
|
|
errors.append("damage must be positive for '%s'" % item_id)
|
|
return errors
|
|
|
|
|
|
func is_weapon() -> bool:
|
|
return category == SimulationIds.ITEM_CATEGORY_WEAPON
|