Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @tool
- class_name StatusEffectDB extends Resource
- @export var display_name := "Status Effect Name"
- @export_multiline var display_desc := "This Status Effect does stuffs."
- @export var display_icon: CompressedTexture2D = null
- @export var display_hidden := false
- @export_category("Data")
- @export var data_status_effect_type := TYPES.STATUS_EFFECT_TYPE.DEBUFF:
- set(value):
- data_status_effect_type = value
- notify_property_list_changed()
- @export var data_stats_modifier: StatsModifier = null
- @export var data_stack_enabled := false:
- set(value):
- data_stack_enabled = value
- notify_property_list_changed()
- @export var data_stack_max_count := 1
- @export var data_stack_expire_enabled := true:
- set(value):
- data_stack_expire_enabled = value
- notify_property_list_changed()
- @export var data_stack_expire_time := 5.0
- @export var data_stack_expire_simultaneously := true
- @export_category("DOT")
- @export var DOT_damage_type := TYPES.DAMAGE_TYPE.MAGICAL
- @export var DOT_damage_value_type := TYPES.DAMAGE_VALUE_TYPE.FLAT:
- set(value):
- DOT_damage_value_type = value
- notify_property_list_changed()
- @export var DOT_damage_value_flat := 0.0
- @export var DOT_damage_value_scale := 1.0
- @export_category("Removal")
- @export var removal_enabled := true:
- set(value):
- removal_enabled = value
- notify_property_list_changed()
- @export var removal_by_cleanse := true
- @export var removal_by_purify := true
- @export var removal_by_damage_hit := false
- @export var removal_by_attack_hit := false
- @export var removal_by_skill_hit := false
- @export var removal_clear_all_stacks := true
- func _validate_property(property: Dictionary):
- var property_name: String = property.name
- if property_name.contains("data_stack") and property_name != "data_stack_enabled":
- if data_stack_enabled:
- property.usage = PROPERTY_USAGE_DEFAULT
- if property_name.contains("data_stack_expire") and property_name != "data_stack_expire_enabled":
- if data_stack_expire_enabled: property.usage = PROPERTY_USAGE_DEFAULT
- else: property.usage = PROPERTY_USAGE_NO_EDITOR
- else: property.usage = PROPERTY_USAGE_NO_EDITOR
- if property_name.contains("DOT_damage_value") and property_name != "DOT_damage_value_type":
- if property_name.contains("flat"):
- if DOT_damage_value_type == TYPES.DAMAGE_VALUE_TYPE.FLAT: property.usage = PROPERTY_USAGE_DEFAULT
- else: property.usage = PROPERTY_USAGE_NO_EDITOR
- if property_name.contains("scale"):
- if DOT_damage_value_type in [TYPES.DAMAGE_VALUE_TYPE.SCALE_ATK, TYPES.DAMAGE_VALUE_TYPE.SCALE_HP, TYPES.DAMAGE_VALUE_TYPE.SCALE_MAX_HP, TYPES.DAMAGE_VALUE_TYPE.SCALE_ARMOR]:
- property.usage = PROPERTY_USAGE_DEFAULT
- else: property.usage = PROPERTY_USAGE_NO_EDITOR
- if property_name.contains("removal") and property_name != "removal_enabled":
- if data_status_effect_type == TYPES.STATUS_EFFECT_TYPE.INNATE: removal_enabled = false
- if removal_enabled: property.usage = PROPERTY_USAGE_DEFAULT
- else: property.usage = PROPERTY_USAGE_NO_EDITOR
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement