It's Cow Game! Version 2.04!

This commit is contained in:
PajamaBee 2024-09-19 23:06:51 -05:00
commit a9e1ed9ddd
3148 changed files with 95332 additions and 0 deletions

View file

@ -0,0 +1,60 @@
extends Quest
func _init():
questName = "Filling Juice Lake"
questScale = Quest.Scales.Adventurous
questPointReward = 3
func get_progress_report():
var result = ""
if not SaveManager.get_save_value("refillQuestStarted", false):
return "Speak to the Largest Jonald"
if SaveManager.get_save_value("refillQuestComplete", false):
return "QUEST COMPLETE!
I unlocked the wisdom within.
I met with the Juice Consultant Jonald.
I got the Ultimate Juice.
I refilled Juice Lake."
elif SaveManager.get_save_value("juiceLakeRefilled", false):
return "Someone near Juice Lake wants to speak to me."
if SaveManager.get_save_value("juiceKnowledgeObtained", false):
result += "I ate the Brass Key and spoke the wisdom:
\"Upon a circle ever spinning. I must board a creature ever buzzing. Upon them I must shout with glee: Yippee!\""
else:
result += "I somehow need to find the Juice Consultant Jonald. The Largest Jonald said I must unlock the solution within. They gave me an Empty Key Packet."
if SaveManager.get_save_value("juiceJonaldMet", false):
result = "I met the Juice Consultant Jonald by saying \"Yippee!\" while riding the Bee Box of the Ferris Wheel.
I need 1 Banana Juice, 1 Iron Ingot Juice, and 1 Silica Gel Juice to make the Ultimate Juice.
They can tell me where to get Silica Gel."
return result
func get_completion_message():
return "Rewards
360 Juice Drinking XP
230 Swimming XP
110 Experiencing XP
3 Quest Points"
func get_requirements_report():
return "Requirements
Drinking Juice Lake
The Trials of Jonald
Level 30 Juice Drinking
Level 28 Experiencing
Level 25 Swimming"
func complete():
SaveManager.set_save_value("refillQuestComplete", true)
LevelManager.add_XP("juiceDrinking", 3600)
LevelManager.add_XP("swimming", 2300)
LevelManager.add_XP("appreciating", 1100)
func is_completed():
if SaveManager.get_save_value("refillQuestComplete", false):
return true
return false

View file

@ -0,0 +1,48 @@
extends Quest
var strawItemClass = preload("res://Items/Dishes/Straw.gd")
var strawItem
func _init():
questName = "Drinking Juice Lake"
questScale = Quest.Scales.Adventurous
questPointReward = 3
strawItem = strawItemClass.new()
func get_progress_report():
if not SaveManager.get_save_value("juiceLakeQuestStarted", false):
return "Talk to the Witch in Pigeon Park"
if SaveManager.get_save_value("juiceLakeQuestComplete", false):
return "QUEST COMPLETE!
I entered the Museum Cave and found The Straw.
I drank the Juice Lake.
A secret entrance was uncovered."
if InventoryManager.check_if_in_inventory(strawItem, 1, "keyItems"):
return "I entered the Museum Cave and found The Straw.
Now I need to show it to the Witch Cow and drink the lake."
return "The Witch Cow told me I need to pass through an Ancient Gateway somewhere east of Juice Lake and find The Straw."
func get_completion_message():
return "Rewards
250 Juice Drinking XP
100 Experiencing XP
3 Quest Points"
func get_requirements_report():
return "Requirements
Level 25 Juice Drinking
Level 15 Experiencing"
func complete():
SaveManager.set_save_value("juiceLakeQuestComplete", true)
LevelManager.add_XP("juiceDrinking", 2500)
LevelManager.add_XP("appreciating", 1000)
func is_completed():
if SaveManager.get_save_value("juiceLakeQuestComplete", false):
return true
return false

View file

@ -0,0 +1,55 @@
extends Quest
const loveNovelItemClass = preload("res://Items/Paper/LoveNovel.gd")
var loveNovel
const loveTomeItemClass = preload("res://Items/Paper/LoveTome.gd")
var loveTome
const damFireStarterClass = preload("res://Items/Artificial/Products/DamFireStarter.gd")
func _init():
questName = "Beaver Love"
questScale = Quest.Scales.Humble
questPointReward = 2
loveNovel = loveNovelItemClass.new()
loveTome = loveTomeItemClass.new()
func get_progress_report():
if SaveManager.get_save_value("BeaverLoveQuestComplete", false):
return "QUEST COMPLETE!
My Dam withstood the Love Novel
I delivered the Love Novel
My Dam withstood the Love Tome
I delivered the Love Tome
I learnt how to build Beaver Dams and got an item to help burn them"
if InventoryManager.check_if_in_inventory(loveTome):
return "I delivered a Love Novel to the beaver across the river.
Now I need to deliver the Love Tome to the first beaver."
if InventoryManager.check_if_in_inventory(loveNovel) or !SaveManager.get_save_value("BeaverLoveQuestStarted", false):
return "I need to deliver a Love Novel to the beaver across the river."
return "Speak to the Longing Beaver on the path to the Beach"
func get_completion_message():
return "Rewards
170 Building XP
You learnt the Beaver Dam Building Technique
Lammy gave you a kit to start Dam Fires easier
2 Quest Point"
func get_requirements_report():
return "Requirements
Level 10 Building
Level 10 Swimming"
func complete():
InventoryManager.add_item_to_inventory(damFireStarterClass.new(), 1, "keyItems")
LevelManager.add_XP("building", 1700)
func is_completed():
return SaveManager.get_save_value("BeaverLoveQuestComplete", false)

View file

@ -0,0 +1,30 @@
extends Quest
func _init():
questName = "Beesley's Lime Move"
questScale = Quest.Scales.Humble
questPointReward = 2
func get_progress_report():
if SaveManager.get_save_value("BeesleyQuestComplete", false):
return "QUEST COMPLETE!
I watched Beesley do a cool Lime Move!
Then I helped him turn back into a bee.
Seeing such an awesome maneuver is its own reward."
if SaveManager.get_save_value("BeesleyHasLimed", false):
return "Find a way to turn Beesley back into a bee"
return "Watch Beesley go Lime Mode in the Pigeon Park Maze"
func get_completion_message():
return "Rewards
You got to see Beesley turn into a lime
2 Quest Points"
func get_requirements_report():
return "No Requirements"
func is_completed():
return SaveManager.get_save_value("BeesleyQuestComplete", false)

View file

@ -0,0 +1,27 @@
extends Quest
func _init():
questName = "Wombat in the Sky"
questScale = Quest.Scales.Humble
func get_progress_report():
if SaveManager.get_save_value("PaxFlyQuestCompleted", false):
return "QUEST COMPLETE!
I brought Pax a balloon!
In return Pax flew up high and retrieved a cloud"
elif SaveManager.get_save_value("PaxFlyQuestStarted", false):
return "I talked to Pax and fae really wants to fly.
I need to bring Pax another balloon to increase faer buoyancy."
else:
return "Talk to Pax outside at The Faire"
func get_completion_message():
return "Rewards
Cloud
1 Quest Point"
func get_requirements_report():
return "No Requirements"
func is_completed():
return SaveManager.get_save_value("PaxFlyQuestCompleted", false)

View file

@ -0,0 +1,28 @@
extends Quest
func _init():
questName = "Sugar for Yuri"
questScale = Quest.Scales.Humble
func get_progress_report():
if SaveManager.get_save_value("YuriQuestCompleted", false):
return "QUEST COMPLETE!
I brought Yuri some sugar!
In return she'll put sugar on things if I ask."
elif SaveManager.get_save_value("YuriQuestStarted", false):
return "I talked to Yuri and she's having trouble opening sugar packets.
I need to bring Yuri some sugar, and not in a packet."
else:
return "Talk to Yuri in Julie's Juice Cafe"
func get_completion_message():
return "Rewards
Yuri will put sugar on things for me
1 Quest Point"
func get_requirements_report():
return "No Requirements"
func is_completed():
return SaveManager.get_save_value("YuriQuestCompleted", false)

View file

@ -0,0 +1,26 @@
extends Quest
func _init():
questName = "The Tale of Jonald"
questScale = Quest.Scales.Humble
questPointReward = 1
func get_progress_report():
if SaveManager.get_save_value("JonaldTaleQuestComplete", false):
return "QUEST COMPLETE!
I spoke to the largest Jonald
I heard The Tale of Jonald"
return "Speak to the largest Jonald"
func get_completion_message():
return "Rewards
You heard The Tale of Jonald
1 Quest Point"
func get_requirements_report():
return "Requirements\nThe Trials of Jonald\nDrinking Juice Lake"
func is_completed():
return SaveManager.get_save_value("JonaldTaleQuestComplete", false)

View file

@ -0,0 +1,89 @@
extends Quest
func _init():
questName = "Constellation of Baskets"
questScale = Quest.Scales.Moderate
questPointReward = 2
func get_progress_report():
var resultText = ""
if not SaveManager.get_save_value("ambiQuestStarted", false):
return "Talk to the Ambrose on the Beach"
if SaveManager.get_save_value("ambiQuestComplete", false):
return "QUEST COMPLETE!
I found the Basket Plans.
I arranged the Basket Formation.
I learned the Infinite Basket Technique."
if !notes_check():
return get_missing_notes_info()
else:
return "I need to set up 6 baskets near Ambrose, following his notes I found."
return resultText
func get_missing_notes_info():
var result = ""
if !note_check_1():
result += "I need to find a note that flew towards the Snak Shak."
else:
result += "I found the first note behind the Snak Shak."
if !note_check_2():
result += "\nI need to find a note that flew towards the rocky island."
else:
result += "\nI got the second note from Bradrek."
if !note_check_2():
result += "\nI need to find a note that flew north and got stuck in a log."
else:
result += "\nI got the third note from inside a mushroom-covered log."
return result
func notes_check():
if !note_check_1():
return false
if !note_check_2():
return false
if !note_check_3():
return false
return true
func note_check_1():
if InventoryManager.get_item_count_by_name("Basket Plan 1", "keyItems") > 0:
return true
return false
func note_check_2():
if InventoryManager.get_item_count_by_name("Basket Plan 2", "keyItems") > 0:
return true
return false
func note_check_3():
if InventoryManager.get_item_count_by_name("Basket Plan 3", "keyItems") > 0:
return true
return false
func get_completion_message():
return "Rewards
260 Basket Weaving XP
75 Scavenging XP
2 Quest Points"
func get_requirements_report():
return "Requirements
Level 22 Basket Weaving
Level 15 Scavenging"
func complete():
LevelManager.add_XP("basketWeaving", 2600)
LevelManager.add_XP("scavenging", 750)
func is_completed():
if SaveManager.get_save_value("ambiQuestComplete", false):
return true
return false

View file

@ -0,0 +1,68 @@
extends Quest
func _init():
questName = "The Trials of Jonald"
questScale = Quest.Scales.Moderate
questPointReward = 2
func get_progress_report():
var resultText = ""
if not SaveManager.get_save_value("jonaldGardeningSectionStarted", false) and not SaveManager.get_save_value("jonaldJuiceSectionStarted", false):
return "Talk to the Jonalds in the Forest"
if SaveManager.get_save_value("jonaldTrialsQuestComplete", false):
return "QUEST COMPLETE!
I drank the Ash Juice and planted the Evidence.
I learned the Titanic Truth."
if not SaveManager.get_save_value("jonaldGardeningSectionStarted", false):
resultText += "I need to talk to the southern Jonald in the Forest"
elif not SaveManager.get_save_value("jonaldGardeningSectionCompleted", false):
resultText += "The southern Jonald told me to plant Evidence in the Pigeon Grove and report back."
if SaveManager.get_save_value("jonaldPigeonEvidencePlanted", false):
resultText += " I have planted the Evidence."
else:
resultText += " Jonald said to find the grove I should follow the Sunflower Seeds."
else:
resultText += "The southern Jonald told me to plant some Evidence and I did."
if resultText != "":
resultText += "\n"
if not SaveManager.get_save_value("jonaldJuiceSectionStarted", false):
resultText += "I need to talk to the northern Jonald in the Forest"
elif not SaveManager.get_save_value("jonaldJuiceSectionCompleted", false):
resultText += "The northern Jonald told me to drink Ash Juice and report back."
if SaveManager.get_value_from_section("drank", "Ash Juice", 0) > 0:
resultText += " I drank Ash Juice."
else:
resultText += "The northern Jonald told me to drink Ash Juice and I did."
if resultText != "":
resultText += "\n"
if SaveManager.get_save_value("jonaldGardeningSectionCompleted", false) and SaveManager.get_save_value("jonaldJuiceSectionCompleted", false):
resultText += "I need to complete the central Jonald's task"
return resultText
func get_completion_message():
return "Rewards
100 Juice Drinking XP
100 Gardening XP
2 Quest Points"
func get_requirements_report():
return "Requirements
Level 20 Juice Drinking
Level 20 Gardening"
func complete():
LevelManager.add_XP("juiceDrinking", 1000)
LevelManager.add_XP("gardening", 1000)
func is_completed():
if SaveManager.get_save_value("jonaldTrialsQuestComplete", false):
return true
return false

38
Quests/Quest.gd Normal file
View file

@ -0,0 +1,38 @@
extends RefCounted
class_name Quest
enum Scales {Humble, Moderate, Adventurous, Epic}
var questName:String
var questScale:Scales
var questRequirements
var questPointReward = 1
func get_scale_name():
if questScale == Scales.Humble:
return "Humble"
if questScale == Scales.Moderate:
return "Moderate"
if questScale == Scales.Adventurous:
return "Adventurous"
if questScale == Scales.Epic:
return "Epic"
func get_progress_report():
return "You are questing :)"
func get_requirements_report():
return ""
func get_completion_message():
return "QUEST COMPLETE!"
func complete():
pass
func is_completed():
return false

54
Quests/QuestManager.gd Normal file
View file

@ -0,0 +1,54 @@
extends Node
signal questCompleted
var quests = {}
var questCompletedPopupScene = preload("res://UI/MenuBar/Quests/QuestCompletedPopup.tscn")
func _ready():
initialize_quests()
func complete_quest(questName:String):
var currentQuest = get_quest_by_name(questName)
var questCompletePopup = questCompletedPopupScene.instantiate()
currentQuest.complete()
award_quest_points(currentQuest)
questCompletePopup.set_quest(currentQuest)
add_child(questCompletePopup)
questCompletePopup.popup_centered()
get_tree().get_root().get_node("MainGame/QuestCompleteAudio").play()
questCompleted.emit()
func award_quest_points(quest):
var currentQuestPoints = SaveManager.get_save_value("questPoints", 0)
currentQuestPoints += quest.questPointReward
SaveManager.set_save_value("questPoints", currentQuestPoints)
func is_completed(questName:String):
var currentQuest = get_quest_by_name(questName)
return currentQuest.is_completed()
func get_all_quests():
return quests.values()
func get_quest_by_name(questName:String):
return quests[questName]
func initialize_quests():
var questPaths = [
"res://Quests/Humble/SugarTime.gd",
"res://Quests/Humble/PaxBalloon.gd",
"res://Quests/Humble/BeesleyJuice.gd",
"res://Quests/Humble/BeaverLove.gd",
"res://Quests/Moderate/ConstellationOfBaskets.gd",
"res://Quests/Moderate/TrialsOfJonald.gd",
"res://Quests/Adventurous/LakeOfJuice.gd",
"res://Quests/Adventurous/FillingJuiceLake.gd"]
for questPath in questPaths:
var newQuest = load(questPath).new()
quests[newQuest.questName] = newQuest