Files
rewave/scenes/misc/Quest.gd
2024-02-08 22:16:58 +01:00

41 lines
1.4 KiB
GDScript

extends Node
"""
Instance this as a child of any Npc.tscn node and it turns into a
quest giver.
The character will also check if the player has a certain amount of a given item and if true
Remove said amount from the players inventory and give some amount of another item as a reward
This is only useful for fetch quests but you can also ask for '5 demon horns' or something to turn it
into a kill quest.
Otherwise you'll have to make a quest system a bit more complex.
"""
@export var quest_name: String = "Life as a Rappi Guy"
@export var required_item: String = "Generic Item"
@export var required_amount: int = 10
@export var reward_item: String = "Generic Reward"
@export var reward_amount: int = 1
@export var initial_text = "TLDR; bring me 10 thingies" # (String, MULTILINE)
@export var pending_text = "You forgot? I want 10 thingies" # (String, MULTILINE)
@export var delivered_text = "Thank you! Here's your reward.." # (String, MULTILINE)
func process() -> String:
var quest_status = Quest.get_status(quest_name)
match quest_status:
Quest.STATUS.NONEXISTENT:
Quest.accept_quest(quest_name)
return initial_text
Quest.STATUS.STARTED:
if Inventory.get_item(required_item) >= required_amount:
Inventory.remove_item(required_item, required_amount)
Quest.change_status(quest_name, Quest.STATUS.COMPLETE)
Inventory.add_item(reward_item, reward_amount)
return delivered_text
else:
return pending_text
_:
return ""