78 lines
1.9 KiB
GDScript
78 lines
1.9 KiB
GDScript
extends NPC
|
|
|
|
var animDelayTimer = 0
|
|
|
|
var rng = RandomNumberGenerator.new()
|
|
|
|
var juiceLakeDrinkingCutscene = preload("res://Cutscenes/DrinkingJuiceLake/JuiceLakeCutscene.tscn")
|
|
|
|
var strawItemClass = preload("res://Items/Dishes/Straw.gd")
|
|
var strawItem
|
|
|
|
var yelledPhrases = ["Adventurer :)", "Come here :)", "Get over here :)"]
|
|
var yelledPhrasesIndex = 0
|
|
var yellDelay = 0.1
|
|
|
|
func _ready():
|
|
dialogueResource = load("res://NPCs/WitchCow/WitchCow.dialogue")
|
|
|
|
$Sprite.play("Idle")
|
|
|
|
strawItem = strawItemClass.new()
|
|
|
|
func straw_check():
|
|
return InventoryManager.check_if_in_inventory(strawItem, 1, "keyItems")
|
|
|
|
func drink_lake():
|
|
GameVariables.player.global_position = Vector2(1400, -500)
|
|
GameVariables.player.movementTarget = GameVariables.player.global_position
|
|
|
|
var aroPigeon = get_parent().get_node("Pigeons").get_node("AroPigeon")
|
|
aroPigeon.position.x = 1300
|
|
aroPigeon.position.y = -300
|
|
|
|
var cutscene = juiceLakeDrinkingCutscene.instantiate()
|
|
add_child(cutscene)
|
|
|
|
func _process(delta):
|
|
if animDelayTimer > 0:
|
|
animDelayTimer -= delta
|
|
else:
|
|
choose_new_anim()
|
|
|
|
if DialogueBoxManager.currentSpeaker != self:
|
|
yellDelay -= delta
|
|
if yellDelay < 0:
|
|
yellDelay = 2
|
|
if SaveManager.get_save_value("juiceLakeRefilled", false) and !SaveManager.get_save_value("refillQuestComplete", false):
|
|
MessageManager.addMessage(yelledPhrases[yelledPhrasesIndex], self, "Witch Cow", Color.YELLOW, true, true, 2.5, -10)
|
|
yelledPhrasesIndex += 1
|
|
if yelledPhrasesIndex >= yelledPhrases.size():
|
|
yelledPhrasesIndex = 0
|
|
|
|
func choose_new_anim():
|
|
var result
|
|
if $Sprite.animation != "Idle":
|
|
result = rng.randi_range(1, 100)
|
|
else:
|
|
result = rng.randi_range(1, 70)
|
|
|
|
if result <= 40:
|
|
shine()
|
|
elif result <= 70:
|
|
bubble()
|
|
else:
|
|
idle()
|
|
|
|
func idle():
|
|
animDelayTimer = rng.randf_range(2, 6)
|
|
$Sprite.play("Idle")
|
|
|
|
func bubble():
|
|
animDelayTimer = 4
|
|
$Sprite.play("Bubble")
|
|
|
|
func shine():
|
|
animDelayTimer = 1.4
|
|
$Sprite.play("Shine")
|