41 lines
1.4 KiB
GDScript
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 ""
|