Initial commit
This commit is contained in:
40
scenes/misc/Quest.gd
Normal file
40
scenes/misc/Quest.gd
Normal file
@@ -0,0 +1,40 @@
|
||||
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 ""
|
||||
Reference in New Issue
Block a user