A raging quest
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
extends Area3D
|
||||
|
||||
@export var event_name: StringName = &""
|
||||
@export var target_group: StringName = &"player"
|
||||
@export var quest_id_filter: String = ""
|
||||
@export var one_shot: bool = true
|
||||
|
||||
var _triggered := false
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
body_entered.connect(_on_body_entered)
|
||||
|
||||
|
||||
func reset_trigger() -> void:
|
||||
_triggered = false
|
||||
set_deferred("monitoring", true)
|
||||
|
||||
|
||||
func _on_body_entered(body: Node) -> void:
|
||||
if one_shot and _triggered:
|
||||
return
|
||||
if target_group != StringName() and not body.is_in_group(target_group):
|
||||
return
|
||||
if event_name == StringName():
|
||||
return
|
||||
if quest_id_filter.strip_edges() != "":
|
||||
if QuestManager == null or QuestManager.get_active_quest_id() != StringName(quest_id_filter):
|
||||
return
|
||||
if QuestManager:
|
||||
QuestManager.emit_event(event_name, {
|
||||
"body": body,
|
||||
"source": self,
|
||||
})
|
||||
if one_shot:
|
||||
_triggered = true
|
||||
set_deferred("monitoring", false)
|
||||
Reference in New Issue
Block a user